{"version":3,"names":["dynamic","createMemo","omit","Show","composeRefs","userRef","mergeRootProps","useOpenChangeComplete","resolveClassStyle","useTransitionStatus","useSelectItemContext","SelectItemIndicator","props","item","keepMounted","shouldRender","selected","Inner","indicatorRef","current","mounted","transitionStatus","setMounted","open","ref","onComplete","state","setRef","el","internal","children","data-starting-style","undefined","data-ending-style","userClassStyle","userProps","merged","Tag","as"],"sources":["select-item-indicator.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\nimport { dynamic } from \"@solidjs/web\";\nimport { createMemo, omit, Show } from \"solid-js\";\nimport { composeRefs, userRef } from \"../../internals/compose-refs\";\nimport type { MutableRef } from \"../../internals/floating-ui/types\";\nimport { mergeRootProps } from \"../../internals/merge-root-props\";\nimport { useOpenChangeComplete } from \"../../internals/popups/use-open-change-complete\";\nimport { resolveClassStyle } from \"../../internals/resolve-class-style\";\nimport type { BaseUIComponentProps } from \"../../internals/types\";\nimport {\n\ttype TransitionStatus,\n\tuseTransitionStatus,\n} from \"../../internals/use-transition-status/use-transition-status\";\nimport { useSelectItemContext } from \"../item/select-item-context\";\n\nexport interface SelectItemIndicatorState {\n\tselected: boolean;\n\ttransitionStatus: TransitionStatus;\n}\n\nexport interface SelectItemIndicatorProps\n\textends BaseUIComponentProps<\"span\", SelectItemIndicatorState> {\n\tas?: ValidComponent;\n\tkeepMounted?: boolean | undefined;\n}\n\n/**\n * `<Select.ItemIndicator>` — a `<span>` that renders when the enclosing\n * `<Select.Item>` is selected.\n */\nexport function SelectItemIndicator(\n\tprops: SelectItemIndicatorProps,\n): JSX.Element {\n\tconst item = useSelectItemContext();\n\tconst keepMounted = (): boolean => props.keepMounted ?? false;\n\n\tconst shouldRender = (): boolean => keepMounted() || item.selected();\n\n\treturn <Show when={shouldRender()}>{<Inner {...props} />}</Show>;\n}\n\nfunction Inner(props: SelectItemIndicatorProps): JSX.Element {\n\tconst item = useSelectItemContext();\n\tconst indicatorRef: MutableRef<HTMLElement | null> = { current: null };\n\n\tconst { mounted, transitionStatus, setMounted } = useTransitionStatus(\n\t\titem.selected,\n\t);\n\n\tuseOpenChangeComplete({\n\t\topen: item.selected,\n\t\tref: indicatorRef,\n\t\tonComplete: () => {\n\t\t\tif (!item.selected()) setMounted(false);\n\t\t},\n\t});\n\n\tconst state = createMemo<SelectItemIndicatorState>(() => ({\n\t\tselected: item.selected(),\n\t\ttransitionStatus: transitionStatus(),\n\t}));\n\n\tconst setRef = (el: HTMLElement | null): void => {\n\t\tindicatorRef.current = el;\n\t};\n\n\tconst internal = {\n\t\t\"aria-hidden\": \"true\" as const,\n\t\tchildren: \"✔️\" as JSX.Element,\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};\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\"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 ?? \"span\");\n\treturn (\n\t\t<Show when={mounted() || props.keepMounted}>\n\t\t\t<Tag {...merged} ref={composeRefs(setRef, userRef(props))} />\n\t\t</Show>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}