UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

26 lines (23 loc) 889 B
'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