@vuu-ui/vuu-layout 0.8.6 → 0.8.7-debug
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/cjs/index.js +9818 -7
- package/cjs/index.js.map +2 -2
- package/esm/index.js +9879 -7
- package/esm/index.js.map +2 -2
- package/index.css +1369 -1
- package/index.css.map +1 -1
- package/package.json +3 -3
- package/LICENSE +0 -201
package/cjs/index.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/vuu-layout/src/index.ts", "../../../packages/vuu-layout/src/dock-layout/DockLayout.tsx", "../../../packages/vuu-layout/src/registry/ComponentRegistry.ts", "../../../packages/vuu-layout/src/dock-layout/Drawer.tsx", "../../../packages/vuu-layout/src/Component.tsx", "../../../packages/vuu-layout/src/utils/pathUtils.ts", "../../../packages/vuu-layout/src/utils/propUtils.ts", "../../../packages/vuu-layout/src/utils/typeOf.ts", "../../../packages/vuu-layout/src/utils/refUtils.ts", "../../../packages/vuu-layout/src/utils/react-utils.ts", "../../../packages/vuu-layout/src/utils/styleUtils.ts", "../../../packages/vuu-layout/src/drag-drop/BoxModel.ts", "../../../packages/vuu-layout/src/drag-drop/DragState.ts", "../../../packages/vuu-layout/src/drag-drop/DropTarget.ts", "../../../packages/vuu-layout/src/drag-drop/DropTargetRenderer.tsx", "../../../packages/vuu-layout/src/drag-drop/DropMenu.tsx", "../../../packages/vuu-layout/src/drag-drop/Draggable.ts", "../../../packages/vuu-layout/src/DraggableLayout.tsx", "../../../packages/vuu-layout/src/flexbox/Flexbox.tsx", "../../../packages/vuu-layout/src/flexbox/useSplitterResizing.ts", "../../../packages/vuu-layout/src/placeholder/Placeholder.tsx", "../../../packages/vuu-layout/src/flexbox/Splitter.tsx", "../../../packages/vuu-layout/src/layout-reducer/flexUtils.ts", "../../../packages/vuu-layout/src/flexbox/flexbox-utils.ts", "../../../packages/vuu-layout/src/flexbox/FlexboxLayout.tsx", "../../../packages/vuu-layout/src/layout-action.ts", "../../../packages/vuu-layout/src/layout-provider/LayoutProvider.tsx", "../../../packages/vuu-layout/src/layout-reducer/layout-reducer.ts", "../../../packages/vuu-layout/src/layout-reducer/insert-layout-element.ts", "../../../packages/vuu-layout/src/layout-reducer/layoutUtils.ts", "../../../packages/vuu-layout/src/use-persistent-state.ts", "../../../packages/vuu-layout/src/layout-reducer/move-layout-element.ts", "../../../packages/vuu-layout/src/layout-reducer/replace-layout-element.ts", "../../../packages/vuu-layout/src/layout-reducer/layoutTypes.ts", "../../../packages/vuu-layout/src/layout-reducer/remove-layout-element.ts", "../../../packages/vuu-layout/src/layout-reducer/resize-flex-children.ts", "../../../packages/vuu-layout/src/layout-reducer/wrap-layout-element.ts", "../../../packages/vuu-layout/src/layout-provider/LayoutProviderContext.ts", "../../../packages/vuu-layout/src/layout-provider/useLayoutDragDrop.ts", "../../../packages/vuu-layout/src/flexbox/FluidGrid.tsx", "../../../packages/vuu-layout/src/responsive/use-breakpoints.ts", "../../../packages/vuu-layout/src/responsive/useResizeObserver.ts", "../../../packages/vuu-layout/src/responsive/breakpoints.ts", "../../../packages/vuu-layout/src/responsive/utils.ts", "../../../packages/vuu-layout/src/flexbox/useResponsiveSizing.ts", "../../../packages/vuu-layout/src/flexbox/FluidGridLayout.tsx", "../../../packages/vuu-ui-controls/src/drag-drop/DragDropProvider.tsx", "../../../packages/vuu-ui-controls/src/drag-drop/useDragDropNaturalMovementNext.tsx", "../../../packages/vuu-ui-controls/src/drag-drop/useDragDisplacers.ts", "../../../packages/vuu-ui-controls/src/drag-drop/drop-target-utils.ts", "../../../packages/vuu-ui-controls/src/drag-drop/Draggable.tsx", "../../../node_modules/clsx/dist/clsx.m.js", "../../../packages/vuu-ui-controls/src/drag-drop/useDragDropIndicator.tsx", "../../../packages/vuu-ui-controls/src/drag-drop/useDropIndicator.ts", "../../../packages/vuu-ui-controls/src/drag-drop/useDragDropNext.tsx", "../../../packages/vuu-ui-controls/src/drag-drop/useAutoScroll.ts", "../../../packages/vuu-ui-controls/src/editable-label/EditableLabel.tsx", "../../../packages/vuu-ui-controls/src/tabstrip/Tabstrip.tsx", "../../../packages/vuu-ui-controls/src/tabstrip/useTabstrip.ts", "../../../packages/vuu-ui-controls/src/tabstrip/TabMenuOptions.ts", "../../../packages/vuu-ui-controls/src/tabstrip/tabstrip-dom-utils.ts", "../../../packages/vuu-ui-controls/src/tabstrip/useAnimatedSelectionThumb.ts", "../../../packages/vuu-ui-controls/src/tabstrip/useKeyboardNavigation.ts", "../../../packages/vuu-ui-controls/src/tabstrip/useSelection.ts", "../../../packages/vuu-ui-controls/src/tabstrip/Tab.tsx", "../../../packages/vuu-ui-controls/src/tabstrip/TabMenu.tsx", "../../../packages/vuu-ui-controls/src/tree/Tree.tsx", "../../../packages/vuu-ui-controls/src/tree/list-dom-utils.ts", "../../../packages/vuu-ui-controls/src/tree/use-items-with-ids.ts", "../../../packages/vuu-ui-controls/src/tree/use-selection.ts", "../../../packages/vuu-ui-controls/src/tree/use-viewport-tracking.ts", "../../../packages/vuu-ui-controls/src/tree/use-resize-observer.ts", "../../../packages/vuu-ui-controls/src/tree/useTree.ts", "../../../packages/vuu-ui-controls/src/tree/use-keyboard-navigation.ts", "../../../packages/vuu-ui-controls/src/tree/hierarchical-data-utils.ts", "../../../packages/vuu-ui-controls/src/tree/key-code.ts", "../../../packages/vuu-ui-controls/src/tree/use-hierarchical-data.ts", "../../../packages/vuu-ui-controls/src/tree/use-collapsible-groups.ts", "../../../packages/vuu-ui-controls/src/tree/use-tree-keyboard-navigation.ts", "../../../packages/vuu-layout/src/layout-header/Header.tsx", "../../../packages/vuu-layout/src/layout-view/useViewActionDispatcher.ts", "../../../packages/vuu-layout/src/layout-view/View.tsx", "../../../packages/vuu-layout/src/layout-view/useView.tsx", "../../../packages/vuu-layout/src/layout-view/useViewResize.ts", "../../../packages/vuu-layout/src/layout-view/ViewContext.ts", "../../../packages/vuu-layout/src/overflow-container/OverflowContainer.tsx", "../../../packages/vuu-layout/src/overflow-container/useOverflowContainer.ts", "../../../packages/vuu-layout/src/overflow-container/overflow-utils.ts", "../../../packages/vuu-layout/src/palette/Palette.tsx", "../../../packages/vuu-layout/src/stack/Stack.tsx", "../../../packages/vuu-layout/src/stack/StackLayout.tsx", "../../../packages/vuu-layout/src/tools/config-wrapper/ConfigWrapper.tsx", "../../../packages/vuu-layout/src/tools/devtools-box/layout-configurator.jsx", "../../../packages/vuu-layout/src/tools/devtools-tree/layout-tree-viewer.jsx"],
|
|
4
4
|
"sourcesContent": ["export * from \"./dock-layout\";\nexport * from \"./common-types\";\nexport { default as Component } from \"./Component\";\nexport * from \"./drag-drop\";\nexport * from \"./DraggableLayout\";\nexport * from \"./flexbox\";\nexport { Action } from \"./layout-action\";\nexport * from \"./layout-header\";\nexport * from \"./layout-provider\";\nexport * from \"./layout-reducer\";\nexport * from \"./layout-view\";\nexport * from \"./overflow-container\";\nexport * from \"./palette\";\nexport * from \"./placeholder\";\nexport * from \"./registry\";\nexport * from \"./responsive\";\nexport * from \"./stack\";\nexport * from \"./tools\";\nexport * from \"./use-persistent-state\";\nexport * from \"./utils\";\n", "import { partition } from \"@vuu-ui/vuu-utils\";\nimport cx from \"classnames\";\nimport { HTMLAttributes, ReactElement } from \"react\";\nimport { registerComponent } from \"../registry/ComponentRegistry\";\nimport Drawer from \"./Drawer\";\n\nimport \"./DockLayout.css\";\n\nconst isDrawer = (component: ReactElement) => component.type === Drawer;\nconst isVertical = ({ props: { position = \"left\" } }: ReactElement) =>\n position.match(/top|bottom/);\n\nexport interface DockLayoutProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactElement[];\n}\n\nconst DockLayout = (props: DockLayoutProps) => {\n const { children, className: classNameProp, id, style } = props;\n const classBase = \"vuuDockLayout\";\n const [drawers, content] = partition(children, isDrawer);\n const [verticalDrawers, horizontalDrawers] = partition(drawers, isVertical);\n const orientation =\n verticalDrawers.length === 0\n ? \"horizontal\"\n : horizontalDrawers.length === 0\n ? \"vertical\"\n : \"both\";\n\n const className = cx(classBase, classNameProp, `${classBase}-${orientation}`);\n\n return (\n <div className={className} id={id} style={style}>\n {drawers}\n <div className={`${classBase}-content`}>{content}</div>\n </div>\n );\n};\nDockLayout.displayName = \"DockLayout\";\n\nexport default DockLayout;\n\nregisterComponent(\"DockLayout\", DockLayout, \"container\");\n", "import { FunctionComponent } from \"react\";\n\nconst _containers: { [key: string]: boolean } = {};\nconst _views: { [key: string]: boolean } = {};\n\nexport type layoutComponentType = \"component\" | \"container\" | \"view\";\n\nexport interface ComponentWithId {\n id: string;\n [key: string]: unknown;\n}\n\nexport const ComponentRegistry: {\n [key: string]: FunctionComponent<ComponentWithId>;\n} = {};\n\nexport function isContainer(componentType: string) {\n return _containers[componentType] === true;\n}\n\nexport function isView(componentType: string) {\n return _views[componentType] === true;\n}\n\nexport const isLayoutComponent = (type: string) =>\n isContainer(type) || isView(type);\n\nexport const isRegistered = (className: string) =>\n !!ComponentRegistry[className];\n\nexport function registerComponent(\n componentName: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n component: FunctionComponent<any>,\n type: layoutComponentType = \"component\"\n) {\n ComponentRegistry[componentName] = component;\n\n if (type === \"container\") {\n _containers[componentName] = true;\n } else if (type === \"view\") {\n _views[componentName] = true;\n }\n}\n", "import { Button, useControlled } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport { CSSProperties, HTMLAttributes, useCallback } from \"react\";\n\nimport \"./Drawer.css\";\n\nconst classBase = \"vuuDrawer\";\n\nconst sizeAttribute = (value: string | number) => {\n return typeof value === \"string\" ? value : value + \"px\";\n};\n\nconst getStyle = (\n styleProp?: CSSProperties,\n sizeOpen?: number,\n sizeClosed?: number\n) => {\n const hasSizeOpen = sizeOpen !== undefined;\n const hasSizeClosed = sizeClosed !== undefined;\n\n if (!styleProp && !hasSizeClosed && !hasSizeOpen) {\n return undefined;\n }\n\n if (!hasSizeClosed && !hasSizeOpen) {\n return styleProp;\n }\n\n return {\n ...styleProp,\n \"--drawer-size\": hasSizeOpen ? sizeAttribute(sizeOpen) : undefined,\n \"--drawer-peek-size\": hasSizeClosed ? sizeAttribute(sizeClosed) : undefined,\n };\n};\n\nexport interface DrawerProps extends HTMLAttributes<HTMLDivElement> {\n clickToOpen?: boolean;\n defaultOpen?: boolean;\n inline?: boolean;\n open?: boolean;\n peekaboo?: boolean;\n position?: \"left\" | \"right\" | \"top\" | \"bottom\";\n sizeOpen?: number;\n sizeClosed?: number;\n toggleButton?: \"start\" | \"end\";\n}\nconst Drawer = ({\n children,\n className: classNameProp,\n clickToOpen,\n defaultOpen,\n sizeOpen,\n sizeClosed,\n style: styleProp,\n open: openProp,\n position = \"left\",\n inline,\n onClick,\n peekaboo = false,\n toggleButton,\n ...props\n}: DrawerProps) => {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen ?? false,\n name: \"Drawer\",\n state: \"open\",\n });\n\n const className = cx(classBase, classNameProp, `${classBase}-${position}`, {\n [`${classBase}-open`]: open,\n [`${classBase}-inline`]: inline,\n [`${classBase}-over`]: !inline,\n [`${classBase}-peekaboo`]: peekaboo,\n });\n\n const toggleDrawer = useCallback(() => {\n setOpen(!open);\n }, [open, setOpen]);\n\n const style = getStyle(styleProp, sizeOpen, sizeClosed);\n\n const handleClick = clickToOpen ? toggleDrawer : onClick;\n\n const renderToggleButton = () => (\n <div className={cx(\"vuuToggleButton-container\")}>\n {open ? (\n <Button\n aria-label=\"close\"\n onClick={toggleDrawer}\n data-icon=\"close\"\n variant=\"secondary\"\n />\n ) : (\n <Button\n aria-label=\"open\"\n onClick={toggleDrawer}\n data-icon=\"close\"\n variant=\"secondary\"\n />\n )}\n </div>\n );\n\n return (\n <div {...props} className={className} onClick={handleClick} style={style}>\n {toggleButton == \"start\" ? renderToggleButton() : null}\n <div className={`${classBase}-liner`}>\n <div className={`${classBase}-content`}>{children}</div>\n </div>\n {toggleButton == \"end\" ? renderToggleButton() : null}\n </div>\n );\n};\nDrawer.displayName = \"Drawer\";\n\nexport default Drawer;\n", "import React, { forwardRef, HTMLAttributes } from 'react';\nimport { registerComponent } from './registry/ComponentRegistry';\n\nimport './Component.css';\n\nexport interface ComponentProps extends HTMLAttributes<HTMLDivElement> {\n resizeable?: boolean;\n}\n\nconst Component = forwardRef(function Component(\n { resizeable, ...props }: ComponentProps,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n return <div {...props} className=\"Component\" ref={ref} />;\n}) as React.FunctionComponent<ComponentProps>;\nComponent.displayName = 'Component';\n\nexport default Component;\n\nregisterComponent('Component', Component);\n", "import React, { isValidElement, ReactElement } from \"react\";\nimport { LayoutModel } from \"../layout-reducer\";\nimport { isContainer } from \"../registry/ComponentRegistry\";\nimport { getProp, getProps } from \"./propUtils\";\nimport { typeOf } from \"./typeOf\";\n\nconst removeFinalPathSegment = (path: string) => {\n const pos = path.lastIndexOf(\".\");\n if (pos === -1) {\n return path;\n } else {\n return path.slice(0, pos);\n }\n};\n\nexport function followPathToParent(\n source: ReactElement,\n path: string\n): ReactElement | null {\n const { \"data-path\": dataPath, path: sourcePath = dataPath } =\n getProps(source);\n\n if (path === \"0\") return null;\n if (path === sourcePath) return null;\n\n return followPath(source, removeFinalPathSegment(path), true);\n}\n\nexport function findTarget(\n source: LayoutModel,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n test: (props: any) => boolean\n): LayoutModel | undefined {\n const { children, ...props } = getProps(source);\n if (test(props)) {\n return source;\n }\n if (React.Children.count(children) > 0) {\n const array = React.isValidElement(children) ? [children] : children;\n for (const child of array) {\n const target = findTarget(child, test);\n if (target) {\n return target;\n }\n }\n }\n}\n\nexport function containerOf(\n source: LayoutModel,\n target: LayoutModel\n): LayoutModel | null {\n if (target === source) {\n return null;\n }\n const { path: sourcePath, children } = getProps(source);\n const { idx, finalStep } = nextStep(sourcePath, getProp(target, \"path\"));\n if (finalStep) {\n return source;\n }\n if (children === undefined || children[idx] === undefined) {\n return null;\n }\n return containerOf(children[idx], target);\n}\n\nexport const getChild = (\n children: ReactElement[],\n idx: number\n): ReactElement | undefined => {\n if (React.isValidElement(children) && idx == 0) {\n return children;\n }\n if (Array.isArray(children)) {\n return children[idx];\n }\n};\n\nexport function followPathToComponent(component: ReactElement, path: string) {\n const paths = path.split(\".\");\n let children = [component];\n\n const getChildren = (c: ReactElement) =>\n React.isValidElement(c.props.children)\n ? [c.props.children]\n : c.props.children;\n\n for (let i = 0; i < paths.length; i++) {\n const idx = parseInt(paths[i]);\n const child = children[idx];\n if (i === paths.length - 1) {\n return child;\n }\n children = getChildren(child);\n }\n}\n\nconst findTargetById = (\n source: ReactElement,\n id: string,\n throwIfNotFound = true\n): ReactElement | undefined => {\n const { children, id: idProp } = source.props;\n if (idProp === id) {\n return source;\n }\n\n if (React.Children.count(children) > 0) {\n const childArray = isValidElement(children) ? [children] : children;\n for (const child of childArray) {\n if (isValidElement(child)) {\n const target = findTargetById(child, id, false);\n if (target) {\n return target;\n }\n }\n }\n }\n\n if (throwIfNotFound === true) {\n throw Error(`pathUtils.findTargetById id #${id} not found in source`);\n }\n};\n\nexport function followPath(\n source: LayoutModel,\n path: string\n): LayoutModel | undefined;\nexport function followPath(\n source: ReactElement,\n path: string,\n throwIfNotFound: true\n): ReactElement;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function followPath(source: any, path: any, throwIfNotFound = false) {\n if (path.startsWith(\"#\")) {\n return findTargetById(source, path.slice(1), throwIfNotFound);\n }\n\n const { \"data-path\": dataPath, path: sourcePath = dataPath } =\n getProps(source);\n if (path.indexOf(sourcePath) !== 0) {\n throw Error(\n `pathUtils.followPath path ${path} is not within source path ${sourcePath}`\n );\n }\n const route = path.slice(sourcePath.length + 1);\n if (route === \"\") {\n return source;\n }\n\n let target = source;\n const paths = route.split(\".\");\n\n for (let i = 0; i < paths.length; i++) {\n if (React.Children.count(target.props.children) === 0) {\n const message = `element at 0.${paths\n .slice(0, i)\n .join(\".\")} has no children, so cannot fulfill rest of path ${paths\n .slice(i)\n .join(\".\")}`;\n\n if (throwIfNotFound) {\n throw Error(message);\n } else {\n console.warn(message);\n return;\n }\n }\n\n target = getChild(target.props.children, parseInt(paths[i]));\n\n if (target === undefined) {\n const message = `model at 0.${paths\n .slice(0, i)\n .join(\".\")} has no children that fulfill next step of path ${paths\n .slice(i)\n .join(\".\")}`;\n\n if (throwIfNotFound) {\n throw Error(message);\n } else {\n console.warn(message);\n }\n }\n }\n return target;\n}\n\nexport function nextLeaf(root: ReactElement, path: string) {\n const parent = followPathToParent(root, path);\n let pathIndices = path.split(\".\").map((idx) => parseInt(idx, 10));\n if (parent) {\n const lastIdx = pathIndices.pop();\n const { children } = parent.props;\n if (children.length - 1 > lastIdx!) {\n return firstLeaf(children[lastIdx! + 1]);\n } else {\n const parentIdx = pathIndices.pop();\n const nextParent = followPathToParent(root, getProp(parent, \"path\"));\n if (nextParent && typeof parentIdx === \"number\") {\n pathIndices = nextParent.props.path\n .split(\".\")\n .map((idx: string) => parseInt(idx, 10));\n if (nextParent.props.children.length - 1 > parentIdx) {\n const nextStep = nextParent.props.children[parentIdx + 1];\n if (isContainer(typeOf(nextStep) as string)) {\n return firstLeaf(nextStep);\n } else {\n return nextStep;\n }\n }\n }\n }\n }\n\n return firstLeaf(root);\n}\n\nexport function previousLeaf(root: ReactElement, path: string) {\n const pathIndices = path.split(\".\").map((idx) => parseInt(idx, 10));\n let lastIdx = pathIndices.pop();\n let parent = followPathToParent(root, path);\n if (parent != null && typeof lastIdx === \"number\") {\n const { children } = parent.props;\n if (lastIdx > 0) {\n return lastLeaf(children[lastIdx - 1]);\n } else {\n while (pathIndices.length > 1) {\n lastIdx = pathIndices.pop() as number;\n parent = followPathToParent(\n root,\n getProp(parent, \"path\")\n ) as ReactElement;\n if (lastIdx > 0) {\n const nextStep = parent.props.children[lastIdx - 1];\n if (isContainer(typeOf(nextStep) as string)) {\n return lastLeaf(nextStep);\n }\n return nextStep;\n }\n }\n }\n }\n return lastLeaf(root);\n}\n\nfunction firstLeaf(layoutRoot: ReactElement): ReactElement {\n if (isContainer(typeOf(layoutRoot) as string)) {\n const { children } = layoutRoot.props || layoutRoot;\n return firstLeaf(children[0]);\n }\n return layoutRoot;\n}\n\nfunction lastLeaf(root: ReactElement): ReactElement {\n if (isContainer(typeOf(root) as string)) {\n const { children } = root.props || root;\n return lastLeaf(children[children.length - 1]);\n }\n return root;\n}\n\ntype NextStepResult = {\n idx: number;\n finalStep: boolean;\n};\n\nexport function nextStep(\n pathSoFar: string,\n targetPath: string,\n followPathToEnd = false\n): NextStepResult {\n if (pathSoFar === targetPath) {\n return { idx: -1, finalStep: true };\n }\n\n const pathVisited = `${pathSoFar}.`;\n if (!targetPath.startsWith(pathVisited)) {\n throw Error(\"pathUtils nextStep has strayed from the path\");\n }\n\n const endOfTheLine = followPathToEnd ? 0 : 1;\n const paths = targetPath\n .replace(pathVisited, \"\")\n .split(\".\")\n .map((n) => parseInt(n, 10));\n return { idx: paths[0], finalStep: paths.length === endOfTheLine };\n}\n\nexport function resetPath(\n model: ReactElement,\n path: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n additionalProps?: any\n): ReactElement {\n if (getProp(model, \"path\") === path) {\n return model;\n }\n const children: ReactElement[] = [];\n React.Children.forEach(model.props.children, (child, i) => {\n if (!getProp(child, \"path\")) {\n children.push(child);\n } else {\n children.push(resetPath(child, `${path}.${i}`));\n }\n });\n const pathPropName = model.props[\"data-path\"] ? \"data-path\" : \"path\";\n return React.cloneElement(\n model,\n { [pathPropName]: path, ...additionalProps },\n children\n );\n}\n", "import { ReactElement } from \"react\";\nimport { LayoutModel } from \"../layout-reducer\";\n\nconst NO_PROPS = {};\nexport const getProp = (component: LayoutModel, propName: string) => {\n const props = getProps(component);\n return props[propName] ?? props[`data-${propName}`];\n};\n\nexport const getProps = (component?: LayoutModel) =>\n component?.props || component || NO_PROPS;\n\nexport const getChildProp = (container: LayoutModel) => {\n const props = getProps(container);\n if (props.children) {\n const {\n children: [target, ...rest],\n } = props;\n if (rest.length > 0) {\n console.warn(\n `getChild expected a single child, found ${rest.length + 1}`\n );\n }\n return target as ReactElement;\n }\n};\n", "import { ReactElement } from 'react';\nimport { LayoutModel, WithType } from '../layout-reducer';\n\nexport function typeOf(element?: LayoutModel | WithType): string | undefined {\n if (element) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const type = element.type as any;\n if (typeof type === 'function' || typeof type === 'object') {\n const elementName = type.displayName || type.name || type.type?.name;\n if (typeof elementName === 'string') {\n return elementName;\n }\n }\n if (typeof element.type === 'string') {\n return element.type;\n }\n if (element.constructor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (element.constructor as any).displayName as string;\n }\n throw Error(`typeOf unable to determine type of element`);\n }\n}\n\nexport const isTypeOf = (element: ReactElement, type: string) => typeOf(element) === type;\n", "import { MutableRefObject } from \"react\";\n\nexport function setRef<T>(\n ref:\n | MutableRefObject<T | null>\n | ((instance: T | null) => void)\n | null\n | undefined,\n value: T | null\n): void {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n", "import {\n Children,\n DependencyList,\n EffectCallback,\n isValidElement,\n ReactElement,\n ReactNode,\n useLayoutEffect,\n useMemo,\n useRef,\n} from \"react\";\n\nconst EMPTY_ARRAY: ReactElement[] = [];\n\nlet vuuComponentIdCount = 0;\n\nexport const asReactElements = (children: ReactNode): ReactElement[] => {\n const isArray = Array.isArray(children);\n const count = isArray ? children.length : Children.count(children);\n if (isArray && children.every(isValidElement)) {\n return children;\n } else if (count === 1 && !isArray && isValidElement(children)) {\n return [children];\n } else if (count > 1) {\n return children as ReactElement[];\n } else {\n return EMPTY_ARRAY;\n }\n};\n\nexport const useLayoutEffectSkipFirst = (\n func: EffectCallback,\n deps: DependencyList\n) => {\n const goodToGo = useRef(false);\n useLayoutEffect(() => {\n if (goodToGo.current) {\n func();\n } else {\n goodToGo.current = true;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n};\n\nexport const useId = (id?: string) =>\n useMemo(() => id ?? `vuu-${++vuuComponentIdCount}`, [id]);\n", "import { CSSProperties } from 'react';\nexport type CSSFlexProperties = Pick<CSSProperties, 'flexBasis' | 'flexGrow' | 'flexShrink'>;\n\nexport const expandFlex = (flex: number | CSSFlexProperties): CSSFlexProperties => {\n if (typeof flex !== 'number') {\n throw Error(`\"no support yet for flex value ${flex}`);\n }\n return {\n flexBasis: 0,\n flexGrow: 1,\n flexShrink: 1\n };\n};\n", "import { ReactElement } from \"react\";\nimport { rect } from \"../common-types\";\nimport { LayoutModel } from \"../layout-reducer\";\nimport { isContainer } from \"../registry/ComponentRegistry\";\nimport { getProps, typeOf } from \"../utils\";\nimport { DragDropRect, DropPos, RelativePosition } from \"./dragDropTypes\";\n\nexport const positionValues = {\n north: 1,\n east: 2,\n south: 4,\n west: 8,\n header: 16,\n centre: 32,\n absolute: 64,\n};\n\nexport const RelativeDropPosition = {\n AFTER: \"after\" as RelativePosition,\n BEFORE: \"before\" as RelativePosition,\n};\n\nexport const Position = Object.freeze({\n North: _position(\"north\"),\n East: _position(\"east\"),\n South: _position(\"south\"),\n West: _position(\"west\"),\n Header: _position(\"header\"),\n Centre: _position(\"centre\"),\n Absolute: _position(\"absolute\"),\n});\n\nfunction _position(str: keyof typeof positionValues) {\n return Object.freeze({\n offset:\n str === \"north\" || str === \"west\"\n ? 0\n : str === \"south\" || str === \"east\"\n ? 1\n : NaN,\n valueOf: function () {\n return positionValues[str];\n },\n toString: function () {\n return str;\n },\n North: str === \"north\",\n South: str === \"south\",\n East: str === \"east\",\n West: str === \"west\",\n Header: str === \"header\",\n Centre: str === \"centre\",\n NorthOrSouth: str === \"north\" || str === \"south\",\n EastOrWest: str === \"east\" || str === \"west\",\n NorthOrWest: str === \"north\" || str === \"west\",\n SouthOrEast: str === \"east\" || str === \"south\",\n Absolute: str === \"absolute\",\n });\n}\n\nconst NORTH = Position.North,\n SOUTH = Position.South,\n EAST = Position.East,\n WEST = Position.West,\n HEADER = Position.Header,\n CENTRE = Position.Centre;\n\nexport interface Measurements {\n [key: string]: DragDropRect;\n}\n\nexport class BoxModel {\n //TODO we should accept initial let,top offsets here\n // if dropTargets are supplied, we will only allow drop operations directly on these targets\n // TODO we will need to make this more flexible e.g allowing drop anywhere within these target\n static measure(\n model: ReactElement,\n dropTargetPaths: string[] = []\n ): Measurements {\n const measurements: Measurements = {};\n measureRootComponent(model, measurements, dropTargetPaths);\n return measurements;\n }\n\n static allBoxesContainingPoint(\n layout: LayoutModel,\n measurements: Measurements,\n x: number,\n y: number,\n validDropTargets?: string[]\n ) {\n return allBoxesContainingPoint(\n layout,\n measurements,\n x,\n y,\n validDropTargets\n ).reverse();\n }\n}\n\nexport function pointPositionWithinRect(\n x: number,\n y: number,\n rect: DragDropRect,\n borderZone = 30\n) {\n const width = rect.right - rect.left;\n const height = rect.bottom - rect.top;\n const posX = x - rect.left;\n const posY = y - rect.top;\n let closeToTheEdge = 0;\n\n if (posX < borderZone) closeToTheEdge += 8;\n if (posX > width - borderZone) closeToTheEdge += 2;\n if (posY < borderZone) closeToTheEdge += 1;\n if (posY > height - borderZone) closeToTheEdge += 4;\n\n return { pctX: posX / width, pctY: posY / height, closeToTheEdge };\n}\n\nexport function getPosition(\n x: number,\n y: number,\n rect: DragDropRect,\n targetOrientation?: \"row\" | \"column\"\n): DropPos {\n const { BEFORE, AFTER } = RelativeDropPosition;\n const { pctX, pctY, closeToTheEdge } = pointPositionWithinRect(x, y, rect);\n let position;\n let tab;\n\n if (targetOrientation === \"row\") {\n position = pctX < 0.5 ? WEST : EAST;\n } else if (rect.header && containsPoint(rect.header, x, y)) {\n position = HEADER;\n\n if (rect.Stack) {\n const tabCount = rect.Stack.length;\n if (tabCount === 0) {\n tab = {\n index: -1,\n left: rect.left,\n positionRelativeToTab: AFTER,\n width: 0,\n };\n } else {\n //TODO account for gaps between tabs\n const targetTab = rect.Stack.find(\n ({ left, right }) => x >= left && x <= right\n );\n if (targetTab) {\n const tabWidth = targetTab.right - targetTab.left;\n tab = {\n index: rect.Stack.indexOf(targetTab),\n left: targetTab.left,\n positionRelativeToTab:\n (x - targetTab.left) / tabWidth < 0.5 ? BEFORE : AFTER,\n width: tabWidth,\n };\n } else {\n const lastTab = rect.Stack[tabCount - 1];\n tab = {\n left: lastTab.right,\n width: 0,\n index: tabCount,\n positionRelativeToTab: AFTER,\n };\n }\n }\n } else if (rect.header.titleWidth) {\n const tabWidth = rect.header.titleWidth;\n tab = {\n index: -1,\n left: rect.left,\n positionRelativeToTab:\n (x - rect.left) / tabWidth < 0.5 ? BEFORE : AFTER,\n width: tabWidth,\n };\n } else {\n tab = {\n left: rect.left,\n width: 0,\n positionRelativeToTab: BEFORE,\n index: -1,\n };\n }\n } else {\n position = getPositionWithinBox(x, y, rect, pctX, pctY);\n }\n return { position: position!, x, y, closeToTheEdge, tab };\n}\n\nfunction getPositionWithinBox(\n x: number,\n y: number,\n rect: DragDropRect,\n pctX: number,\n pctY: number\n) {\n const centerBox = getCenteredBox(rect, 0.2);\n if (containsPoint(centerBox, x, y)) {\n return CENTRE;\n } else {\n const quadrant = `${pctY < 0.5 ? \"north\" : \"south\"}${\n pctX < 0.5 ? \"west\" : \"east\"\n }`;\n\n switch (quadrant) {\n case \"northwest\":\n return pctX > pctY ? NORTH : WEST;\n case \"northeast\":\n return 1 - pctX > pctY ? NORTH : EAST;\n case \"southeast\":\n return pctX > pctY ? EAST : SOUTH;\n case \"southwest\":\n return 1 - pctX > pctY ? WEST : SOUTH;\n default:\n }\n }\n}\n\nfunction getCenteredBox(\n { right, left, top, bottom }: DragDropRect,\n pctSize: number\n) {\n const pctOffset = (1 - pctSize) / 2;\n const w = (right - left) * pctOffset;\n const h = (bottom - top) * pctOffset;\n return { left: left + w, top: top + h, right: right - w, bottom: bottom - h };\n}\n\nfunction measureRootComponent(\n rootComponent: ReactElement,\n measurements: Measurements,\n dropTargets: string[]\n) {\n const {\n id,\n \"data-path\": dataPath,\n path = dataPath,\n } = getProps(rootComponent);\n const type = typeOf(rootComponent) as string;\n\n if (id && path) {\n const [rect, el] = measureComponentDomElement(rootComponent);\n measureComponent(rootComponent, rect, el, measurements);\n if (isContainer(type)) {\n collectChildMeasurements(rootComponent, measurements, dropTargets);\n }\n }\n}\n\nfunction measureComponent(\n component: LayoutModel,\n rect: DragDropRect,\n el: HTMLElement,\n measurements: Measurements\n) {\n const {\n \"data-path\": dataPath,\n path = dataPath,\n header,\n } = getProps(component);\n\n measurements[path] = rect;\n\n const type = typeOf(component);\n if (header || type === \"Stack\") {\n const headerEl = el.querySelector(\".vuuHeader\");\n if (headerEl) {\n const { top, left, right, bottom } = headerEl.getBoundingClientRect();\n measurements[path].header = {\n top: Math.round(top),\n left: Math.round(left),\n right: Math.round(right),\n bottom: Math.round(bottom),\n };\n if (type === \"Stack\") {\n measurements[path].Stack = Array.from(\n headerEl.querySelectorAll(\".saltTab\")\n )\n .map((tab) => tab.getBoundingClientRect())\n .map(({ left, right }) => ({ left, right }));\n } else {\n const titleEl = headerEl.querySelector('[class^=\"vuuHeader-title\"]');\n const { header } = measurements[path];\n if (titleEl && header) {\n header.titleWidth = titleEl.clientWidth;\n }\n }\n }\n }\n\n return measurements[path];\n}\n\nfunction collectChildMeasurements(\n component: LayoutModel,\n measurements: Measurements,\n dropTargets: string[],\n preX = 0,\n posX = 0,\n preY = 0,\n posY = 0\n) {\n const {\n children,\n \"data-path\": dataPath,\n path = dataPath,\n style,\n active = 0,\n } = getProps(component);\n\n const type = typeOf(component);\n const isFlexbox = type === \"Flexbox\";\n const isStack = type === \"Stack\";\n const isTower = isFlexbox && style.flexDirection === \"column\";\n const isTerrace = isFlexbox && style.flexDirection === \"row\";\n\n const childrenToMeasure = isStack\n ? children.filter((_child: ReactElement, idx: number) => idx === active)\n : children.filter(omitDragging);\n\n type measuredTuple = [DragDropRect, HTMLElement, ReactElement];\n // Collect all the measurements in first pass ...\n const childMeasurements: measuredTuple[] = childrenToMeasure.map(\n (child: ReactElement) => {\n const [rect, el] = measureComponentDomElement(child);\n\n return [\n {\n ...rect,\n top: rect.top - preY,\n right: rect.right + posX,\n bottom: rect.bottom + posY,\n left: rect.left - preX,\n },\n el,\n child,\n ];\n }\n );\n\n // ...so that, in the second pass, we can identify gaps ...\n const expandedMeasurements = childMeasurements.map(\n ([rect, el, child], i, all) => {\n // generate a 'local' splitter adjustment for children adjacent to splitters\n let localPreX;\n let localPosX;\n let localPreY;\n let localPosY;\n let gapPre;\n let gapPos;\n const n = all.length - 1;\n if (isTerrace) {\n gapPre = i === 0 ? 0 : rect.left - all[i - 1][0].right;\n gapPos = i === n ? 0 : all[i + 1][0].left - rect.right;\n // we don't need to divide the leading gap, as half the gap will\n // already have been assigned to the preceeding child in the\n // previous loop iteration.\n localPreX = i === 0 ? 0 : gapPre === 0 ? 0 : gapPre;\n localPosX = i === n ? 0 : gapPos === 0 ? 0 : gapPos - gapPos / 2;\n rect.left -= localPreX;\n rect.right += localPosX;\n localPreY = preY;\n localPosY = posY;\n } else if (isTower) {\n gapPre = i === 0 ? 0 : rect.top - all[i - 1][0].bottom;\n gapPos = i === n ? 0 : all[i + 1][0].top - rect.bottom;\n // we don't need to divide the leading gap, as half the gap will\n // already have been assigned to the preceeding child in the\n // previous loop iteration.\n localPreY = i === 0 ? 0 : gapPre === 0 ? 0 : gapPre;\n localPosY = i === n ? 0 : gapPos === 0 ? 0 : gapPos - gapPos / 2;\n rect.top -= localPreY;\n rect.bottom += localPosY;\n localPreX = preX;\n localPosX = posX;\n }\n\n const componentMeasurements = measureComponent(\n child,\n rect,\n el,\n measurements\n );\n\n const childType = typeOf(child) as string;\n if (isContainer(childType)) {\n collectChildMeasurements(\n child,\n measurements,\n dropTargets,\n localPreX,\n localPosX,\n localPreY,\n localPosY\n );\n }\n return componentMeasurements;\n }\n );\n if (childMeasurements.length) {\n measurements[path].children = expandedMeasurements;\n }\n}\n\nfunction omitDragging(component: ReactElement) {\n const { id } = getProps(component);\n const el = document.getElementById(id);\n if (el) {\n return el.dataset.dragging !== \"true\";\n } else {\n console.warn(`BoxModel: no element found with id #${id}`);\n return false;\n }\n}\n\nfunction measureComponentDomElement(\n component: LayoutModel\n): [DragDropRect, HTMLElement, LayoutModel] {\n const { id } = getProps(component) as { id: string };\n if (id === undefined) {\n throw Error(\"`BoxModel.measureComponentElement, component has no id\");\n }\n const el = document.getElementById(id);\n if (!el) {\n throw Error(\n \"BoxModel.measureComponentElement, no DOM element found for component\"\n );\n }\n // Note: height and width are not required for dropTarget identification, but\n // are used in sizing calculations on drop\n const { top, left, right, bottom, height, width } =\n el.getBoundingClientRect();\n let scrolling = undefined;\n const type = typeOf(component) as string;\n if (isContainer(type)) {\n const scrollHeight = el.scrollHeight;\n if (scrollHeight > height) {\n scrolling = { id, scrollHeight, scrollTop: el.scrollTop };\n }\n }\n return [\n {\n top: Math.round(top),\n left: Math.round(left),\n right: Math.round(right),\n bottom: Math.round(bottom),\n height: Math.round(height),\n width: Math.round(width),\n scrolling,\n },\n el,\n component,\n ];\n}\n\nfunction allBoxesContainingPoint(\n component: LayoutModel,\n measurements: Measurements,\n x: number,\n y: number,\n dropTargets?: string[],\n boxes: LayoutModel[] = []\n): LayoutModel[] {\n const {\n children,\n \"data-path\": dataPath,\n path = dataPath,\n } = getProps(component);\n\n const type = typeOf(component) as string;\n const rect = measurements[path];\n if (!containsPoint(rect, x, y)) return boxes;\n\n if (dropTargets && dropTargets.length) {\n if (dropTargets.includes(path)) {\n boxes.push(component);\n } else if (\n dropTargets.some((dropTargetPath) => dropTargetPath.startsWith(path))\n ) {\n // keep going\n } else {\n return boxes;\n }\n } else {\n boxes.push(component);\n }\n\n if (!isContainer(type)) {\n return boxes;\n }\n\n if (rect.header && containsPoint(rect.header, x, y)) {\n return boxes;\n }\n\n if (rect.scrolling) {\n scrollIntoViewIfNeccesary(rect, x, y);\n }\n\n for (let i = 0; i < children.length; i++) {\n if (type === \"Stack\" && component.props.active !== i) {\n continue;\n }\n const nestedBoxes = allBoxesContainingPoint(\n children[i],\n measurements,\n x,\n y,\n dropTargets\n );\n if (nestedBoxes.length) {\n return boxes.concat(nestedBoxes);\n }\n }\n return boxes;\n}\n\nfunction containsPoint(rect: rect, x: number, y: number) {\n if (rect) {\n return x >= rect.left && x < rect.right && y >= rect.top && y < rect.bottom;\n }\n}\n\nfunction scrollIntoViewIfNeccesary(\n { top, bottom, scrolling }: DragDropRect,\n x: number,\n y: number\n) {\n if (scrolling) {\n const { id, scrollTop, scrollHeight } = scrolling;\n const height = bottom - top;\n if (scrollTop === 0 && bottom - y < 50) {\n const scrollMax = scrollHeight - height;\n const el = document.getElementById(id) as HTMLElement;\n el.scrollTo({ left: 0, top: scrollMax, behavior: \"smooth\" });\n scrolling.scrollTop = scrollMax;\n } else if (scrollTop > 0 && y - top < 50) {\n const el = document.getElementById(id) as HTMLElement;\n el.scrollTo({ left: 0, top: 0, behavior: \"smooth\" });\n scrolling.scrollTop = 0;\n } else {\n return false;\n }\n } else {\n return false;\n }\n}\n", "import { pointPositionWithinRect } from './BoxModel';\nimport { DragDropRect } from './dragDropTypes';\n\nconst SCALE_FACTOR = 0.4;\n\nexport type IntrinsicSizes = {\n height?: number;\n width?: number;\n};\n\ninterface ZoneRange {\n hi: number;\n lo: number;\n}\ntype DragConstraint = {\n zone: {\n x: ZoneRange;\n y: ZoneRange;\n };\n pos: {\n x: ZoneRange;\n y: ZoneRange;\n };\n mouse: {\n x: ZoneRange;\n y: ZoneRange;\n };\n};\n\ninterface ExtendedZoneRange {\n lo: boolean;\n hi: boolean;\n mousePct: number;\n mousePos: number;\n pos: number;\n}\n\nexport class DragState {\n public constraint!: DragConstraint;\n public x!: ExtendedZoneRange;\n public y!: ExtendedZoneRange;\n public intrinsicSize: IntrinsicSizes | undefined;\n\n constructor(\n zone: DragDropRect,\n mouseX: number,\n mouseY: number,\n measurements: DragDropRect,\n intrinsicSize?: IntrinsicSizes\n ) {\n this.init(zone, mouseX, mouseY, measurements, intrinsicSize);\n }\n\n init(\n zone: DragDropRect,\n mouseX: number,\n mouseY: number,\n rect: DragDropRect,\n intrinsicSize?: IntrinsicSizes\n ) {\n const { left: x, top: y } = rect;\n\n const { pctX, pctY } = pointPositionWithinRect(mouseX, mouseY, rect);\n\n // We are applying a scale factor of 0.4 to the draggee. This is purely a visual\n // effect - the actual box size remains the original size. The 'leading' values\n // represent the difference between the visual scaled down box and the actual box.\n\n const scaleFactor = SCALE_FACTOR;\n\n const leadX = pctX * rect.width;\n const trailX = rect.width - leadX;\n const leadY = pctY * rect.height;\n const trailY = rect.height - leadY;\n\n // When we assign position to rect using css. positioning units are applied to the\n // unscaled shape, so we have to adjust values to take scaling into account.\n const scaledWidth = rect.width * scaleFactor,\n scaledHeight = rect.height * scaleFactor;\n\n const scaleDiff = 1 - scaleFactor;\n const leadXScaleDiff = leadX * scaleDiff;\n const leadYScaleDiff = leadY * scaleDiff;\n const trailXScaleDiff = trailX * scaleDiff;\n const trailYScaleDiff = trailY * scaleDiff;\n\n this.intrinsicSize = intrinsicSize;\n\n this.constraint = {\n zone: {\n x: {\n lo: zone.left,\n hi: zone.right\n },\n y: {\n lo: zone.top,\n hi: zone.bottom\n }\n },\n\n pos: {\n x: {\n lo: /* left */ zone.left - leadXScaleDiff,\n hi: /* right */ zone.right - rect.width + trailXScaleDiff\n },\n y: {\n lo: /* top */ zone.top - leadYScaleDiff,\n hi: /* bottom */ zone.bottom - rect.height + trailYScaleDiff\n }\n },\n mouse: {\n x: {\n lo: /* left */ zone.left + scaledWidth * pctX,\n hi: /* right */ zone.right - scaledWidth * (1 - pctX)\n },\n y: {\n lo: /* top */ zone.top + scaledHeight * pctY,\n hi: /* bottom */ zone.bottom - scaledHeight * (1 - pctY)\n }\n }\n };\n\n this.x = {\n pos: x,\n lo: false,\n hi: false,\n mousePos: mouseX,\n mousePct: pctX\n };\n this.y = {\n pos: y,\n lo: false,\n hi: false,\n mousePos: mouseY,\n mousePct: pctY\n };\n }\n\n outOfBounds() {\n return this.x.lo || this.x.hi || this.y.lo || this.y.hi;\n }\n\n inBounds() {\n return !this.outOfBounds();\n }\n\n dropX() {\n return this.dropXY('x');\n }\n\n dropY() {\n return this.dropXY('y');\n }\n\n hasIntrinsicSize(): number | undefined {\n return this?.intrinsicSize?.height && this?.intrinsicSize?.width;\n }\n\n /*\n * diff = mouse movement, signed int\n * xy = 'x' or 'y'\n */\n //todo, diff can be calculated in here\n update(xy: 'x' | 'y', mousePos: number) {\n const state = this[xy],\n mouseConstraint = this.constraint.mouse[xy],\n posConstraint = this.constraint.pos[xy],\n previousPos = state.pos;\n\n const diff = mousePos - state.mousePos;\n\n //xy==='x' && console.log(`update: state.lo=${state.lo}, mPos=${mousePos}, mC.lo=${mouseConstraint.lo}, prevPos=${previousPos}, diff=${diff} ` );\n\n if (diff < 0) {\n if (state.lo) {\n /* do nothing */\n } else if (mousePos < mouseConstraint.lo) {\n state.lo = true;\n state.pos = posConstraint.lo;\n } else if (state.hi) {\n if (mousePos < mouseConstraint.hi) {\n state.hi = false;\n state.pos += diff;\n }\n } else {\n state.pos += diff;\n }\n } else if (diff > 0) {\n if (state.hi) {\n /* do nothing */\n } else if (mousePos > mouseConstraint.hi) {\n state.hi = true;\n state.pos = posConstraint.hi;\n } else if (state.lo) {\n if (mousePos > mouseConstraint.lo) {\n state.lo = false;\n state.pos += diff;\n }\n } else {\n state.pos += diff;\n }\n }\n\n state.mousePos = mousePos;\n\n return previousPos !== state.pos;\n }\n\n private dropXY(this: DragState, dir: 'x' | 'y') {\n const pos = this[dir],\n rect = this.constraint.zone[dir];\n // why not do the rounding +/- 1 on the rect initially - this is all it is usef for\n return pos.lo\n ? Math.max(rect.lo, pos.mousePos)\n : pos.hi\n ? Math.min(pos.mousePos, Math.round(rect.hi) - 1)\n : pos.mousePos;\n }\n}\n", "import { rect, rectTuple } from \"../common-types\";\nimport { LayoutModel } from \"../layout-reducer\";\nimport { getProps, typeOf } from \"../utils\";\nimport {\n BoxModel,\n getPosition,\n Measurements,\n Position,\n positionValues,\n RelativeDropPosition,\n} from \"./BoxModel\";\nimport { DragDropRect, DropPos, DropPosTab } from \"./dragDropTypes\";\nimport { DragState } from \"./DragState\";\n\nexport const isTabstrip = (dropTarget: DropTarget) =>\n dropTarget.pos.tab &&\n typeOf(dropTarget.component) === \"Stack\" &&\n dropTarget.pos.position.Header;\n\nconst { north, south, east, west } = positionValues;\nconst eastwest = east + west;\nconst northsouth = north + south;\n\nexport interface DropTargetProps {\n component: LayoutModel;\n pos: DropPos;\n clientRect: DragDropRect;\n nextDropTarget: DropTarget | null;\n}\n\nexport type GuideLine = [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number\n];\nexport interface TargetDropOutline {\n l: number;\n r: number;\n t: number;\n b: number;\n tabLeft?: number;\n tabWidth?: number;\n tabHeight?: number;\n guideLines?: GuideLine;\n}\n\nexport class DropTarget {\n private active: boolean;\n\n public box: unknown;\n public clientRect: DragDropRect;\n public component: LayoutModel;\n public dropRect: rectTuple | undefined;\n public nextDropTarget: DropTarget | null;\n public pos: DropPos;\n\n constructor({\n component,\n pos,\n clientRect /*, closeToTheEdge*/,\n nextDropTarget,\n }: DropTargetProps) {\n this.component = component;\n this.pos = pos;\n this.clientRect = clientRect;\n this.nextDropTarget = nextDropTarget;\n this.active = false;\n this.dropRect = undefined;\n }\n\n targetTabPos(tab: DropPosTab) {\n const { left: tabLeft, width: tabWidth, positionRelativeToTab } = tab;\n return positionRelativeToTab === RelativeDropPosition.BEFORE\n ? tabLeft\n : tabLeft + tabWidth;\n }\n\n /**\n * Determine what will be rendered by the dropTargetRenderer\n *\n * @param {*} lineWidth\n * @param {*} dragState\n * @returns {l, t, r, b, tabLeft, tabWidth, tabHeight}\n */\n getTargetDropOutline(\n lineWidth: number,\n dragState?: DragState\n ): TargetDropOutline {\n if (this.pos.tab) {\n return this.getDropTabOutline(lineWidth, this.pos.tab);\n } else if (dragState && dragState.hasIntrinsicSize()) {\n return this.getIntrinsicDropRect(dragState);\n } else {\n const [l, t, r, b] = this.getDropRectOutline(\n lineWidth,\n dragState\n ) as rectTuple;\n return { l, t, r, b };\n }\n }\n\n getDropTabOutline(lineWidth: number, tab: DropPosTab): TargetDropOutline {\n const {\n clientRect: { top, left, right, bottom, header },\n } = this;\n\n const inset = 0;\n const gap = Math.round(lineWidth / 2) + inset;\n\n const t = Math.round(top);\n const l = Math.round(left + gap);\n const r = Math.round(right - gap);\n const b = Math.round(bottom - gap);\n const tabLeft = this.targetTabPos(tab);\n const tabWidth = 60; // should really measure text\n const tabHeight = (header?.bottom ?? 0) - (header?.top ?? 0);\n return { l, t, r, b, tabLeft, tabWidth, tabHeight };\n }\n\n getIntrinsicDropRect(dragState: DragState): TargetDropOutline {\n const { pos, clientRect: rect } = this;\n\n const { x, y } = dragState;\n\n let height = dragState.intrinsicSize?.height ?? 0;\n let width = dragState.intrinsicSize?.height ?? 0;\n\n if (height && height > rect.height) {\n console.log(`DropTarget: we're going to blow the gaff`);\n height = rect.height;\n } else if (width && width > rect.width) {\n console.log(`DropTarget: we're going to blow the gaff`);\n width = rect.width;\n }\n\n const left = Math.min(\n rect.right - width,\n Math.max(rect.left, Math.round(pos.x - x.mousePct * width))\n );\n const top = Math.min(\n rect.bottom - height,\n Math.max(rect.top, Math.round(pos.y - y.mousePct * height))\n );\n const [l, t, r, b] = (this.dropRect = [\n left,\n top,\n left + width,\n top + height,\n ]);\n\n const guideLines: GuideLine = pos.position.EastOrWest\n ? [l, rect.top, l, rect.bottom, r, rect.top, r, rect.bottom]\n : [rect.left, t, rect.right, t, rect.left, b, rect.right, b];\n\n return { l, r, t, b, guideLines };\n }\n\n /**\n * @returns [left, top, right, bottom]\n */\n getDropRectOutline(lineWidth: number, dragState?: DragState) {\n const { pos, clientRect: rect } = this;\n const { width: suggestedWidth, height: suggestedHeight, position } = pos;\n\n const { width: intrinsicWidth, height: intrinsicHeight } =\n dragState?.intrinsicSize ?? {};\n const sizeHeight = intrinsicHeight ?? suggestedHeight ?? 0;\n const sizeWidth = intrinsicWidth ?? suggestedWidth ?? 0;\n\n this.dropRect = undefined;\n\n const { top: t, left: l, right: r, bottom: b } = rect;\n\n const inset = 0;\n const gap = Math.round(lineWidth / 2) + inset;\n\n switch (position) {\n case Position.North:\n case Position.Header: {\n const halfHeight = Math.round((b - t) / 2);\n const height = sizeHeight\n ? Math.min(halfHeight, Math.round(sizeHeight))\n : halfHeight;\n return sizeWidth && l + sizeWidth < r\n ? [l + gap, t + gap, l + sizeWidth - gap, t + gap + height] // need flex direction indicator\n : [l + gap, t + gap, r - gap, t + gap + height];\n }\n case Position.West: {\n const halfWidth = Math.round((r - l) / 2);\n const width = sizeWidth\n ? Math.min(halfWidth, Math.round(sizeWidth))\n : halfWidth;\n return sizeHeight && t + sizeHeight < b\n ? [l + gap, t + gap, l - gap + width, t + sizeHeight + gap] // need flex direction indicator\n : [l + gap, t + gap, l - gap + width, b - gap];\n }\n case Position.East: {\n const halfWidth = Math.round((r - l) / 2);\n const width = sizeWidth\n ? Math.min(halfWidth, Math.round(sizeWidth))\n : halfWidth;\n return sizeHeight && t + sizeHeight < b\n ? [r - gap - width, t + gap, r - gap, t + sizeHeight + gap] // need flex direction indicator\n : [r - gap - width, t + gap, r - gap, b - gap];\n }\n case Position.South: {\n const halfHeight = Math.round((b - t) / 2);\n const height = sizeHeight\n ? Math.min(halfHeight, Math.round(sizeHeight))\n : halfHeight;\n\n return sizeWidth && l + sizeWidth < r\n ? [l + gap, b - gap - height, l + sizeWidth - gap, b - gap] // need flex direction indicator\n : [l + gap, b - gap - height, r - gap, b - gap];\n }\n case Position.Centre: {\n return [l + gap, t + gap, r - gap, b - gap];\n }\n default:\n console.warn(`DropTarget does not recognize position ${position}`);\n return null;\n }\n }\n\n activate() {\n this.active = true;\n return this;\n }\n\n toArray(this: DropTarget) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let dropTarget: DropTarget | null = this;\n const dropTargets = [dropTarget];\n // eslint-disable-next-line no-cond-assign\n while ((dropTarget = dropTarget.nextDropTarget)) {\n dropTargets.push(dropTarget);\n }\n return dropTargets;\n }\n\n static getActiveDropTarget(dropTarget: DropTarget | null): DropTarget | null {\n return dropTarget === null\n ? null\n : dropTarget?.active\n ? dropTarget\n : DropTarget.getActiveDropTarget(dropTarget.nextDropTarget);\n }\n}\n\n// Initial entry to this method is always via the app (may be it should be *on* the app)\nexport function identifyDropTarget(\n x: number,\n y: number,\n rootLayout: LayoutModel,\n measurements: Measurements,\n intrinsicSize?: number,\n validDropTargets?: string[]\n) {\n let dropTarget = null;\n\n const allBoxesContainingPoint = BoxModel.allBoxesContainingPoint(\n rootLayout,\n measurements,\n x,\n y,\n validDropTargets\n );\n\n if (allBoxesContainingPoint.length) {\n const [component, ...containers] = allBoxesContainingPoint;\n const {\n \"data-path\": dataPath,\n path = dataPath,\n \"data-row-placeholder\": isRowPlaceholder,\n } = getProps(component);\n const clientRect = measurements[path];\n const placeholderOrientation =\n intrinsicSize && isRowPlaceholder ? \"row\" : undefined;\n const pos = getPosition(x, y, clientRect, placeholderOrientation);\n const box = measurements[path];\n\n const nextDropTarget = ([nextTarget, ...targets]: LayoutModel[]):\n | DropTarget\n | undefined => {\n if (pos.position?.Header || pos.closeToTheEdge) {\n const targetPosition = getTargetPosition(\n nextTarget,\n pos,\n box,\n measurements,\n x,\n y\n );\n if (targetPosition) {\n const [containerPos, clientRect] = targetPosition;\n\n return new DropTarget({\n component: nextTarget,\n pos: containerPos,\n clientRect,\n nextDropTarget: nextDropTarget(targets) ?? null,\n });\n } else if (targets.length) {\n return nextDropTarget(targets);\n }\n }\n };\n dropTarget = new DropTarget({\n component,\n pos,\n clientRect,\n nextDropTarget: nextDropTarget(containers) ?? null,\n }).activate();\n }\n\n return dropTarget;\n}\n\nfunction getTargetPosition(\n container: LayoutModel,\n { closeToTheEdge, position }: DropPos,\n box: rect,\n measurements: Measurements,\n x: number,\n y: number\n): [DropPos, DragDropRect] | undefined {\n if (!container || container.type === \"DraggableLayout\") {\n return;\n }\n\n const containingBox = measurements[container.props.path];\n const closeToTop = closeToTheEdge & positionValues.north;\n const closeToRight = closeToTheEdge & positionValues.east;\n const closeToBottom = closeToTheEdge & positionValues.south;\n const closeToLeft = closeToTheEdge & positionValues.west;\n\n const atTop =\n (closeToTop || position.Header) &&\n Math.round(box.top) === Math.round(containingBox.top);\n const atRight =\n closeToRight && Math.round(box.right) === Math.round(containingBox.right);\n const atBottom =\n closeToBottom &&\n Math.round(box.bottom) === Math.round(containingBox.bottom);\n const atLeft =\n closeToLeft && Math.round(box.left) === Math.round(containingBox.left);\n\n if (atTop || atRight || atBottom || atLeft) {\n const { \"data-path\": dataPath, path = dataPath } = container.props;\n const clientRect = measurements[path];\n const containerPos = getPosition(x, y, clientRect);\n\n // if its a VBox and we're close to left or right ...\n if (\n (isVBox(container) || isTabbedContainer(container)) &&\n closeToTheEdge & eastwest\n ) {\n containerPos.width = 120;\n return [containerPos, clientRect];\n }\n // if it's a HBox and we're close to top or bottom ...\n else if (\n (isHBox(container) || isTabbedContainer(container)) &&\n (position.Header || closeToTheEdge & northsouth)\n ) {\n containerPos.height = 120;\n return [containerPos, clientRect];\n }\n }\n}\n\nfunction isTabbedContainer(component: LayoutModel) {\n return typeOf(component) === \"Stack\";\n}\n\nfunction isVBox(component: LayoutModel) {\n return (\n typeOf(component) === \"Flexbox\" &&\n component.props.style.flexDirection === \"column\"\n );\n}\n\nfunction isHBox(component: LayoutModel) {\n return (\n typeOf(component) === \"Flexbox\" &&\n component.props.style.flexDirection === \"row\"\n );\n}\n", "import { PopupService } from \"@vuu-ui/vuu-popups\";\nimport { RelativeDropPosition } from \"./BoxModel\";\nimport { DragDropRect } from \"./dragDropTypes\";\nimport { DragState } from \"./DragState\";\nimport { computeMenuPosition, DropMenu } from \"./DropMenu\";\nimport { DropTarget, GuideLine } from \"./DropTarget\";\n\nimport \"./DropTargetRenderer.css\";\n\ntype Point = [number, number];\ntype TabMode = \"full-view\" | \"tab-only\";\n\nlet _multiDropOptions = false;\nlet _hoverDropTarget: DropTarget | null = null;\nlet _shiftedTab: HTMLElement | null = null;\n\nconst onHoverDropTarget = (dropTarget: DropTarget | null) =>\n (_hoverDropTarget = dropTarget);\n\nconst start = ([x, y]: Point) => `M${x},${y}`;\nconst point = ([x, y]: Point) => `L${x},${y}`;\nconst pathFromPoints = ([p1, ...points]: Point[]) =>\n `${start(p1)} ${points.map(point)}Z`;\n\nconst pathFromGuideLines = (guideLines?: GuideLine) => {\n if (guideLines) {\n const [x1, y1, x2, y2, x3, y3, x4, y4] = guideLines;\n return `M${x1},${y1} L${x2},${y2} M${x3},${y3} L${x4},${y4}`;\n } else {\n return \"\";\n }\n};\n\nfunction insertSVGRoot() {\n if (document.getElementById(\"hw-drag-canvas\") === null) {\n const root = document.getElementById(\"root\");\n const container = document.createElement(\"div\");\n container.id = \"hw-drag-canvas\";\n container.innerHTML = `\n <svg width=\"100%\" height=\"100%\">\n <path id=\"hw-drop-guides\" />\n <path\n id=\"vuu-drop-outline\"\n d=\"M300,132 L380,132 L380,100 L460,100 L460,132, L550,132 L550,350 L300,350z\">\n <animate\n attributeName=\"d\"\n id=\"hw-drop-outline-animate\"\n begin=\"indefinite\"\n dur=\"300ms\"\n fill=\"freeze\"\n to=\"M255,33 L255,33,L255,1,L315,1,L315,1,L794,1,L794,164,L255,164Z\"\n />\n </path>\n </svg>\n `;\n document.body.insertBefore(container, root);\n }\n}\nexport default class DropTargetCanvas {\n private currentPath: string | null = null;\n private tabMode: TabMode | null = null;\n\n constructor() {\n insertSVGRoot();\n }\n\n prepare(dragRect: DragDropRect, tabMode: TabMode = \"full-view\") {\n // don't do this on body\n document.body.classList.add(\"drawing\");\n this.currentPath = null;\n this.tabMode = tabMode;\n\n const points = this.getPoints(0, 0, 0, 0);\n // const points = this.getPoints(left, top, width, height);\n const d = pathFromPoints(points);\n\n const dropOutlinePath = document.getElementById(\"vuu-drop-outline\");\n dropOutlinePath?.setAttribute(\"d\", d);\n this.currentPath = d;\n }\n\n clear() {\n // don't do this on body\n _hoverDropTarget = null;\n clearShiftedTab();\n document.body.classList.remove(\"drawing\");\n PopupService.hidePopup();\n }\n\n get hoverDropTarget() {\n return _hoverDropTarget;\n }\n\n getPoints(\n x: number,\n y: number,\n width: number,\n height: number,\n tabLeft = 0,\n tabWidth = 0,\n tabHeight = 0\n ): Point[] {\n const tabOnly = this.tabMode === \"tab-only\";\n if (tabWidth === 0) {\n return [\n [x, y + tabHeight],\n [x, y + tabHeight],\n [x, y],\n [x + tabWidth, y],\n [x + tabWidth, y],\n [x + width, y],\n [x + width, y + height],\n [x, y + height],\n ];\n } else if (tabOnly) {\n const left = tabLeft;\n return [\n [left, y],\n [left, y],\n [left + tabWidth, y],\n [left + tabWidth, y],\n [left + tabWidth, y + tabHeight],\n [left + tabWidth, y + tabHeight],\n [left, y + tabHeight],\n [left, y + tabHeight],\n ];\n } else if (tabLeft === 0) {\n return [\n [x, y + tabHeight],\n [x, y + tabHeight],\n [x, y],\n [x + tabWidth, y],\n [x + tabWidth, y + tabHeight],\n [x + width, y + tabHeight],\n [x + width, y + height],\n [x, y + height],\n ];\n } else {\n return [\n [x, y + tabHeight],\n [x + tabLeft, y + tabHeight],\n [x + tabLeft, y],\n [x + tabLeft, y],\n [x + tabLeft, y + tabHeight],\n [x + width, y + tabHeight],\n [x + width, y + height],\n [x, y + height],\n ];\n }\n }\n\n draw(dropTarget: DropTarget, dragState: DragState) {\n const sameDropTarget = false;\n const wasMultiDrop = _multiDropOptions;\n\n if (_hoverDropTarget !== null) {\n this.drawTarget(_hoverDropTarget);\n } else {\n if (sameDropTarget === false) {\n _multiDropOptions = dropTarget.nextDropTarget != null;\n if (dropTarget.pos.tab) {\n moveExistingTabs(dropTarget);\n } else if (_shiftedTab) {\n clearShiftedTab();\n }\n this.drawTarget(dropTarget, dragState);\n }\n\n if (_multiDropOptions) {\n const [left, top, orientation] = computeMenuPosition(dropTarget);\n if (!wasMultiDrop || !sameDropTarget) {\n const component = (\n <DropMenu\n dropTarget={dropTarget}\n onHover={onHoverDropTarget}\n orientation={orientation}\n />\n );\n PopupService.showPopup({\n left,\n top,\n component,\n });\n }\n } else {\n PopupService.hidePopup();\n }\n }\n }\n\n drawTarget(dropTarget: DropTarget, dragState?: DragState) {\n const lineWidth = 6;\n\n const targetDropOutline = dropTarget.getTargetDropOutline(\n lineWidth,\n dragState\n );\n\n if (targetDropOutline) {\n const { l, t, r, b, tabLeft, tabWidth, tabHeight, guideLines } =\n targetDropOutline;\n const w = r - l;\n const h = b - t;\n\n if (this.currentPath) {\n const path = document.getElementById(\"vuu-drop-outline\");\n path?.setAttribute(\"d\", this.currentPath);\n }\n\n const points = this.getPoints(l, t, w, h, tabLeft, tabWidth, tabHeight);\n const path = pathFromPoints(points);\n const animation = document.getElementById(\n \"hw-drop-outline-animate\"\n ) as unknown as SVGAnimateElement;\n animation?.setAttribute(\"to\", path);\n animation?.beginElement();\n this.currentPath = path;\n\n const dropGuidePath = document.getElementById(\"hw-drop-guides\");\n dropGuidePath?.setAttribute(\"d\", pathFromGuideLines(guideLines));\n }\n }\n}\n\nconst cssShiftRight = \"transition:margin-left .4s ease-out;margin-left: 63px\";\nconst cssShiftBack = \"transition:margin-left .4s ease-out;margin-left: 0px\";\n\nfunction moveExistingTabs(dropTarget: DropTarget) {\n const { AFTER, BEFORE } = RelativeDropPosition;\n const {\n clientRect: { Stack },\n pos: {\n // tab: { index: tabIndex, positionRelativeToTab }\n tab,\n },\n } = dropTarget;\n\n const { id } = dropTarget.component.props;\n let tabEl = null;\n // console.log(`tabPos = ${tabPos} (width=${tabWidth}) x=${x}`)\n if (Stack && tab && tab.positionRelativeToTab !== AFTER) {\n const tabOffset = tab.positionRelativeToTab === BEFORE ? 1 : 2;\n const selector = `:scope .hwTabstrip > .hwTabstrip-inner > .hwTab:nth-child(${\n tab.index + tabOffset\n })`;\n tabEl = document.getElementById(id)?.querySelector(selector) as HTMLElement;\n if (tabEl) {\n if (_shiftedTab === null || _shiftedTab !== tabEl) {\n tabEl.style.cssText = cssShiftRight;\n if (_shiftedTab) {\n _shiftedTab.style.cssText = cssShiftBack;\n }\n _shiftedTab = tabEl;\n }\n } else {\n clearShiftedTab();\n }\n } else if (tab?.positionRelativeToTab === BEFORE) {\n if (_shiftedTab === null) {\n const selector = \".vuuHeader-title\";\n tabEl = document\n .getElementById(id)\n ?.querySelector(selector) as HTMLElement;\n tabEl.style.cssText = cssShiftRight;\n _shiftedTab = tabEl;\n }\n } else {\n clearShiftedTab();\n }\n}\n\nfunction clearShiftedTab() {\n if (_shiftedTab) {\n _shiftedTab.style.cssText = cssShiftBack;\n _shiftedTab = null;\n }\n}\n", "import cx from \"classnames\";\nimport { HTMLAttributes } from \"react\";\nimport { DropTarget } from \"./DropTarget\";\n\nimport \"./DropMenu.css\";\n\nexport function computeMenuPosition(\n dropTarget: DropTarget,\n offsetTop = 0,\n offsetLeft = 0\n): [number, number, \"left\" | \"bottom\" | \"right\" | \"top\"] {\n const { pos, clientRect: box } = dropTarget;\n const menuOffset = 20;\n\n return pos.position.West\n ? [box.left - offsetLeft + menuOffset, pos.y - offsetTop, \"left\"]\n : pos.position.South\n ? [pos.x - offsetLeft, box.bottom - offsetTop - menuOffset, \"bottom\"]\n : pos.position.East\n ? [box.right - offsetLeft - menuOffset, pos.y - offsetTop, \"right\"]\n : /* North | Header*/ [\n pos.x - offsetLeft,\n box.top - offsetTop + menuOffset,\n \"top\",\n ];\n}\n\nconst classBase = \"vuuDropMenu\";\n\nexport interface DropMenuProps extends HTMLAttributes<HTMLDivElement> {\n dropTarget: DropTarget;\n onHover: (target: DropTarget | null) => void;\n orientation?: \"left\" | \"top\" | \"right\" | \"bottom\";\n}\n\nexport const DropMenu = ({\n className,\n dropTarget,\n onHover,\n orientation,\n}: DropMenuProps) => {\n const dropTargets = dropTarget.toArray();\n // TODO we have all the information here to draw a mini target map\n // but maybe thats overkill ...\n\n return (\n <div\n className={cx(classBase, className, `${classBase}-${orientation}`)}\n onMouseLeave={() => onHover(null)}\n >\n {dropTargets.map((target, i) => (\n <div\n key={i}\n className={`${classBase}-item`}\n data-icon={i === 0 ? \"column-2A\" : \"column-2B\"}\n onMouseEnter={() => onHover(target)}\n />\n ))}\n </div>\n );\n};\n", "import { ReactElement } from \"react\";\nimport { rect } from \"../common-types\";\nimport { LayoutModel } from \"../layout-reducer\";\nimport { findTarget, followPath, getProps } from \"../utils\";\nimport { BoxModel, Measurements, Position } from \"./BoxModel\";\nimport { DragDropRect } from \"./dragDropTypes\";\nimport { DragState, IntrinsicSizes } from \"./DragState\";\nimport { DropTarget, identifyDropTarget } from \"./DropTarget\";\nimport DropTargetRenderer from \"./DropTargetRenderer\";\n\nexport type DragStartCallback = (e: MouseEvent, x: number, y: number) => void;\nexport type DragMoveCallback = (\n x: number | undefined,\n y: number | undefined\n) => void;\nexport type DragEndCallback = (droppedTarget: Partial<DropTarget>) => void;\nexport type DragInstructions = {\n DoNotRemove?: boolean;\n DoNotTransform?: boolean;\n dragThreshold?: number;\n RemoveDraggableOnDragEnd?: boolean;\n};\n\nlet _dragStartCallback: DragStartCallback | null;\nlet _dragMoveCallback: DragMoveCallback | null;\nlet _dragEndCallback: DragEndCallback | null;\n\nlet _dragStartX: number;\nlet _dragStartY: number;\nlet _dragContainer: ReactElement | undefined;\nlet _dragState: DragState;\nlet _dropTarget: DropTarget | null = null;\nlet _validDropTargetPaths: string[] | undefined;\nlet _dragInstructions: DragInstructions;\nlet _measurements: Measurements;\nlet _simpleDrag: boolean;\nlet _dragThreshold: number;\nlet _mouseDownTimer: number | null = null;\n\nconst DEFAULT_DRAG_THRESHOLD = 3;\nconst _dropTargetRenderer = new DropTargetRenderer();\nconst SCALE_FACTOR = 0.4;\n\nfunction getDragContainer(\n rootContainer: ReactElement,\n dragContainerPath: string\n) {\n if (dragContainerPath) {\n return followPath(rootContainer, dragContainerPath) as ReactElement;\n } else {\n return findTarget(\n rootContainer,\n (props) => props.dropTarget\n ) as ReactElement;\n }\n}\n\nexport const Draggable = {\n handleMousedown(\n e: MouseEvent,\n dragStartCallback: DragStartCallback,\n dragInstructions: DragInstructions = {}\n ) {\n _dragStartCallback = dragStartCallback;\n _dragInstructions = dragInstructions;\n\n _dragStartX = e.clientX;\n _dragStartY = e.clientY;\n\n _dragThreshold =\n dragInstructions.dragThreshold === undefined\n ? DEFAULT_DRAG_THRESHOLD\n : dragInstructions.dragThreshold;\n\n if (_dragThreshold === 0) {\n // maybe this should be -1\n _dragStartCallback(e, 0, 0);\n } else {\n window.addEventListener(\"mousemove\", preDragMousemoveHandler, false);\n window.addEventListener(\"mouseup\", preDragMouseupHandler, false);\n\n _mouseDownTimer = window.setTimeout(() => {\n console.log(\"mousedownTimer fires\");\n window.removeEventListener(\"mousemove\", preDragMousemoveHandler, false);\n window.removeEventListener(\"mouseup\", preDragMouseupHandler, false);\n _dragStartCallback?.(e, 0, 0);\n }, 500);\n }\n\n e.preventDefault();\n },\n\n // called from handleDragStart (_dragCallback)\n initDrag(\n rootContainer: ReactElement,\n dragContainerPath: string,\n { top, left, right, bottom }: rect,\n dragPos: { x: number; y: number },\n dragHandler: {\n drag: DragMoveCallback;\n drop: DragEndCallback;\n },\n intrinsicSize?: IntrinsicSizes,\n dropTargets?: string[]\n ) {\n ({ drag: _dragMoveCallback, drop: _dragEndCallback } = dragHandler);\n return initDrag(\n rootContainer,\n dragContainerPath,\n { top, left, right, bottom } as DragDropRect,\n dragPos,\n intrinsicSize,\n dropTargets\n );\n },\n};\n\nfunction preDragMousemoveHandler(e: MouseEvent) {\n const x = true;\n const y = true;\n\n const x_diff = x ? e.clientX - _dragStartX : 0;\n const y_diff = y ? e.clientY - _dragStartY : 0;\n const mouseMoveDistance = Math.max(Math.abs(x_diff), Math.abs(y_diff));\n\n // when we do finally move the draggee, we are going to 'jump' by the amount of the drag threshold, should we\n // attempt to animate this ?\n if (mouseMoveDistance > _dragThreshold) {\n window.removeEventListener(\"mousemove\", preDragMousemoveHandler, false);\n window.removeEventListener(\"mouseup\", preDragMouseupHandler, false);\n _dragStartCallback?.(e, x_diff, y_diff);\n _dragStartCallback = null;\n }\n}\n\nfunction preDragMouseupHandler() {\n if (_mouseDownTimer) {\n window.clearTimeout(_mouseDownTimer);\n _mouseDownTimer = null;\n }\n window.removeEventListener(\"mousemove\", preDragMousemoveHandler, false);\n window.removeEventListener(\"mouseup\", preDragMouseupHandler, false);\n}\n\nfunction initDrag(\n rootContainer: ReactElement,\n dragContainerPath: string,\n dragRect: DragDropRect,\n dragPos: { x: number; y: number },\n intrinsicSize?: IntrinsicSizes,\n dropTargets?: string[]\n) {\n _dragContainer = getDragContainer(rootContainer, dragContainerPath);\n const { \"data-path\": dataPath, path = dataPath } = getProps(_dragContainer);\n\n if (dropTargets) {\n const dropPaths = dropTargets\n .map((id) => findTarget(rootContainer, (props) => props.id === id))\n .map((target) => (target as LayoutModel).props.path);\n _validDropTargetPaths = dropPaths;\n }\n\n // var start = window.performance.now();\n // translate the layout $position to drag-oriented co-ordinates, ignoring splitters\n _measurements = BoxModel.measure(_dragContainer, dropTargets);\n console.log({ _measurements });\n // onsole.log({ measurements: _measurements });\n // var end = window.performance.now();\n // onsole.log(`[Draggable] measurements took ${end - start}ms`, _measurements);\n\n const dragZone = _measurements[path];\n\n _dragState = new DragState(\n dragZone,\n dragPos.x,\n dragPos.y,\n dragRect,\n intrinsicSize\n );\n\n const pctX = Math.round(_dragState.x.mousePct * 100);\n const pctY = Math.round(_dragState.y.mousePct * 100);\n\n window.addEventListener(\"mousemove\", dragMousemoveHandler, false);\n window.addEventListener(\"mouseup\", dragMouseupHandler, false);\n\n _simpleDrag = false;\n\n _dropTargetRenderer.prepare(dragRect, \"tab-only\");\n\n return _dragInstructions.DoNotTransform\n ? \"transform:none\"\n : // scale factor should be applied in caller, not here\n `transform:scale(${SCALE_FACTOR},${SCALE_FACTOR});transform-origin:${pctX}% ${pctY}%;`;\n}\n\nfunction dragMousemoveHandler(evt: MouseEvent) {\n const x = evt.clientX;\n const y = evt.clientY;\n const dragState = _dragState;\n const currentDropTarget = _dropTarget;\n let dropTarget;\n let newX, newY;\n\n if (dragState.update(\"x\", x)) {\n newX = dragState.x.pos;\n }\n\n if (dragState.update(\"y\", y)) {\n newY = dragState.y.pos;\n }\n\n if (newX === undefined && newY === undefined) {\n //onsole.log('both x and y are unchanged');\n } else {\n _dragMoveCallback?.(newX, newY);\n }\n\n if (_simpleDrag || _dragContainer === undefined) {\n return;\n }\n\n if (dragState.inBounds()) {\n dropTarget = identifyDropTarget(\n x,\n y,\n _dragContainer,\n _measurements,\n dragState.hasIntrinsicSize(),\n _validDropTargetPaths\n );\n } else {\n dropTarget = identifyDropTarget(\n dragState.dropX(),\n dragState.dropY(),\n _dragContainer,\n _measurements\n );\n }\n\n // did we have an existing droptarget which is no longer such ...\n if (currentDropTarget) {\n if (dropTarget == null || dropTarget.box !== currentDropTarget.box) {\n _dropTarget = null;\n }\n }\n\n if (dropTarget) {\n _dropTargetRenderer.draw(dropTarget, dragState);\n _dropTarget = dropTarget;\n }\n}\n\nfunction dragMouseupHandler() {\n onDragEnd();\n}\n\nfunction onDragEnd() {\n if (_dropTarget) {\n const dropTarget =\n _dropTargetRenderer.hoverDropTarget ||\n DropTarget.getActiveDropTarget(_dropTarget);\n\n _dragEndCallback?.(dropTarget as DropTarget);\n\n _dropTarget = null;\n } else {\n _dragEndCallback?.({\n component: _dragContainer,\n pos: { position: Position.Absolute } as any,\n });\n }\n\n _dragMoveCallback = null;\n _dragEndCallback = null;\n\n _dragContainer = undefined;\n _dropTargetRenderer.clear();\n _validDropTargetPaths = undefined;\n window.removeEventListener(\"mousemove\", dragMousemoveHandler, false);\n window.removeEventListener(\"mouseup\", dragMouseupHandler, false);\n}\n", "import classnames from \"classnames\";\nimport { ForwardedRef, forwardRef, HTMLAttributes } from \"react\";\nimport { registerComponent } from \"./registry/ComponentRegistry\";\n\nimport \"./DraggableLayout.css\";\n\nexport interface DraggableLayoutProps extends HTMLAttributes<HTMLDivElement> {\n dropTarget?: boolean;\n resizeable?: boolean;\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const DraggableLayout = forwardRef(function DraggableLayout(\n {\n children,\n className: classNameProp,\n dropTarget,\n resizeable: _, // ignore, its just a marker used by the layout system\n ...htmlAttributes\n }: DraggableLayoutProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const className = classnames(\"DraggableLayout\", classNameProp);\n return (\n <div className={className} ref={forwardedRef} {...htmlAttributes}>\n {children}\n </div>\n );\n});\n\nconst componentName = \"DraggableLayout\";\n\nDraggableLayout.displayName = componentName;\n\nregisterComponent(componentName, DraggableLayout, \"container\");\n", "import { useForkRef } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport { CSSProperties, ForwardedRef, forwardRef } from \"react\";\nimport { FlexboxProps } from \"./flexboxTypes\";\nimport { useSplitterResizing } from \"./useSplitterResizing\";\n\nimport \"./Flexbox.css\";\n\nconst classBase = \"hwFlexbox\";\n\nconst Flexbox = forwardRef(function Flexbox(\n props: FlexboxProps,\n ref: ForwardedRef<HTMLDivElement>\n) {\n const {\n breakPoints,\n children,\n // cols: colsProp,\n column,\n className: classNameProp,\n flexFill,\n gap,\n fullPage,\n id,\n onSplitterMoved,\n resizeable,\n row,\n spacing,\n splitterSize,\n style,\n ...rest\n } = props;\n\n const { content, rootRef } = useSplitterResizing({\n children,\n // cols: colsProp,\n onSplitterMoved,\n style,\n });\n\n const className = cx(classBase, classNameProp, {\n [`${classBase}-column`]: column,\n [`${classBase}-row`]: row,\n \"flex-fill\": flexFill,\n \"full-page\": fullPage,\n });\n\n return (\n <div\n {...rest}\n className={className}\n // data-cols={cols}\n data-resizeable={resizeable || undefined}\n id={id}\n ref={useForkRef(rootRef, ref)}\n style={\n {\n ...style,\n gap,\n \"--spacing\": spacing,\n } as CSSProperties\n }\n >\n {content}\n </div>\n );\n});\nFlexbox.displayName = \"Flexbox\";\n\nexport default Flexbox;\n", "import { getUniqueId } from \"@vuu-ui/vuu-utils\";\nimport React, {\n ReactElement,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Placeholder } from \"../placeholder\";\nimport { Splitter } from \"./Splitter\";\n\nimport {\n findSplitterAndPlaceholderPositions,\n gatherChildMeta,\n identifyResizeParties,\n PLACEHOLDER,\n SPLITTER,\n} from \"./flexbox-utils\";\nimport {\n ContentMeta,\n FlexSize,\n SplitterFactory,\n SplitterHookProps,\n SplitterHookResult,\n} from \"./flexboxTypes\";\n\nconst originalContentOnly = (meta: ContentMeta) =>\n !meta.splitter && !meta.placeholder;\n\nexport const useSplitterResizing = ({\n children: childrenProp,\n onSplitterMoved,\n style,\n}: SplitterHookProps): SplitterHookResult => {\n const rootRef = useRef<HTMLDivElement>(null);\n const metaRef = useRef<ContentMeta[]>();\n const contentRef = useRef<ReactElement[]>();\n const assignedKeys = useRef([]);\n const [, forceUpdate] = useState({});\n\n const setContent = (content: ReactElement[]) => {\n contentRef.current = content;\n forceUpdate({});\n };\n\n const isColumn = style?.flexDirection === \"column\";\n const dimension = isColumn ? \"height\" : \"width\";\n const children = useMemo(\n () =>\n Array.isArray(childrenProp)\n ? childrenProp\n : React.isValidElement(childrenProp)\n ? [childrenProp]\n : [],\n [childrenProp]\n );\n\n const handleDragStart = useCallback(\n (index) => {\n const { current: contentMeta } = metaRef;\n if (contentMeta) {\n const [participants, bystanders] = identifyResizeParties(\n contentMeta,\n index\n );\n if (participants) {\n participants.forEach((index) => {\n const el = rootRef.current?.childNodes[index] as HTMLElement;\n if (el) {\n const { size, minSize } = measureElement(el, dimension);\n contentMeta[index].currentSize = size;\n contentMeta[index].minSize = minSize;\n }\n });\n if (bystanders) {\n bystanders.forEach((index) => {\n const el = rootRef.current?.childNodes[index] as HTMLElement;\n if (el) {\n const { [dimension]: size } = el.getBoundingClientRect();\n contentMeta[index].flexBasis = size;\n }\n });\n }\n }\n }\n },\n [dimension]\n );\n\n const handleDrag = useCallback(\n (idx, distance) => {\n if (contentRef.current && metaRef.current) {\n setContent(\n resizeContent(\n contentRef.current,\n metaRef.current,\n distance,\n dimension\n )\n );\n }\n },\n [dimension]\n );\n\n const handleDragEnd = useCallback(() => {\n const contentMeta = metaRef.current;\n if (contentMeta) {\n onSplitterMoved?.(contentMeta.filter(originalContentOnly));\n }\n contentMeta?.forEach((meta) => {\n meta.currentSize = undefined;\n meta.flexBasis = undefined;\n meta.flexOpen = false;\n });\n }, [onSplitterMoved]);\n\n const createSplitter: SplitterFactory = useCallback(\n (i) => {\n return React.createElement(Splitter, {\n column: isColumn,\n index: i,\n key: `splitter-${i}`,\n onDrag: handleDrag,\n onDragEnd: handleDragEnd,\n onDragStart: handleDragStart,\n });\n },\n [handleDrag, handleDragEnd, handleDragStart, isColumn]\n );\n\n useMemo(() => {\n const [content, meta] = buildContent(\n children,\n dimension,\n createSplitter,\n assignedKeys.current\n );\n metaRef.current = meta;\n contentRef.current = content;\n }, [children, createSplitter, dimension]);\n\n return {\n content: contentRef.current || [],\n rootRef,\n };\n};\n\nfunction buildContent(\n children: ReactElement[],\n dimension: \"width\" | \"height\",\n createSplitter: SplitterFactory,\n keys: any[]\n): [any[], ContentMeta[]] {\n const childMeta = gatherChildMeta(children, dimension);\n const splitterAndPlaceholderPositions =\n findSplitterAndPlaceholderPositions(childMeta);\n const content = [];\n const meta: ContentMeta[] = [];\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (i === 0 && splitterAndPlaceholderPositions[i] & PLACEHOLDER) {\n content.push(createPlaceholder(i));\n meta.push({ placeholder: true, shim: true });\n }\n if (child.key == null) {\n const key = keys[i] || (keys[i] = getUniqueId());\n content.push(React.cloneElement(child, { key }));\n } else {\n content.push(child);\n }\n meta.push(childMeta[i]);\n\n if (i > 0 && splitterAndPlaceholderPositions[i] & PLACEHOLDER) {\n content.push(createPlaceholder(i));\n meta.push({ placeholder: true });\n } else if (splitterAndPlaceholderPositions[i] & SPLITTER) {\n content.push(createSplitter(content.length));\n meta.push({ splitter: true });\n }\n }\n return [content, meta];\n}\n\nfunction resizeContent(\n content: ReactElement[],\n contentMeta: ContentMeta[],\n distance: number,\n dimension: \"width\" | \"height\"\n) {\n const metaUpdated = updateMeta(contentMeta, distance);\n if (!metaUpdated) {\n return content;\n }\n\n return content.map((child, idx) => {\n const meta = contentMeta[idx];\n const { currentSize, flexOpen, flexBasis } = meta;\n const hasCurrentSize = currentSize !== undefined;\n if (hasCurrentSize || flexOpen) {\n const { flexBasis: actualFlexBasis } = child.props.style || {};\n const size = hasCurrentSize ? meta.currentSize : flexBasis;\n if (size !== actualFlexBasis) {\n return React.cloneElement(child, {\n style: {\n ...child.props.style,\n flexBasis: size,\n [dimension]: \"auto\",\n },\n });\n } else {\n return child;\n }\n } else {\n return child;\n }\n });\n}\n\n//TODO detect cursor move beyond drag limit and suspend further resize until cursoe re-engages with splitter\nfunction updateMeta(contentMeta: ContentMeta[], distance: number) {\n const resizeTargets: number[] = [];\n\n contentMeta.forEach((meta, idx) => {\n if (meta.currentSize !== undefined) {\n resizeTargets.push(idx);\n }\n });\n\n // we want the target being reduced first, this may limit the distance we can apply\n const target1 = distance < 0 ? resizeTargets[0] : resizeTargets[1];\n\n const { currentSize = 0, minSize = 0 } = contentMeta[target1];\n if (currentSize === minSize) {\n // size is already 0, we cannot go further\n return false;\n } else if (Math.abs(distance) > currentSize - minSize) {\n // reduce to 0\n const multiplier = distance < 0 ? -1 : 1;\n distance = Math.max(0, currentSize - minSize) * multiplier;\n }\n\n const leadingItem = contentMeta[resizeTargets[0]] as ContentMeta;\n const { currentSize: leadingSize = 0 } = leadingItem;\n leadingItem.currentSize = leadingSize + distance;\n\n const trailingItem = contentMeta[resizeTargets[1]] as ContentMeta;\n const { currentSize: trailingSize = 0 } = trailingItem;\n trailingItem.currentSize = trailingSize - distance;\n\n return true;\n}\n\nfunction createPlaceholder(index: number) {\n return React.createElement(Placeholder, {\n shim: index === 0,\n key: `placeholder-${index}`,\n } as any);\n}\n\nfunction measureElement(\n el: HTMLElement,\n dimension: \"width\" | \"height\"\n): FlexSize {\n const { [dimension]: size } = el.getBoundingClientRect();\n const style = getComputedStyle(el);\n const minSizeVal = style.getPropertyValue(`min-${dimension}`);\n const minSize = minSizeVal.endsWith(\"px\") ? parseInt(minSizeVal, 10) : 0;\n return { size, minSize };\n}\n", "import cx from \"classnames\";\nimport { HTMLAttributes } from \"react\";\nimport { registerComponent } from \"../registry/ComponentRegistry\";\n\nimport \"./Placeholder.css\";\n\nconst classBase = \"vuuPlaceholder\";\n\nexport interface PlaceholderProps extends HTMLAttributes<HTMLDivElement> {\n closeable?: boolean;\n flexFill?: boolean;\n resizeable?: boolean;\n shim?: boolean;\n}\n\nexport const Placeholder = ({\n className,\n closeable,\n flexFill,\n resizeable,\n shim,\n ...props\n}: PlaceholderProps) => {\n return (\n <div\n className={cx(classBase, className, {\n [`${classBase}-shim`]: shim,\n })}\n {...props}\n data-placeholder\n data-resizeable\n >\n </div>\n );\n};\n\nPlaceholder.displayName = \"Placeholder\";\nregisterComponent(\"Placeholder\", Placeholder);\n", "import cx from \"classnames\";\nimport React, {\n HTMLAttributes,\n KeyboardEvent,\n useCallback,\n useRef,\n useState,\n} from \"react\";\n\nimport \"./Splitter.css\";\n\nexport type SplitterDragStartHandler = (index: number) => void;\nexport type SplitterDragHandler = (index: number, distance: number) => void;\nexport type SplitterDragEndHandler = () => void;\n\nexport interface SplitterProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onDrag\" | \"onDragStart\"> {\n //TODO change to alignment (vertical | horizontal)\n column: boolean;\n index: number;\n onDragStart: SplitterDragStartHandler;\n onDrag: SplitterDragHandler;\n onDragEnd: SplitterDragEndHandler;\n}\n\nexport const Splitter = React.memo(function Splitter({\n column,\n index,\n onDrag,\n onDragEnd,\n onDragStart,\n style,\n}: SplitterProps) {\n const ignoreClick = useRef<boolean>();\n const rootRef = useRef<HTMLDivElement>(null);\n const lastPos = useRef<number>(0);\n\n const [active, setActive] = useState(false);\n\n const handleKeyDownDrag = useCallback(\n ({ key, shiftKey }) => {\n const distance = shiftKey ? 10 : 1;\n if (column && key === \"ArrowDown\") {\n onDrag(index, distance);\n } else if (column && key === \"ArrowUp\") {\n onDrag(index, -distance);\n } else if (!column && key === \"ArrowLeft\") {\n onDrag(index, -distance);\n } else if (!column && key === \"ArrowRight\") {\n onDrag(index, distance);\n }\n },\n [column, index, onDrag]\n );\n\n const handleKeyDownInitDrag = useCallback(\n (evt) => {\n const { key } = evt;\n const horizontalMove = key === \"ArrowLeft\" || key === \"ArrowRIght\";\n const verticalMove = key === \"ArrowUp\" || key === \"ArrowDown\";\n if ((column && verticalMove) || (!column && horizontalMove)) {\n onDragStart(index);\n handleKeyDownDrag(evt);\n keyDownHandlerRef.current = handleKeyDownDrag;\n }\n },\n [column, handleKeyDownDrag, index, onDragStart]\n );\n\n const keyDownHandlerRef = useRef(handleKeyDownInitDrag);\n const handleKeyDown = (evt: KeyboardEvent) => keyDownHandlerRef.current(evt);\n\n const handleMouseMove = useCallback(\n (e) => {\n ignoreClick.current = true;\n const pos = e[column ? \"clientY\" : \"clientX\"];\n const diff = pos - lastPos.current;\n if (pos && pos !== lastPos.current) {\n onDrag(index, diff);\n }\n lastPos.current = pos;\n },\n [column, index, onDrag]\n );\n\n const handleMouseUp = useCallback(() => {\n window.removeEventListener(\"mousemove\", handleMouseMove, false);\n window.removeEventListener(\"mouseup\", handleMouseUp, false);\n onDragEnd();\n setActive(false);\n rootRef.current?.focus();\n }, [handleMouseMove, onDragEnd, setActive]);\n\n const handleMouseDown = useCallback(\n (e) => {\n lastPos.current = column ? e.clientY : e.clientX;\n onDragStart(index);\n window.addEventListener(\"mousemove\", handleMouseMove, false);\n window.addEventListener(\"mouseup\", handleMouseUp, false);\n e.preventDefault();\n setActive(true);\n },\n [column, handleMouseMove, handleMouseUp, index, onDragStart, setActive]\n );\n\n const handleClick = () => {\n if (ignoreClick.current) {\n ignoreClick.current = false;\n } else {\n rootRef.current?.focus();\n }\n };\n\n const handleBlur = () => {\n keyDownHandlerRef.current = handleKeyDownInitDrag;\n };\n\n const className = cx(\"Splitter\", \"focusable\", { active, column });\n return (\n <div\n className={className}\n data-splitter\n ref={rootRef}\n role=\"separator\"\n style={style}\n onBlur={handleBlur}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onMouseDown={handleMouseDown}\n tabIndex={0}\n >\n <div className=\"grab-zone\" />\n </div>\n );\n});\n", "import { uuid } from \"@vuu-ui/vuu-utils\";\nimport React, { CSSProperties, ReactElement, ReactNode } from \"react\";\nimport { dimension, rect, rectTuple } from \"../common-types\";\nimport { DropPos } from \"../drag-drop/dragDropTypes\";\nimport { ComponentRegistry } from \"../registry/ComponentRegistry\";\nimport { getProps, resetPath } from \"../utils\";\nconst placeHolderProps = { \"data-placeholder\": true, \"data-resizeable\": true };\n\nconst NO_STYLE = {};\nconst auto = \"auto\";\nconst defaultFlexStyle = {\n flexBasis: 0,\n flexGrow: 1,\n flexShrink: 1,\n height: auto,\n width: auto,\n};\n\nconst CROSS_DIMENSION = {\n height: \"width\",\n width: \"height\",\n};\n\nexport type flexDirection = \"row\" | \"column\";\n\ntype contraDimension = dimension;\ntype flexDimensionTuple = [dimension, contraDimension, flexDirection];\nexport type position = {\n height?: number;\n width?: number;\n};\n\nexport const getFlexDimensions = (flexDirection: flexDirection = \"row\") => {\n if (flexDirection === \"row\") {\n return [\"width\", \"height\", \"column\"] as flexDimensionTuple;\n } else {\n return [\"height\", \"width\", \"row\"] as flexDimensionTuple;\n }\n};\n\nconst isPercentageSize = (value: string | number) =>\n typeof value === \"string\" && value.endsWith(\"%\");\n\nexport const getIntrinsicSize = (\n component: ReactElement\n): { height?: number; width?: number } | undefined => {\n const { style: { width = auto, height = auto } = NO_STYLE } = component.props;\n\n const numHeight = typeof height === \"number\";\n const numWidth = typeof width === \"number\";\n\n if (numHeight && numWidth) {\n return { height, width };\n } else if (numHeight) {\n return { height };\n } else if (numWidth) {\n return { width };\n } else {\n return undefined;\n }\n};\n\nexport function getFlexStyle(\n component: ReactElement,\n dimension: dimension,\n pos?: DropPos\n) {\n const crossDimension = CROSS_DIMENSION[dimension];\n const {\n style: {\n [crossDimension]: intrinsicCrossSize = auto,\n ...intrinsicStyles\n } = NO_STYLE,\n } = component.props;\n\n if (pos && pos[dimension]) {\n return {\n ...intrinsicStyles,\n ...defaultFlexStyle,\n flexBasis: pos[dimension],\n flexGrow: 0,\n flexShrink: 0,\n };\n } else {\n return {\n ...intrinsicStyles,\n ...defaultFlexStyle,\n [crossDimension]: intrinsicCrossSize,\n };\n }\n}\n\nexport function hasUnboundedFlexStyle(component: ReactElement) {\n const { style: { flex, flexGrow, flexShrink, flexBasis } = NO_STYLE } =\n component.props;\n if (typeof flex === \"number\") {\n return true;\n }\n if (flexBasis === 0 && flexGrow === 1 && flexShrink === 1) {\n return true;\n }\n if (typeof flexBasis === \"number\") {\n return false;\n }\n return true;\n}\n\nexport function getFlexOrIntrinsicStyle(\n component: ReactElement,\n dimension: dimension,\n pos: position\n) {\n const crossDimension = CROSS_DIMENSION[dimension];\n const {\n style: {\n [dimension]: intrinsicSize = auto,\n [crossDimension]: intrinsicCrossSize = auto,\n ...intrinsicStyles\n } = NO_STYLE,\n } = component.props;\n\n if (intrinsicSize !== auto) {\n if (isPercentageSize(intrinsicSize)) {\n return {\n flexBasis: 0,\n flexGrow: 1,\n flexShrink: 1,\n [dimension]: undefined,\n [crossDimension]: intrinsicCrossSize,\n };\n }\n return {\n flexBasis: intrinsicSize,\n flexGrow: 0,\n flexShrink: 0,\n [dimension]: intrinsicSize,\n [crossDimension]: intrinsicCrossSize,\n };\n }\n if (pos && pos[dimension]) {\n return {\n ...intrinsicStyles,\n ...defaultFlexStyle,\n flexBasis: pos[dimension],\n flexGrow: 0,\n flexShrink: 0,\n };\n }\n return {\n ...intrinsicStyles,\n [crossDimension]: intrinsicCrossSize,\n };\n}\n\nexport function wrapIntrinsicSizeComponentWithFlexbox(\n component: ReactElement,\n flexDirection: flexDirection,\n path: string,\n clientRect?: rect,\n dropRect?: rectTuple\n) {\n const wrappedChildren = [];\n let pathIndex = 0;\n let endPlaceholder;\n\n if (clientRect && dropRect) {\n let startPlaceholder;\n const [dropLeft, dropTop, dropRight, dropBottom] = dropRect;\n [startPlaceholder, endPlaceholder] =\n flexDirection === \"column\"\n ? [dropTop - clientRect.top, clientRect.bottom - dropBottom]\n : [dropLeft - clientRect.left, clientRect.right - dropRight];\n\n if (startPlaceholder) {\n wrappedChildren.push(\n createPlaceHolder(`${path}.${pathIndex++}`, startPlaceholder, {\n flexGrow: 0,\n flexShrink: 0,\n })\n );\n }\n } else {\n endPlaceholder = true;\n }\n\n const { version = 0, style } = getProps(component);\n\n wrappedChildren.push(\n resetPath(component, `${path}.${pathIndex++}`, {\n version: version + 1,\n style: {\n ...style,\n flexBasis: \"auto\",\n flexGrow: 0,\n flexShrink: 0,\n },\n })\n );\n\n if (endPlaceholder) {\n wrappedChildren.push(\n createPlaceHolder(`${path}.${pathIndex++}`, 0, undefined, {\n [`data-${flexDirection}-placeholder`]: true,\n })\n );\n }\n\n return createFlexbox(\n flexDirection,\n { resizeable: false, style: { flexBasis: \"auto\" } },\n wrappedChildren,\n path\n );\n}\n\nconst getFlexValue = (\n flexBasis: number,\n flexFill: boolean\n): number | undefined => {\n if (flexFill) {\n return undefined;\n }\n return flexBasis === 0 ? 1 : 0;\n};\n\nexport function createFlexbox(\n flexDirection: flexDirection,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props: any,\n children: ReactNode,\n path: string\n) {\n const id = uuid();\n const { flexFill, style, resizeable = true } = props;\n const { flexBasis = flexFill ? undefined : \"auto\" } = style;\n const flex = getFlexValue(flexBasis, flexFill);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return React.createElement<any>(\n ComponentRegistry.Flexbox,\n {\n id,\n key: id,\n path,\n flexFill,\n style: {\n ...style,\n flexDirection,\n flexBasis,\n flexGrow: flex,\n flexShrink: flex,\n },\n resizeable,\n },\n children\n );\n}\n\nconst baseStyle = { flexGrow: 1, flexShrink: 1 };\n\nexport function createPlaceHolder(\n path: string,\n size: number,\n style?: CSSProperties,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props?: any\n) {\n const id = uuid();\n return React.createElement(\"div\", {\n ...placeHolderProps,\n ...props,\n \"data-path\": path,\n id,\n key: id,\n style: { ...baseStyle, ...style, flexBasis: size },\n });\n}\n", "import { ReactElement } from \"react\";\nimport {\n getIntrinsicSize,\n hasUnboundedFlexStyle,\n} from \"../layout-reducer/flexUtils\";\nimport { getProp } from \"../utils\";\nimport type { BreakPoint, ContentMeta } from \"./flexboxTypes\";\n\nconst NO_INTRINSIC_SIZE: {\n height?: number;\n width?: number;\n} = {};\n\nexport const SPLITTER = 1;\nexport const PLACEHOLDER = 2;\n\nconst isIntrinsicallySized = (item: ContentMeta) =>\n typeof item.intrinsicSize === \"number\";\n\nconst getBreakPointValues = (\n breakPoints: BreakPoint[],\n component: ReactElement\n) => {\n const values: { [key: string]: number | undefined } = {};\n breakPoints.forEach((breakPoint) => {\n values[breakPoint] = getProp(component, breakPoint);\n });\n return values;\n};\n\nexport const gatherChildMeta = (\n children: ReactElement[],\n dimension: \"width\" | \"height\",\n breakPoints?: BreakPoint[]\n) => {\n return children.map((child, index) => {\n const resizeable = getProp(child, \"resizeable\");\n const { [dimension]: intrinsicSize } =\n getIntrinsicSize(child) ?? NO_INTRINSIC_SIZE;\n const flexOpen = hasUnboundedFlexStyle(child);\n if (breakPoints) {\n return {\n index,\n flexOpen,\n intrinsicSize,\n resizeable,\n ...getBreakPointValues(breakPoints, child),\n };\n } else {\n return { index, flexOpen, intrinsicSize, resizeable };\n }\n });\n};\n\n// Splitters are inserted AFTER the associated index, so\n// never a splitter in last position.\n// Placeholder goes before (first) OR after(last) index\nexport const findSplitterAndPlaceholderPositions = (\n childMeta: ContentMeta[]\n) => {\n const count = childMeta.length;\n const allIntrinsic = childMeta.every(isIntrinsicallySized);\n const splitterPositions = Array(count).fill(0);\n if (allIntrinsic && count > 0) {\n splitterPositions[0] = PLACEHOLDER;\n splitterPositions[count - 1] = PLACEHOLDER;\n }\n if (count < 2) {\n return splitterPositions;\n } else {\n // 1) From the left, check each item.\n // Once we hit a resizable item, set this index and all subsequent indices,\n // except for last, to SPLITTER\n for (let i = 0, resizeablesLeft = 0; i < count - 1; i++) {\n if (childMeta[i].resizeable && !resizeablesLeft) {\n resizeablesLeft = SPLITTER;\n }\n splitterPositions[i] += resizeablesLeft;\n }\n // 2) Now check from the right. Undo splitter insertion until we reach a point\n // where there is a resizeable to our right.\n for (let i = count - 1; i > 0; i--) {\n if (splitterPositions[i] & SPLITTER) {\n splitterPositions[i] -= SPLITTER;\n }\n if (childMeta[i].resizeable) {\n break;\n }\n }\n return splitterPositions;\n }\n};\n\nexport const identifyResizeParties = (\n contentMeta: ContentMeta[],\n idx: number\n) => {\n const idx1 = getLeadingResizeablePos(contentMeta, idx);\n const idx2 = getTrailingResizeablePos(contentMeta, idx);\n const participants = idx1 !== -1 && idx2 !== -1 ? [idx1, idx2] : undefined;\n const bystanders = identifyResizeBystanders(contentMeta, participants);\n return [participants, bystanders];\n};\n\nfunction identifyResizeBystanders(\n contentMeta: ContentMeta[],\n participants?: number[]\n) {\n if (participants) {\n const bystanders = [];\n for (let i = 0; i < contentMeta.length; i++) {\n if (contentMeta[i].flexOpen && !participants.includes(i)) {\n bystanders.push(i);\n }\n }\n return bystanders;\n }\n}\n\nfunction getLeadingResizeablePos(contentMeta: ContentMeta[], idx: number) {\n let pos = idx,\n resizeable = false;\n while (pos >= 1 && !resizeable) {\n pos = pos - 1;\n resizeable = isResizeable(contentMeta, pos);\n }\n return pos;\n}\n\nfunction getTrailingResizeablePos(contentMeta: ContentMeta[], idx: number) {\n let pos = idx,\n resizeable = false;\n const count = contentMeta.length;\n while (pos < count - 1 && !resizeable) {\n pos = pos + 1;\n resizeable = isResizeable(contentMeta, pos);\n }\n return pos === count ? -1 : pos;\n}\n\nfunction isResizeable(contentMeta: ContentMeta[], idx: number): boolean {\n const { placeholder, splitter, resizeable, intrinsicSize } = contentMeta[idx];\n return Boolean(!splitter && !intrinsicSize && (placeholder || resizeable));\n}\n", "import { useCallback } from \"react\";\nimport { Action } from \"../layout-action\";\nimport { useLayoutProviderDispatch } from \"../layout-provider\";\nimport { SplitterResizeAction } from \"../layout-reducer\";\nimport { registerComponent } from \"../registry/ComponentRegistry\";\nimport Flexbox from \"./Flexbox\";\nimport { FlexboxLayoutProps } from \"./flexboxTypes\";\n\nexport const FlexboxLayout = function FlexboxLayout(props: FlexboxLayoutProps) {\n const { path } = props;\n const dispatch = useLayoutProviderDispatch();\n\n const handleSplitterMoved = useCallback(\n (sizes) => {\n dispatch({\n type: Action.SPLITTER_RESIZE,\n path,\n sizes,\n } as SplitterResizeAction);\n },\n [dispatch, path]\n );\n\n return <Flexbox {...props} onSplitterMoved={handleSplitterMoved} />;\n};\nFlexboxLayout.displayName = \"Flexbox\";\n\nregisterComponent(\"Flexbox\", FlexboxLayout, \"container\");\n", "export const Action = {\n ADD: \"add\",\n BLUR: \"blur\",\n BLUR_SPLITTER: \"blur-splitter\",\n DRAG_START: \"drag-start\",\n DRAG_STARTED: \"drag-started\",\n DRAG_DROP: \"drag-drop\",\n FOCUS: \"focus\",\n FOCUS_SPLITTER: \"focus-splitter\",\n INITIALIZE: \"initialize\",\n LAYOUT_RESIZE: \"layout-resize\",\n MAXIMIZE: \"maximize\",\n MINIMIZE: \"minimize\",\n REMOVE: \"remove\",\n REPLACE: \"replace\",\n RESTORE: \"restore\",\n SAVE: \"save\",\n SET_TITLE: \"set-title\",\n SPLITTER_RESIZE: \"splitter-resize\",\n SWITCH_TAB: \"switch-tab\",\n TEAR_OUT: \"tear-out\",\n};\n", "import {\n MutableRefObject,\n ReactElement,\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport {\n LayoutActionType,\n layoutFromJson,\n LayoutJSON,\n layoutReducer,\n LayoutReducerAction,\n layoutToJSON,\n processLayoutElement,\n} from \"../layout-reducer\";\nimport { findTarget, getChildProp, getProps, typeOf } from \"../utils\";\nimport {\n LayoutProviderContext,\n LayoutProviderDispatch,\n} from \"./LayoutProviderContext\";\nimport { useLayoutDragDrop } from \"./useLayoutDragDrop\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst withDropTarget = (props: any) => props.dropTarget;\nconst shouldSave = (action: LayoutReducerAction) =>\n [\n \"drag-drop\",\n \"remove\",\n \"set-title\",\n \"splitter-resize\",\n \"switch-tab\",\n ].includes(action.type);\n\ntype LayoutChangeHandler = (layout: LayoutJSON, source: string) => void;\n\nexport interface LayoutProviderProps {\n children: ReactElement;\n layout?: LayoutJSON;\n onLayoutChange?: LayoutChangeHandler;\n}\n\nexport const LayoutProviderVersion = () => {\n const version = useLayoutProviderVersion();\n return <div>{`Context: ${version} `}</div>;\n};\n\nexport const LayoutProvider = (props: LayoutProviderProps): ReactElement => {\n const { children, layout, onLayoutChange } = props;\n const state = useRef<ReactElement | undefined>(undefined);\n const childrenRef = useRef<ReactElement>(children);\n\n const [, forceRefresh] = useState<unknown>(null);\n\n const serializeState = useCallback(\n (source) => {\n if (onLayoutChange) {\n const targetContainer =\n findTarget(source, withDropTarget) || state.current;\n const isDraggableLayout = typeOf(targetContainer) === \"DraggableLayout\";\n const target = isDraggableLayout\n ? getProps(targetContainer).children[0]\n : targetContainer;\n const serializedModel = layoutToJSON(target);\n onLayoutChange(serializedModel, \"drag-root\");\n }\n },\n [onLayoutChange]\n );\n\n const dispatchLayoutAction = useCallback(\n (action: LayoutReducerAction, suppressSave = false) => {\n const nextState = layoutReducer(state.current as ReactElement, action);\n if (nextState !== state.current) {\n state.current = nextState;\n forceRefresh({});\n if (!suppressSave && shouldSave(action)) {\n serializeState(nextState);\n }\n }\n },\n [serializeState]\n );\n\n const layoutActionDispatcher: LayoutProviderDispatch = useCallback(\n (action) => {\n switch (action.type) {\n case \"drag-start\": {\n prepareToDragLayout(action);\n break;\n }\n case \"save\": {\n serializeState(state.current);\n break;\n }\n default: {\n dispatchLayoutAction(action);\n break;\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dispatchLayoutAction, serializeState]\n );\n\n const prepareToDragLayout = useLayoutDragDrop(\n state as MutableRefObject<ReactElement>,\n layoutActionDispatcher\n );\n\n useEffect(() => {\n if (layout) {\n const targetContainer = findTarget(\n state.current as never,\n withDropTarget\n ) as ReactElement;\n const target = getChildProp(targetContainer);\n const newLayout = layoutFromJson(\n layout,\n `${targetContainer.props.path}.0`\n );\n const action = target\n ? {\n type: LayoutActionType.REPLACE,\n target,\n replacement: newLayout,\n }\n : {\n type: LayoutActionType.ADD,\n path: targetContainer.props.path,\n component: newLayout,\n };\n dispatchLayoutAction(action, true);\n }\n }, [dispatchLayoutAction, layout]);\n\n if (state.current === undefined) {\n state.current = processLayoutElement(children);\n } else if (children !== childrenRef.current) {\n state.current = processLayoutElement(children, state.current);\n childrenRef.current = children;\n }\n\n return (\n <LayoutProviderContext.Provider\n value={{ dispatchLayoutProvider: layoutActionDispatcher, version: 0 }}\n >\n {state.current}\n </LayoutProviderContext.Provider>\n );\n};\n\nexport const useLayoutProviderDispatch = () => {\n const { dispatchLayoutProvider } = useContext(LayoutProviderContext);\n return dispatchLayoutProvider;\n};\n\nexport const useLayoutProviderVersion = () => {\n console.log({ LayoutProviderContext });\n const { version } = useContext(LayoutProviderContext);\n return version;\n};\n", "import React, { ReactElement } from \"react\";\nimport { DropPos } from \"../drag-drop/dragDropTypes\";\nimport { DropTarget } from \"../drag-drop/DropTarget\";\nimport { isContainer } from \"../registry/ComponentRegistry\";\nimport {\n findTarget,\n followPath,\n followPathToParent,\n getProp,\n getProps,\n typeOf,\n} from \"../utils\";\nimport { getIntrinsicSize } from \"./flexUtils\";\nimport {\n getInsertTabBeforeAfter,\n insertBesideChild,\n insertIntoContainer,\n} from \"./insert-layout-element\";\nimport { moveChild } from \"./move-layout-element\";\nimport {\n AddAction,\n DragDropAction,\n LayoutActionType,\n LayoutReducerAction,\n MaximizeAction,\n SetPropAction,\n SetPropsAction,\n SwitchTabAction,\n} from \"./layoutTypes\";\nimport { LayoutProps } from \"./layoutUtils\";\nimport { removeChild } from \"./remove-layout-element\";\nimport {\n replaceChild,\n swapChild,\n _replaceChild,\n} from \"./replace-layout-element\";\nimport { resizeFlexChild, resizeFlexChildren } from \"./resize-flex-children\";\nimport { wrap } from \"./wrap-layout-element\";\n\nexport const layoutReducer = (\n state: ReactElement,\n action: LayoutReducerAction\n): ReactElement => {\n switch (action.type) {\n case LayoutActionType.ADD:\n return addChild(state, action);\n case LayoutActionType.DRAG_DROP:\n return dragDrop(state, action);\n case LayoutActionType.MAXIMIZE:\n return setChildProps(state, action);\n case LayoutActionType.REMOVE:\n return removeChild(state, action);\n case LayoutActionType.REPLACE:\n return replaceChild(state, action);\n case LayoutActionType.SET_PROP:\n return setProp(state, action);\n case LayoutActionType.SET_PROPS:\n return setProps(state, action);\n case LayoutActionType.SET_TITLE:\n return setProp(state, {\n type: \"set-prop\",\n path: action.path,\n propName: \"title\",\n propValue: action.title,\n });\n case LayoutActionType.SPLITTER_RESIZE:\n return resizeFlexChildren(state, action);\n case LayoutActionType.LAYOUT_RESIZE:\n return resizeFlexChild(state, action);\n case LayoutActionType.SWITCH_TAB:\n return switchTab(state, action);\n case LayoutActionType.MOVE_CHILD:\n return moveChild(state, action);\n default:\n return state;\n }\n};\n\nconst switchTab = (state: ReactElement, { path, nextIdx }: SwitchTabAction) => {\n const target = followPath(state, path, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const replacement = React.cloneElement<any>(target, {\n active: nextIdx,\n });\n return swapChild(state, target, replacement);\n};\n\nconst setProp = (\n state: ReactElement,\n { path, propName, propValue }: SetPropAction\n) => {\n const target = followPath(state, path, true);\n const replacement = React.cloneElement(target, {\n [propName]: propValue,\n });\n return swapChild(state, target, replacement);\n};\n\nconst setProps = (state: ReactElement, { path, props }: SetPropsAction) => {\n const target = followPath(state, path, true);\n const replacement = React.cloneElement(target, props);\n return swapChild(state, target, replacement);\n};\n\nconst setChildProps = (state: ReactElement, { path, type }: MaximizeAction) => {\n if (path) {\n const target = followPath(state, path, true);\n return swapChild(state, target, target, type);\n } else {\n return state;\n }\n};\n\nconst dragDrop = (\n layoutRoot: ReactElement,\n action: DragDropAction\n): ReactElement => {\n const {\n draggedReactElement: newComponent,\n dragInstructions,\n dropTarget,\n } = action;\n const existingComponent = dropTarget.component as ReactElement;\n const { pos } = dropTarget;\n const destinationTabstrip =\n pos?.position?.Header && typeOf(existingComponent) === \"Stack\";\n const { id, version } = getProps(newComponent);\n const intrinsicSize = getIntrinsicSize(newComponent);\n let newLayoutRoot: ReactElement;\n if (destinationTabstrip) {\n const [targetTab, insertionPosition] = getInsertTabBeforeAfter(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n existingComponent!,\n pos\n );\n if (targetTab === undefined) {\n newLayoutRoot = insertIntoContainer(\n layoutRoot,\n existingComponent,\n newComponent\n );\n } else {\n newLayoutRoot = insertBesideChild(\n layoutRoot,\n targetTab,\n newComponent,\n insertionPosition\n );\n }\n } else if (!intrinsicSize && pos?.position?.Centre) {\n newLayoutRoot = _replaceChild(\n layoutRoot,\n existingComponent as ReactElement,\n newComponent\n );\n } else {\n newLayoutRoot = dropLayoutIntoContainer(\n layoutRoot,\n dropTarget as DropTarget,\n newComponent\n );\n }\n\n if (dragInstructions.DoNotRemove) {\n return newLayoutRoot;\n }\n\n const finalTarget = findTarget(\n newLayoutRoot,\n (props: LayoutProps) => props.id === id && props.version === version\n ) as ReactElement;\n const finalPath = getProp(finalTarget, \"path\");\n return removeChild(newLayoutRoot, { path: finalPath, type: \"remove\" });\n};\n\nconst addChild = (\n layoutRoot: ReactElement,\n { path: containerPath, component }: AddAction\n) => {\n return insertIntoContainer(\n layoutRoot,\n followPath(layoutRoot, containerPath) as ReactElement,\n component\n );\n};\n\nconst dropLayoutIntoContainer = (\n layoutRoot: ReactElement,\n dropTarget: DropTarget,\n newComponent: ReactElement\n): ReactElement => {\n const {\n component: existingComponent,\n pos,\n clientRect,\n dropRect,\n } = dropTarget;\n const existingComponentPath = getProp(existingComponent, \"path\");\n\n if (existingComponentPath === \"0.0\") {\n return wrap(layoutRoot, existingComponent, newComponent, pos);\n }\n\n const targetContainer = followPathToParent(\n layoutRoot,\n existingComponentPath\n ) as ReactElement;\n\n if (withTheGrain(pos, targetContainer)) {\n const insertionPosition = pos.position.SouthOrEast ? \"after\" : \"before\";\n return insertBesideChild(\n layoutRoot,\n existingComponent,\n newComponent,\n insertionPosition,\n pos,\n clientRect,\n dropRect\n );\n }\n\n if (!withTheGrain(pos, targetContainer)) {\n return wrap(\n layoutRoot,\n existingComponent,\n newComponent,\n pos,\n clientRect,\n dropRect\n );\n }\n\n if (isContainer(typeOf(targetContainer) as string)) {\n return wrap(layoutRoot, existingComponent, newComponent, pos);\n }\n\n throw Error(`no support right now for position = ${pos.position}`);\n};\n\nconst withTheGrain = (pos: DropPos, container: ReactElement) => {\n if (pos.position.Centre) {\n return isTerrace(container) || isTower(container);\n }\n\n return pos.position.NorthOrSouth\n ? isTower(container)\n : pos.position.EastOrWest\n ? isTerrace(container)\n : false;\n};\n\nconst isTower = (container: ReactElement) => {\n return (\n typeOf(container) === \"Flexbox\" &&\n container.props.style.flexDirection === \"column\"\n );\n};\n\nconst isTerrace = (container: ReactElement) => {\n return (\n typeOf(container) === \"Flexbox\" &&\n container.props.style.flexDirection !== \"column\"\n );\n};\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { uuid } from \"@vuu-ui/vuu-utils\";\nimport React, { ReactElement } from \"react\";\nimport { rectTuple } from \"../common-types\";\nimport { DropPos } from \"../drag-drop\";\nimport { DropTarget } from \"../drag-drop/DropTarget\";\nimport { getProp, getProps, nextStep, resetPath, typeOf } from \"../utils\";\nimport {\n createPlaceHolder,\n flexDirection,\n getFlexDimensions,\n getFlexOrIntrinsicStyle,\n getIntrinsicSize,\n wrapIntrinsicSizeComponentWithFlexbox,\n} from \"./flexUtils\";\nimport { LayoutModel } from \"./layoutTypes\";\nimport { getManagedDimension, LayoutProps } from \"./layoutUtils\";\n\ntype insertionPosition = \"before\" | \"after\";\n\nexport function getInsertTabBeforeAfter(stack: LayoutModel, pos: DropPos) {\n const tabs = stack.props.children;\n const tabCount = tabs.length;\n const { index = -1, positionRelativeToTab = \"after\" } = pos.tab || {};\n return index === -1 || index >= tabCount\n ? [tabs[tabCount - 1], \"after\"]\n : [tabs[index] ?? null, positionRelativeToTab];\n}\n\nexport function insertIntoContainer(\n container: ReactElement,\n targetContainer: ReactElement,\n newComponent: ReactElement\n): ReactElement {\n const {\n active: containerActive,\n children: containerChildren = [],\n path: containerPath,\n } = getProps(container) as LayoutProps;\n\n const existingComponentPath = getProp(targetContainer, \"path\");\n const { idx, finalStep } = nextStep(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n containerPath!,\n existingComponentPath,\n true\n );\n const [insertedIdx, children] = finalStep\n ? insertIntoChildren(container, containerChildren, newComponent)\n : [\n containerActive,\n containerChildren?.map((child, index) =>\n index === idx\n ? (insertIntoContainer(\n child,\n targetContainer,\n newComponent\n ) as ReactElement)\n : child\n ),\n ];\n const active =\n typeOf(container) === \"Stack\"\n ? Array.isArray(insertedIdx)\n ? (insertedIdx[0] as number)\n : insertedIdx\n : containerActive;\n\n return React.cloneElement(container, { active }, children);\n}\nfunction insertIntoChildren(\n container: LayoutModel,\n containerChildren: ReactElement[],\n newComponent: ReactElement\n): [number, ReactElement[]] {\n const containerPath = getProp(container, \"path\");\n const count = containerChildren?.length;\n const { id = uuid() } = getProps(newComponent);\n\n if (count) {\n return [\n count,\n containerChildren.concat(\n resetPath(newComponent, `${containerPath}.${count}`, { id, key: id })\n ),\n ];\n } else {\n return [0, [resetPath(newComponent, `${containerPath}.0`, { id })]];\n }\n}\n\nexport function insertBesideChild(\n container: ReactElement,\n existingComponent: any,\n newComponent: any,\n insertionPosition: insertionPosition,\n pos?: DropPos,\n clientRect?: any,\n dropRect?: any\n): ReactElement {\n const {\n active: containerActive,\n children: containerChildren,\n path: containerPath,\n } = getProps(container);\n\n const existingComponentPath = getProp(existingComponent, \"path\");\n const { idx, finalStep } = nextStep(containerPath, existingComponentPath);\n const [insertedIdx, children] = finalStep\n ? updateChildren(\n container,\n containerChildren,\n idx,\n newComponent,\n insertionPosition,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n pos!,\n clientRect,\n dropRect\n )\n : [\n containerActive,\n containerChildren.map((child: ReactElement, index: number) =>\n index === idx\n ? insertBesideChild(\n child,\n existingComponent,\n newComponent,\n insertionPosition,\n pos,\n clientRect,\n dropRect\n )\n : child\n ),\n ];\n\n const active = typeOf(container) === \"Stack\" ? insertedIdx : containerActive;\n return React.cloneElement(container, { active }, children);\n}\n\nfunction updateChildren(\n container: LayoutModel,\n containerChildren: ReactElement[],\n idx: number,\n newComponent: ReactElement,\n insertionPosition: insertionPosition,\n pos: DropPos,\n clientRect: DropTarget[\"clientRect\"],\n dropRect: DropTarget[\"dropRect\"]\n) {\n const intrinsicSize = getIntrinsicSize(newComponent);\n if (intrinsicSize?.width && intrinsicSize?.height) {\n return insertIntrinsicSizedComponent(\n container,\n containerChildren,\n idx,\n newComponent,\n insertionPosition,\n clientRect,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n dropRect!\n );\n } else {\n return insertFlexComponent(\n container,\n containerChildren,\n idx,\n newComponent,\n insertionPosition,\n pos?.width || pos?.height,\n clientRect\n );\n }\n}\n\nconst getLeadingPlaceholderSize = (\n flexDirection: flexDirection,\n insertionPosition: insertionPosition,\n { top, right, bottom, left }: DropTarget[\"clientRect\"],\n [rectLeft, rectTop, rectRight, rectBottom]: rectTuple\n) => {\n if (flexDirection === \"column\" && insertionPosition === \"before\") {\n return rectTop - top;\n } else if (flexDirection === \"column\") {\n return bottom - rectBottom;\n } else if (flexDirection === \"row\" && insertionPosition === \"before\") {\n return rectLeft - left;\n } else if (flexDirection === \"row\") {\n return right - rectRight;\n }\n};\n\nfunction insertIntrinsicSizedComponent(\n container: LayoutModel,\n containerChildren: ReactElement[],\n idx: number,\n newComponent: ReactElement,\n insertionPosition: insertionPosition,\n clientRect: DropTarget[\"clientRect\"],\n dropRect: rectTuple\n) {\n const {\n style: { flexDirection },\n } = getProps(container);\n const [dimension, crossDimension, contraDirection] =\n getFlexDimensions(flexDirection);\n const { [crossDimension]: intrinsicCrossSize, [dimension]: intrinsicSize } =\n getIntrinsicSize(newComponent) as { height: number; width: number };\n const path = getProp(containerChildren[idx], \"path\");\n\n const placeholderSize = getLeadingPlaceholderSize(\n flexDirection,\n insertionPosition,\n clientRect,\n dropRect\n );\n\n const [itemToInsert, size] =\n intrinsicCrossSize < clientRect[crossDimension]\n ? [\n wrapIntrinsicSizeComponentWithFlexbox(\n newComponent,\n contraDirection,\n path,\n clientRect,\n dropRect\n ),\n intrinsicSize,\n ]\n : [newComponent, undefined];\n\n const placeholder = placeholderSize\n ? createPlaceHolder(path, placeholderSize, { flexGrow: 0, flexShrink: 0 })\n : undefined;\n\n if (intrinsicCrossSize > clientRect[crossDimension]) {\n containerChildren = containerChildren.map((child) => {\n if (getProp(child, \"placeholder\")) {\n return child;\n } else {\n const { [crossDimension]: intrinsicCrossChildSize } = getIntrinsicSize(\n child\n ) as {\n height: number;\n width: number;\n };\n if (\n intrinsicCrossChildSize &&\n intrinsicCrossChildSize < intrinsicCrossSize\n ) {\n return wrapIntrinsicSizeComponentWithFlexbox(\n child,\n contraDirection,\n getProp(child, \"path\")\n );\n } else {\n return child;\n }\n }\n });\n }\n\n return insertFlexComponent(\n container,\n containerChildren,\n idx,\n itemToInsert,\n insertionPosition,\n size,\n clientRect,\n placeholder\n );\n}\n\nfunction insertFlexComponent(\n container: LayoutModel,\n containerChildren: ReactElement[],\n idx: number,\n newComponent: ReactElement,\n insertionPosition: \"before\" | \"after\",\n size: number | undefined,\n targetRect: DropTarget[\"clientRect\"],\n placeholder?: ReactElement\n) {\n const containerPath = getProp(container, \"path\");\n let insertedIdx = 0;\n const children =\n !containerChildren || containerChildren.length === 0\n ? [newComponent]\n : containerChildren\n .reduce<ReactElement[]>((arr, child, i) => {\n if (idx === i) {\n const [existingComponent, insertedComponent] =\n getStyledComponents(container, child, newComponent, targetRect);\n if (insertionPosition === \"before\") {\n if (placeholder) {\n arr.push(placeholder, insertedComponent, existingComponent);\n } else {\n arr.push(insertedComponent, existingComponent);\n }\n } else {\n if (placeholder) {\n arr.push(existingComponent, insertedComponent, placeholder);\n } else {\n arr.push(existingComponent, insertedComponent);\n }\n }\n insertedIdx = arr.indexOf(insertedComponent);\n } else {\n arr.push(child);\n }\n return arr;\n }, [])\n .map((child, i) =>\n i < insertedIdx ? child : resetPath(child, `${containerPath}.${i}`)\n );\n\n return [insertedIdx, children];\n}\n\nfunction getStyledComponents(\n container: LayoutModel,\n existingComponent: ReactElement,\n newComponent: ReactElement,\n targetRect: DropTarget[\"clientRect\"]\n): [ReactElement, ReactElement] {\n const id = uuid();\n let { version = 0 } = getProps(newComponent);\n version += 1;\n if (typeOf(container) === \"Flexbox\") {\n const [dim] = getManagedDimension(container.props.style);\n const splitterSize = 6;\n const size = { [dim]: (targetRect[dim] - splitterSize) / 2 };\n const existingComponentStyle = getFlexOrIntrinsicStyle(\n existingComponent,\n dim,\n size\n );\n const newComponentStyle = getFlexOrIntrinsicStyle(newComponent, dim, size);\n\n return [\n React.cloneElement(existingComponent, {\n style: existingComponentStyle,\n }),\n React.cloneElement(newComponent, {\n id,\n version,\n style: newComponentStyle,\n }),\n ];\n } else {\n const {\n style: { left: _1, top: _2, flex: _3, ...style } = {\n left: undefined,\n top: undefined,\n flex: undefined,\n },\n } = getProps(newComponent);\n return [\n existingComponent,\n React.cloneElement(newComponent, { id, version, style }),\n ];\n }\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { uuid } from \"@vuu-ui/vuu-utils\";\nimport React, { cloneElement, CSSProperties, ReactElement } from \"react\";\nimport { dimension } from \"../common-types\";\nimport {\n ComponentWithId,\n ComponentRegistry,\n isContainer,\n isLayoutComponent,\n} from \"../registry/ComponentRegistry\";\nimport {\n getPersistentState,\n hasPersistentState,\n setPersistentState,\n} from \"../use-persistent-state\";\nimport { expandFlex, getProps, typeOf } from \"../utils\";\nimport { LayoutJSON, LayoutModel, layoutType } from \"./layoutTypes\";\n\nexport const getManagedDimension = (\n style: CSSProperties\n): [dimension, dimension] =>\n style.flexDirection === \"column\" ? [\"height\", \"width\"] : [\"width\", \"height\"];\n\nconst theKidHasNoStyle: CSSProperties = {};\n\nexport const applyLayoutProps = (component: ReactElement, path = \"0\") => {\n const [layoutProps, children] = getChildLayoutProps(\n typeOf(component) as string,\n component.props,\n path\n );\n return React.cloneElement(component, layoutProps, children);\n};\n\nexport interface LayoutProps extends ComponentWithId {\n active?: number;\n \"data-path\"?: string;\n children?: ReactElement[];\n column?: any;\n dropTarget?: any;\n key: string;\n layout?: any;\n path?: string;\n resizeable?: boolean;\n style: CSSProperties;\n type?: string;\n version?: number;\n}\n\nexport const processLayoutElement = (\n layoutElement: ReactElement,\n previousLayout?: ReactElement\n): ReactElement => {\n const type = typeOf(layoutElement) as string;\n const [layoutProps, children] = getChildLayoutProps(\n type,\n layoutElement.props,\n \"0\",\n undefined,\n previousLayout\n );\n return cloneElement(layoutElement, layoutProps, children);\n};\n\nexport const applyLayout = (\n type: layoutType,\n props: LayoutProps,\n previousLayout?: LayoutModel\n): LayoutModel => {\n const [layoutProps, children] = getChildLayoutProps(\n type,\n props,\n \"0\",\n undefined,\n previousLayout\n );\n return {\n ...props,\n ...layoutProps,\n type,\n children,\n };\n};\n\nfunction getLayoutProps(\n type: string,\n props: LayoutProps,\n path = \"0\",\n parentType: string | null = null,\n previousLayout?: LayoutModel\n): LayoutProps {\n const {\n active: prevActive = 0,\n \"data-path\": dataPath,\n path: prevPath = dataPath,\n id: prevId,\n style: prevStyle,\n } = getProps(previousLayout);\n\n const prevMatch = typeOf(previousLayout) === type && path === prevPath;\n const id = prevMatch ? prevId : props.id ?? uuid();\n const active = type === \"Stack\" ? props.active ?? prevActive : undefined;\n\n const key = id;\n const style = prevMatch ? prevStyle : getStyle(type, props, parentType);\n return isLayoutComponent(type)\n ? { id, key, path, style, type, active }\n : { id, key, style, \"data-path\": path };\n}\n\nfunction getChildLayoutProps(\n type: string,\n props: LayoutProps,\n path: string,\n parentType: string | null = null,\n previousLayout?: LayoutModel\n): [LayoutProps, ReactElement[]] {\n const layoutProps = getLayoutProps(\n type,\n props,\n path,\n parentType,\n previousLayout\n );\n\n if (props.layout && !previousLayout) {\n return [layoutProps, [layoutFromJson(props.layout, `${path}.0`)]];\n }\n\n const previousChildren =\n (previousLayout as any)?.children ?? previousLayout?.props?.children;\n const hasDynamicChildren = props.dropTarget && previousChildren;\n const children = hasDynamicChildren\n ? previousChildren\n : getLayoutChildren(type, props.children, path, previousChildren);\n return [layoutProps, children];\n}\n\nfunction getLayoutChildren(\n type: string,\n children?: ReactElement[],\n path = \"0\",\n previousChildren?: ReactElement[]\n) {\n const kids = Array.isArray(children)\n ? children\n : React.isValidElement(children)\n ? [children]\n : [];\n return isContainer(type)\n ? kids.map((child, i) => {\n const childType = typeOf(child) as string;\n const previousType = typeOf(previousChildren?.[i]);\n\n if (!previousType || childType === previousType) {\n const [layoutProps, children] = getChildLayoutProps(\n childType,\n child.props,\n `${path}.${i}`,\n type,\n previousChildren?.[i]\n );\n return React.cloneElement(child, layoutProps, children);\n }\n\n return previousChildren?.[i];\n })\n : children;\n}\n\nconst getStyle = (\n type: string,\n props: LayoutProps,\n parentType?: string | null\n) => {\n let { style = theKidHasNoStyle } = props;\n if (type === \"Flexbox\") {\n style = {\n flexDirection: props.column ? \"column\" : \"row\",\n ...style,\n display: \"flex\",\n };\n }\n\n if (style.flex) {\n const { flex, ...otherStyles } = style;\n style = {\n ...otherStyles,\n ...expandFlex(typeof flex === \"number\" ? flex : 0),\n };\n } else if (parentType === \"Stack\") {\n style = {\n ...style,\n ...expandFlex(1),\n };\n } else if (\n parentType === \"Flexbox\" &&\n (style.width || style.height) &&\n style.flexBasis === undefined\n ) {\n style = {\n ...style,\n flexBasis: \"auto\",\n flexGrow: 0,\n flexShrink: 0,\n };\n }\n\n return style;\n};\n\nexport function layoutFromJson(\n { id = uuid(), type, children, props, state }: LayoutJSON,\n path: string\n): ReactElement {\n const componentType = type.match(/^[a-z]/) ? type : ComponentRegistry[type];\n\n if (componentType === undefined) {\n throw Error(\n `layoutUtils unable to create component from JSON, unknown type ${type}`\n );\n }\n\n if (state) {\n setPersistentState(id, state);\n }\n\n return React.createElement(\n componentType,\n {\n id,\n ...props,\n key: id,\n path,\n },\n children\n ? children.map((child, i) => layoutFromJson(child, `${path}.${i}`))\n : undefined\n );\n}\n\nexport function layoutToJSON(component: ReactElement) {\n return componentToJson(component);\n}\n\nexport function componentToJson(component: ReactElement): LayoutJSON {\n const type = typeOf(component) as string;\n const { id, children, type: _omit, ...props } = getProps(component);\n\n const state = hasPersistentState(id) ? getPersistentState(id) : undefined;\n\n return {\n id,\n type,\n props: serializeProps(props as LayoutProps),\n state,\n children: React.Children.map(children, componentToJson),\n };\n}\n\nexport function serializeProps(props?: LayoutProps) {\n if (props) {\n const { path, ...otherProps } = props;\n const result: { [key: string]: any } = {};\n for (const [key, value] of Object.entries(otherProps)) {\n result[key] = serializeValue(value);\n }\n return result;\n }\n}\n\nfunction serializeValue(value: unknown): any {\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n ) {\n return value;\n } else if (Array.isArray(value)) {\n return value.map(serializeValue);\n } else if (typeof value === \"object\" && value !== null) {\n const result: { [key: string]: any } = {};\n for (const [k, v] of Object.entries(value)) {\n result[k] = serializeValue(v);\n }\n return result;\n }\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useCallback } from \"react\";\n\n/**\n * Persistent state is stored at module level (i.e singleton-style)\n * It is kept at this level, rather than passed to the target component(s)\n * so that it endures across the unmount/mount lifecycle journey of any\n * individual component. e.g when switching between tabs, components are\n * unmounted and mounted. They re-request their persistent state on (re-)mount.\n * Persistent state is populated as the serialized layout schema is processed\n * (see layoutFromJSON).\n */\nconst persistentState = new Map<string, any>();\nconst sessionState = new Map<string, any>();\n\nexport const getPersistentState = (id: string) => persistentState.get(id);\nexport const hasPersistentState = (id: string) => persistentState.has(id);\nexport const setPersistentState = (id: string, value: any) =>\n persistentState.set(id, value);\n\nexport const usePersistentState = () => {\n const loadSessionState = useCallback((id, key) => {\n const state = sessionState.get(id);\n if (state) {\n if (key !== undefined && state[key] !== undefined) {\n return state[key];\n }\n if (key !== undefined) {\n return undefined;\n }\n return state;\n }\n }, []);\n\n const saveSessionState = useCallback((id, key, data) => {\n if (key === undefined) {\n sessionState.set(id, data);\n } else if (sessionState.has(id)) {\n const state = sessionState.get(id);\n sessionState.set(id, {\n ...state,\n [key]: data,\n });\n } else {\n sessionState.set(id, { [key]: data });\n }\n }, []);\n\n const purgeSessionState = useCallback((id: string, key?: string) => {\n if (sessionState.has(id)) {\n if (key === undefined) {\n sessionState.delete(id);\n } else {\n const state = sessionState.get(id);\n if (state[key]) {\n const { [key]: _doomedState, ...rest } = sessionState.get(id);\n if (Object.keys(rest).length > 0) {\n sessionState.set(id, rest);\n } else {\n sessionState.delete(id);\n }\n }\n }\n }\n }, []);\n\n const loadState = useCallback((id: string, key?: string) => {\n const state = persistentState.get(id);\n if (state) {\n if (key !== undefined) {\n return state[key];\n }\n return state;\n }\n }, []);\n\n const saveState = useCallback(\n (id: string, key: string | undefined, data: unknown) => {\n if (key === undefined) {\n persistentState.set(id, data);\n } else if (persistentState.has(id)) {\n const state = persistentState.get(id);\n persistentState.set(id, {\n ...state,\n [key]: data,\n });\n } else {\n persistentState.set(id, { [key]: data });\n }\n },\n []\n );\n\n const purgeState = useCallback((id: string, key?: string) => {\n if (persistentState.has(id)) {\n if (key === undefined) {\n persistentState.delete(id);\n } else {\n const state = persistentState.get(id);\n if (state[key]) {\n const { [key]: _doomedState, ...rest } = persistentState.get(id);\n if (Object.keys(rest).length > 0) {\n persistentState.set(id, rest);\n } else {\n persistentState.delete(id);\n }\n }\n }\n }\n }, []);\n\n return {\n loadSessionState,\n loadState,\n saveSessionState,\n saveState,\n purgeState,\n purgeSessionState,\n };\n};\n", "import { cloneElement, ReactElement } from \"react\";\nimport { followPath, getProps } from \"../utils\";\nimport { MoveChildAction } from \"./layoutTypes\";\nimport { swapChild } from \"./replace-layout-element\";\n\nexport function moveChild(\n layoutRoot: ReactElement,\n { fromIndex, path, toIndex }: MoveChildAction\n) {\n const target = followPath(layoutRoot, path, true);\n const { children } = getProps(target);\n const replacementChildren = moveChildWithinChildren(\n children,\n fromIndex,\n toIndex\n );\n const replacement = cloneElement(target, undefined, replacementChildren);\n return swapChild(layoutRoot, target, replacement);\n}\n\nfunction moveChildWithinChildren(\n children: ReactElement[],\n fromIndex: number,\n toIndex: number\n) {\n const newChildren = children.slice();\n const [child] = newChildren.splice(fromIndex, 1);\n if (toIndex === -1) {\n return newChildren.concat(child);\n } else {\n newChildren.splice(toIndex, 0, child);\n return newChildren;\n }\n}\n", "import React, { ReactElement } from 'react';\nimport { Action } from '../layout-action';\nimport { getProp, getProps, nextStep } from '../utils';\nimport { ReplaceAction } from './layoutTypes';\nimport { applyLayoutProps, LayoutProps } from './layoutUtils';\n\nexport function replaceChild(model: ReactElement, { target, replacement }: ReplaceAction) {\n return _replaceChild(model, target, replacement);\n}\n\nexport function _replaceChild(\n model: ReactElement,\n child: ReactElement,\n replacement: ReactElement<LayoutProps>\n) {\n const path = getProp(child, 'path');\n const resizeable = getProp(child, 'resizeable');\n const { style } = getProps(child);\n const newChild =\n applyLayoutProps(\n React.cloneElement(replacement, {\n resizeable,\n style: {\n ...style,\n ...replacement.props.style\n }\n }),\n path\n );\n\n return swapChild(model, child, newChild);\n}\n\nexport function swapChild(\n model: ReactElement,\n child: ReactElement,\n replacement: ReactElement,\n op?: 'maximize' | 'minimize' | 'restore'\n): ReactElement {\n if (model === child) {\n return replacement;\n }\n \n const { idx, finalStep } = nextStep(getProp(model, 'path'), getProp(child, 'path'));\n const children = model.props.children.slice();\n \n if (finalStep) {\n if (!op) {\n children[idx] = replacement;\n } else if (op === Action.MINIMIZE) {\n children[idx] = minimize(model, children[idx]);\n } else if (op === Action.RESTORE) {\n children[idx] = restore(children[idx]);\n }\n } else {\n children[idx] = swapChild(children[idx], child, replacement, op);\n }\n return React.cloneElement(model, undefined, children);\n}\n\nfunction minimize(parent: ReactElement, child: ReactElement) {\n const { style: parentStyle } = getProps(parent);\n const { style: childStyle } = getProps(child);\n\n const { width, height, flexBasis, flexShrink, flexGrow, ...rest } = childStyle;\n\n const restoreStyle = {\n width,\n height,\n flexBasis,\n flexShrink,\n flexGrow\n };\n\n const style = {\n ...rest,\n flexBasis: 0,\n flexGrow: 0,\n flexShrink: 0\n };\n const collapsed =\n parentStyle.flexDirection === 'row'\n ? 'vertical'\n : parentStyle.flexDirection === 'column'\n ? 'horizontal'\n : false;\n\n if (collapsed) {\n return React.cloneElement(child, {\n collapsed,\n restoreStyle,\n style\n });\n }\n return child;\n}\n\nfunction restore(child: ReactElement) {\n const { style: childStyle, restoreStyle } = getProps(child);\n\n const { flexBasis, flexShrink, flexGrow, ...rest } = childStyle;\n\n const style = {\n ...rest,\n ...restoreStyle\n };\n\n return React.cloneElement(child, {\n collapsed: false,\n style,\n restoreStyle: undefined\n });\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ReactElement } from \"react\";\nimport { DragDropRect, DragInstructions } from \"../drag-drop\";\nimport { DropTarget } from \"../drag-drop/DropTarget\";\nimport { ContributionLocation } from \"../layout-view\";\n\nexport interface WithProps {\n props?: { [key: string]: any };\n}\n\nexport interface WithType {\n props?: any;\n title?: string;\n type: string;\n}\n\nexport interface LayoutRoot extends WithProps {\n active?: number;\n children?: ReactElement[];\n type: string;\n}\n\nexport interface LayoutJSON extends WithType {\n children?: LayoutJSON[];\n id?: string;\n props?: { [key: string]: any };\n state?: any;\n type: string;\n}\n\nexport interface WithActive {\n active?: number;\n}\n\nexport type LayoutModel = LayoutRoot | ReactElement | WithType;\n\nexport type layoutType = \"Flexbox\" | \"View\" | \"DraggableLayout\" | \"Stack\";\n\n// TODO duplicated in layout-action\nexport const LayoutActionType = {\n ADD: \"add\",\n DRAG_START: \"drag-start\",\n DRAG_DROP: \"drag-drop\",\n LAYOUT_RESIZE: \"layout-resize\",\n MAXIMIZE: \"maximize\",\n MINIMIZE: \"minimize\",\n MOVE_CHILD: \"move-child\",\n REMOVE: \"remove\",\n REPLACE: \"replace\",\n RESTORE: \"restore\",\n SAVE: \"save\",\n SET_PROP: \"set-prop\",\n SET_PROPS: \"set-props\",\n SET_TITLE: \"set-title\",\n SPLITTER_RESIZE: \"splitter-resize\",\n SWITCH_TAB: \"switch-tab\",\n TEAROUT: \"tearout\",\n} as const;\n\nexport type AddAction = {\n component: any;\n path: string;\n type: typeof LayoutActionType.ADD;\n};\n\nexport type DragDropAction = {\n draggedReactElement: ReactElement;\n dragInstructions: any;\n dropTarget: Partial<DropTarget>;\n type: typeof LayoutActionType.DRAG_DROP;\n};\n\nexport type MaximizeAction = {\n path?: string;\n type: typeof LayoutActionType.MAXIMIZE;\n};\n\nexport type MinimizeAction = {\n path?: string;\n type: typeof LayoutActionType.MINIMIZE;\n};\n\nexport type MoveChildAction = {\n fromIndex: number;\n toIndex: number;\n path: string;\n type: typeof LayoutActionType.MOVE_CHILD;\n};\n\nexport type RemoveAction = {\n path?: string;\n type: typeof LayoutActionType.REMOVE;\n};\n\nexport type ReplaceAction = {\n replacement: any;\n target: any;\n type: typeof LayoutActionType.REPLACE;\n};\n\nexport type RestoreAction = {\n path?: string;\n type: typeof LayoutActionType.RESTORE;\n};\n\nexport type SetPropAction = {\n path: string;\n propName: string;\n propValue: string | number | boolean;\n type: typeof LayoutActionType.SET_PROP;\n};\n\nexport type SetPropsAction = {\n path: string;\n props: { [key: string]: unknown };\n type: typeof LayoutActionType.SET_PROPS;\n};\n\nexport type SetTitleAction = {\n path: string;\n title: string;\n type: typeof LayoutActionType.SET_TITLE;\n};\n\nexport type SplitterResizeAction = {\n path: string;\n sizes: { currentSize: number; flexBasis: number }[];\n type: typeof LayoutActionType.SPLITTER_RESIZE;\n};\n\nexport type LayoutResizeAction = {\n path: string;\n size: number;\n type: typeof LayoutActionType.LAYOUT_RESIZE;\n};\n\nexport type SwitchTabAction = {\n nextIdx: number;\n path: string;\n type: typeof LayoutActionType.SWITCH_TAB;\n};\n\nexport type TearoutAction = {\n path?: string;\n type: typeof LayoutActionType.TEAROUT;\n};\n\nexport type LayoutReducerAction =\n | AddAction\n | DragDropAction\n | LayoutResizeAction\n | MaximizeAction\n | MinimizeAction\n | MoveChildAction\n | RemoveAction\n | ReplaceAction\n | RestoreAction\n | SetPropAction\n | SetPropsAction\n | SetTitleAction\n | SplitterResizeAction\n | SwitchTabAction;\n\nexport type SaveAction = {\n type: typeof LayoutActionType.SAVE;\n};\n\nexport type AddToolbarContributionViewAction = {\n content: ReactElement;\n location: ContributionLocation;\n type: \"add-toolbar-contribution\";\n};\n\nexport type RemoveToolbarContributionViewAction = {\n location: ContributionLocation;\n type: \"remove-toolbar-contribution\";\n};\n\nexport type MousedownViewAction = {\n preDragActivity?: any;\n index?: number;\n type: \"mousedown\";\n};\n\nexport type DragStartAction = {\n payload?: ReactElement;\n dragContainerPath?: string;\n dragElement?: HTMLElement;\n dragRect: DragDropRect;\n dropTargets?: string[];\n evt: MouseEvent;\n instructions?: DragInstructions;\n path: string;\n type: typeof LayoutActionType.DRAG_START;\n};\n", "/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport React, { ReactElement } from 'react';\nimport { createPlaceHolder } from './flexUtils';\nimport { swapChild } from './replace-layout-element';\n\nimport {\n followPath,\n followPathToParent,\n getProp,\n getProps,\n nextStep,\n resetPath,\n typeOf\n} from '../utils';\nimport { RemoveAction } from './layoutTypes';\n\nexport function removeChild(layoutRoot: ReactElement, { path }: RemoveAction) {\n const target = followPath(layoutRoot, path!) as ReactElement;\n let targetParent = followPathToParent(layoutRoot, path!);\n if (targetParent === null) {\n return layoutRoot;\n }\n const { children } = getProps(targetParent);\n if (children.length > 1 && allOtherChildrenArePlaceholders(children, path)) {\n const {\n style: { flexBasis, display, flexDirection, ...style }\n } = getProps(targetParent);\n let containerPath = getProp(targetParent, 'path');\n let newLayout = swapChild(\n layoutRoot,\n targetParent,\n createPlaceHolder(containerPath, flexBasis, style)\n );\n while ((targetParent = followPathToParent(newLayout, containerPath))) {\n if (getProp(targetParent, 'path') === '0') {\n break;\n }\n const { children } = getProps(targetParent);\n if (allOtherChildrenArePlaceholders(children)) {\n containerPath = getProp(targetParent, 'path');\n const {\n style: { flexBasis, display, flexDirection, ...style }\n } = getProps(targetParent);\n newLayout = swapChild(\n layoutRoot,\n targetParent,\n createPlaceHolder(containerPath, flexBasis, style)\n );\n } else if (hasAdjacentPlaceholders(children)) {\n newLayout = collapsePlaceholders(layoutRoot, targetParent as ReactElement);\n } else {\n break;\n }\n }\n return newLayout;\n }\n return _removeChild(layoutRoot, target);\n}\n\nfunction _removeChild(container: ReactElement, child: ReactElement): ReactElement {\n const props = getProps(container)\n const { children: componentChildren, path, preserve } = props\n let { active } = props\n const { idx, finalStep } = nextStep(path, getProp(child, 'path'));\n const type = typeOf(container) as string;\n let children = componentChildren.slice() as ReactElement[];\n \n if (finalStep) {\n children.splice(idx, 1);\n if (active !== undefined && active >= idx) {\n active = Math.max(0, active - 1);\n }\n\n if (children.length === 1 && !preserve && path !== '0' && type.match(/Flexbox|Stack/)) {\n return unwrap(container, children[0]);\n }\n\n if (!children.some(isFlexible) && children.some(canBeMadeFlexible)) {\n children = makeFlexible(children);\n }\n } else {\n children[idx] = _removeChild(children[idx], child) as ReactElement;\n }\n\n children = children.map((child, i) => resetPath(child, `${path}.${i}`));\n return React.cloneElement(container, { active }, children);\n}\n\nfunction unwrap(container: ReactElement, child: ReactElement) {\n const type = typeOf(container);\n const {\n path,\n style: { flexBasis, flexGrow, flexShrink, width, height }\n } = getProps(container);\n\n let unwrappedChild = resetPath(child, path);\n if (path === '0') {\n unwrappedChild = React.cloneElement(unwrappedChild, {\n style: {\n ...child.props.style,\n width,\n height\n }\n });\n } else if (type === 'Flexbox') {\n const dim = container.props.style.flexDirection === 'column' ? 'height' : 'width';\n const {\n style: { [dim]: size, ...style }\n } = unwrappedChild.props;\n unwrappedChild = React.cloneElement(unwrappedChild, {\n flexFill: undefined,\n style: {\n ...style,\n flexGrow,\n flexShrink,\n flexBasis,\n width,\n height\n }\n });\n }\n return unwrappedChild;\n}\n\nconst isFlexible = (element: ReactElement) => {\n return element.props.style.flexGrow > 0;\n}\n\nconst canBeMadeFlexible = (element: ReactElement) => {\n const { width, height, flexGrow } = element.props.style;\n return flexGrow === 0 && typeof width !== 'number' && typeof height !== 'number';\n}\n\nconst makeFlexible = (children: ReactElement[]) => {\n return children.map((child) =>\n canBeMadeFlexible(child)\n ? React.cloneElement(child, {\n style: {\n ...child.props.style,\n flexGrow: 1\n }\n })\n : child\n );\n}\n\nconst hasAdjacentPlaceholders = (children: ReactElement[]) => {\n if (children && children.length > 0) {\n let wasPlaceholder = getProp(children[0], 'placeholder');\n let isPlaceholder = false;\n for (let i = 1; i < children.length; i++) {\n isPlaceholder = getProp(children[i], 'placeholder');\n if (wasPlaceholder && isPlaceholder) {\n return true;\n }\n wasPlaceholder = isPlaceholder;\n }\n }\n};\n\nconst collapsePlaceholders = (container: ReactElement, target: ReactElement) => {\n const { children: componentChildren, path } = getProps(container);\n const { idx, finalStep } = nextStep(path, getProp(target, 'path'));\n let children = componentChildren.slice() as ReactElement[];\n if (finalStep) {\n children[idx] = _collapsePlaceHolders(target);\n } else {\n children[idx] = collapsePlaceholders(children[idx], target) as ReactElement;\n }\n\n children = children.map((child, i) => resetPath(child, `${path}.${i}`));\n return React.cloneElement(container, undefined, children);\n};\n\nconst _collapsePlaceHolders = (container: ReactElement) => {\n const { children } = getProps(container);\n const newChildren = [];\n const placeholders: ReactElement[] = [];\n\n for (let i = 0; i < children.length; i++) {\n if (getProp(children[i], 'placeholder')) {\n placeholders.push(children[i]);\n } else {\n if (placeholders.length === 1) {\n newChildren.push(placeholders.pop());\n } else if (placeholders.length > 0) {\n newChildren.push(mergePlaceholders(placeholders));\n placeholders.length = 0;\n }\n newChildren.push(children[i]);\n }\n }\n\n if (placeholders.length === 1) {\n newChildren.push(placeholders.pop());\n } else if (placeholders.length > 0) {\n newChildren.push(mergePlaceholders(placeholders));\n }\n\n const containerPath = getProp(container, 'path');\n return React.cloneElement(\n container,\n undefined,\n newChildren.map((child, i) => resetPath(child, `${containerPath}.${i}`))\n );\n};\n\nconst mergePlaceholders = ([placeholder, ...placeholders]: ReactElement[]) => {\n const targetStyle = getProp(placeholder, 'style');\n let { flexBasis, flexGrow, flexShrink } = targetStyle;\n for (const {\n props: { style }\n } of placeholders) {\n flexBasis += style.flexBasis;\n flexGrow = Math.max(flexGrow, style.flexGrow);\n flexShrink = Math.max(flexShrink, style.flexShrink);\n }\n return React.cloneElement(placeholder, {\n style: { ...targetStyle, flexBasis, flexGrow, flexShrink }\n });\n};\n\nconst allOtherChildrenArePlaceholders = (children: ReactElement[], path?: string) =>\n children.every(\n (child) => getProp(child, 'placeholder') || (path && getProp(child, 'path') === path)\n );\n", "import React, { CSSProperties, ReactElement } from \"react\";\nimport { dimension } from \"../common-types\";\nimport { followPath, getProps } from \"../utils\";\nimport { LayoutResizeAction, SplitterResizeAction } from \"./layoutTypes\";\nimport { swapChild } from \"./replace-layout-element\";\n\nexport function resizeFlexChild(\n layoutRoot: ReactElement,\n { path, size }: LayoutResizeAction\n) {\n const target = followPath(layoutRoot, path, true);\n\n const { style } = getProps(target);\n\n const newStyle = {\n ...style,\n width: size,\n };\n\n // const dimension = style.flexDirection === \"column\" ? \"height\" : \"width\";\n // const replacementChildren = applySizesToChildren(children, sizes, dimension);\n\n const replacement = React.cloneElement(target, { style: newStyle });\n\n return swapChild(layoutRoot, target, replacement);\n}\n\nexport function resizeFlexChildren(\n layoutRoot: ReactElement,\n { path, sizes }: SplitterResizeAction\n) {\n const target = followPath(layoutRoot, path, true);\n const { children, style } = getProps(target);\n\n const dimension = style.flexDirection === \"column\" ? \"height\" : \"width\";\n const replacementChildren = applySizesToChildren(children, sizes, dimension);\n\n const replacement = React.cloneElement(\n target,\n undefined,\n replacementChildren\n );\n\n return swapChild(layoutRoot, target, replacement);\n}\n\nfunction applySizesToChildren(\n children: ReactElement[],\n sizes: { currentSize: number; flexBasis: number }[],\n dimension: dimension\n) {\n return children.map((child, i) => {\n const {\n style: { [dimension]: size, flexBasis: actualFlexBasis },\n } = getProps(child);\n const meta = sizes[i];\n const { currentSize, flexBasis } = meta;\n const hasCurrentSize = currentSize !== undefined;\n const newSize = hasCurrentSize ? meta.currentSize : flexBasis;\n\n if (\n newSize === undefined ||\n size === newSize ||\n actualFlexBasis === newSize\n ) {\n return child;\n }\n return React.cloneElement(child, {\n style: applySizeToChild(child.props.style, dimension, newSize),\n });\n });\n}\n\nfunction applySizeToChild(\n style: CSSProperties,\n dimension: dimension,\n newSize: number\n) {\n const hasSize = typeof style[dimension] === \"number\";\n const { flexShrink = 1, flexGrow = 1 } = style;\n return {\n ...style,\n [dimension]: hasSize ? newSize : \"auto\",\n flexBasis: hasSize ? \"auto\" : newSize,\n flexShrink,\n flexGrow,\n };\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { uuid } from \"@vuu-ui/vuu-utils\";\nimport React, { ReactElement } from \"react\";\nimport { rectTuple } from \"../common-types\";\nimport { DropPos } from \"../drag-drop/dragDropTypes\";\nimport { DropTarget } from \"../drag-drop/DropTarget\";\nimport { ComponentRegistry } from \"../registry/ComponentRegistry\";\nimport { getProp, getProps, nextStep, resetPath, typeOf } from \"../utils\";\nimport {\n createFlexbox,\n createPlaceHolder,\n flexDirection,\n getFlexStyle,\n getIntrinsicSize,\n wrapIntrinsicSizeComponentWithFlexbox,\n} from \"./flexUtils\";\nimport { LayoutModel } from \"./layoutTypes\";\nimport { applyLayoutProps, LayoutProps } from \"./layoutUtils\";\n\nexport interface LayoutSpec {\n type: \"Stack\" | \"Flexbox\";\n flexDirection: \"column\" | \"row\";\n showTabs?: boolean;\n}\n\nconst isHtmlElement = (component: LayoutModel) => {\n const [firstLetter] = typeOf(component) as string;\n return firstLetter === firstLetter.toLowerCase();\n};\n\nexport function wrap(\n container: ReactElement,\n existingComponent: any,\n newComponent: any,\n pos: DropPos,\n clientRect?: DropTarget[\"clientRect\"],\n dropRect?: DropTarget[\"dropRect\"]\n): ReactElement {\n const { children: containerChildren, path: containerPath } =\n getProps(container);\n\n const existingComponentPath = getProp(existingComponent, \"path\");\n const { idx, finalStep } = nextStep(containerPath, existingComponentPath);\n const children = finalStep\n ? updateChildren(\n container,\n containerChildren,\n existingComponent,\n newComponent,\n pos,\n clientRect,\n dropRect\n )\n : containerChildren.map((child: ReactElement, index: number) =>\n index === idx\n ? wrap(\n child,\n existingComponent,\n newComponent,\n pos,\n clientRect,\n dropRect\n )\n : child\n );\n\n return React.cloneElement(container, undefined, children);\n}\n\nfunction updateChildren(\n container: LayoutModel,\n containerChildren: ReactElement[],\n existingComponent: ReactElement,\n newComponent: ReactElement,\n pos: DropPos,\n clientRect?: DropTarget[\"clientRect\"],\n dropRect?: rectTuple\n) {\n const intrinsicSize = getIntrinsicSize(newComponent);\n\n if (intrinsicSize?.width && intrinsicSize?.height) {\n if (clientRect === undefined || dropRect === undefined) {\n throw Error(\n \"wrap-layout-element, updateChildren clientRect and dropRect must both be available\"\n );\n }\n return wrapIntrinsicSizedComponent(\n containerChildren,\n existingComponent,\n newComponent,\n pos,\n clientRect,\n dropRect\n );\n }\n return wrapFlexComponent(\n container,\n containerChildren,\n existingComponent,\n newComponent,\n pos\n );\n}\n\nfunction wrapFlexComponent(\n container: LayoutModel,\n containerChildren: ReactElement[],\n existingComponent: ReactElement,\n newComponent: ReactElement,\n pos: DropPos\n) {\n const { version = 0 } = getProps(newComponent);\n const existingComponentPath = getProp(existingComponent, \"path\");\n const {\n type,\n flexDirection,\n showTabs: showTabsProp,\n } = getLayoutSpecForWrapper(pos);\n const [style, existingComponentStyle, newComponentStyle] =\n getWrappedFlexStyles(\n type,\n existingComponent,\n newComponent,\n flexDirection,\n pos\n );\n const targetFirst = isTargetFirst(pos);\n const active = targetFirst ? 1 : 0;\n\n const newComponentProps = {\n resizeable: true,\n style: newComponentStyle,\n version: version + 1,\n };\n const resizeProp = isHtmlElement(existingComponent)\n ? \"data-resizeable\"\n : \"resizeable\";\n const existingComponentProps = {\n [resizeProp]: true,\n style: existingComponentStyle,\n };\n\n const showTabs = type === \"Stack\" ? { showTabs: showTabsProp } : undefined;\n const splitterSize =\n type === \"Flexbox\"\n ? {\n splitterSize:\n (typeOf(container) === \"Flexbox\" && container.props.splitterSize) ??\n undefined,\n }\n : undefined;\n\n const id = uuid();\n const wrapper = React.createElement(\n ComponentRegistry[type],\n {\n active,\n id,\n key: id,\n path: getProp(existingComponent, \"path\"),\n flexFill: getProp(existingComponent, \"flexFill\"),\n ...splitterSize,\n ...showTabs,\n style,\n resizeable: getProp(existingComponent, \"resizeable\"),\n } as LayoutProps,\n targetFirst\n ? [\n resetPath(\n existingComponent,\n `${existingComponentPath}.0`,\n existingComponentProps\n ),\n applyLayoutProps(\n React.cloneElement(newComponent, newComponentProps),\n `${existingComponentPath}.1`\n ),\n ]\n : [\n applyLayoutProps(\n React.cloneElement(newComponent, newComponentProps),\n `${existingComponentPath}.0`\n ),\n resetPath(\n existingComponent,\n `${existingComponentPath}.1`,\n existingComponentProps\n ),\n ]\n );\n return containerChildren.map((child: ReactElement) =>\n child === existingComponent ? wrapper : child\n );\n}\n\nfunction wrapIntrinsicSizedComponent(\n containerChildren: ReactElement[],\n existingComponent: ReactElement,\n newComponent: ReactElement,\n pos: DropPos,\n clientRect: DropTarget[\"clientRect\"],\n dropRect: rectTuple\n) {\n const { flexDirection } = getLayoutSpecForWrapper(pos);\n const contraDirection = flexDirection === \"column\" ? \"row\" : \"column\";\n const targetFirst = isTargetFirst(pos);\n\n const [dropLeft, dropTop, dropRight, dropBottom] = dropRect;\n const [startPlaceholder, endPlaceholder] =\n flexDirection === \"column\"\n ? [dropTop - clientRect.top, clientRect.bottom - dropBottom]\n : [dropLeft - clientRect.left, clientRect.right - dropRight];\n const pathRoot = getProp(existingComponent, \"path\");\n let pathIndex = 0;\n\n const resizeProp = isHtmlElement(existingComponent)\n ? \"data-resizeable\"\n : \"resizeable\";\n\n const wrappedChildren = [];\n if (startPlaceholder) {\n wrappedChildren.push(\n targetFirst\n ? resetPath(existingComponent, `${pathRoot}.${pathIndex++}`, {\n [resizeProp]: true,\n style: { flexBasis: startPlaceholder, flexGrow: 1, flexShrink: 1 },\n })\n : createPlaceHolder(`${pathRoot}.${pathIndex++}`, startPlaceholder, {\n flexGrow: 0,\n flexShrink: 0,\n })\n );\n }\n wrappedChildren.push(\n wrapIntrinsicSizeComponentWithFlexbox(\n newComponent,\n contraDirection,\n `${pathRoot}.${pathIndex++}`,\n clientRect,\n dropRect\n )\n );\n if (endPlaceholder) {\n wrappedChildren.push(\n targetFirst\n ? createPlaceHolder(`${pathRoot}.${pathIndex++}`, 0)\n : resetPath(existingComponent, `${pathRoot}.${pathIndex++}`, {\n [resizeProp]: true,\n style: { flexBasis: 0, flexGrow: 1, flexShrink: 1 },\n })\n );\n }\n\n const wrapper = createFlexbox(\n flexDirection,\n existingComponent.props,\n wrappedChildren,\n pathRoot\n );\n return containerChildren.map((child) =>\n child === existingComponent ? wrapper : child\n );\n}\n\nfunction getWrappedFlexStyles(\n type: string,\n existingComponent: ReactElement,\n newComponent: ReactElement,\n flexDirection: flexDirection,\n pos: DropPos\n) {\n const style = {\n ...existingComponent.props.style,\n flexDirection,\n };\n\n const dimension =\n type === \"Flexbox\" && flexDirection === \"column\" ? \"height\" : \"width\";\n const newComponentStyle = getFlexStyle(newComponent, dimension, pos);\n const existingComponentStyle = getFlexStyle(existingComponent, dimension);\n\n return [style, existingComponentStyle, newComponentStyle];\n}\n\nconst isTargetFirst = (pos: DropPos) =>\n pos.position.SouthOrEast\n ? true\n : pos?.tab?.positionRelativeToTab === \"before\"\n ? false\n : pos.position.Header\n ? true\n : false;\n\nfunction getLayoutSpecForWrapper(pos: DropPos): LayoutSpec {\n if (pos.position.Header) {\n return {\n type: \"Stack\",\n flexDirection: \"column\",\n showTabs: true,\n };\n } else {\n return {\n type: \"Flexbox\",\n flexDirection: pos.position.EastOrWest ? \"row\" : \"column\",\n };\n }\n}\n", "import { createContext, Dispatch } from 'react';\nimport { DragStartAction, LayoutReducerAction, SaveAction } from '../layout-reducer';\n\nconst unconfiguredLayoutProviderDispatch: LayoutProviderDispatch = (action) =>\n console.log(`dispatch ${action.type}, have you forgotten to provide a LayoutProvider ?`);\n\nexport type LayoutProviderDispatch = Dispatch<LayoutReducerAction | SaveAction | DragStartAction>;\n\nexport interface LayoutProviderContextProps {\n dispatchLayoutProvider: LayoutProviderDispatch;\n version: number;\n}\n\nexport const LayoutProviderContext = createContext<LayoutProviderContextProps>({\n dispatchLayoutProvider: unconfiguredLayoutProviderDispatch,\n version: -1\n});\n", "import { MutableRefObject, ReactElement, useCallback, useRef } from \"react\";\nimport {\n DragDropRect,\n DragEndCallback,\n Draggable,\n DragInstructions\n} from \"../drag-drop\";\nimport { DragStartAction } from \"../layout-reducer\";\nimport { getIntrinsicSize } from \"../layout-reducer/flexUtils\";\nimport { followPath } from \"../utils\";\nimport { LayoutProviderDispatch } from \"./LayoutProviderContext\";\n\nconst NO_INSTRUCTIONS = {} as DragInstructions;\nconst NO_OFFSETS: [number, number] = [0, 0];\n\ninterface CurrentDragAction extends Omit<DragStartAction, \"evt\" | \"type\"> {\n dragContainerPath: string;\n}\n\ninterface DragOperation {\n payload: ReactElement;\n originalCSS: string;\n dragRect: unknown;\n dragInstructions: DragInstructions;\n dragOffsets: [number, number];\n targetPosition: { left: number; top: number };\n}\n\nconst getDragElement = (\n rect: DragDropRect,\n id: string,\n dragElement?: HTMLElement\n): [HTMLElement, string, number, number] => {\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"vuuSimpleDraggableWrapper\";\n wrapper.classList.add(\n \"vuuSimpleDraggableWrapper\",\n \"salt-theme\",\n \"salt-density-medium\"\n );\n wrapper.dataset.dragging = \"true\";\n\n const div = dragElement ?? document.createElement(\"div\");\n div.id = id;\n\n wrapper.appendChild(div);\n document.body.appendChild(wrapper);\n const cssText = `top:${rect.top}px;left:${rect.left}px;width:${rect.width}px;height:${rect.height}px;`;\n return [wrapper, cssText, rect.left, rect.top];\n};\n\nconst determineDragOffsets = (\n draggedElement: HTMLElement\n): [number, number] => {\n const { offsetParent } = draggedElement;\n if (offsetParent === null) {\n return NO_OFFSETS;\n } else {\n const { left: offsetLeft, top: offsetTop } =\n offsetParent.getBoundingClientRect();\n return [offsetLeft, offsetTop];\n }\n};\n\nexport const useLayoutDragDrop = (\n rootLayoutRef: MutableRefObject<ReactElement>,\n dispatch: LayoutProviderDispatch\n) => {\n const dragActionRef = useRef<CurrentDragAction>();\n const dragOperationRef = useRef<DragOperation>();\n const draggableHTMLElementRef = useRef<HTMLElement>();\n\n const handleDrag = useCallback((x, y) => {\n if (dragOperationRef.current && draggableHTMLElementRef.current) {\n const {\n dragOffsets: [offsetX, offsetY],\n targetPosition,\n } = dragOperationRef.current;\n const left = typeof x === \"number\" ? x - offsetX : targetPosition.left;\n const top = typeof y === \"number\" ? y - offsetY : targetPosition.top;\n if (left !== targetPosition.left || top !== targetPosition.top) {\n dragOperationRef.current.targetPosition.left = left;\n dragOperationRef.current.targetPosition.top = top;\n draggableHTMLElementRef.current.style.top = top + \"px\";\n draggableHTMLElementRef.current.style.left = left + \"px\";\n }\n }\n }, []);\n\n const handleDrop: DragEndCallback = useCallback((dropTarget) => {\n if (dragOperationRef.current) {\n const {\n dragInstructions,\n payload: draggedReactElement,\n originalCSS,\n } = dragOperationRef.current;\n dispatch({\n type: \"drag-drop\",\n draggedReactElement,\n dragInstructions,\n dropTarget,\n });\n\n console.log(`[useLayoutDragDrop]`, {\n dragInstructions,\n });\n if (draggableHTMLElementRef.current) {\n if (dragInstructions.RemoveDraggableOnDragEnd) {\n document.body.removeChild(draggableHTMLElementRef.current);\n } else {\n draggableHTMLElementRef.current.style.cssText = originalCSS;\n delete draggableHTMLElementRef.current.dataset.dragging;\n }\n }\n\n dragActionRef.current = undefined;\n dragOperationRef.current = undefined;\n draggableHTMLElementRef.current = undefined;\n }\n }, [dispatch]);\n\n const handleDragStart = useCallback(\n (evt: MouseEvent) => {\n if (dragActionRef.current) {\n const {\n payload: component,\n dragContainerPath,\n dragElement,\n dragRect,\n instructions = NO_INSTRUCTIONS,\n path,\n } = dragActionRef.current;\n const { current: rootLayout } = rootLayoutRef;\n const dragPos = { x: evt.clientX, y: evt.clientY };\n const dragPayload = component ?? followPath(rootLayout, path, true);\n const { id: dragPayloadId } = dragPayload.props;\n const intrinsicSize = getIntrinsicSize(dragPayload);\n let originalCSS = \"\",\n dragCSS = \"\",\n dragTransform = \"\";\n\n let dragStartLeft = -1;\n let dragStartTop = -1;\n let dragOffsets: [number, number] = NO_OFFSETS;\n\n let element = document.getElementById(dragPayloadId);\n\n if (element === null) {\n [element, dragCSS, dragStartLeft, dragStartTop] = getDragElement(\n dragRect,\n dragPayloadId,\n dragElement\n );\n } else {\n dragOffsets = determineDragOffsets(element);\n const [offsetLeft, offsetTop] = dragOffsets;\n const { width, height, left, top } = element.getBoundingClientRect();\n dragStartLeft = left - offsetLeft;\n dragStartTop = top - offsetTop;\n dragCSS = `width:${width}px;height:${height}px;left:${dragStartLeft}px;top:${dragStartTop}px;z-index: 100;background-color:#ccc;opacity: 0.6;`;\n element.dataset.dragging = \"true\";\n originalCSS = element.style.cssText;\n }\n\n dragTransform = Draggable.initDrag(\n rootLayoutRef.current,\n dragContainerPath,\n dragRect,\n dragPos,\n {\n drag: handleDrag,\n drop: handleDrop,\n },\n intrinsicSize\n // dropTargets\n );\n\n element.style.cssText = dragCSS + dragTransform;\n draggableHTMLElementRef.current = element;\n\n dragOperationRef.current = {\n payload: dragPayload,\n originalCSS,\n dragRect,\n dragOffsets,\n dragInstructions: instructions,\n targetPosition: { left: dragStartLeft, top: dragStartTop },\n };\n }\n },\n [handleDrag, handleDrop, rootLayoutRef]\n );\n\n const prepareToDrag = useCallback(\n (action: DragStartAction) => {\n const { evt, ...options } = action;\n console.log(`prepare to drag`, {\n options,\n });\n dragActionRef.current = {\n ...options,\n dragContainerPath: \"\",\n };\n Draggable.handleMousedown(evt, handleDragStart, options.instructions);\n },\n [handleDragStart]\n );\n\n return prepareToDrag;\n};\n", "import { useForkRef } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport { ForwardedRef, forwardRef, useMemo } from \"react\";\nimport { useBreakpoints } from \"../responsive\";\nimport { asReactElements } from \"../utils\";\nimport { FlexboxProps } from \"./flexboxTypes\";\nimport \"./FluidGrid.css\";\nimport { useResponsiveSizing } from \"./useResponsiveSizing\";\n\nconst classBase = \"hwFluidGrid\";\n\nexport interface FluidGridProps extends FlexboxProps {\n showGrid?: boolean;\n}\n\nexport const FluidGrid = forwardRef(function FluidGrid(\n props: FluidGridProps,\n ref: ForwardedRef<HTMLDivElement>\n) {\n const {\n breakPoints,\n children: childrenProp,\n column,\n cols: colsProp = 12,\n className: classNameProp,\n flexFill,\n gap = 3,\n fullPage,\n id,\n onSplitterMoved,\n resizeable,\n row,\n showGrid,\n spacing,\n splitterSize,\n style: styleProp,\n ...rest\n } = props;\n\n //TODO does thie useMemo serve any actual purpose or will childrenProp\n // always be new anyway ?\n const children = useMemo(() => {\n return asReactElements(childrenProp);\n }, [childrenProp]);\n\n const { cols, content, rootRef } = useResponsiveSizing({\n children,\n cols: colsProp,\n style: styleProp,\n });\n\n const breakpoint = useBreakpoints(\n {\n breakPoints,\n },\n rootRef\n );\n\n const className = cx(classBase, classNameProp, {\n [`${classBase}-column`]: column,\n [`${classBase}-row`]: row,\n [`${classBase}-show-grid`]: showGrid,\n \"flex-fill\": flexFill,\n \"full-page\": fullPage,\n });\n\n const style = {\n ...styleProp,\n \"--spacing\": spacing,\n \"--grid-col-count\": cols,\n \"--grid-gap\": gap,\n };\n\n return (\n <div\n {...rest}\n className={className}\n data-breakpoint={breakpoint}\n data-cols={cols}\n data-resizeable={resizeable || undefined}\n id={id}\n ref={useForkRef(rootRef, ref)}\n style={style}\n >\n {content}\n </div>\n );\n});\nFluidGrid.displayName = \"FluidGrid\";\n", "import { RefObject, useCallback, useEffect, useRef, useState } from \"react\";\nimport { useResizeObserver } from \"./useResizeObserver\";\nimport {\n BreakPointRamp,\n breakpointRamp,\n getBreakPoints as getDocumentBreakpoints,\n} from \"./breakpoints\";\nimport { BreakPoint, BreakPointsProp } from \"../flexbox/flexboxTypes\";\n\nconst EMPTY_ARRAY: BreakPoint[] = [];\n\nexport interface BreakpointsHookProps {\n breakPoints?: BreakPointsProp;\n smallerThan?: string;\n}\n\n// TODO how do we cater for smallerThan/greaterThan breakpoints\nexport const useBreakpoints = (\n { breakPoints: breakPointsProp, smallerThan }: BreakpointsHookProps,\n ref: RefObject<HTMLElement>\n) => {\n const [breakpointMatch, setBreakpointmatch] = useState(\n smallerThan ? false : \"lg\"\n );\n const bodyRef = useRef(document.body);\n const breakPointsRef = useRef<BreakPointRamp[]>(\n breakPointsProp ? breakpointRamp(breakPointsProp) : getDocumentBreakpoints()\n );\n\n // TODO how do we identify the default\n const sizeRef = useRef(\"lg\");\n\n const stopFromMinWidth = useCallback(\n (w) => {\n if (breakPointsRef.current) {\n for (const [name, size] of breakPointsRef.current) {\n if (w >= size) {\n return name;\n }\n }\n }\n },\n [breakPointsRef]\n );\n\n const matchSizeAgainstBreakpoints = useCallback(\n (width) => {\n if (smallerThan) {\n const breakPointRamp = breakPointsRef.current.find(\n ([name]: BreakPointRamp) => name === smallerThan\n );\n if (breakPointRamp) {\n const [, , maxValue] = breakPointRamp;\n return width < maxValue;\n }\n } else {\n return stopFromMinWidth(width);\n }\n // is this right ?\n return width;\n },\n [smallerThan, stopFromMinWidth]\n );\n\n // TODO need to make the dimension a config\n useResizeObserver(\n ref || bodyRef,\n breakPointsRef.current ? [\"width\"] : EMPTY_ARRAY,\n ({ width: measuredWidth }: { width?: number }) => {\n const result = matchSizeAgainstBreakpoints(measuredWidth);\n if (result !== sizeRef.current) {\n sizeRef.current = result;\n setBreakpointmatch(result);\n }\n },\n true\n );\n\n useEffect(() => {\n const target = ref || bodyRef;\n if (target.current) {\n const prevSize = sizeRef.current;\n if (breakPointsRef.current) {\n // We're measuring here when the resizeObserver has also measured\n // There isn't a convenient way to get the Resizeobserver to\n // notify initial size - that's not really its job, unless we\n // set a flag ?\n const { clientWidth } = target.current;\n const result = matchSizeAgainstBreakpoints(clientWidth);\n sizeRef.current = result;\n // If initial size of ref does not match the default, notify client after render\n if (result !== prevSize) {\n setBreakpointmatch(result);\n }\n }\n }\n }, [setBreakpointmatch, matchSizeAgainstBreakpoints, ref]);\n\n // No, just ass the class directly to the ref, no need to render\n return breakpointMatch;\n};\n", "/* eslint-disable no-restricted-syntax */\nimport { useCallback, useLayoutEffect, useRef, RefObject } from \"react\";\nexport const WidthHeight = [\"height\", \"width\"];\nexport const HeightOnly = [\"height\"];\nexport const WidthOnly = [\"width\"];\n\nexport type measurements<T = string | number> = {\n height?: T;\n scrollHeight?: T;\n scrollWidth?: T;\n width?: T;\n};\ntype measuredDimension = keyof measurements<number>;\n\nexport type ResizeHandler = (measurements: measurements<number>) => void;\n\ntype observedDetails = {\n onResize?: ResizeHandler;\n measurements: measurements<number>;\n};\nconst observedMap = new WeakMap<HTMLElement, observedDetails>();\n\nconst getTargetSize = (\n element: HTMLElement,\n contentRect: DOMRectReadOnly,\n dimension: measuredDimension\n): number => {\n switch (dimension) {\n case \"height\":\n return contentRect.height;\n case \"scrollHeight\":\n return element.scrollHeight;\n case \"scrollWidth\":\n return element.scrollWidth;\n case \"width\":\n return contentRect.width;\n default:\n return 0;\n }\n};\n\nexport const resizeObserver = new ResizeObserver(\n (entries: ResizeObserverEntry[]) => {\n for (const entry of entries) {\n const { target, contentRect } = entry;\n const observedTarget = observedMap.get(target as HTMLElement);\n if (observedTarget) {\n const { onResize, measurements } = observedTarget;\n let sizeChanged = false;\n for (const [dimension, size] of Object.entries(measurements)) {\n const newSize = getTargetSize(\n target as HTMLElement,\n contentRect,\n dimension as measuredDimension\n );\n if (newSize !== size) {\n sizeChanged = true;\n measurements[dimension as measuredDimension] = newSize;\n }\n }\n if (sizeChanged) {\n onResize && onResize(measurements);\n }\n }\n }\n }\n);\n\n// TODO use an optional lag (default to false) to ask to fire onResize\n// with initial size\n// Note asking for scrollHeight alone will not trigger onResize, this is only triggered by height,\n// with scrollHeight returned as an auxilliary value\nexport function useResizeObserver(\n ref: RefObject<Element | HTMLElement | null>,\n dimensions: string[],\n onResize: ResizeHandler,\n reportInitialSize = false\n): void {\n console.log(`resizeObserver container`, {\n ref: ref.current,\n });\n const dimensionsRef = useRef(dimensions);\n const measure = useCallback((target: HTMLElement): measurements<number> => {\n const rect = target.getBoundingClientRect();\n return dimensionsRef.current.reduce(\n (map: { [key: string]: number }, dim) => {\n map[dim] = getTargetSize(target, rect, dim as measuredDimension);\n return map;\n },\n {}\n );\n }, []);\n\n // TODO use ref to store resizeHandler here\n // resize handler registered with REsizeObserver will never change\n // use ref to store user onResize callback here\n // resizeHandler will call user callback.current\n\n // Keep this effect separate in case user inadvertently passes different\n // dimensions or callback instance each time - we only ever want to\n // initiate new observation when ref changes.\n useLayoutEffect(() => {\n const target = ref.current as HTMLElement;\n let cleanedUp = false;\n\n async function registerObserver() {\n // Create the map entry immediately. useEffect may fire below\n // before fonts are ready and attempt to update entry\n observedMap.set(target, { measurements: {} as measurements<number> });\n cleanedUp = false;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { fonts } = document as any;\n if (fonts) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n await fonts.ready;\n }\n if (!cleanedUp) {\n const observedTarget = observedMap.get(target);\n if (observedTarget) {\n const measurements = measure(target);\n observedTarget.measurements = measurements;\n resizeObserver.observe(target);\n if (reportInitialSize) {\n onResize(measurements);\n }\n }\n }\n }\n\n if (target) {\n // TODO might we want multiple callers to attach a listener to the same element ?\n if (observedMap.has(target)) {\n throw Error(\n \"useResizeObserver attemping to observe same element twice\"\n );\n }\n void registerObserver();\n }\n return () => {\n if (target && observedMap.has(target)) {\n resizeObserver.unobserve(target);\n observedMap.delete(target);\n cleanedUp = true;\n }\n };\n }, [ref, measure, reportInitialSize, onResize]);\n\n useLayoutEffect(() => {\n const target = ref.current as HTMLElement;\n const record = observedMap.get(target);\n if (record) {\n if (dimensionsRef.current !== dimensions) {\n dimensionsRef.current = dimensions;\n const measurements = measure(target);\n record.measurements = measurements;\n }\n // Might not have changed, but no harm ...\n record.onResize = onResize;\n }\n }, [dimensions, measure, ref, onResize]);\n\n // TODO might be a good idea to ref and return the current measurememnts. That way, derived hooks\n // e.g useBreakpoints don't have to measure and client cn make onResize callback simpler\n}\n", "// should we have some global; defaults ?\n\nimport { BreakPointsProp } from \"../flexbox/flexboxTypes\";\n\nexport type BreakPointRamp = [string, number, number];\n\nfunction breakpointReader(\n themeName: string,\n defaultBreakpoints?: BreakPointsProp\n) {\n //TODO ownerDocument\n const themeRoot = document.body.querySelector(`.${themeName}`);\n const handler = {\n get: function (style: CSSStyleDeclaration, stopName: string) {\n const val = style.getPropertyValue(\n // lets assume we have the following naming convention\n `--${themeName}-breakpoint-${stopName}`\n );\n return val ? parseInt(val) : undefined;\n },\n };\n\n return themeRoot\n ? new Proxy(getComputedStyle(themeRoot), handler)\n : defaultBreakpoints ?? {};\n}\n\nconst byDescendingStopSize = (\n [, s1]: [string, number],\n [, s2]: [string, number]\n) => s2 - s1;\n\n// These are assumed to be min-width (aka mobile-first) stops, we could take a\n// paramneter to support max-width as well ?\n// return [stopName, minWidth, maxWidth]\nexport const breakpointRamp = (\n breakpoints: BreakPointsProp\n): BreakPointRamp[] =>\n Object.entries(breakpoints)\n .sort(byDescendingStopSize)\n .map(([name, value], i, all) => [\n name,\n value,\n i < all.length - 1 ? all[i + 1][1] : 9999,\n ]);\n\nlet documentBreakpoints: BreakPointRamp[] | null = null;\n\nconst loadBreakpoints = (themeName = \"salt\") => {\n // TODO would be nice to read these breakpoint labels from a css variable to\n // avoid hard-coding them here ?\n const { xs, sm, md, lg, xl } = breakpointReader(themeName) as BreakPointsProp;\n return breakpointRamp({ xs, sm, md, lg, xl });\n};\n\n//TODO support multiple themes loaded\nexport const getBreakPoints = (themeName?: string) => {\n if (documentBreakpoints === null) {\n documentBreakpoints = loadBreakpoints(themeName);\n }\n return documentBreakpoints;\n};\n", "const COLLAPSIBLE = 'data-collapsible';\n\nconst RESPONSIVE_ATTRIBUTE: { [key: string]: boolean } = {\n [COLLAPSIBLE]: true,\n 'data-pad-start': true,\n 'data-pad-end': true\n};\n\nexport const isResponsiveAttribute = (propName: string): boolean =>\n RESPONSIVE_ATTRIBUTE[propName] ?? false;\n\nconst isCollapsible = (propName: string) => propName === COLLAPSIBLE;\n\nconst COLLAPSIBLE_VALUE: { [key: string]: string } = {\n dynamic: 'dynamic',\n instant: 'instant',\n true: 'instant'\n};\n\nconst collapsibleValue = (value: string) => COLLAPSIBLE_VALUE[value] ?? 'none';\n\ntype Props = { [key: string]: any };\nexport const extractResponsiveProps = (props: Props) => {\n return Object.keys(props).reduce<[Props, Props]>(\n (result, propName) => {\n const [toolbarProps, rest] = result;\n if (isResponsiveAttribute(propName)) {\n const value = isCollapsible(propName) ? collapsibleValue(props[propName]) : props[propName];\n\n toolbarProps[propName] = value;\n rest[propName] = undefined;\n }\n return result;\n },\n [{}, {}]\n );\n};\n", "import { getUniqueId } from \"@vuu-ui/vuu-utils\";\nimport {\n cloneElement,\n CSSProperties,\n isValidElement,\n ReactElement,\n useCallback,\n useMemo,\n useRef,\n} from \"react\";\nimport { gatherChildMeta } from \"./flexbox-utils\";\nimport { BreakPoint } from \"./flexboxTypes\";\n\nconst breakPoints: BreakPoint[] = [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"];\n\nconst DEFAULT_COLS = 12;\n\nexport const useResponsiveSizing = ({\n children: childrenProp,\n cols: colsProp,\n style,\n}: {\n children: ReactElement[];\n cols?: number;\n style?: CSSProperties;\n}) => {\n const rootRef = useRef(null);\n const metaRef = useRef(null);\n const contentRef = useRef<ReactElement[]>();\n const cols = colsProp ?? DEFAULT_COLS;\n\n const isColumn = style?.flexDirection === \"column\";\n const dimension = isColumn ? \"height\" : \"width\";\n\n const children = useMemo(\n () =>\n Array.isArray(childrenProp)\n ? childrenProp\n : isValidElement(childrenProp)\n ? [childrenProp]\n : [],\n [childrenProp]\n );\n\n const buildContent = useCallback(\n (children, dimension): [ReactElement[], any] => {\n const childMeta = gatherChildMeta(children, dimension, breakPoints);\n const content = [];\n const meta = [];\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n const {\n style: { flex, ...rest },\n } = child.props;\n content.push(\n cloneElement(child, {\n key: getUniqueId(),\n style: {\n ...rest,\n \"--parent-col-count\": cols,\n },\n })\n );\n meta.push(childMeta[i]);\n }\n return [content, meta];\n },\n [cols]\n );\n\n useMemo(() => {\n const [content, meta] = buildContent(children, dimension);\n metaRef.current = meta;\n contentRef.current = content;\n }, [buildContent, children, dimension]);\n\n return {\n cols,\n content: contentRef.current,\n rootRef,\n };\n};\n", "import { registerComponent } from '../registry/ComponentRegistry';\nimport { FluidGrid, FluidGridProps } from './FluidGrid';\n\nexport const FluidGridLayout = function FluidGridLayout(props: FluidGridProps) {\n return <FluidGrid {...props} />;\n};\nFluidGridLayout.displayName = 'FluidGrid';\n\nregisterComponent('FluidGrid', FluidGridLayout, 'container');\n", "import React, {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useMemo,\n} from \"react\";\n\nconst NO_DRAG_CONTEXT = {\n isDragSource: false,\n isDropTarget: false,\n register: () => undefined,\n};\n\nconst unconfiguredRegistrationCall = () =>\n console.log(`have you forgotten to provide a DragDrop Provider ?`);\n\nexport interface DragDropContextProps {\n dragSources?: Map<string, string[]>;\n dropTargets?: Map<string, string[]>;\n registerDragDropParty: (id: string) => void;\n}\n\nconst DragDropContext = createContext<DragDropContextProps>({\n registerDragDropParty: unconfiguredRegistrationCall,\n});\n\nexport type DragSources = { [key: string]: { dropTargets: string | string[] } };\nexport interface DragDropProviderProps {\n children: ReactNode;\n dragSources: DragSources;\n}\n\nexport const DragDropProvider = ({\n children,\n dragSources: dragSourcesProp,\n}: DragDropProviderProps) => {\n const [dragSources, dropTargets] = useMemo(() => {\n const sources = new Map<string, string[]>();\n const targets = new Map<string, string[]>();\n\n for (const [sourceId, { dropTargets }] of Object.entries(dragSourcesProp)) {\n const sourceEntry = sources.get(sourceId);\n const targetIds = Array.isArray(dropTargets)\n ? dropTargets\n : [dropTargets];\n if (sourceEntry) {\n sourceEntry.push(...targetIds);\n } else {\n sources.set(sourceId, targetIds);\n }\n for (const targetId of targetIds) {\n const targetEntry = targets.get(targetId);\n if (targetEntry) {\n targetEntry.push(sourceId);\n } else {\n targets.set(targetId, [sourceId]);\n }\n }\n }\n return [sources, targets];\n }, [dragSourcesProp]);\n\n console.log({\n dragSources,\n dropTargets,\n });\n\n const registerDragDropParty = useCallback((id: string) => {\n console.log(`registerDragDropParty ${id}`);\n }, []);\n\n const contextValue: DragDropContextProps = useMemo(\n () => ({\n dragSources,\n dropTargets,\n registerDragDropParty,\n }),\n [dragSources, dropTargets, registerDragDropParty]\n );\n\n return (\n <DragDropContext.Provider value={contextValue}>\n {children}\n </DragDropContext.Provider>\n );\n};\n\nexport interface DragDropProviderResult {\n isDragSource: boolean;\n isDropTarget: boolean;\n register: (id: string) => void;\n}\n\nexport const useDragDropProvider = (id?: string): DragDropProviderResult => {\n const { dragSources, dropTargets, registerDragDropParty } =\n useContext(DragDropContext);\n if (id) {\n const isDragSource = dragSources?.has(id) ?? false;\n const isDropTarget = dropTargets?.has(id) ?? false;\n\n return {\n isDragSource,\n isDropTarget,\n register: registerDragDropParty,\n };\n } else {\n return NO_DRAG_CONTEXT;\n }\n};\n", "import { useCallback, useMemo, useRef, useState } from \"react\";\n\nimport {\n Direction,\n InternalDragDropProps,\n InternalDragHookResult,\n ViewportRange,\n} from \"./dragDropTypesNext\";\nimport { useDragDisplacers } from \"./useDragDisplacers\";\n\nimport {\n dimensions,\n getIndexOfDraggedItem,\n getNextDropTarget,\n MeasuredDropTarget,\n measureDropTargets,\n NOT_HIDDEN,\n NOT_OVERFLOWED,\n} from \"./drop-target-utils\";\n\nexport const useDragDropNaturalMovement = ({\n draggableRef,\n onDrop,\n orientation = \"horizontal\",\n containerRef,\n itemQuery = \"*\",\n selected,\n viewportRange,\n}: InternalDragDropProps): InternalDragHookResult => {\n const dragDirectionRef = useRef<Direction | undefined>();\n\n const isScrollable = useRef(false);\n /** current position of dragged element */\n const dragPosRef = useRef<number>(-1);\n const measuredDropTargets = useRef<MeasuredDropTarget[]>([]);\n const overflowMenuShowingRef = useRef(false);\n\n const [showOverflow, setShowOverflow] = useState(false);\n\n const { clearSpacers, displaceItem, displaceLastItem } = useDragDisplacers();\n\n const draggedItemRef = useRef<MeasuredDropTarget>();\n const fullItemQuery = `:is(${itemQuery}${NOT_OVERFLOWED}${NOT_HIDDEN},.vuuOverflowContainer-OverflowIndicator)`;\n\n // const { setMeasurements: setVizData } = useListViz();\n\n const indexOf = (dropTarget: MeasuredDropTarget) =>\n measuredDropTargets.current.findIndex((d) => d.id === dropTarget.id);\n\n // Shouldn't need this - but viewportRange is always stale in stopScrolling. Checked all dependencies\n // look ok. Something to do with setTimeout / scrollHandler ?\n const rangeRef = useRef<ViewportRange>();\n rangeRef.current = viewportRange;\n\n const handleScrollStart = useCallback(() => {\n clearSpacers();\n }, [clearSpacers]);\n\n const handleScrollStop = useCallback(\n (scrollDirection: \"fwd\" | \"bwd\", _scrollPos: number, atEnd: boolean) => {\n const { current: container } = containerRef;\n const { current: draggedItem } = draggedItemRef;\n if (container && draggedItem) {\n measuredDropTargets.current = measureDropTargets(\n container,\n orientation,\n fullItemQuery,\n rangeRef.current\n );\n\n // setVizData?.(measuredDropTargets.current);\n\n const { size } = draggedItem;\n const dragPos = dragPosRef.current;\n const midPos = dragPos + size / 2;\n const { current: dropTargets } = measuredDropTargets;\n const dropTarget = getNextDropTarget(dropTargets, midPos, \"fwd\");\n\n if (dropTarget) {\n const targetIndex = indexOf(dropTarget);\n const nextInsertPos = targetIndex;\n const nextDropTarget = dropTargets[nextInsertPos];\n\n if (atEnd && scrollDirection === \"fwd\") {\n displaceLastItem(\n dropTargets,\n dropTargets[dropTargets.length - 1],\n size,\n false,\n \"static\",\n orientation\n );\n } else {\n displaceItem(\n dropTargets,\n nextDropTarget,\n size,\n true,\n \"static\",\n orientation\n );\n }\n // setVizData?.(\n // measuredDropTargets.current,\n // nextDropTarget,\n // dropZoneRef.current\n // );\n }\n }\n },\n [\n containerRef,\n displaceItem,\n displaceLastItem,\n fullItemQuery,\n orientation,\n // setVizData,\n ]\n );\n\n const beginDrag = useCallback(\n (evt: MouseEvent) => {\n const evtTarget = evt.target as HTMLElement;\n const dragElement = evtTarget.closest(itemQuery) as HTMLElement;\n if (\n //TODO need a different check for selected\n dragElement.ariaSelected &&\n Array.isArray(selected) &&\n selected.length > 1\n ) {\n console.log(\"its a selected element, and we have a multi select\");\n }\n const { current: container } = containerRef;\n if (container && dragElement) {\n const { SCROLL_SIZE, CLIENT_SIZE } = dimensions(orientation);\n const { id: draggedItemId } = dragElement;\n\n const { [SCROLL_SIZE]: scrollSize, [CLIENT_SIZE]: clientSize } =\n container;\n isScrollable.current = scrollSize > clientSize;\n const dropTargets = (measuredDropTargets.current = measureDropTargets(\n container,\n orientation,\n fullItemQuery,\n viewportRange,\n draggedItemId\n ));\n\n console.log({ dropTargets });\n\n const indexOfDraggedItem = getIndexOfDraggedItem(dropTargets);\n const draggedItem = dropTargets[indexOfDraggedItem];\n\n if (draggedItem && container) {\n draggedItemRef.current = draggedItem;\n\n const displaceFunction = draggedItem.isLast\n ? displaceLastItem\n : displaceItem;\n\n // setVizData?.(dropTargets, displacedItem, dropZone);\n\n displaceFunction(\n dropTargets,\n draggedItem,\n draggedItem.size,\n false,\n \"static\",\n orientation\n );\n }\n }\n },\n [\n containerRef,\n displaceItem,\n displaceLastItem,\n fullItemQuery,\n itemQuery,\n orientation,\n selected,\n // setVizData,\n viewportRange,\n ]\n );\n\n const [showPopup, hidePopup] = useMemo(() => {\n let popupShowing = false;\n const show = (dropTarget: MeasuredDropTarget) => {\n if (!popupShowing) {\n popupShowing = true;\n const button = dropTarget.element.querySelector(\".vuuPopupMenu\");\n if (button) {\n const evt = new MouseEvent(\"click\", {\n view: window,\n bubbles: true,\n cancelable: true,\n });\n button.dispatchEvent(evt);\n }\n }\n };\n\n const hide = (dropTarget: MeasuredDropTarget) => {\n if (popupShowing) {\n popupShowing = false;\n const button = dropTarget.element.querySelector(\".vuuPopupMenu\");\n if (button) {\n const evt = new MouseEvent(\"click\", {\n view: window,\n bubbles: true,\n cancelable: true,\n });\n button.dispatchEvent(evt);\n }\n }\n };\n\n return [show, hide];\n }, []);\n\n const drag = useCallback(\n (dragPos: number, mouseMoveDirection: \"fwd\" | \"bwd\") => {\n const { current: draggedItem } = draggedItemRef;\n\n if (draggedItem) {\n if (draggableRef.current && containerRef.current) {\n dragPosRef.current = dragPos;\n\n const { current: dropTargets } = measuredDropTargets;\n const nextDropTarget = getNextDropTarget(\n dropTargets,\n dragPos,\n mouseMoveDirection\n );\n\n if (nextDropTarget && !nextDropTarget.isDraggedItem) {\n if (nextDropTarget.isOverflowIndicator) {\n // Does this belong in here or can we abstract it out\n setShowOverflow((overflowMenuShowingRef.current = true));\n showPopup(nextDropTarget);\n } else {\n const { size } = draggedItem;\n const targetIndex = indexOf(nextDropTarget);\n\n const displaceFunc =\n targetIndex === dropTargets.length - 1\n ? displaceLastItem\n : displaceItem;\n\n displaceFunc(\n dropTargets,\n nextDropTarget,\n size,\n true,\n mouseMoveDirection,\n orientation\n );\n // setVizData?.(dropTargets, nextDropTarget, nextDropZone);\n\n const overflowIndicator = dropTargets.at(\n -1\n ) as MeasuredDropTarget;\n hidePopup(overflowIndicator);\n setShowOverflow((overflowMenuShowingRef.current = false));\n }\n }\n\n dragDirectionRef.current = mouseMoveDirection;\n }\n }\n },\n [\n containerRef,\n displaceItem,\n displaceLastItem,\n draggableRef,\n hidePopup,\n orientation,\n showPopup,\n ]\n );\n\n const drop = useCallback(() => {\n clearSpacers();\n\n const { current: dropTargets } = measuredDropTargets;\n const indexOfDraggedItem = getIndexOfDraggedItem(dropTargets);\n const draggedItem = dropTargets[indexOfDraggedItem];\n\n if (draggedItem) {\n dragDirectionRef.current = undefined;\n\n if (overflowMenuShowingRef.current) {\n onDrop(draggedItem.index, -1);\n } else {\n onDrop(draggedItem.index, indexOfDraggedItem);\n }\n }\n setShowOverflow(false);\n\n if (containerRef.current) {\n // TODO we're not catching every scenario where we need to control\n // the final scroll position here.\n const scrollTop = containerRef.current?.scrollTop;\n if (indexOfDraggedItem < dropTargets.length) {\n containerRef.current.scrollTop = scrollTop;\n }\n }\n }, [clearSpacers, containerRef, onDrop]);\n\n return {\n beginDrag,\n drag,\n drop,\n handleScrollStart,\n handleScrollStop,\n revealOverflowedItems: showOverflow,\n };\n};\n", "import { useCallback, useMemo, useRef } from \"react\";\nimport {\n MeasuredDropTarget,\n mutateDropTargetsSwitchDropTargetPosition,\n} from \"./drop-target-utils\";\nimport { createDragSpacer as createDragDisplacer } from \"./Draggable\";\nimport { Direction } from \"./dragDropTypesNext\";\n\nexport type DragDisplacersHookResult = {\n displaceItem: (\n dropTargets: MeasuredDropTarget[],\n dropTarget: MeasuredDropTarget,\n size: number,\n useTransition?: boolean,\n direction?: Direction | \"static\",\n orientation?: \"horizontal\" | \"vertical\"\n ) => void;\n displaceLastItem: (\n dropTargets: MeasuredDropTarget[],\n dropTarget: MeasuredDropTarget,\n size: number,\n useTransition?: boolean,\n direction?: Direction | \"static\",\n orientation?: \"horizontal\" | \"vertical\"\n ) => void;\n clearSpacers: () => void;\n};\n\nexport type DragDisplacersHook = () => DragDisplacersHookResult;\n/**\n * Manage a pair of displacer elements to smoothly display a moving gap between\n * list items of any kind. Designed to be used in a drag drop operation. The 'static'\n * direction option should be used at drag start or following scroll.\n */\nexport const useDragDisplacers: DragDisplacersHook = () => {\n const animationFrame = useRef(0);\n const transitioning = useRef(false);\n\n const spacers = useMemo(\n // We only need to listen for transition end on one of the spacers\n () => [createDragDisplacer(transitioning), createDragDisplacer()],\n []\n );\n\n const clearSpacers = useCallback(\n () => spacers.forEach((spacer) => spacer.remove()),\n [spacers]\n );\n\n const animateTransition = useCallback(\n (size: number, propertyName = \"width\") => {\n const [spacer1, spacer2] = spacers;\n animationFrame.current = requestAnimationFrame(() => {\n transitioning.current = true;\n spacer1.style.cssText = `${propertyName}: 0px`;\n spacer2.style.cssText = `${propertyName}: ${size}px`;\n spacers[0] = spacer2;\n spacers[1] = spacer1;\n });\n },\n [spacers]\n );\n\n const cancelAnyPendingAnimation = useCallback(() => {\n if (animationFrame.current) {\n cancelAnimationFrame(animationFrame.current);\n animationFrame.current = 0;\n }\n }, []);\n\n const displaceItem = useCallback(\n (\n dropTargets: MeasuredDropTarget[],\n dropTarget: MeasuredDropTarget,\n size: number,\n useTransition = false,\n direction: Direction | \"static\" = \"static\",\n orientation: \"horizontal\" | \"vertical\" = \"horizontal\"\n ) => {\n if (dropTarget) {\n const propertyName = orientation === \"horizontal\" ? \"width\" : \"height\";\n const [spacer1, spacer2] = spacers;\n cancelAnyPendingAnimation();\n if (useTransition) {\n if (transitioning.current) {\n clearSpacers();\n spacer1.style.cssText = `${propertyName}: ${size}px`;\n spacer2.style.cssText = `${propertyName}: 0px`;\n if (direction === \"fwd\") {\n dropTarget.element.before(spacer1);\n dropTarget.element.after(spacer2);\n } else {\n dropTarget.element.after(spacer1);\n dropTarget.element.before(spacer2);\n }\n } else {\n if (direction === \"fwd\") {\n dropTarget.element.after(spacer2);\n } else {\n dropTarget.element.before(spacer2);\n }\n }\n animateTransition(size, propertyName);\n } else if (direction === \"static\") {\n spacer1.style.cssText = `${propertyName}: ${size}px`;\n dropTarget.element.before(spacer1);\n } else {\n throw Error(\n \"useDragDisplacers currently only supports noTransition for static displacement\"\n );\n }\n if (direction !== \"static\") {\n mutateDropTargetsSwitchDropTargetPosition(dropTargets, direction);\n }\n }\n },\n [animateTransition, cancelAnyPendingAnimation, clearSpacers, spacers]\n );\n const displaceLastItem = useCallback(\n (\n dropTargets: MeasuredDropTarget[],\n dropTarget: MeasuredDropTarget,\n size: number,\n useTransition = false,\n direction: Direction | \"static\" = \"static\",\n orientation: \"horizontal\" | \"vertical\" = \"horizontal\"\n ) => {\n const propertyName = orientation === \"horizontal\" ? \"width\" : \"height\";\n const [spacer1, spacer2] = spacers;\n\n cancelAnyPendingAnimation();\n\n if (useTransition) {\n if (transitioning.current) {\n clearSpacers();\n spacer1.style.cssText = `${propertyName}: ${size}px`;\n spacer2.style.cssText = `${propertyName}: 0px`;\n dropTarget.element.before(spacer1);\n dropTarget.element.after(spacer2);\n } else {\n if (direction === \"fwd\") {\n dropTarget.element.after(spacer2);\n } else {\n dropTarget.element.before(spacer2);\n }\n }\n animateTransition(size, propertyName);\n } else {\n spacer1.style.cssText = `${propertyName}: ${size}px`;\n dropTarget.element.after(spacer1);\n }\n\n if (direction !== \"static\") {\n mutateDropTargetsSwitchDropTargetPosition(dropTargets, direction);\n }\n },\n [animateTransition, cancelAnyPendingAnimation, clearSpacers, spacers]\n );\n\n return {\n displaceItem,\n displaceLastItem,\n clearSpacers,\n };\n};\n", "import { orientationType } from \"@vuu-ui/vuu-utils\";\nimport { ViewportRange } from \"./dragDropTypesNext\";\nimport { Direction, Rect } from \"./dragDropTypesNext\";\n\nconst LEFT_RIGHT = [\"left\", \"right\"];\nconst TOP_BOTTOM = [\"top\", \"bottom\"];\n// duplicated in repsonsive\n\nexport const NOT_OVERFLOWED = \":not(.wrapped)\";\nexport const NOT_HIDDEN = ':not([aria-hidden=\"true\"])';\n\nexport type MeasuredDropTarget = {\n /** \n The index position currently occupied by this item. If draggable \n is dropped here, this will be the destination drop position.\n */\n currentIndex: number;\n dataIndex?: number;\n element: HTMLElement;\n id: string;\n index: number;\n isDraggedItem: boolean;\n isLast?: boolean;\n isOverflowIndicator?: boolean;\n start: number;\n end: number;\n mid: number;\n size: number;\n};\n\nexport type targetType = {\n element: HTMLElement | null;\n index: number;\n isLast?: boolean;\n};\n\n/** clones and removes id */\nexport const cloneElement = <T extends HTMLElement>(element: T): T => {\n const dolly = element.cloneNode(true) as T;\n // TOSO should we care about nested id values - perhaps an additional param, defaulting to false ?\n dolly.removeAttribute(\"id\");\n // Set index to -1 in case a moueMove event as we wait for drop to take effect might set highlighted\n // index to wrong value (see useList) -1 will be ignored;\n dolly.dataset.index = \"-1\";\n return dolly;\n};\n\ntype MousePosKey = keyof Pick<MouseEvent, \"clientX\" | \"clientY\">;\ntype DOMRectKey = keyof Omit<DOMRect, \"toJSON\">;\ntype DOMRectDimensionKey = keyof Pick<DOMRect, \"width\" | \"height\">;\ntype Dimension = keyof Pick<DOMRect, \"width\" | \"height\">;\ntype ElementDimension = keyof Pick<\n HTMLElement,\n | \"scrollHeight\"\n | \"scrollWidth\"\n | \"clientHeight\"\n | \"clientWidth\"\n | \"scrollTop\"\n | \"scrollLeft\"\n>;\n\ntype ElementPosition = \"x\" | \"y\";\n\nexport const measureElementSizeAndPosition = (\n element: HTMLElement,\n dimension: Dimension = \"width\",\n includeAutoMargin = false\n) => {\n const pos = dimension === \"width\" ? \"left\" : \"top\";\n const { [dimension]: size, [pos]: position } =\n element.getBoundingClientRect();\n const { padEnd = false, padStart = false } = element.dataset;\n const style = getComputedStyle(element);\n const [start, end] = dimension === \"width\" ? LEFT_RIGHT : TOP_BOTTOM;\n const marginStart =\n padStart && !includeAutoMargin\n ? 0\n : parseInt(style.getPropertyValue(`margin-${start}`), 10);\n const marginEnd =\n padEnd && !includeAutoMargin\n ? 0\n : parseInt(style.getPropertyValue(`margin-${end}`), 10);\n\n let minWidth = size;\n const flexShrink = parseInt(style.getPropertyValue(\"flex-shrink\"), 10);\n if (flexShrink > 0) {\n const flexBasis = parseInt(style.getPropertyValue(\"flex-basis\"), 10);\n if (!isNaN(flexBasis) && flexBasis > 0) {\n minWidth = flexBasis;\n }\n }\n return [position, marginStart + minWidth + marginEnd];\n};\n\nconst DIMENSIONS = {\n horizontal: {\n CLIENT_POS: \"clientX\" as MousePosKey,\n CLIENT_SIZE: \"clientWidth\" as ElementDimension,\n CONTRA: \"top\" as DOMRectKey,\n CONTRA_CLIENT_POS: \"clientY\" as MousePosKey,\n CONTRA_END: \"bottom\" as DOMRectDimensionKey,\n CONTRA_POS: \"y\" as ElementPosition,\n DIMENSION: \"width\" as DOMRectDimensionKey,\n END: \"right\" as DOMRectKey,\n POS: \"x\" as ElementPosition,\n SCROLL_POS: \"scrollLeft\" as ElementDimension,\n SCROLL_SIZE: \"scrollWidth\" as ElementDimension,\n START: \"left\" as DOMRectKey,\n },\n vertical: {\n CLIENT_POS: \"clientY\" as MousePosKey,\n CLIENT_SIZE: \"clientHeight\" as ElementDimension,\n CONTRA: \"left\" as DOMRectKey,\n CONTRA_CLIENT_POS: \"clientX\" as MousePosKey,\n CONTRA_END: \"right\" as DOMRectDimensionKey,\n CONTRA_POS: \"x\" as ElementPosition,\n DIMENSION: \"height\" as DOMRectDimensionKey,\n END: \"bottom\" as DOMRectKey,\n POS: \"y\" as ElementPosition,\n SCROLL_POS: \"scrollTop\" as ElementDimension,\n SCROLL_SIZE: \"scrollHeight\" as ElementDimension,\n START: \"top\" as DOMRectKey,\n },\n};\nexport const dimensions = (orientation: orientationType) =>\n DIMENSIONS[orientation];\n\nexport const getItemById = (\n measuredItems: MeasuredDropTarget[],\n id: string\n) => {\n const result = measuredItems.find((item) => item.id === id);\n if (result) {\n return result;\n }\n // else {\n // throw Error(`measuredItems do not contain an item with id #${id}`);\n // }\n};\n\nexport const removeDraggedItem = (\n measuredItems: MeasuredDropTarget[],\n index: number\n) => {\n measuredItems.splice(index, 1);\n for (let i = index; i < measuredItems.length; i++) {\n measuredItems[i].currentIndex -= 1;\n }\n};\n\nexport type dropZone = \"start\" | \"end\";\n\nexport const measureDropTargets = (\n container: HTMLElement,\n orientation: orientationType,\n itemQuery?: string,\n viewportRange?: ViewportRange,\n draggedItemId?: string\n) => {\n const dragThresholds: MeasuredDropTarget[] = [];\n const { DIMENSION } = dimensions(orientation);\n const children = Array.from(\n itemQuery ? container.querySelectorAll(itemQuery) : container.children\n );\n\n const itemCount = children.length;\n const start =\n typeof viewportRange?.from === \"number\"\n ? viewportRange.atEnd\n ? Math.max(0, viewportRange.from - 1)\n : viewportRange.from\n : 0;\n const end =\n typeof viewportRange?.to === \"number\"\n ? Math.min(viewportRange.to + 2, itemCount - 1)\n : itemCount - 1;\n for (let index = start; index <= end; index++) {\n const element = children[index] as HTMLElement;\n const [start, size] = measureElementSizeAndPosition(element, DIMENSION);\n const isLast = index === itemCount - 1;\n const id = element.id;\n\n const dataIndex = parseInt(element.dataset.index ?? \"-1\");\n\n dragThresholds.push({\n currentIndex: index,\n dataIndex: isNaN(dataIndex) ? -1 : dataIndex,\n id,\n index,\n isDraggedItem: draggedItemId === id,\n isLast,\n isOverflowIndicator: element.dataset.index === \"overflow\",\n element: element as HTMLElement,\n start,\n end: start + size,\n size,\n mid: start + size / 2,\n });\n }\n return dragThresholds;\n};\n\nexport const getIndexOfDraggedItem = (dropTargets: MeasuredDropTarget[]) =>\n dropTargets.findIndex((d) => d.isDraggedItem);\n\n// As the draggedItem is moved, displacing existing items, mirror\n// the movements within the dropTargets collection\nexport const mutateDropTargetsSwitchDropTargetPosition = (\n dropTargets: MeasuredDropTarget[],\n direction: Direction\n) => {\n // console.log(`switchDropTargetPosition\n // direction: ${direction} ${dropTargetsDebugString(dropTargets)}`);\n\n const indexOfDraggedItem = getIndexOfDraggedItem(dropTargets);\n const indexOfTarget =\n direction === \"fwd\" ? indexOfDraggedItem + 1 : indexOfDraggedItem - 1;\n\n if (indexOfTarget < 0 || indexOfTarget >= dropTargets.length) {\n throw Error(\"switchDropTargetPosition index out of range\");\n }\n\n const draggedItem = dropTargets.at(indexOfDraggedItem) as MeasuredDropTarget;\n const targetItem = dropTargets.at(indexOfTarget) as MeasuredDropTarget;\n\n const diff = targetItem.size - draggedItem.size;\n\n if (direction === \"fwd\") {\n const draggedStart = targetItem.start + diff;\n const draggedEnd = targetItem.end;\n\n const newDraggedItem = {\n ...draggedItem,\n start: draggedStart,\n mid: Math.floor(draggedStart + (draggedEnd - draggedStart) / 2),\n end: draggedEnd,\n } as MeasuredDropTarget;\n\n const targetStart = draggedItem.start;\n const targetEnd = draggedItem.end + diff;\n\n const newTargetItem = {\n ...targetItem,\n start: targetStart,\n mid: Math.floor(targetStart + (targetEnd - targetStart) / 2),\n end: targetEnd,\n } as MeasuredDropTarget;\n dropTargets.splice(indexOfDraggedItem, 2, newTargetItem, newDraggedItem);\n } else {\n const draggedStart = targetItem.start;\n const draggedEnd = targetItem.end - diff;\n\n const newDraggedItem = {\n ...draggedItem,\n start: draggedStart,\n mid: Math.floor(draggedStart + (draggedEnd - draggedStart) / 2),\n end: draggedEnd,\n } as MeasuredDropTarget;\n\n const targetStart = draggedItem.start - diff;\n const targetEnd = draggedItem.end;\n\n const newTargetItem = {\n ...targetItem,\n start: targetStart,\n mid: Math.floor(targetStart + (targetEnd - targetStart) / 2),\n end: targetEnd,\n } as MeasuredDropTarget;\n dropTargets.splice(indexOfTarget, 2, newDraggedItem, newTargetItem);\n }\n\n // console.log(`${direction} ${dropTargetsDebugString(dropTargets)}`);\n};\n\nexport const getNextDropTarget = (\n dropTargets: MeasuredDropTarget[],\n pos: number,\n mouseMoveDirection: Direction\n): MeasuredDropTarget => {\n const len = dropTargets.length;\n const indexOfDraggedItem = getIndexOfDraggedItem(dropTargets);\n const draggedItem = dropTargets[indexOfDraggedItem];\n\n if (mouseMoveDirection === \"fwd\") {\n const leadingEdge = Math.round(pos + draggedItem.size);\n for (let index = len - 1; index >= 0; index--) {\n const dropTarget = dropTargets[index];\n if (leadingEdge > dropTarget.mid) {\n if (index < indexOfDraggedItem) {\n return draggedItem;\n } else {\n return dropTarget;\n }\n }\n }\n } else {\n const leadingEdge = Math.round(pos);\n for (let index = 0; index < len; index++) {\n const dropTarget = dropTargets[index];\n if (leadingEdge < dropTarget.mid) {\n if (index > indexOfDraggedItem) {\n return draggedItem;\n } else {\n return dropTarget;\n }\n }\n }\n }\n throw Error(\"no dropTraget identified\");\n};\n\n/**\n * An item within a scrollable container might have a width or height greater than that of\n * the container. If we drag such an item, we don't want the draggable to be larger than\n * the container.\n */\nexport function constrainRect(targetRect: Rect, constraintRect: Rect): Rect {\n const { height, left, top, width } = targetRect;\n const { height: constrainedHeight, width: constrainedWidth } = constraintRect;\n return {\n height: Math.min(height, constrainedHeight),\n left,\n top,\n width: Math.min(width, constrainedWidth),\n };\n}\n\nexport const moveItem = <T = unknown>(\n items: T[],\n fromIndex: number,\n toIndex: number\n): T[] => {\n if (fromIndex === toIndex) {\n return items;\n } else {\n const newItems = items.slice();\n const [item] = newItems.splice(fromIndex, 1);\n if (toIndex === -1) {\n return newItems.concat(item);\n } else {\n const offset = toIndex > fromIndex ? 0 : 0;\n newItems.splice(toIndex + offset, 0, item);\n return newItems;\n }\n }\n};\n\nexport const dropTargetsDebugString = (dropTargets: MeasuredDropTarget[]) =>\n dropTargets\n .map(\n (d, i) =>\n `\\n${d.isDraggedItem ? \"*\" : \" \"}[${i}] width : ${Math.floor(\n d.size\n )} ${Math.floor(d.start)} - ${Math.floor(d.end)} (mid ${Math.floor(\n d.mid\n )})`\n )\n .join(\"\");\n", "import { useForkRef } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport {\n CSSProperties,\n forwardRef,\n MutableRefObject,\n TransitionEventHandler,\n useCallback,\n} from \"react\";\nimport { Portal } from \"@vuu-ui/vuu-popups\";\n\nimport \"./Draggable.css\";\n\nconst makeClassNames = (classNames: string) =>\n classNames.split(\" \").map((className) => `vuuDraggable-${className}`);\nexport const Draggable = forwardRef<\n HTMLDivElement,\n {\n wrapperClassName: string;\n element: HTMLElement;\n onTransitionEnd?: TransitionEventHandler;\n scale?: number;\n style: CSSProperties;\n }\n>(function Draggable(\n { wrapperClassName, element, onTransitionEnd, style, scale = 1 },\n forwardedRef\n) {\n const callbackRef = useCallback(\n (el: HTMLDivElement) => {\n if (el) {\n el.innerHTML = \"\";\n el.appendChild(element);\n if (scale !== 1) {\n el.style.transform = `scale(${scale},${scale})`;\n }\n }\n },\n [element, scale]\n );\n const forkedRef = useForkRef<HTMLDivElement>(forwardedRef, callbackRef);\n\n return (\n <Portal>\n <div\n className={clsx(\"vuuDraggable\", ...makeClassNames(wrapperClassName))}\n ref={forkedRef}\n onTransitionEnd={onTransitionEnd}\n style={style}\n />\n </Portal>\n );\n});\n\n// const colors = [\"black\", \"red\", \"green\", \"yellow\"];\n// let color_idx = 0;\nexport const createDragSpacer = (\n transitioning?: MutableRefObject<boolean>\n): HTMLElement => {\n // const idx = color_idx++ % 4;\n\n const spacer = document.createElement(\"div\");\n spacer.className = \"vuuDraggable-spacer\";\n if (transitioning) {\n spacer.addEventListener(\"transitionend\", () => {\n transitioning.current = false;\n });\n }\n return spacer;\n};\n\nexport const createDropIndicatorPosition = (): HTMLElement => {\n const spacer = document.createElement(\"div\");\n spacer.className = \"vuuDraggable-dropIndicatorPosition\";\n return spacer;\n};\n\nexport const createDropIndicator = (\n transitioning?: MutableRefObject<boolean>\n): HTMLElement => {\n // const idx = color_idx++ % 4;\n const spacer = document.createElement(\"div\");\n spacer.className = \"vuuDraggable-dropIndicator\";\n if (transitioning) {\n spacer.addEventListener(\"transitionend\", () => {\n transitioning.current = false;\n });\n }\n return spacer;\n};\n", "function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;", "import { useCallback, useRef, useState } from \"react\";\n\nimport {\n InternalDragDropProps,\n InternalDragHookResult,\n Direction,\n ViewportRange,\n} from \"./dragDropTypesNext\";\nimport { useDropIndicator } from \"./useDropIndicator\";\n\nimport {\n dimensions,\n getItemById,\n MeasuredDropTarget,\n measureDropTargets,\n getNextDropTarget,\n dropZone,\n removeDraggedItem,\n} from \"./drop-target-utils\";\n\nimport { createDropIndicator, Draggable } from \"./Draggable\";\n\nconst NOT_OVERFLOWED = ':not([data-overflowed=\"true\"])';\nconst NOT_HIDDEN = ':not([aria-hidden=\"true\"])';\n\nexport const useDragDropIndicator = ({\n draggableRef,\n onDrop,\n orientation = \"horizontal\",\n containerRef,\n itemQuery = \"*\",\n selected,\n viewportRange,\n}: InternalDragDropProps): InternalDragHookResult => {\n const dragDirectionRef = useRef<Direction | undefined>();\n const dropIndicatorRef = useRef<HTMLDivElement>(null);\n const dropTargetRef = useRef<MeasuredDropTarget | null>(null);\n const dropZoneRef = useRef<dropZone | \"\">(\"\");\n const isScrollable = useRef(false);\n /** current position of dragged element */\n const dragPosRef = useRef<number>(-1);\n const measuredDropTargets = useRef<MeasuredDropTarget[]>([]);\n const overflowMenuShowingRef = useRef(false);\n\n const [showOverflow, setShowOverflow] = useState(false);\n const [dropIndicator, setDropIndicator] = useState<JSX.Element | undefined>();\n\n const { clearSpacer, positionDropIndicator } = useDropIndicator();\n\n const draggedItemRef = useRef<MeasuredDropTarget>();\n const fullItemQuery = `:is(${itemQuery}${NOT_OVERFLOWED}${NOT_HIDDEN},[data-overflow-indicator])`;\n\n // const { setMeasurements: setVizData } = useListViz();\n\n const indexOf = (dropTarget: MeasuredDropTarget) =>\n measuredDropTargets.current.findIndex((d) => d.id === dropTarget.id);\n\n const reposition = (\n dropTarget: MeasuredDropTarget,\n distance: number,\n indexShift?: number\n ) => {\n dropTarget.start += distance;\n dropTarget.mid += distance;\n dropTarget.end += distance;\n if (typeof indexShift === \"number\") {\n dropTarget.currentIndex += indexShift;\n }\n };\n\n // Shouldn't need this - but viewportRange is always stale in stopScrolling. Checked all dependencies\n // look ok. Something to do with setTimeout / scrollHandler ?\n const rangeRef = useRef<ViewportRange>();\n rangeRef.current = viewportRange;\n\n const handleScrollStart = useCallback(() => {\n clearSpacer();\n }, [clearSpacer]);\n\n const handleScrollStop = useCallback(\n (scrollDirection: \"fwd\" | \"bwd\", _scrollPos: number, atEnd: boolean) => {\n const { current: container } = containerRef;\n const { current: draggedItem } = draggedItemRef;\n if (container && draggedItem) {\n measuredDropTargets.current = measureDropTargets(\n container,\n orientation,\n fullItemQuery,\n rangeRef.current\n );\n // setVizData(measuredDropTargets.current);\n\n const { size } = draggedItem;\n const dragPos = dragPosRef.current;\n const midPos = dragPos + size / 2;\n const { current: dropTargets } = measuredDropTargets;\n const nextDropTarget = getNextDropTarget(dropTargets, midPos, \"fwd\");\n if (nextDropTarget) {\n if (atEnd && scrollDirection === \"fwd\") {\n positionDropIndicator(dropTargets[dropTargets.length - 1], \"start\");\n } else {\n positionDropIndicator(nextDropTarget, \"start\");\n }\n }\n\n // setVizData(measuredDropTargets.current, nextDropTarget);\n }\n },\n [\n containerRef,\n positionDropIndicator,\n fullItemQuery,\n orientation,\n // setVizData,\n ]\n );\n\n const beginDrag = useCallback(\n (evt: MouseEvent) => {\n const evtTarget = evt.target as HTMLElement;\n const dragElement = evtTarget.closest(itemQuery) as HTMLElement;\n if (\n dragElement.ariaSelected &&\n Array.isArray(selected) &&\n selected.length > 1\n ) {\n console.log(\"its a selected element, and we have a multi select\");\n }\n const { current: container } = containerRef;\n if (container && dragElement) {\n const { SCROLL_SIZE, CLIENT_SIZE } = dimensions(orientation);\n const { id: draggedItemId } = dragElement;\n\n const { [SCROLL_SIZE]: scrollSize, [CLIENT_SIZE]: clientSize } =\n container;\n isScrollable.current = scrollSize > clientSize;\n\n const dropTargets = (measuredDropTargets.current = measureDropTargets(\n container,\n orientation,\n fullItemQuery,\n viewportRange\n ));\n\n const draggedItem = getItemById(dropTargets, draggedItemId);\n\n if (draggedItem && container) {\n const targetIndex = indexOf(draggedItem);\n removeDraggedItem(dropTargets, targetIndex);\n draggedItemRef.current = draggedItem;\n\n // This begins to deviate from NaturalMovement here -----------\n const { current: range } = rangeRef;\n //TODO when our viewport is the last 'page' of a scrolling viewport\n // the viewport will scoll up by one row when we remove an item, so\n // the position of each item will move down.\n if (range?.atEnd) {\n for (let i = 0; i < dropTargets.length; i++) {\n reposition(dropTargets[i], draggedItem.size);\n }\n }\n for (let i = targetIndex; i < dropTargets.length; i++) {\n reposition(dropTargets[i], -draggedItem.size, -1);\n }\n\n const [dropTarget, dropZone] = draggedItem.isLast\n ? [dropTargets[dropTargets.length - 1], \"end\"]\n : [dropTargets[targetIndex], \"start\"];\n\n dropTargetRef.current = dropTarget;\n dropZoneRef.current = dropZone as dropZone;\n\n // setVizData(dropTargets, dropTarget, dropZone);\n\n const dropIndicatorPosition = positionDropIndicator(\n dropTarget,\n dropZone as dropZone\n );\n\n const { top, left, width } =\n dropIndicatorPosition.getBoundingClientRect();\n // Next render will remove the dragged item, that will offset our initial\n // dropIndicatorPosition\n const dropIndicatorRect = {\n top: draggedItem.isLast\n ? range?.atEnd && !range.atStart\n ? top + draggedItem.size - 2\n : top - 2\n : top - draggedItem.size - 2,\n left,\n width,\n height: 2,\n };\n\n setDropIndicator(\n <Draggable\n wrapperClassName=\"dropIndicatorContainer\"\n style={dropIndicatorRect}\n ref={dropIndicatorRef}\n element={createDropIndicator()}\n />\n );\n }\n }\n },\n [\n itemQuery,\n selected,\n containerRef,\n orientation,\n fullItemQuery,\n viewportRange,\n // setVizData,\n positionDropIndicator,\n ]\n );\n\n const drag = useCallback(\n (dragPos: number, mouseMoveDirection: \"fwd\" | \"bwd\") => {\n const { current: currentDropTarget } = dropTargetRef;\n const { current: draggedItem } = draggedItemRef;\n\n if (draggedItem) {\n if (draggableRef.current && containerRef.current) {\n const START = orientation === \"horizontal\" ? \"left\" : \"top\";\n dragPosRef.current = dragPos;\n\n const { current: dropTargets } = measuredDropTargets;\n const nextDropTarget = getNextDropTarget(\n dropTargets,\n dragPos,\n mouseMoveDirection\n );\n\n if (\n nextDropTarget &&\n nextDropTarget.index !== currentDropTarget?.index\n // mouseMoveDirection !== dragDirectionRef.current\n ) {\n if (nextDropTarget.isOverflowIndicator) {\n // Does this belong in here or can we abstract it out\n setShowOverflow((overflowMenuShowingRef.current = true));\n } else if (dropIndicatorRef.current) {\n const targetIndex = indexOf(nextDropTarget);\n if (targetIndex === dropTargets.length - 1) {\n // because we maintain at least one out-of-viewport row in\n // the dropTargets, this means we are at the very last item.\n const dropTarget = dropTargets[dropTargets.length - 1];\n const dropIndicatorPosition = positionDropIndicator(\n dropTarget,\n \"start\"\n );\n const dropIndicatorRect =\n dropIndicatorPosition.getBoundingClientRect();\n dropIndicatorRef.current.style[\n START\n ] = `${dropIndicatorRect.top}px`;\n } else {\n const dropIndicatorPosition = positionDropIndicator(\n nextDropTarget,\n \"start\"\n ) as unknown as HTMLElement;\n const dropIndicatorRect =\n dropIndicatorPosition.getBoundingClientRect();\n dropIndicatorRef.current.style[\n START\n ] = `${dropIndicatorRect.top}px`;\n }\n // setVizData(dropTargets, nextDropTarget, nextDropZone);\n\n setShowOverflow((overflowMenuShowingRef.current = false));\n }\n\n dropTargetRef.current = nextDropTarget;\n dragDirectionRef.current = mouseMoveDirection;\n }\n }\n }\n },\n [draggableRef, containerRef, orientation, positionDropIndicator]\n );\n\n const drop = useCallback(() => {\n clearSpacer();\n const { current: draggedItem } = draggedItemRef;\n const { current: dropTarget } = dropTargetRef;\n const { current: dropZone } = dropZoneRef;\n const { current: range } = rangeRef;\n\n if (draggedItem && range && dropTarget) {\n const { index: fromIndex } = draggedItem;\n\n const dropBefore = dropZone === \"start\";\n const {\n index: originalDropTargetIndex,\n currentIndex: currentDropTargetIndex,\n } = dropTarget;\n\n dropTargetRef.current = null;\n dragDirectionRef.current = undefined;\n\n //TODO why is this different from Natural Movement ?\n if (overflowMenuShowingRef.current) {\n onDrop(fromIndex, -1);\n } else {\n if (fromIndex < originalDropTargetIndex) {\n onDrop(\n fromIndex,\n dropBefore ? currentDropTargetIndex : currentDropTargetIndex + 1\n );\n } else {\n onDrop(\n fromIndex,\n dropBefore ? originalDropTargetIndex : originalDropTargetIndex + 1\n );\n }\n }\n setDropIndicator(undefined);\n }\n setShowOverflow(false);\n }, [clearSpacer, onDrop]);\n\n return {\n beginDrag,\n drag,\n drop,\n dropIndicator,\n handleScrollStart,\n handleScrollStop,\n revealOverflowedItems: showOverflow,\n };\n};\n", "import { useCallback, useMemo } from \"react\";\nimport { dropZone, MeasuredDropTarget } from \"./drop-target-utils\";\nimport { createDropIndicatorPosition } from \"./Draggable\";\n\nexport const SPACER_SIZE = 0;\n\nexport type DropIndicatorHookResult = {\n positionDropIndicator: (\n dropTarget: MeasuredDropTarget,\n dropZone: dropZone\n ) => HTMLElement;\n clearSpacer: () => void;\n};\n\nexport type DropIndicatorHook = () => DropIndicatorHookResult;\n\nexport const useDropIndicator: DropIndicatorHook = () => {\n const spacer = useMemo(() => createDropIndicatorPosition(), []);\n const clearSpacer = useCallback(() => spacer.remove(), [spacer]);\n const positionDropIndicator = useCallback(\n (dropTarget: MeasuredDropTarget, dropZone: \"start\" | \"end\" = \"end\") => {\n if (dropZone === \"end\") {\n dropTarget.element.after(spacer);\n } else {\n dropTarget.element.before(spacer);\n }\n return spacer;\n },\n [spacer]\n );\n\n return {\n positionDropIndicator,\n clearSpacer,\n };\n};\n", "import {\n DragDropHook,\n InternalDragDropProps,\n InternalDragHookResult,\n MouseOffset,\n} from \"./dragDropTypesNext\";\nimport { useDragDropNaturalMovement } from \"./useDragDropNaturalMovementNext\";\nimport { useDragDropIndicator } from \"./useDragDropIndicator\";\nimport { useDragDropProvider } from \"./DragDropProvider\";\nimport {\n MouseEventHandler,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport {\n cloneElement,\n constrainRect,\n dimensions,\n NOT_OVERFLOWED,\n} from \"./drop-target-utils\";\nimport { useAutoScroll, ScrollStopHandler } from \"./useAutoScroll\";\nimport { Draggable } from \"./Draggable\";\n\nconst NULL_DRAG_DROP_RESULT = {\n beginDrag: () => undefined,\n drag: () => undefined,\n draggableRef: { current: null },\n drop: () => undefined,\n isDragging: false,\n isScrolling: false,\n handleScrollStart: () => undefined,\n handleScrollStop: () => undefined,\n revealOverflowedItems: false,\n};\n\ntype DraggableStatus = {\n draggable?: JSX.Element;\n draggedItemIndex: number;\n isDragging: boolean;\n};\n\ntype DragBoundary = {\n start: number;\n end: number;\n contraStart: number;\n contraEnd: number;\n};\n\nconst UNBOUNDED: DragBoundary = {\n start: 0,\n end: 1000,\n contraStart: 0,\n contraEnd: 1000,\n};\n\ntype InternalHook = (props: InternalDragDropProps) => InternalDragHookResult;\nconst noDragDrop: InternalHook = () => NULL_DRAG_DROP_RESULT;\nconst dragThreshold = 3;\n\nconst getDraggableElement = (\n el: EventTarget | null,\n query: string\n): HTMLElement => (el as HTMLElement).closest(query) as HTMLElement;\n\nconst isOverflowElement = (element: HTMLElement) =>\n element.dataset.index === \"overflow\" &&\n element.parentElement !== null &&\n element.parentElement.classList.contains(\"overflowed\");\n\nconst getLastElement = (\n container: HTMLElement,\n itemQuery: string\n): [HTMLElement, boolean] => {\n const fullItemQuery = `:is(${itemQuery}${NOT_OVERFLOWED},.vuuOverflowContainer-OverflowIndicator)`;\n const childElements = Array.from(container.querySelectorAll(fullItemQuery));\n const lastElement = childElements.pop() as HTMLElement;\n return [lastElement, isOverflowElement(lastElement)];\n};\n\nexport const useDragDropNext: DragDropHook = ({\n allowDragDrop,\n containerRef,\n draggableClassName,\n itemQuery = \"*\",\n onDragStart,\n onDrop,\n onDropSettle,\n orientation,\n ...dragDropProps\n}) => {\n const dragBoundaries = useRef<DragBoundary>({\n start: 0,\n end: 0,\n contraStart: 0,\n contraEnd: 0,\n });\n const [draggableStatus, setDraggableStatus] = useState<DraggableStatus>({\n draggable: undefined,\n draggedItemIndex: -1,\n isDragging: false,\n });\n // A ref to the draggable element\n const draggableRef = useRef<HTMLDivElement>(null);\n const dragElementRef = useRef<HTMLElement>();\n const mouseDownTimer = useRef<number | null>(null);\n /** do we actually have scrollable content */\n const isScrollableRef = useRef(false);\n /** Distance between start (top | left) of dragged element and point where user pressed to drag */\n const mouseOffsetRef = useRef<MouseOffset>({ x: 0, y: 0 });\n /** current mouse position */\n const mousePosRef = useRef<MouseOffset>({ x: 0, y: 0 });\n /** mouse position when mousedown initiated drag */\n const startPosRef = useRef<MouseOffset>({ x: 0, y: 0 });\n /** references the dragged Item during its final 'settling' phase post drop */\n const settlingItemRef = useRef<HTMLDivElement | null>(null);\n\n const dropPosRef = useRef(-1);\n const dropIndexRef = useRef(-1);\n\n const handleScrollStopRef = useRef<ScrollStopHandler>();\n\n const { isDragSource, isDropTarget, register } = useDragDropProvider(\n dragDropProps.id\n );\n\n if (dragDropProps.id && (isDragSource || isDropTarget)) {\n register(dragDropProps.id);\n }\n\n const terminateDrag = useCallback(() => {\n const { current: toIndex } = dropIndexRef;\n const droppedItem = containerRef.current?.querySelector(\n `${itemQuery}[data-index=\"${toIndex}\"]`\n );\n if (droppedItem) {\n droppedItem.classList.remove(\"vuuDropTarget-settling\");\n }\n\n dropIndexRef.current = -1;\n onDropSettle?.(toIndex);\n setDraggableStatus((status) => ({\n ...status,\n draggable: undefined,\n }));\n }, [containerRef, itemQuery, onDropSettle]);\n\n const getScrollDirection = useCallback(\n (mousePos: number) => {\n if (containerRef.current) {\n const { POS, SCROLL_POS, SCROLL_SIZE, CLIENT_SIZE } =\n dimensions(orientation);\n const {\n [SCROLL_POS]: scrollPos,\n [SCROLL_SIZE]: scrollSize,\n [CLIENT_SIZE]: clientSize,\n } = containerRef.current;\n\n const maxScroll = scrollSize - clientSize;\n const canScrollFwd = scrollPos < maxScroll;\n const viewportEnd = dragBoundaries.current.end;\n const bwd =\n scrollPos > 0 &&\n mousePos - mouseOffsetRef.current[POS] <=\n dragBoundaries.current.start;\n const fwd =\n canScrollFwd && mousePos - mouseOffsetRef.current[POS] >= viewportEnd;\n return bwd ? \"bwd\" : fwd ? \"fwd\" : \"\";\n }\n },\n [containerRef, orientation]\n );\n\n const useDragDropHook: InternalHook =\n allowDragDrop === true || allowDragDrop === \"natural-movement\"\n ? useDragDropNaturalMovement\n : allowDragDrop === \"drop-indicator\"\n ? useDragDropIndicator\n : noDragDrop;\n\n const onScrollingStopped = useCallback(\n (scrollDirection: \"fwd\" | \"bwd\", scrollPos: number, atEnd: boolean) => {\n handleScrollStopRef.current?.(scrollDirection, scrollPos, atEnd);\n },\n []\n );\n\n const { isScrolling, startScrolling, stopScrolling } = useAutoScroll({\n containerRef,\n onScrollingStopped,\n orientation,\n });\n\n const handleDrop = useCallback(\n (fromIndex: number, toIndex: number) => {\n //TODO why do we need both this and dropIndexRef ?\n dropPosRef.current = toIndex;\n onDrop?.(fromIndex, toIndex);\n dropIndexRef.current = toIndex;\n },\n [onDrop]\n );\n\n const {\n beginDrag,\n drag,\n drop,\n handleScrollStart,\n handleScrollStop,\n ...dragResult\n } = useDragDropHook({\n ...dragDropProps,\n containerRef,\n draggableRef,\n isDragSource,\n isDropTarget,\n itemQuery,\n onDrop: handleDrop,\n orientation,\n });\n // To avoid circular ref between hooks\n handleScrollStopRef.current = handleScrollStop;\n\n const dragMouseMoveHandler = useCallback(\n (evt: MouseEvent) => {\n const { CLIENT_POS, CONTRA_CLIENT_POS, CONTRA_POS, POS } =\n dimensions(orientation);\n const { clientX, clientY } = evt;\n const { [CLIENT_POS]: clientPos, [CONTRA_CLIENT_POS]: clientContraPos } =\n evt;\n const lastClientPos = mousePosRef.current[POS];\n const lastClientContraPos = mousePosRef.current[CONTRA_POS];\n\n const dragDistance = Math.abs(lastClientPos - clientPos);\n const dragOutDistance = isDragSource\n ? Math.abs(lastClientContraPos - clientContraPos)\n : 0;\n\n if (dragOutDistance - dragDistance > 5) {\n // remove the drag boundaries\n dragBoundaries.current = UNBOUNDED;\n // Need to notify the dragDropHook, so it can clearSpacers\n // and begin tracking draggable coordinates for entry into a droptarget\n }\n\n mousePosRef.current.x = clientX;\n mousePosRef.current.y = clientY;\n\n if (dragBoundaries.current === UNBOUNDED && draggableRef.current) {\n const dragPosX = mousePosRef.current.x - mouseOffsetRef.current.x;\n const dragPosY = mousePosRef.current.y - mouseOffsetRef.current.y;\n draggableRef.current.style.top = `${dragPosY}px`;\n draggableRef.current.style.left = `${dragPosX}px`;\n } else if (dragDistance > 0 && draggableRef.current) {\n const mouseMoveDirection = lastClientPos < clientPos ? \"fwd\" : \"bwd\";\n const scrollDirection = getScrollDirection(clientPos);\n const dragPos = mousePosRef.current[POS] - mouseOffsetRef.current[POS];\n\n if (\n scrollDirection &&\n isScrollableRef.current &&\n !isScrolling.current\n ) {\n handleScrollStart();\n startScrolling(scrollDirection, 1);\n } else if (!scrollDirection && isScrolling.current) {\n stopScrolling();\n }\n\n if (!isScrolling.current) {\n const renderDragPos = Math.round(\n Math.max(\n dragBoundaries.current.start,\n Math.min(dragBoundaries.current.end, dragPos)\n )\n );\n const START = orientation === \"horizontal\" ? \"left\" : \"top\";\n draggableRef.current.style[START] = `${renderDragPos}px`;\n drag(renderDragPos, mouseMoveDirection);\n }\n }\n },\n [\n drag,\n draggableRef,\n getScrollDirection,\n handleScrollStart,\n isDragSource,\n isScrolling,\n orientation,\n startScrolling,\n stopScrolling,\n ]\n );\n const dragMouseUpHandler = useCallback(() => {\n document.removeEventListener(\"mousemove\", dragMouseMoveHandler, false);\n document.removeEventListener(\"mouseup\", dragMouseUpHandler, false);\n settlingItemRef.current = draggableRef.current;\n // The implementation hook is currently invoking the onDrop callback, we should move it into here\n drop();\n setDraggableStatus((status) => ({\n ...status,\n draggedItemIndex: -1,\n isDragging: false,\n }));\n dragElementRef.current = undefined;\n }, [dragMouseMoveHandler, draggableRef, drop]);\n\n const dragStart = useCallback(\n (evt: MouseEvent) => {\n const { clientX, clientY, target } = evt;\n const dragElement = getDraggableElement(target, itemQuery);\n const { current: container } = containerRef;\n if (container && dragElement) {\n const {\n CONTRA,\n CONTRA_END,\n DIMENSION,\n END,\n SCROLL_SIZE,\n CLIENT_SIZE,\n START,\n } = dimensions(orientation);\n\n dragElementRef.current = dragElement;\n const { [SCROLL_SIZE]: scrollSize, [CLIENT_SIZE]: clientSize } =\n container;\n isScrollableRef.current = scrollSize > clientSize;\n\n const [lastElement, lastItemIsOverflowIndicator] = getLastElement(\n container,\n itemQuery\n );\n\n const containerRect = container.getBoundingClientRect();\n const draggableRect = dragElement.getBoundingClientRect();\n const draggableSize = draggableRect[DIMENSION];\n const { [START]: lastItemStart, [END]: lastItemEnd } =\n lastElement.getBoundingClientRect();\n\n mouseOffsetRef.current.x = clientX - draggableRect.left;\n mouseOffsetRef.current.y = clientY - draggableRect.top;\n\n dragBoundaries.current.start = containerRect[START];\n dragBoundaries.current.end = lastItemIsOverflowIndicator\n ? Math.max(lastItemStart, containerRect.right - draggableSize)\n : isScrollableRef.current\n ? containerRect[START] + containerRect[DIMENSION] - draggableSize\n : lastItemEnd - draggableSize;\n dragBoundaries.current.contraStart = containerRect[CONTRA];\n dragBoundaries.current.contraEnd = containerRect[CONTRA_END];\n\n beginDrag(evt);\n\n const {\n dataset: { index = \"-1\" },\n } = dragElement;\n\n setDraggableStatus({\n isDragging: true,\n draggable: (\n <Draggable\n element={cloneElement(dragElement)}\n onTransitionEnd={terminateDrag}\n ref={draggableRef}\n style={constrainRect(draggableRect, containerRect)}\n wrapperClassName={draggableClassName}\n />\n ),\n draggedItemIndex: parseInt(index),\n });\n\n onDragStart?.();\n\n document.addEventListener(\"mousemove\", dragMouseMoveHandler, false);\n document.addEventListener(\"mouseup\", dragMouseUpHandler, false);\n }\n },\n [\n beginDrag,\n containerRef,\n dragMouseMoveHandler,\n dragMouseUpHandler,\n draggableClassName,\n draggableRef,\n itemQuery,\n onDragStart,\n orientation,\n terminateDrag,\n ]\n );\n\n const preDragMouseMoveHandler = useCallback(\n (evt: MouseEvent) => {\n const { CLIENT_POS, POS } = dimensions(orientation);\n const { [CLIENT_POS]: clientPos } = evt;\n const mouseMoveDistance = Math.abs(clientPos - startPosRef.current[POS]);\n if (mouseMoveDistance > dragThreshold && containerRef.current) {\n if (mouseDownTimer.current) {\n window.clearTimeout(mouseDownTimer.current);\n mouseDownTimer.current = null;\n }\n document.removeEventListener(\"mousemove\", preDragMouseMoveHandler);\n document.removeEventListener(\"mouseup\", preDragMouseUpHandler, false);\n dragStart(evt);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [containerRef, beginDrag, orientation]\n );\n\n const preDragMouseUpHandler = useCallback(() => {\n if (mouseDownTimer.current) {\n window.clearTimeout(mouseDownTimer.current);\n mouseDownTimer.current = null;\n }\n document.removeEventListener(\"mousemove\", preDragMouseMoveHandler, false);\n document.removeEventListener(\"mouseup\", preDragMouseUpHandler, false);\n }, [preDragMouseMoveHandler]);\n\n const mouseDownHandler: MouseEventHandler = useCallback(\n (evt) => {\n console.log(`useDragDropNext onMouseDown`);\n const { current: container } = containerRef;\n if (container && !evt.defaultPrevented) {\n const { clientX, clientY } = evt;\n mousePosRef.current.x = startPosRef.current.x = clientX;\n mousePosRef.current.y = startPosRef.current.y = clientY;\n\n document.addEventListener(\"mousemove\", preDragMouseMoveHandler, false);\n document.addEventListener(\"mouseup\", preDragMouseUpHandler, false);\n\n evt.persist();\n\n mouseDownTimer.current = window.setTimeout(() => {\n document.removeEventListener(\n \"mousemove\",\n preDragMouseMoveHandler,\n false\n );\n document.removeEventListener(\"mouseup\", preDragMouseUpHandler, false);\n dragStart(evt.nativeEvent);\n }, 500);\n }\n },\n [containerRef, dragStart, preDragMouseMoveHandler, preDragMouseUpHandler]\n );\n\n const { current: settlingItem } = settlingItemRef;\n useLayoutEffect(() => {\n if (settlingItem && containerRef.current) {\n const dropPos = dropPosRef.current;\n const droppedItem = containerRef.current.querySelector(\n `${itemQuery}[data-index=\"${dropPos}\"]`\n );\n if (droppedItem) {\n droppedItem.classList.add(\"vuuDropTarget-settling\");\n requestAnimationFrame(() => {\n const { top: targetTop, left: targetLeft } =\n droppedItem.getBoundingClientRect();\n const { top: currentTop, left: currentLeft } =\n settlingItem.getBoundingClientRect();\n // If the droppedItem is already exactly in the drop position, we can just\n // terminate the drag here and now. Most likely, though, it is out by a few\n // pixels. We animate the dragged item into the final resting place before\n // terminating the drag.\n if (currentLeft !== targetLeft || currentTop !== targetTop) {\n settlingItem.classList.add(\"vuuDraggable-settling\");\n settlingItem.style.top = `${targetTop}px`;\n settlingItem.style.left = `${targetLeft}px`;\n } else {\n terminateDrag();\n }\n });\n } else {\n console.log(`dont have the dropped item (at ${dropPos})`);\n }\n settlingItemRef.current = null;\n }\n }, [containerRef, itemQuery, settlingItem, terminateDrag]);\n\n return {\n ...dragResult,\n ...draggableStatus,\n isScrolling,\n onMouseDown: allowDragDrop ? mouseDownHandler : undefined,\n };\n};\n", "import { RefObject, useCallback, useRef } from \"react\";\nimport { dimensions } from \"./drop-target-utils\";\n\nexport type ScrollStopHandler = (\n scrollDirection: \"fwd\" | \"bwd\",\n scrollPos: number,\n atEnd: boolean\n) => void;\n\nexport const useAutoScroll = ({\n containerRef,\n onScrollingStopped,\n orientation = \"vertical\",\n}: {\n containerRef: RefObject<HTMLElement>;\n onScrollingStopped?: ScrollStopHandler;\n orientation?: \"horizontal\" | \"vertical\";\n}) => {\n const scrollTimer = useRef<number | null>(null);\n const isScrolling = useRef(false);\n const scrollPosRef = useRef(0);\n const lastScrollDirectionRef = useRef<\"fwd\" | \"bwd\">(\"fwd\");\n\n const stopScrolling = useCallback(\n (atEnd = false) => {\n console.log(\"[useAutoScroll] stopScrolling\");\n if (scrollTimer.current !== null) {\n clearTimeout(scrollTimer.current);\n scrollTimer.current = null;\n }\n isScrolling.current = false;\n onScrollingStopped?.(\n lastScrollDirectionRef.current,\n scrollPosRef.current,\n atEnd\n );\n },\n [onScrollingStopped]\n );\n\n const startScrolling = useCallback(\n (direction: \"fwd\" | \"bwd\", scrollRate: number, scrollUnit = 30) => {\n const { current: container } = containerRef;\n if (container) {\n const { SCROLL_POS, SCROLL_SIZE, CLIENT_SIZE } =\n dimensions(orientation);\n const {\n [SCROLL_POS]: scrollPos,\n [SCROLL_SIZE]: scrollSize,\n [CLIENT_SIZE]: clientSize,\n } = container;\n const maxScroll =\n direction === \"fwd\" ? scrollSize - clientSize - scrollPos : scrollPos;\n const nextScroll = Math.min(maxScroll, scrollUnit);\n\n if (direction === \"fwd\") {\n lastScrollDirectionRef.current = \"fwd\";\n container[SCROLL_POS as \"scrollTop\" | \"scrollLeft\"] =\n scrollPosRef.current = scrollPos + nextScroll;\n } else {\n lastScrollDirectionRef.current = \"bwd\";\n container[SCROLL_POS as \"scrollTop\" | \"scrollLeft\"] =\n scrollPosRef.current = scrollPos - nextScroll;\n }\n\n if (nextScroll === maxScroll) {\n stopScrolling(true);\n } else {\n isScrolling.current = true;\n scrollTimer.current = window.setTimeout(() => {\n startScrolling(direction, scrollRate, scrollUnit);\n }, 100);\n }\n }\n },\n [containerRef, orientation, stopScrolling]\n );\n\n return {\n isScrolling,\n startScrolling,\n stopScrolling,\n };\n};\n", "import { clsx } from \"clsx\";\nimport {\n ChangeEvent,\n KeyboardEvent,\n useCallback,\n useLayoutEffect,\n forwardRef,\n ForwardedRef,\n ReactElement,\n useRef,\n HTMLAttributes,\n} from \"react\";\nimport { Input, useControlled } from \"@salt-ds/core\";\n\nimport \"./EditableLabel.css\";\n\nconst classBase = \"vuuEditableLabel\";\n\nexport interface EditableLabelProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n className?: string;\n defaultEditing?: boolean;\n defaultValue?: string;\n editing?: boolean;\n onEnterEditMode: () => void;\n onChange?: (value: string) => void;\n onExitEditMode: (\n originalLabel: string | undefined,\n editedLabel: string | undefined,\n allowDeactivation?: boolean,\n editCancelled?: boolean\n ) => void;\n defaultIsEditing?: boolean;\n value?: string;\n}\n\nexport const EditableLabel = forwardRef(function EditableLabel(\n {\n className: classNameProp,\n defaultEditing,\n defaultValue,\n editing: editingProp,\n onChange,\n onEnterEditMode,\n onExitEditMode,\n value: valueProp,\n ...restProps\n }: EditableLabelProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n): ReactElement<EditableLabelProps> {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const editingRef = useRef<boolean>(false);\n\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValue ?? \"\",\n name: \"EditableLabel\",\n state: \"value\",\n });\n\n const [editing, _setEditing] = useControlled({\n controlled: editingProp,\n default: defaultEditing ?? false,\n name: \"EditableLabel\",\n state: \"editing\",\n });\n\n const setEditing = useCallback((value: boolean) => {\n _setEditing((editingRef.current = value));\n }, []);\n\n const initialValue = useRef(value);\n\n useLayoutEffect(() => {\n if (editing) {\n if (inputRef.current !== null) {\n inputRef.current.select();\n inputRef.current.focus();\n }\n }\n }, [editing, inputRef]);\n\n const enterEditMode = useCallback(() => {\n setEditing(true);\n // ignoreBlur.current = false;\n onEnterEditMode && onEnterEditMode();\n }, [onEnterEditMode, setEditing]);\n\n const exitEditMode = ({\n cancelEdit = false,\n allowDeactivation = false,\n } = {}) => {\n setEditing(false);\n const originalValue = initialValue.current;\n if (originalValue !== value) {\n if (cancelEdit) {\n setValue(originalValue);\n } else {\n initialValue.current = value;\n }\n }\n onExitEditMode &&\n onExitEditMode(originalValue, value, allowDeactivation, cancelEdit);\n };\n\n const handleChange = (evt: ChangeEvent<HTMLInputElement>) => {\n const { value } = evt.target;\n setValue(value);\n onChange && onChange(value);\n };\n\n const handleDoubleClick = () => {\n enterEditMode();\n };\n\n // We need the ref here as the blur fires before setEditing has taken effect,\n // so we get a double call to exitEditMode if edit is cancelled.\n const handleBlur = () => {\n if (editingRef.current) {\n exitEditMode({ allowDeactivation: true });\n }\n };\n\n const handleKeyDown = (evt: KeyboardEvent<HTMLInputElement>) => {\n if (editing && evt.key === \"Enter\") {\n evt.stopPropagation();\n // we are likely to lose focus as a consequence of user response\n // to exitEdit transition, don't want it to trigger another\n //shouldn't we call setEditing here in case we are in uncontrolled mode ?\n exitEditMode();\n } else if (evt.key === \"ArrowRight\" || evt.key === \"ArrowLeft\") {\n evt.stopPropagation();\n } else if (evt.key === \"Escape\") {\n exitEditMode({ cancelEdit: true });\n }\n };\n\n const className = clsx(classBase, classNameProp, {\n [`${classBase}-editing`]: editing,\n });\n return (\n <div\n {...restProps}\n className={className}\n onDoubleClick={handleDoubleClick}\n data-text={value}\n ref={forwardedRef}\n >\n {editing ? (\n <Input\n inputProps={{ className: `${classBase}-input` }}\n value={value}\n onBlur={handleBlur}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n inputRef={inputRef}\n style={{ padding: 0 }}\n textAlign=\"left\"\n variant=\"secondary\"\n />\n ) : (\n value\n )}\n </div>\n );\n});\n", "import { asReactElements, OverflowContainer, useId } from \"@vuu-ui/vuu-layout\";\nimport { Button } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport React, { useMemo, useRef } from \"react\";\nimport { TabProps, TabstripProps } from \"./TabsTypes\";\nimport { useTabstrip } from \"./useTabstrip\";\n\nimport \"./Tabstrip.css\";\n\nconst classBase = \"vuuTabstrip\";\n\nexport const Tabstrip = ({\n activeTabIndex: activeTabIndexProp,\n allowAddTab,\n allowCloseTab,\n allowDragDrop = false,\n allowRenameTab = false,\n animateSelectionThumb = false,\n children,\n className: classNameProp,\n id: idProp,\n keyBoardActivation = \"manual\",\n location,\n onActiveChange,\n onAddTab,\n onCloseTab,\n onExitEditMode,\n onMoveTab,\n orientation = \"horizontal\",\n showTabMenuButton,\n style: styleProp,\n ...htmlAttributes\n}: TabstripProps) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const {\n activeTabIndex,\n focusVisible,\n containerStyle,\n draggedItemIndex,\n onClickAddTab,\n tabProps,\n ...tabstripHook\n } = useTabstrip({\n activeTabIndex: activeTabIndexProp,\n allowDragDrop,\n animateSelectionThumb,\n containerRef: rootRef,\n keyBoardActivation,\n onActiveChange,\n onAddTab,\n onCloseTab,\n onExitEditMode,\n onMoveTab,\n orientation,\n });\n\n const id = useId(idProp);\n const className = cx(classBase, `${classBase}-${orientation}`, classNameProp);\n const style =\n styleProp || containerStyle\n ? {\n ...styleProp,\n ...containerStyle,\n }\n : undefined;\n\n const tabs = useMemo(\n () =>\n asReactElements(children)\n .map((child, index) => {\n const {\n id: tabId = `${id}-tab-${index}`,\n closeable = allowCloseTab,\n editable = allowRenameTab,\n showMenuButton = showTabMenuButton,\n } = child.props;\n const selected = index === activeTabIndex;\n return React.cloneElement(child, {\n ...tabProps,\n ...tabstripHook.navigationProps,\n closeable,\n \"data-overflow-priority\": selected ? \"1\" : undefined,\n dragging: draggedItemIndex === index,\n editable,\n focusVisible: focusVisible === index,\n id: tabId,\n index,\n key: index,\n location,\n selected,\n showMenuButton,\n tabIndex: selected ? 0 : -1,\n } as Partial<TabProps>);\n })\n .concat(\n allowAddTab ? (\n <Button\n {...tabstripHook.navigationProps}\n aria-label=\"Create Tab\"\n className={`${classBase}-addTabButton`}\n data-icon=\"add\"\n data-overflow-priority=\"1\"\n key=\"addButton\"\n onClick={onClickAddTab}\n variant=\"secondary\"\n tabIndex={-1}\n />\n ) : (\n []\n )\n ),\n [\n activeTabIndex,\n allowAddTab,\n allowCloseTab,\n allowRenameTab,\n children,\n focusVisible,\n id,\n location,\n onClickAddTab,\n showTabMenuButton,\n tabProps,\n draggedItemIndex,\n tabstripHook.navigationProps,\n ]\n );\n\n return (\n <>\n <OverflowContainer\n {...htmlAttributes}\n {...tabstripHook.containerProps}\n className={className}\n height={28}\n id={id}\n orientation={orientation}\n overflowIcon=\"more-horiz\"\n ref={rootRef}\n style={style}\n >\n {tabs}\n </OverflowContainer>\n {tabstripHook.draggable}\n </>\n );\n};\n", "import type { MenuActionHandler } from \"@vuu-ui/vuu-data-types\";\nimport type { OverflowItem } from \"@vuu-ui/vuu-layout\";\nimport type { orientationType } from \"@vuu-ui/vuu-utils\";\nimport {\n KeyboardEvent,\n MouseEvent as ReactMouseEvent,\n RefObject,\n useCallback,\n useRef,\n} from \"react\";\nimport { useDragDropNext as useDragDrop } from \"../drag-drop\";\nimport { isTabMenuOptions } from \"./TabMenuOptions\";\nimport { getIndexOfSelectedTab } from \"./tabstrip-dom-utils\";\nimport { useAnimatedSelectionThumb } from \"./useAnimatedSelectionThumb\";\nimport { useKeyboardNavigation } from \"./useKeyboardNavigation\";\nimport { useSelection } from \"./useSelection\";\n\nexport type ExitEditModeHandler = (\n originalValue: string,\n editedValue: string,\n allowDeactivation: boolean,\n tabIndex: number\n) => void;\n\nexport interface TabstripHookProps {\n activeTabIndex: number;\n allowDragDrop: boolean;\n animateSelectionThumb: boolean;\n containerRef: RefObject<HTMLElement>;\n onActiveChange?: (tabIndex: number) => void;\n onAddTab?: () => void;\n onCloseTab?: (tabIndex: number, newActiveTabIndex: number) => void;\n onExitEditMode?: ExitEditModeHandler;\n onMoveTab?: (fromIndex: number, toIndex: number) => void;\n orientation: orientationType;\n keyBoardActivation?: \"manual\" | \"automatic\";\n}\n\nconst editKeys = new Set([\"Enter\", \" \"]);\nconst isEditKey = (key: string) => editKeys.has(key);\n\nconst getElementWithIndex = (container: HTMLElement | null, index: number) => {\n if (container) {\n return container.querySelector(`[data-index=\"${index}\"]`) as HTMLElement;\n } else {\n return null;\n }\n};\n\nexport const useTabstrip = ({\n activeTabIndex: activeTabIndexProp,\n allowDragDrop,\n animateSelectionThumb,\n containerRef,\n onActiveChange,\n onAddTab,\n onCloseTab,\n onExitEditMode,\n onMoveTab,\n orientation,\n keyBoardActivation,\n}: TabstripHookProps) => {\n const lastSelection = useRef(activeTabIndexProp);\n\n const {\n focusTab: keyboardHookFocusTab,\n highlightedIdx,\n onClick: keyboardHookHandleClick,\n onKeyDown: keyboardHookHandleKeyDown,\n setHighlightedIdx: keyboardHookSetHighlightedIndex,\n ...keyboardHook\n } = useKeyboardNavigation({\n containerRef,\n keyBoardActivation,\n orientation,\n selectedIndex: lastSelection.current,\n });\n\n const {\n activateTab: selectionHookActivateTab,\n onClick: selectionHookHandleClick,\n onKeyDown: selectionHookHandleKeyDown,\n selected: selectionHookSelected,\n } = useSelection({\n highlightedIdx,\n onSelectionChange: onActiveChange,\n selected: activeTabIndexProp,\n });\n // We need this on reEntry for navigation hook to handle focus and for dragDropHook\n // to re-apply selection after drag drop. For some reason the value is stale if we\n // directly use selectionHookSelected within the drag, even though all dependencies\n //appear to be correctly declared.\n lastSelection.current = selectionHookSelected;\n\n const { containerStyle, resumeAnimation, suspendAnimation } =\n useAnimatedSelectionThumb(\n containerRef,\n animateSelectionThumb ? selectionHookSelected : -1,\n orientation\n );\n\n const handleDrop = useCallback(\n (fromIndex: number, toIndex: number) => {\n const { current: selected } = lastSelection;\n console.log(\n `useTabstrip handleDrop ${fromIndex} - ${toIndex} ${selected}`\n );\n onMoveTab?.(fromIndex, toIndex);\n let nextSelectedTab = -1;\n if (toIndex !== -1) {\n if (selected === fromIndex) {\n nextSelectedTab = toIndex;\n } else if (fromIndex > selected && toIndex <= selected) {\n nextSelectedTab = selected + 1;\n } else if (fromIndex < selected && toIndex >= selected) {\n nextSelectedTab = selected - 1;\n }\n if (nextSelectedTab !== -1) {\n suspendAnimation();\n selectionHookActivateTab(nextSelectedTab);\n requestAnimationFrame(resumeAnimation);\n }\n keyboardHookFocusTab(toIndex, false, false, 350);\n }\n },\n [\n keyboardHookFocusTab,\n onMoveTab,\n resumeAnimation,\n selectionHookActivateTab,\n suspendAnimation,\n ]\n );\n\n const { onMouseDown: dragDropHookHandleMouseDown, ...dragDropHook } =\n useDragDrop({\n allowDragDrop,\n containerRef,\n // this is for useDragDropNext\n draggableClassName: `tabstrip-${orientation}`,\n // extendedDropZone: overflowedItems.length > 0,\n onDrop: handleDrop,\n orientation: \"horizontal\",\n itemQuery: \".vuuOverflowContainer-item\",\n });\n\n const handleExitEditMode = useCallback<ExitEditModeHandler>(\n (originalValue, editedValue, allowDeactivation, tabIndex) => {\n console.log(\n `handleExitEditMode ${originalValue} ${editedValue} ${allowDeactivation} ${tabIndex}`\n );\n onExitEditMode?.(originalValue, editedValue, allowDeactivation, tabIndex);\n if (!allowDeactivation) {\n // this indicates that Enter or Esc key has been pressed, hence we\n // want to make sure keyboardHook treats this as a keyboard event\n // (and applies focusVisible). The last parameter here does that.\n keyboardHookFocusTab(tabIndex, false, true);\n }\n },\n [keyboardHookFocusTab, onExitEditMode]\n );\n\n const handleClick = useCallback(\n (evt: ReactMouseEvent<HTMLElement>, tabIndex: number) => {\n // releasing the mouse at end of drag will trigger a click, ignore those\n // if (!dragDropHook.isDragging) {\n keyboardHookHandleClick(evt, tabIndex);\n selectionHookHandleClick(evt, tabIndex);\n // }\n },\n // [dragDropHook.isDragging, keyboardHook, selectionHook]\n [keyboardHookHandleClick, selectionHookHandleClick]\n );\n\n const getEditableLabel = useCallback(\n (tabIndex = highlightedIdx) => {\n const targetEl = getElementWithIndex(containerRef.current, tabIndex);\n if (targetEl) {\n return targetEl.querySelector(\".vuuEditableLabel\") as HTMLElement;\n }\n },\n [containerRef, highlightedIdx]\n );\n\n const tabInEditMode = useCallback(\n (tabIndex = highlightedIdx) => {\n const editableLabel = getEditableLabel(tabIndex);\n if (editableLabel) {\n return editableLabel.classList.contains(\"vuuEditableLabel-editing\");\n }\n return false;\n },\n [getEditableLabel, highlightedIdx]\n );\n\n const editTab = useCallback(\n (tabIndex = highlightedIdx) => {\n const editableLabelEl = getEditableLabel(tabIndex);\n if (editableLabelEl) {\n const evt = new MouseEvent(\"dblclick\", {\n view: window,\n bubbles: true,\n cancelable: true,\n });\n editableLabelEl.dispatchEvent(evt);\n }\n },\n [getEditableLabel, highlightedIdx]\n );\n\n const handleKeyDown = useCallback(\n (evt: KeyboardEvent) => {\n keyboardHookHandleKeyDown(evt);\n if (!evt.defaultPrevented) {\n selectionHookHandleKeyDown(evt);\n }\n if (!evt.defaultPrevented && isEditKey(evt.key)) {\n editTab();\n }\n },\n [editTab, keyboardHookHandleKeyDown, selectionHookHandleKeyDown]\n );\n\n const handleCloseTabFromMenu = useCallback(\n (tabIndex: number) => {\n const selectedTabIndex = getIndexOfSelectedTab(containerRef.current);\n const newActiveTabIndex =\n selectedTabIndex > tabIndex\n ? selectedTabIndex - 1\n : selectedTabIndex === tabIndex\n ? 0\n : selectedTabIndex;\n suspendAnimation();\n // containerRef.current?.classList.add(\"vuuTabThumb-noTransition\");\n onCloseTab?.(tabIndex, newActiveTabIndex);\n setTimeout(() => {\n resumeAnimation();\n // containerRef.current?.classList.remove(\"vuuTabThumb-noTransition\");\n }, 200);\n return true;\n },\n [containerRef, onCloseTab, resumeAnimation, suspendAnimation]\n );\n\n const handleRenameTabFromMenu = useCallback(\n (tabIndex: number) => {\n editTab(tabIndex);\n return true;\n },\n [editTab]\n );\n\n const handleTabMenuAction = useCallback<MenuActionHandler>(\n (action) => {\n if (isTabMenuOptions(action.options)) {\n switch (action.menuId) {\n case \"close-tab\":\n return handleCloseTabFromMenu(action.options.tabIndex);\n case \"rename-tab\":\n return handleRenameTabFromMenu(action.options.tabIndex);\n default:\n console.log(`tab menu action ${action.menuId}`);\n }\n }\n return false;\n },\n [handleCloseTabFromMenu, handleRenameTabFromMenu]\n );\n\n //TODO( why do we sometimes see this fired twice eg following rename)\n const handleTabMenuClose = useCallback(() => {\n if (!tabInEditMode()) {\n keyboardHookFocusTab(highlightedIdx);\n } else {\n keyboardHookSetHighlightedIndex(highlightedIdx);\n }\n }, [\n highlightedIdx,\n keyboardHookFocusTab,\n keyboardHookSetHighlightedIndex,\n tabInEditMode,\n ]);\n\n const onSwitchWrappedItemIntoView = useCallback(\n (item: OverflowItem) => {\n const index = parseInt(item.index);\n if (!isNaN(index)) {\n selectionHookActivateTab(index);\n }\n },\n [selectionHookActivateTab]\n );\n\n const navigationProps = {\n onFocus: keyboardHook.onFocus,\n onKeyDown: handleKeyDown,\n };\n\n const handleAddTabClick = useCallback(() => {\n onAddTab?.();\n requestAnimationFrame(() => {\n const selectedTabIndex = getIndexOfSelectedTab(containerRef.current);\n if (selectedTabIndex !== -1) {\n keyboardHookFocusTab(selectedTabIndex);\n }\n });\n }, [containerRef, keyboardHookFocusTab, onAddTab]);\n\n const tabProps = {\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onExitEditMode: handleExitEditMode,\n onMenuAction: handleTabMenuAction,\n onMenuClose: handleTabMenuClose,\n onMouseDown: dragDropHookHandleMouseDown,\n };\n\n return {\n activeTabIndex: selectionHookSelected,\n containerStyle,\n focusVisible: keyboardHook.focusVisible,\n containerProps: {\n ...keyboardHook.containerProps,\n onSwitchWrappedItemIntoView,\n },\n navigationProps,\n onClickAddTab: handleAddTabClick,\n tabProps,\n ...dragDropHook,\n };\n};\n", "import { ContextMenuItemDescriptor } from \"packages/vuu-data-types\";\n\nexport type MenuOptions = { [key: string]: unknown };\n\nexport interface TabMenuOptions {\n tabIndex: number;\n}\n\nexport const isTabMenuOptions = (options: unknown): options is TabMenuOptions =>\n typeof options === \"object\" &&\n options !== null &&\n \"tabIndex\" in options &&\n typeof options.tabIndex === \"number\";\n\nexport const closeCommand = (options?: MenuOptions) =>\n ({\n label: `Close`,\n location: \"tab\",\n action: `close-tab`,\n options,\n } as ContextMenuItemDescriptor);\n\nexport const renameCommand = (options?: MenuOptions) =>\n ({\n label: `Rename`,\n location: \"tab\",\n action: `rename-tab`,\n options,\n } as ContextMenuItemDescriptor);\n", "export const getElementIndex = (el: HTMLElement | null) => {\n if (el) {\n const index = parseInt(el.dataset.index || \"\");\n if (!isNaN(index)) {\n return index;\n }\n }\n return -1;\n};\n\nconst getIndexOfItem = (container: HTMLElement | null, query: string) => {\n if (container) {\n const targetTab = container.querySelector(\n `[data-index]:has(${query})`\n ) as HTMLElement;\n return getElementIndex(targetTab);\n }\n return -1;\n};\n\nexport const getIndexOfSelectedTab = (container: HTMLElement | null) =>\n getIndexOfItem(container, '[aria-selected=\"true\"]');\n\nexport const getIndexOfEditedItem = (container: HTMLElement | null) =>\n getIndexOfItem(container, \".vuuEditableLabel-editing\");\n", "import { isValidNumber, MEASURES, orientationType } from \"@vuu-ui/vuu-utils\";\nimport { CSSProperties, RefObject, useCallback, useMemo, useRef } from \"react\";\n\nexport const useAnimatedSelectionThumb = (\n containerRef: RefObject<HTMLElement>,\n activeTabIndex: number,\n orientation: orientationType = \"horizontal\"\n) => {\n const animationSuspendedRef = useRef(false);\n const suspendAnimation = useCallback(() => {\n animationSuspendedRef.current = true;\n }, []);\n\n const resumeAnimation = useCallback(() => {\n animationSuspendedRef.current = false;\n }, []);\n\n const onTransitionEnd = useCallback(() => {\n containerRef.current?.style.setProperty(\"--tab-thumb-transition\", \"none\");\n containerRef.current?.removeEventListener(\"transitionend\", onTransitionEnd);\n }, [containerRef]);\n const lastSelectedRef = useRef(-1);\n return useMemo(() => {\n let offset = 0;\n let size = 0;\n if (lastSelectedRef.current !== -1) {\n const oldSelected =\n containerRef.current?.querySelector(\".vuuTab-selected\");\n const newSelected = containerRef.current?.querySelector(\n `[data-index=\"${activeTabIndex}\"] .vuuTab`\n );\n const { positionProp, sizeProp } = MEASURES[orientation];\n if (oldSelected && newSelected && !animationSuspendedRef.current) {\n const { [positionProp]: oldPosition, [sizeProp]: oldSize } =\n oldSelected.getBoundingClientRect();\n const { [positionProp]: newPosition } =\n newSelected.getBoundingClientRect();\n if (\n isValidNumber(oldPosition) &&\n isValidNumber(newPosition) &&\n isValidNumber(oldSize)\n ) {\n console.log({ orientation, positionProp, oldPosition, newPosition });\n offset = oldPosition - newPosition;\n size = oldSize;\n const speed = orientation === \"horizontal\" ? 1100 : 700;\n const duration = Math.abs(offset / speed);\n requestAnimationFrame(() => {\n containerRef.current?.style.setProperty(\n \"--tab-thumb-offset\",\n \"0px\"\n );\n containerRef.current?.style.setProperty(\"--tab-thumb-size\", \"100%\");\n containerRef.current?.style.setProperty(\n \"--tab-thumb-transition\",\n `all ${duration}s ease`\n );\n containerRef.current?.addEventListener(\n \"transitionend\",\n onTransitionEnd\n );\n });\n }\n }\n }\n lastSelectedRef.current = activeTabIndex;\n if (animationSuspendedRef.current) {\n return {\n containerStyle: {\n \"--tab-thumb-offset\": \"0px\",\n \"--tab-thumb-size\": \"100%\",\n } as CSSProperties,\n resumeAnimation,\n suspendAnimation,\n };\n } else {\n return {\n containerStyle: {\n \"--tab-thumb-offset\": `${offset}px`,\n \"--tab-thumb-size\": size ? `${size}px` : undefined,\n } as CSSProperties,\n resumeAnimation,\n suspendAnimation,\n };\n }\n }, [\n activeTabIndex,\n containerRef,\n orientation,\n onTransitionEnd,\n resumeAnimation,\n suspendAnimation,\n ]);\n};\n", "import { useControlled } from \"@salt-ds/core\";\nimport { getFocusableElement, orientationType } from \"@vuu-ui/vuu-utils\";\nimport {\n FocusEvent,\n FocusEventHandler,\n KeyboardEvent,\n MouseEvent as ReactMouseEvent,\n MouseEventHandler,\n RefObject,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport {\n ArrowDown,\n ArrowUp,\n ArrowLeft,\n ArrowRight,\n Home,\n End,\n} from \"@vuu-ui/vuu-utils\";\nimport { getIndexOfEditedItem } from \"./tabstrip-dom-utils\";\n\ntype directionType = \"bwd\" | \"fwd\" | \"start\" | \"end\";\ntype directionMap = { [key: string]: directionType };\nconst navigation = {\n horizontal: {\n [Home]: \"start\",\n [End]: \"end\",\n [ArrowLeft]: \"bwd\",\n [ArrowRight]: \"fwd\",\n } as directionMap,\n vertical: {\n [Home]: \"start\",\n [End]: \"end\",\n [ArrowUp]: \"bwd\",\n [ArrowDown]: \"fwd\",\n } as directionMap,\n};\n\nconst isNavigationKey = (\n key: string,\n orientation: orientationType = \"horizontal\"\n) => navigation[orientation][key] !== undefined;\n\nconst isMenuActivationKey = (key: string) => key === ArrowDown;\n\nfunction nextItemIdx(count: number, direction: directionType, idx: number) {\n if (direction === \"start\") {\n return 0;\n } else if (direction === \"end\") {\n return count - 1;\n } else if (direction === \"bwd\") {\n if (idx > 0) {\n return idx - 1;\n } else {\n return idx;\n }\n } else {\n if (idx === null) {\n return 0;\n } else if (idx === count - 1) {\n return idx;\n } else {\n return idx + 1;\n }\n }\n}\n\nconst isNonWrappedElement = (element: HTMLElement | null) =>\n element !== null && !element.classList.contains(\"wrapped\");\n\nconst getElementByPosition = (container: HTMLElement | null, index: number) =>\n container\n ? (container.querySelector(`[data-index=\"${index}\"]`) as HTMLElement)\n : null;\n\nexport interface ContainerNavigationProps {\n onBlur: FocusEventHandler;\n onFocus: FocusEventHandler;\n onMouseDownCapture: MouseEventHandler;\n onMouseLeave: MouseEventHandler;\n}\n\ninterface TabstripNavigationHookProps {\n containerRef: RefObject<HTMLElement>;\n defaultHighlightedIdx?: number;\n highlightedIdx?: number;\n keyBoardActivation?: \"manual\" | \"automatic\";\n orientation: orientationType;\n selectedIndex: number | null;\n}\n\ninterface TabstripNavigationHookResult {\n containerProps: ContainerNavigationProps;\n highlightedIdx: number;\n focusTab: (\n tabIndex: number,\n immediateFocus?: boolean,\n withKeyboard?: boolean,\n delay?: number\n ) => void;\n focusVisible: number;\n focusIsWithinComponent: boolean;\n onClick: (evt: ReactMouseEvent, tabIndex: number) => void;\n onFocus: (evt: FocusEvent<HTMLElement>) => void;\n onKeyDown: (evt: KeyboardEvent) => void;\n setHighlightedIdx: (highlightedIndex: number) => void;\n}\n\nexport const useKeyboardNavigation = ({\n containerRef,\n defaultHighlightedIdx = -1,\n highlightedIdx: highlightedIdxProp,\n keyBoardActivation,\n orientation,\n selectedIndex: selectedTabIndex = 0,\n}: TabstripNavigationHookProps): TabstripNavigationHookResult => {\n const manualActivation = keyBoardActivation === \"manual\";\n const mouseClickPending = useRef(false);\n const focusedRef = useRef<number>(-1);\n const [hasFocus, setHasFocus] = useState(false);\n const [, forceRefresh] = useState({});\n const [highlightedIdx, _setHighlightedIdx] = useControlled({\n controlled: highlightedIdxProp,\n default: defaultHighlightedIdx,\n name: \"UseKeyboardNavigation\",\n });\n\n const setHighlightedIdx = useCallback(\n (value: number) => {\n _setHighlightedIdx((focusedRef.current = value));\n },\n [_setHighlightedIdx]\n );\n\n const keyboardNavigation = useRef(false);\n\n const focusTab = useCallback(\n (\n tabIndex: number,\n immediateFocus = false,\n withKeyboard?: boolean,\n delay = 70\n ) => {\n // The timeout is important in two scenarios:\n // 1) where tab has overflowed and is being selected from overflow menu.\n // We must not focus it until the overflow mechanism + render has restored\n // it to the main display.\n // 2) when we are focussing a new tab\n // We MUST NOT delay focus when using keyboard nav, else when focus moves from\n // close button (focus ring styled by :focus-visible) to Tab label (focus ring\n // styled by css class) focus style will briefly linger on both.\n setHighlightedIdx(tabIndex);\n\n if (withKeyboard === true && !keyboardNavigation.current) {\n keyboardNavigation.current = true;\n }\n\n const setFocus = () => {\n const element = getElementByPosition(containerRef.current, tabIndex);\n if (element) {\n const focussableElement = getFocusableElement(element);\n focussableElement?.focus();\n }\n };\n if (immediateFocus) {\n setFocus();\n } else {\n setTimeout(setFocus, delay);\n }\n },\n [containerRef, setHighlightedIdx]\n );\n\n const onFocus = (e: FocusEvent<HTMLElement>) => {\n // If focus is received by keyboard navigation, item with tabindex 0 will receive\n // focus. If the item receiving focus has tabindex -1, then focus has been set\n // programatically. We must respect this and not reset focus to selected tab.\n if (focusedRef.current === -1) {\n // Focus is entering tabstrip. Assume keyboard - if it'a actually mouse-driven,\n // the click event will have set correct value.\n if (e.target.tabIndex === -1) {\n // Do nothing, assume focus is being passed back to button by closing dialog. Might need\n // to revisit this and add code here if we may get focus set programatically in other ways.\n } else {\n const index = getIndexOfEditedItem(containerRef.current);\n if (index !== -1) {\n requestAnimationFrame(() => {\n setHighlightedIdx(index);\n });\n } else {\n setTimeout(() => {\n // The selected tab will have tabIndex 0 make sure our internal state is aligned.\n if (focusedRef.current === -1 && selectedTabIndex !== null) {\n setHighlightedIdx(selectedTabIndex);\n }\n }, 200);\n }\n }\n }\n };\n\n const getIndexCount = useCallback(\n () => containerRef.current?.querySelectorAll(`[data-index]`).length ?? 0,\n [containerRef]\n );\n\n const nextFocusableItemIdx = useCallback(\n (direction: directionType = \"fwd\", idx?: number) => {\n const indexCount = getIndexCount();\n const index = typeof idx === \"number\" ? idx : indexCount;\n\n let nextIdx = nextItemIdx(indexCount, direction, index);\n const nextDirection =\n direction === \"start\" ? \"fwd\" : direction === \"end\" ? \"bwd\" : direction;\n while (\n ((nextDirection === \"fwd\" && nextIdx < indexCount) ||\n (nextDirection === \"bwd\" && nextIdx > 0)) &&\n !isNonWrappedElement(\n getElementByPosition(containerRef.current, nextIdx)\n )\n ) {\n const newIdx = nextItemIdx(indexCount, nextDirection, nextIdx);\n if (newIdx === nextIdx) {\n break;\n } else {\n nextIdx = newIdx;\n }\n }\n return nextIdx;\n },\n [containerRef, getIndexCount]\n );\n\n // forceFocusVisible supports an edge case - first or last Tab are clicked\n // then Left or Right Arrow keys are pressed, There will be no navigation\n // but focusVisible must be applied\n const navigateChildItems = useCallback(\n (e: React.KeyboardEvent, forceFocusVisible = false) => {\n const direction = navigation[orientation][e.key];\n const nextIdx = nextFocusableItemIdx(direction, highlightedIdx);\n if (nextIdx !== highlightedIdx) {\n const immediateFocus = true;\n if (manualActivation) {\n focusTab(nextIdx, immediateFocus);\n } else {\n // activateTab(newTabIndex);\n }\n } else if (forceFocusVisible) {\n forceRefresh({});\n }\n },\n [\n highlightedIdx,\n manualActivation,\n nextFocusableItemIdx,\n focusTab,\n orientation,\n ]\n );\n\n const highlightedTabHasMenu = useCallback(() => {\n const el = getElementByPosition(containerRef.current, highlightedIdx);\n if (el) {\n return el.querySelector(\".vuuPopupMenu\") != null;\n }\n return false;\n }, [containerRef, highlightedIdx]);\n\n const activateTabMenu = useCallback(() => {\n const el = getElementByPosition(containerRef.current, highlightedIdx);\n const menuEl = el?.querySelector(\".vuuPopupMenu\") as HTMLElement;\n if (menuEl) {\n const evt = new MouseEvent(\"click\", {\n view: window,\n bubbles: true,\n cancelable: true,\n });\n menuEl.dispatchEvent(evt);\n }\n return false;\n }, [containerRef, highlightedIdx]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (getIndexCount() > 0 && isNavigationKey(e.key, orientation)) {\n e.preventDefault();\n if (keyboardNavigation.current) {\n navigateChildItems(e);\n } else {\n keyboardNavigation.current = true;\n navigateChildItems(e, true);\n }\n } else if (isMenuActivationKey(e.key) && highlightedTabHasMenu()) {\n activateTabMenu();\n }\n },\n [\n activateTabMenu,\n getIndexCount,\n highlightedTabHasMenu,\n navigateChildItems,\n orientation,\n ]\n );\n\n // TODO, in common hooks, we use mouse movement to track current highlighted\n // index, rather than rely on component item reporting it\n const handleItemClick = (_: ReactMouseEvent, tabIndex: number) => {\n setHighlightedIdx(tabIndex);\n };\n\n const handleFocus = useCallback(() => {\n if (!hasFocus) {\n setHasFocus(true);\n if (!mouseClickPending.current) {\n keyboardNavigation.current = true;\n } else {\n mouseClickPending.current = false;\n }\n }\n }, [hasFocus]);\n\n const handleContainerMouseDown = useCallback(() => {\n if (!hasFocus) {\n mouseClickPending.current = true;\n }\n keyboardNavigation.current = false;\n }, [hasFocus]);\n\n const containerProps = {\n onBlur: (e: FocusEvent) => {\n const sourceTarget = (e.target as HTMLElement).closest(\".vuuTabstrip\");\n const destTarget = e.relatedTarget as HTMLElement;\n if (sourceTarget && !sourceTarget?.contains(destTarget)) {\n setHighlightedIdx(-1);\n setHasFocus(false);\n }\n },\n onMouseDownCapture: handleContainerMouseDown,\n onFocus: handleFocus,\n onMouseLeave: () => {\n keyboardNavigation.current = true;\n setHighlightedIdx(-1);\n mouseClickPending.current = false;\n },\n };\n\n return {\n containerProps,\n focusVisible: keyboardNavigation.current ? highlightedIdx : -1,\n focusIsWithinComponent: hasFocus,\n highlightedIdx,\n focusTab,\n onClick: handleItemClick,\n onFocus,\n onKeyDown: handleKeyDown,\n setHighlightedIdx,\n };\n};\n", "import { useControlled } from \"@salt-ds/core\";\nimport { KeyboardEvent, MouseEvent, useCallback } from \"react\";\n\nconst defaultSelectionKeys = [\"Enter\", \" \"];\n\nexport const isTabElement = (el: HTMLElement): boolean =>\n el && el.matches('[class*=\"vuuTab \"]');\n\n// TODO use SelectionProps\nexport const useSelection = ({\n defaultSelected,\n highlightedIdx,\n onSelectionChange,\n selected: selectedProp,\n}: {\n defaultSelected?: number;\n highlightedIdx: number;\n onSelectionChange?: (tabIndex: number) => void;\n selected?: number;\n}): {\n activateTab: (tabIndex: number) => void;\n isControlled: boolean;\n onClick: (evt: MouseEvent<Element>, tabIndex: number) => void;\n onKeyDown: (evt: KeyboardEvent) => void;\n selected: number;\n} => {\n const [selected, setSelected, isControlled] = useControlled({\n controlled: selectedProp,\n default: defaultSelected ?? 0,\n name: \"Tabstrip\",\n state: \"value\",\n });\n\n const isSelectionEvent = useCallback(\n (evt: KeyboardEvent) => defaultSelectionKeys.includes(evt.key),\n []\n );\n\n const selectItem = useCallback(\n (tabIndex: number) => {\n setSelected(tabIndex);\n onSelectionChange?.(tabIndex);\n },\n [onSelectionChange, setSelected]\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n const targetElement = e.target as HTMLElement;\n if (\n isSelectionEvent(e) &&\n highlightedIdx !== selected &&\n isTabElement(targetElement)\n ) {\n e.stopPropagation();\n e.preventDefault();\n selectItem(highlightedIdx);\n }\n },\n [isSelectionEvent, highlightedIdx, selected, selectItem]\n );\n\n const onClick = useCallback(\n (e: MouseEvent, tabIndex: number) => {\n if (tabIndex !== selected) {\n selectItem(tabIndex);\n }\n },\n [selectItem, selected]\n );\n\n return {\n activateTab: selectItem,\n isControlled,\n onClick,\n onKeyDown: handleKeyDown,\n selected,\n };\n};\n", "// TODO close button needs to be a button. Hence tab needs to include 2 buttons\nimport { useForkRef } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport { MenuActionHandler } from \"packages/vuu-data-types\";\nimport {\n FocusEvent,\n ForwardedRef,\n forwardRef,\n KeyboardEvent,\n MouseEvent,\n ReactElement,\n useCallback,\n useRef,\n} from \"react\";\nimport { EditableLabel, EditableLabelProps } from \"../editable-label\";\nimport { TabMenu } from \"./TabMenu\";\nimport { TabProps } from \"./TabsTypes\";\n\nimport \"./Tab.css\";\n\nconst classBase = \"vuuTab\";\n\nconst noop = () => undefined;\n\nexport const Tab = forwardRef(function Tab(\n {\n ariaControls,\n children,\n className,\n closeable = false,\n dragging,\n editable = false,\n editing,\n focusVisible,\n index = -1,\n label,\n location,\n onClick,\n onClose,\n onEnterEditMode = noop,\n onExitEditMode = noop,\n onFocus: onFocusProp,\n onKeyUp,\n onMenuAction,\n onMenuClose,\n orientation,\n selected,\n showMenuButton = closeable || editable,\n tabIndex,\n ...props\n }: TabProps,\n ref: ForwardedRef<HTMLDivElement>\n): ReactElement<TabProps> {\n if (showMenuButton && typeof onMenuAction !== \"function\") {\n throw Error(\"Tab onMenuAction must be provided if showMenuButton is set\");\n }\n\n const rootRef = useRef<HTMLDivElement>(null);\n const editableRef = useRef<HTMLDivElement>(null);\n const setForkRef = useForkRef(ref, rootRef);\n const handleClick = useCallback(\n (e: MouseEvent<HTMLElement>) => {\n if (!editing) {\n e.preventDefault();\n onClick?.(e, index);\n }\n },\n [editing, index, onClick]\n );\n\n const handleOnExitEditMode: EditableLabelProps[\"onExitEditMode\"] = (\n originalValue = \"\",\n editedValue = \"\",\n allowDeactivation = true\n ) => onExitEditMode(originalValue, editedValue, allowDeactivation, index);\n\n const handleKeyUp = (e: KeyboardEvent) => {\n switch (e.key) {\n case \"Backspace\":\n case \"Delete\":\n if (closeable) {\n e.stopPropagation();\n onClose && onClose(index);\n }\n break;\n default:\n onKeyUp && onKeyUp(e, index);\n }\n };\n\n const getLabel = () => {\n if (editable) {\n return (\n <EditableLabel\n editing={editing}\n defaultValue={label}\n // Create a fresh instance after each edit, so it can be uncontrolled ...\n key={label}\n onEnterEditMode={onEnterEditMode}\n onExitEditMode={handleOnExitEditMode}\n ref={editableRef}\n />\n );\n } else {\n return label;\n }\n };\n\n const handleFocus = (evt: FocusEvent<HTMLElement>) => {\n if (editableRef.current) {\n const editable = editableRef.current as HTMLElement;\n const input = editable.querySelector(\n \".vuuEditableLabel-input\"\n ) as HTMLInputElement;\n input?.focus();\n }\n onFocusProp?.(evt);\n };\n\n return (\n <div\n {...props}\n aria-controls={ariaControls}\n aria-selected={selected}\n className={cx(classBase, {\n [`${classBase}-closeable`]: closeable,\n \"vuuDraggable-dragAway\": dragging,\n [`${classBase}-editing`]: editing,\n [`${classBase}-selected`]: selected || undefined,\n [`${classBase}-vertical`]: orientation === \"vertical\",\n [`vuuFocusVisible`]: focusVisible,\n })}\n onClick={handleClick}\n onFocus={handleFocus}\n onKeyUp={handleKeyUp}\n ref={setForkRef}\n role=\"tab\"\n tabIndex={tabIndex}\n >\n <div className={`${classBase}-main`}>\n <span\n className={`${classBase}-text`}\n // data-text is important, it determines the width of the tab. A pseudo\n // element assigns data-text as content. This is styled as selected tab\n // text. That means width of tab always corresponds to its selected state,\n // so tabs do not change size when selected (ie when the text is bolded).\n // Do not include if we have editable content, EditableLabel will determine\n // the width\n data-text={editable ? undefined : label}\n >\n {children ?? getLabel()}\n </span>\n </div>\n {showMenuButton ? (\n <TabMenu\n allowClose={closeable}\n allowRename={editable}\n location={location}\n onMenuAction={onMenuAction as MenuActionHandler}\n onMenuClose={onMenuClose}\n index={index}\n />\n ) : null}\n </div>\n );\n});\n", "import { PopupMenu } from \"@vuu-ui/vuu-popups\";\nimport {\n ContextMenuItemDescriptor,\n MenuActionHandler,\n MenuBuilder,\n} from \"packages/vuu-data-types\";\nimport { useMemo } from \"react\";\nimport cx from \"classnames\";\n\nimport \"./TabMenu.css\";\nimport { closeCommand, MenuOptions, renameCommand } from \"./TabMenuOptions\";\n\nconst classBase = \"vuuTabMenu\";\n\nexport interface TabMenuProps {\n allowClose: boolean;\n allowRename: boolean;\n location?: string;\n onMenuAction: MenuActionHandler;\n onMenuClose?: () => void;\n index: number;\n}\n\nexport const TabMenu = ({\n allowClose,\n allowRename,\n location,\n onMenuAction,\n onMenuClose,\n index,\n}: TabMenuProps) => {\n const [menuBuilder, menuOptions] = useMemo(\n (): [MenuBuilder, MenuOptions] => [\n (_location, options) => {\n const menuItems: ContextMenuItemDescriptor[] = [];\n if (allowRename) {\n menuItems.push(renameCommand(options as MenuOptions));\n }\n if (allowClose) {\n menuItems.push(closeCommand(options as MenuOptions));\n }\n return menuItems;\n },\n {\n tabIndex: index,\n },\n ],\n [allowClose, allowRename, index]\n );\n\n return (\n <PopupMenu\n className={classBase}\n menuBuilder={menuBuilder}\n menuActionHandler={onMenuAction}\n menuLocation={cx(\"tab\", location)}\n menuOptions={menuOptions}\n onMenuClose={onMenuClose}\n tabIndex={-1}\n />\n );\n};\n", "import { useForkRef, useIdMemo as useId } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n MouseEvent,\n useRef,\n} from \"react\";\nimport { closestListItemIndex } from \"./list-dom-utils\";\nimport { useItemsWithIds } from \"./use-items-with-ids\";\nimport {\n GroupSelection,\n groupSelectionEnabled,\n TreeNodeSelectionHandler,\n TreeSelection,\n} from \"./use-selection\";\nimport { useViewportTracking } from \"./use-viewport-tracking\";\nimport { useTree } from \"./useTree\";\n\nimport \"./Tree.css\";\n\nconst classBase = \"vuuTree\";\n\ntype Indexer = {\n value: number;\n};\n\nexport interface TreeSourceNode {\n id: string;\n icon?: string;\n header?: boolean;\n label: string;\n childNodes?: TreeSourceNode[];\n}\nexport interface NormalisedTreeSourceNode extends TreeSourceNode {\n childNodes?: NormalisedTreeSourceNode[];\n count: number;\n expanded?: boolean;\n index: number;\n level: number;\n}\n\nexport interface NonLeafNode extends NormalisedTreeSourceNode {\n childNodes: NormalisedTreeSourceNode[];\n}\n\nexport const isExpanded = (\n node: NormalisedTreeSourceNode\n): node is NonLeafNode => node.expanded === true;\n\nexport interface TreeNodeProps extends HTMLAttributes<HTMLLIElement> {\n idx?: number;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport const TreeNode = ({ children, idx, ...props }: TreeNodeProps) => {\n return <li {...props}>{children}</li>;\n};\n\nexport interface TreeProps extends HTMLAttributes<HTMLUListElement> {\n allowDragDrop?: boolean;\n defaultSelected?: any;\n groupSelection?: GroupSelection;\n onHighlight?: (index: number) => void;\n onSelectionChange: (selected: TreeSourceNode[]) => void;\n revealSelected?: boolean;\n selected?: string[];\n selection?: TreeSelection;\n source: TreeSourceNode[];\n}\n\nconst Tree = forwardRef(function Tree(\n {\n allowDragDrop,\n className,\n defaultSelected,\n groupSelection = \"none\",\n id: idProp,\n onHighlight,\n onSelectionChange,\n revealSelected,\n selected: selectedProp,\n selection = \"single\",\n source,\n ...htmlAttributes\n }: TreeProps,\n forwardedRef: ForwardedRef<HTMLUListElement>\n) {\n const id = useId(idProp);\n const rootRef = useRef<HTMLUListElement>(null);\n\n // returns the full source data\n const [, sourceWithIds, sourceItemById] = useItemsWithIds(source, id, {\n revealSelected: revealSelected\n ? selectedProp ?? defaultSelected ?? false\n : undefined,\n });\n\n const handleSelectionChange: TreeNodeSelectionHandler = (evt, selected) => {\n if (onSelectionChange) {\n const sourceItems = selected\n .map((id) => sourceItemById(id))\n .filter((sourceItem) => sourceItem !== undefined) as TreeSourceNode[];\n onSelectionChange(sourceItems);\n }\n };\n\n const {\n focusVisible,\n highlightedIdx,\n hiliteItemAtIndex,\n listProps,\n listItemHandlers,\n selected,\n visibleData,\n } = useTree({\n defaultSelected,\n groupSelection,\n onChange: handleSelectionChange,\n onHighlight,\n selected: selectedProp,\n selection,\n sourceWithIds,\n });\n\n // const isScrolling = useViewportTracking(root, highlightedIdx);\n useViewportTracking(rootRef, highlightedIdx);\n\n const defaultItemHandlers = {\n onMouseEnter: (evt: MouseEvent) => {\n // if (!isScrolling.current) {\n const targetEl = evt.target as HTMLElement;\n const idx = closestListItemIndex(targetEl);\n hiliteItemAtIndex(idx);\n // onMouseEnterListItem && onMouseEnterListItem(evt, idx);\n // }\n },\n };\n\n const propsCommonToAllListItems = {\n ...defaultItemHandlers,\n ...listItemHandlers,\n role: \"treeitem\",\n };\n const allowGroupSelect = groupSelectionEnabled(groupSelection);\n\n /**\n * Add a ListItem from source item\n */\n function addLeafNode(\n list: JSX.Element[],\n item: NormalisedTreeSourceNode,\n idx: Indexer\n ) {\n list.push(\n <TreeNode\n {...propsCommonToAllListItems}\n {...getListItemProps(item, idx, highlightedIdx, selected, focusVisible)}\n >\n {item.icon ? (\n <span className={`${classBase}Node-icon`} data-icon={item.icon} />\n ) : null}\n <span>{item.label}</span>\n </TreeNode>\n );\n idx.value += 1;\n }\n\n function addGroupNode(\n list: JSX.Element[],\n child: NormalisedTreeSourceNode,\n idx: Indexer,\n id: string,\n title: string\n ) {\n const { value: i } = idx;\n idx.value += 1;\n list.push(\n <TreeNode\n {...listItemHandlers}\n aria-expanded={child.expanded}\n aria-level={child.level}\n aria-selected={selected.includes(id) || undefined}\n className={cx(`${classBase}Node`, {\n focusVisible: focusVisible === i,\n [`${classBase}Node-toggle`]: !allowGroupSelect,\n })}\n data-idx={i}\n data-highlighted={i === highlightedIdx || undefined}\n data-selectable\n id={id}\n key={`header-${i}`}\n >\n {allowGroupSelect ? (\n <div className={`${classBase}Node-label`}>\n <span className={`${classBase}Node-toggle`} />\n {title}\n </div>\n ) : (\n <div className={`${classBase}Node-label`}>\n {child.icon ? (\n <span\n className={`${classBase}Node-icon`}\n data-icon={child.icon}\n />\n ) : null}\n <span>{title}</span>\n </div>\n )}\n <ul role=\"group\">\n {isExpanded(child) ? renderSourceContent(child.childNodes, idx) : \"\"}\n </ul>\n </TreeNode>\n );\n }\n\n function renderSourceContent(\n items: NormalisedTreeSourceNode[],\n idx = { value: 0 }\n ) {\n if (items?.length > 0) {\n const listItems: JSX.Element[] = [];\n for (const item of items) {\n if (item.childNodes) {\n addGroupNode(listItems, item, idx, item.id, item.label);\n } else {\n addLeafNode(listItems, item, idx);\n }\n }\n return listItems;\n }\n }\n\n return (\n <ul\n {...htmlAttributes}\n {...listProps}\n className={cx(classBase, className)}\n id={`Tree-${id}`}\n ref={useForkRef<HTMLUListElement>(rootRef, forwardedRef)}\n role=\"tree\"\n tabIndex={0}\n >\n {renderSourceContent(visibleData)}\n </ul>\n );\n});\n\nconst getListItemProps = (\n item: NormalisedTreeSourceNode,\n idx: Indexer,\n highlightedIdx: number,\n selected: string[],\n focusVisible: number,\n className?: string\n) => ({\n id: item.id,\n key: item.id,\n \"aria-level\": item.level,\n \"aria-selected\": selected.includes(item.id) || undefined,\n \"data-idx\": idx.value,\n \"data-highlighted\": idx.value === highlightedIdx || undefined,\n className: cx(\"vuuTreeNode\", className, {\n focusVisible: focusVisible === idx.value,\n }),\n});\n\nTree.displayName = \"Tree\";\nexport default Tree;\n", "export const listItemElement = (listEl: HTMLElement, listItemIdx: number) =>\n listEl.querySelector(`:scope > [data-idx=\"${listItemIdx}\"]`);\n\nexport function listItemIndex(listItemEl: HTMLElement) {\n if (listItemEl) {\n let idx = listItemEl.dataset.idx;\n if (idx) {\n return parseInt(idx, 10);\n // eslint-disable-next-line no-cond-assign\n } else if ((idx = listItemEl.ariaPosInSet ?? \"-1\")) {\n return parseInt(idx, 10) - 1;\n }\n }\n}\n\nexport const listItemId = (el: HTMLElement | null) => el?.id;\n\nexport const closestListItem = (el: HTMLElement) =>\n el.closest(\"[data-idx],[aria-posinset]\") as HTMLElement;\n\nexport const closestListItemId = (el: HTMLElement) =>\n listItemId(closestListItem(el));\n\nexport const closestListItemIndex = (el: HTMLElement) =>\n listItemIndex(closestListItem(el));\n", "import { useCallback, useMemo } from \"react\";\nimport { NormalisedTreeSourceNode, TreeSourceNode } from \"./Tree\";\n\nconst PathSeparators = new Set([\"/\", \"-\", \".\"]);\n// TODO where do we define or identify separators\nconst isPathSeparator = (char: string) => PathSeparators.has(char);\n\nconst isParentPath = (parentPath: string, childPath: string) =>\n childPath.startsWith(parentPath) &&\n isPathSeparator(childPath[parentPath.length]);\n\ntype Indexer = {\n index: number;\n};\n\ntype SourceItemById = (\n id: string,\n target?: NormalisedTreeSourceNode[]\n) => TreeSourceNode | undefined;\n\nexport const useItemsWithIds = (\n sourceProp: TreeSourceNode[],\n idRoot = \"root\",\n {\n collapsibleHeaders = undefined,\n defaultExpanded = false,\n revealSelected = false,\n } = {}\n): [number, NormalisedTreeSourceNode[], SourceItemById] => {\n const countChildItems = (\n item: TreeSourceNode,\n items: TreeSourceNode[],\n idx: number\n ) => {\n if (item.childNodes) {\n return item.childNodes.length;\n } else if (item.header) {\n let i = idx + 1;\n let count = 0;\n while (i < items.length && !items[i].header) {\n count++;\n i++;\n }\n return count;\n } else {\n return 0;\n }\n };\n\n const isExpanded = useCallback(\n (path) => {\n if (Array.isArray(revealSelected)) {\n return revealSelected.some((id) => isParentPath(path, id));\n }\n return defaultExpanded;\n },\n [defaultExpanded, revealSelected]\n );\n\n const normalizeItems = useCallback(\n (\n items: TreeSourceNode[],\n indexer: Indexer,\n level = 1,\n path = \"\",\n results: NormalisedTreeSourceNode[] = [],\n flattenedSource: TreeSourceNode[] = []\n ): [number, NormalisedTreeSourceNode[], TreeSourceNode[]] => {\n let count = 0;\n // TODO get rid of the Proxy\n items.forEach((item, i, all) => {\n const isCollapsibleHeader = item.header && collapsibleHeaders;\n const isNonCollapsibleGroupNode =\n item.childNodes && collapsibleHeaders === false;\n const isLeaf = !item.childNodes || item.childNodes.length === 0;\n const nonCollapsible =\n isNonCollapsibleGroupNode || (isLeaf && !isCollapsibleHeader);\n const childPath = path ? `${path}.${i}` : `${i}`;\n const id = item.id ?? `${idRoot}-${childPath}`;\n\n const expanded = nonCollapsible ? undefined : isExpanded(id);\n //TODO dev time check - if id is provided by user, make sure\n // hierarchical pattern is consistent\n const normalisedItem: NormalisedTreeSourceNode = {\n ...item,\n childNodes: undefined,\n id,\n count:\n !isNonCollapsibleGroupNode && expanded === undefined\n ? 0\n : countChildItems(item, all, i),\n expanded,\n index: indexer.index,\n level,\n };\n results.push(normalisedItem);\n flattenedSource.push(items[i]);\n\n count += 1;\n indexer.index += 1;\n\n // if ((isNonCollapsibleGroupNode || expanded !== undefined) && !isCollapsibleHeader) {\n if (item.childNodes) {\n const [childCount, children] = normalizeItems(\n item.childNodes,\n indexer,\n level + 1,\n childPath,\n [],\n flattenedSource\n );\n normalisedItem.childNodes = children;\n if (expanded === true || isNonCollapsibleGroupNode) {\n count += childCount;\n }\n }\n });\n return [count, results, flattenedSource];\n },\n [collapsibleHeaders, idRoot, isExpanded]\n );\n\n const [count, sourceWithIds, flattenedSource] = useMemo<\n [number, NormalisedTreeSourceNode[], TreeSourceNode[]]\n >(() => {\n return normalizeItems(sourceProp, { index: 0 });\n }, [normalizeItems, sourceProp]);\n\n const sourceItemById = useCallback<SourceItemById>(\n (id, target = sourceWithIds): TreeSourceNode | undefined => {\n const sourceWithId = target.find(\n (i) => i.id === id || (i?.childNodes?.length && isParentPath(i.id, id))\n );\n if (sourceWithId?.id === id) {\n return flattenedSource[sourceWithId.index];\n } else if (sourceWithId) {\n return sourceItemById(id, sourceWithId.childNodes);\n }\n },\n [flattenedSource, sourceWithIds]\n );\n\n return [count, sourceWithIds, sourceItemById];\n};\n", "import {\n KeyboardEvent,\n MouseEvent,\n SyntheticEvent,\n useCallback,\n useRef,\n} from \"react\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { NormalisedTreeSourceNode } from \"./Tree\";\n\nexport type TreeSelection =\n | \"none\"\n | \"single\"\n | \"checkbox\"\n | \"multi\"\n | \"extended\";\n\nexport const SINGLE = \"single\";\nexport const CHECKBOX = \"checkbox\";\nexport const MULTI = \"multi\";\nexport const EXTENDED = \"extended\";\n\nexport type GroupSelection = \"none\" | \"single\" | \"cascade\";\n\nconst defaultSelectionKeys = [\"Enter\", \" \"];\n\nconst NO_HANDLERS = {};\n\nconst isCollapsibleItem = (item: NormalisedTreeSourceNode) =>\n item.expanded !== undefined;\n\nexport type TreeNodeSelectionHandler = (\n evt: SyntheticEvent,\n selected: string[]\n) => void;\n\nexport const groupSelectionEnabled = (groupSelection: GroupSelection) =>\n groupSelection && groupSelection !== \"none\";\n\nexport interface SelectionHookProps {\n defaultSelected?: string[];\n highlightedIdx: number;\n onChange: TreeNodeSelectionHandler;\n selected?: string[];\n selection: TreeSelection;\n selectionKeys?: string[];\n treeNodes: NormalisedTreeSourceNode[];\n}\n\nexport interface SelectionHookResult {\n listHandlers: {\n onKeyDown?: (evt: KeyboardEvent) => void;\n onKeyboardNavigation?: (evt: KeyboardEvent, currentIndex: number) => void;\n };\n listItemHandlers: {\n onClick?: (evt: MouseEvent) => void;\n };\n selected: string[];\n setSelected: (selected: string[]) => void;\n}\n\nexport const useSelection = ({\n defaultSelected,\n highlightedIdx,\n treeNodes,\n onChange,\n selected: selectedProp,\n selection = SINGLE,\n selectionKeys = defaultSelectionKeys,\n}: SelectionHookProps): SelectionHookResult => {\n const singleSelect = selection === SINGLE;\n const multiSelect = selection === MULTI || selection.startsWith(CHECKBOX);\n const extendedSelect = selection === EXTENDED;\n const lastActive = useRef(-1);\n\n const isSelectionEvent = useCallback(\n (evt) => selectionKeys.includes(evt.key),\n [selectionKeys]\n );\n\n const [selected, setSelected] = useControlled({\n controlled: selectedProp,\n default: defaultSelected ?? [],\n name: \"selected\",\n });\n\n // const highlightedIdxRef = useRef();\n // highlightedIdxRef.current = highlightedIdx;\n\n const selectItemAtIndex = useCallback(\n (\n evt: SyntheticEvent,\n idx: number,\n id: string,\n rangeSelect: boolean,\n preserveExistingSelection = false\n ) => {\n const { current: active } = lastActive;\n const isSelected = selected?.includes(id);\n const inactiveRange = active === -1;\n const actsLikeSingleSelect =\n singleSelect ||\n (extendedSelect &&\n !preserveExistingSelection &&\n (!rangeSelect || inactiveRange));\n const actsLikeMultiSelect =\n multiSelect ||\n (extendedSelect && preserveExistingSelection && !rangeSelect);\n\n let newSelected: string[] = [];\n if (actsLikeSingleSelect && isSelected) {\n newSelected = [];\n } else if (actsLikeSingleSelect) {\n newSelected = [id];\n } else if (actsLikeMultiSelect && isSelected) {\n newSelected = selected.filter((i) => i !== id);\n } else if (actsLikeMultiSelect) {\n newSelected = selected.concat(id);\n } else if (extendedSelect) {\n const [from, to] = idx > active ? [active, idx] : [idx, active];\n newSelected = selected.slice();\n for (let i = from; i <= to; i++) {\n const { id } = treeNodes[i];\n if (!selected.includes(id)) {\n newSelected.push(id);\n }\n }\n }\n setSelected(newSelected);\n if (onChange) {\n onChange(evt, newSelected);\n }\n },\n [\n extendedSelect,\n treeNodes,\n multiSelect,\n onChange,\n selected,\n setSelected,\n singleSelect,\n ]\n );\n\n const handleKeyDown = useCallback(\n (evt: KeyboardEvent) => {\n if (~highlightedIdx && isSelectionEvent(evt)) {\n evt.preventDefault();\n const item = treeNodes[highlightedIdx];\n selectItemAtIndex(\n evt,\n highlightedIdx,\n item.id,\n false,\n evt.ctrlKey || evt.metaKey\n );\n if (extendedSelect) {\n lastActive.current = highlightedIdx;\n }\n }\n },\n [\n extendedSelect,\n highlightedIdx,\n treeNodes,\n isSelectionEvent,\n selectItemAtIndex,\n ]\n );\n\n const handleKeyboardNavigation = useCallback(\n (evt: KeyboardEvent, currentIndex: number) => {\n if (extendedSelect && evt.shiftKey) {\n const item = treeNodes[currentIndex];\n selectItemAtIndex(evt, currentIndex, item.id, true);\n }\n },\n [extendedSelect, treeNodes, selectItemAtIndex]\n );\n\n const listHandlers =\n selection === \"none\"\n ? NO_HANDLERS\n : {\n onKeyDown: handleKeyDown,\n onKeyboardNavigation: handleKeyboardNavigation,\n };\n\n const handleClick = useCallback(\n (evt: MouseEvent) => {\n if (highlightedIdx !== -1) {\n const item = treeNodes[highlightedIdx];\n if (!isCollapsibleItem(item)) {\n evt.preventDefault();\n evt.stopPropagation();\n selectItemAtIndex(\n evt,\n highlightedIdx,\n item.id,\n evt.shiftKey,\n evt.ctrlKey || evt.metaKey\n );\n if (extendedSelect) {\n lastActive.current = highlightedIdx;\n }\n }\n }\n },\n [extendedSelect, highlightedIdx, treeNodes, selectItemAtIndex]\n );\n\n const listItemHandlers =\n selection === \"none\"\n ? NO_HANDLERS\n : {\n onClick: handleClick,\n };\n\n return {\n listHandlers,\n listItemHandlers,\n selected,\n setSelected,\n };\n};\n", "import {\n RefObject,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n} from \"react\";\nimport { useResizeObserver } from \"./use-resize-observer\";\n\nconst HeightOnly = [\"height\", \"scrollHeight\"];\n\nexport const useViewportTracking = (\n root: RefObject<HTMLElement>,\n highlightedIdx: number,\n stickyHeaders = false\n) => {\n const scrollTop = useRef(0);\n const scrolling = useRef(false);\n const rootHeight = useRef(0);\n const rootScrollHeight = useRef(0);\n\n const scrollIntoView = useCallback(\n (el) => {\n const targetEl = el.ariaExpanded ? el.firstChild : el;\n const headerHeight = stickyHeaders ? 30 : 0;\n const t = targetEl.offsetTop;\n const h = targetEl.offsetHeight;\n const viewportStart = scrollTop.current + headerHeight;\n const viewportEnd = viewportStart + rootHeight.current - headerHeight;\n\n if (t + h > viewportEnd || t < viewportStart) {\n scrollTop.current =\n t + h > viewportEnd\n ? scrollTop.current + (t + h) - viewportEnd\n : t - headerHeight;\n\n scrolling.current = true;\n if (root.current) {\n root.current.scrollTop = scrollTop.current;\n }\n setTimeout(() => {\n scrolling.current = false;\n });\n }\n },\n [root, stickyHeaders]\n );\n\n const scrollHandler = useCallback((e) => {\n scrollTop.current = e.target.scrollTop;\n }, []);\n\n useEffect(() => {\n const { current: rootEl } = root;\n if (rootEl) {\n rootEl.addEventListener(\"scroll\", scrollHandler);\n }\n\n return () => {\n if (rootEl) {\n rootEl.removeEventListener(\"scroll\", scrollHandler);\n }\n };\n }, [root, scrollHandler]);\n\n useLayoutEffect(() => {\n if (\n highlightedIdx !== -1 &&\n rootScrollHeight.current > rootHeight.current\n ) {\n if (root.current) {\n const item = root.current.querySelector(`\n [data-idx='${highlightedIdx}'],\n [aria-posinset='${highlightedIdx + 1}']\n `);\n if (item === null) {\n console.log(\n \"[useViewportTracking], is this virtualised ? we're going to have to know rowHeight\"\n );\n } else {\n scrollIntoView(item);\n }\n }\n }\n }, [highlightedIdx, root, scrollIntoView]);\n\n useEffect(() => {\n // onsole.log('TODO measure the sticky header')\n }, [stickyHeaders]);\n\n const onResize = useCallback(({ height, scrollHeight }) => {\n rootHeight.current = height;\n rootScrollHeight.current = scrollHeight;\n }, []);\n\n useResizeObserver(root, HeightOnly, onResize, true);\n\n return scrolling;\n};\n", "import { RefObject, useCallback, useEffect, useRef } from \"react\";\n\nexport const WidthHeight = [\"height\", \"width\"];\nexport const WidthOnly = [\"width\"];\n\nexport type measurements<T = string | number> = {\n height?: T;\n clientHeight?: number;\n clientWidth?: number;\n contentHeight?: number;\n contentWidth?: number;\n scrollHeight?: number;\n scrollWidth?: number;\n width?: T;\n};\ntype measuredDimension = keyof measurements<number>;\n\nexport type ResizeHandler = (measurements: measurements<number>) => void;\n\ntype observedDetails = {\n onResize?: ResizeHandler;\n measurements: measurements<number>;\n};\nconst observedMap = new Map<HTMLElement, observedDetails>();\n\nconst getTargetSize = (\n element: HTMLElement,\n size: {\n height: number;\n width: number;\n contentHeight: number;\n contentWidth: number;\n },\n dimension: measuredDimension\n): number => {\n switch (dimension) {\n case \"height\":\n return size.height;\n case \"clientHeight\":\n return element.clientHeight;\n case \"clientWidth\":\n return element.clientWidth;\n case \"contentHeight\":\n return size.contentHeight;\n case \"contentWidth\":\n return size.contentWidth;\n case \"scrollHeight\":\n return Math.ceil(element.scrollHeight);\n case \"scrollWidth\":\n return Math.ceil(element.scrollWidth);\n case \"width\":\n return size.width;\n default:\n return 0;\n }\n};\n\nconst isScrollAttribute = {\n scrollHeight: true,\n scrollWidth: true,\n};\n\n// TODO should we make this create-on-demand\nconst resizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n for (const entry of entries) {\n const { target, borderBoxSize, contentBoxSize } = entry;\n const observedTarget = observedMap.get(target as HTMLElement);\n if (observedTarget) {\n const [{ blockSize: height, inlineSize: width }] = borderBoxSize;\n const [{ blockSize: contentHeight, inlineSize: contentWidth }] =\n contentBoxSize;\n const { onResize, measurements } = observedTarget;\n let sizeChanged = false;\n for (let [dimension, size] of Object.entries(measurements)) {\n const newSize = getTargetSize(\n target as HTMLElement,\n { height, width, contentHeight, contentWidth },\n dimension as measuredDimension\n );\n\n if (newSize !== size) {\n sizeChanged = true;\n measurements[dimension as measuredDimension] = newSize;\n }\n }\n if (sizeChanged) {\n // TODO only return measured sizes\n onResize && onResize(measurements);\n }\n }\n }\n});\n\n// TODO use an optional lag (default to false) to ask to fire onResize\n// with initial size\nexport function useResizeObserver(\n ref: RefObject<Element | HTMLElement | null>,\n dimensions: string[],\n onResize: ResizeHandler,\n reportInitialSize = false\n) {\n const dimensionsRef = useRef(dimensions);\n\n const measure = useCallback((target: HTMLElement): measurements<number> => {\n const { width, height } = target.getBoundingClientRect();\n const { clientWidth: contentWidth, clientHeight: contentHeight } = target;\n return dimensionsRef.current.reduce(\n (map: { [key: string]: number }, dim) => {\n map[dim] = getTargetSize(\n target,\n { width, height, contentHeight, contentWidth },\n dim as measuredDimension\n );\n return map;\n },\n {}\n );\n }, []);\n\n // TODO use ref to store resizeHandler here\n // resize handler registered with REsizeObserver will never change\n // use ref to store user onResize callback here\n // resizeHandler will call user callback.current\n\n // Keep this effect separate in case user inadvertently passes different\n // dimensions or callback instance each time - we only ever want to\n // initiate new observation when ref changes.\n useEffect(() => {\n const target = ref.current as HTMLElement;\n async function registerObserver() {\n // Create the map entry immediately. useEffect may fire below\n // before fonts are ready and attempt to update entry\n observedMap.set(target, { measurements: {} as measurements<number> });\n await document.fonts.ready;\n const observedTarget = observedMap.get(target);\n if (observedTarget) {\n const measurements = measure(target);\n observedTarget.measurements = measurements;\n resizeObserver.observe(target);\n if (reportInitialSize) {\n onResize(measurements);\n }\n } else {\n console.log(\n `%cuseResizeObserver an target expected to be under observation wa snot found. This warrants investigation`,\n \"font-weight:bold; color:red;\"\n );\n }\n }\n\n if (target) {\n // TODO might we want multiple callers to attach a listener to the same element ?\n if (observedMap.has(target)) {\n throw Error(\n \"useResizeObserver attemping to observe same element twice\"\n );\n }\n // TODO set a pending entry on map\n registerObserver();\n }\n return () => {\n if (target && observedMap.has(target)) {\n resizeObserver.unobserve(target);\n observedMap.delete(target);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [measure, ref]);\n\n useEffect(() => {\n const target = ref.current as HTMLElement;\n const record = observedMap.get(target);\n if (record) {\n if (dimensionsRef.current !== dimensions) {\n dimensionsRef.current = dimensions;\n const measurements = measure(target);\n record.measurements = measurements;\n }\n // Might not have changed, but no harm ...\n record.onResize = onResize;\n }\n }, [dimensions, measure, ref, onResize]);\n}\n", "import { KeyboardEvent, useCallback, useRef } from \"react\";\nimport { useKeyboardNavigation } from \"./use-keyboard-navigation\";\nimport {\n GroupSelection,\n TreeNodeSelectionHandler,\n TreeSelection,\n useSelection,\n} from \"./use-selection\";\nimport { useHierarchicalData } from \"./use-hierarchical-data\";\nimport { useCollapsibleGroups } from \"./use-collapsible-groups\";\nimport { useTreeKeyboardNavigation } from \"./use-tree-keyboard-navigation\";\nimport { NormalisedTreeSourceNode } from \"./Tree\";\n\nconst EMPTY_ARRAY: string[] = [];\n\nexport interface TreeHookProps {\n defaultSelected?: string[];\n groupSelection: GroupSelection;\n onChange: TreeNodeSelectionHandler;\n onHighlight?: (index: number) => void;\n selected?: string[];\n selection: TreeSelection;\n sourceWithIds: NormalisedTreeSourceNode[];\n}\n\nexport const useTree = ({\n defaultSelected,\n sourceWithIds,\n onChange,\n onHighlight: onHighlightProp,\n selected: selectedProp,\n selection,\n}: TreeHookProps) => {\n const lastSelection = useRef<string[]>(EMPTY_ARRAY);\n const dataHook = useHierarchicalData(sourceWithIds);\n\n const handleKeyboardNavigation = (evt: KeyboardEvent, nextIdx: number) => {\n selectionHook.listHandlers.onKeyboardNavigation?.(evt, nextIdx);\n };\n\n const { highlightedIdx, ...keyboardHook } = useKeyboardNavigation({\n treeNodes: dataHook.indexPositions,\n onHighlight: onHighlightProp,\n onKeyboardNavigation: handleKeyboardNavigation,\n selected: lastSelection.current,\n });\n\n const collapsibleHook = useCollapsibleGroups({\n collapsibleHeaders: true,\n highlightedIdx,\n treeNodes: dataHook.indexPositions,\n setVisibleData: dataHook.setData,\n source: dataHook.data,\n });\n\n const selectionHook = useSelection({\n defaultSelected,\n highlightedIdx,\n treeNodes: dataHook.indexPositions,\n onChange,\n selected: selectedProp,\n selection,\n });\n\n const treeNavigationHook = useTreeKeyboardNavigation({\n source: dataHook.data,\n highlightedIdx,\n hiliteItemAtIndex: keyboardHook.hiliteItemAtIndex,\n indexPositions: dataHook.indexPositions,\n });\n\n const handleClick = useCallback(\n (evt) => {\n collapsibleHook.listItemHandlers?.onClick(evt);\n if (!evt.defaultPrevented) {\n selectionHook.listItemHandlers?.onClick?.(evt);\n }\n },\n [collapsibleHook, selectionHook]\n );\n\n const handleKeyDown = useCallback(\n (evt) => {\n keyboardHook.listProps.onKeyDown?.(evt);\n if (!evt.defaultPrevented) {\n selectionHook.listHandlers.onKeyDown?.(evt);\n }\n if (!evt.defaultPrevented) {\n collapsibleHook.listHandlers.onKeyDown?.(evt);\n }\n if (!evt.defaultPrevented) {\n treeNavigationHook.listHandlers.onKeyDown?.(evt);\n }\n },\n [\n collapsibleHook.listHandlers,\n keyboardHook.listProps,\n selectionHook.listHandlers,\n treeNavigationHook.listHandlers,\n ]\n );\n\n const getActiveDescendant = () =>\n highlightedIdx === undefined || highlightedIdx === -1\n ? undefined\n : dataHook.indexPositions[highlightedIdx]?.id;\n\n // We need this on reEntry for navigation hook to handle focus\n lastSelection.current = selectionHook.selected;\n\n const listProps = {\n \"aria-activedescendant\": getActiveDescendant(),\n onBlur: keyboardHook.listProps.onBlur,\n onFocus: keyboardHook.listProps.onFocus,\n onKeyDown: handleKeyDown,\n onMouseDownCapture: keyboardHook.listProps.onMouseDownCapture,\n onMouseLeave: keyboardHook.listProps.onMouseLeave,\n onMouseMove: keyboardHook.listProps.onMouseMove,\n };\n\n const listItemHandlers = {\n onClick: handleClick,\n };\n\n return {\n focusVisible: keyboardHook.focusVisible,\n highlightedIdx,\n hiliteItemAtIndex: keyboardHook.hiliteItemAtIndex,\n listProps,\n listItemHandlers,\n selected: selectionHook.selected,\n visibleData: dataHook.data,\n };\n};\n", "import { KeyboardEvent, useCallback, useMemo, useRef } from \"react\";\nimport { getIndexOfNode, getNodeById } from \"./hierarchical-data-utils\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { ArrowDown, ArrowLeft, ArrowUp, isNavigationKey } from \"./key-code\";\nimport { NormalisedTreeSourceNode } from \"./Tree\";\n\nfunction nextItemIdx(count: number, key: string, idx: number) {\n if (key === ArrowUp || key === ArrowLeft) {\n if (idx > 0) {\n return idx - 1;\n } else {\n return idx;\n }\n } else {\n if (idx === null) {\n return 0;\n } else if (idx === count - 1) {\n return idx;\n } else {\n return idx + 1;\n }\n }\n}\n\nconst isLeaf = (item: NormalisedTreeSourceNode) =>\n !item.header && !item.childNodes;\nconst isFocusable = (item: NormalisedTreeSourceNode) =>\n isLeaf(item) || item.expanded !== undefined;\n\nexport interface KeyboardNavigationHookProps {\n defaultHighlightedIdx?: number;\n highlightedIdx?: number;\n onHighlight?: (highlightedIdx: number) => void;\n onKeyboardNavigation?: (evt: KeyboardEvent, nextIdx: number) => void;\n selected: string[];\n treeNodes: NormalisedTreeSourceNode[];\n}\n\n// we need a way to set highlightedIdx when selection changes\nexport const useKeyboardNavigation = ({\n defaultHighlightedIdx = -1,\n highlightedIdx: highlightedIdxProp,\n treeNodes,\n onHighlight,\n onKeyboardNavigation,\n selected = [],\n}: KeyboardNavigationHookProps) => {\n const { bwd: ArrowBwd, fwd: ArrowFwd } = useMemo(\n () => ({\n bwd: ArrowUp,\n fwd: ArrowDown,\n }),\n []\n );\n\n const [highlightedIdx, setHighlightedIdx, isControlledHighlighting] =\n useControlled({\n controlled: highlightedIdxProp,\n default: defaultHighlightedIdx,\n name: \"highlightedIdx\",\n });\n\n const setHighlightedIndex = useCallback(\n (idx) => {\n onHighlight?.(idx);\n setHighlightedIdx(idx);\n },\n [onHighlight, setHighlightedIdx]\n );\n\n const nextFocusableItemIdx = useCallback(\n (key = ArrowFwd, idx = key === ArrowFwd ? -1 : treeNodes.length) => {\n let nextIdx = nextItemIdx(treeNodes.length, key, idx);\n while (\n nextIdx !== -1 &&\n ((key === ArrowFwd && nextIdx < treeNodes.length) ||\n (key === ArrowBwd && nextIdx > 0)) &&\n !isFocusable(treeNodes[nextIdx])\n ) {\n nextIdx = nextItemIdx(treeNodes.length, key, nextIdx);\n }\n return nextIdx;\n },\n [ArrowBwd, ArrowFwd, treeNodes]\n );\n\n // does this belong here or should it be a method passed in?\n const keyBoardNavigation = useRef(true);\n const ignoreFocus = useRef(false);\n const setIgnoreFocus = (value: boolean) => (ignoreFocus.current = value);\n\n const handleFocus = useCallback(() => {\n if (ignoreFocus.current) {\n ignoreFocus.current = false;\n } else if (selected.length > 0) {\n const node = getNodeById(treeNodes, selected[0]);\n if (node) {\n const idx = getIndexOfNode(treeNodes, node);\n setHighlightedIndex(idx);\n }\n } else {\n setHighlightedIndex(nextFocusableItemIdx());\n }\n }, [treeNodes, nextFocusableItemIdx, selected, setHighlightedIndex]);\n\n const navigateChildItems = useCallback(\n (e) => {\n const nextIdx = nextFocusableItemIdx(e.key, highlightedIdx);\n if (nextIdx !== highlightedIdx) {\n setHighlightedIndex(nextIdx);\n // What exactly is the point of this ?\n onKeyboardNavigation?.(e, nextIdx);\n }\n },\n [\n highlightedIdx,\n nextFocusableItemIdx,\n onKeyboardNavigation,\n setHighlightedIndex,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (treeNodes.length > 0 && isNavigationKey(e, \"vertical\")) {\n e.preventDefault();\n e.stopPropagation();\n keyBoardNavigation.current = true;\n navigateChildItems(e);\n }\n },\n [treeNodes, navigateChildItems]\n );\n\n const listProps = useMemo(\n () => ({\n onBlur: () => {\n setHighlightedIndex(-1);\n },\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onMouseDownCapture: () => {\n keyBoardNavigation.current = false;\n setIgnoreFocus(true);\n },\n\n // onMouseEnter would seem less expensive but it misses some cases\n // SHould this be here - this is not strictly keyboard nav\n onMouseMove: () => {\n if (keyBoardNavigation.current) {\n keyBoardNavigation.current = false;\n }\n },\n onMouseLeave: () => {\n keyBoardNavigation.current = true;\n setIgnoreFocus(false);\n setHighlightedIndex(-1);\n },\n }),\n [handleFocus, handleKeyDown, setHighlightedIndex]\n );\n\n return {\n focusVisible: keyBoardNavigation.current ? highlightedIdx : -1,\n controlledHighlighting: isControlledHighlighting,\n highlightedIdx,\n hiliteItemAtIndex: setHighlightedIndex,\n keyBoardNavigation,\n listProps,\n setIgnoreFocus,\n };\n};\n", "import { NonLeafNode, NormalisedTreeSourceNode } from \"./Tree\";\n\nexport const getNodeParentPath = ({ id }: NormalisedTreeSourceNode) => {\n let pos = id.lastIndexOf(\"-\");\n if (pos !== -1) {\n // using the built-in hierarchical id scheme\n // rootId-n-n.n\n const path = id.slice(pos + 1);\n const steps = path.split(\".\");\n if (steps.length === 1) {\n return null;\n } else {\n steps.pop();\n return `${id.slice(0, pos)}-${steps.join(\".\")}`;\n }\n } else if ((pos = id.lastIndexOf(\"/\")) !== -1) {\n // using a path scheme step/step/step\n return id.slice(0, pos);\n }\n};\n\nexport const isGroupNode = (node: NormalisedTreeSourceNode) =>\n node.childNodes !== undefined;\nexport const isCollapsibleGroupNode = (node: NormalisedTreeSourceNode) =>\n isGroupNode(node) && node.expanded !== undefined;\nexport const isHeader = (node: NormalisedTreeSourceNode) =>\n node.header === true;\n\nconst PATH_SEPARATORS = new Set([\".\", \"/\"]);\n\nconst isDescendantOf = (\n node: NormalisedTreeSourceNode,\n targetPath: string\n): node is NonLeafNode => {\n if (!targetPath.startsWith(node.id)) {\n return false;\n } else {\n return PATH_SEPARATORS.has(targetPath.charAt(node.id.length));\n }\n};\n\nexport const getNodeById = (\n nodes: NormalisedTreeSourceNode[],\n id: string\n): NormalisedTreeSourceNode | undefined => {\n for (const node of nodes) {\n if (node.id === id) {\n return node;\n } else if (isDescendantOf(node, id)) {\n return getNodeById(node.childNodes, id);\n }\n }\n};\n\nexport const getIndexOfNode = (\n treeNodes: NormalisedTreeSourceNode[],\n node: NormalisedTreeSourceNode\n) => {\n const id = typeof node === \"string\" ? node : node.id;\n for (let i = 0; i < treeNodes.length; i++) {\n if (treeNodes[i].id === id) {\n return i;\n }\n }\n};\n\nexport const replaceNode = (\n nodes: NormalisedTreeSourceNode[],\n id: string,\n props: Partial<NormalisedTreeSourceNode>\n): NormalisedTreeSourceNode[] => {\n let childNodes;\n const newNodes = nodes.map((node) => {\n if (node.id === id) {\n return {\n ...node,\n ...props,\n };\n } else if (isDescendantOf(node, id)) {\n childNodes = replaceNode(node.childNodes, id, props);\n return {\n ...node,\n childNodes,\n };\n } else {\n return node;\n }\n });\n\n return newNodes;\n};\n", "import { KeyboardEvent } from \"react\";\n\nfunction union(set1: Set<string>, ...sets: Set<string>[]) {\n const result = new Set(set1);\n for (const set of sets) {\n for (const element of set) {\n result.add(element);\n }\n }\n return result;\n}\n\nexport const ArrowUp = \"ArrowUp\";\nexport const ArrowDown = \"ArrowDown\";\nexport const ArrowLeft = \"ArrowLeft\";\nexport const Backspace = \"Backspace\";\nexport const ArrowRight = \"ArrowRight\";\nexport const Enter = \"Enter\";\nexport const Escape = \"Escape\";\nexport const Delete = \"Delete\";\n\nconst actionKeys = new Set([Enter, Delete]);\nconst focusKeys = new Set([\"Tab\"]);\n// const navigationKeys = new Set([\"Home\", \"End\", \"ArrowRight\", \"ArrowLeft\",\"ArrowDown\", \"ArrowUp\"]);\nconst arrowLeftRightKeys = new Set([\"ArrowRight\", \"ArrowLeft\"]);\nconst verticalNavigationKeys = new Set([\"Home\", \"End\", \"ArrowDown\", \"ArrowUp\"]);\nconst horizontalNavigationKeys = new Set([\n \"Home\",\n \"End\",\n \"ArrowRight\",\n \"ArrowLeft\",\n]);\nconst functionKeys = new Set([\n \"F1\",\n \"F2\",\n \"F3\",\n \"F4\",\n \"F5\",\n \"F6\",\n \"F7\",\n \"F8\",\n \"F9\",\n \"F10\",\n \"F11\",\n \"F12\",\n]);\nconst specialKeys = union(\n actionKeys,\n horizontalNavigationKeys,\n verticalNavigationKeys,\n arrowLeftRightKeys,\n functionKeys,\n focusKeys\n);\nexport const isCharacterKey = (evt: KeyboardEvent) => {\n if (specialKeys.has(evt.key)) {\n return false;\n }\n if (typeof evt.which === \"number\" && evt.which > 0) {\n return !evt.ctrlKey && !evt.metaKey && !evt.altKey && evt.which !== 8;\n }\n};\n\nexport const isNavigationKey = (\n { key }: KeyboardEvent,\n orientation = \"vertical\"\n) => {\n const navigationKeys =\n orientation === \"vertical\"\n ? verticalNavigationKeys\n : horizontalNavigationKeys;\n return navigationKeys.has(key);\n};\n", "import { useRef, useState } from \"react\";\nimport { isGroupNode, isHeader } from \"./hierarchical-data-utils\";\nimport { isExpanded, NormalisedTreeSourceNode } from \"./Tree\";\n\nconst populateIndices = (\n nodes: NormalisedTreeSourceNode[],\n results: NormalisedTreeSourceNode[] = [],\n idx = { value: 0 }\n) => {\n let skipToNextHeader = false;\n for (const node of nodes) {\n if (skipToNextHeader && !isHeader(node)) {\n continue;\n } else {\n results[idx.value] = node;\n idx.value += 1;\n skipToNextHeader = false;\n if (isHeader(node) && node.expanded === false) {\n skipToNextHeader = true;\n } else if (isGroupNode(node)) {\n if (isExpanded(node)) {\n populateIndices(node.childNodes, results, idx);\n }\n }\n }\n }\n return results;\n};\n\n//TODO return a read-only data structure\n// Question: is source changes at runtime, do we lose any current state ?\nexport const useHierarchicalData = (source: NormalisedTreeSourceNode[]) => {\n // console.log(`%c[useHierarchicalData<${label}>] entry`, 'color: green; font-weight: bold;');\n\n const externalSource = useRef(source);\n const statefulSource = useRef(source);\n const indexPositions = useRef(populateIndices(source));\n const [, forceUpdate] = useState({});\n\n // Maintain a mapping between nodes and their current index position within the rendered list.\n // This index position is liable to change with every expand/collapse operation. We require this\n // when handling keyboard events - these are List level, not listItem level, so we depend on the\n\n // Client needs to be careful source is not recreated inadvertently on each render\n if (source !== externalSource.current) {\n // console.log(\n // `%cuseHierarchicalData source has changed`,\n // 'color:red;font-weight: bold;',\n // externalSource.current,\n // source\n // );\n externalSource.current = source;\n // we might want to try and merge existing state here ?\n statefulSource.current = source;\n indexPositions.current = populateIndices(source);\n }\n\n const setData = (value: NormalisedTreeSourceNode[]) => {\n statefulSource.current = value;\n indexPositions.current = populateIndices(value);\n // console.log(\n // `data set in ${label} (${indexPositions.current.length} visible items)`,\n // indexPositions.current.map((i) => ({ index: i.index, label: i.label }))\n // );\n forceUpdate({});\n };\n\n return {\n // data, // do we actually use the data anywhere\n data: statefulSource.current,\n indexPositions: indexPositions.current,\n setData,\n };\n};\n", "import { KeyboardEvent, MouseEvent, useCallback, useRef } from \"react\";\nimport { closestListItem } from \"./list-dom-utils\";\nimport { ArrowLeft, ArrowRight, Enter } from \"./key-code\";\nimport { getNodeById, replaceNode } from \"./hierarchical-data-utils\";\nimport { NormalisedTreeSourceNode } from \"./Tree\";\n\nconst NO_HANDLERS: CollapsibleHookResult[\"listHandlers\"] = {};\nconst isToggleElement = (element: HTMLElement) =>\n element && element.hasAttribute(\"aria-expanded\");\n\nexport interface CollapsibleGroupsHookProps {\n collapsibleHeaders?: boolean;\n highlightedIdx: number;\n treeNodes: NormalisedTreeSourceNode[];\n setVisibleData: (nodes: NormalisedTreeSourceNode[]) => void;\n source: NormalisedTreeSourceNode[];\n}\n\nexport interface CollapsibleHookResult {\n listHandlers: {\n onKeyDown?: (e: KeyboardEvent) => void;\n };\n listItemHandlers: {\n onClick: (e: MouseEvent) => void;\n };\n}\n\nexport const useCollapsibleGroups = ({\n collapsibleHeaders,\n highlightedIdx,\n treeNodes,\n setVisibleData,\n source,\n}: CollapsibleGroupsHookProps): CollapsibleHookResult => {\n const fullSource = useRef<NormalisedTreeSourceNode[]>(source);\n const stateSource = useRef<NormalisedTreeSourceNode[]>(fullSource.current);\n\n const setSource = useCallback(\n (value) => {\n setVisibleData((stateSource.current = value));\n },\n [setVisibleData]\n );\n\n const expandNode = useCallback(\n (nodeList: NormalisedTreeSourceNode[], { id }: NormalisedTreeSourceNode) =>\n replaceNode(nodeList, id, { expanded: true }),\n []\n );\n\n const collapseNode = useCallback(\n (nodeList, { id }) => replaceNode(nodeList, id, { expanded: false }),\n []\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === ArrowRight || e.key === Enter) {\n const node = treeNodes[highlightedIdx];\n if (node) {\n if (node.expanded === false) {\n e.preventDefault();\n setSource(expandNode(stateSource.current, node));\n }\n }\n }\n\n if (e.key === ArrowLeft || e.key === Enter) {\n const node = treeNodes[highlightedIdx];\n if (node) {\n if (node.expanded) {\n e.preventDefault();\n setSource(collapseNode(stateSource.current, node));\n }\n }\n }\n },\n [collapseNode, expandNode, highlightedIdx, treeNodes, setSource]\n );\n\n /**\n * These are List handlers, so we will not have reference to the actual node\n * element. We must rely on highlightedIdx to tell us which node is interactive.\n */\n const listHandlers = collapsibleHeaders\n ? {\n onKeyDown: handleKeyDown,\n }\n : NO_HANDLERS;\n\n const handleClick = useCallback(\n (evt) => {\n const el = closestListItem(evt.target);\n if (isToggleElement(el)) {\n evt.stopPropagation();\n evt.preventDefault();\n const node = getNodeById(source, el.id);\n if (node?.expanded === false) {\n setSource(expandNode(source, node));\n } else if (node?.expanded === true) {\n setSource(collapseNode(source, node));\n }\n }\n },\n [collapseNode, expandNode, setSource, source]\n );\n\n const listItemHandlers = {\n onClick: handleClick,\n };\n\n return {\n listHandlers,\n listItemHandlers,\n };\n};\n", "import { useCallback } from \"react\";\nimport { ArrowLeft } from \"./key-code\";\nimport {\n getNodeById,\n getNodeParentPath,\n getIndexOfNode,\n} from \"./hierarchical-data-utils\";\nimport { NormalisedTreeSourceNode } from \"./Tree\";\n\nexport interface TreeKeyboardNavigationHookProps {\n highlightedIdx: number;\n hiliteItemAtIndex: (idx: number) => void;\n indexPositions: NormalisedTreeSourceNode[];\n source: NormalisedTreeSourceNode[];\n}\n\n// we need a way to set highlightedIdx when selection changes\nexport const useTreeKeyboardNavigation = ({\n highlightedIdx,\n hiliteItemAtIndex,\n indexPositions,\n source,\n}: TreeKeyboardNavigationHookProps) => {\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === ArrowLeft) {\n const node = indexPositions[highlightedIdx];\n const parentId = getNodeParentPath(node);\n if (parentId) {\n e.preventDefault();\n const parentNode = getNodeById(source, parentId);\n if (parentNode) {\n const idx = getIndexOfNode(indexPositions, parentNode);\n if (idx !== undefined) {\n hiliteItemAtIndex(idx);\n }\n }\n }\n }\n },\n [highlightedIdx, hiliteItemAtIndex, indexPositions, source]\n );\n\n const listHandlers = {\n onKeyDown: handleKeyDown,\n };\n\n return {\n listHandlers,\n };\n};\n", "import { EditableLabel } from \"@vuu-ui/vuu-ui-controls\";\nimport { Button } from \"@salt-ds/core\";\nimport { CloseIcon } from \"@salt-ds/icons\";\nimport { default as classnames, default as cx } from \"classnames\";\nimport React, {\n HTMLAttributes,\n KeyboardEvent,\n MouseEvent,\n ReactElement,\n useRef,\n useState,\n} from \"react\";\nimport { Contribution, useViewDispatch } from \"../layout-view\";\n\nimport \"./Header.css\";\n\nexport interface HeaderProps extends HTMLAttributes<HTMLDivElement> {\n collapsed?: boolean;\n contributions?: Contribution[];\n expanded?: boolean;\n closeable?: boolean;\n onEditTitle: (value: string) => void;\n orientation?: \"horizontal\" | \"vertical\";\n tearOut?: boolean;\n}\n\nexport const Header = ({\n className: classNameProp,\n contributions,\n collapsed,\n closeable,\n onEditTitle,\n orientation: orientationProp = \"horizontal\",\n style,\n title = \"Untitled\",\n}: HeaderProps) => {\n const labelFieldRef = useRef<HTMLDivElement>(null);\n const [value, setValue] = useState<string>(title);\n const [editing, setEditing] = useState<boolean>(false);\n\n const viewDispatch = useViewDispatch();\n const handleClose = (evt: MouseEvent) =>\n viewDispatch?.({ type: \"remove\" }, evt);\n const classBase = \"vuuHeader\";\n\n const handleTitleMouseDown = () => {\n labelFieldRef.current?.focus();\n };\n\n const handleButtonMouseDown = (evt: MouseEvent) => {\n // do not allow drag to be initiated\n evt.stopPropagation();\n };\n\n const orientation = collapsed || orientationProp;\n\n const className = classnames(\n classBase,\n classNameProp,\n `${classBase}-${orientation}`\n );\n\n const handleEnterEditMode = () => {\n setEditing(true);\n };\n\n const handleTitleKeyDown = (evt: KeyboardEvent<HTMLDivElement>) => {\n if (evt.key === \"Enter\") {\n setEditing(true);\n }\n };\n\n const handleExitEditMode = (\n originalValue = \"\",\n finalValue = \"\",\n allowDeactivation = true,\n editCancelled = false\n ) => {\n setEditing(false);\n if (editCancelled) {\n setValue(originalValue);\n } else if (finalValue !== originalValue) {\n setValue(finalValue);\n onEditTitle?.(finalValue);\n }\n if (allowDeactivation === false) {\n labelFieldRef.current?.focus();\n }\n };\n\n const handleMouseDown = (e: MouseEvent) => {\n viewDispatch?.({ type: \"mousedown\" }, e);\n };\n\n const toolbarItems: ReactElement[] = [];\n const postTitleContributedItems: ReactElement[] = [];\n const actionButtons: ReactElement[] = [];\n\n contributions?.forEach((contribution, i) => {\n switch (contribution.location) {\n case \"pre-title\":\n toolbarItems.push(React.cloneElement(contribution.content, { key: i }));\n break;\n default:\n postTitleContributedItems.push(\n React.cloneElement(contribution.content, { key: i })\n );\n }\n });\n\n title &&\n toolbarItems.push(\n <EditableLabel\n editing={editing}\n key=\"title\"\n value={value}\n onChange={setValue}\n onMouseDownCapture={handleTitleMouseDown}\n onEnterEditMode={handleEnterEditMode}\n onExitEditMode={handleExitEditMode}\n onKeyDown={handleTitleKeyDown}\n ref={labelFieldRef}\n tabIndex={0}\n />\n );\n\n closeable &&\n actionButtons.push(\n <Button\n data-icon=\"close\"\n key=\"close\"\n onClick={handleClose}\n onMouseDown={handleButtonMouseDown}\n variant=\"secondary\"\n />\n );\n\n postTitleContributedItems.length > 0 &&\n toolbarItems.push(\n <div className=\"vuuTooltrayProxy\" data-align=\"end\" key=\"contributions\">\n {postTitleContributedItems}\n </div>\n );\n\n actionButtons.length > 0 &&\n toolbarItems.push(\n <div className=\"vuuTooltrayProxy\" data-align=\"end\" key=\"actions\">\n {actionButtons}\n </div>\n );\n\n return (\n <div\n className={cx(\"vuuToolbarProxy\", className)}\n style={style}\n onMouseDown={handleMouseDown}\n >\n {toolbarItems}\n {/* \n {collapsed === false ? (\n <ActionButton\n aria-label=\"Minimize View\"\n actionId=\"minimize\"\n iconName=\"minimize\"\n onClick={handleAction}\n onMouseDown={handleButtonMouseDown}\n />\n ) : null}\n {collapsed ? (\n <ActionButton\n aria-label=\"Restore View\"\n actionId=\"restore\"\n iconName=\"double-chevron-right\"\n onClick={handleAction}\n onMouseDown={handleButtonMouseDown}\n />\n ) : null}\n {expanded === false ? (\n <ActionButton\n aria-label=\"Maximize View\"\n actionId=\"maximize\"\n iconName=\"maximize\"\n onClick={handleAction}\n onMouseDown={handleButtonMouseDown}\n />\n ) : null}\n {expanded ? (\n <ActionButton\n aria-label=\"Restore View\"\n actionId=\"restore\"\n iconName=\"restore\"\n onClick={handleAction}\n onMouseDown={handleButtonMouseDown}\n />\n ) : null}\n {tearOut ? (\n <ActionButton\n aria-label=\"Tear out View\"\n actionId=\"tearout\"\n iconName=\"tear-out\"\n onClick={handleAction}\n onMouseDown={handleButtonMouseDown}\n />\n ) : null}\n {closeable ? (\n <Button\n aria-label=\"close\"\n data-icon\n onClick={handleClose}\n onMouseDown={handleButtonMouseDown}\n />\n ) : null} */}\n </div>\n );\n};\n", "import { DataSource } from \"@vuu-ui/vuu-data\";\nimport {\n ReactElement,\n RefObject,\n SyntheticEvent,\n useCallback,\n useState,\n} from \"react\";\nimport { useLayoutProviderDispatch } from \"../layout-provider\";\nimport { DragStartAction } from \"../layout-reducer\";\nimport { usePersistentState } from \"../use-persistent-state\";\nimport { ViewDispatch } from \"./ViewContext\";\nimport { ViewAction } from \"./viewTypes\";\n\nexport type ContributionLocation = \"post-title\" | \"pre-title\";\n\nexport type Contribution = {\n index?: number;\n location?: ContributionLocation;\n content: ReactElement;\n};\n\nexport const useViewActionDispatcher = (\n id: string,\n root: RefObject<HTMLDivElement>,\n viewPath?: string,\n dropTargets?: string[]\n): [ViewDispatch, Contribution[] | undefined] => {\n const { loadSessionState, purgeSessionState, purgeState, saveSessionState } =\n usePersistentState();\n\n const [contributions, setContributions] = useState<Contribution[]>(\n loadSessionState(id, \"contributions\") ?? []\n );\n const dispatchLayoutAction = useLayoutProviderDispatch();\n const updateContributions = useCallback(\n (location: ContributionLocation, content: ReactElement) => {\n const updatedContributions = contributions.concat([\n { location, content },\n ]);\n saveSessionState(id, \"contributions\", updatedContributions);\n setContributions(updatedContributions);\n },\n [contributions, id, saveSessionState]\n );\n\n const clearContributions = useCallback(() => {\n purgeSessionState(id, \"contributions\");\n setContributions([]);\n }, [id, purgeSessionState]);\n\n const handleRemove = useCallback(() => {\n const ds = loadSessionState(id, \"data-source\") as DataSource;\n if (ds) {\n ds.unsubscribe();\n }\n purgeSessionState(id);\n purgeState(id);\n dispatchLayoutAction({ type: \"remove\", path: viewPath });\n }, [\n dispatchLayoutAction,\n id,\n loadSessionState,\n purgeSessionState,\n purgeState,\n viewPath,\n ]);\n\n const handleMouseDown = useCallback(\n async (evt, index, preDragActivity): Promise<boolean> => {\n evt.stopPropagation();\n const dragRect = root.current?.getBoundingClientRect();\n return new Promise((resolve, reject) => {\n dispatchLayoutAction({\n type: \"drag-start\",\n evt,\n path: index === undefined ? viewPath : `${viewPath}.${index}`,\n dragRect,\n preDragActivity,\n dropTargets,\n resolveDragStart: resolve,\n rejectDragStart: reject,\n } as DragStartAction);\n });\n },\n [root, dispatchLayoutAction, viewPath, dropTargets]\n );\n\n const dispatchAction = useCallback(\n async <A extends ViewAction = ViewAction>(\n action: A,\n evt?: SyntheticEvent\n ): Promise<boolean | void> => {\n const { type } = action;\n switch (type) {\n case \"maximize\":\n case \"minimize\":\n case \"restore\":\n return dispatchLayoutAction({ type, path: action.path ?? viewPath });\n case \"remove\":\n return handleRemove();\n case \"mousedown\":\n return handleMouseDown(evt, action.index, action.preDragActivity);\n case \"add-toolbar-contribution\":\n return updateContributions(action.location, action.content);\n case \"remove-toolbar-contribution\":\n return clearContributions();\n default: {\n return undefined;\n }\n }\n },\n [\n dispatchLayoutAction,\n viewPath,\n handleRemove,\n handleMouseDown,\n updateContributions,\n clearContributions,\n ]\n );\n\n return [dispatchAction, contributions];\n};\n", "import { useForkRef, useIdMemo as useId } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport React, {\n ForwardedRef,\n forwardRef,\n ReactElement,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Header as VuuHeader } from \"../layout-header/Header\";\nimport { registerComponent } from \"../registry/ComponentRegistry\";\nimport { useView } from \"./useView\";\nimport { useViewResize } from \"./useViewResize\";\nimport { ViewContext, ViewContextProps } from \"./ViewContext\";\nimport { ViewProps } from \"./viewTypes\";\n\nimport \"./View.css\";\n\nconst classBase = \"vuuView\";\n\ntype Props = { [key: string]: unknown };\n\nconst getProps = (state?: Props, props?: Props) => {\n if (state && props) {\n return {\n ...state,\n ...props,\n };\n } else return state || props;\n};\n\nconst View = forwardRef(function View(\n props: ViewProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const {\n Header = VuuHeader,\n children,\n className,\n collapsed,\n closeable,\n \"data-path\": dataPath,\n \"data-resizeable\": dataResizeable,\n dropTargets,\n expanded,\n flexFill,\n id: idProp,\n header,\n orientation = \"horizontal\",\n path = dataPath,\n resize = \"responsive\",\n resizeable = dataResizeable,\n tearOut,\n style = {},\n title: titleProp,\n ...restProps\n } = props;\n\n const id = useId(idProp);\n const rootRef = useRef<HTMLDivElement>(null);\n const mainRef = useRef<HTMLDivElement>(null);\n const [componentProps, _setComponentProps] = useState<Props>();\n const {\n contributions,\n dispatchViewAction,\n load,\n loadSession,\n onConfigChange,\n onEditTitle,\n purge,\n restoredState,\n save,\n saveSession,\n title,\n } = useView({\n id,\n rootRef,\n path,\n dropTargets,\n title: titleProp,\n });\n\n useViewResize({ mainRef, resize, rootRef });\n\n const setComponentProps = useCallback((props?: Props) => {\n _setComponentProps(props);\n }, []);\n\n const getContent = () => {\n if (React.isValidElement(children) && (restoredState || componentProps)) {\n return React.cloneElement(\n children,\n getProps(restoredState, componentProps)\n );\n }\n return children;\n };\n\n const viewContextValue: ViewContextProps = useMemo(\n () => ({\n dispatch: dispatchViewAction,\n id,\n path,\n title,\n load,\n loadSession,\n onConfigChange,\n purge,\n save,\n saveSession,\n setComponentProps,\n }),\n [\n dispatchViewAction,\n id,\n load,\n loadSession,\n onConfigChange,\n path,\n purge,\n save,\n saveSession,\n setComponentProps,\n title,\n ]\n );\n\n const headerProps = typeof header === \"object\" ? header : {};\n\n return (\n <div\n {...restProps}\n className={cx(classBase, className, {\n [`${classBase}-collapsed`]: collapsed,\n [`${classBase}-expanded`]: expanded,\n [`${classBase}-resize-defer`]: resize === \"defer\",\n })}\n data-resizeable={resizeable}\n id={id}\n ref={useForkRef(forwardedRef, rootRef)}\n style={style}\n tabIndex={-1}\n >\n <ViewContext.Provider value={viewContextValue}>\n {header ? (\n <Header\n {...headerProps}\n collapsed={collapsed}\n contributions={contributions}\n expanded={expanded}\n closeable={closeable}\n onEditTitle={onEditTitle}\n orientation={orientation}\n tearOut={tearOut}\n title={title}\n />\n ) : null}\n <div className={`${classBase}-main`} ref={mainRef}>\n {getContent()}\n </div>\n </ViewContext.Provider>\n </div>\n );\n});\nView.displayName = \"View\";\n\ninterface ViewComponentType {\n (\n props: ViewProps & {\n ref?: ForwardedRef<HTMLDivElement>;\n }\n ): ReactElement<ViewProps>;\n displayName?: string;\n}\n\nconst MemoView = React.memo(View) as ViewComponentType;\n\nMemoView.displayName = \"View\";\n\nregisterComponent(\"View\", MemoView, \"view\");\n\nexport { MemoView as View };\n", "import { RefObject, useCallback, useMemo } from \"react\";\nimport { useLayoutProviderDispatch } from \"../layout-provider\";\nimport { usePersistentState } from \"../use-persistent-state\";\nimport { useViewActionDispatcher } from \"./useViewActionDispatcher\";\n\nexport interface ViewHookProps {\n id: string;\n rootRef: RefObject<HTMLDivElement>;\n path?: string;\n dropTargets?: string[];\n title?: string;\n}\n\nexport const useView = ({\n id,\n rootRef,\n path,\n dropTargets,\n title: titleProp,\n}: ViewHookProps) => {\n const layoutDispatch = useLayoutProviderDispatch();\n\n const {\n loadState,\n loadSessionState,\n purgeState,\n saveState,\n saveSessionState,\n } = usePersistentState();\n\n const [dispatchViewAction, contributions] = useViewActionDispatcher(\n id,\n rootRef,\n path,\n dropTargets\n );\n\n const title = useMemo(\n () => loadState(\"view-title\") ?? titleProp,\n [loadState, titleProp]\n );\n\n const onEditTitle = useCallback(\n (title: string) => {\n if (path) {\n layoutDispatch({ type: \"set-title\", path, title });\n }\n },\n [layoutDispatch, path]\n );\n\n const restoredState = useMemo(() => loadState(id), [id, loadState]);\n\n const load = useCallback(\n (key?: string) => loadState(id, key),\n [id, loadState]\n );\n\n const purge = useCallback(\n (key) => {\n purgeState(id, key);\n layoutDispatch({ type: \"save\" });\n },\n [id, layoutDispatch, purgeState]\n );\n\n const save = useCallback(\n (state, key) => {\n saveState(id, key, state);\n layoutDispatch({ type: \"save\" });\n },\n [id, layoutDispatch, saveState]\n );\n const loadSession = useCallback(\n (key?: string) => loadSessionState(id, key),\n [id, loadSessionState]\n );\n const saveSession = useCallback(\n (state, key) => saveSessionState(id, key, state),\n [id, saveSessionState]\n );\n\n const onConfigChange = useCallback(\n ({ type: key, ...config }) => {\n const { [key]: data } = config;\n save(data, key);\n },\n [save]\n );\n\n return {\n contributions,\n dispatchViewAction,\n load,\n loadSession,\n onConfigChange,\n onEditTitle,\n purge,\n restoredState,\n save,\n saveSession,\n title,\n };\n};\n", "import { useResizeObserver, WidthHeight } from \"../responsive\";\nimport { RefObject, useCallback, useRef } from \"react\";\n\nconst NO_MEASUREMENT: string[] = [];\n\ntype size = {\n height?: number;\n width?: number;\n};\n\nexport interface ViewResizeHookProps {\n mainRef: RefObject<HTMLDivElement>;\n resize?: \"defer\" | \"responsive\";\n rootRef: RefObject<HTMLDivElement>;\n}\n\nexport const useViewResize = ({\n mainRef,\n resize = \"responsive\",\n rootRef,\n}: ViewResizeHookProps) => {\n const deferResize = resize === \"defer\";\n\n const mainSize = useRef<size>({});\n const resizeHandle = useRef<number>();\n\n const setMainSize = useCallback(() => {\n if (mainRef.current) {\n mainRef.current.style.height = mainSize.current.height + \"px\";\n mainRef.current.style.width = mainSize.current.width + \"px\";\n }\n resizeHandle.current = undefined;\n }, [mainRef]);\n\n const onResize = useCallback(\n ({ height, width }) => {\n mainSize.current.height = height;\n mainSize.current.width = width;\n if (resizeHandle.current !== null) {\n clearTimeout(resizeHandle.current);\n }\n resizeHandle.current = window.setTimeout(setMainSize, 40);\n },\n [setMainSize]\n );\n\n useResizeObserver(\n rootRef,\n deferResize ? WidthHeight : NO_MEASUREMENT,\n onResize,\n deferResize\n );\n};\n", "import React, { SyntheticEvent, useContext } from \"react\";\nimport { ViewAction } from \"./viewTypes\";\n\nexport type ViewDispatch = <Action extends ViewAction = ViewAction>(\n action: Action,\n evt?: SyntheticEvent\n) => Promise<boolean | void>;\n\nexport interface ViewContextProps {\n dispatch?: ViewDispatch | null;\n id?: string;\n load?: (key?: string) => unknown;\n loadSession?: (key?: string) => unknown;\n onConfigChange?: (config: unknown) => void;\n path?: string;\n purge?: (key: string) => void;\n save?: (state: unknown, key: string) => void;\n saveSession?: (state: unknown, key: string) => void;\n setComponentProps: (props: { [key: string]: unknown }) => void;\n title?: string;\n}\n\nconst NO_CONTEXT = { dispatch: null } as ViewContextProps;\nexport const ViewContext = React.createContext<ViewContextProps>(NO_CONTEXT);\n\nexport const useViewDispatch = () => {\n const context = useContext(ViewContext);\n return context?.dispatch ?? null;\n};\n\nexport const useViewContext = () => useContext(ViewContext);\n", "import { PopupMenu } from \"@vuu-ui/vuu-popups\";\nimport { orientationType } from \"@vuu-ui/vuu-utils\";\nimport cx from \"classnames\";\nimport React, {\n CSSProperties,\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n} from \"react\";\nimport { asReactElements } from \"../utils\";\nimport { OverflowItem } from \"./overflow-utils\";\nimport { useOverflowContainer } from \"./useOverflowContainer\";\n\nimport \"./OverflowContainer.css\";\n\nconst classBase = \"vuuOverflowContainer\";\n\nexport interface OverflowContainerProps extends HTMLAttributes<HTMLDivElement> {\n debugId?: string;\n height: number;\n onSwitchWrappedItemIntoView?: (overflowItem: OverflowItem) => void;\n orientation?: orientationType;\n overflowIcon?: string;\n}\n\nconst WrapContainer = React.memo(\n ({\n children,\n className: classNameProp,\n height: heightProp,\n onSwitchWrappedItemIntoView,\n orientation = \"horizontal\",\n overflowIcon,\n }: OverflowContainerProps) => {\n const childElements = asReactElements(children);\n const { menuActionHandler, menuBuilder, rootRef } = useOverflowContainer({\n itemCount: childElements.length,\n onSwitchWrappedItemIntoView,\n orientation,\n });\n\n const height = orientation === \"vertical\" ? \"100%\" : `${heightProp}px`;\n // TODO measure the height, if not provided\n const style = {\n \"--overflow-container-height\": `${height}`,\n } as CSSProperties;\n\n const className = cx(`${classBase}-wrapContainer`, classNameProp, {\n [`${classBase}-horizontal`]: orientation === \"horizontal\",\n [`${classBase}-vertical`]: orientation === \"vertical\",\n });\n\n return (\n <div className={className} ref={rootRef} style={style}>\n {childElements.map((childEl, i) => {\n const {\n \"data-overflow-priority\": overflowPriority = \"0\",\n id: itemId,\n label = `Item ${i + 1}`,\n } = childEl.props;\n return (\n <div\n className={cx(`${classBase}-item`)}\n data-index={i}\n data-label={label}\n data-overflow-priority={overflowPriority}\n id={`${itemId}-wrapper`}\n key={i}\n >\n {childEl}\n </div>\n );\n })}\n <div className={`${classBase}-OverflowIndicator`} data-index=\"overflow\">\n <PopupMenu\n icon={overflowIcon}\n menuBuilder={menuBuilder}\n menuActionHandler={menuActionHandler}\n />\n </div>\n </div>\n );\n }\n);\n\nWrapContainer.displayName = \"OverflowContainer.InnerContainer\";\n\nexport const OverflowContainer = forwardRef(function OverflowContainer(\n {\n children,\n className,\n height = 44,\n onSwitchWrappedItemIntoView,\n orientation,\n overflowIcon,\n ...htmlAttributes\n }: OverflowContainerProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n return (\n <div\n {...htmlAttributes}\n className={cx(cx(classBase, className))}\n ref={forwardedRef}\n >\n <WrapContainer\n height={height}\n orientation={orientation}\n overflowIcon={overflowIcon}\n onSwitchWrappedItemIntoView={onSwitchWrappedItemIntoView}\n >\n {children}\n </WrapContainer>\n </div>\n );\n});\n", "import { MenuActionHandler, MenuBuilder } from \"@vuu-ui/vuu-data-types\";\nimport { isValidNumber, MEASURES, orientationType } from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useMemo, useRef, useState } from \"react\";\nimport { useLayoutEffectSkipFirst } from \"../utils\";\nimport {\n applyOverflowClassToWrappedItems,\n removeOverflowIndicatorIfNoLongerNeeded,\n correctForWrappedHighPriorityItems,\n getNonWrappedAndWrappedItems,\n NO_WRAPPED_ITEMS,\n highPriorityItemsHaveWrappedButShouldNotHave,\n switchWrappedItemIntoView,\n OverflowItem,\n overflowIndicatorHasWrappedButShouldNotHave,\n correctForWrappedOverflowIndicator,\n} from \"./overflow-utils\";\n\nexport interface OverflowContainerHookProps {\n itemCount: number;\n onSwitchWrappedItemIntoView?: (overflowItem: OverflowItem) => void;\n orientation?: orientationType;\n}\n\nexport const useOverflowContainer = ({\n itemCount,\n onSwitchWrappedItemIntoView,\n orientation = \"horizontal\",\n}: OverflowContainerHookProps) => {\n const [container, setContainer] = useState<HTMLDivElement | null>(null);\n const wrappedItemsRef = useRef<OverflowItem[]>(NO_WRAPPED_ITEMS);\n\n const handleResize = useCallback(async () => {\n if (container) {\n let [nonWrapped, wrapped] = getNonWrappedAndWrappedItems(\n container,\n orientation\n );\n console.log({ nonWrapped, wrapped });\n applyOverflowClassToWrappedItems(container, wrapped);\n if (overflowIndicatorHasWrappedButShouldNotHave(wrapped)) {\n wrapped = await correctForWrappedOverflowIndicator(container, wrapped);\n }\n while (\n highPriorityItemsHaveWrappedButShouldNotHave(nonWrapped, wrapped)\n ) {\n [nonWrapped, wrapped] = await correctForWrappedHighPriorityItems(\n container,\n nonWrapped,\n wrapped\n );\n }\n if (wrapped.length === 1) {\n if (removeOverflowIndicatorIfNoLongerNeeded(container)) {\n wrapped = NO_WRAPPED_ITEMS;\n }\n }\n wrappedItemsRef.current = wrapped;\n }\n }, [container, orientation]);\n\n const hasOverflowItem = (\n opt: unknown\n ): opt is {\n overflowItem: OverflowItem;\n } => typeof opt === \"object\" && opt !== null && \"overflowItem\" in opt;\n\n const [menuBuilder, menuActionHandler] = useMemo((): [\n MenuBuilder,\n MenuActionHandler\n ] => {\n return [\n () => {\n const { current: menuItems } = wrappedItemsRef;\n return menuItems.map((item: OverflowItem) => {\n return {\n label: item.label,\n action: `activate-item-${item.index}`,\n options: { overflowItem: item },\n };\n });\n },\n ({ options }) => {\n if (container && hasOverflowItem(options)) {\n // TODO do we always want to switch it into view - leave that to caller\n const [, wrappedItems] = switchWrappedItemIntoView(\n container,\n options.overflowItem\n );\n wrappedItemsRef.current = wrappedItems;\n onSwitchWrappedItemIntoView?.(options.overflowItem);\n }\n return true;\n },\n ];\n }, [container, onSwitchWrappedItemIntoView]);\n\n const resizeObserver = useMemo(() => {\n const { sizeProp } = MEASURES[orientation];\n let currentSize = 0;\n return new ResizeObserver((entries: ResizeObserverEntry[]) => {\n for (const entry of entries) {\n const { [sizeProp]: size } = entry.contentRect;\n if (isValidNumber(size) && currentSize !== size) {\n currentSize = size;\n handleResize();\n }\n }\n });\n }, [handleResize, orientation]);\n\n useLayoutEffectSkipFirst(() => {\n handleResize();\n }, [handleResize, itemCount]);\n\n useMemo(() => {\n if (container) {\n resizeObserver.observe(container);\n }\n }, [container, resizeObserver]);\n\n const callbackRef = useCallback((el: HTMLDivElement | null) => {\n setContainer(el);\n }, []);\n\n return {\n menuActionHandler,\n menuBuilder,\n rootRef: callbackRef,\n };\n};\n", "import { orientationType } from \"@salt-ds/lab\";\n\nconst NON_WRAPPED_ITEM = \".vuuOverflowContainer-item:not(.wrapped)\";\n\nexport type OverflowItem = {\n index: string;\n label: string;\n overflowPriority: string;\n};\n\nexport const sortByScreenOrder = (elements: HTMLElement[]): HTMLElement[] =>\n elements.sort((e1, e2) => {\n const {\n dataset: { index: idx1 = \"?\" },\n } = e1;\n const {\n dataset: { index: idx2 = \"?\" },\n } = e2;\n const isOverflowed1 = e1.classList.contains(\"wrapped\");\n const isOverflowed2 = e2.classList.contains(\"wrapped\");\n const isOverflowedIndicator1 = idx1 === \"overflow\";\n const isOverflowedIndicator2 = idx2 === \"overflow\";\n if (isOverflowed1 && !isOverflowed2) {\n return 1;\n } else if (!isOverflowed1 && isOverflowed2) {\n return -1;\n }\n if (isOverflowedIndicator1) {\n return 1;\n } else if (isOverflowedIndicator2) {\n return -1;\n }\n return parseInt(idx1) > parseInt(idx2) ? 1 : -1;\n });\n\nexport const NO_WRAPPED_ITEMS: OverflowItem[] = [];\n\n/**\n Identify wrapped items by comparing position of each item. Any item\n not to the right of preceeding item has wrapped. Note: on-screen \n position of items does not necessarily match document position, due\n to use of css order. This is taken into account by sorting. \n TODO support Vertical orientation\n */\nexport const getNonWrappedAndWrappedItems = (\n container: HTMLElement,\n orientation: orientationType = \"horizontal\"\n): [OverflowItem[], OverflowItem[]] => {\n const nonWrappedItems: OverflowItem[] = [];\n const wrappedItems: OverflowItem[] = [];\n let currentPosition = -1;\n let overflowed = false;\n const sortedChildren = sortByScreenOrder(\n Array.from(container.children) as HTMLElement[]\n );\n const positionAttribute = orientation === \"vertical\" ? \"top\" : \"left\";\n for (const child of sortedChildren) {\n const element = child as HTMLElement;\n const {\n dataset: { index = \"?\", label = \"?\", overflowPriority = \"0\" },\n } = element;\n const { [positionAttribute]: position } = element.getBoundingClientRect();\n if (position <= currentPosition) {\n if (index === \"overflow\") {\n wrappedItems.push(nonWrappedItems.pop() as OverflowItem);\n } else {\n wrappedItems.push({ index, label, overflowPriority });\n }\n overflowed = true;\n } else if (overflowed) {\n wrappedItems.push({ index, label, overflowPriority });\n } else {\n nonWrappedItems.push({ index, label, overflowPriority });\n }\n currentPosition = position;\n }\n return [nonWrappedItems, wrappedItems];\n};\n\nexport const applyOverflowClassToWrappedItems = (\n container: HTMLElement,\n overflowedItems: OverflowItem[]\n) => {\n let ignoreOverflow = false;\n if (overflowedItems.find(({ index }) => index === \"overflow\")) {\n if (overflowedItems.length === 1) {\n ignoreOverflow = true;\n }\n }\n for (const element of container.children) {\n const {\n dataset: { index = \"?\" },\n } = element as HTMLElement;\n if (overflowedItems.length === 0 || ignoreOverflow) {\n container.classList.remove(\"overflowed\");\n } else {\n container.classList.add(\"overflowed\");\n }\n if (\n index !== \"overflow\" &&\n overflowedItems.find((item) => item.index === index)\n ) {\n element.classList.add(\"wrapped\");\n } else {\n element.classList.remove(\"wrapped\");\n }\n }\n};\n\nconst maxPriority = (priority: number, { overflowPriority }: OverflowItem) =>\n Math.max(priority, parseInt(overflowPriority));\n\nconst minPriority = (priority: number, { overflowPriority }: OverflowItem) =>\n Math.min(priority, parseInt(overflowPriority));\n\nexport const overflowIndicatorHasWrappedButShouldNotHave = (\n wrappedItems: OverflowItem[]\n) => wrappedItems.length > 1 && wrappedItems.at(-1)?.index === \"overflow\";\n\nconst getHighestPriorityItem = (overflowItems: OverflowItem[]) => {\n let [highestPriorityItem] = overflowItems;\n for (let i = 1; i < overflowItems.length; i++) {\n const item = overflowItems[i];\n if (\n parseInt(item.overflowPriority) >\n parseInt(highestPriorityItem.overflowPriority)\n ) {\n highestPriorityItem = item;\n }\n }\n return highestPriorityItem;\n};\n\nexport const highPriorityItemsHaveWrappedButShouldNotHave = (\n nonWrappedItems: OverflowItem[],\n wrappedItems: OverflowItem[]\n) => {\n const minNonwrappedPriority = nonWrappedItems.reduce<number>(\n minPriority,\n Number.MAX_SAFE_INTEGER\n );\n const maxwrappedPriority = wrappedItems.reduce<number>(maxPriority, 0);\n if (maxwrappedPriority > minNonwrappedPriority) {\n return true;\n } else {\n return wrappedItems.length > 1 && wrappedItems.at(-1)?.index === \"overflow\";\n }\n};\n\n/** \n An edge case that may occur when reducing width from unwrapped to\n wrapped, or on first render.\n We overflow one or more items. Then, when the overflowIndicator assumes\n full width, it may itself overflow.\n*/\nexport const correctForWrappedOverflowIndicator = (\n container: HTMLElement,\n overflowedItems: OverflowItem[]\n): Promise<OverflowItem[]> =>\n new Promise((resolve) => {\n requestAnimationFrame(() => {\n const [, o2] = getNonWrappedAndWrappedItems(container);\n const newlyOverflowed = getNewItems(overflowedItems, o2);\n newlyOverflowed.forEach((item) => markElementAsWrapped(container, item));\n resolve(o2);\n });\n });\n\n/** \n An edge case that may occur when reducing width from unwrapped to\n wrapped, or on first render.\n We overflow one or more items. Then, when the overflowIndicator assumes\n full width, it may itself overflow.\n*/\nexport const correctForWrappedHighPriorityItems = (\n container: HTMLElement,\n nonWrapped: OverflowItem[],\n wrapped: OverflowItem[]\n): Promise<[OverflowItem[], OverflowItem[]]> =>\n new Promise((resolve) => {\n requestAnimationFrame(() => {\n const [, o2] = getNonWrappedAndWrappedItems(container);\n const highPriorityWrappedItem = getHighestPriorityItem(o2);\n if (highPriorityWrappedItem) {\n const [nonWrappedItems, wrappedItems] = switchWrappedItemIntoView(\n container,\n highPriorityWrappedItem\n );\n resolve([nonWrappedItems, wrappedItems]);\n } else {\n resolve([nonWrapped, wrapped]);\n }\n });\n });\n\nconst getElementByIndex = (container: HTMLElement, item: OverflowItem) =>\n container.querySelector(`[data-index=\"${item.index}\"]`) as HTMLElement;\n\nexport const markElementAsWrapped = (\n container: HTMLElement,\n item: OverflowItem\n) => {\n const el = getElementByIndex(container, item);\n if (el) {\n el.classList.add(\"wrapped\");\n } else {\n throw Error(\n `markElementAsWrapped element item with index ${item.index} not found`\n );\n }\n};\n\nexport const getElementsMarkedAsWrapped = (container: HTMLElement) =>\n Array.from(container.querySelectorAll(\".wrapped\")) as HTMLElement[];\n\nconst getNewItems = (items1: OverflowItem[], items2: OverflowItem[]) => {\n const newItems: OverflowItem[] = [];\n for (const item of items2) {\n if (!items1.find(({ index }) => index === item.index)) {\n newItems.push(item);\n }\n }\n return newItems;\n};\n\nexport const unmarkItemsWhichAreNoLongerWrapped = (\n container: HTMLElement,\n wrappedItems: OverflowItem[]\n) => {\n const elementssMarkedAsWrapped = getElementsMarkedAsWrapped(container);\n elementssMarkedAsWrapped.forEach((el) => {\n const {\n dataset: { index = \"?\" },\n } = el;\n if (!wrappedItems.find((i) => i.index === index)) {\n el.classList.remove(\"wrapped\");\n }\n });\n};\n\nconst getOverflowIndicator = (container: HTMLElement) =>\n container.querySelector('[data-index=\"overflow\"]') as HTMLElement;\nconst getOverflowedItem = (container: HTMLElement) =>\n container.querySelector(\".wrapped\") as HTMLElement;\nconst getElementWidth = (el: HTMLElement) =>\n parseInt(getComputedStyle(el).getPropertyValue(\"width\"));\n\nconst getAvailableSpace = (\n container: HTMLElement,\n overflowIndicator: HTMLElement\n) => {\n const { right: containerRight } = container.getBoundingClientRect();\n const paddingRight = parseInt(\n getComputedStyle(container).getPropertyValue(\"padding-right\")\n );\n const { right: indicatorRight } = overflowIndicator.getBoundingClientRect();\n return containerRight - paddingRight - indicatorRight;\n};\n\n/**\n An edge case. If container has grown but we still have one\n wrapped item - could the wrapped item return to the fold if the overflow\n indicaor were removed ?\n */\nexport const removeOverflowIndicatorIfNoLongerNeeded = (\n container: HTMLElement\n): boolean => {\n const overflowIndicator = getOverflowIndicator(container);\n const availableSpace = getAvailableSpace(container, overflowIndicator);\n const indicatorWidth = getElementWidth(overflowIndicator);\n const overflowedItem = getOverflowedItem(container);\n const overflowWidth = getElementWidth(overflowedItem);\n\n if (overflowWidth <= availableSpace + indicatorWidth) {\n container.classList.remove(\"overflowed\");\n overflowedItem.classList.remove(\"wrapped\");\n return true;\n }\n return false;\n};\n\nconst byPriorityDescending = (h1: Element, h2: Element) => {\n const {\n dataset: { index: i1 = \"0\", overflowPriority: p1 = \"0\" },\n } = h1 as HTMLElement;\n const {\n dataset: { index: i2 = \"0\", overflowPriority: p2 = \"0\" },\n } = h2 as HTMLElement;\n\n if (p1 > p2) {\n return -1;\n } else if (p1 < p2) {\n return 1;\n } else {\n return parseInt(i1) - parseInt(i2);\n }\n};\n\nconst getNonwrappedItemsByPriority = (container: HTMLElement) =>\n Array.from(container.querySelectorAll(NON_WRAPPED_ITEM)).sort(\n byPriorityDescending\n ) as HTMLElement[];\n\n/**\n * This is used both when an overflow menu is used to select an overflowed item\n * and when a high priority item has overflowed, whilst lower priority items\n * remain in view.\n */\nexport const switchWrappedItemIntoView = (\n container: HTMLElement,\n overflowItem: OverflowItem\n): [OverflowItem[], OverflowItem[]] => {\n const unwrappedItems = getNonwrappedItemsByPriority(container);\n const targetElement = getElementByIndex(container, overflowItem);\n let pos = -1;\n let unwrappedItem = unwrappedItems.at(pos) as HTMLElement;\n const itemWidth = getElementWidth(unwrappedItem);\n const targetWidth = getElementWidth(targetElement);\n const overflowIndicator = getOverflowIndicator(container);\n let availableSpace =\n getAvailableSpace(container, overflowIndicator) + itemWidth;\n if (availableSpace >= targetWidth) {\n switchWrapOnElements(targetElement, unwrappedItem);\n } else {\n // we need to wrap multiple items to make space for the switched item\n const { left: lastLeft } = unwrappedItem.getBoundingClientRect();\n const baseAvailableSpace = availableSpace;\n const wrapTargets = [unwrappedItem];\n while (availableSpace < targetWidth) {\n pos -= 1;\n unwrappedItem = unwrappedItems.at(pos) as HTMLElement;\n wrapTargets.push(unwrappedItem);\n const { left: nextLeft } = unwrappedItem.getBoundingClientRect();\n const extraSpace = lastLeft - nextLeft;\n availableSpace = baseAvailableSpace + extraSpace;\n }\n\n targetElement?.classList.remove(\"wrapped\");\n wrapTargets.forEach((item) => {\n item.classList.add(\"wrapped\");\n });\n }\n const [nonWrappedItems, wrappedItems] =\n getNonWrappedAndWrappedItems(container);\n unmarkItemsWhichAreNoLongerWrapped(container, wrappedItems);\n return [nonWrappedItems, wrappedItems];\n};\n\nconst switchWrapOnElements = (\n wrappedElement?: HTMLElement | null,\n nonWrappedElement?: HTMLElement\n) => {\n if (!wrappedElement || !nonWrappedElement) {\n throw Error(\"switchWrapOnElements, element undefined\");\n }\n wrappedElement.classList.remove(\"wrapped\");\n nonWrappedElement.classList.add(\"wrapped\");\n};\n", "import { uuid } from \"@vuu-ui/vuu-utils\";\nimport { List, ListItem, ListItemProps } from \"@salt-ds/lab\";\nimport cx from \"classnames\";\nimport {\n cloneElement,\n HTMLAttributes,\n memo,\n MouseEvent,\n ReactElement,\n} from \"react\";\nimport { useLayoutProviderDispatch } from \"../layout-provider\";\nimport { View, ViewProps } from \"../layout-view\";\nimport { registerComponent } from \"../registry/ComponentRegistry\";\n\nimport \"./Palette.css\";\n\nconst clonePaletteItem = (paletteItem: HTMLElement) => {\n const dolly = paletteItem.cloneNode(true) as HTMLElement;\n dolly.id = \"\";\n delete dolly.dataset.idx;\n return dolly;\n};\n\nexport interface PaletteItemProps extends ListItemProps {\n children: ReactElement;\n closeable?: boolean;\n header?: boolean;\n idx?: number;\n resize?: \"defer\";\n resizeable?: boolean;\n}\n\nexport const PaletteItem = memo(\n ({\n className,\n children: component,\n idx,\n resizeable,\n header,\n closeable,\n ...props\n }: PaletteItemProps) => {\n return (\n <ListItem\n className={cx(\"vuuPaletteItem\", className)}\n data-draggable\n {...props}\n />\n );\n }\n);\n\nPaletteItem.displayName = \"PaletteItem\";\n\nexport interface PaletteProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onSelect\"> {\n children: ReactElement[];\n orientation: \"horizontal\" | \"vertical\";\n selection?: string;\n ViewProps?: Partial<ViewProps>;\n}\n\nexport const Palette = ({\n children,\n className,\n orientation = \"horizontal\",\n ViewProps,\n ...props\n}: PaletteProps) => {\n const dispatch = useLayoutProviderDispatch();\n const classBase = \"vuuPalette\";\n\n function handleMouseDown(evt: MouseEvent) {\n const target = evt.target as HTMLElement;\n const listItemElement = target.closest(\".vuuPaletteItem\") as HTMLElement;\n const idx = parseInt(listItemElement.dataset.idx ?? \"-1\");\n if (idx !== -1) {\n console.log({\n children,\n idx,\n listItemElement,\n });\n }\n const {\n props: { caption, children: payload, template, ...props },\n } = children[idx];\n const { height, left, top, width } =\n listItemElement.getBoundingClientRect();\n const id = uuid();\n const identifiers = { id, key: id };\n const component = template ? (\n payload\n ) : (\n <View {...ViewProps} {...identifiers} {...props} title={props.label}>\n {payload}\n </View>\n );\n\n dispatch({\n dragRect: {\n left,\n top,\n right: left + width,\n bottom: top + 150,\n width,\n height,\n },\n dragElement: clonePaletteItem(listItemElement),\n evt: evt.nativeEvent,\n instructions: {\n DoNotRemove: true,\n DoNotTransform: true,\n RemoveDraggableOnDragEnd: true,\n dragThreshold: 10,\n },\n path: \"*\",\n payload: component,\n type: \"drag-start\",\n });\n }\n\n return (\n <List\n {...props}\n borderless\n className={cx(classBase, className, `${classBase}-${orientation}`)}\n maxHeight={800}\n selected={null}\n >\n {children.map((child, idx) =>\n child.type === PaletteItem\n ? cloneElement(child, {\n key: idx,\n onMouseDown: handleMouseDown,\n })\n : child\n )}\n </List>\n );\n};\n\nregisterComponent(\"Palette\", Palette, \"view\");\n", "import { useId } from \"@vuu-ui/vuu-layout\";\nimport {\n Tab,\n Tabstrip as Tabstrip,\n TabstripProps,\n} from \"@vuu-ui/vuu-ui-controls\";\nimport cx from \"classnames\";\nimport React, {\n ForwardedRef,\n forwardRef,\n ReactElement,\n ReactNode,\n useCallback,\n} from \"react\";\nimport { StackProps } from \"./stackTypes\";\n\nimport \"./Stack.css\";\n\nconst classBase = \"Tabs\";\n\nconst getDefaultTabIcon = () => undefined;\n\nconst getDefaultTabLabel = (component: ReactElement, tabIndex: number) =>\n component.props?.title ?? `Tab ${tabIndex + 1}`;\n\nconst getChildElements = <T extends ReactElement = ReactElement>(\n children: ReactNode\n): T[] => {\n const elements: T[] = [];\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child)) {\n elements.push(child as T);\n } else {\n console.warn(`Stack has unexpected child element type`);\n }\n });\n return elements;\n};\n\nconst DefaultTabstripProps: Partial<TabstripProps> = {\n allowAddTab: false,\n allowCloseTab: false,\n allowRenameTab: false,\n};\n\nexport const Stack = forwardRef(function Stack(\n {\n active = 0,\n children,\n className: classNameProp,\n getTabIcon = getDefaultTabIcon,\n getTabLabel = getDefaultTabLabel,\n id: idProp,\n keyBoardActivation = \"manual\",\n // onMouseDown,\n onAddTab,\n onMoveTab,\n onTabClose,\n onTabEdit,\n onTabSelectionChanged,\n showTabs = \"top\",\n style,\n TabstripProps = DefaultTabstripProps,\n }: StackProps,\n ref: ForwardedRef<HTMLDivElement>\n) {\n const id = useId(idProp);\n\n const { allowCloseTab, allowRenameTab } = TabstripProps;\n\n // TODO integrate with Tabstrip drag drop\n // const handleMouseDown = (e: MouseEvent<HTMLDivElement>) => {\n // const target = e.target as HTMLElement;\n // const indexedElement = target.closest(\"[data-index]\") as HTMLDivElement;\n // const isTab = indexedElement?.querySelector(\".vuuTab\");\n // if (isTab) {\n // const index = getElementIndex(indexedElement);\n // console.log(`index = ${index}`);\n // onMouseDown?.(e, index);\n // }\n // };\n\n const handleExitEditMode = useCallback(\n (\n _oldText: string,\n newText: string,\n _allowDeactivation: boolean,\n tabIndex: number\n ) => {\n onTabEdit?.(tabIndex, newText);\n },\n [onTabEdit]\n );\n\n const activeChild = () => {\n if (React.isValidElement(children)) {\n return children;\n }\n if (Array.isArray(children)) {\n return children[active] ?? null;\n }\n return null;\n };\n\n const renderTabs = () =>\n getChildElements(children).map((child, idx) => {\n const rootId = `${id}-${idx}`;\n const { closeable = allowCloseTab, id: childId } = child.props;\n return (\n <Tab\n ariaControls={`${rootId}-tab`}\n data-icon={getTabIcon(child, idx)}\n key={childId ?? idx}\n id={rootId}\n index={idx}\n label={getTabLabel(child, idx)}\n closeable={closeable}\n editable={allowRenameTab}\n />\n );\n });\n\n const child = activeChild();\n const isHorizontal = showTabs === \"left\" || showTabs === \"right\";\n const tabstripOrientation = isHorizontal ? \"vertical\" : \"horizontal\";\n\n return (\n <div\n className={cx(classBase, classNameProp, {\n [`${classBase}-horizontal`]: isHorizontal,\n })}\n style={style}\n id={id}\n ref={ref}\n >\n {showTabs ? (\n <Tabstrip\n {...TabstripProps}\n activeTabIndex={\n TabstripProps?.activeTabIndex ?? (child === null ? -1 : active)\n }\n allowDragDrop={TabstripProps.allowDragDrop !== false}\n animateSelectionThumb\n className=\"vuuTabHeader\"\n keyBoardActivation={keyBoardActivation}\n onActiveChange={onTabSelectionChanged}\n onAddTab={onAddTab}\n onCloseTab={onTabClose}\n onExitEditMode={handleExitEditMode}\n onMoveTab={onMoveTab}\n orientation={tabstripOrientation}\n // onMouseDown={handleMouseDown}\n >\n {renderTabs()}\n </Tabstrip>\n ) : null}\n {child}\n </div>\n );\n});\nStack.displayName = \"Stack\";\n", "import { useIdMemo as useId } from \"@salt-ds/core\";\nimport React, { ReactElement, useCallback, useRef } from \"react\";\nimport Component from \"../Component\";\nimport { useLayoutProviderDispatch } from \"../layout-provider\";\nimport { useViewActionDispatcher, View } from \"../layout-view\";\nimport { registerComponent } from \"../registry/ComponentRegistry\";\nimport { usePersistentState } from \"../use-persistent-state\";\nimport { Stack } from \"./Stack\";\nimport { StackProps } from \"./stackTypes\";\n\nimport \"./Stack.css\";\n\nconst defaultCreateNewChild = (index: number) => (\n <View\n resizeable\n title={`Tab ${index}`}\n style={{ flexGrow: 1, flexShrink: 0, flexBasis: 0 }}\n header\n closeable\n >\n <Component style={{ flex: 1 }} />\n </View>\n);\n\nexport const StackLayout = (props: StackProps) => {\n const ref = useRef<HTMLDivElement>(null);\n const dispatch = useLayoutProviderDispatch();\n const { loadState } = usePersistentState();\n\n const {\n createNewChild = defaultCreateNewChild,\n id: idProp,\n onTabSelectionChanged,\n path,\n ...restProps\n } = props;\n\n const { children } = props;\n\n const id = useId(idProp);\n\n const [dispatchViewAction] = useViewActionDispatcher(id, ref, path);\n\n const handleTabSelection = (nextIdx: number) => {\n if (path) {\n dispatch({ type: \"switch-tab\", path, nextIdx });\n onTabSelectionChanged?.(nextIdx);\n }\n };\n\n const handleTabClose = useCallback(\n (tabIndex: number) => {\n if (Array.isArray(children)) {\n const {\n props: { \"data-path\": dataPath, path = dataPath },\n } = children[tabIndex];\n dispatch({ type: \"remove\", path });\n }\n },\n [children, dispatch]\n );\n\n const handleTabAdd = useCallback(() => {\n if (path) {\n const tabIndex = React.Children.count(children);\n const component = createNewChild(tabIndex);\n dispatch({\n type: \"add\",\n path,\n component,\n });\n }\n }, [children, createNewChild, dispatch, path]);\n\n const handleMoveTab = useCallback(\n (fromIndex: number, toIndex: number) => {\n if (path) {\n dispatch({\n fromIndex,\n toIndex,\n path,\n type: \"move-child\",\n });\n }\n },\n [dispatch, path]\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handleMouseDown = async (e: any, index: number) => {\n let readyToDrag: undefined | ((value: unknown) => void);\n\n const preDragActivity = async () =>\n new Promise((resolve) => {\n console.log(\"preDragActivity: Ok, gonna release the drag\");\n readyToDrag = resolve;\n });\n\n const dragging = await dispatchViewAction(\n { type: \"mousedown\", index, preDragActivity },\n e\n );\n\n if (dragging) {\n readyToDrag?.(undefined);\n }\n };\n\n const handleTabEdit = (tabIndex: number, text: string) => {\n dispatch({ type: \"set-title\", path: `${path}.${tabIndex}`, title: text });\n };\n\n const getTabLabel = (component: ReactElement, idx: number) => {\n const { id, title } = component.props;\n return loadState(id, \"view-title\") || title || `Tab ${idx + 1}`;\n };\n\n return (\n <Stack\n {...restProps}\n id={id}\n getTabLabel={getTabLabel}\n onMouseDown={handleMouseDown}\n onMoveTab={handleMoveTab}\n onAddTab={handleTabAdd}\n onTabClose={handleTabClose}\n onTabEdit={handleTabEdit}\n onTabSelectionChanged={handleTabSelection}\n ref={ref}\n />\n );\n};\nStackLayout.displayName = \"Stack\";\n\nregisterComponent(\"Stack\", StackLayout, \"container\");\n", "import React, { useState } from \"react\";\n\nimport { LayoutConfigurator, LayoutTreeViewer } from \"..\";\nimport { followPathToComponent } from \"../..\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const ConfigWrapper = ({ children }: any) => {\n const designMode = false;\n const [layout, setLayout] = useState(children);\n const [selectedComponent, setSelectedComponent] = useState(children);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handleSelection = (selectedPath: any) => {\n const targetComponent = followPathToComponent(layout, selectedPath);\n setSelectedComponent(targetComponent);\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const handleChange = (property: any, value: any) => {\n console.log(`change ${property} -> ${value}`);\n\n const newComponent = React.cloneElement(selectedComponent, {\n style: {\n ...selectedComponent.props.style,\n [property]: value,\n },\n });\n setSelectedComponent(newComponent);\n setLayout(React.cloneElement(layout, {}, newComponent));\n };\n\n return (\n <div data-design-mode={`${designMode}`}>\n {layout}\n <br />\n <div style={{ display: \"flex\" }}>\n <LayoutConfigurator\n height={300}\n managedStyle={selectedComponent.props.style}\n width={300}\n onChange={handleChange}\n style={undefined}\n />\n <LayoutTreeViewer\n layout={layout}\n onSelect={handleSelection}\n style={{ width: 300, height: 300, backgroundColor: \"#ccc\" }}\n />\n </div>\n {/* <StateButton\n defaultChecked={false}\n onChange={(e, value) => setDesignMode(value)}>Design Mode</StateButton> */}\n </div>\n );\n};\n", "import \"./layout-configurator.css\";\nimport { FormField, Input } from \"@salt-ds/core\";\n\nconst NO_STYLE = {};\n\nconst DIMENSIONS = {\n margin: {\n top: \"marginTop\",\n right: \"marginRight\",\n bottom: \"marginBottom\",\n left: \"marginLeft\",\n },\n border: {\n top: \"borderTopWidth\",\n right: \"borderRightWidth\",\n bottom: \"borderBottomWidth\",\n left: \"borderLeftWidth\",\n },\n padding: {\n top: \"paddingTop\",\n right: \"paddingRight\",\n bottom: \"paddingBottom\",\n left: \"paddingLeft\",\n },\n};\n\nconst LayoutBox = ({ feature, children, style, onChange }) => {\n return (\n <div className={`LayoutBox layout-${feature} layout-outer`}>\n <div className={`layout-top`}>\n <span className=\"layout-title\">{feature}</span>\n <FormField className=\"layout-input\" style={{ width: 30 }}>\n <Input\n value={style.top}\n onChange={(evt, value) => onChange(feature, \"top\", value)}\n />\n </FormField>\n </div>\n <div className={`layout-inner`}>\n <div className={`layout-left`}>\n <FormField className=\"layout-input\" style={{ width: 30 }}>\n <Input\n value={style.left}\n onChange={(evt, value) => onChange(feature, \"left\", value)}\n />\n </FormField>\n </div>\n {children}\n <div className={`layout-right`}>\n <FormField className=\"layout-input\" style={{ width: 30 }}>\n <Input\n value={style.right}\n onChange={(evt, value) => onChange(feature, \"right\", value)}\n />\n </FormField>\n </div>\n </div>\n <div className={`layout-bottom`}>\n <FormField className=\"layout-input\" style={{ width: 30 }}>\n <Input\n value={style.bottom}\n onChange={(evt, value) => onChange(feature, \"bottom\", value)}\n />\n </FormField>\n </div>\n </div>\n );\n};\n\nexport const MARGIN_STYLES = {\n margin: true,\n marginTop: true,\n marginRight: true,\n marginBottom: true,\n marginLeft: true,\n};\n\nexport const PADDING_STYLES = {\n padding: true,\n paddingTop: true,\n paddingRight: true,\n paddingBottom: true,\n paddingLeft: true,\n};\n\nexport const BORDER_STYLES = {\n border: true,\n borderColor: true,\n borderWidth: true,\n borderTopWidth: true,\n borderRightWidth: true,\n borderBottomWidth: true,\n borderLeftWidth: true,\n};\n\nconst CSS_DIGIT = \"(\\\\d+)(?:px)?\";\nconst CSS_MEASURE = `^(?:${CSS_DIGIT}(?:\\\\s${CSS_DIGIT}(?:\\\\s${CSS_DIGIT}(?:\\\\s${CSS_DIGIT})?)?)?)$`;\nconst CSS_REX = new RegExp(CSS_MEASURE);\nconst BORDER_REX = /^(?:(\\d+)(?:px)\\ssolid\\s([a-zA-Z,0-9().]+))$/;\n\nexport const LayoutConfigurator = ({\n height,\n managedStyle,\n onChange,\n style,\n width,\n}) => {\n const state = normalizeStyle(managedStyle);\n\n const handleChange = (feature, dimension, strValue) => {\n const value = parseInt(strValue || \"0\", 10);\n const property = DIMENSIONS[feature][dimension];\n onChange(property, value);\n };\n\n const {\n marginTop: mt = 0,\n marginRight: mr = 0,\n marginBottom: mb = 0,\n marginLeft: ml = 0,\n } = state;\n const {\n borderTopWidth: bt = 0,\n borderRightWidth: br = 0,\n borderBottomWidth: bb = 0,\n borderLeftWidth: bl = 0,\n } = state;\n const {\n paddingTop: pt = 0,\n paddingRight: pr = 0,\n paddingBottom: pb = 0,\n paddingLeft: pl = 0,\n } = state;\n return (\n <div className=\"LayoutConfigurator\" style={{ width, height, ...style }}>\n <LayoutBox\n feature=\"margin\"\n style={{ top: mt, right: mr, bottom: mb, left: ml }}\n onChange={handleChange}\n >\n <LayoutBox\n feature=\"border\"\n style={{ top: bt, right: br, bottom: bb, left: bl }}\n onChange={handleChange}\n >\n <LayoutBox\n feature=\"padding\"\n style={{ top: pt, right: pr, bottom: pb, left: pl }}\n onChange={handleChange}\n >\n <div className=\"layout-content\" />\n </LayoutBox>\n </LayoutBox>\n </LayoutBox>\n </div>\n );\n};\n\n// TODO merge the following two functions\nexport function XXXnormalizeStyles(\n layoutStyle = NO_STYLE,\n visualStyle = NO_STYLE\n) {\n const {\n margin,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n padding,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n ...style\n } = layoutStyle;\n\n if (typeof margin === \"number\") {\n style.marginTop =\n style.marginRight =\n style.marginBottom =\n style.marginLeft =\n margin;\n } else if (typeof margin === \"string\") {\n const match = CSS_REX.exec(margin);\n if (match === null) {\n console.error(`Invalid css value for margin '${margin}'`);\n } else {\n const [, pos1, pos2, pos3, pos4] = match;\n const pos123 = pos1 && pos2 && pos3;\n if (pos123 && pos4) {\n style.marginTop = parseInt(pos1, 10);\n style.marginRight = parseInt(pos2, 10);\n style.marginBottom = parseInt(pos3, 10);\n style.marginLeft = parseInt(pos4, 10);\n } else if (pos123) {\n style.marginTop = parseInt(pos1, 10);\n style.marginRight = style.marginLeft = parseInt(pos2, 10);\n style.marginBottom = parseInt(pos3, 10);\n } else if (pos1 && pos2) {\n style.marginTop = style.marginBottom = parseInt(pos1, 10);\n style.marginRight = style.marginLeft = parseInt(pos2, 10);\n } else {\n style.marginTop =\n style.marginRight =\n style.marginBottom =\n style.marginLeft =\n parseInt(pos1, 10);\n }\n }\n }\n if (typeof marginTop === \"number\") style.marginTop = marginTop;\n if (typeof marginRight === \"number\") style.marginRight = marginRight;\n if (typeof marginBottom === \"number\") style.marginBottom = marginBottom;\n if (typeof marginLeft === \"number\") style.marginLeft = marginLeft;\n\n if (typeof padding === \"number\") {\n style.paddingTop =\n style.paddingRight =\n style.paddingBottom =\n style.paddingLeft =\n padding;\n } else if (typeof padding === \"string\") {\n const match = CSS_REX.exec(padding);\n if (match === null) {\n console.error(`Invalid css value for padding '${padding}'`);\n } else {\n const [, pos1, pos2, pos3, pos4] = match;\n const pos123 = pos1 && pos2 && pos3;\n if (pos123 && pos4) {\n style.paddingTop = parseInt(pos1, 10);\n style.paddingRight = parseInt(pos2, 10);\n style.paddingBottom = parseInt(pos3, 10);\n style.paddingLeft = parseInt(pos4, 10);\n } else if (pos123) {\n style.paddingTop = parseInt(pos1, 10);\n style.paddingRight = style.paddingLeft = parseInt(pos2, 10);\n style.paddingBottom = parseInt(pos3, 10);\n } else if (pos1 && pos2) {\n style.paddingTop = style.paddingBottom = parseInt(pos1, 10);\n style.paddingRight = style.paddingLeft = parseInt(pos2, 10);\n } else {\n style.paddingTop =\n style.paddingRight =\n style.paddingBottom =\n style.paddinggLeft =\n parseInt(pos1, 10);\n }\n }\n }\n if (typeof paddingTop === \"number\") style.paddingTop = paddingTop;\n if (typeof paddingRight === \"number\") style.paddingRight = paddingRight;\n if (typeof paddingBottom === \"number\") style.paddingBottom = paddingBottom;\n if (typeof paddingLeft === \"number\") style.paddingLeft = paddingLeft;\n\n return normalizeStyle(style, visualStyle);\n}\n\nfunction normalizeStyle(managedStyle = NO_STYLE) {\n const style = { ...managedStyle };\n\n // if (BORDER_LIST.some(bs => style[bs])) {\n let match;\n\n let {\n border,\n borderWidth,\n borderTopWidth,\n borderRightWidth,\n borderBottomWidth,\n borderLeftWidth,\n borderColor,\n margin,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n padding,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n ...rest\n } = style;\n\n let marginStyles = {};\n let paddingStyles = {};\n\n if (typeof margin === \"number\") {\n style.marginTop =\n style.marginRight =\n style.marginBottom =\n style.marginLeft =\n margin;\n marginStyles = {\n marginTop: margin,\n marginRight: margin,\n marginBottom: margin,\n marginLeft: margin,\n };\n }\n\n if (typeof padding === \"number\") {\n style.paddingTop =\n style.paddingRight =\n style.paddingBottom =\n style.paddingLeft =\n padding;\n paddingStyles = {\n paddingTop: padding,\n paddingRight: padding,\n paddingBottom: padding,\n paddingLeft: padding,\n };\n }\n\n if (\n border ||\n borderWidth ||\n borderTopWidth ||\n borderRightWidth ||\n borderBottomWidth ||\n borderLeftWidth\n ) {\n if (typeof border === \"string\" && (match = BORDER_REX.exec(border))) {\n // what if both border and borderWidth are specified ?\n [, borderWidth, borderColor] = match;\n borderWidth = parseInt(borderWidth, 10);\n }\n\n if (borderWidth) {\n borderTopWidth =\n borderTopWidth === undefined ? borderWidth : borderTopWidth;\n borderRightWidth =\n borderRightWidth === undefined ? borderWidth : borderRightWidth;\n borderBottomWidth =\n borderBottomWidth === undefined ? borderWidth : borderBottomWidth;\n borderLeftWidth =\n borderLeftWidth === undefined ? borderWidth : borderLeftWidth;\n }\n\n borderColor = borderColor || \"black\";\n const boxShadow = `\n ${borderColor} ${borderLeftWidth || 0}px ${\n borderTopWidth || 0\n }px 0 0 inset,\n ${borderColor} ${-borderRightWidth || 0}px ${\n -borderBottomWidth || 0\n }px 0 0 inset`;\n\n return {\n ...rest,\n ...marginStyles,\n ...paddingStyles,\n borderTopWidth,\n borderRightWidth,\n borderBottomWidth,\n borderLeftWidth,\n borderColor,\n borderStyle: \"solid\",\n boxShadow,\n };\n } else {\n return style;\n }\n // } else {\n // return style;\n // }\n}\n", "import React from \"react\";\nimport cx from \"classnames\";\nimport { typeOf } from \"../../utils\";\n\nimport \"./layout-tree-viewer.css\";\nimport { Tree } from \"@vuu-ui/vuu-ui-controls\";\n\nconst classBaseTree = \"hwLayoutTreeViewer\";\n\nconst toTreeJson = (component, path = \"0\") => {\n return {\n label: typeOf(component),\n path,\n childNodes: React.Children.map(component.props.children, (child, i) =>\n toTreeJson(child, path ? `${path}.${i}` : `${i}`)\n ),\n };\n};\n\nexport const LayoutTreeViewer = ({ layout, onSelect, style }) => {\n const treeJson = [toTreeJson(layout)];\n\n const handleSelection = (evt, [{ path }]) => {\n onSelect(path);\n };\n\n return (\n <div className={cx(classBaseTree)} style={style}>\n <Tree\n source={treeJson}\n groupSelection=\"single\"\n onSelectionChange={handleSelection}\n />\n </div>\n );\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["src_exports", "__export", "Action", "BORDER_STYLES", "Component_default", "ComponentRegistry", "ConfigWrapper", "DockLayout_default", "Draggable", "DraggableLayout", "Drawer_default", "DropMenu", "DropTarget", "Flexbox_default", "FlexboxLayout", "FluidGrid", "FluidGridLayout", "Header", "HeightOnly", "LayoutActionType", "LayoutConfigurator", "LayoutProvider", "LayoutProviderContext", "LayoutProviderVersion", "LayoutTreeViewer", "MARGIN_STYLES", "NO_WRAPPED_ITEMS", "OverflowContainer", "PADDING_STYLES", "Palette", "PaletteItem", "Placeholder", "Stack", "StackLayout", "MemoView", "ViewContext", "WidthHeight", "WidthOnly", "XXXnormalizeStyles", "applyLayout", "applyLayoutProps", "applyOverflowClassToWrappedItems", "asReactElements", "componentToJson", "computeMenuPosition", "containerOf", "correctForWrappedHighPriorityItems", "correctForWrappedOverflowIndicator", "createFlexbox", "createPlaceHolder", "expandFlex", "extractResponsiveProps", "findTarget", "followPath", "followPathToComponent", "followPathToParent", "getChild", "getChildProp", "getElementsMarkedAsWrapped", "getFlexDimensions", "getFlexOrIntrinsicStyle", "getFlexStyle", "getIntrinsicSize", "getManagedDimension", "getNonWrappedAndWrappedItems", "getPersistentState", "getProp", "getProps", "hasPersistentState", "hasUnboundedFlexStyle", "highPriorityItemsHaveWrappedButShouldNotHave", "identifyDropTarget", "isContainer", "isLayoutComponent", "isRegistered", "isResponsiveAttribute", "isTabstrip", "isTypeOf", "isView", "layoutFromJson", "layoutReducer", "layoutToJSON", "markElementAsWrapped", "nextLeaf", "nextStep", "overflowIndicatorHasWrappedButShouldNotHave", "previousLeaf", "processLayoutElement", "registerComponent", "removeOverflowIndicatorIfNoLongerNeeded", "resetPath", "resizeObserver", "serializeProps", "setPersistentState", "setRef", "sortByScreenOrder", "switchWrappedItemIntoView", "typeOf", "unmarkItemsWhichAreNoLongerWrapped", "useBreakpoints", "useId", "useLayoutEffectSkipFirst", "useLayoutProviderDispatch", "useLayoutProviderVersion", "usePersistentState", "useResizeObserver", "useViewActionDispatcher", "useViewContext", "useViewDispatch", "wrapIntrinsicSizeComponentWithFlexbox", "__toCommonJS", "import_vuu_utils", "import_classnames", "_containers", "_views", "ComponentRegistry", "isContainer", "componentType", "isView", "isLayoutComponent", "type", "isRegistered", "className", "registerComponent", "componentName", "component", "import_core", "import_classnames", "import_react", "import_jsx_runtime", "classBase", "sizeAttribute", "value", "getStyle", "styleProp", "sizeOpen", "sizeClosed", "hasSizeOpen", "hasSizeClosed", "Drawer", "children", "classNameProp", "clickToOpen", "defaultOpen", "openProp", "position", "inline", "onClick", "peekaboo", "toggleButton", "props", "open", "setOpen", "className", "cx", "toggleDrawer", "style", "handleClick", "renderToggleButton", "Drawer_default", "import_jsx_runtime", "isDrawer", "component", "Drawer_default", "isVertical", "position", "DockLayout", "props", "children", "classNameProp", "id", "style", "classBase", "drawers", "content", "verticalDrawers", "horizontalDrawers", "orientation", "className", "cx", "DockLayout_default", "registerComponent", "import_react", "import_jsx_runtime", "Component", "resizeable", "props", "ref", "Component_default", "registerComponent", "import_react", "NO_PROPS", "getProp", "component", "propName", "_a", "props", "getProps", "getChildProp", "container", "target", "rest", "typeOf", "element", "_a", "type", "elementName", "isTypeOf", "removeFinalPathSegment", "path", "pos", "followPathToParent", "source", "dataPath", "sourcePath", "getProps", "followPath", "findTarget", "test", "children", "props", "React", "array", "child", "target", "containerOf", "idx", "finalStep", "nextStep", "getProp", "getChild", "followPathToComponent", "component", "paths", "getChildren", "c", "i", "findTargetById", "id", "throwIfNotFound", "idProp", "childArray", "route", "message", "nextLeaf", "root", "parent", "pathIndices", "lastIdx", "firstLeaf", "parentIdx", "nextParent", "isContainer", "typeOf", "previousLeaf", "lastLeaf", "layoutRoot", "pathSoFar", "targetPath", "followPathToEnd", "pathVisited", "endOfTheLine", "n", "resetPath", "model", "additionalProps", "pathPropName", "setRef", "ref", "value", "import_react", "EMPTY_ARRAY", "vuuComponentIdCount", "asReactElements", "children", "isArray", "count", "useLayoutEffectSkipFirst", "func", "deps", "goodToGo", "useId", "id", "expandFlex", "flex", "positionValues", "RelativeDropPosition", "Position", "_position", "str", "NORTH", "SOUTH", "EAST", "WEST", "HEADER", "CENTRE", "BoxModel", "model", "dropTargetPaths", "measurements", "measureRootComponent", "layout", "x", "y", "validDropTargets", "allBoxesContainingPoint", "pointPositionWithinRect", "rect", "borderZone", "width", "height", "posX", "posY", "closeToTheEdge", "getPosition", "targetOrientation", "BEFORE", "AFTER", "pctX", "pctY", "position", "tab", "containsPoint", "tabCount", "targetTab", "left", "right", "tabWidth", "getPositionWithinBox", "centerBox", "getCenteredBox", "top", "bottom", "pctSize", "pctOffset", "w", "h", "rootComponent", "dropTargets", "id", "dataPath", "path", "getProps", "type", "typeOf", "el", "measureComponentDomElement", "measureComponent", "isContainer", "collectChildMeasurements", "component", "header", "headerEl", "titleEl", "preX", "preY", "children", "style", "active", "isFlexbox", "isStack", "isTower", "isTerrace", "childMeasurements", "_child", "idx", "omitDragging", "child", "expandedMeasurements", "i", "all", "localPreX", "localPosX", "localPreY", "localPosY", "gapPre", "gapPos", "n", "componentMeasurements", "childType", "scrolling", "scrollHeight", "boxes", "dropTargetPath", "scrollIntoViewIfNeccesary", "nestedBoxes", "scrollTop", "scrollMax", "SCALE_FACTOR", "DragState", "zone", "mouseX", "mouseY", "measurements", "intrinsicSize", "rect", "x", "y", "pctX", "pctY", "pointPositionWithinRect", "scaleFactor", "leadX", "trailX", "leadY", "trailY", "scaledWidth", "scaledHeight", "scaleDiff", "leadXScaleDiff", "leadYScaleDiff", "trailXScaleDiff", "trailYScaleDiff", "_a", "_b", "xy", "mousePos", "state", "mouseConstraint", "posConstraint", "previousPos", "diff", "dir", "pos", "isTabstrip", "dropTarget", "typeOf", "north", "south", "east", "west", "positionValues", "eastwest", "northsouth", "DropTarget", "component", "pos", "clientRect", "nextDropTarget", "tab", "tabLeft", "tabWidth", "positionRelativeToTab", "RelativeDropPosition", "lineWidth", "dragState", "l", "t", "r", "b", "_a", "_b", "top", "left", "right", "bottom", "header", "inset", "gap", "tabHeight", "_c", "_d", "rect", "x", "y", "height", "width", "guideLines", "suggestedWidth", "suggestedHeight", "position", "intrinsicWidth", "intrinsicHeight", "sizeHeight", "sizeWidth", "Position", "halfHeight", "halfWidth", "dropTargets", "identifyDropTarget", "rootLayout", "measurements", "intrinsicSize", "validDropTargets", "allBoxesContainingPoint", "BoxModel", "containers", "dataPath", "path", "isRowPlaceholder", "getProps", "getPosition", "box", "nextTarget", "targets", "targetPosition", "getTargetPosition", "containerPos", "container", "closeToTheEdge", "containingBox", "closeToTop", "closeToRight", "closeToBottom", "closeToLeft", "atTop", "atRight", "atBottom", "atLeft", "isVBox", "isTabbedContainer", "isHBox", "import_vuu_popups", "import_classnames", "import_jsx_runtime", "computeMenuPosition", "dropTarget", "offsetTop", "offsetLeft", "pos", "box", "menuOffset", "classBase", "DropMenu", "className", "onHover", "orientation", "dropTargets", "cx", "target", "import_jsx_runtime", "_multiDropOptions", "_hoverDropTarget", "_shiftedTab", "onHoverDropTarget", "dropTarget", "start", "x", "y", "point", "pathFromPoints", "p1", "points", "pathFromGuideLines", "guideLines", "x1", "y1", "x2", "y2", "x3", "y3", "x4", "y4", "insertSVGRoot", "root", "container", "DropTargetCanvas", "dragRect", "tabMode", "d", "dropOutlinePath", "clearShiftedTab", "width", "height", "tabLeft", "tabWidth", "tabHeight", "tabOnly", "left", "dragState", "wasMultiDrop", "moveExistingTabs", "top", "orientation", "computeMenuPosition", "component", "DropMenu", "targetDropOutline", "l", "t", "r", "b", "w", "h", "path", "animation", "dropGuidePath", "cssShiftRight", "cssShiftBack", "_a", "_b", "AFTER", "BEFORE", "RelativeDropPosition", "Stack", "tab", "id", "tabEl", "tabOffset", "selector", "_dragStartCallback", "_dragMoveCallback", "_dragEndCallback", "_dragStartX", "_dragStartY", "_dragContainer", "_dragState", "_dropTarget", "_validDropTargetPaths", "_dragInstructions", "_measurements", "_simpleDrag", "_dragThreshold", "_mouseDownTimer", "DEFAULT_DRAG_THRESHOLD", "_dropTargetRenderer", "DropTargetCanvas", "SCALE_FACTOR", "getDragContainer", "rootContainer", "dragContainerPath", "followPath", "findTarget", "props", "Draggable", "dragStartCallback", "dragInstructions", "preDragMousemoveHandler", "preDragMouseupHandler", "top", "left", "right", "bottom", "dragPos", "dragHandler", "intrinsicSize", "dropTargets", "initDrag", "x_diff", "y_diff", "dragRect", "dataPath", "path", "getProps", "id", "target", "BoxModel", "dragZone", "DragState", "pctX", "pctY", "dragMousemoveHandler", "dragMouseupHandler", "evt", "x", "y", "dragState", "currentDropTarget", "dropTarget", "newX", "newY", "identifyDropTarget", "onDragEnd", "DropTarget", "Position", "import_classnames", "import_react", "import_jsx_runtime", "DraggableLayout", "children", "classNameProp", "dropTarget", "_", "htmlAttributes", "forwardedRef", "className", "classnames", "componentName", "registerComponent", "import_core", "import_classnames", "import_react", "import_vuu_utils", "import_react", "import_classnames", "import_jsx_runtime", "classBase", "Placeholder", "className", "closeable", "flexFill", "resizeable", "shim", "props", "cx", "registerComponent", "import_classnames", "import_react", "import_jsx_runtime", "Splitter", "React", "column", "index", "onDrag", "onDragEnd", "onDragStart", "style", "ignoreClick", "rootRef", "lastPos", "active", "setActive", "handleKeyDownDrag", "key", "shiftKey", "distance", "handleKeyDownInitDrag", "evt", "keyDownHandlerRef", "handleKeyDown", "handleMouseMove", "e", "pos", "diff", "handleMouseUp", "_a", "handleMouseDown", "handleClick", "handleBlur", "className", "cx", "import_vuu_utils", "import_react", "placeHolderProps", "NO_STYLE", "auto", "defaultFlexStyle", "CROSS_DIMENSION", "getFlexDimensions", "flexDirection", "isPercentageSize", "value", "getIntrinsicSize", "component", "width", "height", "numHeight", "numWidth", "getFlexStyle", "dimension", "pos", "crossDimension", "intrinsicCrossSize", "intrinsicStyles", "hasUnboundedFlexStyle", "flex", "flexGrow", "flexShrink", "flexBasis", "getFlexOrIntrinsicStyle", "intrinsicSize", "wrapIntrinsicSizeComponentWithFlexbox", "path", "clientRect", "dropRect", "wrappedChildren", "pathIndex", "endPlaceholder", "startPlaceholder", "dropLeft", "dropTop", "dropRight", "dropBottom", "createPlaceHolder", "version", "style", "getProps", "resetPath", "createFlexbox", "getFlexValue", "flexFill", "props", "children", "id", "resizeable", "React", "ComponentRegistry", "baseStyle", "size", "NO_INTRINSIC_SIZE", "SPLITTER", "PLACEHOLDER", "isIntrinsicallySized", "item", "getBreakPointValues", "breakPoints", "component", "values", "breakPoint", "getProp", "gatherChildMeta", "children", "dimension", "child", "index", "_a", "resizeable", "intrinsicSize", "getIntrinsicSize", "flexOpen", "hasUnboundedFlexStyle", "findSplitterAndPlaceholderPositions", "childMeta", "count", "allIntrinsic", "splitterPositions", "i", "resizeablesLeft", "identifyResizeParties", "contentMeta", "idx", "idx1", "getLeadingResizeablePos", "idx2", "getTrailingResizeablePos", "participants", "bystanders", "identifyResizeBystanders", "pos", "isResizeable", "placeholder", "splitter", "originalContentOnly", "meta", "useSplitterResizing", "childrenProp", "onSplitterMoved", "style", "rootRef", "metaRef", "contentRef", "assignedKeys", "forceUpdate", "setContent", "content", "isColumn", "dimension", "children", "React", "handleDragStart", "index", "contentMeta", "participants", "bystanders", "identifyResizeParties", "_a", "el", "size", "minSize", "measureElement", "handleDrag", "idx", "distance", "resizeContent", "handleDragEnd", "createSplitter", "i", "Splitter", "buildContent", "keys", "childMeta", "gatherChildMeta", "splitterAndPlaceholderPositions", "findSplitterAndPlaceholderPositions", "child", "PLACEHOLDER", "createPlaceholder", "key", "SPLITTER", "updateMeta", "currentSize", "flexOpen", "flexBasis", "hasCurrentSize", "actualFlexBasis", "resizeTargets", "target1", "multiplier", "leadingItem", "leadingSize", "trailingItem", "trailingSize", "Placeholder", "minSizeVal", "import_jsx_runtime", "classBase", "Flexbox", "props", "ref", "breakPoints", "children", "column", "classNameProp", "flexFill", "gap", "fullPage", "id", "onSplitterMoved", "resizeable", "row", "spacing", "splitterSize", "style", "rest", "content", "rootRef", "useSplitterResizing", "className", "cx", "Flexbox_default", "import_react", "Action", "import_react", "import_react", "import_vuu_utils", "import_react", "import_vuu_utils", "import_react", "import_react", "persistentState", "sessionState", "getPersistentState", "id", "hasPersistentState", "setPersistentState", "value", "usePersistentState", "loadSessionState", "key", "state", "saveSessionState", "data", "purgeSessionState", "_doomedState", "rest", "loadState", "saveState", "purgeState", "getManagedDimension", "style", "theKidHasNoStyle", "applyLayoutProps", "component", "path", "layoutProps", "children", "getChildLayoutProps", "typeOf", "React", "processLayoutElement", "layoutElement", "previousLayout", "type", "applyLayout", "props", "getLayoutProps", "parentType", "_a", "_b", "prevActive", "dataPath", "prevPath", "prevId", "prevStyle", "getProps", "prevMatch", "id", "active", "key", "getStyle", "isLayoutComponent", "layoutFromJson", "previousChildren", "getLayoutChildren", "kids", "isContainer", "child", "childType", "previousType", "flex", "otherStyles", "expandFlex", "state", "componentType", "ComponentRegistry", "setPersistentState", "i", "layoutToJSON", "componentToJson", "_omit", "hasPersistentState", "getPersistentState", "serializeProps", "otherProps", "result", "value", "serializeValue", "k", "v", "getInsertTabBeforeAfter", "stack", "pos", "_a", "tabs", "tabCount", "index", "positionRelativeToTab", "insertIntoContainer", "container", "targetContainer", "newComponent", "containerActive", "containerChildren", "containerPath", "getProps", "existingComponentPath", "getProp", "idx", "finalStep", "nextStep", "insertedIdx", "children", "insertIntoChildren", "child", "active", "typeOf", "React", "count", "id", "resetPath", "insertBesideChild", "existingComponent", "insertionPosition", "clientRect", "dropRect", "updateChildren", "intrinsicSize", "getIntrinsicSize", "insertIntrinsicSizedComponent", "insertFlexComponent", "getLeadingPlaceholderSize", "flexDirection", "top", "right", "bottom", "left", "rectLeft", "rectTop", "rectRight", "rectBottom", "dimension", "crossDimension", "contraDirection", "getFlexDimensions", "intrinsicCrossSize", "path", "placeholderSize", "itemToInsert", "size", "wrapIntrinsicSizeComponentWithFlexbox", "placeholder", "createPlaceHolder", "intrinsicCrossChildSize", "targetRect", "arr", "i", "insertedComponent", "getStyledComponents", "version", "dim", "getManagedDimension", "splitterSize", "existingComponentStyle", "getFlexOrIntrinsicStyle", "newComponentStyle", "_1", "_2", "_3", "style", "import_react", "import_react", "replaceChild", "model", "target", "replacement", "_replaceChild", "child", "path", "getProp", "resizeable", "style", "getProps", "newChild", "applyLayoutProps", "React", "swapChild", "op", "idx", "finalStep", "nextStep", "children", "Action", "minimize", "restore", "parent", "parentStyle", "childStyle", "width", "height", "flexBasis", "flexShrink", "flexGrow", "rest", "restoreStyle", "collapsed", "moveChild", "layoutRoot", "fromIndex", "path", "toIndex", "target", "followPath", "children", "getProps", "replacementChildren", "moveChildWithinChildren", "replacement", "swapChild", "newChildren", "child", "LayoutActionType", "import_react", "removeChild", "layoutRoot", "path", "target", "followPath", "targetParent", "followPathToParent", "children", "getProps", "allOtherChildrenArePlaceholders", "flexBasis", "display", "flexDirection", "style", "containerPath", "getProp", "newLayout", "swapChild", "createPlaceHolder", "hasAdjacentPlaceholders", "collapsePlaceholders", "_removeChild", "container", "child", "props", "componentChildren", "preserve", "active", "idx", "finalStep", "nextStep", "type", "typeOf", "unwrap", "isFlexible", "canBeMadeFlexible", "makeFlexible", "i", "resetPath", "React", "flexGrow", "flexShrink", "width", "height", "unwrappedChild", "dim", "size", "element", "wasPlaceholder", "isPlaceholder", "_collapsePlaceHolders", "newChildren", "placeholders", "mergePlaceholders", "placeholder", "targetStyle", "import_react", "resizeFlexChild", "layoutRoot", "path", "size", "target", "followPath", "style", "getProps", "newStyle", "replacement", "React", "swapChild", "resizeFlexChildren", "sizes", "children", "dimension", "replacementChildren", "applySizesToChildren", "child", "i", "actualFlexBasis", "meta", "currentSize", "flexBasis", "newSize", "applySizeToChild", "hasSize", "flexShrink", "flexGrow", "import_vuu_utils", "import_react", "isHtmlElement", "component", "firstLetter", "typeOf", "wrap", "container", "existingComponent", "newComponent", "pos", "clientRect", "dropRect", "containerChildren", "containerPath", "getProps", "existingComponentPath", "getProp", "idx", "finalStep", "nextStep", "children", "updateChildren", "child", "index", "React", "intrinsicSize", "getIntrinsicSize", "wrapIntrinsicSizedComponent", "wrapFlexComponent", "_a", "version", "type", "flexDirection", "showTabsProp", "getLayoutSpecForWrapper", "style", "existingComponentStyle", "newComponentStyle", "getWrappedFlexStyles", "targetFirst", "isTargetFirst", "active", "newComponentProps", "existingComponentProps", "showTabs", "splitterSize", "id", "wrapper", "ComponentRegistry", "resetPath", "applyLayoutProps", "contraDirection", "dropLeft", "dropTop", "dropRight", "dropBottom", "startPlaceholder", "endPlaceholder", "pathRoot", "pathIndex", "resizeProp", "wrappedChildren", "createPlaceHolder", "wrapIntrinsicSizeComponentWithFlexbox", "createFlexbox", "dimension", "getFlexStyle", "layoutReducer", "state", "action", "LayoutActionType", "addChild", "dragDrop", "setChildProps", "removeChild", "replaceChild", "setProp", "setProps", "resizeFlexChildren", "resizeFlexChild", "switchTab", "moveChild", "path", "nextIdx", "target", "followPath", "replacement", "React", "swapChild", "propName", "propValue", "props", "type", "layoutRoot", "_a", "_b", "newComponent", "dragInstructions", "dropTarget", "existingComponent", "pos", "destinationTabstrip", "typeOf", "id", "version", "getProps", "intrinsicSize", "getIntrinsicSize", "newLayoutRoot", "targetTab", "insertionPosition", "getInsertTabBeforeAfter", "insertIntoContainer", "insertBesideChild", "_replaceChild", "dropLayoutIntoContainer", "finalTarget", "findTarget", "finalPath", "getProp", "containerPath", "component", "clientRect", "dropRect", "existingComponentPath", "wrap", "targetContainer", "followPathToParent", "withTheGrain", "isContainer", "container", "isTerrace", "isTower", "import_react", "unconfiguredLayoutProviderDispatch", "action", "LayoutProviderContext", "import_react", "NO_INSTRUCTIONS", "NO_OFFSETS", "getDragElement", "rect", "id", "dragElement", "wrapper", "div", "cssText", "determineDragOffsets", "draggedElement", "offsetParent", "offsetLeft", "offsetTop", "useLayoutDragDrop", "rootLayoutRef", "dispatch", "dragActionRef", "dragOperationRef", "draggableHTMLElementRef", "handleDrag", "x", "y", "offsetX", "offsetY", "targetPosition", "left", "top", "handleDrop", "dropTarget", "dragInstructions", "draggedReactElement", "originalCSS", "handleDragStart", "evt", "component", "dragContainerPath", "dragRect", "instructions", "path", "rootLayout", "dragPos", "dragPayload", "followPath", "dragPayloadId", "intrinsicSize", "getIntrinsicSize", "dragCSS", "dragTransform", "dragStartLeft", "dragStartTop", "dragOffsets", "element", "width", "height", "Draggable", "action", "options", "import_jsx_runtime", "withDropTarget", "props", "shouldSave", "action", "LayoutProviderVersion", "version", "useLayoutProviderVersion", "LayoutProvider", "children", "layout", "onLayoutChange", "state", "childrenRef", "forceRefresh", "serializeState", "source", "targetContainer", "findTarget", "target", "typeOf", "getProps", "serializedModel", "layoutToJSON", "dispatchLayoutAction", "suppressSave", "nextState", "layoutReducer", "layoutActionDispatcher", "prepareToDragLayout", "useLayoutDragDrop", "getChildProp", "newLayout", "layoutFromJson", "LayoutActionType", "processLayoutElement", "LayoutProviderContext", "useLayoutProviderDispatch", "dispatchLayoutProvider", "import_jsx_runtime", "FlexboxLayout", "props", "path", "dispatch", "useLayoutProviderDispatch", "handleSplitterMoved", "sizes", "Action", "Flexbox_default", "registerComponent", "import_core", "import_classnames", "import_react", "import_react", "import_react", "WidthHeight", "HeightOnly", "WidthOnly", "observedMap", "getTargetSize", "element", "contentRect", "dimension", "resizeObserver", "entries", "entry", "target", "observedTarget", "onResize", "measurements", "sizeChanged", "size", "newSize", "useResizeObserver", "ref", "dimensions", "reportInitialSize", "dimensionsRef", "measure", "rect", "map", "dim", "cleanedUp", "registerObserver", "fonts", "record", "breakpointReader", "themeName", "defaultBreakpoints", "themeRoot", "handler", "style", "stopName", "val", "byDescendingStopSize", "s1", "s2", "breakpointRamp", "breakpoints", "name", "value", "i", "all", "documentBreakpoints", "loadBreakpoints", "xs", "sm", "md", "lg", "xl", "getBreakPoints", "EMPTY_ARRAY", "useBreakpoints", "breakPointsProp", "smallerThan", "ref", "breakpointMatch", "setBreakpointmatch", "bodyRef", "breakPointsRef", "breakpointRamp", "getBreakPoints", "sizeRef", "stopFromMinWidth", "w", "name", "size", "matchSizeAgainstBreakpoints", "width", "breakPointRamp", "maxValue", "useResizeObserver", "measuredWidth", "result", "target", "prevSize", "clientWidth", "COLLAPSIBLE", "RESPONSIVE_ATTRIBUTE", "isResponsiveAttribute", "propName", "_a", "isCollapsible", "COLLAPSIBLE_VALUE", "collapsibleValue", "value", "extractResponsiveProps", "props", "result", "toolbarProps", "rest", "import_vuu_utils", "import_react", "breakPoints", "DEFAULT_COLS", "useResponsiveSizing", "childrenProp", "colsProp", "style", "rootRef", "metaRef", "contentRef", "cols", "dimension", "children", "buildContent", "childMeta", "gatherChildMeta", "content", "meta", "i", "child", "flex", "rest", "import_jsx_runtime", "classBase", "FluidGrid", "props", "ref", "breakPoints", "childrenProp", "column", "colsProp", "classNameProp", "flexFill", "gap", "fullPage", "id", "onSplitterMoved", "resizeable", "row", "showGrid", "spacing", "splitterSize", "styleProp", "rest", "children", "asReactElements", "cols", "content", "rootRef", "useResponsiveSizing", "breakpoint", "useBreakpoints", "className", "cx", "style", "import_jsx_runtime", "FluidGridLayout", "props", "FluidGrid", "registerComponent", "import_react", "import_jsx_runtime", "NO_DRAG_CONTEXT", "unconfiguredRegistrationCall", "DragDropContext", "useDragDropProvider", "id", "_a", "_b", "dragSources", "dropTargets", "registerDragDropParty", "DragDropContext", "isDragSource", "isDropTarget", "NO_DRAG_CONTEXT", "import_react", "import_react", "LEFT_RIGHT", "TOP_BOTTOM", "NOT_OVERFLOWED", "NOT_HIDDEN", "cloneElement", "element", "dolly", "measureElementSizeAndPosition", "dimension", "includeAutoMargin", "pos", "size", "position", "padEnd", "padStart", "style", "start", "end", "marginStart", "marginEnd", "minWidth", "flexBasis", "DIMENSIONS", "dimensions", "orientation", "getItemById", "measuredItems", "id", "result", "item", "removeDraggedItem", "index", "i", "measureDropTargets", "container", "itemQuery", "viewportRange", "draggedItemId", "_a", "dragThresholds", "DIMENSION", "children", "itemCount", "isLast", "dataIndex", "getIndexOfDraggedItem", "dropTargets", "d", "mutateDropTargetsSwitchDropTargetPosition", "direction", "indexOfDraggedItem", "indexOfTarget", "draggedItem", "targetItem", "diff", "draggedStart", "draggedEnd", "newDraggedItem", "targetStart", "targetEnd", "newTargetItem", "getNextDropTarget", "mouseMoveDirection", "len", "leadingEdge", "dropTarget", "constrainRect", "targetRect", "constraintRect", "height", "left", "top", "width", "constrainedHeight", "constrainedWidth", "import_core", "r", "f", "n", "clsx", "import_react", "import_vuu_popups", "import_jsx_runtime", "makeClassNames", "classNames", "className", "Draggable", "wrapperClassName", "element", "onTransitionEnd", "style", "scale", "forwardedRef", "callbackRef", "el", "forkedRef", "clsx", "createDragSpacer", "transitioning", "spacer", "createDropIndicatorPosition", "createDropIndicator", "useDragDisplacers", "animationFrame", "transitioning", "spacers", "createDragSpacer", "clearSpacers", "spacer", "animateTransition", "size", "propertyName", "spacer1", "spacer2", "cancelAnyPendingAnimation", "displaceItem", "dropTargets", "dropTarget", "useTransition", "direction", "orientation", "mutateDropTargetsSwitchDropTargetPosition", "displaceLastItem", "useDragDropNaturalMovement", "draggableRef", "onDrop", "orientation", "containerRef", "itemQuery", "selected", "viewportRange", "dragDirectionRef", "isScrollable", "dragPosRef", "measuredDropTargets", "overflowMenuShowingRef", "showOverflow", "setShowOverflow", "clearSpacers", "displaceItem", "displaceLastItem", "useDragDisplacers", "draggedItemRef", "fullItemQuery", "NOT_OVERFLOWED", "NOT_HIDDEN", "indexOf", "dropTarget", "d", "rangeRef", "handleScrollStart", "handleScrollStop", "scrollDirection", "_scrollPos", "atEnd", "container", "draggedItem", "measureDropTargets", "size", "midPos", "dropTargets", "getNextDropTarget", "nextInsertPos", "nextDropTarget", "beginDrag", "evt", "dragElement", "SCROLL_SIZE", "CLIENT_SIZE", "dimensions", "draggedItemId", "scrollSize", "clientSize", "indexOfDraggedItem", "getIndexOfDraggedItem", "showPopup", "hidePopup", "popupShowing", "button", "drag", "dragPos", "mouseMoveDirection", "overflowIndicator", "drop", "_a", "scrollTop", "import_react", "import_react", "useDropIndicator", "spacer", "createDropIndicatorPosition", "clearSpacer", "dropTarget", "dropZone", "import_jsx_runtime", "NOT_OVERFLOWED", "NOT_HIDDEN", "useDragDropIndicator", "draggableRef", "onDrop", "orientation", "containerRef", "itemQuery", "selected", "viewportRange", "dragDirectionRef", "dropIndicatorRef", "dropTargetRef", "dropZoneRef", "isScrollable", "dragPosRef", "measuredDropTargets", "overflowMenuShowingRef", "showOverflow", "setShowOverflow", "dropIndicator", "setDropIndicator", "clearSpacer", "positionDropIndicator", "useDropIndicator", "draggedItemRef", "fullItemQuery", "indexOf", "dropTarget", "d", "reposition", "distance", "indexShift", "rangeRef", "handleScrollStart", "handleScrollStop", "scrollDirection", "_scrollPos", "atEnd", "container", "draggedItem", "measureDropTargets", "size", "midPos", "dropTargets", "nextDropTarget", "getNextDropTarget", "beginDrag", "evt", "dragElement", "SCROLL_SIZE", "CLIENT_SIZE", "dimensions", "draggedItemId", "scrollSize", "clientSize", "getItemById", "targetIndex", "removeDraggedItem", "range", "i", "dropZone", "dropIndicatorPosition", "top", "left", "width", "dropIndicatorRect", "Draggable", "createDropIndicator", "drag", "dragPos", "mouseMoveDirection", "currentDropTarget", "START", "drop", "fromIndex", "dropBefore", "originalDropTargetIndex", "currentDropTargetIndex", "import_react", "import_react", "useAutoScroll", "containerRef", "onScrollingStopped", "orientation", "scrollTimer", "isScrolling", "scrollPosRef", "lastScrollDirectionRef", "stopScrolling", "atEnd", "startScrolling", "direction", "scrollRate", "scrollUnit", "container", "SCROLL_POS", "SCROLL_SIZE", "CLIENT_SIZE", "dimensions", "scrollPos", "scrollSize", "clientSize", "maxScroll", "nextScroll", "import_jsx_runtime", "NULL_DRAG_DROP_RESULT", "UNBOUNDED", "noDragDrop", "dragThreshold", "getDraggableElement", "el", "query", "isOverflowElement", "element", "getLastElement", "container", "itemQuery", "fullItemQuery", "NOT_OVERFLOWED", "lastElement", "useDragDropNext", "allowDragDrop", "containerRef", "draggableClassName", "onDragStart", "onDrop", "onDropSettle", "orientation", "dragDropProps", "dragBoundaries", "draggableStatus", "setDraggableStatus", "draggableRef", "dragElementRef", "mouseDownTimer", "isScrollableRef", "mouseOffsetRef", "mousePosRef", "startPosRef", "settlingItemRef", "dropPosRef", "dropIndexRef", "handleScrollStopRef", "isDragSource", "isDropTarget", "register", "useDragDropProvider", "terminateDrag", "_a", "toIndex", "droppedItem", "status", "getScrollDirection", "mousePos", "POS", "SCROLL_POS", "SCROLL_SIZE", "CLIENT_SIZE", "dimensions", "scrollPos", "scrollSize", "clientSize", "maxScroll", "canScrollFwd", "viewportEnd", "bwd", "fwd", "useDragDropHook", "useDragDropNaturalMovement", "useDragDropIndicator", "onScrollingStopped", "scrollDirection", "atEnd", "isScrolling", "startScrolling", "stopScrolling", "useAutoScroll", "handleDrop", "fromIndex", "beginDrag", "drag", "drop", "handleScrollStart", "handleScrollStop", "dragResult", "dragMouseMoveHandler", "evt", "CLIENT_POS", "CONTRA_CLIENT_POS", "CONTRA_POS", "clientX", "clientY", "clientPos", "clientContraPos", "lastClientPos", "lastClientContraPos", "dragDistance", "dragPosX", "dragPosY", "mouseMoveDirection", "dragPos", "renderDragPos", "START", "dragMouseUpHandler", "dragStart", "target", "dragElement", "CONTRA", "CONTRA_END", "DIMENSION", "END", "lastItemIsOverflowIndicator", "containerRect", "draggableRect", "draggableSize", "lastItemStart", "lastItemEnd", "index", "Draggable", "cloneElement", "constrainRect", "preDragMouseMoveHandler", "preDragMouseUpHandler", "mouseDownHandler", "settlingItem", "dropPos", "targetTop", "targetLeft", "currentTop", "currentLeft", "import_react", "import_core", "import_jsx_runtime", "classBase", "EditableLabel", "classNameProp", "defaultEditing", "defaultValue", "editingProp", "onChange", "onEnterEditMode", "onExitEditMode", "valueProp", "restProps", "forwardedRef", "inputRef", "editingRef", "value", "setValue", "editing", "_setEditing", "setEditing", "initialValue", "enterEditMode", "exitEditMode", "cancelEdit", "allowDeactivation", "originalValue", "handleChange", "evt", "handleDoubleClick", "handleBlur", "handleKeyDown", "className", "clsx", "import_core", "import_classnames", "import_react", "import_react", "isTabMenuOptions", "options", "closeCommand", "renameCommand", "getElementIndex", "el", "index", "getIndexOfItem", "container", "query", "targetTab", "getIndexOfSelectedTab", "getIndexOfEditedItem", "import_vuu_utils", "import_react", "useAnimatedSelectionThumb", "containerRef", "activeTabIndex", "orientation", "animationSuspendedRef", "suspendAnimation", "resumeAnimation", "onTransitionEnd", "_a", "_b", "lastSelectedRef", "offset", "size", "oldSelected", "newSelected", "positionProp", "sizeProp", "oldPosition", "oldSize", "newPosition", "duration", "_c", "_d", "import_core", "import_vuu_utils", "import_react", "navigation", "isNavigationKey", "key", "orientation", "isMenuActivationKey", "nextItemIdx", "count", "direction", "idx", "isNonWrappedElement", "element", "getElementByPosition", "container", "index", "useKeyboardNavigation", "containerRef", "defaultHighlightedIdx", "highlightedIdxProp", "keyBoardActivation", "selectedTabIndex", "manualActivation", "mouseClickPending", "focusedRef", "hasFocus", "setHasFocus", "forceRefresh", "highlightedIdx", "_setHighlightedIdx", "setHighlightedIdx", "value", "keyboardNavigation", "focusTab", "tabIndex", "immediateFocus", "withKeyboard", "delay", "setFocus", "focussableElement", "onFocus", "e", "getIndexOfEditedItem", "getIndexCount", "_a", "_b", "nextFocusableItemIdx", "indexCount", "nextIdx", "nextDirection", "newIdx", "navigateChildItems", "forceFocusVisible", "highlightedTabHasMenu", "el", "activateTabMenu", "menuEl", "evt", "handleKeyDown", "handleItemClick", "_", "handleFocus", "handleContainerMouseDown", "sourceTarget", "destTarget", "import_core", "import_react", "defaultSelectionKeys", "isTabElement", "el", "useSelection", "defaultSelected", "highlightedIdx", "onSelectionChange", "selectedProp", "selected", "setSelected", "isControlled", "isSelectionEvent", "evt", "selectItem", "tabIndex", "handleKeyDown", "e", "targetElement", "onClick", "editKeys", "isEditKey", "key", "getElementWithIndex", "container", "index", "useTabstrip", "activeTabIndexProp", "allowDragDrop", "animateSelectionThumb", "containerRef", "onActiveChange", "onAddTab", "onCloseTab", "onExitEditMode", "onMoveTab", "orientation", "keyBoardActivation", "lastSelection", "keyboardHookFocusTab", "highlightedIdx", "keyboardHookHandleClick", "keyboardHookHandleKeyDown", "keyboardHookSetHighlightedIndex", "keyboardHook", "useKeyboardNavigation", "selectionHookActivateTab", "selectionHookHandleClick", "selectionHookHandleKeyDown", "selectionHookSelected", "useSelection", "containerStyle", "resumeAnimation", "suspendAnimation", "useAnimatedSelectionThumb", "handleDrop", "fromIndex", "toIndex", "selected", "nextSelectedTab", "dragDropHookHandleMouseDown", "dragDropHook", "useDragDropNext", "handleExitEditMode", "originalValue", "editedValue", "allowDeactivation", "tabIndex", "handleClick", "evt", "getEditableLabel", "targetEl", "tabInEditMode", "editableLabel", "editTab", "editableLabelEl", "handleKeyDown", "handleCloseTabFromMenu", "selectedTabIndex", "getIndexOfSelectedTab", "newActiveTabIndex", "handleRenameTabFromMenu", "handleTabMenuAction", "action", "isTabMenuOptions", "handleTabMenuClose", "onSwitchWrappedItemIntoView", "item", "navigationProps", "handleAddTabClick", "tabProps", "import_jsx_runtime", "import_react", "classBase", "Tabstrip", "activeTabIndexProp", "allowAddTab", "allowCloseTab", "allowDragDrop", "allowRenameTab", "animateSelectionThumb", "children", "classNameProp", "idProp", "keyBoardActivation", "location", "onActiveChange", "onAddTab", "onCloseTab", "onExitEditMode", "onMoveTab", "orientation", "showTabMenuButton", "styleProp", "htmlAttributes", "rootRef", "activeTabIndex", "focusVisible", "containerStyle", "draggedItemIndex", "onClickAddTab", "tabProps", "tabstripHook", "useTabstrip", "id", "useId", "className", "cx", "style", "tabs", "asReactElements", "child", "index", "tabId", "closeable", "editable", "showMenuButton", "selected", "React", "OverflowContainer", "import_core", "import_classnames", "import_react", "import_vuu_popups", "import_react", "import_classnames", "import_jsx_runtime", "classBase", "TabMenu", "allowClose", "allowRename", "location", "onMenuAction", "onMenuClose", "index", "menuBuilder", "menuOptions", "_location", "options", "menuItems", "renameCommand", "closeCommand", "cx", "import_jsx_runtime", "classBase", "noop", "Tab", "ariaControls", "children", "className", "closeable", "dragging", "editable", "editing", "focusVisible", "index", "label", "location", "onClick", "onClose", "onEnterEditMode", "onExitEditMode", "onFocusProp", "onKeyUp", "onMenuAction", "onMenuClose", "orientation", "selected", "showMenuButton", "tabIndex", "props", "ref", "rootRef", "editableRef", "setForkRef", "handleClick", "e", "handleOnExitEditMode", "originalValue", "editedValue", "allowDeactivation", "handleKeyUp", "getLabel", "EditableLabel", "handleFocus", "evt", "input", "cx", "TabMenu", "import_core", "import_classnames", "import_react", "listItemIndex", "listItemEl", "_a", "idx", "closestListItem", "el", "closestListItemIndex", "el", "listItemIndex", "closestListItem", "import_react", "PathSeparators", "isPathSeparator", "char", "isParentPath", "parentPath", "childPath", "useItemsWithIds", "sourceProp", "idRoot", "collapsibleHeaders", "defaultExpanded", "revealSelected", "countChildItems", "item", "items", "idx", "i", "count", "isExpanded", "path", "id", "normalizeItems", "indexer", "level", "results", "flattenedSource", "all", "_a", "isCollapsibleHeader", "isNonCollapsibleGroupNode", "isLeaf", "nonCollapsible", "expanded", "normalisedItem", "childCount", "children", "sourceWithIds", "sourceItemById", "target", "sourceWithId", "import_react", "import_core", "SINGLE", "CHECKBOX", "MULTI", "EXTENDED", "defaultSelectionKeys", "NO_HANDLERS", "isCollapsibleItem", "item", "groupSelectionEnabled", "groupSelection", "useSelection", "defaultSelected", "highlightedIdx", "treeNodes", "onChange", "selectedProp", "selection", "selectionKeys", "singleSelect", "multiSelect", "extendedSelect", "lastActive", "isSelectionEvent", "evt", "selected", "setSelected", "selectItemAtIndex", "idx", "id", "rangeSelect", "preserveExistingSelection", "active", "isSelected", "actsLikeSingleSelect", "actsLikeMultiSelect", "newSelected", "i", "from", "to", "handleKeyDown", "handleKeyboardNavigation", "currentIndex", "listHandlers", "handleClick", "import_react", "import_react", "observedMap", "getTargetSize", "element", "size", "dimension", "resizeObserver", "entries", "entry", "target", "borderBoxSize", "contentBoxSize", "observedTarget", "observedMap", "height", "width", "contentHeight", "contentWidth", "onResize", "measurements", "sizeChanged", "dimension", "size", "newSize", "getTargetSize", "useResizeObserver", "ref", "dimensions", "reportInitialSize", "dimensionsRef", "measure", "map", "dim", "registerObserver", "record", "HeightOnly", "useViewportTracking", "root", "highlightedIdx", "stickyHeaders", "scrollTop", "scrolling", "rootHeight", "rootScrollHeight", "scrollIntoView", "el", "targetEl", "headerHeight", "t", "h", "viewportStart", "viewportEnd", "scrollHandler", "e", "rootEl", "item", "onResize", "height", "scrollHeight", "useResizeObserver", "import_react", "import_react", "getNodeParentPath", "id", "pos", "steps", "isGroupNode", "node", "isHeader", "node", "PATH_SEPARATORS", "isDescendantOf", "targetPath", "getNodeById", "nodes", "id", "getIndexOfNode", "treeNodes", "i", "replaceNode", "props", "childNodes", "import_core", "union", "set1", "sets", "result", "set", "element", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "Enter", "Delete", "actionKeys", "Enter", "focusKeys", "arrowLeftRightKeys", "verticalNavigationKeys", "horizontalNavigationKeys", "functionKeys", "specialKeys", "union", "isNavigationKey", "key", "orientation", "verticalNavigationKeys", "horizontalNavigationKeys", "nextItemIdx", "count", "key", "idx", "ArrowUp", "ArrowLeft", "isLeaf", "item", "isFocusable", "useKeyboardNavigation", "defaultHighlightedIdx", "highlightedIdxProp", "treeNodes", "onHighlight", "onKeyboardNavigation", "selected", "ArrowBwd", "ArrowFwd", "ArrowDown", "highlightedIdx", "setHighlightedIdx", "isControlledHighlighting", "setHighlightedIndex", "nextFocusableItemIdx", "nextIdx", "keyBoardNavigation", "ignoreFocus", "setIgnoreFocus", "value", "handleFocus", "node", "getNodeById", "getIndexOfNode", "navigateChildItems", "e", "handleKeyDown", "isNavigationKey", "listProps", "import_react", "populateIndices", "nodes", "results", "idx", "skipToNextHeader", "node", "isHeader", "isGroupNode", "isExpanded", "useHierarchicalData", "source", "externalSource", "statefulSource", "indexPositions", "forceUpdate", "setData", "value", "import_react", "NO_HANDLERS", "isToggleElement", "element", "useCollapsibleGroups", "collapsibleHeaders", "highlightedIdx", "treeNodes", "setVisibleData", "source", "fullSource", "stateSource", "setSource", "value", "expandNode", "nodeList", "id", "replaceNode", "collapseNode", "handleKeyDown", "e", "ArrowRight", "Enter", "node", "ArrowLeft", "listHandlers", "listItemHandlers", "evt", "el", "closestListItem", "getNodeById", "import_react", "useTreeKeyboardNavigation", "highlightedIdx", "hiliteItemAtIndex", "indexPositions", "source", "e", "ArrowLeft", "node", "parentId", "getNodeParentPath", "parentNode", "getNodeById", "idx", "getIndexOfNode", "EMPTY_ARRAY", "useTree", "defaultSelected", "sourceWithIds", "onChange", "onHighlightProp", "selectedProp", "selection", "lastSelection", "dataHook", "useHierarchicalData", "handleKeyboardNavigation", "evt", "nextIdx", "_a", "_b", "selectionHook", "highlightedIdx", "keyboardHook", "useKeyboardNavigation", "collapsibleHook", "useCollapsibleGroups", "useSelection", "treeNavigationHook", "useTreeKeyboardNavigation", "handleClick", "_c", "handleKeyDown", "_d", "_e", "_f", "_g", "_h", "getActiveDescendant", "listProps", "listItemHandlers", "import_jsx_runtime", "import_react", "classBase", "isExpanded", "node", "TreeNode", "children", "idx", "props", "Tree", "allowDragDrop", "className", "defaultSelected", "groupSelection", "idProp", "onHighlight", "onSelectionChange", "revealSelected", "selectedProp", "selection", "source", "htmlAttributes", "forwardedRef", "_a", "id", "useId", "rootRef", "sourceWithIds", "sourceItemById", "useItemsWithIds", "handleSelectionChange", "evt", "selected", "sourceItems", "sourceItem", "focusVisible", "highlightedIdx", "hiliteItemAtIndex", "listProps", "listItemHandlers", "visibleData", "useTree", "useViewportTracking", "propsCommonToAllListItems", "targetEl", "closestListItemIndex", "allowGroupSelect", "groupSelectionEnabled", "addLeafNode", "list", "item", "getListItemProps", "addGroupNode", "child", "title", "i", "cx", "renderSourceContent", "items", "listItems", "Tree_default", "import_core", "import_classnames", "import_react", "import_react", "useViewActionDispatcher", "id", "root", "viewPath", "dropTargets", "_a", "loadSessionState", "purgeSessionState", "purgeState", "saveSessionState", "usePersistentState", "contributions", "setContributions", "dispatchLayoutAction", "useLayoutProviderDispatch", "updateContributions", "location", "content", "updatedContributions", "clearContributions", "handleRemove", "ds", "handleMouseDown", "evt", "index", "preDragActivity", "dragRect", "resolve", "reject", "action", "type", "import_core", "import_classnames", "import_react", "import_react", "useView", "id", "rootRef", "path", "dropTargets", "titleProp", "layoutDispatch", "useLayoutProviderDispatch", "loadState", "loadSessionState", "purgeState", "saveState", "saveSessionState", "usePersistentState", "dispatchViewAction", "contributions", "useViewActionDispatcher", "title", "_a", "onEditTitle", "restoredState", "load", "key", "purge", "save", "state", "loadSession", "saveSession", "onConfigChange", "config", "data", "import_react", "NO_MEASUREMENT", "useViewResize", "mainRef", "resize", "rootRef", "deferResize", "mainSize", "resizeHandle", "setMainSize", "onResize", "height", "width", "useResizeObserver", "WidthHeight", "import_react", "NO_CONTEXT", "ViewContext", "React", "useViewDispatch", "_a", "context", "useViewContext", "import_jsx_runtime", "classBase", "getProps", "state", "props", "View", "forwardedRef", "Header", "children", "className", "collapsed", "closeable", "dataPath", "dataResizeable", "dropTargets", "expanded", "flexFill", "idProp", "header", "orientation", "path", "resize", "resizeable", "tearOut", "style", "titleProp", "restProps", "id", "useId", "rootRef", "mainRef", "componentProps", "_setComponentProps", "contributions", "dispatchViewAction", "load", "loadSession", "onConfigChange", "onEditTitle", "purge", "restoredState", "save", "saveSession", "title", "useView", "useViewResize", "setComponentProps", "getContent", "React", "viewContextValue", "headerProps", "cx", "ViewContext", "MemoView", "registerComponent", "import_jsx_runtime", "Header", "classNameProp", "contributions", "collapsed", "closeable", "onEditTitle", "orientationProp", "style", "title", "labelFieldRef", "value", "setValue", "editing", "setEditing", "viewDispatch", "useViewDispatch", "handleClose", "evt", "classBase", "handleTitleMouseDown", "_a", "handleButtonMouseDown", "className", "classnames", "handleEnterEditMode", "handleTitleKeyDown", "handleExitEditMode", "originalValue", "finalValue", "allowDeactivation", "editCancelled", "handleMouseDown", "e", "toolbarItems", "postTitleContributedItems", "actionButtons", "contribution", "i", "React", "EditableLabel", "cx", "import_vuu_popups", "import_classnames", "import_react", "import_vuu_utils", "import_react", "NON_WRAPPED_ITEM", "sortByScreenOrder", "elements", "e1", "e2", "idx1", "idx2", "isOverflowed1", "isOverflowed2", "isOverflowedIndicator1", "isOverflowedIndicator2", "NO_WRAPPED_ITEMS", "getNonWrappedAndWrappedItems", "container", "orientation", "nonWrappedItems", "wrappedItems", "currentPosition", "overflowed", "sortedChildren", "positionAttribute", "child", "element", "index", "label", "overflowPriority", "position", "applyOverflowClassToWrappedItems", "overflowedItems", "ignoreOverflow", "item", "maxPriority", "priority", "minPriority", "overflowIndicatorHasWrappedButShouldNotHave", "_a", "getHighestPriorityItem", "overflowItems", "highestPriorityItem", "i", "highPriorityItemsHaveWrappedButShouldNotHave", "minNonwrappedPriority", "correctForWrappedOverflowIndicator", "resolve", "o2", "getNewItems", "markElementAsWrapped", "correctForWrappedHighPriorityItems", "nonWrapped", "wrapped", "highPriorityWrappedItem", "switchWrappedItemIntoView", "getElementByIndex", "el", "getElementsMarkedAsWrapped", "items1", "items2", "newItems", "unmarkItemsWhichAreNoLongerWrapped", "getOverflowIndicator", "getOverflowedItem", "getElementWidth", "getAvailableSpace", "overflowIndicator", "containerRight", "paddingRight", "indicatorRight", "removeOverflowIndicatorIfNoLongerNeeded", "availableSpace", "indicatorWidth", "overflowedItem", "byPriorityDescending", "h1", "h2", "i1", "p1", "i2", "p2", "getNonwrappedItemsByPriority", "overflowItem", "unwrappedItems", "targetElement", "pos", "unwrappedItem", "itemWidth", "targetWidth", "switchWrapOnElements", "lastLeft", "baseAvailableSpace", "wrapTargets", "nextLeft", "extraSpace", "wrappedElement", "nonWrappedElement", "useOverflowContainer", "itemCount", "onSwitchWrappedItemIntoView", "orientation", "container", "setContainer", "wrappedItemsRef", "NO_WRAPPED_ITEMS", "handleResize", "nonWrapped", "wrapped", "getNonWrappedAndWrappedItems", "applyOverflowClassToWrappedItems", "overflowIndicatorHasWrappedButShouldNotHave", "correctForWrappedOverflowIndicator", "highPriorityItemsHaveWrappedButShouldNotHave", "correctForWrappedHighPriorityItems", "removeOverflowIndicatorIfNoLongerNeeded", "hasOverflowItem", "opt", "menuBuilder", "menuActionHandler", "menuItems", "item", "options", "wrappedItems", "switchWrappedItemIntoView", "resizeObserver", "sizeProp", "currentSize", "entries", "entry", "size", "useLayoutEffectSkipFirst", "callbackRef", "el", "import_jsx_runtime", "classBase", "WrapContainer", "React", "children", "classNameProp", "heightProp", "onSwitchWrappedItemIntoView", "orientation", "overflowIcon", "childElements", "asReactElements", "menuActionHandler", "menuBuilder", "rootRef", "useOverflowContainer", "style", "className", "cx", "childEl", "i", "overflowPriority", "itemId", "label", "OverflowContainer", "height", "htmlAttributes", "forwardedRef", "import_vuu_utils", "import_lab", "import_classnames", "import_react", "import_jsx_runtime", "clonePaletteItem", "paletteItem", "dolly", "PaletteItem", "className", "component", "idx", "resizeable", "header", "closeable", "props", "cx", "Palette", "children", "orientation", "ViewProps", "dispatch", "useLayoutProviderDispatch", "classBase", "handleMouseDown", "evt", "_a", "listItemElement", "caption", "payload", "template", "height", "left", "top", "width", "id", "MemoView", "child", "registerComponent", "import_classnames", "import_react", "import_jsx_runtime", "classBase", "getDefaultTabIcon", "getDefaultTabLabel", "component", "tabIndex", "_a", "_b", "getChildElements", "children", "elements", "React", "child", "DefaultTabstripProps", "Stack", "active", "classNameProp", "getTabIcon", "getTabLabel", "idProp", "keyBoardActivation", "onAddTab", "onMoveTab", "onTabClose", "onTabEdit", "onTabSelectionChanged", "showTabs", "style", "TabstripProps", "ref", "id", "useId", "allowCloseTab", "allowRenameTab", "handleExitEditMode", "_oldText", "newText", "_allowDeactivation", "activeChild", "renderTabs", "idx", "rootId", "closeable", "childId", "Tab", "isHorizontal", "tabstripOrientation", "cx", "Tabstrip", "import_core", "import_react", "import_jsx_runtime", "defaultCreateNewChild", "index", "MemoView", "Component_default", "StackLayout", "props", "ref", "dispatch", "useLayoutProviderDispatch", "loadState", "usePersistentState", "createNewChild", "idProp", "onTabSelectionChanged", "path", "restProps", "children", "id", "useId", "dispatchViewAction", "useViewActionDispatcher", "handleTabSelection", "nextIdx", "handleTabClose", "tabIndex", "dataPath", "handleTabAdd", "React", "component", "handleMoveTab", "fromIndex", "toIndex", "Stack", "idx", "title", "e", "readyToDrag", "resolve", "text", "registerComponent", "import_react", "import_jsx_runtime", "ConfigWrapper", "children", "layout", "setLayout", "selectedComponent", "setSelectedComponent", "handleSelection", "selectedPath", "targetComponent", "followPathToComponent", "handleChange", "property", "value", "newComponent", "React", "LayoutConfigurator", "LayoutTreeViewer", "import_core", "import_jsx_runtime", "NO_STYLE", "DIMENSIONS", "LayoutBox", "feature", "children", "style", "onChange", "evt", "value", "MARGIN_STYLES", "PADDING_STYLES", "BORDER_STYLES", "CSS_DIGIT", "CSS_MEASURE", "CSS_REX", "BORDER_REX", "LayoutConfigurator", "height", "managedStyle", "width", "state", "normalizeStyle", "handleChange", "dimension", "strValue", "property", "mt", "mr", "mb", "ml", "bt", "br", "bb", "bl", "pt", "pr", "pb", "pl", "XXXnormalizeStyles", "layoutStyle", "visualStyle", "margin", "marginTop", "marginRight", "marginBottom", "marginLeft", "padding", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "match", "pos1", "pos2", "pos3", "pos4", "pos123", "border", "borderWidth", "borderTopWidth", "borderRightWidth", "borderBottomWidth", "borderLeftWidth", "borderColor", "rest", "marginStyles", "paddingStyles", "boxShadow", "import_react", "import_classnames", "import_jsx_runtime", "classBaseTree", "toTreeJson", "component", "path", "typeOf", "React", "child", "i", "LayoutTreeViewer", "layout", "onSelect", "style", "treeJson", "handleSelection", "evt", "cx", "Tree_default"]
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_classnames", "componentName", "cx", "import_jsx_runtime", "classBase", "cx", "import_react", "import_jsx_runtime", "Component", "import_react", "React", "nextStep", "import_react", "left", "right", "header", "isTower", "isTerrace", "r", "allBoxesContainingPoint", "_a", "clientRect", "import_classnames", "import_jsx_runtime", "classBase", "cx", "import_jsx_runtime", "r", "path", "Stack", "SCALE_FACTOR", "import_classnames", "import_react", "import_jsx_runtime", "DraggableLayout", "classnames", "import_core", "import_classnames", "import_react", "import_vuu_utils", "import_react", "import_classnames", "import_jsx_runtime", "classBase", "cx", "import_classnames", "import_react", "import_jsx_runtime", "React", "Splitter", "onDragEnd", "cx", "import_vuu_utils", "import_react", "flexDirection", "React", "breakPoints", "React", "index", "import_jsx_runtime", "classBase", "Flexbox", "breakPoints", "cx", "import_react", "import_react", "import_react", "import_vuu_utils", "import_react", "import_vuu_utils", "import_react", "import_react", "React", "getStyle", "children", "React", "flexDirection", "import_react", "import_react", "React", "import_react", "flexDirection", "children", "flexBasis", "display", "style", "child", "React", "import_react", "React", "import_vuu_utils", "import_react", "updateChildren", "React", "flexDirection", "React", "import_react", "import_react", "import_jsx_runtime", "import_jsx_runtime", "FlexboxLayout", "import_core", "import_classnames", "import_react", "import_react", "import_react", "dimensions", "EMPTY_ARRAY", "import_vuu_utils", "import_react", "buildContent", "children", "dimension", "import_jsx_runtime", "classBase", "FluidGrid", "breakPoints", "cx", "import_jsx_runtime", "FluidGridLayout", "import_react", "import_jsx_runtime", "import_react", "import_react", "cloneElement", "start", "import_core", "import_react", "import_vuu_popups", "import_jsx_runtime", "Draggable", "import_react", "import_react", "dropZone", "import_jsx_runtime", "NOT_OVERFLOWED", "NOT_HIDDEN", "dropZone", "Draggable", "import_react", "import_react", "import_jsx_runtime", "Draggable", "cloneElement", "import_react", "import_core", "import_jsx_runtime", "classBase", "EditableLabel", "value", "import_core", "import_classnames", "import_react", "import_react", "import_vuu_utils", "import_react", "_a", "_b", "import_core", "import_vuu_utils", "import_react", "import_core", "import_react", "import_jsx_runtime", "import_react", "classBase", "cx", "React", "import_core", "import_classnames", "import_react", "import_vuu_popups", "import_react", "import_classnames", "import_jsx_runtime", "classBase", "cx", "import_jsx_runtime", "classBase", "Tab", "editable", "cx", "import_core", "import_classnames", "import_react", "import_react", "count", "isExpanded", "flattenedSource", "isLeaf", "import_react", "import_core", "defaultSelectionKeys", "useSelection", "id", "import_react", "import_react", "observedMap", "getTargetSize", "resizeObserver", "observedMap", "getTargetSize", "useResizeObserver", "dimensions", "HeightOnly", "useResizeObserver", "import_react", "import_react", "import_core", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "isNavigationKey", "nextItemIdx", "ArrowUp", "ArrowLeft", "useKeyboardNavigation", "ArrowDown", "isNavigationKey", "import_react", "import_react", "NO_HANDLERS", "ArrowRight", "ArrowLeft", "import_react", "ArrowLeft", "EMPTY_ARRAY", "useKeyboardNavigation", "useSelection", "import_jsx_runtime", "import_react", "classBase", "Tree", "useId", "selected", "id", "cx", "import_core", "import_classnames", "import_react", "import_react", "_a", "import_core", "import_classnames", "import_react", "import_react", "title", "import_react", "import_react", "React", "import_jsx_runtime", "classBase", "getProps", "View", "Header", "useId", "props", "React", "cx", "import_jsx_runtime", "classBase", "classnames", "React", "cx", "import_vuu_popups", "import_classnames", "import_react", "import_vuu_utils", "import_react", "resizeObserver", "import_jsx_runtime", "classBase", "React", "cx", "OverflowContainer", "import_vuu_utils", "import_classnames", "import_react", "import_jsx_runtime", "cx", "ViewProps", "classBase", "props", "import_classnames", "import_react", "import_jsx_runtime", "classBase", "React", "Stack", "TabstripProps", "_a", "child", "cx", "import_core", "import_react", "import_jsx_runtime", "useId", "path", "React", "id", "import_react", "import_jsx_runtime", "React", "import_core", "import_jsx_runtime", "NO_STYLE", "DIMENSIONS", "import_react", "import_classnames", "import_jsx_runtime", "React", "cx"]
|
|
7
7
|
}
|