@chayns-components/navigation 5.0.64 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/components/navigation-layout/NavigationLayout.constants.js +14 -0
- package/lib/cjs/components/navigation-layout/NavigationLayout.constants.js.map +1 -0
- package/lib/cjs/components/navigation-layout/NavigationLayout.context.js +26 -0
- package/lib/cjs/components/navigation-layout/NavigationLayout.context.js.map +1 -0
- package/lib/cjs/components/navigation-layout/NavigationLayout.js +105 -0
- package/lib/cjs/components/navigation-layout/NavigationLayout.js.map +1 -0
- package/lib/cjs/components/navigation-layout/NavigationLayout.styles.js +74 -0
- package/lib/cjs/components/navigation-layout/NavigationLayout.styles.js.map +1 -0
- package/lib/cjs/components/navigation-layout/NavigationLayout.types.js +6 -0
- package/lib/cjs/components/navigation-layout/NavigationLayout.types.js.map +1 -0
- package/lib/cjs/components/navigation-layout/NavigationLayout.utils.js +261 -0
- package/lib/cjs/components/navigation-layout/NavigationLayout.utils.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-header/NavigationHeader.js +31 -0
- package/lib/cjs/components/navigation-layout/navigation-header/NavigationHeader.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-header/NavigationHeader.styles.js +30 -0
- package/lib/cjs/components/navigation-layout/navigation-header/NavigationHeader.styles.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-header/NavigationHeader.types.js +6 -0
- package/lib/cjs/components/navigation-layout/navigation-header/NavigationHeader.types.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.js +71 -0
- package/lib/cjs/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.styles.js +19 -0
- package/lib/cjs/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.styles.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.context.js +26 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.context.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.js +140 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.styles.js +89 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.styles.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.types.js +6 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.types.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.utils.js +83 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/NavigationSidebar.utils.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.js +17 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.styles.js +19 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.styles.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.context.js +26 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.context.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.hooks.js +129 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.hooks.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.js +79 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.styles.js +69 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.styles.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.hooks.js +265 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.hooks.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.js +193 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.styles.js +132 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.styles.js.map +1 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.utils.js +78 -0
- package/lib/cjs/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.utils.js.map +1 -0
- package/lib/cjs/components/split-layout/SplitLayout.js +90 -0
- package/lib/cjs/components/split-layout/SplitLayout.js.map +1 -0
- package/lib/cjs/components/split-layout/SplitLayout.styles.js +44 -0
- package/lib/cjs/components/split-layout/SplitLayout.styles.js.map +1 -0
- package/lib/cjs/components/split-layout/SplitLayout.types.js +12 -0
- package/lib/cjs/components/split-layout/SplitLayout.types.js.map +1 -0
- package/lib/cjs/components/split-layout/SplitLayout.utils.js +25 -0
- package/lib/cjs/components/split-layout/SplitLayout.utils.js.map +1 -0
- package/lib/cjs/components/split-layout/resize-handle/ResizeHandle.hooks.js +63 -0
- package/lib/cjs/components/split-layout/resize-handle/ResizeHandle.hooks.js.map +1 -0
- package/lib/cjs/components/split-layout/resize-handle/ResizeHandle.js +34 -0
- package/lib/cjs/components/split-layout/resize-handle/ResizeHandle.js.map +1 -0
- package/lib/cjs/components/split-layout/resize-handle/ResizeHandle.styles.js +58 -0
- package/lib/cjs/components/split-layout/resize-handle/ResizeHandle.styles.js.map +1 -0
- package/lib/cjs/components/user-image/UserImage.js +38 -0
- package/lib/cjs/components/user-image/UserImage.js.map +1 -0
- package/lib/cjs/components/user-image/UserImage.types.js +6 -0
- package/lib/cjs/components/user-image/UserImage.types.js.map +1 -0
- package/lib/cjs/components/user-image/userImage.styles.js +27 -0
- package/lib/cjs/components/user-image/userImage.styles.js.map +1 -0
- package/lib/cjs/index.js +49 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/esm/components/navigation-layout/NavigationLayout.constants.js +8 -0
- package/lib/esm/components/navigation-layout/NavigationLayout.constants.js.map +1 -0
- package/lib/esm/components/navigation-layout/NavigationLayout.context.js +17 -0
- package/lib/esm/components/navigation-layout/NavigationLayout.context.js.map +1 -0
- package/lib/esm/components/navigation-layout/NavigationLayout.js +97 -0
- package/lib/esm/components/navigation-layout/NavigationLayout.js.map +1 -0
- package/lib/esm/components/navigation-layout/NavigationLayout.styles.js +67 -0
- package/lib/esm/components/navigation-layout/NavigationLayout.styles.js.map +1 -0
- package/lib/esm/components/navigation-layout/NavigationLayout.types.js +2 -0
- package/lib/esm/components/navigation-layout/NavigationLayout.types.js.map +1 -0
- package/lib/esm/components/navigation-layout/NavigationLayout.utils.js +251 -0
- package/lib/esm/components/navigation-layout/NavigationLayout.utils.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-header/NavigationHeader.js +24 -0
- package/lib/esm/components/navigation-layout/navigation-header/NavigationHeader.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-header/NavigationHeader.styles.js +23 -0
- package/lib/esm/components/navigation-layout/navigation-header/NavigationHeader.styles.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-header/NavigationHeader.types.js +2 -0
- package/lib/esm/components/navigation-layout/navigation-header/NavigationHeader.types.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.js +64 -0
- package/lib/esm/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.styles.js +12 -0
- package/lib/esm/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.styles.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.context.js +17 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.context.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.js +132 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.styles.js +82 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.styles.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.types.js +2 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.types.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.utils.js +73 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/NavigationSidebar.utils.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.js +10 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.styles.js +12 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.styles.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.context.js +17 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.context.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.hooks.js +119 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.hooks.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.js +71 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.styles.js +62 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.styles.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.hooks.js +257 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.hooks.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.js +186 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.styles.js +126 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.styles.js.map +1 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.utils.js +67 -0
- package/lib/esm/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.utils.js.map +1 -0
- package/lib/esm/components/split-layout/SplitLayout.js +80 -0
- package/lib/esm/components/split-layout/SplitLayout.js.map +1 -0
- package/lib/esm/components/split-layout/SplitLayout.styles.js +37 -0
- package/lib/esm/components/split-layout/SplitLayout.styles.js.map +1 -0
- package/lib/esm/components/split-layout/SplitLayout.types.js +6 -0
- package/lib/esm/components/split-layout/SplitLayout.types.js.map +1 -0
- package/lib/esm/components/split-layout/SplitLayout.utils.js +17 -0
- package/lib/esm/components/split-layout/SplitLayout.utils.js.map +1 -0
- package/lib/esm/components/split-layout/resize-handle/ResizeHandle.hooks.js +54 -0
- package/lib/esm/components/split-layout/resize-handle/ResizeHandle.hooks.js.map +1 -0
- package/lib/esm/components/split-layout/resize-handle/ResizeHandle.js +27 -0
- package/lib/esm/components/split-layout/resize-handle/ResizeHandle.js.map +1 -0
- package/lib/esm/components/split-layout/resize-handle/ResizeHandle.styles.js +52 -0
- package/lib/esm/components/split-layout/resize-handle/ResizeHandle.styles.js.map +1 -0
- package/lib/esm/components/user-image/UserImage.js +31 -0
- package/lib/esm/components/user-image/UserImage.js.map +1 -0
- package/lib/esm/components/user-image/UserImage.types.js +2 -0
- package/lib/esm/components/user-image/UserImage.types.js.map +1 -0
- package/lib/esm/components/user-image/userImage.styles.js +20 -0
- package/lib/esm/components/user-image/userImage.styles.js.map +1 -0
- package/lib/esm/index.js +15 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/types/components/navigation-layout/NavigationLayout.constants.d.ts +7 -0
- package/lib/types/components/navigation-layout/NavigationLayout.context.d.ts +15 -0
- package/lib/types/components/navigation-layout/NavigationLayout.d.ts +4 -0
- package/lib/types/components/navigation-layout/NavigationLayout.styles.d.ts +19 -0
- package/lib/types/components/navigation-layout/NavigationLayout.types.d.ts +125 -0
- package/lib/types/components/navigation-layout/NavigationLayout.utils.d.ts +22 -0
- package/lib/types/components/navigation-layout/navigation-header/NavigationHeader.d.ts +4 -0
- package/lib/types/components/navigation-layout/navigation-header/NavigationHeader.styles.d.ts +9 -0
- package/lib/types/components/navigation-layout/navigation-header/NavigationHeader.types.d.ts +10 -0
- package/lib/types/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.d.ts +8 -0
- package/lib/types/components/navigation-layout/navigation-header/menu-toggle/MenuToggle.styles.d.ts +3 -0
- package/lib/types/components/navigation-layout/navigation-sidebar/NavigationSidebar.context.d.ts +19 -0
- package/lib/types/components/navigation-layout/navigation-sidebar/NavigationSidebar.d.ts +4 -0
- package/lib/types/components/navigation-layout/navigation-sidebar/NavigationSidebar.styles.d.ts +27 -0
- package/lib/types/components/navigation-layout/navigation-sidebar/NavigationSidebar.types.d.ts +54 -0
- package/lib/types/components/navigation-layout/navigation-sidebar/NavigationSidebar.utils.d.ts +22 -0
- package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.d.ts +6 -0
- package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-divider/SidebarDivider.styles.d.ts +6 -0
- package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.context.d.ts +22 -0
- package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.d.ts +9 -0
- package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.hooks.d.ts +26 -0
- package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-group/SidebarGroup.styles.d.ts +9 -0
- package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.d.ts +10 -0
- package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.hooks.d.ts +51 -0
- package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.styles.d.ts +24 -0
- package/lib/types/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.utils.d.ts +23 -0
- package/lib/types/components/split-layout/SplitLayout.d.ts +4 -0
- package/lib/types/components/split-layout/SplitLayout.styles.d.ts +12 -0
- package/lib/types/components/split-layout/SplitLayout.types.d.ts +19 -0
- package/lib/types/components/split-layout/SplitLayout.utils.d.ts +8 -0
- package/lib/types/components/split-layout/resize-handle/ResizeHandle.d.ts +11 -0
- package/lib/types/components/split-layout/resize-handle/ResizeHandle.hooks.d.ts +9 -0
- package/lib/types/components/split-layout/resize-handle/ResizeHandle.styles.d.ts +15 -0
- package/lib/types/components/user-image/UserImage.d.ts +4 -0
- package/lib/types/components/user-image/UserImage.types.d.ts +8 -0
- package/lib/types/components/user-image/userImage.styles.d.ts +10 -0
- package/lib/types/index.d.ts +10 -2
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarItem.hooks.js","names":["_react","require","_SidebarItem","_NavigationLayout","setDragMoveEffect","event","dataTransfer","dropEffect","resolveSidebarContainer","item","closest","document","getElementById","useSidebarItemPopup","isDisabled","shouldShowCollapsedLabel","coordinates","setCoordinates","useState","isHovered","setIsHovered","popupContainer","setPopupContainer","animationFrameIdRef","useRef","lastCoordinatesRef","itemRef","resetCoordinates","useCallback","current","resolvePopupContainer","nextContainer","previousContainer","updateCoordinates","itemElement","nextCoordinates","getSidebarItemPopupCoordinates","container","areCoordinatesEqual","coordinatesA","coordinatesB","scheduleCoordinatesUpdate","requestAnimationFrame","handleMouseEnter","handleMouseLeave","useEffect","undefined","resizeObserver","ResizeObserver","observe","scrollableElements","getScrollableAncestorElements","element","boundaryElement","forEach","addEventListener","passive","window","removeEventListener","disconnect","cancelAnimationFrame","shouldRenderPopup","exports","useSidebarItemReorder","childItems","draggedItemId","dropTarget","id","index","isReorderEnabled","onDragEnd","onDragStart","onDrop","onDropInside","onDropTargetChange","parentIds","childParentIds","useMemo","canDragItem","canDropInsideItem","currentItem","itemId","beforeTarget","placement","insideTarget","length","childListEndTarget","lastChild","isBeforeDropTargetActive","isNavigationLayoutReorderTargetEqual","targetA","targetB","isInsideDropTargetActive","isChildListEndTargetActive","handleDragStart","handleResolvedDragEnd","handleBeforeDragOver","preventDefault","handleBeforeDrop","stopPropagation","handleInsideDragOver","handleInsideDrop","handleChildListEndDragOver","handleChildListEndDrop","handleDragEnd","isDragging"],"sources":["../../../../../../../src/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.hooks.ts"],"sourcesContent":["import { RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n areCoordinatesEqual,\n Coordinates,\n getScrollableAncestorElements,\n getSidebarItemPopupCoordinates,\n} from './SidebarItem.utils';\nimport {\n NavigationLayoutItem,\n NavigationLayoutItemReorderSource,\n NavigationLayoutItemReorderTarget,\n} from '../../../NavigationLayout.types';\nimport { isNavigationLayoutReorderTargetEqual } from '../../../NavigationLayout.utils';\n\nexport interface UseSidebarItemPopupOptions {\n isDisabled: boolean;\n shouldShowCollapsedLabel?: boolean;\n}\n\nexport interface UseSidebarItemPopupResult {\n coordinates: Coordinates | null;\n handleMouseEnter: () => void;\n handleMouseLeave: () => void;\n isHovered: boolean;\n itemRef: RefObject<HTMLDivElement>;\n popupContainer: HTMLElement | null;\n shouldRenderPopup: boolean;\n}\n\nexport interface UseSidebarItemReorderOptions {\n childItems: NavigationLayoutItem['children'];\n draggedItemId?: NavigationLayoutItem['id'];\n dropTarget: NavigationLayoutItemReorderTarget | null;\n id: NavigationLayoutItem['id'];\n index: number;\n isDisabled?: NavigationLayoutItem['isDisabled'];\n isReorderEnabled: boolean;\n onDragEnd: VoidFunction;\n onDragStart: (\n event: React.DragEvent<HTMLDivElement>,\n item: NavigationLayoutItemReorderSource,\n ) => void;\n onDrop: (target: NavigationLayoutItemReorderTarget) => void;\n onDropInside?: VoidFunction;\n onDropTargetChange: (target: NavigationLayoutItemReorderTarget) => void;\n parentIds: NavigationLayoutItem['id'][];\n}\n\nexport interface UseSidebarItemReorderResult {\n canDragItem: boolean;\n canDropInsideItem: boolean;\n childParentIds: NavigationLayoutItem['id'][];\n childListEndTarget: NavigationLayoutItemReorderTarget | null;\n handleBeforeDragOver: (event: React.DragEvent<HTMLDivElement>) => void;\n handleBeforeDrop: (event: React.DragEvent<HTMLDivElement>) => void;\n handleChildListEndDragOver: (event: React.DragEvent<HTMLDivElement>) => void;\n handleChildListEndDrop: (event: React.DragEvent<HTMLDivElement>) => void;\n handleDragEnd: VoidFunction;\n handleDragStart: (event: React.DragEvent<HTMLDivElement>) => void;\n handleInsideDragOver: (event: React.DragEvent<HTMLDivElement>) => void;\n handleInsideDrop: (event: React.DragEvent<HTMLDivElement>) => void;\n isBeforeDropTargetActive: boolean;\n isChildListEndTargetActive: boolean;\n isDragging: boolean;\n isInsideDropTargetActive: boolean;\n}\n\nconst setDragMoveEffect = (event: React.DragEvent<HTMLDivElement>): void => {\n const { dataTransfer } = event;\n\n dataTransfer.dropEffect = 'move';\n};\n\nconst resolveSidebarContainer = (item: HTMLDivElement | null): HTMLElement | null => {\n if (!item) {\n return null;\n }\n\n return (\n item.closest<HTMLElement>('[data-navigation-sidebar-root=\"true\"]') ??\n document.getElementById('sidebar')\n );\n};\n\nexport const useSidebarItemPopup = ({\n isDisabled,\n shouldShowCollapsedLabel,\n}: UseSidebarItemPopupOptions): UseSidebarItemPopupResult => {\n const [coordinates, setCoordinates] = useState<Coordinates | null>(null);\n const [isHovered, setIsHovered] = useState(false);\n const [popupContainer, setPopupContainer] = useState<HTMLElement | null>(null);\n\n const animationFrameIdRef = useRef<number | null>(null);\n const lastCoordinatesRef = useRef<Coordinates | null>(null);\n const itemRef = useRef<HTMLDivElement>(null);\n\n const resetCoordinates = useCallback(() => {\n lastCoordinatesRef.current = null;\n setCoordinates(null);\n }, []);\n\n const resolvePopupContainer = useCallback(() => {\n const nextContainer = resolveSidebarContainer(itemRef.current);\n\n setPopupContainer((previousContainer) =>\n previousContainer === nextContainer ? previousContainer : nextContainer,\n );\n\n return nextContainer;\n }, []);\n\n const updateCoordinates = useCallback(() => {\n const nextContainer = popupContainer ?? resolvePopupContainer();\n const itemElement = itemRef.current;\n\n if (!nextContainer || !itemElement) {\n resetCoordinates();\n\n return;\n }\n\n const nextCoordinates = getSidebarItemPopupCoordinates({\n container: nextContainer,\n item: itemElement,\n });\n\n if (\n areCoordinatesEqual({\n coordinatesA: lastCoordinatesRef.current,\n coordinatesB: nextCoordinates,\n })\n ) {\n return;\n }\n\n lastCoordinatesRef.current = nextCoordinates;\n setCoordinates(nextCoordinates);\n }, [popupContainer, resetCoordinates, resolvePopupContainer]);\n\n const scheduleCoordinatesUpdate = useCallback(() => {\n if (animationFrameIdRef.current !== null) {\n return;\n }\n\n animationFrameIdRef.current = requestAnimationFrame(() => {\n animationFrameIdRef.current = null;\n updateCoordinates();\n });\n }, [updateCoordinates]);\n\n const handleMouseEnter = useCallback(() => {\n resolvePopupContainer();\n setIsHovered(true);\n scheduleCoordinatesUpdate();\n }, [resolvePopupContainer, scheduleCoordinatesUpdate]);\n\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false);\n resetCoordinates();\n }, [resetCoordinates]);\n\n useEffect(() => {\n resolvePopupContainer();\n }, [resolvePopupContainer]);\n\n useEffect(() => {\n if (!isHovered || isDisabled || !shouldShowCollapsedLabel) {\n resetCoordinates();\n\n return undefined;\n }\n\n const nextContainer = popupContainer ?? resolvePopupContainer();\n const itemElement = itemRef.current;\n\n if (!nextContainer || !itemElement) {\n return undefined;\n }\n\n scheduleCoordinatesUpdate();\n\n const resizeObserver =\n typeof ResizeObserver === 'undefined'\n ? null\n : new ResizeObserver(() => {\n scheduleCoordinatesUpdate();\n });\n\n resizeObserver?.observe(nextContainer);\n resizeObserver?.observe(itemElement);\n\n const scrollableElements = getScrollableAncestorElements({\n element: itemElement,\n boundaryElement: nextContainer,\n });\n\n scrollableElements.forEach((element) => {\n element.addEventListener('scroll', scheduleCoordinatesUpdate, { passive: true });\n });\n\n window.addEventListener('resize', scheduleCoordinatesUpdate);\n\n return () => {\n scrollableElements.forEach((element) => {\n element.removeEventListener('scroll', scheduleCoordinatesUpdate);\n });\n\n window.removeEventListener('resize', scheduleCoordinatesUpdate);\n resizeObserver?.disconnect();\n\n if (animationFrameIdRef.current !== null) {\n cancelAnimationFrame(animationFrameIdRef.current);\n animationFrameIdRef.current = null;\n }\n };\n }, [\n isDisabled,\n isHovered,\n popupContainer,\n resetCoordinates,\n resolvePopupContainer,\n scheduleCoordinatesUpdate,\n shouldShowCollapsedLabel,\n ]);\n\n return {\n coordinates,\n handleMouseEnter,\n handleMouseLeave,\n isHovered,\n itemRef,\n popupContainer,\n shouldRenderPopup: !isDisabled && !!shouldShowCollapsedLabel && isHovered && !!coordinates,\n };\n};\n\nexport const useSidebarItemReorder = ({\n childItems,\n draggedItemId,\n dropTarget,\n id,\n index,\n isDisabled,\n isReorderEnabled,\n onDragEnd,\n onDragStart,\n onDrop,\n onDropInside,\n onDropTargetChange,\n parentIds,\n}: UseSidebarItemReorderOptions): UseSidebarItemReorderResult => {\n const childParentIds = useMemo(() => [...parentIds, id], [id, parentIds]);\n const canDragItem = isReorderEnabled && !isDisabled;\n const canDropInsideItem = isReorderEnabled && !isDisabled;\n\n const currentItem = useMemo<NavigationLayoutItemReorderSource>(\n () => ({\n itemId: id,\n parentIds,\n index,\n }),\n [id, index, parentIds],\n );\n\n const beforeTarget = useMemo<NavigationLayoutItemReorderTarget>(\n () => ({\n itemId: id,\n parentIds,\n index,\n placement: 'before',\n }),\n [id, index, parentIds],\n );\n\n const insideTarget = useMemo<NavigationLayoutItemReorderTarget>(\n () => ({\n itemId: id,\n parentIds: childParentIds,\n index: childItems?.length ?? 0,\n placement: 'inside',\n }),\n [childItems, childParentIds, id],\n );\n\n const childListEndTarget = useMemo<NavigationLayoutItemReorderTarget | null>(() => {\n const lastChild = childItems?.[childItems.length - 1];\n\n if (!lastChild) {\n return null;\n }\n\n return {\n itemId: lastChild.id,\n parentIds: childParentIds,\n index: childItems.length,\n placement: 'after',\n };\n }, [childItems, childParentIds]);\n\n const isBeforeDropTargetActive = useMemo(\n () =>\n isNavigationLayoutReorderTargetEqual({\n targetA: dropTarget,\n targetB: beforeTarget,\n }),\n [beforeTarget, dropTarget],\n );\n\n const isInsideDropTargetActive = useMemo(\n () =>\n isNavigationLayoutReorderTargetEqual({\n targetA: dropTarget,\n targetB: insideTarget,\n }),\n [dropTarget, insideTarget],\n );\n\n const isChildListEndTargetActive = useMemo(\n () =>\n isNavigationLayoutReorderTargetEqual({\n targetA: dropTarget,\n targetB: childListEndTarget,\n }),\n [childListEndTarget, dropTarget],\n );\n\n const handleDragStart = useCallback(\n (event: React.DragEvent<HTMLDivElement>): void => {\n if (!canDragItem) {\n return;\n }\n\n onDragStart(event, currentItem);\n },\n [canDragItem, currentItem, onDragStart],\n );\n\n const handleResolvedDragEnd = useCallback((): void => {\n if (!canDragItem) {\n return;\n }\n\n onDragEnd();\n }, [canDragItem, onDragEnd]);\n\n const handleBeforeDragOver = useCallback(\n (event: React.DragEvent<HTMLDivElement>): void => {\n event.preventDefault();\n setDragMoveEffect(event);\n onDropTargetChange(beforeTarget);\n },\n [beforeTarget, onDropTargetChange],\n );\n\n const handleBeforeDrop = useCallback(\n (event: React.DragEvent<HTMLDivElement>): void => {\n event.preventDefault();\n event.stopPropagation();\n onDrop(beforeTarget);\n },\n [beforeTarget, onDrop],\n );\n\n const handleInsideDragOver = useCallback(\n (event: React.DragEvent<HTMLDivElement>): void => {\n if (!canDropInsideItem) {\n return;\n }\n\n event.preventDefault();\n setDragMoveEffect(event);\n onDropTargetChange(insideTarget);\n },\n [canDropInsideItem, insideTarget, onDropTargetChange],\n );\n\n const handleInsideDrop = useCallback(\n (event: React.DragEvent<HTMLDivElement>): void => {\n if (!canDropInsideItem) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n onDropInside?.();\n onDrop(insideTarget);\n },\n [canDropInsideItem, insideTarget, onDrop, onDropInside],\n );\n\n const handleChildListEndDragOver = useCallback(\n (event: React.DragEvent<HTMLDivElement>): void => {\n if (!childListEndTarget) {\n return;\n }\n\n event.preventDefault();\n setDragMoveEffect(event);\n onDropTargetChange(childListEndTarget);\n },\n [childListEndTarget, onDropTargetChange],\n );\n\n const handleChildListEndDrop = useCallback(\n (event: React.DragEvent<HTMLDivElement>): void => {\n if (!childListEndTarget) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n onDrop(childListEndTarget);\n },\n [childListEndTarget, onDrop],\n );\n\n return {\n canDragItem,\n canDropInsideItem,\n childParentIds,\n childListEndTarget,\n handleBeforeDragOver,\n handleBeforeDrop,\n handleChildListEndDragOver,\n handleChildListEndDrop,\n handleDragEnd: handleResolvedDragEnd,\n handleDragStart,\n handleInsideDragOver,\n handleInsideDrop,\n isBeforeDropTargetActive,\n isChildListEndTargetActive,\n isDragging: draggedItemId === id,\n isInsideDropTargetActive,\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAWA,IAAAE,iBAAA,GAAAF,OAAA;AAuDA,MAAMG,iBAAiB,GAAIC,KAAsC,IAAW;EACxE,MAAM;IAAEC;EAAa,CAAC,GAAGD,KAAK;EAE9BC,YAAY,CAACC,UAAU,GAAG,MAAM;AACpC,CAAC;AAED,MAAMC,uBAAuB,GAAIC,IAA2B,IAAyB;EACjF,IAAI,CAACA,IAAI,EAAE;IACP,OAAO,IAAI;EACf;EAEA,OACIA,IAAI,CAACC,OAAO,CAAc,uCAAuC,CAAC,IAClEC,QAAQ,CAACC,cAAc,CAAC,SAAS,CAAC;AAE1C,CAAC;AAEM,MAAMC,mBAAmB,GAAGA,CAAC;EAChCC,UAAU;EACVC;AACwB,CAAC,KAAgC;EACzD,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAG,IAAAC,eAAQ,EAAqB,IAAI,CAAC;EACxE,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAG,IAAAF,eAAQ,EAAC,KAAK,CAAC;EACjD,MAAM,CAACG,cAAc,EAAEC,iBAAiB,CAAC,GAAG,IAAAJ,eAAQ,EAAqB,IAAI,CAAC;EAE9E,MAAMK,mBAAmB,GAAG,IAAAC,aAAM,EAAgB,IAAI,CAAC;EACvD,MAAMC,kBAAkB,GAAG,IAAAD,aAAM,EAAqB,IAAI,CAAC;EAC3D,MAAME,OAAO,GAAG,IAAAF,aAAM,EAAiB,IAAI,CAAC;EAE5C,MAAMG,gBAAgB,GAAG,IAAAC,kBAAW,EAAC,MAAM;IACvCH,kBAAkB,CAACI,OAAO,GAAG,IAAI;IACjCZ,cAAc,CAAC,IAAI,CAAC;EACxB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMa,qBAAqB,GAAG,IAAAF,kBAAW,EAAC,MAAM;IAC5C,MAAMG,aAAa,GAAGvB,uBAAuB,CAACkB,OAAO,CAACG,OAAO,CAAC;IAE9DP,iBAAiB,CAAEU,iBAAiB,IAChCA,iBAAiB,KAAKD,aAAa,GAAGC,iBAAiB,GAAGD,aAC9D,CAAC;IAED,OAAOA,aAAa;EACxB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,iBAAiB,GAAG,IAAAL,kBAAW,EAAC,MAAM;IACxC,MAAMG,aAAa,GAAGV,cAAc,IAAIS,qBAAqB,CAAC,CAAC;IAC/D,MAAMI,WAAW,GAAGR,OAAO,CAACG,OAAO;IAEnC,IAAI,CAACE,aAAa,IAAI,CAACG,WAAW,EAAE;MAChCP,gBAAgB,CAAC,CAAC;MAElB;IACJ;IAEA,MAAMQ,eAAe,GAAG,IAAAC,2CAA8B,EAAC;MACnDC,SAAS,EAAEN,aAAa;MACxBtB,IAAI,EAAEyB;IACV,CAAC,CAAC;IAEF,IACI,IAAAI,gCAAmB,EAAC;MAChBC,YAAY,EAAEd,kBAAkB,CAACI,OAAO;MACxCW,YAAY,EAAEL;IAClB,CAAC,CAAC,EACJ;MACE;IACJ;IAEAV,kBAAkB,CAACI,OAAO,GAAGM,eAAe;IAC5ClB,cAAc,CAACkB,eAAe,CAAC;EACnC,CAAC,EAAE,CAACd,cAAc,EAAEM,gBAAgB,EAAEG,qBAAqB,CAAC,CAAC;EAE7D,MAAMW,yBAAyB,GAAG,IAAAb,kBAAW,EAAC,MAAM;IAChD,IAAIL,mBAAmB,CAACM,OAAO,KAAK,IAAI,EAAE;MACtC;IACJ;IAEAN,mBAAmB,CAACM,OAAO,GAAGa,qBAAqB,CAAC,MAAM;MACtDnB,mBAAmB,CAACM,OAAO,GAAG,IAAI;MAClCI,iBAAiB,CAAC,CAAC;IACvB,CAAC,CAAC;EACN,CAAC,EAAE,CAACA,iBAAiB,CAAC,CAAC;EAEvB,MAAMU,gBAAgB,GAAG,IAAAf,kBAAW,EAAC,MAAM;IACvCE,qBAAqB,CAAC,CAAC;IACvBV,YAAY,CAAC,IAAI,CAAC;IAClBqB,yBAAyB,CAAC,CAAC;EAC/B,CAAC,EAAE,CAACX,qBAAqB,EAAEW,yBAAyB,CAAC,CAAC;EAEtD,MAAMG,gBAAgB,GAAG,IAAAhB,kBAAW,EAAC,MAAM;IACvCR,YAAY,CAAC,KAAK,CAAC;IACnBO,gBAAgB,CAAC,CAAC;EACtB,CAAC,EAAE,CAACA,gBAAgB,CAAC,CAAC;EAEtB,IAAAkB,gBAAS,EAAC,MAAM;IACZf,qBAAqB,CAAC,CAAC;EAC3B,CAAC,EAAE,CAACA,qBAAqB,CAAC,CAAC;EAE3B,IAAAe,gBAAS,EAAC,MAAM;IACZ,IAAI,CAAC1B,SAAS,IAAIL,UAAU,IAAI,CAACC,wBAAwB,EAAE;MACvDY,gBAAgB,CAAC,CAAC;MAElB,OAAOmB,SAAS;IACpB;IAEA,MAAMf,aAAa,GAAGV,cAAc,IAAIS,qBAAqB,CAAC,CAAC;IAC/D,MAAMI,WAAW,GAAGR,OAAO,CAACG,OAAO;IAEnC,IAAI,CAACE,aAAa,IAAI,CAACG,WAAW,EAAE;MAChC,OAAOY,SAAS;IACpB;IAEAL,yBAAyB,CAAC,CAAC;IAE3B,MAAMM,cAAc,GAChB,OAAOC,cAAc,KAAK,WAAW,GAC/B,IAAI,GACJ,IAAIA,cAAc,CAAC,MAAM;MACrBP,yBAAyB,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEZM,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAEE,OAAO,CAAClB,aAAa,CAAC;IACtCgB,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAEE,OAAO,CAACf,WAAW,CAAC;IAEpC,MAAMgB,kBAAkB,GAAG,IAAAC,0CAA6B,EAAC;MACrDC,OAAO,EAAElB,WAAW;MACpBmB,eAAe,EAAEtB;IACrB,CAAC,CAAC;IAEFmB,kBAAkB,CAACI,OAAO,CAAEF,OAAO,IAAK;MACpCA,OAAO,CAACG,gBAAgB,CAAC,QAAQ,EAAEd,yBAAyB,EAAE;QAAEe,OAAO,EAAE;MAAK,CAAC,CAAC;IACpF,CAAC,CAAC;IAEFC,MAAM,CAACF,gBAAgB,CAAC,QAAQ,EAAEd,yBAAyB,CAAC;IAE5D,OAAO,MAAM;MACTS,kBAAkB,CAACI,OAAO,CAAEF,OAAO,IAAK;QACpCA,OAAO,CAACM,mBAAmB,CAAC,QAAQ,EAAEjB,yBAAyB,CAAC;MACpE,CAAC,CAAC;MAEFgB,MAAM,CAACC,mBAAmB,CAAC,QAAQ,EAAEjB,yBAAyB,CAAC;MAC/DM,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAEY,UAAU,CAAC,CAAC;MAE5B,IAAIpC,mBAAmB,CAACM,OAAO,KAAK,IAAI,EAAE;QACtC+B,oBAAoB,CAACrC,mBAAmB,CAACM,OAAO,CAAC;QACjDN,mBAAmB,CAACM,OAAO,GAAG,IAAI;MACtC;IACJ,CAAC;EACL,CAAC,EAAE,CACCf,UAAU,EACVK,SAAS,EACTE,cAAc,EACdM,gBAAgB,EAChBG,qBAAqB,EACrBW,yBAAyB,EACzB1B,wBAAwB,CAC3B,CAAC;EAEF,OAAO;IACHC,WAAW;IACX2B,gBAAgB;IAChBC,gBAAgB;IAChBzB,SAAS;IACTO,OAAO;IACPL,cAAc;IACdwC,iBAAiB,EAAE,CAAC/C,UAAU,IAAI,CAAC,CAACC,wBAAwB,IAAII,SAAS,IAAI,CAAC,CAACH;EACnF,CAAC;AACL,CAAC;AAAC8C,OAAA,CAAAjD,mBAAA,GAAAA,mBAAA;AAEK,MAAMkD,qBAAqB,GAAGA,CAAC;EAClCC,UAAU;EACVC,aAAa;EACbC,UAAU;EACVC,EAAE;EACFC,KAAK;EACLtD,UAAU;EACVuD,gBAAgB;EAChBC,SAAS;EACTC,WAAW;EACXC,MAAM;EACNC,YAAY;EACZC,kBAAkB;EAClBC;AAC0B,CAAC,KAAkC;EAC7D,MAAMC,cAAc,GAAG,IAAAC,cAAO,EAAC,MAAM,CAAC,GAAGF,SAAS,EAAER,EAAE,CAAC,EAAE,CAACA,EAAE,EAAEQ,SAAS,CAAC,CAAC;EACzE,MAAMG,WAAW,GAAGT,gBAAgB,IAAI,CAACvD,UAAU;EACnD,MAAMiE,iBAAiB,GAAGV,gBAAgB,IAAI,CAACvD,UAAU;EAEzD,MAAMkE,WAAW,GAAG,IAAAH,cAAO,EACvB,OAAO;IACHI,MAAM,EAAEd,EAAE;IACVQ,SAAS;IACTP;EACJ,CAAC,CAAC,EACF,CAACD,EAAE,EAAEC,KAAK,EAAEO,SAAS,CACzB,CAAC;EAED,MAAMO,YAAY,GAAG,IAAAL,cAAO,EACxB,OAAO;IACHI,MAAM,EAAEd,EAAE;IACVQ,SAAS;IACTP,KAAK;IACLe,SAAS,EAAE;EACf,CAAC,CAAC,EACF,CAAChB,EAAE,EAAEC,KAAK,EAAEO,SAAS,CACzB,CAAC;EAED,MAAMS,YAAY,GAAG,IAAAP,cAAO,EACxB,OAAO;IACHI,MAAM,EAAEd,EAAE;IACVQ,SAAS,EAAEC,cAAc;IACzBR,KAAK,EAAE,CAAAJ,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEqB,MAAM,KAAI,CAAC;IAC9BF,SAAS,EAAE;EACf,CAAC,CAAC,EACF,CAACnB,UAAU,EAAEY,cAAc,EAAET,EAAE,CACnC,CAAC;EAED,MAAMmB,kBAAkB,GAAG,IAAAT,cAAO,EAA2C,MAAM;IAC/E,MAAMU,SAAS,GAAGvB,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAGA,UAAU,CAACqB,MAAM,GAAG,CAAC,CAAC;IAErD,IAAI,CAACE,SAAS,EAAE;MACZ,OAAO,IAAI;IACf;IAEA,OAAO;MACHN,MAAM,EAAEM,SAAS,CAACpB,EAAE;MACpBQ,SAAS,EAAEC,cAAc;MACzBR,KAAK,EAAEJ,UAAU,CAACqB,MAAM;MACxBF,SAAS,EAAE;IACf,CAAC;EACL,CAAC,EAAE,CAACnB,UAAU,EAAEY,cAAc,CAAC,CAAC;EAEhC,MAAMY,wBAAwB,GAAG,IAAAX,cAAO,EACpC,MACI,IAAAY,sDAAoC,EAAC;IACjCC,OAAO,EAAExB,UAAU;IACnByB,OAAO,EAAET;EACb,CAAC,CAAC,EACN,CAACA,YAAY,EAAEhB,UAAU,CAC7B,CAAC;EAED,MAAM0B,wBAAwB,GAAG,IAAAf,cAAO,EACpC,MACI,IAAAY,sDAAoC,EAAC;IACjCC,OAAO,EAAExB,UAAU;IACnByB,OAAO,EAAEP;EACb,CAAC,CAAC,EACN,CAAClB,UAAU,EAAEkB,YAAY,CAC7B,CAAC;EAED,MAAMS,0BAA0B,GAAG,IAAAhB,cAAO,EACtC,MACI,IAAAY,sDAAoC,EAAC;IACjCC,OAAO,EAAExB,UAAU;IACnByB,OAAO,EAAEL;EACb,CAAC,CAAC,EACN,CAACA,kBAAkB,EAAEpB,UAAU,CACnC,CAAC;EAED,MAAM4B,eAAe,GAAG,IAAAlE,kBAAW,EAC9BvB,KAAsC,IAAW;IAC9C,IAAI,CAACyE,WAAW,EAAE;MACd;IACJ;IAEAP,WAAW,CAAClE,KAAK,EAAE2E,WAAW,CAAC;EACnC,CAAC,EACD,CAACF,WAAW,EAAEE,WAAW,EAAET,WAAW,CAC1C,CAAC;EAED,MAAMwB,qBAAqB,GAAG,IAAAnE,kBAAW,EAAC,MAAY;IAClD,IAAI,CAACkD,WAAW,EAAE;MACd;IACJ;IAEAR,SAAS,CAAC,CAAC;EACf,CAAC,EAAE,CAACQ,WAAW,EAAER,SAAS,CAAC,CAAC;EAE5B,MAAM0B,oBAAoB,GAAG,IAAApE,kBAAW,EACnCvB,KAAsC,IAAW;IAC9CA,KAAK,CAAC4F,cAAc,CAAC,CAAC;IACtB7F,iBAAiB,CAACC,KAAK,CAAC;IACxBqE,kBAAkB,CAACQ,YAAY,CAAC;EACpC,CAAC,EACD,CAACA,YAAY,EAAER,kBAAkB,CACrC,CAAC;EAED,MAAMwB,gBAAgB,GAAG,IAAAtE,kBAAW,EAC/BvB,KAAsC,IAAW;IAC9CA,KAAK,CAAC4F,cAAc,CAAC,CAAC;IACtB5F,KAAK,CAAC8F,eAAe,CAAC,CAAC;IACvB3B,MAAM,CAACU,YAAY,CAAC;EACxB,CAAC,EACD,CAACA,YAAY,EAAEV,MAAM,CACzB,CAAC;EAED,MAAM4B,oBAAoB,GAAG,IAAAxE,kBAAW,EACnCvB,KAAsC,IAAW;IAC9C,IAAI,CAAC0E,iBAAiB,EAAE;MACpB;IACJ;IAEA1E,KAAK,CAAC4F,cAAc,CAAC,CAAC;IACtB7F,iBAAiB,CAACC,KAAK,CAAC;IACxBqE,kBAAkB,CAACU,YAAY,CAAC;EACpC,CAAC,EACD,CAACL,iBAAiB,EAAEK,YAAY,EAAEV,kBAAkB,CACxD,CAAC;EAED,MAAM2B,gBAAgB,GAAG,IAAAzE,kBAAW,EAC/BvB,KAAsC,IAAW;IAC9C,IAAI,CAAC0E,iBAAiB,EAAE;MACpB;IACJ;IAEA1E,KAAK,CAAC4F,cAAc,CAAC,CAAC;IACtB5F,KAAK,CAAC8F,eAAe,CAAC,CAAC;IACvB1B,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAG,CAAC;IAChBD,MAAM,CAACY,YAAY,CAAC;EACxB,CAAC,EACD,CAACL,iBAAiB,EAAEK,YAAY,EAAEZ,MAAM,EAAEC,YAAY,CAC1D,CAAC;EAED,MAAM6B,0BAA0B,GAAG,IAAA1E,kBAAW,EACzCvB,KAAsC,IAAW;IAC9C,IAAI,CAACiF,kBAAkB,EAAE;MACrB;IACJ;IAEAjF,KAAK,CAAC4F,cAAc,CAAC,CAAC;IACtB7F,iBAAiB,CAACC,KAAK,CAAC;IACxBqE,kBAAkB,CAACY,kBAAkB,CAAC;EAC1C,CAAC,EACD,CAACA,kBAAkB,EAAEZ,kBAAkB,CAC3C,CAAC;EAED,MAAM6B,sBAAsB,GAAG,IAAA3E,kBAAW,EACrCvB,KAAsC,IAAW;IAC9C,IAAI,CAACiF,kBAAkB,EAAE;MACrB;IACJ;IAEAjF,KAAK,CAAC4F,cAAc,CAAC,CAAC;IACtB5F,KAAK,CAAC8F,eAAe,CAAC,CAAC;IACvB3B,MAAM,CAACc,kBAAkB,CAAC;EAC9B,CAAC,EACD,CAACA,kBAAkB,EAAEd,MAAM,CAC/B,CAAC;EAED,OAAO;IACHM,WAAW;IACXC,iBAAiB;IACjBH,cAAc;IACdU,kBAAkB;IAClBU,oBAAoB;IACpBE,gBAAgB;IAChBI,0BAA0B;IAC1BC,sBAAsB;IACtBC,aAAa,EAAET,qBAAqB;IACpCD,eAAe;IACfM,oBAAoB;IACpBC,gBAAgB;IAChBb,wBAAwB;IACxBK,0BAA0B;IAC1BY,UAAU,EAAExC,aAAa,KAAKE,EAAE;IAChCyB;EACJ,CAAC;AACL,CAAC;AAAC9B,OAAA,CAAAC,qBAAA,GAAAA,qBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,193 @@
|
|
|
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 _core = require("@chayns-components/core");
|
|
9
|
+
var _SidebarItem = require("./SidebarItem.styles");
|
|
10
|
+
var _SidebarItem2 = require("./SidebarItem.utils");
|
|
11
|
+
var _reactDom = require("react-dom");
|
|
12
|
+
var _react2 = require("motion/react");
|
|
13
|
+
var _SidebarItem3 = require("./SidebarItem.hooks");
|
|
14
|
+
var _SidebarGroup = require("../SidebarGroup.styles");
|
|
15
|
+
var _NavigationSidebar = require("../../NavigationSidebar.context");
|
|
16
|
+
var _SidebarGroup2 = require("../SidebarGroup.context");
|
|
17
|
+
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); }
|
|
18
|
+
const SidebarItem = ({
|
|
19
|
+
item,
|
|
20
|
+
index,
|
|
21
|
+
parentIds,
|
|
22
|
+
shouldShowCollapsedLabel: shouldShowCollapsedLabelProp
|
|
23
|
+
}) => {
|
|
24
|
+
const {
|
|
25
|
+
children: childItems,
|
|
26
|
+
disabledReason,
|
|
27
|
+
icons,
|
|
28
|
+
id,
|
|
29
|
+
imageElement,
|
|
30
|
+
imageUrl,
|
|
31
|
+
isDisabled,
|
|
32
|
+
label
|
|
33
|
+
} = item;
|
|
34
|
+
const [shouldShowChildren, setShouldShowChildren] = (0, _react.useState)(false);
|
|
35
|
+
const {
|
|
36
|
+
color,
|
|
37
|
+
isCompact,
|
|
38
|
+
onItemClick,
|
|
39
|
+
selectedItemId,
|
|
40
|
+
shouldShowCollapsedLabel
|
|
41
|
+
} = (0, _NavigationSidebar.useNavigationSidebarContext)();
|
|
42
|
+
const {
|
|
43
|
+
draggedItemId,
|
|
44
|
+
dropTarget,
|
|
45
|
+
isReorderEnabled,
|
|
46
|
+
onDragEnd,
|
|
47
|
+
onDragStart,
|
|
48
|
+
onDrop,
|
|
49
|
+
onDropTargetChange
|
|
50
|
+
} = (0, _SidebarGroup2.useSidebarGroupReorderContext)();
|
|
51
|
+
const resolvedShouldShowCollapsedLabel = shouldShowCollapsedLabelProp ?? shouldShowCollapsedLabel;
|
|
52
|
+
const {
|
|
53
|
+
coordinates,
|
|
54
|
+
handleMouseEnter,
|
|
55
|
+
handleMouseLeave,
|
|
56
|
+
isHovered,
|
|
57
|
+
itemRef,
|
|
58
|
+
popupContainer,
|
|
59
|
+
shouldRenderPopup
|
|
60
|
+
} = (0, _SidebarItem3.useSidebarItemPopup)({
|
|
61
|
+
isDisabled: Boolean(isDisabled),
|
|
62
|
+
shouldShowCollapsedLabel: resolvedShouldShowCollapsedLabel
|
|
63
|
+
});
|
|
64
|
+
const {
|
|
65
|
+
canDragItem,
|
|
66
|
+
canDropInsideItem,
|
|
67
|
+
childParentIds,
|
|
68
|
+
childListEndTarget,
|
|
69
|
+
handleBeforeDragOver,
|
|
70
|
+
handleBeforeDrop,
|
|
71
|
+
handleChildListEndDragOver,
|
|
72
|
+
handleChildListEndDrop,
|
|
73
|
+
handleDragEnd,
|
|
74
|
+
handleDragStart,
|
|
75
|
+
handleInsideDragOver,
|
|
76
|
+
handleInsideDrop,
|
|
77
|
+
isBeforeDropTargetActive,
|
|
78
|
+
isChildListEndTargetActive,
|
|
79
|
+
isDragging,
|
|
80
|
+
isInsideDropTargetActive
|
|
81
|
+
} = (0, _SidebarItem3.useSidebarItemReorder)({
|
|
82
|
+
childItems,
|
|
83
|
+
draggedItemId,
|
|
84
|
+
dropTarget,
|
|
85
|
+
id,
|
|
86
|
+
index,
|
|
87
|
+
isDisabled,
|
|
88
|
+
isReorderEnabled,
|
|
89
|
+
onDragEnd,
|
|
90
|
+
onDragStart,
|
|
91
|
+
onDrop,
|
|
92
|
+
onDropInside: () => setShouldShowChildren(true),
|
|
93
|
+
onDropTargetChange,
|
|
94
|
+
parentIds
|
|
95
|
+
});
|
|
96
|
+
const isSelected = (0, _react.useMemo)(() => (0, _SidebarItem2.isItemOrChildSelected)(item, selectedItemId), [item, selectedItemId]);
|
|
97
|
+
(0, _react.useEffect)(() => {
|
|
98
|
+
if (isCompact) {
|
|
99
|
+
setShouldShowChildren(false);
|
|
100
|
+
}
|
|
101
|
+
}, [isCompact]);
|
|
102
|
+
const handleClick = (0, _react.useCallback)(() => {
|
|
103
|
+
if (isDisabled || typeof onItemClick !== 'function') {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
onItemClick(id, parentIds);
|
|
107
|
+
}, [id, isDisabled, onItemClick, parentIds]);
|
|
108
|
+
const handleOpenIconClick = (0, _react.useCallback)(event => {
|
|
109
|
+
event.stopPropagation();
|
|
110
|
+
setShouldShowChildren(previousValue => !previousValue);
|
|
111
|
+
}, []);
|
|
112
|
+
const renderChildItem = (0, _react.useCallback)((childItem, childIndex) => /*#__PURE__*/_react.default.createElement(SidebarItem, {
|
|
113
|
+
key: childItem.id,
|
|
114
|
+
item: childItem,
|
|
115
|
+
index: childIndex,
|
|
116
|
+
parentIds: childParentIds,
|
|
117
|
+
shouldShowCollapsedLabel: false
|
|
118
|
+
}), [childParentIds]);
|
|
119
|
+
const children = (0, _react.useMemo)(() => {
|
|
120
|
+
if (!(childItems !== null && childItems !== void 0 && childItems.length)) {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
return childItems.map(renderChildItem);
|
|
124
|
+
}, [childItems, renderChildItem]);
|
|
125
|
+
return /*#__PURE__*/_react.default.createElement(_SidebarItem.StyledSidebarItem, null, isReorderEnabled && /*#__PURE__*/_react.default.createElement(_SidebarGroup.StyledSidebarDropZone, {
|
|
126
|
+
$depth: parentIds.length,
|
|
127
|
+
$isActive: isBeforeDropTargetActive,
|
|
128
|
+
$isDragging: !!draggedItemId,
|
|
129
|
+
$placement: "before",
|
|
130
|
+
onDragOver: handleBeforeDragOver,
|
|
131
|
+
onDrop: handleBeforeDrop
|
|
132
|
+
}), /*#__PURE__*/_react.default.createElement(_core.Tooltip, {
|
|
133
|
+
item: {
|
|
134
|
+
text: disabledReason ?? ''
|
|
135
|
+
},
|
|
136
|
+
isDisabled: !disabledReason,
|
|
137
|
+
shouldUseFullWidth: true
|
|
138
|
+
}, /*#__PURE__*/_react.default.createElement(_SidebarItem.StyledSidebarItemHead, {
|
|
139
|
+
ref: itemRef,
|
|
140
|
+
$shouldHighlight: !isDisabled && (isHovered || isSelected),
|
|
141
|
+
$isDisabled: isDisabled,
|
|
142
|
+
$hasDisabledReason: !!disabledReason,
|
|
143
|
+
$isDragging: isDragging,
|
|
144
|
+
$isReorderable: canDragItem,
|
|
145
|
+
draggable: canDragItem,
|
|
146
|
+
onDragEnd: handleDragEnd,
|
|
147
|
+
onDragStart: handleDragStart,
|
|
148
|
+
onMouseEnter: handleMouseEnter,
|
|
149
|
+
onMouseLeave: handleMouseLeave,
|
|
150
|
+
onClick: handleClick
|
|
151
|
+
}, /*#__PURE__*/_react.default.createElement(_SidebarItem.StyledSidebarItemHeadContent, null, /*#__PURE__*/_react.default.createElement(_SidebarItem.StyledSidebarItemIcon, null, imageUrl && /*#__PURE__*/_react.default.createElement(_SidebarItem.StyledSidebarItemIconImage, {
|
|
152
|
+
src: imageUrl
|
|
153
|
+
}), imageElement, icons && /*#__PURE__*/_react.default.createElement(_core.Icon, {
|
|
154
|
+
icons: icons,
|
|
155
|
+
size: 21,
|
|
156
|
+
color: color
|
|
157
|
+
})), /*#__PURE__*/_react.default.createElement(_SidebarItem.StyledSidebarItemLabel, null, label)), !!children && !isCompact && !isDisabled && /*#__PURE__*/_react.default.createElement(_SidebarItem.StyledMotionSidebarOpenIcon, {
|
|
158
|
+
initial: false,
|
|
159
|
+
animate: {
|
|
160
|
+
rotate: shouldShowChildren ? 180 : 0
|
|
161
|
+
},
|
|
162
|
+
transition: {
|
|
163
|
+
type: 'tween'
|
|
164
|
+
},
|
|
165
|
+
onClick: handleOpenIconClick
|
|
166
|
+
}, /*#__PURE__*/_react.default.createElement(_core.Icon, {
|
|
167
|
+
icons: ['fa fa-chevron-down'],
|
|
168
|
+
color: color
|
|
169
|
+
})))), canDropInsideItem && /*#__PURE__*/_react.default.createElement(_SidebarGroup.StyledSidebarDropZone, {
|
|
170
|
+
$depth: childParentIds.length,
|
|
171
|
+
$isActive: isInsideDropTargetActive,
|
|
172
|
+
$isDragging: !!draggedItemId,
|
|
173
|
+
$placement: "inside",
|
|
174
|
+
onDragOver: handleInsideDragOver,
|
|
175
|
+
onDrop: handleInsideDrop
|
|
176
|
+
}), !!children && /*#__PURE__*/_react.default.createElement(_core.ExpandableContent, {
|
|
177
|
+
isOpen: shouldShowChildren
|
|
178
|
+
}, /*#__PURE__*/_react.default.createElement(_SidebarItem.StyledSidebarItemChildren, null, children, isReorderEnabled && childListEndTarget && /*#__PURE__*/_react.default.createElement(_SidebarGroup.StyledSidebarDropZone, {
|
|
179
|
+
$depth: childParentIds.length,
|
|
180
|
+
$isActive: isChildListEndTargetActive,
|
|
181
|
+
$isDragging: !!draggedItemId,
|
|
182
|
+
$placement: "after",
|
|
183
|
+
onDragOver: handleChildListEndDragOver,
|
|
184
|
+
onDrop: handleChildListEndDrop
|
|
185
|
+
}))), popupContainer && /*#__PURE__*/(0, _reactDom.createPortal)(/*#__PURE__*/_react.default.createElement(_react2.AnimatePresence, {
|
|
186
|
+
initial: false
|
|
187
|
+
}, shouldRenderPopup && coordinates && /*#__PURE__*/_react.default.createElement(_SidebarItem.StyledSidebarItemPopup, {
|
|
188
|
+
$coordinates: coordinates
|
|
189
|
+
}, label)), popupContainer));
|
|
190
|
+
};
|
|
191
|
+
SidebarItem.displayName = 'SidebarItem';
|
|
192
|
+
var _default = exports.default = /*#__PURE__*/(0, _react.memo)(SidebarItem);
|
|
193
|
+
//# sourceMappingURL=SidebarItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarItem.js","names":["_react","_interopRequireWildcard","require","_core","_SidebarItem","_SidebarItem2","_reactDom","_react2","_SidebarItem3","_SidebarGroup","_NavigationSidebar","_SidebarGroup2","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SidebarItem","item","index","parentIds","shouldShowCollapsedLabel","shouldShowCollapsedLabelProp","children","childItems","disabledReason","icons","id","imageElement","imageUrl","isDisabled","label","shouldShowChildren","setShouldShowChildren","useState","color","isCompact","onItemClick","selectedItemId","useNavigationSidebarContext","draggedItemId","dropTarget","isReorderEnabled","onDragEnd","onDragStart","onDrop","onDropTargetChange","useSidebarGroupReorderContext","resolvedShouldShowCollapsedLabel","coordinates","handleMouseEnter","handleMouseLeave","isHovered","itemRef","popupContainer","shouldRenderPopup","useSidebarItemPopup","Boolean","canDragItem","canDropInsideItem","childParentIds","childListEndTarget","handleBeforeDragOver","handleBeforeDrop","handleChildListEndDragOver","handleChildListEndDrop","handleDragEnd","handleDragStart","handleInsideDragOver","handleInsideDrop","isBeforeDropTargetActive","isChildListEndTargetActive","isDragging","isInsideDropTargetActive","useSidebarItemReorder","onDropInside","isSelected","useMemo","isItemOrChildSelected","useEffect","handleClick","useCallback","handleOpenIconClick","event","stopPropagation","previousValue","renderChildItem","childItem","childIndex","createElement","key","length","map","StyledSidebarItem","StyledSidebarDropZone","$depth","$isActive","$isDragging","$placement","onDragOver","Tooltip","text","shouldUseFullWidth","StyledSidebarItemHead","ref","$shouldHighlight","$isDisabled","$hasDisabledReason","$isReorderable","draggable","onMouseEnter","onMouseLeave","onClick","StyledSidebarItemHeadContent","StyledSidebarItemIcon","StyledSidebarItemIconImage","src","Icon","size","StyledSidebarItemLabel","StyledMotionSidebarOpenIcon","initial","animate","rotate","transition","type","ExpandableContent","isOpen","StyledSidebarItemChildren","createPortal","AnimatePresence","StyledSidebarItemPopup","$coordinates","displayName","_default","exports","memo"],"sources":["../../../../../../../src/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.tsx"],"sourcesContent":["import React, { FC, memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { ExpandableContent, Icon, Tooltip } from '@chayns-components/core';\nimport {\n StyledSidebarItem,\n StyledSidebarItemChildren,\n StyledSidebarItemHead,\n StyledSidebarItemHeadContent,\n StyledSidebarItemIcon,\n StyledSidebarItemIconImage,\n StyledSidebarItemLabel,\n StyledMotionSidebarOpenIcon,\n StyledSidebarItemPopup,\n} from './SidebarItem.styles';\nimport { NavigationLayoutItem } from '../../../NavigationLayout.types';\nimport { isItemOrChildSelected } from './SidebarItem.utils';\nimport { createPortal } from 'react-dom';\nimport { AnimatePresence } from 'motion/react';\nimport { useSidebarItemPopup, useSidebarItemReorder } from './SidebarItem.hooks';\nimport { StyledSidebarDropZone } from '../SidebarGroup.styles';\nimport { useNavigationSidebarContext } from '../../NavigationSidebar.context';\nimport { useSidebarGroupReorderContext } from '../SidebarGroup.context';\n\ninterface SidebarItemProps {\n item: NavigationLayoutItem;\n index: number;\n parentIds: NavigationLayoutItem['id'][];\n shouldShowCollapsedLabel?: boolean;\n}\n\nconst SidebarItem: FC<SidebarItemProps> = ({\n item,\n index,\n parentIds,\n shouldShowCollapsedLabel: shouldShowCollapsedLabelProp,\n}) => {\n const {\n children: childItems,\n disabledReason,\n icons,\n id,\n imageElement,\n imageUrl,\n isDisabled,\n label,\n } = item;\n const [shouldShowChildren, setShouldShowChildren] = useState(false);\n const { color, isCompact, onItemClick, selectedItemId, shouldShowCollapsedLabel } =\n useNavigationSidebarContext();\n const {\n draggedItemId,\n dropTarget,\n isReorderEnabled,\n onDragEnd,\n onDragStart,\n onDrop,\n onDropTargetChange,\n } = useSidebarGroupReorderContext();\n const resolvedShouldShowCollapsedLabel =\n shouldShowCollapsedLabelProp ?? shouldShowCollapsedLabel;\n const {\n coordinates,\n handleMouseEnter,\n handleMouseLeave,\n isHovered,\n itemRef,\n popupContainer,\n shouldRenderPopup,\n } = useSidebarItemPopup({\n isDisabled: Boolean(isDisabled),\n shouldShowCollapsedLabel: resolvedShouldShowCollapsedLabel,\n });\n const {\n canDragItem,\n canDropInsideItem,\n childParentIds,\n childListEndTarget,\n handleBeforeDragOver,\n handleBeforeDrop,\n handleChildListEndDragOver,\n handleChildListEndDrop,\n handleDragEnd,\n handleDragStart,\n handleInsideDragOver,\n handleInsideDrop,\n isBeforeDropTargetActive,\n isChildListEndTargetActive,\n isDragging,\n isInsideDropTargetActive,\n } = useSidebarItemReorder({\n childItems,\n draggedItemId,\n dropTarget,\n id,\n index,\n isDisabled,\n isReorderEnabled,\n onDragEnd,\n onDragStart,\n onDrop,\n onDropInside: () => setShouldShowChildren(true),\n onDropTargetChange,\n parentIds,\n });\n\n const isSelected = useMemo(\n () => isItemOrChildSelected(item, selectedItemId),\n [item, selectedItemId],\n );\n\n useEffect(() => {\n if (isCompact) {\n setShouldShowChildren(false);\n }\n }, [isCompact]);\n\n const handleClick = useCallback(() => {\n if (isDisabled || typeof onItemClick !== 'function') {\n return;\n }\n\n onItemClick(id, parentIds);\n }, [id, isDisabled, onItemClick, parentIds]);\n\n const handleOpenIconClick = useCallback((event: React.MouseEvent<HTMLDivElement>) => {\n event.stopPropagation();\n setShouldShowChildren((previousValue) => !previousValue);\n }, []);\n\n const renderChildItem = useCallback(\n (childItem: NavigationLayoutItem, childIndex: number) => (\n <SidebarItem\n key={childItem.id}\n item={childItem}\n index={childIndex}\n parentIds={childParentIds}\n shouldShowCollapsedLabel={false}\n />\n ),\n [childParentIds],\n );\n\n const children = useMemo(() => {\n if (!childItems?.length) {\n return null;\n }\n\n return childItems.map(renderChildItem);\n }, [childItems, renderChildItem]);\n\n return (\n <StyledSidebarItem>\n {isReorderEnabled && (\n <StyledSidebarDropZone\n $depth={parentIds.length}\n $isActive={isBeforeDropTargetActive}\n $isDragging={!!draggedItemId}\n $placement=\"before\"\n onDragOver={handleBeforeDragOver}\n onDrop={handleBeforeDrop}\n />\n )}\n <Tooltip\n item={{ text: disabledReason ?? '' }}\n isDisabled={!disabledReason}\n shouldUseFullWidth\n >\n <StyledSidebarItemHead\n ref={itemRef}\n $shouldHighlight={!isDisabled && (isHovered || isSelected)}\n $isDisabled={isDisabled}\n $hasDisabledReason={!!disabledReason}\n $isDragging={isDragging}\n $isReorderable={canDragItem}\n draggable={canDragItem}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={handleClick}\n >\n <StyledSidebarItemHeadContent>\n <StyledSidebarItemIcon>\n {imageUrl && <StyledSidebarItemIconImage src={imageUrl} />}\n {imageElement}\n {icons && <Icon icons={icons} size={21} color={color} />}\n </StyledSidebarItemIcon>\n <StyledSidebarItemLabel>{label}</StyledSidebarItemLabel>\n </StyledSidebarItemHeadContent>\n {!!children && !isCompact && !isDisabled && (\n <StyledMotionSidebarOpenIcon\n initial={false}\n animate={{ rotate: shouldShowChildren ? 180 : 0 }}\n transition={{ type: 'tween' }}\n onClick={handleOpenIconClick}\n >\n <Icon icons={['fa fa-chevron-down']} color={color} />\n </StyledMotionSidebarOpenIcon>\n )}\n </StyledSidebarItemHead>\n </Tooltip>\n {canDropInsideItem && (\n <StyledSidebarDropZone\n $depth={childParentIds.length}\n $isActive={isInsideDropTargetActive}\n $isDragging={!!draggedItemId}\n $placement=\"inside\"\n onDragOver={handleInsideDragOver}\n onDrop={handleInsideDrop}\n />\n )}\n {!!children && (\n <ExpandableContent isOpen={shouldShowChildren}>\n <StyledSidebarItemChildren>\n {children}\n {isReorderEnabled && childListEndTarget && (\n <StyledSidebarDropZone\n $depth={childParentIds.length}\n $isActive={isChildListEndTargetActive}\n $isDragging={!!draggedItemId}\n $placement=\"after\"\n onDragOver={handleChildListEndDragOver}\n onDrop={handleChildListEndDrop}\n />\n )}\n </StyledSidebarItemChildren>\n </ExpandableContent>\n )}\n {popupContainer &&\n createPortal(\n <AnimatePresence initial={false}>\n {shouldRenderPopup && coordinates && (\n <StyledSidebarItemPopup $coordinates={coordinates}>\n {label}\n </StyledSidebarItemPopup>\n )}\n </AnimatePresence>,\n popupContainer,\n )}\n </StyledSidebarItem>\n );\n};\n\nSidebarItem.displayName = 'SidebarItem';\n\nexport default memo(SidebarItem);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.StyledSidebarItemPopup = exports.StyledSidebarItemLabel = exports.StyledSidebarItemIconImage = exports.StyledSidebarItemIcon = exports.StyledSidebarItemHeadContent = exports.StyledSidebarItemHead = exports.StyledSidebarItemChildren = exports.StyledSidebarItem = exports.StyledMotionSidebarOpenIcon = void 0;
|
|
7
|
+
var _styledComponents = require("styled-components");
|
|
8
|
+
var _react = require("motion/react");
|
|
9
|
+
const StyledSidebarItem = exports.StyledSidebarItem = _styledComponents.styled.div`
|
|
10
|
+
position: relative;
|
|
11
|
+
width: 100%;
|
|
12
|
+
display: flex;
|
|
13
|
+
flex-direction: column;
|
|
14
|
+
`;
|
|
15
|
+
const StyledSidebarItemHead = exports.StyledSidebarItemHead = _styledComponents.styled.div`
|
|
16
|
+
height: 42px;
|
|
17
|
+
width: 100%;
|
|
18
|
+
|
|
19
|
+
display: flex;
|
|
20
|
+
align-items: center;
|
|
21
|
+
justify-content: space-between;
|
|
22
|
+
|
|
23
|
+
opacity: ${({
|
|
24
|
+
$isDisabled
|
|
25
|
+
}) => $isDisabled ? 0.5 : 1};
|
|
26
|
+
|
|
27
|
+
${({
|
|
28
|
+
$isDisabled,
|
|
29
|
+
$hasDisabledReason,
|
|
30
|
+
$isReorderable
|
|
31
|
+
}) => {
|
|
32
|
+
if ($isDisabled && $hasDisabledReason) {
|
|
33
|
+
return (0, _styledComponents.css)`
|
|
34
|
+
cursor: help;
|
|
35
|
+
`;
|
|
36
|
+
}
|
|
37
|
+
if ($isDisabled) {
|
|
38
|
+
return (0, _styledComponents.css)`
|
|
39
|
+
cursor: default;
|
|
40
|
+
`;
|
|
41
|
+
}
|
|
42
|
+
return (0, _styledComponents.css)`
|
|
43
|
+
cursor: ${$isReorderable ? 'grab' : 'pointer'};
|
|
44
|
+
`;
|
|
45
|
+
}}
|
|
46
|
+
|
|
47
|
+
${({
|
|
48
|
+
$isDragging
|
|
49
|
+
}) => $isDragging && (0, _styledComponents.css)`
|
|
50
|
+
opacity: 0.55;
|
|
51
|
+
cursor: grabbing;
|
|
52
|
+
`}
|
|
53
|
+
|
|
54
|
+
${({
|
|
55
|
+
$shouldHighlight
|
|
56
|
+
}) => $shouldHighlight && (0, _styledComponents.css)`
|
|
57
|
+
background-color: rgba(30, 30, 30, 0.3);
|
|
58
|
+
`}
|
|
59
|
+
`;
|
|
60
|
+
const StyledSidebarItemHeadContent = exports.StyledSidebarItemHeadContent = _styledComponents.styled.div`
|
|
61
|
+
display: flex;
|
|
62
|
+
align-items: center;
|
|
63
|
+
height: 100%;
|
|
64
|
+
min-width: 0;
|
|
65
|
+
`;
|
|
66
|
+
const StyledSidebarItemPopup = exports.StyledSidebarItemPopup = _styledComponents.styled.div`
|
|
67
|
+
position: absolute;
|
|
68
|
+
pointer-events: none;
|
|
69
|
+
opacity: 1;
|
|
70
|
+
background-color: ${({
|
|
71
|
+
theme
|
|
72
|
+
}) => theme['000']};
|
|
73
|
+
color: ${({
|
|
74
|
+
theme
|
|
75
|
+
}) => theme.text};
|
|
76
|
+
border-radius: 4px;
|
|
77
|
+
|
|
78
|
+
min-height: 30px;
|
|
79
|
+
padding: 0 10px;
|
|
80
|
+
transition: opacity 0.3s;
|
|
81
|
+
display: flex;
|
|
82
|
+
align-items: center;
|
|
83
|
+
z-index: 2;
|
|
84
|
+
white-space: nowrap;
|
|
85
|
+
|
|
86
|
+
box-shadow: 1px 3px 8px rgb(0, 0, 0, 0.3);
|
|
87
|
+
border: 1px solid rgba(0, 0, 0, 0.15);
|
|
88
|
+
|
|
89
|
+
top: ${({
|
|
90
|
+
$coordinates
|
|
91
|
+
}) => $coordinates.y}px;
|
|
92
|
+
left: ${({
|
|
93
|
+
$coordinates
|
|
94
|
+
}) => $coordinates.x}px;
|
|
95
|
+
transform: translateY(-50%);
|
|
96
|
+
`;
|
|
97
|
+
const StyledSidebarItemIcon = exports.StyledSidebarItemIcon = _styledComponents.styled.div`
|
|
98
|
+
display: flex;
|
|
99
|
+
align-items: center;
|
|
100
|
+
justify-content: center;
|
|
101
|
+
aspect-ratio: 1;
|
|
102
|
+
height: 100%;
|
|
103
|
+
`;
|
|
104
|
+
const StyledMotionSidebarOpenIcon = exports.StyledMotionSidebarOpenIcon = (0, _styledComponents.styled)(_react.motion.div)`
|
|
105
|
+
height: 30px;
|
|
106
|
+
width: 30px;
|
|
107
|
+
display: flex;
|
|
108
|
+
justify-content: center;
|
|
109
|
+
align-items: center;
|
|
110
|
+
flex-shrink: 0;
|
|
111
|
+
`;
|
|
112
|
+
const StyledSidebarItemIconImage = exports.StyledSidebarItemIconImage = _styledComponents.styled.img`
|
|
113
|
+
width: 28px;
|
|
114
|
+
`;
|
|
115
|
+
const StyledSidebarItemLabel = exports.StyledSidebarItemLabel = _styledComponents.styled.div`
|
|
116
|
+
text-overflow: ellipsis;
|
|
117
|
+
overflow: hidden;
|
|
118
|
+
white-space: nowrap;
|
|
119
|
+
|
|
120
|
+
flex: 1;
|
|
121
|
+
min-width: 0;
|
|
122
|
+
`;
|
|
123
|
+
const StyledSidebarItemChildren = exports.StyledSidebarItemChildren = _styledComponents.styled.div`
|
|
124
|
+
position: relative;
|
|
125
|
+
display: flex;
|
|
126
|
+
flex-direction: column;
|
|
127
|
+
gap: 2px;
|
|
128
|
+
padding-top: 2px;
|
|
129
|
+
|
|
130
|
+
padding-left: 8px;
|
|
131
|
+
`;
|
|
132
|
+
//# sourceMappingURL=SidebarItem.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarItem.styles.js","names":["_styledComponents","require","_react","StyledSidebarItem","exports","styled","div","StyledSidebarItemHead","$isDisabled","$hasDisabledReason","$isReorderable","css","$isDragging","$shouldHighlight","StyledSidebarItemHeadContent","StyledSidebarItemPopup","theme","text","$coordinates","y","x","StyledSidebarItemIcon","StyledMotionSidebarOpenIcon","motion","StyledSidebarItemIconImage","img","StyledSidebarItemLabel","StyledSidebarItemChildren"],"sources":["../../../../../../../src/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.styles.ts"],"sourcesContent":["import { css, styled } from 'styled-components';\nimport { motion } from 'motion/react';\nimport { WithTheme } from '@chayns-components/core';\nimport { Coordinates } from './SidebarItem.utils';\n\nexport const StyledSidebarItem = styled.div`\n position: relative;\n width: 100%;\n display: flex;\n flex-direction: column;\n`;\n\ntype StyledSidebarItemHeadProps = WithTheme<{\n $shouldHighlight: boolean;\n $hasDisabledReason: boolean;\n $isDisabled?: boolean;\n $isDragging?: boolean;\n $isReorderable?: boolean;\n}>;\n\nexport const StyledSidebarItemHead = styled.div<StyledSidebarItemHeadProps>`\n height: 42px;\n width: 100%;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};\n\n ${({ $isDisabled, $hasDisabledReason, $isReorderable }) => {\n if ($isDisabled && $hasDisabledReason) {\n return css`\n cursor: help;\n `;\n }\n\n if ($isDisabled) {\n return css`\n cursor: default;\n `;\n }\n\n return css`\n cursor: ${$isReorderable ? 'grab' : 'pointer'};\n `;\n }}\n\n ${({ $isDragging }) =>\n $isDragging &&\n css`\n opacity: 0.55;\n cursor: grabbing;\n `}\n\n ${({ $shouldHighlight }) =>\n $shouldHighlight &&\n css`\n background-color: rgba(30, 30, 30, 0.3);\n `}\n`;\n\nexport const StyledSidebarItemHeadContent = styled.div`\n display: flex;\n align-items: center;\n height: 100%;\n min-width: 0;\n`;\n\ntype StyledSidebarItemPopupProps = WithTheme<{\n $coordinates: Coordinates;\n}>;\n\nexport const StyledSidebarItemPopup = styled.div<StyledSidebarItemPopupProps>`\n position: absolute;\n pointer-events: none;\n opacity: 1;\n background-color: ${({ theme }) => theme['000']};\n color: ${({ theme }) => theme.text};\n border-radius: 4px;\n\n min-height: 30px;\n padding: 0 10px;\n transition: opacity 0.3s;\n display: flex;\n align-items: center;\n z-index: 2;\n white-space: nowrap;\n\n box-shadow: 1px 3px 8px rgb(0, 0, 0, 0.3);\n border: 1px solid rgba(0, 0, 0, 0.15);\n\n top: ${({ $coordinates }) => $coordinates.y}px;\n left: ${({ $coordinates }) => $coordinates.x}px;\n transform: translateY(-50%);\n`;\n\nexport const StyledSidebarItemIcon = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n aspect-ratio: 1;\n height: 100%;\n`;\n\nexport const StyledMotionSidebarOpenIcon = styled(motion.div)`\n height: 30px;\n width: 30px;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n`;\n\nexport const StyledSidebarItemIconImage = styled.img`\n width: 28px;\n`;\n\nexport const StyledSidebarItemLabel = styled.div`\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n\n flex: 1;\n min-width: 0;\n`;\n\nexport const StyledSidebarItemChildren = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding-top: 2px;\n\n padding-left: 8px;\n`;\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAIO,MAAME,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAGE,wBAAM,CAACC,GAAG;AAC3C;AACA;AACA;AACA;AACA,CAAC;AAUM,MAAMC,qBAAqB,GAAAH,OAAA,CAAAG,qBAAA,GAAGF,wBAAM,CAACC,GAA+B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,CAAC;EAAEE;AAAY,CAAC,KAAMA,WAAW,GAAG,GAAG,GAAG,CAAE;AAC3D;AACA,MAAM,CAAC;EAAEA,WAAW;EAAEC,kBAAkB;EAAEC;AAAe,CAAC,KAAK;EACvD,IAAIF,WAAW,IAAIC,kBAAkB,EAAE;IACnC,OAAO,IAAAE,qBAAG;AACtB;AACA,aAAa;EACL;EAEA,IAAIH,WAAW,EAAE;IACb,OAAO,IAAAG,qBAAG;AACtB;AACA,aAAa;EACL;EAEA,OAAO,IAAAA,qBAAG;AAClB,sBAAsBD,cAAc,GAAG,MAAM,GAAG,SAAS;AACzD,SAAS;AACL,CAAC;AACL;AACA,MAAM,CAAC;EAAEE;AAAY,CAAC,KACdA,WAAW,IACX,IAAAD,qBAAG;AACX;AACA;AACA,SAAS;AACT;AACA,MAAM,CAAC;EAAEE;AAAiB,CAAC,KACnBA,gBAAgB,IAChB,IAAAF,qBAAG;AACX;AACA,SAAS;AACT,CAAC;AAEM,MAAMG,4BAA4B,GAAAV,OAAA,CAAAU,4BAAA,GAAGT,wBAAM,CAACC,GAAG;AACtD;AACA;AACA;AACA;AACA,CAAC;AAMM,MAAMS,sBAAsB,GAAAX,OAAA,CAAAW,sBAAA,GAAGV,wBAAM,CAACC,GAAgC;AAC7E;AACA;AACA;AACA,wBAAwB,CAAC;EAAEU;AAAM,CAAC,KAAKA,KAAK,CAAC,KAAK,CAAC;AACnD,aAAa,CAAC;EAAEA;AAAM,CAAC,KAAKA,KAAK,CAACC,IAAI;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,CAAC;EAAEC;AAAa,CAAC,KAAKA,YAAY,CAACC,CAAC;AAC/C,YAAY,CAAC;EAAED;AAAa,CAAC,KAAKA,YAAY,CAACE,CAAC;AAChD;AACA,CAAC;AAEM,MAAMC,qBAAqB,GAAAjB,OAAA,CAAAiB,qBAAA,GAAGhB,wBAAM,CAACC,GAAG;AAC/C;AACA;AACA;AACA;AACA;AACA,CAAC;AAEM,MAAMgB,2BAA2B,GAAAlB,OAAA,CAAAkB,2BAAA,GAAG,IAAAjB,wBAAM,EAACkB,aAAM,CAACjB,GAAG,CAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAEM,MAAMkB,0BAA0B,GAAApB,OAAA,CAAAoB,0BAAA,GAAGnB,wBAAM,CAACoB,GAAG;AACpD;AACA,CAAC;AAEM,MAAMC,sBAAsB,GAAAtB,OAAA,CAAAsB,sBAAA,GAAGrB,wBAAM,CAACC,GAAG;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAEM,MAAMqB,yBAAyB,GAAAvB,OAAA,CAAAuB,yBAAA,GAAGtB,wBAAM,CAACC,GAAG;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isItemOrChildSelected = exports.getSidebarItemPopupCoordinates = exports.getScrollableAncestorElements = exports.areCoordinatesEqual = void 0;
|
|
7
|
+
const SCROLLABLE_OVERFLOW_VALUES = ['auto', 'scroll', 'overlay'];
|
|
8
|
+
const isScrollableElement = element => {
|
|
9
|
+
const {
|
|
10
|
+
overflowX,
|
|
11
|
+
overflowY
|
|
12
|
+
} = window.getComputedStyle(element);
|
|
13
|
+
return [overflowX, overflowY].some(value => SCROLLABLE_OVERFLOW_VALUES.includes(value));
|
|
14
|
+
};
|
|
15
|
+
const areCoordinatesEqual = ({
|
|
16
|
+
coordinatesA,
|
|
17
|
+
coordinatesB
|
|
18
|
+
}) => {
|
|
19
|
+
if (!coordinatesA || !coordinatesB) {
|
|
20
|
+
return coordinatesA === coordinatesB;
|
|
21
|
+
}
|
|
22
|
+
return coordinatesA.x === coordinatesB.x && coordinatesA.y === coordinatesB.y;
|
|
23
|
+
};
|
|
24
|
+
exports.areCoordinatesEqual = areCoordinatesEqual;
|
|
25
|
+
const getSidebarItemPopupCoordinates = ({
|
|
26
|
+
container,
|
|
27
|
+
item,
|
|
28
|
+
offset = 5
|
|
29
|
+
}) => {
|
|
30
|
+
const {
|
|
31
|
+
left: itemLeft,
|
|
32
|
+
top: itemTop,
|
|
33
|
+
width,
|
|
34
|
+
height
|
|
35
|
+
} = item.getBoundingClientRect();
|
|
36
|
+
const {
|
|
37
|
+
left: containerLeft,
|
|
38
|
+
top: containerTop
|
|
39
|
+
} = container.getBoundingClientRect();
|
|
40
|
+
return {
|
|
41
|
+
x: Math.round(itemLeft - containerLeft + width + offset),
|
|
42
|
+
y: Math.round(itemTop - containerTop + height / 2)
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
exports.getSidebarItemPopupCoordinates = getSidebarItemPopupCoordinates;
|
|
46
|
+
const getScrollableAncestorElements = ({
|
|
47
|
+
element,
|
|
48
|
+
boundaryElement
|
|
49
|
+
}) => {
|
|
50
|
+
const scrollableElements = [];
|
|
51
|
+
let currentElement = element.parentElement;
|
|
52
|
+
while (currentElement) {
|
|
53
|
+
if (isScrollableElement(currentElement)) {
|
|
54
|
+
scrollableElements.push(currentElement);
|
|
55
|
+
}
|
|
56
|
+
if (currentElement === boundaryElement) {
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
currentElement = currentElement.parentElement;
|
|
60
|
+
}
|
|
61
|
+
return scrollableElements;
|
|
62
|
+
};
|
|
63
|
+
exports.getScrollableAncestorElements = getScrollableAncestorElements;
|
|
64
|
+
const isItemOrChildSelected = (item, selectedId) => {
|
|
65
|
+
var _item$children;
|
|
66
|
+
if (!selectedId) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
if (item.id === selectedId) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
if (!((_item$children = item.children) !== null && _item$children !== void 0 && _item$children.length)) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
return item.children.some(child => isItemOrChildSelected(child, selectedId));
|
|
76
|
+
};
|
|
77
|
+
exports.isItemOrChildSelected = isItemOrChildSelected;
|
|
78
|
+
//# sourceMappingURL=SidebarItem.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarItem.utils.js","names":["SCROLLABLE_OVERFLOW_VALUES","isScrollableElement","element","overflowX","overflowY","window","getComputedStyle","some","value","includes","areCoordinatesEqual","coordinatesA","coordinatesB","x","y","exports","getSidebarItemPopupCoordinates","container","item","offset","left","itemLeft","top","itemTop","width","height","getBoundingClientRect","containerLeft","containerTop","Math","round","getScrollableAncestorElements","boundaryElement","scrollableElements","currentElement","parentElement","push","isItemOrChildSelected","selectedId","_item$children","id","children","length","child"],"sources":["../../../../../../../src/components/navigation-layout/navigation-sidebar/sidebar-group/sidebar-item/SidebarItem.utils.ts"],"sourcesContent":["import { NavigationLayoutItem } from '../../../NavigationLayout.types';\n\nexport interface Coordinates {\n x: number;\n y: number;\n}\n\ninterface AreCoordinatesEqualOptions {\n coordinatesA: Coordinates | null;\n coordinatesB: Coordinates | null;\n}\n\ninterface GetSidebarItemPopupCoordinatesOptions {\n container: HTMLElement;\n item: HTMLElement;\n offset?: number;\n}\n\ninterface GetScrollableAncestorElementsOptions {\n element: HTMLElement;\n boundaryElement?: HTMLElement | null;\n}\n\nconst SCROLLABLE_OVERFLOW_VALUES = ['auto', 'scroll', 'overlay'];\n\nconst isScrollableElement = (element: HTMLElement): boolean => {\n const { overflowX, overflowY } = window.getComputedStyle(element);\n\n return [overflowX, overflowY].some((value) => SCROLLABLE_OVERFLOW_VALUES.includes(value));\n};\n\nexport const areCoordinatesEqual = ({\n coordinatesA,\n coordinatesB,\n}: AreCoordinatesEqualOptions): boolean => {\n if (!coordinatesA || !coordinatesB) {\n return coordinatesA === coordinatesB;\n }\n\n return coordinatesA.x === coordinatesB.x && coordinatesA.y === coordinatesB.y;\n};\n\nexport const getSidebarItemPopupCoordinates = ({\n container,\n item,\n offset = 5,\n}: GetSidebarItemPopupCoordinatesOptions): Coordinates => {\n const { left: itemLeft, top: itemTop, width, height } = item.getBoundingClientRect();\n const { left: containerLeft, top: containerTop } = container.getBoundingClientRect();\n\n return {\n x: Math.round(itemLeft - containerLeft + width + offset),\n y: Math.round(itemTop - containerTop + height / 2),\n };\n};\n\nexport const getScrollableAncestorElements = ({\n element,\n boundaryElement,\n}: GetScrollableAncestorElementsOptions): HTMLElement[] => {\n const scrollableElements: HTMLElement[] = [];\n let currentElement = element.parentElement;\n\n while (currentElement) {\n if (isScrollableElement(currentElement)) {\n scrollableElements.push(currentElement);\n }\n\n if (currentElement === boundaryElement) {\n break;\n }\n\n currentElement = currentElement.parentElement;\n }\n\n return scrollableElements;\n};\n\nexport const isItemOrChildSelected = (item: NavigationLayoutItem, selectedId?: string): boolean => {\n if (!selectedId) {\n return false;\n }\n\n if (item.id === selectedId) {\n return true;\n }\n\n if (!item.children?.length) {\n return false;\n }\n\n return item.children.some((child) => isItemOrChildSelected(child, selectedId));\n};\n"],"mappings":";;;;;;AAuBA,MAAMA,0BAA0B,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;AAEhE,MAAMC,mBAAmB,GAAIC,OAAoB,IAAc;EAC3D,MAAM;IAAEC,SAAS;IAAEC;EAAU,CAAC,GAAGC,MAAM,CAACC,gBAAgB,CAACJ,OAAO,CAAC;EAEjE,OAAO,CAACC,SAAS,EAAEC,SAAS,CAAC,CAACG,IAAI,CAAEC,KAAK,IAAKR,0BAA0B,CAACS,QAAQ,CAACD,KAAK,CAAC,CAAC;AAC7F,CAAC;AAEM,MAAME,mBAAmB,GAAGA,CAAC;EAChCC,YAAY;EACZC;AACwB,CAAC,KAAc;EACvC,IAAI,CAACD,YAAY,IAAI,CAACC,YAAY,EAAE;IAChC,OAAOD,YAAY,KAAKC,YAAY;EACxC;EAEA,OAAOD,YAAY,CAACE,CAAC,KAAKD,YAAY,CAACC,CAAC,IAAIF,YAAY,CAACG,CAAC,KAAKF,YAAY,CAACE,CAAC;AACjF,CAAC;AAACC,OAAA,CAAAL,mBAAA,GAAAA,mBAAA;AAEK,MAAMM,8BAA8B,GAAGA,CAAC;EAC3CC,SAAS;EACTC,IAAI;EACJC,MAAM,GAAG;AAC0B,CAAC,KAAkB;EACtD,MAAM;IAAEC,IAAI,EAAEC,QAAQ;IAAEC,GAAG,EAAEC,OAAO;IAAEC,KAAK;IAAEC;EAAO,CAAC,GAAGP,IAAI,CAACQ,qBAAqB,CAAC,CAAC;EACpF,MAAM;IAAEN,IAAI,EAAEO,aAAa;IAAEL,GAAG,EAAEM;EAAa,CAAC,GAAGX,SAAS,CAACS,qBAAqB,CAAC,CAAC;EAEpF,OAAO;IACHb,CAAC,EAAEgB,IAAI,CAACC,KAAK,CAACT,QAAQ,GAAGM,aAAa,GAAGH,KAAK,GAAGL,MAAM,CAAC;IACxDL,CAAC,EAAEe,IAAI,CAACC,KAAK,CAACP,OAAO,GAAGK,YAAY,GAAGH,MAAM,GAAG,CAAC;EACrD,CAAC;AACL,CAAC;AAACV,OAAA,CAAAC,8BAAA,GAAAA,8BAAA;AAEK,MAAMe,6BAA6B,GAAGA,CAAC;EAC1C7B,OAAO;EACP8B;AACkC,CAAC,KAAoB;EACvD,MAAMC,kBAAiC,GAAG,EAAE;EAC5C,IAAIC,cAAc,GAAGhC,OAAO,CAACiC,aAAa;EAE1C,OAAOD,cAAc,EAAE;IACnB,IAAIjC,mBAAmB,CAACiC,cAAc,CAAC,EAAE;MACrCD,kBAAkB,CAACG,IAAI,CAACF,cAAc,CAAC;IAC3C;IAEA,IAAIA,cAAc,KAAKF,eAAe,EAAE;MACpC;IACJ;IAEAE,cAAc,GAAGA,cAAc,CAACC,aAAa;EACjD;EAEA,OAAOF,kBAAkB;AAC7B,CAAC;AAAClB,OAAA,CAAAgB,6BAAA,GAAAA,6BAAA;AAEK,MAAMM,qBAAqB,GAAGA,CAACnB,IAA0B,EAAEoB,UAAmB,KAAc;EAAA,IAAAC,cAAA;EAC/F,IAAI,CAACD,UAAU,EAAE;IACb,OAAO,KAAK;EAChB;EAEA,IAAIpB,IAAI,CAACsB,EAAE,KAAKF,UAAU,EAAE;IACxB,OAAO,IAAI;EACf;EAEA,IAAI,GAAAC,cAAA,GAACrB,IAAI,CAACuB,QAAQ,cAAAF,cAAA,eAAbA,cAAA,CAAeG,MAAM,GAAE;IACxB,OAAO,KAAK;EAChB;EAEA,OAAOxB,IAAI,CAACuB,QAAQ,CAAClC,IAAI,CAAEoC,KAAK,IAAKN,qBAAqB,CAACM,KAAK,EAAEL,UAAU,CAAC,CAAC;AAClF,CAAC;AAACvB,OAAA,CAAAsB,qBAAA,GAAAA,qBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.SplitLayout = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _ResizeHandle = _interopRequireDefault(require("./resize-handle/ResizeHandle"));
|
|
9
|
+
var _SplitLayout = require("./SplitLayout.styles");
|
|
10
|
+
var _SplitLayout2 = require("./SplitLayout.types");
|
|
11
|
+
var _SplitLayout3 = require("./SplitLayout.utils");
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
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); }
|
|
14
|
+
const SplitLayout = ({
|
|
15
|
+
direction = _SplitLayout2.SplitLayoutDirection.HORIZONTAL,
|
|
16
|
+
handleSize = 2,
|
|
17
|
+
views,
|
|
18
|
+
onChange,
|
|
19
|
+
fullScreenViewId
|
|
20
|
+
}) => {
|
|
21
|
+
const ref = (0, _react.useRef)(null);
|
|
22
|
+
const [sizes, setSizes] = (0, _react.useState)({});
|
|
23
|
+
const [containerSize, setContainerSize] = (0, _react.useState)(0);
|
|
24
|
+
(0, _react.useEffect)(() => {
|
|
25
|
+
if (!ref.current) {
|
|
26
|
+
return () => {};
|
|
27
|
+
}
|
|
28
|
+
const element = ref.current;
|
|
29
|
+
const updateSize = () => {
|
|
30
|
+
setContainerSize((0, _SplitLayout3.getContainerSizeByDirection)(element, direction));
|
|
31
|
+
};
|
|
32
|
+
updateSize();
|
|
33
|
+
const observer = new ResizeObserver(() => {
|
|
34
|
+
updateSize();
|
|
35
|
+
});
|
|
36
|
+
observer.observe(element);
|
|
37
|
+
return () => {
|
|
38
|
+
observer.disconnect();
|
|
39
|
+
};
|
|
40
|
+
}, [direction]);
|
|
41
|
+
const viewIdsToDisplay = (0, _react.useMemo)(() => (0, _SplitLayout3.getVisibleViewIds)({
|
|
42
|
+
views,
|
|
43
|
+
containerSize
|
|
44
|
+
}), [views, containerSize]);
|
|
45
|
+
const handleResize = (0, _react.useCallback)((key, delta) => {
|
|
46
|
+
setSizes(prev => {
|
|
47
|
+
var _views$key, _views$key2, _views$key3;
|
|
48
|
+
const nextSize = (prev[key] ?? ((_views$key = views[key]) === null || _views$key === void 0 ? void 0 : _views$key.defaultSize) ?? 0) + delta;
|
|
49
|
+
const minSize = ((_views$key2 = views[key]) === null || _views$key2 === void 0 ? void 0 : _views$key2.minSize) ?? 0;
|
|
50
|
+
const maxSize = ((_views$key3 = views[key]) === null || _views$key3 === void 0 ? void 0 : _views$key3.maxSize) ?? Number.MAX_SAFE_INTEGER;
|
|
51
|
+
const clampedSize = Math.min(Math.max(nextSize, minSize), maxSize);
|
|
52
|
+
if (typeof onChange === 'function') {
|
|
53
|
+
onChange(key, clampedSize);
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
...prev,
|
|
57
|
+
[key]: clampedSize
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
}, [onChange, views]);
|
|
61
|
+
const content = (0, _react.useMemo)(() => {
|
|
62
|
+
if (typeof fullScreenViewId === 'string' && views[fullScreenViewId]) {
|
|
63
|
+
return views[fullScreenViewId].component;
|
|
64
|
+
}
|
|
65
|
+
return viewIdsToDisplay.map((key, index) => {
|
|
66
|
+
const view = views[key];
|
|
67
|
+
if (!view) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
|
|
71
|
+
key: key
|
|
72
|
+
}, /*#__PURE__*/_react.default.createElement(_SplitLayout.StyledSplitLayoutPane, {
|
|
73
|
+
$direction: direction,
|
|
74
|
+
$size: sizes[key] ?? view.defaultSize ?? view.minSize ?? view.maxSize
|
|
75
|
+
}, view.component), index < viewIdsToDisplay.length - 1 && /*#__PURE__*/_react.default.createElement(_ResizeHandle.default, {
|
|
76
|
+
size: handleSize,
|
|
77
|
+
direction: direction,
|
|
78
|
+
onDrag: delta => handleResize(key, delta)
|
|
79
|
+
}));
|
|
80
|
+
});
|
|
81
|
+
}, [direction, fullScreenViewId, handleResize, handleSize, sizes, viewIdsToDisplay, views]);
|
|
82
|
+
return /*#__PURE__*/_react.default.createElement(_SplitLayout.StyledSplitLayout, {
|
|
83
|
+
ref: ref,
|
|
84
|
+
$direction: direction
|
|
85
|
+
}, content);
|
|
86
|
+
};
|
|
87
|
+
exports.SplitLayout = SplitLayout;
|
|
88
|
+
SplitLayout.displayName = 'SplitLayout';
|
|
89
|
+
var _default = exports.default = SplitLayout;
|
|
90
|
+
//# sourceMappingURL=SplitLayout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SplitLayout.js","names":["_react","_interopRequireWildcard","require","_ResizeHandle","_interopRequireDefault","_SplitLayout","_SplitLayout2","_SplitLayout3","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SplitLayout","direction","SplitLayoutDirection","HORIZONTAL","handleSize","views","onChange","fullScreenViewId","ref","useRef","sizes","setSizes","useState","containerSize","setContainerSize","useEffect","current","element","updateSize","getContainerSizeByDirection","observer","ResizeObserver","observe","disconnect","viewIdsToDisplay","useMemo","getVisibleViewIds","handleResize","useCallback","key","delta","prev","_views$key","_views$key2","_views$key3","nextSize","defaultSize","minSize","maxSize","Number","MAX_SAFE_INTEGER","clampedSize","Math","min","max","content","component","map","index","view","createElement","Fragment","StyledSplitLayoutPane","$direction","$size","length","size","onDrag","StyledSplitLayout","exports","displayName","_default"],"sources":["../../../../src/components/split-layout/SplitLayout.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState, type FC } from 'react';\nimport ResizeHandle from './resize-handle/ResizeHandle';\nimport { StyledSplitLayout, StyledSplitLayoutPane } from './SplitLayout.styles';\nimport { SplitLayoutDirection, type SplitLayoutProps } from './SplitLayout.types';\nimport { getContainerSizeByDirection, getVisibleViewIds } from './SplitLayout.utils';\n\nexport const SplitLayout: FC<SplitLayoutProps> = ({\n direction = SplitLayoutDirection.HORIZONTAL,\n handleSize = 2,\n views,\n onChange,\n fullScreenViewId,\n}) => {\n const ref = useRef<HTMLDivElement | null>(null);\n const [sizes, setSizes] = useState<Record<string, number>>({});\n const [containerSize, setContainerSize] = useState(0);\n\n useEffect(() => {\n if (!ref.current) {\n return () => {};\n }\n\n const element = ref.current;\n\n const updateSize = (): void => {\n setContainerSize(getContainerSizeByDirection(element, direction));\n };\n\n updateSize();\n\n const observer = new ResizeObserver(() => {\n updateSize();\n });\n\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n };\n }, [direction]);\n\n const viewIdsToDisplay = useMemo(\n () =>\n getVisibleViewIds({\n views,\n containerSize,\n }),\n [views, containerSize],\n );\n\n const handleResize = useCallback(\n (key: string, delta: number) => {\n setSizes((prev) => {\n const nextSize = (prev[key] ?? views[key]?.defaultSize ?? 0) + delta;\n\n const minSize = views[key]?.minSize ?? 0;\n const maxSize = views[key]?.maxSize ?? Number.MAX_SAFE_INTEGER;\n\n const clampedSize = Math.min(Math.max(nextSize, minSize), maxSize);\n\n if (typeof onChange === 'function') {\n onChange(key, clampedSize);\n }\n\n return {\n ...prev,\n [key]: clampedSize,\n };\n });\n },\n [onChange, views],\n );\n\n const content = useMemo(() => {\n if (typeof fullScreenViewId === 'string' && views[fullScreenViewId]) {\n return views[fullScreenViewId].component;\n }\n\n return viewIdsToDisplay.map((key, index) => {\n const view = views[key];\n\n if (!view) {\n return null;\n }\n\n return (\n <React.Fragment key={key}>\n <StyledSplitLayoutPane\n $direction={direction}\n $size={sizes[key] ?? view.defaultSize ?? view.minSize ?? view.maxSize}\n >\n {view.component}\n </StyledSplitLayoutPane>\n\n {index < viewIdsToDisplay.length - 1 && (\n <ResizeHandle\n size={handleSize}\n direction={direction}\n onDrag={(delta) => handleResize(key, delta)}\n />\n )}\n </React.Fragment>\n );\n });\n }, [direction, fullScreenViewId, handleResize, handleSize, sizes, viewIdsToDisplay, views]);\n\n return (\n <StyledSplitLayout ref={ref} $direction={direction}>\n {content}\n </StyledSplitLayout>\n );\n};\n\nSplitLayout.displayName = 'SplitLayout';\n\nexport default SplitLayout;\n"],"mappings":"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","ignoreList":[]}
|