@choc-ui/chakra-autocomplete 4.21.1 → 5.0.0

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 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, ...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","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","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 // @ts-ignore\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\n const listIsFocused =\n e.relatedTarget === listRef?.current ||\n listRef.current?.contains(e.relatedTarget as any);\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 // @ts-ignore\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 Omit<FlexProps, 'children'> {\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 forwardRef,\n Input,\n InputProps,\n SystemStyleObject,\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 Omit<InputProps, 'children'> {\n children?: MaybeRenderProp<{ tags: UseAutoCompleteReturn[\"tags\"] }>;\n wrapStyles?: SystemStyleObject;\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","_listRef$current","contains","inputWrapperIsFocused","_inputWrapperRef$curr","latestValue","latestValueItem","newValue","queryIsEmpty","key","disabled","preventDefault","callAll","getItemProps","_fixed","itemChild","valueProp","onMouseOver","sx","_getValue","isFocused","isValidSuggestion","dangerouslySetInnerHTML","__html","aria-selected","aria-disabled","_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",".chakra-popover__popper","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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"}
@@ -14,7 +14,7 @@ var _createContext = /*#__PURE__*/createContext({
14
14
  useAutoCompleteContext = _createContext[1];
15
15
 
16
16
  function _extends() {
17
- _extends = Object.assign || function (target) {
17
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
18
18
  for (var i = 1; i < arguments.length; i++) {
19
19
  var source = arguments[i];
20
20
 
@@ -27,7 +27,6 @@ function _extends() {
27
27
 
28
28
  return target;
29
29
  };
30
-
31
30
  return _extends.apply(this, arguments);
32
31
  }
33
32
 
@@ -436,7 +435,7 @@ function useAutoComplete(autoCompleteProps) {
436
435
  runIfFn(onReady, {
437
436
  tags: tags
438
437
  });
439
- }, [values]);
438
+ }, [values]); // @ts-ignore
440
439
 
441
440
  var getInputProps = function getInputProps(props, themeInput) {
442
441
  var _onBlur = props.onBlur,
@@ -464,10 +463,10 @@ function useAutoComplete(autoCompleteProps) {
464
463
  if (listAllValuesOnFocus) setListAll(true);
465
464
  },
466
465
  onBlur: function onBlur(e) {
467
- var _inputWrapperRef$curr;
466
+ var _listRef$current, _inputWrapperRef$curr;
468
467
 
469
468
  runIfFn(_onBlur, e);
470
- var listIsFocused = e.relatedTarget === (listRef == null ? void 0 : listRef.current);
469
+ var listIsFocused = e.relatedTarget === (listRef == null ? void 0 : listRef.current) || ((_listRef$current = listRef.current) == null ? void 0 : _listRef$current.contains(e.relatedTarget));
471
470
  var inputWrapperIsFocused = (_inputWrapperRef$curr = inputWrapperRef.current) == null ? void 0 : _inputWrapperRef$curr.contains(e.relatedTarget);
472
471
 
473
472
  if (!listIsFocused && !inputWrapperIsFocused) {
@@ -645,7 +644,8 @@ function useAutoComplete(autoCompleteProps) {
645
644
  });
646
645
 
647
646
  if (noSuggestions && emptyState && !creatable) {
648
- return typeof emptyState === "boolean" ? defaultEmptyState : runIfFn(emptyState, {
647
+ return typeof emptyState === "boolean" ? defaultEmptyState // @ts-ignore
648
+ : runIfFn(emptyState, {
649
649
  query: query
650
650
  });
651
651
  }
@@ -858,7 +858,7 @@ var useDividerStyles = function useDividerStyles(props) {
858
858
  };
859
859
  };
860
860
 
861
- var _excluded$4 = ["children"],
861
+ var _excluded$4 = ["children", "isInvalid"],
862
862
  _excluded2$2 = ["ref"];
863
863
  var AutoCompleteInput = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
864
864
  var _useAutoCompleteConte = useAutoCompleteContext(),
@@ -869,6 +869,7 @@ var AutoCompleteInput = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
869
869
 
870
870
 
871
871
  var childrenProp = props.children,
872
+ isInvalid = props.isInvalid,
872
873
  rest = _objectWithoutPropertiesLoose(props, _excluded$4);
873
874
 
874
875
  var themeInput = useMultiStyleConfig("Input", props);
@@ -884,7 +885,9 @@ var AutoCompleteInput = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
884
885
  var children = runIfFn(childrenProp, {
885
886
  tags: tags
886
887
  });
887
- var simpleInput = React.createElement(Input, Object.assign({}, inputProps, {
888
+ var simpleInput = React.createElement(Input, Object.assign({
889
+ isInvalid: isInvalid
890
+ }, inputProps, {
888
891
  ref: ref
889
892
  }));
890
893
  var multipleInput = React.createElement(Wrap, Object.assign({}, wrapperProps, {