UNPKG

@modern-kit/react

Version:
43 lines (39 loc) 1.23 kB
'use strict'; var React = require('react'); var hooksUseDebounce = require('../useDebounce/index.cjs'); var hooksUseEventListener = require('../useEventListener/index.cjs'); var utils = require('@modern-kit/utils'); require('../useUnmount/index.cjs'); require('../usePreservedCallback/index.cjs'); require('../useIsomorphicLayoutEffect/index.cjs'); const initialSize = { width: null, height: null }; function useWindowSize({ debounceWait = 0 } = {}) { const [windowSize, setWindowSize] = React.useState(() => { if (utils.isServer()) return initialSize; return { width: window.innerWidth, height: window.innerHeight }; }); const debouncedResize = hooksUseDebounce.useDebounce(setWindowSize, debounceWait); const handleResize = React.useCallback(() => { const setSize = utils.isNumber(debounceWait) ? debouncedResize : setWindowSize; setSize({ width: window.innerWidth, height: window.innerHeight }); }, [debounceWait, debouncedResize]); hooksUseEventListener.useEventListener( typeof window !== "undefined" ? window : null, "resize", handleResize ); return windowSize; } exports.useWindowSize = useWindowSize; //# sourceMappingURL=index.cjs.map