{"version":3,"file":"index.cjs","names":[],"sources":["../../../src/hooks/useScrollLock/index.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect';\n\ninterface UseScrollLockProps {\n  autoLock?: boolean;\n}\n\nexport function useScrollLock<T extends HTMLElement>({\n  autoLock = true,\n}: UseScrollLockProps = {}) {\n  const ref = useRef<T | null>(null);\n  const originalOverflow = useRef<CSSStyleDeclaration['overflow'] | null>(null);\n\n  const lock = useCallback(() => {\n    const targetElement = ref.current as T;\n\n    originalOverflow.current = window.getComputedStyle(targetElement).overflow;\n    targetElement.style.overflow = 'hidden';\n  }, []);\n\n  const unlock = useCallback(() => {\n    if (!originalOverflow.current) return;\n\n    const targetElement = ref.current as T;\n    targetElement.style.overflow = originalOverflow.current;\n  }, []);\n\n  useIsomorphicLayoutEffect(() => {\n    if (!ref.current) {\n      ref.current = document.body as T;\n    }\n\n    if (autoLock) {\n      lock();\n    }\n\n    return () => unlock();\n  }, [autoLock, lock, unlock]);\n\n  return { ref, lock, unlock };\n}\n"],"mappings":";;;;AAOA,SAAgB,cAAqC,EACnD,WAAW,SACW,EAAE,EAAE;CAC1B,MAAM,OAAA,GAAA,MAAA,QAAuB,KAAK;CAClC,MAAM,oBAAA,GAAA,MAAA,QAAkE,KAAK;CAE7E,MAAM,QAAA,GAAA,MAAA,mBAAyB;EAC7B,MAAM,gBAAgB,IAAI;EAE1B,iBAAiB,UAAU,OAAO,iBAAiB,cAAc,CAAC;EAClE,cAAc,MAAM,WAAW;IAC9B,EAAE,CAAC;CAEN,MAAM,UAAA,GAAA,MAAA,mBAA2B;EAC/B,IAAI,CAAC,iBAAiB,SAAS;EAE/B,MAAM,gBAAgB,IAAI;EAC1B,cAAc,MAAM,WAAW,iBAAiB;IAC/C,EAAE,CAAC;CAEN,cAAA,gCAAgC;EAC9B,IAAI,CAAC,IAAI,SACP,IAAI,UAAU,SAAS;EAGzB,IAAI,UACF,MAAM;EAGR,aAAa,QAAQ;IACpB;EAAC;EAAU;EAAM;EAAO,CAAC;CAE5B,OAAO;EAAE;EAAK;EAAM;EAAQ"}