@@ -12,39 +12,34 @@ export const useBreakpointIndex = (options: defaultOptions = {}) => {
12
12
const breakpoints =
13
13
( context . theme && context . theme . breakpoints ) || defaultBreakpoints
14
14
15
- const getIndex = useCallback ( ( ) => {
16
- if ( typeof window === 'undefined' ) {
17
- if ( typeof defaultIndex === 'number' ) {
18
- if ( defaultIndex < 0 || defaultIndex > breakpoints . length - 1 ) {
19
- throw new RangeError (
20
- `Default breakpoint index out of range. Theme has ${ breakpoints . length } breakpoints, got index ${ defaultIndex } `
21
- )
22
- }
23
- return defaultIndex
24
- }
25
- throw new TypeError (
26
- `Default breakpoint index should be a number. Got: ${ defaultIndex } , ${ typeof defaultIndex } `
27
- )
28
- }
29
-
30
- return breakpoints . filter (
31
- breakpoint =>
32
- window . matchMedia ( `screen and (min-width: ${ breakpoint } )` ) . matches
33
- ) . length
34
- } , [ breakpoints , defaultIndex ] )
35
-
36
- const [ value , setValue ] = useState ( getIndex )
37
-
15
+ if ( typeof defaultIndex !== 'number' ) {
16
+ throw new TypeError (
17
+ `Default breakpoint index should be a number. Got: ${ defaultIndex } , ${ typeof defaultIndex } `
18
+ )
19
+ } else if ( defaultIndex < 0 || defaultIndex > breakpoints . length - 1 ) {
20
+ throw new RangeError (
21
+ `Default breakpoint index out of range. Theme has ${ breakpoints . length } breakpoints, got index ${ defaultIndex } `
22
+ )
23
+ }
24
+
25
+ const [ value , setValue ] = useState ( defaultIndex )
38
26
useEffect ( ( ) => {
27
+ const getIndex = ( ) =>
28
+ breakpoints . filter (
29
+ ( bp ) => window . matchMedia ( `screen and (min-width: ${ bp } )` ) . matches
30
+ ) . length
31
+
39
32
const onResize = ( ) => {
40
33
const newValue = getIndex ( )
41
34
if ( value !== newValue ) {
42
35
setValue ( newValue )
43
36
}
44
37
}
38
+
39
+ onResize ( )
45
40
window . addEventListener ( 'resize' , onResize )
46
41
return ( ) => window . removeEventListener ( 'resize' , onResize )
47
- } , [ breakpoints , getIndex , value ] )
42
+ } , [ breakpoints , value ] )
48
43
49
44
return value
50
45
}
0 commit comments