@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
26 lines (23 loc) • 889 B
JavaScript
'use client';
import { useState, useRef, useEffect } from 'react';
import { useReducedMotion } from '@mantine/hooks';
function useLockScroll({ opened, transitionDuration }) {
const [shouldLockScroll, setShouldLockScroll] = useState(opened);
const timeout = useRef(-1);
const reduceMotion = useReducedMotion();
const _transitionDuration = reduceMotion ? 0 : transitionDuration;
useEffect(() => {
if (opened) {
setShouldLockScroll(true);
window.clearTimeout(timeout.current);
} else if (_transitionDuration === 0) {
setShouldLockScroll(false);
} else {
timeout.current = window.setTimeout(() => setShouldLockScroll(false), _transitionDuration);
}
return () => window.clearTimeout(timeout.current);
}, [opened, _transitionDuration]);
return shouldLockScroll;
}
export { useLockScroll };
//# sourceMappingURL=use-lock-scroll.mjs.map