@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
1 lines • 1.53 kB
Source Map (JSON)
{"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,MAAM;CAC/D,MAAM,WAAA,GAAA,MAAA,QAAyB,EAAE;CAEjC,MAAM,uBAAA,GAAA,eAAA,kBAAiC,IAAI,IAAI;CAE/C,CAAA,GAAA,MAAA,iBAAgB;EACd,IAAI,QAAQ;GACV,oBAAoB,IAAI;GACxB,OAAO,aAAa,QAAQ,OAAO;EACrC,OAAO,IAAI,wBAAwB,GACjC,oBAAoB,KAAK;OAEzB,QAAQ,UAAU,OAAO,iBAAiB,oBAAoB,KAAK,GAAG,mBAAmB;EAG3F,aAAa,OAAO,aAAa,QAAQ,OAAO;CAClD,GAAG,CAAC,QAAQ,mBAAmB,CAAC;CAEhC,OAAO;AACT"}