{"version":3,"names":["dynamic","createEffect","createMemo","omit","onCleanup","composeRefs","userRef","mergeRootProps","resolveClassStyle","useButton","Timeout","useSelectRootContext","SELECTED_DELAY","UNSELECTED_DELAY","SelectTrigger","props","root","disabled","Boolean","nativeButton","buttonProps","ref","buttonRef","focusableWhenDisabled","native","setTriggerRef","el","setTriggerElement","hasSelectedValue","v","value","multiple","Array","isArray","length","state","open","readOnly","placeholder","selectedDelayTimeout","create","unselectedDelayTimeout","clear","isOpen","hasSelected","start","selectionRef","current","allowUnselectedMouseUp","allowSelectedMouseUp","internal","id","role","aria-expanded","aria-controls","listEl","listElement","aria-labelledby","labelId","aria-readonly","undefined","aria-required","required","tabindex","data-popup-open","data-pressed","data-disabled","data-readonly","data-placeholder","data-value","String","userClassStyle","userProps","merged","interactions","getReferenceProps","Tag","as"],"sources":["select-trigger.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\nimport { dynamic } from \"@solidjs/web\";\nimport { createEffect, createMemo, 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 type {\n\tBaseUIComponentProps,\n\tNativeButtonProps,\n} from \"../../internals/types\";\nimport { useButton } from \"../../internals/use-button/use-button\";\nimport { Timeout } from \"../../internals/use-timeout\";\nimport { useSelectRootContext } from \"../select-root-context\";\n\nconst SELECTED_DELAY = 400;\nconst UNSELECTED_DELAY = 200;\n\nexport interface SelectTriggerState {\n\topen: boolean;\n\tdisabled: boolean;\n\t// biome-ignore lint/suspicious/noExplicitAny: select is value-generic.\n\tvalue: any;\n\treadOnly: boolean;\n\tplaceholder: boolean;\n}\n\nexport interface SelectTriggerProps\n\textends NativeButtonProps,\n\t\tBaseUIComponentProps<\"button\", SelectTriggerState> {\n\tas?: ValidComponent;\n\tdisabled?: boolean | undefined;\n}\n\nexport function SelectTrigger(props: SelectTriggerProps): JSX.Element {\n\tconst root = useSelectRootContext();\n\n\tconst disabled = (): boolean => Boolean(props.disabled) || root.disabled();\n\tconst nativeButton = (): boolean => props.nativeButton ?? true;\n\n\tconst { props: buttonProps, ref: buttonRef } = useButton({\n\t\tdisabled,\n\t\tfocusableWhenDisabled: () => false,\n\t\tnative: nativeButton,\n\t});\n\n\tconst setTriggerRef = (el: HTMLElement | null): void => {\n\t\troot.setTriggerElement(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<SelectTriggerState>(() => ({\n\t\topen: root.open(),\n\t\tdisabled: disabled(),\n\t\tvalue: root.value(),\n\t\treadOnly: root.readOnly(),\n\t\tplaceholder: !hasSelectedValue(),\n\t}));\n\n\tconst selectedDelayTimeout = Timeout.create();\n\tconst unselectedDelayTimeout = Timeout.create();\n\tonCleanup(() => {\n\t\tselectedDelayTimeout.clear();\n\t\tunselectedDelayTimeout.clear();\n\t});\n\n\tcreateEffect(\n\t\t() => ({ isOpen: root.open(), hasSelected: hasSelectedValue() }),\n\t\t({ isOpen, hasSelected }) => {\n\t\t\tif (isOpen) {\n\t\t\t\tif (!hasSelected) {\n\t\t\t\t\tselectedDelayTimeout.start(SELECTED_DELAY, () => {\n\t\t\t\t\t\troot.selectionRef.current.allowUnselectedMouseUp = true;\n\t\t\t\t\t\troot.selectionRef.current.allowSelectedMouseUp = true;\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tunselectedDelayTimeout.start(UNSELECTED_DELAY, () => {\n\t\t\t\t\t\troot.selectionRef.current.allowUnselectedMouseUp = true;\n\t\t\t\t\t\tselectedDelayTimeout.start(UNSELECTED_DELAY, () => {\n\t\t\t\t\t\t\troot.selectionRef.current.allowSelectedMouseUp = true;\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tselectedDelayTimeout.clear();\n\t\t\tunselectedDelayTimeout.clear();\n\t\t},\n\t);\n\n\tconst internal = {\n\t\tget id() {\n\t\t\treturn root.id();\n\t\t},\n\t\trole: \"combobox\",\n\t\t\"aria-haspopup\": \"listbox\",\n\t\tget \"aria-expanded\"() {\n\t\t\treturn root.open() ? \"true\" : \"false\";\n\t\t},\n\t\tget \"aria-controls\"() {\n\t\t\tif (!root.open()) return \"\";\n\t\t\tconst listEl = root.listElement();\n\t\t\tif (listEl?.id) return listEl.id;\n\t\t\treturn `${root.id() ?? \"\"}-list`;\n\t\t},\n\t\tget \"aria-labelledby\"() {\n\t\t\treturn root.labelId() ?? \"\";\n\t\t},\n\t\tget \"aria-readonly\"() {\n\t\t\treturn root.readOnly() ? \"true\" : undefined;\n\t\t},\n\t\tget \"aria-required\"() {\n\t\t\treturn root.required() ? \"true\" : undefined;\n\t\t},\n\t\tget tabindex() {\n\t\t\treturn disabled() ? -1 : 0;\n\t\t},\n\t\t// pressableTriggerOpenStateMapping: open → data-popup-open + data-pressed.\n\t\t// Default projection covers the rest of state (P3 — manually enumerated).\n\t\tget \"data-popup-open\"() {\n\t\t\treturn state().open ? \"\" : undefined;\n\t\t},\n\t\tget \"data-pressed\"() {\n\t\t\treturn state().open ? \"\" : undefined;\n\t\t},\n\t\tget \"data-disabled\"() {\n\t\t\treturn state().disabled ? \"\" : undefined;\n\t\t},\n\t\tget \"data-readonly\"() {\n\t\t\treturn state().readOnly ? \"\" : undefined;\n\t\t},\n\t\tget \"data-placeholder\"() {\n\t\t\treturn state().placeholder ? \"\" : undefined;\n\t\t},\n\t\tget \"data-value\"() {\n\t\t\tconst v = state().value;\n\t\t\tif (v == null || v === false) return undefined;\n\t\t\treturn String(v);\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\"disabled\",\n\t\t\"nativeButton\",\n\t);\n\n\tlet merged: Record<string, unknown> = mergeRootProps(\n\t\troot.interactions.getReferenceProps(),\n\t\tbuttonProps,\n\t);\n\tmerged = mergeRootProps(merged, internal);\n\tmerged = mergeRootProps(merged, userClassStyle);\n\tmerged = mergeRootProps(merged, userProps);\n\n\tconst Tag = dynamic(() => props.as ?? \"button\");\n\treturn (\n\t\t<Tag\n\t\t\t{...merged}\n\t\t\tref={composeRefs(buttonRef, setTriggerRef, userRef(props))}\n\t\t/>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}