@chayns-components/core 5.0.16 → 5.0.18

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.
@@ -33,6 +33,8 @@ const ComboBox = /*#__PURE__*/(0, _react.forwardRef)(({
33
33
  prefix,
34
34
  container,
35
35
  selectedItem,
36
+ onHide,
37
+ onShow,
36
38
  shouldShowBigImage,
37
39
  shouldShowClearIcon,
38
40
  shouldShowRoundImage,
@@ -101,11 +103,17 @@ const ComboBox = /*#__PURE__*/(0, _react.forwardRef)(({
101
103
  onInputBlur === null || onInputBlur === void 0 || onInputBlur(event);
102
104
  }, [onInputBlur]);
103
105
  const handleOpen = (0, _react.useCallback)(() => {
106
+ if (typeof onShow === 'function') {
107
+ onShow();
108
+ }
104
109
  setIsAnimating(true);
105
- }, []);
110
+ }, [onShow]);
106
111
  const handleClose = (0, _react.useCallback)(() => {
112
+ if (typeof onHide === 'function') {
113
+ onHide();
114
+ }
107
115
  setIsAnimating(false);
108
- }, []);
116
+ }, [onHide]);
109
117
 
110
118
  /**
111
119
  * This function sets the selected item
@@ -120,13 +128,13 @@ const ComboBox = /*#__PURE__*/(0, _react.forwardRef)(({
120
128
  void onSelectResult.then(shouldPreventSelection => {
121
129
  if (shouldPreventSelection) return;
122
130
  setInternalSelectedItem(itemToSelect);
123
- setIsAnimating(false);
131
+ handleClose();
124
132
  });
125
133
  return;
126
134
  }
127
135
  }
128
136
  setInternalSelectedItem(itemToSelect);
129
- setIsAnimating(false);
137
+ handleClose();
130
138
  }, [onSelect]);
131
139
  const handleClear = (0, _react.useCallback)(event => {
132
140
  event.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"file":"ComboBox.js","names":["_chaynsApi","require","_react","_interopRequireWildcard","_calculate","_environment","_AreaContextProvider","_Icon","_interopRequireDefault","_ComboBoxItem","_ComboBox","_DropdownBodyWrapper","_dropdown","_element","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ComboBoxSize","exports","ComboBox","forwardRef","bodyWidth","direction","DropdownDirection","RIGHT","isDisabled","lists","maxHeight","onSelect","placeholder","prefix","container","selectedItem","shouldShowBigImage","shouldShowClearIcon","shouldShowRoundImage","onInputFocus","prefixMinWidth","size","NORMAL","shouldUseFullWidth","onInputChange","shouldUseCurrentItemWidth","onInputBlur","shouldShowTransparentBackground","inputValue","shouldDropDownUseMaxItemWidth","ref","internalSelectedItem","setInternalSelectedItem","useState","isAnimating","setIsAnimating","minWidth","setMinWidth","undefined","bodyMinWidth","setBodyMinWidth","focusedIndex","setFocusedIndex","isInputFocused","useRef","styledComboBoxElementRef","contentRef","parentSize","useElementSize","shouldUseParentElement","functions","useFunctions","values","useValues","isTouch","useIsTouch","browser","useDevice","areaProvider","useContext","AreaContext","useEffect","width","shouldChangeColor","useMemo","shouldDisableActions","combinedLists","flatMap","list","length","some","item","value","contentHeight","flatItems","height","reduce","isBigItem","subtext","trim","handleInputFocus","useCallback","event","current","handleInputBlur","handleOpen","handleClose","handleSetSelectedItem","itemToSelect","onSelectResult","Promise","then","shouldPreventSelection","handleClear","preventDefault","stopPropagation","handleKeyDown","key","_contentRef$current","children","stepDirection","newIndex","attempts","newElement","shouldSkip","id","startsWith","endsWith","prevElement","tabIndex","focusedElement","focus","_contentRef$current2","element","newSelectedItem","find","String","replace","document","addEventListener","removeEventListener","_styledComboBoxElemen","allItems","maxItemWidth","calculateMaxComboBoxItemWidth","text","hasImage","imageUrl","hasIcon","icons","parentWidth","parentElement","getBoundingClientRect","paddingWidth","imageWidth","iconWidth","prefixWidth","prefixTextWidth","Math","max","calculatedWidth","tmpMinWidth","tmpBodyMinWidth","internalSelectedItemWidth","itemWidth","placeholderImageUrl","placeholderIcon","placeholderText","shouldShowRoundPlaceholderImage","selectedItemList","handleHeaderClick","useImperativeHandle","hide","show","comboBoxGroups","map","createElement","Fragment","groupName","StyledComboBoxTopic","isSelected","StyledComboBox","$minWidth","$shouldUseFullWidth","$shouldUseCurrentItemWidth","StyledComboBoxHeader","$direction","onClick","$isOpen","$isTouch","$size","$shouldShowTransparentBackground","$isDisabled","$shouldChangeColor","$shouldShowBigImage","StyledComboBoxPrefixAndPlaceholderWrapper","StyledComboBoxPrefix","$prefixMinWidth","StyledComboBoxPlaceholder","$shouldReduceOpacity","StyledComboBoxPlaceholderImage","src","$shouldShowRoundImage","StyledComboBoxInput","disabled","onChange","onBlur","onFocus","StyledComboBoxPlaceholderText","suffixElement","StyledComboBoxClearIconWrapper","StyledComboBoxIconWrapper","$shouldShowBorderLeft","anchorElement","onClose","shouldShowDropdown","minBodyWidth","StyledComboBoxBody","$maxHeight","$browser","name","displayName","_default"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { useDevice, useFunctions, useValues } from 'chayns-api';\nimport React, {\n ChangeEventHandler,\n type CSSProperties,\n FocusEventHandler,\n forwardRef,\n Fragment,\n ReactHTML,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { CSSPropertiesWithVars } from 'styled-components/dist/types';\nimport { BrowserName } from '../../types/chayns';\nimport { calculateMaxComboBoxItemWidth } from '../../utils/calculate';\nimport { useIsTouch } from '../../utils/environment';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxBody,\n StyledComboBoxClearIconWrapper,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxInput,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledComboBoxPlaceholderText,\n StyledComboBoxPrefix,\n StyledComboBoxPrefixAndPlaceholderWrapper,\n StyledComboBoxTopic,\n} from './ComboBox.styles';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\nimport { DropdownDirection } from '../../types/dropdown';\nimport { useElementSize } from '../../hooks/element';\n\nexport interface ComboBoxRef {\n hide: VoidFunction;\n show: VoidFunction;\n}\n\nexport interface IComboBoxItems {\n groupName?: string;\n list: Array<IComboBoxItem>;\n shouldShowRoundImage?: boolean;\n}\n\nexport interface ComboBoxTextStyles {\n tagName?: keyof ReactHTML;\n styles?: CSSPropertiesWithVars;\n className?: string;\n}\n\nexport interface IComboBoxItem {\n icons?: string[];\n imageBackground?: CSSProperties['background'];\n imageUrl?: string;\n isDisabled?: boolean;\n rightElement?: ReactNode;\n subtext?: string;\n suffixElement?: ReactNode;\n text: string;\n value: string | number;\n textStyles?: ComboBoxTextStyles;\n}\n\nexport enum ComboBoxSize {\n NORMAL = 'normal',\n SMALL = 'small',\n}\n\nexport type ComboBoxProps = {\n /**\n * The width of the body.\n */\n bodyWidth?: number;\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * The direction in which the combobox should open.\n */\n direction?: DropdownDirection;\n /**\n * The value of the optional input.\n */\n inputValue?: string;\n /**\n * Whether the combobox should be disabled.\n */\n isDisabled?: boolean;\n /**\n * The list of the items that should be displayed.\n */\n lists: IComboBoxItems[];\n /**\n * The maximum height of the combobox content.\n */\n maxHeight?: number;\n /**\n * Function to be executed when the value of the optional input is changed.\n */\n onInputChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the optional input lost its focus.\n */\n onInputBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the optional input gets its focus.\n */\n onInputFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function that should be executed when an item is selected. If the function returns false, the item will not be selected.\n */\n onSelect?: (comboboxItem?: IComboBoxItem) => Promise<boolean> | boolean | void;\n /**\n * A text that should be displayed when no item is selected.\n */\n placeholder: string;\n /**\n * A prefix that should be displayed before the placeholder.\n */\n prefix?: string;\n /**\n * An item that should be preselected.\n */\n selectedItem?: IComboBoxItem;\n /**\n * If true, the images of the items are displayed in a bigger shape. This prop will automatically be set to true if the subtext of an item is given.\n */\n shouldShowBigImage?: boolean;\n /**\n * If true, a clear icon is displayed at the end of the combo box if an item is selected.\n */\n shouldShowClearIcon?: boolean;\n /**\n * Whether the background should be transparent.\n */\n shouldShowTransparentBackground?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the width of the ComboBox should be the width of the current item.\n */\n shouldUseCurrentItemWidth?: boolean;\n /**\n * Whether the width of the 'ComboBox' should be the width of the parent or of the widest item.\n */\n shouldUseFullWidth?: boolean;\n /**\n * If true, the dropdown will use the maximum width of the items.\n */\n shouldDropDownUseMaxItemWidth?: boolean;\n /**\n * The size of the ComboBox.\n */\n size?: ComboBoxSize;\n /**\n * Optional min width for the prefix element.\n */\n prefixMinWidth?: number;\n};\n\nconst ComboBox = forwardRef<ComboBoxRef, ComboBoxProps>(\n (\n {\n bodyWidth,\n direction = DropdownDirection.RIGHT,\n isDisabled = false,\n lists,\n maxHeight = 280,\n onSelect,\n placeholder,\n prefix,\n container,\n selectedItem,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldShowRoundImage,\n onInputFocus,\n prefixMinWidth,\n size = ComboBoxSize.NORMAL,\n shouldUseFullWidth = false,\n onInputChange,\n shouldUseCurrentItemWidth = false,\n onInputBlur,\n shouldShowTransparentBackground = false,\n inputValue,\n shouldDropDownUseMaxItemWidth = false,\n },\n ref,\n ) => {\n const [internalSelectedItem, setInternalSelectedItem] = useState<IComboBoxItem>();\n const [isAnimating, setIsAnimating] = useState(false);\n const [minWidth, setMinWidth] = useState<number | undefined>(undefined);\n const [bodyMinWidth, setBodyMinWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const isInputFocused = useRef(false);\n\n const styledComboBoxElementRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const parentSize = useElementSize(styledComboBoxElementRef, {\n shouldUseParentElement: true,\n });\n\n const functions = useFunctions();\n const values = useValues();\n\n const isTouch = useIsTouch();\n\n const { browser } = useDevice();\n\n const areaProvider = useContext(AreaContext);\n\n useEffect(() => {\n if (shouldUseFullWidth && parentSize) {\n setMinWidth(parentSize.width);\n }\n }, [parentSize, shouldUseFullWidth]);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n const shouldDisableActions = useMemo(() => {\n if (!selectedItem) {\n return false;\n }\n\n const combinedLists = lists.flatMap((list) => list.list);\n\n return (\n combinedLists.length === 1 &&\n combinedLists.some((item) => item.value === selectedItem.value)\n );\n }, [lists, selectedItem]);\n\n const contentHeight = useMemo(() => {\n const flatItems = lists.flatMap((list) => list.list);\n\n let height = flatItems.reduce((value, item) => {\n const isBigItem =\n shouldShowBigImage ||\n (typeof item.subtext === 'string' && item.subtext.trim() !== '');\n\n return value + (isBigItem ? 56 : 38);\n }, 0);\n\n if (lists.length > 1) {\n height += lists.length * 38;\n }\n\n if (maxHeight < height) {\n height = maxHeight;\n }\n\n return height;\n }, [lists, maxHeight, shouldShowBigImage]);\n\n const handleInputFocus: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = true;\n onInputFocus?.(event);\n },\n [onInputFocus],\n );\n\n const handleInputBlur: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = false;\n onInputBlur?.(event);\n },\n [onInputBlur],\n );\n\n const handleOpen = useCallback(() => {\n setIsAnimating(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n }, []);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect?: IComboBoxItem) => {\n if (typeof onSelect === 'function') {\n const onSelectResult = onSelect(itemToSelect);\n\n if (onSelectResult === false) {\n return;\n }\n\n if (onSelectResult instanceof Promise) {\n void onSelectResult.then((shouldPreventSelection) => {\n if (shouldPreventSelection) return;\n\n setInternalSelectedItem(itemToSelect);\n setIsAnimating(false);\n });\n\n return;\n }\n }\n\n setInternalSelectedItem(itemToSelect);\n setIsAnimating(false);\n },\n [onSelect],\n );\n\n const handleClear = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n handleSetSelectedItem(undefined);\n },\n [handleSetSelectedItem],\n );\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating) return;\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n\n const children = contentRef.current?.children;\n\n if (!children || children.length === 0) return;\n\n const stepDirection = e.key === 'ArrowUp' ? -1 : 1;\n\n let newIndex = focusedIndex ?? -1;\n\n let attempts = 0;\n\n do {\n newIndex = (newIndex + stepDirection + children.length) % children.length;\n\n const newElement = children[newIndex] as HTMLDivElement;\n\n let shouldSkip = false;\n\n if (\n newElement.id.startsWith('combobox-group--') ||\n newElement.id.endsWith('--disabled-item')\n ) {\n shouldSkip = true;\n }\n\n if (!shouldSkip) break;\n\n attempts++;\n } while (attempts < children.length);\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const focusedElement = children[newIndex] as HTMLDivElement;\n\n focusedElement.tabIndex = 0;\n\n focusedElement.focus();\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) return;\n\n const { id } = element;\n\n let newSelectedItem: IComboBoxItem | undefined;\n\n lists.some((list) => {\n newSelectedItem = list.list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n\n return !!newSelectedItem;\n });\n\n if (newSelectedItem) {\n handleSetSelectedItem(newSelectedItem);\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [focusedIndex, handleSetSelectedItem, isAnimating, lists]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const allItems = lists.flatMap((list) => list.list);\n\n let maxItemWidth = calculateMaxComboBoxItemWidth({\n list: [\n ...allItems,\n { text: placeholder, value: 'placeholder' },\n ...(selectedItem ? [selectedItem] : []),\n ],\n functions,\n shouldShowBigImage,\n values,\n });\n\n if (shouldDropDownUseMaxItemWidth) {\n maxItemWidth += 20 + 2 + 1; // 20px padding (left and right), 2px border, 1px puffer for rounding errors\n\n setBodyMinWidth(maxItemWidth);\n setMinWidth(maxItemWidth);\n\n return;\n }\n\n const hasImage = [selectedItem, ...allItems].some((item) => item?.imageUrl);\n const hasIcon = [selectedItem, ...allItems].some((item) => item?.icons);\n\n const parentWidth =\n styledComboBoxElementRef.current?.parentElement?.getBoundingClientRect().width ?? 0;\n\n const paddingWidth = 20 + 2 + 40 + 40; // padding + border + arrow icon + optional clear icon\n const imageWidth = hasImage ? 32 : 0; // image width + gap if images present\n const iconWidth = hasIcon ? 40 : 0; // icon width + gap if icons present\n\n let prefixWidth = 0;\n\n if (prefix) {\n const prefixTextWidth = calculateMaxComboBoxItemWidth({\n list: [{ text: prefix, value: 'prefix' }],\n functions,\n values,\n });\n\n prefixWidth = Math.max(prefixTextWidth + 5, 32);\n }\n\n const calculatedWidth =\n maxItemWidth + paddingWidth + imageWidth + iconWidth + prefixWidth;\n\n let tmpMinWidth = calculatedWidth;\n let tmpBodyMinWidth = calculatedWidth;\n\n // Full width settings\n if (shouldUseFullWidth) {\n tmpMinWidth = parentWidth;\n\n tmpBodyMinWidth =\n parentWidth < calculatedWidth - 20 ? calculatedWidth - 20 : parentWidth;\n }\n // Current item width settings\n else if (shouldUseCurrentItemWidth && internalSelectedItem) {\n const internalSelectedItemWidth = calculateMaxComboBoxItemWidth({\n list: [internalSelectedItem],\n functions,\n shouldShowBigImage,\n values,\n });\n\n const itemWidth =\n internalSelectedItemWidth + paddingWidth + imageWidth + iconWidth + prefixWidth;\n\n tmpMinWidth = itemWidth;\n\n tmpBodyMinWidth =\n itemWidth < calculatedWidth - 20 ? calculatedWidth - 20 : itemWidth;\n }\n\n if (tmpMinWidth > parentWidth) {\n tmpMinWidth = parentWidth;\n }\n\n if (tmpBodyMinWidth > parentWidth) {\n tmpBodyMinWidth = parentWidth;\n }\n\n setMinWidth(tmpMinWidth);\n setBodyMinWidth(shouldUseCurrentItemWidth ? tmpMinWidth : tmpBodyMinWidth);\n }, [\n functions,\n internalSelectedItem,\n lists,\n placeholder,\n prefix,\n selectedItem,\n shouldDropDownUseMaxItemWidth,\n shouldShowBigImage,\n shouldUseCurrentItemWidth,\n shouldUseFullWidth,\n values,\n ]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setInternalSelectedItem(selectedItem);\n }, [selectedItem]);\n\n const placeholderImageUrl = useMemo(() => {\n if (selectedItem) {\n return selectedItem.imageUrl;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.imageUrl;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n const placeholderIcon = useMemo(() => {\n if (selectedItem) {\n return selectedItem.icons;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.icons;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n /**\n * This function resets the placeholder\n */\n const placeholderText = useMemo(() => {\n let text = placeholder;\n\n if (selectedItem) {\n text = selectedItem.text;\n } else if (internalSelectedItem) {\n text = internalSelectedItem.text;\n }\n\n return text;\n }, [internalSelectedItem, placeholder, selectedItem]);\n\n const shouldShowRoundPlaceholderImage = useMemo(() => {\n const selectedItemList = lists.find((list) =>\n list.list.some(\n ({ value }) => value === (selectedItem?.value ?? internalSelectedItem?.value),\n ),\n );\n\n return selectedItemList?.shouldShowRoundImage ?? shouldShowRoundImage;\n }, [internalSelectedItem?.value, lists, selectedItem?.value, shouldShowRoundImage]);\n\n /**\n * This function opens the content of the combobox\n */\n const handleHeaderClick = useCallback(() => {\n if (!isDisabled && !isInputFocused.current) {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n }, [handleClose, handleOpen, isAnimating, isDisabled]);\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleClose,\n show: handleOpen,\n }),\n [handleClose, handleOpen],\n );\n\n const comboBoxGroups = useMemo(\n () =>\n lists.map((list) => (\n <Fragment key={list.groupName ?? 'default-group'}>\n {list.groupName && lists.length > 1 && (\n <StyledComboBoxTopic id={`combobox-group--${list.groupName}`}>\n {list.groupName}\n </StyledComboBoxTopic>\n )}\n {list.list.map((item) => (\n <ComboBoxItem\n key={`item-${item.text}`}\n item={item}\n isSelected={\n selectedItem ? item.value === selectedItem.value : false\n }\n onSelect={handleSetSelectedItem}\n shouldShowBigImage={shouldShowBigImage}\n shouldShowRoundImage={\n list.shouldShowRoundImage ?? shouldShowRoundImage\n }\n />\n ))}\n </Fragment>\n )),\n [handleSetSelectedItem, lists, selectedItem, shouldShowBigImage, shouldShowRoundImage],\n );\n\n return useMemo(\n () => (\n <StyledComboBox\n ref={styledComboBoxElementRef}\n $minWidth={minWidth}\n $shouldUseFullWidth={shouldUseFullWidth}\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n >\n <StyledComboBoxHeader\n $direction={direction}\n onClick={handleHeaderClick}\n $isOpen={isAnimating}\n $isTouch={isTouch}\n $size={size}\n $shouldShowTransparentBackground={shouldShowTransparentBackground}\n $isDisabled={isDisabled}\n $shouldChangeColor={shouldChangeColor}\n $shouldShowBigImage={shouldShowBigImage}\n >\n <StyledComboBoxPrefixAndPlaceholderWrapper>\n {prefix && (\n <StyledComboBoxPrefix $prefixMinWidth={prefixMinWidth}>\n {prefix}\n </StyledComboBoxPrefix>\n )}\n <StyledComboBoxPlaceholder\n $shouldReduceOpacity={!selectedItem && !internalSelectedItem}\n >\n {placeholderImageUrl && (\n <StyledComboBoxPlaceholderImage\n src={placeholderImageUrl}\n $shouldShowBigImage={shouldShowBigImage}\n $shouldShowRoundImage={shouldShowRoundPlaceholderImage}\n />\n )}\n {placeholderIcon && <Icon icons={placeholderIcon} />}\n {typeof inputValue === 'string' ? (\n <StyledComboBoxInput\n disabled={isDisabled}\n value={inputValue}\n onChange={onInputChange}\n onBlur={handleInputBlur}\n onFocus={handleInputFocus}\n placeholder={placeholderText}\n />\n ) : (\n <StyledComboBoxPlaceholderText>\n {placeholderText}\n </StyledComboBoxPlaceholderText>\n )}\n {internalSelectedItem &&\n internalSelectedItem.suffixElement &&\n internalSelectedItem.suffixElement}\n </StyledComboBoxPlaceholder>\n </StyledComboBoxPrefixAndPlaceholderWrapper>\n {shouldShowClearIcon && internalSelectedItem && (\n <StyledComboBoxClearIconWrapper\n $isDisabled={isDisabled}\n onClick={handleClear}\n >\n <Icon icons={['fa fa-times']} />\n </StyledComboBoxClearIconWrapper>\n )}\n {!shouldDisableActions && (\n <StyledComboBoxIconWrapper\n $isDisabled={isDisabled}\n $size={size}\n $shouldShowBorderLeft={\n shouldShowClearIcon === true &&\n internalSelectedItem !== undefined\n }\n >\n <Icon icons={['fa fa-chevron-down']} isDisabled={isDisabled} />\n </StyledComboBoxIconWrapper>\n )}\n </StyledComboBoxHeader>\n {styledComboBoxElementRef.current && (\n <DropdownBodyWrapper\n anchorElement={styledComboBoxElementRef.current}\n bodyWidth={bodyWidth}\n contentHeight={contentHeight}\n onClose={handleClose}\n direction={direction}\n container={container}\n shouldShowDropdown={isAnimating}\n minBodyWidth={bodyWidth ?? bodyMinWidth}\n maxHeight={maxHeight}\n >\n <StyledComboBoxBody\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n $maxHeight={maxHeight}\n $minWidth={bodyWidth ?? bodyMinWidth}\n $browser={browser?.name as BrowserName}\n ref={contentRef}\n tabIndex={0}\n >\n {comboBoxGroups}\n </StyledComboBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledComboBox>\n ),\n [\n minWidth,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n direction,\n handleHeaderClick,\n isAnimating,\n isTouch,\n size,\n shouldShowTransparentBackground,\n isDisabled,\n shouldChangeColor,\n shouldShowBigImage,\n prefix,\n prefixMinWidth,\n selectedItem,\n internalSelectedItem,\n placeholderImageUrl,\n shouldShowRoundPlaceholderImage,\n placeholderIcon,\n inputValue,\n onInputChange,\n handleInputBlur,\n handleInputFocus,\n placeholderText,\n shouldShowClearIcon,\n handleClear,\n shouldDisableActions,\n bodyWidth,\n contentHeight,\n handleClose,\n container,\n bodyMinWidth,\n maxHeight,\n browser?.name,\n comboBoxGroups,\n ],\n );\n },\n);\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ComboBox.js","names":["_chaynsApi","require","_react","_interopRequireWildcard","_calculate","_environment","_AreaContextProvider","_Icon","_interopRequireDefault","_ComboBoxItem","_ComboBox","_DropdownBodyWrapper","_dropdown","_element","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ComboBoxSize","exports","ComboBox","forwardRef","bodyWidth","direction","DropdownDirection","RIGHT","isDisabled","lists","maxHeight","onSelect","placeholder","prefix","container","selectedItem","onHide","onShow","shouldShowBigImage","shouldShowClearIcon","shouldShowRoundImage","onInputFocus","prefixMinWidth","size","NORMAL","shouldUseFullWidth","onInputChange","shouldUseCurrentItemWidth","onInputBlur","shouldShowTransparentBackground","inputValue","shouldDropDownUseMaxItemWidth","ref","internalSelectedItem","setInternalSelectedItem","useState","isAnimating","setIsAnimating","minWidth","setMinWidth","undefined","bodyMinWidth","setBodyMinWidth","focusedIndex","setFocusedIndex","isInputFocused","useRef","styledComboBoxElementRef","contentRef","parentSize","useElementSize","shouldUseParentElement","functions","useFunctions","values","useValues","isTouch","useIsTouch","browser","useDevice","areaProvider","useContext","AreaContext","useEffect","width","shouldChangeColor","useMemo","shouldDisableActions","combinedLists","flatMap","list","length","some","item","value","contentHeight","flatItems","height","reduce","isBigItem","subtext","trim","handleInputFocus","useCallback","event","current","handleInputBlur","handleOpen","handleClose","handleSetSelectedItem","itemToSelect","onSelectResult","Promise","then","shouldPreventSelection","handleClear","preventDefault","stopPropagation","handleKeyDown","key","_contentRef$current","children","stepDirection","newIndex","attempts","newElement","shouldSkip","id","startsWith","endsWith","prevElement","tabIndex","focusedElement","focus","_contentRef$current2","element","newSelectedItem","find","String","replace","document","addEventListener","removeEventListener","_styledComboBoxElemen","allItems","maxItemWidth","calculateMaxComboBoxItemWidth","text","hasImage","imageUrl","hasIcon","icons","parentWidth","parentElement","getBoundingClientRect","paddingWidth","imageWidth","iconWidth","prefixWidth","prefixTextWidth","Math","max","calculatedWidth","tmpMinWidth","tmpBodyMinWidth","internalSelectedItemWidth","itemWidth","placeholderImageUrl","placeholderIcon","placeholderText","shouldShowRoundPlaceholderImage","selectedItemList","handleHeaderClick","useImperativeHandle","hide","show","comboBoxGroups","map","createElement","Fragment","groupName","StyledComboBoxTopic","isSelected","StyledComboBox","$minWidth","$shouldUseFullWidth","$shouldUseCurrentItemWidth","StyledComboBoxHeader","$direction","onClick","$isOpen","$isTouch","$size","$shouldShowTransparentBackground","$isDisabled","$shouldChangeColor","$shouldShowBigImage","StyledComboBoxPrefixAndPlaceholderWrapper","StyledComboBoxPrefix","$prefixMinWidth","StyledComboBoxPlaceholder","$shouldReduceOpacity","StyledComboBoxPlaceholderImage","src","$shouldShowRoundImage","StyledComboBoxInput","disabled","onChange","onBlur","onFocus","StyledComboBoxPlaceholderText","suffixElement","StyledComboBoxClearIconWrapper","StyledComboBoxIconWrapper","$shouldShowBorderLeft","anchorElement","onClose","shouldShowDropdown","minBodyWidth","StyledComboBoxBody","$maxHeight","$browser","name","displayName","_default"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { useDevice, useFunctions, useValues } from 'chayns-api';\nimport React, {\n ChangeEventHandler,\n type CSSProperties,\n FocusEventHandler,\n forwardRef,\n Fragment,\n ReactHTML,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { CSSPropertiesWithVars } from 'styled-components/dist/types';\nimport { BrowserName } from '../../types/chayns';\nimport { calculateMaxComboBoxItemWidth } from '../../utils/calculate';\nimport { useIsTouch } from '../../utils/environment';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxBody,\n StyledComboBoxClearIconWrapper,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxInput,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledComboBoxPlaceholderText,\n StyledComboBoxPrefix,\n StyledComboBoxPrefixAndPlaceholderWrapper,\n StyledComboBoxTopic,\n} from './ComboBox.styles';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\nimport { DropdownDirection } from '../../types/dropdown';\nimport { useElementSize } from '../../hooks/element';\n\nexport interface ComboBoxRef {\n hide: VoidFunction;\n show: VoidFunction;\n}\n\nexport interface IComboBoxItems {\n groupName?: string;\n list: Array<IComboBoxItem>;\n shouldShowRoundImage?: boolean;\n}\n\nexport interface ComboBoxTextStyles {\n tagName?: keyof ReactHTML;\n styles?: CSSPropertiesWithVars;\n className?: string;\n}\n\nexport interface IComboBoxItem {\n icons?: string[];\n imageBackground?: CSSProperties['background'];\n imageUrl?: string;\n isDisabled?: boolean;\n rightElement?: ReactNode;\n subtext?: string;\n suffixElement?: ReactNode;\n text: string;\n value: string | number;\n textStyles?: ComboBoxTextStyles;\n}\n\nexport enum ComboBoxSize {\n NORMAL = 'normal',\n SMALL = 'small',\n}\n\nexport type ComboBoxProps = {\n /**\n * The width of the body.\n */\n bodyWidth?: number;\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * The direction in which the combobox should open.\n */\n direction?: DropdownDirection;\n /**\n * The value of the optional input.\n */\n inputValue?: string;\n /**\n * Whether the combobox should be disabled.\n */\n isDisabled?: boolean;\n /**\n * The list of the items that should be displayed.\n */\n lists: IComboBoxItems[];\n /**\n * The maximum height of the combobox content.\n */\n maxHeight?: number;\n /**\n * Function to be executed when the value of the optional input is changed.\n */\n onInputChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the optional input lost its focus.\n */\n onInputBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the optional input gets its focus.\n */\n onInputFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function that should be executed when an item is selected. If the function returns false, the item will not be selected.\n */\n onSelect?: (comboboxItem?: IComboBoxItem) => Promise<boolean> | boolean | void;\n /**\n * Function to be executed when the content of the `ComboBox` is shown.\n */\n onShow?: () => void;\n /**\n * Function to be executed when the content of the `ComboBox` is hidden.\n */\n onHide?: () => void;\n /**\n * A text that should be displayed when no item is selected.\n */\n placeholder: string;\n /**\n * A prefix that should be displayed before the placeholder.\n */\n prefix?: string;\n /**\n * An item that should be preselected.\n */\n selectedItem?: IComboBoxItem;\n /**\n * If true, the images of the items are displayed in a bigger shape. This prop will automatically be set to true if the subtext of an item is given.\n */\n shouldShowBigImage?: boolean;\n /**\n * If true, a clear icon is displayed at the end of the combo box if an item is selected.\n */\n shouldShowClearIcon?: boolean;\n /**\n * Whether the background should be transparent.\n */\n shouldShowTransparentBackground?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the width of the ComboBox should be the width of the current item.\n */\n shouldUseCurrentItemWidth?: boolean;\n /**\n * Whether the width of the 'ComboBox' should be the width of the parent or of the widest item.\n */\n shouldUseFullWidth?: boolean;\n /**\n * If true, the dropdown will use the maximum width of the items.\n */\n shouldDropDownUseMaxItemWidth?: boolean;\n /**\n * The size of the ComboBox.\n */\n size?: ComboBoxSize;\n /**\n * Optional min width for the prefix element.\n */\n prefixMinWidth?: number;\n};\n\nconst ComboBox = forwardRef<ComboBoxRef, ComboBoxProps>(\n (\n {\n bodyWidth,\n direction = DropdownDirection.RIGHT,\n isDisabled = false,\n lists,\n maxHeight = 280,\n onSelect,\n placeholder,\n prefix,\n container,\n selectedItem,\n onHide,\n onShow,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldShowRoundImage,\n onInputFocus,\n prefixMinWidth,\n size = ComboBoxSize.NORMAL,\n shouldUseFullWidth = false,\n onInputChange,\n shouldUseCurrentItemWidth = false,\n onInputBlur,\n shouldShowTransparentBackground = false,\n inputValue,\n shouldDropDownUseMaxItemWidth = false,\n },\n ref,\n ) => {\n const [internalSelectedItem, setInternalSelectedItem] = useState<IComboBoxItem>();\n const [isAnimating, setIsAnimating] = useState(false);\n const [minWidth, setMinWidth] = useState<number | undefined>(undefined);\n const [bodyMinWidth, setBodyMinWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const isInputFocused = useRef(false);\n\n const styledComboBoxElementRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const parentSize = useElementSize(styledComboBoxElementRef, {\n shouldUseParentElement: true,\n });\n\n const functions = useFunctions();\n const values = useValues();\n\n const isTouch = useIsTouch();\n\n const { browser } = useDevice();\n\n const areaProvider = useContext(AreaContext);\n\n useEffect(() => {\n if (shouldUseFullWidth && parentSize) {\n setMinWidth(parentSize.width);\n }\n }, [parentSize, shouldUseFullWidth]);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n const shouldDisableActions = useMemo(() => {\n if (!selectedItem) {\n return false;\n }\n\n const combinedLists = lists.flatMap((list) => list.list);\n\n return (\n combinedLists.length === 1 &&\n combinedLists.some((item) => item.value === selectedItem.value)\n );\n }, [lists, selectedItem]);\n\n const contentHeight = useMemo(() => {\n const flatItems = lists.flatMap((list) => list.list);\n\n let height = flatItems.reduce((value, item) => {\n const isBigItem =\n shouldShowBigImage ||\n (typeof item.subtext === 'string' && item.subtext.trim() !== '');\n\n return value + (isBigItem ? 56 : 38);\n }, 0);\n\n if (lists.length > 1) {\n height += lists.length * 38;\n }\n\n if (maxHeight < height) {\n height = maxHeight;\n }\n\n return height;\n }, [lists, maxHeight, shouldShowBigImage]);\n\n const handleInputFocus: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = true;\n onInputFocus?.(event);\n },\n [onInputFocus],\n );\n\n const handleInputBlur: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = false;\n onInputBlur?.(event);\n },\n [onInputBlur],\n );\n\n const handleOpen = useCallback(() => {\n if (typeof onShow === 'function') {\n onShow();\n }\n\n setIsAnimating(true);\n }, [onShow]);\n\n const handleClose = useCallback(() => {\n if (typeof onHide === 'function') {\n onHide();\n }\n\n setIsAnimating(false);\n }, [onHide]);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect?: IComboBoxItem) => {\n if (typeof onSelect === 'function') {\n const onSelectResult = onSelect(itemToSelect);\n\n if (onSelectResult === false) {\n return;\n }\n\n if (onSelectResult instanceof Promise) {\n void onSelectResult.then((shouldPreventSelection) => {\n if (shouldPreventSelection) return;\n\n setInternalSelectedItem(itemToSelect);\n handleClose();\n });\n\n return;\n }\n }\n\n setInternalSelectedItem(itemToSelect);\n handleClose();\n },\n [onSelect],\n );\n\n const handleClear = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n handleSetSelectedItem(undefined);\n },\n [handleSetSelectedItem],\n );\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating) return;\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n\n const children = contentRef.current?.children;\n\n if (!children || children.length === 0) return;\n\n const stepDirection = e.key === 'ArrowUp' ? -1 : 1;\n\n let newIndex = focusedIndex ?? -1;\n\n let attempts = 0;\n\n do {\n newIndex = (newIndex + stepDirection + children.length) % children.length;\n\n const newElement = children[newIndex] as HTMLDivElement;\n\n let shouldSkip = false;\n\n if (\n newElement.id.startsWith('combobox-group--') ||\n newElement.id.endsWith('--disabled-item')\n ) {\n shouldSkip = true;\n }\n\n if (!shouldSkip) break;\n\n attempts++;\n } while (attempts < children.length);\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const focusedElement = children[newIndex] as HTMLDivElement;\n\n focusedElement.tabIndex = 0;\n\n focusedElement.focus();\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) return;\n\n const { id } = element;\n\n let newSelectedItem: IComboBoxItem | undefined;\n\n lists.some((list) => {\n newSelectedItem = list.list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n\n return !!newSelectedItem;\n });\n\n if (newSelectedItem) {\n handleSetSelectedItem(newSelectedItem);\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [focusedIndex, handleSetSelectedItem, isAnimating, lists]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const allItems = lists.flatMap((list) => list.list);\n\n let maxItemWidth = calculateMaxComboBoxItemWidth({\n list: [\n ...allItems,\n { text: placeholder, value: 'placeholder' },\n ...(selectedItem ? [selectedItem] : []),\n ],\n functions,\n shouldShowBigImage,\n values,\n });\n\n if (shouldDropDownUseMaxItemWidth) {\n maxItemWidth += 20 + 2 + 1; // 20px padding (left and right), 2px border, 1px puffer for rounding errors\n\n setBodyMinWidth(maxItemWidth);\n setMinWidth(maxItemWidth);\n\n return;\n }\n\n const hasImage = [selectedItem, ...allItems].some((item) => item?.imageUrl);\n const hasIcon = [selectedItem, ...allItems].some((item) => item?.icons);\n\n const parentWidth =\n styledComboBoxElementRef.current?.parentElement?.getBoundingClientRect().width ?? 0;\n\n const paddingWidth = 20 + 2 + 40 + 40; // padding + border + arrow icon + optional clear icon\n const imageWidth = hasImage ? 32 : 0; // image width + gap if images present\n const iconWidth = hasIcon ? 40 : 0; // icon width + gap if icons present\n\n let prefixWidth = 0;\n\n if (prefix) {\n const prefixTextWidth = calculateMaxComboBoxItemWidth({\n list: [{ text: prefix, value: 'prefix' }],\n functions,\n values,\n });\n\n prefixWidth = Math.max(prefixTextWidth + 5, 32);\n }\n\n const calculatedWidth =\n maxItemWidth + paddingWidth + imageWidth + iconWidth + prefixWidth;\n\n let tmpMinWidth = calculatedWidth;\n let tmpBodyMinWidth = calculatedWidth;\n\n // Full width settings\n if (shouldUseFullWidth) {\n tmpMinWidth = parentWidth;\n\n tmpBodyMinWidth =\n parentWidth < calculatedWidth - 20 ? calculatedWidth - 20 : parentWidth;\n }\n // Current item width settings\n else if (shouldUseCurrentItemWidth && internalSelectedItem) {\n const internalSelectedItemWidth = calculateMaxComboBoxItemWidth({\n list: [internalSelectedItem],\n functions,\n shouldShowBigImage,\n values,\n });\n\n const itemWidth =\n internalSelectedItemWidth + paddingWidth + imageWidth + iconWidth + prefixWidth;\n\n tmpMinWidth = itemWidth;\n\n tmpBodyMinWidth =\n itemWidth < calculatedWidth - 20 ? calculatedWidth - 20 : itemWidth;\n }\n\n if (tmpMinWidth > parentWidth) {\n tmpMinWidth = parentWidth;\n }\n\n if (tmpBodyMinWidth > parentWidth) {\n tmpBodyMinWidth = parentWidth;\n }\n\n setMinWidth(tmpMinWidth);\n setBodyMinWidth(shouldUseCurrentItemWidth ? tmpMinWidth : tmpBodyMinWidth);\n }, [\n functions,\n internalSelectedItem,\n lists,\n placeholder,\n prefix,\n selectedItem,\n shouldDropDownUseMaxItemWidth,\n shouldShowBigImage,\n shouldUseCurrentItemWidth,\n shouldUseFullWidth,\n values,\n ]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setInternalSelectedItem(selectedItem);\n }, [selectedItem]);\n\n const placeholderImageUrl = useMemo(() => {\n if (selectedItem) {\n return selectedItem.imageUrl;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.imageUrl;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n const placeholderIcon = useMemo(() => {\n if (selectedItem) {\n return selectedItem.icons;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.icons;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n /**\n * This function resets the placeholder\n */\n const placeholderText = useMemo(() => {\n let text = placeholder;\n\n if (selectedItem) {\n text = selectedItem.text;\n } else if (internalSelectedItem) {\n text = internalSelectedItem.text;\n }\n\n return text;\n }, [internalSelectedItem, placeholder, selectedItem]);\n\n const shouldShowRoundPlaceholderImage = useMemo(() => {\n const selectedItemList = lists.find((list) =>\n list.list.some(\n ({ value }) => value === (selectedItem?.value ?? internalSelectedItem?.value),\n ),\n );\n\n return selectedItemList?.shouldShowRoundImage ?? shouldShowRoundImage;\n }, [internalSelectedItem?.value, lists, selectedItem?.value, shouldShowRoundImage]);\n\n /**\n * This function opens the content of the combobox\n */\n const handleHeaderClick = useCallback(() => {\n if (!isDisabled && !isInputFocused.current) {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n }, [handleClose, handleOpen, isAnimating, isDisabled]);\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleClose,\n show: handleOpen,\n }),\n [handleClose, handleOpen],\n );\n\n const comboBoxGroups = useMemo(\n () =>\n lists.map((list) => (\n <Fragment key={list.groupName ?? 'default-group'}>\n {list.groupName && lists.length > 1 && (\n <StyledComboBoxTopic id={`combobox-group--${list.groupName}`}>\n {list.groupName}\n </StyledComboBoxTopic>\n )}\n {list.list.map((item) => (\n <ComboBoxItem\n key={`item-${item.text}`}\n item={item}\n isSelected={\n selectedItem ? item.value === selectedItem.value : false\n }\n onSelect={handleSetSelectedItem}\n shouldShowBigImage={shouldShowBigImage}\n shouldShowRoundImage={\n list.shouldShowRoundImage ?? shouldShowRoundImage\n }\n />\n ))}\n </Fragment>\n )),\n [handleSetSelectedItem, lists, selectedItem, shouldShowBigImage, shouldShowRoundImage],\n );\n\n return useMemo(\n () => (\n <StyledComboBox\n ref={styledComboBoxElementRef}\n $minWidth={minWidth}\n $shouldUseFullWidth={shouldUseFullWidth}\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n >\n <StyledComboBoxHeader\n $direction={direction}\n onClick={handleHeaderClick}\n $isOpen={isAnimating}\n $isTouch={isTouch}\n $size={size}\n $shouldShowTransparentBackground={shouldShowTransparentBackground}\n $isDisabled={isDisabled}\n $shouldChangeColor={shouldChangeColor}\n $shouldShowBigImage={shouldShowBigImage}\n >\n <StyledComboBoxPrefixAndPlaceholderWrapper>\n {prefix && (\n <StyledComboBoxPrefix $prefixMinWidth={prefixMinWidth}>\n {prefix}\n </StyledComboBoxPrefix>\n )}\n <StyledComboBoxPlaceholder\n $shouldReduceOpacity={!selectedItem && !internalSelectedItem}\n >\n {placeholderImageUrl && (\n <StyledComboBoxPlaceholderImage\n src={placeholderImageUrl}\n $shouldShowBigImage={shouldShowBigImage}\n $shouldShowRoundImage={shouldShowRoundPlaceholderImage}\n />\n )}\n {placeholderIcon && <Icon icons={placeholderIcon} />}\n {typeof inputValue === 'string' ? (\n <StyledComboBoxInput\n disabled={isDisabled}\n value={inputValue}\n onChange={onInputChange}\n onBlur={handleInputBlur}\n onFocus={handleInputFocus}\n placeholder={placeholderText}\n />\n ) : (\n <StyledComboBoxPlaceholderText>\n {placeholderText}\n </StyledComboBoxPlaceholderText>\n )}\n {internalSelectedItem &&\n internalSelectedItem.suffixElement &&\n internalSelectedItem.suffixElement}\n </StyledComboBoxPlaceholder>\n </StyledComboBoxPrefixAndPlaceholderWrapper>\n {shouldShowClearIcon && internalSelectedItem && (\n <StyledComboBoxClearIconWrapper\n $isDisabled={isDisabled}\n onClick={handleClear}\n >\n <Icon icons={['fa fa-times']} />\n </StyledComboBoxClearIconWrapper>\n )}\n {!shouldDisableActions && (\n <StyledComboBoxIconWrapper\n $isDisabled={isDisabled}\n $size={size}\n $shouldShowBorderLeft={\n shouldShowClearIcon === true &&\n internalSelectedItem !== undefined\n }\n >\n <Icon icons={['fa fa-chevron-down']} isDisabled={isDisabled} />\n </StyledComboBoxIconWrapper>\n )}\n </StyledComboBoxHeader>\n {styledComboBoxElementRef.current && (\n <DropdownBodyWrapper\n anchorElement={styledComboBoxElementRef.current}\n bodyWidth={bodyWidth}\n contentHeight={contentHeight}\n onClose={handleClose}\n direction={direction}\n container={container}\n shouldShowDropdown={isAnimating}\n minBodyWidth={bodyWidth ?? bodyMinWidth}\n maxHeight={maxHeight}\n >\n <StyledComboBoxBody\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n $maxHeight={maxHeight}\n $minWidth={bodyWidth ?? bodyMinWidth}\n $browser={browser?.name as BrowserName}\n ref={contentRef}\n tabIndex={0}\n >\n {comboBoxGroups}\n </StyledComboBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledComboBox>\n ),\n [\n minWidth,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n direction,\n handleHeaderClick,\n isAnimating,\n isTouch,\n size,\n shouldShowTransparentBackground,\n isDisabled,\n shouldChangeColor,\n shouldShowBigImage,\n prefix,\n prefixMinWidth,\n selectedItem,\n internalSelectedItem,\n placeholderImageUrl,\n shouldShowRoundPlaceholderImage,\n placeholderIcon,\n inputValue,\n onInputChange,\n handleInputBlur,\n handleInputFocus,\n placeholderText,\n shouldShowClearIcon,\n handleClear,\n shouldDisableActions,\n bodyWidth,\n contentHeight,\n handleClose,\n container,\n bodyMinWidth,\n maxHeight,\n browser?.name,\n comboBoxGroups,\n ],\n );\n },\n);\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"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","ignoreList":[]}
@@ -13,7 +13,8 @@ const SharingButton = ({
13
13
  link,
14
14
  alignment,
15
15
  container,
16
- children
16
+ children,
17
+ isDisabled
17
18
  }) => {
18
19
  const contextMenuRef = _react.default.useRef(null);
19
20
  const [isButtonDisabled, setIsButtonDisabled] = _react.default.useState(false);
@@ -36,7 +37,7 @@ const SharingButton = ({
36
37
  onHide: handleOnHide
37
38
  }, /*#__PURE__*/_react.default.createElement(_Button.default, {
38
39
  onClick: handleButtonClick,
39
- isDisabled: isButtonDisabled
40
+ isDisabled: isButtonDisabled || isDisabled
40
41
  }, children)));
41
42
  };
42
43
  var _default = exports.default = SharingButton;
@@ -1 +1 @@
1
- {"version":3,"file":"SharingButton.js","names":["_react","_interopRequireDefault","require","_SharingContextMenu","_SharingButton","_Button","e","__esModule","default","SharingButton","link","alignment","container","children","contextMenuRef","React","useRef","isButtonDisabled","setIsButtonDisabled","useState","handleButtonClick","_contextMenuRef$curre","current","show","handleOnShow","handleOnHide","createElement","StyledSharingButtonContainer","ref","onShow","onHide","onClick","isDisabled","_default","exports"],"sources":["../../../../src/components/sharing-button/SharingButton.tsx"],"sourcesContent":["import React, { FunctionComponent, PropsWithChildren } from 'react';\nimport { ContextMenuRef } from '../context-menu/ContextMenu.types';\nimport SharingContextMenu, {\n SharingContextMenuProps,\n} from '../sharing-context-menu/SharingContextMenu';\nimport { StyledSharingButtonContainer } from './SharingButton.styles';\nimport Button from '../button/Button';\n\nexport type SharingButtonProps = PropsWithChildren<\n Pick<SharingContextMenuProps, 'link' | 'alignment' | 'container'>\n>;\n\nconst SharingButton: FunctionComponent<SharingButtonProps> = ({\n link,\n alignment,\n container,\n children,\n}) => {\n const contextMenuRef = React.useRef<ContextMenuRef>(null);\n const [isButtonDisabled, setIsButtonDisabled] = React.useState(false);\n\n const handleButtonClick = () => {\n contextMenuRef.current?.show();\n };\n\n const handleOnShow = () => {\n setIsButtonDisabled(true);\n };\n\n const handleOnHide = () => {\n setIsButtonDisabled(false);\n };\n\n return (\n <StyledSharingButtonContainer>\n <SharingContextMenu\n link={link}\n alignment={alignment}\n container={container}\n ref={contextMenuRef}\n onShow={handleOnShow}\n onHide={handleOnHide}\n >\n <Button onClick={handleButtonClick} isDisabled={isButtonDisabled}>\n {children}\n </Button>\n </SharingContextMenu>\n </StyledSharingButtonContainer>\n );\n};\n\nexport default SharingButton;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,mBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAGA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAAsC,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAMtC,MAAMG,aAAoD,GAAGA,CAAC;EAC1DC,IAAI;EACJC,SAAS;EACTC,SAAS;EACTC;AACJ,CAAC,KAAK;EACF,MAAMC,cAAc,GAAGC,cAAK,CAACC,MAAM,CAAiB,IAAI,CAAC;EACzD,MAAM,CAACC,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGH,cAAK,CAACI,QAAQ,CAAC,KAAK,CAAC;EAErE,MAAMC,iBAAiB,GAAGA,CAAA,KAAM;IAAA,IAAAC,qBAAA;IAC5B,CAAAA,qBAAA,GAAAP,cAAc,CAACQ,OAAO,cAAAD,qBAAA,eAAtBA,qBAAA,CAAwBE,IAAI,CAAC,CAAC;EAClC,CAAC;EAED,MAAMC,YAAY,GAAGA,CAAA,KAAM;IACvBN,mBAAmB,CAAC,IAAI,CAAC;EAC7B,CAAC;EAED,MAAMO,YAAY,GAAGA,CAAA,KAAM;IACvBP,mBAAmB,CAAC,KAAK,CAAC;EAC9B,CAAC;EAED,oBACIlB,MAAA,CAAAQ,OAAA,CAAAkB,aAAA,CAACtB,cAAA,CAAAuB,4BAA4B,qBACzB3B,MAAA,CAAAQ,OAAA,CAAAkB,aAAA,CAACvB,mBAAA,CAAAK,OAAkB;IACfE,IAAI,EAAEA,IAAK;IACXC,SAAS,EAAEA,SAAU;IACrBC,SAAS,EAAEA,SAAU;IACrBgB,GAAG,EAAEd,cAAe;IACpBe,MAAM,EAAEL,YAAa;IACrBM,MAAM,EAAEL;EAAa,gBAErBzB,MAAA,CAAAQ,OAAA,CAAAkB,aAAA,CAACrB,OAAA,CAAAG,OAAM;IAACuB,OAAO,EAAEX,iBAAkB;IAACY,UAAU,EAAEf;EAAiB,GAC5DJ,QACG,CACQ,CACM,CAAC;AAEvC,CAAC;AAAC,IAAAoB,QAAA,GAAAC,OAAA,CAAA1B,OAAA,GAEaC,aAAa","ignoreList":[]}
1
+ {"version":3,"file":"SharingButton.js","names":["_react","_interopRequireDefault","require","_SharingContextMenu","_SharingButton","_Button","e","__esModule","default","SharingButton","link","alignment","container","children","isDisabled","contextMenuRef","React","useRef","isButtonDisabled","setIsButtonDisabled","useState","handleButtonClick","_contextMenuRef$curre","current","show","handleOnShow","handleOnHide","createElement","StyledSharingButtonContainer","ref","onShow","onHide","onClick","_default","exports"],"sources":["../../../../src/components/sharing-button/SharingButton.tsx"],"sourcesContent":["import React, { FunctionComponent, PropsWithChildren } from 'react';\nimport { ContextMenuRef } from '../context-menu/ContextMenu.types';\nimport SharingContextMenu, {\n SharingContextMenuProps,\n} from '../sharing-context-menu/SharingContextMenu';\nimport { StyledSharingButtonContainer } from './SharingButton.styles';\nimport Button from '../button/Button';\nimport { ButtonProps } from '../button/Button.types';\n\nexport type SharingButtonProps = PropsWithChildren<\n Pick<SharingContextMenuProps, 'link' | 'alignment' | 'container'> &\n Pick<ButtonProps, 'isDisabled'>\n>;\n\nconst SharingButton: FunctionComponent<SharingButtonProps> = ({\n link,\n alignment,\n container,\n children,\n isDisabled,\n}) => {\n const contextMenuRef = React.useRef<ContextMenuRef>(null);\n const [isButtonDisabled, setIsButtonDisabled] = React.useState(false);\n\n const handleButtonClick = () => {\n contextMenuRef.current?.show();\n };\n\n const handleOnShow = () => {\n setIsButtonDisabled(true);\n };\n\n const handleOnHide = () => {\n setIsButtonDisabled(false);\n };\n\n return (\n <StyledSharingButtonContainer>\n <SharingContextMenu\n link={link}\n alignment={alignment}\n container={container}\n ref={contextMenuRef}\n onShow={handleOnShow}\n onHide={handleOnHide}\n >\n <Button onClick={handleButtonClick} isDisabled={isButtonDisabled || isDisabled}>\n {children}\n </Button>\n </SharingContextMenu>\n </StyledSharingButtonContainer>\n );\n};\n\nexport default SharingButton;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,mBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAGA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAAsC,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAQtC,MAAMG,aAAoD,GAAGA,CAAC;EAC1DC,IAAI;EACJC,SAAS;EACTC,SAAS;EACTC,QAAQ;EACRC;AACJ,CAAC,KAAK;EACF,MAAMC,cAAc,GAAGC,cAAK,CAACC,MAAM,CAAiB,IAAI,CAAC;EACzD,MAAM,CAACC,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGH,cAAK,CAACI,QAAQ,CAAC,KAAK,CAAC;EAErE,MAAMC,iBAAiB,GAAGA,CAAA,KAAM;IAAA,IAAAC,qBAAA;IAC5B,CAAAA,qBAAA,GAAAP,cAAc,CAACQ,OAAO,cAAAD,qBAAA,eAAtBA,qBAAA,CAAwBE,IAAI,CAAC,CAAC;EAClC,CAAC;EAED,MAAMC,YAAY,GAAGA,CAAA,KAAM;IACvBN,mBAAmB,CAAC,IAAI,CAAC;EAC7B,CAAC;EAED,MAAMO,YAAY,GAAGA,CAAA,KAAM;IACvBP,mBAAmB,CAAC,KAAK,CAAC;EAC9B,CAAC;EAED,oBACInB,MAAA,CAAAQ,OAAA,CAAAmB,aAAA,CAACvB,cAAA,CAAAwB,4BAA4B,qBACzB5B,MAAA,CAAAQ,OAAA,CAAAmB,aAAA,CAACxB,mBAAA,CAAAK,OAAkB;IACfE,IAAI,EAAEA,IAAK;IACXC,SAAS,EAAEA,SAAU;IACrBC,SAAS,EAAEA,SAAU;IACrBiB,GAAG,EAAEd,cAAe;IACpBe,MAAM,EAAEL,YAAa;IACrBM,MAAM,EAAEL;EAAa,gBAErB1B,MAAA,CAAAQ,OAAA,CAAAmB,aAAA,CAACtB,OAAA,CAAAG,OAAM;IAACwB,OAAO,EAAEX,iBAAkB;IAACP,UAAU,EAAEI,gBAAgB,IAAIJ;EAAW,GAC1ED,QACG,CACQ,CACM,CAAC;AAEvC,CAAC;AAAC,IAAAoB,QAAA,GAAAC,OAAA,CAAA1B,OAAA,GAEaC,aAAa","ignoreList":[]}
@@ -25,6 +25,8 @@ const ComboBox = /*#__PURE__*/forwardRef(({
25
25
  prefix,
26
26
  container,
27
27
  selectedItem,
28
+ onHide,
29
+ onShow,
28
30
  shouldShowBigImage,
29
31
  shouldShowClearIcon,
30
32
  shouldShowRoundImage,
@@ -93,11 +95,17 @@ const ComboBox = /*#__PURE__*/forwardRef(({
93
95
  onInputBlur?.(event);
94
96
  }, [onInputBlur]);
95
97
  const handleOpen = useCallback(() => {
98
+ if (typeof onShow === 'function') {
99
+ onShow();
100
+ }
96
101
  setIsAnimating(true);
97
- }, []);
102
+ }, [onShow]);
98
103
  const handleClose = useCallback(() => {
104
+ if (typeof onHide === 'function') {
105
+ onHide();
106
+ }
99
107
  setIsAnimating(false);
100
- }, []);
108
+ }, [onHide]);
101
109
 
102
110
  /**
103
111
  * This function sets the selected item
@@ -112,13 +120,13 @@ const ComboBox = /*#__PURE__*/forwardRef(({
112
120
  void onSelectResult.then(shouldPreventSelection => {
113
121
  if (shouldPreventSelection) return;
114
122
  setInternalSelectedItem(itemToSelect);
115
- setIsAnimating(false);
123
+ handleClose();
116
124
  });
117
125
  return;
118
126
  }
119
127
  }
120
128
  setInternalSelectedItem(itemToSelect);
121
- setIsAnimating(false);
129
+ handleClose();
122
130
  }, [onSelect]);
123
131
  const handleClear = useCallback(event => {
124
132
  event.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"file":"ComboBox.js","names":["useDevice","useFunctions","useValues","React","forwardRef","Fragment","useCallback","useContext","useEffect","useImperativeHandle","useMemo","useRef","useState","calculateMaxComboBoxItemWidth","useIsTouch","AreaContext","Icon","ComboBoxItem","StyledComboBox","StyledComboBoxBody","StyledComboBoxClearIconWrapper","StyledComboBoxHeader","StyledComboBoxIconWrapper","StyledComboBoxInput","StyledComboBoxPlaceholder","StyledComboBoxPlaceholderImage","StyledComboBoxPlaceholderText","StyledComboBoxPrefix","StyledComboBoxPrefixAndPlaceholderWrapper","StyledComboBoxTopic","DropdownBodyWrapper","DropdownDirection","useElementSize","ComboBoxSize","ComboBox","bodyWidth","direction","RIGHT","isDisabled","lists","maxHeight","onSelect","placeholder","prefix","container","selectedItem","shouldShowBigImage","shouldShowClearIcon","shouldShowRoundImage","onInputFocus","prefixMinWidth","size","NORMAL","shouldUseFullWidth","onInputChange","shouldUseCurrentItemWidth","onInputBlur","shouldShowTransparentBackground","inputValue","shouldDropDownUseMaxItemWidth","ref","internalSelectedItem","setInternalSelectedItem","isAnimating","setIsAnimating","minWidth","setMinWidth","undefined","bodyMinWidth","setBodyMinWidth","focusedIndex","setFocusedIndex","isInputFocused","styledComboBoxElementRef","contentRef","parentSize","shouldUseParentElement","functions","values","isTouch","browser","areaProvider","width","shouldChangeColor","shouldDisableActions","combinedLists","flatMap","list","length","some","item","value","contentHeight","flatItems","height","reduce","isBigItem","subtext","trim","handleInputFocus","event","current","handleInputBlur","handleOpen","handleClose","handleSetSelectedItem","itemToSelect","onSelectResult","Promise","then","shouldPreventSelection","handleClear","preventDefault","stopPropagation","handleKeyDown","e","key","children","stepDirection","newIndex","attempts","newElement","shouldSkip","id","startsWith","endsWith","prevElement","tabIndex","focusedElement","focus","element","newSelectedItem","find","String","replace","document","addEventListener","removeEventListener","allItems","maxItemWidth","text","hasImage","imageUrl","hasIcon","icons","parentWidth","parentElement","getBoundingClientRect","paddingWidth","imageWidth","iconWidth","prefixWidth","prefixTextWidth","Math","max","calculatedWidth","tmpMinWidth","tmpBodyMinWidth","internalSelectedItemWidth","itemWidth","placeholderImageUrl","placeholderIcon","placeholderText","shouldShowRoundPlaceholderImage","selectedItemList","handleHeaderClick","hide","show","comboBoxGroups","map","createElement","groupName","isSelected","$minWidth","$shouldUseFullWidth","$shouldUseCurrentItemWidth","$direction","onClick","$isOpen","$isTouch","$size","$shouldShowTransparentBackground","$isDisabled","$shouldChangeColor","$shouldShowBigImage","$prefixMinWidth","$shouldReduceOpacity","src","$shouldShowRoundImage","disabled","onChange","onBlur","onFocus","suffixElement","$shouldShowBorderLeft","anchorElement","onClose","shouldShowDropdown","minBodyWidth","$maxHeight","$browser","name","displayName"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { useDevice, useFunctions, useValues } from 'chayns-api';\nimport React, {\n ChangeEventHandler,\n type CSSProperties,\n FocusEventHandler,\n forwardRef,\n Fragment,\n ReactHTML,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { CSSPropertiesWithVars } from 'styled-components/dist/types';\nimport { BrowserName } from '../../types/chayns';\nimport { calculateMaxComboBoxItemWidth } from '../../utils/calculate';\nimport { useIsTouch } from '../../utils/environment';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxBody,\n StyledComboBoxClearIconWrapper,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxInput,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledComboBoxPlaceholderText,\n StyledComboBoxPrefix,\n StyledComboBoxPrefixAndPlaceholderWrapper,\n StyledComboBoxTopic,\n} from './ComboBox.styles';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\nimport { DropdownDirection } from '../../types/dropdown';\nimport { useElementSize } from '../../hooks/element';\n\nexport interface ComboBoxRef {\n hide: VoidFunction;\n show: VoidFunction;\n}\n\nexport interface IComboBoxItems {\n groupName?: string;\n list: Array<IComboBoxItem>;\n shouldShowRoundImage?: boolean;\n}\n\nexport interface ComboBoxTextStyles {\n tagName?: keyof ReactHTML;\n styles?: CSSPropertiesWithVars;\n className?: string;\n}\n\nexport interface IComboBoxItem {\n icons?: string[];\n imageBackground?: CSSProperties['background'];\n imageUrl?: string;\n isDisabled?: boolean;\n rightElement?: ReactNode;\n subtext?: string;\n suffixElement?: ReactNode;\n text: string;\n value: string | number;\n textStyles?: ComboBoxTextStyles;\n}\n\nexport enum ComboBoxSize {\n NORMAL = 'normal',\n SMALL = 'small',\n}\n\nexport type ComboBoxProps = {\n /**\n * The width of the body.\n */\n bodyWidth?: number;\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * The direction in which the combobox should open.\n */\n direction?: DropdownDirection;\n /**\n * The value of the optional input.\n */\n inputValue?: string;\n /**\n * Whether the combobox should be disabled.\n */\n isDisabled?: boolean;\n /**\n * The list of the items that should be displayed.\n */\n lists: IComboBoxItems[];\n /**\n * The maximum height of the combobox content.\n */\n maxHeight?: number;\n /**\n * Function to be executed when the value of the optional input is changed.\n */\n onInputChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the optional input lost its focus.\n */\n onInputBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the optional input gets its focus.\n */\n onInputFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function that should be executed when an item is selected. If the function returns false, the item will not be selected.\n */\n onSelect?: (comboboxItem?: IComboBoxItem) => Promise<boolean> | boolean | void;\n /**\n * A text that should be displayed when no item is selected.\n */\n placeholder: string;\n /**\n * A prefix that should be displayed before the placeholder.\n */\n prefix?: string;\n /**\n * An item that should be preselected.\n */\n selectedItem?: IComboBoxItem;\n /**\n * If true, the images of the items are displayed in a bigger shape. This prop will automatically be set to true if the subtext of an item is given.\n */\n shouldShowBigImage?: boolean;\n /**\n * If true, a clear icon is displayed at the end of the combo box if an item is selected.\n */\n shouldShowClearIcon?: boolean;\n /**\n * Whether the background should be transparent.\n */\n shouldShowTransparentBackground?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the width of the ComboBox should be the width of the current item.\n */\n shouldUseCurrentItemWidth?: boolean;\n /**\n * Whether the width of the 'ComboBox' should be the width of the parent or of the widest item.\n */\n shouldUseFullWidth?: boolean;\n /**\n * If true, the dropdown will use the maximum width of the items.\n */\n shouldDropDownUseMaxItemWidth?: boolean;\n /**\n * The size of the ComboBox.\n */\n size?: ComboBoxSize;\n /**\n * Optional min width for the prefix element.\n */\n prefixMinWidth?: number;\n};\n\nconst ComboBox = forwardRef<ComboBoxRef, ComboBoxProps>(\n (\n {\n bodyWidth,\n direction = DropdownDirection.RIGHT,\n isDisabled = false,\n lists,\n maxHeight = 280,\n onSelect,\n placeholder,\n prefix,\n container,\n selectedItem,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldShowRoundImage,\n onInputFocus,\n prefixMinWidth,\n size = ComboBoxSize.NORMAL,\n shouldUseFullWidth = false,\n onInputChange,\n shouldUseCurrentItemWidth = false,\n onInputBlur,\n shouldShowTransparentBackground = false,\n inputValue,\n shouldDropDownUseMaxItemWidth = false,\n },\n ref,\n ) => {\n const [internalSelectedItem, setInternalSelectedItem] = useState<IComboBoxItem>();\n const [isAnimating, setIsAnimating] = useState(false);\n const [minWidth, setMinWidth] = useState<number | undefined>(undefined);\n const [bodyMinWidth, setBodyMinWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const isInputFocused = useRef(false);\n\n const styledComboBoxElementRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const parentSize = useElementSize(styledComboBoxElementRef, {\n shouldUseParentElement: true,\n });\n\n const functions = useFunctions();\n const values = useValues();\n\n const isTouch = useIsTouch();\n\n const { browser } = useDevice();\n\n const areaProvider = useContext(AreaContext);\n\n useEffect(() => {\n if (shouldUseFullWidth && parentSize) {\n setMinWidth(parentSize.width);\n }\n }, [parentSize, shouldUseFullWidth]);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n const shouldDisableActions = useMemo(() => {\n if (!selectedItem) {\n return false;\n }\n\n const combinedLists = lists.flatMap((list) => list.list);\n\n return (\n combinedLists.length === 1 &&\n combinedLists.some((item) => item.value === selectedItem.value)\n );\n }, [lists, selectedItem]);\n\n const contentHeight = useMemo(() => {\n const flatItems = lists.flatMap((list) => list.list);\n\n let height = flatItems.reduce((value, item) => {\n const isBigItem =\n shouldShowBigImage ||\n (typeof item.subtext === 'string' && item.subtext.trim() !== '');\n\n return value + (isBigItem ? 56 : 38);\n }, 0);\n\n if (lists.length > 1) {\n height += lists.length * 38;\n }\n\n if (maxHeight < height) {\n height = maxHeight;\n }\n\n return height;\n }, [lists, maxHeight, shouldShowBigImage]);\n\n const handleInputFocus: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = true;\n onInputFocus?.(event);\n },\n [onInputFocus],\n );\n\n const handleInputBlur: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = false;\n onInputBlur?.(event);\n },\n [onInputBlur],\n );\n\n const handleOpen = useCallback(() => {\n setIsAnimating(true);\n }, []);\n\n const handleClose = useCallback(() => {\n setIsAnimating(false);\n }, []);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect?: IComboBoxItem) => {\n if (typeof onSelect === 'function') {\n const onSelectResult = onSelect(itemToSelect);\n\n if (onSelectResult === false) {\n return;\n }\n\n if (onSelectResult instanceof Promise) {\n void onSelectResult.then((shouldPreventSelection) => {\n if (shouldPreventSelection) return;\n\n setInternalSelectedItem(itemToSelect);\n setIsAnimating(false);\n });\n\n return;\n }\n }\n\n setInternalSelectedItem(itemToSelect);\n setIsAnimating(false);\n },\n [onSelect],\n );\n\n const handleClear = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n handleSetSelectedItem(undefined);\n },\n [handleSetSelectedItem],\n );\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating) return;\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n\n const children = contentRef.current?.children;\n\n if (!children || children.length === 0) return;\n\n const stepDirection = e.key === 'ArrowUp' ? -1 : 1;\n\n let newIndex = focusedIndex ?? -1;\n\n let attempts = 0;\n\n do {\n newIndex = (newIndex + stepDirection + children.length) % children.length;\n\n const newElement = children[newIndex] as HTMLDivElement;\n\n let shouldSkip = false;\n\n if (\n newElement.id.startsWith('combobox-group--') ||\n newElement.id.endsWith('--disabled-item')\n ) {\n shouldSkip = true;\n }\n\n if (!shouldSkip) break;\n\n attempts++;\n } while (attempts < children.length);\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const focusedElement = children[newIndex] as HTMLDivElement;\n\n focusedElement.tabIndex = 0;\n\n focusedElement.focus();\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) return;\n\n const { id } = element;\n\n let newSelectedItem: IComboBoxItem | undefined;\n\n lists.some((list) => {\n newSelectedItem = list.list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n\n return !!newSelectedItem;\n });\n\n if (newSelectedItem) {\n handleSetSelectedItem(newSelectedItem);\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [focusedIndex, handleSetSelectedItem, isAnimating, lists]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const allItems = lists.flatMap((list) => list.list);\n\n let maxItemWidth = calculateMaxComboBoxItemWidth({\n list: [\n ...allItems,\n { text: placeholder, value: 'placeholder' },\n ...(selectedItem ? [selectedItem] : []),\n ],\n functions,\n shouldShowBigImage,\n values,\n });\n\n if (shouldDropDownUseMaxItemWidth) {\n maxItemWidth += 20 + 2 + 1; // 20px padding (left and right), 2px border, 1px puffer for rounding errors\n\n setBodyMinWidth(maxItemWidth);\n setMinWidth(maxItemWidth);\n\n return;\n }\n\n const hasImage = [selectedItem, ...allItems].some((item) => item?.imageUrl);\n const hasIcon = [selectedItem, ...allItems].some((item) => item?.icons);\n\n const parentWidth =\n styledComboBoxElementRef.current?.parentElement?.getBoundingClientRect().width ?? 0;\n\n const paddingWidth = 20 + 2 + 40 + 40; // padding + border + arrow icon + optional clear icon\n const imageWidth = hasImage ? 32 : 0; // image width + gap if images present\n const iconWidth = hasIcon ? 40 : 0; // icon width + gap if icons present\n\n let prefixWidth = 0;\n\n if (prefix) {\n const prefixTextWidth = calculateMaxComboBoxItemWidth({\n list: [{ text: prefix, value: 'prefix' }],\n functions,\n values,\n });\n\n prefixWidth = Math.max(prefixTextWidth + 5, 32);\n }\n\n const calculatedWidth =\n maxItemWidth + paddingWidth + imageWidth + iconWidth + prefixWidth;\n\n let tmpMinWidth = calculatedWidth;\n let tmpBodyMinWidth = calculatedWidth;\n\n // Full width settings\n if (shouldUseFullWidth) {\n tmpMinWidth = parentWidth;\n\n tmpBodyMinWidth =\n parentWidth < calculatedWidth - 20 ? calculatedWidth - 20 : parentWidth;\n }\n // Current item width settings\n else if (shouldUseCurrentItemWidth && internalSelectedItem) {\n const internalSelectedItemWidth = calculateMaxComboBoxItemWidth({\n list: [internalSelectedItem],\n functions,\n shouldShowBigImage,\n values,\n });\n\n const itemWidth =\n internalSelectedItemWidth + paddingWidth + imageWidth + iconWidth + prefixWidth;\n\n tmpMinWidth = itemWidth;\n\n tmpBodyMinWidth =\n itemWidth < calculatedWidth - 20 ? calculatedWidth - 20 : itemWidth;\n }\n\n if (tmpMinWidth > parentWidth) {\n tmpMinWidth = parentWidth;\n }\n\n if (tmpBodyMinWidth > parentWidth) {\n tmpBodyMinWidth = parentWidth;\n }\n\n setMinWidth(tmpMinWidth);\n setBodyMinWidth(shouldUseCurrentItemWidth ? tmpMinWidth : tmpBodyMinWidth);\n }, [\n functions,\n internalSelectedItem,\n lists,\n placeholder,\n prefix,\n selectedItem,\n shouldDropDownUseMaxItemWidth,\n shouldShowBigImage,\n shouldUseCurrentItemWidth,\n shouldUseFullWidth,\n values,\n ]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setInternalSelectedItem(selectedItem);\n }, [selectedItem]);\n\n const placeholderImageUrl = useMemo(() => {\n if (selectedItem) {\n return selectedItem.imageUrl;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.imageUrl;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n const placeholderIcon = useMemo(() => {\n if (selectedItem) {\n return selectedItem.icons;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.icons;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n /**\n * This function resets the placeholder\n */\n const placeholderText = useMemo(() => {\n let text = placeholder;\n\n if (selectedItem) {\n text = selectedItem.text;\n } else if (internalSelectedItem) {\n text = internalSelectedItem.text;\n }\n\n return text;\n }, [internalSelectedItem, placeholder, selectedItem]);\n\n const shouldShowRoundPlaceholderImage = useMemo(() => {\n const selectedItemList = lists.find((list) =>\n list.list.some(\n ({ value }) => value === (selectedItem?.value ?? internalSelectedItem?.value),\n ),\n );\n\n return selectedItemList?.shouldShowRoundImage ?? shouldShowRoundImage;\n }, [internalSelectedItem?.value, lists, selectedItem?.value, shouldShowRoundImage]);\n\n /**\n * This function opens the content of the combobox\n */\n const handleHeaderClick = useCallback(() => {\n if (!isDisabled && !isInputFocused.current) {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n }, [handleClose, handleOpen, isAnimating, isDisabled]);\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleClose,\n show: handleOpen,\n }),\n [handleClose, handleOpen],\n );\n\n const comboBoxGroups = useMemo(\n () =>\n lists.map((list) => (\n <Fragment key={list.groupName ?? 'default-group'}>\n {list.groupName && lists.length > 1 && (\n <StyledComboBoxTopic id={`combobox-group--${list.groupName}`}>\n {list.groupName}\n </StyledComboBoxTopic>\n )}\n {list.list.map((item) => (\n <ComboBoxItem\n key={`item-${item.text}`}\n item={item}\n isSelected={\n selectedItem ? item.value === selectedItem.value : false\n }\n onSelect={handleSetSelectedItem}\n shouldShowBigImage={shouldShowBigImage}\n shouldShowRoundImage={\n list.shouldShowRoundImage ?? shouldShowRoundImage\n }\n />\n ))}\n </Fragment>\n )),\n [handleSetSelectedItem, lists, selectedItem, shouldShowBigImage, shouldShowRoundImage],\n );\n\n return useMemo(\n () => (\n <StyledComboBox\n ref={styledComboBoxElementRef}\n $minWidth={minWidth}\n $shouldUseFullWidth={shouldUseFullWidth}\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n >\n <StyledComboBoxHeader\n $direction={direction}\n onClick={handleHeaderClick}\n $isOpen={isAnimating}\n $isTouch={isTouch}\n $size={size}\n $shouldShowTransparentBackground={shouldShowTransparentBackground}\n $isDisabled={isDisabled}\n $shouldChangeColor={shouldChangeColor}\n $shouldShowBigImage={shouldShowBigImage}\n >\n <StyledComboBoxPrefixAndPlaceholderWrapper>\n {prefix && (\n <StyledComboBoxPrefix $prefixMinWidth={prefixMinWidth}>\n {prefix}\n </StyledComboBoxPrefix>\n )}\n <StyledComboBoxPlaceholder\n $shouldReduceOpacity={!selectedItem && !internalSelectedItem}\n >\n {placeholderImageUrl && (\n <StyledComboBoxPlaceholderImage\n src={placeholderImageUrl}\n $shouldShowBigImage={shouldShowBigImage}\n $shouldShowRoundImage={shouldShowRoundPlaceholderImage}\n />\n )}\n {placeholderIcon && <Icon icons={placeholderIcon} />}\n {typeof inputValue === 'string' ? (\n <StyledComboBoxInput\n disabled={isDisabled}\n value={inputValue}\n onChange={onInputChange}\n onBlur={handleInputBlur}\n onFocus={handleInputFocus}\n placeholder={placeholderText}\n />\n ) : (\n <StyledComboBoxPlaceholderText>\n {placeholderText}\n </StyledComboBoxPlaceholderText>\n )}\n {internalSelectedItem &&\n internalSelectedItem.suffixElement &&\n internalSelectedItem.suffixElement}\n </StyledComboBoxPlaceholder>\n </StyledComboBoxPrefixAndPlaceholderWrapper>\n {shouldShowClearIcon && internalSelectedItem && (\n <StyledComboBoxClearIconWrapper\n $isDisabled={isDisabled}\n onClick={handleClear}\n >\n <Icon icons={['fa fa-times']} />\n </StyledComboBoxClearIconWrapper>\n )}\n {!shouldDisableActions && (\n <StyledComboBoxIconWrapper\n $isDisabled={isDisabled}\n $size={size}\n $shouldShowBorderLeft={\n shouldShowClearIcon === true &&\n internalSelectedItem !== undefined\n }\n >\n <Icon icons={['fa fa-chevron-down']} isDisabled={isDisabled} />\n </StyledComboBoxIconWrapper>\n )}\n </StyledComboBoxHeader>\n {styledComboBoxElementRef.current && (\n <DropdownBodyWrapper\n anchorElement={styledComboBoxElementRef.current}\n bodyWidth={bodyWidth}\n contentHeight={contentHeight}\n onClose={handleClose}\n direction={direction}\n container={container}\n shouldShowDropdown={isAnimating}\n minBodyWidth={bodyWidth ?? bodyMinWidth}\n maxHeight={maxHeight}\n >\n <StyledComboBoxBody\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n $maxHeight={maxHeight}\n $minWidth={bodyWidth ?? bodyMinWidth}\n $browser={browser?.name as BrowserName}\n ref={contentRef}\n tabIndex={0}\n >\n {comboBoxGroups}\n </StyledComboBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledComboBox>\n ),\n [\n minWidth,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n direction,\n handleHeaderClick,\n isAnimating,\n isTouch,\n size,\n shouldShowTransparentBackground,\n isDisabled,\n shouldChangeColor,\n shouldShowBigImage,\n prefix,\n prefixMinWidth,\n selectedItem,\n internalSelectedItem,\n placeholderImageUrl,\n shouldShowRoundPlaceholderImage,\n placeholderIcon,\n inputValue,\n onInputChange,\n handleInputBlur,\n handleInputFocus,\n placeholderText,\n shouldShowClearIcon,\n handleClear,\n shouldDisableActions,\n bodyWidth,\n contentHeight,\n handleClose,\n container,\n bodyMinWidth,\n maxHeight,\n browser?.name,\n comboBoxGroups,\n ],\n );\n },\n);\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ComboBox.js","names":["useDevice","useFunctions","useValues","React","forwardRef","Fragment","useCallback","useContext","useEffect","useImperativeHandle","useMemo","useRef","useState","calculateMaxComboBoxItemWidth","useIsTouch","AreaContext","Icon","ComboBoxItem","StyledComboBox","StyledComboBoxBody","StyledComboBoxClearIconWrapper","StyledComboBoxHeader","StyledComboBoxIconWrapper","StyledComboBoxInput","StyledComboBoxPlaceholder","StyledComboBoxPlaceholderImage","StyledComboBoxPlaceholderText","StyledComboBoxPrefix","StyledComboBoxPrefixAndPlaceholderWrapper","StyledComboBoxTopic","DropdownBodyWrapper","DropdownDirection","useElementSize","ComboBoxSize","ComboBox","bodyWidth","direction","RIGHT","isDisabled","lists","maxHeight","onSelect","placeholder","prefix","container","selectedItem","onHide","onShow","shouldShowBigImage","shouldShowClearIcon","shouldShowRoundImage","onInputFocus","prefixMinWidth","size","NORMAL","shouldUseFullWidth","onInputChange","shouldUseCurrentItemWidth","onInputBlur","shouldShowTransparentBackground","inputValue","shouldDropDownUseMaxItemWidth","ref","internalSelectedItem","setInternalSelectedItem","isAnimating","setIsAnimating","minWidth","setMinWidth","undefined","bodyMinWidth","setBodyMinWidth","focusedIndex","setFocusedIndex","isInputFocused","styledComboBoxElementRef","contentRef","parentSize","shouldUseParentElement","functions","values","isTouch","browser","areaProvider","width","shouldChangeColor","shouldDisableActions","combinedLists","flatMap","list","length","some","item","value","contentHeight","flatItems","height","reduce","isBigItem","subtext","trim","handleInputFocus","event","current","handleInputBlur","handleOpen","handleClose","handleSetSelectedItem","itemToSelect","onSelectResult","Promise","then","shouldPreventSelection","handleClear","preventDefault","stopPropagation","handleKeyDown","e","key","children","stepDirection","newIndex","attempts","newElement","shouldSkip","id","startsWith","endsWith","prevElement","tabIndex","focusedElement","focus","element","newSelectedItem","find","String","replace","document","addEventListener","removeEventListener","allItems","maxItemWidth","text","hasImage","imageUrl","hasIcon","icons","parentWidth","parentElement","getBoundingClientRect","paddingWidth","imageWidth","iconWidth","prefixWidth","prefixTextWidth","Math","max","calculatedWidth","tmpMinWidth","tmpBodyMinWidth","internalSelectedItemWidth","itemWidth","placeholderImageUrl","placeholderIcon","placeholderText","shouldShowRoundPlaceholderImage","selectedItemList","handleHeaderClick","hide","show","comboBoxGroups","map","createElement","groupName","isSelected","$minWidth","$shouldUseFullWidth","$shouldUseCurrentItemWidth","$direction","onClick","$isOpen","$isTouch","$size","$shouldShowTransparentBackground","$isDisabled","$shouldChangeColor","$shouldShowBigImage","$prefixMinWidth","$shouldReduceOpacity","src","$shouldShowRoundImage","disabled","onChange","onBlur","onFocus","suffixElement","$shouldShowBorderLeft","anchorElement","onClose","shouldShowDropdown","minBodyWidth","$maxHeight","$browser","name","displayName"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { useDevice, useFunctions, useValues } from 'chayns-api';\nimport React, {\n ChangeEventHandler,\n type CSSProperties,\n FocusEventHandler,\n forwardRef,\n Fragment,\n ReactHTML,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { CSSPropertiesWithVars } from 'styled-components/dist/types';\nimport { BrowserName } from '../../types/chayns';\nimport { calculateMaxComboBoxItemWidth } from '../../utils/calculate';\nimport { useIsTouch } from '../../utils/environment';\nimport { AreaContext } from '../area-provider/AreaContextProvider';\nimport Icon from '../icon/Icon';\nimport ComboBoxItem from './combobox-item/ComboBoxItem';\nimport {\n StyledComboBox,\n StyledComboBoxBody,\n StyledComboBoxClearIconWrapper,\n StyledComboBoxHeader,\n StyledComboBoxIconWrapper,\n StyledComboBoxInput,\n StyledComboBoxPlaceholder,\n StyledComboBoxPlaceholderImage,\n StyledComboBoxPlaceholderText,\n StyledComboBoxPrefix,\n StyledComboBoxPrefixAndPlaceholderWrapper,\n StyledComboBoxTopic,\n} from './ComboBox.styles';\nimport DropdownBodyWrapper from '../dropdown-body-wrapper/DropdownBodyWrapper';\nimport { DropdownDirection } from '../../types/dropdown';\nimport { useElementSize } from '../../hooks/element';\n\nexport interface ComboBoxRef {\n hide: VoidFunction;\n show: VoidFunction;\n}\n\nexport interface IComboBoxItems {\n groupName?: string;\n list: Array<IComboBoxItem>;\n shouldShowRoundImage?: boolean;\n}\n\nexport interface ComboBoxTextStyles {\n tagName?: keyof ReactHTML;\n styles?: CSSPropertiesWithVars;\n className?: string;\n}\n\nexport interface IComboBoxItem {\n icons?: string[];\n imageBackground?: CSSProperties['background'];\n imageUrl?: string;\n isDisabled?: boolean;\n rightElement?: ReactNode;\n subtext?: string;\n suffixElement?: ReactNode;\n text: string;\n value: string | number;\n textStyles?: ComboBoxTextStyles;\n}\n\nexport enum ComboBoxSize {\n NORMAL = 'normal',\n SMALL = 'small',\n}\n\nexport type ComboBoxProps = {\n /**\n * The width of the body.\n */\n bodyWidth?: number;\n /**\n * The element where the content of the `ComboBox` should be rendered via React Portal.\n */\n container?: Element;\n /**\n * The direction in which the combobox should open.\n */\n direction?: DropdownDirection;\n /**\n * The value of the optional input.\n */\n inputValue?: string;\n /**\n * Whether the combobox should be disabled.\n */\n isDisabled?: boolean;\n /**\n * The list of the items that should be displayed.\n */\n lists: IComboBoxItems[];\n /**\n * The maximum height of the combobox content.\n */\n maxHeight?: number;\n /**\n * Function to be executed when the value of the optional input is changed.\n */\n onInputChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the optional input lost its focus.\n */\n onInputBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function to be executed when the optional input gets its focus.\n */\n onInputFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * Function that should be executed when an item is selected. If the function returns false, the item will not be selected.\n */\n onSelect?: (comboboxItem?: IComboBoxItem) => Promise<boolean> | boolean | void;\n /**\n * Function to be executed when the content of the `ComboBox` is shown.\n */\n onShow?: () => void;\n /**\n * Function to be executed when the content of the `ComboBox` is hidden.\n */\n onHide?: () => void;\n /**\n * A text that should be displayed when no item is selected.\n */\n placeholder: string;\n /**\n * A prefix that should be displayed before the placeholder.\n */\n prefix?: string;\n /**\n * An item that should be preselected.\n */\n selectedItem?: IComboBoxItem;\n /**\n * If true, the images of the items are displayed in a bigger shape. This prop will automatically be set to true if the subtext of an item is given.\n */\n shouldShowBigImage?: boolean;\n /**\n * If true, a clear icon is displayed at the end of the combo box if an item is selected.\n */\n shouldShowClearIcon?: boolean;\n /**\n * Whether the background should be transparent.\n */\n shouldShowTransparentBackground?: boolean;\n /**\n * If true, the images of the items are displayed in a round shape.\n */\n shouldShowRoundImage?: boolean;\n /**\n * Whether the width of the ComboBox should be the width of the current item.\n */\n shouldUseCurrentItemWidth?: boolean;\n /**\n * Whether the width of the 'ComboBox' should be the width of the parent or of the widest item.\n */\n shouldUseFullWidth?: boolean;\n /**\n * If true, the dropdown will use the maximum width of the items.\n */\n shouldDropDownUseMaxItemWidth?: boolean;\n /**\n * The size of the ComboBox.\n */\n size?: ComboBoxSize;\n /**\n * Optional min width for the prefix element.\n */\n prefixMinWidth?: number;\n};\n\nconst ComboBox = forwardRef<ComboBoxRef, ComboBoxProps>(\n (\n {\n bodyWidth,\n direction = DropdownDirection.RIGHT,\n isDisabled = false,\n lists,\n maxHeight = 280,\n onSelect,\n placeholder,\n prefix,\n container,\n selectedItem,\n onHide,\n onShow,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldShowRoundImage,\n onInputFocus,\n prefixMinWidth,\n size = ComboBoxSize.NORMAL,\n shouldUseFullWidth = false,\n onInputChange,\n shouldUseCurrentItemWidth = false,\n onInputBlur,\n shouldShowTransparentBackground = false,\n inputValue,\n shouldDropDownUseMaxItemWidth = false,\n },\n ref,\n ) => {\n const [internalSelectedItem, setInternalSelectedItem] = useState<IComboBoxItem>();\n const [isAnimating, setIsAnimating] = useState(false);\n const [minWidth, setMinWidth] = useState<number | undefined>(undefined);\n const [bodyMinWidth, setBodyMinWidth] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\n const isInputFocused = useRef(false);\n\n const styledComboBoxElementRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n const parentSize = useElementSize(styledComboBoxElementRef, {\n shouldUseParentElement: true,\n });\n\n const functions = useFunctions();\n const values = useValues();\n\n const isTouch = useIsTouch();\n\n const { browser } = useDevice();\n\n const areaProvider = useContext(AreaContext);\n\n useEffect(() => {\n if (shouldUseFullWidth && parentSize) {\n setMinWidth(parentSize.width);\n }\n }, [parentSize, shouldUseFullWidth]);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n const shouldDisableActions = useMemo(() => {\n if (!selectedItem) {\n return false;\n }\n\n const combinedLists = lists.flatMap((list) => list.list);\n\n return (\n combinedLists.length === 1 &&\n combinedLists.some((item) => item.value === selectedItem.value)\n );\n }, [lists, selectedItem]);\n\n const contentHeight = useMemo(() => {\n const flatItems = lists.flatMap((list) => list.list);\n\n let height = flatItems.reduce((value, item) => {\n const isBigItem =\n shouldShowBigImage ||\n (typeof item.subtext === 'string' && item.subtext.trim() !== '');\n\n return value + (isBigItem ? 56 : 38);\n }, 0);\n\n if (lists.length > 1) {\n height += lists.length * 38;\n }\n\n if (maxHeight < height) {\n height = maxHeight;\n }\n\n return height;\n }, [lists, maxHeight, shouldShowBigImage]);\n\n const handleInputFocus: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = true;\n onInputFocus?.(event);\n },\n [onInputFocus],\n );\n\n const handleInputBlur: FocusEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n isInputFocused.current = false;\n onInputBlur?.(event);\n },\n [onInputBlur],\n );\n\n const handleOpen = useCallback(() => {\n if (typeof onShow === 'function') {\n onShow();\n }\n\n setIsAnimating(true);\n }, [onShow]);\n\n const handleClose = useCallback(() => {\n if (typeof onHide === 'function') {\n onHide();\n }\n\n setIsAnimating(false);\n }, [onHide]);\n\n /**\n * This function sets the selected item\n */\n const handleSetSelectedItem = useCallback(\n (itemToSelect?: IComboBoxItem) => {\n if (typeof onSelect === 'function') {\n const onSelectResult = onSelect(itemToSelect);\n\n if (onSelectResult === false) {\n return;\n }\n\n if (onSelectResult instanceof Promise) {\n void onSelectResult.then((shouldPreventSelection) => {\n if (shouldPreventSelection) return;\n\n setInternalSelectedItem(itemToSelect);\n handleClose();\n });\n\n return;\n }\n }\n\n setInternalSelectedItem(itemToSelect);\n handleClose();\n },\n [onSelect],\n );\n\n const handleClear = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n handleSetSelectedItem(undefined);\n },\n [handleSetSelectedItem],\n );\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isAnimating) return;\n\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n\n const children = contentRef.current?.children;\n\n if (!children || children.length === 0) return;\n\n const stepDirection = e.key === 'ArrowUp' ? -1 : 1;\n\n let newIndex = focusedIndex ?? -1;\n\n let attempts = 0;\n\n do {\n newIndex = (newIndex + stepDirection + children.length) % children.length;\n\n const newElement = children[newIndex] as HTMLDivElement;\n\n let shouldSkip = false;\n\n if (\n newElement.id.startsWith('combobox-group--') ||\n newElement.id.endsWith('--disabled-item')\n ) {\n shouldSkip = true;\n }\n\n if (!shouldSkip) break;\n\n attempts++;\n } while (attempts < children.length);\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const focusedElement = children[newIndex] as HTMLDivElement;\n\n focusedElement.tabIndex = 0;\n\n focusedElement.focus();\n } else if (e.key === 'Enter' && focusedIndex !== null) {\n const element = contentRef.current?.children[focusedIndex];\n\n if (!element) return;\n\n const { id } = element;\n\n let newSelectedItem: IComboBoxItem | undefined;\n\n lists.some((list) => {\n newSelectedItem = list.list.find(\n ({ value }) => String(value) === id.replace('combobox-item__', ''),\n );\n\n return !!newSelectedItem;\n });\n\n if (newSelectedItem) {\n handleSetSelectedItem(newSelectedItem);\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [focusedIndex, handleSetSelectedItem, isAnimating, lists]);\n\n /**\n * This function calculates the greatest width\n */\n useEffect(() => {\n const allItems = lists.flatMap((list) => list.list);\n\n let maxItemWidth = calculateMaxComboBoxItemWidth({\n list: [\n ...allItems,\n { text: placeholder, value: 'placeholder' },\n ...(selectedItem ? [selectedItem] : []),\n ],\n functions,\n shouldShowBigImage,\n values,\n });\n\n if (shouldDropDownUseMaxItemWidth) {\n maxItemWidth += 20 + 2 + 1; // 20px padding (left and right), 2px border, 1px puffer for rounding errors\n\n setBodyMinWidth(maxItemWidth);\n setMinWidth(maxItemWidth);\n\n return;\n }\n\n const hasImage = [selectedItem, ...allItems].some((item) => item?.imageUrl);\n const hasIcon = [selectedItem, ...allItems].some((item) => item?.icons);\n\n const parentWidth =\n styledComboBoxElementRef.current?.parentElement?.getBoundingClientRect().width ?? 0;\n\n const paddingWidth = 20 + 2 + 40 + 40; // padding + border + arrow icon + optional clear icon\n const imageWidth = hasImage ? 32 : 0; // image width + gap if images present\n const iconWidth = hasIcon ? 40 : 0; // icon width + gap if icons present\n\n let prefixWidth = 0;\n\n if (prefix) {\n const prefixTextWidth = calculateMaxComboBoxItemWidth({\n list: [{ text: prefix, value: 'prefix' }],\n functions,\n values,\n });\n\n prefixWidth = Math.max(prefixTextWidth + 5, 32);\n }\n\n const calculatedWidth =\n maxItemWidth + paddingWidth + imageWidth + iconWidth + prefixWidth;\n\n let tmpMinWidth = calculatedWidth;\n let tmpBodyMinWidth = calculatedWidth;\n\n // Full width settings\n if (shouldUseFullWidth) {\n tmpMinWidth = parentWidth;\n\n tmpBodyMinWidth =\n parentWidth < calculatedWidth - 20 ? calculatedWidth - 20 : parentWidth;\n }\n // Current item width settings\n else if (shouldUseCurrentItemWidth && internalSelectedItem) {\n const internalSelectedItemWidth = calculateMaxComboBoxItemWidth({\n list: [internalSelectedItem],\n functions,\n shouldShowBigImage,\n values,\n });\n\n const itemWidth =\n internalSelectedItemWidth + paddingWidth + imageWidth + iconWidth + prefixWidth;\n\n tmpMinWidth = itemWidth;\n\n tmpBodyMinWidth =\n itemWidth < calculatedWidth - 20 ? calculatedWidth - 20 : itemWidth;\n }\n\n if (tmpMinWidth > parentWidth) {\n tmpMinWidth = parentWidth;\n }\n\n if (tmpBodyMinWidth > parentWidth) {\n tmpBodyMinWidth = parentWidth;\n }\n\n setMinWidth(tmpMinWidth);\n setBodyMinWidth(shouldUseCurrentItemWidth ? tmpMinWidth : tmpBodyMinWidth);\n }, [\n functions,\n internalSelectedItem,\n lists,\n placeholder,\n prefix,\n selectedItem,\n shouldDropDownUseMaxItemWidth,\n shouldShowBigImage,\n shouldUseCurrentItemWidth,\n shouldUseFullWidth,\n values,\n ]);\n\n /**\n * This function sets the external selected item\n */\n useEffect(() => {\n setIsAnimating(false);\n setInternalSelectedItem(selectedItem);\n }, [selectedItem]);\n\n const placeholderImageUrl = useMemo(() => {\n if (selectedItem) {\n return selectedItem.imageUrl;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.imageUrl;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n const placeholderIcon = useMemo(() => {\n if (selectedItem) {\n return selectedItem.icons;\n }\n\n if (internalSelectedItem) {\n return internalSelectedItem.icons;\n }\n\n return undefined;\n }, [internalSelectedItem, selectedItem]);\n\n /**\n * This function resets the placeholder\n */\n const placeholderText = useMemo(() => {\n let text = placeholder;\n\n if (selectedItem) {\n text = selectedItem.text;\n } else if (internalSelectedItem) {\n text = internalSelectedItem.text;\n }\n\n return text;\n }, [internalSelectedItem, placeholder, selectedItem]);\n\n const shouldShowRoundPlaceholderImage = useMemo(() => {\n const selectedItemList = lists.find((list) =>\n list.list.some(\n ({ value }) => value === (selectedItem?.value ?? internalSelectedItem?.value),\n ),\n );\n\n return selectedItemList?.shouldShowRoundImage ?? shouldShowRoundImage;\n }, [internalSelectedItem?.value, lists, selectedItem?.value, shouldShowRoundImage]);\n\n /**\n * This function opens the content of the combobox\n */\n const handleHeaderClick = useCallback(() => {\n if (!isDisabled && !isInputFocused.current) {\n if (isAnimating) {\n handleClose();\n } else {\n handleOpen();\n }\n }\n }, [handleClose, handleOpen, isAnimating, isDisabled]);\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleClose,\n show: handleOpen,\n }),\n [handleClose, handleOpen],\n );\n\n const comboBoxGroups = useMemo(\n () =>\n lists.map((list) => (\n <Fragment key={list.groupName ?? 'default-group'}>\n {list.groupName && lists.length > 1 && (\n <StyledComboBoxTopic id={`combobox-group--${list.groupName}`}>\n {list.groupName}\n </StyledComboBoxTopic>\n )}\n {list.list.map((item) => (\n <ComboBoxItem\n key={`item-${item.text}`}\n item={item}\n isSelected={\n selectedItem ? item.value === selectedItem.value : false\n }\n onSelect={handleSetSelectedItem}\n shouldShowBigImage={shouldShowBigImage}\n shouldShowRoundImage={\n list.shouldShowRoundImage ?? shouldShowRoundImage\n }\n />\n ))}\n </Fragment>\n )),\n [handleSetSelectedItem, lists, selectedItem, shouldShowBigImage, shouldShowRoundImage],\n );\n\n return useMemo(\n () => (\n <StyledComboBox\n ref={styledComboBoxElementRef}\n $minWidth={minWidth}\n $shouldUseFullWidth={shouldUseFullWidth}\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n >\n <StyledComboBoxHeader\n $direction={direction}\n onClick={handleHeaderClick}\n $isOpen={isAnimating}\n $isTouch={isTouch}\n $size={size}\n $shouldShowTransparentBackground={shouldShowTransparentBackground}\n $isDisabled={isDisabled}\n $shouldChangeColor={shouldChangeColor}\n $shouldShowBigImage={shouldShowBigImage}\n >\n <StyledComboBoxPrefixAndPlaceholderWrapper>\n {prefix && (\n <StyledComboBoxPrefix $prefixMinWidth={prefixMinWidth}>\n {prefix}\n </StyledComboBoxPrefix>\n )}\n <StyledComboBoxPlaceholder\n $shouldReduceOpacity={!selectedItem && !internalSelectedItem}\n >\n {placeholderImageUrl && (\n <StyledComboBoxPlaceholderImage\n src={placeholderImageUrl}\n $shouldShowBigImage={shouldShowBigImage}\n $shouldShowRoundImage={shouldShowRoundPlaceholderImage}\n />\n )}\n {placeholderIcon && <Icon icons={placeholderIcon} />}\n {typeof inputValue === 'string' ? (\n <StyledComboBoxInput\n disabled={isDisabled}\n value={inputValue}\n onChange={onInputChange}\n onBlur={handleInputBlur}\n onFocus={handleInputFocus}\n placeholder={placeholderText}\n />\n ) : (\n <StyledComboBoxPlaceholderText>\n {placeholderText}\n </StyledComboBoxPlaceholderText>\n )}\n {internalSelectedItem &&\n internalSelectedItem.suffixElement &&\n internalSelectedItem.suffixElement}\n </StyledComboBoxPlaceholder>\n </StyledComboBoxPrefixAndPlaceholderWrapper>\n {shouldShowClearIcon && internalSelectedItem && (\n <StyledComboBoxClearIconWrapper\n $isDisabled={isDisabled}\n onClick={handleClear}\n >\n <Icon icons={['fa fa-times']} />\n </StyledComboBoxClearIconWrapper>\n )}\n {!shouldDisableActions && (\n <StyledComboBoxIconWrapper\n $isDisabled={isDisabled}\n $size={size}\n $shouldShowBorderLeft={\n shouldShowClearIcon === true &&\n internalSelectedItem !== undefined\n }\n >\n <Icon icons={['fa fa-chevron-down']} isDisabled={isDisabled} />\n </StyledComboBoxIconWrapper>\n )}\n </StyledComboBoxHeader>\n {styledComboBoxElementRef.current && (\n <DropdownBodyWrapper\n anchorElement={styledComboBoxElementRef.current}\n bodyWidth={bodyWidth}\n contentHeight={contentHeight}\n onClose={handleClose}\n direction={direction}\n container={container}\n shouldShowDropdown={isAnimating}\n minBodyWidth={bodyWidth ?? bodyMinWidth}\n maxHeight={maxHeight}\n >\n <StyledComboBoxBody\n $shouldUseCurrentItemWidth={shouldUseCurrentItemWidth}\n $maxHeight={maxHeight}\n $minWidth={bodyWidth ?? bodyMinWidth}\n $browser={browser?.name as BrowserName}\n ref={contentRef}\n tabIndex={0}\n >\n {comboBoxGroups}\n </StyledComboBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledComboBox>\n ),\n [\n minWidth,\n shouldUseFullWidth,\n shouldUseCurrentItemWidth,\n direction,\n handleHeaderClick,\n isAnimating,\n isTouch,\n size,\n shouldShowTransparentBackground,\n isDisabled,\n shouldChangeColor,\n shouldShowBigImage,\n prefix,\n prefixMinWidth,\n selectedItem,\n internalSelectedItem,\n placeholderImageUrl,\n shouldShowRoundPlaceholderImage,\n placeholderIcon,\n inputValue,\n onInputChange,\n handleInputBlur,\n handleInputFocus,\n placeholderText,\n shouldShowClearIcon,\n handleClear,\n shouldDisableActions,\n bodyWidth,\n contentHeight,\n handleClose,\n container,\n bodyMinWidth,\n maxHeight,\n browser?.name,\n comboBoxGroups,\n ],\n );\n },\n);\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,YAAY,EAAEC,SAAS,QAAQ,YAAY;AAC/D,OAAOC,KAAK,IAIRC,UAAU,EACVC,QAAQ,EAGRC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,mBAAmB,EACnBC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACL,OAAO;AAGd,SAASC,6BAA6B,QAAQ,uBAAuB;AACrE,SAASC,UAAU,QAAQ,yBAAyB;AACpD,SAASC,WAAW,QAAQ,sCAAsC;AAClE,OAAOC,IAAI,MAAM,cAAc;AAC/B,OAAOC,YAAY,MAAM,8BAA8B;AACvD,SACIC,cAAc,EACdC,kBAAkB,EAClBC,8BAA8B,EAC9BC,oBAAoB,EACpBC,yBAAyB,EACzBC,mBAAmB,EACnBC,yBAAyB,EACzBC,8BAA8B,EAC9BC,6BAA6B,EAC7BC,oBAAoB,EACpBC,yCAAyC,EACzCC,mBAAmB,QAChB,mBAAmB;AAC1B,OAAOC,mBAAmB,MAAM,8CAA8C;AAC9E,SAASC,iBAAiB,QAAQ,sBAAsB;AACxD,SAASC,cAAc,QAAQ,qBAAqB;AAgCpD,WAAYC,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;AA4GxB,MAAMC,QAAQ,gBAAG9B,UAAU,CACvB,CACI;EACI+B,SAAS;EACTC,SAAS,GAAGL,iBAAiB,CAACM,KAAK;EACnCC,UAAU,GAAG,KAAK;EAClBC,KAAK;EACLC,SAAS,GAAG,GAAG;EACfC,QAAQ;EACRC,WAAW;EACXC,MAAM;EACNC,SAAS;EACTC,YAAY;EACZC,MAAM;EACNC,MAAM;EACNC,kBAAkB;EAClBC,mBAAmB;EACnBC,oBAAoB;EACpBC,YAAY;EACZC,cAAc;EACdC,IAAI,GAAGpB,YAAY,CAACqB,MAAM;EAC1BC,kBAAkB,GAAG,KAAK;EAC1BC,aAAa;EACbC,yBAAyB,GAAG,KAAK;EACjCC,WAAW;EACXC,+BAA+B,GAAG,KAAK;EACvCC,UAAU;EACVC,6BAA6B,GAAG;AACpC,CAAC,EACDC,GAAG,KACF;EACD,MAAM,CAACC,oBAAoB,EAAEC,uBAAuB,CAAC,GAAGpD,QAAQ,CAAgB,CAAC;EACjF,MAAM,CAACqD,WAAW,EAAEC,cAAc,CAAC,GAAGtD,QAAQ,CAAC,KAAK,CAAC;EACrD,MAAM,CAACuD,QAAQ,EAAEC,WAAW,CAAC,GAAGxD,QAAQ,CAAqByD,SAAS,CAAC;EACvE,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAG3D,QAAQ,CAAC,CAAC,CAAC;EACnD,MAAM,CAAC4D,YAAY,EAAEC,eAAe,CAAC,GAAG7D,QAAQ,CAAgB,IAAI,CAAC;EAErE,MAAM8D,cAAc,GAAG/D,MAAM,CAAC,KAAK,CAAC;EAEpC,MAAMgE,wBAAwB,GAAGhE,MAAM,CAAiB,IAAI,CAAC;EAC7D,MAAMiE,UAAU,GAAGjE,MAAM,CAAwB,IAAI,CAAC;EAEtD,MAAMkE,UAAU,GAAG7C,cAAc,CAAC2C,wBAAwB,EAAE;IACxDG,sBAAsB,EAAE;EAC5B,CAAC,CAAC;EAEF,MAAMC,SAAS,GAAG9E,YAAY,CAAC,CAAC;EAChC,MAAM+E,MAAM,GAAG9E,SAAS,CAAC,CAAC;EAE1B,MAAM+E,OAAO,GAAGnE,UAAU,CAAC,CAAC;EAE5B,MAAM;IAAEoE;EAAQ,CAAC,GAAGlF,SAAS,CAAC,CAAC;EAE/B,MAAMmF,YAAY,GAAG5E,UAAU,CAACQ,WAAW,CAAC;EAE5CP,SAAS,CAAC,MAAM;IACZ,IAAI+C,kBAAkB,IAAIsB,UAAU,EAAE;MAClCT,WAAW,CAACS,UAAU,CAACO,KAAK,CAAC;IACjC;EACJ,CAAC,EAAE,CAACP,UAAU,EAAEtB,kBAAkB,CAAC,CAAC;EAEpC,MAAM8B,iBAAiB,GAAG3E,OAAO,CAC7B,MAAMyE,YAAY,CAACE,iBAAiB,IAAI,KAAK,EAC7C,CAACF,YAAY,CAACE,iBAAiB,CACnC,CAAC;EAED,MAAMC,oBAAoB,GAAG5E,OAAO,CAAC,MAAM;IACvC,IAAI,CAACmC,YAAY,EAAE;MACf,OAAO,KAAK;IAChB;IAEA,MAAM0C,aAAa,GAAGhD,KAAK,CAACiD,OAAO,CAAEC,IAAI,IAAKA,IAAI,CAACA,IAAI,CAAC;IAExD,OACIF,aAAa,CAACG,MAAM,KAAK,CAAC,IAC1BH,aAAa,CAACI,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACC,KAAK,KAAKhD,YAAY,CAACgD,KAAK,CAAC;EAEvE,CAAC,EAAE,CAACtD,KAAK,EAAEM,YAAY,CAAC,CAAC;EAEzB,MAAMiD,aAAa,GAAGpF,OAAO,CAAC,MAAM;IAChC,MAAMqF,SAAS,GAAGxD,KAAK,CAACiD,OAAO,CAAEC,IAAI,IAAKA,IAAI,CAACA,IAAI,CAAC;IAEpD,IAAIO,MAAM,GAAGD,SAAS,CAACE,MAAM,CAAC,CAACJ,KAAK,EAAED,IAAI,KAAK;MAC3C,MAAMM,SAAS,GACXlD,kBAAkB,IACjB,OAAO4C,IAAI,CAACO,OAAO,KAAK,QAAQ,IAAIP,IAAI,CAACO,OAAO,CAACC,IAAI,CAAC,CAAC,KAAK,EAAG;MAEpE,OAAOP,KAAK,IAAIK,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC;IACxC,CAAC,EAAE,CAAC,CAAC;IAEL,IAAI3D,KAAK,CAACmD,MAAM,GAAG,CAAC,EAAE;MAClBM,MAAM,IAAIzD,KAAK,CAACmD,MAAM,GAAG,EAAE;IAC/B;IAEA,IAAIlD,SAAS,GAAGwD,MAAM,EAAE;MACpBA,MAAM,GAAGxD,SAAS;IACtB;IAEA,OAAOwD,MAAM;EACjB,CAAC,EAAE,CAACzD,KAAK,EAAEC,SAAS,EAAEQ,kBAAkB,CAAC,CAAC;EAE1C,MAAMqD,gBAAqD,GAAG/F,WAAW,CACpEgG,KAAK,IAAK;IACP5B,cAAc,CAAC6B,OAAO,GAAG,IAAI;IAC7BpD,YAAY,GAAGmD,KAAK,CAAC;EACzB,CAAC,EACD,CAACnD,YAAY,CACjB,CAAC;EAED,MAAMqD,eAAoD,GAAGlG,WAAW,CACnEgG,KAAK,IAAK;IACP5B,cAAc,CAAC6B,OAAO,GAAG,KAAK;IAC9B7C,WAAW,GAAG4C,KAAK,CAAC;EACxB,CAAC,EACD,CAAC5C,WAAW,CAChB,CAAC;EAED,MAAM+C,UAAU,GAAGnG,WAAW,CAAC,MAAM;IACjC,IAAI,OAAOyC,MAAM,KAAK,UAAU,EAAE;MAC9BA,MAAM,CAAC,CAAC;IACZ;IAEAmB,cAAc,CAAC,IAAI,CAAC;EACxB,CAAC,EAAE,CAACnB,MAAM,CAAC,CAAC;EAEZ,MAAM2D,WAAW,GAAGpG,WAAW,CAAC,MAAM;IAClC,IAAI,OAAOwC,MAAM,KAAK,UAAU,EAAE;MAC9BA,MAAM,CAAC,CAAC;IACZ;IAEAoB,cAAc,CAAC,KAAK,CAAC;EACzB,CAAC,EAAE,CAACpB,MAAM,CAAC,CAAC;;EAEZ;AACR;AACA;EACQ,MAAM6D,qBAAqB,GAAGrG,WAAW,CACpCsG,YAA4B,IAAK;IAC9B,IAAI,OAAOnE,QAAQ,KAAK,UAAU,EAAE;MAChC,MAAMoE,cAAc,GAAGpE,QAAQ,CAACmE,YAAY,CAAC;MAE7C,IAAIC,cAAc,KAAK,KAAK,EAAE;QAC1B;MACJ;MAEA,IAAIA,cAAc,YAAYC,OAAO,EAAE;QACnC,KAAKD,cAAc,CAACE,IAAI,CAAEC,sBAAsB,IAAK;UACjD,IAAIA,sBAAsB,EAAE;UAE5BhD,uBAAuB,CAAC4C,YAAY,CAAC;UACrCF,WAAW,CAAC,CAAC;QACjB,CAAC,CAAC;QAEF;MACJ;IACJ;IAEA1C,uBAAuB,CAAC4C,YAAY,CAAC;IACrCF,WAAW,CAAC,CAAC;EACjB,CAAC,EACD,CAACjE,QAAQ,CACb,CAAC;EAED,MAAMwE,WAAW,GAAG3G,WAAW,CAC1BgG,KAAuC,IAAK;IACzCA,KAAK,CAACY,cAAc,CAAC,CAAC;IACtBZ,KAAK,CAACa,eAAe,CAAC,CAAC;IAEvBR,qBAAqB,CAACtC,SAAS,CAAC;EACpC,CAAC,EACD,CAACsC,qBAAqB,CAC1B,CAAC;EAEDnG,SAAS,CAAC,MAAM;IACZ,MAAM4G,aAAa,GAAIC,CAAgB,IAAK;MACxC,IAAI,CAACpD,WAAW,EAAE;MAElB,IAAIoD,CAAC,CAACC,GAAG,KAAK,SAAS,IAAID,CAAC,CAACC,GAAG,KAAK,WAAW,EAAE;QAC9CD,CAAC,CAACH,cAAc,CAAC,CAAC;QAElB,MAAMK,QAAQ,GAAG3C,UAAU,CAAC2B,OAAO,EAAEgB,QAAQ;QAE7C,IAAI,CAACA,QAAQ,IAAIA,QAAQ,CAAC7B,MAAM,KAAK,CAAC,EAAE;QAExC,MAAM8B,aAAa,GAAGH,CAAC,CAACC,GAAG,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC;QAElD,IAAIG,QAAQ,GAAGjD,YAAY,IAAI,CAAC,CAAC;QAEjC,IAAIkD,QAAQ,GAAG,CAAC;QAEhB,GAAG;UACCD,QAAQ,GAAG,CAACA,QAAQ,GAAGD,aAAa,GAAGD,QAAQ,CAAC7B,MAAM,IAAI6B,QAAQ,CAAC7B,MAAM;UAEzE,MAAMiC,UAAU,GAAGJ,QAAQ,CAACE,QAAQ,CAAmB;UAEvD,IAAIG,UAAU,GAAG,KAAK;UAEtB,IACID,UAAU,CAACE,EAAE,CAACC,UAAU,CAAC,kBAAkB,CAAC,IAC5CH,UAAU,CAACE,EAAE,CAACE,QAAQ,CAAC,iBAAiB,CAAC,EAC3C;YACEH,UAAU,GAAG,IAAI;UACrB;UAEA,IAAI,CAACA,UAAU,EAAE;UAEjBF,QAAQ,EAAE;QACd,CAAC,QAAQA,QAAQ,GAAGH,QAAQ,CAAC7B,MAAM;QAEnC,IAAIlB,YAAY,KAAK,IAAI,EAAE;UACvB,MAAMwD,WAAW,GAAGT,QAAQ,CAAC/C,YAAY,CAAmB;UAE5DwD,WAAW,CAACC,QAAQ,GAAG,CAAC,CAAC;QAC7B;QAEAxD,eAAe,CAACgD,QAAQ,CAAC;QAEzB,MAAMS,cAAc,GAAGX,QAAQ,CAACE,QAAQ,CAAmB;QAE3DS,cAAc,CAACD,QAAQ,GAAG,CAAC;QAE3BC,cAAc,CAACC,KAAK,CAAC,CAAC;MAC1B,CAAC,MAAM,IAAId,CAAC,CAACC,GAAG,KAAK,OAAO,IAAI9C,YAAY,KAAK,IAAI,EAAE;QACnD,MAAM4D,OAAO,GAAGxD,UAAU,CAAC2B,OAAO,EAAEgB,QAAQ,CAAC/C,YAAY,CAAC;QAE1D,IAAI,CAAC4D,OAAO,EAAE;QAEd,MAAM;UAAEP;QAAG,CAAC,GAAGO,OAAO;QAEtB,IAAIC,eAA0C;QAE9C9F,KAAK,CAACoD,IAAI,CAAEF,IAAI,IAAK;UACjB4C,eAAe,GAAG5C,IAAI,CAACA,IAAI,CAAC6C,IAAI,CAC5B,CAAC;YAAEzC;UAAM,CAAC,KAAK0C,MAAM,CAAC1C,KAAK,CAAC,KAAKgC,EAAE,CAACW,OAAO,CAAC,iBAAiB,EAAE,EAAE,CACrE,CAAC;UAED,OAAO,CAAC,CAACH,eAAe;QAC5B,CAAC,CAAC;QAEF,IAAIA,eAAe,EAAE;UACjB1B,qBAAqB,CAAC0B,eAAe,CAAC;QAC1C;MACJ;IACJ,CAAC;IAEDI,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEtB,aAAa,CAAC;IAEnD,OAAO,MAAMqB,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEvB,aAAa,CAAC;EACvE,CAAC,EAAE,CAAC5C,YAAY,EAAEmC,qBAAqB,EAAE1C,WAAW,EAAE1B,KAAK,CAAC,CAAC;;EAE7D;AACR;AACA;EACQ/B,SAAS,CAAC,MAAM;IACZ,MAAMoI,QAAQ,GAAGrG,KAAK,CAACiD,OAAO,CAAEC,IAAI,IAAKA,IAAI,CAACA,IAAI,CAAC;IAEnD,IAAIoD,YAAY,GAAGhI,6BAA6B,CAAC;MAC7C4E,IAAI,EAAE,CACF,GAAGmD,QAAQ,EACX;QAAEE,IAAI,EAAEpG,WAAW;QAAEmD,KAAK,EAAE;MAAc,CAAC,EAC3C,IAAIhD,YAAY,GAAG,CAACA,YAAY,CAAC,GAAG,EAAE,CAAC,CAC1C;MACDkC,SAAS;MACT/B,kBAAkB;MAClBgC;IACJ,CAAC,CAAC;IAEF,IAAInB,6BAA6B,EAAE;MAC/BgF,YAAY,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;;MAE5BtE,eAAe,CAACsE,YAAY,CAAC;MAC7BzE,WAAW,CAACyE,YAAY,CAAC;MAEzB;IACJ;IAEA,MAAME,QAAQ,GAAG,CAAClG,YAAY,EAAE,GAAG+F,QAAQ,CAAC,CAACjD,IAAI,CAAEC,IAAI,IAAKA,IAAI,EAAEoD,QAAQ,CAAC;IAC3E,MAAMC,OAAO,GAAG,CAACpG,YAAY,EAAE,GAAG+F,QAAQ,CAAC,CAACjD,IAAI,CAAEC,IAAI,IAAKA,IAAI,EAAEsD,KAAK,CAAC;IAEvE,MAAMC,WAAW,GACbxE,wBAAwB,CAAC4B,OAAO,EAAE6C,aAAa,EAAEC,qBAAqB,CAAC,CAAC,CAACjE,KAAK,IAAI,CAAC;IAEvF,MAAMkE,YAAY,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACvC,MAAMC,UAAU,GAAGR,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACtC,MAAMS,SAAS,GAAGP,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;;IAEpC,IAAIQ,WAAW,GAAG,CAAC;IAEnB,IAAI9G,MAAM,EAAE;MACR,MAAM+G,eAAe,GAAG7I,6BAA6B,CAAC;QAClD4E,IAAI,EAAE,CAAC;UAAEqD,IAAI,EAAEnG,MAAM;UAAEkD,KAAK,EAAE;QAAS,CAAC,CAAC;QACzCd,SAAS;QACTC;MACJ,CAAC,CAAC;MAEFyE,WAAW,GAAGE,IAAI,CAACC,GAAG,CAACF,eAAe,GAAG,CAAC,EAAE,EAAE,CAAC;IACnD;IAEA,MAAMG,eAAe,GACjBhB,YAAY,GAAGS,YAAY,GAAGC,UAAU,GAAGC,SAAS,GAAGC,WAAW;IAEtE,IAAIK,WAAW,GAAGD,eAAe;IACjC,IAAIE,eAAe,GAAGF,eAAe;;IAErC;IACA,IAAItG,kBAAkB,EAAE;MACpBuG,WAAW,GAAGX,WAAW;MAEzBY,eAAe,GACXZ,WAAW,GAAGU,eAAe,GAAG,EAAE,GAAGA,eAAe,GAAG,EAAE,GAAGV,WAAW;IAC/E;IACA;IAAA,KACK,IAAI1F,yBAAyB,IAAIM,oBAAoB,EAAE;MACxD,MAAMiG,yBAAyB,GAAGnJ,6BAA6B,CAAC;QAC5D4E,IAAI,EAAE,CAAC1B,oBAAoB,CAAC;QAC5BgB,SAAS;QACT/B,kBAAkB;QAClBgC;MACJ,CAAC,CAAC;MAEF,MAAMiF,SAAS,GACXD,yBAAyB,GAAGV,YAAY,GAAGC,UAAU,GAAGC,SAAS,GAAGC,WAAW;MAEnFK,WAAW,GAAGG,SAAS;MAEvBF,eAAe,GACXE,SAAS,GAAGJ,eAAe,GAAG,EAAE,GAAGA,eAAe,GAAG,EAAE,GAAGI,SAAS;IAC3E;IAEA,IAAIH,WAAW,GAAGX,WAAW,EAAE;MAC3BW,WAAW,GAAGX,WAAW;IAC7B;IAEA,IAAIY,eAAe,GAAGZ,WAAW,EAAE;MAC/BY,eAAe,GAAGZ,WAAW;IACjC;IAEA/E,WAAW,CAAC0F,WAAW,CAAC;IACxBvF,eAAe,CAACd,yBAAyB,GAAGqG,WAAW,GAAGC,eAAe,CAAC;EAC9E,CAAC,EAAE,CACChF,SAAS,EACThB,oBAAoB,EACpBxB,KAAK,EACLG,WAAW,EACXC,MAAM,EACNE,YAAY,EACZgB,6BAA6B,EAC7Bb,kBAAkB,EAClBS,yBAAyB,EACzBF,kBAAkB,EAClByB,MAAM,CACT,CAAC;;EAEF;AACR;AACA;EACQxE,SAAS,CAAC,MAAM;IACZ0D,cAAc,CAAC,KAAK,CAAC;IACrBF,uBAAuB,CAACnB,YAAY,CAAC;EACzC,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;EAElB,MAAMqH,mBAAmB,GAAGxJ,OAAO,CAAC,MAAM;IACtC,IAAImC,YAAY,EAAE;MACd,OAAOA,YAAY,CAACmG,QAAQ;IAChC;IAEA,IAAIjF,oBAAoB,EAAE;MACtB,OAAOA,oBAAoB,CAACiF,QAAQ;IACxC;IAEA,OAAO3E,SAAS;EACpB,CAAC,EAAE,CAACN,oBAAoB,EAAElB,YAAY,CAAC,CAAC;EAExC,MAAMsH,eAAe,GAAGzJ,OAAO,CAAC,MAAM;IAClC,IAAImC,YAAY,EAAE;MACd,OAAOA,YAAY,CAACqG,KAAK;IAC7B;IAEA,IAAInF,oBAAoB,EAAE;MACtB,OAAOA,oBAAoB,CAACmF,KAAK;IACrC;IAEA,OAAO7E,SAAS;EACpB,CAAC,EAAE,CAACN,oBAAoB,EAAElB,YAAY,CAAC,CAAC;;EAExC;AACR;AACA;EACQ,MAAMuH,eAAe,GAAG1J,OAAO,CAAC,MAAM;IAClC,IAAIoI,IAAI,GAAGpG,WAAW;IAEtB,IAAIG,YAAY,EAAE;MACdiG,IAAI,GAAGjG,YAAY,CAACiG,IAAI;IAC5B,CAAC,MAAM,IAAI/E,oBAAoB,EAAE;MAC7B+E,IAAI,GAAG/E,oBAAoB,CAAC+E,IAAI;IACpC;IAEA,OAAOA,IAAI;EACf,CAAC,EAAE,CAAC/E,oBAAoB,EAAErB,WAAW,EAAEG,YAAY,CAAC,CAAC;EAErD,MAAMwH,+BAA+B,GAAG3J,OAAO,CAAC,MAAM;IAClD,MAAM4J,gBAAgB,GAAG/H,KAAK,CAAC+F,IAAI,CAAE7C,IAAI,IACrCA,IAAI,CAACA,IAAI,CAACE,IAAI,CACV,CAAC;MAAEE;IAAM,CAAC,KAAKA,KAAK,MAAMhD,YAAY,EAAEgD,KAAK,IAAI9B,oBAAoB,EAAE8B,KAAK,CAChF,CACJ,CAAC;IAED,OAAOyE,gBAAgB,EAAEpH,oBAAoB,IAAIA,oBAAoB;EACzE,CAAC,EAAE,CAACa,oBAAoB,EAAE8B,KAAK,EAAEtD,KAAK,EAAEM,YAAY,EAAEgD,KAAK,EAAE3C,oBAAoB,CAAC,CAAC;;EAEnF;AACR;AACA;EACQ,MAAMqH,iBAAiB,GAAGjK,WAAW,CAAC,MAAM;IACxC,IAAI,CAACgC,UAAU,IAAI,CAACoC,cAAc,CAAC6B,OAAO,EAAE;MACxC,IAAItC,WAAW,EAAE;QACbyC,WAAW,CAAC,CAAC;MACjB,CAAC,MAAM;QACHD,UAAU,CAAC,CAAC;MAChB;IACJ;EACJ,CAAC,EAAE,CAACC,WAAW,EAAED,UAAU,EAAExC,WAAW,EAAE3B,UAAU,CAAC,CAAC;EAEtD7B,mBAAmB,CACfqD,GAAG,EACH,OAAO;IACH0G,IAAI,EAAE9D,WAAW;IACjB+D,IAAI,EAAEhE;EACV,CAAC,CAAC,EACF,CAACC,WAAW,EAAED,UAAU,CAC5B,CAAC;EAED,MAAMiE,cAAc,GAAGhK,OAAO,CAC1B,MACI6B,KAAK,CAACoI,GAAG,CAAElF,IAAI,iBACXtF,KAAA,CAAAyK,aAAA,CAACvK,QAAQ;IAACiH,GAAG,EAAE7B,IAAI,CAACoF,SAAS,IAAI;EAAgB,GAC5CpF,IAAI,CAACoF,SAAS,IAAItI,KAAK,CAACmD,MAAM,GAAG,CAAC,iBAC/BvF,KAAA,CAAAyK,aAAA,CAAC/I,mBAAmB;IAACgG,EAAE,EAAE,mBAAmBpC,IAAI,CAACoF,SAAS;EAAG,GACxDpF,IAAI,CAACoF,SACW,CACxB,EACApF,IAAI,CAACA,IAAI,CAACkF,GAAG,CAAE/E,IAAI,iBAChBzF,KAAA,CAAAyK,aAAA,CAAC3J,YAAY;IACTqG,GAAG,EAAE,QAAQ1B,IAAI,CAACkD,IAAI,EAAG;IACzBlD,IAAI,EAAEA,IAAK;IACXkF,UAAU,EACNjI,YAAY,GAAG+C,IAAI,CAACC,KAAK,KAAKhD,YAAY,CAACgD,KAAK,GAAG,KACtD;IACDpD,QAAQ,EAAEkE,qBAAsB;IAChC3D,kBAAkB,EAAEA,kBAAmB;IACvCE,oBAAoB,EAChBuC,IAAI,CAACvC,oBAAoB,IAAIA;EAChC,CACJ,CACJ,CACK,CACb,CAAC,EACN,CAACyD,qBAAqB,EAAEpE,KAAK,EAAEM,YAAY,EAAEG,kBAAkB,EAAEE,oBAAoB,CACzF,CAAC;EAED,OAAOxC,OAAO,CACV,mBACIP,KAAA,CAAAyK,aAAA,CAAC1J,cAAc;IACX4C,GAAG,EAAEa,wBAAyB;IAC9BoG,SAAS,EAAE5G,QAAS;IACpB6G,mBAAmB,EAAEzH,kBAAmB;IACxC0H,0BAA0B,EAAExH;EAA0B,gBAEtDtD,KAAA,CAAAyK,aAAA,CAACvJ,oBAAoB;IACjB6J,UAAU,EAAE9I,SAAU;IACtB+I,OAAO,EAAEZ,iBAAkB;IAC3Ba,OAAO,EAAEnH,WAAY;IACrBoH,QAAQ,EAAEpG,OAAQ;IAClBqG,KAAK,EAAEjI,IAAK;IACZkI,gCAAgC,EAAE5H,+BAAgC;IAClE6H,WAAW,EAAElJ,UAAW;IACxBmJ,kBAAkB,EAAEpG,iBAAkB;IACtCqG,mBAAmB,EAAE1I;EAAmB,gBAExC7C,KAAA,CAAAyK,aAAA,CAAChJ,yCAAyC,QACrCe,MAAM,iBACHxC,KAAA,CAAAyK,aAAA,CAACjJ,oBAAoB;IAACgK,eAAe,EAAEvI;EAAe,GACjDT,MACiB,CACzB,eACDxC,KAAA,CAAAyK,aAAA,CAACpJ,yBAAyB;IACtBoK,oBAAoB,EAAE,CAAC/I,YAAY,IAAI,CAACkB;EAAqB,GAE5DmG,mBAAmB,iBAChB/J,KAAA,CAAAyK,aAAA,CAACnJ,8BAA8B;IAC3BoK,GAAG,EAAE3B,mBAAoB;IACzBwB,mBAAmB,EAAE1I,kBAAmB;IACxC8I,qBAAqB,EAAEzB;EAAgC,CAC1D,CACJ,EACAF,eAAe,iBAAIhK,KAAA,CAAAyK,aAAA,CAAC5J,IAAI;IAACkI,KAAK,EAAEiB;EAAgB,CAAE,CAAC,EACnD,OAAOvG,UAAU,KAAK,QAAQ,gBAC3BzD,KAAA,CAAAyK,aAAA,CAACrJ,mBAAmB;IAChBwK,QAAQ,EAAEzJ,UAAW;IACrBuD,KAAK,EAAEjC,UAAW;IAClBoI,QAAQ,EAAExI,aAAc;IACxByI,MAAM,EAAEzF,eAAgB;IACxB0F,OAAO,EAAE7F,gBAAiB;IAC1B3D,WAAW,EAAE0H;EAAgB,CAChC,CAAC,gBAEFjK,KAAA,CAAAyK,aAAA,CAAClJ,6BAA6B,QACzB0I,eAC0B,CAClC,EACArG,oBAAoB,IACjBA,oBAAoB,CAACoI,aAAa,IAClCpI,oBAAoB,CAACoI,aACF,CACY,CAAC,EAC3ClJ,mBAAmB,IAAIc,oBAAoB,iBACxC5D,KAAA,CAAAyK,aAAA,CAACxJ,8BAA8B;IAC3BoK,WAAW,EAAElJ,UAAW;IACxB6I,OAAO,EAAElE;EAAY,gBAErB9G,KAAA,CAAAyK,aAAA,CAAC5J,IAAI;IAACkI,KAAK,EAAE,CAAC,aAAa;EAAE,CAAE,CACH,CACnC,EACA,CAAC5D,oBAAoB,iBAClBnF,KAAA,CAAAyK,aAAA,CAACtJ,yBAAyB;IACtBkK,WAAW,EAAElJ,UAAW;IACxBgJ,KAAK,EAAEjI,IAAK;IACZ+I,qBAAqB,EACjBnJ,mBAAmB,KAAK,IAAI,IAC5Bc,oBAAoB,KAAKM;EAC5B,gBAEDlE,KAAA,CAAAyK,aAAA,CAAC5J,IAAI;IAACkI,KAAK,EAAE,CAAC,oBAAoB,CAAE;IAAC5G,UAAU,EAAEA;EAAW,CAAE,CACvC,CAEb,CAAC,EACtBqC,wBAAwB,CAAC4B,OAAO,iBAC7BpG,KAAA,CAAAyK,aAAA,CAAC9I,mBAAmB;IAChBuK,aAAa,EAAE1H,wBAAwB,CAAC4B,OAAQ;IAChDpE,SAAS,EAAEA,SAAU;IACrB2D,aAAa,EAAEA,aAAc;IAC7BwG,OAAO,EAAE5F,WAAY;IACrBtE,SAAS,EAAEA,SAAU;IACrBQ,SAAS,EAAEA,SAAU;IACrB2J,kBAAkB,EAAEtI,WAAY;IAChCuI,YAAY,EAAErK,SAAS,IAAImC,YAAa;IACxC9B,SAAS,EAAEA;EAAU,gBAErBrC,KAAA,CAAAyK,aAAA,CAACzJ,kBAAkB;IACf8J,0BAA0B,EAAExH,yBAA0B;IACtDgJ,UAAU,EAAEjK,SAAU;IACtBuI,SAAS,EAAE5I,SAAS,IAAImC,YAAa;IACrCoI,QAAQ,EAAExH,OAAO,EAAEyH,IAAoB;IACvC7I,GAAG,EAAEc,UAAW;IAChBqD,QAAQ,EAAE;EAAE,GAEXyC,cACe,CACH,CAEb,CACnB,EACD,CACIvG,QAAQ,EACRZ,kBAAkB,EAClBE,yBAAyB,EACzBrB,SAAS,EACTmI,iBAAiB,EACjBtG,WAAW,EACXgB,OAAO,EACP5B,IAAI,EACJM,+BAA+B,EAC/BrB,UAAU,EACV+C,iBAAiB,EACjBrC,kBAAkB,EAClBL,MAAM,EACNS,cAAc,EACdP,YAAY,EACZkB,oBAAoB,EACpBmG,mBAAmB,EACnBG,+BAA+B,EAC/BF,eAAe,EACfvG,UAAU,EACVJ,aAAa,EACbgD,eAAe,EACfH,gBAAgB,EAChB+D,eAAe,EACfnH,mBAAmB,EACnBgE,WAAW,EACX3B,oBAAoB,EACpBnD,SAAS,EACT2D,aAAa,EACbY,WAAW,EACX9D,SAAS,EACT0B,YAAY,EACZ9B,SAAS,EACT0C,OAAO,EAAEyH,IAAI,EACbjC,cAAc,CAEtB,CAAC;AACL,CACJ,CAAC;AAEDxI,QAAQ,CAAC0K,WAAW,GAAG,UAAU;AAEjC,eAAe1K,QAAQ","ignoreList":[]}
@@ -6,7 +6,8 @@ const SharingButton = ({
6
6
  link,
7
7
  alignment,
8
8
  container,
9
- children
9
+ children,
10
+ isDisabled
10
11
  }) => {
11
12
  const contextMenuRef = React.useRef(null);
12
13
  const [isButtonDisabled, setIsButtonDisabled] = React.useState(false);
@@ -28,7 +29,7 @@ const SharingButton = ({
28
29
  onHide: handleOnHide
29
30
  }, /*#__PURE__*/React.createElement(Button, {
30
31
  onClick: handleButtonClick,
31
- isDisabled: isButtonDisabled
32
+ isDisabled: isButtonDisabled || isDisabled
32
33
  }, children)));
33
34
  };
34
35
  export default SharingButton;
@@ -1 +1 @@
1
- {"version":3,"file":"SharingButton.js","names":["React","SharingContextMenu","StyledSharingButtonContainer","Button","SharingButton","link","alignment","container","children","contextMenuRef","useRef","isButtonDisabled","setIsButtonDisabled","useState","handleButtonClick","current","show","handleOnShow","handleOnHide","createElement","ref","onShow","onHide","onClick","isDisabled"],"sources":["../../../../src/components/sharing-button/SharingButton.tsx"],"sourcesContent":["import React, { FunctionComponent, PropsWithChildren } from 'react';\nimport { ContextMenuRef } from '../context-menu/ContextMenu.types';\nimport SharingContextMenu, {\n SharingContextMenuProps,\n} from '../sharing-context-menu/SharingContextMenu';\nimport { StyledSharingButtonContainer } from './SharingButton.styles';\nimport Button from '../button/Button';\n\nexport type SharingButtonProps = PropsWithChildren<\n Pick<SharingContextMenuProps, 'link' | 'alignment' | 'container'>\n>;\n\nconst SharingButton: FunctionComponent<SharingButtonProps> = ({\n link,\n alignment,\n container,\n children,\n}) => {\n const contextMenuRef = React.useRef<ContextMenuRef>(null);\n const [isButtonDisabled, setIsButtonDisabled] = React.useState(false);\n\n const handleButtonClick = () => {\n contextMenuRef.current?.show();\n };\n\n const handleOnShow = () => {\n setIsButtonDisabled(true);\n };\n\n const handleOnHide = () => {\n setIsButtonDisabled(false);\n };\n\n return (\n <StyledSharingButtonContainer>\n <SharingContextMenu\n link={link}\n alignment={alignment}\n container={container}\n ref={contextMenuRef}\n onShow={handleOnShow}\n onHide={handleOnHide}\n >\n <Button onClick={handleButtonClick} isDisabled={isButtonDisabled}>\n {children}\n </Button>\n </SharingContextMenu>\n </StyledSharingButtonContainer>\n );\n};\n\nexport default SharingButton;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAgD,OAAO;AAEnE,OAAOC,kBAAkB,MAElB,4CAA4C;AACnD,SAASC,4BAA4B,QAAQ,wBAAwB;AACrE,OAAOC,MAAM,MAAM,kBAAkB;AAMrC,MAAMC,aAAoD,GAAGA,CAAC;EAC1DC,IAAI;EACJC,SAAS;EACTC,SAAS;EACTC;AACJ,CAAC,KAAK;EACF,MAAMC,cAAc,GAAGT,KAAK,CAACU,MAAM,CAAiB,IAAI,CAAC;EACzD,MAAM,CAACC,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGZ,KAAK,CAACa,QAAQ,CAAC,KAAK,CAAC;EAErE,MAAMC,iBAAiB,GAAGA,CAAA,KAAM;IAC5BL,cAAc,CAACM,OAAO,EAAEC,IAAI,CAAC,CAAC;EAClC,CAAC;EAED,MAAMC,YAAY,GAAGA,CAAA,KAAM;IACvBL,mBAAmB,CAAC,IAAI,CAAC;EAC7B,CAAC;EAED,MAAMM,YAAY,GAAGA,CAAA,KAAM;IACvBN,mBAAmB,CAAC,KAAK,CAAC;EAC9B,CAAC;EAED,oBACIZ,KAAA,CAAAmB,aAAA,CAACjB,4BAA4B,qBACzBF,KAAA,CAAAmB,aAAA,CAAClB,kBAAkB;IACfI,IAAI,EAAEA,IAAK;IACXC,SAAS,EAAEA,SAAU;IACrBC,SAAS,EAAEA,SAAU;IACrBa,GAAG,EAAEX,cAAe;IACpBY,MAAM,EAAEJ,YAAa;IACrBK,MAAM,EAAEJ;EAAa,gBAErBlB,KAAA,CAAAmB,aAAA,CAAChB,MAAM;IAACoB,OAAO,EAAET,iBAAkB;IAACU,UAAU,EAAEb;EAAiB,GAC5DH,QACG,CACQ,CACM,CAAC;AAEvC,CAAC;AAED,eAAeJ,aAAa","ignoreList":[]}
1
+ {"version":3,"file":"SharingButton.js","names":["React","SharingContextMenu","StyledSharingButtonContainer","Button","SharingButton","link","alignment","container","children","isDisabled","contextMenuRef","useRef","isButtonDisabled","setIsButtonDisabled","useState","handleButtonClick","current","show","handleOnShow","handleOnHide","createElement","ref","onShow","onHide","onClick"],"sources":["../../../../src/components/sharing-button/SharingButton.tsx"],"sourcesContent":["import React, { FunctionComponent, PropsWithChildren } from 'react';\nimport { ContextMenuRef } from '../context-menu/ContextMenu.types';\nimport SharingContextMenu, {\n SharingContextMenuProps,\n} from '../sharing-context-menu/SharingContextMenu';\nimport { StyledSharingButtonContainer } from './SharingButton.styles';\nimport Button from '../button/Button';\nimport { ButtonProps } from '../button/Button.types';\n\nexport type SharingButtonProps = PropsWithChildren<\n Pick<SharingContextMenuProps, 'link' | 'alignment' | 'container'> &\n Pick<ButtonProps, 'isDisabled'>\n>;\n\nconst SharingButton: FunctionComponent<SharingButtonProps> = ({\n link,\n alignment,\n container,\n children,\n isDisabled,\n}) => {\n const contextMenuRef = React.useRef<ContextMenuRef>(null);\n const [isButtonDisabled, setIsButtonDisabled] = React.useState(false);\n\n const handleButtonClick = () => {\n contextMenuRef.current?.show();\n };\n\n const handleOnShow = () => {\n setIsButtonDisabled(true);\n };\n\n const handleOnHide = () => {\n setIsButtonDisabled(false);\n };\n\n return (\n <StyledSharingButtonContainer>\n <SharingContextMenu\n link={link}\n alignment={alignment}\n container={container}\n ref={contextMenuRef}\n onShow={handleOnShow}\n onHide={handleOnHide}\n >\n <Button onClick={handleButtonClick} isDisabled={isButtonDisabled || isDisabled}>\n {children}\n </Button>\n </SharingContextMenu>\n </StyledSharingButtonContainer>\n );\n};\n\nexport default SharingButton;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAgD,OAAO;AAEnE,OAAOC,kBAAkB,MAElB,4CAA4C;AACnD,SAASC,4BAA4B,QAAQ,wBAAwB;AACrE,OAAOC,MAAM,MAAM,kBAAkB;AAQrC,MAAMC,aAAoD,GAAGA,CAAC;EAC1DC,IAAI;EACJC,SAAS;EACTC,SAAS;EACTC,QAAQ;EACRC;AACJ,CAAC,KAAK;EACF,MAAMC,cAAc,GAAGV,KAAK,CAACW,MAAM,CAAiB,IAAI,CAAC;EACzD,MAAM,CAACC,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGb,KAAK,CAACc,QAAQ,CAAC,KAAK,CAAC;EAErE,MAAMC,iBAAiB,GAAGA,CAAA,KAAM;IAC5BL,cAAc,CAACM,OAAO,EAAEC,IAAI,CAAC,CAAC;EAClC,CAAC;EAED,MAAMC,YAAY,GAAGA,CAAA,KAAM;IACvBL,mBAAmB,CAAC,IAAI,CAAC;EAC7B,CAAC;EAED,MAAMM,YAAY,GAAGA,CAAA,KAAM;IACvBN,mBAAmB,CAAC,KAAK,CAAC;EAC9B,CAAC;EAED,oBACIb,KAAA,CAAAoB,aAAA,CAAClB,4BAA4B,qBACzBF,KAAA,CAAAoB,aAAA,CAACnB,kBAAkB;IACfI,IAAI,EAAEA,IAAK;IACXC,SAAS,EAAEA,SAAU;IACrBC,SAAS,EAAEA,SAAU;IACrBc,GAAG,EAAEX,cAAe;IACpBY,MAAM,EAAEJ,YAAa;IACrBK,MAAM,EAAEJ;EAAa,gBAErBnB,KAAA,CAAAoB,aAAA,CAACjB,MAAM;IAACqB,OAAO,EAAET,iBAAkB;IAACN,UAAU,EAAEG,gBAAgB,IAAIH;EAAW,GAC1ED,QACG,CACQ,CACM,CAAC;AAEvC,CAAC;AAED,eAAeJ,aAAa","ignoreList":[]}
@@ -76,6 +76,14 @@ export type ComboBoxProps = {
76
76
  * Function that should be executed when an item is selected. If the function returns false, the item will not be selected.
77
77
  */
78
78
  onSelect?: (comboboxItem?: IComboBoxItem) => Promise<boolean> | boolean | void;
79
+ /**
80
+ * Function to be executed when the content of the `ComboBox` is shown.
81
+ */
82
+ onShow?: () => void;
83
+ /**
84
+ * Function to be executed when the content of the `ComboBox` is hidden.
85
+ */
86
+ onHide?: () => void;
79
87
  /**
80
88
  * A text that should be displayed when no item is selected.
81
89
  */
@@ -1,5 +1,6 @@
1
1
  import { FunctionComponent, PropsWithChildren } from 'react';
2
2
  import { SharingContextMenuProps } from '../sharing-context-menu/SharingContextMenu';
3
- export type SharingButtonProps = PropsWithChildren<Pick<SharingContextMenuProps, 'link' | 'alignment' | 'container'>>;
3
+ import { ButtonProps } from '../button/Button.types';
4
+ export type SharingButtonProps = PropsWithChildren<Pick<SharingContextMenuProps, 'link' | 'alignment' | 'container'> & Pick<ButtonProps, 'isDisabled'>>;
4
5
  declare const SharingButton: FunctionComponent<SharingButtonProps>;
5
6
  export default SharingButton;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chayns-components/core",
3
- "version": "5.0.16",
3
+ "version": "5.0.18",
4
4
  "description": "A set of beautiful React components for developing your own applications with chayns.",
5
5
  "sideEffects": false,
6
6
  "browserslist": [
@@ -86,5 +86,5 @@
86
86
  "publishConfig": {
87
87
  "access": "public"
88
88
  },
89
- "gitHead": "15a2ac91eb5ee5dbd203d70cb396c2a9fcf905ae"
89
+ "gitHead": "3380d7cf30a12be15e33960526b0ef75caad5c1b"
90
90
  }