@chayns-components/core 5.0.0-beta.1197 → 5.0.0-beta.1199

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.
@@ -309,7 +309,7 @@ const SearchBox = /*#__PURE__*/(0, _react.forwardRef)(({
309
309
  color: theme['006']
310
310
  }));
311
311
  }, [handleClick, shouldShowToggleIcon, theme]);
312
- const leftElement = (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_SearchBox.StyledSearchBoxLeftWrapper, null, leftIcons && /*#__PURE__*/_react.default.createElement(_Icon.default, {
312
+ const leftElement = (0, _react.useMemo)(() => (leftIcons || selectedImage) && /*#__PURE__*/_react.default.createElement(_SearchBox.StyledSearchBoxLeftWrapper, null, leftIcons && /*#__PURE__*/_react.default.createElement(_Icon.default, {
313
313
  icons: leftIcons
314
314
  }), selectedImage && selectedImage), [leftIcons, selectedImage]);
315
315
 
@@ -1 +1 @@
1
- {"version":3,"file":"SearchBox.js","names":["_react","_interopRequireWildcard","require","_styledComponents","_calculate","_searchBox","_Icon","_interopRequireDefault","_Input","_GroupName","_SearchBoxBody","_SearchBoxItem","_SearchBoxItem2","_SearchBox","_uuid","_DropdownBodyWrapper","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SearchBox","forwardRef","isInvalid","placeholder","leftIcons","lists","onChange","onBlur","onSelect","onKeyDown","selectedId","container","shouldHideFilterButtons","shouldShowRoundImage","shouldShowContentOnEmptyInput","shouldAddInputToList","shouldShowToggleIcon","customFilter","presetValue","ref","matchingListsItems","setMatchingListsItems","useState","selectedImage","setSelectedImage","value","setValue","height","setHeight","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","shouldShowBody","setShouldShowBody","uuid","useUuid","boxRef","useRef","contentRef","inputRef","hasFocusRef","isAnimatingRef","shouldShowPresetValue","theme","useTheme","useEffect","filterButtons","useMemo","items","forEach","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","newList","searchList","searchString","undefined","filteredMatchingListItems","map","filter","item","handleOpen","useCallback","handleClose","handleFilterButtonsGroupSelect","keys","textArray","calculateContentHeight","selectedItem","find","imageUrl","createElement","StyledSearchBoxItemImage","src","$shouldShowRoundImage","current","handleFocus","toLowerCase","handleClick","rightElement","StyledSearchBoxIcon","onClick","icons","color","leftElement","StyledSearchBoxLeftWrapper","handleChange","event","filteredLists","target","handleBlur","handleSelect","newItem","replace","content","index","key","name","handleKeyDown","_contentRef$current","_childrenArray$find","preventDefault","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","newIndex","prevElement","tabIndex","newElement","focus","_element$children$","element","textContent","attributes","_element$children$2","nodeValue","document","addEventListener","removeEventListener","handleKeyPress","keyCode","useImperativeHandle","clear","StyledSearchBox","onFocus","shouldShowDropdown","trim","onClose","anchorElement","maxHeight","selectedGroups","onGroupSelect","displayName","_default","exports"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n FocusEvent,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport type { IFilterButtonItem } from '../../types/filterButtons';\nimport type { ISearchBoxItem, ISearchBoxItems } from '../../types/searchBox';\nimport { calculateContentHeight } from '../../utils/calculate';\nimport { searchList } from '../../utils/searchBox';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\nimport Icon from '../icon/Icon';\nimport Input from '../input/Input';\nimport GroupName from './group-name/GroupName';\nimport SearchBoxBody from './search-box-body/SearchBoxBody';\nimport SearchBoxItem from './search-box-item/SearchBoxItem';\nimport { StyledSearchBoxItemImage } from './search-box-item/SearchBoxItem.styles';\nimport {\n StyledSearchBox,\n StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\nimport { useUuid } from '../../hooks/uuid';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\n\nexport type SearchBoxRef = {\n clear: VoidFunction;\n};\n\nexport type SearchBoxProps = {\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * If true, the input field is marked as invalid\n */\n isInvalid?: boolean;\n /**\n * An optional icon that is displayed inside the left side of the input.\n */\n leftIcons?: string[];\n /**\n * List of groups with items that can be searched. It is possible to give only one list; if multiple lists are provided, the 'group name' parameter becomes mandatory.\n */\n lists: ISearchBoxItems[];\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * Function to be executed when the input lost focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the input is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function that is executed when a letter is pressed\n */\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when an item is selected.\n */\n onSelect?: (item: ISearchBoxItem) => void;\n /**\n * Control the selected item. If you use this prop, make sure to update it when the user selects an item.\n */\n selectedId?: string;\n /**\n * If true, the value in the Input is displayed in the list.\n */\n shouldAddInputToList: boolean;\n /**\n * If true, the filter buttons are hidden.\n */\n shouldHideFilterButtons?: boolean;\n /**\n * Whether the full list of items should be displayed if the input is empty.\n */\n shouldShowContentOnEmptyInput?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the icon to open and close the list should be displayed.\n */\n shouldShowToggleIcon?: boolean;\n /**\n * An optional callback function to filter the elements to be displayed\n */\n customFilter?: (item: ISearchBoxItem) => boolean;\n /**\n * Set an input for the search box - it is not an item of a list, just a string.\n */\n presetValue?: string;\n};\n\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n isInvalid = false,\n placeholder,\n leftIcons,\n lists,\n onChange,\n onBlur,\n onSelect,\n onKeyDown,\n selectedId,\n container,\n shouldHideFilterButtons = false,\n shouldShowRoundImage,\n shouldShowContentOnEmptyInput = true,\n shouldAddInputToList = true,\n shouldShowToggleIcon = false,\n customFilter,\n presetValue,\n },\n ref,\n ) => {\n const [matchingListsItems, setMatchingListsItems] = useState<ISearchBoxItems[]>(lists);\n const [selectedImage, setSelectedImage] = useState<ReactElement>();\n const [value, setValue] = useState(\n typeof presetValue === 'string' && presetValue !== '' ? presetValue : '',\n );\n const [height, setHeight] = useState<number>(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [hasMultipleGroups, setHasMultipleGroups] = useState<boolean>(lists.length > 1);\n const [filteredChildrenArray, setFilteredChildrenArray] = useState<Element[]>();\n const [inputToListValue, setInputToListValue] = useState<string>('');\n const [groups, setGroups] = useState<string[]>(['all']);\n const [shouldShowBody, setShouldShowBody] = useState(false);\n\n const uuid = useUuid();\n\n const boxRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const hasFocusRef = useRef<boolean>(false);\n const isAnimatingRef = useRef<boolean>(false);\n const shouldShowPresetValue = useRef<boolean>(\n typeof presetValue === 'string' && presetValue !== '',\n );\n\n const theme = useTheme() as Theme;\n\n /**\n * Checks if Lists are smaller then 1\n */\n useEffect(() => {\n setHasMultipleGroups(lists.length > 1);\n }, [lists]);\n\n const filterButtons = useMemo(() => {\n const items: IFilterButtonItem[] = [];\n\n if (lists.length <= 1) {\n return items;\n }\n\n lists.forEach(({ groupName }) => {\n if (groupName) {\n items.push({\n id: groupName,\n text: groupName,\n });\n }\n });\n\n return items;\n }, [lists]);\n\n /**\n * Filters the lists by the FilterButtons\n */\n const activeList = useMemo(() => {\n let newLists: ISearchBoxItems[] = [];\n\n if (groups[0] === 'all') {\n newLists = lists;\n } else {\n lists.forEach((list) => {\n if (list.groupName && groups.includes(list.groupName)) {\n newLists.push(list);\n }\n });\n }\n\n const newMatchingItems: ISearchBoxItems[] = [];\n\n newLists.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [groups, lists, customFilter, shouldAddInputToList, value]);\n\n const handleOpen = useCallback(() => {\n setShouldShowBody(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setShouldShowBody(false);\n }, []);\n\n const handleFilterButtonsGroupSelect = (keys: string[]) => {\n setGroups(keys.length === 0 ? ['all'] : keys);\n };\n\n /**\n * This hook calculates the height\n */\n useEffect(() => {\n const textArray: string[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n list.forEach(({ text }) => textArray.push(text));\n if (!groupName) {\n return;\n }\n textArray.push(groupName);\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n textArray.push(inputToListValue);\n }\n\n setHeight(calculateContentHeight(textArray));\n }, [inputToListValue, activeList, placeholder, shouldAddInputToList]);\n\n useEffect(() => {\n if (selectedId) {\n activeList.forEach(({ list }) => {\n const selectedItem = list.find(({ id }) => id === selectedId);\n if (selectedItem) {\n setValue(selectedItem.text);\n\n if (selectedItem.imageUrl) {\n setSelectedImage(\n <StyledSearchBoxItemImage\n src={selectedItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />,\n );\n }\n }\n });\n }\n }, [activeList, selectedId, shouldShowRoundImage]);\n\n /**\n * This hook resets the value if the selectedId changes to undefined. This is an own useEffect because the value\n * should not be reset if the list changes and the selectedId is still undefined.\n */\n useEffect(() => {\n if (!selectedId && !shouldShowPresetValue.current) {\n setValue('');\n }\n }, [selectedId]);\n\n useEffect(() => {\n isAnimatingRef.current = shouldShowBody;\n }, [shouldShowBody]);\n\n useEffect(() => {\n if (matchingListsItems.length !== 0 && !isAnimatingRef.current && hasFocusRef.current) {\n handleOpen();\n }\n }, [handleOpen, matchingListsItems.length]);\n\n /**\n * This function sets the items on focus if shouldShowContentOnEmptyInput\n */\n const handleFocus = useCallback(() => {\n hasFocusRef.current = true;\n\n if (shouldShowContentOnEmptyInput) {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0) {\n handleOpen();\n }\n }\n }, [\n activeList,\n handleOpen,\n customFilter,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n /**\n * This function filters the lists by input\n */\n\n useEffect(() => {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n if (shouldAddInputToList && inputToListValue !== '') {\n newMatchingItems.forEach(({ list }) => {\n list.forEach(({ text }) => {\n if (text.toLowerCase() === inputToListValue.toLowerCase()) {\n setInputToListValue('');\n }\n });\n });\n }\n }, [\n inputToListValue,\n activeList,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n const handleClick = useCallback(() => {\n if (shouldShowBody) {\n handleClose();\n } else {\n handleOpen();\n }\n }, [handleClose, handleOpen, shouldShowBody]);\n\n const rightElement = useMemo(() => {\n if (!shouldShowToggleIcon) {\n return undefined;\n }\n\n return (\n <StyledSearchBoxIcon onClick={handleClick}>\n <Icon icons={['fa fa-chevron-down']} color={theme['006'] as string} />\n </StyledSearchBoxIcon>\n );\n }, [handleClick, shouldShowToggleIcon, theme]);\n\n const leftElement = useMemo(\n () => (\n <StyledSearchBoxLeftWrapper>\n {leftIcons && <Icon icons={leftIcons} />}\n {selectedImage && selectedImage}\n </StyledSearchBoxLeftWrapper>\n ),\n [leftIcons, selectedImage],\n );\n\n /**\n * This function handles changes of the input\n */\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const filteredLists: ISearchBoxItems[] = [];\n shouldShowPresetValue.current = false;\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: event.target.value });\n\n if (newList.length > 0) {\n filteredLists.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (filteredLists.length === 0 && shouldAddInputToList) {\n filteredLists.push({\n groupName: undefined,\n list: [],\n });\n }\n\n setSelectedImage(undefined);\n\n if (!shouldShowContentOnEmptyInput && !event.target.value) {\n setMatchingListsItems([]);\n } else {\n setMatchingListsItems(filteredLists);\n }\n\n if (filteredLists.length !== 0) {\n handleOpen();\n }\n\n setValue(event.target.value);\n setInputToListValue(event.target.value);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n },\n [activeList, handleOpen, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput],\n );\n\n /**\n * This function handles the blur event of the input\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n hasFocusRef.current = false;\n\n if (typeof onBlur === 'function') {\n onBlur(event);\n }\n },\n [onBlur],\n );\n\n /**\n * This function handles the item selection\n */\n const handleSelect = useCallback(\n (item: ISearchBoxItem) => {\n const newItem = {\n ...item,\n text: item.text.replace('<b>', '').replace('</b>', '').replace('</b', ''),\n };\n\n setValue(newItem.text);\n handleClose();\n\n setSelectedImage(\n newItem.imageUrl ? (\n <StyledSearchBoxItemImage\n src={newItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />\n ) : undefined,\n );\n\n setMatchingListsItems([]);\n\n if (typeof onSelect === 'function') {\n onSelect(newItem);\n }\n },\n [handleClose, onSelect, shouldShowRoundImage],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n matchingListsItems.forEach(({ groupName, list }, index) => {\n if (hasMultipleGroups) {\n if (list.length <= 0) {\n return;\n }\n\n if (index !== 0) {\n items.push(<GroupName key={groupName} name={groupName ?? ''} />);\n }\n }\n\n list.forEach(({ id, text, imageUrl }) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n text={`<b>${inputToListValue}</b`}\n />,\n );\n }\n\n return items;\n }, [\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n hasMultipleGroups,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!shouldShowBody || matchingListsItems.length === 0) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n\n if (!children) {\n return;\n }\n\n const childrenArray = Array.from(children);\n\n const newChildren = childrenArray.find((child) =>\n child.id.startsWith('searchbox-content__'),\n )?.children;\n\n if (newChildren && newChildren.length > 0) {\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n setFilteredChildrenArray(filteredChildren);\n\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (e.key === 'ArrowUp' ? -1 : 1) +\n filteredChildren.length) %\n filteredChildren.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = filteredChildren[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = filteredChildren[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n if (filteredChildrenArray) {\n const element = filteredChildrenArray[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id, textContent } = element;\n\n let imageUrl: string | undefined;\n\n // Just Ignore, it works\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (element.children[0]?.attributes.src) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n imageUrl = element.children[0]?.attributes.src.nodeValue as string;\n }\n\n handleSelect({\n id: id.replace('search-box-item__', ''),\n text: textContent ?? '',\n imageUrl,\n });\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n filteredChildrenArray,\n focusedIndex,\n handleSelect,\n matchingListsItems.length,\n shouldShowBody,\n ]);\n\n const handleKeyPress = useCallback((event: KeyboardEvent) => {\n if (event.keyCode === 27) {\n setMatchingListsItems([]);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n clear: () => setValue(''),\n }),\n [],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyPress);\n\n return () => {\n document.addEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n /**\n * Update the value if preset value changes\n */\n useEffect(() => {\n if (presetValue) {\n setValue(presetValue);\n }\n }, [presetValue]);\n\n return useMemo(\n () => (\n <StyledSearchBox ref={boxRef} key={`search-box-${uuid}`}>\n <div id={`search_box_input${uuid}`}>\n <Input\n isInvalid={isInvalid}\n ref={inputRef}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n leftElement={leftElement}\n rightElement={rightElement}\n value={value}\n />\n </div>\n {boxRef.current && (\n <DropdownBodyWrapper\n shouldShowDropdown={\n shouldShowBody &&\n matchingListsItems.length !== 0 &&\n (value.trim() !== '' || shouldShowContentOnEmptyInput)\n }\n onClose={handleClose}\n anchorElement={boxRef.current}\n maxHeight={300}\n container={container}\n >\n <SearchBoxBody\n key={`search-box-body-${uuid}`}\n filterButtons={filterButtons}\n selectedGroups={groups}\n height={height}\n ref={contentRef}\n onGroupSelect={handleFilterButtonsGroupSelect}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledSearchBox>\n ),\n [\n container,\n content,\n filterButtons,\n groups,\n handleBlur,\n handleChange,\n handleClose,\n handleFocus,\n height,\n isInvalid,\n leftElement,\n matchingListsItems.length,\n onKeyDown,\n placeholder,\n rightElement,\n shouldHideFilterButtons,\n shouldShowBody,\n shouldShowContentOnEmptyInput,\n uuid,\n value,\n ],\n );\n },\n);\n\nSearchBox.displayName = 'SearchBox';\n\nexport default SearchBox;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SearchBox.js","names":["_react","_interopRequireWildcard","require","_styledComponents","_calculate","_searchBox","_Icon","_interopRequireDefault","_Input","_GroupName","_SearchBoxBody","_SearchBoxItem","_SearchBoxItem2","_SearchBox","_uuid","_DropdownBodyWrapper","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SearchBox","forwardRef","isInvalid","placeholder","leftIcons","lists","onChange","onBlur","onSelect","onKeyDown","selectedId","container","shouldHideFilterButtons","shouldShowRoundImage","shouldShowContentOnEmptyInput","shouldAddInputToList","shouldShowToggleIcon","customFilter","presetValue","ref","matchingListsItems","setMatchingListsItems","useState","selectedImage","setSelectedImage","value","setValue","height","setHeight","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","shouldShowBody","setShouldShowBody","uuid","useUuid","boxRef","useRef","contentRef","inputRef","hasFocusRef","isAnimatingRef","shouldShowPresetValue","theme","useTheme","useEffect","filterButtons","useMemo","items","forEach","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","newList","searchList","searchString","undefined","filteredMatchingListItems","map","filter","item","handleOpen","useCallback","handleClose","handleFilterButtonsGroupSelect","keys","textArray","calculateContentHeight","selectedItem","find","imageUrl","createElement","StyledSearchBoxItemImage","src","$shouldShowRoundImage","current","handleFocus","toLowerCase","handleClick","rightElement","StyledSearchBoxIcon","onClick","icons","color","leftElement","StyledSearchBoxLeftWrapper","handleChange","event","filteredLists","target","handleBlur","handleSelect","newItem","replace","content","index","key","name","handleKeyDown","_contentRef$current","_childrenArray$find","preventDefault","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","newIndex","prevElement","tabIndex","newElement","focus","_element$children$","element","textContent","attributes","_element$children$2","nodeValue","document","addEventListener","removeEventListener","handleKeyPress","keyCode","useImperativeHandle","clear","StyledSearchBox","onFocus","shouldShowDropdown","trim","onClose","anchorElement","maxHeight","selectedGroups","onGroupSelect","displayName","_default","exports"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n FocusEvent,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport type { IFilterButtonItem } from '../../types/filterButtons';\nimport type { ISearchBoxItem, ISearchBoxItems } from '../../types/searchBox';\nimport { calculateContentHeight } from '../../utils/calculate';\nimport { searchList } from '../../utils/searchBox';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\nimport Icon from '../icon/Icon';\nimport Input from '../input/Input';\nimport GroupName from './group-name/GroupName';\nimport SearchBoxBody from './search-box-body/SearchBoxBody';\nimport SearchBoxItem from './search-box-item/SearchBoxItem';\nimport { StyledSearchBoxItemImage } from './search-box-item/SearchBoxItem.styles';\nimport {\n StyledSearchBox,\n StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\nimport { useUuid } from '../../hooks/uuid';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\n\nexport type SearchBoxRef = {\n clear: VoidFunction;\n};\n\nexport type SearchBoxProps = {\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * If true, the input field is marked as invalid\n */\n isInvalid?: boolean;\n /**\n * An optional icon that is displayed inside the left side of the input.\n */\n leftIcons?: string[];\n /**\n * List of groups with items that can be searched. It is possible to give only one list; if multiple lists are provided, the 'group name' parameter becomes mandatory.\n */\n lists: ISearchBoxItems[];\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * Function to be executed when the input lost focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the input is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function that is executed when a letter is pressed\n */\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when an item is selected.\n */\n onSelect?: (item: ISearchBoxItem) => void;\n /**\n * Control the selected item. If you use this prop, make sure to update it when the user selects an item.\n */\n selectedId?: string;\n /**\n * If true, the value in the Input is displayed in the list.\n */\n shouldAddInputToList: boolean;\n /**\n * If true, the filter buttons are hidden.\n */\n shouldHideFilterButtons?: boolean;\n /**\n * Whether the full list of items should be displayed if the input is empty.\n */\n shouldShowContentOnEmptyInput?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the icon to open and close the list should be displayed.\n */\n shouldShowToggleIcon?: boolean;\n /**\n * An optional callback function to filter the elements to be displayed\n */\n customFilter?: (item: ISearchBoxItem) => boolean;\n /**\n * Set an input for the search box - it is not an item of a list, just a string.\n */\n presetValue?: string;\n};\n\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n isInvalid = false,\n placeholder,\n leftIcons,\n lists,\n onChange,\n onBlur,\n onSelect,\n onKeyDown,\n selectedId,\n container,\n shouldHideFilterButtons = false,\n shouldShowRoundImage,\n shouldShowContentOnEmptyInput = true,\n shouldAddInputToList = true,\n shouldShowToggleIcon = false,\n customFilter,\n presetValue,\n },\n ref,\n ) => {\n const [matchingListsItems, setMatchingListsItems] = useState<ISearchBoxItems[]>(lists);\n const [selectedImage, setSelectedImage] = useState<ReactElement>();\n const [value, setValue] = useState(\n typeof presetValue === 'string' && presetValue !== '' ? presetValue : '',\n );\n const [height, setHeight] = useState<number>(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [hasMultipleGroups, setHasMultipleGroups] = useState<boolean>(lists.length > 1);\n const [filteredChildrenArray, setFilteredChildrenArray] = useState<Element[]>();\n const [inputToListValue, setInputToListValue] = useState<string>('');\n const [groups, setGroups] = useState<string[]>(['all']);\n const [shouldShowBody, setShouldShowBody] = useState(false);\n\n const uuid = useUuid();\n\n const boxRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const hasFocusRef = useRef<boolean>(false);\n const isAnimatingRef = useRef<boolean>(false);\n const shouldShowPresetValue = useRef<boolean>(\n typeof presetValue === 'string' && presetValue !== '',\n );\n\n const theme = useTheme() as Theme;\n\n /**\n * Checks if Lists are smaller then 1\n */\n useEffect(() => {\n setHasMultipleGroups(lists.length > 1);\n }, [lists]);\n\n const filterButtons = useMemo(() => {\n const items: IFilterButtonItem[] = [];\n\n if (lists.length <= 1) {\n return items;\n }\n\n lists.forEach(({ groupName }) => {\n if (groupName) {\n items.push({\n id: groupName,\n text: groupName,\n });\n }\n });\n\n return items;\n }, [lists]);\n\n /**\n * Filters the lists by the FilterButtons\n */\n const activeList = useMemo(() => {\n let newLists: ISearchBoxItems[] = [];\n\n if (groups[0] === 'all') {\n newLists = lists;\n } else {\n lists.forEach((list) => {\n if (list.groupName && groups.includes(list.groupName)) {\n newLists.push(list);\n }\n });\n }\n\n const newMatchingItems: ISearchBoxItems[] = [];\n\n newLists.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [groups, lists, customFilter, shouldAddInputToList, value]);\n\n const handleOpen = useCallback(() => {\n setShouldShowBody(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setShouldShowBody(false);\n }, []);\n\n const handleFilterButtonsGroupSelect = (keys: string[]) => {\n setGroups(keys.length === 0 ? ['all'] : keys);\n };\n\n /**\n * This hook calculates the height\n */\n useEffect(() => {\n const textArray: string[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n list.forEach(({ text }) => textArray.push(text));\n if (!groupName) {\n return;\n }\n textArray.push(groupName);\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n textArray.push(inputToListValue);\n }\n\n setHeight(calculateContentHeight(textArray));\n }, [inputToListValue, activeList, placeholder, shouldAddInputToList]);\n\n useEffect(() => {\n if (selectedId) {\n activeList.forEach(({ list }) => {\n const selectedItem = list.find(({ id }) => id === selectedId);\n if (selectedItem) {\n setValue(selectedItem.text);\n\n if (selectedItem.imageUrl) {\n setSelectedImage(\n <StyledSearchBoxItemImage\n src={selectedItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />,\n );\n }\n }\n });\n }\n }, [activeList, selectedId, shouldShowRoundImage]);\n\n /**\n * This hook resets the value if the selectedId changes to undefined. This is an own useEffect because the value\n * should not be reset if the list changes and the selectedId is still undefined.\n */\n useEffect(() => {\n if (!selectedId && !shouldShowPresetValue.current) {\n setValue('');\n }\n }, [selectedId]);\n\n useEffect(() => {\n isAnimatingRef.current = shouldShowBody;\n }, [shouldShowBody]);\n\n useEffect(() => {\n if (matchingListsItems.length !== 0 && !isAnimatingRef.current && hasFocusRef.current) {\n handleOpen();\n }\n }, [handleOpen, matchingListsItems.length]);\n\n /**\n * This function sets the items on focus if shouldShowContentOnEmptyInput\n */\n const handleFocus = useCallback(() => {\n hasFocusRef.current = true;\n\n if (shouldShowContentOnEmptyInput) {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0) {\n handleOpen();\n }\n }\n }, [\n activeList,\n handleOpen,\n customFilter,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n /**\n * This function filters the lists by input\n */\n\n useEffect(() => {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n if (shouldAddInputToList && inputToListValue !== '') {\n newMatchingItems.forEach(({ list }) => {\n list.forEach(({ text }) => {\n if (text.toLowerCase() === inputToListValue.toLowerCase()) {\n setInputToListValue('');\n }\n });\n });\n }\n }, [\n inputToListValue,\n activeList,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n const handleClick = useCallback(() => {\n if (shouldShowBody) {\n handleClose();\n } else {\n handleOpen();\n }\n }, [handleClose, handleOpen, shouldShowBody]);\n\n const rightElement = useMemo(() => {\n if (!shouldShowToggleIcon) {\n return undefined;\n }\n\n return (\n <StyledSearchBoxIcon onClick={handleClick}>\n <Icon icons={['fa fa-chevron-down']} color={theme['006'] as string} />\n </StyledSearchBoxIcon>\n );\n }, [handleClick, shouldShowToggleIcon, theme]);\n\n const leftElement = useMemo(\n () =>\n (leftIcons || selectedImage) && (\n <StyledSearchBoxLeftWrapper>\n {leftIcons && <Icon icons={leftIcons} />}\n {selectedImage && selectedImage}\n </StyledSearchBoxLeftWrapper>\n ),\n [leftIcons, selectedImage],\n );\n\n /**\n * This function handles changes of the input\n */\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const filteredLists: ISearchBoxItems[] = [];\n shouldShowPresetValue.current = false;\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: event.target.value });\n\n if (newList.length > 0) {\n filteredLists.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (filteredLists.length === 0 && shouldAddInputToList) {\n filteredLists.push({\n groupName: undefined,\n list: [],\n });\n }\n\n setSelectedImage(undefined);\n\n if (!shouldShowContentOnEmptyInput && !event.target.value) {\n setMatchingListsItems([]);\n } else {\n setMatchingListsItems(filteredLists);\n }\n\n if (filteredLists.length !== 0) {\n handleOpen();\n }\n\n setValue(event.target.value);\n setInputToListValue(event.target.value);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n },\n [activeList, handleOpen, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput],\n );\n\n /**\n * This function handles the blur event of the input\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n hasFocusRef.current = false;\n\n if (typeof onBlur === 'function') {\n onBlur(event);\n }\n },\n [onBlur],\n );\n\n /**\n * This function handles the item selection\n */\n const handleSelect = useCallback(\n (item: ISearchBoxItem) => {\n const newItem = {\n ...item,\n text: item.text.replace('<b>', '').replace('</b>', '').replace('</b', ''),\n };\n\n setValue(newItem.text);\n handleClose();\n\n setSelectedImage(\n newItem.imageUrl ? (\n <StyledSearchBoxItemImage\n src={newItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />\n ) : undefined,\n );\n\n setMatchingListsItems([]);\n\n if (typeof onSelect === 'function') {\n onSelect(newItem);\n }\n },\n [handleClose, onSelect, shouldShowRoundImage],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n matchingListsItems.forEach(({ groupName, list }, index) => {\n if (hasMultipleGroups) {\n if (list.length <= 0) {\n return;\n }\n\n if (index !== 0) {\n items.push(<GroupName key={groupName} name={groupName ?? ''} />);\n }\n }\n\n list.forEach(({ id, text, imageUrl }) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n text={`<b>${inputToListValue}</b`}\n />,\n );\n }\n\n return items;\n }, [\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n hasMultipleGroups,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!shouldShowBody || matchingListsItems.length === 0) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n\n if (!children) {\n return;\n }\n\n const childrenArray = Array.from(children);\n\n const newChildren = childrenArray.find((child) =>\n child.id.startsWith('searchbox-content__'),\n )?.children;\n\n if (newChildren && newChildren.length > 0) {\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n setFilteredChildrenArray(filteredChildren);\n\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (e.key === 'ArrowUp' ? -1 : 1) +\n filteredChildren.length) %\n filteredChildren.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = filteredChildren[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = filteredChildren[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n if (filteredChildrenArray) {\n const element = filteredChildrenArray[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id, textContent } = element;\n\n let imageUrl: string | undefined;\n\n // Just Ignore, it works\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (element.children[0]?.attributes.src) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n imageUrl = element.children[0]?.attributes.src.nodeValue as string;\n }\n\n handleSelect({\n id: id.replace('search-box-item__', ''),\n text: textContent ?? '',\n imageUrl,\n });\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n filteredChildrenArray,\n focusedIndex,\n handleSelect,\n matchingListsItems.length,\n shouldShowBody,\n ]);\n\n const handleKeyPress = useCallback((event: KeyboardEvent) => {\n if (event.keyCode === 27) {\n setMatchingListsItems([]);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n clear: () => setValue(''),\n }),\n [],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyPress);\n\n return () => {\n document.addEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n /**\n * Update the value if preset value changes\n */\n useEffect(() => {\n if (presetValue) {\n setValue(presetValue);\n }\n }, [presetValue]);\n\n return useMemo(\n () => (\n <StyledSearchBox ref={boxRef} key={`search-box-${uuid}`}>\n <div id={`search_box_input${uuid}`}>\n <Input\n isInvalid={isInvalid}\n ref={inputRef}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n leftElement={leftElement}\n rightElement={rightElement}\n value={value}\n />\n </div>\n {boxRef.current && (\n <DropdownBodyWrapper\n shouldShowDropdown={\n shouldShowBody &&\n matchingListsItems.length !== 0 &&\n (value.trim() !== '' || shouldShowContentOnEmptyInput)\n }\n onClose={handleClose}\n anchorElement={boxRef.current}\n maxHeight={300}\n container={container}\n >\n <SearchBoxBody\n key={`search-box-body-${uuid}`}\n filterButtons={filterButtons}\n selectedGroups={groups}\n height={height}\n ref={contentRef}\n onGroupSelect={handleFilterButtonsGroupSelect}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledSearchBox>\n ),\n [\n container,\n content,\n filterButtons,\n groups,\n handleBlur,\n handleChange,\n handleClose,\n handleFocus,\n height,\n isInvalid,\n leftElement,\n matchingListsItems.length,\n onKeyDown,\n placeholder,\n rightElement,\n shouldHideFilterButtons,\n shouldShowBody,\n shouldShowContentOnEmptyInput,\n uuid,\n value,\n ],\n );\n },\n);\n\nSearchBox.displayName = 'SearchBox';\n\nexport default SearchBox;\n"],"mappings":"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","ignoreList":[]}
@@ -301,7 +301,7 @@ const SearchBox = /*#__PURE__*/forwardRef(({
301
301
  color: theme['006']
302
302
  }));
303
303
  }, [handleClick, shouldShowToggleIcon, theme]);
304
- const leftElement = useMemo(() => /*#__PURE__*/React.createElement(StyledSearchBoxLeftWrapper, null, leftIcons && /*#__PURE__*/React.createElement(Icon, {
304
+ const leftElement = useMemo(() => (leftIcons || selectedImage) && /*#__PURE__*/React.createElement(StyledSearchBoxLeftWrapper, null, leftIcons && /*#__PURE__*/React.createElement(Icon, {
305
305
  icons: leftIcons
306
306
  }), selectedImage && selectedImage), [leftIcons, selectedImage]);
307
307
 
@@ -1 +1 @@
1
- {"version":3,"file":"SearchBox.js","names":["React","forwardRef","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","useTheme","calculateContentHeight","searchList","Icon","Input","GroupName","SearchBoxBody","SearchBoxItem","StyledSearchBoxItemImage","StyledSearchBox","StyledSearchBoxIcon","StyledSearchBoxLeftWrapper","useUuid","DropdownBodyWrapper","SearchBox","isInvalid","placeholder","leftIcons","lists","onChange","onBlur","onSelect","onKeyDown","selectedId","container","shouldHideFilterButtons","shouldShowRoundImage","shouldShowContentOnEmptyInput","shouldAddInputToList","shouldShowToggleIcon","customFilter","presetValue","ref","matchingListsItems","setMatchingListsItems","selectedImage","setSelectedImage","value","setValue","height","setHeight","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","shouldShowBody","setShouldShowBody","uuid","boxRef","contentRef","inputRef","hasFocusRef","isAnimatingRef","shouldShowPresetValue","theme","filterButtons","items","forEach","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","newList","searchString","undefined","filteredMatchingListItems","map","filter","item","handleOpen","handleClose","handleFilterButtonsGroupSelect","keys","textArray","selectedItem","find","imageUrl","createElement","src","$shouldShowRoundImage","current","handleFocus","toLowerCase","handleClick","rightElement","onClick","icons","color","leftElement","handleChange","event","filteredLists","target","handleBlur","handleSelect","newItem","replace","content","index","key","name","handleKeyDown","e","preventDefault","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","newIndex","prevElement","tabIndex","newElement","focus","element","textContent","attributes","nodeValue","document","addEventListener","removeEventListener","handleKeyPress","keyCode","clear","onFocus","shouldShowDropdown","trim","onClose","anchorElement","maxHeight","selectedGroups","onGroupSelect","displayName"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n FocusEvent,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport type { IFilterButtonItem } from '../../types/filterButtons';\nimport type { ISearchBoxItem, ISearchBoxItems } from '../../types/searchBox';\nimport { calculateContentHeight } from '../../utils/calculate';\nimport { searchList } from '../../utils/searchBox';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\nimport Icon from '../icon/Icon';\nimport Input from '../input/Input';\nimport GroupName from './group-name/GroupName';\nimport SearchBoxBody from './search-box-body/SearchBoxBody';\nimport SearchBoxItem from './search-box-item/SearchBoxItem';\nimport { StyledSearchBoxItemImage } from './search-box-item/SearchBoxItem.styles';\nimport {\n StyledSearchBox,\n StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\nimport { useUuid } from '../../hooks/uuid';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\n\nexport type SearchBoxRef = {\n clear: VoidFunction;\n};\n\nexport type SearchBoxProps = {\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * If true, the input field is marked as invalid\n */\n isInvalid?: boolean;\n /**\n * An optional icon that is displayed inside the left side of the input.\n */\n leftIcons?: string[];\n /**\n * List of groups with items that can be searched. It is possible to give only one list; if multiple lists are provided, the 'group name' parameter becomes mandatory.\n */\n lists: ISearchBoxItems[];\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * Function to be executed when the input lost focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the input is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function that is executed when a letter is pressed\n */\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when an item is selected.\n */\n onSelect?: (item: ISearchBoxItem) => void;\n /**\n * Control the selected item. If you use this prop, make sure to update it when the user selects an item.\n */\n selectedId?: string;\n /**\n * If true, the value in the Input is displayed in the list.\n */\n shouldAddInputToList: boolean;\n /**\n * If true, the filter buttons are hidden.\n */\n shouldHideFilterButtons?: boolean;\n /**\n * Whether the full list of items should be displayed if the input is empty.\n */\n shouldShowContentOnEmptyInput?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the icon to open and close the list should be displayed.\n */\n shouldShowToggleIcon?: boolean;\n /**\n * An optional callback function to filter the elements to be displayed\n */\n customFilter?: (item: ISearchBoxItem) => boolean;\n /**\n * Set an input for the search box - it is not an item of a list, just a string.\n */\n presetValue?: string;\n};\n\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n isInvalid = false,\n placeholder,\n leftIcons,\n lists,\n onChange,\n onBlur,\n onSelect,\n onKeyDown,\n selectedId,\n container,\n shouldHideFilterButtons = false,\n shouldShowRoundImage,\n shouldShowContentOnEmptyInput = true,\n shouldAddInputToList = true,\n shouldShowToggleIcon = false,\n customFilter,\n presetValue,\n },\n ref,\n ) => {\n const [matchingListsItems, setMatchingListsItems] = useState<ISearchBoxItems[]>(lists);\n const [selectedImage, setSelectedImage] = useState<ReactElement>();\n const [value, setValue] = useState(\n typeof presetValue === 'string' && presetValue !== '' ? presetValue : '',\n );\n const [height, setHeight] = useState<number>(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [hasMultipleGroups, setHasMultipleGroups] = useState<boolean>(lists.length > 1);\n const [filteredChildrenArray, setFilteredChildrenArray] = useState<Element[]>();\n const [inputToListValue, setInputToListValue] = useState<string>('');\n const [groups, setGroups] = useState<string[]>(['all']);\n const [shouldShowBody, setShouldShowBody] = useState(false);\n\n const uuid = useUuid();\n\n const boxRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const hasFocusRef = useRef<boolean>(false);\n const isAnimatingRef = useRef<boolean>(false);\n const shouldShowPresetValue = useRef<boolean>(\n typeof presetValue === 'string' && presetValue !== '',\n );\n\n const theme = useTheme() as Theme;\n\n /**\n * Checks if Lists are smaller then 1\n */\n useEffect(() => {\n setHasMultipleGroups(lists.length > 1);\n }, [lists]);\n\n const filterButtons = useMemo(() => {\n const items: IFilterButtonItem[] = [];\n\n if (lists.length <= 1) {\n return items;\n }\n\n lists.forEach(({ groupName }) => {\n if (groupName) {\n items.push({\n id: groupName,\n text: groupName,\n });\n }\n });\n\n return items;\n }, [lists]);\n\n /**\n * Filters the lists by the FilterButtons\n */\n const activeList = useMemo(() => {\n let newLists: ISearchBoxItems[] = [];\n\n if (groups[0] === 'all') {\n newLists = lists;\n } else {\n lists.forEach((list) => {\n if (list.groupName && groups.includes(list.groupName)) {\n newLists.push(list);\n }\n });\n }\n\n const newMatchingItems: ISearchBoxItems[] = [];\n\n newLists.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [groups, lists, customFilter, shouldAddInputToList, value]);\n\n const handleOpen = useCallback(() => {\n setShouldShowBody(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setShouldShowBody(false);\n }, []);\n\n const handleFilterButtonsGroupSelect = (keys: string[]) => {\n setGroups(keys.length === 0 ? ['all'] : keys);\n };\n\n /**\n * This hook calculates the height\n */\n useEffect(() => {\n const textArray: string[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n list.forEach(({ text }) => textArray.push(text));\n if (!groupName) {\n return;\n }\n textArray.push(groupName);\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n textArray.push(inputToListValue);\n }\n\n setHeight(calculateContentHeight(textArray));\n }, [inputToListValue, activeList, placeholder, shouldAddInputToList]);\n\n useEffect(() => {\n if (selectedId) {\n activeList.forEach(({ list }) => {\n const selectedItem = list.find(({ id }) => id === selectedId);\n if (selectedItem) {\n setValue(selectedItem.text);\n\n if (selectedItem.imageUrl) {\n setSelectedImage(\n <StyledSearchBoxItemImage\n src={selectedItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />,\n );\n }\n }\n });\n }\n }, [activeList, selectedId, shouldShowRoundImage]);\n\n /**\n * This hook resets the value if the selectedId changes to undefined. This is an own useEffect because the value\n * should not be reset if the list changes and the selectedId is still undefined.\n */\n useEffect(() => {\n if (!selectedId && !shouldShowPresetValue.current) {\n setValue('');\n }\n }, [selectedId]);\n\n useEffect(() => {\n isAnimatingRef.current = shouldShowBody;\n }, [shouldShowBody]);\n\n useEffect(() => {\n if (matchingListsItems.length !== 0 && !isAnimatingRef.current && hasFocusRef.current) {\n handleOpen();\n }\n }, [handleOpen, matchingListsItems.length]);\n\n /**\n * This function sets the items on focus if shouldShowContentOnEmptyInput\n */\n const handleFocus = useCallback(() => {\n hasFocusRef.current = true;\n\n if (shouldShowContentOnEmptyInput) {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0) {\n handleOpen();\n }\n }\n }, [\n activeList,\n handleOpen,\n customFilter,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n /**\n * This function filters the lists by input\n */\n\n useEffect(() => {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n if (shouldAddInputToList && inputToListValue !== '') {\n newMatchingItems.forEach(({ list }) => {\n list.forEach(({ text }) => {\n if (text.toLowerCase() === inputToListValue.toLowerCase()) {\n setInputToListValue('');\n }\n });\n });\n }\n }, [\n inputToListValue,\n activeList,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n const handleClick = useCallback(() => {\n if (shouldShowBody) {\n handleClose();\n } else {\n handleOpen();\n }\n }, [handleClose, handleOpen, shouldShowBody]);\n\n const rightElement = useMemo(() => {\n if (!shouldShowToggleIcon) {\n return undefined;\n }\n\n return (\n <StyledSearchBoxIcon onClick={handleClick}>\n <Icon icons={['fa fa-chevron-down']} color={theme['006'] as string} />\n </StyledSearchBoxIcon>\n );\n }, [handleClick, shouldShowToggleIcon, theme]);\n\n const leftElement = useMemo(\n () => (\n <StyledSearchBoxLeftWrapper>\n {leftIcons && <Icon icons={leftIcons} />}\n {selectedImage && selectedImage}\n </StyledSearchBoxLeftWrapper>\n ),\n [leftIcons, selectedImage],\n );\n\n /**\n * This function handles changes of the input\n */\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const filteredLists: ISearchBoxItems[] = [];\n shouldShowPresetValue.current = false;\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: event.target.value });\n\n if (newList.length > 0) {\n filteredLists.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (filteredLists.length === 0 && shouldAddInputToList) {\n filteredLists.push({\n groupName: undefined,\n list: [],\n });\n }\n\n setSelectedImage(undefined);\n\n if (!shouldShowContentOnEmptyInput && !event.target.value) {\n setMatchingListsItems([]);\n } else {\n setMatchingListsItems(filteredLists);\n }\n\n if (filteredLists.length !== 0) {\n handleOpen();\n }\n\n setValue(event.target.value);\n setInputToListValue(event.target.value);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n },\n [activeList, handleOpen, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput],\n );\n\n /**\n * This function handles the blur event of the input\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n hasFocusRef.current = false;\n\n if (typeof onBlur === 'function') {\n onBlur(event);\n }\n },\n [onBlur],\n );\n\n /**\n * This function handles the item selection\n */\n const handleSelect = useCallback(\n (item: ISearchBoxItem) => {\n const newItem = {\n ...item,\n text: item.text.replace('<b>', '').replace('</b>', '').replace('</b', ''),\n };\n\n setValue(newItem.text);\n handleClose();\n\n setSelectedImage(\n newItem.imageUrl ? (\n <StyledSearchBoxItemImage\n src={newItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />\n ) : undefined,\n );\n\n setMatchingListsItems([]);\n\n if (typeof onSelect === 'function') {\n onSelect(newItem);\n }\n },\n [handleClose, onSelect, shouldShowRoundImage],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n matchingListsItems.forEach(({ groupName, list }, index) => {\n if (hasMultipleGroups) {\n if (list.length <= 0) {\n return;\n }\n\n if (index !== 0) {\n items.push(<GroupName key={groupName} name={groupName ?? ''} />);\n }\n }\n\n list.forEach(({ id, text, imageUrl }) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n text={`<b>${inputToListValue}</b`}\n />,\n );\n }\n\n return items;\n }, [\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n hasMultipleGroups,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!shouldShowBody || matchingListsItems.length === 0) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n\n if (!children) {\n return;\n }\n\n const childrenArray = Array.from(children);\n\n const newChildren = childrenArray.find((child) =>\n child.id.startsWith('searchbox-content__'),\n )?.children;\n\n if (newChildren && newChildren.length > 0) {\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n setFilteredChildrenArray(filteredChildren);\n\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (e.key === 'ArrowUp' ? -1 : 1) +\n filteredChildren.length) %\n filteredChildren.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = filteredChildren[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = filteredChildren[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n if (filteredChildrenArray) {\n const element = filteredChildrenArray[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id, textContent } = element;\n\n let imageUrl: string | undefined;\n\n // Just Ignore, it works\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (element.children[0]?.attributes.src) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n imageUrl = element.children[0]?.attributes.src.nodeValue as string;\n }\n\n handleSelect({\n id: id.replace('search-box-item__', ''),\n text: textContent ?? '',\n imageUrl,\n });\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n filteredChildrenArray,\n focusedIndex,\n handleSelect,\n matchingListsItems.length,\n shouldShowBody,\n ]);\n\n const handleKeyPress = useCallback((event: KeyboardEvent) => {\n if (event.keyCode === 27) {\n setMatchingListsItems([]);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n clear: () => setValue(''),\n }),\n [],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyPress);\n\n return () => {\n document.addEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n /**\n * Update the value if preset value changes\n */\n useEffect(() => {\n if (presetValue) {\n setValue(presetValue);\n }\n }, [presetValue]);\n\n return useMemo(\n () => (\n <StyledSearchBox ref={boxRef} key={`search-box-${uuid}`}>\n <div id={`search_box_input${uuid}`}>\n <Input\n isInvalid={isInvalid}\n ref={inputRef}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n leftElement={leftElement}\n rightElement={rightElement}\n value={value}\n />\n </div>\n {boxRef.current && (\n <DropdownBodyWrapper\n shouldShowDropdown={\n shouldShowBody &&\n matchingListsItems.length !== 0 &&\n (value.trim() !== '' || shouldShowContentOnEmptyInput)\n }\n onClose={handleClose}\n anchorElement={boxRef.current}\n maxHeight={300}\n container={container}\n >\n <SearchBoxBody\n key={`search-box-body-${uuid}`}\n filterButtons={filterButtons}\n selectedGroups={groups}\n height={height}\n ref={contentRef}\n onGroupSelect={handleFilterButtonsGroupSelect}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledSearchBox>\n ),\n [\n container,\n content,\n filterButtons,\n groups,\n handleBlur,\n handleChange,\n handleClose,\n handleFocus,\n height,\n isInvalid,\n leftElement,\n matchingListsItems.length,\n onKeyDown,\n placeholder,\n rightElement,\n shouldHideFilterButtons,\n shouldShowBody,\n shouldShowContentOnEmptyInput,\n uuid,\n value,\n ],\n );\n },\n);\n\nSearchBox.displayName = 'SearchBox';\n\nexport default SearchBox;\n"],"mappings":"AAAA,OAAOA,KAAK,IAMRC,UAAU,EAGVC,WAAW,EACXC,SAAS,EACTC,mBAAmB,EACnBC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACL,OAAO;AACd,SAASC,QAAQ,QAAQ,mBAAmB;AAG5C,SAASC,sBAAsB,QAAQ,uBAAuB;AAC9D,SAASC,UAAU,QAAQ,uBAAuB;AAElD,OAAOC,IAAI,MAAM,cAAc;AAC/B,OAAOC,KAAK,MAAM,gBAAgB;AAClC,OAAOC,SAAS,MAAM,wBAAwB;AAC9C,OAAOC,aAAa,MAAM,iCAAiC;AAC3D,OAAOC,aAAa,MAAM,iCAAiC;AAC3D,SAASC,wBAAwB,QAAQ,wCAAwC;AACjF,SACIC,eAAe,EACfC,mBAAmB,EACnBC,0BAA0B,QACvB,oBAAoB;AAC3B,SAASC,OAAO,QAAQ,kBAAkB;AAC1C,OAAOC,mBAAmB,MAAM,8CAA8C;AA6E9E,MAAMC,SAA6B,gBAAGrB,UAAU,CAC5C,CACI;EACIsB,SAAS,GAAG,KAAK;EACjBC,WAAW;EACXC,SAAS;EACTC,KAAK;EACLC,QAAQ;EACRC,MAAM;EACNC,QAAQ;EACRC,SAAS;EACTC,UAAU;EACVC,SAAS;EACTC,uBAAuB,GAAG,KAAK;EAC/BC,oBAAoB;EACpBC,6BAA6B,GAAG,IAAI;EACpCC,oBAAoB,GAAG,IAAI;EAC3BC,oBAAoB,GAAG,KAAK;EAC5BC,YAAY;EACZC;AACJ,CAAC,EACDC,GAAG,KACF;EACD,MAAM,CAACC,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGnC,QAAQ,CAAoBmB,KAAK,CAAC;EACtF,MAAM,CAACiB,aAAa,EAAEC,gBAAgB,CAAC,GAAGrC,QAAQ,CAAe,CAAC;EAClE,MAAM,CAACsC,KAAK,EAAEC,QAAQ,CAAC,GAAGvC,QAAQ,CAC9B,OAAOgC,WAAW,KAAK,QAAQ,IAAIA,WAAW,KAAK,EAAE,GAAGA,WAAW,GAAG,EAC1E,CAAC;EACD,MAAM,CAACQ,MAAM,EAAEC,SAAS,CAAC,GAAGzC,QAAQ,CAAS,CAAC,CAAC;EAC/C,MAAM,CAAC0C,YAAY,EAAEC,eAAe,CAAC,GAAG3C,QAAQ,CAAgB,IAAI,CAAC;EACrE,MAAM,CAAC4C,iBAAiB,EAAEC,oBAAoB,CAAC,GAAG7C,QAAQ,CAAUmB,KAAK,CAAC2B,MAAM,GAAG,CAAC,CAAC;EACrF,MAAM,CAACC,qBAAqB,EAAEC,wBAAwB,CAAC,GAAGhD,QAAQ,CAAY,CAAC;EAC/E,MAAM,CAACiD,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGlD,QAAQ,CAAS,EAAE,CAAC;EACpE,MAAM,CAACmD,MAAM,EAAEC,SAAS,CAAC,GAAGpD,QAAQ,CAAW,CAAC,KAAK,CAAC,CAAC;EACvD,MAAM,CAACqD,cAAc,EAAEC,iBAAiB,CAAC,GAAGtD,QAAQ,CAAC,KAAK,CAAC;EAE3D,MAAMuD,IAAI,GAAG1C,OAAO,CAAC,CAAC;EAEtB,MAAM2C,MAAM,GAAGzD,MAAM,CAAiB,IAAI,CAAC;EAC3C,MAAM0D,UAAU,GAAG1D,MAAM,CAAiB,IAAI,CAAC;EAC/C,MAAM2D,QAAQ,GAAG3D,MAAM,CAA0B,IAAI,CAAC;EAEtD,MAAM4D,WAAW,GAAG5D,MAAM,CAAU,KAAK,CAAC;EAC1C,MAAM6D,cAAc,GAAG7D,MAAM,CAAU,KAAK,CAAC;EAC7C,MAAM8D,qBAAqB,GAAG9D,MAAM,CAChC,OAAOiC,WAAW,KAAK,QAAQ,IAAIA,WAAW,KAAK,EACvD,CAAC;EAED,MAAM8B,KAAK,GAAG7D,QAAQ,CAAC,CAAU;;EAEjC;AACR;AACA;EACQL,SAAS,CAAC,MAAM;IACZiD,oBAAoB,CAAC1B,KAAK,CAAC2B,MAAM,GAAG,CAAC,CAAC;EAC1C,CAAC,EAAE,CAAC3B,KAAK,CAAC,CAAC;EAEX,MAAM4C,aAAa,GAAGjE,OAAO,CAAC,MAAM;IAChC,MAAMkE,KAA0B,GAAG,EAAE;IAErC,IAAI7C,KAAK,CAAC2B,MAAM,IAAI,CAAC,EAAE;MACnB,OAAOkB,KAAK;IAChB;IAEA7C,KAAK,CAAC8C,OAAO,CAAC,CAAC;MAAEC;IAAU,CAAC,KAAK;MAC7B,IAAIA,SAAS,EAAE;QACXF,KAAK,CAACG,IAAI,CAAC;UACPC,EAAE,EAAEF,SAAS;UACbG,IAAI,EAAEH;QACV,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEF,OAAOF,KAAK;EAChB,CAAC,EAAE,CAAC7C,KAAK,CAAC,CAAC;;EAEX;AACR;AACA;EACQ,MAAMmD,UAAU,GAAGxE,OAAO,CAAC,MAAM;IAC7B,IAAIyE,QAA2B,GAAG,EAAE;IAEpC,IAAIpB,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;MACrBoB,QAAQ,GAAGpD,KAAK;IACpB,CAAC,MAAM;MACHA,KAAK,CAAC8C,OAAO,CAAEO,IAAI,IAAK;QACpB,IAAIA,IAAI,CAACN,SAAS,IAAIf,MAAM,CAACsB,QAAQ,CAACD,IAAI,CAACN,SAAS,CAAC,EAAE;UACnDK,QAAQ,CAACJ,IAAI,CAACK,IAAI,CAAC;QACvB;MACJ,CAAC,CAAC;IACN;IAEA,MAAME,gBAAmC,GAAG,EAAE;IAE9CH,QAAQ,CAACN,OAAO,CAAC,CAAC;MAAEO,IAAI;MAAEN;IAAU,CAAC,KAAK;MACtC,MAAMS,OAAO,GAAGxE,UAAU,CAAC;QAAE6D,KAAK,EAAEQ,IAAI;QAAEI,YAAY,EAAEtC;MAAM,CAAC,CAAC;MAEhE,IAAIqC,OAAO,CAAC7B,MAAM,GAAG,CAAC,EAAE;QACpB4B,gBAAgB,CAACP,IAAI,CAAC;UAClBD,SAAS;UACTM,IAAI,EAAEG;QACV,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEF,IAAID,gBAAgB,CAAC5B,MAAM,KAAK,CAAC,IAAIjB,oBAAoB,EAAE;MACvD6C,gBAAgB,CAACP,IAAI,CAAC;QAClBD,SAAS,EAAEW,SAAS;QACpBL,IAAI,EAAE;MACV,CAAC,CAAC;IACN;IAEA,MAAMM,yBAAyB,GAAGJ,gBAAgB,CAACK,GAAG,CAAC,CAAC;MAAEP,IAAI;MAAEN;IAAU,CAAC,MAAM;MAC7EA,SAAS;MACTM,IAAI,EAAEA,IAAI,CAACQ,MAAM,CAAEC,IAAI,IAAK;QACxB,IAAI,OAAOlD,YAAY,KAAK,UAAU,EAAE;UACpC,OAAOA,YAAY,CAACkD,IAAI,CAAC;QAC7B;QACA,OAAO,EAAEP,gBAAgB,CAAC5B,MAAM,KAAK,CAAC,IAAImC,IAAI,CAACZ,IAAI,KAAK/B,KAAK,CAAC;MAClE,CAAC;IACL,CAAC,CAAC,CAAC;IAEHH,qBAAqB,CAAC2C,yBAAyB,CAAC;IAEhD,OAAOP,QAAQ;EACnB,CAAC,EAAE,CAACpB,MAAM,EAAEhC,KAAK,EAAEY,YAAY,EAAEF,oBAAoB,EAAES,KAAK,CAAC,CAAC;EAE9D,MAAM4C,UAAU,GAAGvF,WAAW,CAAC,MAAM;IACjC2D,iBAAiB,CAAC,IAAI,CAAC;EAC3B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAM6B,WAAW,GAAGxF,WAAW,CAAC,MAAM;IAClC2D,iBAAiB,CAAC,KAAK,CAAC;EAC5B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAM8B,8BAA8B,GAAIC,IAAc,IAAK;IACvDjC,SAAS,CAACiC,IAAI,CAACvC,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAGuC,IAAI,CAAC;EACjD,CAAC;;EAED;AACR;AACA;EACQzF,SAAS,CAAC,MAAM;IACZ,MAAM0F,SAAmB,GAAG,EAAE;IAE9BhB,UAAU,CAACL,OAAO,CAAC,CAAC;MAAEO,IAAI;MAAEN;IAAU,CAAC,KAAK;MACxCM,IAAI,CAACP,OAAO,CAAC,CAAC;QAAEI;MAAK,CAAC,KAAKiB,SAAS,CAACnB,IAAI,CAACE,IAAI,CAAC,CAAC;MAChD,IAAI,CAACH,SAAS,EAAE;QACZ;MACJ;MACAoB,SAAS,CAACnB,IAAI,CAACD,SAAS,CAAC;IAC7B,CAAC,CAAC;IAEF,IAAIrC,oBAAoB,IAAIoB,gBAAgB,KAAK,EAAE,EAAE;MACjDqC,SAAS,CAACnB,IAAI,CAAClB,gBAAgB,CAAC;IACpC;IAEAR,SAAS,CAACvC,sBAAsB,CAACoF,SAAS,CAAC,CAAC;EAChD,CAAC,EAAE,CAACrC,gBAAgB,EAAEqB,UAAU,EAAErD,WAAW,EAAEY,oBAAoB,CAAC,CAAC;EAErEjC,SAAS,CAAC,MAAM;IACZ,IAAI4B,UAAU,EAAE;MACZ8C,UAAU,CAACL,OAAO,CAAC,CAAC;QAAEO;MAAK,CAAC,KAAK;QAC7B,MAAMe,YAAY,GAAGf,IAAI,CAACgB,IAAI,CAAC,CAAC;UAAEpB;QAAG,CAAC,KAAKA,EAAE,KAAK5C,UAAU,CAAC;QAC7D,IAAI+D,YAAY,EAAE;UACdhD,QAAQ,CAACgD,YAAY,CAAClB,IAAI,CAAC;UAE3B,IAAIkB,YAAY,CAACE,QAAQ,EAAE;YACvBpD,gBAAgB,cACZ5C,KAAA,CAAAiG,aAAA,CAACjF,wBAAwB;cACrBkF,GAAG,EAAEJ,YAAY,CAACE,QAAS;cAC3BG,qBAAqB,EAAEjE;YAAqB,CAC/C,CACL,CAAC;UACL;QACJ;MACJ,CAAC,CAAC;IACN;EACJ,CAAC,EAAE,CAAC2C,UAAU,EAAE9C,UAAU,EAAEG,oBAAoB,CAAC,CAAC;;EAElD;AACR;AACA;AACA;EACQ/B,SAAS,CAAC,MAAM;IACZ,IAAI,CAAC4B,UAAU,IAAI,CAACqC,qBAAqB,CAACgC,OAAO,EAAE;MAC/CtD,QAAQ,CAAC,EAAE,CAAC;IAChB;EACJ,CAAC,EAAE,CAACf,UAAU,CAAC,CAAC;EAEhB5B,SAAS,CAAC,MAAM;IACZgE,cAAc,CAACiC,OAAO,GAAGxC,cAAc;EAC3C,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;EAEpBzD,SAAS,CAAC,MAAM;IACZ,IAAIsC,kBAAkB,CAACY,MAAM,KAAK,CAAC,IAAI,CAACc,cAAc,CAACiC,OAAO,IAAIlC,WAAW,CAACkC,OAAO,EAAE;MACnFX,UAAU,CAAC,CAAC;IAChB;EACJ,CAAC,EAAE,CAACA,UAAU,EAAEhD,kBAAkB,CAACY,MAAM,CAAC,CAAC;;EAE3C;AACR;AACA;EACQ,MAAMgD,WAAW,GAAGnG,WAAW,CAAC,MAAM;IAClCgE,WAAW,CAACkC,OAAO,GAAG,IAAI;IAE1B,IAAIjE,6BAA6B,EAAE;MAC/B,MAAM8C,gBAAmC,GAAG,EAAE;MAE9CJ,UAAU,CAACL,OAAO,CAAC,CAAC;QAAEO,IAAI;QAAEN;MAAU,CAAC,KAAK;QACxC,MAAMS,OAAO,GAAGxE,UAAU,CAAC;UAAE6D,KAAK,EAAEQ,IAAI;UAAEI,YAAY,EAAEtC;QAAM,CAAC,CAAC;QAEhE,IAAIqC,OAAO,CAAC7B,MAAM,GAAG,CAAC,EAAE;UACpB4B,gBAAgB,CAACP,IAAI,CAAC;YAClBD,SAAS;YACTM,IAAI,EAAEG;UACV,CAAC,CAAC;QACN;MACJ,CAAC,CAAC;MAEF,IAAID,gBAAgB,CAAC5B,MAAM,KAAK,CAAC,IAAIjB,oBAAoB,EAAE;QACvD6C,gBAAgB,CAACP,IAAI,CAAC;UAClBD,SAAS,EAAEW,SAAS;UACpBL,IAAI,EAAE;QACV,CAAC,CAAC;MACN;MAEA,MAAMM,yBAAyB,GAAGJ,gBAAgB,CAACK,GAAG,CAAC,CAAC;QAAEP,IAAI;QAAEN;MAAU,CAAC,MAAM;QAC7EA,SAAS;QACTM,IAAI,EAAEA,IAAI,CAACQ,MAAM,CAAEC,IAAI,IAAK;UACxB,IAAI,OAAOlD,YAAY,KAAK,UAAU,EAAE;YACpC,OAAOA,YAAY,CAACkD,IAAI,CAAC;UAC7B;UACA,OAAO,EAAEP,gBAAgB,CAAC5B,MAAM,KAAK,CAAC,IAAImC,IAAI,CAACZ,IAAI,KAAK/B,KAAK,CAAC;QAClE,CAAC;MACL,CAAC,CAAC,CAAC;MAEHH,qBAAqB,CAAC2C,yBAAyB,CAAC;MAEhD,IAAIA,yBAAyB,CAAChC,MAAM,KAAK,CAAC,EAAE;QACxCoC,UAAU,CAAC,CAAC;MAChB;IACJ;EACJ,CAAC,EAAE,CACCZ,UAAU,EACVY,UAAU,EACVnD,YAAY,EACZF,oBAAoB,EACpBD,6BAA6B,EAC7BU,KAAK,CACR,CAAC;;EAEF;AACR;AACA;;EAEQ1C,SAAS,CAAC,MAAM;IACZ,MAAM8E,gBAAmC,GAAG,EAAE;IAE9CJ,UAAU,CAACL,OAAO,CAAC,CAAC;MAAEO,IAAI;MAAEN;IAAU,CAAC,KAAK;MACxC,MAAMS,OAAO,GAAGxE,UAAU,CAAC;QAAE6D,KAAK,EAAEQ,IAAI;QAAEI,YAAY,EAAEtC;MAAM,CAAC,CAAC;MAEhE,IAAIqC,OAAO,CAAC7B,MAAM,GAAG,CAAC,EAAE;QACpB4B,gBAAgB,CAACP,IAAI,CAAC;UAClBD,SAAS;UACTM,IAAI,EAAEG;QACV,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEF,IAAID,gBAAgB,CAAC5B,MAAM,KAAK,CAAC,IAAIjB,oBAAoB,EAAE;MACvD6C,gBAAgB,CAACP,IAAI,CAAC;QAClBD,SAAS,EAAEW,SAAS;QACpBL,IAAI,EAAE;MACV,CAAC,CAAC;IACN;IAEA,IAAI3C,oBAAoB,IAAIoB,gBAAgB,KAAK,EAAE,EAAE;MACjDyB,gBAAgB,CAACT,OAAO,CAAC,CAAC;QAAEO;MAAK,CAAC,KAAK;QACnCA,IAAI,CAACP,OAAO,CAAC,CAAC;UAAEI;QAAK,CAAC,KAAK;UACvB,IAAIA,IAAI,CAAC0B,WAAW,CAAC,CAAC,KAAK9C,gBAAgB,CAAC8C,WAAW,CAAC,CAAC,EAAE;YACvD7C,mBAAmB,CAAC,EAAE,CAAC;UAC3B;QACJ,CAAC,CAAC;MACN,CAAC,CAAC;IACN;EACJ,CAAC,EAAE,CACCD,gBAAgB,EAChBqB,UAAU,EACVzC,oBAAoB,EACpBD,6BAA6B,EAC7BU,KAAK,CACR,CAAC;EAEF,MAAM0D,WAAW,GAAGrG,WAAW,CAAC,MAAM;IAClC,IAAI0D,cAAc,EAAE;MAChB8B,WAAW,CAAC,CAAC;IACjB,CAAC,MAAM;MACHD,UAAU,CAAC,CAAC;IAChB;EACJ,CAAC,EAAE,CAACC,WAAW,EAAED,UAAU,EAAE7B,cAAc,CAAC,CAAC;EAE7C,MAAM4C,YAAY,GAAGnG,OAAO,CAAC,MAAM;IAC/B,IAAI,CAACgC,oBAAoB,EAAE;MACvB,OAAO+C,SAAS;IACpB;IAEA,oBACIpF,KAAA,CAAAiG,aAAA,CAAC/E,mBAAmB;MAACuF,OAAO,EAAEF;IAAY,gBACtCvG,KAAA,CAAAiG,aAAA,CAACtF,IAAI;MAAC+F,KAAK,EAAE,CAAC,oBAAoB,CAAE;MAACC,KAAK,EAAEtC,KAAK,CAAC,KAAK;IAAY,CAAE,CACpD,CAAC;EAE9B,CAAC,EAAE,CAACkC,WAAW,EAAElE,oBAAoB,EAAEgC,KAAK,CAAC,CAAC;EAE9C,MAAMuC,WAAW,GAAGvG,OAAO,CACvB,mBACIL,KAAA,CAAAiG,aAAA,CAAC9E,0BAA0B,QACtBM,SAAS,iBAAIzB,KAAA,CAAAiG,aAAA,CAACtF,IAAI;IAAC+F,KAAK,EAAEjF;EAAU,CAAE,CAAC,EACvCkB,aAAa,IAAIA,aACM,CAC/B,EACD,CAAClB,SAAS,EAAEkB,aAAa,CAC7B,CAAC;;EAED;AACR;AACA;EACQ,MAAMkE,YAAY,GAAG3G,WAAW,CAC3B4G,KAAoC,IAAK;IACtC,MAAMC,aAAgC,GAAG,EAAE;IAC3C3C,qBAAqB,CAACgC,OAAO,GAAG,KAAK;IAErCvB,UAAU,CAACL,OAAO,CAAC,CAAC;MAAEO,IAAI;MAAEN;IAAU,CAAC,KAAK;MACxC,MAAMS,OAAO,GAAGxE,UAAU,CAAC;QAAE6D,KAAK,EAAEQ,IAAI;QAAEI,YAAY,EAAE2B,KAAK,CAACE,MAAM,CAACnE;MAAM,CAAC,CAAC;MAE7E,IAAIqC,OAAO,CAAC7B,MAAM,GAAG,CAAC,EAAE;QACpB0D,aAAa,CAACrC,IAAI,CAAC;UACfD,SAAS;UACTM,IAAI,EAAEG;QACV,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEF,IAAI6B,aAAa,CAAC1D,MAAM,KAAK,CAAC,IAAIjB,oBAAoB,EAAE;MACpD2E,aAAa,CAACrC,IAAI,CAAC;QACfD,SAAS,EAAEW,SAAS;QACpBL,IAAI,EAAE;MACV,CAAC,CAAC;IACN;IAEAnC,gBAAgB,CAACwC,SAAS,CAAC;IAE3B,IAAI,CAACjD,6BAA6B,IAAI,CAAC2E,KAAK,CAACE,MAAM,CAACnE,KAAK,EAAE;MACvDH,qBAAqB,CAAC,EAAE,CAAC;IAC7B,CAAC,MAAM;MACHA,qBAAqB,CAACqE,aAAa,CAAC;IACxC;IAEA,IAAIA,aAAa,CAAC1D,MAAM,KAAK,CAAC,EAAE;MAC5BoC,UAAU,CAAC,CAAC;IAChB;IAEA3C,QAAQ,CAACgE,KAAK,CAACE,MAAM,CAACnE,KAAK,CAAC;IAC5BY,mBAAmB,CAACqD,KAAK,CAACE,MAAM,CAACnE,KAAK,CAAC;IAEvC,IAAI,OAAOlB,QAAQ,KAAK,UAAU,EAAE;MAChCA,QAAQ,CAACmF,KAAK,CAAC;IACnB;EACJ,CAAC,EACD,CAACjC,UAAU,EAAEY,UAAU,EAAE9D,QAAQ,EAAES,oBAAoB,EAAED,6BAA6B,CAC1F,CAAC;;EAED;AACR;AACA;EACQ,MAAM8E,UAAU,GAAG/G,WAAW,CACzB4G,KAAmC,IAAK;IACrC5C,WAAW,CAACkC,OAAO,GAAG,KAAK;IAE3B,IAAI,OAAOxE,MAAM,KAAK,UAAU,EAAE;MAC9BA,MAAM,CAACkF,KAAK,CAAC;IACjB;EACJ,CAAC,EACD,CAAClF,MAAM,CACX,CAAC;;EAED;AACR;AACA;EACQ,MAAMsF,YAAY,GAAGhH,WAAW,CAC3BsF,IAAoB,IAAK;IACtB,MAAM2B,OAAO,GAAG;MACZ,GAAG3B,IAAI;MACPZ,IAAI,EAAEY,IAAI,CAACZ,IAAI,CAACwC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,KAAK,EAAE,EAAE;IAC5E,CAAC;IAEDtE,QAAQ,CAACqE,OAAO,CAACvC,IAAI,CAAC;IACtBc,WAAW,CAAC,CAAC;IAEb9C,gBAAgB,CACZuE,OAAO,CAACnB,QAAQ,gBACZhG,KAAA,CAAAiG,aAAA,CAACjF,wBAAwB;MACrBkF,GAAG,EAAEiB,OAAO,CAACnB,QAAS;MACtBG,qBAAqB,EAAEjE;IAAqB,CAC/C,CAAC,GACFkD,SACR,CAAC;IAED1C,qBAAqB,CAAC,EAAE,CAAC;IAEzB,IAAI,OAAOb,QAAQ,KAAK,UAAU,EAAE;MAChCA,QAAQ,CAACsF,OAAO,CAAC;IACrB;EACJ,CAAC,EACD,CAACzB,WAAW,EAAE7D,QAAQ,EAAEK,oBAAoB,CAChD,CAAC;EAED,MAAMmF,OAAO,GAAGhH,OAAO,CAAC,MAAM;IAC1B,MAAMkE,KAAqB,GAAG,EAAE;IAEhC9B,kBAAkB,CAAC+B,OAAO,CAAC,CAAC;MAAEC,SAAS;MAAEM;IAAK,CAAC,EAAEuC,KAAK,KAAK;MACvD,IAAInE,iBAAiB,EAAE;QACnB,IAAI4B,IAAI,CAAC1B,MAAM,IAAI,CAAC,EAAE;UAClB;QACJ;QAEA,IAAIiE,KAAK,KAAK,CAAC,EAAE;UACb/C,KAAK,CAACG,IAAI,cAAC1E,KAAA,CAAAiG,aAAA,CAACpF,SAAS;YAAC0G,GAAG,EAAE9C,SAAU;YAAC+C,IAAI,EAAE/C,SAAS,IAAI;UAAG,CAAE,CAAC,CAAC;QACpE;MACJ;MAEAM,IAAI,CAACP,OAAO,CAAC,CAAC;QAAEG,EAAE;QAAEC,IAAI;QAAEoB;MAAS,CAAC,KAAK;QACrCzB,KAAK,CAACG,IAAI,cACN1E,KAAA,CAAAiG,aAAA,CAAClF,aAAa;UACVwG,GAAG,EAAE,GAAG5C,EAAE,IAAIF,SAAS,IAAI,EAAE,EAAG;UAChCE,EAAE,EAAEA,EAAG;UACPC,IAAI,EAAEA,IAAK;UACXoB,QAAQ,EAAEA,QAAS;UACnB9D,oBAAoB,EAAEA,oBAAqB;UAC3CL,QAAQ,EAAEqF,YAAa;UACvBzC,SAAS,EAAEA;QAAU,CACxB,CACL,CAAC;MACL,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAIrC,oBAAoB,IAAIoB,gBAAgB,KAAK,EAAE,EAAE;MACjDe,KAAK,CAACG,IAAI,cACN1E,KAAA,CAAAiG,aAAA,CAAClF,aAAa;QACV4D,EAAE,EAAC,aAAa;QAChB9C,QAAQ,EAAEqF,YAAa;QACvBtC,IAAI,EAAE,MAAMpB,gBAAgB;MAAM,CACrC,CACL,CAAC;IACL;IAEA,OAAOe,KAAK;EAChB,CAAC,EAAE,CACC9B,kBAAkB,EAClBL,oBAAoB,EACpBoB,gBAAgB,EAChBL,iBAAiB,EACjBjB,oBAAoB,EACpBgF,YAAY,CACf,CAAC;EAEF/G,SAAS,CAAC,MAAM;IACZ,MAAMsH,aAAa,GAAIC,CAAgB,IAAK;MACxC,IAAI,CAAC9D,cAAc,IAAInB,kBAAkB,CAACY,MAAM,KAAK,CAAC,EAAE;QACpD;MACJ;MAEA,IAAIqE,CAAC,CAACH,GAAG,KAAK,SAAS,IAAIG,CAAC,CAACH,GAAG,KAAK,WAAW,EAAE;QAC9CG,CAAC,CAACC,cAAc,CAAC,CAAC;QAClB,MAAMC,QAAQ,GAAG5D,UAAU,CAACoC,OAAO,EAAEwB,QAAQ;QAE7C,IAAI,CAACA,QAAQ,EAAE;UACX;QACJ;QAEA,MAAMC,aAAa,GAAGC,KAAK,CAACC,IAAI,CAACH,QAAQ,CAAC;QAE1C,MAAMI,WAAW,GAAGH,aAAa,CAAC9B,IAAI,CAAEkC,KAAK,IACzCA,KAAK,CAACtD,EAAE,CAACuD,UAAU,CAAC,qBAAqB,CAC7C,CAAC,EAAEN,QAAQ;QAEX,IAAII,WAAW,IAAIA,WAAW,CAAC3E,MAAM,GAAG,CAAC,EAAE;UACvC,MAAM8E,gBAAgB,GAAGL,KAAK,CAACC,IAAI,CAACC,WAAW,CAAC,CAACzC,MAAM,CAClD0C,KAAK,IAAMA,KAAK,CAAiBG,OAAO,CAACC,WAAW,KAAK,MAC9D,CAAC;UACD9E,wBAAwB,CAAC4E,gBAAgB,CAAC;UAE1C,MAAMG,QAAQ,GACVrF,YAAY,KAAK,IAAI,GACf,CAACA,YAAY,IACRyE,CAAC,CAACH,GAAG,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAC9BY,gBAAgB,CAAC9E,MAAM,IAC3B8E,gBAAgB,CAAC9E,MAAM,GACvB,CAAC;UAEX,IAAIJ,YAAY,KAAK,IAAI,EAAE;YACvB,MAAMsF,WAAW,GAAGJ,gBAAgB,CAAClF,YAAY,CAAmB;YACpEsF,WAAW,CAACC,QAAQ,GAAG,CAAC,CAAC;UAC7B;UAEAtF,eAAe,CAACoF,QAAQ,CAAC;UAEzB,MAAMG,UAAU,GAAGN,gBAAgB,CAACG,QAAQ,CAAmB;UAC/DG,UAAU,CAACD,QAAQ,GAAG,CAAC;UACvBC,UAAU,CAACC,KAAK,CAAC,CAAC;QACtB;MACJ,CAAC,MAAM,IAAIhB,CAAC,CAACH,GAAG,KAAK,OAAO,IAAItE,YAAY,KAAK,IAAI,EAAE;QACnD,IAAIK,qBAAqB,EAAE;UACvB,MAAMqF,OAAO,GAAGrF,qBAAqB,CAACL,YAAY,CAAC;UAEnD,IAAI,CAAC0F,OAAO,EAAE;YACV;UACJ;UAEA,MAAM;YAAEhE,EAAE;YAAEiE;UAAY,CAAC,GAAGD,OAAO;UAEnC,IAAI3C,QAA4B;;UAEhC;UACA;UACA;UACA,IAAI2C,OAAO,CAACf,QAAQ,CAAC,CAAC,CAAC,EAAEiB,UAAU,CAAC3C,GAAG,EAAE;YACrC;YACA;YACA;YACAF,QAAQ,GAAG2C,OAAO,CAACf,QAAQ,CAAC,CAAC,CAAC,EAAEiB,UAAU,CAAC3C,GAAG,CAAC4C,SAAmB;UACtE;UAEA5B,YAAY,CAAC;YACTvC,EAAE,EAAEA,EAAE,CAACyC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACvCxC,IAAI,EAAEgE,WAAW,IAAI,EAAE;YACvB5C;UACJ,CAAC,CAAC;QACN;MACJ;IACJ,CAAC;IAED+C,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEvB,aAAa,CAAC;IAEnD,OAAO,MAAM;MACTsB,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAExB,aAAa,CAAC;IAC1D,CAAC;EACL,CAAC,EAAE,CACCnE,qBAAqB,EACrBL,YAAY,EACZiE,YAAY,EACZzE,kBAAkB,CAACY,MAAM,EACzBO,cAAc,CACjB,CAAC;EAEF,MAAMsF,cAAc,GAAGhJ,WAAW,CAAE4G,KAAoB,IAAK;IACzD,IAAIA,KAAK,CAACqC,OAAO,KAAK,EAAE,EAAE;MACtBzG,qBAAqB,CAAC,EAAE,CAAC;IAC7B;EACJ,CAAC,EAAE,EAAE,CAAC;EAENtC,mBAAmB,CACfoC,GAAG,EACH,OAAO;IACH4G,KAAK,EAAEA,CAAA,KAAMtG,QAAQ,CAAC,EAAE;EAC5B,CAAC,CAAC,EACF,EACJ,CAAC;EAED3C,SAAS,CAAC,MAAM;IACZ4I,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEE,cAAc,CAAC;IAEpD,OAAO,MAAM;MACTH,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEE,cAAc,CAAC;IACxD,CAAC;EACL,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;;EAEpB;AACR;AACA;EACQ/I,SAAS,CAAC,MAAM;IACZ,IAAIoC,WAAW,EAAE;MACbO,QAAQ,CAACP,WAAW,CAAC;IACzB;EACJ,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAEjB,OAAOlC,OAAO,CACV,mBACIL,KAAA,CAAAiG,aAAA,CAAChF,eAAe;IAACuB,GAAG,EAAEuB,MAAO;IAACwD,GAAG,EAAE,cAAczD,IAAI;EAAG,gBACpD9D,KAAA,CAAAiG,aAAA;IAAKtB,EAAE,EAAE,mBAAmBb,IAAI;EAAG,gBAC/B9D,KAAA,CAAAiG,aAAA,CAACrF,KAAK;IACFW,SAAS,EAAEA,SAAU;IACrBiB,GAAG,EAAEyB,QAAS;IACdtC,QAAQ,EAAEkF,YAAa;IACvBjF,MAAM,EAAEqF,UAAW;IACnBoC,OAAO,EAAEhD,WAAY;IACrB7E,WAAW,EAAEA,WAAY;IACzBM,SAAS,EAAEA,SAAU;IACrB8E,WAAW,EAAEA,WAAY;IACzBJ,YAAY,EAAEA,YAAa;IAC3B3D,KAAK,EAAEA;EAAM,CAChB,CACA,CAAC,EACLkB,MAAM,CAACqC,OAAO,iBACXpG,KAAA,CAAAiG,aAAA,CAAC5E,mBAAmB;IAChBiI,kBAAkB,EACd1F,cAAc,IACdnB,kBAAkB,CAACY,MAAM,KAAK,CAAC,KAC9BR,KAAK,CAAC0G,IAAI,CAAC,CAAC,KAAK,EAAE,IAAIpH,6BAA6B,CACxD;IACDqH,OAAO,EAAE9D,WAAY;IACrB+D,aAAa,EAAE1F,MAAM,CAACqC,OAAQ;IAC9BsD,SAAS,EAAE,GAAI;IACf1H,SAAS,EAAEA;EAAU,gBAErBhC,KAAA,CAAAiG,aAAA,CAACnF,aAAa;IACVyG,GAAG,EAAE,mBAAmBzD,IAAI,EAAG;IAC/BQ,aAAa,EAAEA,aAAc;IAC7BqF,cAAc,EAAEjG,MAAO;IACvBX,MAAM,EAAEA,MAAO;IACfP,GAAG,EAAEwB,UAAW;IAChB4F,aAAa,EAAEjE,8BAA+B;IAC9C1D,uBAAuB,EAAEA;EAAwB,GAEhDoF,OACU,CACE,CAEZ,CACpB,EACD,CACIrF,SAAS,EACTqF,OAAO,EACP/C,aAAa,EACbZ,MAAM,EACNuD,UAAU,EACVJ,YAAY,EACZnB,WAAW,EACXW,WAAW,EACXtD,MAAM,EACNxB,SAAS,EACTqF,WAAW,EACXnE,kBAAkB,CAACY,MAAM,EACzBvB,SAAS,EACTN,WAAW,EACXgF,YAAY,EACZvE,uBAAuB,EACvB2B,cAAc,EACdzB,6BAA6B,EAC7B2B,IAAI,EACJjB,KAAK,CAEb,CAAC;AACL,CACJ,CAAC;AAEDvB,SAAS,CAACuI,WAAW,GAAG,WAAW;AAEnC,eAAevI,SAAS","ignoreList":[]}
1
+ {"version":3,"file":"SearchBox.js","names":["React","forwardRef","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","useTheme","calculateContentHeight","searchList","Icon","Input","GroupName","SearchBoxBody","SearchBoxItem","StyledSearchBoxItemImage","StyledSearchBox","StyledSearchBoxIcon","StyledSearchBoxLeftWrapper","useUuid","DropdownBodyWrapper","SearchBox","isInvalid","placeholder","leftIcons","lists","onChange","onBlur","onSelect","onKeyDown","selectedId","container","shouldHideFilterButtons","shouldShowRoundImage","shouldShowContentOnEmptyInput","shouldAddInputToList","shouldShowToggleIcon","customFilter","presetValue","ref","matchingListsItems","setMatchingListsItems","selectedImage","setSelectedImage","value","setValue","height","setHeight","focusedIndex","setFocusedIndex","hasMultipleGroups","setHasMultipleGroups","length","filteredChildrenArray","setFilteredChildrenArray","inputToListValue","setInputToListValue","groups","setGroups","shouldShowBody","setShouldShowBody","uuid","boxRef","contentRef","inputRef","hasFocusRef","isAnimatingRef","shouldShowPresetValue","theme","filterButtons","items","forEach","groupName","push","id","text","activeList","newLists","list","includes","newMatchingItems","newList","searchString","undefined","filteredMatchingListItems","map","filter","item","handleOpen","handleClose","handleFilterButtonsGroupSelect","keys","textArray","selectedItem","find","imageUrl","createElement","src","$shouldShowRoundImage","current","handleFocus","toLowerCase","handleClick","rightElement","onClick","icons","color","leftElement","handleChange","event","filteredLists","target","handleBlur","handleSelect","newItem","replace","content","index","key","name","handleKeyDown","e","preventDefault","children","childrenArray","Array","from","newChildren","child","startsWith","filteredChildren","dataset","isgroupname","newIndex","prevElement","tabIndex","newElement","focus","element","textContent","attributes","nodeValue","document","addEventListener","removeEventListener","handleKeyPress","keyCode","clear","onFocus","shouldShowDropdown","trim","onClose","anchorElement","maxHeight","selectedGroups","onGroupSelect","displayName"],"sources":["../../../../src/components/search-box/SearchBox.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n ChangeEventHandler,\n FC,\n FocusEvent,\n FocusEventHandler,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useTheme } from 'styled-components';\nimport type { IFilterButtonItem } from '../../types/filterButtons';\nimport type { ISearchBoxItem, ISearchBoxItems } from '../../types/searchBox';\nimport { calculateContentHeight } from '../../utils/calculate';\nimport { searchList } from '../../utils/searchBox';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\nimport Icon from '../icon/Icon';\nimport Input from '../input/Input';\nimport GroupName from './group-name/GroupName';\nimport SearchBoxBody from './search-box-body/SearchBoxBody';\nimport SearchBoxItem from './search-box-item/SearchBoxItem';\nimport { StyledSearchBoxItemImage } from './search-box-item/SearchBoxItem.styles';\nimport {\n StyledSearchBox,\n StyledSearchBoxIcon,\n StyledSearchBoxLeftWrapper,\n} from './SearchBox.styles';\nimport { useUuid } from '../../hooks/uuid';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\n\nexport type SearchBoxRef = {\n clear: VoidFunction;\n};\n\nexport type SearchBoxProps = {\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * If true, the input field is marked as invalid\n */\n isInvalid?: boolean;\n /**\n * An optional icon that is displayed inside the left side of the input.\n */\n leftIcons?: string[];\n /**\n * List of groups with items that can be searched. It is possible to give only one list; if multiple lists are provided, the 'group name' parameter becomes mandatory.\n */\n lists: ISearchBoxItems[];\n /**\n * The placeholder that should be displayed.\n */\n placeholder?: string;\n /**\n * Function to be executed when the input lost focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the input is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function that is executed when a letter is pressed\n */\n onKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when an item is selected.\n */\n onSelect?: (item: ISearchBoxItem) => void;\n /**\n * Control the selected item. If you use this prop, make sure to update it when the user selects an item.\n */\n selectedId?: string;\n /**\n * If true, the value in the Input is displayed in the list.\n */\n shouldAddInputToList: boolean;\n /**\n * If true, the filter buttons are hidden.\n */\n shouldHideFilterButtons?: boolean;\n /**\n * Whether the full list of items should be displayed if the input is empty.\n */\n shouldShowContentOnEmptyInput?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the icon to open and close the list should be displayed.\n */\n shouldShowToggleIcon?: boolean;\n /**\n * An optional callback function to filter the elements to be displayed\n */\n customFilter?: (item: ISearchBoxItem) => boolean;\n /**\n * Set an input for the search box - it is not an item of a list, just a string.\n */\n presetValue?: string;\n};\n\nconst SearchBox: FC<SearchBoxProps> = forwardRef<SearchBoxRef, SearchBoxProps>(\n (\n {\n isInvalid = false,\n placeholder,\n leftIcons,\n lists,\n onChange,\n onBlur,\n onSelect,\n onKeyDown,\n selectedId,\n container,\n shouldHideFilterButtons = false,\n shouldShowRoundImage,\n shouldShowContentOnEmptyInput = true,\n shouldAddInputToList = true,\n shouldShowToggleIcon = false,\n customFilter,\n presetValue,\n },\n ref,\n ) => {\n const [matchingListsItems, setMatchingListsItems] = useState<ISearchBoxItems[]>(lists);\n const [selectedImage, setSelectedImage] = useState<ReactElement>();\n const [value, setValue] = useState(\n typeof presetValue === 'string' && presetValue !== '' ? presetValue : '',\n );\n const [height, setHeight] = useState<number>(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n const [hasMultipleGroups, setHasMultipleGroups] = useState<boolean>(lists.length > 1);\n const [filteredChildrenArray, setFilteredChildrenArray] = useState<Element[]>();\n const [inputToListValue, setInputToListValue] = useState<string>('');\n const [groups, setGroups] = useState<string[]>(['all']);\n const [shouldShowBody, setShouldShowBody] = useState(false);\n\n const uuid = useUuid();\n\n const boxRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const hasFocusRef = useRef<boolean>(false);\n const isAnimatingRef = useRef<boolean>(false);\n const shouldShowPresetValue = useRef<boolean>(\n typeof presetValue === 'string' && presetValue !== '',\n );\n\n const theme = useTheme() as Theme;\n\n /**\n * Checks if Lists are smaller then 1\n */\n useEffect(() => {\n setHasMultipleGroups(lists.length > 1);\n }, [lists]);\n\n const filterButtons = useMemo(() => {\n const items: IFilterButtonItem[] = [];\n\n if (lists.length <= 1) {\n return items;\n }\n\n lists.forEach(({ groupName }) => {\n if (groupName) {\n items.push({\n id: groupName,\n text: groupName,\n });\n }\n });\n\n return items;\n }, [lists]);\n\n /**\n * Filters the lists by the FilterButtons\n */\n const activeList = useMemo(() => {\n let newLists: ISearchBoxItems[] = [];\n\n if (groups[0] === 'all') {\n newLists = lists;\n } else {\n lists.forEach((list) => {\n if (list.groupName && groups.includes(list.groupName)) {\n newLists.push(list);\n }\n });\n }\n\n const newMatchingItems: ISearchBoxItems[] = [];\n\n newLists.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n return newLists;\n }, [groups, lists, customFilter, shouldAddInputToList, value]);\n\n const handleOpen = useCallback(() => {\n setShouldShowBody(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setShouldShowBody(false);\n }, []);\n\n const handleFilterButtonsGroupSelect = (keys: string[]) => {\n setGroups(keys.length === 0 ? ['all'] : keys);\n };\n\n /**\n * This hook calculates the height\n */\n useEffect(() => {\n const textArray: string[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n list.forEach(({ text }) => textArray.push(text));\n if (!groupName) {\n return;\n }\n textArray.push(groupName);\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n textArray.push(inputToListValue);\n }\n\n setHeight(calculateContentHeight(textArray));\n }, [inputToListValue, activeList, placeholder, shouldAddInputToList]);\n\n useEffect(() => {\n if (selectedId) {\n activeList.forEach(({ list }) => {\n const selectedItem = list.find(({ id }) => id === selectedId);\n if (selectedItem) {\n setValue(selectedItem.text);\n\n if (selectedItem.imageUrl) {\n setSelectedImage(\n <StyledSearchBoxItemImage\n src={selectedItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />,\n );\n }\n }\n });\n }\n }, [activeList, selectedId, shouldShowRoundImage]);\n\n /**\n * This hook resets the value if the selectedId changes to undefined. This is an own useEffect because the value\n * should not be reset if the list changes and the selectedId is still undefined.\n */\n useEffect(() => {\n if (!selectedId && !shouldShowPresetValue.current) {\n setValue('');\n }\n }, [selectedId]);\n\n useEffect(() => {\n isAnimatingRef.current = shouldShowBody;\n }, [shouldShowBody]);\n\n useEffect(() => {\n if (matchingListsItems.length !== 0 && !isAnimatingRef.current && hasFocusRef.current) {\n handleOpen();\n }\n }, [handleOpen, matchingListsItems.length]);\n\n /**\n * This function sets the items on focus if shouldShowContentOnEmptyInput\n */\n const handleFocus = useCallback(() => {\n hasFocusRef.current = true;\n\n if (shouldShowContentOnEmptyInput) {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n const filteredMatchingListItems = newMatchingItems.map(({ list, groupName }) => ({\n groupName,\n list: list.filter((item) => {\n if (typeof customFilter === 'function') {\n return customFilter(item);\n }\n return !(newMatchingItems.length === 1 && item.text === value);\n }),\n }));\n\n setMatchingListsItems(filteredMatchingListItems);\n\n if (filteredMatchingListItems.length !== 0) {\n handleOpen();\n }\n }\n }, [\n activeList,\n handleOpen,\n customFilter,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n /**\n * This function filters the lists by input\n */\n\n useEffect(() => {\n const newMatchingItems: ISearchBoxItems[] = [];\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: value });\n\n if (newList.length > 0) {\n newMatchingItems.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (newMatchingItems.length === 0 && shouldAddInputToList) {\n newMatchingItems.push({\n groupName: undefined,\n list: [],\n });\n }\n\n if (shouldAddInputToList && inputToListValue !== '') {\n newMatchingItems.forEach(({ list }) => {\n list.forEach(({ text }) => {\n if (text.toLowerCase() === inputToListValue.toLowerCase()) {\n setInputToListValue('');\n }\n });\n });\n }\n }, [\n inputToListValue,\n activeList,\n shouldAddInputToList,\n shouldShowContentOnEmptyInput,\n value,\n ]);\n\n const handleClick = useCallback(() => {\n if (shouldShowBody) {\n handleClose();\n } else {\n handleOpen();\n }\n }, [handleClose, handleOpen, shouldShowBody]);\n\n const rightElement = useMemo(() => {\n if (!shouldShowToggleIcon) {\n return undefined;\n }\n\n return (\n <StyledSearchBoxIcon onClick={handleClick}>\n <Icon icons={['fa fa-chevron-down']} color={theme['006'] as string} />\n </StyledSearchBoxIcon>\n );\n }, [handleClick, shouldShowToggleIcon, theme]);\n\n const leftElement = useMemo(\n () =>\n (leftIcons || selectedImage) && (\n <StyledSearchBoxLeftWrapper>\n {leftIcons && <Icon icons={leftIcons} />}\n {selectedImage && selectedImage}\n </StyledSearchBoxLeftWrapper>\n ),\n [leftIcons, selectedImage],\n );\n\n /**\n * This function handles changes of the input\n */\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const filteredLists: ISearchBoxItems[] = [];\n shouldShowPresetValue.current = false;\n\n activeList.forEach(({ list, groupName }) => {\n const newList = searchList({ items: list, searchString: event.target.value });\n\n if (newList.length > 0) {\n filteredLists.push({\n groupName,\n list: newList,\n });\n }\n });\n\n if (filteredLists.length === 0 && shouldAddInputToList) {\n filteredLists.push({\n groupName: undefined,\n list: [],\n });\n }\n\n setSelectedImage(undefined);\n\n if (!shouldShowContentOnEmptyInput && !event.target.value) {\n setMatchingListsItems([]);\n } else {\n setMatchingListsItems(filteredLists);\n }\n\n if (filteredLists.length !== 0) {\n handleOpen();\n }\n\n setValue(event.target.value);\n setInputToListValue(event.target.value);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n },\n [activeList, handleOpen, onChange, shouldAddInputToList, shouldShowContentOnEmptyInput],\n );\n\n /**\n * This function handles the blur event of the input\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n hasFocusRef.current = false;\n\n if (typeof onBlur === 'function') {\n onBlur(event);\n }\n },\n [onBlur],\n );\n\n /**\n * This function handles the item selection\n */\n const handleSelect = useCallback(\n (item: ISearchBoxItem) => {\n const newItem = {\n ...item,\n text: item.text.replace('<b>', '').replace('</b>', '').replace('</b', ''),\n };\n\n setValue(newItem.text);\n handleClose();\n\n setSelectedImage(\n newItem.imageUrl ? (\n <StyledSearchBoxItemImage\n src={newItem.imageUrl}\n $shouldShowRoundImage={shouldShowRoundImage}\n />\n ) : undefined,\n );\n\n setMatchingListsItems([]);\n\n if (typeof onSelect === 'function') {\n onSelect(newItem);\n }\n },\n [handleClose, onSelect, shouldShowRoundImage],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n matchingListsItems.forEach(({ groupName, list }, index) => {\n if (hasMultipleGroups) {\n if (list.length <= 0) {\n return;\n }\n\n if (index !== 0) {\n items.push(<GroupName key={groupName} name={groupName ?? ''} />);\n }\n }\n\n list.forEach(({ id, text, imageUrl }) => {\n items.push(\n <SearchBoxItem\n key={`${id}_${groupName ?? ''}`}\n id={id}\n text={text}\n imageUrl={imageUrl}\n shouldShowRoundImage={shouldShowRoundImage}\n onSelect={handleSelect}\n groupName={groupName}\n />,\n );\n });\n });\n\n if (shouldAddInputToList && inputToListValue !== '') {\n items.push(\n <SearchBoxItem\n id=\"input-value\"\n onSelect={handleSelect}\n text={`<b>${inputToListValue}</b`}\n />,\n );\n }\n\n return items;\n }, [\n matchingListsItems,\n shouldAddInputToList,\n inputToListValue,\n hasMultipleGroups,\n shouldShowRoundImage,\n handleSelect,\n ]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!shouldShowBody || matchingListsItems.length === 0) {\n return;\n }\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const children = contentRef.current?.children;\n\n if (!children) {\n return;\n }\n\n const childrenArray = Array.from(children);\n\n const newChildren = childrenArray.find((child) =>\n child.id.startsWith('searchbox-content__'),\n )?.children;\n\n if (newChildren && newChildren.length > 0) {\n const filteredChildren = Array.from(newChildren).filter(\n (child) => (child as HTMLElement).dataset.isgroupname !== 'true',\n );\n setFilteredChildrenArray(filteredChildren);\n\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (e.key === 'ArrowUp' ? -1 : 1) +\n filteredChildren.length) %\n filteredChildren.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = filteredChildren[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const newElement = filteredChildren[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n if (filteredChildrenArray) {\n const element = filteredChildrenArray[focusedIndex];\n\n if (!element) {\n return;\n }\n\n const { id, textContent } = element;\n\n let imageUrl: string | undefined;\n\n // Just Ignore, it works\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (element.children[0]?.attributes.src) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n imageUrl = element.children[0]?.attributes.src.nodeValue as string;\n }\n\n handleSelect({\n id: id.replace('search-box-item__', ''),\n text: textContent ?? '',\n imageUrl,\n });\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n filteredChildrenArray,\n focusedIndex,\n handleSelect,\n matchingListsItems.length,\n shouldShowBody,\n ]);\n\n const handleKeyPress = useCallback((event: KeyboardEvent) => {\n if (event.keyCode === 27) {\n setMatchingListsItems([]);\n }\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n clear: () => setValue(''),\n }),\n [],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyPress);\n\n return () => {\n document.addEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n /**\n * Update the value if preset value changes\n */\n useEffect(() => {\n if (presetValue) {\n setValue(presetValue);\n }\n }, [presetValue]);\n\n return useMemo(\n () => (\n <StyledSearchBox ref={boxRef} key={`search-box-${uuid}`}>\n <div id={`search_box_input${uuid}`}>\n <Input\n isInvalid={isInvalid}\n ref={inputRef}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n leftElement={leftElement}\n rightElement={rightElement}\n value={value}\n />\n </div>\n {boxRef.current && (\n <DropdownBodyWrapper\n shouldShowDropdown={\n shouldShowBody &&\n matchingListsItems.length !== 0 &&\n (value.trim() !== '' || shouldShowContentOnEmptyInput)\n }\n onClose={handleClose}\n anchorElement={boxRef.current}\n maxHeight={300}\n container={container}\n >\n <SearchBoxBody\n key={`search-box-body-${uuid}`}\n filterButtons={filterButtons}\n selectedGroups={groups}\n height={height}\n ref={contentRef}\n onGroupSelect={handleFilterButtonsGroupSelect}\n shouldHideFilterButtons={shouldHideFilterButtons}\n >\n {content}\n </SearchBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledSearchBox>\n ),\n [\n container,\n content,\n filterButtons,\n groups,\n handleBlur,\n handleChange,\n handleClose,\n handleFocus,\n height,\n isInvalid,\n leftElement,\n matchingListsItems.length,\n onKeyDown,\n placeholder,\n rightElement,\n shouldHideFilterButtons,\n shouldShowBody,\n shouldShowContentOnEmptyInput,\n uuid,\n value,\n ],\n );\n },\n);\n\nSearchBox.displayName = 'SearchBox';\n\nexport default SearchBox;\n"],"mappings":"AAAA,OAAOA,KAAK,IAMRC,UAAU,EAGVC,WAAW,EACXC,SAAS,EACTC,mBAAmB,EACnBC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACL,OAAO;AACd,SAASC,QAAQ,QAAQ,mBAAmB;AAG5C,SAASC,sBAAsB,QAAQ,uBAAuB;AAC9D,SAASC,UAAU,QAAQ,uBAAuB;AAElD,OAAOC,IAAI,MAAM,cAAc;AAC/B,OAAOC,KAAK,MAAM,gBAAgB;AAClC,OAAOC,SAAS,MAAM,wBAAwB;AAC9C,OAAOC,aAAa,MAAM,iCAAiC;AAC3D,OAAOC,aAAa,MAAM,iCAAiC;AAC3D,SAASC,wBAAwB,QAAQ,wCAAwC;AACjF,SACIC,eAAe,EACfC,mBAAmB,EACnBC,0BAA0B,QACvB,oBAAoB;AAC3B,SAASC,OAAO,QAAQ,kBAAkB;AAC1C,OAAOC,mBAAmB,MAAM,8CAA8C;AA6E9E,MAAMC,SAA6B,gBAAGrB,UAAU,CAC5C,CACI;EACIsB,SAAS,GAAG,KAAK;EACjBC,WAAW;EACXC,SAAS;EACTC,KAAK;EACLC,QAAQ;EACRC,MAAM;EACNC,QAAQ;EACRC,SAAS;EACTC,UAAU;EACVC,SAAS;EACTC,uBAAuB,GAAG,KAAK;EAC/BC,oBAAoB;EACpBC,6BAA6B,GAAG,IAAI;EACpCC,oBAAoB,GAAG,IAAI;EAC3BC,oBAAoB,GAAG,KAAK;EAC5BC,YAAY;EACZC;AACJ,CAAC,EACDC,GAAG,KACF;EACD,MAAM,CAACC,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGnC,QAAQ,CAAoBmB,KAAK,CAAC;EACtF,MAAM,CAACiB,aAAa,EAAEC,gBAAgB,CAAC,GAAGrC,QAAQ,CAAe,CAAC;EAClE,MAAM,CAACsC,KAAK,EAAEC,QAAQ,CAAC,GAAGvC,QAAQ,CAC9B,OAAOgC,WAAW,KAAK,QAAQ,IAAIA,WAAW,KAAK,EAAE,GAAGA,WAAW,GAAG,EAC1E,CAAC;EACD,MAAM,CAACQ,MAAM,EAAEC,SAAS,CAAC,GAAGzC,QAAQ,CAAS,CAAC,CAAC;EAC/C,MAAM,CAAC0C,YAAY,EAAEC,eAAe,CAAC,GAAG3C,QAAQ,CAAgB,IAAI,CAAC;EACrE,MAAM,CAAC4C,iBAAiB,EAAEC,oBAAoB,CAAC,GAAG7C,QAAQ,CAAUmB,KAAK,CAAC2B,MAAM,GAAG,CAAC,CAAC;EACrF,MAAM,CAACC,qBAAqB,EAAEC,wBAAwB,CAAC,GAAGhD,QAAQ,CAAY,CAAC;EAC/E,MAAM,CAACiD,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGlD,QAAQ,CAAS,EAAE,CAAC;EACpE,MAAM,CAACmD,MAAM,EAAEC,SAAS,CAAC,GAAGpD,QAAQ,CAAW,CAAC,KAAK,CAAC,CAAC;EACvD,MAAM,CAACqD,cAAc,EAAEC,iBAAiB,CAAC,GAAGtD,QAAQ,CAAC,KAAK,CAAC;EAE3D,MAAMuD,IAAI,GAAG1C,OAAO,CAAC,CAAC;EAEtB,MAAM2C,MAAM,GAAGzD,MAAM,CAAiB,IAAI,CAAC;EAC3C,MAAM0D,UAAU,GAAG1D,MAAM,CAAiB,IAAI,CAAC;EAC/C,MAAM2D,QAAQ,GAAG3D,MAAM,CAA0B,IAAI,CAAC;EAEtD,MAAM4D,WAAW,GAAG5D,MAAM,CAAU,KAAK,CAAC;EAC1C,MAAM6D,cAAc,GAAG7D,MAAM,CAAU,KAAK,CAAC;EAC7C,MAAM8D,qBAAqB,GAAG9D,MAAM,CAChC,OAAOiC,WAAW,KAAK,QAAQ,IAAIA,WAAW,KAAK,EACvD,CAAC;EAED,MAAM8B,KAAK,GAAG7D,QAAQ,CAAC,CAAU;;EAEjC;AACR;AACA;EACQL,SAAS,CAAC,MAAM;IACZiD,oBAAoB,CAAC1B,KAAK,CAAC2B,MAAM,GAAG,CAAC,CAAC;EAC1C,CAAC,EAAE,CAAC3B,KAAK,CAAC,CAAC;EAEX,MAAM4C,aAAa,GAAGjE,OAAO,CAAC,MAAM;IAChC,MAAMkE,KAA0B,GAAG,EAAE;IAErC,IAAI7C,KAAK,CAAC2B,MAAM,IAAI,CAAC,EAAE;MACnB,OAAOkB,KAAK;IAChB;IAEA7C,KAAK,CAAC8C,OAAO,CAAC,CAAC;MAAEC;IAAU,CAAC,KAAK;MAC7B,IAAIA,SAAS,EAAE;QACXF,KAAK,CAACG,IAAI,CAAC;UACPC,EAAE,EAAEF,SAAS;UACbG,IAAI,EAAEH;QACV,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEF,OAAOF,KAAK;EAChB,CAAC,EAAE,CAAC7C,KAAK,CAAC,CAAC;;EAEX;AACR;AACA;EACQ,MAAMmD,UAAU,GAAGxE,OAAO,CAAC,MAAM;IAC7B,IAAIyE,QAA2B,GAAG,EAAE;IAEpC,IAAIpB,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;MACrBoB,QAAQ,GAAGpD,KAAK;IACpB,CAAC,MAAM;MACHA,KAAK,CAAC8C,OAAO,CAAEO,IAAI,IAAK;QACpB,IAAIA,IAAI,CAACN,SAAS,IAAIf,MAAM,CAACsB,QAAQ,CAACD,IAAI,CAACN,SAAS,CAAC,EAAE;UACnDK,QAAQ,CAACJ,IAAI,CAACK,IAAI,CAAC;QACvB;MACJ,CAAC,CAAC;IACN;IAEA,MAAME,gBAAmC,GAAG,EAAE;IAE9CH,QAAQ,CAACN,OAAO,CAAC,CAAC;MAAEO,IAAI;MAAEN;IAAU,CAAC,KAAK;MACtC,MAAMS,OAAO,GAAGxE,UAAU,CAAC;QAAE6D,KAAK,EAAEQ,IAAI;QAAEI,YAAY,EAAEtC;MAAM,CAAC,CAAC;MAEhE,IAAIqC,OAAO,CAAC7B,MAAM,GAAG,CAAC,EAAE;QACpB4B,gBAAgB,CAACP,IAAI,CAAC;UAClBD,SAAS;UACTM,IAAI,EAAEG;QACV,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEF,IAAID,gBAAgB,CAAC5B,MAAM,KAAK,CAAC,IAAIjB,oBAAoB,EAAE;MACvD6C,gBAAgB,CAACP,IAAI,CAAC;QAClBD,SAAS,EAAEW,SAAS;QACpBL,IAAI,EAAE;MACV,CAAC,CAAC;IACN;IAEA,MAAMM,yBAAyB,GAAGJ,gBAAgB,CAACK,GAAG,CAAC,CAAC;MAAEP,IAAI;MAAEN;IAAU,CAAC,MAAM;MAC7EA,SAAS;MACTM,IAAI,EAAEA,IAAI,CAACQ,MAAM,CAAEC,IAAI,IAAK;QACxB,IAAI,OAAOlD,YAAY,KAAK,UAAU,EAAE;UACpC,OAAOA,YAAY,CAACkD,IAAI,CAAC;QAC7B;QACA,OAAO,EAAEP,gBAAgB,CAAC5B,MAAM,KAAK,CAAC,IAAImC,IAAI,CAACZ,IAAI,KAAK/B,KAAK,CAAC;MAClE,CAAC;IACL,CAAC,CAAC,CAAC;IAEHH,qBAAqB,CAAC2C,yBAAyB,CAAC;IAEhD,OAAOP,QAAQ;EACnB,CAAC,EAAE,CAACpB,MAAM,EAAEhC,KAAK,EAAEY,YAAY,EAAEF,oBAAoB,EAAES,KAAK,CAAC,CAAC;EAE9D,MAAM4C,UAAU,GAAGvF,WAAW,CAAC,MAAM;IACjC2D,iBAAiB,CAAC,IAAI,CAAC;EAC3B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAM6B,WAAW,GAAGxF,WAAW,CAAC,MAAM;IAClC2D,iBAAiB,CAAC,KAAK,CAAC;EAC5B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAM8B,8BAA8B,GAAIC,IAAc,IAAK;IACvDjC,SAAS,CAACiC,IAAI,CAACvC,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAGuC,IAAI,CAAC;EACjD,CAAC;;EAED;AACR;AACA;EACQzF,SAAS,CAAC,MAAM;IACZ,MAAM0F,SAAmB,GAAG,EAAE;IAE9BhB,UAAU,CAACL,OAAO,CAAC,CAAC;MAAEO,IAAI;MAAEN;IAAU,CAAC,KAAK;MACxCM,IAAI,CAACP,OAAO,CAAC,CAAC;QAAEI;MAAK,CAAC,KAAKiB,SAAS,CAACnB,IAAI,CAACE,IAAI,CAAC,CAAC;MAChD,IAAI,CAACH,SAAS,EAAE;QACZ;MACJ;MACAoB,SAAS,CAACnB,IAAI,CAACD,SAAS,CAAC;IAC7B,CAAC,CAAC;IAEF,IAAIrC,oBAAoB,IAAIoB,gBAAgB,KAAK,EAAE,EAAE;MACjDqC,SAAS,CAACnB,IAAI,CAAClB,gBAAgB,CAAC;IACpC;IAEAR,SAAS,CAACvC,sBAAsB,CAACoF,SAAS,CAAC,CAAC;EAChD,CAAC,EAAE,CAACrC,gBAAgB,EAAEqB,UAAU,EAAErD,WAAW,EAAEY,oBAAoB,CAAC,CAAC;EAErEjC,SAAS,CAAC,MAAM;IACZ,IAAI4B,UAAU,EAAE;MACZ8C,UAAU,CAACL,OAAO,CAAC,CAAC;QAAEO;MAAK,CAAC,KAAK;QAC7B,MAAMe,YAAY,GAAGf,IAAI,CAACgB,IAAI,CAAC,CAAC;UAAEpB;QAAG,CAAC,KAAKA,EAAE,KAAK5C,UAAU,CAAC;QAC7D,IAAI+D,YAAY,EAAE;UACdhD,QAAQ,CAACgD,YAAY,CAAClB,IAAI,CAAC;UAE3B,IAAIkB,YAAY,CAACE,QAAQ,EAAE;YACvBpD,gBAAgB,cACZ5C,KAAA,CAAAiG,aAAA,CAACjF,wBAAwB;cACrBkF,GAAG,EAAEJ,YAAY,CAACE,QAAS;cAC3BG,qBAAqB,EAAEjE;YAAqB,CAC/C,CACL,CAAC;UACL;QACJ;MACJ,CAAC,CAAC;IACN;EACJ,CAAC,EAAE,CAAC2C,UAAU,EAAE9C,UAAU,EAAEG,oBAAoB,CAAC,CAAC;;EAElD;AACR;AACA;AACA;EACQ/B,SAAS,CAAC,MAAM;IACZ,IAAI,CAAC4B,UAAU,IAAI,CAACqC,qBAAqB,CAACgC,OAAO,EAAE;MAC/CtD,QAAQ,CAAC,EAAE,CAAC;IAChB;EACJ,CAAC,EAAE,CAACf,UAAU,CAAC,CAAC;EAEhB5B,SAAS,CAAC,MAAM;IACZgE,cAAc,CAACiC,OAAO,GAAGxC,cAAc;EAC3C,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;EAEpBzD,SAAS,CAAC,MAAM;IACZ,IAAIsC,kBAAkB,CAACY,MAAM,KAAK,CAAC,IAAI,CAACc,cAAc,CAACiC,OAAO,IAAIlC,WAAW,CAACkC,OAAO,EAAE;MACnFX,UAAU,CAAC,CAAC;IAChB;EACJ,CAAC,EAAE,CAACA,UAAU,EAAEhD,kBAAkB,CAACY,MAAM,CAAC,CAAC;;EAE3C;AACR;AACA;EACQ,MAAMgD,WAAW,GAAGnG,WAAW,CAAC,MAAM;IAClCgE,WAAW,CAACkC,OAAO,GAAG,IAAI;IAE1B,IAAIjE,6BAA6B,EAAE;MAC/B,MAAM8C,gBAAmC,GAAG,EAAE;MAE9CJ,UAAU,CAACL,OAAO,CAAC,CAAC;QAAEO,IAAI;QAAEN;MAAU,CAAC,KAAK;QACxC,MAAMS,OAAO,GAAGxE,UAAU,CAAC;UAAE6D,KAAK,EAAEQ,IAAI;UAAEI,YAAY,EAAEtC;QAAM,CAAC,CAAC;QAEhE,IAAIqC,OAAO,CAAC7B,MAAM,GAAG,CAAC,EAAE;UACpB4B,gBAAgB,CAACP,IAAI,CAAC;YAClBD,SAAS;YACTM,IAAI,EAAEG;UACV,CAAC,CAAC;QACN;MACJ,CAAC,CAAC;MAEF,IAAID,gBAAgB,CAAC5B,MAAM,KAAK,CAAC,IAAIjB,oBAAoB,EAAE;QACvD6C,gBAAgB,CAACP,IAAI,CAAC;UAClBD,SAAS,EAAEW,SAAS;UACpBL,IAAI,EAAE;QACV,CAAC,CAAC;MACN;MAEA,MAAMM,yBAAyB,GAAGJ,gBAAgB,CAACK,GAAG,CAAC,CAAC;QAAEP,IAAI;QAAEN;MAAU,CAAC,MAAM;QAC7EA,SAAS;QACTM,IAAI,EAAEA,IAAI,CAACQ,MAAM,CAAEC,IAAI,IAAK;UACxB,IAAI,OAAOlD,YAAY,KAAK,UAAU,EAAE;YACpC,OAAOA,YAAY,CAACkD,IAAI,CAAC;UAC7B;UACA,OAAO,EAAEP,gBAAgB,CAAC5B,MAAM,KAAK,CAAC,IAAImC,IAAI,CAACZ,IAAI,KAAK/B,KAAK,CAAC;QAClE,CAAC;MACL,CAAC,CAAC,CAAC;MAEHH,qBAAqB,CAAC2C,yBAAyB,CAAC;MAEhD,IAAIA,yBAAyB,CAAChC,MAAM,KAAK,CAAC,EAAE;QACxCoC,UAAU,CAAC,CAAC;MAChB;IACJ;EACJ,CAAC,EAAE,CACCZ,UAAU,EACVY,UAAU,EACVnD,YAAY,EACZF,oBAAoB,EACpBD,6BAA6B,EAC7BU,KAAK,CACR,CAAC;;EAEF;AACR;AACA;;EAEQ1C,SAAS,CAAC,MAAM;IACZ,MAAM8E,gBAAmC,GAAG,EAAE;IAE9CJ,UAAU,CAACL,OAAO,CAAC,CAAC;MAAEO,IAAI;MAAEN;IAAU,CAAC,KAAK;MACxC,MAAMS,OAAO,GAAGxE,UAAU,CAAC;QAAE6D,KAAK,EAAEQ,IAAI;QAAEI,YAAY,EAAEtC;MAAM,CAAC,CAAC;MAEhE,IAAIqC,OAAO,CAAC7B,MAAM,GAAG,CAAC,EAAE;QACpB4B,gBAAgB,CAACP,IAAI,CAAC;UAClBD,SAAS;UACTM,IAAI,EAAEG;QACV,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEF,IAAID,gBAAgB,CAAC5B,MAAM,KAAK,CAAC,IAAIjB,oBAAoB,EAAE;MACvD6C,gBAAgB,CAACP,IAAI,CAAC;QAClBD,SAAS,EAAEW,SAAS;QACpBL,IAAI,EAAE;MACV,CAAC,CAAC;IACN;IAEA,IAAI3C,oBAAoB,IAAIoB,gBAAgB,KAAK,EAAE,EAAE;MACjDyB,gBAAgB,CAACT,OAAO,CAAC,CAAC;QAAEO;MAAK,CAAC,KAAK;QACnCA,IAAI,CAACP,OAAO,CAAC,CAAC;UAAEI;QAAK,CAAC,KAAK;UACvB,IAAIA,IAAI,CAAC0B,WAAW,CAAC,CAAC,KAAK9C,gBAAgB,CAAC8C,WAAW,CAAC,CAAC,EAAE;YACvD7C,mBAAmB,CAAC,EAAE,CAAC;UAC3B;QACJ,CAAC,CAAC;MACN,CAAC,CAAC;IACN;EACJ,CAAC,EAAE,CACCD,gBAAgB,EAChBqB,UAAU,EACVzC,oBAAoB,EACpBD,6BAA6B,EAC7BU,KAAK,CACR,CAAC;EAEF,MAAM0D,WAAW,GAAGrG,WAAW,CAAC,MAAM;IAClC,IAAI0D,cAAc,EAAE;MAChB8B,WAAW,CAAC,CAAC;IACjB,CAAC,MAAM;MACHD,UAAU,CAAC,CAAC;IAChB;EACJ,CAAC,EAAE,CAACC,WAAW,EAAED,UAAU,EAAE7B,cAAc,CAAC,CAAC;EAE7C,MAAM4C,YAAY,GAAGnG,OAAO,CAAC,MAAM;IAC/B,IAAI,CAACgC,oBAAoB,EAAE;MACvB,OAAO+C,SAAS;IACpB;IAEA,oBACIpF,KAAA,CAAAiG,aAAA,CAAC/E,mBAAmB;MAACuF,OAAO,EAAEF;IAAY,gBACtCvG,KAAA,CAAAiG,aAAA,CAACtF,IAAI;MAAC+F,KAAK,EAAE,CAAC,oBAAoB,CAAE;MAACC,KAAK,EAAEtC,KAAK,CAAC,KAAK;IAAY,CAAE,CACpD,CAAC;EAE9B,CAAC,EAAE,CAACkC,WAAW,EAAElE,oBAAoB,EAAEgC,KAAK,CAAC,CAAC;EAE9C,MAAMuC,WAAW,GAAGvG,OAAO,CACvB,MACI,CAACoB,SAAS,IAAIkB,aAAa,kBACvB3C,KAAA,CAAAiG,aAAA,CAAC9E,0BAA0B,QACtBM,SAAS,iBAAIzB,KAAA,CAAAiG,aAAA,CAACtF,IAAI;IAAC+F,KAAK,EAAEjF;EAAU,CAAE,CAAC,EACvCkB,aAAa,IAAIA,aACM,CAC/B,EACL,CAAClB,SAAS,EAAEkB,aAAa,CAC7B,CAAC;;EAED;AACR;AACA;EACQ,MAAMkE,YAAY,GAAG3G,WAAW,CAC3B4G,KAAoC,IAAK;IACtC,MAAMC,aAAgC,GAAG,EAAE;IAC3C3C,qBAAqB,CAACgC,OAAO,GAAG,KAAK;IAErCvB,UAAU,CAACL,OAAO,CAAC,CAAC;MAAEO,IAAI;MAAEN;IAAU,CAAC,KAAK;MACxC,MAAMS,OAAO,GAAGxE,UAAU,CAAC;QAAE6D,KAAK,EAAEQ,IAAI;QAAEI,YAAY,EAAE2B,KAAK,CAACE,MAAM,CAACnE;MAAM,CAAC,CAAC;MAE7E,IAAIqC,OAAO,CAAC7B,MAAM,GAAG,CAAC,EAAE;QACpB0D,aAAa,CAACrC,IAAI,CAAC;UACfD,SAAS;UACTM,IAAI,EAAEG;QACV,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;IAEF,IAAI6B,aAAa,CAAC1D,MAAM,KAAK,CAAC,IAAIjB,oBAAoB,EAAE;MACpD2E,aAAa,CAACrC,IAAI,CAAC;QACfD,SAAS,EAAEW,SAAS;QACpBL,IAAI,EAAE;MACV,CAAC,CAAC;IACN;IAEAnC,gBAAgB,CAACwC,SAAS,CAAC;IAE3B,IAAI,CAACjD,6BAA6B,IAAI,CAAC2E,KAAK,CAACE,MAAM,CAACnE,KAAK,EAAE;MACvDH,qBAAqB,CAAC,EAAE,CAAC;IAC7B,CAAC,MAAM;MACHA,qBAAqB,CAACqE,aAAa,CAAC;IACxC;IAEA,IAAIA,aAAa,CAAC1D,MAAM,KAAK,CAAC,EAAE;MAC5BoC,UAAU,CAAC,CAAC;IAChB;IAEA3C,QAAQ,CAACgE,KAAK,CAACE,MAAM,CAACnE,KAAK,CAAC;IAC5BY,mBAAmB,CAACqD,KAAK,CAACE,MAAM,CAACnE,KAAK,CAAC;IAEvC,IAAI,OAAOlB,QAAQ,KAAK,UAAU,EAAE;MAChCA,QAAQ,CAACmF,KAAK,CAAC;IACnB;EACJ,CAAC,EACD,CAACjC,UAAU,EAAEY,UAAU,EAAE9D,QAAQ,EAAES,oBAAoB,EAAED,6BAA6B,CAC1F,CAAC;;EAED;AACR;AACA;EACQ,MAAM8E,UAAU,GAAG/G,WAAW,CACzB4G,KAAmC,IAAK;IACrC5C,WAAW,CAACkC,OAAO,GAAG,KAAK;IAE3B,IAAI,OAAOxE,MAAM,KAAK,UAAU,EAAE;MAC9BA,MAAM,CAACkF,KAAK,CAAC;IACjB;EACJ,CAAC,EACD,CAAClF,MAAM,CACX,CAAC;;EAED;AACR;AACA;EACQ,MAAMsF,YAAY,GAAGhH,WAAW,CAC3BsF,IAAoB,IAAK;IACtB,MAAM2B,OAAO,GAAG;MACZ,GAAG3B,IAAI;MACPZ,IAAI,EAAEY,IAAI,CAACZ,IAAI,CAACwC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,KAAK,EAAE,EAAE;IAC5E,CAAC;IAEDtE,QAAQ,CAACqE,OAAO,CAACvC,IAAI,CAAC;IACtBc,WAAW,CAAC,CAAC;IAEb9C,gBAAgB,CACZuE,OAAO,CAACnB,QAAQ,gBACZhG,KAAA,CAAAiG,aAAA,CAACjF,wBAAwB;MACrBkF,GAAG,EAAEiB,OAAO,CAACnB,QAAS;MACtBG,qBAAqB,EAAEjE;IAAqB,CAC/C,CAAC,GACFkD,SACR,CAAC;IAED1C,qBAAqB,CAAC,EAAE,CAAC;IAEzB,IAAI,OAAOb,QAAQ,KAAK,UAAU,EAAE;MAChCA,QAAQ,CAACsF,OAAO,CAAC;IACrB;EACJ,CAAC,EACD,CAACzB,WAAW,EAAE7D,QAAQ,EAAEK,oBAAoB,CAChD,CAAC;EAED,MAAMmF,OAAO,GAAGhH,OAAO,CAAC,MAAM;IAC1B,MAAMkE,KAAqB,GAAG,EAAE;IAEhC9B,kBAAkB,CAAC+B,OAAO,CAAC,CAAC;MAAEC,SAAS;MAAEM;IAAK,CAAC,EAAEuC,KAAK,KAAK;MACvD,IAAInE,iBAAiB,EAAE;QACnB,IAAI4B,IAAI,CAAC1B,MAAM,IAAI,CAAC,EAAE;UAClB;QACJ;QAEA,IAAIiE,KAAK,KAAK,CAAC,EAAE;UACb/C,KAAK,CAACG,IAAI,cAAC1E,KAAA,CAAAiG,aAAA,CAACpF,SAAS;YAAC0G,GAAG,EAAE9C,SAAU;YAAC+C,IAAI,EAAE/C,SAAS,IAAI;UAAG,CAAE,CAAC,CAAC;QACpE;MACJ;MAEAM,IAAI,CAACP,OAAO,CAAC,CAAC;QAAEG,EAAE;QAAEC,IAAI;QAAEoB;MAAS,CAAC,KAAK;QACrCzB,KAAK,CAACG,IAAI,cACN1E,KAAA,CAAAiG,aAAA,CAAClF,aAAa;UACVwG,GAAG,EAAE,GAAG5C,EAAE,IAAIF,SAAS,IAAI,EAAE,EAAG;UAChCE,EAAE,EAAEA,EAAG;UACPC,IAAI,EAAEA,IAAK;UACXoB,QAAQ,EAAEA,QAAS;UACnB9D,oBAAoB,EAAEA,oBAAqB;UAC3CL,QAAQ,EAAEqF,YAAa;UACvBzC,SAAS,EAAEA;QAAU,CACxB,CACL,CAAC;MACL,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAIrC,oBAAoB,IAAIoB,gBAAgB,KAAK,EAAE,EAAE;MACjDe,KAAK,CAACG,IAAI,cACN1E,KAAA,CAAAiG,aAAA,CAAClF,aAAa;QACV4D,EAAE,EAAC,aAAa;QAChB9C,QAAQ,EAAEqF,YAAa;QACvBtC,IAAI,EAAE,MAAMpB,gBAAgB;MAAM,CACrC,CACL,CAAC;IACL;IAEA,OAAOe,KAAK;EAChB,CAAC,EAAE,CACC9B,kBAAkB,EAClBL,oBAAoB,EACpBoB,gBAAgB,EAChBL,iBAAiB,EACjBjB,oBAAoB,EACpBgF,YAAY,CACf,CAAC;EAEF/G,SAAS,CAAC,MAAM;IACZ,MAAMsH,aAAa,GAAIC,CAAgB,IAAK;MACxC,IAAI,CAAC9D,cAAc,IAAInB,kBAAkB,CAACY,MAAM,KAAK,CAAC,EAAE;QACpD;MACJ;MAEA,IAAIqE,CAAC,CAACH,GAAG,KAAK,SAAS,IAAIG,CAAC,CAACH,GAAG,KAAK,WAAW,EAAE;QAC9CG,CAAC,CAACC,cAAc,CAAC,CAAC;QAClB,MAAMC,QAAQ,GAAG5D,UAAU,CAACoC,OAAO,EAAEwB,QAAQ;QAE7C,IAAI,CAACA,QAAQ,EAAE;UACX;QACJ;QAEA,MAAMC,aAAa,GAAGC,KAAK,CAACC,IAAI,CAACH,QAAQ,CAAC;QAE1C,MAAMI,WAAW,GAAGH,aAAa,CAAC9B,IAAI,CAAEkC,KAAK,IACzCA,KAAK,CAACtD,EAAE,CAACuD,UAAU,CAAC,qBAAqB,CAC7C,CAAC,EAAEN,QAAQ;QAEX,IAAII,WAAW,IAAIA,WAAW,CAAC3E,MAAM,GAAG,CAAC,EAAE;UACvC,MAAM8E,gBAAgB,GAAGL,KAAK,CAACC,IAAI,CAACC,WAAW,CAAC,CAACzC,MAAM,CAClD0C,KAAK,IAAMA,KAAK,CAAiBG,OAAO,CAACC,WAAW,KAAK,MAC9D,CAAC;UACD9E,wBAAwB,CAAC4E,gBAAgB,CAAC;UAE1C,MAAMG,QAAQ,GACVrF,YAAY,KAAK,IAAI,GACf,CAACA,YAAY,IACRyE,CAAC,CAACH,GAAG,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAC9BY,gBAAgB,CAAC9E,MAAM,IAC3B8E,gBAAgB,CAAC9E,MAAM,GACvB,CAAC;UAEX,IAAIJ,YAAY,KAAK,IAAI,EAAE;YACvB,MAAMsF,WAAW,GAAGJ,gBAAgB,CAAClF,YAAY,CAAmB;YACpEsF,WAAW,CAACC,QAAQ,GAAG,CAAC,CAAC;UAC7B;UAEAtF,eAAe,CAACoF,QAAQ,CAAC;UAEzB,MAAMG,UAAU,GAAGN,gBAAgB,CAACG,QAAQ,CAAmB;UAC/DG,UAAU,CAACD,QAAQ,GAAG,CAAC;UACvBC,UAAU,CAACC,KAAK,CAAC,CAAC;QACtB;MACJ,CAAC,MAAM,IAAIhB,CAAC,CAACH,GAAG,KAAK,OAAO,IAAItE,YAAY,KAAK,IAAI,EAAE;QACnD,IAAIK,qBAAqB,EAAE;UACvB,MAAMqF,OAAO,GAAGrF,qBAAqB,CAACL,YAAY,CAAC;UAEnD,IAAI,CAAC0F,OAAO,EAAE;YACV;UACJ;UAEA,MAAM;YAAEhE,EAAE;YAAEiE;UAAY,CAAC,GAAGD,OAAO;UAEnC,IAAI3C,QAA4B;;UAEhC;UACA;UACA;UACA,IAAI2C,OAAO,CAACf,QAAQ,CAAC,CAAC,CAAC,EAAEiB,UAAU,CAAC3C,GAAG,EAAE;YACrC;YACA;YACA;YACAF,QAAQ,GAAG2C,OAAO,CAACf,QAAQ,CAAC,CAAC,CAAC,EAAEiB,UAAU,CAAC3C,GAAG,CAAC4C,SAAmB;UACtE;UAEA5B,YAAY,CAAC;YACTvC,EAAE,EAAEA,EAAE,CAACyC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACvCxC,IAAI,EAAEgE,WAAW,IAAI,EAAE;YACvB5C;UACJ,CAAC,CAAC;QACN;MACJ;IACJ,CAAC;IAED+C,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEvB,aAAa,CAAC;IAEnD,OAAO,MAAM;MACTsB,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAExB,aAAa,CAAC;IAC1D,CAAC;EACL,CAAC,EAAE,CACCnE,qBAAqB,EACrBL,YAAY,EACZiE,YAAY,EACZzE,kBAAkB,CAACY,MAAM,EACzBO,cAAc,CACjB,CAAC;EAEF,MAAMsF,cAAc,GAAGhJ,WAAW,CAAE4G,KAAoB,IAAK;IACzD,IAAIA,KAAK,CAACqC,OAAO,KAAK,EAAE,EAAE;MACtBzG,qBAAqB,CAAC,EAAE,CAAC;IAC7B;EACJ,CAAC,EAAE,EAAE,CAAC;EAENtC,mBAAmB,CACfoC,GAAG,EACH,OAAO;IACH4G,KAAK,EAAEA,CAAA,KAAMtG,QAAQ,CAAC,EAAE;EAC5B,CAAC,CAAC,EACF,EACJ,CAAC;EAED3C,SAAS,CAAC,MAAM;IACZ4I,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEE,cAAc,CAAC;IAEpD,OAAO,MAAM;MACTH,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEE,cAAc,CAAC;IACxD,CAAC;EACL,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;;EAEpB;AACR;AACA;EACQ/I,SAAS,CAAC,MAAM;IACZ,IAAIoC,WAAW,EAAE;MACbO,QAAQ,CAACP,WAAW,CAAC;IACzB;EACJ,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAEjB,OAAOlC,OAAO,CACV,mBACIL,KAAA,CAAAiG,aAAA,CAAChF,eAAe;IAACuB,GAAG,EAAEuB,MAAO;IAACwD,GAAG,EAAE,cAAczD,IAAI;EAAG,gBACpD9D,KAAA,CAAAiG,aAAA;IAAKtB,EAAE,EAAE,mBAAmBb,IAAI;EAAG,gBAC/B9D,KAAA,CAAAiG,aAAA,CAACrF,KAAK;IACFW,SAAS,EAAEA,SAAU;IACrBiB,GAAG,EAAEyB,QAAS;IACdtC,QAAQ,EAAEkF,YAAa;IACvBjF,MAAM,EAAEqF,UAAW;IACnBoC,OAAO,EAAEhD,WAAY;IACrB7E,WAAW,EAAEA,WAAY;IACzBM,SAAS,EAAEA,SAAU;IACrB8E,WAAW,EAAEA,WAAY;IACzBJ,YAAY,EAAEA,YAAa;IAC3B3D,KAAK,EAAEA;EAAM,CAChB,CACA,CAAC,EACLkB,MAAM,CAACqC,OAAO,iBACXpG,KAAA,CAAAiG,aAAA,CAAC5E,mBAAmB;IAChBiI,kBAAkB,EACd1F,cAAc,IACdnB,kBAAkB,CAACY,MAAM,KAAK,CAAC,KAC9BR,KAAK,CAAC0G,IAAI,CAAC,CAAC,KAAK,EAAE,IAAIpH,6BAA6B,CACxD;IACDqH,OAAO,EAAE9D,WAAY;IACrB+D,aAAa,EAAE1F,MAAM,CAACqC,OAAQ;IAC9BsD,SAAS,EAAE,GAAI;IACf1H,SAAS,EAAEA;EAAU,gBAErBhC,KAAA,CAAAiG,aAAA,CAACnF,aAAa;IACVyG,GAAG,EAAE,mBAAmBzD,IAAI,EAAG;IAC/BQ,aAAa,EAAEA,aAAc;IAC7BqF,cAAc,EAAEjG,MAAO;IACvBX,MAAM,EAAEA,MAAO;IACfP,GAAG,EAAEwB,UAAW;IAChB4F,aAAa,EAAEjE,8BAA+B;IAC9C1D,uBAAuB,EAAEA;EAAwB,GAEhDoF,OACU,CACE,CAEZ,CACpB,EACD,CACIrF,SAAS,EACTqF,OAAO,EACP/C,aAAa,EACbZ,MAAM,EACNuD,UAAU,EACVJ,YAAY,EACZnB,WAAW,EACXW,WAAW,EACXtD,MAAM,EACNxB,SAAS,EACTqF,WAAW,EACXnE,kBAAkB,CAACY,MAAM,EACzBvB,SAAS,EACTN,WAAW,EACXgF,YAAY,EACZvE,uBAAuB,EACvB2B,cAAc,EACdzB,6BAA6B,EAC7B2B,IAAI,EACJjB,KAAK,CAEb,CAAC;AACL,CACJ,CAAC;AAEDvB,SAAS,CAACuI,WAAW,GAAG,WAAW;AAEnC,eAAevI,SAAS","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chayns-components/core",
3
- "version": "5.0.0-beta.1197",
3
+ "version": "5.0.0-beta.1199",
4
4
  "description": "A set of beautiful React components for developing your own applications with chayns.",
5
5
  "sideEffects": false,
6
6
  "browserslist": [
@@ -85,5 +85,5 @@
85
85
  "publishConfig": {
86
86
  "access": "public"
87
87
  },
88
- "gitHead": "3a6958c1c2f2c25a0d73a143240db52d153684c7"
88
+ "gitHead": "b6b298b980604dba97695befad149f6865c9f410"
89
89
  }