@guruhotel/aura-hooks
Version:
🪝 Hooks library designed by the Guruhotel team for Aura UI
1 lines • 770 B
JavaScript
import{useEffect as t,useRef as o,useState as e}from"react";import{getLockStyles as r}from"./utils/get-lock-styles";import{injectStyles as n}from"./utils/inject-style-tag";import{insertStyleTag as i}from"./utils/insert-style-tag";import{makeStyleTag as d}from"./utils/make-style-tag";export function useScrollLock(l,s={disableBodyPadding:!1}){const[u,c]=e(l||!1),m=o(0),{disableBodyPadding:a}=s,y=o(null),f=()=>{null!=y&&y.current&&(y.current.parentNode.removeChild(y.current),y.current=null)};return t((()=>(u?(()=>{m.current=window.scrollY;const t=r({disableBodyPadding:a}),o=d();n(o,t),i(o),y.current=o})():f(),f)),[u]),t((()=>{void 0!==l&&c(l)}),[l]),t((()=>{void 0===l&&"undefined"!=typeof window&&"hidden"===window.document.body.style.overflow&&c(!0)}),[c]),[u,c]}