@chayns-components/core 5.5.64 → 5.5.66
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.
- package/AGENTS.md +32 -0
- package/lib/cjs/components/combobox/ComboBox.js +1 -1
- package/lib/cjs/components/combobox/ComboBox.js.map +1 -1
- package/lib/cjs/components/context-menu/ContextMenu.js +13 -5
- package/lib/cjs/components/context-menu/ContextMenu.js.map +1 -1
- package/lib/cjs/components/context-menu/ContextMenu.test.js +234 -0
- package/lib/cjs/components/context-menu/ContextMenu.test.js.map +1 -0
- package/lib/cjs/components/context-menu/ContextMenu.types.js.map +1 -1
- package/lib/cjs/components/context-menu/ContextMenu.utils.js +4 -1
- package/lib/cjs/components/context-menu/ContextMenu.utils.js.map +1 -1
- package/lib/cjs/components/context-menu/context-menu-content/ContextMenuContent.js +11 -33
- package/lib/cjs/components/context-menu/context-menu-content/ContextMenuContent.js.map +1 -1
- package/lib/cjs/components/context-menu/context-menu-content/ContextMenuContent.styles.js +11 -3
- package/lib/cjs/components/context-menu/context-menu-content/ContextMenuContent.styles.js.map +1 -1
- package/lib/cjs/components/context-menu/context-menu-content/context-menu-content-item/ContextMenuContentItem.js +74 -0
- package/lib/cjs/components/context-menu/context-menu-content/context-menu-content-item/ContextMenuContentItem.js.map +1 -0
- package/lib/esm/components/combobox/ComboBox.js +1 -1
- package/lib/esm/components/combobox/ComboBox.js.map +1 -1
- package/lib/esm/components/context-menu/ContextMenu.js +13 -4
- package/lib/esm/components/context-menu/ContextMenu.js.map +1 -1
- package/lib/esm/components/context-menu/ContextMenu.test.js +223 -0
- package/lib/esm/components/context-menu/ContextMenu.test.js.map +1 -0
- package/lib/esm/components/context-menu/ContextMenu.types.js.map +1 -1
- package/lib/esm/components/context-menu/ContextMenu.utils.js +4 -1
- package/lib/esm/components/context-menu/ContextMenu.utils.js.map +1 -1
- package/lib/esm/components/context-menu/context-menu-content/ContextMenuContent.js +13 -35
- package/lib/esm/components/context-menu/context-menu-content/ContextMenuContent.js.map +1 -1
- package/lib/esm/components/context-menu/context-menu-content/ContextMenuContent.styles.js +11 -3
- package/lib/esm/components/context-menu/context-menu-content/ContextMenuContent.styles.js.map +1 -1
- package/lib/esm/components/context-menu/context-menu-content/context-menu-content-item/ContextMenuContentItem.js +66 -0
- package/lib/esm/components/context-menu/context-menu-content/context-menu-content-item/ContextMenuContentItem.js.map +1 -0
- package/lib/types/components/context-menu/ContextMenu.types.d.ts +9 -0
- package/lib/types/components/context-menu/context-menu-content/ContextMenuContent.styles.d.ts +4 -2
- package/lib/types/components/context-menu/context-menu-content/context-menu-content-item/ContextMenuContentItem.d.ts +11 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextMenuContentItem.js","names":["_react","_interopRequireWildcard","require","_Icon","_interopRequireDefault","_Tooltip","_ContextMenuContent","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ContextMenuContentItem","item","index","isFocused","shouldHidePopupArrow","onItemFocus","disabledReasonId","useId","tooltipContainer","setTooltipContainer","useState","icons","text","onClick","isDisabled","disabledReason","shouldShowSpacer","iconElement","isValidElement","Array","isArray","length","createElement","StyledContextMenuContentItemIconWrapper","content","StyledContextMenuContentItemWrapper","event","preventDefault","stopPropagation","tabIndex","role","undefined","$shouldHidePopupArrow","$isFocused","$isDisabled","onFocus","StyledContextMenuContentItemText","StyledContextMenuContentItem","ref","className","container","shouldUseFullWidth","id","hidden","StyledContextMenuContentItemSpacer","_default","exports"],"sources":["../../../../../../src/components/context-menu/context-menu-content/context-menu-content-item/ContextMenuContentItem.tsx"],"sourcesContent":["import React, { isValidElement, useId, useState } from 'react';\nimport Icon from '../../../icon/Icon';\nimport Tooltip from '../../../tooltip/Tooltip';\nimport type { ContextMenuItem } from '../../ContextMenu.types';\nimport {\n StyledContextMenuContentItem,\n StyledContextMenuContentItemIconWrapper,\n StyledContextMenuContentItemSpacer,\n StyledContextMenuContentItemText,\n StyledContextMenuContentItemWrapper,\n} from '../ContextMenuContent.styles';\n\ntype ContextMenuContentItemProps = {\n item: ContextMenuItem;\n index: number;\n isFocused: boolean;\n shouldHidePopupArrow: boolean;\n onItemFocus: (index: number) => void;\n};\n\nconst ContextMenuContentItem = ({\n item,\n index,\n isFocused,\n shouldHidePopupArrow,\n onItemFocus,\n}: ContextMenuContentItemProps) => {\n const disabledReasonId = useId();\n\n const [tooltipContainer, setTooltipContainer] = useState<HTMLDivElement | null>(null);\n\n const { icons, text, onClick, isDisabled = false, disabledReason, shouldShowSpacer } = item;\n\n let iconElement = null;\n\n if (isValidElement(icons)) {\n iconElement = icons;\n } else if (Array.isArray(icons) && icons.length > 0) {\n iconElement = (\n <StyledContextMenuContentItemIconWrapper>\n <Icon icons={icons} />\n </StyledContextMenuContentItemIconWrapper>\n );\n }\n\n const content = (\n <StyledContextMenuContentItemWrapper\n onClick={(event) => {\n if (isDisabled) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n void onClick(event);\n }}\n tabIndex={0}\n role=\"menuitem\"\n aria-disabled={isDisabled}\n aria-describedby={isDisabled && disabledReason ? disabledReasonId : undefined}\n $shouldHidePopupArrow={shouldHidePopupArrow}\n $isFocused={isFocused}\n $isDisabled={isDisabled}\n onFocus={() => onItemFocus(index)}\n >\n {iconElement}\n <StyledContextMenuContentItemText>{text}</StyledContextMenuContentItemText>\n </StyledContextMenuContentItemWrapper>\n );\n\n return (\n <StyledContextMenuContentItem\n ref={setTooltipContainer}\n className=\"context-menu-content-item\"\n data-index={index}\n aria-disabled={isDisabled}\n onClick={isDisabled ? (event) => event.stopPropagation() : undefined}\n >\n {isDisabled && disabledReason ? (\n <Tooltip\n item={{ text: disabledReason }}\n container={tooltipContainer ?? undefined}\n shouldUseFullWidth\n >\n {content}\n </Tooltip>\n ) : (\n content\n )}\n {isDisabled && disabledReason && (\n <span id={disabledReasonId} hidden>\n {disabledReason}\n </span>\n )}\n {shouldShowSpacer && <StyledContextMenuContentItemSpacer />}\n </StyledContextMenuContentItem>\n );\n};\n\nexport default ContextMenuContentItem;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -328,7 +328,7 @@ const ComboBox = /*#__PURE__*/forwardRef(({
|
|
|
328
328
|
}, list.groupName && lists.length > 1 && /*#__PURE__*/React.createElement(StyledComboBoxTopic, {
|
|
329
329
|
id: `combobox-group--${list.groupName}`
|
|
330
330
|
}, list.groupName), list.list.map(item => /*#__PURE__*/React.createElement(ComboBoxItem, {
|
|
331
|
-
key: `item-${item.text}`,
|
|
331
|
+
key: `item-${item.value}-${item.text}`,
|
|
332
332
|
item: item,
|
|
333
333
|
isSelected: selectedItem ? item.value === selectedItem.value : false,
|
|
334
334
|
onSelect: handleSetSelectedItem,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboBox.js","names":["useFunctions","useValues","React","forwardRef","Fragment","useCallback","useContext","useEffect","useImperativeHandle","useMemo","useRef","useState","useIsTouch","AreaContext","Icon","ComboBoxItem","StyledComboBox","StyledComboBoxBody","StyledComboBoxClearIconWrapper","StyledComboBoxHeader","StyledComboBoxIconWrapper","StyledComboBoxInput","StyledComboBoxPlaceholder","StyledComboBoxPlaceholderImage","StyledComboBoxPlaceholderText","StyledComboBoxPrefix","StyledComboBoxPrefixAndPlaceholderWrapper","StyledComboBoxTopic","DropdownBodyWrapper","DropdownDirection","useElementSize","ComboBoxSize","getComboBoxWidthResult","useFocusRingPortal","useKeyboardFocusHighlighting","ComboBox","bodyWidth","direction","RIGHT","isDisabled","lists","maxHeight","onSelect","placeholder","prefix","container","shouldCaptureEvents","selectedItem","onHide","onShow","shouldShowBigImage","shouldShowClearIcon","shouldShowRoundImage","onInputFocus","prefixMinWidth","size","NORMAL","shouldUseFullWidth","onInputChange","shouldUseCurrentItemWidth","onInputBlur","shouldShowTransparentBackground","inputValue","shouldDropDownUseMaxItemWidth","shouldEnableKeyboardHighlighting","ref","internalSelectedItem","setInternalSelectedItem","isAnimating","setIsAnimating","minWidth","setMinWidth","undefined","bodyMinWidth","setBodyMinWidth","focusedIndex","setFocusedIndex","availableMaxHeight","setAvailableMaxHeight","isInputFocused","styledComboBoxElementRef","comboBoxHeaderRef","comboBoxInputRef","contentRef","parentSize","shouldUseParentElement","functions","values","isTouch","areaProvider","calculatedMinWidth","calculatedBodyMinWidth","parentWidth","width","shouldChangeColor","shouldShowKeyboardHighlighting","isEnabled","shouldDisableActions","combinedLists","flatMap","list","length","some","item","value","effectiveMaxHeight","Math","min","contentHeight","flatItems","height","reduce","isBigItem","subtext","trim","handleInputFocus","event","current","handleInputBlur","handleOpen","handleClose","handleContainerBlur","nextFocusedElement","relatedTarget","currentContainer","currentTarget","contains","restoreTriggerFocus","requestAnimationFrame","focus","handleSetSelectedItem","itemToSelect","onSelectResult","Promise","then","shouldPreventSelection","handleClear","preventDefault","stopPropagation","handleKeyDown","e","key","children","stepDirection","newIndex","attempts","newElement","shouldSkip","id","startsWith","endsWith","prevElement","tabIndex","focusedElement","element","newSelectedItem","find","String","replace","document","addEventListener","removeEventListener","placeholderImageUrl","imageUrl","placeholderIcon","icons","placeholderText","text","shouldShowRoundPlaceholderImage","selectedItemList","handleHeaderClick","handleHeaderKeyDown","hide","show","comboBoxGroups","map","createElement","groupName","isSelected","$minWidth","$shouldUseFullWidth","onBlur","$direction","onClick","$isOpen","$isTouch","$size","$shouldShowTransparentBackground","$isDisabled","$shouldChangeColor","$shouldShowBigImage","onKeyDown","role","$prefixMinWidth","$shouldReduceOpacity","src","$shouldShowRoundImage","disabled","onChange","onFocus","suffixElement","MINI","$shouldShowBorderLeft","anchorElement","onAvailableMaxHeightChange","onClose","shouldShowDropdown","minBodyWidth","$maxHeight","className","displayName"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { useFunctions, useValues } from 'chayns-api';\nimport React, {\n FocusEventHandler,\n KeyboardEventHandler,\n forwardRef,\n Fragment,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\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';\nimport { ComboBoxProps, ComboBoxRef, ComboBoxSize, IComboBoxItem } from './ComboBox.types';\nimport { getComboBoxWidthResult } from './ComboBox.utils';\nimport { useFocusRingPortal } from '../../hooks/useFocusRingPortal';\nimport { useKeyboardFocusHighlighting } from '../../hooks/useKeyboardFocusHighlighting';\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 shouldCaptureEvents,\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 shouldEnableKeyboardHighlighting,\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 const [availableMaxHeight, setAvailableMaxHeight] = useState<number | undefined>(undefined);\n\n const isInputFocused = useRef(false);\n const styledComboBoxElementRef = useRef<HTMLDivElement>(null);\n const comboBoxHeaderRef = useRef<HTMLDivElement>(null);\n const comboBoxInputRef = useRef<HTMLInputElement>(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 const isTouch = useIsTouch();\n const areaProvider = useContext(AreaContext);\n\n useEffect(() => {\n if (!parentSize) {\n return;\n }\n\n const { minWidth: calculatedMinWidth, bodyMinWidth: calculatedBodyMinWidth } =\n getComboBoxWidthResult({\n functions,\n internalSelectedItem,\n lists,\n parentWidth: parentSize.width,\n placeholder,\n prefix,\n prefixMinWidth,\n selectedItem,\n shouldDropDownUseMaxItemWidth,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldUseCurrentItemWidth,\n shouldUseFullWidth,\n values,\n });\n\n setMinWidth(calculatedMinWidth);\n setBodyMinWidth(calculatedBodyMinWidth);\n }, [\n functions,\n internalSelectedItem,\n lists,\n parentSize,\n placeholder,\n prefix,\n prefixMinWidth,\n selectedItem,\n shouldDropDownUseMaxItemWidth,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldUseCurrentItemWidth,\n shouldUseFullWidth,\n values,\n ]);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n const shouldShowKeyboardHighlighting = useKeyboardFocusHighlighting(\n shouldEnableKeyboardHighlighting && !isDisabled,\n );\n useFocusRingPortal(comboBoxHeaderRef, {\n isEnabled: shouldShowKeyboardHighlighting && typeof inputValue !== 'string',\n });\n useFocusRingPortal(comboBoxInputRef, {\n isEnabled: shouldShowKeyboardHighlighting && typeof inputValue === 'string',\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 // Limits the configured maxHeight by the height that is actually available inside the\n // container (reported by the DropdownBodyWrapper). This prevents the dropdown from being cut\n // off when it is opened to the top or bottom and there is not enough space.\n const effectiveMaxHeight = useMemo(() => {\n if (typeof availableMaxHeight === 'number' && availableMaxHeight > 0) {\n return Math.min(maxHeight, availableMaxHeight);\n }\n\n return maxHeight;\n }, [availableMaxHeight, maxHeight]);\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 (effectiveMaxHeight < height) {\n height = effectiveMaxHeight;\n }\n\n return height;\n }, [effectiveMaxHeight, lists, 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 const handleContainerBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n const nextFocusedElement = event.relatedTarget as Node | null;\n const currentContainer = event.currentTarget as HTMLElement;\n\n if (\n !nextFocusedElement ||\n (!currentContainer.contains(nextFocusedElement) &&\n !contentRef.current?.contains(nextFocusedElement))\n ) {\n handleClose();\n }\n },\n [handleClose],\n );\n\n const restoreTriggerFocus = useCallback(() => {\n // Delay is needed so focus happens after dropdown close/render cycle.\n requestAnimationFrame(() => {\n if (typeof inputValue === 'string') {\n comboBoxInputRef.current?.focus();\n return;\n }\n\n comboBoxHeaderRef.current?.focus();\n });\n }, [inputValue]);\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 restoreTriggerFocus();\n });\n\n return;\n }\n }\n\n setInternalSelectedItem(itemToSelect);\n handleClose();\n restoreTriggerFocus();\n },\n [handleClose, onSelect, restoreTriggerFocus],\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 === 'Escape') {\n e.preventDefault();\n handleClose();\n restoreTriggerFocus();\n return;\n }\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 focusedElement.focus();\n } else if ((e.key === 'Enter' || e.key === ' ') && focusedIndex !== null) {\n e.preventDefault();\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 }, [\n focusedIndex,\n handleClose,\n handleSetSelectedItem,\n isAnimating,\n lists,\n restoreTriggerFocus,\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 const handleHeaderKeyDown: KeyboardEventHandler<HTMLDivElement> = useCallback(\n (event) => {\n if (isDisabled || typeof inputValue === 'string') {\n return;\n }\n\n if (event.key === 'Escape' && isAnimating) {\n event.preventDefault();\n handleClose();\n restoreTriggerFocus();\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleHeaderClick();\n }\n },\n [\n handleClose,\n handleHeaderClick,\n inputValue,\n isAnimating,\n isDisabled,\n restoreTriggerFocus,\n ],\n );\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 onBlur={handleContainerBlur}\n >\n <StyledComboBoxHeader\n ref={comboBoxHeaderRef}\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 onKeyDown={handleHeaderKeyDown}\n tabIndex={!isDisabled && typeof inputValue !== 'string' ? 0 : undefined}\n role={!isDisabled && typeof inputValue !== 'string' ? 'button' : undefined}\n aria-expanded={\n !isDisabled && typeof inputValue !== 'string' ? isAnimating : undefined\n }\n >\n <StyledComboBoxPrefixAndPlaceholderWrapper $size={size}>\n {prefix && (\n <StyledComboBoxPrefix $prefixMinWidth={prefixMinWidth} $size={size}>\n {prefix}\n </StyledComboBoxPrefix>\n )}\n <StyledComboBoxPlaceholder\n $shouldReduceOpacity={!selectedItem && !internalSelectedItem}\n $size={size}\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 ref={comboBoxInputRef}\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 $size={size}\n onClick={handleClear}\n >\n <Icon\n icons={['fa fa-times']}\n size={size === ComboBoxSize.MINI ? 13 : 15}\n />\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\n icons={['fa fa-chevron-down']}\n isDisabled={isDisabled}\n size={size === ComboBoxSize.MINI ? 13 : 15}\n />\n </StyledComboBoxIconWrapper>\n )}\n </StyledComboBoxHeader>\n {styledComboBoxElementRef.current && (\n <DropdownBodyWrapper\n anchorElement={styledComboBoxElementRef.current}\n bodyWidth={bodyWidth}\n contentHeight={contentHeight}\n shouldCaptureEvents={shouldCaptureEvents}\n onAvailableMaxHeightChange={setAvailableMaxHeight}\n onClose={handleClose}\n direction={direction}\n container={container}\n shouldShowDropdown={isAnimating}\n minBodyWidth={bodyWidth ?? bodyMinWidth}\n >\n <StyledComboBoxBody\n $maxHeight={effectiveMaxHeight}\n $minWidth={bodyWidth ?? bodyMinWidth}\n className=\"chayns-scrollbar\"\n ref={contentRef}\n tabIndex={0}\n >\n {comboBoxGroups}\n </StyledComboBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledComboBox>\n ),\n [\n bodyMinWidth,\n bodyWidth,\n comboBoxGroups,\n container,\n contentHeight,\n direction,\n handleClear,\n handleClose,\n handleHeaderClick,\n handleHeaderKeyDown,\n handleInputBlur,\n handleInputFocus,\n inputValue,\n internalSelectedItem,\n isAnimating,\n isDisabled,\n isTouch,\n effectiveMaxHeight,\n minWidth,\n onInputChange,\n placeholderIcon,\n placeholderImageUrl,\n placeholderText,\n prefix,\n prefixMinWidth,\n selectedItem,\n shouldChangeColor,\n shouldDisableActions,\n shouldCaptureEvents,\n shouldShowKeyboardHighlighting,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldShowRoundPlaceholderImage,\n shouldShowTransparentBackground,\n shouldUseFullWidth,\n size,\n ],\n );\n },\n);\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"AAAA,SAASA,YAAY,EAAEC,SAAS,QAAQ,YAAY;AACpD,OAAOC,KAAK,IAGRC,UAAU,EACVC,QAAQ,EACRC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,mBAAmB,EACnBC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACL,OAAO;AACd,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;AACpD,SAAqCC,YAAY,QAAuB,kBAAkB;AAC1F,SAASC,sBAAsB,QAAQ,kBAAkB;AACzD,SAASC,kBAAkB,QAAQ,gCAAgC;AACnE,SAASC,4BAA4B,QAAQ,0CAA0C;AAEvF,MAAMC,QAAQ,gBAAGhC,UAAU,CACvB,CACI;EACIiC,SAAS;EACTC,SAAS,GAAGR,iBAAiB,CAACS,KAAK;EACnCC,UAAU,GAAG,KAAK;EAClBC,KAAK;EACLC,SAAS,GAAG,GAAG;EACfC,QAAQ;EACRC,WAAW;EACXC,MAAM;EACNC,SAAS;EACTC,mBAAmB;EACnBC,YAAY;EACZC,MAAM;EACNC,MAAM;EACNC,kBAAkB;EAClBC,mBAAmB;EACnBC,oBAAoB;EACpBC,YAAY;EACZC,cAAc;EACdC,IAAI,GAAGxB,YAAY,CAACyB,MAAM;EAC1BC,kBAAkB,GAAG,KAAK;EAC1BC,aAAa;EACbC,yBAAyB,GAAG,KAAK;EACjCC,WAAW;EACXC,+BAA+B,GAAG,KAAK;EACvCC,UAAU;EACVC,6BAA6B,GAAG,KAAK;EACrCC;AACJ,CAAC,EACDC,GAAG,KACF;EACD,MAAM,CAACC,oBAAoB,EAAEC,uBAAuB,CAAC,GAAGxD,QAAQ,CAAgB,CAAC;EACjF,MAAM,CAACyD,WAAW,EAAEC,cAAc,CAAC,GAAG1D,QAAQ,CAAC,KAAK,CAAC;EACrD,MAAM,CAAC2D,QAAQ,EAAEC,WAAW,CAAC,GAAG5D,QAAQ,CAAqB6D,SAAS,CAAC;EACvE,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAG/D,QAAQ,CAAC,CAAC,CAAC;EACnD,MAAM,CAACgE,YAAY,EAAEC,eAAe,CAAC,GAAGjE,QAAQ,CAAgB,IAAI,CAAC;EACrE,MAAM,CAACkE,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGnE,QAAQ,CAAqB6D,SAAS,CAAC;EAE3F,MAAMO,cAAc,GAAGrE,MAAM,CAAC,KAAK,CAAC;EACpC,MAAMsE,wBAAwB,GAAGtE,MAAM,CAAiB,IAAI,CAAC;EAC7D,MAAMuE,iBAAiB,GAAGvE,MAAM,CAAiB,IAAI,CAAC;EACtD,MAAMwE,gBAAgB,GAAGxE,MAAM,CAAmB,IAAI,CAAC;EACvD,MAAMyE,UAAU,GAAGzE,MAAM,CAAwB,IAAI,CAAC;EAEtD,MAAM0E,UAAU,GAAGtD,cAAc,CAACkD,wBAAwB,EAAE;IACxDK,sBAAsB,EAAE;EAC5B,CAAC,CAAC;EAEF,MAAMC,SAAS,GAAGtF,YAAY,CAAC,CAAC;EAChC,MAAMuF,MAAM,GAAGtF,SAAS,CAAC,CAAC;EAC1B,MAAMuF,OAAO,GAAG5E,UAAU,CAAC,CAAC;EAC5B,MAAM6E,YAAY,GAAGnF,UAAU,CAACO,WAAW,CAAC;EAE5CN,SAAS,CAAC,MAAM;IACZ,IAAI,CAAC6E,UAAU,EAAE;MACb;IACJ;IAEA,MAAM;MAAEd,QAAQ,EAAEoB,kBAAkB;MAAEjB,YAAY,EAAEkB;IAAuB,CAAC,GACxE3D,sBAAsB,CAAC;MACnBsD,SAAS;MACTpB,oBAAoB;MACpB1B,KAAK;MACLoD,WAAW,EAAER,UAAU,CAACS,KAAK;MAC7BlD,WAAW;MACXC,MAAM;MACNU,cAAc;MACdP,YAAY;MACZgB,6BAA6B;MAC7Bb,kBAAkB;MAClBC,mBAAmB;MACnBQ,yBAAyB;MACzBF,kBAAkB;MAClB8B;IACJ,CAAC,CAAC;IAENhB,WAAW,CAACmB,kBAAkB,CAAC;IAC/BhB,eAAe,CAACiB,sBAAsB,CAAC;EAC3C,CAAC,EAAE,CACCL,SAAS,EACTpB,oBAAoB,EACpB1B,KAAK,EACL4C,UAAU,EACVzC,WAAW,EACXC,MAAM,EACNU,cAAc,EACdP,YAAY,EACZgB,6BAA6B,EAC7Bb,kBAAkB,EAClBC,mBAAmB,EACnBQ,yBAAyB,EACzBF,kBAAkB,EAClB8B,MAAM,CACT,CAAC;EAEF,MAAMO,iBAAiB,GAAGrF,OAAO,CAC7B,MAAMgF,YAAY,CAACK,iBAAiB,IAAI,KAAK,EAC7C,CAACL,YAAY,CAACK,iBAAiB,CACnC,CAAC;EAED,MAAMC,8BAA8B,GAAG7D,4BAA4B,CAC/D8B,gCAAgC,IAAI,CAACzB,UACzC,CAAC;EACDN,kBAAkB,CAACgD,iBAAiB,EAAE;IAClCe,SAAS,EAAED,8BAA8B,IAAI,OAAOjC,UAAU,KAAK;EACvE,CAAC,CAAC;EACF7B,kBAAkB,CAACiD,gBAAgB,EAAE;IACjCc,SAAS,EAAED,8BAA8B,IAAI,OAAOjC,UAAU,KAAK;EACvE,CAAC,CAAC;EAEF,MAAMmC,oBAAoB,GAAGxF,OAAO,CAAC,MAAM;IACvC,IAAI,CAACsC,YAAY,EAAE;MACf,OAAO,KAAK;IAChB;IAEA,MAAMmD,aAAa,GAAG1D,KAAK,CAAC2D,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,KAAKzD,YAAY,CAACyD,KAAK,CAAC;EAEvE,CAAC,EAAE,CAAChE,KAAK,EAAEO,YAAY,CAAC,CAAC;;EAEzB;EACA;EACA;EACA,MAAM0D,kBAAkB,GAAGhG,OAAO,CAAC,MAAM;IACrC,IAAI,OAAOoE,kBAAkB,KAAK,QAAQ,IAAIA,kBAAkB,GAAG,CAAC,EAAE;MAClE,OAAO6B,IAAI,CAACC,GAAG,CAAClE,SAAS,EAAEoC,kBAAkB,CAAC;IAClD;IAEA,OAAOpC,SAAS;EACpB,CAAC,EAAE,CAACoC,kBAAkB,EAAEpC,SAAS,CAAC,CAAC;EAEnC,MAAMmE,aAAa,GAAGnG,OAAO,CAAC,MAAM;IAChC,MAAMoG,SAAS,GAAGrE,KAAK,CAAC2D,OAAO,CAAEC,IAAI,IAAKA,IAAI,CAACA,IAAI,CAAC;IAEpD,IAAIU,MAAM,GAAGD,SAAS,CAACE,MAAM,CAAC,CAACP,KAAK,EAAED,IAAI,KAAK;MAC3C,MAAMS,SAAS,GACX9D,kBAAkB,IACjB,OAAOqD,IAAI,CAACU,OAAO,KAAK,QAAQ,IAAIV,IAAI,CAACU,OAAO,CAACC,IAAI,CAAC,CAAC,KAAK,EAAG;MAEpE,OAAOV,KAAK,IAAIQ,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC;IACxC,CAAC,EAAE,CAAC,CAAC;IAEL,IAAIxE,KAAK,CAAC6D,MAAM,GAAG,CAAC,EAAE;MAClBS,MAAM,IAAItE,KAAK,CAAC6D,MAAM,GAAG,EAAE;IAC/B;IAEA,IAAII,kBAAkB,GAAGK,MAAM,EAAE;MAC7BA,MAAM,GAAGL,kBAAkB;IAC/B;IAEA,OAAOK,MAAM;EACjB,CAAC,EAAE,CAACL,kBAAkB,EAAEjE,KAAK,EAAEU,kBAAkB,CAAC,CAAC;EAEnD,MAAMiE,gBAAqD,GAAG9G,WAAW,CACpE+G,KAAK,IAAK;IACPrC,cAAc,CAACsC,OAAO,GAAG,IAAI;IAC7BhE,YAAY,GAAG+D,KAAK,CAAC;EACzB,CAAC,EACD,CAAC/D,YAAY,CACjB,CAAC;EAED,MAAMiE,eAAoD,GAAGjH,WAAW,CACnE+G,KAAK,IAAK;IACPrC,cAAc,CAACsC,OAAO,GAAG,KAAK;IAC9BzD,WAAW,GAAGwD,KAAK,CAAC;EACxB,CAAC,EACD,CAACxD,WAAW,CAChB,CAAC;EAED,MAAM2D,UAAU,GAAGlH,WAAW,CAAC,MAAM;IACjC,IAAI,OAAO4C,MAAM,KAAK,UAAU,EAAE;MAC9BA,MAAM,CAAC,CAAC;IACZ;IAEAoB,cAAc,CAAC,IAAI,CAAC;EACxB,CAAC,EAAE,CAACpB,MAAM,CAAC,CAAC;EAEZ,MAAMuE,WAAW,GAAGnH,WAAW,CAAC,MAAM;IAClC,IAAI,OAAO2C,MAAM,KAAK,UAAU,EAAE;MAC9BA,MAAM,CAAC,CAAC;IACZ;IAEAqB,cAAc,CAAC,KAAK,CAAC;EACzB,CAAC,EAAE,CAACrB,MAAM,CAAC,CAAC;EAEZ,MAAMyE,mBAAmB,GAAGpH,WAAW,CAClC+G,KAAuC,IAAK;IACzC,MAAMM,kBAAkB,GAAGN,KAAK,CAACO,aAA4B;IAC7D,MAAMC,gBAAgB,GAAGR,KAAK,CAACS,aAA4B;IAE3D,IACI,CAACH,kBAAkB,IAClB,CAACE,gBAAgB,CAACE,QAAQ,CAACJ,kBAAkB,CAAC,IAC3C,CAACvC,UAAU,CAACkC,OAAO,EAAES,QAAQ,CAACJ,kBAAkB,CAAE,EACxD;MACEF,WAAW,CAAC,CAAC;IACjB;EACJ,CAAC,EACD,CAACA,WAAW,CAChB,CAAC;EAED,MAAMO,mBAAmB,GAAG1H,WAAW,CAAC,MAAM;IAC1C;IACA2H,qBAAqB,CAAC,MAAM;MACxB,IAAI,OAAOlE,UAAU,KAAK,QAAQ,EAAE;QAChCoB,gBAAgB,CAACmC,OAAO,EAAEY,KAAK,CAAC,CAAC;QACjC;MACJ;MAEAhD,iBAAiB,CAACoC,OAAO,EAAEY,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC;EACN,CAAC,EAAE,CAACnE,UAAU,CAAC,CAAC;;EAEhB;AACR;AACA;EACQ,MAAMoE,qBAAqB,GAAG7H,WAAW,CACpC8H,YAA4B,IAAK;IAC9B,IAAI,OAAOzF,QAAQ,KAAK,UAAU,EAAE;MAChC,MAAM0F,cAAc,GAAG1F,QAAQ,CAACyF,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;UAE5BpE,uBAAuB,CAACgE,YAAY,CAAC;UACrCX,WAAW,CAAC,CAAC;UACbO,mBAAmB,CAAC,CAAC;QACzB,CAAC,CAAC;QAEF;MACJ;IACJ;IAEA5D,uBAAuB,CAACgE,YAAY,CAAC;IACrCX,WAAW,CAAC,CAAC;IACbO,mBAAmB,CAAC,CAAC;EACzB,CAAC,EACD,CAACP,WAAW,EAAE9E,QAAQ,EAAEqF,mBAAmB,CAC/C,CAAC;EAED,MAAMS,WAAW,GAAGnI,WAAW,CAC1B+G,KAAuC,IAAK;IACzCA,KAAK,CAACqB,cAAc,CAAC,CAAC;IACtBrB,KAAK,CAACsB,eAAe,CAAC,CAAC;IAEvBR,qBAAqB,CAAC1D,SAAS,CAAC;EACpC,CAAC,EACD,CAAC0D,qBAAqB,CAC1B,CAAC;EAED3H,SAAS,CAAC,MAAM;IACZ,MAAMoI,aAAa,GAAIC,CAAgB,IAAK;MACxC,IAAI,CAACxE,WAAW,EAAE;MAElB,IAAIwE,CAAC,CAACC,GAAG,KAAK,QAAQ,EAAE;QACpBD,CAAC,CAACH,cAAc,CAAC,CAAC;QAClBjB,WAAW,CAAC,CAAC;QACbO,mBAAmB,CAAC,CAAC;QACrB;MACJ;MAEA,IAAIa,CAAC,CAACC,GAAG,KAAK,SAAS,IAAID,CAAC,CAACC,GAAG,KAAK,WAAW,EAAE;QAC9CD,CAAC,CAACH,cAAc,CAAC,CAAC;QAElB,MAAMK,QAAQ,GAAG3D,UAAU,CAACkC,OAAO,EAAEyB,QAAQ;QAE7C,IAAI,CAACA,QAAQ,IAAIA,QAAQ,CAACzC,MAAM,KAAK,CAAC,EAAE;QAExC,MAAM0C,aAAa,GAAGH,CAAC,CAACC,GAAG,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC;QAElD,IAAIG,QAAQ,GAAGrE,YAAY,IAAI,CAAC,CAAC;QAEjC,IAAIsE,QAAQ,GAAG,CAAC;QAEhB,GAAG;UACCD,QAAQ,GAAG,CAACA,QAAQ,GAAGD,aAAa,GAAGD,QAAQ,CAACzC,MAAM,IAAIyC,QAAQ,CAACzC,MAAM;UAEzE,MAAM6C,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,CAACzC,MAAM;QAEnC,IAAI1B,YAAY,KAAK,IAAI,EAAE;UACvB,MAAM4E,WAAW,GAAGT,QAAQ,CAACnE,YAAY,CAAmB;UAE5D4E,WAAW,CAACC,QAAQ,GAAG,CAAC,CAAC;QAC7B;QAEA5E,eAAe,CAACoE,QAAQ,CAAC;QAEzB,MAAMS,cAAc,GAAGX,QAAQ,CAACE,QAAQ,CAAmB;QAE3DS,cAAc,CAACD,QAAQ,GAAG,CAAC;QAC3BC,cAAc,CAACxB,KAAK,CAAC,CAAC;MAC1B,CAAC,MAAM,IAAI,CAACW,CAAC,CAACC,GAAG,KAAK,OAAO,IAAID,CAAC,CAACC,GAAG,KAAK,GAAG,KAAKlE,YAAY,KAAK,IAAI,EAAE;QACtEiE,CAAC,CAACH,cAAc,CAAC,CAAC;QAClB,MAAMiB,OAAO,GAAGvE,UAAU,CAACkC,OAAO,EAAEyB,QAAQ,CAACnE,YAAY,CAAC;QAE1D,IAAI,CAAC+E,OAAO,EAAE;QAEd,MAAM;UAAEN;QAAG,CAAC,GAAGM,OAAO;QAEtB,IAAIC,eAA0C;QAE9CnH,KAAK,CAAC8D,IAAI,CAAEF,IAAI,IAAK;UACjBuD,eAAe,GAAGvD,IAAI,CAACA,IAAI,CAACwD,IAAI,CAC5B,CAAC;YAAEpD;UAAM,CAAC,KAAKqD,MAAM,CAACrD,KAAK,CAAC,KAAK4C,EAAE,CAACU,OAAO,CAAC,iBAAiB,EAAE,EAAE,CACrE,CAAC;UAED,OAAO,CAAC,CAACH,eAAe;QAC5B,CAAC,CAAC;QAEF,IAAIA,eAAe,EAAE;UACjBzB,qBAAqB,CAACyB,eAAe,CAAC;QAC1C;MACJ;IACJ,CAAC;IAEDI,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAErB,aAAa,CAAC;IAEnD,OAAO,MAAMoB,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEtB,aAAa,CAAC;EACvE,CAAC,EAAE,CACChE,YAAY,EACZ6C,WAAW,EACXU,qBAAqB,EACrB9D,WAAW,EACX5B,KAAK,EACLuF,mBAAmB,CACtB,CAAC;;EAEF;AACR;AACA;EACQxH,SAAS,CAAC,MAAM;IACZ8D,cAAc,CAAC,KAAK,CAAC;IACrBF,uBAAuB,CAACpB,YAAY,CAAC;EACzC,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;EAElB,MAAMmH,mBAAmB,GAAGzJ,OAAO,CAAC,MAAM;IACtC,IAAIsC,YAAY,EAAE;MACd,OAAOA,YAAY,CAACoH,QAAQ;IAChC;IAEA,IAAIjG,oBAAoB,EAAE;MACtB,OAAOA,oBAAoB,CAACiG,QAAQ;IACxC;IAEA,OAAO3F,SAAS;EACpB,CAAC,EAAE,CAACN,oBAAoB,EAAEnB,YAAY,CAAC,CAAC;EAExC,MAAMqH,eAAe,GAAG3J,OAAO,CAAC,MAAM;IAClC,IAAIsC,YAAY,EAAE;MACd,OAAOA,YAAY,CAACsH,KAAK;IAC7B;IAEA,IAAInG,oBAAoB,EAAE;MACtB,OAAOA,oBAAoB,CAACmG,KAAK;IACrC;IAEA,OAAO7F,SAAS;EACpB,CAAC,EAAE,CAACN,oBAAoB,EAAEnB,YAAY,CAAC,CAAC;;EAExC;AACR;AACA;EACQ,MAAMuH,eAAe,GAAG7J,OAAO,CAAC,MAAM;IAClC,IAAI8J,IAAI,GAAG5H,WAAW;IAEtB,IAAII,YAAY,EAAE;MACdwH,IAAI,GAAGxH,YAAY,CAACwH,IAAI;IAC5B,CAAC,MAAM,IAAIrG,oBAAoB,EAAE;MAC7BqG,IAAI,GAAGrG,oBAAoB,CAACqG,IAAI;IACpC;IAEA,OAAOA,IAAI;EACf,CAAC,EAAE,CAACrG,oBAAoB,EAAEvB,WAAW,EAAEI,YAAY,CAAC,CAAC;EAErD,MAAMyH,+BAA+B,GAAG/J,OAAO,CAAC,MAAM;IAClD,MAAMgK,gBAAgB,GAAGjI,KAAK,CAACoH,IAAI,CAAExD,IAAI,IACrCA,IAAI,CAACA,IAAI,CAACE,IAAI,CACV,CAAC;MAAEE;IAAM,CAAC,KAAKA,KAAK,MAAMzD,YAAY,EAAEyD,KAAK,IAAItC,oBAAoB,EAAEsC,KAAK,CAChF,CACJ,CAAC;IAED,OAAOiE,gBAAgB,EAAErH,oBAAoB,IAAIA,oBAAoB;EACzE,CAAC,EAAE,CAACc,oBAAoB,EAAEsC,KAAK,EAAEhE,KAAK,EAAEO,YAAY,EAAEyD,KAAK,EAAEpD,oBAAoB,CAAC,CAAC;;EAEnF;AACR;AACA;EACQ,MAAMsH,iBAAiB,GAAGrK,WAAW,CAAC,MAAM;IACxC,IAAI,CAACkC,UAAU,IAAI,CAACwC,cAAc,CAACsC,OAAO,EAAE;MACxC,IAAIjD,WAAW,EAAE;QACboD,WAAW,CAAC,CAAC;MACjB,CAAC,MAAM;QACHD,UAAU,CAAC,CAAC;MAChB;IACJ;EACJ,CAAC,EAAE,CAACC,WAAW,EAAED,UAAU,EAAEnD,WAAW,EAAE7B,UAAU,CAAC,CAAC;EAEtD,MAAMoI,mBAAyD,GAAGtK,WAAW,CACxE+G,KAAK,IAAK;IACP,IAAI7E,UAAU,IAAI,OAAOuB,UAAU,KAAK,QAAQ,EAAE;MAC9C;IACJ;IAEA,IAAIsD,KAAK,CAACyB,GAAG,KAAK,QAAQ,IAAIzE,WAAW,EAAE;MACvCgD,KAAK,CAACqB,cAAc,CAAC,CAAC;MACtBjB,WAAW,CAAC,CAAC;MACbO,mBAAmB,CAAC,CAAC;MACrB;IACJ;IAEA,IAAIX,KAAK,CAACyB,GAAG,KAAK,OAAO,IAAIzB,KAAK,CAACyB,GAAG,KAAK,GAAG,EAAE;MAC5CzB,KAAK,CAACqB,cAAc,CAAC,CAAC;MACtBiC,iBAAiB,CAAC,CAAC;IACvB;EACJ,CAAC,EACD,CACIlD,WAAW,EACXkD,iBAAiB,EACjB5G,UAAU,EACVM,WAAW,EACX7B,UAAU,EACVwF,mBAAmB,CAE3B,CAAC;EAEDvH,mBAAmB,CACfyD,GAAG,EACH,OAAO;IACH2G,IAAI,EAAEpD,WAAW;IACjBqD,IAAI,EAAEtD;EACV,CAAC,CAAC,EACF,CAACC,WAAW,EAAED,UAAU,CAC5B,CAAC;EAED,MAAMuD,cAAc,GAAGrK,OAAO,CAC1B,MACI+B,KAAK,CAACuI,GAAG,CAAE3E,IAAI,iBACXlG,KAAA,CAAA8K,aAAA,CAAC5K,QAAQ;IAACyI,GAAG,EAAEzC,IAAI,CAAC6E,SAAS,IAAI;EAAgB,GAC5C7E,IAAI,CAAC6E,SAAS,IAAIzI,KAAK,CAAC6D,MAAM,GAAG,CAAC,iBAC/BnG,KAAA,CAAA8K,aAAA,CAACrJ,mBAAmB;IAACyH,EAAE,EAAE,mBAAmBhD,IAAI,CAAC6E,SAAS;EAAG,GACxD7E,IAAI,CAAC6E,SACW,CACxB,EACA7E,IAAI,CAACA,IAAI,CAAC2E,GAAG,CAAExE,IAAI,iBAChBrG,KAAA,CAAA8K,aAAA,CAACjK,YAAY;IACT8H,GAAG,EAAE,QAAQtC,IAAI,CAACgE,IAAI,EAAG;IACzBhE,IAAI,EAAEA,IAAK;IACX2E,UAAU,EACNnI,YAAY,GAAGwD,IAAI,CAACC,KAAK,KAAKzD,YAAY,CAACyD,KAAK,GAAG,KACtD;IACD9D,QAAQ,EAAEwF,qBAAsB;IAChChF,kBAAkB,EAAEA,kBAAmB;IACvCE,oBAAoB,EAChBgD,IAAI,CAAChD,oBAAoB,IAAIA;EAChC,CACJ,CACJ,CACK,CACb,CAAC,EACN,CAAC8E,qBAAqB,EAAE1F,KAAK,EAAEO,YAAY,EAAEG,kBAAkB,EAAEE,oBAAoB,CACzF,CAAC;EAED,OAAO3C,OAAO,CACV,mBACIP,KAAA,CAAA8K,aAAA,CAAChK,cAAc;IACXiD,GAAG,EAAEe,wBAAyB;IAC9BmG,SAAS,EAAE7G,QAAS;IACpB8G,mBAAmB,EAAE3H,kBAAmB;IACxC4H,MAAM,EAAE5D;EAAoB,gBAE5BvH,KAAA,CAAA8K,aAAA,CAAC7J,oBAAoB;IACjB8C,GAAG,EAAEgB,iBAAkB;IACvBqG,UAAU,EAAEjJ,SAAU;IACtBkJ,OAAO,EAAEb,iBAAkB;IAC3Bc,OAAO,EAAEpH,WAAY;IACrBqH,QAAQ,EAAEjG,OAAQ;IAClBkG,KAAK,EAAEnI,IAAK;IACZoI,gCAAgC,EAAE9H,+BAAgC;IAClE+H,WAAW,EAAErJ,UAAW;IACxBsJ,kBAAkB,EAAE/F,iBAAkB;IACtCgG,mBAAmB,EAAE5I,kBAAmB;IACxC6I,SAAS,EAAEpB,mBAAoB;IAC/BnB,QAAQ,EAAE,CAACjH,UAAU,IAAI,OAAOuB,UAAU,KAAK,QAAQ,GAAG,CAAC,GAAGU,SAAU;IACxEwH,IAAI,EAAE,CAACzJ,UAAU,IAAI,OAAOuB,UAAU,KAAK,QAAQ,GAAG,QAAQ,GAAGU,SAAU;IAC3E,iBACI,CAACjC,UAAU,IAAI,OAAOuB,UAAU,KAAK,QAAQ,GAAGM,WAAW,GAAGI;EACjE,gBAEDtE,KAAA,CAAA8K,aAAA,CAACtJ,yCAAyC;IAACgK,KAAK,EAAEnI;EAAK,GAClDX,MAAM,iBACH1C,KAAA,CAAA8K,aAAA,CAACvJ,oBAAoB;IAACwK,eAAe,EAAE3I,cAAe;IAACoI,KAAK,EAAEnI;EAAK,GAC9DX,MACiB,CACzB,eACD1C,KAAA,CAAA8K,aAAA,CAAC1J,yBAAyB;IACtB4K,oBAAoB,EAAE,CAACnJ,YAAY,IAAI,CAACmB,oBAAqB;IAC7DwH,KAAK,EAAEnI;EAAK,GAEX2G,mBAAmB,iBAChBhK,KAAA,CAAA8K,aAAA,CAACzJ,8BAA8B;IAC3B4K,GAAG,EAAEjC,mBAAoB;IACzB4B,mBAAmB,EAAE5I,kBAAmB;IACxCkJ,qBAAqB,EAAE5B;EAAgC,CAC1D,CACJ,EACAJ,eAAe,iBAAIlK,KAAA,CAAA8K,aAAA,CAAClK,IAAI;IAACuJ,KAAK,EAAED;EAAgB,CAAE,CAAC,EACnD,OAAOtG,UAAU,KAAK,QAAQ,gBAC3B5D,KAAA,CAAA8K,aAAA,CAAC3J,mBAAmB;IAChB4C,GAAG,EAAEiB,gBAAiB;IACtBmH,QAAQ,EAAE9J,UAAW;IACrBiE,KAAK,EAAE1C,UAAW;IAClBwI,QAAQ,EAAE5I,aAAc;IACxB2H,MAAM,EAAE/D,eAAgB;IACxBiF,OAAO,EAAEpF,gBAAiB;IAC1BxE,WAAW,EAAE2H;EAAgB,CAChC,CAAC,gBAEFpK,KAAA,CAAA8K,aAAA,CAACxJ,6BAA6B,QACzB8I,eAC0B,CAClC,EACApG,oBAAoB,IACjBA,oBAAoB,CAACsI,aAAa,IAClCtI,oBAAoB,CAACsI,aACF,CACY,CAAC,EAC3CrJ,mBAAmB,IAAIe,oBAAoB,iBACxChE,KAAA,CAAA8K,aAAA,CAAC9J,8BAA8B;IAC3B0K,WAAW,EAAErJ,UAAW;IACxBmJ,KAAK,EAAEnI,IAAK;IACZgI,OAAO,EAAE/C;EAAY,gBAErBtI,KAAA,CAAA8K,aAAA,CAAClK,IAAI;IACDuJ,KAAK,EAAE,CAAC,aAAa,CAAE;IACvB9G,IAAI,EAAEA,IAAI,KAAKxB,YAAY,CAAC0K,IAAI,GAAG,EAAE,GAAG;EAAG,CAC9C,CAC2B,CACnC,EACA,CAACxG,oBAAoB,iBAClB/F,KAAA,CAAA8K,aAAA,CAAC5J,yBAAyB;IACtBwK,WAAW,EAAErJ,UAAW;IACxBmJ,KAAK,EAAEnI,IAAK;IACZmJ,qBAAqB,EACjBvJ,mBAAmB,KAAK,IAAI,IAC5Be,oBAAoB,KAAKM;EAC5B,gBAEDtE,KAAA,CAAA8K,aAAA,CAAClK,IAAI;IACDuJ,KAAK,EAAE,CAAC,oBAAoB,CAAE;IAC9B9H,UAAU,EAAEA,UAAW;IACvBgB,IAAI,EAAEA,IAAI,KAAKxB,YAAY,CAAC0K,IAAI,GAAG,EAAE,GAAG;EAAG,CAC9C,CACsB,CAEb,CAAC,EACtBzH,wBAAwB,CAACqC,OAAO,iBAC7BnH,KAAA,CAAA8K,aAAA,CAACpJ,mBAAmB;IAChB+K,aAAa,EAAE3H,wBAAwB,CAACqC,OAAQ;IAChDjF,SAAS,EAAEA,SAAU;IACrBwE,aAAa,EAAEA,aAAc;IAC7B9D,mBAAmB,EAAEA,mBAAoB;IACzC8J,0BAA0B,EAAE9H,qBAAsB;IAClD+H,OAAO,EAAErF,WAAY;IACrBnF,SAAS,EAAEA,SAAU;IACrBQ,SAAS,EAAEA,SAAU;IACrBiK,kBAAkB,EAAE1I,WAAY;IAChC2I,YAAY,EAAE3K,SAAS,IAAIqC;EAAa,gBAExCvE,KAAA,CAAA8K,aAAA,CAAC/J,kBAAkB;IACf+L,UAAU,EAAEvG,kBAAmB;IAC/B0E,SAAS,EAAE/I,SAAS,IAAIqC,YAAa;IACrCwI,SAAS,EAAC,kBAAkB;IAC5BhJ,GAAG,EAAEkB,UAAW;IAChBqE,QAAQ,EAAE;EAAE,GAEXsB,cACe,CACH,CAEb,CACnB,EACD,CACIrG,YAAY,EACZrC,SAAS,EACT0I,cAAc,EACdjI,SAAS,EACT+D,aAAa,EACbvE,SAAS,EACTmG,WAAW,EACXhB,WAAW,EACXkD,iBAAiB,EACjBC,mBAAmB,EACnBrD,eAAe,EACfH,gBAAgB,EAChBrD,UAAU,EACVI,oBAAoB,EACpBE,WAAW,EACX7B,UAAU,EACViD,OAAO,EACPiB,kBAAkB,EAClBnC,QAAQ,EACRZ,aAAa,EACb0G,eAAe,EACfF,mBAAmB,EACnBI,eAAe,EACf1H,MAAM,EACNU,cAAc,EACdP,YAAY,EACZ+C,iBAAiB,EACjBG,oBAAoB,EACpBnD,mBAAmB,EACnBiD,8BAA8B,EAC9B7C,kBAAkB,EAClBC,mBAAmB,EACnBqH,+BAA+B,EAC/B3G,+BAA+B,EAC/BJ,kBAAkB,EAClBF,IAAI,CAEZ,CAAC;AACL,CACJ,CAAC;AAEDpB,QAAQ,CAAC+K,WAAW,GAAG,UAAU;AAEjC,eAAe/K,QAAQ","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ComboBox.js","names":["useFunctions","useValues","React","forwardRef","Fragment","useCallback","useContext","useEffect","useImperativeHandle","useMemo","useRef","useState","useIsTouch","AreaContext","Icon","ComboBoxItem","StyledComboBox","StyledComboBoxBody","StyledComboBoxClearIconWrapper","StyledComboBoxHeader","StyledComboBoxIconWrapper","StyledComboBoxInput","StyledComboBoxPlaceholder","StyledComboBoxPlaceholderImage","StyledComboBoxPlaceholderText","StyledComboBoxPrefix","StyledComboBoxPrefixAndPlaceholderWrapper","StyledComboBoxTopic","DropdownBodyWrapper","DropdownDirection","useElementSize","ComboBoxSize","getComboBoxWidthResult","useFocusRingPortal","useKeyboardFocusHighlighting","ComboBox","bodyWidth","direction","RIGHT","isDisabled","lists","maxHeight","onSelect","placeholder","prefix","container","shouldCaptureEvents","selectedItem","onHide","onShow","shouldShowBigImage","shouldShowClearIcon","shouldShowRoundImage","onInputFocus","prefixMinWidth","size","NORMAL","shouldUseFullWidth","onInputChange","shouldUseCurrentItemWidth","onInputBlur","shouldShowTransparentBackground","inputValue","shouldDropDownUseMaxItemWidth","shouldEnableKeyboardHighlighting","ref","internalSelectedItem","setInternalSelectedItem","isAnimating","setIsAnimating","minWidth","setMinWidth","undefined","bodyMinWidth","setBodyMinWidth","focusedIndex","setFocusedIndex","availableMaxHeight","setAvailableMaxHeight","isInputFocused","styledComboBoxElementRef","comboBoxHeaderRef","comboBoxInputRef","contentRef","parentSize","shouldUseParentElement","functions","values","isTouch","areaProvider","calculatedMinWidth","calculatedBodyMinWidth","parentWidth","width","shouldChangeColor","shouldShowKeyboardHighlighting","isEnabled","shouldDisableActions","combinedLists","flatMap","list","length","some","item","value","effectiveMaxHeight","Math","min","contentHeight","flatItems","height","reduce","isBigItem","subtext","trim","handleInputFocus","event","current","handleInputBlur","handleOpen","handleClose","handleContainerBlur","nextFocusedElement","relatedTarget","currentContainer","currentTarget","contains","restoreTriggerFocus","requestAnimationFrame","focus","handleSetSelectedItem","itemToSelect","onSelectResult","Promise","then","shouldPreventSelection","handleClear","preventDefault","stopPropagation","handleKeyDown","e","key","children","stepDirection","newIndex","attempts","newElement","shouldSkip","id","startsWith","endsWith","prevElement","tabIndex","focusedElement","element","newSelectedItem","find","String","replace","document","addEventListener","removeEventListener","placeholderImageUrl","imageUrl","placeholderIcon","icons","placeholderText","text","shouldShowRoundPlaceholderImage","selectedItemList","handleHeaderClick","handleHeaderKeyDown","hide","show","comboBoxGroups","map","createElement","groupName","isSelected","$minWidth","$shouldUseFullWidth","onBlur","$direction","onClick","$isOpen","$isTouch","$size","$shouldShowTransparentBackground","$isDisabled","$shouldChangeColor","$shouldShowBigImage","onKeyDown","role","$prefixMinWidth","$shouldReduceOpacity","src","$shouldShowRoundImage","disabled","onChange","onFocus","suffixElement","MINI","$shouldShowBorderLeft","anchorElement","onAvailableMaxHeightChange","onClose","shouldShowDropdown","minBodyWidth","$maxHeight","className","displayName"],"sources":["../../../../src/components/combobox/ComboBox.tsx"],"sourcesContent":["import { useFunctions, useValues } from 'chayns-api';\nimport React, {\n FocusEventHandler,\n forwardRef,\n Fragment,\n KeyboardEventHandler,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\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';\nimport { ComboBoxProps, ComboBoxRef, ComboBoxSize, IComboBoxItem } from './ComboBox.types';\nimport { getComboBoxWidthResult } from './ComboBox.utils';\nimport { useFocusRingPortal } from '../../hooks/useFocusRingPortal';\nimport { useKeyboardFocusHighlighting } from '../../hooks/useKeyboardFocusHighlighting';\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 shouldCaptureEvents,\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 shouldEnableKeyboardHighlighting,\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 const [availableMaxHeight, setAvailableMaxHeight] = useState<number | undefined>(undefined);\n\n const isInputFocused = useRef(false);\n const styledComboBoxElementRef = useRef<HTMLDivElement>(null);\n const comboBoxHeaderRef = useRef<HTMLDivElement>(null);\n const comboBoxInputRef = useRef<HTMLInputElement>(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 const isTouch = useIsTouch();\n const areaProvider = useContext(AreaContext);\n\n useEffect(() => {\n if (!parentSize) {\n return;\n }\n\n const { minWidth: calculatedMinWidth, bodyMinWidth: calculatedBodyMinWidth } =\n getComboBoxWidthResult({\n functions,\n internalSelectedItem,\n lists,\n parentWidth: parentSize.width,\n placeholder,\n prefix,\n prefixMinWidth,\n selectedItem,\n shouldDropDownUseMaxItemWidth,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldUseCurrentItemWidth,\n shouldUseFullWidth,\n values,\n });\n\n setMinWidth(calculatedMinWidth);\n setBodyMinWidth(calculatedBodyMinWidth);\n }, [\n functions,\n internalSelectedItem,\n lists,\n parentSize,\n placeholder,\n prefix,\n prefixMinWidth,\n selectedItem,\n shouldDropDownUseMaxItemWidth,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldUseCurrentItemWidth,\n shouldUseFullWidth,\n values,\n ]);\n\n const shouldChangeColor = useMemo(\n () => areaProvider.shouldChangeColor ?? false,\n [areaProvider.shouldChangeColor],\n );\n\n const shouldShowKeyboardHighlighting = useKeyboardFocusHighlighting(\n shouldEnableKeyboardHighlighting && !isDisabled,\n );\n useFocusRingPortal(comboBoxHeaderRef, {\n isEnabled: shouldShowKeyboardHighlighting && typeof inputValue !== 'string',\n });\n useFocusRingPortal(comboBoxInputRef, {\n isEnabled: shouldShowKeyboardHighlighting && typeof inputValue === 'string',\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 // Limits the configured maxHeight by the height that is actually available inside the\n // container (reported by the DropdownBodyWrapper). This prevents the dropdown from being cut\n // off when it is opened to the top or bottom and there is not enough space.\n const effectiveMaxHeight = useMemo(() => {\n if (typeof availableMaxHeight === 'number' && availableMaxHeight > 0) {\n return Math.min(maxHeight, availableMaxHeight);\n }\n\n return maxHeight;\n }, [availableMaxHeight, maxHeight]);\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 (effectiveMaxHeight < height) {\n height = effectiveMaxHeight;\n }\n\n return height;\n }, [effectiveMaxHeight, lists, 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 const handleContainerBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n const nextFocusedElement = event.relatedTarget as Node | null;\n const currentContainer = event.currentTarget as HTMLElement;\n\n if (\n !nextFocusedElement ||\n (!currentContainer.contains(nextFocusedElement) &&\n !contentRef.current?.contains(nextFocusedElement))\n ) {\n handleClose();\n }\n },\n [handleClose],\n );\n\n const restoreTriggerFocus = useCallback(() => {\n // Delay is needed so focus happens after dropdown close/render cycle.\n requestAnimationFrame(() => {\n if (typeof inputValue === 'string') {\n comboBoxInputRef.current?.focus();\n return;\n }\n\n comboBoxHeaderRef.current?.focus();\n });\n }, [inputValue]);\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 restoreTriggerFocus();\n });\n\n return;\n }\n }\n\n setInternalSelectedItem(itemToSelect);\n handleClose();\n restoreTriggerFocus();\n },\n [handleClose, onSelect, restoreTriggerFocus],\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 === 'Escape') {\n e.preventDefault();\n handleClose();\n restoreTriggerFocus();\n return;\n }\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 focusedElement.focus();\n } else if ((e.key === 'Enter' || e.key === ' ') && focusedIndex !== null) {\n e.preventDefault();\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 }, [\n focusedIndex,\n handleClose,\n handleSetSelectedItem,\n isAnimating,\n lists,\n restoreTriggerFocus,\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 const handleHeaderKeyDown: KeyboardEventHandler<HTMLDivElement> = useCallback(\n (event) => {\n if (isDisabled || typeof inputValue === 'string') {\n return;\n }\n\n if (event.key === 'Escape' && isAnimating) {\n event.preventDefault();\n handleClose();\n restoreTriggerFocus();\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleHeaderClick();\n }\n },\n [\n handleClose,\n handleHeaderClick,\n inputValue,\n isAnimating,\n isDisabled,\n restoreTriggerFocus,\n ],\n );\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.value}-${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 onBlur={handleContainerBlur}\n >\n <StyledComboBoxHeader\n ref={comboBoxHeaderRef}\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 onKeyDown={handleHeaderKeyDown}\n tabIndex={!isDisabled && typeof inputValue !== 'string' ? 0 : undefined}\n role={!isDisabled && typeof inputValue !== 'string' ? 'button' : undefined}\n aria-expanded={\n !isDisabled && typeof inputValue !== 'string' ? isAnimating : undefined\n }\n >\n <StyledComboBoxPrefixAndPlaceholderWrapper $size={size}>\n {prefix && (\n <StyledComboBoxPrefix $prefixMinWidth={prefixMinWidth} $size={size}>\n {prefix}\n </StyledComboBoxPrefix>\n )}\n <StyledComboBoxPlaceholder\n $shouldReduceOpacity={!selectedItem && !internalSelectedItem}\n $size={size}\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 ref={comboBoxInputRef}\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 $size={size}\n onClick={handleClear}\n >\n <Icon\n icons={['fa fa-times']}\n size={size === ComboBoxSize.MINI ? 13 : 15}\n />\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\n icons={['fa fa-chevron-down']}\n isDisabled={isDisabled}\n size={size === ComboBoxSize.MINI ? 13 : 15}\n />\n </StyledComboBoxIconWrapper>\n )}\n </StyledComboBoxHeader>\n {styledComboBoxElementRef.current && (\n <DropdownBodyWrapper\n anchorElement={styledComboBoxElementRef.current}\n bodyWidth={bodyWidth}\n contentHeight={contentHeight}\n shouldCaptureEvents={shouldCaptureEvents}\n onAvailableMaxHeightChange={setAvailableMaxHeight}\n onClose={handleClose}\n direction={direction}\n container={container}\n shouldShowDropdown={isAnimating}\n minBodyWidth={bodyWidth ?? bodyMinWidth}\n >\n <StyledComboBoxBody\n $maxHeight={effectiveMaxHeight}\n $minWidth={bodyWidth ?? bodyMinWidth}\n className=\"chayns-scrollbar\"\n ref={contentRef}\n tabIndex={0}\n >\n {comboBoxGroups}\n </StyledComboBoxBody>\n </DropdownBodyWrapper>\n )}\n </StyledComboBox>\n ),\n [\n bodyMinWidth,\n bodyWidth,\n comboBoxGroups,\n container,\n contentHeight,\n direction,\n handleClear,\n handleClose,\n handleHeaderClick,\n handleHeaderKeyDown,\n handleInputBlur,\n handleInputFocus,\n inputValue,\n internalSelectedItem,\n isAnimating,\n isDisabled,\n isTouch,\n effectiveMaxHeight,\n minWidth,\n onInputChange,\n placeholderIcon,\n placeholderImageUrl,\n placeholderText,\n prefix,\n prefixMinWidth,\n selectedItem,\n shouldChangeColor,\n shouldDisableActions,\n shouldCaptureEvents,\n shouldShowKeyboardHighlighting,\n shouldShowBigImage,\n shouldShowClearIcon,\n shouldShowRoundPlaceholderImage,\n shouldShowTransparentBackground,\n shouldUseFullWidth,\n size,\n ],\n );\n },\n);\n\nComboBox.displayName = 'ComboBox';\n\nexport default ComboBox;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -103,16 +103,23 @@ const ContextMenu = /*#__PURE__*/forwardRef(({
|
|
|
103
103
|
list: items.map(({
|
|
104
104
|
icons,
|
|
105
105
|
text,
|
|
106
|
-
isSelected
|
|
106
|
+
isSelected,
|
|
107
|
+
isDisabled,
|
|
108
|
+
disabledReason
|
|
107
109
|
}, index) => ({
|
|
108
110
|
name: text,
|
|
109
111
|
id: index,
|
|
110
112
|
isSelected,
|
|
113
|
+
disabled: isDisabled,
|
|
114
|
+
subtitle: isDisabled ? disabledReason : undefined,
|
|
111
115
|
icon: /*#__PURE__*/isValidElement(icons) ? undefined : icons?.[0]
|
|
112
116
|
}))
|
|
113
117
|
}).open();
|
|
114
118
|
if (result && typeof result[0] === 'number') {
|
|
115
|
-
|
|
119
|
+
const item = items[result[0]];
|
|
120
|
+
if (item && !item.isDisabled) {
|
|
121
|
+
void item.onClick();
|
|
122
|
+
}
|
|
116
123
|
}
|
|
117
124
|
} else if (contextMenuRef.current) {
|
|
118
125
|
if (!newContainer) {
|
|
@@ -214,7 +221,7 @@ const ContextMenu = /*#__PURE__*/forwardRef(({
|
|
|
214
221
|
event.stopPropagation();
|
|
215
222
|
void handleShow();
|
|
216
223
|
}
|
|
217
|
-
}, [focusedIndex, handleHide, handleShow, isHovered, isContentShown, items,
|
|
224
|
+
}, [focusedIndex, handleHide, handleShow, isHovered, isContentShown, items, shouldCloseOnPopupClick, shouldDisableClick, shouldUseFocusableWrapper]);
|
|
218
225
|
const handleContextMenu = useCallback(event => {
|
|
219
226
|
event.preventDefault();
|
|
220
227
|
event.stopPropagation();
|
|
@@ -272,7 +279,9 @@ const ContextMenu = /*#__PURE__*/forwardRef(({
|
|
|
272
279
|
}), [handleHide, handleShow]);
|
|
273
280
|
useEffect(() => {
|
|
274
281
|
const handleDocumentClick = event => {
|
|
275
|
-
|
|
282
|
+
const target = event.target;
|
|
283
|
+
const isInsideMenu = contextMenuContentRef.current?.contains(target);
|
|
284
|
+
if (isInsideMenu && (!shouldCloseOnPopupClick || target.closest('[aria-disabled="true"]'))) {
|
|
276
285
|
return;
|
|
277
286
|
}
|
|
278
287
|
handleHide();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextMenu.js","names":["createDialog","DialogType","AnimatePresence","React","forwardRef","isValidElement","useCallback","useEffect","useImperativeHandle","useRef","useState","createPortal","useUuid","useIsTouch","Icon","ContextMenuContent","StyledContextMenu","ContextMenuAlignment","getActiveItemIndex","getDefaultFocusedIndex","selectItem","useKeyboardFocusHighlighting","useFocusRingPortal","ContextMenu","alignment","className","children","createElement","icons","size","container","coordinates","headline","items","onHide","onShow","shouldCloseOnPopupClick","shouldDisableClick","shouldHidePopupArrow","shouldShowHoverEffect","shouldEnableKeyboardHighlighting","shouldUseDefaultTriggerStyles","style","yOffset","zIndex","dialogText","ref","internalCoordinates","setInternalCoordinates","x","y","internalAlignment","setInternalAlignment","TopLeft","newContainer","setNewContainer","focusedIndex","setFocusedIndex","isContentShown","setIsContentShown","portal","setPortal","isHovered","setIsHovered","shouldUseFocusableWrapper","setShouldUseFocusableWrapper","uuid","contextMenuContentRef","contextMenuRef","contextMenuFocusRingRef","shouldSkipNextContextMenuOpenRef","shouldPreventNextNativeContextMenuRef","isTouch","shouldShowKeyboardHighlighting","shouldShowWrapperKeyboardHighlighting","shouldUseKeyboardFocusableWrapper","isEnabled","overlayRef","shape","padding","current","firstElementChild","HTMLElement","el","element","closest","Element","handleHide","handleContainerBlur","event","nextFocusedElement","relatedTarget","currentContainer","currentTarget","contains","handleShow","result","type","SELECT","text","buttons","list","map","isSelected","index","name","id","icon","undefined","open","onClick","height","childrenHeight","left","childrenLeft","top","childrenTop","width","childrenWidth","getBoundingClientRect","zoomX","offsetWidth","zoomY","offsetHeight","scrollLeft","scrollTop","BottomRight","TopRight","BottomLeft","handleClick","preventDefault","stopPropagation","handleKeyDown","isActivationKey","key","prev","length","contextMenuContentElement","onClose","target","isContextMenuShortcut","shiftKey","handleContextMenu","handleGlobalKeyDown","activeElement","document","body","documentElement","shouldOpenFromFocusedParent","handleNativeContextMenuCapture","addEventListener","removeEventListener","hide","show","handleDocumentClick","window","initial","onItemFocus","onMouseEnter","onMouseLeave","focusableChildSelector","hasFocusableChild","Boolean","querySelector","Fragment","$isActive","$shouldAddHoverEffect","$shouldShowWrapperKeyboardHighlighting","$shouldUseDefaultTriggerStyles","onContextMenuCapture","onContextMenu","onKeyDown","onBlur","tabIndex","role","displayName"],"sources":["../../../../src/components/context-menu/ContextMenu.tsx"],"sourcesContent":["import { createDialog, DialogType } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n forwardRef,\n isValidElement,\n KeyboardEventHandler,\n MouseEvent,\n MouseEventHandler,\n ReactPortal,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useUuid } from '../../hooks/uuid';\nimport { useIsTouch } from '../../utils/environment';\nimport Icon from '../icon/Icon';\nimport ContextMenuContent from './context-menu-content/ContextMenuContent';\nimport { StyledContextMenu } from './ContextMenu.styles';\nimport {\n ContextMenuAlignment,\n type ContextMenuCoordinates,\n type ContextMenuProps,\n type ContextMenuRef,\n} from './ContextMenu.types';\nimport { SelectDialogResult } from '../../types/general';\nimport { getActiveItemIndex, getDefaultFocusedIndex, selectItem } from './ContextMenu.utils';\nimport { useKeyboardFocusHighlighting } from '../../hooks/useKeyboardFocusHighlighting';\nimport { useFocusRingPortal } from '../../hooks/useFocusRingPortal';\n\nconst ContextMenu = forwardRef<ContextMenuRef, ContextMenuProps>(\n (\n {\n alignment,\n className,\n children = <Icon icons={['ts-ellipsis_v']} size={18} />,\n container,\n coordinates,\n headline,\n items,\n onHide,\n onShow,\n shouldCloseOnPopupClick = true,\n shouldDisableClick = false,\n shouldHidePopupArrow = false,\n shouldShowHoverEffect = false,\n shouldEnableKeyboardHighlighting,\n shouldUseDefaultTriggerStyles = true,\n style,\n yOffset = 0,\n zIndex = 20,\n dialogText,\n },\n ref,\n ) => {\n const [internalCoordinates, setInternalCoordinates] = useState<ContextMenuCoordinates>({\n x: 0,\n y: 0,\n });\n\n const [internalAlignment, setInternalAlignment] = useState<ContextMenuAlignment>(\n ContextMenuAlignment.TopLeft,\n );\n\n const [newContainer, setNewContainer] = useState(container ?? null);\n const [focusedIndex, setFocusedIndex] = useState(getDefaultFocusedIndex(items));\n const [isContentShown, setIsContentShown] = useState(false);\n const [portal, setPortal] = useState<ReactPortal>();\n const [isHovered, setIsHovered] = useState(false);\n const [shouldUseFocusableWrapper, setShouldUseFocusableWrapper] = useState(false);\n\n const uuid = useUuid();\n\n const contextMenuContentRef = useRef<HTMLDivElement>(null);\n const contextMenuRef = useRef<HTMLSpanElement>(null);\n const contextMenuFocusRingRef = useRef<HTMLElement | null>(null);\n const shouldSkipNextContextMenuOpenRef = useRef(false);\n const shouldPreventNextNativeContextMenuRef = useRef(false);\n\n const isTouch = useIsTouch();\n const shouldShowKeyboardHighlighting = useKeyboardFocusHighlighting(\n shouldEnableKeyboardHighlighting && !shouldDisableClick,\n );\n const shouldShowWrapperKeyboardHighlighting =\n shouldShowKeyboardHighlighting && shouldUseFocusableWrapper;\n const shouldUseKeyboardFocusableWrapper = shouldUseFocusableWrapper && !shouldDisableClick;\n useFocusRingPortal(contextMenuRef, {\n isEnabled: shouldShowWrapperKeyboardHighlighting,\n overlayRef: contextMenuFocusRingRef,\n shape: shouldUseDefaultTriggerStyles ? 'circle' : 'rectangle',\n padding: shouldUseDefaultTriggerStyles ? 4 : 0,\n });\n\n useEffect(() => {\n contextMenuFocusRingRef.current =\n contextMenuRef.current?.firstElementChild instanceof HTMLElement\n ? contextMenuRef.current.firstElementChild\n : contextMenuRef.current;\n }, [children]);\n\n useEffect(() => {\n if (isContentShown) {\n setFocusedIndex(getDefaultFocusedIndex(items));\n }\n }, [isContentShown, items]);\n\n useEffect(() => {\n if (contextMenuRef.current && !container) {\n const el = contextMenuRef.current as HTMLElement;\n\n const element = el.closest('.dialog-inner, .page-provider, .tapp, body');\n\n setNewContainer(element);\n }\n }, [container]);\n\n useEffect(() => {\n if (container instanceof Element) {\n setNewContainer(container);\n }\n }, [container]);\n\n const handleHide = useCallback(() => {\n setIsContentShown(false);\n }, []);\n\n const handleContainerBlur = useCallback(\n (event: React.FocusEvent<HTMLSpanElement>) => {\n const nextFocusedElement = event.relatedTarget as Node | null;\n const currentContainer = event.currentTarget as HTMLElement;\n\n if (\n !nextFocusedElement ||\n (!currentContainer.contains(nextFocusedElement) &&\n !contextMenuContentRef.current?.contains(nextFocusedElement))\n ) {\n handleHide();\n }\n },\n [handleHide],\n );\n\n const handleShow = useCallback(async () => {\n if (isTouch) {\n const { result } = (await createDialog({\n type: DialogType.SELECT,\n text: dialogText,\n buttons: [],\n list: items.map(({ icons, text, isSelected }, index) => ({\n name: text,\n id: index,\n isSelected,\n icon: isValidElement(icons)\n ? undefined\n : (icons as string[] | undefined)?.[0],\n })),\n }).open()) as SelectDialogResult;\n\n if (result && typeof result[0] === 'number') {\n void items[result[0]]?.onClick();\n }\n } else if (contextMenuRef.current) {\n if (!newContainer) {\n return;\n }\n\n const {\n height: childrenHeight,\n left: childrenLeft,\n top: childrenTop,\n width: childrenWidth,\n } = contextMenuRef.current.getBoundingClientRect();\n\n const { height, width, top, left } = newContainer.getBoundingClientRect();\n\n const zoomX = width / (newContainer as HTMLElement).offsetWidth;\n const zoomY = height / (newContainer as HTMLElement).offsetHeight;\n\n const x =\n (childrenLeft + childrenWidth / 2 - left) / zoomX + newContainer.scrollLeft;\n const y =\n (childrenTop + childrenHeight / 2 - top) / zoomY +\n newContainer.scrollTop -\n yOffset;\n\n setInternalCoordinates({ x, y });\n\n if (x < width / 2) {\n if (y < height / 2) {\n setInternalAlignment(ContextMenuAlignment.BottomRight);\n } else {\n setInternalAlignment(ContextMenuAlignment.TopRight);\n }\n } else if (y < height / 2) {\n setInternalAlignment(ContextMenuAlignment.BottomLeft);\n } else {\n setInternalAlignment(ContextMenuAlignment.TopLeft);\n }\n\n setIsContentShown(true);\n }\n }, [isTouch, items, newContainer, yOffset, dialogText]);\n\n const handleClick = useCallback<MouseEventHandler<HTMLSpanElement>>(\n (event) => {\n if (shouldDisableClick) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n void handleShow();\n },\n [handleShow, shouldDisableClick],\n );\n\n const handleKeyDown = useCallback<KeyboardEventHandler<HTMLSpanElement>>(\n (event) => {\n if (shouldDisableClick) {\n return;\n }\n\n const isActivationKey =\n event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar';\n\n if (isContentShown && event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n handleHide();\n return;\n }\n\n if (isContentShown && !isHovered && event.key === 'ArrowDown') {\n event.preventDefault();\n event.stopPropagation();\n setFocusedIndex((prev) => (prev >= items.length - 1 ? 0 : prev + 1));\n return;\n }\n\n if (isContentShown && !isHovered && event.key === 'ArrowUp') {\n event.preventDefault();\n event.stopPropagation();\n setFocusedIndex((prev) => (prev <= 0 ? items.length - 1 : prev - 1));\n return;\n }\n\n if (isContentShown && isActivationKey) {\n if (\n selectItem({\n index: getActiveItemIndex({\n contextMenuContentElement: contextMenuContentRef.current,\n focusedIndex,\n }),\n items,\n onClose: handleHide,\n shouldCloseOnPopupClick,\n })\n ) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n return;\n }\n\n if (event.currentTarget !== event.target) {\n return;\n }\n\n const isContextMenuShortcut =\n event.key === 'ContextMenu' || (event.key === 'F10' && event.shiftKey);\n\n if (isContextMenuShortcut) {\n event.preventDefault();\n event.stopPropagation();\n shouldSkipNextContextMenuOpenRef.current = true;\n void handleShow();\n return;\n }\n\n if (shouldUseFocusableWrapper && isActivationKey) {\n event.preventDefault();\n event.stopPropagation();\n void handleShow();\n }\n },\n [\n focusedIndex,\n handleHide,\n handleShow,\n isHovered,\n isContentShown,\n items,\n items.length,\n shouldCloseOnPopupClick,\n shouldDisableClick,\n shouldUseFocusableWrapper,\n ],\n );\n\n const handleContextMenu = useCallback(\n (event: MouseEvent<HTMLSpanElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (shouldDisableClick) {\n return;\n }\n\n if (shouldSkipNextContextMenuOpenRef.current) {\n shouldSkipNextContextMenuOpenRef.current = false;\n return;\n }\n\n void handleShow();\n },\n [handleShow, shouldDisableClick],\n );\n\n useEffect(() => {\n const handleGlobalKeyDown = (event: KeyboardEvent) => {\n if (shouldDisableClick || !contextMenuRef.current) {\n return;\n }\n\n const isContextMenuShortcut =\n event.key === 'ContextMenu' || (event.key === 'F10' && event.shiftKey);\n\n if (!isContextMenuShortcut) {\n return;\n }\n\n const { activeElement } = document;\n\n if (\n !(activeElement instanceof HTMLElement) ||\n activeElement === document.body ||\n activeElement === document.documentElement\n ) {\n return;\n }\n\n const shouldOpenFromFocusedParent =\n activeElement.contains(contextMenuRef.current) &&\n !contextMenuRef.current.contains(activeElement);\n\n if (!shouldOpenFromFocusedParent) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n shouldPreventNextNativeContextMenuRef.current = true;\n void handleShow();\n };\n\n const handleNativeContextMenuCapture = (event: Event) => {\n if (!shouldPreventNextNativeContextMenuRef.current) {\n return;\n }\n\n shouldPreventNextNativeContextMenuRef.current = false;\n event.preventDefault();\n event.stopPropagation();\n };\n\n document.addEventListener('keydown', handleGlobalKeyDown, true);\n document.addEventListener('contextmenu', handleNativeContextMenuCapture, true);\n\n return () => {\n document.removeEventListener('keydown', handleGlobalKeyDown, true);\n document.removeEventListener('contextmenu', handleNativeContextMenuCapture, true);\n };\n }, [handleShow, shouldDisableClick]);\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleHide,\n show: handleShow,\n }),\n [handleHide, handleShow],\n );\n\n useEffect(() => {\n const handleDocumentClick = (event: PointerEvent) => {\n if (\n !shouldCloseOnPopupClick &&\n contextMenuContentRef.current?.contains(event.target as Node)\n ) {\n return;\n }\n\n handleHide();\n };\n\n if (isContentShown) {\n document.addEventListener('click', handleDocumentClick, true);\n window.addEventListener('blur', handleHide);\n\n if (typeof onShow === 'function') {\n onShow();\n }\n } else if (typeof onHide === 'function') {\n onHide();\n }\n\n return () => {\n document.removeEventListener('click', handleDocumentClick, true);\n window.removeEventListener('blur', handleHide);\n };\n }, [handleHide, isContentShown, onHide, onShow, shouldCloseOnPopupClick]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isContentShown && (\n <ContextMenuContent\n coordinates={coordinates ?? internalCoordinates}\n items={items}\n zIndex={zIndex}\n headline={headline}\n shouldHidePopupArrow={shouldHidePopupArrow}\n key={`contextMenu_${uuid}`}\n alignment={alignment ?? internalAlignment}\n ref={contextMenuContentRef}\n focusedIndex={focusedIndex}\n onItemFocus={setFocusedIndex}\n onMouseEnter={() => {\n setIsHovered(true);\n setFocusedIndex(-1);\n }}\n onMouseLeave={() => {\n setIsHovered(false);\n }}\n />\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n alignment,\n newContainer,\n coordinates,\n internalAlignment,\n internalCoordinates,\n isContentShown,\n items,\n uuid,\n zIndex,\n shouldHidePopupArrow,\n headline,\n focusedIndex,\n handleHide,\n ]);\n\n useEffect(() => {\n if (!contextMenuRef.current) {\n return;\n }\n\n const focusableChildSelector =\n 'button:not([disabled]), a[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]), [contenteditable=\"true\"]';\n\n const hasFocusableChild = Boolean(\n contextMenuRef.current.querySelector(focusableChildSelector),\n );\n\n setShouldUseFocusableWrapper(!hasFocusableChild);\n }, [children]);\n\n return (\n <>\n <StyledContextMenu\n className={\n className\n ? `beta-chayns-context-menu ${className}`\n : 'beta-chayns-context-menu'\n }\n $isActive={isContentShown && shouldShowHoverEffect}\n $shouldAddHoverEffect={!isTouch && shouldShowHoverEffect}\n $shouldShowWrapperKeyboardHighlighting={shouldShowWrapperKeyboardHighlighting}\n $shouldUseDefaultTriggerStyles={shouldUseDefaultTriggerStyles}\n onClick={handleClick}\n onContextMenuCapture={handleContextMenu}\n onContextMenu={handleContextMenu}\n onKeyDown={handleKeyDown}\n onBlur={handleContainerBlur}\n ref={contextMenuRef}\n tabIndex={shouldUseKeyboardFocusableWrapper ? 0 : undefined}\n role={shouldUseKeyboardFocusableWrapper ? 'button' : undefined}\n aria-haspopup={shouldUseKeyboardFocusableWrapper ? 'menu' : undefined}\n aria-expanded={shouldUseKeyboardFocusableWrapper ? isContentShown : undefined}\n style={style}\n >\n {children}\n </StyledContextMenu>\n {portal}\n </>\n );\n },\n);\n\nContextMenu.displayName = 'ContextMenu';\n\nexport default ContextMenu;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ContextMenu.js","names":["createDialog","DialogType","AnimatePresence","React","forwardRef","isValidElement","useCallback","useEffect","useImperativeHandle","useRef","useState","createPortal","useUuid","useIsTouch","Icon","ContextMenuContent","StyledContextMenu","ContextMenuAlignment","getActiveItemIndex","getDefaultFocusedIndex","selectItem","useKeyboardFocusHighlighting","useFocusRingPortal","ContextMenu","alignment","className","children","createElement","icons","size","container","coordinates","headline","items","onHide","onShow","shouldCloseOnPopupClick","shouldDisableClick","shouldHidePopupArrow","shouldShowHoverEffect","shouldEnableKeyboardHighlighting","shouldUseDefaultTriggerStyles","style","yOffset","zIndex","dialogText","ref","internalCoordinates","setInternalCoordinates","x","y","internalAlignment","setInternalAlignment","TopLeft","newContainer","setNewContainer","focusedIndex","setFocusedIndex","isContentShown","setIsContentShown","portal","setPortal","isHovered","setIsHovered","shouldUseFocusableWrapper","setShouldUseFocusableWrapper","uuid","contextMenuContentRef","contextMenuRef","contextMenuFocusRingRef","shouldSkipNextContextMenuOpenRef","shouldPreventNextNativeContextMenuRef","isTouch","shouldShowKeyboardHighlighting","shouldShowWrapperKeyboardHighlighting","shouldUseKeyboardFocusableWrapper","isEnabled","overlayRef","shape","padding","current","firstElementChild","HTMLElement","el","element","closest","Element","handleHide","handleContainerBlur","event","nextFocusedElement","relatedTarget","currentContainer","currentTarget","contains","handleShow","result","type","SELECT","text","buttons","list","map","isSelected","isDisabled","disabledReason","index","name","id","disabled","subtitle","undefined","icon","open","item","onClick","height","childrenHeight","left","childrenLeft","top","childrenTop","width","childrenWidth","getBoundingClientRect","zoomX","offsetWidth","zoomY","offsetHeight","scrollLeft","scrollTop","BottomRight","TopRight","BottomLeft","handleClick","preventDefault","stopPropagation","handleKeyDown","isActivationKey","key","prev","length","contextMenuContentElement","onClose","target","isContextMenuShortcut","shiftKey","handleContextMenu","handleGlobalKeyDown","activeElement","document","body","documentElement","shouldOpenFromFocusedParent","handleNativeContextMenuCapture","addEventListener","removeEventListener","hide","show","handleDocumentClick","isInsideMenu","window","initial","onItemFocus","onMouseEnter","onMouseLeave","focusableChildSelector","hasFocusableChild","Boolean","querySelector","Fragment","$isActive","$shouldAddHoverEffect","$shouldShowWrapperKeyboardHighlighting","$shouldUseDefaultTriggerStyles","onContextMenuCapture","onContextMenu","onKeyDown","onBlur","tabIndex","role","displayName"],"sources":["../../../../src/components/context-menu/ContextMenu.tsx"],"sourcesContent":["import { createDialog, DialogType } from 'chayns-api';\nimport { AnimatePresence } from 'motion/react';\nimport React, {\n forwardRef,\n isValidElement,\n KeyboardEventHandler,\n MouseEvent,\n MouseEventHandler,\n ReactPortal,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { useUuid } from '../../hooks/uuid';\nimport { useIsTouch } from '../../utils/environment';\nimport Icon from '../icon/Icon';\nimport ContextMenuContent from './context-menu-content/ContextMenuContent';\nimport { StyledContextMenu } from './ContextMenu.styles';\nimport {\n ContextMenuAlignment,\n type ContextMenuCoordinates,\n type ContextMenuProps,\n type ContextMenuRef,\n} from './ContextMenu.types';\nimport { SelectDialogResult } from '../../types/general';\nimport { getActiveItemIndex, getDefaultFocusedIndex, selectItem } from './ContextMenu.utils';\nimport { useKeyboardFocusHighlighting } from '../../hooks/useKeyboardFocusHighlighting';\nimport { useFocusRingPortal } from '../../hooks/useFocusRingPortal';\n\nconst ContextMenu = forwardRef<ContextMenuRef, ContextMenuProps>(\n (\n {\n alignment,\n className,\n children = <Icon icons={['ts-ellipsis_v']} size={18} />,\n container,\n coordinates,\n headline,\n items,\n onHide,\n onShow,\n shouldCloseOnPopupClick = true,\n shouldDisableClick = false,\n shouldHidePopupArrow = false,\n shouldShowHoverEffect = false,\n shouldEnableKeyboardHighlighting,\n shouldUseDefaultTriggerStyles = true,\n style,\n yOffset = 0,\n zIndex = 20,\n dialogText,\n },\n ref,\n ) => {\n const [internalCoordinates, setInternalCoordinates] = useState<ContextMenuCoordinates>({\n x: 0,\n y: 0,\n });\n\n const [internalAlignment, setInternalAlignment] = useState<ContextMenuAlignment>(\n ContextMenuAlignment.TopLeft,\n );\n\n const [newContainer, setNewContainer] = useState(container ?? null);\n const [focusedIndex, setFocusedIndex] = useState(getDefaultFocusedIndex(items));\n const [isContentShown, setIsContentShown] = useState(false);\n const [portal, setPortal] = useState<ReactPortal>();\n const [isHovered, setIsHovered] = useState(false);\n const [shouldUseFocusableWrapper, setShouldUseFocusableWrapper] = useState(false);\n\n const uuid = useUuid();\n\n const contextMenuContentRef = useRef<HTMLDivElement>(null);\n const contextMenuRef = useRef<HTMLSpanElement>(null);\n const contextMenuFocusRingRef = useRef<HTMLElement | null>(null);\n const shouldSkipNextContextMenuOpenRef = useRef(false);\n const shouldPreventNextNativeContextMenuRef = useRef(false);\n\n const isTouch = useIsTouch();\n const shouldShowKeyboardHighlighting = useKeyboardFocusHighlighting(\n shouldEnableKeyboardHighlighting && !shouldDisableClick,\n );\n const shouldShowWrapperKeyboardHighlighting =\n shouldShowKeyboardHighlighting && shouldUseFocusableWrapper;\n const shouldUseKeyboardFocusableWrapper = shouldUseFocusableWrapper && !shouldDisableClick;\n useFocusRingPortal(contextMenuRef, {\n isEnabled: shouldShowWrapperKeyboardHighlighting,\n overlayRef: contextMenuFocusRingRef,\n shape: shouldUseDefaultTriggerStyles ? 'circle' : 'rectangle',\n padding: shouldUseDefaultTriggerStyles ? 4 : 0,\n });\n\n useEffect(() => {\n contextMenuFocusRingRef.current =\n contextMenuRef.current?.firstElementChild instanceof HTMLElement\n ? contextMenuRef.current.firstElementChild\n : contextMenuRef.current;\n }, [children]);\n\n useEffect(() => {\n if (isContentShown) {\n setFocusedIndex(getDefaultFocusedIndex(items));\n }\n }, [isContentShown, items]);\n\n useEffect(() => {\n if (contextMenuRef.current && !container) {\n const el = contextMenuRef.current as HTMLElement;\n\n const element = el.closest('.dialog-inner, .page-provider, .tapp, body');\n\n setNewContainer(element);\n }\n }, [container]);\n\n useEffect(() => {\n if (container instanceof Element) {\n setNewContainer(container);\n }\n }, [container]);\n\n const handleHide = useCallback(() => {\n setIsContentShown(false);\n }, []);\n\n const handleContainerBlur = useCallback(\n (event: React.FocusEvent<HTMLSpanElement>) => {\n const nextFocusedElement = event.relatedTarget as Node | null;\n const currentContainer = event.currentTarget as HTMLElement;\n\n if (\n !nextFocusedElement ||\n (!currentContainer.contains(nextFocusedElement) &&\n !contextMenuContentRef.current?.contains(nextFocusedElement))\n ) {\n handleHide();\n }\n },\n [handleHide],\n );\n\n const handleShow = useCallback(async () => {\n if (isTouch) {\n const { result } = (await createDialog({\n type: DialogType.SELECT,\n text: dialogText,\n buttons: [],\n list: items.map(\n ({ icons, text, isSelected, isDisabled, disabledReason }, index) => ({\n name: text,\n id: index,\n isSelected,\n disabled: isDisabled,\n subtitle: isDisabled ? disabledReason : undefined,\n icon: isValidElement(icons)\n ? undefined\n : (icons as string[] | undefined)?.[0],\n }),\n ),\n }).open()) as SelectDialogResult;\n\n if (result && typeof result[0] === 'number') {\n const item = items[result[0]];\n\n if (item && !item.isDisabled) {\n void item.onClick();\n }\n }\n } else if (contextMenuRef.current) {\n if (!newContainer) {\n return;\n }\n\n const {\n height: childrenHeight,\n left: childrenLeft,\n top: childrenTop,\n width: childrenWidth,\n } = contextMenuRef.current.getBoundingClientRect();\n\n const { height, width, top, left } = newContainer.getBoundingClientRect();\n\n const zoomX = width / (newContainer as HTMLElement).offsetWidth;\n const zoomY = height / (newContainer as HTMLElement).offsetHeight;\n\n const x =\n (childrenLeft + childrenWidth / 2 - left) / zoomX + newContainer.scrollLeft;\n const y =\n (childrenTop + childrenHeight / 2 - top) / zoomY +\n newContainer.scrollTop -\n yOffset;\n\n setInternalCoordinates({ x, y });\n\n if (x < width / 2) {\n if (y < height / 2) {\n setInternalAlignment(ContextMenuAlignment.BottomRight);\n } else {\n setInternalAlignment(ContextMenuAlignment.TopRight);\n }\n } else if (y < height / 2) {\n setInternalAlignment(ContextMenuAlignment.BottomLeft);\n } else {\n setInternalAlignment(ContextMenuAlignment.TopLeft);\n }\n\n setIsContentShown(true);\n }\n }, [isTouch, items, newContainer, yOffset, dialogText]);\n\n const handleClick = useCallback<MouseEventHandler<HTMLSpanElement>>(\n (event) => {\n if (shouldDisableClick) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n void handleShow();\n },\n [handleShow, shouldDisableClick],\n );\n\n const handleKeyDown = useCallback<KeyboardEventHandler<HTMLSpanElement>>(\n (event) => {\n if (shouldDisableClick) {\n return;\n }\n\n const isActivationKey =\n event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar';\n\n if (isContentShown && event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n handleHide();\n return;\n }\n\n if (isContentShown && !isHovered && event.key === 'ArrowDown') {\n event.preventDefault();\n event.stopPropagation();\n setFocusedIndex((prev) => (prev >= items.length - 1 ? 0 : prev + 1));\n return;\n }\n\n if (isContentShown && !isHovered && event.key === 'ArrowUp') {\n event.preventDefault();\n event.stopPropagation();\n setFocusedIndex((prev) => (prev <= 0 ? items.length - 1 : prev - 1));\n return;\n }\n\n if (isContentShown && isActivationKey) {\n if (\n selectItem({\n index: getActiveItemIndex({\n contextMenuContentElement: contextMenuContentRef.current,\n focusedIndex,\n }),\n items,\n onClose: handleHide,\n shouldCloseOnPopupClick,\n })\n ) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n return;\n }\n\n if (event.currentTarget !== event.target) {\n return;\n }\n\n const isContextMenuShortcut =\n event.key === 'ContextMenu' || (event.key === 'F10' && event.shiftKey);\n\n if (isContextMenuShortcut) {\n event.preventDefault();\n event.stopPropagation();\n shouldSkipNextContextMenuOpenRef.current = true;\n void handleShow();\n return;\n }\n\n if (shouldUseFocusableWrapper && isActivationKey) {\n event.preventDefault();\n event.stopPropagation();\n void handleShow();\n }\n },\n [\n focusedIndex,\n handleHide,\n handleShow,\n isHovered,\n isContentShown,\n items,\n shouldCloseOnPopupClick,\n shouldDisableClick,\n shouldUseFocusableWrapper,\n ],\n );\n\n const handleContextMenu = useCallback(\n (event: MouseEvent<HTMLSpanElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (shouldDisableClick) {\n return;\n }\n\n if (shouldSkipNextContextMenuOpenRef.current) {\n shouldSkipNextContextMenuOpenRef.current = false;\n return;\n }\n\n void handleShow();\n },\n [handleShow, shouldDisableClick],\n );\n\n useEffect(() => {\n const handleGlobalKeyDown = (event: KeyboardEvent) => {\n if (shouldDisableClick || !contextMenuRef.current) {\n return;\n }\n\n const isContextMenuShortcut =\n event.key === 'ContextMenu' || (event.key === 'F10' && event.shiftKey);\n\n if (!isContextMenuShortcut) {\n return;\n }\n\n const { activeElement } = document;\n\n if (\n !(activeElement instanceof HTMLElement) ||\n activeElement === document.body ||\n activeElement === document.documentElement\n ) {\n return;\n }\n\n const shouldOpenFromFocusedParent =\n activeElement.contains(contextMenuRef.current) &&\n !contextMenuRef.current.contains(activeElement);\n\n if (!shouldOpenFromFocusedParent) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n shouldPreventNextNativeContextMenuRef.current = true;\n void handleShow();\n };\n\n const handleNativeContextMenuCapture = (event: Event) => {\n if (!shouldPreventNextNativeContextMenuRef.current) {\n return;\n }\n\n shouldPreventNextNativeContextMenuRef.current = false;\n event.preventDefault();\n event.stopPropagation();\n };\n\n document.addEventListener('keydown', handleGlobalKeyDown, true);\n document.addEventListener('contextmenu', handleNativeContextMenuCapture, true);\n\n return () => {\n document.removeEventListener('keydown', handleGlobalKeyDown, true);\n document.removeEventListener('contextmenu', handleNativeContextMenuCapture, true);\n };\n }, [handleShow, shouldDisableClick]);\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleHide,\n show: handleShow,\n }),\n [handleHide, handleShow],\n );\n\n useEffect(() => {\n const handleDocumentClick = (event: PointerEvent) => {\n const target = event.target as Element;\n const isInsideMenu = contextMenuContentRef.current?.contains(target);\n\n if (\n isInsideMenu &&\n (!shouldCloseOnPopupClick || target.closest('[aria-disabled=\"true\"]'))\n ) {\n return;\n }\n\n handleHide();\n };\n\n if (isContentShown) {\n document.addEventListener('click', handleDocumentClick, true);\n window.addEventListener('blur', handleHide);\n\n if (typeof onShow === 'function') {\n onShow();\n }\n } else if (typeof onHide === 'function') {\n onHide();\n }\n\n return () => {\n document.removeEventListener('click', handleDocumentClick, true);\n window.removeEventListener('blur', handleHide);\n };\n }, [handleHide, isContentShown, onHide, onShow, shouldCloseOnPopupClick]);\n\n useEffect(() => {\n if (!newContainer) {\n return;\n }\n\n setPortal(() =>\n createPortal(\n <AnimatePresence initial={false}>\n {isContentShown && (\n <ContextMenuContent\n coordinates={coordinates ?? internalCoordinates}\n items={items}\n zIndex={zIndex}\n headline={headline}\n shouldHidePopupArrow={shouldHidePopupArrow}\n key={`contextMenu_${uuid}`}\n alignment={alignment ?? internalAlignment}\n ref={contextMenuContentRef}\n focusedIndex={focusedIndex}\n onItemFocus={setFocusedIndex}\n onMouseEnter={() => {\n setIsHovered(true);\n setFocusedIndex(-1);\n }}\n onMouseLeave={() => {\n setIsHovered(false);\n }}\n />\n )}\n </AnimatePresence>,\n newContainer,\n ),\n );\n }, [\n alignment,\n newContainer,\n coordinates,\n internalAlignment,\n internalCoordinates,\n isContentShown,\n items,\n uuid,\n zIndex,\n shouldHidePopupArrow,\n headline,\n focusedIndex,\n handleHide,\n ]);\n\n useEffect(() => {\n if (!contextMenuRef.current) {\n return;\n }\n\n const focusableChildSelector =\n 'button:not([disabled]), a[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]), [contenteditable=\"true\"]';\n\n const hasFocusableChild = Boolean(\n contextMenuRef.current.querySelector(focusableChildSelector),\n );\n\n setShouldUseFocusableWrapper(!hasFocusableChild);\n }, [children]);\n\n return (\n <>\n <StyledContextMenu\n className={\n className\n ? `beta-chayns-context-menu ${className}`\n : 'beta-chayns-context-menu'\n }\n $isActive={isContentShown && shouldShowHoverEffect}\n $shouldAddHoverEffect={!isTouch && shouldShowHoverEffect}\n $shouldShowWrapperKeyboardHighlighting={shouldShowWrapperKeyboardHighlighting}\n $shouldUseDefaultTriggerStyles={shouldUseDefaultTriggerStyles}\n onClick={handleClick}\n onContextMenuCapture={handleContextMenu}\n onContextMenu={handleContextMenu}\n onKeyDown={handleKeyDown}\n onBlur={handleContainerBlur}\n ref={contextMenuRef}\n tabIndex={shouldUseKeyboardFocusableWrapper ? 0 : undefined}\n role={shouldUseKeyboardFocusableWrapper ? 'button' : undefined}\n aria-haspopup={shouldUseKeyboardFocusableWrapper ? 'menu' : undefined}\n aria-expanded={shouldUseKeyboardFocusableWrapper ? isContentShown : undefined}\n style={style}\n >\n {children}\n </StyledContextMenu>\n {portal}\n </>\n );\n },\n);\n\nContextMenu.displayName = 'ContextMenu';\n\nexport default ContextMenu;\n"],"mappings":"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","ignoreList":[]}
|