{"version":3,"names":["dynamic","createMemo","omit","createChangeEventDetails","REASONS","composeRefs","userRef","stopEvent","mergeRootProps","resolveClassStyle","useButton","useComboboxChipContext","findItemIndex","useComboboxRootContext","ComboboxChipRemove","props","root","chip","disabled","readOnly","nativeButton","buttonProps","ref","buttonRef","focusableWhenDisabled","native","state","clearActiveIndexForRemovedItem","removedItem","activeIndex","removedIndex","valuesRef","current","isItemEqualToValue","setIndices","type","keyboardActiveRef","removeChip","event","details","chipRemovePress","selected","selectedValue","Array","isArray","index","setSelectedValue","filter","_","i","inputRef","focus","onMouseDown","preventDefault","onClick","onKeyDown","key","internal","tabIndex","data-disabled","undefined","userClassStyle","userProps","merged","Tag","as"],"sources":["combobox-chip-remove.tsx"],"sourcesContent":["import type { JSX, ValidComponent } from \"@solidjs/web\";\nimport { dynamic } from \"@solidjs/web\";\nimport { createMemo, omit } from \"solid-js\";\nimport {\n\tcreateChangeEventDetails,\n\tREASONS,\n} from \"../../internals/change-event-details\";\nimport { composeRefs, userRef } from \"../../internals/compose-refs\";\nimport { stopEvent } from \"../../internals/floating-ui/utils/event\";\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 { useComboboxChipContext } from \"../chip/chip-context\";\nimport {\n\tfindItemIndex,\n\ttype ItemEqualityComparer,\n} from \"../internals/item-equality\";\nimport {\n\ttype ComboboxRootChangeEventDetails,\n\tuseComboboxRootContext,\n} from \"../root/combobox-root-context\";\n\nexport interface ComboboxChipRemoveState {\n\tdisabled: boolean;\n}\n\nexport interface ComboboxChipRemoveProps\n\textends NativeButtonProps,\n\t\tBaseUIComponentProps<\"button\", ComboboxChipRemoveState> {\n\tas?: ValidComponent;\n\tdisabled?: boolean | undefined;\n}\n\n/**\n * A button to remove a chip. Renders a `<button>` element.\n */\nexport function ComboboxChipRemove(\n\tprops: ComboboxChipRemoveProps,\n): JSX.Element {\n\tconst root = useComboboxRootContext();\n\tconst chip = useComboboxChipContext();\n\n\tconst disabled = (): boolean => root.disabled() || (props.disabled ?? false);\n\tconst readOnly = (): boolean => root.readOnly();\n\tconst nativeButton = (): boolean => props.nativeButton ?? true;\n\n\tconst { props: buttonProps, ref: buttonRef } = useButton({\n\t\tdisabled: () => disabled() || readOnly(),\n\t\tfocusableWhenDisabled: () => true,\n\t\tnative: nativeButton,\n\t});\n\n\tconst state = createMemo<ComboboxChipRemoveState>(() => ({\n\t\tdisabled: disabled(),\n\t}));\n\n\tfunction clearActiveIndexForRemovedItem(removedItem: unknown): void {\n\t\tconst activeIndex = root.activeIndex();\n\t\tif (activeIndex == null) return;\n\t\tconst removedIndex = findItemIndex(\n\t\t\troot.valuesRef.current,\n\t\t\tremovedItem,\n\t\t\troot.isItemEqualToValue() as ItemEqualityComparer<unknown, unknown>,\n\t\t);\n\t\tif (removedIndex !== -1 && activeIndex === removedIndex) {\n\t\t\troot.setIndices({\n\t\t\t\tactiveIndex: null,\n\t\t\t\ttype: root.keyboardActiveRef.current ? \"keyboard\" : \"pointer\",\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction removeChip(event: MouseEvent | KeyboardEvent): void {\n\t\tconst details = createChangeEventDetails(\n\t\t\tREASONS.chipRemovePress,\n\t\t\tevent,\n\t\t) as ComboboxRootChangeEventDetails;\n\t\tconst selected = root.selectedValue() as unknown;\n\t\tif (!Array.isArray(selected)) return;\n\t\tconst index = chip.index();\n\t\tconst removedItem = selected[index];\n\t\tclearActiveIndexForRemovedItem(removedItem);\n\t\troot.setSelectedValue(\n\t\t\tselected.filter((_, i) => i !== index) as never,\n\t\t\tdetails,\n\t\t);\n\t\troot.inputRef.current?.focus();\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() || readOnly()) return;\n\t\tremoveChip(event);\n\t}\n\n\tfunction onKeyDown(event: KeyboardEvent): void {\n\t\tif (disabled() || readOnly()) return;\n\t\tif (event.key === \"Enter\" || event.key === \" \") {\n\t\t\tstopEvent(event);\n\t\t\tremoveChip(event);\n\t\t}\n\t}\n\n\tconst internal = {\n\t\ttabIndex: -1,\n\t\tonMouseDown,\n\t\tonClick,\n\t\tonKeyDown,\n\t\tget \"data-disabled\"() {\n\t\t\treturn state().disabled ? \"\" : 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(buttonProps, internal);\n\tmerged = mergeRootProps(merged, userClassStyle);\n\tmerged = mergeRootProps(merged, userProps);\n\n\tconst Tag = dynamic(() => props.as ?? \"button\");\n\treturn <Tag {...merged} ref={composeRefs(buttonRef, userRef(props))} />;\n}\n"],"mappings":"AACA,SAASA,OAAO,QAAQ,cAAc;AACtC,SAASC,UAAU,EAAEC,IAAI,QAAQ,UAAU;AAC3C,SACCC,wBAAwB,EACxBC,OAAO,QACD,sCAAsC;AAC7C,SAASC,WAAW,EAAEC,OAAO,QAAQ,8BAA8B;AACnE,SAASC,SAAS,QAAQ,yCAAyC;AACnE,SAASC,cAAc,QAAQ,kCAAkC;AACjE,SAASC,iBAAiB,QAAQ,qCAAqC;AAKvE,SAASC,SAAS,QAAQ,uCAAuC;AACjE,SAASC,sBAAsB,QAAQ,sBAAsB;AAC7D,SACCC,aAAa,QAEP,4BAA4B;AACnC,SAECC,sBAAsB,QAChB,+BAA+B;AAatC;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CACjCC,KAA8B,EAChB;EACd,MAAMC,IAAI,GAAGH,sBAAsB,CAAC,CAAC;EACrC,MAAMI,IAAI,GAAGN,sBAAsB,CAAC,CAAC;EAErC,MAAMO,QAAQ,GAAGA,CAAA,KAAeF,IAAI,CAACE,QAAQ,CAAC,CAAC,KAAKH,KAAK,CAACG,QAAQ,IAAI,KAAK,CAAC;EAC5E,MAAMC,QAAQ,GAAGA,CAAA,KAAeH,IAAI,CAACG,QAAQ,CAAC,CAAC;EAC/C,MAAMC,YAAY,GAAGA,CAAA,KAAeL,KAAK,CAACK,YAAY,IAAI,IAAI;EAE9D,MAAM;IAAEL,KAAK,EAAEM,WAAW;IAAEC,GAAG,EAAEC;EAAU,CAAC,GAAGb,SAAS,CAAC;IACxDQ,QAAQ,EAAEA,CAAA,KAAMA,QAAQ,CAAC,CAAC,IAAIC,QAAQ,CAAC,CAAC;IACxCK,qBAAqB,EAAEA,CAAA,KAAM,IAAI;IACjCC,MAAM,EAAEL;EACT,CAAC,CAAC;EAEF,MAAMM,KAAK,GAAGzB,UAAU,CAA0B,OAAO;IACxDiB,QAAQ,EAAEA,QAAQ,CAAC;EACpB,CAAC,CAAC,CAAC;EAEH,SAASS,8BAA8BA,CAACC,WAAoB,EAAQ;IACnE,MAAMC,WAAW,GAAGb,IAAI,CAACa,WAAW,CAAC,CAAC;IACtC,IAAIA,WAAW,IAAI,IAAI,EAAE;IACzB,MAAMC,YAAY,GAAGlB,aAAa,CACjCI,IAAI,CAACe,SAAS,CAACC,OAAO,EACtBJ,WAAW,EACXZ,IAAI,CAACiB,kBAAkB,CAAC,CACzB,CAAC;IACD,IAAIH,YAAY,KAAK,CAAC,CAAC,IAAID,WAAW,KAAKC,YAAY,EAAE;MACxDd,IAAI,CAACkB,UAAU,CAAC;QACfL,WAAW,EAAE,IAAI;QACjBM,IAAI,EAAEnB,IAAI,CAACoB,iBAAiB,CAACJ,OAAO,GAAG,UAAU,GAAG;MACrD,CAAC,CAAC;IACH;EACD;EAEA,SAASK,UAAUA,CAACC,KAAiC,EAAQ;IAC5D,MAAMC,OAAO,GAAGpC,wBAAwB,CACvCC,OAAO,CAACoC,eAAe,EACvBF,KACD,CAAmC;IACnC,MAAMG,QAAQ,GAAGzB,IAAI,CAAC0B,aAAa,CAAC,CAAY;IAChD,IAAI,CAACC,KAAK,CAACC,OAAO,CAACH,QAAQ,CAAC,EAAE;IAC9B,MAAMI,KAAK,GAAG5B,IAAI,CAAC4B,KAAK,CAAC,CAAC;IAC1B,MAAMjB,WAAW,GAAGa,QAAQ,CAACI,KAAK,CAAC;IACnClB,8BAA8B,CAACC,WAAW,CAAC;IAC3CZ,IAAI,CAAC8B,gBAAgB,CACpBL,QAAQ,CAACM,MAAM,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKA,CAAC,KAAKJ,KAAK,CAAC,EACtCN,OACD,CAAC;IACDvB,IAAI,CAACkC,QAAQ,CAAClB,OAAO,EAAEmB,KAAK,CAAC,CAAC;EAC/B;EAEA,SAASC,WAAWA,CAACd,KAAiB,EAAQ;IAC7CA,KAAK,CAACe,cAAc,CAAC,CAAC;EACvB;EAEA,SAASC,OAAOA,CAAChB,KAAiB,EAAQ;IACzC,IAAIpB,QAAQ,CAAC,CAAC,IAAIC,QAAQ,CAAC,CAAC,EAAE;IAC9BkB,UAAU,CAACC,KAAK,CAAC;EAClB;EAEA,SAASiB,SAASA,CAACjB,KAAoB,EAAQ;IAC9C,IAAIpB,QAAQ,CAAC,CAAC,IAAIC,QAAQ,CAAC,CAAC,EAAE;IAC9B,IAAImB,KAAK,CAACkB,GAAG,KAAK,OAAO,IAAIlB,KAAK,CAACkB,GAAG,KAAK,GAAG,EAAE;MAC/CjD,SAAS,CAAC+B,KAAK,CAAC;MAChBD,UAAU,CAACC,KAAK,CAAC;IAClB;EACD;EAEA,MAAMmB,QAAQ,GAAG;IAChBC,QAAQ,EAAE,CAAC,CAAC;IACZN,WAAW;IACXE,OAAO;IACPC,SAAS;IACT,IAAI,eAAeI,CAAA,EAAG;MACrB,OAAOjC,KAAK,CAAC,CAAC,CAACR,QAAQ,GAAG,EAAE,GAAG0C,SAAS;IACzC;EACD,CAAC;EAED,MAAMC,cAAc,GAAGpD,iBAAiB,CAACM,KAAK,EAAE,MAAMW,KAAK,CAAC,CAAC,CAAC;EAC9D,MAAMoC,SAAS,GAAG5D,IAAI,CACrBa,KAAK,EACL,IAAI,EACJ,OAAO,EACP,OAAO,EACP,OAAO,EAEP,UAAU,EACV,cACD,CAAC;EAED,IAAIgD,MAA+B,GAAGvD,cAAc,CAACa,WAAW,EAAEoC,QAAQ,CAAC;EAC3EM,MAAM,GAAGvD,cAAc,CAACuD,MAAM,EAAEF,cAAc,CAAC;EAC/CE,MAAM,GAAGvD,cAAc,CAACuD,MAAM,EAAED,SAAS,CAAC;EAE1C,MAAME,GAAG,GAAGhE,OAAO,CAAC,MAAMe,KAAK,CAACkD,EAAE,IAAI,QAAQ,CAAC;EAC/C,OAAO,CAAC,GAAG,CAAC,IAAIF,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC1D,WAAW,CAACkB,SAAS,EAAEjB,OAAO,CAACS,KAAK,CAAC,CAAC,CAAC,GAAG;AACxE","ignoreList":[]}