{"version":3,"names":["dynamic","createMemo","omit","untrack","createChangeEventDetails","REASONS","composeRefs","userRef","useTypeahead","mergeRootProps","resolveClassStyle","useButton","useComboboxRootContext","ComboboxTrigger","props","root","disabled","nativeButton","listEmpty","flatFilteredItems","length","buttonProps","ref","buttonRef","focusableWhenDisabled","native","typeahead","floatingRootContext","enabled","open","readOnly","selectionMode","listRef","labelsRef","activeIndex","selectedIndex","onMatch","index","next","valuesRef","current","undefined","details","none","setSelectedValue","state","required","popupSide","placeholder","selectedValue","onClick","event","triggerPress","setOpen","inputRef","focus","onKeyDown","key","preventDefault","listNavigation","internal","tabIndex","aria-haspopup","grid","aria-expanded","aria-controls","listElement","id","data-popup-open","data-pressed","data-disabled","data-readonly","data-required","data-list-empty","data-placeholder","data-popup-side","userClassStyle","userProps","merged","reference","setTriggerEl","el","setTriggerElement","Tag","as"],"sources":["combobox-trigger.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\nimport { dynamic } from \"@solidjs/web\";\nimport { createMemo, omit, untrack } from \"solid-js\";\nimport {\n\tcreateChangeEventDetails,\n\tREASONS,\n} from \"../../internals/change-event-details\";\nimport { composeRefs, userRef } from \"../../internals/compose-refs\";\nimport { useTypeahead } from \"../../internals/floating-ui/hooks/use-typeahead\";\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 type { ComboboxSide } from \"../positioner/positioner-context\";\nimport {\n\ttype ComboboxRootChangeEventDetails,\n\tuseComboboxRootContext,\n} from \"../root/combobox-root-context\";\n\nexport interface ComboboxTriggerState {\n\topen: boolean;\n\tdisabled: boolean;\n\treadOnly: boolean;\n\trequired: boolean;\n\tpopupSide: ComboboxSide | null;\n\tlistEmpty: boolean;\n\tplaceholder: boolean;\n}\n\nexport interface ComboboxTriggerProps\n\textends NativeButtonProps,\n\t\tBaseUIComponentProps<\"button\", ComboboxTriggerState> {\n\tas?: ValidComponent;\n\tdisabled?: boolean | undefined;\n}\n\n/**\n * A button that opens the popup. Renders a `<button>` element.\n */\nexport function ComboboxTrigger(props: ComboboxTriggerProps): JSX.Element {\n\tconst root = useComboboxRootContext();\n\n\tconst disabled = (): boolean => root.disabled() || (props.disabled ?? false);\n\tconst nativeButton = (): boolean => props.nativeButton ?? true;\n\tconst listEmpty = createMemo<boolean>(\n\t\t() => root.flatFilteredItems().length === 0,\n\t);\n\n\tconst { props: buttonProps, ref: buttonRef } = untrack(() =>\n\t\tuseButton({\n\t\t\tdisabled,\n\t\t\tfocusableWhenDisabled: () => false,\n\t\t\tnative: nativeButton,\n\t\t}),\n\t);\n\n\tconst typeahead = untrack(() =>\n\t\tuseTypeahead(root.floatingRootContext, {\n\t\t\tenabled: () =>\n\t\t\t\t!root.open() &&\n\t\t\t\t!root.readOnly() &&\n\t\t\t\t!root.disabled() &&\n\t\t\t\troot.selectionMode() === \"single\",\n\t\t\tlistRef: root.labelsRef,\n\t\t\tactiveIndex: () => root.activeIndex(),\n\t\t\tselectedIndex: () => root.selectedIndex(),\n\t\t\tonMatch: (index) => {\n\t\t\t\tconst next = root.valuesRef.current[index];\n\t\t\t\tif (next === undefined) return;\n\t\t\t\tconst details = createChangeEventDetails(\n\t\t\t\t\tREASONS.none,\n\t\t\t\t\tundefined,\n\t\t\t\t) as ComboboxRootChangeEventDetails;\n\t\t\t\troot.setSelectedValue(next, details);\n\t\t\t},\n\t\t}),\n\t);\n\n\tconst state = createMemo<ComboboxTriggerState>(() => ({\n\t\topen: root.open(),\n\t\tdisabled: disabled(),\n\t\treadOnly: root.readOnly(),\n\t\trequired: root.required(),\n\t\tpopupSide: root.popupSide(),\n\t\tlistEmpty: listEmpty(),\n\t\tplaceholder: root.selectedValue() == null,\n\t}));\n\n\tfunction onClick(event: MouseEvent): void {\n\t\tif (disabled() || root.readOnly()) return;\n\t\tconst details = createChangeEventDetails(\n\t\t\tREASONS.triggerPress,\n\t\t\tevent,\n\t\t) as ComboboxRootChangeEventDetails;\n\t\troot.setOpen(!root.open(), details);\n\t\troot.inputRef.current?.focus();\n\t}\n\n\tfunction onKeyDown(event: KeyboardEvent): void {\n\t\tif (disabled() || root.readOnly()) return;\n\t\tif (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n\t\t\tevent.preventDefault();\n\t\t\tconst details = createChangeEventDetails(\n\t\t\t\tREASONS.listNavigation,\n\t\t\t\tevent,\n\t\t\t) as ComboboxRootChangeEventDetails;\n\t\t\troot.setOpen(true, details);\n\t\t\troot.inputRef.current?.focus();\n\t\t}\n\t}\n\n\tconst internal = {\n\t\ttabIndex: -1,\n\t\tget \"aria-haspopup\"() {\n\t\t\treturn root.grid() ? (\"grid\" as const) : (\"listbox\" as const);\n\t\t},\n\t\tget \"aria-expanded\"() {\n\t\t\treturn root.open() ? (\"true\" as const) : (\"false\" as const);\n\t\t},\n\t\tget \"aria-controls\"() {\n\t\t\treturn root.open() ? (root.listElement()?.id ?? \"\") : \"\";\n\t\t},\n\t\tonClick,\n\t\tonKeyDown,\n\t\t// State-attr getters.\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-required\"() {\n\t\t\treturn state().required ? \"\" : undefined;\n\t\t},\n\t\tget \"data-list-empty\"() {\n\t\t\treturn state().listEmpty ? \"\" : undefined;\n\t\t},\n\t\tget \"data-placeholder\"() {\n\t\t\treturn state().placeholder ? \"\" : undefined;\n\t\t},\n\t\tget \"data-popup-side\"() {\n\t\t\treturn state().popupSide ?? 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\"disabled\",\n\t\t\"nativeButton\",\n\t);\n\n\tlet merged: Record<string, unknown> = mergeRootProps(\n\t\tbuttonProps,\n\t\ttypeahead.reference ?? {},\n\t);\n\tmerged = mergeRootProps(merged, internal);\n\tmerged = mergeRootProps(merged, userClassStyle);\n\tmerged = mergeRootProps(merged, userProps);\n\n\tconst setTriggerEl = (el: HTMLElement | null): void => {\n\t\troot.setTriggerElement(el);\n\t};\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, setTriggerEl, userRef(props))}\n\t\t/>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}