@chayns-components/core 5.0.0-beta.1375 → 5.0.0-beta.1376

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.
@@ -111,7 +111,7 @@ const ContextMenu = /*#__PURE__*/(0, _react2.forwardRef)(({
111
111
  name: text,
112
112
  id: index,
113
113
  isSelected,
114
- icon: /*#__PURE__*/(0, _react2.isValidElement)(icons) ? undefined : icons[0]
114
+ icon: /*#__PURE__*/(0, _react2.isValidElement)(icons) ? undefined : icons === null || icons === void 0 ? void 0 : icons[0]
115
115
  }))
116
116
  }).open();
117
117
  if (result && typeof result[0] === 'number') {
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenu.js","names":["_chaynsApi","require","_react","_react2","_interopRequireWildcard","_reactDom","_uuid","_environment","_Icon","_interopRequireDefault","_ContextMenuContent","_ContextMenu","_ContextMenu2","_ContextMenu3","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ContextMenu","forwardRef","alignment","children","createElement","icons","size","container","coordinates","headline","items","onHide","onShow","shouldCloseOnPopupClick","shouldDisableClick","shouldHidePopupArrow","shouldShowHoverEffect","zIndex","ref","internalCoordinates","setInternalCoordinates","useState","x","y","internalAlignment","setInternalAlignment","ContextMenuAlignment","TopLeft","newContainer","setNewContainer","focusedIndex","setFocusedIndex","getDefaultFocusedIndex","isContentShown","setIsContentShown","portal","setPortal","uuid","useUuid","contextMenuContentRef","useRef","contextMenuRef","isTouch","useIsTouch","useEffect","current","el","element","closest","Element","handleHide","useCallback","handleKey","key","preventDefault","prev","Math","min","length","max","item","onClick","document","addEventListener","removeEventListener","handleShow","result","createDialog","type","DialogType","SELECT","buttons","list","map","text","isSelected","index","name","id","icon","isValidElement","undefined","open","_items$result$","height","childrenHeight","left","childrenLeft","top","childrenTop","width","childrenWidth","getBoundingClientRect","zoomX","offsetWidth","zoomY","offsetHeight","scrollLeft","scrollTop","BottomRight","TopRight","BottomLeft","handleClick","event","stopPropagation","handleDocumentClick","_contextMenuContentRe","contains","target","useImperativeHandle","hide","show","window","createPortal","AnimatePresence","initial","onKeySelect","Fragment","StyledContextMenu","className","$isActive","$shouldAddHoverEffect","displayName","_default","exports"],"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 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 { getDefaultFocusedIndex } from './ContextMenu.utils';\n\nconst ContextMenu = forwardRef<ContextMenuRef, ContextMenuProps>(\n (\n {\n alignment,\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 zIndex = 20,\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\n const uuid = useUuid();\n\n const contextMenuContentRef = useRef<HTMLDivElement>(null);\n const contextMenuRef = useRef<HTMLSpanElement>(null);\n\n const isTouch = useIsTouch();\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 useEffect(() => {\n if (!isContentShown) return () => {};\n\n const handleKey = (e: KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setFocusedIndex((prev) => Math.min(prev + 1, items.length - 1));\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n setFocusedIndex((prev) => Math.max(prev - 1, 0));\n }\n\n if (e.key === 'Enter') {\n e.preventDefault();\n const item = items[focusedIndex];\n if (item) {\n void item.onClick();\n\n if (shouldCloseOnPopupClick) {\n handleHide();\n }\n }\n }\n\n if (e.key === 'Escape') {\n handleHide();\n }\n };\n\n document.addEventListener('keydown', handleKey);\n\n return () => document.removeEventListener('keydown', handleKey);\n }, [isContentShown, items, focusedIndex, handleHide, shouldCloseOnPopupClick]);\n\n const handleShow = useCallback(async () => {\n if (isTouch) {\n const { result } = (await createDialog({\n type: DialogType.SELECT,\n buttons: [],\n list: items.map(({ icons, text, isSelected }, index) => ({\n name: text,\n id: index,\n isSelected,\n icon: isValidElement(icons) ? undefined : (icons as string)[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 = (childrenTop + childrenHeight / 2 - top) / zoomY + newContainer.scrollTop;\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]);\n\n const handleClick = useCallback<MouseEventHandler<HTMLDivElement>>(\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 handleDocumentClick = useCallback<EventListener>(\n (event) => {\n if (\n !shouldCloseOnPopupClick &&\n contextMenuContentRef.current?.contains(event.target as Node)\n ) {\n return;\n }\n\n handleHide();\n },\n [handleHide, shouldCloseOnPopupClick],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleHide,\n show: handleShow,\n }),\n [handleHide, handleShow],\n );\n\n useEffect(() => {\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 }, [handleDocumentClick, handleHide, isContentShown, onHide, onShow]);\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 onKeySelect={(index) => {\n const item = items[index];\n if (item) {\n void item.onClick();\n handleHide();\n }\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 return (\n <>\n <StyledContextMenu\n className=\"beta-chayns-context-menu\"\n $isActive={isContentShown && shouldShowHoverEffect}\n $shouldAddHoverEffect={!isTouch && shouldShowHoverEffect}\n onClick={handleClick}\n ref={contextMenuRef}\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":["_chaynsApi","require","_react","_react2","_interopRequireWildcard","_reactDom","_uuid","_environment","_Icon","_interopRequireDefault","_ContextMenuContent","_ContextMenu","_ContextMenu2","_ContextMenu3","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ContextMenu","forwardRef","alignment","children","createElement","icons","size","container","coordinates","headline","items","onHide","onShow","shouldCloseOnPopupClick","shouldDisableClick","shouldHidePopupArrow","shouldShowHoverEffect","zIndex","ref","internalCoordinates","setInternalCoordinates","useState","x","y","internalAlignment","setInternalAlignment","ContextMenuAlignment","TopLeft","newContainer","setNewContainer","focusedIndex","setFocusedIndex","getDefaultFocusedIndex","isContentShown","setIsContentShown","portal","setPortal","uuid","useUuid","contextMenuContentRef","useRef","contextMenuRef","isTouch","useIsTouch","useEffect","current","el","element","closest","Element","handleHide","useCallback","handleKey","key","preventDefault","prev","Math","min","length","max","item","onClick","document","addEventListener","removeEventListener","handleShow","result","createDialog","type","DialogType","SELECT","buttons","list","map","text","isSelected","index","name","id","icon","isValidElement","undefined","open","_items$result$","height","childrenHeight","left","childrenLeft","top","childrenTop","width","childrenWidth","getBoundingClientRect","zoomX","offsetWidth","zoomY","offsetHeight","scrollLeft","scrollTop","BottomRight","TopRight","BottomLeft","handleClick","event","stopPropagation","handleDocumentClick","_contextMenuContentRe","contains","target","useImperativeHandle","hide","show","window","createPortal","AnimatePresence","initial","onKeySelect","Fragment","StyledContextMenu","className","$isActive","$shouldAddHoverEffect","displayName","_default","exports"],"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 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 { getDefaultFocusedIndex } from './ContextMenu.utils';\n\nconst ContextMenu = forwardRef<ContextMenuRef, ContextMenuProps>(\n (\n {\n alignment,\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 zIndex = 20,\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\n const uuid = useUuid();\n\n const contextMenuContentRef = useRef<HTMLDivElement>(null);\n const contextMenuRef = useRef<HTMLSpanElement>(null);\n\n const isTouch = useIsTouch();\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 useEffect(() => {\n if (!isContentShown) return () => {};\n\n const handleKey = (e: KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setFocusedIndex((prev) => Math.min(prev + 1, items.length - 1));\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n setFocusedIndex((prev) => Math.max(prev - 1, 0));\n }\n\n if (e.key === 'Enter') {\n e.preventDefault();\n const item = items[focusedIndex];\n if (item) {\n void item.onClick();\n\n if (shouldCloseOnPopupClick) {\n handleHide();\n }\n }\n }\n\n if (e.key === 'Escape') {\n handleHide();\n }\n };\n\n document.addEventListener('keydown', handleKey);\n\n return () => document.removeEventListener('keydown', handleKey);\n }, [isContentShown, items, focusedIndex, handleHide, shouldCloseOnPopupClick]);\n\n const handleShow = useCallback(async () => {\n if (isTouch) {\n const { result } = (await createDialog({\n type: DialogType.SELECT,\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 = (childrenTop + childrenHeight / 2 - top) / zoomY + newContainer.scrollTop;\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]);\n\n const handleClick = useCallback<MouseEventHandler<HTMLDivElement>>(\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 handleDocumentClick = useCallback<EventListener>(\n (event) => {\n if (\n !shouldCloseOnPopupClick &&\n contextMenuContentRef.current?.contains(event.target as Node)\n ) {\n return;\n }\n\n handleHide();\n },\n [handleHide, shouldCloseOnPopupClick],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleHide,\n show: handleShow,\n }),\n [handleHide, handleShow],\n );\n\n useEffect(() => {\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 }, [handleDocumentClick, handleHide, isContentShown, onHide, onShow]);\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 onKeySelect={(index) => {\n const item = items[index];\n if (item) {\n void item.onClick();\n handleHide();\n }\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 return (\n <>\n <StyledContextMenu\n className=\"beta-chayns-context-menu\"\n $isActive={isContentShown && shouldShowHoverEffect}\n $shouldAddHoverEffect={!isTouch && shouldShowHoverEffect}\n onClick={handleClick}\n ref={contextMenuRef}\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":[]}
@@ -103,7 +103,7 @@ const ContextMenu = /*#__PURE__*/forwardRef(({
103
103
  name: text,
104
104
  id: index,
105
105
  isSelected,
106
- icon: /*#__PURE__*/isValidElement(icons) ? undefined : icons[0]
106
+ icon: /*#__PURE__*/isValidElement(icons) ? undefined : icons?.[0]
107
107
  }))
108
108
  }).open();
109
109
  if (result && typeof result[0] === 'number') {
@@ -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","getDefaultFocusedIndex","ContextMenu","alignment","children","createElement","icons","size","container","coordinates","headline","items","onHide","onShow","shouldCloseOnPopupClick","shouldDisableClick","shouldHidePopupArrow","shouldShowHoverEffect","zIndex","ref","internalCoordinates","setInternalCoordinates","x","y","internalAlignment","setInternalAlignment","TopLeft","newContainer","setNewContainer","focusedIndex","setFocusedIndex","isContentShown","setIsContentShown","portal","setPortal","uuid","contextMenuContentRef","contextMenuRef","isTouch","current","el","element","closest","Element","handleHide","handleKey","e","key","preventDefault","prev","Math","min","length","max","item","onClick","document","addEventListener","removeEventListener","handleShow","result","type","SELECT","buttons","list","map","text","isSelected","index","name","id","icon","undefined","open","height","childrenHeight","left","childrenLeft","top","childrenTop","width","childrenWidth","getBoundingClientRect","zoomX","offsetWidth","zoomY","offsetHeight","scrollLeft","scrollTop","BottomRight","TopRight","BottomLeft","handleClick","event","stopPropagation","handleDocumentClick","contains","target","hide","show","window","initial","onKeySelect","Fragment","className","$isActive","$shouldAddHoverEffect","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 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 { getDefaultFocusedIndex } from './ContextMenu.utils';\n\nconst ContextMenu = forwardRef<ContextMenuRef, ContextMenuProps>(\n (\n {\n alignment,\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 zIndex = 20,\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\n const uuid = useUuid();\n\n const contextMenuContentRef = useRef<HTMLDivElement>(null);\n const contextMenuRef = useRef<HTMLSpanElement>(null);\n\n const isTouch = useIsTouch();\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 useEffect(() => {\n if (!isContentShown) return () => {};\n\n const handleKey = (e: KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setFocusedIndex((prev) => Math.min(prev + 1, items.length - 1));\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n setFocusedIndex((prev) => Math.max(prev - 1, 0));\n }\n\n if (e.key === 'Enter') {\n e.preventDefault();\n const item = items[focusedIndex];\n if (item) {\n void item.onClick();\n\n if (shouldCloseOnPopupClick) {\n handleHide();\n }\n }\n }\n\n if (e.key === 'Escape') {\n handleHide();\n }\n };\n\n document.addEventListener('keydown', handleKey);\n\n return () => document.removeEventListener('keydown', handleKey);\n }, [isContentShown, items, focusedIndex, handleHide, shouldCloseOnPopupClick]);\n\n const handleShow = useCallback(async () => {\n if (isTouch) {\n const { result } = (await createDialog({\n type: DialogType.SELECT,\n buttons: [],\n list: items.map(({ icons, text, isSelected }, index) => ({\n name: text,\n id: index,\n isSelected,\n icon: isValidElement(icons) ? undefined : (icons as string)[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 = (childrenTop + childrenHeight / 2 - top) / zoomY + newContainer.scrollTop;\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]);\n\n const handleClick = useCallback<MouseEventHandler<HTMLDivElement>>(\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 handleDocumentClick = useCallback<EventListener>(\n (event) => {\n if (\n !shouldCloseOnPopupClick &&\n contextMenuContentRef.current?.contains(event.target as Node)\n ) {\n return;\n }\n\n handleHide();\n },\n [handleHide, shouldCloseOnPopupClick],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleHide,\n show: handleShow,\n }),\n [handleHide, handleShow],\n );\n\n useEffect(() => {\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 }, [handleDocumentClick, handleHide, isContentShown, onHide, onShow]);\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 onKeySelect={(index) => {\n const item = items[index];\n if (item) {\n void item.onClick();\n handleHide();\n }\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 return (\n <>\n <StyledContextMenu\n className=\"beta-chayns-context-menu\"\n $isActive={isContentShown && shouldShowHoverEffect}\n $shouldAddHoverEffect={!isTouch && shouldShowHoverEffect}\n onClick={handleClick}\n ref={contextMenuRef}\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","getDefaultFocusedIndex","ContextMenu","alignment","children","createElement","icons","size","container","coordinates","headline","items","onHide","onShow","shouldCloseOnPopupClick","shouldDisableClick","shouldHidePopupArrow","shouldShowHoverEffect","zIndex","ref","internalCoordinates","setInternalCoordinates","x","y","internalAlignment","setInternalAlignment","TopLeft","newContainer","setNewContainer","focusedIndex","setFocusedIndex","isContentShown","setIsContentShown","portal","setPortal","uuid","contextMenuContentRef","contextMenuRef","isTouch","current","el","element","closest","Element","handleHide","handleKey","e","key","preventDefault","prev","Math","min","length","max","item","onClick","document","addEventListener","removeEventListener","handleShow","result","type","SELECT","buttons","list","map","text","isSelected","index","name","id","icon","undefined","open","height","childrenHeight","left","childrenLeft","top","childrenTop","width","childrenWidth","getBoundingClientRect","zoomX","offsetWidth","zoomY","offsetHeight","scrollLeft","scrollTop","BottomRight","TopRight","BottomLeft","handleClick","event","stopPropagation","handleDocumentClick","contains","target","hide","show","window","initial","onKeySelect","Fragment","className","$isActive","$shouldAddHoverEffect","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 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 { getDefaultFocusedIndex } from './ContextMenu.utils';\n\nconst ContextMenu = forwardRef<ContextMenuRef, ContextMenuProps>(\n (\n {\n alignment,\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 zIndex = 20,\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\n const uuid = useUuid();\n\n const contextMenuContentRef = useRef<HTMLDivElement>(null);\n const contextMenuRef = useRef<HTMLSpanElement>(null);\n\n const isTouch = useIsTouch();\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 useEffect(() => {\n if (!isContentShown) return () => {};\n\n const handleKey = (e: KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setFocusedIndex((prev) => Math.min(prev + 1, items.length - 1));\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n setFocusedIndex((prev) => Math.max(prev - 1, 0));\n }\n\n if (e.key === 'Enter') {\n e.preventDefault();\n const item = items[focusedIndex];\n if (item) {\n void item.onClick();\n\n if (shouldCloseOnPopupClick) {\n handleHide();\n }\n }\n }\n\n if (e.key === 'Escape') {\n handleHide();\n }\n };\n\n document.addEventListener('keydown', handleKey);\n\n return () => document.removeEventListener('keydown', handleKey);\n }, [isContentShown, items, focusedIndex, handleHide, shouldCloseOnPopupClick]);\n\n const handleShow = useCallback(async () => {\n if (isTouch) {\n const { result } = (await createDialog({\n type: DialogType.SELECT,\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 = (childrenTop + childrenHeight / 2 - top) / zoomY + newContainer.scrollTop;\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]);\n\n const handleClick = useCallback<MouseEventHandler<HTMLDivElement>>(\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 handleDocumentClick = useCallback<EventListener>(\n (event) => {\n if (\n !shouldCloseOnPopupClick &&\n contextMenuContentRef.current?.contains(event.target as Node)\n ) {\n return;\n }\n\n handleHide();\n },\n [handleHide, shouldCloseOnPopupClick],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n hide: handleHide,\n show: handleShow,\n }),\n [handleHide, handleShow],\n );\n\n useEffect(() => {\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 }, [handleDocumentClick, handleHide, isContentShown, onHide, onShow]);\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 onKeySelect={(index) => {\n const item = items[index];\n if (item) {\n void item.onClick();\n handleHide();\n }\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 return (\n <>\n <StyledContextMenu\n className=\"beta-chayns-context-menu\"\n $isActive={isContentShown && shouldShowHoverEffect}\n $shouldAddHoverEffect={!isTouch && shouldShowHoverEffect}\n onClick={handleClick}\n ref={contextMenuRef}\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":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chayns-components/core",
3
- "version": "5.0.0-beta.1375",
3
+ "version": "5.0.0-beta.1376",
4
4
  "description": "A set of beautiful React components for developing your own applications with chayns.",
5
5
  "sideEffects": false,
6
6
  "browserslist": [
@@ -86,5 +86,5 @@
86
86
  "publishConfig": {
87
87
  "access": "public"
88
88
  },
89
- "gitHead": "b994b3536544237c83df0d3aa16683c6ef46feab"
89
+ "gitHead": "fc73f4a3b7b5d4b0f7d2804b4ddd1e45ac1871af"
90
90
  }