1
1
import { computed , type Signal } from '@angular/core' ;
2
2
import { Breakpoints } from './breakpoints' ;
3
- import { increaseWithUnit } from './increase-with-unit' ;
3
+ import { increaseWithUnit } from './utils/ increase-with-unit' ;
4
4
import { observeMediaQuery } from './observe-media-query' ;
5
+ import { toValue } from './utils/to-value' ;
6
+ import { MaybeSignalOrGetter } from './types' ;
5
7
6
8
/**
7
9
* Reactive viewport breakpoints
@@ -11,8 +13,8 @@ import { observeMediaQuery } from './observe-media-query';
11
13
export function observeBreakpoints < K extends string > (
12
14
breakpoints : Breakpoints < K >
13
15
) {
14
- function getValue ( k : K , delta ?: number ) : string {
15
- let v = breakpoints [ k ] ;
16
+ function getValue ( k : MaybeSignalOrGetter < K > , delta ?: number ) : string {
17
+ let v = breakpoints [ toValue ( k ) ] ;
16
18
17
19
if ( delta !== null && delta !== undefined ) {
18
20
v = increaseWithUnit ( v , delta ) ;
@@ -31,8 +33,8 @@ export function observeBreakpoints<K extends string>(
31
33
return window . matchMedia ( query ) . matches ;
32
34
}
33
35
34
- const greaterOrEqual = ( k : K ) : Signal < boolean > => {
35
- return observeMediaQuery ( `(min-width: ${ getValue ( k ) } )` ) ;
36
+ const greaterOrEqual = ( k : MaybeSignalOrGetter < K > ) : Signal < boolean > => {
37
+ return observeMediaQuery ( ( ) => `(min-width: ${ getValue ( k ) } )` ) ;
36
38
} ;
37
39
38
40
const shortcutMethods = Object . keys ( breakpoints ) . reduce ( ( shortcuts , k ) => {
@@ -45,34 +47,35 @@ export function observeBreakpoints<K extends string>(
45
47
} , { } as Record < K , Signal < boolean > > ) ;
46
48
47
49
return Object . assign ( shortcutMethods , {
48
- greater ( k : K ) {
49
- return observeMediaQuery ( `(min-width: ${ getValue ( k , 0.1 ) } )` ) ;
50
+ greater ( k : MaybeSignalOrGetter < K > ) {
51
+ return observeMediaQuery ( ( ) => `(min-width: ${ getValue ( k , 0.1 ) } )` ) ;
50
52
} ,
51
53
greaterOrEqual,
52
- smaller ( k : K ) {
53
- return observeMediaQuery ( `(max-width: ${ getValue ( k , - 0.1 ) } )` ) ;
54
+ smaller ( k : MaybeSignalOrGetter < K > ) {
55
+ return observeMediaQuery ( ( ) => `(max-width: ${ getValue ( k , - 0.1 ) } )` ) ;
54
56
} ,
55
- smallerOrEqual ( k : K ) {
56
- return observeMediaQuery ( `(max-width: ${ getValue ( k ) } )` ) ;
57
+ smallerOrEqual ( k : MaybeSignalOrGetter < K > ) {
58
+ return observeMediaQuery ( ( ) => `(max-width: ${ getValue ( k ) } )` ) ;
57
59
} ,
58
- between ( a : K , b : K ) {
60
+ between ( a : MaybeSignalOrGetter < K > , b : MaybeSignalOrGetter < K > ) {
59
61
return observeMediaQuery (
60
- `(min-width: ${ getValue ( a ) } ) and (max-width: ${ getValue ( b , - 0.1 ) } )`
62
+ ( ) =>
63
+ `(min-width: ${ getValue ( a ) } ) and (max-width: ${ getValue ( b , - 0.1 ) } )`
61
64
) ;
62
65
} ,
63
- isGreater ( k : K ) {
66
+ isGreater ( k : MaybeSignalOrGetter < K > ) {
64
67
return match ( `(min-width: ${ getValue ( k , 0.1 ) } )` ) ;
65
68
} ,
66
- isGreaterOrEqual ( k : K ) {
69
+ isGreaterOrEqual ( k : MaybeSignalOrGetter < K > ) {
67
70
return match ( `(min-width: ${ getValue ( k ) } )` ) ;
68
71
} ,
69
- isSmaller ( k : K ) {
72
+ isSmaller ( k : MaybeSignalOrGetter < K > ) {
70
73
return match ( `(max-width: ${ getValue ( k , - 0.1 ) } )` ) ;
71
74
} ,
72
- isSmallerOrEqual ( k : K ) {
75
+ isSmallerOrEqual ( k : MaybeSignalOrGetter < K > ) {
73
76
return match ( `(max-width: ${ getValue ( k ) } )` ) ;
74
77
} ,
75
- isInBetween ( a : K , b : K ) {
78
+ isInBetween ( a : MaybeSignalOrGetter < K > , b : MaybeSignalOrGetter < K > ) {
76
79
return match (
77
80
`(min-width: ${ getValue ( a ) } ) and (max-width: ${ getValue ( b , - 0.1 ) } )`
78
81
) ;
0 commit comments