@choc-ui/chakra-autocomplete 4.16.2 → 4.18.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/autocomplete-list.tsx","../src/helpers/list.ts","../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 } from \"@chakra-ui/utils\";\nimport { getChildDeep } from \"react-nanny\";\nimport { ReactNode } from \"react\";\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(\n children,\n (child: any) =>\n filteredList.findIndex(i => i.value === child.props?.value) >= 0\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((_, index) => (maxSuggestions ? index < maxSuggestions : true));\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 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) e.preventDefault();\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 dim = useDimensions(inputWrapperRef, true);\n const getListProps: UseAutoCompleteReturn[\"getListProps\"] = () => {\n const width = dim?.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}\n\nexport function AutoCompleteCreatable(props: AutoCompleteCreatableProps) {\n const { 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 showCreatable =\n autoCompleteProps.creatable && !isEmpty(query) && !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 { inputRef, getInputProps, tags } = 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 return (\n <Wrap {...wrapperProps} ref={wrapperRef}>\n {children}\n <WrapItem as={Input} {...(inputProps as any)} ref={ref} />\n </Wrap>\n );\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 {\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\n return (\n <PopoverContent ref={ref} {...baseStyles} {...listProps} {...rest}>\n {siblingInfo(children)}\n <EmptyState />\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 React from \"react\";\n\nexport const siblingInfo = (children: React.ReactNode) => {\n return 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 });\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","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","focusedItem","onOptionFocus","focusMethod","current","isNewInput","selectItem","optionValue","includes","option","focus","focusInputOnSelect","onSelectOption","selectMethod","onCreateOption","omit","optionLabel","removeItem","focusInput","prevValues","onTagRemoved","tags","tag","onRemove","dim","useDimensions","getEmptyStateProps","defaultEmptyState","every","getGroupProps","hasItems","_child$props","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","childrenProp","queryValue","queryExistsInList","some","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","Wrap","WrapItem","as","Input","id","EmptyState","emptyStyles","align","justify","fontStyle","AutoCompleteList","listProps","PopoverContent","Children","sibling","toArray","cloneElement","siblingInfo","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/autocomplete-list.tsx","../src/helpers/list.ts","../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 } from \"@chakra-ui/utils\";\nimport { getChildDeep } from \"react-nanny\";\nimport { ReactNode } from \"react\";\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(\n children,\n (child: any) =>\n filteredList.findIndex(i => i.value === child.props?.value) >= 0\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) => (maxSuggestions ? i.fixed || index < maxSuggestions : true));\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 if (focusedItem.value === lastItem?.value) {\n console.log(\"last\");\n }\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 console.log(\"showWhenEmpty :>> \", showWhenEmpty);\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 {\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\n return (\n <PopoverContent ref={ref} {...baseStyles} {...listProps} {...rest}>\n {siblingInfo(children)}\n <EmptyState />\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 React from \"react\";\n\nexport const siblingInfo = (children: React.ReactNode) => {\n return 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 });\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","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","_child$props","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","console","log","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","warn","error","restProps","Flex","baseItemStyles","mx","px","rounded","AutoCompleteCreatable","alwaysDisplay","childrenProp","queryValue","queryExistsInList","some","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","AutoCompleteList","listProps","PopoverContent","Children","sibling","toArray","cloneElement","siblingInfo","mt","maxH","border","shadow","zIndex","overflowY","boxShadow","AutoCompleteTag","memo","Tag","borderRadius","disabledStyles","TagLabel","TagCloseButton"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import React, { useRef, useState, useEffect, useImperativeHandle, memo } from 'react';
2
2
  import { createContext } from '@chakra-ui/react-utils';
3
- import { useDisclosure, useControllableState, useUpdateEffect, useDimensions, forwardRef, Popover, chakra, useMergeRefs, Flex, Box, Divider, useMultiStyleConfig, Wrap, WrapItem, Input, PopoverContent } from '@chakra-ui/react';
3
+ import { useDisclosure, useControllableState, useUpdateEffect, useDimensions, forwardRef, Popover, chakra, useMergeRefs, Flex, Box, Divider, useMultiStyleConfig, Input, Wrap, WrapItem, PopoverContent } from '@chakra-ui/react';
4
4
  import { pick, isDefined, isEmpty, runIfFn, isUndefined, getNextItem, getPrevItem, getFirstItem, getLastItem, callAll, isObject, omit } from '@chakra-ui/utils';
5
5
  import { getChildrenDeep, getChildDeep } from 'react-nanny';
6
6
  import { Flex as Flex$1, Box as Box$1, WrapItem as WrapItem$1 } from '@chakra-ui/layout';
@@ -293,8 +293,8 @@ function useAutoComplete(autoCompleteProps) {
293
293
 
294
294
  var filteredResults = itemList.filter(function (i) {
295
295
  return i.fixed || runIfFn(autoCompleteProps.filter || defaultFilterMethod, query, i.value, i.label) || listAll;
296
- }).filter(function (_, index) {
297
- return maxSuggestions ? index < maxSuggestions : true;
296
+ }).filter(function (i, index) {
297
+ return maxSuggestions ? i.fixed || index < maxSuggestions : true;
298
298
  }); // Add Creatable to Filtered List
299
299
 
300
300
  var creatableArr = creatable ? [{
@@ -337,6 +337,11 @@ function useAutoComplete(autoCompleteProps) {
337
337
  useUpdateEffect(function () {
338
338
  setFocusedValue(firstItem == null ? void 0 : firstItem.value);
339
339
  }, [query]);
340
+ useEffect(function () {
341
+ var _itemList$2;
342
+
343
+ if (!isOpen) setFocusedValue((_itemList$2 = itemList[0]) == null ? void 0 : _itemList$2.value);
344
+ }, [isOpen]);
340
345
  useEffect(function () {
341
346
  var focusedItem = itemList.find(function (i) {
342
347
  return i.value === focusedValue;
@@ -510,7 +515,15 @@ function useAutoComplete(autoCompleteProps) {
510
515
 
511
516
  if (key === "Tab") {
512
517
  setFocusedValue(nextItem == null ? void 0 : nextItem.value);
513
- if (isOpen) e.preventDefault();
518
+
519
+ if (isOpen) {
520
+ if (focusedItem.value === (lastItem == null ? void 0 : lastItem.value)) {
521
+ console.log("last");
522
+ }
523
+
524
+ e.preventDefault();
525
+ }
526
+
514
527
  return;
515
528
  }
516
529
 
@@ -536,10 +549,11 @@ function useAutoComplete(autoCompleteProps) {
536
549
  };
537
550
  };
538
551
 
539
- var dim = useDimensions(inputWrapperRef, true);
552
+ var wrapperDim = useDimensions(inputWrapperRef, true);
553
+ var inputDim = useDimensions(inputRef, true);
540
554
 
541
555
  var getListProps = function getListProps() {
542
- var width = dim == null ? void 0 : dim.marginBox.width;
556
+ var width = autoCompleteProps.multiple ? wrapperDim == null ? void 0 : wrapperDim.marginBox.width : inputDim == null ? void 0 : inputDim.marginBox.width;
543
557
  return {
544
558
  width: width
545
559
  };
@@ -748,10 +762,11 @@ var baseItemStyles = {
748
762
  cursor: "pointer"
749
763
  };
750
764
 
751
- var _excluded$2 = ["children"],
765
+ var _excluded$2 = ["alwaysDisplay", "children"],
752
766
  _excluded2$1 = ["children"];
753
767
  function AutoCompleteCreatable(props) {
754
- var childrenProp = props.children,
768
+ var alwaysDisplay = props.alwaysDisplay,
769
+ childrenProp = props.children,
755
770
  rest = _objectWithoutPropertiesLoose(props, _excluded$2);
756
771
 
757
772
  var _useAutoCompleteConte = useAutoCompleteContext(),
@@ -774,7 +789,9 @@ function AutoCompleteCreatable(props) {
774
789
  var queryExistsInList = filteredResults.some(function (i) {
775
790
  return i.value === query;
776
791
  });
777
- var showCreatable = autoCompleteProps.creatable && !isEmpty(query) && !queryExistsInList;
792
+ var showWhenEmpty = isEmpty(query) ? alwaysDisplay : true;
793
+ console.log("showWhenEmpty :>> ", showWhenEmpty);
794
+ var showCreatable = autoCompleteProps.creatable && showWhenEmpty && !queryExistsInList;
778
795
  return showCreatable ? React.createElement(Flex, Object.assign({}, baseItemStyles, itemProps, rest), children || "Add " + query) : null;
779
796
  }
780
797
  AutoCompleteCreatable.displayName = "AutoCompleteCreatable";
@@ -848,6 +865,7 @@ var _excluded$4 = ["children"],
848
865
  _excluded2$2 = ["ref"];
849
866
  var AutoCompleteInput = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
850
867
  var _useAutoCompleteConte = useAutoCompleteContext(),
868
+ autoCompleteProps = _useAutoCompleteConte.autoCompleteProps,
851
869
  inputRef = _useAutoCompleteConte.inputRef,
852
870
  getInputProps = _useAutoCompleteConte.getInputProps,
853
871
  tags = _useAutoCompleteConte.tags; // const ref = useMergeRefs(forwardedRef, inputRef);
@@ -869,13 +887,17 @@ var AutoCompleteInput = /*#__PURE__*/forwardRef(function (props, forwardedRef) {
869
887
  var children = runIfFn(childrenProp, {
870
888
  tags: tags
871
889
  });
872
- return React.createElement(Wrap, Object.assign({}, wrapperProps, {
890
+ var simpleInput = React.createElement(Input, Object.assign({}, inputProps, {
891
+ ref: ref
892
+ }));
893
+ var multipleInput = React.createElement(Wrap, Object.assign({}, wrapperProps, {
873
894
  ref: wrapperRef
874
895
  }), children, React.createElement(WrapItem, Object.assign({
875
896
  as: Input
876
897
  }, inputProps, {
877
898
  ref: ref
878
899
  })));
900
+ return React.createElement(React.Fragment, null, autoCompleteProps.multiple ? multipleInput : simpleInput);
879
901
  });
880
902
  AutoCompleteInput.displayName = "Input";
881
903
  AutoCompleteInput.id = "Input";