@servicetitan/anvil2 2.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/{Combobox-Bb79Jl9I.js → Combobox-OUK7p5gp.js} +2 -2
  3. package/dist/{Combobox-Bb79Jl9I.js.map → Combobox-OUK7p5gp.js.map} +1 -1
  4. package/dist/Combobox.js +1 -1
  5. package/dist/{DataTable-CLr0j95O.js → DataTable-BPJeSvOx.js} +8 -8
  6. package/dist/DataTable-BPJeSvOx.js.map +1 -0
  7. package/dist/{DateFieldRange-BlpxUPPk.js → DateFieldRange-CanMYRgZ.js} +2 -2
  8. package/dist/{DateFieldRange-BlpxUPPk.js.map → DateFieldRange-CanMYRgZ.js.map} +1 -1
  9. package/dist/DateFieldRange.js +1 -1
  10. package/dist/{DateFieldSingle-DanvgyeQ.js → DateFieldSingle-CShe2aHZ.js} +2 -2
  11. package/dist/{DateFieldSingle-DanvgyeQ.js.map → DateFieldSingle-CShe2aHZ.js.map} +1 -1
  12. package/dist/DateFieldSingle.js +1 -1
  13. package/dist/{DateFieldYearless-rUMXjN0L.js → DateFieldYearless-MBQ233Xa.js} +2 -2
  14. package/dist/{DateFieldYearless-rUMXjN0L.js.map → DateFieldYearless-MBQ233Xa.js.map} +1 -1
  15. package/dist/DateFieldYearless.js +1 -1
  16. package/dist/{DateFieldYearlessRange-Cw71mA-Q.js → DateFieldYearlessRange-BBtaFzsE.js} +2 -2
  17. package/dist/{DateFieldYearlessRange-Cw71mA-Q.js.map → DateFieldYearlessRange-BBtaFzsE.js.map} +1 -1
  18. package/dist/DateFieldYearlessRange.js +1 -1
  19. package/dist/{ListView-CBmaHOY-.js → ListView-CRDUPrbQ.js} +11 -9
  20. package/dist/ListView-CRDUPrbQ.js.map +1 -0
  21. package/dist/ListView.js +1 -1
  22. package/dist/{Page-CjuKnpSO.js → Page-C5nExhiH.js} +2 -2
  23. package/dist/{Page-CjuKnpSO.js.map → Page-C5nExhiH.js.map} +1 -1
  24. package/dist/Page.js +1 -1
  25. package/dist/{Popover-U2Eu7v1Q.js → Popover-CJLSDpgR.js} +9 -8
  26. package/dist/Popover-CJLSDpgR.js.map +1 -0
  27. package/dist/Popover.js +1 -1
  28. package/dist/Table.js +1 -1
  29. package/dist/{TimeField-063-mjFa.js → TimeField-BeaCSkdZ.js} +2 -2
  30. package/dist/{TimeField-063-mjFa.js.map → TimeField-BeaCSkdZ.js.map} +1 -1
  31. package/dist/TimeField.js +1 -1
  32. package/dist/{Toolbar-DWeZEpeV.js → Toolbar-Cjo7eAhI.js} +6 -6
  33. package/dist/{Toolbar-DWeZEpeV.js.map → Toolbar-Cjo7eAhI.js.map} +1 -1
  34. package/dist/Toolbar.js +1 -1
  35. package/dist/{YearlessDateInputWithPicker-D6HHhE_H.js → YearlessDateInputWithPicker-BVRZlf9Y.js} +2 -2
  36. package/dist/{YearlessDateInputWithPicker-D6HHhE_H.js.map → YearlessDateInputWithPicker-BVRZlf9Y.js.map} +1 -1
  37. package/dist/beta/components/Table/formatters/dateFormatter.d.ts +1 -1
  38. package/dist/beta/components/Table/formatters/dateTimeFormatter.d.ts +1 -1
  39. package/dist/beta/components/Table/formatters/yearlessDateFormatter.d.ts +2 -2
  40. package/dist/beta.js +2 -2
  41. package/dist/components/Popover/internal/PopoverContext.d.ts +0 -1
  42. package/dist/components/Popover/internal/usePopoverContext.d.ts +0 -1
  43. package/dist/index.js +9 -9
  44. package/package.json +1 -1
  45. package/dist/DataTable-CLr0j95O.js.map +0 -1
  46. package/dist/ListView-CBmaHOY-.js.map +0 -1
  47. package/dist/Popover-U2Eu7v1Q.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox-Bb79Jl9I.js","sources":["../src/components/Combobox/internal/ComboboxContext.ts","../src/components/Combobox/ComboboxEmpty.tsx","../src/components/Combobox/internal/useGroups.tsx","../src/components/Combobox/ComboboxSelect.tsx","../src/components/Combobox/internal/ComboboxItemVisual.tsx","../src/components/Combobox/internal/ComboboxSelectAll.tsx","../src/components/Combobox/internal/ComboboxGroupContext.tsx","../src/components/Combobox/internal/ComboboxGroupList.tsx","../src/components/Combobox/internal/ComboboxGroupProvider.tsx","../src/components/Combobox/ComboboxContent.tsx","../src/components/Combobox/ComboboxTrigger.tsx","../src/components/Combobox/ComboboxItem.tsx","../src/components/Combobox/ComboboxList.tsx","../src/components/Combobox/Combobox.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { ComboboxContextProps } from \"../ComboboxTypes\";\n\nexport const ComboboxContext = createContext<ComboboxContextProps | null>(null);\n\n/**\n * Hook to access the Combobox context\n * @returns The Combobox context value\n * @throws Error if used outside of a Combobox component\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const useCombobox = function <Item = any>() {\n const context = useContext<ComboboxContextProps<Item> | null>(\n ComboboxContext,\n );\n if (context == null) {\n throw new Error(\"useCombobox must be wrapped in <Combobox />\");\n }\n return context;\n};\n","import { useEffect, type ReactNode } from \"react\";\n\nimport { useCombobox } from \"./internal/ComboboxContext\";\n\n/**\n * Props for the ComboboxEmpty component\n */\nexport type ComboboxEmptyProps = {\n children?: ReactNode;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxEmptyElement = function <Item = any>({\n children,\n}: ComboboxEmptyProps) {\n const { items, setHasEmpty } = useCombobox<Item>();\n\n useEffect(() => {\n setHasEmpty?.(true);\n\n return () => {\n setHasEmpty?.(false);\n };\n });\n\n return !items.length ? children : null;\n};\n\n/**\n * ComboboxEmpty component for rendering content when no items are available\n *\n * Features:\n * - Only renders children when the combobox has no items\n * - Integrates with combobox state management\n * - Automatically manages empty state visibility\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns The children when no items are available, or null\n *\n * @example\n * <ComboboxEmpty>\n * <Text>No items found. Try a different search term.</Text>\n * </ComboboxEmpty>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxEmpty = function <Item = any>({\n children,\n}: ComboboxEmptyProps) {\n return <ComboboxEmptyElement<Item>>{children}</ComboboxEmptyElement>;\n};\n","import { useMemo } from \"react\";\nimport { ComboboxGroupByValue } from \"./ComboboxGroupContext\";\n\nexport function useGroups<Item>({\n items,\n groupBy,\n groupToString,\n groupSorter = (a, b) => `${a}`.localeCompare(`${b}`),\n}: {\n items: Item[];\n groupBy?: string;\n groupToString?: (key: string) => string | null;\n groupSorter?: (a: ComboboxGroupByValue, b: ComboboxGroupByValue) => number;\n}) {\n const { groups, orderedItems } = useMemo(() => {\n if (!groupBy) return { groups: [], orderedItems: items };\n const groupsSansItems: {\n key: ComboboxGroupByValue;\n label: string | null;\n }[] = []; // { key: \"strawberry\", label: \"Strawberry\" }\n const groupedItems: Record<ComboboxGroupByValue, Item[]> = {}; // { strawberry: [] }\n\n items.forEach((item) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const groupKey = (item as Record<string, any>)[groupBy];\n if (!groupedItems[groupKey]) {\n groupedItems[groupKey] = [];\n }\n groupedItems[groupKey].push(item);\n });\n\n Object.keys(groupedItems).forEach((key) => {\n groupsSansItems.push({\n key,\n label: groupToString ? groupToString?.(key) : key,\n });\n });\n\n // Sort groups\n // Yes, this is mutative. We'll survive.\n groupsSansItems.sort((a, b) => groupSorter(a.key, b.key));\n\n const orderedItems = [] as Item[];\n // [{ key: \"strawberry\", label: \"Strawberry\", items: [{...}, {...}, {...}] }]\n const groups = groupsSansItems.map((group) => ({\n ...group,\n items: groupedItems[group.key].map((item) => {\n orderedItems.push(item);\n return item;\n }),\n }));\n\n return { groups, orderedItems };\n }, [groupBy, groupSorter, groupToString, items]);\n\n return { groups, orderedItems };\n}\n","import {\n useDownshiftEnvironment,\n useLayoutPropsUtil,\n} from \"../../internal/hooks\";\nimport Popover from \"../Popover\";\nimport {\n ComboboxSelectProps,\n SelectMultipleProps,\n SelectSingleProps,\n} from \"./ComboboxTypes\";\nimport { ComboboxContext } from \"./internal/ComboboxContext\";\nimport {\n defaultItemToKey,\n defaultItemToString,\n getScrollParent,\n isMultiple,\n SELECT_ALL,\n} from \"./internal/ComboboxUtils\";\nimport cx from \"classnames\";\nimport styles from \"./Combobox.module.scss\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useGroups } from \"./internal/useGroups\";\nimport {\n useMultipleSelection as useDownshiftMultipleSelection,\n useSelect as useDownshiftSelect,\n UseSelectStateChangeTypes,\n} from \"downshift\";\n\nconst DEBUG_STATE_REDUCERS = false;\n\n/**\n * NOTE: There is a lot of duplicated code here! Here's a list of the /actual/\n * differences between select-only and regular combobox to help with\n * refactoring this later!\n *\n * 1) Using Downshift's `useSelect` hook instead of `useCombobox`\n * - Swapping out the stateChangeTypes for their equivalents\n * 2) Since there's no input, we don't need to passthrough `getInputProps`\n * 3) Since we don't do any sorting or filtering, we can remove:\n * - onInputValueChange function and prop\n * - setInputValue function\n * - onIsOpenChange function\n * - filterOptions prop\n * - internal `items` state and useEffect to keep it in sync\n * - useEffect to track first render\n * 4) Multiple-specific\n * - Remove `disableClearInputValueOnSelectItem` prop\n * - No need to store `setInputValue` function\n * - Remove all state reducer references to `inputValue`\n * - Remove `onStateChange` function from `useMultipleSelection`\n */\n\nexport const SelectSingle = function <Item>(props: SelectSingleProps<Item>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n disabled,\n readOnly,\n items,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n disableClearSelection = false,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n loading = false,\n minPopoverHeight,\n root,\n environment: environmentProp,\n groupBy,\n groupToString,\n ...rest\n } = componentProps;\n\n const ComboboxClassNames = cx(styles[\"combobox\"], className);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState<\n Item[]\n >([]);\n const [, setForceClearInputValueOnSelectItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLDivElement | HTMLUListElement | null>(null);\n const handleOutsidePress = (_e: MouseEvent) => {\n if (disableCloseOnClickOutside) return;\n closeMenu();\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const { groups, orderedItems } = useGroups({\n items,\n groupBy,\n groupToString,\n });\n\n const {\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n inputValue,\n closeMenu,\n } = useDownshiftSelect<Item>({\n ...rest,\n items: orderedItems,\n itemToString,\n itemToKey,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n case useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useDownshiftSelect.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : forceCloseOnSelectItems.includes(changes.selectedItem as Item)\n ? false\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? state.highlightedIndex\n : changes.highlightedIndex,\n };\n default:\n return changes;\n }\n },\n onSelectedItemChange(changes) {\n const { selectedItem } = changes;\n\n if (onChange != null)\n onChange(selectedItem != null ? selectedItem : null);\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n });\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n return (\n <ComboboxContext.Provider\n value={{\n multiple: false,\n select: true,\n disableClearSelection,\n items: orderedItems,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems: [],\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n loading,\n referenceRef,\n contentRef,\n closeMenu,\n groups,\n groupBy,\n groupToString,\n listRef,\n }}\n >\n <div\n className={ComboboxClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n open={isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onClickOutside={handleOutsidePress}\n minHeight={minPopoverHeight}\n >\n {children}\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n};\n\nconst SelectMultiple = function <Item>(props: SelectMultipleProps<Item>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n items,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n onSelectedItemsChange,\n onStateChange,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n loading = false,\n minPopoverHeight,\n root,\n disabled,\n readOnly,\n stateReducer: _,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp,\n groupBy,\n groupToString,\n selectAll,\n ...rest\n } = componentProps;\n\n const ComboboxClassNames = cx(styles[\"combobox\"], className);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState<\n Item[]\n >([]);\n const [, setForceClearInputValueOnSelectItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLDivElement | HTMLUListElement | null>(null);\n\n const handleOutsidePress = (_e: MouseEvent) => {\n if (disableCloseOnClickOutside) return;\n closeMenu();\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const { groups, orderedItems: orderedItemsBase } = useGroups({\n items,\n groupBy,\n groupToString,\n });\n\n const orderedItems = selectAll\n ? [SELECT_ALL as Item, ...orderedItemsBase]\n : orderedItemsBase;\n\n const {\n getSelectedItemProps,\n getDropdownProps,\n reset,\n selectedItems,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n } = useDownshiftMultipleSelection<Item>({\n itemToKey,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp ?? environment,\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n // the Chip itself will handle \"Backspace\" and \"Delete\"\n // just return previous state\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownBackspace:\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownDelete:\n return state;\n\n case useDownshiftMultipleSelection.stateChangeTypes\n .FunctionRemoveSelectedItem:\n return { ...changes, activeIndex: -1 };\n\n case useDownshiftMultipleSelection.stateChangeTypes.FunctionReset:\n return { ...changes, selectedItems: [] };\n\n default:\n return changes;\n }\n },\n onStateChange,\n onSelectedItemsChange(changes) {\n const { selectedItems } = changes;\n if (onChange != null) onChange(selectedItems);\n if (onSelectedItemsChange != null) onSelectedItemsChange(changes);\n },\n });\n\n const {\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n inputValue,\n closeMenu,\n } = useDownshiftSelect<Item>({\n ...rest,\n items: orderedItems,\n itemToString,\n itemToKey,\n selectedItem: null,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n case useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useDownshiftSelect.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : forceCloseOnSelectItems.includes(changes.selectedItem as Item)\n ? false\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? state.highlightedIndex\n : changes.highlightedIndex,\n };\n\n default:\n return changes;\n }\n },\n onStateChange(changes) {\n const { type, selectedItem: newSelectedItem } = changes;\n\n switch (type) {\n case useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useDownshiftSelect.stateChangeTypes.ItemClick:\n case useDownshiftSelect.stateChangeTypes.ToggleButtonBlur:\n if (changes.selectedItem === SELECT_ALL) {\n selectAll?.onSelection();\n return {\n ...changes,\n selectedItem: null,\n };\n }\n if (newSelectedItem != null) {\n const itemAlreadySelected = selectedItems.some(\n (item) => itemToKey(item) === itemToKey(newSelectedItem),\n );\n\n if (itemAlreadySelected) {\n removeSelectedItem(newSelectedItem);\n } else {\n addSelectedItem(newSelectedItem);\n }\n }\n break;\n\n default:\n break;\n }\n\n onStateChange?.(changes);\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n onHighlightedIndexChange(changes) {\n if (\n selectAll &&\n changes.highlightedIndex === 0 &&\n (\n [\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownArrowDown,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownArrowUp,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownPageDown,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownPageUp,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownHome,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnd,\n ] as UseSelectStateChangeTypes[]\n ).includes(changes.type) &&\n listRef.current\n ) {\n // Scroll to the top of the list when select all is highlighted\n const scrollParent = getScrollParent(listRef.current);\n if (scrollParent) {\n scrollParent.scrollTop = 0;\n }\n }\n },\n });\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n return (\n <ComboboxContext.Provider\n value={{\n multiple: true,\n select: true,\n items: orderedItems,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n loading,\n referenceRef,\n contentRef,\n closeMenu,\n groupBy,\n groupToString,\n groups,\n listRef,\n selectAll,\n }}\n >\n <div\n className={ComboboxClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n open={!isDisabled && isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onClickOutside={handleOutsidePress}\n minHeight={minPopoverHeight}\n >\n {children}\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n};\n\n/**\n * ComboboxSelect component for selecting items from a predefined list.\n *\n * Features:\n * - Single and multiple item selection from predefined options\n * - Dropdown-style selection interface\n * - Grouping support with custom group labels and sorting\n * - Loading states with spinner indicators\n * - Disabled and read-only states\n * - Customizable popover behavior and positioning\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Select\n * items={items}\n * itemToString={(item) => item.name}\n * onChange={setSelectedItem}\n * >\n * <Combobox.SelectTrigger label=\"Select an item\" />\n * <Combobox.Content>\n * {({ items }) => (\n * <Combobox.List>\n * {items.map((item, i) => (\n * <Combobox.Item key={item.id} item={item} index={i}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n * )}\n * </Combobox.Content>\n * </Combobox.Select>\n */\n\nexport const ComboboxSelect = function <Item>(\n props: ComboboxSelectProps<Item>,\n) {\n if (isMultiple(props)) {\n return <SelectMultiple<Item> {...props} />;\n } else {\n return <SelectSingle<Item> {...props} />;\n }\n};\n","import { forwardRef, ReactNode } from \"react\";\nimport cx from \"classnames\";\n\nimport { Icon } from \"../../Icon\";\nimport { Flex, FlexProps } from \"../../Flex\";\n\nimport styles from \"../Combobox.module.scss\";\nimport listViewStyles from \"../../ListView/ListView.module.scss\";\nimport checkboxStyles from \"../../Checkbox/Checkbox.module.scss\";\nimport CheckboxOutline from \"@servicetitan/hammer-icon/mdi/round/check_box_outline_blank.svg\";\nimport CheckboxChecked from \"@servicetitan/hammer-icon/mdi/round/check_box.svg\";\nimport CheckboxIndeterminate from \"@servicetitan/hammer-icon/mdi/round/indeterminate_check_box.svg\";\nimport { PassThroughProps } from \"../../../types\";\n\nexport type ComboboxItemVisualProps = {\n children: ReactNode;\n rootDivProps: PassThroughProps<\"div\">;\n disabled: boolean;\n checked: boolean;\n hideCheckbox: boolean;\n flexProps?: FlexProps;\n};\n\nexport const ComboboxItemVisual = forwardRef(\n (\n {\n children,\n disabled,\n checked,\n hideCheckbox,\n rootDivProps,\n flexProps,\n }: ComboboxItemVisualProps,\n ref: React.ForwardedRef<HTMLDivElement>,\n ) => {\n return (\n <div\n ref={ref}\n data-anv=\"combobox-item\"\n {...rootDivProps}\n className={cx(\n styles[\"listview-option\"],\n listViewStyles[\"listview-option\"],\n rootDivProps.className,\n )}\n >\n {!hideCheckbox ? (\n <div className={cx(styles[\"cell\"], listViewStyles[\"cell\"])}>\n <div className={checkboxStyles[\"wrapper\"]}>\n <div className={checkboxStyles[\"checkbox\"]}>\n <input\n type=\"checkbox\"\n checked={checked}\n aria-checked={checked}\n aria-label=\"Select\"\n readOnly\n tabIndex={-1}\n {...(disabled ? { disabled: true } : {})}\n />\n\n <span className={checkboxStyles[\"icon-wrapper\"]} aria-hidden>\n <Icon\n size=\"large\"\n svg={CheckboxIndeterminate}\n className={checkboxStyles[\"icon-indeterminate\"]}\n />\n\n <Icon\n size=\"large\"\n svg={CheckboxChecked}\n className={checkboxStyles[\"icon-checked\"]}\n />\n\n <Icon\n size=\"large\"\n svg={CheckboxOutline}\n className={checkboxStyles[\"icon-unchecked\"]}\n />\n </span>\n\n <span aria-hidden></span>\n </div>\n </div>\n </div>\n ) : null}\n <Flex grow={1} shrink={1} {...flexProps}>\n {children}\n </Flex>\n </div>\n );\n },\n);\n\nComboboxItemVisual.displayName = \"ComboboxItemVisual\";\n","import { SELECT_ALL } from \"./ComboboxUtils\";\nimport { ComboboxItemVisual } from \"./ComboboxItemVisual\";\nimport { useEffect, useRef } from \"react\";\nimport { useCombobox } from \"./ComboboxContext\";\nimport styles from \"../Combobox.module.scss\";\nimport cx from \"classnames\";\n\nconst ComboboxSelectAll = function ({ className }: { className?: string }) {\n const {\n getItemProps,\n setForceCloseOnSelectItems,\n highlightedIndex,\n items,\n selectAll,\n } = useCombobox();\n\n const item = SELECT_ALL;\n const index = items.indexOf(item);\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n return () => {\n setForceCloseOnSelectItems((forceCloseOnSelectItems) => {\n if (forceCloseOnSelectItems.includes(item)) {\n return forceCloseOnSelectItems.filter(\n (prevItem) => prevItem !== item,\n );\n } else {\n return forceCloseOnSelectItems;\n }\n });\n };\n }, [item, setForceCloseOnSelectItems]);\n\n return (\n <ComboboxItemVisual\n key=\"select-all\"\n ref={ref}\n rootDivProps={getItemProps({\n item: SELECT_ALL,\n index,\n \"aria-selected\": highlightedIndex === index,\n className: cx(styles[\"select-all\"], className),\n })}\n hideCheckbox={false}\n disabled={false}\n checked={!!selectAll?.isChecked}\n >\n {selectAll?.label}\n </ComboboxItemVisual>\n );\n};\n\nexport { ComboboxSelectAll };\n","import { createContext, useContext } from \"react\";\n\nexport type ComboboxGroupByValue = string | number;\n\nexport type ComboboxGroupContextType = {\n key: ComboboxGroupByValue;\n label: string | null;\n} | null;\n\nexport const ComboboxGroupContext =\n createContext<ComboboxGroupContextType>(null);\n\nexport const useComboboxGroupContext = () => useContext(ComboboxGroupContext);\n","import {\n useEffect,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { useCombobox } from \"./ComboboxContext\";\n\nimport { Flex } from \"../../Flex\";\nimport { Text } from \"../../Text\";\nimport { Spinner } from \"../../Spinner\";\n\nimport styles from \"../Combobox.module.scss\";\nimport listboxStyles from \"../../Listbox/Listbox.module.scss\";\nimport listViewStyles from \"../../ListView/ListView.module.scss\";\nimport { ComboboxSelectAll } from \"./ComboboxSelectAll\";\nimport { useComboboxGroupContext } from \"./ComboboxGroupContext\";\nimport Divider from \"../../Divider\";\n\n/**\n * Props for the ComboboxGroupList component\n */\nexport type ComboboxGroupListProps = ComponentPropsWithoutRef<\"ul\" | \"div\"> & {\n children?: ReactNode;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxGroupList = function <Item = any>({\n children,\n ...rest\n}: ComboboxGroupListProps) {\n const {\n getMenuProps,\n multiple,\n items,\n hasAddNew = false,\n hasEmpty,\n loading,\n selectAll,\n listRef,\n } = useCombobox<Item>();\n const scrollSentinelRef = useRef<HTMLDivElement>(null);\n const [isScrolled, setIsScrolled] = useState(false);\n const { key: groupKey } = useComboboxGroupContext() ?? {};\n\n const isAGroup = !!groupKey;\n\n useEffect(() => {\n if (!scrollSentinelRef.current) return;\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (!entry.isIntersecting) {\n setIsScrolled(true);\n } else {\n setIsScrolled(false);\n }\n });\n },\n { threshold: 0 },\n );\n intersectionObserver.observe(scrollSentinelRef.current);\n return () => {\n intersectionObserver.disconnect();\n };\n }, [scrollSentinelRef, setIsScrolled]);\n\n if (isAGroup) {\n return <>{children}</>;\n }\n\n if (multiple) {\n return (\n <>\n <ul\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"ul\">)}\n ref={listRef as React.MutableRefObject<HTMLUListElement | null>}\n data-anv=\"combobox-list\"\n className={cx(styles[\"listview\"], listViewStyles[\"listview\"], {\n [styles.scrolled]: isScrolled,\n })}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n }}\n >\n <div ref={scrollSentinelRef} className={styles[\"scroll-sentinel\"]} />\n {!loading && selectAll && (\n <>\n <ComboboxSelectAll />\n <Divider />\n </>\n )}\n {children}\n </ul>\n\n {loading ? (\n <div className={styles[\"empty\"]}>\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n </div>\n ) : !items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n } else {\n return (\n <>\n <ul\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"ul\">)}\n ref={listRef as React.MutableRefObject<HTMLUListElement | null>}\n data-anv=\"combobox-list\"\n className={listboxStyles[\"listbox\"]}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n }}\n >\n {children}\n </ul>\n\n {loading ? (\n <div className={styles[\"empty\"]}>\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n </div>\n ) : !items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n }\n};\n","import { ComboboxGroupContext } from \"./ComboboxGroupContext\";\n\nexport const ComboboxGroupProvider = ComboboxGroupContext.Provider;\n","import {\n useEffect,\n type ComponentPropsWithoutRef,\n type ReactNode,\n type FocusEvent,\n useId,\n CSSProperties,\n} from \"react\";\nimport {\n UseComboboxProps as UseDownshiftComboboxProps,\n UseSelectProps as UseDownshiftSelectProps,\n UseComboboxReturnValue as UseDownshiftComboboxReturnValue,\n UseSelectReturnValue as UseDownshiftSelectReturnValue,\n} from \"downshift\";\nimport cx from \"classnames\";\n\nimport { Popover } from \"../Popover\";\n\nimport styles from \"./Combobox.module.scss\";\nimport listboxStyles from \"../Listbox/Listbox.module.scss\";\n\nimport { Text } from \"../Text\";\nimport { Divider } from \"../Divider\";\nimport { useCombobox } from \"./internal/ComboboxContext\";\nimport { usePopoverContext } from \"../Popover/internal/usePopoverContext\";\nimport { ADD_NEW, SELECT_ALL } from \"./internal/ComboboxUtils\";\nimport { ComboboxGroupList } from \"./internal/ComboboxGroupList\";\nimport { ComboboxGroupProvider } from \"./internal/ComboboxGroupProvider\";\n\n/**\n * Props for the options passed to the children render function\n */\nexport type ComboboxContentOptionsProps<Item> = {\n /** Props for the option including selection and disabled state */\n optionProps: ReturnType<\n UseDownshiftComboboxReturnValue<Item>[\"getItemProps\"]\n > & { selected: boolean; disabled: boolean };\n /** The item to render */\n item: Item;\n /** The index of the item in the list */\n index: number;\n};\n\n/**\n * Props for the ComboboxContent component\n */\nexport type ComboboxContentProps<Item> = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> & {\n /** Render function that receives combobox state and returns content */\n children?: ({\n items,\n inputValue,\n selectedItem,\n getMenuProps,\n getItemProps,\n }: Pick<\n UseDownshiftComboboxProps<Item> | UseDownshiftSelectProps<Item>,\n \"items\"\n > &\n Pick<\n | UseDownshiftComboboxReturnValue<Item>\n | UseDownshiftSelectReturnValue<Item>,\n \"getMenuProps\" | \"getItemProps\" | \"inputValue\" | \"selectedItem\"\n > & {\n listProps: ReturnType<\n | UseDownshiftComboboxReturnValue<Item>[\"getMenuProps\"]\n | UseDownshiftSelectReturnValue<Item>[\"getMenuProps\"]\n > & { style: CSSProperties };\n options: ComboboxContentOptionsProps<Item>[];\n }) => ReactNode;\n /** Whether to disable popover behavior and render inline */\n disablePopover?: boolean;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxContentElement = function <Item = any>({\n children,\n className,\n disablePopover = false,\n ...rest\n}: ComboboxContentProps<Item>) {\n const {\n items,\n itemToKey,\n inputValue,\n selectedItem,\n selectedItems,\n setHasDisabledPopover,\n getMenuProps,\n getItemProps,\n isDisabled,\n isReadOnly,\n contentRef,\n closeMenu,\n groups,\n } = useCombobox<Item>();\n\n const ComboboxPopoverContentClassNames = cx(\n styles[\"popover-content\"],\n className,\n );\n\n useEffect(() => {\n setHasDisabledPopover(disablePopover);\n\n return () => {\n setHasDisabledPopover(false);\n };\n }, [disablePopover, setHasDisabledPopover]);\n\n const context = usePopoverContext();\n // if we focus out to something not within the reference or content divs\n // then close the popover\n const handleBlur = (_e: FocusEvent) => {\n if (context?.controlled) return;\n context?.popover.close?.(closeMenu);\n };\n\n const resolveChildren = (groupItems: Item[]) =>\n children?.({\n items: groupItems,\n inputValue,\n selectedItem,\n getMenuProps,\n getItemProps,\n listProps: {\n ...getMenuProps({}, { suppressRefError: true }),\n style: {\n display: groupItems.length ? undefined : \"none\",\n overflow: \"auto\",\n },\n },\n options: groupItems.map((item, index) => ({\n optionProps: {\n ...getItemProps({\n item,\n index,\n }),\n tabIndex: disablePopover ? -1 : undefined,\n selected:\n itemToKey(selectedItem) === itemToKey(item) ||\n selectedItems.some(\n (selectedItem) => itemToKey(selectedItem) === itemToKey(item),\n ),\n disabled: !!isDisabled || !!isReadOnly, // also see \"isItemDisabled\" function\n },\n item,\n index,\n })),\n });\n\n const id = useId();\n\n const filterAlreadyRenderedItems = (items: Item[]) => {\n // \"Select all\" is already rendered in the list (i.e. ComboboxList)\n // And \"Add new\" is passed as a separate child\n // So we don't need to render them here\n return items.filter((item) => item !== ADD_NEW && item !== SELECT_ALL);\n };\n\n return disablePopover ? (\n <div\n {...rest}\n className={ComboboxPopoverContentClassNames}\n ref={contentRef}\n onBlur={handleBlur}\n >\n {groups?.length ? (\n <ComboboxGroupList>\n {groups.map((group, i) => (\n <ComboboxGroupProvider key={group.key} value={group}>\n {i !== 0 && <Divider />}\n <li\n aria-labelledby={`${id}-group-${group.key}`}\n className={cx(styles[\"group\"], listboxStyles[\"listbox\"])}\n data-anv=\"combobox-group\"\n role=\"group\"\n >\n {group.label != null ? (\n <Text\n className={styles[\"group-title\"]}\n id={`${id}-group-${group.key}`}\n variant=\"eyebrow\"\n >\n {group.label}\n </Text>\n ) : null}\n <ul className={styles[\"group-list\"]}>\n {resolveChildren(filterAlreadyRenderedItems(group.items))}\n </ul>\n </li>\n </ComboboxGroupProvider>\n ))}\n </ComboboxGroupList>\n ) : (\n resolveChildren(filterAlreadyRenderedItems(items))\n )}\n </div>\n ) : (\n <Popover.Content\n data-anv=\"combobox-content\"\n {...rest}\n className={ComboboxPopoverContentClassNames}\n ref={getMenuProps({ ref: contentRef }, { suppressRefError: true }).ref}\n tabIndex={-1}\n onBlur={handleBlur}\n >\n {groups?.length ? (\n <ComboboxGroupList>\n {groups.map((group, i) => (\n <ComboboxGroupProvider key={group.key} value={group}>\n {i !== 0 && <Divider />}\n <li\n aria-labelledby={`${id}-group-${group.key}`}\n className={cx(styles[\"group\"], listboxStyles[\"listbox\"])}\n data-anv=\"combobox-group\"\n role=\"group\"\n >\n {group.label != null ? (\n <Text\n className={styles[\"group-title\"]}\n id={`${id}-group-${group.key}`}\n variant=\"eyebrow\"\n >\n {group.label}\n </Text>\n ) : null}\n <ul className={styles[\"group-list\"]}>\n {resolveChildren(filterAlreadyRenderedItems(group.items))}\n </ul>\n </li>\n </ComboboxGroupProvider>\n ))}\n </ComboboxGroupList>\n ) : (\n resolveChildren(filterAlreadyRenderedItems(items))\n )}\n </Popover.Content>\n );\n};\n\n/**\n * ComboboxContent component for rendering the content area of a combobox\n *\n * Features:\n * - Supports both popover and inline rendering modes\n * - Provides render props pattern for flexible content rendering\n * - Handles grouped items with proper ARIA labels\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events for popover behavior\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered combobox content area\n *\n * @example\n * <Combobox.Content>\n * {({ items }) => (\n * <ul>\n * {items.map((item, index) => (\n * <li key={item.id}>\n * {item.name}\n * </li>\n * ))}\n * </ul>\n * )}\n * </Combobox.Content>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxContent = function <Item = any>({\n children,\n className,\n disablePopover = false,\n ...rest\n}: ComboboxContentProps<Item>) {\n return (\n <ComboboxContentElement<Item>\n className={className}\n disablePopover={disablePopover}\n {...rest}\n >\n {children}\n </ComboboxContentElement>\n );\n};\n","import {\n useLayoutEffect,\n useRef,\n type FocusEvent,\n type MouseEvent,\n type RefObject,\n} from \"react\";\n\nimport {\n ComboboxSearchFieldProps,\n ComboboxSelectTriggerProps,\n ComboboxTriggerProps,\n} from \"./ComboboxTypes\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { usePopoverContext } from \"../Popover/internal/usePopoverContext\";\nimport { useCombobox } from \"./internal/ComboboxContext\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport Icon from \"../Icon\";\nimport Avatar from \"../Avatar\";\nimport { SelectTriggerBase } from \"../SelectTrigger/internal/SelectTriggerBase\";\n\nconst ComboboxTrigger = function <Item>(\n props: ComboboxTriggerProps<Item> & { variant?: \"combobox\" | \"select\" },\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n // variant: variantProp = \"combobox\",\n className,\n style,\n label,\n size,\n error,\n hint,\n description,\n required,\n moreInfo,\n moreInfoOpen,\n prefix,\n suffix,\n maxRows,\n selectedItemProps = () => ({}),\n id,\n placeholder,\n disabled,\n readOnly,\n onClear,\n ...rest\n } = componentProps;\n\n const {\n select,\n disableClearSelection,\n itemToString,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n selectedItem,\n selectedItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n removeSelectedItem,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n referenceRef,\n closeMenu,\n setIsDisabled,\n setIsReadOnly,\n } = useCombobox();\n\n // TODO: Figure out how to fire this console.warn only in \"development\"\n // useEffect(() => {\n // if (variant !== variantProp) {\n // if (variant === \"select\") {\n // console.warn(\n // \"Combobox.SearchField should be used with non-Select Combobox\",\n // );\n // }\n\n // if (variant === \"combobox\") {\n // console.warn(\n // \"Combobox.SelectTrigger should be used with Combobox.Select\",\n // );\n // }\n // }\n // }, [variant, variantProp]);\n\n const context = usePopoverContext();\n\n useLayoutEffect(() => {\n if (typeof disabled === \"undefined\") return;\n setIsDisabled(disabled);\n }, [disabled, setIsDisabled]);\n\n useLayoutEffect(() => {\n if (typeof readOnly === \"undefined\") return;\n setIsReadOnly(readOnly);\n }, [readOnly, setIsReadOnly]);\n\n // if we focus out to something not within the reference or content divs\n // then close the popover\n const handleBlur = (e: FocusEvent) => {\n const target = e.relatedTarget ?? e.target;\n const focusedOnReference =\n context?.invoker.ref.current &&\n context?.invoker.ref.current.contains(target);\n const focusedOnContent =\n (context?.popover.ref.current &&\n context?.popover.ref.current.contains(target)) ||\n context?.popover.element?.contains(target);\n\n if ((!focusedOnReference && !focusedOnContent) || !e.relatedTarget) {\n closeMenu();\n }\n };\n\n const labelProps = getLabelProps({\n required,\n moreInfo,\n moreInfoOpen,\n });\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const inputWrapperProps = {\n ...(select\n ? {\n ...getToggleButtonProps({\n disabled: isDisabled,\n readOnly: isReadOnly,\n id,\n ref: context?.invoker.ref as unknown as RefObject<\n HTMLDivElement & HTMLButtonElement\n >,\n }),\n }\n : {\n onClick: () => inputRef.current?.focus(),\n ref: context?.invoker.ref as unknown as RefObject<HTMLDivElement>,\n }),\n };\n\n const toggleButtonProps = select ? {} : getToggleButtonProps();\n\n const handleClearButtonClick = (_e: MouseEvent<HTMLButtonElement>) => {\n if (onClear) {\n onClear();\n } else {\n if (reset != null) {\n reset();\n } else {\n selectItem(null);\n }\n }\n };\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <SelectTriggerBase\n data-anv={select ? \"combobox-select-trigger\" : \"combobox-search-field\"}\n className={className}\n style={styleCombined}\n label={label}\n size={size}\n error={error}\n hint={hint}\n description={description}\n prefix={prefix}\n suffix={suffix}\n maxRows={maxRows}\n selectedItemProps={selectedItemProps}\n placeholder={placeholder}\n labelProps={labelProps}\n inputWrapperProps={inputWrapperProps}\n toggleButtonProps={toggleButtonProps}\n itemToString={itemToString}\n removeSelectedItem={removeSelectedItem}\n variant={select ? \"select\" : \"combobox\"}\n disableClearSelection={disableClearSelection}\n selectedItem={selectedItem}\n selectedItems={selectedItems}\n inputValue={inputValue}\n disabled={isDisabled}\n readOnly={isReadOnly}\n referenceRef={referenceRef}\n onBlur={handleBlur}\n onClearButtonClick={handleClearButtonClick}\n chipProps={(item: Item, index: number) => {\n if (getSelectedItemProps != null) {\n const { onClick: _, ...chipProps } = getSelectedItemProps({\n selectedItem: item,\n index,\n });\n return chipProps;\n }\n return {};\n }}\n inputProps={\n select\n ? {\n ...(getDropdownProps != null\n ? getDropdownProps({\n required,\n preventKeyAction: false,\n })\n : {\n required,\n }),\n [\"aria-expanded\"]: context?.invoker[\"aria-expanded\"],\n [\"aria-details\"]: getMenuProps().id,\n [\"aria-haspopup\"]: context?.invoker[\"aria-haspopup\"],\n }\n : {\n [\"aria-expanded\"]: context?.invoker[\"aria-expanded\"],\n [\"aria-details\"]: getMenuProps().id,\n [\"aria-haspopup\"]: context?.invoker[\"aria-haspopup\"],\n [\"aria-controls\"]: getMenuProps().id,\n ...(getDropdownProps != null && getInputProps != null\n ? getInputProps(\n getDropdownProps({\n ...rest,\n disabled: isDisabled,\n readOnly: isReadOnly,\n required,\n autoComplete: \"off\",\n id,\n preventKeyAction: false,\n ref: inputRef,\n }),\n )\n : getInputProps != null\n ? getInputProps({\n ...rest,\n disabled: isDisabled,\n readOnly: isReadOnly,\n required,\n autoComplete: \"off\",\n id,\n ref: inputRef,\n })\n : {}),\n }\n }\n />\n );\n};\n\n/**\n * ComboboxSearchField component for rendering the search input field of a combobox\n *\n * Features:\n * - Provides search input with clear button functionality\n * - Supports multiple selection with chip display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered search field for combobox\n *\n * @example\n * <Combobox.SearchField\n * label=\"Search users\"\n * placeholder=\"Type to search...\"\n * maxRows={3}\n * />\n */\nconst ComboboxSearchFieldElement = function <Item>({\n onClear,\n ...props\n}: ComboboxTriggerProps<Item>) {\n return (\n <ComboboxTrigger<Item> onClear={onClear} {...props} variant=\"combobox\" />\n );\n};\n\n/**\n * ComboboxSearchField component for the search input field.\n *\n * Features:\n * - Search input with clear button functionality\n * - Supports multiple selection with chip display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n * - Enhanced prefix support for icons and avatars\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.SearchField\n * label=\"Search users\"\n * placeholder=\"Type to search...\"\n * prefix={{ icon: { svg: SearchIcon } }}\n * />\n */\nexport const ComboboxSearchField = function ({\n prefix: prefixProp,\n ...props\n}: ComboboxSearchFieldProps) {\n const data = {\n label: childrenToString(props.label),\n size: props.size,\n required: props.required,\n moreInfo: props.moreInfo,\n moreInfoOpen: props.moreInfoOpen,\n description: childrenToString(props.description),\n hint: props.hint,\n labelProps: props.labelProps,\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxSearchField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const prefix =\n prefixProp == null || typeof prefixProp === \"string\" ? (\n prefixProp\n ) : \"icon\" in prefixProp ? (\n <Icon {...prefixProp.icon} />\n ) : \"avatar\" in prefixProp ? (\n <Avatar\n {...prefixProp.avatar}\n size={props.size === \"small\" ? \"small\" : \"medium\"}\n />\n ) : (\n prefixProp\n );\n\n return (\n <ComboboxSearchFieldElement\n data-tracking-id={trackingId}\n {...props}\n prefix={prefix}\n />\n );\n};\n\nconst ComboboxSelectTriggerElement = function <Item>(\n props: ComboboxTriggerProps<Item>,\n) {\n return <ComboboxTrigger<Item> {...props} variant=\"select\" />;\n};\n\n/**\n * ComboboxSelectTrigger component for the select trigger field.\n *\n * Features:\n * - Select input with dropdown trigger\n * - Supports single selection display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n * - Enhanced prefix support for icons and avatars\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.SelectTrigger\n * label=\"Select user\"\n * placeholder=\"Choose a user...\"\n * prefix={{ avatar: { name: \"User\" } }}\n * />\n */\nexport const ComboboxSelectTrigger = function ({\n prefix: prefixProp,\n ...props\n}: ComboboxSelectTriggerProps) {\n const data = {\n label: childrenToString(props.label),\n size: props.size,\n required: props.required,\n moreInfo: props.moreInfo,\n moreInfoOpen: props.moreInfoOpen,\n description: childrenToString(props.description),\n hint: props.hint,\n labelProps: props.labelProps,\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxSearchField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const prefix =\n prefixProp == null || typeof prefixProp === \"string\" ? (\n prefixProp\n ) : \"icon\" in prefixProp ? (\n <Icon {...prefixProp.icon} />\n ) : \"avatar\" in prefixProp ? (\n <Avatar\n {...prefixProp.avatar}\n size={props.size === \"small\" ? \"small\" : \"medium\"}\n />\n ) : (\n prefixProp\n );\n\n return (\n <ComboboxSelectTriggerElement\n data-tracking-id={trackingId}\n {...props}\n prefix={prefix}\n />\n );\n};\n","import { useEffect, type ComponentPropsWithoutRef } from \"react\";\nimport { Icon } from \"../Icon\";\nimport { Flex } from \"../Flex\";\n\nimport styles from \"./Combobox.module.scss\";\nimport listboxStyles from \"../Listbox/Listbox.module.scss\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\nimport { useCombobox } from \"./internal/ComboboxContext\";\nimport { ComboboxItemAddNewProps, ComboboxItemProps } from \"./ComboboxTypes\";\nimport { useTrackingId } from \"../../hooks\";\nimport { ADD_NEW } from \"./internal/ComboboxUtils\";\nimport { ComboboxItemVisual } from \"./internal/ComboboxItemVisual\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst CoreComboboxItemElement = function <Item = any>({\n children,\n disabled: disabledProp,\n item,\n index: indexProp,\n hideCheckbox,\n forceCloseOnSelect,\n forceClearInputValueOnSelect,\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n gap,\n rowGap,\n columnGap,\n ...rest\n}: ComboboxItemProps<Item>) {\n const {\n itemToKey,\n getItemProps,\n multiple,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n highlightedIndex,\n items,\n } = useCombobox<Item>();\n\n const index = item === ADD_NEW && !multiple ? indexProp : items.indexOf(item);\n\n const disabled =\n disabledProp ||\n (item && item instanceof Object && \"disabled\" in item && item.disabled);\n\n useEffect(() => {\n if (disabledProp && !disabledItems.includes(item)) {\n setDisabledItems([...disabledItems, item]);\n } else if (disabledItems.includes(item)) {\n setDisabledItems(disabledItems.filter((prevItem) => prevItem !== item));\n }\n\n return () => {\n if (disabledItems.includes(item)) {\n setDisabledItems(disabledItems.filter((prevItem) => prevItem !== item));\n }\n };\n }, [item, disabledProp, setDisabledItems]); //eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n if (forceCloseOnSelect) {\n setForceCloseOnSelectItems((forceCloseOnSelectItems) => {\n if (forceCloseOnSelectItems.includes(item)) {\n return forceCloseOnSelectItems;\n } else {\n return [...forceCloseOnSelectItems, item];\n }\n });\n }\n\n return () => {\n setForceCloseOnSelectItems((forceCloseOnSelectItems) => {\n if (forceCloseOnSelectItems.includes(item)) {\n return forceCloseOnSelectItems.filter(\n (prevItem) => prevItem !== item,\n );\n } else {\n return forceCloseOnSelectItems;\n }\n });\n };\n }, [item, forceCloseOnSelect, setForceCloseOnSelectItems]);\n\n useEffect(() => {\n if (forceClearInputValueOnSelect) {\n setForceClearInputValueOnSelectItems(\n (forceClearInputValueOnSelectItems) => {\n if (forceClearInputValueOnSelectItems.includes(item)) {\n return forceClearInputValueOnSelectItems;\n } else {\n return [...forceClearInputValueOnSelectItems, item];\n }\n },\n );\n }\n\n return () => {\n setForceClearInputValueOnSelectItems(\n (forceClearInputValueOnSelectItems) => {\n if (forceClearInputValueOnSelectItems.includes(item)) {\n return forceClearInputValueOnSelectItems.filter(\n (prevItem) => prevItem !== item,\n );\n } else {\n return forceClearInputValueOnSelectItems;\n }\n },\n );\n };\n }, [\n item,\n forceClearInputValueOnSelect,\n setForceClearInputValueOnSelectItems,\n ]);\n\n const flexProps = {\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n gap,\n rowGap,\n columnGap,\n };\n\n if (multiple) {\n const checked = selectedItems.some(\n (selectedItem) => itemToKey(selectedItem) === itemToKey(item),\n );\n\n return (\n <ComboboxItemVisual\n rootDivProps={getItemProps({\n item,\n index,\n \"aria-selected\": highlightedIndex === index,\n ...(rest as ComponentPropsWithoutRef<\"div\">),\n })}\n disabled={disabled as boolean}\n checked={checked}\n hideCheckbox={hideCheckbox || item === ADD_NEW}\n flexProps={flexProps}\n >\n {children}\n </ComboboxItemVisual>\n );\n } else {\n return (\n <li\n {...getItemProps({\n item,\n index,\n \"aria-selected\": highlightedIndex === index,\n ...(rest as ComponentPropsWithoutRef<\"li\">),\n })}\n data-anv=\"combobox-item\"\n data-checked={itemToKey(selectedItem) === itemToKey(item)}\n className={styles[\"item\"]}\n {...(disabled ? { \"aria-disabled\": true } : {})}\n >\n <Flex\n className={listboxStyles[\"children\"]}\n grow={1}\n shrink={1}\n {...flexProps}\n >\n {children}\n </Flex>\n <Icon\n aria-hidden\n svg={Check}\n inherit\n className={styles[\"Icon\"]}\n style={{\n opacity: itemToKey(selectedItem) === itemToKey(item) ? 1 : 0,\n }}\n />\n </li>\n );\n }\n};\n\n/**\n * ComboboxItem component for rendering individual items in a combobox list\n *\n * Features:\n * - Supports both single and multiple selection modes\n * - Handles disabled state for individual items\n * - Provides checkbox UI for multiple selection\n * - Supports custom layout with Flex props\n * - Integrates with combobox state management\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered combobox item\n *\n * @example\n * <ComboboxItem item={user} index={0}>\n * <Text>{user.name}</Text>\n * <Text subdued>{user.email}</Text>\n * </ComboboxItem>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxItemElement = function <Item = any>(\n props: ComboboxItemProps<Item>,\n) {\n return <CoreComboboxItemElement {...props} />;\n};\n\n/**\n * ComboboxItem component for rendering individual items in the list.\n *\n * Features:\n * - Individual item rendering with proper accessibility\n * - Support for disabled state\n * - Custom content rendering\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Item item={item} index={index}>\n * <Flex direction=\"column\">\n * <Text>{item.name}</Text>\n * <Text size=\"small\" subdued>{item.description}</Text>\n * </Flex>\n * </Combobox.Item>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxItem = function <Item = any>(\n props: ComboboxItemProps<Item>,\n) {\n const data = {\n item: props.item,\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxItem\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return <ComboboxItemElement<Item> data-tracking-id={trackingId} {...props} />;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst CoreComboboxItemAddNewElement = function <Item = any>({\n onSelection,\n ...props\n}: ComboboxItemAddNewProps<Item>) {\n const { items, setHasAddNew, hasExactMatch, setOnSelectItemAddNew } =\n useCombobox<Item>();\n\n useEffect(() => {\n setHasAddNew?.(true);\n\n return () => {\n setHasAddNew?.(false);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setOnSelectItemAddNew?.(() => onSelection);\n\n return () => {\n setOnSelectItemAddNew?.(undefined);\n };\n }, [setOnSelectItemAddNew, onSelection]);\n\n return !hasExactMatch ? (\n <ComboboxItem<Item>\n {...props}\n item={ADD_NEW as Item}\n index={items.length}\n />\n ) : null;\n};\n\n/**\n * ComboboxItemAddNew component for rendering an \"Add New\" option in a combobox\n *\n * Features:\n * - Allows users to add new items that don't exist in the list\n * - Integrates with combobox state management\n * - Supports custom layout with Flex props\n * - Handles selection callback for new item creation\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered \"Add New\" item or null\n *\n * @example\n * <ComboboxItemAddNew onSelection={(value) => createNewItem(value)}>\n * <Text>Add \"{inputValue}\" as new item</Text>\n * </ComboboxItemAddNew>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxItemAddNewElement = function <Item = any>(\n props: ComboboxItemAddNewProps<Item>,\n) {\n return <CoreComboboxItemAddNewElement {...props} />;\n};\n\n/**\n * ComboboxItemAddNew component for rendering an \"Add New\" option.\n *\n * Features:\n * - \"Add New\" option that appears when no exact match is found\n * - Customizable content rendering\n * - Callback when selected\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.ItemAddNew onSelection={(inputValue) => addNewItem(inputValue)}>\n * Add \"{inputValue}\" as new item\n * </Combobox.ItemAddNew>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxItemAddNew = function <Item = any>(\n props: ComboboxItemAddNewProps<Item>,\n) {\n const data = {\n item: \"add-new\",\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxItemAddNew\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return <ComboboxItemAddNewElement data-tracking-id={trackingId} {...props} />;\n};\n","import {\n useEffect,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { useCombobox } from \"./internal/ComboboxContext\";\n\nimport { Flex } from \"../Flex\";\nimport { Text } from \"../Text\";\nimport { Spinner } from \"../Spinner\";\n\nimport styles from \"./Combobox.module.scss\";\nimport listboxStyles from \"../Listbox/Listbox.module.scss\";\nimport listViewStyles from \"../ListView/ListView.module.scss\";\nimport { ComboboxSelectAll } from \"./internal/ComboboxSelectAll\";\nimport { useComboboxGroupContext } from \"./internal/ComboboxGroupContext\";\n\n/**\n * Props for the ComboboxList component\n */\nexport type ComboboxListProps = ComponentPropsWithoutRef<\"ul\" | \"div\"> & {\n children?: ReactNode;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxListElement = function <Item = any>({\n children,\n ...rest\n}: ComboboxListProps) {\n const {\n getMenuProps,\n multiple,\n items,\n hasAddNew = false,\n hasEmpty,\n loading,\n selectAll,\n listRef,\n } = useCombobox<Item>();\n const scrollSentinelRef = useRef<HTMLDivElement>(null);\n const [isScrolled, setIsScrolled] = useState(false);\n const { key: groupKey } = useComboboxGroupContext() ?? {};\n\n const isAGroup = !!groupKey;\n\n useEffect(() => {\n if (!scrollSentinelRef.current) return;\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (!entry.isIntersecting) {\n setIsScrolled(true);\n } else {\n setIsScrolled(false);\n }\n });\n },\n { threshold: 0 },\n );\n intersectionObserver.observe(scrollSentinelRef.current);\n return () => {\n intersectionObserver.disconnect();\n };\n }, [scrollSentinelRef, setIsScrolled]);\n\n if (isAGroup) {\n return <>{children}</>;\n }\n\n if (multiple) {\n return (\n <>\n <ul\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"ul\">)}\n ref={listRef as React.MutableRefObject<HTMLUListElement | null>}\n data-anv=\"combobox-list\"\n className={cx(styles[\"listview\"], listViewStyles[\"listview\"], {\n [styles.scrolled]: isScrolled,\n })}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n }}\n >\n <div ref={scrollSentinelRef} className={styles[\"scroll-sentinel\"]} />\n {!loading && selectAll && <ComboboxSelectAll />}\n {children}\n </ul>\n\n {loading ? (\n <div className={styles[\"empty\"]}>\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n </div>\n ) : !items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n } else {\n return (\n <>\n <ul\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"ul\">)}\n ref={listRef as React.MutableRefObject<HTMLUListElement | null>}\n data-anv=\"combobox-list\"\n className={listboxStyles[\"listbox\"]}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n }}\n >\n {children}\n </ul>\n\n {loading ? (\n <div className={styles[\"empty\"]}>\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n </div>\n ) : !items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n }\n};\n\n/**\n * ComboboxList component for rendering the list container of combobox items\n *\n * Features:\n * - Supports both single and multiple selection modes\n * - Automatically handles empty state with \"No match found\" message\n * - Shows loading spinner during async operations\n * - Integrates with combobox state management\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered combobox list container\n *\n * @example\n * <ComboboxList>\n * {items.map((item, index) => (\n * <ComboboxItem key={item.id} item={item} index={index}>\n * {item.name}\n * </ComboboxItem>\n * ))}\n * </ComboboxList>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxList = function <Item = any>({\n children,\n className,\n ...rest\n}: ComboboxListProps) {\n return (\n <ComboboxListElement<Item> className={className} {...rest}>\n {children}\n </ComboboxListElement>\n );\n};\n","import { ComboboxEmpty } from \"./ComboboxEmpty\";\nimport {\n ComboboxMultipleProps,\n ComboboxProps,\n ComboboxSingleProps,\n} from \"./ComboboxTypes\";\nimport { ComboboxSelect } from \"./ComboboxSelect\";\nimport { ComboboxContent } from \"./ComboboxContent\";\nimport { ComboboxSearchField, ComboboxSelectTrigger } from \"./ComboboxTrigger\";\nimport { ComboboxItem, ComboboxItemAddNew } from \"./ComboboxItem\";\nimport { ComboboxList } from \"./ComboboxList\";\nimport {\n ADD_NEW,\n getScrollParent,\n isMultiple,\n SELECT_ALL,\n} from \"./internal/ComboboxUtils\";\nimport {\n useDownshiftEnvironment,\n useLayoutPropsUtil,\n} from \"../../internal/hooks\";\nimport cx from \"classnames\";\nimport styles from \"./Combobox.module.scss\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useCombobox as useDownshiftCombobox,\n useMultipleSelection as useDownshiftMultipleSelection,\n UseComboboxReturnValue as UseDownshiftComboboxReturnValue,\n UseComboboxStateChangeTypes,\n} from \"downshift\";\nimport {\n defaultItemToString,\n defaultItemToKey,\n} from \"./internal/ComboboxUtils\";\nimport { useGroups } from \"./internal/useGroups\";\nimport { matchSorter } from \"match-sorter\";\nimport { ComboboxContext } from \"./internal/ComboboxContext\";\nimport Popover from \"../Popover\";\n\nconst DEBUG_STATE_REDUCERS = false;\n\nconst ComboboxSingle = function <Item>(props: ComboboxSingleProps<Item>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n disabled,\n readOnly,\n items: itemsProp,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n filterOptions,\n disableFilter = false,\n loading = false,\n minPopoverHeight,\n root,\n onInputValueChange,\n environment: environmentProp,\n groupBy,\n groupToString,\n groupSorter,\n ...rest\n } = componentProps;\n\n const ComboboxClassNames = cx(styles[\"combobox\"], className);\n const [items, setItems] = useState(itemsProp);\n const [hasAddNew, setHasAddNew] = useState(false);\n const [onSelectItemAddNew, setOnSelectItemAddNew] = useState<\n | ((\n inputValue: UseDownshiftComboboxReturnValue<Item>[\"inputValue\"],\n ) => void)\n | undefined\n >(undefined);\n const [hasExactMatch, setHasExactMatch] = useState(false);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState<\n Item[]\n >([]);\n const [, setForceClearInputValueOnSelectItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLDivElement | HTMLUListElement | null>(null);\n\n const handleOutsidePress = (_e: MouseEvent) => {\n if (disableCloseOnClickOutside) return;\n closeMenu();\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const { orderedItems: allItemsOrderedByGroup } = useGroups({\n items: itemsProp,\n groupBy,\n groupToString,\n groupSorter,\n });\n\n const { groups: searchedGroups, orderedItems: searchedItemsOrderedByGroup } =\n useGroups({\n items: items,\n groupBy,\n groupToString,\n groupSorter,\n });\n\n const showAddNew = hasAddNew && !hasExactMatch;\n const combinedItems = useMemo(\n () =>\n showAddNew\n ? [...searchedItemsOrderedByGroup, ADD_NEW as Item]\n : searchedItemsOrderedByGroup,\n [searchedItemsOrderedByGroup, showAddNew],\n );\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const {\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n setInputValue,\n inputValue,\n closeMenu,\n } = useDownshiftCombobox<Item>({\n ...rest,\n items: combinedItems,\n itemToString,\n itemToKey,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n // keep Combobox open onBlur, will call close using Popover's onOutsidePress\n case useDownshiftCombobox.stateChangeTypes.InputBlur:\n return {\n ...changes,\n isOpen: open != null ? open : true,\n highlightedIndex: state.highlightedIndex,\n };\n\n case useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter:\n case useDownshiftCombobox.stateChangeTypes.ItemClick:\n if (changes.selectedItem === ADD_NEW) {\n // if we're adding a new item, don't change the selectedItem\n // and just call the event handler\n // TODO: Figure out a way to do this without having side-effects in\n // the stateReducer\n const stateInputValue = state.inputValue;\n setTimeout(() => {\n onSelectItemAddNew?.(stateInputValue);\n }, 250); // setTimeout so we don't setState during render\n\n return {\n ...changes,\n selectedItem: state.selectedItem,\n inputValue: \"\",\n };\n } else {\n const forceClose = forceCloseOnSelectItems.includes(\n changes.selectedItem as Item,\n );\n\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : forceClose\n ? false\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? itemToString(state.selectedItem) === state.inputValue ||\n !state.inputValue\n ? state.highlightedIndex\n : 0\n : changes.highlightedIndex,\n };\n }\n\n // prevent this from closing the popover by default\n case useDownshiftCombobox.stateChangeTypes.InputClick:\n return { ...changes, isOpen: open != null ? open : true };\n\n default:\n return changes;\n }\n },\n onInputValueChange:\n onInputValueChange ??\n (({ inputValue, type, selectedItem }) => {\n const inputValueMatchesSelectedItem =\n selectedItem != null && inputValue === itemToString(selectedItem);\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (\n type === useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter ||\n type === useDownshiftCombobox.stateChangeTypes.ItemClick\n ) {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n } else if (\n !inputValueMatchesSelectedItem &&\n !inputValueIsEmpty &&\n !disableFilter\n ) {\n const filteredItems = matchSorter(\n allItemsOrderedByGroup,\n inputValue,\n filterOptions,\n );\n setItems(filteredItems);\n setHasExactMatch(\n matchSorter(filteredItems, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n }\n }),\n onSelectedItemChange(changes) {\n const { selectedItem } = changes;\n\n if (onChange != null)\n onChange(selectedItem != null ? selectedItem : null);\n },\n onIsOpenChange({ isOpen, inputValue, selectedItem }) {\n if (isOpen === false) {\n // reset the filtering whenever we close the dropdown\n // Delaying input reset timing to be after Popover close to avoid\n // list showing full version for a split second before closing\n setTimeout(() => {\n setItems(allItemsOrderedByGroup);\n\n if (inputValue === \"\") {\n // special case: if the search field is empty, remove the selected item\n selectItem(null);\n } else {\n // otherwise, force the text to match the selected item\n\n setInputValue(\n selectedItem != null ? itemToString(selectedItem) : \"\",\n );\n }\n }, 200);\n }\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n });\n\n // prevent prop sync useEffects from running on intiial render\n const firstRenderRef = useRef(true);\n useEffect(() => {\n if (firstRenderRef.current === true) {\n firstRenderRef.current = false;\n }\n }, []);\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n // synchronize filtering state when \"items\" prop changes\n useEffect(() => {\n if (firstRenderRef.current) return;\n\n const inputValueMatchesSelectedItem =\n selectedItem != null && inputValue === itemToString(selectedItem);\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n // When dropdown is closed, sync inputValue with controlled selectedItem\n if (!isOpen && selectedItem != null && !inputValueMatchesSelectedItem) {\n setInputValue(itemToString(selectedItem));\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n return;\n }\n\n if (!isOpen && selectedItem == null && !inputValueIsEmpty) {\n setInputValue(\"\");\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n return;\n }\n\n // Handle filtering when user is typing\n if (\n !inputValueMatchesSelectedItem &&\n !inputValueIsEmpty &&\n !disableFilter\n ) {\n const filteredItems = matchSorter(\n allItemsOrderedByGroup,\n inputValue,\n filterOptions,\n );\n setItems(filteredItems);\n setHasExactMatch(\n matchSorter(filteredItems, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allItemsOrderedByGroup, selectedItem, inputValue, isOpen]);\n\n const contextValue = useMemo(\n () => ({\n multiple: false,\n select: false,\n items: searchedItemsOrderedByGroup,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems: [],\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n getSelectedItemProps: undefined,\n getDropdownProps: undefined,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n hasAddNew,\n setHasAddNew,\n onSelectItemAddNew,\n setOnSelectItemAddNew,\n hasExactMatch,\n setHasExactMatch,\n loading,\n referenceRef,\n contentRef,\n listRef,\n closeMenu,\n groupBy,\n groupToString,\n groups: searchedGroups,\n }),\n [\n searchedItemsOrderedByGroup,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n hasAddNew,\n setHasAddNew,\n onSelectItemAddNew,\n setOnSelectItemAddNew,\n hasExactMatch,\n setHasExactMatch,\n loading,\n referenceRef,\n contentRef,\n listRef,\n closeMenu,\n groupBy,\n groupToString,\n searchedGroups,\n ],\n );\n\n return (\n <ComboboxContext.Provider value={contextValue}>\n <div\n className={ComboboxClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n open={isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onClickOutside={handleOutsidePress}\n minHeight={minPopoverHeight}\n >\n {children}\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n};\n\nconst ComboboxMultiple = function <Item>(props: ComboboxMultipleProps<Item>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n items: itemsProp,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n onSelectedItemsChange,\n onStateChange,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n disableClearInputValueOnSelectItem = false,\n filterOptions,\n disableFilter = false,\n loading = false,\n minPopoverHeight,\n root,\n disabled,\n readOnly,\n stateReducer: _,\n onInputValueChange,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp,\n selectAll,\n groupBy,\n groupToString,\n ...rest\n } = componentProps;\n\n const ComboboxClassNames = cx(styles[\"combobox\"], className);\n const [items, setItems] = useState(itemsProp);\n const [hasAddNew, setHasAddNew] = useState(false);\n const [onSelectItemAddNew, setOnSelectItemAddNew] = useState<\n | ((\n inputValue: UseDownshiftComboboxReturnValue<Item>[\"inputValue\"],\n ) => void)\n | undefined\n >(undefined);\n const [hasExactMatch, setHasExactMatch] = useState(false);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState<\n Item[]\n >([]);\n const [\n forceClearInputValueOnSelectItems,\n setForceClearInputValueOnSelectItems,\n ] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n // Downshift's useCombobox and useMultipleSelection have a kinda sorta\n // circular dependency, so storing setInputValue here to allow setting the\n // inputValue in the useMultipleSelection change handlers\n let storedSetInputValue: ((inputValue: string) => void) | undefined =\n undefined;\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLDivElement | HTMLUListElement | null>(null);\n const handleOutsidePress = (_e: MouseEvent) => {\n if (disableCloseOnClickOutside) return;\n closeMenu();\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const { orderedItems: allItemsOrderedByGroup } = useGroups({\n items: itemsProp,\n groupBy,\n groupToString,\n });\n\n const { groups: searchedGroups, orderedItems: searchedItemsOrderedByGroup } =\n useGroups({\n items: items,\n groupBy,\n groupToString,\n });\n\n const showAddNew = hasAddNew && !hasExactMatch;\n const combinedItems = useMemo(() => {\n let items = searchedItemsOrderedByGroup;\n if (showAddNew) {\n items = [...items, ADD_NEW as Item];\n }\n if (selectAll) {\n items = [SELECT_ALL as Item, ...items];\n }\n return items;\n }, [searchedItemsOrderedByGroup, showAddNew, selectAll]);\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const {\n getSelectedItemProps,\n getDropdownProps,\n reset,\n selectedItems,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n } = useDownshiftMultipleSelection<Item>({\n itemToKey,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp ?? environment,\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n // the Chip itself will handle \"Backspace\" and \"Delete\"\n // just return previous state\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownBackspace:\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownDelete:\n return state;\n\n case useDownshiftMultipleSelection.stateChangeTypes\n .FunctionRemoveSelectedItem:\n return { ...changes, activeIndex: -1 };\n\n case useDownshiftMultipleSelection.stateChangeTypes.FunctionReset:\n return { ...changes, selectedItems: [] };\n\n default:\n return changes;\n }\n },\n onStateChange(changes) {\n const { type } = changes;\n\n switch (type) {\n case useDownshiftMultipleSelection.stateChangeTypes.FunctionReset:\n storedSetInputValue?.(\"\");\n break;\n }\n\n onStateChange?.(changes);\n },\n onSelectedItemsChange(changes) {\n const { selectedItems } = changes;\n if (onChange != null) onChange(selectedItems);\n if (onSelectedItemsChange != null) onSelectedItemsChange(changes);\n },\n });\n\n const {\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n setInputValue,\n inputValue,\n closeMenu,\n } = useDownshiftCombobox<Item>({\n ...rest,\n items: combinedItems,\n itemToString,\n itemToKey,\n selectedItem: null,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n // keep Combobox open onBlur, will call close using Popover's onOutsidePress\n case useDownshiftCombobox.stateChangeTypes.InputBlur:\n return {\n ...changes,\n inputValue: state.inputValue,\n selectedItem: null,\n isOpen: open != null ? open : true,\n highlightedIndex: state.highlightedIndex,\n };\n\n case useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter:\n case useDownshiftCombobox.stateChangeTypes.ItemClick:\n if (changes.selectedItem === ADD_NEW) {\n // if we're adding a new item, don't change the selectedItem\n // and just call the event handler\n // TODO: Figure out a way to do this without having side-effects in\n // the stateReducer\n const stateInputValue = state.inputValue;\n setTimeout(() => {\n onSelectItemAddNew?.(stateInputValue);\n }, 250); // setTimeout so we don't setState during render\n\n return {\n ...changes,\n selectedItem: state.selectedItem,\n inputValue: \"\",\n };\n } else if (changes.selectedItem === SELECT_ALL) {\n selectAll?.onSelection();\n return {\n ...changes,\n selectedItem: null,\n };\n } else {\n const forceClose = forceCloseOnSelectItems.includes(\n changes.selectedItem as Item,\n );\n const forceClearInputValue =\n forceClearInputValueOnSelectItems.includes(\n changes.selectedItem as Item,\n );\n\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : forceClose\n ? false\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: forceClearInputValue\n ? 0\n : disableCloseOnSelectItem\n ? disableClearInputValueOnSelectItem || !state.inputValue\n ? state.highlightedIndex\n : 0\n : changes.highlightedIndex,\n inputValue: forceClearInputValue\n ? \"\"\n : disableClearInputValueOnSelectItem\n ? state.inputValue\n : \"\",\n };\n }\n\n // prevent this from closing the popover by default\n case useDownshiftCombobox.stateChangeTypes.InputClick:\n return { ...changes, isOpen: open != null ? open : true };\n\n // prevent this from clearing the input value by default\n case useDownshiftCombobox.stateChangeTypes\n .ControlledPropUpdatedSelectedItem:\n return { ...changes, inputValue: state.inputValue };\n\n default:\n return changes;\n }\n },\n onStateChange(changes) {\n const { type, selectedItem: newSelectedItem } = changes;\n\n switch (type) {\n case useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter:\n case useDownshiftCombobox.stateChangeTypes.ItemClick:\n case useDownshiftCombobox.stateChangeTypes.InputBlur:\n if (newSelectedItem != null) {\n const itemAlreadySelected = selectedItems.some(\n (item) => itemToKey(item) === itemToKey(newSelectedItem),\n );\n\n if (itemAlreadySelected) {\n removeSelectedItem(newSelectedItem);\n } else {\n addSelectedItem(newSelectedItem);\n }\n }\n break;\n\n default:\n break;\n }\n\n onStateChange?.(changes);\n },\n onInputValueChange:\n onInputValueChange ??\n (({ inputValue, ...changes }) => {\n const { type, selectedItem } = changes;\n\n const inputValueMatchesSelectedItem =\n selectedItem != null && inputValue === itemToString(selectedItem);\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (\n type === useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter ||\n type === useDownshiftCombobox.stateChangeTypes.ItemClick\n ) {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n } else if (\n !inputValueMatchesSelectedItem &&\n !inputValueIsEmpty &&\n !disableFilter\n ) {\n const filteredItems = matchSorter(\n allItemsOrderedByGroup,\n inputValue,\n filterOptions,\n );\n setItems(filteredItems);\n setHasExactMatch(\n matchSorter(filteredItems, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n }\n }),\n onIsOpenChange({ isOpen }) {\n if (isOpen === false) {\n // Delaying input reset timing to be after Popover close to avoid\n // list showing full version for a split second before closing\n setTimeout(() => {\n setInputValue(\"\");\n\n setItems(allItemsOrderedByGroup);\n }, 200);\n }\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n onHighlightedIndexChange(changes) {\n if (\n selectAll &&\n changes.highlightedIndex === 0 &&\n (\n [\n useDownshiftCombobox.stateChangeTypes.InputKeyDownHome,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownEnd,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownArrowDown,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownArrowUp,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownPageDown,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownPageUp,\n ] as UseComboboxStateChangeTypes[]\n ).includes(changes.type) &&\n listRef.current\n ) {\n // Scroll to the top of the list when select all is highlighted\n const scrollParent = getScrollParent(listRef.current);\n if (scrollParent) {\n scrollParent.scrollTop = 0;\n }\n }\n },\n });\n\n // Now that useDownshiftCombobox has returned the setInputValue function,\n // we can store it here to call later inside of useDownshiftMultipleSelection\n storedSetInputValue = setInputValue;\n\n // prevent prop sync useEffects from running on intiial render\n const firstRenderRef = useRef(true);\n useEffect(() => {\n if (firstRenderRef.current === true) {\n firstRenderRef.current = false;\n }\n }, []);\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n // synchronize filtering state when \"items\" prop changes\n useEffect(() => {\n if (firstRenderRef.current) return;\n\n setTimeout(() => {\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (!inputValueIsEmpty && !disableFilter) {\n const filteredItems = matchSorter(itemsProp, inputValue, filterOptions);\n setItems(filteredItems);\n setHasExactMatch(\n matchSorter(filteredItems, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(itemsProp);\n setHasExactMatch(true);\n }\n }, 200);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [itemsProp]);\n\n const contextValue = useMemo(\n () => ({\n multiple: true,\n select: false,\n items: combinedItems,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n hasAddNew,\n setHasAddNew,\n onSelectItemAddNew,\n setOnSelectItemAddNew,\n hasExactMatch,\n setHasExactMatch,\n loading,\n referenceRef,\n contentRef,\n listRef,\n closeMenu,\n groupBy,\n groupToString,\n groups: searchedGroups,\n selectAll,\n }),\n [\n combinedItems,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n hasAddNew,\n setHasAddNew,\n onSelectItemAddNew,\n setOnSelectItemAddNew,\n hasExactMatch,\n setHasExactMatch,\n loading,\n referenceRef,\n contentRef,\n listRef,\n closeMenu,\n groupBy,\n groupToString,\n searchedGroups,\n selectAll,\n ],\n );\n\n return (\n <ComboboxContext.Provider value={contextValue}>\n <div\n className={ComboboxClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n open={!isDisabled && isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onClickOutside={handleOutsidePress}\n minHeight={minPopoverHeight}\n >\n {children}\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n};\n\n// multi-select and single-select need to be separate components because\n// we can't call hooks conditionally\nexport const ComboboxElement = function <Item>(props: ComboboxProps<Item>) {\n if (isMultiple(props)) {\n return <ComboboxMultiple<Item> {...props} />;\n } else {\n return <ComboboxSingle<Item> {...props} />;\n }\n};\n\n/**\n * Combobox component for selecting items with search and filtering capabilities.\n *\n * Features:\n * - Single and multiple item selection\n * - Search and filtering with configurable options\n * - Optional \"Add New\" item functionality\n * - Grouping support with custom group labels and sorting\n * - Loading states with spinner indicators\n * - Disabled and read-only states\n * - Customizable popover behavior and positioning\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox\n * items={items}\n * itemToString={(item) => item.name}\n * onChange={setSelectedItem}\n * filterOptions={{ keys: [\"name\"] }}\n * >\n * <Combobox.SearchField label=\"Select an item\" />\n * <Combobox.Content>\n * {({ items }) => (\n * <Combobox.List>\n * {items.map((item, i) => (\n * <Combobox.Item key={item.id} item={item} index={i}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n * )}\n * </Combobox.Content>\n * </Combobox>\n */\nexport const Combobox = Object.assign(ComboboxElement, {\n /**\n * ComboboxSelect component for selecting items from a predefined list.\n *\n * Features:\n * - Single and multiple item selection from predefined options\n * - Dropdown-style selection interface\n * - Grouping support with custom group labels and sorting\n * - Loading states with spinner indicators\n * - Disabled and read-only states\n * - Customizable popover behavior and positioning\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Select\n * items={items}\n * itemToString={(item) => item.name}\n * onChange={setSelectedItem}\n * >\n * <Combobox.SelectTrigger label=\"Select an item\" />\n * <Combobox.Content>\n * {({ items }) => (\n * <Combobox.List>\n * {items.map((item, i) => (\n * <Combobox.Item key={item.id} item={item} index={i}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n * )}\n * </Combobox.Content>\n * </Combobox.Select>\n */\n Select: ComboboxSelect,\n /**\n * ComboboxSearchField component for the search input field.\n *\n * Features:\n * - Search input with clear button functionality\n * - Supports multiple selection with chip display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n * - Enhanced prefix support for icons and avatars\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.SearchField\n * label=\"Search users\"\n * placeholder=\"Type to search...\"\n * prefix={{ icon: { svg: SearchIcon } }}\n * />\n */\n SearchField: ComboboxSearchField,\n /**\n * ComboboxSelectTrigger component for the select trigger field.\n *\n * Features:\n * - Select input with dropdown trigger\n * - Supports single selection display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n * - Enhanced prefix support for icons and avatars\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.SelectTrigger\n * label=\"Select user\"\n * placeholder=\"Choose a user...\"\n * prefix={{ avatar: { name: \"User\" } }}\n * />\n */\n SelectTrigger: ComboboxSelectTrigger,\n /**\n * ComboboxContent component for rendering the content area of a combobox.\n *\n * Features:\n * - Supports both popover and inline rendering modes\n * - Provides render props pattern for flexible content rendering\n * - Handles grouped items with proper ARIA labels\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events for popover behavior\n *\n * @example\n * <Combobox.Content>\n * {({ items }) => (\n * <Combobox.List>\n * {items.map((item, index) => (\n * <Combobox.Item key={item.id} item={item} index={index}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n * )}\n * </Combobox.Content>\n */\n Content: ComboboxContent,\n /**\n * ComboboxList component for rendering the list of items.\n *\n * Features:\n * - Renders list of items with proper accessibility\n * - Supports both single and multiple selection modes\n * - Loading state with spinner\n * - Empty state handling\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.List>\n * {items.map((item, i) => (\n * <Combobox.Item key={item.id} item={item} index={i}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n */\n List: ComboboxList,\n /**\n * ComboboxItem component for rendering individual items in the list.\n *\n * Features:\n * - Individual item rendering with proper accessibility\n * - Support for disabled state\n * - Custom content rendering\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Item item={item} index={index}>\n * <Flex direction=\"column\">\n * <Text>{item.name}</Text>\n * <Text size=\"small\" subdued>{item.description}</Text>\n * </Flex>\n * </Combobox.Item>\n */\n Item: ComboboxItem,\n /**\n * ComboboxItemAddNew component for rendering an \"Add New\" option.\n *\n * Features:\n * - \"Add New\" option that appears when no exact match is found\n * - Customizable content rendering\n * - Callback when selected\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.ItemAddNew onSelection={(inputValue) => addNewItem(inputValue)}>\n * Add \"{inputValue}\" as new item\n * </Combobox.ItemAddNew>\n */\n ItemAddNew: ComboboxItemAddNew,\n /**\n * ComboboxEmpty component for rendering content when no items are available.\n *\n * Features:\n * - Renders content when list is empty\n * - Customizable empty state message\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Empty>\n * <Text>No items found. Try adjusting your search.</Text>\n * </Combobox.Empty>\n */\n Empty: ComboboxEmpty,\n});\n"],"names":["orderedItems","groups","useDownshiftSelect","selectedItem","useDownshiftMultipleSelection","selectedItems","Icon","CheckboxIndeterminate","CheckboxChecked","CheckboxOutline","items","Check","useDownshiftCombobox","inputValue","isOpen"],"mappings":"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"}
1
+ {"version":3,"file":"Combobox-OUK7p5gp.js","sources":["../src/components/Combobox/internal/ComboboxContext.ts","../src/components/Combobox/ComboboxEmpty.tsx","../src/components/Combobox/internal/useGroups.tsx","../src/components/Combobox/ComboboxSelect.tsx","../src/components/Combobox/internal/ComboboxItemVisual.tsx","../src/components/Combobox/internal/ComboboxSelectAll.tsx","../src/components/Combobox/internal/ComboboxGroupContext.tsx","../src/components/Combobox/internal/ComboboxGroupList.tsx","../src/components/Combobox/internal/ComboboxGroupProvider.tsx","../src/components/Combobox/ComboboxContent.tsx","../src/components/Combobox/ComboboxTrigger.tsx","../src/components/Combobox/ComboboxItem.tsx","../src/components/Combobox/ComboboxList.tsx","../src/components/Combobox/Combobox.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { ComboboxContextProps } from \"../ComboboxTypes\";\n\nexport const ComboboxContext = createContext<ComboboxContextProps | null>(null);\n\n/**\n * Hook to access the Combobox context\n * @returns The Combobox context value\n * @throws Error if used outside of a Combobox component\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const useCombobox = function <Item = any>() {\n const context = useContext<ComboboxContextProps<Item> | null>(\n ComboboxContext,\n );\n if (context == null) {\n throw new Error(\"useCombobox must be wrapped in <Combobox />\");\n }\n return context;\n};\n","import { useEffect, type ReactNode } from \"react\";\n\nimport { useCombobox } from \"./internal/ComboboxContext\";\n\n/**\n * Props for the ComboboxEmpty component\n */\nexport type ComboboxEmptyProps = {\n children?: ReactNode;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxEmptyElement = function <Item = any>({\n children,\n}: ComboboxEmptyProps) {\n const { items, setHasEmpty } = useCombobox<Item>();\n\n useEffect(() => {\n setHasEmpty?.(true);\n\n return () => {\n setHasEmpty?.(false);\n };\n });\n\n return !items.length ? children : null;\n};\n\n/**\n * ComboboxEmpty component for rendering content when no items are available\n *\n * Features:\n * - Only renders children when the combobox has no items\n * - Integrates with combobox state management\n * - Automatically manages empty state visibility\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns The children when no items are available, or null\n *\n * @example\n * <ComboboxEmpty>\n * <Text>No items found. Try a different search term.</Text>\n * </ComboboxEmpty>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxEmpty = function <Item = any>({\n children,\n}: ComboboxEmptyProps) {\n return <ComboboxEmptyElement<Item>>{children}</ComboboxEmptyElement>;\n};\n","import { useMemo } from \"react\";\nimport { ComboboxGroupByValue } from \"./ComboboxGroupContext\";\n\nexport function useGroups<Item>({\n items,\n groupBy,\n groupToString,\n groupSorter = (a, b) => `${a}`.localeCompare(`${b}`),\n}: {\n items: Item[];\n groupBy?: string;\n groupToString?: (key: string) => string | null;\n groupSorter?: (a: ComboboxGroupByValue, b: ComboboxGroupByValue) => number;\n}) {\n const { groups, orderedItems } = useMemo(() => {\n if (!groupBy) return { groups: [], orderedItems: items };\n const groupsSansItems: {\n key: ComboboxGroupByValue;\n label: string | null;\n }[] = []; // { key: \"strawberry\", label: \"Strawberry\" }\n const groupedItems: Record<ComboboxGroupByValue, Item[]> = {}; // { strawberry: [] }\n\n items.forEach((item) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const groupKey = (item as Record<string, any>)[groupBy];\n if (!groupedItems[groupKey]) {\n groupedItems[groupKey] = [];\n }\n groupedItems[groupKey].push(item);\n });\n\n Object.keys(groupedItems).forEach((key) => {\n groupsSansItems.push({\n key,\n label: groupToString ? groupToString?.(key) : key,\n });\n });\n\n // Sort groups\n // Yes, this is mutative. We'll survive.\n groupsSansItems.sort((a, b) => groupSorter(a.key, b.key));\n\n const orderedItems = [] as Item[];\n // [{ key: \"strawberry\", label: \"Strawberry\", items: [{...}, {...}, {...}] }]\n const groups = groupsSansItems.map((group) => ({\n ...group,\n items: groupedItems[group.key].map((item) => {\n orderedItems.push(item);\n return item;\n }),\n }));\n\n return { groups, orderedItems };\n }, [groupBy, groupSorter, groupToString, items]);\n\n return { groups, orderedItems };\n}\n","import {\n useDownshiftEnvironment,\n useLayoutPropsUtil,\n} from \"../../internal/hooks\";\nimport Popover from \"../Popover\";\nimport {\n ComboboxSelectProps,\n SelectMultipleProps,\n SelectSingleProps,\n} from \"./ComboboxTypes\";\nimport { ComboboxContext } from \"./internal/ComboboxContext\";\nimport {\n defaultItemToKey,\n defaultItemToString,\n getScrollParent,\n isMultiple,\n SELECT_ALL,\n} from \"./internal/ComboboxUtils\";\nimport cx from \"classnames\";\nimport styles from \"./Combobox.module.scss\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useGroups } from \"./internal/useGroups\";\nimport {\n useMultipleSelection as useDownshiftMultipleSelection,\n useSelect as useDownshiftSelect,\n UseSelectStateChangeTypes,\n} from \"downshift\";\n\nconst DEBUG_STATE_REDUCERS = false;\n\n/**\n * NOTE: There is a lot of duplicated code here! Here's a list of the /actual/\n * differences between select-only and regular combobox to help with\n * refactoring this later!\n *\n * 1) Using Downshift's `useSelect` hook instead of `useCombobox`\n * - Swapping out the stateChangeTypes for their equivalents\n * 2) Since there's no input, we don't need to passthrough `getInputProps`\n * 3) Since we don't do any sorting or filtering, we can remove:\n * - onInputValueChange function and prop\n * - setInputValue function\n * - onIsOpenChange function\n * - filterOptions prop\n * - internal `items` state and useEffect to keep it in sync\n * - useEffect to track first render\n * 4) Multiple-specific\n * - Remove `disableClearInputValueOnSelectItem` prop\n * - No need to store `setInputValue` function\n * - Remove all state reducer references to `inputValue`\n * - Remove `onStateChange` function from `useMultipleSelection`\n */\n\nexport const SelectSingle = function <Item>(props: SelectSingleProps<Item>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n disabled,\n readOnly,\n items,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n disableClearSelection = false,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n loading = false,\n minPopoverHeight,\n root,\n environment: environmentProp,\n groupBy,\n groupToString,\n ...rest\n } = componentProps;\n\n const ComboboxClassNames = cx(styles[\"combobox\"], className);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState<\n Item[]\n >([]);\n const [, setForceClearInputValueOnSelectItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLDivElement | HTMLUListElement | null>(null);\n const handleOutsidePress = (_e: MouseEvent) => {\n if (disableCloseOnClickOutside) return;\n closeMenu();\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const { groups, orderedItems } = useGroups({\n items,\n groupBy,\n groupToString,\n });\n\n const {\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n inputValue,\n closeMenu,\n } = useDownshiftSelect<Item>({\n ...rest,\n items: orderedItems,\n itemToString,\n itemToKey,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n case useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useDownshiftSelect.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : forceCloseOnSelectItems.includes(changes.selectedItem as Item)\n ? false\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? state.highlightedIndex\n : changes.highlightedIndex,\n };\n default:\n return changes;\n }\n },\n onSelectedItemChange(changes) {\n const { selectedItem } = changes;\n\n if (onChange != null)\n onChange(selectedItem != null ? selectedItem : null);\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n });\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n return (\n <ComboboxContext.Provider\n value={{\n multiple: false,\n select: true,\n disableClearSelection,\n items: orderedItems,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems: [],\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n loading,\n referenceRef,\n contentRef,\n closeMenu,\n groups,\n groupBy,\n groupToString,\n listRef,\n }}\n >\n <div\n className={ComboboxClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n open={isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onClickOutside={handleOutsidePress}\n minHeight={minPopoverHeight}\n >\n {children}\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n};\n\nconst SelectMultiple = function <Item>(props: SelectMultipleProps<Item>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n items,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n onSelectedItemsChange,\n onStateChange,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n loading = false,\n minPopoverHeight,\n root,\n disabled,\n readOnly,\n stateReducer: _,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp,\n groupBy,\n groupToString,\n selectAll,\n ...rest\n } = componentProps;\n\n const ComboboxClassNames = cx(styles[\"combobox\"], className);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState<\n Item[]\n >([]);\n const [, setForceClearInputValueOnSelectItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLDivElement | HTMLUListElement | null>(null);\n\n const handleOutsidePress = (_e: MouseEvent) => {\n if (disableCloseOnClickOutside) return;\n closeMenu();\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const { groups, orderedItems: orderedItemsBase } = useGroups({\n items,\n groupBy,\n groupToString,\n });\n\n const orderedItems = selectAll\n ? [SELECT_ALL as Item, ...orderedItemsBase]\n : orderedItemsBase;\n\n const {\n getSelectedItemProps,\n getDropdownProps,\n reset,\n selectedItems,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n } = useDownshiftMultipleSelection<Item>({\n itemToKey,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp ?? environment,\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n // the Chip itself will handle \"Backspace\" and \"Delete\"\n // just return previous state\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownBackspace:\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownDelete:\n return state;\n\n case useDownshiftMultipleSelection.stateChangeTypes\n .FunctionRemoveSelectedItem:\n return { ...changes, activeIndex: -1 };\n\n case useDownshiftMultipleSelection.stateChangeTypes.FunctionReset:\n return { ...changes, selectedItems: [] };\n\n default:\n return changes;\n }\n },\n onStateChange,\n onSelectedItemsChange(changes) {\n const { selectedItems } = changes;\n if (onChange != null) onChange(selectedItems);\n if (onSelectedItemsChange != null) onSelectedItemsChange(changes);\n },\n });\n\n const {\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n inputValue,\n closeMenu,\n } = useDownshiftSelect<Item>({\n ...rest,\n items: orderedItems,\n itemToString,\n itemToKey,\n selectedItem: null,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n case useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useDownshiftSelect.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : forceCloseOnSelectItems.includes(changes.selectedItem as Item)\n ? false\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? state.highlightedIndex\n : changes.highlightedIndex,\n };\n\n default:\n return changes;\n }\n },\n onStateChange(changes) {\n const { type, selectedItem: newSelectedItem } = changes;\n\n switch (type) {\n case useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useDownshiftSelect.stateChangeTypes.ItemClick:\n case useDownshiftSelect.stateChangeTypes.ToggleButtonBlur:\n if (changes.selectedItem === SELECT_ALL) {\n selectAll?.onSelection();\n return {\n ...changes,\n selectedItem: null,\n };\n }\n if (newSelectedItem != null) {\n const itemAlreadySelected = selectedItems.some(\n (item) => itemToKey(item) === itemToKey(newSelectedItem),\n );\n\n if (itemAlreadySelected) {\n removeSelectedItem(newSelectedItem);\n } else {\n addSelectedItem(newSelectedItem);\n }\n }\n break;\n\n default:\n break;\n }\n\n onStateChange?.(changes);\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n onHighlightedIndexChange(changes) {\n if (\n selectAll &&\n changes.highlightedIndex === 0 &&\n (\n [\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownArrowDown,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownArrowUp,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownPageDown,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownPageUp,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownHome,\n useDownshiftSelect.stateChangeTypes.ToggleButtonKeyDownEnd,\n ] as UseSelectStateChangeTypes[]\n ).includes(changes.type) &&\n listRef.current\n ) {\n // Scroll to the top of the list when select all is highlighted\n const scrollParent = getScrollParent(listRef.current);\n if (scrollParent) {\n scrollParent.scrollTop = 0;\n }\n }\n },\n });\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n return (\n <ComboboxContext.Provider\n value={{\n multiple: true,\n select: true,\n items: orderedItems,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n loading,\n referenceRef,\n contentRef,\n closeMenu,\n groupBy,\n groupToString,\n groups,\n listRef,\n selectAll,\n }}\n >\n <div\n className={ComboboxClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n open={!isDisabled && isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onClickOutside={handleOutsidePress}\n minHeight={minPopoverHeight}\n >\n {children}\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n};\n\n/**\n * ComboboxSelect component for selecting items from a predefined list.\n *\n * Features:\n * - Single and multiple item selection from predefined options\n * - Dropdown-style selection interface\n * - Grouping support with custom group labels and sorting\n * - Loading states with spinner indicators\n * - Disabled and read-only states\n * - Customizable popover behavior and positioning\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Select\n * items={items}\n * itemToString={(item) => item.name}\n * onChange={setSelectedItem}\n * >\n * <Combobox.SelectTrigger label=\"Select an item\" />\n * <Combobox.Content>\n * {({ items }) => (\n * <Combobox.List>\n * {items.map((item, i) => (\n * <Combobox.Item key={item.id} item={item} index={i}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n * )}\n * </Combobox.Content>\n * </Combobox.Select>\n */\n\nexport const ComboboxSelect = function <Item>(\n props: ComboboxSelectProps<Item>,\n) {\n if (isMultiple(props)) {\n return <SelectMultiple<Item> {...props} />;\n } else {\n return <SelectSingle<Item> {...props} />;\n }\n};\n","import { forwardRef, ReactNode } from \"react\";\nimport cx from \"classnames\";\n\nimport { Icon } from \"../../Icon\";\nimport { Flex, FlexProps } from \"../../Flex\";\n\nimport styles from \"../Combobox.module.scss\";\nimport listViewStyles from \"../../ListView/ListView.module.scss\";\nimport checkboxStyles from \"../../Checkbox/Checkbox.module.scss\";\nimport CheckboxOutline from \"@servicetitan/hammer-icon/mdi/round/check_box_outline_blank.svg\";\nimport CheckboxChecked from \"@servicetitan/hammer-icon/mdi/round/check_box.svg\";\nimport CheckboxIndeterminate from \"@servicetitan/hammer-icon/mdi/round/indeterminate_check_box.svg\";\nimport { PassThroughProps } from \"../../../types\";\n\nexport type ComboboxItemVisualProps = {\n children: ReactNode;\n rootDivProps: PassThroughProps<\"div\">;\n disabled: boolean;\n checked: boolean;\n hideCheckbox: boolean;\n flexProps?: FlexProps;\n};\n\nexport const ComboboxItemVisual = forwardRef(\n (\n {\n children,\n disabled,\n checked,\n hideCheckbox,\n rootDivProps,\n flexProps,\n }: ComboboxItemVisualProps,\n ref: React.ForwardedRef<HTMLDivElement>,\n ) => {\n return (\n <div\n ref={ref}\n data-anv=\"combobox-item\"\n {...rootDivProps}\n className={cx(\n styles[\"listview-option\"],\n listViewStyles[\"listview-option\"],\n rootDivProps.className,\n )}\n >\n {!hideCheckbox ? (\n <div className={cx(styles[\"cell\"], listViewStyles[\"cell\"])}>\n <div className={checkboxStyles[\"wrapper\"]}>\n <div className={checkboxStyles[\"checkbox\"]}>\n <input\n type=\"checkbox\"\n checked={checked}\n aria-checked={checked}\n aria-label=\"Select\"\n readOnly\n tabIndex={-1}\n {...(disabled ? { disabled: true } : {})}\n />\n\n <span className={checkboxStyles[\"icon-wrapper\"]} aria-hidden>\n <Icon\n size=\"large\"\n svg={CheckboxIndeterminate}\n className={checkboxStyles[\"icon-indeterminate\"]}\n />\n\n <Icon\n size=\"large\"\n svg={CheckboxChecked}\n className={checkboxStyles[\"icon-checked\"]}\n />\n\n <Icon\n size=\"large\"\n svg={CheckboxOutline}\n className={checkboxStyles[\"icon-unchecked\"]}\n />\n </span>\n\n <span aria-hidden></span>\n </div>\n </div>\n </div>\n ) : null}\n <Flex grow={1} shrink={1} {...flexProps}>\n {children}\n </Flex>\n </div>\n );\n },\n);\n\nComboboxItemVisual.displayName = \"ComboboxItemVisual\";\n","import { SELECT_ALL } from \"./ComboboxUtils\";\nimport { ComboboxItemVisual } from \"./ComboboxItemVisual\";\nimport { useEffect, useRef } from \"react\";\nimport { useCombobox } from \"./ComboboxContext\";\nimport styles from \"../Combobox.module.scss\";\nimport cx from \"classnames\";\n\nconst ComboboxSelectAll = function ({ className }: { className?: string }) {\n const {\n getItemProps,\n setForceCloseOnSelectItems,\n highlightedIndex,\n items,\n selectAll,\n } = useCombobox();\n\n const item = SELECT_ALL;\n const index = items.indexOf(item);\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n return () => {\n setForceCloseOnSelectItems((forceCloseOnSelectItems) => {\n if (forceCloseOnSelectItems.includes(item)) {\n return forceCloseOnSelectItems.filter(\n (prevItem) => prevItem !== item,\n );\n } else {\n return forceCloseOnSelectItems;\n }\n });\n };\n }, [item, setForceCloseOnSelectItems]);\n\n return (\n <ComboboxItemVisual\n key=\"select-all\"\n ref={ref}\n rootDivProps={getItemProps({\n item: SELECT_ALL,\n index,\n \"aria-selected\": highlightedIndex === index,\n className: cx(styles[\"select-all\"], className),\n })}\n hideCheckbox={false}\n disabled={false}\n checked={!!selectAll?.isChecked}\n >\n {selectAll?.label}\n </ComboboxItemVisual>\n );\n};\n\nexport { ComboboxSelectAll };\n","import { createContext, useContext } from \"react\";\n\nexport type ComboboxGroupByValue = string | number;\n\nexport type ComboboxGroupContextType = {\n key: ComboboxGroupByValue;\n label: string | null;\n} | null;\n\nexport const ComboboxGroupContext =\n createContext<ComboboxGroupContextType>(null);\n\nexport const useComboboxGroupContext = () => useContext(ComboboxGroupContext);\n","import {\n useEffect,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { useCombobox } from \"./ComboboxContext\";\n\nimport { Flex } from \"../../Flex\";\nimport { Text } from \"../../Text\";\nimport { Spinner } from \"../../Spinner\";\n\nimport styles from \"../Combobox.module.scss\";\nimport listboxStyles from \"../../Listbox/Listbox.module.scss\";\nimport listViewStyles from \"../../ListView/ListView.module.scss\";\nimport { ComboboxSelectAll } from \"./ComboboxSelectAll\";\nimport { useComboboxGroupContext } from \"./ComboboxGroupContext\";\nimport Divider from \"../../Divider\";\n\n/**\n * Props for the ComboboxGroupList component\n */\nexport type ComboboxGroupListProps = ComponentPropsWithoutRef<\"ul\" | \"div\"> & {\n children?: ReactNode;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxGroupList = function <Item = any>({\n children,\n ...rest\n}: ComboboxGroupListProps) {\n const {\n getMenuProps,\n multiple,\n items,\n hasAddNew = false,\n hasEmpty,\n loading,\n selectAll,\n listRef,\n } = useCombobox<Item>();\n const scrollSentinelRef = useRef<HTMLDivElement>(null);\n const [isScrolled, setIsScrolled] = useState(false);\n const { key: groupKey } = useComboboxGroupContext() ?? {};\n\n const isAGroup = !!groupKey;\n\n useEffect(() => {\n if (!scrollSentinelRef.current) return;\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (!entry.isIntersecting) {\n setIsScrolled(true);\n } else {\n setIsScrolled(false);\n }\n });\n },\n { threshold: 0 },\n );\n intersectionObserver.observe(scrollSentinelRef.current);\n return () => {\n intersectionObserver.disconnect();\n };\n }, [scrollSentinelRef, setIsScrolled]);\n\n if (isAGroup) {\n return <>{children}</>;\n }\n\n if (multiple) {\n return (\n <>\n <ul\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"ul\">)}\n ref={listRef as React.MutableRefObject<HTMLUListElement | null>}\n data-anv=\"combobox-list\"\n className={cx(styles[\"listview\"], listViewStyles[\"listview\"], {\n [styles.scrolled]: isScrolled,\n })}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n }}\n >\n <div ref={scrollSentinelRef} className={styles[\"scroll-sentinel\"]} />\n {!loading && selectAll && (\n <>\n <ComboboxSelectAll />\n <Divider />\n </>\n )}\n {children}\n </ul>\n\n {loading ? (\n <div className={styles[\"empty\"]}>\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n </div>\n ) : !items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n } else {\n return (\n <>\n <ul\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"ul\">)}\n ref={listRef as React.MutableRefObject<HTMLUListElement | null>}\n data-anv=\"combobox-list\"\n className={listboxStyles[\"listbox\"]}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n }}\n >\n {children}\n </ul>\n\n {loading ? (\n <div className={styles[\"empty\"]}>\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n </div>\n ) : !items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n }\n};\n","import { ComboboxGroupContext } from \"./ComboboxGroupContext\";\n\nexport const ComboboxGroupProvider = ComboboxGroupContext.Provider;\n","import {\n useEffect,\n type ComponentPropsWithoutRef,\n type ReactNode,\n type FocusEvent,\n useId,\n CSSProperties,\n} from \"react\";\nimport {\n UseComboboxProps as UseDownshiftComboboxProps,\n UseSelectProps as UseDownshiftSelectProps,\n UseComboboxReturnValue as UseDownshiftComboboxReturnValue,\n UseSelectReturnValue as UseDownshiftSelectReturnValue,\n} from \"downshift\";\nimport cx from \"classnames\";\n\nimport { Popover } from \"../Popover\";\n\nimport styles from \"./Combobox.module.scss\";\nimport listboxStyles from \"../Listbox/Listbox.module.scss\";\n\nimport { Text } from \"../Text\";\nimport { Divider } from \"../Divider\";\nimport { useCombobox } from \"./internal/ComboboxContext\";\nimport { usePopoverContext } from \"../Popover/internal/usePopoverContext\";\nimport { ADD_NEW, SELECT_ALL } from \"./internal/ComboboxUtils\";\nimport { ComboboxGroupList } from \"./internal/ComboboxGroupList\";\nimport { ComboboxGroupProvider } from \"./internal/ComboboxGroupProvider\";\n\n/**\n * Props for the options passed to the children render function\n */\nexport type ComboboxContentOptionsProps<Item> = {\n /** Props for the option including selection and disabled state */\n optionProps: ReturnType<\n UseDownshiftComboboxReturnValue<Item>[\"getItemProps\"]\n > & { selected: boolean; disabled: boolean };\n /** The item to render */\n item: Item;\n /** The index of the item in the list */\n index: number;\n};\n\n/**\n * Props for the ComboboxContent component\n */\nexport type ComboboxContentProps<Item> = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> & {\n /** Render function that receives combobox state and returns content */\n children?: ({\n items,\n inputValue,\n selectedItem,\n getMenuProps,\n getItemProps,\n }: Pick<\n UseDownshiftComboboxProps<Item> | UseDownshiftSelectProps<Item>,\n \"items\"\n > &\n Pick<\n | UseDownshiftComboboxReturnValue<Item>\n | UseDownshiftSelectReturnValue<Item>,\n \"getMenuProps\" | \"getItemProps\" | \"inputValue\" | \"selectedItem\"\n > & {\n listProps: ReturnType<\n | UseDownshiftComboboxReturnValue<Item>[\"getMenuProps\"]\n | UseDownshiftSelectReturnValue<Item>[\"getMenuProps\"]\n > & { style: CSSProperties };\n options: ComboboxContentOptionsProps<Item>[];\n }) => ReactNode;\n /** Whether to disable popover behavior and render inline */\n disablePopover?: boolean;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxContentElement = function <Item = any>({\n children,\n className,\n disablePopover = false,\n ...rest\n}: ComboboxContentProps<Item>) {\n const {\n items,\n itemToKey,\n inputValue,\n selectedItem,\n selectedItems,\n setHasDisabledPopover,\n getMenuProps,\n getItemProps,\n isDisabled,\n isReadOnly,\n contentRef,\n closeMenu,\n groups,\n } = useCombobox<Item>();\n\n const ComboboxPopoverContentClassNames = cx(\n styles[\"popover-content\"],\n className,\n );\n\n useEffect(() => {\n setHasDisabledPopover(disablePopover);\n\n return () => {\n setHasDisabledPopover(false);\n };\n }, [disablePopover, setHasDisabledPopover]);\n\n const context = usePopoverContext();\n // if we focus out to something not within the reference or content divs\n // then close the popover\n const handleBlur = (_e: FocusEvent) => {\n if (context?.controlled) return;\n context?.popover.close?.(closeMenu);\n };\n\n const resolveChildren = (groupItems: Item[]) =>\n children?.({\n items: groupItems,\n inputValue,\n selectedItem,\n getMenuProps,\n getItemProps,\n listProps: {\n ...getMenuProps({}, { suppressRefError: true }),\n style: {\n display: groupItems.length ? undefined : \"none\",\n overflow: \"auto\",\n },\n },\n options: groupItems.map((item, index) => ({\n optionProps: {\n ...getItemProps({\n item,\n index,\n }),\n tabIndex: disablePopover ? -1 : undefined,\n selected:\n itemToKey(selectedItem) === itemToKey(item) ||\n selectedItems.some(\n (selectedItem) => itemToKey(selectedItem) === itemToKey(item),\n ),\n disabled: !!isDisabled || !!isReadOnly, // also see \"isItemDisabled\" function\n },\n item,\n index,\n })),\n });\n\n const id = useId();\n\n const filterAlreadyRenderedItems = (items: Item[]) => {\n // \"Select all\" is already rendered in the list (i.e. ComboboxList)\n // And \"Add new\" is passed as a separate child\n // So we don't need to render them here\n return items.filter((item) => item !== ADD_NEW && item !== SELECT_ALL);\n };\n\n return disablePopover ? (\n <div\n {...rest}\n className={ComboboxPopoverContentClassNames}\n ref={contentRef}\n onBlur={handleBlur}\n >\n {groups?.length ? (\n <ComboboxGroupList>\n {groups.map((group, i) => (\n <ComboboxGroupProvider key={group.key} value={group}>\n {i !== 0 && <Divider />}\n <li\n aria-labelledby={`${id}-group-${group.key}`}\n className={cx(styles[\"group\"], listboxStyles[\"listbox\"])}\n data-anv=\"combobox-group\"\n role=\"group\"\n >\n {group.label != null ? (\n <Text\n className={styles[\"group-title\"]}\n id={`${id}-group-${group.key}`}\n variant=\"eyebrow\"\n >\n {group.label}\n </Text>\n ) : null}\n <ul className={styles[\"group-list\"]}>\n {resolveChildren(filterAlreadyRenderedItems(group.items))}\n </ul>\n </li>\n </ComboboxGroupProvider>\n ))}\n </ComboboxGroupList>\n ) : (\n resolveChildren(filterAlreadyRenderedItems(items))\n )}\n </div>\n ) : (\n <Popover.Content\n data-anv=\"combobox-content\"\n {...rest}\n className={ComboboxPopoverContentClassNames}\n ref={getMenuProps({ ref: contentRef }, { suppressRefError: true }).ref}\n tabIndex={-1}\n onBlur={handleBlur}\n >\n {groups?.length ? (\n <ComboboxGroupList>\n {groups.map((group, i) => (\n <ComboboxGroupProvider key={group.key} value={group}>\n {i !== 0 && <Divider />}\n <li\n aria-labelledby={`${id}-group-${group.key}`}\n className={cx(styles[\"group\"], listboxStyles[\"listbox\"])}\n data-anv=\"combobox-group\"\n role=\"group\"\n >\n {group.label != null ? (\n <Text\n className={styles[\"group-title\"]}\n id={`${id}-group-${group.key}`}\n variant=\"eyebrow\"\n >\n {group.label}\n </Text>\n ) : null}\n <ul className={styles[\"group-list\"]}>\n {resolveChildren(filterAlreadyRenderedItems(group.items))}\n </ul>\n </li>\n </ComboboxGroupProvider>\n ))}\n </ComboboxGroupList>\n ) : (\n resolveChildren(filterAlreadyRenderedItems(items))\n )}\n </Popover.Content>\n );\n};\n\n/**\n * ComboboxContent component for rendering the content area of a combobox\n *\n * Features:\n * - Supports both popover and inline rendering modes\n * - Provides render props pattern for flexible content rendering\n * - Handles grouped items with proper ARIA labels\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events for popover behavior\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered combobox content area\n *\n * @example\n * <Combobox.Content>\n * {({ items }) => (\n * <ul>\n * {items.map((item, index) => (\n * <li key={item.id}>\n * {item.name}\n * </li>\n * ))}\n * </ul>\n * )}\n * </Combobox.Content>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxContent = function <Item = any>({\n children,\n className,\n disablePopover = false,\n ...rest\n}: ComboboxContentProps<Item>) {\n return (\n <ComboboxContentElement<Item>\n className={className}\n disablePopover={disablePopover}\n {...rest}\n >\n {children}\n </ComboboxContentElement>\n );\n};\n","import {\n useLayoutEffect,\n useRef,\n type FocusEvent,\n type MouseEvent,\n type RefObject,\n} from \"react\";\n\nimport {\n ComboboxSearchFieldProps,\n ComboboxSelectTriggerProps,\n ComboboxTriggerProps,\n} from \"./ComboboxTypes\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { usePopoverContext } from \"../Popover/internal/usePopoverContext\";\nimport { useCombobox } from \"./internal/ComboboxContext\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useTrackingId } from \"../../hooks\";\nimport Icon from \"../Icon\";\nimport Avatar from \"../Avatar\";\nimport { SelectTriggerBase } from \"../SelectTrigger/internal/SelectTriggerBase\";\n\nconst ComboboxTrigger = function <Item>(\n props: ComboboxTriggerProps<Item> & { variant?: \"combobox\" | \"select\" },\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n // variant: variantProp = \"combobox\",\n className,\n style,\n label,\n size,\n error,\n hint,\n description,\n required,\n moreInfo,\n moreInfoOpen,\n prefix,\n suffix,\n maxRows,\n selectedItemProps = () => ({}),\n id,\n placeholder,\n disabled,\n readOnly,\n onClear,\n ...rest\n } = componentProps;\n\n const {\n select,\n disableClearSelection,\n itemToString,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n selectedItem,\n selectedItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n removeSelectedItem,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n referenceRef,\n closeMenu,\n setIsDisabled,\n setIsReadOnly,\n } = useCombobox();\n\n // TODO: Figure out how to fire this console.warn only in \"development\"\n // useEffect(() => {\n // if (variant !== variantProp) {\n // if (variant === \"select\") {\n // console.warn(\n // \"Combobox.SearchField should be used with non-Select Combobox\",\n // );\n // }\n\n // if (variant === \"combobox\") {\n // console.warn(\n // \"Combobox.SelectTrigger should be used with Combobox.Select\",\n // );\n // }\n // }\n // }, [variant, variantProp]);\n\n const context = usePopoverContext();\n\n useLayoutEffect(() => {\n if (typeof disabled === \"undefined\") return;\n setIsDisabled(disabled);\n }, [disabled, setIsDisabled]);\n\n useLayoutEffect(() => {\n if (typeof readOnly === \"undefined\") return;\n setIsReadOnly(readOnly);\n }, [readOnly, setIsReadOnly]);\n\n // if we focus out to something not within the reference or content divs\n // then close the popover\n const handleBlur = (e: FocusEvent) => {\n const target = e.relatedTarget ?? e.target;\n const focusedOnReference =\n context?.invoker.ref.current &&\n context?.invoker.ref.current.contains(target);\n const focusedOnContent =\n (context?.popover.ref.current &&\n context?.popover.ref.current.contains(target)) ||\n context?.popover.element?.contains(target);\n\n if ((!focusedOnReference && !focusedOnContent) || !e.relatedTarget) {\n closeMenu();\n }\n };\n\n const labelProps = getLabelProps({\n required,\n moreInfo,\n moreInfoOpen,\n });\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const inputWrapperProps = {\n ...(select\n ? {\n ...getToggleButtonProps({\n disabled: isDisabled,\n readOnly: isReadOnly,\n id,\n ref: context?.invoker.ref as unknown as RefObject<\n HTMLDivElement & HTMLButtonElement\n >,\n }),\n }\n : {\n onClick: () => inputRef.current?.focus(),\n ref: context?.invoker.ref as unknown as RefObject<HTMLDivElement>,\n }),\n };\n\n const toggleButtonProps = select ? {} : getToggleButtonProps();\n\n const handleClearButtonClick = (_e: MouseEvent<HTMLButtonElement>) => {\n if (onClear) {\n onClear();\n } else {\n if (reset != null) {\n reset();\n } else {\n selectItem(null);\n }\n }\n };\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <SelectTriggerBase\n data-anv={select ? \"combobox-select-trigger\" : \"combobox-search-field\"}\n className={className}\n style={styleCombined}\n label={label}\n size={size}\n error={error}\n hint={hint}\n description={description}\n prefix={prefix}\n suffix={suffix}\n maxRows={maxRows}\n selectedItemProps={selectedItemProps}\n placeholder={placeholder}\n labelProps={labelProps}\n inputWrapperProps={inputWrapperProps}\n toggleButtonProps={toggleButtonProps}\n itemToString={itemToString}\n removeSelectedItem={removeSelectedItem}\n variant={select ? \"select\" : \"combobox\"}\n disableClearSelection={disableClearSelection}\n selectedItem={selectedItem}\n selectedItems={selectedItems}\n inputValue={inputValue}\n disabled={isDisabled}\n readOnly={isReadOnly}\n referenceRef={referenceRef}\n onBlur={handleBlur}\n onClearButtonClick={handleClearButtonClick}\n chipProps={(item: Item, index: number) => {\n if (getSelectedItemProps != null) {\n const { onClick: _, ...chipProps } = getSelectedItemProps({\n selectedItem: item,\n index,\n });\n return chipProps;\n }\n return {};\n }}\n inputProps={\n select\n ? {\n ...(getDropdownProps != null\n ? getDropdownProps({\n required,\n preventKeyAction: false,\n })\n : {\n required,\n }),\n [\"aria-expanded\"]: context?.invoker[\"aria-expanded\"],\n [\"aria-details\"]: getMenuProps().id,\n [\"aria-haspopup\"]: context?.invoker[\"aria-haspopup\"],\n }\n : {\n [\"aria-expanded\"]: context?.invoker[\"aria-expanded\"],\n [\"aria-details\"]: getMenuProps().id,\n [\"aria-haspopup\"]: context?.invoker[\"aria-haspopup\"],\n [\"aria-controls\"]: getMenuProps().id,\n ...(getDropdownProps != null && getInputProps != null\n ? getInputProps(\n getDropdownProps({\n ...rest,\n disabled: isDisabled,\n readOnly: isReadOnly,\n required,\n autoComplete: \"off\",\n id,\n preventKeyAction: false,\n ref: inputRef,\n }),\n )\n : getInputProps != null\n ? getInputProps({\n ...rest,\n disabled: isDisabled,\n readOnly: isReadOnly,\n required,\n autoComplete: \"off\",\n id,\n ref: inputRef,\n })\n : {}),\n }\n }\n />\n );\n};\n\n/**\n * ComboboxSearchField component for rendering the search input field of a combobox\n *\n * Features:\n * - Provides search input with clear button functionality\n * - Supports multiple selection with chip display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered search field for combobox\n *\n * @example\n * <Combobox.SearchField\n * label=\"Search users\"\n * placeholder=\"Type to search...\"\n * maxRows={3}\n * />\n */\nconst ComboboxSearchFieldElement = function <Item>({\n onClear,\n ...props\n}: ComboboxTriggerProps<Item>) {\n return (\n <ComboboxTrigger<Item> onClear={onClear} {...props} variant=\"combobox\" />\n );\n};\n\n/**\n * ComboboxSearchField component for the search input field.\n *\n * Features:\n * - Search input with clear button functionality\n * - Supports multiple selection with chip display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n * - Enhanced prefix support for icons and avatars\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.SearchField\n * label=\"Search users\"\n * placeholder=\"Type to search...\"\n * prefix={{ icon: { svg: SearchIcon } }}\n * />\n */\nexport const ComboboxSearchField = function ({\n prefix: prefixProp,\n ...props\n}: ComboboxSearchFieldProps) {\n const data = {\n label: childrenToString(props.label),\n size: props.size,\n required: props.required,\n moreInfo: props.moreInfo,\n moreInfoOpen: props.moreInfoOpen,\n description: childrenToString(props.description),\n hint: props.hint,\n labelProps: props.labelProps,\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxSearchField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const prefix =\n prefixProp == null || typeof prefixProp === \"string\" ? (\n prefixProp\n ) : \"icon\" in prefixProp ? (\n <Icon {...prefixProp.icon} />\n ) : \"avatar\" in prefixProp ? (\n <Avatar\n {...prefixProp.avatar}\n size={props.size === \"small\" ? \"small\" : \"medium\"}\n />\n ) : (\n prefixProp\n );\n\n return (\n <ComboboxSearchFieldElement\n data-tracking-id={trackingId}\n {...props}\n prefix={prefix}\n />\n );\n};\n\nconst ComboboxSelectTriggerElement = function <Item>(\n props: ComboboxTriggerProps<Item>,\n) {\n return <ComboboxTrigger<Item> {...props} variant=\"select\" />;\n};\n\n/**\n * ComboboxSelectTrigger component for the select trigger field.\n *\n * Features:\n * - Select input with dropdown trigger\n * - Supports single selection display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n * - Enhanced prefix support for icons and avatars\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.SelectTrigger\n * label=\"Select user\"\n * placeholder=\"Choose a user...\"\n * prefix={{ avatar: { name: \"User\" } }}\n * />\n */\nexport const ComboboxSelectTrigger = function ({\n prefix: prefixProp,\n ...props\n}: ComboboxSelectTriggerProps) {\n const data = {\n label: childrenToString(props.label),\n size: props.size,\n required: props.required,\n moreInfo: props.moreInfo,\n moreInfoOpen: props.moreInfoOpen,\n description: childrenToString(props.description),\n hint: props.hint,\n labelProps: props.labelProps,\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxSearchField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const prefix =\n prefixProp == null || typeof prefixProp === \"string\" ? (\n prefixProp\n ) : \"icon\" in prefixProp ? (\n <Icon {...prefixProp.icon} />\n ) : \"avatar\" in prefixProp ? (\n <Avatar\n {...prefixProp.avatar}\n size={props.size === \"small\" ? \"small\" : \"medium\"}\n />\n ) : (\n prefixProp\n );\n\n return (\n <ComboboxSelectTriggerElement\n data-tracking-id={trackingId}\n {...props}\n prefix={prefix}\n />\n );\n};\n","import { useEffect, type ComponentPropsWithoutRef } from \"react\";\nimport { Icon } from \"../Icon\";\nimport { Flex } from \"../Flex\";\n\nimport styles from \"./Combobox.module.scss\";\nimport listboxStyles from \"../Listbox/Listbox.module.scss\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\nimport { useCombobox } from \"./internal/ComboboxContext\";\nimport { ComboboxItemAddNewProps, ComboboxItemProps } from \"./ComboboxTypes\";\nimport { useTrackingId } from \"../../hooks\";\nimport { ADD_NEW } from \"./internal/ComboboxUtils\";\nimport { ComboboxItemVisual } from \"./internal/ComboboxItemVisual\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst CoreComboboxItemElement = function <Item = any>({\n children,\n disabled: disabledProp,\n item,\n index: indexProp,\n hideCheckbox,\n forceCloseOnSelect,\n forceClearInputValueOnSelect,\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n gap,\n rowGap,\n columnGap,\n ...rest\n}: ComboboxItemProps<Item>) {\n const {\n itemToKey,\n getItemProps,\n multiple,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n highlightedIndex,\n items,\n } = useCombobox<Item>();\n\n const index = item === ADD_NEW && !multiple ? indexProp : items.indexOf(item);\n\n const disabled =\n disabledProp ||\n (item && item instanceof Object && \"disabled\" in item && item.disabled);\n\n useEffect(() => {\n if (disabledProp && !disabledItems.includes(item)) {\n setDisabledItems([...disabledItems, item]);\n } else if (disabledItems.includes(item)) {\n setDisabledItems(disabledItems.filter((prevItem) => prevItem !== item));\n }\n\n return () => {\n if (disabledItems.includes(item)) {\n setDisabledItems(disabledItems.filter((prevItem) => prevItem !== item));\n }\n };\n }, [item, disabledProp, setDisabledItems]); //eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n if (forceCloseOnSelect) {\n setForceCloseOnSelectItems((forceCloseOnSelectItems) => {\n if (forceCloseOnSelectItems.includes(item)) {\n return forceCloseOnSelectItems;\n } else {\n return [...forceCloseOnSelectItems, item];\n }\n });\n }\n\n return () => {\n setForceCloseOnSelectItems((forceCloseOnSelectItems) => {\n if (forceCloseOnSelectItems.includes(item)) {\n return forceCloseOnSelectItems.filter(\n (prevItem) => prevItem !== item,\n );\n } else {\n return forceCloseOnSelectItems;\n }\n });\n };\n }, [item, forceCloseOnSelect, setForceCloseOnSelectItems]);\n\n useEffect(() => {\n if (forceClearInputValueOnSelect) {\n setForceClearInputValueOnSelectItems(\n (forceClearInputValueOnSelectItems) => {\n if (forceClearInputValueOnSelectItems.includes(item)) {\n return forceClearInputValueOnSelectItems;\n } else {\n return [...forceClearInputValueOnSelectItems, item];\n }\n },\n );\n }\n\n return () => {\n setForceClearInputValueOnSelectItems(\n (forceClearInputValueOnSelectItems) => {\n if (forceClearInputValueOnSelectItems.includes(item)) {\n return forceClearInputValueOnSelectItems.filter(\n (prevItem) => prevItem !== item,\n );\n } else {\n return forceClearInputValueOnSelectItems;\n }\n },\n );\n };\n }, [\n item,\n forceClearInputValueOnSelect,\n setForceClearInputValueOnSelectItems,\n ]);\n\n const flexProps = {\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n gap,\n rowGap,\n columnGap,\n };\n\n if (multiple) {\n const checked = selectedItems.some(\n (selectedItem) => itemToKey(selectedItem) === itemToKey(item),\n );\n\n return (\n <ComboboxItemVisual\n rootDivProps={getItemProps({\n item,\n index,\n \"aria-selected\": highlightedIndex === index,\n ...(rest as ComponentPropsWithoutRef<\"div\">),\n })}\n disabled={disabled as boolean}\n checked={checked}\n hideCheckbox={hideCheckbox || item === ADD_NEW}\n flexProps={flexProps}\n >\n {children}\n </ComboboxItemVisual>\n );\n } else {\n return (\n <li\n {...getItemProps({\n item,\n index,\n \"aria-selected\": highlightedIndex === index,\n ...(rest as ComponentPropsWithoutRef<\"li\">),\n })}\n data-anv=\"combobox-item\"\n data-checked={itemToKey(selectedItem) === itemToKey(item)}\n className={styles[\"item\"]}\n {...(disabled ? { \"aria-disabled\": true } : {})}\n >\n <Flex\n className={listboxStyles[\"children\"]}\n grow={1}\n shrink={1}\n {...flexProps}\n >\n {children}\n </Flex>\n <Icon\n aria-hidden\n svg={Check}\n inherit\n className={styles[\"Icon\"]}\n style={{\n opacity: itemToKey(selectedItem) === itemToKey(item) ? 1 : 0,\n }}\n />\n </li>\n );\n }\n};\n\n/**\n * ComboboxItem component for rendering individual items in a combobox list\n *\n * Features:\n * - Supports both single and multiple selection modes\n * - Handles disabled state for individual items\n * - Provides checkbox UI for multiple selection\n * - Supports custom layout with Flex props\n * - Integrates with combobox state management\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered combobox item\n *\n * @example\n * <ComboboxItem item={user} index={0}>\n * <Text>{user.name}</Text>\n * <Text subdued>{user.email}</Text>\n * </ComboboxItem>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxItemElement = function <Item = any>(\n props: ComboboxItemProps<Item>,\n) {\n return <CoreComboboxItemElement {...props} />;\n};\n\n/**\n * ComboboxItem component for rendering individual items in the list.\n *\n * Features:\n * - Individual item rendering with proper accessibility\n * - Support for disabled state\n * - Custom content rendering\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Item item={item} index={index}>\n * <Flex direction=\"column\">\n * <Text>{item.name}</Text>\n * <Text size=\"small\" subdued>{item.description}</Text>\n * </Flex>\n * </Combobox.Item>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxItem = function <Item = any>(\n props: ComboboxItemProps<Item>,\n) {\n const data = {\n item: props.item,\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxItem\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return <ComboboxItemElement<Item> data-tracking-id={trackingId} {...props} />;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst CoreComboboxItemAddNewElement = function <Item = any>({\n onSelection,\n ...props\n}: ComboboxItemAddNewProps<Item>) {\n const { items, setHasAddNew, hasExactMatch, setOnSelectItemAddNew } =\n useCombobox<Item>();\n\n useEffect(() => {\n setHasAddNew?.(true);\n\n return () => {\n setHasAddNew?.(false);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setOnSelectItemAddNew?.(() => onSelection);\n\n return () => {\n setOnSelectItemAddNew?.(undefined);\n };\n }, [setOnSelectItemAddNew, onSelection]);\n\n return !hasExactMatch ? (\n <ComboboxItem<Item>\n {...props}\n item={ADD_NEW as Item}\n index={items.length}\n />\n ) : null;\n};\n\n/**\n * ComboboxItemAddNew component for rendering an \"Add New\" option in a combobox\n *\n * Features:\n * - Allows users to add new items that don't exist in the list\n * - Integrates with combobox state management\n * - Supports custom layout with Flex props\n * - Handles selection callback for new item creation\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered \"Add New\" item or null\n *\n * @example\n * <ComboboxItemAddNew onSelection={(value) => createNewItem(value)}>\n * <Text>Add \"{inputValue}\" as new item</Text>\n * </ComboboxItemAddNew>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxItemAddNewElement = function <Item = any>(\n props: ComboboxItemAddNewProps<Item>,\n) {\n return <CoreComboboxItemAddNewElement {...props} />;\n};\n\n/**\n * ComboboxItemAddNew component for rendering an \"Add New\" option.\n *\n * Features:\n * - \"Add New\" option that appears when no exact match is found\n * - Customizable content rendering\n * - Callback when selected\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.ItemAddNew onSelection={(inputValue) => addNewItem(inputValue)}>\n * Add \"{inputValue}\" as new item\n * </Combobox.ItemAddNew>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxItemAddNew = function <Item = any>(\n props: ComboboxItemAddNewProps<Item>,\n) {\n const data = {\n item: \"add-new\",\n };\n\n const trackingId = useTrackingId({\n name: \"ComboboxItemAddNew\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return <ComboboxItemAddNewElement data-tracking-id={trackingId} {...props} />;\n};\n","import {\n useEffect,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { useCombobox } from \"./internal/ComboboxContext\";\n\nimport { Flex } from \"../Flex\";\nimport { Text } from \"../Text\";\nimport { Spinner } from \"../Spinner\";\n\nimport styles from \"./Combobox.module.scss\";\nimport listboxStyles from \"../Listbox/Listbox.module.scss\";\nimport listViewStyles from \"../ListView/ListView.module.scss\";\nimport { ComboboxSelectAll } from \"./internal/ComboboxSelectAll\";\nimport { useComboboxGroupContext } from \"./internal/ComboboxGroupContext\";\n\n/**\n * Props for the ComboboxList component\n */\nexport type ComboboxListProps = ComponentPropsWithoutRef<\"ul\" | \"div\"> & {\n children?: ReactNode;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ComboboxListElement = function <Item = any>({\n children,\n ...rest\n}: ComboboxListProps) {\n const {\n getMenuProps,\n multiple,\n items,\n hasAddNew = false,\n hasEmpty,\n loading,\n selectAll,\n listRef,\n } = useCombobox<Item>();\n const scrollSentinelRef = useRef<HTMLDivElement>(null);\n const [isScrolled, setIsScrolled] = useState(false);\n const { key: groupKey } = useComboboxGroupContext() ?? {};\n\n const isAGroup = !!groupKey;\n\n useEffect(() => {\n if (!scrollSentinelRef.current) return;\n const intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (!entry.isIntersecting) {\n setIsScrolled(true);\n } else {\n setIsScrolled(false);\n }\n });\n },\n { threshold: 0 },\n );\n intersectionObserver.observe(scrollSentinelRef.current);\n return () => {\n intersectionObserver.disconnect();\n };\n }, [scrollSentinelRef, setIsScrolled]);\n\n if (isAGroup) {\n return <>{children}</>;\n }\n\n if (multiple) {\n return (\n <>\n <ul\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"ul\">)}\n ref={listRef as React.MutableRefObject<HTMLUListElement | null>}\n data-anv=\"combobox-list\"\n className={cx(styles[\"listview\"], listViewStyles[\"listview\"], {\n [styles.scrolled]: isScrolled,\n })}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n }}\n >\n <div ref={scrollSentinelRef} className={styles[\"scroll-sentinel\"]} />\n {!loading && selectAll && <ComboboxSelectAll />}\n {children}\n </ul>\n\n {loading ? (\n <div className={styles[\"empty\"]}>\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n </div>\n ) : !items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n } else {\n return (\n <>\n <ul\n {...getMenuProps(rest as ComponentPropsWithoutRef<\"ul\">)}\n ref={listRef as React.MutableRefObject<HTMLUListElement | null>}\n data-anv=\"combobox-list\"\n className={listboxStyles[\"listbox\"]}\n style={{\n display: items.length || hasAddNew ? undefined : \"none\",\n }}\n >\n {children}\n </ul>\n\n {loading ? (\n <div className={styles[\"empty\"]}>\n <Flex justifyContent=\"center\">\n <Spinner size=\"small\" />\n </Flex>\n </div>\n ) : !items.length && !hasEmpty ? (\n <div className={styles[\"empty\"]}>\n <Text subdued size=\"small\">\n No match found\n </Text>\n </div>\n ) : null}\n </>\n );\n }\n};\n\n/**\n * ComboboxList component for rendering the list container of combobox items\n *\n * Features:\n * - Supports both single and multiple selection modes\n * - Automatically handles empty state with \"No match found\" message\n * - Shows loading spinner during async operations\n * - Integrates with combobox state management\n *\n * @template Item - The type of items in the combobox\n * @param props - The component props\n * @returns A rendered combobox list container\n *\n * @example\n * <ComboboxList>\n * {items.map((item, index) => (\n * <ComboboxItem key={item.id} item={item} index={index}>\n * {item.name}\n * </ComboboxItem>\n * ))}\n * </ComboboxList>\n */\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ComboboxList = function <Item = any>({\n children,\n className,\n ...rest\n}: ComboboxListProps) {\n return (\n <ComboboxListElement<Item> className={className} {...rest}>\n {children}\n </ComboboxListElement>\n );\n};\n","import { ComboboxEmpty } from \"./ComboboxEmpty\";\nimport {\n ComboboxMultipleProps,\n ComboboxProps,\n ComboboxSingleProps,\n} from \"./ComboboxTypes\";\nimport { ComboboxSelect } from \"./ComboboxSelect\";\nimport { ComboboxContent } from \"./ComboboxContent\";\nimport { ComboboxSearchField, ComboboxSelectTrigger } from \"./ComboboxTrigger\";\nimport { ComboboxItem, ComboboxItemAddNew } from \"./ComboboxItem\";\nimport { ComboboxList } from \"./ComboboxList\";\nimport {\n ADD_NEW,\n getScrollParent,\n isMultiple,\n SELECT_ALL,\n} from \"./internal/ComboboxUtils\";\nimport {\n useDownshiftEnvironment,\n useLayoutPropsUtil,\n} from \"../../internal/hooks\";\nimport cx from \"classnames\";\nimport styles from \"./Combobox.module.scss\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useCombobox as useDownshiftCombobox,\n useMultipleSelection as useDownshiftMultipleSelection,\n UseComboboxReturnValue as UseDownshiftComboboxReturnValue,\n UseComboboxStateChangeTypes,\n} from \"downshift\";\nimport {\n defaultItemToString,\n defaultItemToKey,\n} from \"./internal/ComboboxUtils\";\nimport { useGroups } from \"./internal/useGroups\";\nimport { matchSorter } from \"match-sorter\";\nimport { ComboboxContext } from \"./internal/ComboboxContext\";\nimport Popover from \"../Popover\";\n\nconst DEBUG_STATE_REDUCERS = false;\n\nconst ComboboxSingle = function <Item>(props: ComboboxSingleProps<Item>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n disabled,\n readOnly,\n items: itemsProp,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n filterOptions,\n disableFilter = false,\n loading = false,\n minPopoverHeight,\n root,\n onInputValueChange,\n environment: environmentProp,\n groupBy,\n groupToString,\n groupSorter,\n ...rest\n } = componentProps;\n\n const ComboboxClassNames = cx(styles[\"combobox\"], className);\n const [items, setItems] = useState(itemsProp);\n const [hasAddNew, setHasAddNew] = useState(false);\n const [onSelectItemAddNew, setOnSelectItemAddNew] = useState<\n | ((\n inputValue: UseDownshiftComboboxReturnValue<Item>[\"inputValue\"],\n ) => void)\n | undefined\n >(undefined);\n const [hasExactMatch, setHasExactMatch] = useState(false);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState<\n Item[]\n >([]);\n const [, setForceClearInputValueOnSelectItems] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLDivElement | HTMLUListElement | null>(null);\n\n const handleOutsidePress = (_e: MouseEvent) => {\n if (disableCloseOnClickOutside) return;\n closeMenu();\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const { orderedItems: allItemsOrderedByGroup } = useGroups({\n items: itemsProp,\n groupBy,\n groupToString,\n groupSorter,\n });\n\n const { groups: searchedGroups, orderedItems: searchedItemsOrderedByGroup } =\n useGroups({\n items: items,\n groupBy,\n groupToString,\n groupSorter,\n });\n\n const showAddNew = hasAddNew && !hasExactMatch;\n const combinedItems = useMemo(\n () =>\n showAddNew\n ? [...searchedItemsOrderedByGroup, ADD_NEW as Item]\n : searchedItemsOrderedByGroup,\n [searchedItemsOrderedByGroup, showAddNew],\n );\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const {\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n setInputValue,\n inputValue,\n closeMenu,\n } = useDownshiftCombobox<Item>({\n ...rest,\n items: combinedItems,\n itemToString,\n itemToKey,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n // keep Combobox open onBlur, will call close using Popover's onOutsidePress\n case useDownshiftCombobox.stateChangeTypes.InputBlur:\n return {\n ...changes,\n isOpen: open != null ? open : true,\n highlightedIndex: state.highlightedIndex,\n };\n\n case useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter:\n case useDownshiftCombobox.stateChangeTypes.ItemClick:\n if (changes.selectedItem === ADD_NEW) {\n // if we're adding a new item, don't change the selectedItem\n // and just call the event handler\n // TODO: Figure out a way to do this without having side-effects in\n // the stateReducer\n const stateInputValue = state.inputValue;\n setTimeout(() => {\n onSelectItemAddNew?.(stateInputValue);\n }, 250); // setTimeout so we don't setState during render\n\n return {\n ...changes,\n selectedItem: state.selectedItem,\n inputValue: \"\",\n };\n } else {\n const forceClose = forceCloseOnSelectItems.includes(\n changes.selectedItem as Item,\n );\n\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : forceClose\n ? false\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: disableCloseOnSelectItem\n ? itemToString(state.selectedItem) === state.inputValue ||\n !state.inputValue\n ? state.highlightedIndex\n : 0\n : changes.highlightedIndex,\n };\n }\n\n // prevent this from closing the popover by default\n case useDownshiftCombobox.stateChangeTypes.InputClick:\n return { ...changes, isOpen: open != null ? open : true };\n\n default:\n return changes;\n }\n },\n onInputValueChange:\n onInputValueChange ??\n (({ inputValue, type, selectedItem }) => {\n const inputValueMatchesSelectedItem =\n selectedItem != null && inputValue === itemToString(selectedItem);\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (\n type === useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter ||\n type === useDownshiftCombobox.stateChangeTypes.ItemClick\n ) {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n } else if (\n !inputValueMatchesSelectedItem &&\n !inputValueIsEmpty &&\n !disableFilter\n ) {\n const filteredItems = matchSorter(\n allItemsOrderedByGroup,\n inputValue,\n filterOptions,\n );\n setItems(filteredItems);\n setHasExactMatch(\n matchSorter(filteredItems, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n }\n }),\n onSelectedItemChange(changes) {\n const { selectedItem } = changes;\n\n if (onChange != null)\n onChange(selectedItem != null ? selectedItem : null);\n },\n onIsOpenChange({ isOpen, inputValue, selectedItem }) {\n if (isOpen === false) {\n // reset the filtering whenever we close the dropdown\n // Delaying input reset timing to be after Popover close to avoid\n // list showing full version for a split second before closing\n setTimeout(() => {\n setItems(allItemsOrderedByGroup);\n\n if (inputValue === \"\") {\n // special case: if the search field is empty, remove the selected item\n selectItem(null);\n } else {\n // otherwise, force the text to match the selected item\n\n setInputValue(\n selectedItem != null ? itemToString(selectedItem) : \"\",\n );\n }\n }, 200);\n }\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n });\n\n // prevent prop sync useEffects from running on intiial render\n const firstRenderRef = useRef(true);\n useEffect(() => {\n if (firstRenderRef.current === true) {\n firstRenderRef.current = false;\n }\n }, []);\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n // synchronize filtering state when \"items\" prop changes\n useEffect(() => {\n if (firstRenderRef.current) return;\n\n const inputValueMatchesSelectedItem =\n selectedItem != null && inputValue === itemToString(selectedItem);\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n // When dropdown is closed, sync inputValue with controlled selectedItem\n if (!isOpen && selectedItem != null && !inputValueMatchesSelectedItem) {\n setInputValue(itemToString(selectedItem));\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n return;\n }\n\n if (!isOpen && selectedItem == null && !inputValueIsEmpty) {\n setInputValue(\"\");\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n return;\n }\n\n // Handle filtering when user is typing\n if (\n !inputValueMatchesSelectedItem &&\n !inputValueIsEmpty &&\n !disableFilter\n ) {\n const filteredItems = matchSorter(\n allItemsOrderedByGroup,\n inputValue,\n filterOptions,\n );\n setItems(filteredItems);\n setHasExactMatch(\n matchSorter(filteredItems, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allItemsOrderedByGroup, selectedItem, inputValue, isOpen]);\n\n const contextValue = useMemo(\n () => ({\n multiple: false,\n select: false,\n items: searchedItemsOrderedByGroup,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems: [],\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n getSelectedItemProps: undefined,\n getDropdownProps: undefined,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n hasAddNew,\n setHasAddNew,\n onSelectItemAddNew,\n setOnSelectItemAddNew,\n hasExactMatch,\n setHasExactMatch,\n loading,\n referenceRef,\n contentRef,\n listRef,\n closeMenu,\n groupBy,\n groupToString,\n groups: searchedGroups,\n }),\n [\n searchedItemsOrderedByGroup,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n hasAddNew,\n setHasAddNew,\n onSelectItemAddNew,\n setOnSelectItemAddNew,\n hasExactMatch,\n setHasExactMatch,\n loading,\n referenceRef,\n contentRef,\n listRef,\n closeMenu,\n groupBy,\n groupToString,\n searchedGroups,\n ],\n );\n\n return (\n <ComboboxContext.Provider value={contextValue}>\n <div\n className={ComboboxClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n open={isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onClickOutside={handleOutsidePress}\n minHeight={minPopoverHeight}\n >\n {children}\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n};\n\nconst ComboboxMultiple = function <Item>(props: ComboboxMultipleProps<Item>) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n style,\n children,\n open,\n items: itemsProp,\n itemToString: itemToStringProp,\n itemToKey: itemToKeyProp,\n onChange,\n onSelectedItemsChange,\n onStateChange,\n disableCloseOnClickOutside = false,\n disableMatchReferenceWidth = false,\n disableCloseOnSelectItem = false,\n disableClearInputValueOnSelectItem = false,\n filterOptions,\n disableFilter = false,\n loading = false,\n minPopoverHeight,\n root,\n disabled,\n readOnly,\n stateReducer: _,\n onInputValueChange,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp,\n selectAll,\n groupBy,\n groupToString,\n ...rest\n } = componentProps;\n\n const ComboboxClassNames = cx(styles[\"combobox\"], className);\n const [items, setItems] = useState(itemsProp);\n const [hasAddNew, setHasAddNew] = useState(false);\n const [onSelectItemAddNew, setOnSelectItemAddNew] = useState<\n | ((\n inputValue: UseDownshiftComboboxReturnValue<Item>[\"inputValue\"],\n ) => void)\n | undefined\n >(undefined);\n const [hasExactMatch, setHasExactMatch] = useState(false);\n const [hasDisabledPopover, setHasDisabledPopover] = useState(false);\n const [hasEmpty, setHasEmpty] = useState(false);\n const [disabledItems, setDisabledItems] = useState<Item[]>([]);\n const [forceCloseOnSelectItems, setForceCloseOnSelectItems] = useState<\n Item[]\n >([]);\n const [\n forceClearInputValueOnSelectItems,\n setForceClearInputValueOnSelectItems,\n ] = useState<Item[]>([]);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isReadOnly, setIsReadOnly] = useState(readOnly);\n /** @deprecated to be removed on next major - this is replaced by Combobox's disabled and readOnly props */\n const [isDisabled, setIsDisabled] = useState(disabled);\n\n // Downshift's useCombobox and useMultipleSelection have a kinda sorta\n // circular dependency, so storing setInputValue here to allow setting the\n // inputValue in the useMultipleSelection change handlers\n let storedSetInputValue: ((inputValue: string) => void) | undefined =\n undefined;\n\n const referenceRef = useRef<HTMLDivElement | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const listRef = useRef<HTMLDivElement | HTMLUListElement | null>(null);\n const handleOutsidePress = (_e: MouseEvent) => {\n if (disableCloseOnClickOutside) return;\n closeMenu();\n };\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const { orderedItems: allItemsOrderedByGroup } = useGroups({\n items: itemsProp,\n groupBy,\n groupToString,\n });\n\n const { groups: searchedGroups, orderedItems: searchedItemsOrderedByGroup } =\n useGroups({\n items: items,\n groupBy,\n groupToString,\n });\n\n const showAddNew = hasAddNew && !hasExactMatch;\n const combinedItems = useMemo(() => {\n let items = searchedItemsOrderedByGroup;\n if (showAddNew) {\n items = [...items, ADD_NEW as Item];\n }\n if (selectAll) {\n items = [SELECT_ALL as Item, ...items];\n }\n return items;\n }, [searchedItemsOrderedByGroup, showAddNew, selectAll]);\n\n const itemToString = itemToStringProp ?? defaultItemToString<Item>;\n const itemToKey = itemToKeyProp ?? defaultItemToKey<Item>;\n\n const {\n getSelectedItemProps,\n getDropdownProps,\n reset,\n selectedItems,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n } = useDownshiftMultipleSelection<Item>({\n itemToKey,\n initialSelectedItems,\n initialActiveIndex,\n defaultSelectedItems,\n defaultActiveIndex,\n activeIndex: activeIndexProp,\n selectedItems: selectedItemsProp,\n environment: environmentProp ?? environment,\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n // the Chip itself will handle \"Backspace\" and \"Delete\"\n // just return previous state\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownBackspace:\n case useDownshiftMultipleSelection.stateChangeTypes\n .SelectedItemKeyDownDelete:\n return state;\n\n case useDownshiftMultipleSelection.stateChangeTypes\n .FunctionRemoveSelectedItem:\n return { ...changes, activeIndex: -1 };\n\n case useDownshiftMultipleSelection.stateChangeTypes.FunctionReset:\n return { ...changes, selectedItems: [] };\n\n default:\n return changes;\n }\n },\n onStateChange(changes) {\n const { type } = changes;\n\n switch (type) {\n case useDownshiftMultipleSelection.stateChangeTypes.FunctionReset:\n storedSetInputValue?.(\"\");\n break;\n }\n\n onStateChange?.(changes);\n },\n onSelectedItemsChange(changes) {\n const { selectedItems } = changes;\n if (onChange != null) onChange(selectedItems);\n if (onSelectedItemsChange != null) onSelectedItemsChange(changes);\n },\n });\n\n const {\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectItem,\n setInputValue,\n inputValue,\n closeMenu,\n } = useDownshiftCombobox<Item>({\n ...rest,\n items: combinedItems,\n itemToString,\n itemToKey,\n selectedItem: null,\n isOpen: open,\n initialIsOpen: open,\n environment: environmentProp ?? environment,\n // NOTE: Reducer needs to be pure, side-effects should be in event handlers\n stateReducer(state, { type, changes }) {\n if (DEBUG_STATE_REDUCERS) console.log(type, changes, { state });\n\n switch (type) {\n // keep Combobox open onBlur, will call close using Popover's onOutsidePress\n case useDownshiftCombobox.stateChangeTypes.InputBlur:\n return {\n ...changes,\n inputValue: state.inputValue,\n selectedItem: null,\n isOpen: open != null ? open : true,\n highlightedIndex: state.highlightedIndex,\n };\n\n case useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter:\n case useDownshiftCombobox.stateChangeTypes.ItemClick:\n if (changes.selectedItem === ADD_NEW) {\n // if we're adding a new item, don't change the selectedItem\n // and just call the event handler\n // TODO: Figure out a way to do this without having side-effects in\n // the stateReducer\n const stateInputValue = state.inputValue;\n setTimeout(() => {\n onSelectItemAddNew?.(stateInputValue);\n }, 250); // setTimeout so we don't setState during render\n\n return {\n ...changes,\n selectedItem: state.selectedItem,\n inputValue: \"\",\n };\n } else if (changes.selectedItem === SELECT_ALL) {\n selectAll?.onSelection();\n return {\n ...changes,\n selectedItem: null,\n };\n } else {\n const forceClose = forceCloseOnSelectItems.includes(\n changes.selectedItem as Item,\n );\n const forceClearInputValue =\n forceClearInputValueOnSelectItems.includes(\n changes.selectedItem as Item,\n );\n\n return {\n ...changes,\n isOpen:\n open != null\n ? open\n : forceClose\n ? false\n : disableCloseOnSelectItem\n ? true\n : changes.isOpen,\n highlightedIndex: forceClearInputValue\n ? 0\n : disableCloseOnSelectItem\n ? disableClearInputValueOnSelectItem || !state.inputValue\n ? state.highlightedIndex\n : 0\n : changes.highlightedIndex,\n inputValue: forceClearInputValue\n ? \"\"\n : disableClearInputValueOnSelectItem\n ? state.inputValue\n : \"\",\n };\n }\n\n // prevent this from closing the popover by default\n case useDownshiftCombobox.stateChangeTypes.InputClick:\n return { ...changes, isOpen: open != null ? open : true };\n\n // prevent this from clearing the input value by default\n case useDownshiftCombobox.stateChangeTypes\n .ControlledPropUpdatedSelectedItem:\n return { ...changes, inputValue: state.inputValue };\n\n default:\n return changes;\n }\n },\n onStateChange(changes) {\n const { type, selectedItem: newSelectedItem } = changes;\n\n switch (type) {\n case useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter:\n case useDownshiftCombobox.stateChangeTypes.ItemClick:\n case useDownshiftCombobox.stateChangeTypes.InputBlur:\n if (newSelectedItem != null) {\n const itemAlreadySelected = selectedItems.some(\n (item) => itemToKey(item) === itemToKey(newSelectedItem),\n );\n\n if (itemAlreadySelected) {\n removeSelectedItem(newSelectedItem);\n } else {\n addSelectedItem(newSelectedItem);\n }\n }\n break;\n\n default:\n break;\n }\n\n onStateChange?.(changes);\n },\n onInputValueChange:\n onInputValueChange ??\n (({ inputValue, ...changes }) => {\n const { type, selectedItem } = changes;\n\n const inputValueMatchesSelectedItem =\n selectedItem != null && inputValue === itemToString(selectedItem);\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (\n type === useDownshiftCombobox.stateChangeTypes.InputKeyDownEnter ||\n type === useDownshiftCombobox.stateChangeTypes.ItemClick\n ) {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n } else if (\n !inputValueMatchesSelectedItem &&\n !inputValueIsEmpty &&\n !disableFilter\n ) {\n const filteredItems = matchSorter(\n allItemsOrderedByGroup,\n inputValue,\n filterOptions,\n );\n setItems(filteredItems);\n setHasExactMatch(\n matchSorter(filteredItems, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(allItemsOrderedByGroup);\n setHasExactMatch(true);\n }\n }),\n onIsOpenChange({ isOpen }) {\n if (isOpen === false) {\n // Delaying input reset timing to be after Popover close to avoid\n // list showing full version for a split second before closing\n setTimeout(() => {\n setInputValue(\"\");\n\n setItems(allItemsOrderedByGroup);\n }, 200);\n }\n },\n isItemDisabled(item) {\n if (isDisabled || isReadOnly) {\n return !!isDisabled || !!isReadOnly;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"disabled\" in item &&\n item.disabled\n ) {\n return true;\n }\n\n if (\n item &&\n item instanceof Object &&\n \"readOnly\" in item &&\n item.readOnly\n ) {\n return true;\n }\n\n if (disabledItems.includes(item)) {\n return true;\n }\n\n return false;\n },\n onHighlightedIndexChange(changes) {\n if (\n selectAll &&\n changes.highlightedIndex === 0 &&\n (\n [\n useDownshiftCombobox.stateChangeTypes.InputKeyDownHome,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownEnd,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownArrowDown,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownArrowUp,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownPageDown,\n useDownshiftCombobox.stateChangeTypes.InputKeyDownPageUp,\n ] as UseComboboxStateChangeTypes[]\n ).includes(changes.type) &&\n listRef.current\n ) {\n // Scroll to the top of the list when select all is highlighted\n const scrollParent = getScrollParent(listRef.current);\n if (scrollParent) {\n scrollParent.scrollTop = 0;\n }\n }\n },\n });\n\n // Now that useDownshiftCombobox has returned the setInputValue function,\n // we can store it here to call later inside of useDownshiftMultipleSelection\n storedSetInputValue = setInputValue;\n\n // prevent prop sync useEffects from running on intiial render\n const firstRenderRef = useRef(true);\n useEffect(() => {\n if (firstRenderRef.current === true) {\n firstRenderRef.current = false;\n }\n }, []);\n\n useEffect(() => {\n setIsDisabled(disabled);\n }, [disabled]);\n\n useEffect(() => {\n setIsReadOnly(readOnly);\n }, [readOnly]);\n\n // synchronize filtering state when \"items\" prop changes\n useEffect(() => {\n if (firstRenderRef.current) return;\n\n setTimeout(() => {\n const inputValueIsEmpty = inputValue == null || inputValue === \"\";\n\n if (!inputValueIsEmpty && !disableFilter) {\n const filteredItems = matchSorter(itemsProp, inputValue, filterOptions);\n setItems(filteredItems);\n setHasExactMatch(\n matchSorter(filteredItems, inputValue, {\n ...filterOptions,\n threshold: matchSorter.rankings.EQUAL,\n }).length > 0,\n );\n } else {\n setItems(itemsProp);\n setHasExactMatch(true);\n }\n }, 200);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [itemsProp]);\n\n const contextValue = useMemo(\n () => ({\n multiple: true,\n select: false,\n items: combinedItems,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n hasAddNew,\n setHasAddNew,\n onSelectItemAddNew,\n setOnSelectItemAddNew,\n hasExactMatch,\n setHasExactMatch,\n loading,\n referenceRef,\n contentRef,\n listRef,\n closeMenu,\n groupBy,\n groupToString,\n groups: searchedGroups,\n selectAll,\n }),\n [\n combinedItems,\n itemToString,\n itemToKey,\n isOpen,\n getLabelProps,\n getInputProps,\n getToggleButtonProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n selectedItem,\n selectedItems,\n disabledItems,\n setDisabledItems,\n setForceCloseOnSelectItems,\n setForceClearInputValueOnSelectItems,\n getSelectedItemProps,\n getDropdownProps,\n reset,\n addSelectedItem,\n removeSelectedItem,\n setSelectedItems,\n selectItem,\n inputValue,\n isDisabled,\n isReadOnly,\n setIsReadOnly,\n setIsDisabled,\n hasDisabledPopover,\n setHasDisabledPopover,\n hasEmpty,\n setHasEmpty,\n hasAddNew,\n setHasAddNew,\n onSelectItemAddNew,\n setOnSelectItemAddNew,\n hasExactMatch,\n setHasExactMatch,\n loading,\n referenceRef,\n contentRef,\n listRef,\n closeMenu,\n groupBy,\n groupToString,\n searchedGroups,\n selectAll,\n ],\n );\n\n return (\n <ComboboxContext.Provider value={contextValue}>\n <div\n className={ComboboxClassNames}\n data-anv=\"combobox\"\n style={{ ...style, ...layoutStyles }}\n ref={wrapperDivRef}\n >\n <Popover\n open={!isDisabled && isOpen}\n noPadding\n disableCaret\n fitScreen\n disableFlipFallback\n placement=\"bottom-start\"\n matchReferenceWidth={!disableMatchReferenceWidth}\n disableCloseOnClickOutside={disableCloseOnClickOutside}\n onClickOutside={handleOutsidePress}\n minHeight={minPopoverHeight}\n >\n {children}\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n};\n\n// multi-select and single-select need to be separate components because\n// we can't call hooks conditionally\nexport const ComboboxElement = function <Item>(props: ComboboxProps<Item>) {\n if (isMultiple(props)) {\n return <ComboboxMultiple<Item> {...props} />;\n } else {\n return <ComboboxSingle<Item> {...props} />;\n }\n};\n\n/**\n * Combobox component for selecting items with search and filtering capabilities.\n *\n * Features:\n * - Single and multiple item selection\n * - Search and filtering with configurable options\n * - Optional \"Add New\" item functionality\n * - Grouping support with custom group labels and sorting\n * - Loading states with spinner indicators\n * - Disabled and read-only states\n * - Customizable popover behavior and positioning\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox\n * items={items}\n * itemToString={(item) => item.name}\n * onChange={setSelectedItem}\n * filterOptions={{ keys: [\"name\"] }}\n * >\n * <Combobox.SearchField label=\"Select an item\" />\n * <Combobox.Content>\n * {({ items }) => (\n * <Combobox.List>\n * {items.map((item, i) => (\n * <Combobox.Item key={item.id} item={item} index={i}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n * )}\n * </Combobox.Content>\n * </Combobox>\n */\nexport const Combobox = Object.assign(ComboboxElement, {\n /**\n * ComboboxSelect component for selecting items from a predefined list.\n *\n * Features:\n * - Single and multiple item selection from predefined options\n * - Dropdown-style selection interface\n * - Grouping support with custom group labels and sorting\n * - Loading states with spinner indicators\n * - Disabled and read-only states\n * - Customizable popover behavior and positioning\n * - Full accessibility support with ARIA attributes\n * - Keyboard navigation support\n * - Layout utility props for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Select\n * items={items}\n * itemToString={(item) => item.name}\n * onChange={setSelectedItem}\n * >\n * <Combobox.SelectTrigger label=\"Select an item\" />\n * <Combobox.Content>\n * {({ items }) => (\n * <Combobox.List>\n * {items.map((item, i) => (\n * <Combobox.Item key={item.id} item={item} index={i}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n * )}\n * </Combobox.Content>\n * </Combobox.Select>\n */\n Select: ComboboxSelect,\n /**\n * ComboboxSearchField component for the search input field.\n *\n * Features:\n * - Search input with clear button functionality\n * - Supports multiple selection with chip display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n * - Enhanced prefix support for icons and avatars\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.SearchField\n * label=\"Search users\"\n * placeholder=\"Type to search...\"\n * prefix={{ icon: { svg: SearchIcon } }}\n * />\n */\n SearchField: ComboboxSearchField,\n /**\n * ComboboxSelectTrigger component for the select trigger field.\n *\n * Features:\n * - Select input with dropdown trigger\n * - Supports single selection display\n * - Handles keyboard navigation and accessibility\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events\n * - Enhanced prefix support for icons and avatars\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.SelectTrigger\n * label=\"Select user\"\n * placeholder=\"Choose a user...\"\n * prefix={{ avatar: { name: \"User\" } }}\n * />\n */\n SelectTrigger: ComboboxSelectTrigger,\n /**\n * ComboboxContent component for rendering the content area of a combobox.\n *\n * Features:\n * - Supports both popover and inline rendering modes\n * - Provides render props pattern for flexible content rendering\n * - Handles grouped items with proper ARIA labels\n * - Integrates with combobox state management\n * - Supports custom styling and layout\n * - Manages focus and blur events for popover behavior\n *\n * @example\n * <Combobox.Content>\n * {({ items }) => (\n * <Combobox.List>\n * {items.map((item, index) => (\n * <Combobox.Item key={item.id} item={item} index={index}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n * )}\n * </Combobox.Content>\n */\n Content: ComboboxContent,\n /**\n * ComboboxList component for rendering the list of items.\n *\n * Features:\n * - Renders list of items with proper accessibility\n * - Supports both single and multiple selection modes\n * - Loading state with spinner\n * - Empty state handling\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.List>\n * {items.map((item, i) => (\n * <Combobox.Item key={item.id} item={item} index={i}>\n * {item.name}\n * </Combobox.Item>\n * ))}\n * </Combobox.List>\n */\n List: ComboboxList,\n /**\n * ComboboxItem component for rendering individual items in the list.\n *\n * Features:\n * - Individual item rendering with proper accessibility\n * - Support for disabled state\n * - Custom content rendering\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Item item={item} index={index}>\n * <Flex direction=\"column\">\n * <Text>{item.name}</Text>\n * <Text size=\"small\" subdued>{item.description}</Text>\n * </Flex>\n * </Combobox.Item>\n */\n Item: ComboboxItem,\n /**\n * ComboboxItemAddNew component for rendering an \"Add New\" option.\n *\n * Features:\n * - \"Add New\" option that appears when no exact match is found\n * - Customizable content rendering\n * - Callback when selected\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.ItemAddNew onSelection={(inputValue) => addNewItem(inputValue)}>\n * Add \"{inputValue}\" as new item\n * </Combobox.ItemAddNew>\n */\n ItemAddNew: ComboboxItemAddNew,\n /**\n * ComboboxEmpty component for rendering content when no items are available.\n *\n * Features:\n * - Renders content when list is empty\n * - Customizable empty state message\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Combobox.Empty>\n * <Text>No items found. Try adjusting your search.</Text>\n * </Combobox.Empty>\n */\n Empty: ComboboxEmpty,\n});\n"],"names":["orderedItems","groups","useDownshiftSelect","selectedItem","useDownshiftMultipleSelection","selectedItems","Icon","CheckboxIndeterminate","CheckboxChecked","CheckboxOutline","items","Check","useDownshiftCombobox","inputValue","isOpen"],"mappings":"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"}