UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

1 lines 1.51 kB
{"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"}