@chayns-components/core 5.5.65 → 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.
Files changed (31) hide show
  1. package/AGENTS.md +32 -0
  2. package/lib/cjs/components/context-menu/ContextMenu.js +13 -5
  3. package/lib/cjs/components/context-menu/ContextMenu.js.map +1 -1
  4. package/lib/cjs/components/context-menu/ContextMenu.test.js +234 -0
  5. package/lib/cjs/components/context-menu/ContextMenu.test.js.map +1 -0
  6. package/lib/cjs/components/context-menu/ContextMenu.types.js.map +1 -1
  7. package/lib/cjs/components/context-menu/ContextMenu.utils.js +4 -1
  8. package/lib/cjs/components/context-menu/ContextMenu.utils.js.map +1 -1
  9. package/lib/cjs/components/context-menu/context-menu-content/ContextMenuContent.js +11 -33
  10. package/lib/cjs/components/context-menu/context-menu-content/ContextMenuContent.js.map +1 -1
  11. package/lib/cjs/components/context-menu/context-menu-content/ContextMenuContent.styles.js +11 -3
  12. package/lib/cjs/components/context-menu/context-menu-content/ContextMenuContent.styles.js.map +1 -1
  13. package/lib/cjs/components/context-menu/context-menu-content/context-menu-content-item/ContextMenuContentItem.js +74 -0
  14. package/lib/cjs/components/context-menu/context-menu-content/context-menu-content-item/ContextMenuContentItem.js.map +1 -0
  15. package/lib/esm/components/context-menu/ContextMenu.js +13 -4
  16. package/lib/esm/components/context-menu/ContextMenu.js.map +1 -1
  17. package/lib/esm/components/context-menu/ContextMenu.test.js +223 -0
  18. package/lib/esm/components/context-menu/ContextMenu.test.js.map +1 -0
  19. package/lib/esm/components/context-menu/ContextMenu.types.js.map +1 -1
  20. package/lib/esm/components/context-menu/ContextMenu.utils.js +4 -1
  21. package/lib/esm/components/context-menu/ContextMenu.utils.js.map +1 -1
  22. package/lib/esm/components/context-menu/context-menu-content/ContextMenuContent.js +13 -35
  23. package/lib/esm/components/context-menu/context-menu-content/ContextMenuContent.js.map +1 -1
  24. package/lib/esm/components/context-menu/context-menu-content/ContextMenuContent.styles.js +11 -3
  25. package/lib/esm/components/context-menu/context-menu-content/ContextMenuContent.styles.js.map +1 -1
  26. package/lib/esm/components/context-menu/context-menu-content/context-menu-content-item/ContextMenuContentItem.js +66 -0
  27. package/lib/esm/components/context-menu/context-menu-content/context-menu-content-item/ContextMenuContentItem.js.map +1 -0
  28. package/lib/types/components/context-menu/ContextMenu.types.d.ts +9 -0
  29. package/lib/types/components/context-menu/context-menu-content/ContextMenuContent.styles.d.ts +4 -2
  30. package/lib/types/components/context-menu/context-menu-content/context-menu-content-item/ContextMenuContentItem.d.ts +11 -0
  31. package/package.json +2 -2
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
- var _Icon = _interopRequireDefault(require("../../icon/Icon"));
8
+ var _ContextMenuContentItem = _interopRequireDefault(require("./context-menu-content-item/ContextMenuContentItem"));
9
9
  var _ContextMenuContent = require("./ContextMenuContent.styles");
10
10
  var _ContextMenu = require("../ContextMenu.types");
11
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -48,39 +48,17 @@ const ContextMenuContent = /*#__PURE__*/_react.default.forwardRef(({
48
48
  const percentageOffsetY = isTopRightAlignment || isTopLeftAlignment || isTopCenterAlignment ? -100 : 0;
49
49
  const anchorOffsetY = isTopRightAlignment || isTopLeftAlignment || isTopCenterAlignment ? -21 : 21;
50
50
  const exitAndInitialY = isTopLeftAlignment || isTopRightAlignment ? -16 : 16;
51
- const content = (0, _react.useMemo)(() => items.map(({
52
- onClick,
53
- key,
54
- text,
55
- icons,
56
- shouldShowSpacer
57
- }, index) => {
58
- const isFocused = index === focusedIndex;
59
- let iconElement = null;
60
- if (/*#__PURE__*/(0, _react.isValidElement)(icons)) {
61
- iconElement = icons;
62
- } else if (Array.isArray(icons) && icons.length > 0) {
63
- iconElement = /*#__PURE__*/_react.default.createElement(_ContextMenuContent.StyledContextMenuContentItemIconWrapper, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
64
- icons: icons
65
- }));
66
- }
67
- return /*#__PURE__*/_react.default.createElement(_ContextMenuContent.StyledContextMenuContentItem, {
68
- key: `context-menu-item-${key}`,
69
- "data-index": index
70
- }, /*#__PURE__*/_react.default.createElement(_ContextMenuContent.StyledContextMenuContentItemWrapper, {
71
- key: key,
72
- onClick: event => {
73
- event.preventDefault();
74
- event.stopPropagation();
75
- void onClick(event);
76
- },
77
- tabIndex: 0,
78
- $shouldHidePopupArrow: shouldHidePopupArrow,
79
- $isFocused: isFocused,
80
- onFocus: () => onItemFocus(index)
81
- }, iconElement, /*#__PURE__*/_react.default.createElement(_ContextMenuContent.StyledContextMenuContentItemText, null, text)), shouldShowSpacer && /*#__PURE__*/_react.default.createElement(_ContextMenuContent.StyledContextMenuContentItemSpacer, null));
82
- }), [items, focusedIndex, shouldHidePopupArrow, onItemFocus]);
51
+ const content = (0, _react.useMemo)(() => items.map((item, index) => /*#__PURE__*/_react.default.createElement(_ContextMenuContentItem.default, {
52
+ key: item.key,
53
+ item: item,
54
+ index: index,
55
+ isFocused: index === focusedIndex,
56
+ shouldHidePopupArrow: shouldHidePopupArrow,
57
+ onItemFocus: onItemFocus
58
+ })), [items, focusedIndex, shouldHidePopupArrow, onItemFocus]);
83
59
  return /*#__PURE__*/_react.default.createElement(_ContextMenuContent.StyledMotionContextMenuContent, {
60
+ role: "menu",
61
+ "aria-label": headline,
84
62
  animate: {
85
63
  opacity: 1,
86
64
  y: 0
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenuContent.js","names":["_react","_interopRequireWildcard","require","_Icon","_interopRequireDefault","_ContextMenuContent","_ContextMenu","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ContextMenuContent","React","forwardRef","alignment","coordinates","items","zIndex","shouldHidePopupArrow","headline","onItemFocus","focusedIndex","onMouseEnter","onMouseLeave","ref","isBottomLeftAlignment","ContextMenuAlignment","BottomLeft","isTopLeftAlignment","TopLeft","isTopRightAlignment","TopRight","isTopCenterAlignment","TopCenter","isBottomCenterAlignment","BottomCenter","percentageOffsetX","useMemo","anchorOffsetX","percentageOffsetY","anchorOffsetY","exitAndInitialY","content","map","onClick","key","text","icons","shouldShowSpacer","index","isFocused","iconElement","isValidElement","Array","isArray","length","createElement","StyledContextMenuContentItemIconWrapper","StyledContextMenuContentItem","StyledContextMenuContentItemWrapper","event","preventDefault","stopPropagation","tabIndex","$shouldHidePopupArrow","$isFocused","onFocus","StyledContextMenuContentItemText","StyledContextMenuContentItemSpacer","StyledMotionContextMenuContent","animate","opacity","y","exit","initial","$position","$zIndex","style","left","x","top","transition","ease","transformTemplate","StyledContextMenuContentHeadline","displayName","_default","exports"],"sources":["../../../../../src/components/context-menu/context-menu-content/ContextMenuContent.tsx"],"sourcesContent":["import React, { isValidElement, useMemo } from 'react';\nimport Icon from '../../icon/Icon';\nimport {\n StyledContextMenuContentHeadline,\n StyledContextMenuContentItem,\n StyledContextMenuContentItemIconWrapper,\n StyledContextMenuContentItemSpacer,\n StyledContextMenuContentItemText,\n StyledContextMenuContentItemWrapper,\n StyledMotionContextMenuContent,\n} from './ContextMenuContent.styles';\nimport {\n ContextMenuAlignment,\n type ContextMenuCoordinates,\n type ContextMenuItem,\n} from '../ContextMenu.types';\n\ntype ContextMenuContentProps = {\n alignment: ContextMenuAlignment;\n coordinates: ContextMenuCoordinates;\n items: ContextMenuItem[];\n shouldHidePopupArrow: boolean;\n headline?: string;\n zIndex: number;\n focusedIndex: number;\n onItemFocus: (index: number) => void;\n onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;\n};\n\nconst ContextMenuContent = React.forwardRef<HTMLDivElement, ContextMenuContentProps>(\n (\n {\n alignment,\n coordinates,\n items,\n zIndex,\n shouldHidePopupArrow,\n headline,\n onItemFocus,\n focusedIndex,\n onMouseEnter,\n onMouseLeave,\n },\n ref,\n ) => {\n const isBottomLeftAlignment = alignment === ContextMenuAlignment.BottomLeft;\n const isTopLeftAlignment = alignment === ContextMenuAlignment.TopLeft;\n const isTopRightAlignment = alignment === ContextMenuAlignment.TopRight;\n const isTopCenterAlignment = alignment === ContextMenuAlignment.TopCenter;\n const isBottomCenterAlignment = alignment === ContextMenuAlignment.BottomCenter;\n\n const percentageOffsetX = useMemo(() => {\n if (isBottomLeftAlignment || isTopLeftAlignment) {\n return -100;\n }\n\n if (isBottomCenterAlignment || isTopCenterAlignment) {\n return -50;\n }\n\n return 0;\n }, [\n isBottomCenterAlignment,\n isBottomLeftAlignment,\n isTopCenterAlignment,\n isTopLeftAlignment,\n ]);\n\n const anchorOffsetX = useMemo(() => {\n if (isBottomLeftAlignment || isTopLeftAlignment) {\n return 15;\n }\n\n if (isBottomCenterAlignment || isTopCenterAlignment) {\n return 0;\n }\n\n return -15;\n }, [\n isBottomCenterAlignment,\n isBottomLeftAlignment,\n isTopCenterAlignment,\n isTopLeftAlignment,\n ]);\n\n const percentageOffsetY =\n isTopRightAlignment || isTopLeftAlignment || isTopCenterAlignment ? -100 : 0;\n\n const anchorOffsetY =\n isTopRightAlignment || isTopLeftAlignment || isTopCenterAlignment ? -21 : 21;\n\n const exitAndInitialY = isTopLeftAlignment || isTopRightAlignment ? -16 : 16;\n\n const content = useMemo(\n () =>\n items.map(({ onClick, key, text, icons, shouldShowSpacer }, index) => {\n const isFocused = index === focusedIndex;\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 return (\n <StyledContextMenuContentItem\n key={`context-menu-item-${key}`}\n data-index={index}\n >\n <StyledContextMenuContentItemWrapper\n key={key}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n void onClick(event);\n }}\n tabIndex={0}\n $shouldHidePopupArrow={shouldHidePopupArrow}\n $isFocused={isFocused}\n onFocus={() => onItemFocus(index)}\n >\n {iconElement}\n <StyledContextMenuContentItemText>\n {text}\n </StyledContextMenuContentItemText>\n </StyledContextMenuContentItemWrapper>\n {shouldShowSpacer && <StyledContextMenuContentItemSpacer />}\n </StyledContextMenuContentItem>\n );\n }),\n [items, focusedIndex, shouldHidePopupArrow, onItemFocus],\n );\n\n return (\n <StyledMotionContextMenuContent\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: exitAndInitialY }}\n initial={{ opacity: 0, y: exitAndInitialY }}\n $position={alignment}\n $shouldHidePopupArrow={shouldHidePopupArrow}\n $zIndex={zIndex}\n ref={ref}\n style={{ left: coordinates.x, top: coordinates.y }}\n transition={{ ease: 'anticipate' }}\n transformTemplate={({ y = '0px' }) => `\n translateX(${percentageOffsetX}%)\n translateY(${percentageOffsetY}%)\n translateX(${anchorOffsetX}px)\n translateY(${anchorOffsetY}px)\n translateY(${y})\n `}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {headline && (\n <StyledContextMenuContentHeadline>{headline}</StyledContextMenuContentHeadline>\n )}\n {content}\n </StyledMotionContextMenuContent>\n );\n },\n);\n\nContextMenuContent.displayName = 'ContextMenuContent';\n\nexport default ContextMenuContent;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ContextMenuContent.js","names":["_react","_interopRequireWildcard","require","_ContextMenuContentItem","_interopRequireDefault","_ContextMenuContent","_ContextMenu","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ContextMenuContent","React","forwardRef","alignment","coordinates","items","zIndex","shouldHidePopupArrow","headline","onItemFocus","focusedIndex","onMouseEnter","onMouseLeave","ref","isBottomLeftAlignment","ContextMenuAlignment","BottomLeft","isTopLeftAlignment","TopLeft","isTopRightAlignment","TopRight","isTopCenterAlignment","TopCenter","isBottomCenterAlignment","BottomCenter","percentageOffsetX","useMemo","anchorOffsetX","percentageOffsetY","anchorOffsetY","exitAndInitialY","content","map","item","index","createElement","key","isFocused","StyledMotionContextMenuContent","role","animate","opacity","y","exit","initial","$position","$shouldHidePopupArrow","$zIndex","style","left","x","top","transition","ease","transformTemplate","StyledContextMenuContentHeadline","displayName","_default","exports"],"sources":["../../../../../src/components/context-menu/context-menu-content/ContextMenuContent.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport ContextMenuContentItem from './context-menu-content-item/ContextMenuContentItem';\nimport {\n StyledContextMenuContentHeadline,\n StyledMotionContextMenuContent,\n} from './ContextMenuContent.styles';\nimport {\n ContextMenuAlignment,\n type ContextMenuCoordinates,\n type ContextMenuItem,\n} from '../ContextMenu.types';\n\ntype ContextMenuContentProps = {\n alignment: ContextMenuAlignment;\n coordinates: ContextMenuCoordinates;\n items: ContextMenuItem[];\n shouldHidePopupArrow: boolean;\n headline?: string;\n zIndex: number;\n focusedIndex: number;\n onItemFocus: (index: number) => void;\n onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;\n};\n\nconst ContextMenuContent = React.forwardRef<HTMLDivElement, ContextMenuContentProps>(\n (\n {\n alignment,\n coordinates,\n items,\n zIndex,\n shouldHidePopupArrow,\n headline,\n onItemFocus,\n focusedIndex,\n onMouseEnter,\n onMouseLeave,\n },\n ref,\n ) => {\n const isBottomLeftAlignment = alignment === ContextMenuAlignment.BottomLeft;\n const isTopLeftAlignment = alignment === ContextMenuAlignment.TopLeft;\n const isTopRightAlignment = alignment === ContextMenuAlignment.TopRight;\n const isTopCenterAlignment = alignment === ContextMenuAlignment.TopCenter;\n const isBottomCenterAlignment = alignment === ContextMenuAlignment.BottomCenter;\n\n const percentageOffsetX = useMemo(() => {\n if (isBottomLeftAlignment || isTopLeftAlignment) {\n return -100;\n }\n\n if (isBottomCenterAlignment || isTopCenterAlignment) {\n return -50;\n }\n\n return 0;\n }, [\n isBottomCenterAlignment,\n isBottomLeftAlignment,\n isTopCenterAlignment,\n isTopLeftAlignment,\n ]);\n\n const anchorOffsetX = useMemo(() => {\n if (isBottomLeftAlignment || isTopLeftAlignment) {\n return 15;\n }\n\n if (isBottomCenterAlignment || isTopCenterAlignment) {\n return 0;\n }\n\n return -15;\n }, [\n isBottomCenterAlignment,\n isBottomLeftAlignment,\n isTopCenterAlignment,\n isTopLeftAlignment,\n ]);\n\n const percentageOffsetY =\n isTopRightAlignment || isTopLeftAlignment || isTopCenterAlignment ? -100 : 0;\n\n const anchorOffsetY =\n isTopRightAlignment || isTopLeftAlignment || isTopCenterAlignment ? -21 : 21;\n\n const exitAndInitialY = isTopLeftAlignment || isTopRightAlignment ? -16 : 16;\n\n const content = useMemo(\n () =>\n items.map((item, index) => (\n <ContextMenuContentItem\n key={item.key}\n item={item}\n index={index}\n isFocused={index === focusedIndex}\n shouldHidePopupArrow={shouldHidePopupArrow}\n onItemFocus={onItemFocus}\n />\n )),\n [items, focusedIndex, shouldHidePopupArrow, onItemFocus],\n );\n\n return (\n <StyledMotionContextMenuContent\n role=\"menu\"\n aria-label={headline}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: exitAndInitialY }}\n initial={{ opacity: 0, y: exitAndInitialY }}\n $position={alignment}\n $shouldHidePopupArrow={shouldHidePopupArrow}\n $zIndex={zIndex}\n ref={ref}\n style={{ left: coordinates.x, top: coordinates.y }}\n transition={{ ease: 'anticipate' }}\n transformTemplate={({ y = '0px' }) => `\n translateX(${percentageOffsetX}%)\n translateY(${percentageOffsetY}%)\n translateX(${anchorOffsetX}px)\n translateY(${anchorOffsetY}px)\n translateY(${y})\n `}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {headline && (\n <StyledContextMenuContentHeadline>{headline}</StyledContextMenuContentHeadline>\n )}\n {content}\n </StyledMotionContextMenuContent>\n );\n },\n);\n\nContextMenuContent.displayName = 'ContextMenuContent';\n\nexport default ContextMenuContent;\n"],"mappings":"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","ignoreList":[]}
@@ -104,7 +104,9 @@ const StyledMotionContextMenuContent = exports.StyledMotionContextMenuContent =
104
104
  z-index: -1;
105
105
  }
106
106
  `;
107
- const StyledContextMenuContentItem = exports.StyledContextMenuContentItem = _styledComponents.default.div``;
107
+ const StyledContextMenuContentItem = exports.StyledContextMenuContentItem = _styledComponents.default.div`
108
+ position: relative;
109
+ `;
108
110
  const StyledContextMenuContentItemSpacer = exports.StyledContextMenuContentItemSpacer = _styledComponents.default.div`
109
111
  background-color: ${({
110
112
  theme
@@ -117,7 +119,12 @@ const StyledContextMenuContentItemWrapper = exports.StyledContextMenuContentItem
117
119
  border-radius: ${({
118
120
  $shouldHidePopupArrow
119
121
  }) => $shouldHidePopupArrow ? '3px' : 0};
120
- cursor: pointer;
122
+ cursor: ${({
123
+ $isDisabled
124
+ }) => $isDisabled ? 'default' : 'pointer'};
125
+ opacity: ${({
126
+ $isDisabled
127
+ }) => $isDisabled ? 0.5 : 1};
121
128
  display: flex;
122
129
  gap: 6px;
123
130
  margin: ${({
@@ -136,8 +143,9 @@ const StyledContextMenuContentItemWrapper = exports.StyledContextMenuContentItem
136
143
 
137
144
  &:hover {
138
145
  background-color: ${({
146
+ $isDisabled,
139
147
  theme
140
- }) => theme['secondary-103']};
148
+ }) => $isDisabled ? 'transparent' : theme['secondary-103']};
141
149
  }
142
150
  `;
143
151
  const StyledContextMenuContentItemIconWrapper = exports.StyledContextMenuContentItemIconWrapper = _styledComponents.default.div`
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenuContent.styles.js","names":["_react","require","_styledComponents","_interopRequireWildcard","_ContextMenu","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","StyledMotionContextMenuContent","exports","styled","motion","div","theme","$shouldHidePopupArrow","text","$zIndex","css","$position","ContextMenuAlignment","TopLeft","BottomLeft","TopRight","BottomRight","TopCenter","BottomCenter","undefined","StyledContextMenuContentItem","StyledContextMenuContentItemSpacer","StyledContextMenuContentItemWrapper","$isFocused","StyledContextMenuContentItemIconWrapper","StyledContextMenuContentHeadline","StyledContextMenuContentItemText"],"sources":["../../../../../src/components/context-menu/context-menu-content/ContextMenuContent.styles.ts"],"sourcesContent":["import { motion } from 'motion/react';\nimport styled, { css } from 'styled-components';\nimport type { WithTheme } from '../../color-scheme-provider/ColorSchemeProvider';\nimport { ContextMenuAlignment } from '../ContextMenu.types';\n\ntype StyledMotionContextMenuContentProps = WithTheme<{\n $position: ContextMenuAlignment;\n $zIndex: number;\n $shouldHidePopupArrow: boolean;\n}>;\n\nexport const StyledMotionContextMenuContent = styled(\n motion.div,\n)<StyledMotionContextMenuContentProps>`\n background-color: ${({ theme }: StyledMotionContextMenuContentProps) => theme['001']};\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: ${({ $shouldHidePopupArrow }) => ($shouldHidePopupArrow ? '6px' : '3px')};\n box-shadow: 1px 3px 8px rgb(0 0 0 / 30%);\n color: ${({ theme }: StyledMotionContextMenuContentProps) => theme.text};\n max-width: 500px;\n pointer-events: all;\n position: absolute;\n z-index: ${({ $zIndex }) => $zIndex};\n\n &::after {\n background-color: inherit;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n border-right: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 2px 2px 8px rgb(4 3 4 / 10%);\n content: '';\n height: 14px;\n position: absolute;\n width: 14px;\n z-index: -2;\n\n ${({ $shouldHidePopupArrow }) =>\n $shouldHidePopupArrow &&\n css`\n display: none;\n `}\n\n ${({ $position }) => {\n switch ($position) {\n case ContextMenuAlignment.TopLeft:\n return css`\n bottom: -7px;\n right: 7px;\n transform: rotate(45deg);\n `;\n case ContextMenuAlignment.BottomLeft:\n return css`\n top: -7px;\n right: 7px;\n transform: rotate(225deg);\n `;\n case ContextMenuAlignment.TopRight:\n return css`\n transform: rotate(45deg);\n bottom: -7px;\n left: 7px;\n `;\n case ContextMenuAlignment.BottomRight:\n return css`\n transform: rotate(225deg);\n top: -7px;\n left: 7px;\n `;\n case ContextMenuAlignment.TopCenter:\n return css`\n bottom: -7px;\n right: 45%;\n transform: rotate(45deg);\n `;\n case ContextMenuAlignment.BottomCenter:\n return css`\n transform: rotate(225deg);\n top: -7px;\n left: 45%;\n `;\n\n default:\n return undefined;\n }\n }}\n }\n\n &::before {\n background-color: inherit;\n bottom: 0;\n content: '';\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n border-radius: ${({ $shouldHidePopupArrow }) => ($shouldHidePopupArrow ? '6px' : '3px')};\n z-index: -1;\n }\n`;\n\nexport const StyledContextMenuContentItem = styled.div``;\n\ntype StyledContextMenuContentItemSpacerProps = WithTheme<unknown>;\n\nexport const StyledContextMenuContentItemSpacer = styled.div<StyledContextMenuContentItemSpacerProps>`\n background-color: ${({ theme }) => theme['003']};\n height: 1px;\n width: 100%;\n`;\n\ntype StyledContextMenuContentItemWrapperProps = WithTheme<{\n $shouldHidePopupArrow: boolean;\n $isFocused: boolean;\n}>;\n\nexport const StyledContextMenuContentItemWrapper = styled.div<StyledContextMenuContentItemWrapperProps>`\n align-items: center;\n border-radius: ${({ $shouldHidePopupArrow }) => ($shouldHidePopupArrow ? '3px' : 0)};\n cursor: pointer;\n display: flex;\n gap: 6px;\n margin: ${({ $shouldHidePopupArrow }) => ($shouldHidePopupArrow ? '3px' : 0)};\n overflow: hidden;\n padding: 5px 8px;\n transition: background-color 0.3s ease;\n\n ${({ $isFocused, theme }) =>\n $isFocused &&\n css`\n background-color: ${theme['secondary-103']};\n `}\n\n &:hover {\n background-color: ${({ theme }: StyledContextMenuContentItemWrapperProps) =>\n theme['secondary-103']};\n }\n`;\n\nexport const StyledContextMenuContentItemIconWrapper = styled.div`\n display: flex;\n flex: 0 0 auto;\n justify-content: center;\n width: 20px;\n`;\n\nexport const StyledContextMenuContentHeadline = styled.div`\n width: 100%;\n margin: 3px 6px;\n opacity: 50%;\n font-weight: bold;\n`;\n\nexport const StyledContextMenuContentItemText = styled.div`\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ContextMenuContent.styles.js","names":["_react","require","_styledComponents","_interopRequireWildcard","_ContextMenu","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","StyledMotionContextMenuContent","exports","styled","motion","div","theme","$shouldHidePopupArrow","text","$zIndex","css","$position","ContextMenuAlignment","TopLeft","BottomLeft","TopRight","BottomRight","TopCenter","BottomCenter","undefined","StyledContextMenuContentItem","StyledContextMenuContentItemSpacer","StyledContextMenuContentItemWrapper","$isDisabled","$isFocused","StyledContextMenuContentItemIconWrapper","StyledContextMenuContentHeadline","StyledContextMenuContentItemText"],"sources":["../../../../../src/components/context-menu/context-menu-content/ContextMenuContent.styles.ts"],"sourcesContent":["import { motion } from 'motion/react';\nimport styled, { css } from 'styled-components';\nimport type { WithTheme } from '../../color-scheme-provider/ColorSchemeProvider';\nimport { ContextMenuAlignment } from '../ContextMenu.types';\n\ntype StyledMotionContextMenuContentProps = WithTheme<{\n $position: ContextMenuAlignment;\n $zIndex: number;\n $shouldHidePopupArrow: boolean;\n}>;\n\nexport const StyledMotionContextMenuContent = styled(\n motion.div,\n)<StyledMotionContextMenuContentProps>`\n background-color: ${({ theme }: StyledMotionContextMenuContentProps) => theme['001']};\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: ${({ $shouldHidePopupArrow }) => ($shouldHidePopupArrow ? '6px' : '3px')};\n box-shadow: 1px 3px 8px rgb(0 0 0 / 30%);\n color: ${({ theme }: StyledMotionContextMenuContentProps) => theme.text};\n max-width: 500px;\n pointer-events: all;\n position: absolute;\n z-index: ${({ $zIndex }) => $zIndex};\n\n &::after {\n background-color: inherit;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n border-right: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 2px 2px 8px rgb(4 3 4 / 10%);\n content: '';\n height: 14px;\n position: absolute;\n width: 14px;\n z-index: -2;\n\n ${({ $shouldHidePopupArrow }) =>\n $shouldHidePopupArrow &&\n css`\n display: none;\n `}\n\n ${({ $position }) => {\n switch ($position) {\n case ContextMenuAlignment.TopLeft:\n return css`\n bottom: -7px;\n right: 7px;\n transform: rotate(45deg);\n `;\n case ContextMenuAlignment.BottomLeft:\n return css`\n top: -7px;\n right: 7px;\n transform: rotate(225deg);\n `;\n case ContextMenuAlignment.TopRight:\n return css`\n transform: rotate(45deg);\n bottom: -7px;\n left: 7px;\n `;\n case ContextMenuAlignment.BottomRight:\n return css`\n transform: rotate(225deg);\n top: -7px;\n left: 7px;\n `;\n case ContextMenuAlignment.TopCenter:\n return css`\n bottom: -7px;\n right: 45%;\n transform: rotate(45deg);\n `;\n case ContextMenuAlignment.BottomCenter:\n return css`\n transform: rotate(225deg);\n top: -7px;\n left: 45%;\n `;\n\n default:\n return undefined;\n }\n }}\n }\n\n &::before {\n background-color: inherit;\n bottom: 0;\n content: '';\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n border-radius: ${({ $shouldHidePopupArrow }) => ($shouldHidePopupArrow ? '6px' : '3px')};\n z-index: -1;\n }\n`;\n\nexport const StyledContextMenuContentItem = styled.div`\n position: relative;\n`;\n\ntype StyledContextMenuContentItemSpacerProps = WithTheme<unknown>;\n\nexport const StyledContextMenuContentItemSpacer = styled.div<StyledContextMenuContentItemSpacerProps>`\n background-color: ${({ theme }) => theme['003']};\n height: 1px;\n width: 100%;\n`;\n\ntype StyledContextMenuContentItemWrapperProps = WithTheme<{\n $shouldHidePopupArrow: boolean;\n $isFocused: boolean;\n $isDisabled: boolean;\n}>;\n\nexport const StyledContextMenuContentItemWrapper = styled.div<StyledContextMenuContentItemWrapperProps>`\n align-items: center;\n border-radius: ${({ $shouldHidePopupArrow }) => ($shouldHidePopupArrow ? '3px' : 0)};\n cursor: ${({ $isDisabled }) => ($isDisabled ? 'default' : 'pointer')};\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};\n display: flex;\n gap: 6px;\n margin: ${({ $shouldHidePopupArrow }) => ($shouldHidePopupArrow ? '3px' : 0)};\n overflow: hidden;\n padding: 5px 8px;\n transition: background-color 0.3s ease;\n\n ${({ $isFocused, theme }) =>\n $isFocused &&\n css`\n background-color: ${theme['secondary-103']};\n `}\n\n &:hover {\n background-color: ${({ $isDisabled, theme }) =>\n $isDisabled ? 'transparent' : theme['secondary-103']};\n }\n`;\n\nexport const StyledContextMenuContentItemIconWrapper = styled.div`\n display: flex;\n flex: 0 0 auto;\n justify-content: center;\n width: 20px;\n`;\n\nexport const StyledContextMenuContentHeadline = styled.div`\n width: 100%;\n margin: 3px 6px;\n opacity: 50%;\n font-weight: bold;\n`;\n\nexport const StyledContextMenuContentItemText = styled.div`\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _Icon = _interopRequireDefault(require("../../../icon/Icon"));
9
+ var _Tooltip = _interopRequireDefault(require("../../../tooltip/Tooltip"));
10
+ var _ContextMenuContent = require("../ContextMenuContent.styles");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ const ContextMenuContentItem = ({
14
+ item,
15
+ index,
16
+ isFocused,
17
+ shouldHidePopupArrow,
18
+ onItemFocus
19
+ }) => {
20
+ const disabledReasonId = (0, _react.useId)();
21
+ const [tooltipContainer, setTooltipContainer] = (0, _react.useState)(null);
22
+ const {
23
+ icons,
24
+ text,
25
+ onClick,
26
+ isDisabled = false,
27
+ disabledReason,
28
+ shouldShowSpacer
29
+ } = item;
30
+ let iconElement = null;
31
+ if (/*#__PURE__*/(0, _react.isValidElement)(icons)) {
32
+ iconElement = icons;
33
+ } else if (Array.isArray(icons) && icons.length > 0) {
34
+ iconElement = /*#__PURE__*/_react.default.createElement(_ContextMenuContent.StyledContextMenuContentItemIconWrapper, null, /*#__PURE__*/_react.default.createElement(_Icon.default, {
35
+ icons: icons
36
+ }));
37
+ }
38
+ const content = /*#__PURE__*/_react.default.createElement(_ContextMenuContent.StyledContextMenuContentItemWrapper, {
39
+ onClick: event => {
40
+ if (isDisabled) {
41
+ return;
42
+ }
43
+ event.preventDefault();
44
+ event.stopPropagation();
45
+ void onClick(event);
46
+ },
47
+ tabIndex: 0,
48
+ role: "menuitem",
49
+ "aria-disabled": isDisabled,
50
+ "aria-describedby": isDisabled && disabledReason ? disabledReasonId : undefined,
51
+ $shouldHidePopupArrow: shouldHidePopupArrow,
52
+ $isFocused: isFocused,
53
+ $isDisabled: isDisabled,
54
+ onFocus: () => onItemFocus(index)
55
+ }, iconElement, /*#__PURE__*/_react.default.createElement(_ContextMenuContent.StyledContextMenuContentItemText, null, text));
56
+ return /*#__PURE__*/_react.default.createElement(_ContextMenuContent.StyledContextMenuContentItem, {
57
+ ref: setTooltipContainer,
58
+ className: "context-menu-content-item",
59
+ "data-index": index,
60
+ "aria-disabled": isDisabled,
61
+ onClick: isDisabled ? event => event.stopPropagation() : undefined
62
+ }, isDisabled && disabledReason ? /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
63
+ item: {
64
+ text: disabledReason
65
+ },
66
+ container: tooltipContainer ?? undefined,
67
+ shouldUseFullWidth: true
68
+ }, content) : content, isDisabled && disabledReason && /*#__PURE__*/_react.default.createElement("span", {
69
+ id: disabledReasonId,
70
+ hidden: true
71
+ }, disabledReason), shouldShowSpacer && /*#__PURE__*/_react.default.createElement(_ContextMenuContent.StyledContextMenuContentItemSpacer, null));
72
+ };
73
+ var _default = exports.default = ContextMenuContentItem;
74
+ //# sourceMappingURL=ContextMenuContentItem.js.map
@@ -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":[]}
@@ -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
- void items[result[0]]?.onClick();
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, items.length, shouldCloseOnPopupClick, shouldDisableClick, shouldUseFocusableWrapper]);
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
- if (!shouldCloseOnPopupClick && contextMenuContentRef.current?.contains(event.target)) {
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":[]}