{"version":3,"names":["dynamic","createMemo","omit","Show","createChangeEventDetails","REASONS","composeRefs","userRef","mergeRootProps","useOpenChangeComplete","resolveClassStyle","useButton","useTransitionStatus","useComboboxRootContext","ComboboxClear","props","root","disabled","nativeButton","keepMounted","visible","selectedValue","inputValue","buttonProps","ref","buttonRef","focusableWhenDisabled","native","mounted","transitionStatus","setMounted","open","clearRef","onComplete","state","onMouseDown","event","preventDefault","onClick","readOnly","details","clearPress","setInputValue","setSelectedValue","setIndices","activeIndex","selectedIndex","inputRef","current","focus","internal","tabIndex","data-popup-open","undefined","data-disabled","data-starting-style","data-ending-style","userClassStyle","userProps","merged","setClearRef","el","Tag","as","element"],"sources":["combobox-clear.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\nimport { dynamic } from \"@solidjs/web\";\nimport { createMemo, omit, Show } from \"solid-js\";\nimport {\n\tcreateChangeEventDetails,\n\tREASONS,\n} from \"../../internals/change-event-details\";\nimport { composeRefs, userRef } from \"../../internals/compose-refs\";\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 {\n\tBaseUIComponentProps,\n\tNativeButtonProps,\n} from \"../../internals/types\";\nimport { useButton } from \"../../internals/use-button/use-button\";\nimport {\n\ttype TransitionStatus,\n\tuseTransitionStatus,\n} from \"../../internals/use-transition-status/use-transition-status\";\nimport {\n\ttype ComboboxRootChangeEventDetails,\n\tuseComboboxRootContext,\n} from \"../root/combobox-root-context\";\n\nexport interface ComboboxClearState {\n\topen: boolean;\n\tdisabled: boolean;\n\ttransitionStatus: TransitionStatus;\n}\n\nexport interface ComboboxClearProps\n\textends NativeButtonProps,\n\t\tBaseUIComponentProps<\"button\", ComboboxClearState> {\n\tas?: ValidComponent;\n\tdisabled?: boolean | undefined;\n\tkeepMounted?: boolean | undefined;\n}\n\n/**\n * Clears the value when clicked. Renders a `<button>` element.\n */\nexport function ComboboxClear(props: ComboboxClearProps): 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 keepMounted = (): boolean => props.keepMounted ?? false;\n\n\tconst visible = createMemo<boolean>(() => {\n\t\treturn root.selectedValue() != null || root.inputValue() !== \"\";\n\t});\n\n\tconst { props: buttonProps, ref: buttonRef } = useButton({\n\t\tdisabled,\n\t\tfocusableWhenDisabled: () => false,\n\t\tnative: nativeButton,\n\t});\n\n\tconst { mounted, transitionStatus, setMounted } = useTransitionStatus(\n\t\tvisible,\n\t\t() => true,\n\t\t() => false,\n\t);\n\n\tuseOpenChangeComplete({\n\t\topen: visible,\n\t\tref: root.clearRef,\n\t\tonComplete: () => {\n\t\t\tif (!visible()) setMounted(false);\n\t\t},\n\t});\n\n\tconst state = createMemo<ComboboxClearState>(() => ({\n\t\topen: root.open(),\n\t\tdisabled: disabled(),\n\t\ttransitionStatus: transitionStatus(),\n\t}));\n\n\tfunction onMouseDown(event: MouseEvent): void {\n\t\tevent.preventDefault();\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.clearPress,\n\t\t\tevent,\n\t\t) as ComboboxRootChangeEventDetails;\n\t\troot.setInputValue(\"\", details);\n\t\troot.setSelectedValue(null, details);\n\t\troot.setIndices({ activeIndex: null, selectedIndex: null });\n\t\troot.inputRef.current?.focus();\n\t}\n\n\tconst internal = {\n\t\ttabIndex: -1,\n\t\tonMouseDown,\n\t\tonClick,\n\t\t// clearStateAttributesMapping: open → data-popup-open; disabled →\n\t\t// data-disabled; transitionStatus → data-starting/ending-style.\n\t\tget \"data-popup-open\"() {\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-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\"disabled\",\n\t\t\"nativeButton\",\n\t\t\"keepMounted\",\n\t);\n\n\tlet merged: Record<string, unknown> = mergeRootProps(buttonProps, internal);\n\tmerged = mergeRootProps(merged, userClassStyle);\n\tmerged = mergeRootProps(merged, userProps);\n\n\tconst setClearRef = (el: HTMLElement | null): void => {\n\t\troot.clearRef.current = el as HTMLButtonElement | null;\n\t};\n\n\tconst Tag = dynamic(() => props.as ?? \"button\");\n\tconst element = (\n\t\t<Tag\n\t\t\t{...merged}\n\t\t\tref={composeRefs(buttonRef, setClearRef, userRef(props))}\n\t\t/>\n\t);\n\n\treturn <Show when={keepMounted() || mounted()}>{element}</Show>;\n}\n"],"mappings":"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","ignoreList":[]}