@modern-kit/react
Version:
36 lines (32 loc) • 1.05 kB
JavaScript
;
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