{"version":3,"names":["dynamic","createMemo","createRenderEffect","createSignal","omit","onCleanup","Show","untrack","useCspNonce","isHydrating","mergeRootProps","resolveClassStyle","useTabsListContext","useTabsRootContext","tabsIndicatorPrehydrationScript","TabsIndicator","props","root","list","nonce","resizeTick","setResizeTick","ownedWrite","resizeObserver","ResizeObserver","t","disconnect","currentListElement","currentActiveTab","tabsListElement","next","observer","unobserve","observe","emptyMeasurement","isTabSelected","left","right","top","bottom","width","height","measure","value","listEl","activeTab","getTabElementBySelectedValue","tabRect","getBoundingClientRect","listRect","scaleX","offsetWidth","scaleY","offsetHeight","hasNonZeroScale","Math","abs","Number","EPSILON","scrollLeft","clientLeft","scrollTop","clientTop","offsetLeft","offsetTop","scrollWidth","scrollHeight","measurement","setMeasurement","activeTabPosition","m","activeTabSize","indicatorStyle","undefined","displayIndicator","userClassStyle","orientation","tabActivationDirection","userHtmlProps","internalProps","role","style","hidden","data-orientation","data-activation-direction","merged","showScript","renderBeforeHydration","Tag","as"],"sources":["tabs-indicator.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\nimport { dynamic } from \"@solidjs/web\";\nimport {\n\tcreateMemo,\n\tcreateRenderEffect,\n\tcreateSignal,\n\tomit,\n\tonCleanup,\n\tShow,\n\tuntrack,\n} from \"solid-js\";\nimport { useCspNonce } from \"../../csp-provider/csp-context.ts\";\nimport { isHydrating } from \"../../internals/is-hydrating.ts\";\nimport { mergeRootProps } from \"../../internals/merge-root-props\";\nimport { resolveClassStyle } from \"../../internals/resolve-class-style\";\nimport type { BaseUIComponentProps } from \"../../internals/types\";\nimport type { Orientation } from \"../../internals/types.ts\";\nimport { useTabsListContext } from \"../tabs-list-context.ts\";\nimport {\n\ttype TabsRootState,\n\ttype TabsTabActivationDirection,\n\tuseTabsRootContext,\n} from \"../tabs-root-context.ts\";\nimport { tabsIndicatorPrehydrationScript } from \"./prehydration-script.ts\";\n\nexport interface TabsIndicatorPosition {\n\tleft: number;\n\tright: number;\n\ttop: number;\n\tbottom: number;\n}\n\nexport interface TabsIndicatorSize {\n\twidth: number;\n\theight: number;\n}\n\nexport interface TabsIndicatorState extends TabsRootState {\n\t/** Rectangle of the active tab relative to the list. `null` when idle. */\n\tactiveTabPosition: TabsIndicatorPosition | null;\n\t/** Size of the active tab. `null` when idle. */\n\tactiveTabSize: TabsIndicatorSize | null;\n\t/** Layout orientation (inherited from root). */\n\torientation: Orientation;\n\t/** Activation direction (inherited from root). */\n\ttabActivationDirection: TabsTabActivationDirection;\n}\n\nexport interface TabsIndicatorProps\n\textends BaseUIComponentProps<\"span\", TabsIndicatorState> {\n\t/** Tag/component to render. Defaults to `\"span\"`. */\n\tas?: ValidComponent;\n\t/**\n\t * Whether to emit the inline prehydration `<script>` that positions the\n\t * indicator from the SSR'd active tab's geometry before hydration. This\n\t * minimizes the window where the indicator is invisible after SSR.\n\t * @default false\n\t */\n\trenderBeforeHydration?: boolean | undefined;\n}\n\n/**\n * Visual indicator that tracks the position/size of the currently-active tab.\n * Renders a `<span role=\"presentation\">` with `--active-tab-*` CSS custom\n * properties the consumer can wire into their own styles.\n *\n * Deviations from React Base UI:\n *\n * - Measurement runs on mount + whenever the active-tab value or the list\n *   element changes. The list-level `ResizeObserver` (set up here) bumps a\n *   tick signal on every observed resize so the measurement memo re-runs.\n */\nexport function TabsIndicator(props: TabsIndicatorProps): JSX.Element {\n\tconst root = useTabsRootContext();\n\tconst list = useTabsListContext();\n\tconst nonce = useCspNonce();\n\n\t// Tick signal bumped on every observed resize so the measurement memo\n\t// re-runs. `ownedWrite` because the ResizeObserver callback fires from\n\t// unowned scope.\n\tconst [resizeTick, setResizeTick] = createSignal(0, { ownedWrite: true });\n\n\tlet resizeObserver: ResizeObserver | null = null;\n\tif (typeof ResizeObserver !== \"undefined\") {\n\t\tresizeObserver = new ResizeObserver(() => {\n\t\t\tsetResizeTick((t) => t + 1);\n\t\t});\n\t}\n\tonCleanup(() => {\n\t\tresizeObserver?.disconnect();\n\t\tresizeObserver = null;\n\t\tcurrentListElement = null;\n\t\tcurrentActiveTab = null;\n\t});\n\n\t// Re-observe the list element whenever it swaps. The memo also observes\n\t// the active tab directly — a mutation in either triggers a re-measure.\n\tlet currentListElement: HTMLElement | null = null;\n\t// Tracks the active tab currently observed so `measure()` can unobserve the\n\t// previous one before observing a new one (stale tabs would otherwise keep\n\t// firing redundant re-measures). Mirrors the list-element swap pattern below.\n\tlet currentActiveTab: HTMLElement | null = null;\n\tcreateRenderEffect(\n\t\t() => list.tabsListElement(),\n\t\t(next) => {\n\t\t\tconst observer = resizeObserver;\n\t\t\tif (!observer) return;\n\t\t\tif (currentListElement && currentListElement !== next) {\n\t\t\t\tobserver.unobserve(currentListElement);\n\t\t\t}\n\t\t\tif (next && next !== currentListElement) {\n\t\t\t\tobserver.observe(next);\n\t\t\t}\n\t\t\tcurrentListElement = next;\n\t\t},\n\t);\n\n\tinterface IndicatorMeasurement {\n\t\tisTabSelected: boolean;\n\t\tleft: number;\n\t\tright: number;\n\t\ttop: number;\n\t\tbottom: number;\n\t\twidth: number;\n\t\theight: number;\n\t}\n\n\tconst emptyMeasurement = (): IndicatorMeasurement => ({\n\t\tisTabSelected: false,\n\t\tleft: 0,\n\t\tright: 0,\n\t\ttop: 0,\n\t\tbottom: 0,\n\t\twidth: 0,\n\t\theight: 0,\n\t});\n\n\tconst measure = (): IndicatorMeasurement => {\n\t\tresizeTick();\n\t\tconst value = root.value();\n\t\tconst listEl = list.tabsListElement();\n\t\tif (value == null || listEl == null) {\n\t\t\treturn emptyMeasurement();\n\t\t}\n\t\tconst activeTab = root.getTabElementBySelectedValue(value);\n\t\tif (activeTab == null) {\n\t\t\treturn { ...emptyMeasurement(), isTabSelected: true };\n\t\t}\n\t\tif (currentActiveTab && currentActiveTab !== activeTab) {\n\t\t\tresizeObserver?.unobserve(currentActiveTab);\n\t\t}\n\t\tresizeObserver?.observe(activeTab);\n\t\tcurrentActiveTab = activeTab;\n\t\tconst tabRect = activeTab.getBoundingClientRect();\n\t\tconst listRect = listEl.getBoundingClientRect();\n\t\tconst scaleX =\n\t\t\tlistEl.offsetWidth > 0 ? listRect.width / listEl.offsetWidth : 1;\n\t\tconst scaleY =\n\t\t\tlistEl.offsetHeight > 0 ? listRect.height / listEl.offsetHeight : 1;\n\t\tconst hasNonZeroScale =\n\t\t\tMath.abs(scaleX) > Number.EPSILON && Math.abs(scaleY) > Number.EPSILON;\n\t\tlet left: number;\n\t\tlet top: number;\n\t\tif (hasNonZeroScale) {\n\t\t\tleft =\n\t\t\t\t(tabRect.left - listRect.left) / scaleX +\n\t\t\t\tlistEl.scrollLeft -\n\t\t\t\tlistEl.clientLeft;\n\t\t\ttop =\n\t\t\t\t(tabRect.top - listRect.top) / scaleY +\n\t\t\t\tlistEl.scrollTop -\n\t\t\t\tlistEl.clientTop;\n\t\t} else {\n\t\t\tleft = activeTab.offsetLeft;\n\t\t\ttop = activeTab.offsetTop;\n\t\t}\n\t\tconst width = activeTab.offsetWidth;\n\t\tconst height = activeTab.offsetHeight;\n\t\tconst right = listEl.scrollWidth - left - width;\n\t\tconst bottom = listEl.scrollHeight - top - height;\n\t\treturn { isTabSelected: true, left, right, top, bottom, width, height };\n\t};\n\n\t// Measurement must run in a render effect, not during render: tab elements\n\t// register with `<CompositeList>` in their own render effects, and the list\n\t// forwards the sorted map to `<Tabs.Root>` in a layout-timed render effect.\n\t// A render-phase memo would always measure one frame early (empty tab map).\n\tconst [measurement, setMeasurement] = createSignal<IndicatorMeasurement>(\n\t\temptyMeasurement(),\n\t\t{ ownedWrite: true },\n\t);\n\tcreateRenderEffect(\n\t\t() => {\n\t\t\tresizeTick();\n\t\t\tconst value = root.value();\n\t\t\tconst listEl = list.tabsListElement();\n\t\t\tif (value != null && listEl != null) {\n\t\t\t\troot.getTabElementBySelectedValue(value);\n\t\t\t}\n\t\t},\n\t\t() => {\n\t\t\t// The compute above already tracks every reactive value `measure`\n\t\t\t// reads (`resizeTick`, `root.value`, `list.tabsListElement`, and\n\t\t\t// `getTabElementBySelectedValue`), so this apply-scope call is a\n\t\t\t// snapshot — untrack to avoid `[STRICT_READ_UNTRACKED]`.\n\t\t\tsetMeasurement(untrack(measure));\n\t\t},\n\t);\n\n\tconst activeTabPosition = createMemo((): TabsIndicatorPosition | null => {\n\t\tconst m = measurement();\n\t\tif (!m.isTabSelected) return null;\n\t\treturn { left: m.left, right: m.right, top: m.top, bottom: m.bottom };\n\t});\n\n\tconst activeTabSize = createMemo((): TabsIndicatorSize | null => {\n\t\tconst m = measurement();\n\t\tif (!m.isTabSelected) return null;\n\t\treturn { width: m.width, height: m.height };\n\t});\n\n\t// Keep the memos referenced for any inline-headless consumer surface;\n\t// the wrapper itself doesn't read activeTabPosition/Size as data attrs\n\t// (they were always projected as null in the React-parity mapping).\n\tvoid activeTabPosition;\n\tvoid activeTabSize;\n\n\tconst indicatorStyle = createMemo((): JSX.CSSProperties | undefined => {\n\t\tconst m = measurement();\n\t\tif (!m.isTabSelected) return undefined;\n\t\treturn {\n\t\t\t\"--active-tab-left\": `${m.left}px`,\n\t\t\t\"--active-tab-right\": `${m.right}px`,\n\t\t\t\"--active-tab-top\": `${m.top}px`,\n\t\t\t\"--active-tab-bottom\": `${m.bottom}px`,\n\t\t\t\"--active-tab-width\": `${m.width}px`,\n\t\t\t\"--active-tab-height\": `${m.height}px`,\n\t\t};\n\t});\n\n\tconst displayIndicator = (): boolean => {\n\t\tconst m = measurement();\n\t\treturn m.isTabSelected && m.width > 0 && m.height > 0;\n\t};\n\tconst userClassStyle = resolveClassStyle(props, () => ({\n\t\tactiveTabPosition: activeTabPosition(),\n\t\tactiveTabSize: activeTabSize(),\n\t\torientation: root.orientation(),\n\t\ttabActivationDirection: root.tabActivationDirection(),\n\t}));\n\n\tconst userHtmlProps = omit(\n\t\tprops,\n\t\t\"as\",\n\t\t\"class\",\n\t\t\"style\",\n\t\t\"attrs\",\n\t\t\"children\",\n\t\t\"renderBeforeHydration\",\n\t) as Record<string, unknown>;\n\n\tconst internalProps = {\n\t\trole: \"presentation\" as const,\n\t\tget style() {\n\t\t\treturn indicatorStyle();\n\t\t},\n\t\tget hidden() {\n\t\t\treturn displayIndicator() ? undefined : true;\n\t\t},\n\t\tget \"data-orientation\"() {\n\t\t\treturn root.orientation();\n\t\t},\n\t\tget \"data-activation-direction\"() {\n\t\t\treturn root.tabActivationDirection();\n\t\t},\n\t};\n\n\tconst merged = mergeRootProps(\n\t\tmergeRootProps(internalProps, userClassStyle),\n\t\tuserHtmlProps,\n\t);\n\n\t// SSR prehydration: emit the inline `<script>` immediately after the\n\t// indicator element (it reads `document.currentScript.previousElementSibling`)\n\t// so it positions the indicator before hydration. Gated on\n\t// `isHydrating && renderBeforeHydration` — server-only, mirrors React\n\t// `TabsIndicator.tsx:169-176`. Rendered as a plain element (not a spread of\n\t// an inline call) so Solid's SSR compiler doesn't thunk it.\n\tconst showScript = (): boolean =>\n\t\tisHydrating() && props.renderBeforeHydration === true;\n\n\tconst Tag = dynamic(() => props.as ?? \"span\");\n\treturn (\n\t\t<Show when={root.value() != null}>\n\t\t\t<Tag {...merged} />\n\t\t\t<Show when={showScript()}>\n\t\t\t\t<script nonce={nonce()} innerHTML={tabsIndicatorPrehydrationScript} />\n\t\t\t</Show>\n\t\t</Show>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}