UNPKG

@modern-kit/react

Version:
36 lines (32 loc) 1.05 kB
'use strict'; var React = require('react'); var hooksUseIsomorphicLayoutEffect = require('../useIsomorphicLayoutEffect/index.cjs'); require('@modern-kit/utils'); function useScrollLock({ autoLock = true } = {}) { const ref = React.useRef(null); const originalOverflow = React.useRef(null); const lock = React.useCallback(() => { const targetElement = ref.current; originalOverflow.current = window.getComputedStyle(targetElement).overflow; targetElement.style.overflow = "hidden"; }, []); const unlock = React.useCallback(() => { if (!originalOverflow.current) return; const targetElement = ref.current; targetElement.style.overflow = originalOverflow.current; }, []); hooksUseIsomorphicLayoutEffect.useIsomorphicLayoutEffect(() => { if (!ref.current) { ref.current = document.body; } if (autoLock) { lock(); } return () => unlock(); }, [autoLock, lock, unlock]); return { ref, lock, unlock }; } exports.useScrollLock = useScrollLock; //# sourceMappingURL=index.cjs.map