{"version":3,"names":["isOverflowElement","createRenderEffect","ownerDocument","ownerWindow","isIOS","isSafari","isWebKit","AnimationFrame","Timeout","NOOP","originalHtmlStyles","originalBodyStyles","originalHtmlScrollBehavior","hasInsetScrollbars","referenceElement","document","doc","win","documentElement","innerWidth","clientWidth","supportsStableScrollbarGutter","supported","CSS","supports","html","body","scrollContainer","originalScrollContainerOverflowY","style","overflowY","originalHtmlStyleGutter","scrollbarGutter","before","offsetWidth","after","preventScrollOverlayScrollbars","elementToLock","originalElementToLockStyles","overflowX","Object","assign","preventScrollInsetScrollbars","scrollTop","scrollLeft","updateGutterOnly","resizeFrame","create","visualViewport","scale","lockScroll","htmlStyles","getComputedStyle","bodyStyles","htmlScrollbarGutterValue","hasBothEdges","includes","scrollbarGutterValue","scrollBehavior","position","height","width","boxSizing","isScrollableY","scrollHeight","clientHeight","isScrollableX","scrollWidth","hasConstantOverflowY","hasConstantOverflowX","scrollbarWidth","Math","max","scrollbarHeight","innerHeight","marginY","parseFloat","marginTop","marginBottom","marginX","marginLeft","marginRight","overflow","setAttribute","cleanup","removeAttribute","handleResize","request","addEventListener","cancel","removeEventListener","ScrollLocker","lockCount","restore","timeoutLock","timeoutUnlock","acquire","start","lock","release","unlock","htmlOverflowY","hasOverlayScrollbars","SCROLL_LOCKER","resolve","input","useScrollLock","parameters","enabled","reference","undefined","__peekScrollLockerState","count","locked","__resetScrollLockerForTests","clear"],"sources":["use-scroll-lock.ts"],"sourcesContent":["/**\n * Port of Base UI React's `@base-ui/utils/useScrollLock`\n * (`packages/utils/src/useScrollLock.ts`).\n *\n * Single global scroll lock with ref-counting, `<html>`/body inset-scrollbar\n * compensation, iOS overlay-scrollbar path, and resize handling. This\n * supersedes the minimal `use-anchored-popup-scroll-lock` overflow toggle —\n * that file is now a thin wrapper that forwards to this module so existing\n * popover / tooltip call sites keep working without changes.\n *\n * ## React → Solid deviations\n *\n * - The React hook body uses `useIsoLayoutEffect` — here it maps to\n *   `createRenderEffect` via the `useIsoLayoutEffect` alias. The compute\n *   half re-reads `enabled` / `referenceElement` and the apply half\n *   returns a disposer; Solid's effect machinery invokes the previous\n *   disposer on every re-run and on owner dispose, mirroring React's\n *   useEffect cleanup semantics.\n * - `Accessor<T> | T` is accepted for both inputs so consumers don't have\n *   to wrap bare values. Matches the hook-parameter shape elsewhere in\n *   the port.\n * - `addEventListener` is inlined (one-off use for the window resize\n *   listener) since this codebase doesn't have a dedicated helper.\n *\n * ## happy-dom gaps\n *\n * Real-browser-only paths that unit tests cannot exercise:\n *\n * - **Inset-scrollbar compensation**: `isOverflowElement(html)` + `body`\n *   height/width rewriting requires real layout metrics. happy-dom\n *   returns 0 for `offsetWidth` / `clientWidth` — the inset branch runs\n *   but writes zero-valued styles.\n * - **iOS overlay-scrollbar path**: gated on `isIOS`; test env reports\n *   `false` so the path is inert.\n * - **`scrollbar-gutter: stable` detection**: relies on `CSS.supports` +\n *   real `offsetWidth` diffs; result in happy-dom is environment-\n *   dependent.\n * - **`visualViewport.scale` pinch-zoom bail-out**: happy-dom has no\n *   `visualViewport`.\n * - **Window `resize` event**: happy-dom dispatches events but doesn't\n *   emit native layout changes.\n *\n * The unit tests in `test/internals/popups/use-scroll-lock.test.tsx`\n * cover the ref-counting state machine, the `overflow: hidden` / `clip`\n * site-author bailout, and basic enable/disable lifecycle.\n */\n\nimport { isOverflowElement } from \"@floating-ui/utils/dom\";\nimport { type Accessor, createRenderEffect } from \"solid-js\";\nimport { ownerDocument } from \"../dom/owner-document\";\nimport { ownerWindow } from \"../dom/owner-window\";\n// `isSafari` stands in for `isWebKit` here — the Solid port's\n// `detect-browser` only exports `isSafari` (navigator.vendor check), which\n// overlaps the WebKit path for the purposes of the pinch-zoom bail-out.\n// A dedicated `isWebKit` would land as a separate internals update.\nimport { isIOS, isSafari as isWebKit } from \"../floating-ui/detect-browser\";\nimport { AnimationFrame } from \"../use-animation-frame\";\nimport { Timeout } from \"../use-timeout\";\n\nconst NOOP = (): void => {};\n\n// Module-global state — matches the React source's single `ScrollLocker`\n// instance + top-level `originalHtmlStyles` / `originalBodyStyles`\n// caches. Ref-counting is shared across all components that acquire a\n// lock, so two simultaneously-open dialogs acquire the lock once and\n// release it once.\nlet originalHtmlStyles: Partial<CSSStyleDeclaration> = {};\nlet originalBodyStyles: Partial<CSSStyleDeclaration> = {};\nlet originalHtmlScrollBehavior = \"\";\n\nfunction hasInsetScrollbars(referenceElement: Element | null): boolean {\n\tif (typeof document === \"undefined\") {\n\t\treturn false;\n\t}\n\tconst doc = ownerDocument(referenceElement);\n\tconst win = ownerWindow(doc.documentElement);\n\treturn win.innerWidth - doc.documentElement.clientWidth > 0;\n}\n\nfunction supportsStableScrollbarGutter(\n\treferenceElement: Element | null,\n): boolean {\n\tconst supported =\n\t\ttypeof CSS !== \"undefined\" &&\n\t\tCSS.supports &&\n\t\tCSS.supports(\"scrollbar-gutter\", \"stable\");\n\n\tif (!supported || typeof document === \"undefined\") {\n\t\treturn false;\n\t}\n\n\tconst doc = ownerDocument(referenceElement);\n\tconst html = doc.documentElement;\n\tconst body = doc.body;\n\n\tconst scrollContainer = isOverflowElement(html) ? html : body;\n\n\tconst originalScrollContainerOverflowY = scrollContainer.style.overflowY;\n\tconst originalHtmlStyleGutter = html.style.scrollbarGutter;\n\n\thtml.style.scrollbarGutter = \"stable\";\n\n\tscrollContainer.style.overflowY = \"scroll\";\n\tconst before = scrollContainer.offsetWidth;\n\n\tscrollContainer.style.overflowY = \"hidden\";\n\tconst after = scrollContainer.offsetWidth;\n\n\tscrollContainer.style.overflowY = originalScrollContainerOverflowY;\n\thtml.style.scrollbarGutter = originalHtmlStyleGutter;\n\n\treturn before === after;\n}\n\n/**\n * Overlay-scrollbar path — used on iOS and whenever the document has no\n * inset scrollbars. Locks the overflowing element's `overflow-x` /\n * `overflow-y` to `hidden` without attempting body geometry compensation.\n */\nfunction preventScrollOverlayScrollbars(\n\treferenceElement: Element | null,\n): () => void {\n\tconst doc = ownerDocument(referenceElement);\n\tconst html = doc.documentElement;\n\tconst body = doc.body;\n\n\tconst elementToLock = isOverflowElement(html) ? html : body;\n\tconst originalElementToLockStyles = {\n\t\toverflowY: elementToLock.style.overflowY,\n\t\toverflowX: elementToLock.style.overflowX,\n\t};\n\n\tObject.assign(elementToLock.style, {\n\t\toverflowY: \"hidden\",\n\t\toverflowX: \"hidden\",\n\t});\n\n\treturn (): void => {\n\t\tObject.assign(elementToLock.style, originalElementToLockStyles);\n\t};\n}\n\n/**\n * Inset-scrollbar path — used when the document has classic inset\n * scrollbars (most desktops). Rewrites `<html>` and `<body>` to lock the\n * scroll position while preserving scrollbar width through either\n * `scrollbar-gutter: stable` or a `calc(100dvh - ...)` / `calc(100vw - ...)`\n * body clamp. Mirrors the React source 1:1.\n */\nfunction preventScrollInsetScrollbars(\n\treferenceElement: Element | null,\n): () => void {\n\tconst doc = ownerDocument(referenceElement);\n\tconst html = doc.documentElement;\n\tconst body = doc.body;\n\tconst win = ownerWindow(html);\n\n\tlet scrollTop = 0;\n\tlet scrollLeft = 0;\n\tlet updateGutterOnly = false;\n\tconst resizeFrame = AnimationFrame.create();\n\n\t// Pinch-zoom in Safari causes a shift. Just don't lock scroll if there's any pinch-zoom.\n\tif (isWebKit && (win.visualViewport?.scale ?? 1) !== 1) {\n\t\treturn NOOP;\n\t}\n\n\tfunction lockScroll(): void {\n\t\t/* DOM reads: */\n\t\tconst htmlStyles = win.getComputedStyle(html);\n\t\tconst bodyStyles = win.getComputedStyle(body);\n\t\tconst htmlScrollbarGutterValue = htmlStyles.scrollbarGutter || \"\";\n\t\tconst hasBothEdges = htmlScrollbarGutterValue.includes(\"both-edges\");\n\t\tconst scrollbarGutterValue = hasBothEdges ? \"stable both-edges\" : \"stable\";\n\n\t\tscrollTop = html.scrollTop;\n\t\tscrollLeft = html.scrollLeft;\n\n\t\toriginalHtmlStyles = {\n\t\t\tscrollbarGutter: html.style.scrollbarGutter,\n\t\t\toverflowY: html.style.overflowY,\n\t\t\toverflowX: html.style.overflowX,\n\t\t};\n\t\toriginalHtmlScrollBehavior = html.style.scrollBehavior;\n\n\t\toriginalBodyStyles = {\n\t\t\tposition: body.style.position,\n\t\t\theight: body.style.height,\n\t\t\twidth: body.style.width,\n\t\t\tboxSizing: body.style.boxSizing,\n\t\t\toverflowY: body.style.overflowY,\n\t\t\toverflowX: body.style.overflowX,\n\t\t\tscrollBehavior: body.style.scrollBehavior,\n\t\t};\n\n\t\tconst isScrollableY = html.scrollHeight > html.clientHeight;\n\t\tconst isScrollableX = html.scrollWidth > html.clientWidth;\n\t\tconst hasConstantOverflowY =\n\t\t\thtmlStyles.overflowY === \"scroll\" || bodyStyles.overflowY === \"scroll\";\n\t\tconst hasConstantOverflowX =\n\t\t\thtmlStyles.overflowX === \"scroll\" || bodyStyles.overflowX === \"scroll\";\n\n\t\t// Values can be negative in Firefox\n\t\tconst scrollbarWidth = Math.max(0, win.innerWidth - body.clientWidth);\n\t\tconst scrollbarHeight = Math.max(0, win.innerHeight - body.clientHeight);\n\n\t\tconst marginY =\n\t\t\tparseFloat(bodyStyles.marginTop) + parseFloat(bodyStyles.marginBottom);\n\t\tconst marginX =\n\t\t\tparseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight);\n\t\tconst elementToLock = isOverflowElement(html) ? html : body;\n\n\t\tupdateGutterOnly = supportsStableScrollbarGutter(referenceElement);\n\n\t\t/*\n\t\t * DOM writes:\n\t\t * Do not read the DOM past this point!\n\t\t */\n\n\t\tif (updateGutterOnly) {\n\t\t\thtml.style.scrollbarGutter = scrollbarGutterValue;\n\t\t\telementToLock.style.overflowY = \"hidden\";\n\t\t\telementToLock.style.overflowX = \"hidden\";\n\t\t\treturn;\n\t\t}\n\n\t\tObject.assign(html.style, {\n\t\t\tscrollbarGutter: scrollbarGutterValue,\n\t\t\toverflowY: \"hidden\",\n\t\t\toverflowX: \"hidden\",\n\t\t});\n\n\t\tif (isScrollableY || hasConstantOverflowY) {\n\t\t\thtml.style.overflowY = \"scroll\";\n\t\t}\n\t\tif (isScrollableX || hasConstantOverflowX) {\n\t\t\thtml.style.overflowX = \"scroll\";\n\t\t}\n\n\t\tObject.assign(body.style, {\n\t\t\tposition: \"relative\",\n\t\t\theight:\n\t\t\t\tmarginY || scrollbarHeight\n\t\t\t\t\t? `calc(100dvh - ${marginY + scrollbarHeight}px)`\n\t\t\t\t\t: \"100dvh\",\n\t\t\twidth:\n\t\t\t\tmarginX || scrollbarWidth\n\t\t\t\t\t? `calc(100vw - ${marginX + scrollbarWidth}px)`\n\t\t\t\t\t: \"100vw\",\n\t\t\tboxSizing: \"border-box\",\n\t\t\toverflow: \"hidden\",\n\t\t\tscrollBehavior: \"unset\",\n\t\t});\n\n\t\tbody.scrollTop = scrollTop;\n\t\tbody.scrollLeft = scrollLeft;\n\t\thtml.setAttribute(\"data-quoin-scroll-locked\", \"\");\n\t\thtml.style.scrollBehavior = \"unset\";\n\t}\n\n\tfunction cleanup(): void {\n\t\tObject.assign(html.style, originalHtmlStyles);\n\t\tObject.assign(body.style, originalBodyStyles);\n\n\t\tif (!updateGutterOnly) {\n\t\t\thtml.scrollTop = scrollTop;\n\t\t\thtml.scrollLeft = scrollLeft;\n\t\t\thtml.removeAttribute(\"data-quoin-scroll-locked\");\n\t\t\thtml.style.scrollBehavior = originalHtmlScrollBehavior;\n\t\t}\n\t}\n\n\tfunction handleResize(): void {\n\t\tcleanup();\n\t\tresizeFrame.request(lockScroll);\n\t}\n\n\tlockScroll();\n\twin.addEventListener(\"resize\", handleResize);\n\n\treturn (): void => {\n\t\tresizeFrame.cancel();\n\t\tcleanup();\n\t\t// Sometimes this cleanup can run after test teardown. Guard so we\n\t\t// don't crash.\n\t\tif (typeof win.removeEventListener === \"function\") {\n\t\t\twin.removeEventListener(\"resize\", handleResize);\n\t\t}\n\t};\n}\n\n/**\n * Singleton ref-counted lock. First acquire installs the lock (via a\n * `setTimeout(fn, 0)` so simultaneous opens coalesce); last release\n * schedules cleanup on another 0-delay timeout so enter/exit animations\n * with brief re-enables don't thrash.\n */\nclass ScrollLocker {\n\tlockCount = 0;\n\trestore: (() => void) | null = null;\n\ttimeoutLock = Timeout.create();\n\ttimeoutUnlock = Timeout.create();\n\n\tacquire(referenceElement: Element | null): () => void {\n\t\tthis.lockCount += 1;\n\t\tif (this.lockCount === 1 && this.restore === null) {\n\t\t\tthis.timeoutLock.start(0, () => this.lock(referenceElement));\n\t\t}\n\t\treturn this.release;\n\t}\n\n\trelease = (): void => {\n\t\tthis.lockCount -= 1;\n\t\tif (this.lockCount === 0 && this.restore) {\n\t\t\tthis.timeoutUnlock.start(0, this.unlock);\n\t\t}\n\t};\n\n\tprivate unlock = (): void => {\n\t\tif (this.lockCount === 0 && this.restore) {\n\t\t\tthis.restore();\n\t\t\tthis.restore = null;\n\t\t}\n\t};\n\n\tprivate lock(referenceElement: Element | null): void {\n\t\tif (this.lockCount === 0 || this.restore !== null) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof document === \"undefined\") {\n\t\t\tthis.restore = NOOP;\n\t\t\treturn;\n\t\t}\n\n\t\tconst doc = ownerDocument(referenceElement);\n\t\tconst html = doc.documentElement;\n\t\tconst htmlOverflowY = ownerWindow(html).getComputedStyle(html).overflowY;\n\n\t\t// If the site author already hid overflow on <html>, respect it and bail.\n\t\tif (htmlOverflowY === \"hidden\" || htmlOverflowY === \"clip\") {\n\t\t\tthis.restore = NOOP;\n\t\t\treturn;\n\t\t}\n\n\t\tconst hasOverlayScrollbars = isIOS || !hasInsetScrollbars(referenceElement);\n\n\t\t// On iOS, scroll locking does not work if the navbar is collapsed.\n\t\t// See the React source's comment for the history of issues that\n\t\t// gate iOS-specific behavior.\n\t\tthis.restore = hasOverlayScrollbars\n\t\t\t? preventScrollOverlayScrollbars(referenceElement)\n\t\t\t: preventScrollInsetScrollbars(referenceElement);\n\t}\n}\n\nconst SCROLL_LOCKER = new ScrollLocker();\n\n/**\n * Inputs for `useScrollLock`. Both parameters accept a raw value or a\n * Solid `Accessor<T>` — passing an accessor lets the hook react to prop\n * changes without the caller needing to set up their own effect.\n */\nexport interface UseScrollLockParameters {\n\t/** Whether scroll lock is enabled. */\n\tenabled?: boolean | Accessor<boolean> | undefined;\n\t/**\n\t * The element used as a reference for lock calculations — typically\n\t * the popup / positioner. The owner document/window are inferred off\n\t * of this.\n\t */\n\treferenceElement?: Element | null | Accessor<Element | null> | undefined;\n}\n\nfunction resolve<T>(input: T | Accessor<T>): T {\n\treturn typeof input === \"function\" ? (input as Accessor<T>)() : input;\n}\n\n/**\n * Locks the scroll of the document when `enabled` is true. Ref-counted\n * globally — multiple simultaneous callers share one lock/unlock cycle.\n *\n * Usage:\n *\n * ```ts\n * useScrollLock({\n *   enabled: () => props.modal === true && open(),\n *   referenceElement: popupElement,\n * });\n * ```\n */\nexport function useScrollLock(parameters: UseScrollLockParameters = {}): void {\n\tcreateRenderEffect(\n\t\t() => ({\n\t\t\tenabled: resolve(parameters.enabled ?? true),\n\t\t\treference: resolve(parameters.referenceElement ?? null),\n\t\t}),\n\t\t({ enabled, reference }) => {\n\t\t\tif (!enabled) return undefined;\n\t\t\tconst release = SCROLL_LOCKER.acquire(reference);\n\t\t\treturn release;\n\t\t},\n\t);\n}\n\n/**\n * Test-only peek into the lock state. Not part of the public hook\n * surface; tests import it directly.\n *\n * @internal\n */\nexport function __peekScrollLockerState(): {\n\tcount: number;\n\tlocked: boolean;\n} {\n\treturn {\n\t\tcount: SCROLL_LOCKER.lockCount,\n\t\tlocked: SCROLL_LOCKER.restore !== null,\n\t};\n}\n\n/**\n * Test-only reset. Forces the singleton back to its pristine state so\n * tests don't leak ref counts across each other.\n *\n * @internal\n */\nexport function __resetScrollLockerForTests(): void {\n\tSCROLL_LOCKER.timeoutLock.clear();\n\tSCROLL_LOCKER.timeoutUnlock.clear();\n\tif (SCROLL_LOCKER.restore) {\n\t\tSCROLL_LOCKER.restore();\n\t\tSCROLL_LOCKER.restore = null;\n\t}\n\tSCROLL_LOCKER.lockCount = 0;\n}\n"],"mappings":"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","ignoreList":[]}