{"version":3,"names":["dynamic","createEffect","createRenderEffect","createSignal","omit","useDirection","composeRefs","userRef","mergeRootProps","resolveClassStyle","normalizeScrollOffset","DISABLE_SCROLLBAR_CLASS_NAME","styleDisableScrollbar","clamp","createStableCallback","useTimeout","MIN_THUMB_SIZE","useScrollAreaRootContext","getOffset","scrollAreaDataAttrs","ScrollAreaViewportContext","ScrollAreaViewportCssVars","scrollAreaOverflowVarsRegistered","removeCSSVariableInheritance","isWebKit","navigator","test","userAgent","CSS","name","scrollAreaOverflowXStart","scrollAreaOverflowXEnd","scrollAreaOverflowYStart","scrollAreaOverflowYEnd","registerProperty","syntax","inherits","initialValue","getHiddenState","viewport","y","clientHeight","scrollHeight","x","clientWidth","scrollWidth","corner","mergeHiddenState","prev","next","ScrollAreaViewport","props","context","direction","programmaticScroll","lastMeasuredViewportMetrics","Number","NaN","scrollEndTimeout","waitForAnimationsTimeout","viewportEl","setViewportEl","ownedWrite","computeThumbPosition","viewportRef","current","scrollbarYEl","scrollbarYRef","scrollbarXEl","scrollbarXRef","thumbYEl","thumbYRef","thumbXEl","thumbXRef","cornerEl","cornerRef","scrollableContentHeight","scrollableContentWidth","viewportHeight","viewportWidth","scrollTop","scrollLeft","isFirstMeasurement","isNaN","setHasMeasuredScrollbar","nextHiddenState","scrollbarYHidden","scrollbarXHidden","ratioX","ratioY","maxScrollLeft","Math","max","maxScrollTop","scrollLeftFromStart","scrollLeftFromEnd","rawScrollLeftFromStart","rawScrollTopFromStart","scrollTopFromStart","scrollTopFromEnd","nextWidth","nextHeight","nextCornerWidth","nextCornerHeight","offsetWidth","offsetHeight","cornerSize","cornerNotYetSized","width","height","cornerWidthOffset","cornerHeightOffset","scrollbarXOffset","scrollbarYOffset","thumbXOffset","thumbYOffset","idealNextWidth","idealNextHeight","maxNextWidth","min","maxNextHeight","clampedNextWidth","clampedNextHeight","setThumbSize","applyVerticalThumbTransform","maxThumbOffsetY","scrollRangeY","scrollRatioY","thumbOffsetY","style","transform","applyHorizontalThumbTransform","maxThumbOffsetX","scrollRangeX","scrollRatioX","thumbOffsetX","commitOverflowAndCornerState","overflowMetricsPx","cssVar","value","setProperty","setCornerSize","setHiddenState","threshold","overflowEdgeThreshold","nextOverflowEdges","xStart","xEnd","yStart","yEnd","setOverflowEdges","el","hidden","hiddenState","dir","queueMicrotask","matches","setHovering","ResizeObserver","hasInitialized","ro","observe","start","getAnimations","animations","subtree","length","Promise","allSettled","map","animation","finished","then","catch","disconnect","clear","viewportState","contextValue","handleUserInteraction","userStyling","userProps","localRef","internalSlot","role","rootId","tabIndex","h","class","overflow","onScroll","handleScroll","handleEvent","passive","onPointerMove","onPointerEnter","onKeyDown","children","styledUserProps","merged","Tag","as"],"sources":["scroll-area-viewport.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\nimport { dynamic } from \"@solidjs/web\";\nimport { createEffect, createRenderEffect, createSignal, omit } from \"solid-js\";\nimport { useDirection } from \"../../direction-provider/direction-provider-context.ts\";\nimport { composeRefs, userRef } from \"../../internals/compose-refs\";\nimport { mergeRootProps } from \"../../internals/merge-root-props\";\nimport { resolveClassStyle } from \"../../internals/resolve-class-style\";\nimport { normalizeScrollOffset } from \"../../internals/scroll-area-utils/scroll-edges.ts\";\nimport {\n\tDISABLE_SCROLLBAR_CLASS_NAME,\n\tstyleDisableScrollbar,\n} from \"../../internals/scroll-area-utils/style-disable-scrollbar.ts\";\nimport { clamp } from \"../../internals/slider-utils/clamp.ts\";\nimport { createStableCallback } from \"../../internals/stable-callback\";\nimport type { BaseUIComponentProps } from \"../../internals/types\";\nimport { useTimeout } from \"../../internals/use-timeout.ts\";\nimport { MIN_THUMB_SIZE } from \"../constants.ts\";\nimport {\n\ttype HiddenState,\n\ttype ScrollAreaRootState,\n\tuseScrollAreaRootContext,\n} from \"../root/scroll-area-root-context.ts\";\nimport { getOffset } from \"../utils/get-offset.ts\";\nimport { scrollAreaDataAttrs } from \"../utils/state-attrs.ts\";\nimport {\n\tScrollAreaViewportContext,\n\ttype ScrollAreaViewportContextValue,\n} from \"./scroll-area-viewport-context.ts\";\nimport { ScrollAreaViewportCssVars } from \"./scroll-area-viewport-css-vars.ts\";\n\nexport interface ScrollAreaViewportState extends ScrollAreaRootState {}\n\nexport interface ScrollAreaViewportProps\n\textends BaseUIComponentProps<\"div\", ScrollAreaViewportState> {\n\t/** Tag/component to render. Defaults to `\"div\"`. */\n\tas?: ValidComponent;\n}\n\n// Cross-component latch. `CSS.registerProperty` is global, so we guard\n// against re-registering when multiple scroll areas mount.\nlet scrollAreaOverflowVarsRegistered = false;\n\n/**\n * Opts the scroll-area overflow CSS variables out of inheritance. With\n * `inherits: false`, descendants that want to read these vars must opt in\n * explicitly via `inherit`. Safari (WebKit) has bugs around that opt-in so\n * we skip the optimization there.\n */\nfunction removeCSSVariableInheritance(): void {\n\tif (scrollAreaOverflowVarsRegistered) return;\n\t// Feature-detect WebKit via navigator — happy-dom exposes\n\t// `navigator.userAgent` without the WebKit markers, so the check is a\n\t// no-op in tests which is correct.\n\tconst isWebKit =\n\t\ttypeof navigator !== \"undefined\" &&\n\t\t/AppleWebKit/.test(navigator.userAgent) &&\n\t\t!/Chrome/.test(navigator.userAgent);\n\tif (isWebKit) return;\n\tif (typeof CSS === \"undefined\" || !(\"registerProperty\" in CSS)) {\n\t\tscrollAreaOverflowVarsRegistered = true;\n\t\treturn;\n\t}\n\tfor (const name of [\n\t\tScrollAreaViewportCssVars.scrollAreaOverflowXStart,\n\t\tScrollAreaViewportCssVars.scrollAreaOverflowXEnd,\n\t\tScrollAreaViewportCssVars.scrollAreaOverflowYStart,\n\t\tScrollAreaViewportCssVars.scrollAreaOverflowYEnd,\n\t]) {\n\t\ttry {\n\t\t\tCSS.registerProperty({\n\t\t\t\tname,\n\t\t\t\tsyntax: \"<length>\",\n\t\t\t\tinherits: false,\n\t\t\t\tinitialValue: \"0px\",\n\t\t\t});\n\t\t} catch {\n\t\t\t// Already registered — ignore.\n\t\t}\n\t}\n\tscrollAreaOverflowVarsRegistered = true;\n}\n\nfunction getHiddenState(viewport: HTMLElement): HiddenState {\n\tconst y = viewport.clientHeight >= viewport.scrollHeight;\n\tconst x = viewport.clientWidth >= viewport.scrollWidth;\n\treturn { y, x, corner: y || x };\n}\n\nfunction mergeHiddenState(prev: HiddenState, next: HiddenState): HiddenState {\n\tif (prev.y === next.y && prev.x === next.x && prev.corner === next.corner) {\n\t\treturn prev;\n\t}\n\treturn next;\n}\n\n/**\n * The scrollable container of the scroll area. Renders a `<div>` element.\n *\n * Responsibilities:\n *\n *  - Hides the native scrollbars via the shared `.base-ui-disable-scrollbar`\n *    class (the root injects the matching stylesheet).\n *  - Publishes thumb/corner sizes, per-axis hidden state, overflow-edge\n *    flags, and per-edge scroll-offset CSS vars for descendant scrollbars.\n *  - Observes the viewport with a `ResizeObserver` and recomputes the thumb\n *    on size changes. Also recomputes after in-progress animations settle.\n */\nexport function ScrollAreaViewport(\n\tprops: ScrollAreaViewportProps,\n): JSX.Element {\n\tconst context = useScrollAreaRootContext();\n\tconst direction = useDirection();\n\n\t// Tracks whether the most-recent scroll was user-driven. Flipped to\n\t// false by any interaction that implies user intent; reset to true\n\t// after ~100ms of no scroll events (matches React's programmatic-scroll\n\t// detection).\n\tlet programmaticScroll = true;\n\tconst lastMeasuredViewportMetrics: [number, number, number, number] = [\n\t\tNumber.NaN,\n\t\tNumber.NaN,\n\t\tNumber.NaN,\n\t\tNumber.NaN,\n\t];\n\n\tconst scrollEndTimeout = useTimeout();\n\tconst waitForAnimationsTimeout = useTimeout();\n\n\t// Local element signal so effects retrigger when the viewport mounts.\n\t// Context refs are imperative containers, not signals.\n\tconst [viewportEl, setViewportEl] = createSignal<HTMLDivElement | null>(\n\t\tnull,\n\t\t{ ownedWrite: true },\n\t);\n\n\tconst computeThumbPosition = createStableCallback(() => (): void => {\n\t\tconst viewportEl = context.viewportRef.current;\n\t\tconst scrollbarYEl = context.scrollbarYRef.current;\n\t\tconst scrollbarXEl = context.scrollbarXRef.current;\n\t\tconst thumbYEl = context.thumbYRef.current;\n\t\tconst thumbXEl = context.thumbXRef.current;\n\t\tconst cornerEl = context.cornerRef.current;\n\n\t\tif (!viewportEl) return;\n\n\t\tconst scrollableContentHeight = viewportEl.scrollHeight;\n\t\tconst scrollableContentWidth = viewportEl.scrollWidth;\n\t\tconst viewportHeight = viewportEl.clientHeight;\n\t\tconst viewportWidth = viewportEl.clientWidth;\n\t\tconst scrollTop = viewportEl.scrollTop;\n\t\tconst scrollLeft = viewportEl.scrollLeft;\n\n\t\tconst isFirstMeasurement = Number.isNaN(lastMeasuredViewportMetrics[0]);\n\t\tlastMeasuredViewportMetrics[0] = viewportHeight;\n\t\tlastMeasuredViewportMetrics[1] = scrollableContentHeight;\n\t\tlastMeasuredViewportMetrics[2] = viewportWidth;\n\t\tlastMeasuredViewportMetrics[3] = scrollableContentWidth;\n\n\t\tif (isFirstMeasurement) {\n\t\t\tcontext.setHasMeasuredScrollbar(true);\n\t\t}\n\n\t\tif (scrollableContentHeight === 0 || scrollableContentWidth === 0) {\n\t\t\t// Matches React `ScrollAreaViewport.tsx:142-144` — with zero\n\t\t\t// content there's no meaningful hidden-state to publish, so bail\n\t\t\t// before doing any further work. A later ResizeObserver callback\n\t\t\t// will re-run this once the content mounts.\n\t\t\treturn;\n\t\t}\n\n\t\tconst nextHiddenState = getHiddenState(viewportEl);\n\t\tconst scrollbarYHidden = nextHiddenState.y;\n\t\tconst scrollbarXHidden = nextHiddenState.x;\n\t\tconst ratioX = viewportWidth / scrollableContentWidth;\n\t\tconst ratioY = viewportHeight / scrollableContentHeight;\n\t\tconst maxScrollLeft = Math.max(0, scrollableContentWidth - viewportWidth);\n\t\tconst maxScrollTop = Math.max(0, scrollableContentHeight - viewportHeight);\n\n\t\tlet scrollLeftFromStart = 0;\n\t\tlet scrollLeftFromEnd = 0;\n\t\tif (!scrollbarXHidden) {\n\t\t\tconst rawScrollLeftFromStart =\n\t\t\t\tdirection() === \"rtl\"\n\t\t\t\t\t? clamp(-scrollLeft, 0, maxScrollLeft)\n\t\t\t\t\t: clamp(scrollLeft, 0, maxScrollLeft);\n\t\t\tscrollLeftFromStart = normalizeScrollOffset(\n\t\t\t\trawScrollLeftFromStart,\n\t\t\t\tmaxScrollLeft,\n\t\t\t);\n\t\t\tscrollLeftFromEnd = maxScrollLeft - scrollLeftFromStart;\n\t\t}\n\n\t\tconst rawScrollTopFromStart = !scrollbarYHidden\n\t\t\t? clamp(scrollTop, 0, maxScrollTop)\n\t\t\t: 0;\n\t\tconst scrollTopFromStart = !scrollbarYHidden\n\t\t\t? normalizeScrollOffset(rawScrollTopFromStart, maxScrollTop)\n\t\t\t: 0;\n\t\tconst scrollTopFromEnd = !scrollbarYHidden\n\t\t\t? maxScrollTop - scrollTopFromStart\n\t\t\t: 0;\n\t\tconst nextWidth = scrollbarXHidden ? 0 : viewportWidth;\n\t\tconst nextHeight = scrollbarYHidden ? 0 : viewportHeight;\n\n\t\tlet nextCornerWidth = 0;\n\t\tlet nextCornerHeight = 0;\n\t\tif (!scrollbarXHidden && !scrollbarYHidden) {\n\t\t\tnextCornerWidth = scrollbarYEl?.offsetWidth ?? 0;\n\t\t\tnextCornerHeight = scrollbarXEl?.offsetHeight ?? 0;\n\t\t}\n\n\t\t// Only subtract corner size from scrollbar dimensions on the first\n\t\t// pass, before the layout has been told about the corner. After\n\t\t// that, layout already accounts for it.\n\t\tconst cornerSize = context.cornerSize();\n\t\tconst cornerNotYetSized = cornerSize.width === 0 && cornerSize.height === 0;\n\t\tconst cornerWidthOffset = cornerNotYetSized ? nextCornerWidth : 0;\n\t\tconst cornerHeightOffset = cornerNotYetSized ? nextCornerHeight : 0;\n\n\t\tconst scrollbarXOffset = getOffset(scrollbarXEl, \"padding\", \"x\");\n\t\tconst scrollbarYOffset = getOffset(scrollbarYEl, \"padding\", \"y\");\n\t\tconst thumbXOffset = getOffset(thumbXEl, \"margin\", \"x\");\n\t\tconst thumbYOffset = getOffset(thumbYEl, \"margin\", \"y\");\n\n\t\tconst idealNextWidth = nextWidth - scrollbarXOffset - thumbXOffset;\n\t\tconst idealNextHeight = nextHeight - scrollbarYOffset - thumbYOffset;\n\n\t\tconst maxNextWidth = scrollbarXEl\n\t\t\t? Math.min(scrollbarXEl.offsetWidth - cornerWidthOffset, idealNextWidth)\n\t\t\t: idealNextWidth;\n\t\tconst maxNextHeight = scrollbarYEl\n\t\t\t? Math.min(\n\t\t\t\t\tscrollbarYEl.offsetHeight - cornerHeightOffset,\n\t\t\t\t\tidealNextHeight,\n\t\t\t\t)\n\t\t\t: idealNextHeight;\n\n\t\tconst clampedNextWidth = Math.max(MIN_THUMB_SIZE, maxNextWidth * ratioX);\n\t\tconst clampedNextHeight = Math.max(MIN_THUMB_SIZE, maxNextHeight * ratioY);\n\n\t\tcontext.setThumbSize((prev) => {\n\t\t\tif (\n\t\t\t\tprev.height === clampedNextHeight &&\n\t\t\t\tprev.width === clampedNextWidth\n\t\t\t) {\n\t\t\t\treturn prev;\n\t\t\t}\n\t\t\treturn { width: clampedNextWidth, height: clampedNextHeight };\n\t\t});\n\n\t\t// Position the vertical thumb. NB: this uses `Math.min/Math.max`\n\t\t// nesting rather than `clamp` — on a tiny track where the max offset\n\t\t// goes negative the two diverge (this branch yields the negative\n\t\t// offset, the horizontal branch's `clamp` yields 0); preserve as-is.\n\t\tfunction applyVerticalThumbTransform(): void {\n\t\t\tif (!scrollbarYEl || !thumbYEl) return;\n\t\t\tconst maxThumbOffsetY =\n\t\t\t\tscrollbarYEl.offsetHeight -\n\t\t\t\tclampedNextHeight -\n\t\t\t\tscrollbarYOffset -\n\t\t\t\tthumbYOffset;\n\t\t\tconst scrollRangeY = scrollableContentHeight - viewportHeight;\n\t\t\tconst scrollRatioY = scrollRangeY === 0 ? 0 : scrollTop / scrollRangeY;\n\t\t\tconst thumbOffsetY = Math.min(\n\t\t\t\tmaxThumbOffsetY,\n\t\t\t\tMath.max(0, scrollRatioY * maxThumbOffsetY),\n\t\t\t);\n\t\t\tthumbYEl.style.transform = `translate3d(0,${thumbOffsetY}px,0)`;\n\t\t}\n\n\t\tfunction applyHorizontalThumbTransform(): void {\n\t\t\tif (!scrollbarXEl || !thumbXEl) return;\n\t\t\tconst maxThumbOffsetX =\n\t\t\t\tscrollbarXEl.offsetWidth -\n\t\t\t\tclampedNextWidth -\n\t\t\t\tscrollbarXOffset -\n\t\t\t\tthumbXOffset;\n\t\t\tconst scrollRangeX = scrollableContentWidth - viewportWidth;\n\t\t\tconst scrollRatioX = scrollRangeX === 0 ? 0 : scrollLeft / scrollRangeX;\n\t\t\tconst thumbOffsetX =\n\t\t\t\tdirection() === \"rtl\"\n\t\t\t\t\t? clamp(scrollRatioX * maxThumbOffsetX, -maxThumbOffsetX, 0)\n\t\t\t\t\t: clamp(scrollRatioX * maxThumbOffsetX, 0, maxThumbOffsetX);\n\t\t\tthumbXEl.style.transform = `translate3d(${thumbOffsetX}px,0,0)`;\n\t\t}\n\n\t\t// Publish overflow offsets (as CSS vars), corner size, hidden state,\n\t\t// and the past-threshold overflow-edge flags back to the context.\n\t\tfunction commitOverflowAndCornerState(): void {\n\t\t\tif (!viewportEl) return;\n\t\t\tconst overflowMetricsPx: Array<[string, number]> = [\n\t\t\t\t[\n\t\t\t\t\tScrollAreaViewportCssVars.scrollAreaOverflowXStart,\n\t\t\t\t\tscrollLeftFromStart,\n\t\t\t\t],\n\t\t\t\t[ScrollAreaViewportCssVars.scrollAreaOverflowXEnd, scrollLeftFromEnd],\n\t\t\t\t[\n\t\t\t\t\tScrollAreaViewportCssVars.scrollAreaOverflowYStart,\n\t\t\t\t\tscrollTopFromStart,\n\t\t\t\t],\n\t\t\t\t[ScrollAreaViewportCssVars.scrollAreaOverflowYEnd, scrollTopFromEnd],\n\t\t\t];\n\t\t\tfor (const [cssVar, value] of overflowMetricsPx) {\n\t\t\t\tviewportEl.style.setProperty(cssVar, `${value}px`);\n\t\t\t}\n\n\t\t\tif (cornerEl) {\n\t\t\t\tif (scrollbarXHidden || scrollbarYHidden) {\n\t\t\t\t\tcontext.setCornerSize({ width: 0, height: 0 });\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setCornerSize({\n\t\t\t\t\t\twidth: nextCornerWidth,\n\t\t\t\t\t\theight: nextCornerHeight,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcontext.setHiddenState((prev) => mergeHiddenState(prev, nextHiddenState));\n\n\t\t\tconst threshold = context.overflowEdgeThreshold;\n\t\t\tconst nextOverflowEdges = {\n\t\t\t\txStart: !scrollbarXHidden && scrollLeftFromStart > threshold.xStart,\n\t\t\t\txEnd: !scrollbarXHidden && scrollLeftFromEnd > threshold.xEnd,\n\t\t\t\tyStart: !scrollbarYHidden && scrollTopFromStart > threshold.yStart,\n\t\t\t\tyEnd: !scrollbarYHidden && scrollTopFromEnd > threshold.yEnd,\n\t\t\t};\n\n\t\t\tcontext.setOverflowEdges((prev) => {\n\t\t\t\tif (\n\t\t\t\t\tprev.xStart === nextOverflowEdges.xStart &&\n\t\t\t\t\tprev.xEnd === nextOverflowEdges.xEnd &&\n\t\t\t\t\tprev.yStart === nextOverflowEdges.yStart &&\n\t\t\t\t\tprev.yEnd === nextOverflowEdges.yEnd\n\t\t\t\t) {\n\t\t\t\t\treturn prev;\n\t\t\t\t}\n\t\t\t\treturn nextOverflowEdges;\n\t\t\t});\n\t\t}\n\n\t\tapplyVerticalThumbTransform();\n\t\tapplyHorizontalThumbTransform();\n\t\tcommitOverflowAndCornerState();\n\t});\n\n\t// One-time setup: register the CSS vars as non-inheriting.\n\tcreateRenderEffect(\n\t\t() => viewportEl(),\n\t\t(el) => {\n\t\t\tif (!el) return;\n\t\t\tremoveCSSVariableInheritance();\n\t\t},\n\t);\n\n\t// Recompute whenever hidden-state or direction flips. `queueMicrotask`\n\t// so the scrollbar/thumb refs are populated before we measure them.\n\tcreateRenderEffect(\n\t\t() => ({ hidden: context.hiddenState(), dir: direction() }),\n\t\t() => {\n\t\t\tqueueMicrotask(computeThumbPosition);\n\t\t},\n\t);\n\n\t// Initial hover catch: `onMouseEnter` doesn't fire on mount, so if the\n\t// viewport is already being hovered when it mounts, flip the flag.\n\tcreateRenderEffect(\n\t\t() => viewportEl(),\n\t\t(el) => {\n\t\t\tif (el?.matches?.(\":hover\")) {\n\t\t\t\tcontext.setHovering(true);\n\t\t\t}\n\t\t},\n\t);\n\n\t// ResizeObserver wiring. Fires on viewport resize, which also covers\n\t// most font-loading / layout-shift cases.\n\tcreateEffect(\n\t\t() => viewportEl(),\n\t\t(viewport) => {\n\t\t\tif (typeof ResizeObserver === \"undefined\" || !viewport) return;\n\n\t\t\tlet hasInitialized = false;\n\t\t\tconst ro = new ResizeObserver(() => {\n\t\t\t\t// Skip the initial observe call when the metrics match what the\n\t\t\t\t// mount-time pass already measured.\n\t\t\t\tif (!hasInitialized) {\n\t\t\t\t\thasInitialized = true;\n\t\t\t\t\tif (\n\t\t\t\t\t\tlastMeasuredViewportMetrics[0] === viewport.clientHeight &&\n\t\t\t\t\t\tlastMeasuredViewportMetrics[1] === viewport.scrollHeight &&\n\t\t\t\t\t\tlastMeasuredViewportMetrics[2] === viewport.clientWidth &&\n\t\t\t\t\t\tlastMeasuredViewportMetrics[3] === viewport.scrollWidth\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcomputeThumbPosition();\n\t\t\t});\n\t\t\tro.observe(viewport);\n\n\t\t\t// Wait for any in-flight animations (dialog open, etc.) to settle\n\t\t\t// and recompute so the thumb size isn't stuck at mid-animation.\n\t\t\twaitForAnimationsTimeout.start(0, () => {\n\t\t\t\tif (typeof viewport.getAnimations !== \"function\") return;\n\t\t\t\tconst animations = viewport.getAnimations({ subtree: true });\n\t\t\t\tif (animations.length === 0) return;\n\t\t\t\tPromise.allSettled(animations.map((animation) => animation.finished))\n\t\t\t\t\t.then(() => computeThumbPosition())\n\t\t\t\t\t.catch(() => {});\n\t\t\t});\n\n\t\t\treturn () => {\n\t\t\t\tro.disconnect();\n\t\t\t\twaitForAnimationsTimeout.clear();\n\t\t\t};\n\t\t},\n\t);\n\n\t// The root's derived state is identical to what this part needs for its\n\t// `data-*` projection — read it straight from context instead of rebuilding\n\t// the memo. (`ScrollAreaViewportState` is structurally `ScrollAreaRootState`.)\n\tconst viewportState = context.viewportState;\n\n\tconst contextValue: ScrollAreaViewportContextValue = {\n\t\tcomputeThumbPosition,\n\t};\n\n\tfunction handleUserInteraction(): void {\n\t\tprogrammaticScroll = false;\n\t}\n\n\tconst userStyling = resolveClassStyle(props, () => context.viewportState());\n\n\tconst userProps = omit(props, \"class\", \"style\", \"attrs\", \"as\", \"children\");\n\n\tconst localRef = (el: HTMLDivElement | null): void => {\n\t\tcontext.viewportRef.current = el;\n\t\tsetViewportEl(el);\n\t};\n\n\tconst internalSlot = {\n\t\trole: \"presentation\" as const,\n\t\t\"data-id\": `${context.rootId}-viewport`,\n\t\t// Non-scrollable viewports don't belong in tab order.\n\t\tget tabIndex(): number {\n\t\t\tconst h = context.hiddenState();\n\t\t\treturn h.x && h.y ? -1 : 0;\n\t\t},\n\t\tclass: DISABLE_SCROLLBAR_CLASS_NAME,\n\t\tstyle: { overflow: \"scroll\" } as JSX.CSSProperties,\n\t\tonScroll: () => {\n\t\t\tconst viewportEl = context.viewportRef.current;\n\t\t\tif (!viewportEl) return;\n\t\t\tcomputeThumbPosition();\n\t\t\tif (!programmaticScroll) {\n\t\t\t\tcontext.handleScroll({\n\t\t\t\t\tx: viewportEl.scrollLeft,\n\t\t\t\t\ty: viewportEl.scrollTop,\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Debounce the programmatic-scroll reset so momentum scrolling\n\t\t\t// (where no user-interaction events fire after the initial\n\t\t\t// gesture) is still treated as user-driven.\n\t\t\tscrollEndTimeout.start(100, () => {\n\t\t\t\tprogrammaticScroll = true;\n\t\t\t});\n\t\t},\n\t\t// `wheel` / `touchmove` are scroll-blocking events: a plain `onWheel` /\n\t\t// `onTouchMove` prop registers a NON-passive listener (Solid can't know\n\t\t// the handler won't `preventDefault`), which Chrome flags as a perf\n\t\t// violation. `handleUserInteraction` only flips a flag, so register them\n\t\t// passive via Solid's `on:` namespace (a non-function value is forwarded\n\t\t// as the `addEventListener` options). The non-scroll-blocking handlers\n\t\t// below stay as ordinary props.\n\t\t\"on:wheel\": { handleEvent: handleUserInteraction, passive: true },\n\t\t\"on:touchmove\": { handleEvent: handleUserInteraction, passive: true },\n\t\tonPointerMove: handleUserInteraction,\n\t\tonPointerEnter: handleUserInteraction,\n\t\tonKeyDown: handleUserInteraction,\n\t\tget children() {\n\t\t\treturn (\n\t\t\t\t<ScrollAreaViewportContext value={contextValue}>\n\t\t\t\t\t{props.children}\n\t\t\t\t</ScrollAreaViewportContext>\n\t\t\t);\n\t\t},\n\t};\n\n\tconst styledUserProps = mergeRootProps(userStyling, userProps);\n\n\tlet merged: Record<string, unknown> = mergeRootProps(\n\t\tinternalSlot,\n\t\tscrollAreaDataAttrs(viewportState),\n\t);\n\tmerged = mergeRootProps(merged, styledUserProps);\n\n\tconst Tag = dynamic(() => props.as ?? \"div\");\n\treturn <Tag {...merged} ref={composeRefs(localRef, userRef(props))} />;\n}\n\n// Re-export the class name constant for consumers needing to reach the\n// underlying style token (rare — normally handled by the root).\nexport { styleDisableScrollbar };\n"],"mappings":"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","ignoreList":[]}