{"version":3,"file":"use-lock-scroll.cjs","names":[],"sources":["../../../src/components/ModalBase/use-lock-scroll.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { useReducedMotion } from '@mantine/hooks';\n\ninterface UseScrollLock {\n  opened: boolean;\n  transitionDuration: number;\n}\n\nexport function useLockScroll({ opened, transitionDuration }: UseScrollLock) {\n  const [shouldLockScroll, setShouldLockScroll] = useState(opened);\n  const timeout = useRef<number>(-1);\n  const reduceMotion = useReducedMotion();\n  const _transitionDuration = reduceMotion ? 0 : transitionDuration;\n\n  useEffect(() => {\n    if (opened) {\n      setShouldLockScroll(true);\n      window.clearTimeout(timeout.current);\n    } else if (_transitionDuration === 0) {\n      setShouldLockScroll(false);\n    } else {\n      timeout.current = window.setTimeout(() => setShouldLockScroll(false), _transitionDuration);\n    }\n\n    return () => window.clearTimeout(timeout.current);\n  }, [opened, _transitionDuration]);\n\n  return shouldLockScroll;\n}\n"],"mappings":";;;;;AAQA,SAAgB,cAAc,EAAE,QAAQ,sBAAqC;CAC3E,MAAM,CAAC,kBAAkB,wBAAA,GAAA,MAAA,UAAgC,OAAO;CAChE,MAAM,WAAA,GAAA,MAAA,QAAyB,GAAG;CAElC,MAAM,uBAAA,GAAA,eAAA,mBADiC,GACI,IAAI;AAE/C,EAAA,GAAA,MAAA,iBAAgB;AACd,MAAI,QAAQ;AACV,uBAAoB,KAAK;AACzB,UAAO,aAAa,QAAQ,QAAQ;aAC3B,wBAAwB,EACjC,qBAAoB,MAAM;MAE1B,SAAQ,UAAU,OAAO,iBAAiB,oBAAoB,MAAM,EAAE,oBAAoB;AAG5F,eAAa,OAAO,aAAa,QAAQ,QAAQ;IAChD,CAAC,QAAQ,oBAAoB,CAAC;AAEjC,QAAO"}