{"version":3,"names":["dynamic","createMemo","omit","composeRefs","userRef","mergeRootProps","resolveClassStyle","useSelectRootContext","hasNullItemLabel","resolveMultipleLabels","resolveSelectedLabel","SelectValue","props","root","setValueRef","el","valueRef","current","hasSelectedValue","v","value","multiple","Array","isArray","length","state","placeholder","hasNullLabel","childrenProp","children","items","resolvedChildren","itemToStringLabel","internal","userClassStyle","userProps","merged","Tag","as"],"sources":["select-value.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\nimport { dynamic } from \"@solidjs/web\";\nimport { createMemo, omit } 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 type { BaseUIComponentProps } from \"../../internals/types\";\nimport type { SelectValue as SelectValueType } from \"../select-root-context\";\nimport { useSelectRootContext } from \"../select-root-context\";\nimport {\n\thasNullItemLabel,\n\tresolveMultipleLabels,\n\tresolveSelectedLabel,\n} from \"../utils/resolve-value-label\";\n\nexport interface SelectValueState {\n\tvalue: SelectValueType;\n\tplaceholder: boolean;\n}\n\nexport interface SelectValueProps<Value = SelectValueType>\n\textends Omit<BaseUIComponentProps<\"span\", SelectValueState>, \"children\"> {\n\tas?: ValidComponent;\n\tchildren?: JSX.Element | ((value: Value) => JSX.Element) | undefined;\n\tplaceholder?: JSX.Element | undefined;\n}\n\nexport function SelectValue<Value = SelectValueType>(\n\tprops: SelectValueProps<Value>,\n): JSX.Element {\n\tconst root = useSelectRootContext();\n\n\tconst setValueRef = (el: HTMLElement | null): void => {\n\t\troot.valueRef.current = el;\n\t};\n\n\tconst hasSelectedValue = createMemo<boolean>(() => {\n\t\tconst v = root.value();\n\t\tif (v == null) return false;\n\t\tif (root.multiple() && Array.isArray(v)) return v.length > 0;\n\t\treturn true;\n\t});\n\n\tconst state = createMemo<SelectValueState>(() => ({\n\t\tvalue: root.value(),\n\t\tplaceholder: !hasSelectedValue(),\n\t}));\n\n\tconst hasNullLabel = createMemo<boolean>(() => {\n\t\tconst childrenProp = props.children;\n\t\tif (\n\t\t\thasSelectedValue() ||\n\t\t\tprops.placeholder == null ||\n\t\t\tchildrenProp != null\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\treturn hasNullItemLabel(root.items());\n\t});\n\n\tconst resolvedChildren = createMemo<JSX.Element>(() => {\n\t\tconst childrenProp = props.children;\n\t\tconst v = root.value();\n\t\tif (typeof childrenProp === \"function\") {\n\t\t\t// `root.value()` is `unknown` at runtime; the `Value` generic is a\n\t\t\t// typed convenience for callers, so cast at this boundary.\n\t\t\treturn (childrenProp as (value: Value) => JSX.Element)(v as Value);\n\t\t}\n\t\tif (childrenProp != null) return childrenProp as JSX.Element;\n\t\tif (!hasSelectedValue() && props.placeholder != null && !hasNullLabel()) {\n\t\t\treturn props.placeholder;\n\t\t}\n\t\tif (Array.isArray(v)) {\n\t\t\treturn resolveMultipleLabels(v, root.items(), root.itemToStringLabel());\n\t\t}\n\t\treturn resolveSelectedLabel(v, root.items(), root.itemToStringLabel());\n\t});\n\n\tconst internal = {\n\t\tget children() {\n\t\t\treturn resolvedChildren();\n\t\t},\n\t};\n\n\tconst userClassStyle = resolveClassStyle(props, () => state());\n\t// Strip `placeholder` and `children` (children may be a formatter fn).\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\"placeholder\",\n\t\t\"children\",\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 <Tag {...merged} ref={composeRefs(setValueRef, userRef(props))} />;\n}\n"],"mappings":"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","ignoreList":[]}