{"version":3,"file":"use-lock-scroll.mjs","sources":["../../../src/components/ModalBase/use-lock-scroll.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { useReducedMotion } from '@raikou/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>();\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"],"names":[],"mappings":";;;AAQO,SAAS,aAAc,CAAA,EAAE,MAAQ,EAAA,kBAAA,EAAqC,EAAA;AAC3E,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAS,MAAM,CAAA;AAC/D,EAAA,MAAM,UAAU,MAAe,EAAA;AAC/B,EAAA,MAAM,eAAe,gBAAiB,EAAA;AACtC,EAAM,MAAA,mBAAA,GAAsB,eAAe,CAAI,GAAA,kBAAA;AAE/C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,MAAQ,EAAA;AACV,MAAA,mBAAA,CAAoB,IAAI,CAAA;AACxB,MAAO,MAAA,CAAA,YAAA,CAAa,QAAQ,OAAO,CAAA;AAAA,KACrC,MAAA,IAAW,wBAAwB,CAAG,EAAA;AACpC,MAAA,mBAAA,CAAoB,KAAK,CAAA;AAAA,KACpB,MAAA;AACL,MAAA,OAAA,CAAQ,UAAU,MAAO,CAAA,UAAA,CAAW,MAAM,mBAAoB,CAAA,KAAK,GAAG,mBAAmB,CAAA;AAAA;AAG3F,IAAA,OAAO,MAAM,MAAA,CAAO,YAAa,CAAA,OAAA,CAAQ,OAAO,CAAA;AAAA,GAC/C,EAAA,CAAC,MAAQ,EAAA,mBAAmB,CAAC,CAAA;AAEhC,EAAO,OAAA,gBAAA;AACT;;;;"}