@modern-kit/react
Version:
43 lines (39 loc) • 1.23 kB
JavaScript
;
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