import { useEffect } from 'react'; import useRafState from './useRafState'; import { isBrowser, off, on } from './misc/util'; const useWindowSize = (initialWidth = Infinity, initialHeight = Infinity) => { const [state, setState] = useRafState<{ width: number; height: number }>({ width: isBrowser ? window.innerWidth : initialWidth, height: isBrowser ? window.innerHeight : initialHeight, }); useEffect((): (() => void) | void => { if (isBrowser) { const handler = () => { setState({ width: window.innerWidth, height: window.innerHeight, }); }; on(window, 'resize', handler); return () => { off(window, 'resize', handler); }; } }, []); return state; }; export default useWindowSize;