{"version":3,"names":["dynamic","createMemo","createRenderEffect","omit","onCleanup","composeRefs","userRef","mergeRootProps","resolveClassStyle","getMaxScrollOffset","normalizeScrollOffset","SCROLL_EDGE_TOLERANCE_PX","Timeout","useTransitionStatus","useSelectPositionerContext","useSelectRootContext","SelectScrollArrow","props","root","positioner","isUp","direction","keepMounted","scrollArrowRef","scrollUpArrowRef","scrollDownArrowRef","setArrowRef","el","current","stateVisible","scrollUpArrowVisible","scrollDownArrowVisible","visible","openMethod","transitionStatus","setMounted","scrollArrowsMountedCountRef","Math","max","isVisible","timeout","create","clear","state","side","internal","style","base","position","children","data-direction","data-visible","undefined","data-side","data-starting-style","data-ending-style","onMouseMove","event","movementX","movementY","isStarted","setActiveIndex","scrollNextItem","popup","popupRef","scroller","listElement","handleScrollArrowVisibility","maxScrollTop","scrollHeight","clientHeight","scrollTop","isScrolledToEdge","items","listRef","length","setScrollUpArrowVisible","setScrollDownArrowVisible","scrollArrowHeight","offsetHeight","getTargetScrollTop","start","onMouseLeave","userClassStyle","userProps","merged","Tag","as","shouldRender","firstVisibleIndex","visibleTop","i","item","offsetTop","targetIndex","targetItem","lastVisibleIndex","visibleBottom","min"],"sources":["select-scroll-arrow.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\n/**\n * `<SelectScrollArrow>` — internal shared implementation for the\n * `<Select.ScrollUpArrow>` / `<Select.ScrollDownArrow>` parts. Mirrors\n * `packages/react/src/select/scroll-arrow/SelectScrollArrow.tsx`.\n *\n * Visibility is driven by `root.scrollUpArrowVisible` /\n * `root.scrollDownArrowVisible` flags — the popup's geometry effect writes\n * them during trigger-aligned placement, and this component gates mount\n * on them plus `openMethod !== 'touch'` (scroll arrows are hover-only).\n *\n * The full scroll-by-item behavior (`onMouseMove` progressing through\n * `listRef` via `getTargetScrollTop`) is ported but only becomes exercisable\n * when real DOM geometry is available (requires browser tests).\n */\n\nimport { dynamic } from \"@solidjs/web\";\nimport { createMemo, createRenderEffect, omit, onCleanup } from \"solid-js\";\nimport { composeRefs, userRef } from \"../../internals/compose-refs\";\nimport { mergeRootProps } from \"../../internals/merge-root-props\";\nimport { resolveClassStyle } from \"../../internals/resolve-class-style\";\nimport {\n\tgetMaxScrollOffset,\n\tnormalizeScrollOffset,\n\tSCROLL_EDGE_TOLERANCE_PX,\n} from \"../../internals/scroll-area-utils/scroll-edges\";\nimport type { BaseUIComponentProps } from \"../../internals/types\";\nimport { Timeout } from \"../../internals/use-timeout\";\nimport {\n\ttype TransitionStatus,\n\tuseTransitionStatus,\n} from \"../../internals/use-transition-status/use-transition-status\";\nimport {\n\ttype SelectSide,\n\tuseSelectPositionerContext,\n} from \"../positioner/select-positioner-context\";\nimport { useSelectRootContext } from \"../select-root-context\";\n\nexport interface SelectScrollArrowState {\n\tdirection: \"up\" | \"down\";\n\tvisible: boolean;\n\tside: SelectSide;\n\ttransitionStatus: TransitionStatus;\n}\n\nexport interface SelectScrollArrowProps\n\textends BaseUIComponentProps<\"div\", SelectScrollArrowState> {\n\tas?: ValidComponent;\n\t/** Whether to keep the element mounted when the popup isn't scrollable. @default false */\n\tkeepMounted?: boolean | undefined;\n\t/** Internal — whether this arrow renders up- or down-scroll affordance. */\n\tdirection: \"up\" | \"down\";\n}\n\nexport function SelectScrollArrow(props: SelectScrollArrowProps): JSX.Element {\n\tconst root = useSelectRootContext();\n\tconst positioner = useSelectPositionerContext();\n\n\tconst isUp = (): boolean => props.direction === \"up\";\n\tconst keepMounted = (): boolean => props.keepMounted ?? false;\n\n\tconst scrollArrowRef = isUp()\n\t\t? positioner.scrollUpArrowRef\n\t\t: positioner.scrollDownArrowRef;\n\n\tconst setArrowRef = (el: HTMLElement | null): void => {\n\t\tscrollArrowRef.current = el;\n\t};\n\n\tconst stateVisible = createMemo<boolean>(() =>\n\t\tisUp() ? root.scrollUpArrowVisible() : root.scrollDownArrowVisible(),\n\t);\n\tconst visible = createMemo<boolean>(\n\t\t() => stateVisible() && root.openMethod() !== \"touch\",\n\t);\n\n\tconst { transitionStatus, setMounted } = useTransitionStatus(visible);\n\n\troot.scrollArrowsMountedCountRef.current += 1;\n\tonCleanup(() => {\n\t\troot.scrollArrowsMountedCountRef.current = Math.max(\n\t\t\t0,\n\t\t\troot.scrollArrowsMountedCountRef.current - 1,\n\t\t);\n\t});\n\n\t// When visibility drops, unmount after any exit animation — eager here\n\t// because we don't thread `useOpenChangeComplete` per-arrow.\n\tcreateRenderEffect(\n\t\t() => visible(),\n\t\t(isVisible) => {\n\t\t\tif (!isVisible) setMounted(false);\n\t\t},\n\t);\n\n\tconst timeout = Timeout.create();\n\tonCleanup(() => timeout.clear());\n\n\tconst state = createMemo<SelectScrollArrowState>(() => ({\n\t\tdirection: props.direction,\n\t\tvisible: visible(),\n\t\tside: positioner.side(),\n\t\ttransitionStatus: transitionStatus(),\n\t}));\n\n\tconst internal = {\n\t\t\"aria-hidden\": \"true\",\n\t\tget style() {\n\t\t\tconst base: JSX.CSSProperties = { position: \"absolute\" };\n\t\t\treturn base;\n\t\t},\n\t\tchildren: (isUp() ? \"\\u25B2\" : \"\\u25BC\") as JSX.Element,\n\t\t// Default projection: direction \\u2192 data-direction=value;\n\t\t// visible/transitionStatus mapped explicitly below for clarity.\n\t\tget \"data-direction\"() {\n\t\t\treturn state().direction;\n\t\t},\n\t\tget \"data-visible\"() {\n\t\t\treturn state().visible ? \"\" : undefined;\n\t\t},\n\t\tget \"data-side\"() {\n\t\t\treturn state().side;\n\t\t},\n\t\tget \"data-starting-style\"() {\n\t\t\treturn state().transitionStatus === \"starting\" ? \"\" : undefined;\n\t\t},\n\t\tget \"data-ending-style\"() {\n\t\t\treturn state().transitionStatus === \"ending\" ? \"\" : undefined;\n\t\t},\n\t\tonMouseMove(event: MouseEvent): void {\n\t\t\tif (\n\t\t\t\t(event.movementX === 0 && event.movementY === 0) ||\n\t\t\t\ttimeout.isStarted()\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\troot.setActiveIndex(null);\n\n\t\t\tconst scrollNextItem = (): void => {\n\t\t\t\tconst popup = root.popupRef.current;\n\t\t\t\tconst scroller = root.listElement() ?? popup;\n\t\t\t\tif (!scroller) return;\n\n\t\t\t\troot.setActiveIndex(null);\n\t\t\t\troot.handleScrollArrowVisibility();\n\n\t\t\t\tconst maxScrollTop = getMaxScrollOffset(\n\t\t\t\t\tscroller.scrollHeight,\n\t\t\t\t\tscroller.clientHeight,\n\t\t\t\t);\n\t\t\t\tconst scrollTop = normalizeScrollOffset(\n\t\t\t\t\tscroller.scrollTop,\n\t\t\t\t\tmaxScrollTop,\n\t\t\t\t);\n\t\t\t\tconst isScrolledToEdge = scrollTop === (isUp() ? 0 : maxScrollTop);\n\t\t\t\tconst items = root.listRef.current;\n\n\t\t\t\tif (scrollTop !== scroller.scrollTop) {\n\t\t\t\t\tscroller.scrollTop = scrollTop;\n\t\t\t\t}\n\n\t\t\t\tif (items.length === 0) {\n\t\t\t\t\tif (isUp()) {\n\t\t\t\t\t\troot.setScrollUpArrowVisible(!isScrolledToEdge);\n\t\t\t\t\t} else {\n\t\t\t\t\t\troot.setScrollDownArrowVisible(!isScrolledToEdge);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (isScrolledToEdge) {\n\t\t\t\t\ttimeout.clear();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (items.length > 0) {\n\t\t\t\t\tconst scrollArrowHeight =\n\t\t\t\t\t\t(scrollArrowRef.current as HTMLElement | null)?.offsetHeight ?? 0;\n\t\t\t\t\tscroller.scrollTop = getTargetScrollTop(\n\t\t\t\t\t\titems,\n\t\t\t\t\t\tisUp(),\n\t\t\t\t\t\tscrollTop,\n\t\t\t\t\t\tscroller.clientHeight,\n\t\t\t\t\t\tscrollArrowHeight,\n\t\t\t\t\t\tmaxScrollTop,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\ttimeout.start(40, scrollNextItem);\n\t\t\t};\n\n\t\t\ttimeout.start(40, scrollNextItem);\n\t\t},\n\t\tonMouseLeave(): void {\n\t\t\ttimeout.clear();\n\t\t},\n\t};\n\n\tconst userClassStyle = resolveClassStyle(props, () => state());\n\tconst userProps = omit(\n\t\tprops,\n\t\t\"as\",\n\t\t\"class\",\n\t\t\"style\",\n\t\t\"attrs\",\n\n\t\t\"direction\",\n\t\t\"keepMounted\",\n\t);\n\n\tlet merged: Record<string, unknown> = mergeRootProps(\n\t\tinternal,\n\t\tuserClassStyle,\n\t);\n\tmerged = mergeRootProps(merged, userProps);\n\n\tconst Tag = dynamic(() => props.as ?? \"div\");\n\treturn (\n\t\t<>\n\t\t\t{(() => {\n\t\t\t\tconst shouldRender = visible() || keepMounted();\n\t\t\t\tif (!shouldRender) return null;\n\t\t\t\treturn (\n\t\t\t\t\t<Tag {...merged} ref={composeRefs(setArrowRef, userRef(props))} />\n\t\t\t\t);\n\t\t\t})()}\n\t\t</>\n\t);\n}\n\nfunction getTargetScrollTop(\n\titems: Array<HTMLElement | null>,\n\tisUp: boolean,\n\tscrollTop: number,\n\tclientHeight: number,\n\tscrollArrowHeight: number,\n\tmaxScrollTop: number,\n): number {\n\tif (isUp) {\n\t\tlet firstVisibleIndex = 0;\n\t\tconst visibleTop = scrollTop + scrollArrowHeight - SCROLL_EDGE_TOLERANCE_PX;\n\t\tfor (let i = 0; i < items.length; i += 1) {\n\t\t\tconst item = items[i];\n\t\t\tif (item && item.offsetTop >= visibleTop) {\n\t\t\t\tfirstVisibleIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tconst targetIndex = Math.max(0, firstVisibleIndex - 1);\n\t\tconst targetItem = items[targetIndex];\n\t\treturn targetIndex < firstVisibleIndex && targetItem\n\t\t\t? normalizeScrollOffset(\n\t\t\t\t\ttargetItem.offsetTop - scrollArrowHeight,\n\t\t\t\t\tmaxScrollTop,\n\t\t\t\t)\n\t\t\t: 0;\n\t}\n\n\tlet lastVisibleIndex = items.length - 1;\n\tconst visibleBottom =\n\t\tscrollTop + clientHeight - scrollArrowHeight + SCROLL_EDGE_TOLERANCE_PX;\n\tfor (let i = 0; i < items.length; i += 1) {\n\t\tconst item = items[i];\n\t\tif (item && item.offsetTop + item.offsetHeight > visibleBottom) {\n\t\t\tlastVisibleIndex = Math.max(0, i - 1);\n\t\t\tbreak;\n\t\t}\n\t}\n\tconst targetIndex = Math.min(items.length - 1, lastVisibleIndex + 1);\n\tconst targetItem = items[targetIndex];\n\treturn targetIndex > lastVisibleIndex && targetItem\n\t\t? normalizeScrollOffset(\n\t\t\t\ttargetItem.offsetTop +\n\t\t\t\t\ttargetItem.offsetHeight -\n\t\t\t\t\tclientHeight +\n\t\t\t\t\tscrollArrowHeight,\n\t\t\t\tmaxScrollTop,\n\t\t\t)\n\t\t: maxScrollTop;\n}\n"],"mappings":"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","ignoreList":[]}