{"version":3,"file":"useDisableScroll.js","names":[],"sources":["jsx/useDisableScroll.js"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nconst canUseDOM = () => typeof window !== \"undefined\" && !!window.document && !!window.document.createElement;\nlet refCount = 0;\nlet savedScrollY = 0;\nlet previousStyles = null;\nfunction isIOSSafari() {\n  if (typeof navigator === \"undefined\") return false;\n  const ua = navigator.userAgent;\n  const isIOS = /iPad|iPhone|iPod/.test(ua) || navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1;\n  const isSafari = /^((?!chrome|android).)*safari/i.test(ua);\n  return isIOS && isSafari;\n}\nconst useDisableBodyScroll = (enabled) => {\n  const wasEnabled = useRef(false);\n  useEffect(() => {\n    if (!canUseDOM()) {\n      return;\n    }\n    if (enabled && !wasEnabled.current) {\n      wasEnabled.current = true;\n      if (++refCount === 1) {\n        const html = document.documentElement;\n        const body = document.body;\n        const isIOS = isIOSSafari();\n        savedScrollY = window.scrollY;\n        previousStyles = {\n          htmlOverflow: html.style.overflow,\n          htmlScrollbarGutter: html.style.scrollbarGutter,\n          bodyPosition: body.style.position,\n          bodyTop: body.style.top,\n          bodyWidth: body.style.width,\n          bodyOverflow: body.style.overflow,\n          bodyOverscrollBehavior: body.style.overscrollBehavior\n        };\n        if (!isIOS && window.innerWidth > html.clientWidth) {\n          html.style.scrollbarGutter = \"stable\";\n        }\n        html.style.overflow = \"hidden\";\n        body.style.overscrollBehavior = \"none\";\n        if (isIOS) {\n          body.style.position = \"fixed\";\n          body.style.top = `-${savedScrollY}px`;\n          body.style.width = \"100%\";\n          body.style.overflow = \"hidden\";\n        }\n      }\n    } else if (!enabled && wasEnabled.current) {\n      wasEnabled.current = false;\n      if (--refCount === 0 && previousStyles) {\n        const html = document.documentElement;\n        const body = document.body;\n        html.style.overflow = previousStyles.htmlOverflow;\n        html.style.scrollbarGutter = previousStyles.htmlScrollbarGutter;\n        body.style.position = previousStyles.bodyPosition;\n        body.style.top = previousStyles.bodyTop;\n        body.style.width = previousStyles.bodyWidth;\n        body.style.overflow = previousStyles.bodyOverflow;\n        body.style.overscrollBehavior = previousStyles.bodyOverscrollBehavior;\n        if (savedScrollY > 0) {\n          window.scrollTo(0, savedScrollY);\n        }\n        previousStyles = null;\n        savedScrollY = 0;\n      }\n    }\n  }, [enabled]);\n  useEffect(() => {\n    return () => {\n      if (wasEnabled.current) {\n        wasEnabled.current = false;\n        if (--refCount === 0 && previousStyles) {\n          const html = document.documentElement;\n          const body = document.body;\n          html.style.overflow = previousStyles.htmlOverflow;\n          html.style.scrollbarGutter = previousStyles.htmlScrollbarGutter;\n          body.style.position = previousStyles.bodyPosition;\n          body.style.top = previousStyles.bodyTop;\n          body.style.width = previousStyles.bodyWidth;\n          body.style.overflow = previousStyles.bodyOverflow;\n          body.style.overscrollBehavior = previousStyles.bodyOverscrollBehavior;\n          if (savedScrollY > 0) {\n            window.scrollTo(0, savedScrollY);\n          }\n          previousStyles = null;\n          savedScrollY = 0;\n        }\n      }\n    };\n  }, []);\n};\nexport {\n  useDisableBodyScroll\n};\n//# sourceMappingURL=useDisableScroll.js.map\n"],"mappings":";;;AACA,MAAM,kBAAkB,OAAO,WAAW,eAAe,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,OAAO,SAAS;AAChG,IAAI,WAAW;AACf,IAAI,eAAe;AACnB,IAAI,iBAAiB;AACrB,SAAS,cAAc;CACrB,IAAI,OAAO,cAAc,aAAa,OAAO;CAC7C,MAAM,KAAK,UAAU;CACrB,MAAM,QAAQ,mBAAmB,KAAK,EAAE,KAAK,UAAU,aAAa,cAAc,UAAU,iBAAiB;CAC7G,MAAM,WAAW,iCAAiC,KAAK,EAAE;CACzD,OAAO,SAAS;AAClB;AACA,MAAM,wBAAwB,YAAY;CACxC,MAAM,aAAa,OAAO,KAAK;CAC/B,gBAAgB;EACd,IAAI,CAAC,UAAU,GAAG;GAChB;EACF;EACA,IAAI,WAAW,CAAC,WAAW,SAAS;GAClC,WAAW,UAAU;GACrB,IAAI,EAAE,aAAa,GAAG;IACpB,MAAM,OAAO,SAAS;IACtB,MAAM,OAAO,SAAS;IACtB,MAAM,QAAQ,YAAY;IAC1B,eAAe,OAAO;IACtB,iBAAiB;KACf,cAAc,KAAK,MAAM;KACzB,qBAAqB,KAAK,MAAM;KAChC,cAAc,KAAK,MAAM;KACzB,SAAS,KAAK,MAAM;KACpB,WAAW,KAAK,MAAM;KACtB,cAAc,KAAK,MAAM;KACzB,wBAAwB,KAAK,MAAM;IACrC;IACA,IAAI,CAAC,SAAS,OAAO,aAAa,KAAK,aAAa;KAClD,KAAK,MAAM,kBAAkB;IAC/B;IACA,KAAK,MAAM,WAAW;IACtB,KAAK,MAAM,qBAAqB;IAChC,IAAI,OAAO;KACT,KAAK,MAAM,WAAW;KACtB,KAAK,MAAM,MAAM,IAAI,aAAa;KAClC,KAAK,MAAM,QAAQ;KACnB,KAAK,MAAM,WAAW;IACxB;GACF;EACF,OAAO,IAAI,CAAC,WAAW,WAAW,SAAS;GACzC,WAAW,UAAU;GACrB,IAAI,EAAE,aAAa,KAAK,gBAAgB;IACtC,MAAM,OAAO,SAAS;IACtB,MAAM,OAAO,SAAS;IACtB,KAAK,MAAM,WAAW,eAAe;IACrC,KAAK,MAAM,kBAAkB,eAAe;IAC5C,KAAK,MAAM,WAAW,eAAe;IACrC,KAAK,MAAM,MAAM,eAAe;IAChC,KAAK,MAAM,QAAQ,eAAe;IAClC,KAAK,MAAM,WAAW,eAAe;IACrC,KAAK,MAAM,qBAAqB,eAAe;IAC/C,IAAI,eAAe,GAAG;KACpB,OAAO,SAAS,GAAG,YAAY;IACjC;IACA,iBAAiB;IACjB,eAAe;GACjB;EACF;CACF,GAAG,CAAC,OAAO,CAAC;CACZ,gBAAgB;EACd,aAAa;GACX,IAAI,WAAW,SAAS;IACtB,WAAW,UAAU;IACrB,IAAI,EAAE,aAAa,KAAK,gBAAgB;KACtC,MAAM,OAAO,SAAS;KACtB,MAAM,OAAO,SAAS;KACtB,KAAK,MAAM,WAAW,eAAe;KACrC,KAAK,MAAM,kBAAkB,eAAe;KAC5C,KAAK,MAAM,WAAW,eAAe;KACrC,KAAK,MAAM,MAAM,eAAe;KAChC,KAAK,MAAM,QAAQ,eAAe;KAClC,KAAK,MAAM,WAAW,eAAe;KACrC,KAAK,MAAM,qBAAqB,eAAe;KAC/C,IAAI,eAAe,GAAG;MACpB,OAAO,SAAS,GAAG,YAAY;KACjC;KACA,iBAAiB;KACjB,eAAe;IACjB;GACF;EACF;CACF,GAAG,CAAC,CAAC;AACP"}