@choc-ui/chakra-autocomplete 4.20.1 → 4.21.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.
@@ -1 +1 @@
1
- {"version":3,"file":"chakra-autocomplete.cjs.production.min.js","sources":["../src/autocomplete-context.ts","../src/helpers/fuzzySearch.ts","../src/helpers/items.ts","../src/helpers/input.ts","../src/helpers/group.ts","../src/use-autocomplete.ts","../src/autocomplete.tsx","../src/autocomplete-item.tsx","../src/autocomplete-creatable.tsx","../src/autocomplete-group.tsx","../src/autocomplete-input.tsx","../src/components/empty-state.tsx","../src/helpers/list.ts","../src/autocomplete-list.tsx","../src/autocomplete-tag.tsx"],"sourcesContent":["import { createContext } from \"@chakra-ui/react-utils\";\nimport { UseAutoCompleteReturn } from \"./types\";\n\nexport const [AutoCompleteProvider, useAutoCompleteContext] = createContext<\n UseAutoCompleteReturn\n>({\n name: \"AutoCompleteContext\",\n errorMessage:\n \"useAutoCompleteContext: `context` is undefined. Seems you forgot to wrap all autoomplete components within `<AutoComplete />`\",\n});\n","/*\n * @param str1 The first string to compare.\n * @param str2 The second string to compare.\n * @param gramSize The size of the grams. Defaults to length 2.\n */\nexport function fuzzyScore(str1: string, str2: string, gramSize: number = 2) {\n function getNGrams(s: string, len: number) {\n s = \" \".repeat(len - 1) + s.toLowerCase() + \" \".repeat(len - 1);\n let v = new Array(s.length - len + 1);\n for (let i = 0; i < v.length; i++) {\n v[i] = s.slice(i, i + len);\n }\n return v;\n }\n\n if (!str1?.length || !str2?.length) {\n return 0.0;\n }\n\n //Order the strings by length so the order they're passed in doesn't matter\n //and so the smaller string's ngrams are always the ones in the set\n let s1 = str1.length < str2.length ? str1 : str2;\n let s2 = str1.length < str2.length ? str2 : str1;\n\n let pairs1 = getNGrams(s1, gramSize);\n let pairs2 = getNGrams(s2, gramSize);\n let set = new Set<string>(pairs1);\n\n let total = pairs2.length;\n let hits = 0;\n for (let item of pairs2) {\n if (set.delete(item)) {\n hits++;\n }\n }\n return hits / total;\n}\n","import { getChildrenDeep } from \"react-nanny\";\nimport { pick, isDefined, isEmpty } from \"@chakra-ui/utils\";\nimport { ReactNode } from \"react\";\nimport { FlexProps } from \"@chakra-ui/react\";\nimport { fuzzyScore } from \"./fuzzySearch\";\nimport { Item } from \"../types\";\nimport { AutoCompleteItemProps } from \"../autocomplete-item\";\n\nexport const getDefItemValue = (item: AutoCompleteItemProps[\"value\"]) =>\n (typeof item === \"string\" ? item : item[Object.keys(item)[0]])?.toString();\n\nexport const setEmphasis = (children: any, query: string) => {\n if (typeof children !== \"string\" || isEmpty(query)) {\n return children;\n }\n const newChildren = children\n .toString()\n .replace(\n new RegExp(escapeRegex(query), \"gi\"),\n (match: any) => `<mark>${match}</mark>`\n );\n return newChildren;\n};\n\nexport const getItemList = (children: ReactNode): Item[] => {\n const itemChildren = getChildrenDeep(\n children,\n (child: any) => child?.type?.displayName === \"AutoCompleteItem\"\n );\n\n return itemChildren.map(item => {\n const itemObj = pick(item.props, [\"value\", \"label\", \"fixed\", \"disabled\"]);\n const { getValue = getDefItemValue } = item.props;\n const value = getValue(itemObj.value);\n const finObj = isDefined(itemObj.label)\n ? itemObj\n : { ...itemObj, label: value };\n return { ...finObj, value, originalValue: itemObj.value };\n });\n};\n\nexport const getFocusedStyles = (): FlexProps => {\n return {\n bg: \"whiteAlpha.100\",\n _light: {\n bg: \"gray.200\",\n },\n };\n};\n\nexport const defaultFilterMethod = (\n query: string,\n itemValue: Item[\"value\"],\n itemLabel: Item[\"label\"]\n) => {\n return (\n itemValue?.toLowerCase().indexOf(query?.toLowerCase()) >= 0 ||\n itemLabel?.toLowerCase().indexOf(query?.toLowerCase()) >= 0 ||\n fuzzyScore(query, itemValue) >= 0.5 ||\n fuzzyScore(query, itemLabel) >= 0.5\n );\n};\n\nfunction escapeRegex(string: string) {\n return string.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n}\n","export const getMultipleWrapStyles = (themeInput: any, multiple?: boolean) => ({\n ...(multiple && {\n ...themeInput.field,\n _focusWithin: themeInput.field._focus,\n pos: \"relative\",\n minH: 9,\n // px: 3,\n py: 1.5,\n spacing: 3,\n }),\n cursor: \"text\",\n h: \"fit-content\",\n // w: \"full\",\n});\n","import { isDefined, runIfFn } from \"@chakra-ui/utils\";\nimport { getChildDeep } from \"react-nanny\";\nimport { ReactNode } from \"react\";\nimport { getDefItemValue } from \"./items\";\n\nexport const hasFirstItem = (children: ReactNode, firstItem: any) => {\n const result = getChildDeep(\n children,\n (child: any) =>\n child?.type?.displayName === \"AutoCompleteItem\" &&\n child.props.value === firstItem?.value\n );\n\n return result;\n};\nexport const hasLastItem = (children: ReactNode, lastItem: any) => {\n const result = getChildDeep(\n children,\n (child: any) =>\n child?.type?.displayName === \"AutoCompleteItem\" &&\n child.props.value === lastItem?.value\n );\n return result;\n};\n\nexport const hasChildren = (children: any, filteredList: any[]) => {\n return isDefined(\n getChildDeep(children, (child: any) => {\n const value = runIfFn(\n child.props?.getValue || getDefItemValue,\n child.props?.value || {}\n );\n return filteredList.some(i => i.value === value);\n })\n );\n};\n","import {\n useDimensions,\n useDisclosure,\n useUpdateEffect,\n useControllableState,\n} from \"@chakra-ui/react\";\nimport {\n callAll,\n getFirstItem,\n getLastItem,\n getNextItem,\n getPrevItem,\n isObject,\n isEmpty,\n isUndefined,\n runIfFn,\n} from \"@chakra-ui/utils\";\nimport { omit } from \"@chakra-ui/utils\";\n\nimport { useEffect, useRef, useState } from \"react\";\n\nimport { AutoCompleteProps } from \"./autocomplete\";\nimport {\n defaultFilterMethod,\n getDefItemValue,\n getFocusedStyles,\n getItemList,\n setEmphasis,\n} from \"./helpers/items\";\nimport { getMultipleWrapStyles } from \"./helpers/input\";\nimport { hasChildren, hasFirstItem, hasLastItem } from \"./helpers/group\";\nimport { Item, UseAutoCompleteReturn } from \"./types\";\n\n/**\n * useAutoComplete that provides all the state and focus management logic\n * for the autocomplete component. It is consumed by the `Autocomplete` component\n *\n */\n\nexport function useAutoComplete(\n autoCompleteProps: AutoCompleteProps\n): UseAutoCompleteReturn {\n let {\n closeOnBlur = true,\n closeOnSelect,\n creatable,\n emphasize,\n emptyState = true,\n freeSolo,\n isReadOnly,\n listAllValuesOnFocus,\n maxSuggestions,\n multiple,\n defaultValue,\n defaultValues = defaultValue ? [defaultValue] : [],\n onReady,\n defaultIsOpen,\n restoreOnBlurIfEmpty = !freeSolo,\n shouldRenderSuggestions = () => true,\n submitKeys = [],\n suggestWhenEmpty,\n value,\n values: valuesProp = value\n ? typeof value === \"string\"\n ? [value]\n : [...value]\n : undefined,\n } = autoCompleteProps;\n closeOnSelect = closeOnSelect ? closeOnSelect : multiple ? false : true;\n\n freeSolo = freeSolo ? freeSolo : multiple ? true : autoCompleteProps.freeSolo;\n\n const { isOpen, onClose, onOpen } = useDisclosure({ defaultIsOpen });\n\n const children = runIfFn(autoCompleteProps.children, {\n isOpen,\n onClose,\n onOpen,\n });\n const itemList: Item[] = getItemList(children);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const inputWrapperRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const interactionRef = useRef<\"mouse\" | \"keyboard\" | null>(null);\n\n const [listAll, setListAll] = useState(false);\n\n let defaultQuery = \"\";\n if (multiple) defaultQuery = \"\";\n else if (!isUndefined(defaultValues)) defaultQuery = defaultValues[0];\n else if (!isUndefined(valuesProp)) defaultQuery = valuesProp[0];\n\n const [query, setQuery] = useState<string>(defaultQuery ?? \"\");\n const filteredResults = itemList\n .filter(\n i =>\n i.fixed ||\n runIfFn(\n autoCompleteProps.filter || defaultFilterMethod,\n query,\n i.value,\n i.label\n ) ||\n listAll\n )\n .filter((i, index) =>\n maxSuggestions ? i.fixed || index < maxSuggestions : true\n );\n\n // Add Creatable to Filtered List\n const creatableArr: Item[] = creatable\n ? [{ value: query, noFilter: true, creatable: true }]\n : [];\n\n const filteredList = [...filteredResults, ...creatableArr];\n const [values, setValues] = useControllableState({\n defaultValue: defaultValues,\n value: valuesProp,\n onChange: (newValues: any[]) => {\n const item = filteredList.find(opt => opt.value === newValues[0]);\n const items = newValues.map(val =>\n filteredList.find(opt => opt.value === val)\n );\n runIfFn(\n autoCompleteProps.onChange,\n multiple ? newValues : newValues[0],\n multiple ? items : item\n );\n },\n });\n\n const [focusedValue, setFocusedValue] = useState<Item[\"value\"]>(\n itemList[0]?.value\n );\n\n const maxSelections = autoCompleteProps.maxSelections || values.length + 1;\n\n const focusedIndex = filteredList.findIndex(i => i.value === focusedValue);\n const nextItem = getNextItem(\n focusedIndex,\n filteredList,\n !!autoCompleteProps.rollNavigation\n );\n const prevItem = getPrevItem(\n focusedIndex,\n filteredList,\n !!autoCompleteProps.rollNavigation\n );\n const firstItem = getFirstItem(filteredList);\n const lastItem = getLastItem(filteredList);\n\n useUpdateEffect(() => {\n setFocusedValue(firstItem?.value);\n }, [query]);\n\n useEffect(() => {\n if (!isOpen) setFocusedValue(itemList[0]?.value);\n }, [isOpen]);\n\n useEffect(() => {\n const focusedItem = itemList.find(i => i.value === focusedValue);\n runIfFn(autoCompleteProps.onOptionFocus, {\n item: focusedItem!,\n focusMethod: interactionRef.current,\n isNewInput: focusedItem?.creatable,\n });\n }, [focusedValue, autoCompleteProps.onOptionFocus]);\n\n const selectItem = (optionValue: Item[\"value\"]) => {\n if (!values.includes(optionValue) && values.length < maxSelections) {\n setValues(v => (multiple ? [...v, optionValue] : [optionValue]));\n }\n\n const option = filteredList.find(i => i.value === optionValue);\n\n if (multiple) {\n inputRef.current?.focus();\n }\n if (autoCompleteProps.focusInputOnSelect) inputRef.current?.focus();\n runIfFn(autoCompleteProps.onSelectOption, {\n item: option!,\n selectMethod: interactionRef.current,\n isNewInput: option?.creatable,\n });\n if (option?.creatable) {\n runIfFn(autoCompleteProps.onCreateOption, {\n item: omit(option!, [\"noFilter\"]),\n selectMethod: interactionRef.current,\n });\n }\n\n const optionLabel = option?.label || option?.value;\n setQuery(() => (multiple ? \"\" : optionLabel ?? \"\"));\n\n if (closeOnSelect) onClose();\n };\n\n const removeItem: UseAutoCompleteReturn[\"removeItem\"] = (\n itemValue,\n focusInput\n ) => {\n setValues(prevValues => {\n const item = itemList.find(opt => opt.value === itemValue);\n runIfFn(autoCompleteProps.onTagRemoved, itemValue, item, prevValues);\n return prevValues.filter(i => i !== itemValue);\n });\n if (query === itemValue) setQuery(\"\");\n if (focusInput) inputRef.current?.focus();\n };\n\n const resetItems = (focusInput?: boolean) => {\n setValues([]);\n if (focusInput) inputRef.current?.focus();\n };\n\n const tags = multiple\n ? values.map(tag => ({\n label: itemList.find(item => item.value === tag)?.label || tag,\n onRemove: () => removeItem(tag),\n }))\n : [];\n\n useEffect(() => {\n runIfFn(onReady, { tags });\n }, [values]);\n\n const getInputProps: UseAutoCompleteReturn[\"getInputProps\"] = (\n props,\n themeInput\n ) => {\n const { onBlur, onChange, onFocus, onKeyDown, variant, ...rest } = props;\n\n return {\n wrapper: {\n ref: inputWrapperRef,\n onClick: () => {\n inputRef?.current?.focus();\n },\n ...getMultipleWrapStyles(themeInput, multiple),\n ...rest,\n },\n input: {\n isReadOnly,\n onFocus: e => {\n runIfFn(onFocus, e);\n if (autoCompleteProps.openOnFocus && !isReadOnly) onOpen();\n if (autoCompleteProps.selectOnFocus) e.target.select();\n if (listAllValuesOnFocus) setListAll(true);\n },\n onBlur: e => {\n runIfFn(onBlur, e);\n const listIsFocused = e.relatedTarget === listRef?.current;\n const inputWrapperIsFocused = inputWrapperRef.current?.contains(\n e.relatedTarget as any\n );\n if (!listIsFocused && !inputWrapperIsFocused) {\n if (closeOnBlur) onClose();\n if (!values.includes(e.target.value) && restoreOnBlurIfEmpty) {\n const latestValue = getLastItem(values);\n const latestValueItem = itemList.find(\n i => i.value === latestValue\n );\n const latestValueLabel =\n latestValueItem?.label || latestValueItem?.value || \"\";\n setQuery(latestValueLabel);\n }\n }\n },\n onChange: e => {\n const newValue = e.target.value;\n runIfFn(onChange, e);\n setQuery(newValue);\n const queryIsEmpty = isEmpty(newValue);\n if (\n runIfFn(shouldRenderSuggestions, newValue) &&\n (!queryIsEmpty || suggestWhenEmpty)\n )\n onOpen();\n else onClose();\n setListAll(false);\n },\n onKeyDown: e => {\n runIfFn(onKeyDown, e);\n interactionRef.current = \"keyboard\";\n\n const { key } = e;\n const focusedItem = filteredList[focusedIndex];\n if ([\"Enter\", ...submitKeys].includes(key)) {\n if (focusedItem && !focusedItem?.disabled)\n selectItem(focusedItem?.value);\n else inputRef.current?.focus();\n e.preventDefault();\n return;\n }\n\n if (key === \"ArrowDown\") {\n setFocusedValue(nextItem?.value);\n e.preventDefault();\n return;\n }\n\n if (key === \"ArrowUp\") {\n setFocusedValue(prevItem?.value);\n\n e.preventDefault();\n return;\n }\n\n if (key === \"Tab\") {\n setFocusedValue(nextItem?.value);\n\n if (isOpen) {\n e.preventDefault();\n }\n\n return;\n }\n\n if (key === \"Home\") {\n setFocusedValue(firstItem?.value);\n e.preventDefault();\n return;\n }\n\n if (key === \"End\") {\n setFocusedValue(lastItem?.value);\n e.preventDefault();\n return;\n }\n\n if (key === \"Escape\") {\n callAll(onClose, e.preventDefault);\n }\n },\n value: query,\n variant: multiple ? \"unstyled\" : variant,\n ...rest,\n },\n };\n };\n\n const wrapperDim = useDimensions(inputWrapperRef, true);\n const inputDim = useDimensions(inputRef, true);\n const getListProps: UseAutoCompleteReturn[\"getListProps\"] = () => {\n const width = autoCompleteProps.multiple\n ? (wrapperDim?.marginBox.width as number)\n : (inputDim?.marginBox.width as number);\n return {\n width,\n };\n };\n\n const getItemProps: UseAutoCompleteReturn[\"getItemProps\"] = (\n props,\n creatable\n ) => {\n const {\n _fixed,\n _focus,\n children: itemChild,\n disabled,\n label,\n value: valueProp,\n fixed,\n getValue = getDefItemValue,\n onClick,\n onMouseOver,\n sx,\n ...rest\n } = props;\n const value = creatable ? valueProp : getValue(valueProp)?.toString();\n const isFocused = value === focusedValue;\n const isValidSuggestion =\n filteredList.findIndex(i => i.value === value) >= 0;\n const itemLabel = itemChild || label || value;\n return {\n item: {\n ...(typeof itemLabel !== \"string\" || !emphasize\n ? { children: itemLabel }\n : {\n dangerouslySetInnerHTML: {\n __html: setEmphasis(itemLabel, query),\n },\n }),\n \"aria-selected\": values.includes(value),\n \"aria-disabled\": disabled,\n _disabled: { opacity: 0.4, cursor: \"not-allowed\", userSelect: \"none\" },\n onClick: e => {\n runIfFn(onClick, e);\n if (!disabled) selectItem(value);\n else inputRef.current?.focus();\n },\n onMouseOver: e => {\n runIfFn(onMouseOver, e);\n setFocusedValue(value);\n interactionRef.current = \"mouse\";\n },\n sx: {\n ...sx,\n mark: {\n color: \"inherit\",\n bg: \"transparent\",\n ...(isObject(emphasize)\n ? emphasize\n : {\n fontWeight: emphasize ? \"extrabold\" : \"inherit\",\n }),\n },\n },\n ...(isFocused && (_focus || getFocusedStyles())),\n ...(fixed && _fixed),\n ...rest,\n },\n root: {\n isValidSuggestion,\n value,\n },\n };\n };\n\n const getGroupProps: UseAutoCompleteReturn[\"getGroupProps\"] = props => {\n const hasItems = hasChildren(props.children, filteredList);\n return {\n divider: {\n hasFirstChild: hasFirstItem(props.children, firstItem),\n hasLastChild: hasLastItem(\n props.children,\n getLastItem(filteredList.filter(i => isUndefined(i?.noFilter)))\n ),\n },\n group: {\n display: hasItems ? \"initial\" : \"none\",\n },\n };\n };\n\n const getEmptyStateProps: UseAutoCompleteReturn[\"getEmptyStateProps\"] = defaultEmptyState => {\n const noSuggestions = filteredList.every(i => i.noFilter);\n if (noSuggestions && emptyState && !creatable) {\n return typeof emptyState === \"boolean\"\n ? defaultEmptyState\n : runIfFn(emptyState, { query });\n }\n };\n\n return {\n autoCompleteProps,\n children,\n filteredList,\n filteredResults,\n focusedValue,\n getEmptyStateProps,\n getGroupProps,\n getInputProps,\n getItemProps,\n getListProps,\n inputRef,\n interactionRef,\n isOpen,\n itemList,\n listRef,\n onClose,\n onOpen,\n query,\n removeItem,\n resetItems,\n setQuery,\n tags,\n values,\n };\n}\n","import React, { useImperativeHandle } from \"react\";\nimport { MaybeRenderProp } from \"@chakra-ui/react-utils\";\n\nimport { AutoCompleteProvider } from \"./autocomplete-context\";\nimport { useAutoComplete } from \"./use-autocomplete\";\nimport { chakra, forwardRef, Popover } from \"@chakra-ui/react\";\nimport { AutoCompleteRefMethods, UseAutoCompleteProps } from \"./types\";\n\nexport type AutoCompleteChildProps = {\n isOpen: boolean;\n onClose: () => void;\n onOpen: () => void;\n};\nexport interface AutoCompleteProps extends UseAutoCompleteProps {\n children: MaybeRenderProp<AutoCompleteChildProps>;\n ref?: React.RefObject<AutoCompleteRefMethods>;\n}\n\nexport const AutoComplete = forwardRef<AutoCompleteProps, \"div\">(\n (props, ref) => {\n const context = useAutoComplete(props);\n const {\n children,\n isOpen,\n onClose,\n onOpen,\n resetItems,\n removeItem,\n } = context;\n\n useImperativeHandle(ref, () => ({\n resetItems,\n removeItem,\n }));\n\n return (\n <AutoCompleteProvider value={context}>\n <Popover\n isLazy\n isOpen={isOpen}\n onClose={onClose}\n onOpen={onOpen}\n autoFocus={false}\n placement=\"bottom\"\n closeOnBlur={true}\n >\n <chakra.div\n sx={{\n \".chakra-popover__popper\": {\n position: \"unset !important\",\n },\n }}\n w=\"full\"\n ref={ref}\n >\n {children}\n </chakra.div>\n </Popover>\n </AutoCompleteProvider>\n );\n }\n);\n\nAutoComplete.displayName = \"AutoComplete\";\n","import {\n CSSObject,\n Flex,\n FlexProps,\n forwardRef,\n useMergeRefs,\n} from \"@chakra-ui/react\";\nimport { isUndefined, omit } from \"@chakra-ui/utils\";\nimport React, { useEffect, useRef } from \"react\";\n\nimport { useAutoCompleteContext } from \"./autocomplete-context\";\n\nexport interface AutoCompleteItemProps extends FlexProps {\n value: any;\n label?: string;\n fixed?: boolean;\n _focus?: CSSObject | any;\n disabled?: boolean;\n _fixed?: CSSObject;\n getValue?: (item: AutoCompleteItemProps[\"value\"]) => any;\n}\n\nexport const AutoCompleteItem = forwardRef<AutoCompleteItemProps, \"div\">(\n (props, forwardedRef) => {\n const {\n focusedValue,\n getItemProps,\n interactionRef,\n } = useAutoCompleteContext();\n const itemRef = useRef<any>();\n const ref = useMergeRefs(forwardedRef, itemRef);\n\n const itemProps = getItemProps(props);\n const { isValidSuggestion, value } = itemProps.root;\n\n const isFocused = focusedValue === value;\n\n useEffect(() => {\n if (isFocused && interactionRef.current === \"keyboard\")\n itemRef?.current?.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n });\n }, [isFocused, interactionRef]);\n\n useEffect(() => {\n if (typeof value !== \"string\") console.warn(\"wow\");\n if (typeof value !== \"string\" && isUndefined(props.getValue))\n console.error(\n \"You must define the `getValue` prop, when an Item's value is not a string\"\n );\n }, []);\n\n const { children, dangerouslySetInnerHTML, ...restProps } = itemProps.item;\n\n const rest = omit(restProps, [\"groupId\"] as any);\n\n return isValidSuggestion ? (\n <Flex ref={ref} {...baseItemStyles} {...rest}>\n {children ? (\n children\n ) : (\n <span dangerouslySetInnerHTML={dangerouslySetInnerHTML} />\n )}\n </Flex>\n ) : null;\n }\n);\n\nAutoCompleteItem.displayName = \"AutoCompleteItem\";\n\nexport const baseItemStyles: FlexProps = {\n mx: \"2\",\n px: \"2\",\n py: \"2\",\n rounded: \"md\",\n cursor: \"pointer\",\n};\n","import { Flex, FlexProps } from \"@chakra-ui/react\";\nimport { MaybeRenderProp } from \"@chakra-ui/react-utils\";\nimport { isEmpty, runIfFn } from \"@chakra-ui/utils\";\n\nimport React from \"react\";\n\nimport { useAutoCompleteContext } from \"./autocomplete-context\";\nimport { baseItemStyles } from \"./autocomplete-item\";\n\ninterface AutoCompleteCreatableProps extends FlexProps {\n children?: MaybeRenderProp<{ value: any }>;\n alwaysDisplay?: boolean;\n}\n\nexport function AutoCompleteCreatable(props: AutoCompleteCreatableProps) {\n const { alwaysDisplay, children: childrenProp, ...rest } = props;\n const {\n autoCompleteProps,\n getItemProps,\n query,\n filteredResults,\n } = useAutoCompleteContext();\n\n const queryValue = <mark>{query}</mark>;\n const { children, ...itemProps } = getItemProps(\n {\n ...props,\n value: query,\n children: runIfFn(childrenProp, {\n value: queryValue,\n }),\n },\n true\n ).item;\n\n const queryExistsInList = filteredResults.some(i => i.value === query);\n const showWhenEmpty = isEmpty(query) ? alwaysDisplay : true;\n const showCreatable =\n autoCompleteProps.creatable && showWhenEmpty && !queryExistsInList;\n\n return showCreatable ? (\n <Flex {...baseItemStyles} {...itemProps} {...rest}>\n {children || `Add ${query}`}\n </Flex>\n ) : null;\n}\n\nAutoCompleteCreatable.displayName = \"AutoCompleteCreatable\";\n","import {\n Box,\n BoxProps,\n Divider,\n DividerProps,\n Flex,\n FlexProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport { omit } from \"@chakra-ui/utils\";\nimport React from \"react\";\nimport { useAutoCompleteContext } from \"./autocomplete-context\";\n\nexport interface AutoCompleteGroupProps extends BoxProps {\n children?: React.ReactNode;\n showDivider?: boolean;\n dividerColor?: string;\n}\n\nexport const AutoCompleteGroup = forwardRef<AutoCompleteGroupProps, \"div\">(\n (props, ref) => {\n const { children, showDivider, ...restProps } = props;\n const rest = omit(restProps, [\"groupSibling\"] as any);\n\n const { getGroupProps } = useAutoCompleteContext();\n\n const { group } = getGroupProps(props);\n\n const dividerStyles = useDividerStyles(props);\n\n return (\n <Box ref={ref} {...group} {...rest}>\n <Divider {...dividerStyles.top} />\n {children}\n <Divider {...dividerStyles.bottom} />\n </Box>\n );\n }\n);\n\nexport const AutoCompleteGroupTitle = forwardRef<FlexProps, \"div\">(\n (props, ref) => {\n return <Flex {...baseTitleStyles} {...props} ref={ref} />;\n }\n);\n\nAutoCompleteGroup.displayName = \"AutoCompleteGroup\";\nAutoCompleteGroupTitle.displayName = \"AutoCompleteGroupTitle\";\n\nconst baseTitleStyles: FlexProps = {\n ml: 5,\n my: 1,\n fontSize: \"xs\",\n letterSpacing: \"wider\",\n fontWeight: \"extrabold\",\n textTransform: \"uppercase\",\n};\n\nconst useDividerStyles = (\n props: AutoCompleteGroupProps & { groupSibling?: boolean }\n) => {\n const { getGroupProps } = useAutoCompleteContext();\n\n const hasGroupSibling: unknown = props.groupSibling;\n\n const {\n divider: { hasFirstChild, hasLastChild },\n } = getGroupProps(props as AutoCompleteGroupProps);\n\n const baseStyles: DividerProps = {\n my: 2,\n borderColor: props.dividerColor,\n };\n\n const top = {\n ...baseStyles,\n mb: 4,\n display: !props.showDivider || hasFirstChild ? \"none\" : \"\",\n };\n const bottom = {\n ...baseStyles,\n display:\n !props.showDivider || hasLastChild || hasGroupSibling ? \"none\" : \"\",\n };\n\n return { top, bottom };\n};\n","import {\n CSSObject,\n forwardRef,\n Input,\n InputProps,\n useMergeRefs,\n useMultiStyleConfig,\n Wrap,\n WrapItem,\n} from \"@chakra-ui/react\";\nimport { runIfFn } from \"@chakra-ui/utils\";\nimport { MaybeRenderProp } from \"@chakra-ui/react-utils\";\nimport React from \"react\";\n\nimport { useAutoCompleteContext } from \"./autocomplete-context\";\nimport { UseAutoCompleteReturn } from \"./types\";\n\nexport interface AutoCompleteInputProps extends InputProps {\n children?: MaybeRenderProp<{ tags: UseAutoCompleteReturn[\"tags\"] }>;\n wrapStyles?: CSSObject;\n}\n\nexport const AutoCompleteInput = forwardRef<AutoCompleteInputProps, \"input\">(\n (props, forwardedRef) => {\n const {\n autoCompleteProps,\n inputRef,\n getInputProps,\n tags,\n } = useAutoCompleteContext();\n\n // const ref = useMergeRefs(forwardedRef, inputRef);\n\n const { children: childrenProp, ...rest } = props;\n\n const themeInput: any = useMultiStyleConfig(\"Input\", props);\n\n const { wrapper, input: inputProps } = getInputProps(rest, themeInput);\n const { ref: wrapperRef, ...wrapperProps } = wrapper;\n const ref = useMergeRefs(forwardedRef, inputRef);\n\n const children = runIfFn(childrenProp, { tags });\n\n const simpleInput = <Input {...(inputProps as any)} ref={ref} />;\n\n const multipleInput = (\n <Wrap {...wrapperProps} ref={wrapperRef}>\n {children}\n <WrapItem as={Input} {...(inputProps as any)} ref={ref} />\n </Wrap>\n );\n\n return <>{autoCompleteProps.multiple ? multipleInput : simpleInput}</>;\n }\n);\n\nAutoCompleteInput.displayName = \"Input\";\n\nAutoCompleteInput.id = \"Input\";\n","import { Box, BoxProps, Flex, FlexProps } from \"@chakra-ui/layout\";\nimport React from \"react\";\nimport { useAutoCompleteContext } from \"../autocomplete-context\";\n\nexport const EmptyState = (props: BoxProps) => {\n const { getEmptyStateProps } = useAutoCompleteContext();\n\n const emptyState = getEmptyStateProps(\n <Flex {...emptyStyles}>No options found!</Flex>\n );\n\n return <Box {...props}>{emptyState}</Box>;\n};\n\nconst emptyStyles: FlexProps = {\n fontSize: \"sm\",\n align: \"center\",\n justify: \"center\",\n fontWeight: \"bold\",\n fontStyle: \"italic\",\n};\n","import React from \"react\";\n\nconst VALID_AUTOCOMPLETE_LIST_CHILDREN = [\n \"AutoCompleteGroup\",\n \"AutoCompleteItem\",\n \"AutoCompleteCreatable\",\n];\n\nexport const siblingInfo = (children: React.ReactNode) => {\n const items = React.Children.map(children, (child: any, i) => {\n if (child?.type?.displayName === \"AutoCompleteGroup\") {\n const sibling: any = React.Children.toArray(children)[i + 1];\n return React.cloneElement(child, {\n groupSibling: sibling\n ? sibling.type.displayName === \"AutoCompleteGroup\"\n : false,\n });\n }\n return child;\n }) as React.ReactNode;\n\n const nonAutocompleteItems = React.Children.toArray(items).filter(\n (child: any) => {\n return !VALID_AUTOCOMPLETE_LIST_CHILDREN.includes(\n child?.type?.displayName\n );\n }\n );\n\n const autoCompleteItems = React.Children.toArray(items).filter(\n (child: any) => {\n return VALID_AUTOCOMPLETE_LIST_CHILDREN.includes(\n child?.type?.displayName\n );\n }\n );\n\n return [autoCompleteItems, nonAutocompleteItems] as const;\n};\n","import {\n forwardRef,\n PopoverContent,\n PopoverContentProps,\n useMergeRefs,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { useAutoCompleteContext } from \"./autocomplete-context\";\nimport { EmptyState } from \"./components/empty-state\";\nimport { siblingInfo } from \"./helpers/list\";\n\nexport type AutoCompleteListProps = PopoverContentProps;\n\nexport const AutoCompleteList = forwardRef<AutoCompleteListProps, \"div\">(\n (props, forwardedRef) => {\n const { children, ...rest } = props;\n const { listRef, getListProps } = useAutoCompleteContext();\n const ref = useMergeRefs(forwardedRef, listRef);\n const listProps = getListProps();\n const [autoCompleteItems, nonAutoCompleteItems] = siblingInfo(children);\n\n return (\n <PopoverContent ref={ref} {...baseStyles} {...listProps} {...rest}>\n {autoCompleteItems}\n <EmptyState />\n {nonAutoCompleteItems}\n </PopoverContent>\n );\n }\n);\n\nAutoCompleteList.displayName = \"AutoCompleteList\";\n\nconst baseStyles: PopoverContentProps = {\n mt: \"4\",\n py: \"4\",\n opacity: \"0\",\n bg: \"#232934\",\n rounded: \"md\",\n maxH: \"350px\",\n border: \"none\",\n shadow: \"base\",\n pos: \"absolute\",\n zIndex: \"popover\",\n overflowY: \"auto\",\n\n _light: {\n bg: \"#ffffff\",\n },\n\n _focus: {\n boxShadow: \"none\",\n },\n};\n","import { WrapItem } from \"@chakra-ui/layout\";\nimport { Tag, TagCloseButton, TagLabel, TagProps } from \"@chakra-ui/tag\";\nimport { runIfFn } from \"@chakra-ui/utils\";\nimport React, { memo } from \"react\";\n\ntype AutoCompleteTagProps = {\n disabled?: boolean;\n label: string;\n onRemove?: () => void;\n} & TagProps;\n\nexport const AutoCompleteTag = memo((props: AutoCompleteTagProps) => {\n const { label, onRemove, disabled, ...rest } = props;\n\n return (\n <WrapItem>\n <Tag\n borderRadius=\"md\"\n fontWeight=\"normal\"\n {...(disabled && disabledStyles)}\n {...rest}\n >\n <TagLabel>{label}</TagLabel>\n <TagCloseButton\n onClick={() => !disabled && runIfFn(onRemove)}\n cursor=\"pointer\"\n {...(disabled && disabledStyles)}\n />\n </Tag>\n </WrapItem>\n );\n});\n\nconst disabledStyles: TagProps = {\n cursor: \"text\",\n userSelect: \"none\",\n opacity: 0.4,\n _focus: { boxShadow: \"none\" },\n};\n"],"names":["createContext","name","errorMessage","AutoCompleteProvider","useAutoCompleteContext","fuzzyScore","str1","str2","gramSize","getNGrams","s","len","repeat","toLowerCase","v","Array","length","i","slice","s2","pairs1","pairs2","set","Set","total","hits","getDefItemValue","item","Object","keys","_ref","toString","setEmphasis","children","query","isEmpty","replace","RegExp","match","defaultFilterMethod","itemValue","itemLabel","indexOf","getMultipleWrapStyles","themeInput","multiple","field","_focusWithin","_focus","pos","minH","py","spacing","cursor","h","hasFirstItem","firstItem","getChildDeep","child","type","displayName","props","value","hasLastItem","lastItem","useAutoComplete","autoCompleteProps","closeOnBlur","closeOnSelect","creatable","emphasize","emptyState","freeSolo","isReadOnly","listAllValuesOnFocus","maxSuggestions","defaultValue","defaultValues","onReady","defaultIsOpen","restoreOnBlurIfEmpty","shouldRenderSuggestions","submitKeys","suggestWhenEmpty","values","valuesProp","undefined","useDisclosure","isOpen","onClose","onOpen","runIfFn","itemList","getChildrenDeep","map","itemObj","pick","getValue","finObj","isDefined","label","originalValue","getItemList","inputRef","useRef","inputWrapperRef","listRef","interactionRef","useState","listAll","setListAll","defaultQuery","isUndefined","setQuery","filteredResults","filter","fixed","index","filteredList","noFilter","useControllableState","onChange","newValues","find","opt","items","val","setValues","_itemList$","focusedValue","setFocusedValue","maxSelections","focusedIndex","findIndex","nextItem","getNextItem","rollNavigation","prevItem","getPrevItem","getFirstItem","getLastItem","useUpdateEffect","useEffect","_itemList$2","focusedItem","onOptionFocus","focusMethod","current","isNewInput","selectItem","optionValue","includes","option","focus","focusInputOnSelect","onSelectOption","selectMethod","onCreateOption","omit","optionLabel","removeItem","focusInput","prevValues","onTagRemoved","tags","tag","onRemove","wrapperDim","useDimensions","inputDim","getEmptyStateProps","defaultEmptyState","every","getGroupProps","hasItems","some","hasChildren","divider","hasFirstChild","hasLastChild","group","display","getInputProps","onBlur","onFocus","onKeyDown","variant","rest","wrapper","ref","onClick","input","e","openOnFocus","selectOnFocus","target","select","listIsFocused","relatedTarget","inputWrapperIsFocused","_inputWrapperRef$curr","contains","latestValue","latestValueItem","newValue","queryIsEmpty","key","disabled","preventDefault","callAll","getItemProps","_fixed","itemChild","valueProp","onMouseOver","sx","_getValue","isFocused","isValidSuggestion","dangerouslySetInnerHTML","__html","_disabled","opacity","userSelect","mark","color","bg","isObject","fontWeight","_light","root","getListProps","width","marginBox","resetItems","AutoComplete","forwardRef","context","useImperativeHandle","React","Popover","isLazy","autoFocus","placement","chakra","div","position","w","AutoCompleteItem","forwardedRef","itemRef","useMergeRefs","itemProps","scrollIntoView","behavior","block","console","warn","error","restProps","Flex","baseItemStyles","mx","px","rounded","AutoCompleteCreatable","alwaysDisplay","childrenProp","queryValue","queryExistsInList","showWhenEmpty","AutoCompleteGroup","dividerStyles","useDividerStyles","Box","Divider","top","bottom","AutoCompleteGroupTitle","baseTitleStyles","ml","my","fontSize","letterSpacing","textTransform","hasGroupSibling","groupSibling","baseStyles","borderColor","dividerColor","mb","showDivider","AutoCompleteInput","useMultiStyleConfig","inputProps","wrapperRef","wrapperProps","simpleInput","Input","multipleInput","Wrap","WrapItem","as","id","EmptyState","emptyStyles","align","justify","fontStyle","VALID_AUTOCOMPLETE_LIST_CHILDREN","AutoCompleteList","listProps","Children","sibling","toArray","cloneElement","nonAutocompleteItems","_child$type2","_child$type3","siblingInfo","autoCompleteItems","nonAutoCompleteItems","PopoverContent","mt","maxH","border","shadow","zIndex","overflowY","boxShadow","AutoCompleteTag","memo","Tag","borderRadius","disabledStyles","TagLabel","TagCloseButton"],"mappings":"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"}
1
+ {"version":3,"file":"chakra-autocomplete.cjs.production.min.js","sources":["../src/autocomplete-context.ts","../src/helpers/fuzzySearch.ts","../src/helpers/items.ts","../src/helpers/input.ts","../src/helpers/group.ts","../src/use-autocomplete.ts","../src/autocomplete.tsx","../src/autocomplete-item.tsx","../src/autocomplete-creatable.tsx","../src/autocomplete-group.tsx","../src/autocomplete-input.tsx","../src/components/empty-state.tsx","../src/helpers/list.ts","../src/autocomplete-list.tsx","../src/autocomplete-tag.tsx"],"sourcesContent":["import { createContext } from \"@chakra-ui/react-utils\";\nimport { UseAutoCompleteReturn } from \"./types\";\n\nexport const [AutoCompleteProvider, useAutoCompleteContext] = createContext<\n UseAutoCompleteReturn\n>({\n name: \"AutoCompleteContext\",\n errorMessage:\n \"useAutoCompleteContext: `context` is undefined. Seems you forgot to wrap all autoomplete components within `<AutoComplete />`\",\n});\n","/*\n * @param str1 The first string to compare.\n * @param str2 The second string to compare.\n * @param gramSize The size of the grams. Defaults to length 2.\n */\nexport function fuzzyScore(str1: string, str2: string, gramSize: number = 2) {\n function getNGrams(s: string, len: number) {\n s = \" \".repeat(len - 1) + s.toLowerCase() + \" \".repeat(len - 1);\n let v = new Array(s.length - len + 1);\n for (let i = 0; i < v.length; i++) {\n v[i] = s.slice(i, i + len);\n }\n return v;\n }\n\n if (!str1?.length || !str2?.length) {\n return 0.0;\n }\n\n //Order the strings by length so the order they're passed in doesn't matter\n //and so the smaller string's ngrams are always the ones in the set\n let s1 = str1.length < str2.length ? str1 : str2;\n let s2 = str1.length < str2.length ? str2 : str1;\n\n let pairs1 = getNGrams(s1, gramSize);\n let pairs2 = getNGrams(s2, gramSize);\n let set = new Set<string>(pairs1);\n\n let total = pairs2.length;\n let hits = 0;\n for (let item of pairs2) {\n if (set.delete(item)) {\n hits++;\n }\n }\n return hits / total;\n}\n","import { getChildrenDeep } from \"react-nanny\";\nimport { pick, isDefined, isEmpty } from \"@chakra-ui/utils\";\nimport { ReactNode } from \"react\";\nimport { FlexProps } from \"@chakra-ui/react\";\nimport { fuzzyScore } from \"./fuzzySearch\";\nimport { Item } from \"../types\";\nimport { AutoCompleteItemProps } from \"../autocomplete-item\";\n\nexport const getDefItemValue = (item: AutoCompleteItemProps[\"value\"]) =>\n (typeof item === \"string\" ? item : item[Object.keys(item)[0]])?.toString();\n\nexport const setEmphasis = (children: any, query: string) => {\n if (typeof children !== \"string\" || isEmpty(query)) {\n return children;\n }\n const newChildren = children\n .toString()\n .replace(\n new RegExp(escapeRegex(query), \"gi\"),\n (match: any) => `<mark>${match}</mark>`\n );\n return newChildren;\n};\n\nexport const getItemList = (children: ReactNode): Item[] => {\n const itemChildren = getChildrenDeep(\n children,\n (child: any) => child?.type?.displayName === \"AutoCompleteItem\"\n );\n\n return itemChildren.map(item => {\n const itemObj = pick(item.props, [\"value\", \"label\", \"fixed\", \"disabled\"]);\n const { getValue = getDefItemValue } = item.props;\n const value = getValue(itemObj.value);\n const finObj = isDefined(itemObj.label)\n ? itemObj\n : { ...itemObj, label: value };\n return { ...finObj, value, originalValue: itemObj.value };\n });\n};\n\nexport const getFocusedStyles = (): FlexProps => {\n return {\n bg: \"whiteAlpha.100\",\n _light: {\n bg: \"gray.200\",\n },\n };\n};\n\nexport const defaultFilterMethod = (\n query: string,\n itemValue: Item[\"value\"],\n itemLabel: Item[\"label\"]\n) => {\n return (\n itemValue?.toLowerCase().indexOf(query?.toLowerCase()) >= 0 ||\n itemLabel?.toLowerCase().indexOf(query?.toLowerCase()) >= 0 ||\n fuzzyScore(query, itemValue) >= 0.5 ||\n fuzzyScore(query, itemLabel) >= 0.5\n );\n};\n\nfunction escapeRegex(string: string) {\n return string.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n}\n","export const getMultipleWrapStyles = (themeInput: any, multiple?: boolean) => ({\n ...(multiple && {\n ...themeInput.field,\n _focusWithin: themeInput.field._focus,\n pos: \"relative\",\n minH: 9,\n // px: 3,\n py: 1.5,\n spacing: 3,\n }),\n cursor: \"text\",\n h: \"fit-content\",\n // w: \"full\",\n});\n","import { isDefined, runIfFn } from \"@chakra-ui/utils\";\nimport { getChildDeep } from \"react-nanny\";\nimport { ReactNode } from \"react\";\nimport { getDefItemValue } from \"./items\";\n\nexport const hasFirstItem = (children: ReactNode, firstItem: any) => {\n const result = getChildDeep(\n children,\n (child: any) =>\n child?.type?.displayName === \"AutoCompleteItem\" &&\n child.props.value === firstItem?.value\n );\n\n return result;\n};\nexport const hasLastItem = (children: ReactNode, lastItem: any) => {\n const result = getChildDeep(\n children,\n (child: any) =>\n child?.type?.displayName === \"AutoCompleteItem\" &&\n child.props.value === lastItem?.value\n );\n return result;\n};\n\nexport const hasChildren = (children: any, filteredList: any[]) => {\n return isDefined(\n getChildDeep(children, (child: any) => {\n const value = runIfFn(\n child.props?.getValue || getDefItemValue,\n child.props?.value || {}\n );\n return filteredList.some(i => i.value === value);\n })\n );\n};\n","import {\n useDimensions,\n useDisclosure,\n useUpdateEffect,\n useControllableState,\n} from \"@chakra-ui/react\";\nimport {\n callAll,\n getFirstItem,\n getLastItem,\n getNextItem,\n getPrevItem,\n isObject,\n isEmpty,\n isUndefined,\n runIfFn,\n} from \"@chakra-ui/utils\";\nimport { omit } from \"@chakra-ui/utils\";\n\nimport { useEffect, useRef, useState } from \"react\";\n\nimport { AutoCompleteProps } from \"./autocomplete\";\nimport {\n defaultFilterMethod,\n getDefItemValue,\n getFocusedStyles,\n getItemList,\n setEmphasis,\n} from \"./helpers/items\";\nimport { getMultipleWrapStyles } from \"./helpers/input\";\nimport { hasChildren, hasFirstItem, hasLastItem } from \"./helpers/group\";\nimport { Item, UseAutoCompleteReturn } from \"./types\";\n\n/**\n * useAutoComplete that provides all the state and focus management logic\n * for the autocomplete component. It is consumed by the `Autocomplete` component\n *\n */\n\nexport function useAutoComplete(\n autoCompleteProps: AutoCompleteProps\n): UseAutoCompleteReturn {\n let {\n closeOnBlur = true,\n closeOnSelect,\n creatable,\n emphasize,\n emptyState = true,\n freeSolo,\n isReadOnly,\n listAllValuesOnFocus,\n maxSuggestions,\n multiple,\n defaultValue,\n defaultValues = defaultValue ? [defaultValue] : [],\n onReady,\n defaultIsOpen,\n disableFilter,\n restoreOnBlurIfEmpty = !freeSolo,\n shouldRenderSuggestions = () => true,\n submitKeys = [],\n suggestWhenEmpty,\n value,\n values: valuesProp = value\n ? typeof value === \"string\"\n ? [value]\n : [...value]\n : undefined,\n } = autoCompleteProps;\n closeOnSelect = closeOnSelect ? closeOnSelect : multiple ? false : true;\n\n freeSolo = freeSolo ? freeSolo : multiple ? true : autoCompleteProps.freeSolo;\n\n const { isOpen, onClose, onOpen } = useDisclosure({ defaultIsOpen });\n\n const children = runIfFn(autoCompleteProps.children, {\n isOpen,\n onClose,\n onOpen,\n });\n const itemList: Item[] = getItemList(children);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const inputWrapperRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const interactionRef = useRef<\"mouse\" | \"keyboard\" | null>(null);\n\n const [listAll, setListAll] = useState(false);\n\n let defaultQuery = \"\";\n if (multiple) defaultQuery = \"\";\n else if (!isUndefined(defaultValues)) defaultQuery = defaultValues[0];\n else if (!isUndefined(valuesProp)) defaultQuery = valuesProp[0];\n\n const [query, setQuery] = useState<string>(defaultQuery ?? \"\");\n const filteredResults = disableFilter\n ? itemList\n : itemList\n .filter(\n i =>\n i.fixed ||\n runIfFn(\n autoCompleteProps.filter || defaultFilterMethod,\n query,\n i.value,\n i.label\n ) ||\n listAll\n )\n .filter((i, index) =>\n maxSuggestions ? i.fixed || index < maxSuggestions : true\n );\n\n // Add Creatable to Filtered List\n const creatableArr: Item[] = creatable\n ? [{ value: query, noFilter: true, creatable: true }]\n : [];\n\n const filteredList = [...filteredResults, ...creatableArr];\n const [values, setValues] = useControllableState({\n defaultValue: defaultValues,\n value: valuesProp,\n onChange: (newValues: any[]) => {\n const item = filteredList.find(opt => opt.value === newValues[0]);\n const items = newValues.map(val =>\n filteredList.find(opt => opt.value === val)\n );\n runIfFn(\n autoCompleteProps.onChange,\n multiple ? newValues : newValues[0],\n multiple ? items : item\n );\n },\n });\n\n const [focusedValue, setFocusedValue] = useState<Item[\"value\"]>(\n itemList[0]?.value\n );\n\n const maxSelections = autoCompleteProps.maxSelections || values.length + 1;\n\n const focusedIndex = filteredList.findIndex(i => i.value === focusedValue);\n const nextItem = getNextItem(\n focusedIndex,\n filteredList,\n !!autoCompleteProps.rollNavigation\n );\n const prevItem = getPrevItem(\n focusedIndex,\n filteredList,\n !!autoCompleteProps.rollNavigation\n );\n const firstItem = getFirstItem(filteredList);\n const lastItem = getLastItem(filteredList);\n\n useUpdateEffect(() => {\n setFocusedValue(firstItem?.value);\n }, [query]);\n\n useEffect(() => {\n if (!isOpen) setFocusedValue(itemList[0]?.value);\n }, [isOpen]);\n\n useEffect(() => {\n const focusedItem = itemList.find(i => i.value === focusedValue);\n runIfFn(autoCompleteProps.onOptionFocus, {\n item: focusedItem!,\n focusMethod: interactionRef.current,\n isNewInput: focusedItem?.creatable,\n });\n }, [focusedValue, autoCompleteProps.onOptionFocus]);\n\n const selectItem = (optionValue: Item[\"value\"]) => {\n if (!values.includes(optionValue) && values.length < maxSelections) {\n setValues(v => (multiple ? [...v, optionValue] : [optionValue]));\n }\n\n const option = filteredList.find(i => i.value === optionValue);\n\n if (multiple) {\n inputRef.current?.focus();\n }\n if (autoCompleteProps.focusInputOnSelect) inputRef.current?.focus();\n runIfFn(autoCompleteProps.onSelectOption, {\n item: option!,\n selectMethod: interactionRef.current,\n isNewInput: option?.creatable,\n });\n if (option?.creatable) {\n runIfFn(autoCompleteProps.onCreateOption, {\n item: omit(option!, [\"noFilter\"]),\n selectMethod: interactionRef.current,\n });\n }\n\n const optionLabel = option?.label || option?.value;\n setQuery(() => (multiple ? \"\" : optionLabel ?? \"\"));\n\n if (closeOnSelect) onClose();\n };\n\n const removeItem: UseAutoCompleteReturn[\"removeItem\"] = (\n itemValue,\n focusInput\n ) => {\n setValues(prevValues => {\n const item = itemList.find(opt => opt.value === itemValue);\n runIfFn(autoCompleteProps.onTagRemoved, itemValue, item, prevValues);\n return prevValues.filter(i => i !== itemValue);\n });\n if (query === itemValue) setQuery(\"\");\n if (focusInput) inputRef.current?.focus();\n };\n\n const resetItems = (focusInput?: boolean) => {\n setValues([]);\n if (focusInput) inputRef.current?.focus();\n };\n\n const tags = multiple\n ? values.map(tag => ({\n label: itemList.find(item => item.value === tag)?.label || tag,\n onRemove: () => removeItem(tag),\n }))\n : [];\n\n useEffect(() => {\n runIfFn(onReady, { tags });\n }, [values]);\n\n const getInputProps: UseAutoCompleteReturn[\"getInputProps\"] = (\n props,\n themeInput\n ) => {\n const { onBlur, onChange, onFocus, onKeyDown, variant, ...rest } = props;\n\n return {\n wrapper: {\n ref: inputWrapperRef,\n onClick: () => {\n inputRef?.current?.focus();\n },\n ...getMultipleWrapStyles(themeInput, multiple),\n ...rest,\n },\n input: {\n isReadOnly,\n onFocus: e => {\n runIfFn(onFocus, e);\n if (autoCompleteProps.openOnFocus && !isReadOnly) onOpen();\n if (autoCompleteProps.selectOnFocus) e.target.select();\n if (listAllValuesOnFocus) setListAll(true);\n },\n onBlur: e => {\n runIfFn(onBlur, e);\n const listIsFocused = e.relatedTarget === listRef?.current;\n const inputWrapperIsFocused = inputWrapperRef.current?.contains(\n e.relatedTarget as any\n );\n if (!listIsFocused && !inputWrapperIsFocused) {\n if (closeOnBlur) onClose();\n if (!values.includes(e.target.value) && restoreOnBlurIfEmpty) {\n const latestValue = getLastItem(values);\n const latestValueItem = itemList.find(\n i => i.value === latestValue\n );\n const latestValueLabel =\n latestValueItem?.label || latestValueItem?.value || \"\";\n setQuery(latestValueLabel);\n }\n }\n },\n onChange: e => {\n const newValue = e.target.value;\n runIfFn(onChange, e);\n setQuery(newValue);\n const queryIsEmpty = isEmpty(newValue);\n if (\n runIfFn(shouldRenderSuggestions, newValue) &&\n (!queryIsEmpty || suggestWhenEmpty)\n )\n onOpen();\n else onClose();\n setListAll(false);\n },\n onKeyDown: e => {\n runIfFn(onKeyDown, e);\n interactionRef.current = \"keyboard\";\n\n const { key } = e;\n const focusedItem = filteredList[focusedIndex];\n if ([\"Enter\", ...submitKeys].includes(key)) {\n if (focusedItem && !focusedItem?.disabled)\n selectItem(focusedItem?.value);\n else inputRef.current?.focus();\n e.preventDefault();\n return;\n }\n\n if (key === \"ArrowDown\") {\n setFocusedValue(nextItem?.value);\n e.preventDefault();\n return;\n }\n\n if (key === \"ArrowUp\") {\n setFocusedValue(prevItem?.value);\n\n e.preventDefault();\n return;\n }\n\n if (key === \"Tab\") {\n setFocusedValue(nextItem?.value);\n\n if (isOpen) {\n e.preventDefault();\n }\n\n return;\n }\n\n if (key === \"Home\") {\n setFocusedValue(firstItem?.value);\n e.preventDefault();\n return;\n }\n\n if (key === \"End\") {\n setFocusedValue(lastItem?.value);\n e.preventDefault();\n return;\n }\n\n if (key === \"Escape\") {\n callAll(onClose, e.preventDefault);\n }\n },\n value: query,\n variant: multiple ? \"unstyled\" : variant,\n ...rest,\n },\n };\n };\n\n const wrapperDim = useDimensions(inputWrapperRef, true);\n const inputDim = useDimensions(inputRef, true);\n const getListProps: UseAutoCompleteReturn[\"getListProps\"] = () => {\n const width = autoCompleteProps.multiple\n ? (wrapperDim?.marginBox.width as number)\n : (inputDim?.marginBox.width as number);\n return {\n width,\n };\n };\n\n const getItemProps: UseAutoCompleteReturn[\"getItemProps\"] = (\n props,\n creatable\n ) => {\n const {\n _fixed,\n _focus,\n children: itemChild,\n disabled,\n label,\n value: valueProp,\n fixed,\n getValue = getDefItemValue,\n onClick,\n onMouseOver,\n sx,\n ...rest\n } = props;\n const value = creatable ? valueProp : getValue(valueProp)?.toString();\n const isFocused = value === focusedValue;\n const isValidSuggestion =\n filteredList.findIndex(i => i.value === value) >= 0;\n const itemLabel = itemChild || label || value;\n return {\n item: {\n ...(typeof itemLabel !== \"string\" || !emphasize\n ? { children: itemLabel }\n : {\n dangerouslySetInnerHTML: {\n __html: setEmphasis(itemLabel, query),\n },\n }),\n \"aria-selected\": values.includes(value),\n \"aria-disabled\": disabled,\n _disabled: { opacity: 0.4, cursor: \"not-allowed\", userSelect: \"none\" },\n onClick: e => {\n runIfFn(onClick, e);\n if (!disabled) selectItem(value);\n else inputRef.current?.focus();\n },\n onMouseOver: e => {\n runIfFn(onMouseOver, e);\n setFocusedValue(value);\n interactionRef.current = \"mouse\";\n },\n sx: {\n ...sx,\n mark: {\n color: \"inherit\",\n bg: \"transparent\",\n ...(isObject(emphasize)\n ? emphasize\n : {\n fontWeight: emphasize ? \"extrabold\" : \"inherit\",\n }),\n },\n },\n ...(isFocused && (_focus || getFocusedStyles())),\n ...(fixed && _fixed),\n ...rest,\n },\n root: {\n isValidSuggestion,\n value,\n },\n };\n };\n\n const getGroupProps: UseAutoCompleteReturn[\"getGroupProps\"] = props => {\n const hasItems = hasChildren(props.children, filteredList);\n return {\n divider: {\n hasFirstChild: hasFirstItem(props.children, firstItem),\n hasLastChild: hasLastItem(\n props.children,\n getLastItem(filteredList.filter(i => isUndefined(i?.noFilter)))\n ),\n },\n group: {\n display: hasItems ? \"initial\" : \"none\",\n },\n };\n };\n\n const getEmptyStateProps: UseAutoCompleteReturn[\"getEmptyStateProps\"] = defaultEmptyState => {\n const noSuggestions = filteredList.every(i => i.noFilter);\n if (noSuggestions && emptyState && !creatable) {\n return typeof emptyState === \"boolean\"\n ? defaultEmptyState\n : runIfFn(emptyState, { query });\n }\n };\n\n return {\n autoCompleteProps,\n children,\n filteredList,\n filteredResults,\n focusedValue,\n getEmptyStateProps,\n getGroupProps,\n getInputProps,\n getItemProps,\n getListProps,\n inputRef,\n interactionRef,\n isOpen,\n itemList,\n listRef,\n onClose,\n onOpen,\n query,\n removeItem,\n resetItems,\n setQuery,\n tags,\n values,\n };\n}\n","import React, { useImperativeHandle } from \"react\";\nimport { MaybeRenderProp } from \"@chakra-ui/react-utils\";\n\nimport { AutoCompleteProvider } from \"./autocomplete-context\";\nimport { useAutoComplete } from \"./use-autocomplete\";\nimport { chakra, forwardRef, Popover } from \"@chakra-ui/react\";\nimport { AutoCompleteRefMethods, UseAutoCompleteProps } from \"./types\";\n\nexport type AutoCompleteChildProps = {\n isOpen: boolean;\n onClose: () => void;\n onOpen: () => void;\n};\nexport interface AutoCompleteProps extends UseAutoCompleteProps {\n children: MaybeRenderProp<AutoCompleteChildProps>;\n ref?: React.RefObject<AutoCompleteRefMethods>;\n}\n\nexport const AutoComplete = forwardRef<AutoCompleteProps, \"div\">(\n (props, ref) => {\n const context = useAutoComplete(props);\n const {\n children,\n isOpen,\n onClose,\n onOpen,\n resetItems,\n removeItem,\n } = context;\n\n useImperativeHandle(ref, () => ({\n resetItems,\n removeItem,\n }));\n\n return (\n <AutoCompleteProvider value={context}>\n <Popover\n isLazy\n isOpen={isOpen}\n onClose={onClose}\n onOpen={onOpen}\n autoFocus={false}\n placement=\"bottom\"\n closeOnBlur={true}\n >\n <chakra.div\n sx={{\n \".chakra-popover__popper\": {\n position: \"unset !important\",\n },\n }}\n w=\"full\"\n ref={ref}\n >\n {children}\n </chakra.div>\n </Popover>\n </AutoCompleteProvider>\n );\n }\n);\n\nAutoComplete.displayName = \"AutoComplete\";\n","import {\n CSSObject,\n Flex,\n FlexProps,\n forwardRef,\n useMergeRefs,\n} from \"@chakra-ui/react\";\nimport { isUndefined, omit } from \"@chakra-ui/utils\";\nimport React, { useEffect, useRef } from \"react\";\n\nimport { useAutoCompleteContext } from \"./autocomplete-context\";\n\nexport interface AutoCompleteItemProps extends FlexProps {\n value: any;\n label?: string;\n fixed?: boolean;\n _focus?: CSSObject | any;\n disabled?: boolean;\n _fixed?: CSSObject;\n getValue?: (item: AutoCompleteItemProps[\"value\"]) => any;\n}\n\nexport const AutoCompleteItem = forwardRef<AutoCompleteItemProps, \"div\">(\n (props, forwardedRef) => {\n const {\n focusedValue,\n getItemProps,\n interactionRef,\n } = useAutoCompleteContext();\n const itemRef = useRef<any>();\n const ref = useMergeRefs(forwardedRef, itemRef);\n\n const itemProps = getItemProps(props);\n const { isValidSuggestion, value } = itemProps.root;\n\n const isFocused = focusedValue === value;\n\n useEffect(() => {\n if (isFocused && interactionRef.current === \"keyboard\")\n itemRef?.current?.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n });\n }, [isFocused, interactionRef]);\n\n useEffect(() => {\n if (typeof value !== \"string\") console.warn(\"wow\");\n if (typeof value !== \"string\" && isUndefined(props.getValue))\n console.error(\n \"You must define the `getValue` prop, when an Item's value is not a string\"\n );\n }, []);\n\n const { children, dangerouslySetInnerHTML, ...restProps } = itemProps.item;\n\n const rest = omit(restProps, [\"groupId\"] as any);\n\n return isValidSuggestion ? (\n <Flex ref={ref} {...baseItemStyles} {...rest}>\n {children ? (\n children\n ) : (\n <span dangerouslySetInnerHTML={dangerouslySetInnerHTML} />\n )}\n </Flex>\n ) : null;\n }\n);\n\nAutoCompleteItem.displayName = \"AutoCompleteItem\";\n\nexport const baseItemStyles: FlexProps = {\n mx: \"2\",\n px: \"2\",\n py: \"2\",\n rounded: \"md\",\n cursor: \"pointer\",\n};\n","import { Flex, FlexProps } from \"@chakra-ui/react\";\nimport { MaybeRenderProp } from \"@chakra-ui/react-utils\";\nimport { isEmpty, runIfFn } from \"@chakra-ui/utils\";\n\nimport React from \"react\";\n\nimport { useAutoCompleteContext } from \"./autocomplete-context\";\nimport { baseItemStyles } from \"./autocomplete-item\";\n\ninterface AutoCompleteCreatableProps extends FlexProps {\n children?: MaybeRenderProp<{ value: any }>;\n alwaysDisplay?: boolean;\n}\n\nexport function AutoCompleteCreatable(props: AutoCompleteCreatableProps) {\n const { alwaysDisplay, children: childrenProp, ...rest } = props;\n const {\n autoCompleteProps,\n getItemProps,\n query,\n filteredResults,\n } = useAutoCompleteContext();\n\n const { children, ...itemProps } = getItemProps(\n {\n ...props,\n value: query,\n children: runIfFn(childrenProp, {\n value: query,\n }),\n },\n true\n ).item;\n\n const queryExistsInList = filteredResults.some(i => i.value === query);\n const showWhenEmpty = isEmpty(query) ? alwaysDisplay : true;\n const showCreatable =\n autoCompleteProps.creatable && showWhenEmpty && !queryExistsInList;\n\n return showCreatable ? (\n <Flex {...baseItemStyles} {...itemProps} {...rest}>\n {children || `Add ${query}`}\n </Flex>\n ) : null;\n}\n\nAutoCompleteCreatable.displayName = \"AutoCompleteCreatable\";\n","import {\n Box,\n BoxProps,\n Divider,\n DividerProps,\n Flex,\n FlexProps,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport { omit } from \"@chakra-ui/utils\";\nimport React from \"react\";\nimport { useAutoCompleteContext } from \"./autocomplete-context\";\n\nexport interface AutoCompleteGroupProps extends BoxProps {\n children?: React.ReactNode;\n showDivider?: boolean;\n dividerColor?: string;\n}\n\nexport const AutoCompleteGroup = forwardRef<AutoCompleteGroupProps, \"div\">(\n (props, ref) => {\n const { children, showDivider, ...restProps } = props;\n const rest = omit(restProps, [\"groupSibling\"] as any);\n\n const { getGroupProps } = useAutoCompleteContext();\n\n const { group } = getGroupProps(props);\n\n const dividerStyles = useDividerStyles(props);\n\n return (\n <Box ref={ref} {...group} {...rest}>\n <Divider {...dividerStyles.top} />\n {children}\n <Divider {...dividerStyles.bottom} />\n </Box>\n );\n }\n);\n\nexport const AutoCompleteGroupTitle = forwardRef<FlexProps, \"div\">(\n (props, ref) => {\n return <Flex {...baseTitleStyles} {...props} ref={ref} />;\n }\n);\n\nAutoCompleteGroup.displayName = \"AutoCompleteGroup\";\nAutoCompleteGroupTitle.displayName = \"AutoCompleteGroupTitle\";\n\nconst baseTitleStyles: FlexProps = {\n ml: 5,\n my: 1,\n fontSize: \"xs\",\n letterSpacing: \"wider\",\n fontWeight: \"extrabold\",\n textTransform: \"uppercase\",\n};\n\nconst useDividerStyles = (\n props: AutoCompleteGroupProps & { groupSibling?: boolean }\n) => {\n const { getGroupProps } = useAutoCompleteContext();\n\n const hasGroupSibling: unknown = props.groupSibling;\n\n const {\n divider: { hasFirstChild, hasLastChild },\n } = getGroupProps(props as AutoCompleteGroupProps);\n\n const baseStyles: DividerProps = {\n my: 2,\n borderColor: props.dividerColor,\n };\n\n const top = {\n ...baseStyles,\n mb: 4,\n display: !props.showDivider || hasFirstChild ? \"none\" : \"\",\n };\n const bottom = {\n ...baseStyles,\n display:\n !props.showDivider || hasLastChild || hasGroupSibling ? \"none\" : \"\",\n };\n\n return { top, bottom };\n};\n","import {\n CSSObject,\n forwardRef,\n Input,\n InputProps,\n useMergeRefs,\n useMultiStyleConfig,\n Wrap,\n WrapItem,\n} from \"@chakra-ui/react\";\nimport { runIfFn } from \"@chakra-ui/utils\";\nimport { MaybeRenderProp } from \"@chakra-ui/react-utils\";\nimport React from \"react\";\n\nimport { useAutoCompleteContext } from \"./autocomplete-context\";\nimport { UseAutoCompleteReturn } from \"./types\";\n\nexport interface AutoCompleteInputProps extends InputProps {\n children?: MaybeRenderProp<{ tags: UseAutoCompleteReturn[\"tags\"] }>;\n wrapStyles?: CSSObject;\n}\n\nexport const AutoCompleteInput = forwardRef<AutoCompleteInputProps, \"input\">(\n (props, forwardedRef) => {\n const {\n autoCompleteProps,\n inputRef,\n getInputProps,\n tags,\n } = useAutoCompleteContext();\n\n // const ref = useMergeRefs(forwardedRef, inputRef);\n\n const { children: childrenProp, isInvalid, ...rest } = props;\n\n const themeInput: any = useMultiStyleConfig(\"Input\", props);\n\n const { wrapper, input: inputProps } = getInputProps(rest, themeInput);\n const { ref: wrapperRef, ...wrapperProps } = wrapper;\n const ref = useMergeRefs(forwardedRef, inputRef);\n\n const children = runIfFn(childrenProp, { tags });\n\n const simpleInput = (\n <Input isInvalid={isInvalid} {...(inputProps as any)} ref={ref} />\n );\n\n const multipleInput = (\n <Wrap {...wrapperProps} ref={wrapperRef}>\n {children}\n <WrapItem as={Input} {...(inputProps as any)} ref={ref} />\n </Wrap>\n );\n\n return <>{autoCompleteProps.multiple ? multipleInput : simpleInput}</>;\n }\n);\n\nAutoCompleteInput.displayName = \"Input\";\n\nAutoCompleteInput.id = \"Input\";\n","import { Box, BoxProps, Flex, FlexProps } from \"@chakra-ui/layout\";\nimport React from \"react\";\nimport { useAutoCompleteContext } from \"../autocomplete-context\";\n\nexport const EmptyState = (props: BoxProps) => {\n const { getEmptyStateProps } = useAutoCompleteContext();\n\n const emptyState = getEmptyStateProps(\n <Flex {...emptyStyles}>No options found!</Flex>\n );\n\n return <Box {...props}>{emptyState}</Box>;\n};\n\nconst emptyStyles: FlexProps = {\n fontSize: \"sm\",\n align: \"center\",\n justify: \"center\",\n fontWeight: \"bold\",\n fontStyle: \"italic\",\n};\n","import React from \"react\";\n\nconst VALID_AUTOCOMPLETE_LIST_CHILDREN = [\n \"AutoCompleteGroup\",\n \"AutoCompleteItem\",\n \"AutoCompleteCreatable\",\n];\n\nexport const siblingInfo = (children: React.ReactNode) => {\n const items = React.Children.map(children, (child: any, i) => {\n if (child?.type?.displayName === \"AutoCompleteGroup\") {\n const sibling: any = React.Children.toArray(children)[i + 1];\n return React.cloneElement(child, {\n groupSibling: sibling\n ? sibling.type.displayName === \"AutoCompleteGroup\"\n : false,\n });\n }\n return child;\n }) as React.ReactNode;\n\n const nonAutocompleteItems = React.Children.toArray(items).filter(\n (child: any) => {\n return !VALID_AUTOCOMPLETE_LIST_CHILDREN.includes(\n child?.type?.displayName\n );\n }\n );\n\n const autoCompleteItems = React.Children.toArray(items).filter(\n (child: any) => {\n return VALID_AUTOCOMPLETE_LIST_CHILDREN.includes(\n child?.type?.displayName\n );\n }\n );\n\n return [autoCompleteItems, nonAutocompleteItems] as const;\n};\n","import {\n forwardRef,\n PopoverContent,\n PopoverContentProps,\n useMergeRefs,\n} from \"@chakra-ui/react\";\nimport React from \"react\";\nimport { useAutoCompleteContext } from \"./autocomplete-context\";\nimport { EmptyState } from \"./components/empty-state\";\nimport { siblingInfo } from \"./helpers/list\";\n\nexport type AutoCompleteListProps = PopoverContentProps;\n\nexport const AutoCompleteList = forwardRef<AutoCompleteListProps, \"div\">(\n (props, forwardedRef) => {\n const { children, ...rest } = props;\n const { listRef, getListProps } = useAutoCompleteContext();\n const ref = useMergeRefs(forwardedRef, listRef);\n const listProps = getListProps();\n const [autoCompleteItems, nonAutoCompleteItems] = siblingInfo(children);\n\n return (\n <PopoverContent ref={ref} {...baseStyles} {...listProps} {...rest}>\n {autoCompleteItems}\n <EmptyState />\n {nonAutoCompleteItems}\n </PopoverContent>\n );\n }\n);\n\nAutoCompleteList.displayName = \"AutoCompleteList\";\n\nconst baseStyles: PopoverContentProps = {\n mt: \"4\",\n py: \"4\",\n opacity: \"0\",\n bg: \"#232934\",\n rounded: \"md\",\n maxH: \"350px\",\n border: \"none\",\n shadow: \"base\",\n pos: \"absolute\",\n zIndex: \"popover\",\n overflowY: \"auto\",\n\n _light: {\n bg: \"#ffffff\",\n },\n\n _focus: {\n boxShadow: \"none\",\n },\n};\n","import { WrapItem } from \"@chakra-ui/layout\";\nimport { Tag, TagCloseButton, TagLabel, TagProps } from \"@chakra-ui/tag\";\nimport { runIfFn } from \"@chakra-ui/utils\";\nimport React, { memo } from \"react\";\n\ntype AutoCompleteTagProps = {\n disabled?: boolean;\n label: string;\n onRemove?: () => void;\n} & TagProps;\n\nexport const AutoCompleteTag = memo((props: AutoCompleteTagProps) => {\n const { label, onRemove, disabled, ...rest } = props;\n\n return (\n <WrapItem>\n <Tag\n borderRadius=\"md\"\n fontWeight=\"normal\"\n {...(disabled && disabledStyles)}\n {...rest}\n >\n <TagLabel>{label}</TagLabel>\n <TagCloseButton\n onClick={() => !disabled && runIfFn(onRemove)}\n cursor=\"pointer\"\n {...(disabled && disabledStyles)}\n />\n </Tag>\n </WrapItem>\n );\n});\n\nconst disabledStyles: TagProps = {\n cursor: \"text\",\n userSelect: \"none\",\n opacity: 0.4,\n _focus: { boxShadow: \"none\" },\n};\n"],"names":["createContext","name","errorMessage","AutoCompleteProvider","useAutoCompleteContext","fuzzyScore","str1","str2","gramSize","getNGrams","s","len","repeat","toLowerCase","v","Array","length","i","slice","s2","pairs1","pairs2","set","Set","total","hits","getDefItemValue","item","Object","keys","_ref","toString","setEmphasis","children","query","isEmpty","replace","RegExp","match","defaultFilterMethod","itemValue","itemLabel","indexOf","getMultipleWrapStyles","themeInput","multiple","field","_focusWithin","_focus","pos","minH","py","spacing","cursor","h","hasFirstItem","firstItem","getChildDeep","child","type","displayName","props","value","hasLastItem","lastItem","useAutoComplete","autoCompleteProps","closeOnBlur","closeOnSelect","creatable","emphasize","emptyState","freeSolo","isReadOnly","listAllValuesOnFocus","maxSuggestions","defaultValue","defaultValues","onReady","defaultIsOpen","disableFilter","restoreOnBlurIfEmpty","shouldRenderSuggestions","submitKeys","suggestWhenEmpty","values","valuesProp","undefined","useDisclosure","isOpen","onClose","onOpen","runIfFn","itemList","getChildrenDeep","map","itemObj","pick","getValue","finObj","isDefined","label","originalValue","getItemList","inputRef","useRef","inputWrapperRef","listRef","interactionRef","useState","listAll","setListAll","defaultQuery","isUndefined","setQuery","filteredResults","filter","fixed","index","filteredList","noFilter","useControllableState","onChange","newValues","find","opt","items","val","setValues","_itemList$","focusedValue","setFocusedValue","maxSelections","focusedIndex","findIndex","nextItem","getNextItem","rollNavigation","prevItem","getPrevItem","getFirstItem","getLastItem","useUpdateEffect","useEffect","_itemList$2","focusedItem","onOptionFocus","focusMethod","current","isNewInput","selectItem","optionValue","includes","option","focus","focusInputOnSelect","onSelectOption","selectMethod","onCreateOption","omit","optionLabel","removeItem","focusInput","prevValues","onTagRemoved","tags","tag","onRemove","wrapperDim","useDimensions","inputDim","getEmptyStateProps","defaultEmptyState","every","getGroupProps","hasItems","some","hasChildren","divider","hasFirstChild","hasLastChild","group","display","getInputProps","onBlur","onFocus","onKeyDown","variant","rest","wrapper","ref","onClick","input","e","openOnFocus","selectOnFocus","target","select","listIsFocused","relatedTarget","inputWrapperIsFocused","_inputWrapperRef$curr","contains","latestValue","latestValueItem","newValue","queryIsEmpty","key","disabled","preventDefault","callAll","getItemProps","_fixed","itemChild","valueProp","onMouseOver","sx","_getValue","isFocused","isValidSuggestion","dangerouslySetInnerHTML","__html","_disabled","opacity","userSelect","mark","color","bg","isObject","fontWeight","_light","root","getListProps","width","marginBox","resetItems","AutoComplete","forwardRef","context","useImperativeHandle","React","Popover","isLazy","autoFocus","placement","chakra","div","position","w","AutoCompleteItem","forwardedRef","itemRef","useMergeRefs","itemProps","scrollIntoView","behavior","block","console","warn","error","restProps","Flex","baseItemStyles","mx","px","rounded","AutoCompleteCreatable","alwaysDisplay","childrenProp","queryExistsInList","showWhenEmpty","AutoCompleteGroup","dividerStyles","useDividerStyles","Box","Divider","top","bottom","AutoCompleteGroupTitle","baseTitleStyles","ml","my","fontSize","letterSpacing","textTransform","hasGroupSibling","groupSibling","baseStyles","borderColor","dividerColor","mb","showDivider","AutoCompleteInput","isInvalid","useMultiStyleConfig","inputProps","wrapperRef","wrapperProps","simpleInput","Input","multipleInput","Wrap","WrapItem","as","id","EmptyState","emptyStyles","align","justify","fontStyle","VALID_AUTOCOMPLETE_LIST_CHILDREN","AutoCompleteList","listProps","Children","sibling","toArray","cloneElement","nonAutocompleteItems","_child$type2","_child$type3","siblingInfo","autoCompleteItems","nonAutoCompleteItems","PopoverContent","mt","maxH","border","shadow","zIndex","overflowY","boxShadow","AutoCompleteTag","memo","Tag","borderRadius","disabledStyles","TagLabel","TagCloseButton"],"mappings":"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"}
@@ -250,6 +250,7 @@ function useAutoComplete(autoCompleteProps) {
250
250
  defaultValues = _autoCompleteProps$de === void 0 ? defaultValue ? [defaultValue] : [] : _autoCompleteProps$de,
251
251
  onReady = autoCompleteProps.onReady,
252
252
  defaultIsOpen = autoCompleteProps.defaultIsOpen,
253
+ disableFilter = autoCompleteProps.disableFilter,
253
254
  _autoCompleteProps$re = autoCompleteProps.restoreOnBlurIfEmpty,
254
255
  restoreOnBlurIfEmpty = _autoCompleteProps$re === void 0 ? !freeSolo : _autoCompleteProps$re,
255
256
  _autoCompleteProps$sh = autoCompleteProps.shouldRenderSuggestions,
@@ -294,7 +295,7 @@ function useAutoComplete(autoCompleteProps) {
294
295
  query = _useState2[0],
295
296
  setQuery = _useState2[1];
296
297
 
297
- var filteredResults = itemList.filter(function (i) {
298
+ var filteredResults = disableFilter ? itemList : itemList.filter(function (i) {
298
299
  return i.fixed || runIfFn(autoCompleteProps.filter || defaultFilterMethod, query, i.value, i.label) || listAll;
299
300
  }).filter(function (i, index) {
300
301
  return maxSuggestions ? i.fixed || index < maxSuggestions : true;
@@ -774,12 +775,10 @@ function AutoCompleteCreatable(props) {
774
775
  query = _useAutoCompleteConte.query,
775
776
  filteredResults = _useAutoCompleteConte.filteredResults;
776
777
 
777
- var queryValue = React.createElement("mark", null, query);
778
-
779
778
  var _getItemProps$item = getItemProps(_extends({}, props, {
780
779
  value: query,
781
780
  children: runIfFn(childrenProp, {
782
- value: queryValue
781
+ value: query
783
782
  })
784
783
  }), true).item,
785
784
  children = _getItemProps$item.children,
@@ -859,7 +858,7 @@ var useDividerStyles = function useDividerStyles(props) {
859
858
  };
860
859
  };
861
860
 
862
- var _excluded$4 = ["children"],
861
+ var _excluded$4 = ["children", "isInvalid"],
863
862
  _excluded2$2 = ["ref"];
864
863
  var AutoCompleteInput = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
865
864
  var _useAutoCompleteConte = useAutoCompleteContext(),
@@ -870,6 +869,7 @@ var AutoCompleteInput = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
870
869
 
871
870
 
872
871
  var childrenProp = props.children,
872
+ isInvalid = props.isInvalid,
873
873
  rest = _objectWithoutPropertiesLoose(props, _excluded$4);
874
874
 
875
875
  var themeInput = useMultiStyleConfig("Input", props);
@@ -885,7 +885,9 @@ var AutoCompleteInput = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
885
885
  var children = runIfFn(childrenProp, {
886
886
  tags: tags
887
887
  });
888
- var simpleInput = React.createElement(Input, Object.assign({}, inputProps, {
888
+ var simpleInput = React.createElement(Input, Object.assign({
889
+ isInvalid: isInvalid
890
+ }, inputProps, {
889
891
  ref: ref
890
892
  }));
891
893
  var multipleInput = React.createElement(Wrap, Object.assign({}, wrapperProps, {