@vuu-ui/vuu-shell 0.8.8-debug → 0.8.8

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.map CHANGED
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/vuu-shell/src/index.ts", "../../../packages/vuu-shell/src/connection-status/ConnectionStatusIcon.tsx", "../../../packages/vuu-shell/src/density-switch/DensitySwitch.tsx", "../../../packages/vuu-shell/src/feature/Feature.tsx", "../../../packages/vuu-shell/src/feature/ErrorBoundary.jsx", "../../../packages/vuu-shell/src/feature/Loader.tsx", "../../../packages/vuu-shell/src/feature/css-module-loader.ts", "../../../packages/vuu-shell/src/layout-management/SaveLayoutPanel.tsx", "../../../packages/vuu-icons/src/VuuLogo.tsx", "../../../packages/vuu-shell/src/left-nav/LeftNav.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", "../../../packages/vuu-popups/src/dialog/Dialog.tsx", "../../../packages/vuu-popups/src/portal/Portal.tsx", "../../../packages/vuu-popups/src/portal/render-portal.tsx", "../../../packages/vuu-popups/src/menu/ContextMenu.tsx", "../../../packages/vuu-popups/src/menu/MenuList.tsx", "../../../packages/vuu-popups/src/menu/use-keyboard-navigation.ts", "../../../packages/vuu-popups/src/menu/utils.ts", "../../../packages/vuu-popups/src/menu/key-code.ts", "../../../packages/vuu-popups/src/menu/use-items-with-ids-next.ts", "../../../packages/vuu-popups/src/menu/use-cascade.ts", "../../../packages/vuu-popups/src/menu/list-dom-utils.ts", "../../../packages/vuu-popups/src/menu/context-menu-provider.tsx", "../../../packages/vuu-popups/src/menu/useContextMenu.tsx", "../../../packages/vuu-popups/src/popup/popup-service.ts", "../../../packages/vuu-popups/src/popup-menu/PopupMenu.tsx", "../../../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/list/Highlighter.tsx", "../../../packages/vuu-ui-controls/src/utils/escapeRegExp.ts", "../../../packages/vuu-ui-controls/src/list/ListItem.tsx", "../../../packages/vuu-ui-controls/src/list/CheckboxIcon.tsx", "../../../packages/vuu-ui-controls/src/list/List.tsx", "../../../packages/vuu-ui-controls/src/list/common-hooks/collectionProvider.tsx", "../../../packages/vuu-ui-controls/src/list/common-hooks/itemToString.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/keyUtils.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/useCollapsibleGroups.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/list-dom-utils.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/selectionTypes.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/useCollectionItems.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/utils/collection-item-utils.ts", "../../../packages/vuu-ui-controls/src/list/ListItemGroup.ts", "../../../packages/vuu-ui-controls/src/list/ListItemHeader.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/utils/filter-utils.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/utils/isSelected.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/useImperativeScrollingAPI.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/useKeyboardNavigation.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/useSelection.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/useTypeahead.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/useViewportTracking.ts", "../../../packages/vuu-ui-controls/src/common-hooks/use-resize-observer.ts", "../../../packages/vuu-ui-controls/src/list/useList.ts", "../../../packages/vuu-ui-controls/src/list/useListHeight.ts", "../../../packages/vuu-ui-controls/src/list/useScrollPosition.ts", "../../../packages/vuu-ui-controls/src/list/VirtualizedList.tsx", "../../../node_modules/clsx/dist/clsx.m.js", "../../../packages/vuu-ui-controls/src/list/useVirtualization.ts", "../../../packages/vuu-ui-controls/src/list/keyset.ts", "../../../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/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-shell/src/theme-provider/ThemeProvider.tsx", "../../../packages/vuu-shell/src/login/LoginPanel.tsx", "../../../packages/vuu-shell/src/login/login-utils.ts", "../../../packages/vuu-shell/src/session-editing-form/SessionEditingForm.tsx", "../../../packages/vuu-shell/src/shell.tsx", "../../../packages/vuu-shell/src/layout-config/use-layout-config.ts", "../../../packages/vuu-shell/src/layout-config/local-config.ts", "../../../packages/vuu-shell/src/layout-config/remote-config.ts", "../../../packages/vuu-shell/src/app-header/AppHeader.tsx", "../../../packages/vuu-shell/src/user-profile/UserProfile.tsx", "../../../packages/vuu-shell/src/user-profile/UserPanel.tsx", "../../../packages/vuu-shell/src/get-layout-history.ts", "../../../packages/vuu-shell/src/theme-switch/ThemeSwitch.tsx", "../../../packages/vuu-shell/src/shell-layouts/context-panel/ContextPanel.tsx", "../../../packages/vuu-shell/src/shell-layouts/useFullHeightLeftPanel.tsx", "../../../packages/vuu-shell/src/shell-layouts/useInlayLeftPanel.tsx", "../../../packages/vuu-shell/src/shell-layouts/useShellLayout.ts", "../../../packages/vuu-shell/src/ShellContextProvider.tsx"],
4
4
  "sourcesContent": ["export * from \"./connection-status\";\nexport * from \"./density-switch\";\nexport * from \"./feature\";\nexport * from \"./layout-management\";\nexport * from \"./left-nav\";\nexport * from \"./login\";\nexport * from \"./session-editing-form\";\nexport * from \"./shell\";\nexport * from \"./shell-layouts\";\nexport * from \"./shellTypes\";\nexport * from \"./ShellContextProvider\";\nexport * from \"./theme-provider\";\nexport * from \"./theme-switch\";\n", "import React, { useEffect, useState } from 'react';\nimport cx from 'classnames';\nimport './ConnectionStatusIcon.css';\n\ntype connectionStatus = 'connected' | 'reconnected' | 'connecting' | 'disconnected';\n\ninterface ConnectionStatusProps {\n\tconnectionStatus: connectionStatus\n\tclassName?: string;\n\tprops?: unknown;\n\telement?: string;\n}\n\nexport const ConnectionStatusIcon = ({ connectionStatus, className, element = 'span', ...props}: ConnectionStatusProps) => {\n\tconst [classBase, setClassBase] = useState<string>('vuuConnectingStatus');\n\tuseEffect(() => {\n\t\tswitch(connectionStatus) {\n\t\t\tcase 'connected':\n\t\t\tcase 'reconnected':\n\t\t\t\tsetClassBase('vuuActiveStatus');\n\t\t\t\tbreak;\n\t\t\tcase 'connecting':\n\t\t\t\tsetClassBase('vuuConnectingStatus');\n\t\t\t\tbreak;\n\t\t\tcase 'disconnected':\n\t\t\t\tsetClassBase('vuuDisconnectedStatus');\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}, [connectionStatus]);\n\n\tconst statusIcon = React.createElement (\n\t\telement,\n\t\t{\n\t\t\t...props,\n\t\t\tclassName: cx('vuuStatus vuuIcon', classBase, className)\n\t\t},\n\t)\n\n\treturn (\n\t\t<>\n\t\t\t<div className='vuuStatus-container salt-theme'>\n\t\t\t\t{statusIcon}\n\t\t\t\t<div\tclassName='vuuStatus-text'>Status: {connectionStatus.toUpperCase()}</div>\n\t\t\t</div>\n\t\t</>\n\t)\n}", "import { Dropdown } from \"@salt-ds/lab\";\nimport { Density } from \"@salt-ds/core\";\nimport { HTMLAttributes, useCallback } from \"react\";\nimport cx from \"classnames\";\n\nconst classBase = \"vuuDensitySwitch\";\n\nconst densities: Density[] = [\"high\", \"medium\", \"low\", \"touch\"];\nconst DEFAULT_DENSITY = \"high\";\n\nexport interface DensitySwitchProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n defaultDensity?: Density;\n density?: Density;\n onChange: (density: Density) => void;\n}\n\nexport const DensitySwitch = ({\n className: classNameProp,\n defaultDensity = DEFAULT_DENSITY,\n onChange,\n}: DensitySwitchProps) => {\n const handleSelectionChange = useCallback(\n (_event, selectedItem) => {\n onChange(selectedItem);\n },\n [onChange]\n );\n\n const className = cx(classBase, classNameProp);\n\n return (\n <Dropdown<Density>\n className={className}\n source={densities}\n defaultSelected={defaultDensity}\n onSelectionChange={handleSelectionChange}\n />\n );\n};\n", "import React, { Suspense, useEffect } from \"react\";\nimport { registerComponent } from \"@vuu-ui/vuu-layout\";\nimport { ErrorBoundary } from \"./ErrorBoundary\";\nimport { Loader } from \"./Loader\";\nimport { importCSS } from \"./css-module-loader\";\n\nconst componentsMap = new Map();\n\nconst useCachedFeature = (url: string) => {\n useEffect(\n () => () => {\n componentsMap.delete(url);\n },\n [url]\n );\n\n if (!componentsMap.has(url)) {\n componentsMap.set(\n url,\n React.lazy(() => import(/* @vite-ignore */ url))\n );\n }\n\n return componentsMap.get(url);\n};\n\nexport interface FeatureProps<Params extends object | undefined = undefined> {\n height?: number;\n url: string;\n css?: string;\n width?: number;\n params: Params;\n}\n\nfunction RawFeature<Params extends object | undefined>({\n url,\n css,\n params,\n ...props\n}: FeatureProps<Params>) {\n console.log(\"Feature render\", { css, url, props });\n useEffect(() => {\n console.log(\"%cFeature mount\", \"color: green;\");\n return () => {\n console.log(\"%cFeature unmount\", \"color:red;\");\n };\n }, []);\n\n if (css) {\n // import(/* @vite-ignore */ css, { assert: { type: \"css\" } }).then(\n // (cssModule) => {\n // console.log(\"%cInject Styles\", \"color: blue;font-weight: bold\");\n // document.adoptedStyleSheets = [\n // ...document.adoptedStyleSheets,\n // cssModule.default,\n // ];\n // }\n // );\n // Polyfill until cypress build supports import assertions\n // Note: already fully supported in esbuild and vite\n importCSS(css).then((styleSheet) => {\n document.adoptedStyleSheets = [\n ...document.adoptedStyleSheets,\n styleSheet,\n ];\n });\n }\n\n const LazyFeature = useCachedFeature(url);\n return (\n <ErrorBoundary>\n <Suspense fallback={<Loader />}>\n <LazyFeature {...props} {...params} />\n </Suspense>\n </ErrorBoundary>\n );\n}\n\nexport const Feature = React.memo(RawFeature);\nFeature.displayName = \"Feature\";\nregisterComponent(\"Feature\", Feature, \"view\");\n", "import React from 'react';\n// TODO\nexport class ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = { errorMessage: null };\n }\n\n static getDerivedStateFromError(error) {\n // Update state so the next render will show the fallback UI.\n return { errorMessage: error.message };\n }\n\n componentDidCatch(error, errorInfo) {\n // You can also log the error to an error reporting service\n console.log(error, errorInfo);\n }\n\n render() {\n if (this.state.errorMessage) {\n return (\n <>\n <h1>Something went wrong.</h1>\n <p>{this.state.errorMessage}</p>\n </>\n );\n }\n\n return this.props.children;\n }\n}\n", "// TODO\nexport const Loader = () => <div className=\"hwLoader\">loading</div>;\n", "export const importCSS = async (path: string) => {\n const container = new CSSStyleSheet();\n return fetch(path)\n .then((x) => x.text())\n .then((x) => container.replace(x));\n};\n", "import \"./SaveLayoutPanel.css\";\nexport const SaveLayoutPanel = () => {\n const classBase = \"vuuSaveLayoutPanel\";\n return <div className={classBase}>save layout</div>;\n};\n", "import { memo } from \"react\";\n\nexport const VuuLogo = memo(() => {\n return (\n <svg\n width=\"44\"\n height=\"45\"\n viewBox=\"0 0 44 45\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_217_6990)\">\n <path\n d=\"M39.8642 15.5509L35.9196 7.58974L34.3369 6.85464L24.6235 22.0825L39.1628 30.618L42.3152 25.6347L39.8642 15.5509Z\"\n fill=\"url(#paint0_linear_217_6990)\"\n />\n <path\n d=\"M42.6246 24.8716C41.9199 25.9157 40.9625 26.824 39.767 27.4905C38.424 28.2396 36.9563 28.597 35.5081 28.597C32.7541 28.597 30.0715 27.3094 28.4466 24.9855L15.772 3.90967L15.7655 3.9206C13.3615 0.137431 8.25372 -1.13143 4.24754 1.10507C0.178173 3.37435 -1.20852 8.39359 1.14854 12.3125L18.3445 40.9095C19.1108 42.1846 20.1816 43.1834 21.4144 43.8764C21.4241 43.8826 21.4338 43.8889 21.4435 43.8951C21.4484 43.8982 21.4549 43.9013 21.4597 43.9045C22.0332 44.2228 22.6423 44.471 23.2725 44.6536C23.3194 44.6677 23.368 44.6817 23.415 44.6942C23.6418 44.7551 23.8702 44.8097 24.1019 44.8534C24.1456 44.8612 24.1894 44.8659 24.2331 44.8737C24.4194 44.9049 24.6073 44.9314 24.7952 44.9501C24.8698 44.9579 24.9443 44.9658 25.0188 44.9704C25.2342 44.9876 25.4497 44.9985 25.6668 45.0001C25.6781 45.0001 25.6895 45.0001 25.6992 45.0001C25.7024 45.0001 25.704 45.0001 25.7073 45.0001C25.7105 45.0001 25.7121 45.0001 25.7154 45.0001C25.9503 45.0001 26.1868 44.9876 26.4217 44.9689C26.4751 44.9642 26.5286 44.9595 26.5837 44.9533C26.8137 44.9299 27.0438 44.9002 27.2738 44.8596C27.277 44.8596 27.2803 44.8596 27.2835 44.8596C27.5362 44.8144 27.7889 44.7551 28.0384 44.6864C28.0546 44.6817 28.0692 44.677 28.0854 44.6723C28.4483 44.5709 28.8063 44.4445 29.1594 44.2931C29.1659 44.29 29.174 44.2868 29.1805 44.2837C29.4494 44.1682 29.7151 44.0418 29.9759 43.8967C30.24 43.75 30.491 43.5908 30.7308 43.4206C30.9398 43.2739 31.1407 43.1179 31.3367 42.9524C31.5748 42.7495 31.8 42.5373 32.009 42.3141C32.1661 42.1471 32.3168 41.9723 32.4609 41.7913C32.5079 41.732 32.5517 41.6711 32.5954 41.6118C32.6942 41.4807 32.7882 41.3465 32.8789 41.2091C32.9259 41.1373 32.9728 41.0671 33.0182 40.9953C33.036 40.9672 33.0555 40.9407 33.0717 40.9126L42.7153 24.8763H42.6214L42.6246 24.8716Z\"\n fill=\"url(#paint1_linear_217_6990)\"\n />\n <path\n d=\"M42.8402 16.4218L42.1112 15.2232L38.9636 9.58433L37.504 7.19644C37.2286 6.56123 36.579 6.11331 35.8176 6.11331C34.8083 6.11331 33.9919 6.90147 33.9919 7.87223C33.9919 8.20154 34.0907 8.50432 34.2543 8.76808L34.2349 8.78056L39.9048 18.0808C40.5884 19.2186 40.7715 20.5437 40.4199 21.8141C40.0684 23.0845 39.226 24.1458 38.045 24.806C37.2675 25.2398 36.3846 25.4693 35.4936 25.4693C33.6727 25.4693 31.9766 24.5281 31.0662 23.0143L22.9161 9.63271H22.9323L19.4899 3.90958L19.4834 3.92051C19.4235 3.8253 19.3538 3.73947 19.2907 3.64738L19.1935 3.48663C19.1935 3.48663 19.1854 3.49131 19.1821 3.49443C17.5654 1.27666 14.9799 0.0390178 12.3118 0.00936427V0H7.91199V0.02185C10.9851 -0.184164 14.0582 1.23296 15.7656 3.92051L15.7721 3.90958L28.4451 24.987C30.0699 27.3093 32.7542 28.5985 35.5066 28.5985C36.9548 28.5985 38.4225 28.2426 39.7655 27.4919C40.961 26.8255 41.9168 25.9156 42.6231 24.8731H42.717L42.6846 24.9261C43.1366 24.2347 43.4833 23.4731 43.7068 22.6615C44.2916 20.5452 43.9871 18.3352 42.8369 16.4234L42.8402 16.4218Z\"\n fill=\"#F37880\"\n />\n <g opacity=\"0.86\">\n <path\n d=\"M34.2332 8.78212L39.9031 18.0824C40.5868 19.2202 40.7698 20.5452 40.4183 21.8156C40.2044 22.5897 39.8059 23.2858 39.2616 23.8617C39.9744 23.2343 40.4879 22.4243 40.7423 21.5035C41.0938 20.2331 40.9107 18.908 40.2271 17.7703L34.5572 8.46998L34.5767 8.4575C34.413 8.19374 34.3142 7.89096 34.3142 7.56165C34.3142 7.15586 34.4584 6.78285 34.6982 6.48476C34.2672 6.80626 33.9902 7.30881 33.9902 7.87379C33.9902 8.2031 34.0891 8.50588 34.2527 8.76964L34.2332 8.78212Z\"\n fill=\"white\"\n />\n <path\n d=\"M42.6917 24.9169L42.6863 24.9256C42.6863 24.9256 42.6899 24.9187 42.6935 24.9152C42.6935 24.9152 42.6935 24.9152 42.6935 24.9169H42.6917Z\"\n fill=\"white\"\n />\n <path\n d=\"M40.0911 27.1798C38.7481 27.9289 37.2804 28.2863 35.8322 28.2863C33.0782 28.2863 30.3955 26.9988 28.7707 24.6749L16.0961 3.59744L16.0896 3.60837C14.9281 1.78077 13.1364 0.543128 11.1422 0H7.91199V0.02185C10.9851 -0.184164 14.0582 1.23296 15.7656 3.92051L15.7721 3.90958L28.4451 24.987C30.0699 27.3093 32.7542 28.5985 35.5066 28.5985C36.9548 28.5985 38.4225 28.2426 39.7655 27.4919C40.4815 27.0924 41.1084 26.6055 41.6511 26.0561C41.1862 26.479 40.6662 26.8583 40.0894 27.1798H40.0911Z\"\n fill=\"white\"\n />\n </g>\n </g>\n <defs>\n <linearGradient\n id=\"paint0_linear_217_6990\"\n x1=\"24.6235\"\n y1=\"18.7363\"\n x2=\"42.3152\"\n y2=\"18.7363\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#4906A5\" />\n <stop offset=\"1\" stopColor=\"#D3423A\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_217_6990\"\n x1=\"-2.35794e-05\"\n y1=\"22.5009\"\n x2=\"42.7186\"\n y2=\"22.5009\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#7C06A5\" />\n <stop offset=\"1\" stopColor=\"#D3423A\" />\n </linearGradient>\n <clipPath id=\"clip0_217_6990\">\n <rect width=\"44\" height=\"45\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n});\nVuuLogo.displayName = \"VuuLogo\";\n", "import { VuuLogo } from \"@vuu-ui/vuu-icons\";\nimport { Action, Stack, useLayoutProviderDispatch } from \"@vuu-ui/vuu-layout\";\nimport { LayoutResizeAction } from \"@vuu-ui/vuu-layout/src/layout-reducer\";\nimport { Tab, Tabstrip } from \"@vuu-ui/vuu-ui-controls\";\nimport cx from \"classnames\";\nimport {\n CSSProperties,\n HTMLAttributes,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport { useThemeAttributes } from \"../theme-provider\";\n\nimport \"./LeftNav.css\";\n\nconst classBase = \"vuuLeftNav\";\n\ninterface LeftNavProps extends HTMLAttributes<HTMLDivElement> {\n \"data-path\"?: string;\n onResize?: (size: number) => void;\n open?: boolean;\n sizeCollapsed?: number;\n sizeContent?: number;\n sizeExpanded?: number;\n}\n\ntype NavStatus = \"menu-full\" | \"menu-icons\" | \"menu-content\";\ntype NavState = {\n activeTabIndex: number;\n navStatus: NavStatus;\n};\n\nexport const LeftNav = ({\n \"data-path\": path,\n onResize,\n open = true,\n sizeCollapsed = 80,\n sizeContent = 240,\n sizeExpanded = 240,\n style: styleProp,\n ...htmlAttributes\n}: LeftNavProps) => {\n const dispatch = useLayoutProviderDispatch();\n const openRef = useRef(open);\n const [navState, setNavState] = useState<NavState>({\n activeTabIndex: 0,\n navStatus: \"menu-full\",\n });\n const [themeClass] = useThemeAttributes();\n\n const getWidthAndStatus = useCallback(\n (isOpen: boolean, tabIndex: number): [number, NavStatus] => {\n switch (tabIndex) {\n case 0:\n return isOpen\n ? [sizeExpanded, \"menu-full\"]\n : [sizeCollapsed, \"menu-icons\"];\n default:\n return [sizeCollapsed + sizeContent, \"menu-content\"];\n }\n },\n [sizeCollapsed, sizeContent, sizeExpanded]\n );\n\n const handleTabSelection = useCallback(\n (value: number) => {\n const [width, navStatus] = getWidthAndStatus(openRef.current, value);\n setNavState({\n activeTabIndex: value,\n navStatus,\n });\n dispatch({\n type: Action.LAYOUT_RESIZE,\n path,\n size: width,\n } as LayoutResizeAction);\n },\n [dispatch, getWidthAndStatus, path]\n );\n\n const toggleSize = useCallback(() => {\n openRef.current = !openRef.current;\n setNavState(({ activeTabIndex, navStatus }) => ({\n activeTabIndex,\n navStatus: navStatus === \"menu-icons\" ? \"menu-full\" : \"menu-icons\",\n }));\n dispatch({\n type: Action.LAYOUT_RESIZE,\n path,\n size: openRef.current ? 240 : 80,\n } as LayoutResizeAction);\n }, [dispatch, path]);\n\n const style = {\n ...styleProp,\n \"--nav-menu-collapsed-width\": `${sizeCollapsed}px`,\n \"--nav-menu-expanded-width\": `${sizeExpanded}px`,\n } as CSSProperties;\n return (\n <div\n {...htmlAttributes}\n className={cx(classBase, `${classBase}-${navState.navStatus}`)}\n style={style}\n >\n <div\n className={cx(`${classBase}-menu-primary`, themeClass)}\n data-mode=\"dark\"\n >\n <div className=\"vuuLeftNav-logo\">\n <VuuLogo />\n </div>\n <div className={`${classBase}-main`}>\n <Tabstrip\n activeTabIndex={navState.activeTabIndex}\n animateSelectionThumb={false}\n className={`${classBase}-Tabstrip`}\n onActiveChange={handleTabSelection}\n orientation=\"vertical\"\n >\n <Tab data-icon=\"demo\" label=\"DEMO\"></Tab>\n <Tab data-icon=\"tables\" label=\"VUU TABLES\"></Tab>\n <Tab data-icon=\"templates\" label=\"LAYOUT TEMPLATES\"></Tab>\n <Tab data-icon=\"layouts\" label=\"MY LAYOUTS\"></Tab>\n </Tabstrip>\n </div>\n <div className=\"vuuLeftNav-buttonBar\">\n <button\n className={cx(\"vuuLeftNav-toggleButton\", {\n \"vuuLeftNav-toggleButton-open\": openRef.current,\n \"vuuLeftNav-toggleButton-closed\": !openRef.current,\n })}\n data-icon={openRef.current ? \"chevron-left\" : \"chevron-right\"}\n onClick={toggleSize}\n />\n </div>\n </div>\n <Stack\n active={navState.activeTabIndex - 1}\n className={`${classBase}-menu-secondary`}\n showTabs={false}\n >\n <div style={{ background: \"yellow\", height: \"100%\" }}>VUU Tables</div>\n <div style={{ background: \"green\", height: \"100%\" }}>\n Layout Templates\n </div>\n <div style={{ background: \"red\", height: \"100%\" }}>My Layouts</div>\n </Stack>\n </div>\n );\n};\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 if (scrollDirection === \"fwd\") {\n measuredDropTargets.current.push(draggedItem);\n } else {\n measuredDropTargets.current.unshift(draggedItem);\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 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 console.log({ indexOfDraggedItem, draggedItem });\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\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 const { current: dropTargets } = measuredDropTargets;\n const indexOfDraggedItem = getIndexOfDraggedItem(dropTargets);\n const draggedItem = dropTargets[indexOfDraggedItem];\n if (draggedItem) {\n dragDirectionRef.current = undefined;\n\n if (overflowMenuShowingRef.current) {\n onDrop(draggedItem.index, -1);\n } else {\n const absoluteIndexDraggedItem = getIndexOfDraggedItem(\n dropTargets,\n true\n );\n onDrop(draggedItem.index, absoluteIndexDraggedItem);\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\n/**\n The index of the dropped item is its array offset within the\n dropTargets. If there is no scrolling involved, this will be\n the same as the 'absolute' index position. If the dropTargets have\n been scrolled, though, we will only have a window of the full\n dataset, corresponding to the current scroll viewport. In that case\n we need to determine the offset and factor that into the 'absolute'\n index.\n */\nexport const getIndexOfDraggedItem = (\n dropTargets: MeasuredDropTarget[],\n absoluteIndex = false\n) => {\n const indexOfDraggedItem = dropTargets.findIndex((d) => d.isDraggedItem);\n const { index: draggedItemOriginalIndex } = dropTargets[indexOfDraggedItem];\n if (absoluteIndex) {\n const minIndex = dropTargets\n .filter((d) => !d.isDraggedItem)\n .reduce((min, d) => Math.min(min, d.index), Number.MAX_SAFE_INTEGER);\n const scrolled =\n minIndex > 0 && !(draggedItemOriginalIndex === 0 && minIndex === 1);\n if (scrolled) {\n return minIndex + indexOfDraggedItem;\n }\n }\n return indexOfDraggedItem;\n};\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 cx from \"classnames\";\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={cx(\"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", "import { Scrim } from \"@salt-ds/lab\";\nimport { Button, Text } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport { HTMLAttributes, useCallback, useRef, useState } from \"react\";\nimport { Portal } from \"../portal\";\n\nimport \"./Dialog.css\";\n\nconst classBase = \"vuuDialog\";\n\nexport interface DialogProps extends HTMLAttributes<HTMLDivElement> {\n isOpen?: boolean;\n onClose?: () => void;\n}\n\nexport const Dialog = ({\n children,\n className,\n isOpen = false,\n onClose,\n title,\n ...props\n}: DialogProps) => {\n const root = useRef<HTMLDivElement>(null);\n const [posX] = useState(0);\n const [posY] = useState(0);\n\n const close = useCallback(() => {\n onClose?.();\n }, [onClose]);\n\n const handleRender = useCallback(() => {\n // if (center && isOpen && root.current) {\n // const { width, height } = root.current.getBoundingClientRect();\n // const { innerWidth, innerHeight } = window;\n // const x = innerWidth / 2 - width / 2;\n // const y = innerHeight / 2 - height / 2;\n // setPosX(x);\n // setPosY(y);\n // }\n }, []);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <Portal onRender={handleRender} x={posX} y={posY}>\n <Scrim className={`${classBase}-scrim`} open={isOpen}>\n <div {...props} className={cx(classBase, className)} ref={root}>\n <div className={cx(\"vuuToolbarProxy\", `${classBase}-header`)}>\n <Text>{title}</Text>\n <Button\n key=\"close\"\n onClick={close}\n data-align=\"end\"\n data-icon=\"close\"\n />\n </div>\n {children}\n </div>\n </Scrim>\n </Portal>\n );\n};\n", "import { ReactElement, useLayoutEffect, useMemo } from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createContainer, renderPortal } from \"./render-portal\";\nimport { useThemeAttributes } from \"@vuu-ui/vuu-shell\";\nimport cx from \"classnames\";\n\nexport interface PortalProps {\n children: ReactElement;\n onRender?: () => void;\n x?: number;\n y?: number;\n}\n\nexport const Portal = function Portal({\n children,\n x = 0,\n y = 0,\n onRender,\n}: PortalProps) {\n // Do we need to accept container here as a prop ?\n const [themeClass, densityClass, dataMode] = useThemeAttributes();\n const renderContainer = useMemo(() => {\n return createContainer({\n className: cx(themeClass, densityClass),\n dataMode,\n });\n }, [dataMode, densityClass, themeClass]);\n\n useLayoutEffect(() => {\n renderPortal(children, renderContainer, x, y, onRender);\n }, [children, onRender, renderContainer, x, y]);\n\n useLayoutEffect(() => {\n return () => {\n if (renderContainer) {\n ReactDOM.unmountComponentAtNode(renderContainer);\n if (renderContainer.classList.contains(\"vuuPopup\")) {\n renderContainer.parentElement?.removeChild(renderContainer);\n }\n }\n };\n }, [renderContainer]);\n\n // useLayoutEffect(() => {\n // renderContainer.current = renderPortal(children, x, y, container)\n // return () => {\n // if (renderContainer.current){\n // console.log('EXPLICIT UNMOUNT')\n // ReactDOM.unmountComponentAtNode(renderContainer.current);\n // if (renderContainer.current.classList.contains('hwReactPopup')){\n // renderContainer.current.parentElement.removeChild(renderContainer.current);\n // renderContainer.current = null;\n // }\n // }\n // }\n // },[])\n return null;\n};\n", "import * as ReactDOM from \"react-dom\";\nimport { ReactElement } from \"react\";\nimport cx from \"classnames\";\n\nlet containerId = 1;\n\nconst getPortalContainer = ({\n className,\n dataMode,\n x = 0,\n y = 0,\n win = window,\n}: HTMLContainerProps) => {\n const el = win.document.createElement(\"div\");\n el.className = cx(`vuuPopup ${containerId++}`, className);\n el.style.cssText = `left:${x}px; top:${y}px;`;\n if (dataMode) {\n el.dataset.mode = dataMode;\n }\n win.document.body.appendChild(el);\n return el;\n};\n\nexport interface HTMLContainerProps {\n className?: string;\n dataMode?: string;\n x?: number;\n y?: number;\n win?: typeof globalThis;\n}\n\nexport const createContainer = (props: HTMLContainerProps) =>\n getPortalContainer(props);\n\nexport const renderPortal = (\n component: ReactElement,\n container: HTMLElement,\n x: number,\n y: number,\n onRender?: () => void\n) => {\n // check this first to see if position has changed\n container.style.cssText = `left:${x}px; top:${y}px;position: absolute;`;\n\n ReactDOM.render(component, container, onRender);\n};\n", "import { useCallback, useRef } from \"react\";\nimport { Portal } from \"../portal\";\nimport MenuList, { MenuListProps } from \"./MenuList\";\nimport { useCascade } from \"./use-cascade\";\n// import { useClickAway } from \"./use-click-away\";\nimport { useItemsWithIdsNext } from \"./use-items-with-ids-next\";\nimport { useId } from \"@vuu-ui/vuu-layout\";\nimport { PopupCloseCallback } from \"../popup\";\nimport { ContextMenuOptions } from \"./useContextMenu\";\n\nexport interface ContextMenuProps extends Omit<MenuListProps, \"onCloseMenu\"> {\n onClose?: PopupCloseCallback;\n position?: { x: number; y: number };\n withPortal?: boolean;\n}\n\nconst noop = () => undefined;\n\nexport const ContextMenu = ({\n activatedByKeyboard,\n children: childrenProp,\n className,\n id: idProp,\n onClose = () => undefined,\n position = { x: 0, y: 0 },\n style,\n ...menuListProps\n}: ContextMenuProps) => {\n const closeHandlerRef = useRef<ContextMenuProps[\"onClose\"]>(onClose);\n closeHandlerRef.current = onClose;\n\n const id = useId(idProp);\n const closeMenuRef = useRef<(location?: string) => void>(noop);\n const [menus, actions] = useItemsWithIdsNext(childrenProp, id);\n const navigatingWithKeyboard = useRef(activatedByKeyboard);\n const handleMouseEnterItem = useCallback(() => {\n navigatingWithKeyboard.current = false;\n }, []);\n\n console.log({ actions, menus });\n\n const handleActivate = useCallback(\n (menuItemId: string) => {\n const actionId = menuItemId.slice(9);\n const { action, options } = actions[actionId];\n closeMenuRef.current(id);\n onClose({\n type: \"menu-action\",\n menuId: action,\n options: options as ContextMenuOptions,\n });\n },\n [actions, id, onClose]\n );\n\n const { closeMenu, listItemProps, openMenu, openMenus, handleRender } =\n useCascade({\n // FIXME\n id: `${id}`,\n onActivate: handleActivate,\n onMouseEnterItem: handleMouseEnterItem,\n position,\n });\n closeMenuRef.current = closeMenu;\n\n const handleCloseMenu = () => {\n console.log(\"handleCloseMenu\");\n navigatingWithKeyboard.current = true;\n closeMenu();\n };\n\n const handleHighlightMenuItem = () => {\n // console.log(`highlight ${idx}`);\n };\n\n const lastMenu = openMenus.length - 1;\n\n const getChildMenuId = (i: number) => {\n if (i >= lastMenu) {\n return undefined;\n } else {\n const { id } = openMenus[i + 1];\n return id;\n }\n };\n\n return (\n <>\n {openMenus.map(({ id: menuId, left, top }, i, all) => {\n const childMenuId = getChildMenuId(i);\n // TODO don't need the portal here, vuu popup service takes care of this\n return (\n <Portal key={i} x={left} y={top} onRender={handleRender}>\n <MenuList\n {...menuListProps}\n activatedByKeyboard={navigatingWithKeyboard.current}\n childMenuShowing={childMenuId}\n className={className}\n id={menuId}\n isRoot={i === 0}\n key={i}\n listItemProps={listItemProps}\n onActivate={handleActivate}\n onHighlightMenuItem={handleHighlightMenuItem}\n onCloseMenu={handleCloseMenu}\n onOpenMenu={openMenu}\n style={style}\n tabIndex={i === all.length - 1 ? 0 : undefined}\n >\n {menus[menuId]}\n </MenuList>\n </Portal>\n );\n })}\n </>\n );\n};\n\nContextMenu.displayName = \"ContextMenu\";\n", "import React, {\n FC,\n HTMLAttributes,\n ReactElement,\n ReactNode,\n useLayoutEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport cx from \"classnames\";\n//TODO do we want this dependency ?\nimport { useId } from \"@vuu-ui/vuu-layout\";\nimport { useKeyboardNavigation } from \"./use-keyboard-navigation\";\nimport { isMenuItemGroup } from \"./use-items-with-ids-next\";\n\nimport \"./MenuList.css\";\n\nconst classBase = \"vuuMenuList\";\n\nexport const Separator = () => <li className=\"vuuMenuItem-divider\" />;\n\nexport interface MenuItemGroupProps {\n children:\n | ReactElement<MenuItemProps>[]\n | [ReactElement<MenuItemLabelProps>, ...ReactElement<MenuItemProps>[]];\n label?: string;\n}\n\nexport interface MenuItemProps extends HTMLAttributes<HTMLDivElement> {\n action?: string;\n idx?: number;\n options?: unknown;\n}\n\n// Purely used as markers, props will be extracted\nexport const MenuItemGroup: FC<MenuItemGroupProps> = () => null;\n// eslint-disable-next-line no-unused-vars\nexport const MenuItem = ({ children, idx, ...props }: MenuItemProps) => {\n return <div {...props}>{children}</div>;\n};\n\nexport interface MenuItemLabelProps {\n children: ReactNode;\n}\nconst MenuItemLabel = ({ children }: { children: ReactNode }) => (\n <>{children}</>\n);\nMenuItemLabel.displayName = \"MenuItemLabel\";\nMenuItem.Label = MenuItemLabel;\n\nconst getDisplayName = (item: ReactNode) =>\n React.isValidElement(item) &&\n typeof item.type !== \"string\" &&\n \"displayName\" in item.type\n ? item.type.displayName\n : undefined;\n\nexport const isMenuItemLabel = (\n item: ReactNode\n): item is ReactElement<MenuItemLabelProps> =>\n getDisplayName(item) === \"MenuItemLabel\";\n\nconst hasIcon = (child: ReactElement) => child.props[\"data-icon\"];\n\nexport interface MenuListProps extends HTMLAttributes<HTMLDivElement> {\n activatedByKeyboard?: boolean;\n children: ReactElement[];\n childMenuShowing?: string;\n highlightedIdx?: number;\n isRoot?: boolean;\n listItemProps?: Partial<MenuItemProps>;\n onActivate?: (menuId: string) => void;\n onCloseMenu: (idx: number) => void;\n onOpenMenu?: (menuItemEl: HTMLElement) => void;\n onHighlightMenuItem?: (idx: number) => void;\n}\n\nconst MenuList = ({\n activatedByKeyboard,\n childMenuShowing,\n children,\n className,\n highlightedIdx: highlightedIdxProp,\n id: idProp,\n isRoot,\n listItemProps,\n onHighlightMenuItem,\n onActivate,\n onCloseMenu,\n onOpenMenu,\n ...props\n}: MenuListProps) => {\n const id = useId(idProp);\n const root = useRef<HTMLDivElement>(null);\n\n // The id generation be,ongs in useIttemsWithIds\n const mapIdxToId = useMemo(() => new Map(), []);\n\n const handleActivate = (idx: number) => {\n const el = root.current?.querySelector(`:scope > [data-idx='${idx}']`);\n el?.id && onActivate?.(el.id);\n };\n\n const { focusVisible, highlightedIndex, listProps } = useKeyboardNavigation({\n count: React.Children.count(children),\n highlightedIndex: highlightedIdxProp,\n onActivate: handleActivate,\n onHighlight: onHighlightMenuItem,\n onOpenMenu,\n onCloseMenu,\n });\n\n const appliedFocusVisible = childMenuShowing == undefined ? focusVisible : -1;\n\n useLayoutEffect(() => {\n if (childMenuShowing === undefined && activatedByKeyboard) {\n root.current?.focus();\n }\n }, [activatedByKeyboard, childMenuShowing]);\n\n const getActiveDescendant = () =>\n highlightedIndex === undefined || highlightedIndex === -1\n ? undefined\n : mapIdxToId.get(highlightedIndex);\n\n function renderContent() {\n const propsCommonToAllListItems = {\n ...listItemProps,\n role: \"menuitem\",\n };\n\n const maybeIcon = (\n childElement: ReactElement,\n withIcon: boolean,\n iconName?: string\n ) =>\n withIcon\n ? [\n <span\n className=\"vuuIconContainer\"\n data-icon={iconName}\n key=\"icon\"\n />,\n ].concat(childElement)\n : childElement;\n\n function addClonedChild(\n list: ReactElement[],\n child: ReactElement,\n idx: number,\n withIcon: boolean\n ) {\n const {\n children,\n className,\n \"data-icon\": iconName,\n id: itemId,\n hasSeparator,\n label,\n ...props\n } = child.props;\n const hasSubMenu = isMenuItemGroup(child);\n const subMenuShowing = hasSubMenu && childMenuShowing === itemId;\n const ariaControls = subMenuShowing ? `${id}-${itemId}` : undefined;\n\n list.push(\n <MenuItem\n {...props}\n {...propsCommonToAllListItems}\n {...getMenuItemProps(\n itemId,\n idx,\n child.key ?? itemId,\n highlightedIndex,\n appliedFocusVisible,\n className,\n hasSeparator\n )}\n aria-controls={ariaControls}\n aria-haspopup={hasSubMenu || undefined}\n aria-expanded={subMenuShowing || undefined}\n >\n {hasSubMenu\n ? maybeIcon(label ?? children, withIcon, iconName)\n : maybeIcon(children, withIcon, iconName)}\n </MenuItem>\n );\n // mapIdxToId.set(idx, itemId);\n }\n\n const listItems: ReactElement[] = [];\n\n if (children.length > 0) {\n const withIcon = children.some(hasIcon);\n children.forEach((child, idx) => {\n addClonedChild(listItems, child, idx, withIcon);\n });\n }\n\n return listItems;\n }\n\n return (\n <div\n {...props}\n {...listProps}\n aria-activedescendant={getActiveDescendant()}\n className={cx(classBase, className, {\n [`${classBase}-childMenuShowing`]: childMenuShowing !== undefined,\n })}\n data-root={isRoot || undefined}\n id={id}\n ref={root}\n role=\"menu\"\n >\n {renderContent()}\n </div>\n );\n};\n\nconst getMenuItemProps = (\n itemId: string,\n idx: number,\n key: string,\n highlightedIdx: number,\n focusVisible: number,\n className: string,\n hasSeparator: boolean\n) => ({\n id: `menuitem-${itemId}`,\n key: key ?? idx,\n \"data-idx\": idx,\n \"data-highlighted\": idx === highlightedIdx || undefined,\n className: cx(\"vuuMenuItem\", className, {\n \"vuuMenuItem-separator\": hasSeparator,\n focusVisible: focusVisible === idx,\n }),\n});\n\nMenuList.displayName = \"MenuList\";\nexport default MenuList;\n", "import {\n FocusEvent,\n KeyboardEvent,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { hasPopup, isRoot } from \"./utils\";\nimport { isNavigationKey } from \"./key-code\";\n\nexport interface KeyboardNavigationProps {\n autoHighlightFirstItem?: boolean;\n count: number;\n highlightedIndex?: number;\n onActivate: (idx: number) => void;\n onHighlight?: (idx: number) => void;\n onCloseMenu: (idx: number) => void;\n onOpenMenu?: (menuItemEl: HTMLElement) => void;\n}\n\nexport interface KeyboardHookListProps {\n // onBlur: (evt: FocusEvent) => void;\n onFocus: (evt: FocusEvent) => void;\n onKeyDown: (evt: KeyboardEvent) => void;\n onMouseDownCapture: () => void;\n onMouseMove: () => void;\n onMouseLeave: () => void;\n}\n\nexport interface NavigationHookResult {\n focusVisible: number;\n controlledHighlighting: boolean;\n highlightedIndex: number;\n setHighlightedIndex: (idx: number) => void;\n // keyboardNavigation: RefObject<boolean>;\n listProps: KeyboardHookListProps;\n setIgnoreFocus: (ignoreFocus: boolean) => void;\n}\n\n// we need a way to set highlightedIdx when selection changes\nexport const useKeyboardNavigation = ({\n autoHighlightFirstItem = false,\n count,\n highlightedIndex: highlightedIndexProp,\n onActivate,\n onHighlight,\n // onKeyDown,\n onCloseMenu,\n onOpenMenu,\n}: KeyboardNavigationProps): NavigationHookResult => {\n const highlightedIndexRef = useRef(\n highlightedIndexProp ?? autoHighlightFirstItem ? 0 : -1\n );\n const [, forceRender] = useState<unknown>(null);\n const controlledHighlighting = highlightedIndexProp !== undefined;\n\n const setHighlightedIdx = useCallback(\n (idx) => {\n highlightedIndexRef.current = idx;\n onHighlight?.(idx);\n forceRender({});\n },\n [onHighlight]\n );\n\n const setHighlightedIndex = useCallback(\n (idx) => {\n if (idx !== highlightedIndexRef.current) {\n if (!controlledHighlighting) {\n setHighlightedIdx(idx);\n }\n }\n },\n [controlledHighlighting, setHighlightedIdx]\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 highlightedIndex = controlledHighlighting\n ? highlightedIndexProp\n : highlightedIndexRef.current;\n\n const navigateChildldItems = useCallback(\n (e: KeyboardEvent) => {\n const nextIdx = nextItemIdx(count, e.key, highlightedIndexRef.current);\n if (nextIdx !== highlightedIndexRef.current) {\n setHighlightedIndex(nextIdx);\n }\n },\n [count, setHighlightedIndex]\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (isNavigationKey(e)) {\n e.preventDefault();\n e.stopPropagation();\n keyBoardNavigation.current = true;\n navigateChildldItems(e);\n } else if (\n (e.key === \"ArrowRight\" || e.key === \"Enter\") &&\n hasPopup(e.target as HTMLElement, highlightedIndex)\n ) {\n const menuEl = e.target as HTMLElement;\n const menuItemEl = menuEl.querySelector(\n `:scope > [data-idx='${highlightedIndex}']`\n ) as HTMLElement;\n\n if (menuItemEl) {\n onOpenMenu?.(menuItemEl);\n }\n } else if (e.key === \"ArrowLeft\" && !isRoot(e.target as HTMLElement)) {\n onCloseMenu(highlightedIndex);\n } else if (e.key === \"Enter\") {\n onActivate && onActivate(highlightedIndex);\n } else if (e.key === \"Tab\") {\n onCloseMenu(-1);\n }\n },\n [\n highlightedIndex,\n navigateChildldItems,\n onActivate,\n onCloseMenu,\n onOpenMenu,\n ]\n );\n\n const listProps: KeyboardHookListProps = useMemo(\n () => ({\n onFocus: () => {\n if (highlightedIndex === -1) {\n setHighlightedIdx(0);\n }\n },\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 onMouseMove: () => {\n if (keyBoardNavigation.current) {\n keyBoardNavigation.current = false;\n }\n },\n onMouseLeave: () => {\n // label === 'ParsedInput' && console.log(`%c[useKeyboardNavigationHook]<${label}> onMouseLeave`,'color:brown')\n keyBoardNavigation.current = true;\n setIgnoreFocus(false);\n setHighlightedIndex(-1);\n },\n }),\n [handleKeyDown, highlightedIndex, setHighlightedIdx, setHighlightedIndex]\n );\n\n return {\n focusVisible: keyBoardNavigation.current ? highlightedIndex : -1,\n controlledHighlighting,\n highlightedIndex,\n setHighlightedIndex: setHighlightedIndex,\n // keyBoardNavigation,\n listProps,\n setIgnoreFocus,\n };\n};\n\n// need to be able to accommodate disabled items\nfunction nextItemIdx(count: number, key: string, idx: number) {\n if (key === \"ArrowUp\") {\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", "export const isRoot = (el: HTMLElement) =>\n el.closest(`[data-root='true']`) !== null;\n\nexport const hasPopup = (el: HTMLElement, idx: number) =>\n (el.ariaHasPopup === \"true\" && el.dataset?.idx === `${idx}`) ||\n el.querySelector(`:scope > [data-idx='${idx}'][aria-haspopup='true']`) !==\n null;\n", "function 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 }: { key: string },\n orientation = \"vertical\"\n) => {\n const navigationKeys =\n orientation === \"vertical\"\n ? verticalNavigationKeys\n : horizontalNavigationKeys;\n return navigationKeys.has(key);\n};\n", "import React, { ReactElement, ReactNode, useCallback, useMemo } from \"react\";\nimport { isMenuItemLabel, MenuItemGroup, Separator } from \"./MenuList\";\n\nexport const isMenuItemGroup = (child: ReactElement) =>\n child.type === MenuItemGroup || !!child.props[\"data-group\"];\n\ntype Menus = { [key: string]: ReactElement[] };\ntype Actions = { [key: string]: { action: string; options?: unknown } };\n\nconst getLabelFromChildren = (children: ReactNode) => {\n if (Array.isArray(children) && isMenuItemLabel(children[0])) {\n return children[0];\n }\n};\n\nconst assignId = (\n child: ReactElement,\n path: string,\n group: boolean,\n hasSeparator = false\n) => {\n const {\n props: { children },\n } = child;\n // If we have a leaf MenuItem, any children will be label etc\n // if we have a GroupMenuItem, firet item mat be Label\n return {\n childWithId: React.cloneElement(child, {\n hasSeparator,\n id: `${path}`,\n key: path,\n children: group ? getLabelFromChildren(children) : children,\n }),\n grandChildren: group ? children : undefined,\n };\n};\n\nexport const useItemsWithIdsNext = (\n childrenProp: ReactElement[],\n rootId: string\n): [Menus, Actions] => {\n const normalizeChildren = useCallback(() => {\n const collectChildren = (\n children: ReactElement[],\n path = rootId,\n menus: Menus = {},\n actions: Actions = {}\n ) => {\n const list: ReactElement[] = (menus[path] = []);\n let idx = 0;\n let hasSeparator = false;\n\n React.Children.forEach(children, (child) => {\n if (isMenuItemLabel(child)) {\n // do nothing\n } else if (child.type === Separator) {\n hasSeparator = true;\n } else {\n const hasChildItems = isMenuItemGroup(child);\n const childPath = `${path}-${idx}`;\n const {\n props: { action, options },\n } = child;\n\n const { childWithId, grandChildren } = assignId(\n child,\n childPath,\n hasChildItems,\n hasSeparator\n );\n list.push(childWithId);\n if (grandChildren) {\n collectChildren(grandChildren, childPath, menus, actions);\n } else {\n actions[childPath] = { action, options };\n }\n idx += 1;\n hasSeparator = false;\n }\n });\n return [menus, actions];\n };\n\n return collectChildren(childrenProp);\n }, [rootId, childrenProp]);\n\n const [menus, actions] = useMemo(\n () => normalizeChildren(),\n [normalizeChildren]\n );\n\n return [menus, actions] as [Menus, Actions];\n};\n", "import {\n MouseEvent,\n SyntheticEvent,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { closestListItem } from \"./list-dom-utils\";\nimport { MenuItemProps } from \"./MenuList\";\n// import {mousePosition} from './aim/utils';\n// import {aiming} from './aim/aim';\n\nconst nudge = (\n menus: RuntimeMenuDescriptor[],\n distance: number,\n pos: \"left\" | \"top\"\n) => {\n return menus.map((m, i) =>\n i === menus.length - 1\n ? {\n ...m,\n [pos]: m[pos] - distance,\n }\n : m\n );\n};\nconst nudgeLeft = (menus: RuntimeMenuDescriptor[], distance: number) =>\n nudge(menus, distance, \"left\");\nconst nudgeUp = (menus: RuntimeMenuDescriptor[], distance: number) =>\n nudge(menus, distance, \"top\");\n\nconst flipSides = (id: string, menus: RuntimeMenuDescriptor[]) => {\n const [parentMenu, menu] = menus.slice(-2);\n const el = document.getElementById(`${id}-${menu.id}`);\n if (el === null) {\n throw Error(`useCascade.flipSides element with id ${menu.id} not found`);\n }\n const { width } = el.getBoundingClientRect();\n return menus.map((m) =>\n m === menu\n ? {\n ...m,\n left: parentMenu.left - (width - 2),\n }\n : m\n );\n};\n\n// const closedNode = (el: HTMLElement) =>\n// el.ariaHasPopup === \"true\" && el.ariaExpanded !== \"true\";\nconst getPosition = (el: HTMLElement, openMenus: RuntimeMenuDescriptor[]) => {\n const [{ left, top: menuTop }] = openMenus.slice(-1);\n // const {top, right, bottom, left} = el.getBoundingClientRect();\n // this will not work for MenuList within window, we need the\n // const {offsetLeft: left, offsetTop: menuTop} = el.closest('.vuuMenuList');\n const { offsetWidth: width, offsetTop: top } = el;\n return { left: left + width, top: top + menuTop };\n};\n\nexport type RuntimeMenuDescriptor = {\n id: string;\n left: number;\n top: number;\n};\n\nexport const getHostMenuId = (id: string, rootId: string) => {\n const pos = id.lastIndexOf(\"-\");\n return pos > -1 ? id.slice(9, pos) : rootId;\n};\n\nconst getTargetMenuId = (id: string) => id.slice(9);\n\nconst getMenuItemDetails = (\n { ariaExpanded, ariaHasPopup, id }: HTMLElement,\n rootId: string\n) => {\n if (id.startsWith(\"menuitem\")) {\n return {\n hostMenuId: getHostMenuId(id, rootId),\n targetMenuId: getTargetMenuId(id),\n menuItemId: id,\n isGroup: ariaHasPopup === \"true\",\n isOpen: ariaExpanded === \"true\",\n };\n } else {\n throw Error(`getMenuItemDetails #${id} is not a menuitem`);\n }\n};\n\nexport interface CascadeHookProps {\n id: string;\n onActivate: (menuId: string) => void;\n onMouseEnterItem: (evt: MouseEvent, itemId: string) => void;\n position: { x: number; y: number };\n}\n\nexport interface CascadeHooksResult {\n closeMenu: () => void;\n handleRender: () => void;\n listItemProps: Partial<MenuItemProps>;\n openMenu: (menuItemEl: HTMLElement) => void;\n openMenus: RuntimeMenuDescriptor[];\n}\n\ntype MenuStatus = \"no-popup\" | \"popup-open\" | \"pending-close\" | \"popup-pending\";\ntype MenuState = { [key: string]: MenuStatus };\n\nexport const useCascade = ({\n id: rootId,\n onActivate,\n onMouseEnterItem,\n position: { x: posX, y: posY },\n}: CascadeHookProps): CascadeHooksResult => {\n const [, forceRefresh] = useState({});\n const openMenus = useRef<RuntimeMenuDescriptor[]>([\n { id: rootId, left: posX, top: posY },\n ]);\n\n const menuIsOpen = useCallback(\n (menuId: string) =>\n openMenus.current.findIndex((menu) => menu.id === menuId) !== -1,\n []\n );\n\n const getOpenMenuStatus = useCallback((menuId: string) => {\n const state = menuState.current[menuId];\n if (state === undefined) {\n throw Error(`getOpenMenuState no entry for menu ${menuId}`);\n }\n return state;\n }, []);\n\n const setOpenMenus = useCallback((menus: RuntimeMenuDescriptor[]) => {\n openMenus.current = menus;\n forceRefresh({});\n }, []);\n\n const menuOpenPendingTimeout = useRef<number | undefined>();\n const menuClosePendingTimeout = useRef<number | undefined>();\n const menuState = useRef<MenuState>({ [rootId]: \"no-popup\" });\n // const prevLevel = useRef(0);\n\n // const prevAim = useRef({mousePos: null, distance: true});\n\n const openMenu = useCallback(\n (hostMenuId = rootId, targetMenuId: string, itemId = null) => {\n if (hostMenuId === rootId && itemId === null) {\n setOpenMenus([{ id: rootId, left: posX, top: posY }]);\n } else {\n menuState.current[hostMenuId] = \"popup-open\";\n const el = document.getElementById(itemId) as HTMLElement;\n if (el !== null) {\n const { left, top } = getPosition(el, openMenus.current);\n setOpenMenus(\n openMenus.current.concat({ id: targetMenuId, left, top })\n );\n } else {\n throw Error(`openMenu no menuItem ${itemId}`);\n }\n }\n },\n [rootId, posX, posY, setOpenMenus]\n );\n\n const closeMenu = useCallback(\n (menuId?: string) => {\n if (menuId === rootId) {\n setOpenMenus([]);\n } else {\n const menus = openMenus.current.slice();\n const lastMenu = menus.pop() as RuntimeMenuDescriptor;\n menuState.current[lastMenu.id] = \"no-popup\";\n const parentMenu = menus.at(-1);\n if (parentMenu) {\n menuState.current[parentMenu.id] = \"no-popup\";\n }\n setOpenMenus(menus);\n }\n },\n [rootId, setOpenMenus]\n );\n\n const closeMenus = useCallback(\n (menuItemId) => {\n const menus = openMenus.current.slice();\n const menuItemMenuId = menuItemId.slice(9);\n let { id: lastMenuId } = menus.at(-1) as RuntimeMenuDescriptor;\n while (menus.length > 1 && !menuItemMenuId.startsWith(lastMenuId)) {\n const parentMenuId = getHostMenuId(lastMenuId, rootId);\n menus.pop();\n menuState.current[lastMenuId] = \"no-popup\";\n menuState.current[parentMenuId] = \"no-popup\";\n ({ id: lastMenuId } = menus[menus.length - 1]);\n }\n if (menus.length < openMenus.current.length) {\n setOpenMenus(menus);\n }\n },\n [rootId, setOpenMenus]\n );\n\n const clearAnyScheduledOpenTasks = useCallback(() => {\n if (menuOpenPendingTimeout.current) {\n clearTimeout(menuOpenPendingTimeout.current);\n menuOpenPendingTimeout.current = undefined;\n }\n }, []);\n\n const scheduleOpen = useCallback(\n (hostMenuId: string, targetMenuId: string, menuItemId: string) => {\n clearAnyScheduledOpenTasks();\n // do we need to set target state to pending-open ?s\n\n menuOpenPendingTimeout.current = window.setTimeout(() => {\n console.log(\n `scheduleOpen<timeout> opening menu ${targetMenuId} from menu ${hostMenuId} via menuitem ${menuItemId}`\n );\n closeMenus(menuItemId);\n menuState.current[hostMenuId] = \"popup-open\";\n menuState.current[targetMenuId] = \"no-popup\";\n openMenu(hostMenuId, targetMenuId, menuItemId);\n }, 400);\n },\n [clearAnyScheduledOpenTasks, closeMenus, openMenu]\n );\n\n const scheduleClose = useCallback(\n (hostMenuId: string, openMenuId: string, itemId: string) => {\n console.log(\n `scheduleClose openMenuId ${openMenuId} from parent menu ${hostMenuId} itemId ${itemId}`\n );\n menuState.current[openMenuId] = \"pending-close\";\n menuClosePendingTimeout.current = window.setTimeout(() => {\n closeMenus(itemId);\n }, 400);\n },\n [closeMenus]\n );\n\n const handleRender = useCallback(() => {\n const { current: menus } = openMenus;\n const [menu] = menus.slice(-1);\n const el = document.getElementById(menu.id);\n console.log(\n `handle render ${JSON.stringify(menu)} tabindex ${el?.tabIndex}`\n );\n if (el) {\n const { right, bottom } = el.getBoundingClientRect();\n const { clientHeight, clientWidth } = document.body;\n if (right > clientWidth) {\n const newMenus =\n menus.length > 1\n ? flipSides(rootId, menus)\n : nudgeLeft(menus, right - clientWidth);\n setOpenMenus(newMenus);\n } else if (bottom > clientHeight) {\n const newMenus = nudgeUp(menus, bottom - clientHeight);\n setOpenMenus(newMenus);\n }\n\n if (typeof el.tabIndex === \"number\") {\n console.log(`focus el ${el.id}`);\n el.focus();\n }\n } else {\n console.log(`no element found with if ${menu.id}`);\n }\n }, [rootId, setOpenMenus]);\n\n // TODO introduce a delay parameter that allows click to requeat an immediate render\n const triggerChildMenu = useCallback(\n (menuItemEl: HTMLElement) => {\n const { hostMenuId, targetMenuId, menuItemId, isGroup, isOpen } =\n getMenuItemDetails(menuItemEl, rootId);\n\n const {\n current: { [hostMenuId]: state },\n } = menuState;\n\n // console.log(\n // `%ctriggerChildMenu\n // menuItem ${menuItemId}\n // host menu: ${hostMenuId}\n // target menu: ${targetMenuId}\n // item index: ${menuItemId}\n // state ${state}\n // isGroup ${isGroup} isOpen ${isOpen}\n // openMenus: ${JSON.stringify(openMenus.current)}\n // full state='${JSON.stringify(menuState.current)}`,\n // \"color: green; font-weight: bold;\"\n // );\n\n console.log(`trigger child menu ${menuItemId}`);\n if (state === \"no-popup\" && isGroup) {\n menuState.current[hostMenuId] = \"popup-pending\";\n scheduleOpen(hostMenuId, targetMenuId, menuItemId);\n } else if (state === \"popup-pending\" && !isGroup) {\n menuState.current[hostMenuId] = \"no-popup\";\n clearTimeout(menuOpenPendingTimeout.current);\n menuOpenPendingTimeout.current = undefined;\n } else if (state === \"popup-pending\" && isGroup) {\n clearTimeout(menuOpenPendingTimeout.current);\n scheduleOpen(hostMenuId, targetMenuId, menuItemId);\n } else if (state === \"popup-open\") {\n if (menuIsOpen(targetMenuId)) {\n const menuStatus = getOpenMenuStatus(targetMenuId);\n console.log({ menuStatus });\n // Close any child menus of the target menu. This can happen if we have\n // opened child menus, then moused out of the menu entirely, to re-enter\n // at a higher level\n closeMenus(menuItemId);\n\n switch (menuStatus) {\n case \"pending-close\":\n // cancel the close\n clearTimeout(menuClosePendingTimeout.current);\n menuClosePendingTimeout.current = undefined;\n menuState.current[targetMenuId] = \"no-popup\";\n clearAnyScheduledOpenTasks();\n break;\n default:\n }\n } else {\n // TODO review the below, suspectb it's over complicating things\n const [parentOfLastOpenedMenu, lastOpenedMenu] =\n openMenus.current.slice(-2);\n if (\n parentOfLastOpenedMenu.id === hostMenuId &&\n menuState.current[lastOpenedMenu.id] !== \"pending-close\" /*&&\n sameLevel*/\n ) {\n scheduleClose(hostMenuId, lastOpenedMenu.id, menuItemId);\n if (isGroup && !isOpen) {\n scheduleOpen(hostMenuId, targetMenuId, menuItemId);\n }\n } else if (\n parentOfLastOpenedMenu.id === hostMenuId &&\n isGroup &&\n menuItemId !== lastOpenedMenu.id &&\n menuState.current[lastOpenedMenu.id] === \"pending-close\"\n ) {\n // if there is already an item queued for opening cancel it\n scheduleOpen(hostMenuId, targetMenuId, menuItemId);\n } else if (isGroup) {\n // closeMenus(menuId, itemId);\n scheduleOpen(hostMenuId, targetMenuId, menuItemId);\n } else if (\n !(\n (menuState.current[lastOpenedMenu.id] === \"pending-close\") /*&&\n sameLevel*/\n )\n ) {\n closeMenus(menuItemId);\n }\n }\n }\n\n if (state === \"pending-close\") {\n clearAnyScheduledOpenTasks();\n clearTimeout(menuClosePendingTimeout.current);\n menuClosePendingTimeout.current = undefined;\n menuState.current[hostMenuId] = \"popup-open\";\n }\n },\n [\n clearAnyScheduledOpenTasks,\n closeMenus,\n getOpenMenuStatus,\n menuIsOpen,\n rootId,\n scheduleClose,\n scheduleOpen,\n ]\n );\n\n const listItemProps: Partial<MenuItemProps> = useMemo(\n () => ({\n onMouseEnter: (evt: MouseEvent) => {\n const menuItemEl = closestListItem(evt.target as HTMLElement);\n triggerChildMenu(menuItemEl);\n onMouseEnterItem(evt, menuItemEl.id);\n },\n\n onClick: (evt: SyntheticEvent) => {\n const listItemEl = closestListItem(evt.target as HTMLElement);\n const { isGroup, menuItemId } = getMenuItemDetails(listItemEl, rootId);\n if (isGroup) {\n triggerChildMenu(listItemEl);\n } else {\n onActivate(menuItemId);\n }\n },\n }),\n [onActivate, onMouseEnterItem, rootId, triggerChildMenu]\n );\n\n return {\n closeMenu,\n handleRender,\n listItemProps,\n openMenu: triggerChildMenu,\n openMenus: openMenus.current,\n };\n};\n", "// const listItemElement = (listEl: HTMLElement, listItemIdx: number) =>\n// listEl.querySelector(`:scope > [data-idx=\"${listItemIdx}\"]`);\n\nexport function listItemIndex(listItemEl: HTMLElement) {\n if (listItemEl) {\n const idx = listItemEl.dataset.idx;\n if (idx) {\n return parseInt(idx, 10);\n // eslint-disable-next-line no-cond-assign\n } else if (listItemEl.ariaPosInSet) {\n return parseInt(listItemEl.ariaPosInSet, 10) - 1;\n }\n }\n}\n\nconst listItemId = (el: HTMLElement | null | undefined) => el?.id;\n\nexport const closestListItem = (el: HTMLElement | null | undefined) =>\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 type {\n ContextMenuContextType,\n MenuActionHandler,\n MenuBuilder,\n} from \"@vuu-ui/vuu-data-types\";\nimport { createContext, ReactNode, useCallback, useMemo } from \"react\";\n\nexport const ContextMenuContext = createContext<ContextMenuContextType | null>(\n null\n);\n\nexport interface ContextMenuProviderProps {\n children: ReactNode;\n label?: string;\n menuActionHandler?: MenuActionHandler;\n menuBuilder: MenuBuilder;\n}\n\ninterface ProviderProps extends ContextMenuProviderProps {\n context: ContextMenuContextType | null;\n}\n\nconst Provider = ({\n children,\n context,\n menuActionHandler,\n menuBuilder,\n}: ProviderProps) => {\n const menuBuilders = useMemo(() => {\n if (context?.menuBuilders && menuBuilder) {\n return context.menuBuilders.concat(menuBuilder);\n } else if (menuBuilder) {\n return [menuBuilder];\n } else {\n return context?.menuBuilders || [];\n }\n }, [context, menuBuilder]);\n\n const handleMenuAction = useCallback(\n (reason) => {\n if (menuActionHandler?.(reason)) {\n return true;\n }\n\n if (context?.menuActionHandler?.(reason)) {\n return true;\n }\n },\n [context, menuActionHandler]\n );\n\n return (\n <ContextMenuContext.Provider\n value={{\n menuActionHandler: handleMenuAction,\n menuBuilders,\n }}\n >\n {children}\n </ContextMenuContext.Provider>\n );\n};\n\n// Need an option for local menu to override higher-level menu, rather than extend\nexport const ContextMenuProvider = ({\n children,\n label,\n menuActionHandler,\n menuBuilder,\n}: ContextMenuProviderProps) => {\n return (\n <ContextMenuContext.Consumer>\n {(parentContext) => (\n <Provider\n context={parentContext}\n label={label}\n menuActionHandler={menuActionHandler}\n menuBuilder={menuBuilder}\n >\n {children}\n </Provider>\n )}\n </ContextMenuContext.Consumer>\n );\n};\n", "import { ContextMenuItemDescriptor } from \"@vuu-ui/vuu-data-types\";\nimport { useThemeAttributes } from \"@vuu-ui/vuu-shell\";\nimport { isGroupMenuItemDescriptor } from \"@vuu-ui/vuu-utils\";\nimport cx from \"classnames\";\nimport { cloneElement, MouseEvent, useCallback, useContext } from \"react\";\nimport {\n MenuActionClosePopup,\n PopupCloseReason,\n PopupService,\n reasonIsMenuAction,\n} from \"../popup\";\nimport { MenuActionHandler, MenuBuilder } from \"@vuu-ui/vuu-data-types\";\nimport { ContextMenu, ContextMenuProps } from \"./ContextMenu\";\nimport { MenuItem, MenuItemGroup } from \"./MenuList\";\nimport { ContextMenuContext } from \"./context-menu-provider\";\n\nexport type ContextMenuOptions = {\n [key: string]: unknown;\n contextMenu?: JSX.Element;\n ContextMenuProps?: Partial<ContextMenuProps> & {\n className?: string;\n \"data-mode\"?: string;\n };\n};\n\nexport type ShowContextMenu = (\n e: MouseEvent<HTMLElement>,\n location: string,\n options: ContextMenuOptions\n) => void;\n\n// The argument allows a top-level menuBuilder to operate outside the Context\nexport const useContextMenu = (\n menuBuilder?: MenuBuilder,\n menuActionHandler?: MenuActionHandler\n): [ShowContextMenu, () => void] => {\n const ctx = useContext(ContextMenuContext);\n const [themeClass, densityClass, dataMode] = useThemeAttributes();\n\n const buildMenuOptions = useCallback(\n (menuBuilders: MenuBuilder[], location, options) => {\n let results: ContextMenuItemDescriptor[] = [];\n for (const menuBuilder of menuBuilders) {\n // Maybe we should leave the concatenation to the menuBuilder, then it can control menuItem order\n results = results.concat(menuBuilder(location, options));\n }\n return results;\n },\n []\n );\n\n const handleShowContextMenu = useCallback(\n (\n e: MouseEvent<HTMLElement>,\n location: string,\n { ContextMenuProps, contextMenu, ...options }: ContextMenuOptions\n ) => {\n e.stopPropagation();\n e.preventDefault();\n\n if (contextMenu) {\n return showContextMenuComponent(e, contextMenu);\n }\n\n const menuBuilders: MenuBuilder[] = [];\n if (menuBuilder) {\n menuBuilders.push(menuBuilder);\n }\n if (\n ctx &&\n Array.isArray(ctx?.menuBuilders) &&\n ctx.menuBuilders.length > 0\n ) {\n menuBuilders.push(...ctx.menuBuilders);\n }\n\n if (menuBuilders.length > 0) {\n const menuItemDescriptors = buildMenuOptions(\n menuBuilders,\n location,\n options\n );\n\n // const menuHandler = menuActionHandler ?? ctx?.menuActionHandler;\n const menuHandler: MenuActionHandler = (\n action: MenuActionClosePopup\n ) => {\n if (menuActionHandler?.(action) === true) {\n return true;\n } else {\n return ctx?.menuActionHandler(action);\n }\n };\n\n if (menuItemDescriptors.length && menuHandler) {\n console.log(`showContextMenu ${location}`, {\n options,\n });\n showContextMenu(e, menuItemDescriptors, menuHandler, {\n ...ContextMenuProps,\n className: cx(\n ContextMenuProps?.className,\n themeClass,\n densityClass\n ),\n \"data-mode\": dataMode,\n });\n }\n } else {\n console.warn(\n \"useContextMenu, no menuBuilders configured. These should be supplied via the ContextMenuProvider(s)\"\n );\n }\n },\n [\n buildMenuOptions,\n ctx,\n dataMode,\n densityClass,\n menuActionHandler,\n menuBuilder,\n themeClass,\n ]\n );\n\n const hideContextMenu = useCallback(() => {\n console.log(\"hide comnytext menu\");\n }, []);\n\n return [handleShowContextMenu, hideContextMenu];\n};\n\nconst NO_OPTIONS = {};\n\nconst showContextMenuComponent = (\n e: MouseEvent<HTMLElement>,\n contextMenu: JSX.Element\n) => {\n const position = {\n x: e.clientX,\n y: e.clientY,\n };\n\n PopupService.showPopup({\n focus: true,\n left: 0,\n top: 0,\n component: cloneElement(contextMenu, { position }),\n });\n};\n\nconst showContextMenu = (\n e: MouseEvent<HTMLElement>,\n menuDescriptors: ContextMenuItemDescriptor[],\n handleContextMenuAction: MenuActionHandler,\n {\n position: positionProp,\n ...contextMenuProps\n }: ContextMenuOptions[\"ContextMenuProps\"] = NO_OPTIONS\n) => {\n const menuItems = (menuDescriptors: ContextMenuItemDescriptor[]) => {\n const fromDescriptor = (menuItem: ContextMenuItemDescriptor, i: number) =>\n isGroupMenuItemDescriptor(menuItem) ? (\n <MenuItemGroup key={i} label={menuItem.label}>\n {menuItem.children.map(fromDescriptor)}\n </MenuItemGroup>\n ) : (\n <MenuItem\n key={i}\n action={menuItem.action}\n data-icon={menuItem.icon}\n options={menuItem.options}\n >\n {menuItem.label}\n </MenuItem>\n );\n\n return menuDescriptors.map(fromDescriptor);\n };\n\n const handleClose = (reason?: PopupCloseReason) => {\n if (reasonIsMenuAction(reason)) {\n handleContextMenuAction(reason);\n // TODO this results in onClose being called twice on component\n // cant simply be removed, some refactoring work needed\n PopupService.hidePopup();\n }\n contextMenuProps?.onClose?.(reason);\n };\n\n const position = positionProp ?? {\n x: e.clientX,\n y: e.clientY,\n };\n\n const component = (\n <ContextMenu\n {...contextMenuProps}\n onClose={handleClose}\n position={position}\n >\n {menuItems(menuDescriptors)}\n </ContextMenu>\n );\n PopupService.showPopup({ left: 0, top: 0, component, focus: true });\n};\n", "import cx from \"classnames\";\nimport React, {\n createElement,\n CSSProperties,\n HTMLAttributes,\n ReactElement,\n useEffect,\n useRef,\n} from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { ContextMenuOptions } from \"../menu\";\nimport { renderPortal } from \"../portal\";\n\nimport \"./popup-service.css\";\n\nlet _dialogOpen = false;\nconst _popups: string[] = [];\n\nexport type PopupCloseCallback = (reason?: PopupCloseReason) => void;\n\nexport type ClickAwayClosePopup = {\n type: \"click-away\";\n mouseEvt: MouseEvent;\n};\n\nexport type MenuActionClosePopup = {\n menuId: string;\n options: ContextMenuOptions;\n type: \"menu-action\";\n};\n\nexport type PopupCloseReason = ClickAwayClosePopup | MenuActionClosePopup;\n\nexport const reasonIsMenuAction = (\n reason?: PopupCloseReason\n): reason is MenuActionClosePopup => reason?.type === \"menu-action\";\n\nexport const reasonIsClickAway = (\n reason?: PopupCloseReason\n): reason is ClickAwayClosePopup => reason?.type === \"click-away\";\n\nfunction specialKeyHandler(e: KeyboardEvent) {\n if (e.key === \"Esc\") {\n if (_popups.length) {\n closeAllPopups();\n } else if (_dialogOpen) {\n const dialogRoot = document.body.querySelector(\".vuuDialog\");\n if (dialogRoot) {\n ReactDOM.unmountComponentAtNode(dialogRoot);\n }\n }\n }\n}\n\nfunction outsideClickHandler(e: MouseEvent) {\n if (_popups.length) {\n console.log(`Popup.outsideClickHandler ... `);\n const popupContainers = document.body.querySelectorAll(\".vuuPopup\");\n for (let i = 0; i < popupContainers.length; i++) {\n if (popupContainers[i].contains(e.target as HTMLElement)) {\n console.log(` ... its ok, he's one of us`);\n return;\n }\n }\n console.log(\" ... close all\");\n closeAllPopups({ mouseEvt: e, type: \"click-away\" });\n }\n}\n\nfunction closeAllPopups(reason?: PopupCloseReason) {\n if (_popups.length === 1) {\n PopupService.hidePopup(reason, \"anon\", \"all\");\n } else if (_popups.length) {\n // onsole.log(`closeAllPopups`);\n const popupContainers = document.body.querySelectorAll(\".vuuPopup\");\n for (let i = 0; i < popupContainers.length; i++) {\n ReactDOM.unmountComponentAtNode(popupContainers[i]);\n }\n popupClosed(\"*\");\n }\n}\n\nfunction dialogOpened() {\n if (_dialogOpen === false) {\n _dialogOpen = true;\n window.addEventListener(\"keydown\", specialKeyHandler, true);\n }\n}\n\nfunction dialogClosed() {\n if (_dialogOpen) {\n _dialogOpen = false;\n window.removeEventListener(\"keydown\", specialKeyHandler, true);\n }\n}\n\nfunction popupOpened(name: string) {\n if (_popups.indexOf(name) === -1) {\n _popups.push(name);\n //onsole.log('PopupService, popup opened ' + name + ' popups : ' + _popups);\n if (_dialogOpen === false) {\n window.addEventListener(\"keydown\", specialKeyHandler, true);\n window.addEventListener(\"click\", outsideClickHandler, true);\n }\n }\n}\n\nfunction popupClosed(name: string /*, group=null*/) {\n if (_popups.length) {\n if (name === \"*\") {\n _popups.length = 0;\n } else {\n const pos = _popups.indexOf(name);\n if (pos !== -1) {\n _popups.splice(pos, 1);\n }\n }\n //onsole.log('PopupService, popup closed ' + name + ' popups : ' + _popups);\n if (_popups.length === 0 && _dialogOpen === false) {\n window.removeEventListener(\"keydown\", specialKeyHandler, true);\n window.removeEventListener(\"click\", outsideClickHandler, true);\n }\n }\n}\n\nconst PopupComponent = ({\n children,\n position,\n style,\n}: HTMLAttributes<HTMLDivElement> & {\n position?: \"above\" | \"below\" | \"\";\n style?: CSSProperties;\n}) => {\n const className = cx(\"hwPopup\", \"hwPopupContainer\", position);\n return createElement(\"div\", { className, style }, children);\n};\n\nlet incrementingKey = 1;\n\nexport interface ShowPopupProps {\n depth?: number;\n /**\n * if true, focus will be invoked on first focusable element\n */\n focus?: boolean;\n name?: string;\n group?: string;\n position?: \"above\" | \"below\" | \"\";\n left?: number;\n right?: \"auto\" | number;\n top?: number;\n component: ReactElement;\n width?: number | \"auto\";\n}\n\nexport class PopupService {\n static onClose: PopupCloseCallback | undefined;\n static showPopup({\n group = \"all\",\n name = \"anon\",\n left = 0,\n position = \"\",\n right = \"auto\",\n top = 0,\n width = \"auto\",\n component,\n }: ShowPopupProps) {\n if (!component) {\n throw Error(`PopupService showPopup, no component supplied`);\n }\n\n if (typeof component.props.onClose === \"function\") {\n PopupService.onClose = component.props.onClose;\n } else {\n PopupService.onClose = undefined;\n }\n\n popupOpened(name);\n\n document.addEventListener(\"keydown\", PopupService.escapeKeyListener, true);\n\n let el = document.body.querySelector(\".vuuPopup.\" + group) as HTMLElement;\n if (el === null) {\n el = document.createElement(\"div\") as HTMLElement;\n el.className = \"vuuPopup \" + group;\n document.body.appendChild(el);\n }\n\n const style = { width };\n\n renderPortal(\n createElement(\n PopupComponent,\n { key: incrementingKey++, position, style },\n component\n ),\n el,\n left,\n top,\n () => {\n PopupService.keepWithinThePage(el, right);\n }\n );\n }\n\n static escapeKeyListener(evt: KeyboardEvent) {\n if (evt.key === \"Escape\") {\n console.log(`%cESC listener`, \"color:green;font-weight:bold;\");\n PopupService.hidePopup();\n }\n }\n\n static hidePopup(reason?: PopupCloseReason, name = \"anon\", group = \"all\") {\n console.log(`PopupService.hidePopup`, {\n reason,\n });\n if (_popups.indexOf(name) !== -1) {\n popupClosed(name);\n const popupRoot = document.body.querySelector(`.vuuPopup.${group}`);\n if (popupRoot) {\n ReactDOM.unmountComponentAtNode(popupRoot);\n }\n }\n document.removeEventListener(\n \"keydown\",\n PopupService.escapeKeyListener,\n true\n );\n\n console.log(\n `PopupService will call onClose if found ${typeof PopupService?.onClose}`\n );\n PopupService?.onClose?.(reason);\n }\n\n static keepWithinThePage(el: HTMLElement, right: number | \"auto\" = \"auto\") {\n const target = el.querySelector(\".vuuPopupContainer > *\") as HTMLElement;\n if (target) {\n const {\n top,\n left,\n width,\n height,\n right: currentRight,\n } = target.getBoundingClientRect();\n\n const w = window.innerWidth;\n const h = window.innerHeight;\n\n const overflowH = h - (top + height);\n if (overflowH < 0) {\n target.style.top = Math.round(top) + overflowH + \"px\";\n }\n\n const overflowW = w - (left + width);\n if (overflowW < 0) {\n target.style.left = Math.round(left) + overflowW + \"px\";\n }\n\n if (typeof right === \"number\" && right !== currentRight) {\n const adjustment = right - currentRight;\n target.style.left = left + adjustment + \"px\";\n }\n }\n }\n}\n\nexport class DialogService {\n static showDialog(dialog: ReactElement) {\n const containerEl = \".vuuDialog\";\n const onClose = dialog.props.onClose;\n\n dialogOpened();\n\n ReactDOM.render(\n React.cloneElement(dialog, {\n container: containerEl,\n onClose: () => {\n DialogService.closeDialog();\n if (onClose) {\n onClose();\n }\n },\n }),\n document.body.querySelector(containerEl)\n );\n }\n\n static closeDialog() {\n dialogClosed();\n const dialogRoot = document.body.querySelector(\".vuuDialog\");\n if (dialogRoot) {\n ReactDOM.unmountComponentAtNode(dialogRoot);\n }\n }\n}\n\nexport interface PopupProps {\n children: ReactElement;\n close?: boolean;\n depth: number;\n group?: string;\n name: string;\n position?: \"above\" | \"below\" | \"\";\n width: number;\n}\n\nexport const Popup = (props: PopupProps) => {\n const pendingTask = useRef<number | undefined>();\n const ref = useRef<HTMLElement>(null);\n\n const show = (props: PopupProps, boundingClientRect: DOMRect) => {\n const { name, group, depth, width } = props;\n let left: number | undefined;\n let top: number | undefined;\n\n if (pendingTask.current) {\n window.clearTimeout(pendingTask.current);\n pendingTask.current = undefined;\n }\n\n if (props.close === true) {\n PopupService.hidePopup(undefined, name, group);\n } else {\n const { position, children: component } = props;\n const {\n left: targetLeft,\n top: targetTop,\n width: clientWidth,\n bottom: targetBottom,\n } = boundingClientRect;\n\n if (position === \"below\") {\n left = targetLeft;\n top = targetBottom;\n } else if (position === \"above\") {\n left = targetLeft;\n top = targetTop;\n }\n\n pendingTask.current = window.setTimeout(() => {\n PopupService.showPopup({\n name,\n group,\n depth,\n position,\n left,\n top,\n width: width || clientWidth,\n component,\n });\n }, 10);\n }\n };\n\n useEffect(() => {\n if (ref.current) {\n const el = ref.current.parentElement;\n const boundingClientRect = el?.getBoundingClientRect();\n if (boundingClientRect) {\n show(props, boundingClientRect);\n }\n }\n\n return () => {\n PopupService.hidePopup(undefined, props.name, props.group);\n };\n }, [props]);\n\n return React.createElement(\"div\", { className: \"popup-proxy\", ref });\n};\n", "import {\n HTMLAttributes,\n MouseEvent,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport {\n PopupCloseReason,\n reasonIsClickAway,\n useContextMenu,\n} from \"@vuu-ui/vuu-popups\";\nimport cx from \"classnames\";\nimport { Button } from \"@salt-ds/core\";\nimport { useId } from \"@vuu-ui/vuu-layout\";\n\nimport \"./PopupMenu.css\";\nimport { MenuActionHandler, MenuBuilder } from \"@vuu-ui/vuu-data-types\";\n\nconst classBase = \"vuuPopupMenu\";\n\nexport interface PopupMenuProps extends HTMLAttributes<HTMLButtonElement> {\n icon?: string;\n menuActionHandler?: MenuActionHandler;\n menuBuilder?: MenuBuilder;\n menuLocation?: string;\n menuOptions?: { [key: string]: unknown };\n onMenuClose?: () => void;\n}\n\nconst getPosition = (element: HTMLElement | null) => {\n if (element) {\n const { bottom, left } = element.getBoundingClientRect();\n return { x: left, y: bottom + 6 };\n }\n};\n\nexport const PopupMenu = ({\n className,\n icon = \"more-vert\",\n id: idProp,\n menuActionHandler,\n menuBuilder,\n menuLocation = \"header\",\n menuOptions,\n onMenuClose,\n tabIndex = 0,\n ...htmlAttributes\n}: PopupMenuProps) => {\n const rootRef = useRef<HTMLButtonElement>(null);\n const suppressShowMenuRef = useRef(false);\n const [menuOpen, setMenuOpen] = useState(false);\n const id = useId(idProp);\n const [showContextMenu] = useContextMenu(menuBuilder, menuActionHandler);\n\n const handleMenuClose = useCallback(\n (reason?: PopupCloseReason) => {\n console.log(`PopupMenu popup closed`, {\n reason,\n });\n setMenuOpen(false);\n // If user has clicked the MenuButton whilst menu is open, we want to close it.\n // The PopupService will close it for us as a 'click-away' event. We don't want\n // that click on the button to re-open it.\n if (reasonIsClickAway(reason)) {\n const target = reason.mouseEvt.target as HTMLElement;\n if (target === rootRef.current) {\n suppressShowMenuRef.current = true;\n }\n } else {\n requestAnimationFrame(() => {\n onMenuClose?.();\n if (tabIndex !== -1) {\n rootRef.current?.focus();\n }\n });\n }\n },\n [onMenuClose, tabIndex]\n );\n\n const showMenu = useCallback(\n (e: MouseEvent<HTMLElement>) => {\n if (suppressShowMenuRef.current) {\n suppressShowMenuRef.current = false;\n } else {\n setMenuOpen(true);\n showContextMenu(e, menuLocation, {\n ContextMenuProps: {\n id: `${id}-menu`,\n onClose: handleMenuClose,\n position: getPosition(rootRef.current),\n },\n ...menuOptions,\n });\n }\n },\n [handleMenuClose, id, menuLocation, menuOptions, showContextMenu]\n );\n\n return (\n <Button\n {...htmlAttributes}\n aria-controls={`${id}-menu-root`}\n aria-expanded={menuOpen}\n aria-haspopup=\"menu\"\n className={cx(classBase, className, {\n [`${classBase}-open`]: menuOpen,\n })}\n data-icon={icon}\n id={id}\n onClick={showMenu}\n ref={rootRef}\n tabIndex={tabIndex}\n variant=\"secondary\"\n />\n );\n};\n", "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 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 cx from \"classnames\";\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 = cx(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 { makePrefixer } from \"@salt-ds/core\";\nimport { ReactElement } from \"react\";\nimport { escapeRegExp } from \"../utils\";\n\nimport \"./Highlighter.css\";\n\nconst withBaseName = makePrefixer(\"saltHighlighter\");\n\nexport interface HighlighterProps {\n matchPattern?: RegExp | string;\n text?: string;\n}\n\nexport const Highlighter = (\n props: HighlighterProps\n): ReactElement<HighlighterProps> => {\n const { matchPattern, text = \"\" } = props;\n\n const matchRegex =\n typeof matchPattern === \"string\"\n ? new RegExp(`(${escapeRegExp(matchPattern)})`, \"gi\")\n : matchPattern;\n\n if (matchRegex === undefined) {\n return <>{text}</>;\n }\n return (\n <span>\n {text.split(matchRegex).map((part, index) =>\n part.match(matchRegex) ? (\n <strong\n className={withBaseName(\"highlight\")}\n key={`${index}-${part}`}\n >\n {part}\n </strong>\n ) : (\n part\n )\n )}\n </span>\n );\n};\n", "const regExp = /[.*+?^${}()|[\\]\\\\]/g;\n\nexport function escapeRegExp(string: string): string {\n return string.replace(regExp, \"\\\\$&\");\n}\n", "import { ForwardedRef, forwardRef, HTMLAttributes } from \"react\";\nimport cx from \"classnames\";\nimport { ListItemProps, ListItemType } from \"./listTypes\";\nimport { Highlighter } from \"./Highlighter\";\nimport { CheckboxIcon } from \"./CheckboxIcon\";\n\nimport \"./ListItem.css\";\n\nconst classBase = \"vuuListItem\";\n\n// A dummy ListItem rendered once and not visible. We measure this to\n// determine height of ListItem and monitor it for size changes (in\n// case of runtime density switch). This allows ListItem height to\n// be controlled purely through CSS.\nexport const ListItemProxy = forwardRef(function ListItemNextProxy(\n props: HTMLAttributes<HTMLDivElement>,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n return (\n <div\n aria-hidden\n className={cx(classBase, `${classBase}-proxy`)}\n ref={forwardedRef}\n />\n );\n});\n\n// Note: the memo is effective if List label is passed as simple string\n// If children are used, it is the responsibility of caller to memoise\n// these if performance on highlight is perceived to be an issue.\nexport const ListItem = forwardRef<HTMLDivElement, ListItemProps>(\n function ListItem(\n {\n children,\n className: classNameProp,\n disabled,\n tabIndex,\n item,\n itemHeight,\n itemTextHighlightPattern,\n label,\n selectable: _notUsed,\n selected,\n showCheckbox,\n style: styleProp,\n ...props\n },\n forwardedRef\n ) {\n const className = cx(classBase, classNameProp, {\n vuuDisabled: disabled,\n [`${classBase}-checkbox`]: showCheckbox,\n });\n const style =\n itemHeight !== undefined\n ? {\n ...styleProp,\n height: itemHeight,\n }\n : styleProp;\n\n return (\n <div\n className={className}\n {...props}\n aria-disabled={disabled || undefined}\n aria-selected={selected || undefined}\n ref={forwardedRef}\n style={style}\n >\n {showCheckbox && <CheckboxIcon aria-hidden checked={selected} />}\n {children && typeof children !== \"string\" ? (\n children\n ) : itemTextHighlightPattern == null ? (\n <span className={`${classBase}-textWrapper`}>\n {label || children}\n </span>\n ) : (\n <Highlighter\n matchPattern={itemTextHighlightPattern}\n text={label || (children as string)}\n />\n )}\n </div>\n );\n }\n) as ListItemType;\n", "import { HTMLAttributes } from \"react\";\nimport cx from \"classnames\";\n\nimport \"./CheckboxIcon.css\";\n\nconst classBase = \"vuuCheckboxIcon\";\n\nexport interface CheckboxIconProps extends HTMLAttributes<HTMLSpanElement> {\n checked?: boolean;\n}\nexport const CheckboxIcon = ({\n checked = false,\n ...htmlAttributes\n}: CheckboxIconProps) => (\n <span\n {...htmlAttributes}\n className={cx(classBase, { [`${classBase}-checked`]: checked })}\n />\n);\n", "import { useId } from \"@vuu-ui/vuu-layout\";\nimport { useForkRef } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport {\n cloneElement,\n ForwardedRef,\n forwardRef,\n isValidElement,\n ReactElement,\n useRef,\n} from \"react\";\nimport {\n CollectionIndexer,\n CollectionItem,\n isSelected,\n itemToString as defaultItemToString,\n LIST_FOCUS_VISIBLE,\n ScrollingAPI,\n SelectionStrategy,\n useCollectionItems,\n useImperativeScrollingAPI,\n} from \"./common-hooks\";\n\nimport { ListItem as DefaultListItem, ListItemProxy } from \"./ListItem\";\nimport { ListItemProps, ListProps } from \"./listTypes\";\nimport { useList } from \"./useList\";\nimport { useListHeight } from \"./useListHeight\";\nimport { useScrollPosition } from \"./useScrollPosition\";\n\nimport \"./List.css\";\n\nconst defaultEmptyMessage = \"No data to display\";\n\nconst classBase = \"vuuList\";\n\nexport const List = forwardRef(function List<\n Item,\n Selection extends SelectionStrategy = \"default\"\n>(\n {\n ListItem = DefaultListItem,\n ListPlaceholder,\n allowDragDrop,\n borderless,\n children,\n className,\n collapsibleHeaders = false,\n defaultHighlightedIndex,\n defaultSelected,\n disabled: listDisabled = false,\n disableFocus = false,\n disableTypeToSelect,\n displayedItemCount = 10,\n emptyMessage,\n focusVisible: focusVisibleProp,\n getItemHeight: getItemHeightProp,\n getItemId,\n height,\n highlightedIndex: highlightedIndexProp,\n id: idProp,\n itemGapSize = 0,\n itemHeight: itemHeightProp,\n itemTextHighlightPattern,\n itemToString = defaultItemToString,\n listHandlers: listHandlersProp,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n onMoveListItem,\n onSelect,\n onSelectionChange,\n onHighlight,\n restoreLastFocus,\n selected: selectedProp,\n selectionStrategy,\n checkable = selectionStrategy === \"multiple\",\n scrollingApiRef,\n // TODO do we still need these ?\n selectionKeys,\n showEmptyMessage = false,\n source,\n style: styleProp,\n stickyHeaders,\n tabToSelect,\n width,\n ...htmlAttributes\n }: ListProps<Item, Selection>,\n forwardedRef?: ForwardedRef<HTMLDivElement>\n) {\n const id = useId(idProp);\n const rootRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const rowHeightProxyRef = useRef<HTMLDivElement>(null);\n\n const collectionHook = useCollectionItems<Item>({\n id,\n label: \"List\",\n source,\n children,\n options: {\n collapsibleHeaders,\n // Add Group ChildTypes to options\n getItemId,\n itemToString,\n },\n });\n\n // console.log(collectionHook);\n\n const { listClientHeight, listHeight, listItemHeight } = useListHeight({\n borderless,\n displayedItemCount,\n getItemHeight: getItemHeightProp,\n height,\n itemCount: collectionHook.data.length,\n itemGapSize,\n itemHeight: itemHeightProp,\n rootRef,\n rowHeightRef: rowHeightProxyRef,\n });\n\n const { onVerticalScroll, viewportRange } = useScrollPosition({\n containerSize:\n // TODO whats the right way to handle string values - ie percentages\n listClientHeight ?? (typeof listHeight === \"number\" ? listHeight : 0),\n itemCount: collectionHook.data.length,\n itemGapSize: itemGapSize,\n itemSize: listItemHeight,\n });\n\n const {\n draggable,\n draggedItemIndex,\n dropIndicator,\n focusVisible,\n highlightedIndex,\n listControlProps,\n listHandlers,\n listItemHeaderHandlers,\n scrollIntoView,\n selected,\n } = useList<Item, Selection>({\n allowDragDrop,\n collapsibleHeaders,\n collectionHook,\n containerRef: rootRef,\n contentRef,\n defaultHighlightedIndex,\n defaultSelected: collectionHook.itemToCollectionItem<\n Selection,\n typeof defaultSelected\n >(defaultSelected),\n disabled: listDisabled,\n disableTypeToSelect,\n highlightedIndex: highlightedIndexProp,\n id,\n label: id,\n listHandlers: listHandlersProp, // should this be in context ?\n onMoveListItem,\n onSelect,\n onSelectionChange,\n onHighlight,\n restoreLastFocus,\n selected: collectionHook.itemToCollectionItem<\n Selection,\n typeof defaultSelected\n >(selectedProp),\n selectionStrategy,\n selectionKeys,\n stickyHeaders,\n tabToSelect,\n viewportRange,\n });\n\n useImperativeScrollingAPI({\n collectionHook,\n forwardedRef: scrollingApiRef,\n scrollableRef: rootRef,\n scrollIntoView,\n });\n\n // focusVisible passes as a prop takes precedence\n const appliedFocusVisible = focusVisibleProp ?? focusVisible;\n\n const createHeader: (\n idx: { value: number },\n headerId: string,\n title: string,\n expanded?: boolean\n ) => ReactElement = function createHeader(idx, headerId, title, expanded) {\n const header = (\n <ListItem\n {...listItemHeaderHandlers}\n className={cx(`${classBase}Header`, {\n focusVisible: collapsibleHeaders && appliedFocusVisible === idx.value,\n })}\n aria-expanded={expanded}\n data-idx={collapsibleHeaders ? idx.value : undefined}\n data-index={collapsibleHeaders ? idx.value : undefined}\n data-highlighted={idx.value === highlightedIndex || undefined}\n data-sticky={stickyHeaders}\n data-selectable={false}\n id={headerId}\n key={`header-${idx.value}`}\n label={title}\n // role=\"presentation\"\n />\n );\n idx.value += 1;\n return header;\n };\n\n const getItemHeight =\n getItemHeightProp === undefined ? () => itemHeightProp : getItemHeightProp;\n\n function renderCollectionItem(\n list: ReactElement[],\n item: CollectionItem<Item>,\n idx: { value: number }\n ) {\n // Note, a number of these props are specific to ListItem. What if user\n // implements a custom ListItem but neglects to handle all these props.\n // Is that on them ?\n const { disabled, value, id: itemId, label } = item;\n const isChildItem = isValidElement(value);\n const listItemProps: ListItemProps<Item> & {\n key: string;\n \"data-idx\": number;\n \"data-index\": number;\n } = {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore until we refactor this whole section\n className: cx(value?.props?.className, {\n vuuHighlighted: idx.value === highlightedIndex,\n vuuFocusVisible: appliedFocusVisible === idx.value,\n [`vuuDraggable-dragAway`]: draggedItemIndex === idx.value,\n }),\n disabled: disabled || listDisabled,\n id: itemId,\n item: isChildItem ? undefined : item?.value ?? undefined,\n itemHeight: getItemHeight(idx.value),\n itemTextHighlightPattern,\n key: itemId,\n \"data-idx\": idx.value,\n \"data-index\": idx.value,\n label,\n role: \"option\",\n selected: isSelected<Item>(selected, item),\n showCheckbox: checkable,\n };\n list.push(\n isChildItem ? (\n cloneElement(value, listItemProps)\n ) : (\n <ListItem {...listItemProps} />\n )\n );\n\n idx.value += 1;\n }\n\n const addGroup: (\n list: ReactElement[],\n items: CollectionItem<Item>[],\n idx: { value: number }\n ) => void = function addGroup(\n list: ReactElement[],\n items: CollectionItem<Item>[],\n idx: { value: number }\n ) {\n const { count = 0, id, expanded, label = \"\" } = items[idx.value];\n const header = createHeader(idx, id, label, expanded);\n const childItems: ReactElement | ReactElement[] =\n expanded !== false\n ? [header].concat(\n renderCollectionItems(items, idx, idx.value + count) || []\n )\n : header;\n\n list.push(\n <div key={id} role=\"group\">\n {childItems}\n </div>\n );\n };\n\n const renderCollectionItems = (\n items: CollectionItem<Item>[],\n idx: CollectionIndexer = { value: 0 },\n end = items.length\n ): ReactElement[] | undefined => {\n const listItems: ReactElement[] = [];\n while (idx.value < end) {\n const item = items[idx.value];\n if (item.header) {\n listItems.push(\n createHeader(idx, item.id, item.label!, item.expanded === false)\n );\n } else if (item.childNodes) {\n addGroup(listItems, items, idx);\n } else {\n renderCollectionItem(listItems, item, idx);\n }\n }\n return listItems;\n };\n\n function renderEmpty() {\n if (emptyMessage || showEmptyMessage) {\n return (\n <span className={`${classBase}-empty-message`}>\n {emptyMessage ?? defaultEmptyMessage}\n </span>\n );\n } else {\n return null;\n }\n }\n\n const renderContent = () => {\n if (collectionHook.data.length) {\n // const itemsToRender =\n // typeof draggedItemIndex === \"number\" && draggedItemIndex >= 0\n // ? collectionHook.data.filter((d) => d.index !== draggedItemIndex)\n // : collectionHook.data;\n const itemsToRender = collectionHook.data;\n\n return renderCollectionItems(itemsToRender);\n } else {\n renderEmpty();\n }\n };\n\n const contentHeight = \"auto\";\n const sizeStyles = {\n \"--list-item-gap\": itemGapSize ? `${itemGapSize}px` : undefined,\n minWidth,\n minHeight,\n width: width ?? \"100%\",\n height: height ?? \"100%\",\n maxWidth: maxWidth ?? width,\n maxHeight: maxHeight ?? listHeight,\n };\n return (\n <div\n aria-multiselectable={\n selectionStrategy === \"multiple\" ||\n selectionStrategy === \"extended\" ||\n selectionStrategy === \"extended-multi-range\" ||\n undefined\n }\n {...htmlAttributes}\n {...listHandlers}\n {...listControlProps}\n className={cx(classBase, className, {\n [`${classBase}-collapsible`]: collapsibleHeaders,\n vuuFocusVisible: highlightedIndex === LIST_FOCUS_VISIBLE,\n })}\n id={`${id}`}\n ref={useForkRef<HTMLDivElement>(rootRef, forwardedRef)}\n role=\"listbox\"\n onScroll={onVerticalScroll}\n style={{ ...styleProp, ...sizeStyles }}\n tabIndex={listDisabled || disableFocus ? undefined : 0}\n >\n <ListItemProxy ref={rowHeightProxyRef} />\n {collectionHook.data.length === 0 && ListPlaceholder !== undefined ? (\n <>\n <ListPlaceholder />\n </>\n ) : (\n <div\n className={`${classBase}-scrollingContentContainer`}\n ref={contentRef}\n style={{ height: contentHeight }}\n >\n {renderContent()}\n {dropIndicator}\n {draggable}\n </div>\n )}\n </div>\n );\n}) as <Item = string, Selection extends SelectionStrategy = \"default\">(\n props: ListProps<Item, Selection> & {\n ref?: ForwardedRef<ScrollingAPI<Item>>;\n }\n) => ReactElement<ListProps<Item, Selection>>;\n", "import { cloneElement, createContext, ReactElement, useContext } from \"react\";\nimport { CollectionHookResult } from \"./collectionTypes\";\n\nexport interface collectionContext<T> {\n collection: CollectionHookResult<T>;\n}\n\nexport const CollectionContext = createContext<\n CollectionHookResult<any> | undefined\n>(undefined);\n\ninterface ContextProviderProps<Item> {\n children: ReactElement;\n collectionHook: CollectionHookResult<Item>;\n}\n\nexport function CollectionProvider<Item>({\n children,\n collectionHook,\n ...props\n}: ContextProviderProps<Item>) {\n return (\n <CollectionContext.Provider value={collectionHook}>\n {Object.keys(props).length > 0 ? cloneElement(children, props) : children}\n </CollectionContext.Provider>\n );\n}\n\nexport function useCollection<Item>(): CollectionHookResult<Item> | undefined {\n const collection = useContext(CollectionContext);\n if (collection) {\n return collection as CollectionHookResult<Item>;\n }\n}\n", "// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ItemToStringFunction = (item: any) => string;\n\nconst isPlainObject = (obj: unknown) =>\n Object.prototype.toString.call(obj) === \"[object Object]\";\n\nexport function itemToString(item: unknown): string {\n if (typeof item === \"string\") {\n return item;\n } else if (!isPlainObject(item)) {\n return String(item);\n }\n\n if (Object.prototype.hasOwnProperty.call(item, \"label\")) {\n return String((item as { label?: string }).label);\n }\n\n console.warn(\n [\n \"itemToString: you've likely forgotten to set the label prop on the item object.\",\n \"You can also provide your own `itemToString` implementation.\",\n ].join(\"\\n\")\n );\n\n return \"\";\n}\n", "import React from \"react\";\n\nfunction union<T>(set1: Set<T>, ...sets: Set<T>[]) {\n const result = new Set(set1);\n for (let set of sets) {\n for (let 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 ArrowRight = \"ArrowRight\";\nexport const Enter = \"Enter\";\nexport const Escape = \"Escape\";\nexport const Home = \"Home\";\nexport const End = \"End\";\nexport const PageUp = \"PageUp\";\nexport const PageDown = \"PageDown\";\nexport const Space = \" \";\nexport const Tab = \"Tab\";\n\nconst actionKeys = new Set([\"Enter\", \"Delete\", \" \"]);\nconst focusKeys = new Set([\"Tab\"]);\nconst arrowLeftRightKeys = new Set([\"ArrowRight\", \"ArrowLeft\"]);\nconst navigationKeys = new Set([\n Home,\n End,\n PageUp,\n PageDown,\n ArrowDown,\n ArrowUp,\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 navigationKeys,\n arrowLeftRightKeys,\n functionKeys,\n focusKeys\n);\nexport const isCharacterKey = (evt: React.KeyboardEvent): boolean => {\n if (specialKeys.has(evt.key)) {\n return false;\n }\n return evt.key.length === 1 && !evt.ctrlKey && !evt.metaKey && !evt.altKey;\n};\n\nexport const isNavigationKey = ({ key }: React.KeyboardEvent): boolean => {\n return navigationKeys.has(key);\n};\n", "import { MouseEvent, useCallback } from \"react\";\nimport { ArrowLeft, ArrowRight, Enter } from \"./keyUtils\";\nimport { ListHandlers } from \"./selectionTypes\";\nimport { CollectionHookResult, CollectionItem } from \"./collectionTypes\";\n\nconst NO_HANDLERS = {};\nconst canToggleItem = (item: CollectionItem<unknown>) =>\n Array.isArray(item.childNodes);\n// TODO how do we determine this and where does this function belong = in the collectionHook ?\nconst canSelectItem = (item: CollectionItem<unknown>) => true;\n\nconst toggleIconClicked = (el: HTMLElement) => {\n const closestToggle = el.closest(\n \"[data-toggle],[aria-expanded]\"\n ) as HTMLElement;\n return closestToggle.dataset.toggle === \"true\";\n};\n\ninterface CollapsibleHookProps<Item> {\n collapsibleHeaders?: boolean;\n collectionHook: CollectionHookResult<Item>;\n highlightedIdx: number;\n onToggle?: (node: Item) => void;\n}\n\ninterface CollapsibleHookResult<Item> {\n onClick?: ListHandlers[\"onClick\"];\n onKeyDown?: ListHandlers[\"onKeyDown\"];\n}\n\nexport const useCollapsibleGroups = <Item>({\n collapsibleHeaders,\n collectionHook,\n highlightedIdx,\n onToggle,\n}: CollapsibleHookProps<Item>): CollapsibleHookResult<Item> => {\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === ArrowRight || e.key === Enter) {\n const item = collectionHook.data[highlightedIdx];\n if (item) {\n if (item.expanded === false && item.value) {\n e.preventDefault();\n collectionHook.expandGroupItem(item);\n onToggle?.(item.value);\n }\n }\n }\n\n if (e.key === ArrowLeft || e.key === Enter) {\n const item = collectionHook.data[highlightedIdx];\n if (item) {\n if (item.expanded && item.value) {\n e.preventDefault();\n collectionHook.collapseGroupItem(item);\n onToggle?.(item.value);\n }\n }\n }\n },\n [\n collectionHook.collapseGroupItem,\n collectionHook.data,\n collectionHook.expandGroupItem,\n highlightedIdx,\n ]\n );\n\n const handleClick = useCallback(\n (evt: MouseEvent<HTMLElement>) => {\n console.log(`useCollapsibleGroups idx=${highlightedIdx}`);\n const item = collectionHook.data[highlightedIdx];\n console.log(evt.target, evt.currentTarget);\n if (\n item &&\n canToggleItem(item) &&\n (!canSelectItem(item) || toggleIconClicked(evt.target as HTMLElement))\n ) {\n evt.stopPropagation();\n evt.preventDefault();\n if (item.expanded === false && item.value) {\n collectionHook.expandGroupItem(item);\n onToggle?.(item.value);\n } else if (item.expanded === true && item.value) {\n collectionHook.collapseGroupItem(item);\n onToggle?.(item.value);\n }\n }\n },\n [\n collectionHook.collapseGroupItem,\n collectionHook.data,\n collectionHook.expandGroupItem,\n highlightedIdx,\n ]\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 = {\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n };\n\n return collapsibleHeaders ? listHandlers : NO_HANDLERS;\n};\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: string | null | undefined = 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)) {\n return parseInt(idx, 10) - 1;\n }\n }\n return -1;\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 { SyntheticEvent } from \"react\";\nimport { CollectionItem } from \"./collectionTypes\";\n\nexport const SINGLE = \"default\";\nexport const MULTIPLE = \"multiple\";\nexport const EXTENDED = \"extended\";\nexport const DESELECTABLE = \"deselectable\";\n\nexport type SelectionDisallowed = \"none\";\nexport type SingleSelectionStrategy = \"default\" | \"deselectable\";\nexport type MultiSelectionStrategy =\n | \"multiple\"\n | \"extended\"\n | \"extended-multi-range\";\nexport type SelectionStrategy =\n | SelectionDisallowed\n | SingleSelectionStrategy\n | MultiSelectionStrategy;\n\nexport type selectedType<\n Item,\n Selection extends SelectionStrategy\n> = Selection extends MultiSelectionStrategy ? Item[] : Item | null;\n\nexport type SelectHandler<Item = string> = (\n event: SyntheticEvent,\n selectedItem: Item\n) => void;\n\nexport type SelectionChangeHandler<\n Item = string,\n Selection extends SelectionStrategy = \"default\"\n> = (\n event: SyntheticEvent,\n selected: Selection extends SingleSelectionStrategy ? Item | null : Item[]\n) => void;\n\nexport const selectionIsDisallowed = (\n selection?: SelectionStrategy\n): selection is SelectionDisallowed => selection === \"none\";\n\nexport const hasSelection = <Item = unknown>(\n selected: Item | Item[] | null\n): selected is Item | Item[] => {\n return Array.isArray(selected)\n ? selected.length > 0\n : selected !== null && selected !== undefined;\n};\n\nexport const getFirstSelectedItem = <Item = unknown>(\n selected: Item | Item[] | null\n): Item | null => {\n return Array.isArray(selected) ? selected[0] : selected;\n};\n\nexport interface SelectionProps<\n Item,\n Selection extends SelectionStrategy = \"default\"\n> {\n defaultSelected?: Selection extends SingleSelectionStrategy\n ? Item | null\n : Item[];\n onSelect?: SelectHandler<Item>;\n onSelectionChange?: SelectionChangeHandler<Item, Selection>;\n selected?: Selection extends SingleSelectionStrategy ? Item | null : Item[];\n selectionStrategy?: Selection;\n}\n\nexport interface ListHandlers {\n onClick?: (event: React.MouseEvent) => void;\n onKeyDown?: (event: React.KeyboardEvent) => void;\n onKeyboardNavigation?: (\n event: React.KeyboardEvent,\n currentIndex: number\n ) => void;\n onMouseMove?: (event: React.MouseEvent) => void;\n}\nexport interface SelectionHookProps<\n Item,\n Selection extends SelectionStrategy = \"default\"\n> extends SelectionProps<CollectionItem<Item>, Selection> {\n disableSelection?: boolean;\n highlightedIdx: number;\n indexPositions: CollectionItem<Item>[];\n label?: string;\n selectionKeys?: string[];\n tabToSelect?: boolean;\n}\n\nexport interface SelectionHookResult<\n Item,\n Selection extends SelectionStrategy = \"default\"\n> {\n listHandlers: ListHandlers;\n selected: Selection extends SingleSelectionStrategy\n ? CollectionItem<Item> | null\n : CollectionItem<Item>[];\n setSelected: (\n selected: Selection extends SingleSelectionStrategy\n ? CollectionItem<Item> | null\n : CollectionItem<Item>[]\n ) => void;\n}\n", "import { useCallback, useMemo, useRef, useState, isValidElement } from \"react\";\nimport {\n CollectionItem,\n CollectionIndexer,\n CollectionHookProps,\n CollectionHookResult,\n} from \"./collectionTypes\";\nimport {\n isHeader,\n isGroupNode,\n childItems,\n countChildItems,\n FilterPredicate,\n getDefaultFilter,\n getDefaultFilterRegex,\n isDisabled,\n isFocusable,\n isParentPath,\n replaceCollectionItem,\n sourceItems,\n} from \"./utils\";\nimport { itemToString as defaultItemToString } from \"./itemToString\";\n\nimport { SelectionStrategy, SingleSelectionStrategy } from \"./selectionTypes\";\nimport { useCollection } from \"./collectionProvider\";\n\nconst defaultCollectionOptions = {};\n\nexport const useCollectionItems = <Item>({\n children,\n id: idRoot,\n label = \"\",\n options = defaultCollectionOptions,\n // revealSelected = false,\n source,\n}: CollectionHookProps<Item>): CollectionHookResult<Item> => {\n const { getItemId } = options;\n\n const [, forceUpdate] = useState<unknown>(null);\n const inheritedCollectionHook = useCollection<Item>();\n const dataRef = useRef<CollectionItem<Item>[]>([]);\n const flattenedDataRef = useRef<CollectionItem<Item>[]>([]);\n const EMPTY_COLLECTION: CollectionItem<Item>[] = useMemo(() => [], []);\n const filterPattern = useRef<string>(options.filterPattern ?? \"\");\n\n // destructure individual option values so we can safely reference them in dependency arrays\n const {\n getFilterRegex = getDefaultFilterRegex,\n noChildrenLabel,\n itemToString = defaultItemToString,\n } = options;\n\n const isExpanded = useCallback(\n (path: string) => {\n // We can't do this here because itemToId won't work until we complete this phase\n // if (Array.isArray(revealSelected)) {\n // const selectedIds = revealSelected.map(itemToId);\n // return selectedIds.some((id) => isParentPath(path, id));\n // }\n return options.defaultExpanded || false;\n },\n [options.defaultExpanded]\n );\n\n const addMetadataToItems = useCallback(\n <Item>(\n items: CollectionItem<Item>[],\n indexer: CollectionIndexer,\n level = 1,\n path = \"\",\n results: CollectionItem<Item>[] = [],\n flattenedCollection: CollectionItem<Item>[] = [],\n flattenedSource: (Item | null)[] = []\n ): [CollectionItem<Item>[], (Item | null)[], CollectionItem<Item>[]] => {\n items.forEach((item, i, all) => {\n const isCollapsibleHeader = item.header && options.collapsibleHeaders;\n const isNonCollapsibleGroupNode =\n item.childNodes && options.collapsibleHeaders === false;\n const isLeaf = !item.childNodes || item.childNodes.length === 0;\n const nonCollapsible =\n isNonCollapsibleGroupNode || (isLeaf && !isCollapsibleHeader);\n const childPath = path ? `${path}.${i}` : `item-${i}`;\n // getItemId is backward compatible with earlier List implementation.\n // It is not appropriate for a nested source structure, where index\n // will not always be an absolute offset.\n const id =\n item.id ?? (getItemId ? getItemId(i) : `${idRoot}-${childPath}`);\n\n const expanded = nonCollapsible\n ? undefined\n : item.expanded ?? isExpanded(id);\n //TODO dev time check - if id is provided by user, make sure\n // hierarchical pattern is consistent\n const normalisedItem: CollectionItem<Item> = {\n ...item,\n childNodes: undefined,\n count:\n !isNonCollapsibleGroupNode && expanded === undefined\n ? 0\n : countChildItems(item, all, i),\n description: item.description,\n disabled: isDisabled(item.value),\n focusable: isFocusable(item.value) ? undefined : false,\n id,\n index: indexer.value,\n expanded,\n level,\n };\n results.push(normalisedItem);\n flattenedCollection.push(normalisedItem);\n flattenedSource.push(items[i].value);\n\n indexer.value += 1;\n\n // if ((isNonCollapsibleGroupNode || expanded !== undefined) && !isCollapsibleHeader) {\n if (item.childNodes) {\n const [children] = addMetadataToItems<Item>(\n item.childNodes,\n indexer,\n level + 1,\n childPath,\n [],\n flattenedCollection,\n flattenedSource\n );\n normalisedItem.childNodes = children;\n }\n });\n return [results, flattenedSource, flattenedCollection];\n },\n [options.collapsibleHeaders, getItemId, idRoot, isExpanded]\n );\n\n const getFilter = useCallback(() => {\n if (filterPattern.current) {\n return getDefaultFilter(filterPattern.current, getFilterRegex);\n } else {\n return null;\n }\n }, [getFilterRegex]);\n\n const collectVisibleItems = useCallback(\n (\n items: CollectionItem<Item>[],\n filter: null | FilterPredicate = getFilter(),\n results: CollectionItem<Item>[] = [],\n idx: { value: number } = { value: 0 }\n ): CollectionItem<Item>[] => {\n let skipToNextHeader = false;\n for (const item of items) {\n if (!(skipToNextHeader && !isHeader(item))) {\n if (\n item.value !== null &&\n (filter === null || filter(itemToString(item.value)))\n ) {\n results[idx.value] = item;\n idx.value += 1;\n }\n skipToNextHeader = false;\n if (isHeader(item) && item.expanded === false) {\n skipToNextHeader = true;\n } else if (isGroupNode(item)) {\n if (item.expanded !== false && item.childNodes) {\n collectVisibleItems(item.childNodes, filter, results, idx);\n }\n }\n }\n }\n return results;\n },\n [getFilter, itemToString]\n );\n\n // Stage 1 - convert source or children to CollectionItems.\n const partialCollectionItems = useMemo(() => {\n return inheritedCollectionHook\n ? EMPTY_COLLECTION\n : sourceItems<Item>(source, { itemToString, noChildrenLabel }) ||\n childItems(children) ||\n [];\n }, [\n inheritedCollectionHook,\n EMPTY_COLLECTION,\n source,\n itemToString,\n noChildrenLabel,\n children,\n ]);\n\n // Stage 2 - extend the collectionItems with additional metadata\n const [collectionItems, flattenedSource, flattenedCollection] = useMemo(\n () =>\n inheritedCollectionHook\n ? [EMPTY_COLLECTION, EMPTY_COLLECTION, EMPTY_COLLECTION]\n : //@ts-ignore\n addMetadataToItems<Item>(partialCollectionItems, { value: 0 }),\n [\n EMPTY_COLLECTION,\n addMetadataToItems,\n inheritedCollectionHook,\n partialCollectionItems,\n ]\n );\n flattenedDataRef.current = flattenedCollection;\n\n // Stage 3 prepare the list of visible items, this is what will be rendered\n useMemo(\n () =>\n inheritedCollectionHook\n ? EMPTY_COLLECTION\n : (dataRef.current = collectVisibleItems(collectionItems)),\n [\n EMPTY_COLLECTION,\n collectVisibleItems,\n collectionItems,\n inheritedCollectionHook,\n ]\n );\n\n const collectionItemsRef = useRef(collectionItems);\n\n const setFilterPattern = useCallback(\n (pattern = \"\") => {\n if (typeof pattern === \"string\") {\n filterPattern.current = pattern;\n dataRef.current = collectVisibleItems(collectionItems);\n forceUpdate({});\n }\n },\n [collectionItems, collectVisibleItems]\n );\n\n const itemById = useCallback(\n (\n id: string,\n target: CollectionItem<Item>[] = collectionItems\n ): Item | never => {\n const sourceWithId = target.find(\n (i) => i.id === id || (i?.childNodes?.length && isParentPath(i.id, id))\n );\n if (sourceWithId?.id === id) {\n //TODO do we need the flattered source at all ?\n return flattenedSource?.[sourceWithId.index!] as Item;\n } else if (sourceWithId) {\n return itemById(id, sourceWithId.childNodes);\n }\n throw Error(`useCollectionData itemById, id ${id} not found `);\n },\n [flattenedSource, collectionItems]\n );\n\n const toCollectionItem = useCallback(\n (item: Item): CollectionItem<Item> | never => {\n // TODO what about Tree structures, we need to search flattened source\n const collectionItem = flattenedDataRef.current.find((i) =>\n // const collectionItem = collectionItemsRef.current.find((i) =>\n //@ts-ignore\n isValidElement(i.value) ? i.label === item : i.value === item\n );\n if (collectionItem) {\n return collectionItem;\n }\n throw Error(`useCollectionData toCollectionItem, item not found `);\n },\n []\n );\n\n // TODO types need more work, these are correct but we\n // don't really want references to Selection in here\n const itemToCollectionItem = useCallback(\n <\n Selection extends SelectionStrategy,\n U extends Item | Item[] | null | undefined\n >(\n sel: U\n ): Selection extends SingleSelectionStrategy\n ? CollectionItem<Item> | null\n : CollectionItem<Item>[] => {\n type returnType = Selection extends SingleSelectionStrategy\n ? CollectionItem<Item> | null\n : CollectionItem<Item>[];\n\n if (sel === null) {\n return null as returnType;\n } else if (Array.isArray(sel)) {\n const result: CollectionItem<Item>[] = [];\n for (const item of sel) {\n const collectionItem = toCollectionItem(item);\n result.push(collectionItem);\n }\n return result as returnType;\n } else if (sel !== undefined) {\n return toCollectionItem(sel as Item) as returnType;\n }\n\n return undefined as unknown as returnType;\n },\n [toCollectionItem]\n );\n\n const stringToCollectionItem = useCallback(\n <Selection extends SelectionStrategy>(\n value: string | null | undefined\n ): Selection extends SingleSelectionStrategy\n ? CollectionItem<Item> | null\n : CollectionItem<Item>[] => {\n type returnType = Selection extends SingleSelectionStrategy\n ? CollectionItem<Item> | null\n : CollectionItem<Item>[];\n\n const toCollectionItem = (\n item: string\n ): undefined | CollectionItem<Item> | never => {\n // TODO what about Tree structures, we need to search flattened source\n const collectionItem = flattenedDataRef.current.find((i) =>\n // const collectionItem = collectionItemsRef.current.find((i) =>\n //@ts-ignore\n isValidElement(i.value)\n ? i.label === item\n : i.value !== null && itemToString(i.value) === item\n );\n if (collectionItem) {\n return collectionItem;\n }\n };\n\n if (value === null) {\n return null as returnType;\n } else if (Array.isArray(value)) {\n const result: CollectionItem<Item>[] = [];\n for (const item of value) {\n const collectionItem = toCollectionItem(item);\n if (collectionItem) {\n result.push(collectionItem);\n }\n }\n return result as returnType;\n } else if (value !== undefined) {\n return toCollectionItem(value) as returnType;\n }\n\n return undefined as unknown as returnType;\n },\n [itemToString]\n );\n\n const itemToId = useCallback((item: Item): string => {\n for (const collectionItem of collectionItemsRef.current) {\n if (item === collectionItem.value) {\n return collectionItem.id;\n }\n }\n throw Error(\"useCollectionData itemToId, item not found\");\n }, []);\n\n const collapseGroupItem = useCallback(\n (item: CollectionItem<Item>) => {\n collectionItemsRef.current = replaceCollectionItem(\n collectionItemsRef.current,\n item.id,\n {\n expanded: false,\n }\n );\n dataRef.current = collectVisibleItems(collectionItemsRef.current);\n forceUpdate({});\n },\n [collectVisibleItems]\n );\n\n const expandGroupItem = useCallback(\n (item: CollectionItem<Item>) => {\n collectionItemsRef.current = replaceCollectionItem<Item>(\n collectionItemsRef.current,\n item.id,\n {\n expanded: true,\n }\n );\n dataRef.current = collectVisibleItems(collectionItemsRef.current);\n forceUpdate({});\n },\n [collectVisibleItems]\n );\n\n return (\n inheritedCollectionHook || {\n collapseGroupItem,\n data: dataRef.current,\n expandGroupItem, // why not toggle, or just rely on setdata ?\n setFilterPattern,\n itemById,\n itemToId,\n toCollectionItem,\n itemToCollectionItem,\n stringToCollectionItem,\n }\n );\n};\n", "import { isValidElement, Children, ReactElement, ReactNode } from \"react\";\n\nimport {\n CollectionItem,\n CollectionOptions,\n SourceGroup,\n} from \"../collectionTypes\";\n// TODO how do we configure these\nimport { ListItemGroup } from \"../../ListItemGroup\";\nimport { ListItemHeader } from \"../../ListItemHeader\";\nimport { itemToString as defaultItemToString } from \"../itemToString\";\n\ntype NonFocusableElement = ReactElement<{ focusable: false }>;\ntype DisablableElement = ReactElement<{ disabled: boolean }>;\ntype SelectableElement = ReactElement<{ selectable: boolean }>;\n\nexport const sourceItemHasProp = (\n item: unknown,\n propertyName: string\n): boolean => {\n return (\n item !== null && Object.prototype.hasOwnProperty.call(item, propertyName)\n );\n};\n\nexport const isHeader = (item: unknown): boolean =>\n sourceItemHasProp(item, \"header\");\n\nexport const isGroupNode = (item: unknown): boolean =>\n sourceItemHasProp(item, \"childNodes\");\n\nconst childItemHasProp = (item: ReactElement, propertyName: string) => {\n return item && Object.prototype.hasOwnProperty.call(item.props, propertyName);\n};\n\nexport const isDisabled = (item: unknown): boolean => {\n if (isValidElement(item as DisablableElement)) {\n if (childItemHasProp(item as DisablableElement, \"disabled\")) {\n return (item as DisablableElement).props.disabled === true;\n }\n } else if (sourceItemHasProp(item, \"disabled\")) {\n return (item as { disabled: boolean }).disabled === true;\n }\n\n return false;\n};\n\nexport const isFocusable = (item: unknown): boolean => {\n if (isValidElement(item as NonFocusableElement)) {\n if (childItemHasProp(item as NonFocusableElement, \"focusable\")) {\n return (item as NonFocusableElement).props.focusable;\n }\n }\n return true;\n};\n\nexport const countChildItems = <Item>(\n item: CollectionItem<Item>,\n items: CollectionItem<Item>[],\n idx: number\n): number => {\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\nexport const getChildLabel = (\n element: ReactElement<{\n children?: ReactNode;\n label?: string;\n title?: string;\n }>\n): string | undefined => {\n if (typeof element.props.children === \"string\") {\n return element.props.children;\n } else if (element.props.title) {\n return element.props.title;\n } else if (element.props.label) {\n return element.props.label;\n }\n};\n\nconst childIsHeader = (child: ReactElement) =>\n child.type === ListItemHeader || childItemHasProp(child, \"data-header\");\n\nexport const childIsGroup = (child: ReactElement): boolean =>\n child.type === ListItemGroup || childItemHasProp(child, \"data-group\");\n\nconst childIsSelectable = (child: ReactElement) => {\n if (childItemHasProp(child, \"selectable\")) {\n return (child as SelectableElement).props.selectable === true;\n } else {\n return !childIsGroup(child) && !childIsHeader(child);\n }\n};\n\nexport const getChildNodes = (\n element: ReactElement\n): CollectionItem<ReactElement>[] | undefined => {\n if (childIsGroup(element)) {\n const {\n props: { children },\n } = element as ReactElement<{ children?: ReactNode }>;\n if (typeof children !== \"string\") {\n return childItems(children);\n }\n }\n};\n\nconst mapReactElementChildren = (\n children: ReactNode,\n fn: (el: ReactElement) => CollectionItem<ReactElement>\n): CollectionItem<ReactElement>[] => {\n const childElements: CollectionItem<ReactElement>[] = [];\n Children.forEach(children, (child) => {\n if (isValidElement(child)) {\n childElements.push(fn(child));\n }\n });\n return childElements;\n};\n\ntype ListItemElementProps = {\n \"data-id\"?: string;\n disabled?: boolean;\n id?: string;\n \"data-expanded\"?: boolean;\n expanded?: boolean;\n};\n\ntype CollectionItemWithoutId<T> = Omit<CollectionItem<T>, \"id\">;\n\nexport const sourceItems = <T>(\n source?: ReadonlyArray<T>,\n options?: CollectionOptions<T>\n): CollectionItemWithoutId<T>[] | undefined => {\n if (Array.isArray(source)) {\n if (source.length === 0 && options?.noChildrenLabel) {\n return [\n {\n label: options.noChildrenLabel,\n value: null,\n },\n ];\n } else {\n return source.map(\n (item: { description?: string; expanded?: boolean }, index) =>\n ({\n childNodes: sourceItems(\n (item as unknown as SourceGroup<T>).childNodes,\n options\n ),\n description: item.description,\n expanded: item.expanded,\n value: item,\n label:\n options?.itemToString?.(item as T) ?? defaultItemToString(item),\n } as CollectionItemWithoutId<T>)\n );\n }\n } else if (source) {\n throw Error(\"list-child-items expects source to be an array\");\n }\n};\n\nexport const childItems = (\n children: ReactNode\n): CollectionItem<ReactElement>[] | undefined => {\n if (children) {\n return mapReactElementChildren(children, (child) => {\n const {\n \"data-id\": dataId,\n disabled,\n id = dataId,\n \"data-expanded\": dataExpanded,\n expanded = dataExpanded,\n } = (child as ReactElement<ListItemElementProps>).props;\n return {\n childNodes: getChildNodes(child),\n disabled,\n expanded,\n header: childIsHeader(child),\n id,\n label: getChildLabel(child),\n selectable: childIsSelectable(child),\n value: child,\n } as CollectionItem<ReactElement>;\n });\n }\n};\n\nconst PathSeparators = new Set<string>([\"/\", \"-\", \".\"]);\n// TODO where do we define or identify separators\nconst isPathSeparator = (char: string) => PathSeparators.has(char);\n\nexport const isParentPath = (parentPath: string, childPath: string): boolean =>\n childPath.startsWith(parentPath) &&\n isPathSeparator(childPath[parentPath.length]);\n\nconst PATH_SEPARATORS = new Set([\".\", \"/\"]);\n\nfunction isDescendantOf(basePath: string, targetPath: string) {\n if (!targetPath.startsWith(basePath)) {\n return false;\n } else {\n return PATH_SEPARATORS.has(targetPath.charAt(basePath.length));\n }\n}\n\nexport function replaceCollectionItem<Item>(\n nodes: CollectionItem<Item>[],\n id: string,\n props: Partial<CollectionItem<Item>>\n): CollectionItem<Item>[] {\n let childNodes: CollectionItem<Item>[];\n const newNodes: CollectionItem<Item>[] = nodes.map((node) => {\n if (node.id === id) {\n return {\n ...node,\n ...props,\n };\n } else if (isDescendantOf(node.id, id) && node.childNodes) {\n childNodes = replaceCollectionItem<Item>(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 { HTMLAttributes } from \"react\";\n\n// Purely used as markers, props will be extracted\nexport interface ListItemGroupProps extends HTMLAttributes<HTMLDivElement> {\n // children?: ListItemType | ListItemType[];\n children?: JSX.Element | JSX.Element[];\n label?: string;\n}\nexport const ListItemGroup = (_: ListItemGroupProps) => null;\n", "import { HTMLAttributes } from \"react\";\n\n// Purely used as markers, props will be extracted\nexport interface ListItemHeaderProps extends HTMLAttributes<HTMLDivElement> {\n label?: string;\n}\nexport const ListItemHeader = (_: ListItemHeaderProps) => null;\n", "import { escapeRegExp } from \"../../../utils\";\n\nexport type GetFilterRegex = (inputValue: string) => RegExp;\n\nexport type FilterPredicate = (item: string) => boolean;\n\nconst leftTrim = (value: string) =>\n value ? value.replace(/^\\s+/g, \"\") : value;\n\nexport const getDefaultFilterRegex: GetFilterRegex = (value) =>\n new RegExp(`(${escapeRegExp(leftTrim(value))})`, \"gi\");\n\nexport const getDefaultFilter =\n (inputValue = \"\", getFilterRegex: GetFilterRegex = getDefaultFilterRegex) =>\n (itemValue = \"\"): boolean =>\n Boolean(itemValue.length) &&\n Boolean(inputValue.length) &&\n itemValue.match(getFilterRegex(inputValue)) !== null;\n", "import { CollectionItem } from \"../collectionTypes\";\n\nexport function isSelected<Item>(\n selected: CollectionItem<Item> | CollectionItem<Item>[] | null,\n item: CollectionItem<Item>\n): boolean {\n const isSelected = Array.isArray(selected)\n ? selected.includes(item)\n : selected === item;\n return isSelected;\n}\n", "import {\n ForwardedRef,\n MutableRefObject,\n useImperativeHandle,\n useMemo,\n} from \"react\";\nimport { CollectionHookResult, CollectionItem } from \"./collectionTypes\";\n\nexport interface ScrollingAPI<Item> {\n scrollToIndex: (itemIndex: number) => void;\n scrollToItem: (item: Item) => void;\n scrollTo: (scrollOffset: number) => void;\n}\n\nexport interface ScrollingAPIHook<Item> {\n collectionHook: CollectionHookResult<Item>;\n forwardedRef?: ForwardedRef<ScrollingAPI<Item>>;\n scrollableRef: MutableRefObject<HTMLElement | null>;\n scrollIntoView?: (item: CollectionItem<Item>) => void;\n}\n\nconst noScrolling: ScrollingAPI<unknown> = {\n scrollToIndex: (itemIndex: number) => undefined,\n scrollToItem: (item) => undefined,\n scrollTo: (scrollOffset: number) => undefined,\n};\n\nexport const useImperativeScrollingAPI = <Item>({\n collectionHook,\n forwardedRef,\n scrollableRef,\n scrollIntoView,\n}: ScrollingAPIHook<Item>) => {\n const scrollHandles: ScrollingAPI<Item> = useMemo(\n () => ({\n scrollToIndex: (itemIndex: number) => {\n const collectionItem = collectionHook.data[itemIndex];\n if (collectionItem) {\n scrollIntoView?.(collectionItem);\n }\n },\n scrollToItem: (item: Item) => {\n const collectionItem = collectionHook.toCollectionItem(item);\n if (collectionItem) {\n scrollIntoView?.(collectionItem);\n }\n },\n scrollTo: (scrollOffset: number) => {\n if (scrollableRef?.current) {\n scrollableRef.current.scrollTop = scrollOffset;\n }\n },\n }),\n [collectionHook.data, collectionHook.toCollectionItem, scrollIntoView]\n );\n\n useImperativeHandle(\n forwardedRef,\n () => {\n if (scrollableRef.current) {\n return scrollHandles;\n } else {\n return noScrolling;\n }\n },\n [scrollHandles]\n );\n};\n", "import { useControlled } from \"@salt-ds/core\";\nimport {\n FocusEvent,\n KeyboardEvent,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n ArrowDown,\n ArrowUp,\n End,\n Home,\n isCharacterKey,\n isNavigationKey,\n PageDown,\n PageUp,\n} from \"./keyUtils\";\nimport { CollectionItem } from \"./collectionTypes\";\nimport { NavigationHookProps, NavigationHookResult } from \"./navigationTypes\";\nimport {\n getFirstSelectedItem,\n hasSelection,\n SelectionStrategy,\n} from \"./selectionTypes\";\n\nexport const LIST_FOCUS_VISIBLE = -2;\n\nfunction nextItemIdx(count: number, key: string, idx: number) {\n if (key === ArrowUp || key === End) {\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 getIndexOfSelectedItem = (\n items: CollectionItem<unknown>[],\n selected?: CollectionItem<unknown> | null | CollectionItem<unknown>[]\n) => {\n const selectedItem = getFirstSelectedItem(selected);\n if (selectedItem) {\n return items.indexOf(selectedItem);\n } else {\n return -1;\n }\n};\n\nconst getStartIdx = (\n key: string,\n idx: number,\n selectedIdx: number,\n length: number\n) => {\n if (key === End) {\n return length;\n } else if (key === Home) {\n return -1;\n } else if (idx !== -1) {\n return idx;\n } else {\n return selectedIdx;\n }\n};\n\nconst getItemRect = (item: CollectionItem<unknown>) => {\n const el = document.getElementById(item.id);\n if (el) {\n return el.getBoundingClientRect();\n } else {\n throw Error(\n `useKeyboardNavigation.getItemRect no element found for item #${item?.id}`\n );\n }\n};\n\nconst pageDown = (\n containerEl: HTMLElement,\n itemEl: HTMLElement,\n indexPositions: CollectionItem<unknown>[],\n index: number\n): number | undefined => {\n const { top: itemTop } = itemEl.getBoundingClientRect();\n const { scrollTop, clientHeight, scrollHeight } = containerEl;\n const lastIndexPosition = indexPositions.length - 1;\n const newScrollTop = Math.min(\n scrollTop + clientHeight,\n scrollHeight - clientHeight\n );\n if (newScrollTop !== scrollTop && index < lastIndexPosition) {\n containerEl.scrollTo(0, newScrollTop);\n // Might need to do this in a timeout, in case virtualized content has rendered\n let nextIdx = index;\n let nextRect;\n do {\n nextIdx += 1;\n nextRect = getItemRect(indexPositions[nextIdx]);\n } while (nextRect.top < itemTop && nextIdx < lastIndexPosition);\n return nextIdx;\n }\n};\n\nconst pageUp = async (\n containerEl: HTMLElement,\n itemEl: HTMLElement,\n indexPositions: CollectionItem<unknown>[],\n index: number\n): Promise<number | undefined> => {\n const { top: itemTop } = itemEl.getBoundingClientRect();\n const { scrollTop, clientHeight } = containerEl;\n const newScrollTop = Math.max(scrollTop - clientHeight, 0);\n if (newScrollTop !== scrollTop && index > 0) {\n containerEl.scrollTo(0, newScrollTop);\n return new Promise((resolve) => {\n // We must defer this operation until after render. If Items are virtualized.\n // we need to allow them to be rendered.\n requestAnimationFrame(() => {\n let nextIdx = index;\n let nextRect;\n do {\n nextIdx -= 1;\n nextRect = getItemRect(indexPositions[nextIdx]);\n } while (nextRect.top > itemTop && nextIdx > 0);\n resolve(nextIdx);\n });\n });\n }\n};\n\nconst isLeaf = <Item>(item: CollectionItem<Item>): boolean =>\n !item.header && !item.childNodes;\nconst isFocusable = <Item>(item: CollectionItem<Item>) =>\n isLeaf(item) || item.expanded !== undefined;\n\nexport const useKeyboardNavigation = <\n Item,\n Selection extends SelectionStrategy\n>({\n containerRef,\n defaultHighlightedIndex = -1,\n disableHighlightOnFocus,\n highlightedIndex: highlightedIndexProp,\n indexPositions,\n onHighlight,\n onKeyboardNavigation,\n restoreLastFocus,\n selected,\n}: NavigationHookProps<Item, Selection>): NavigationHookResult => {\n const lastFocus = useRef(-1);\n const [, forceRender] = useState({});\n const [highlightedIndex, setHighlightedIdx, isControlledHighlighting] =\n useControlled({\n controlled: highlightedIndexProp,\n default: defaultHighlightedIndex,\n name: \"UseKeyboardNavigation\",\n });\n\n const setHighlightedIndex = useCallback(\n (idx: number, fromKeyboard = false) => {\n onHighlight?.(idx);\n setHighlightedIdx(idx);\n if (fromKeyboard) {\n lastFocus.current = idx;\n }\n },\n [onHighlight, setHighlightedIdx]\n );\n\n const nextPageItemIdx = useCallback(\n async (e: KeyboardEvent, index: number): Promise<number> => {\n const { id } = indexPositions[index];\n let result: number | undefined;\n if (id) {\n const itemEl = document.getElementById(id);\n const { current: containerEl } = containerRef;\n if (itemEl && containerEl) {\n result =\n e.key === PageDown\n ? pageDown(containerEl, itemEl, indexPositions, index)\n : await pageUp(containerEl, itemEl, indexPositions, index);\n }\n }\n return result ?? index;\n },\n [containerRef, indexPositions]\n );\n\n const nextFocusableItemIdx = useCallback(\n (\n key = ArrowDown,\n idx: number = key === ArrowDown ? -1 : indexPositions.length\n ) => {\n if (indexPositions.length === 0) {\n return -1;\n } else {\n const indexOfSelectedItem = getIndexOfSelectedItem(\n indexPositions,\n selected\n );\n // The start index is generally the highlightedIdx (passed in as idx).\n // We don't need it for Home and End navigation.\n // Special case where we have selection, but no highlighting - begin\n // navigation from selected item.\n const startIdx = getStartIdx(\n key,\n idx,\n indexOfSelectedItem,\n indexPositions.length\n );\n\n let nextIdx = nextItemIdx(indexPositions.length, key, startIdx);\n // Guard against returning zero, when first item is a header or group\n if (\n nextIdx === 0 &&\n key === ArrowUp &&\n !isFocusable(indexPositions[0])\n ) {\n return idx;\n }\n while (\n (((key === ArrowDown || key === Home) &&\n nextIdx < indexPositions.length) ||\n ((key === ArrowUp || key === End) && nextIdx > 0)) &&\n !isFocusable(indexPositions[nextIdx])\n ) {\n nextIdx = nextItemIdx(indexPositions.length, key, nextIdx);\n }\n return nextIdx;\n }\n },\n [indexPositions, selected]\n );\n\n // does this belong here or should it be a method passed in?\n const keyboardNavigation = useRef(false);\n const ignoreFocus = useRef<boolean>(false);\n const setIgnoreFocus = (value: boolean) => (ignoreFocus.current = value);\n\n const handleFocus = useCallback(\n (e: FocusEvent) => {\n // Ignore focus if mouse has been used\n if (ignoreFocus.current) {\n ignoreFocus.current = false;\n } else {\n // If mouse wan't used, then keyboard must have been\n keyboardNavigation.current = true;\n if (indexPositions.length === 0) {\n setHighlightedIndex(LIST_FOCUS_VISIBLE);\n } else if (highlightedIndex !== -1) {\n // We need to force a render here. We're not changing the highlightedIdx, but we want to\n // make sure we render with the correct focusVisible value. We don't store focusVisible\n // in state, as there are places where we would double render, as highlightedIdx also changes.\n forceRender({});\n } else if (restoreLastFocus) {\n if (lastFocus.current !== -1) {\n setHighlightedIndex(lastFocus.current);\n } else {\n const selectedItemIdx = getIndexOfSelectedItem(\n indexPositions,\n selected\n );\n if (selectedItemIdx !== -1) {\n setHighlightedIndex(selectedItemIdx);\n } else {\n setHighlightedIndex(0);\n }\n }\n } else if (hasSelection(selected)) {\n const selectedItemIdx = getIndexOfSelectedItem(\n indexPositions,\n selected\n );\n setHighlightedIndex(selectedItemIdx);\n } else if (disableHighlightOnFocus !== true) {\n setHighlightedIndex(nextFocusableItemIdx());\n }\n }\n },\n [\n disableHighlightOnFocus,\n highlightedIndex,\n indexPositions,\n nextFocusableItemIdx,\n restoreLastFocus,\n selected,\n setHighlightedIndex,\n ]\n );\n\n const navigateChildItems = useCallback(\n async (e: KeyboardEvent) => {\n const nextIdx =\n e.key === PageDown || e.key === PageUp\n ? await nextPageItemIdx(e, highlightedIndex)\n : nextFocusableItemIdx(e.key, highlightedIndex);\n\n if (nextIdx !== highlightedIndex) {\n setHighlightedIndex(nextIdx, true);\n }\n // Users may need to know that a Keyboard navigation event has been handled\n // even if no actual navigation was effected. e.g. fine-grained control\n // over aria-activedescendant requires this.\n onKeyboardNavigation?.(e, nextIdx);\n },\n [\n highlightedIndex,\n nextFocusableItemIdx,\n nextPageItemIdx,\n onKeyboardNavigation,\n setHighlightedIndex,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (indexPositions.length > 0 && isNavigationKey(e)) {\n e.preventDefault();\n e.stopPropagation();\n keyboardNavigation.current = true;\n void navigateChildItems(e);\n } else if (isCharacterKey(e)) {\n keyboardNavigation.current = true;\n }\n },\n [indexPositions, navigateChildItems]\n );\n\n const listProps = useMemo(() => {\n return {\n onBlur: (e: FocusEvent) => {\n //TODO no direct ref to List\n const sourceTarget = (e.target as HTMLElement).closest(\".saltList\");\n const destTarget = e.relatedTarget as HTMLElement;\n if (sourceTarget && !sourceTarget?.contains(destTarget)) {\n keyboardNavigation.current = false;\n setHighlightedIdx(-1);\n if (!restoreLastFocus) {\n lastFocus.current = -1;\n }\n }\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 onMouseMove: () => {\n if (keyboardNavigation.current) {\n keyboardNavigation.current = false;\n }\n },\n onMouseLeave: () => {\n keyboardNavigation.current = false;\n setIgnoreFocus(false);\n setHighlightedIndex(-1);\n },\n };\n }, [\n handleFocus,\n handleKeyDown,\n restoreLastFocus,\n setHighlightedIdx,\n setHighlightedIndex,\n ]);\n\n return {\n focusVisible: keyboardNavigation.current ? highlightedIndex : -1,\n controlledHighlighting: isControlledHighlighting,\n highlightedIndex,\n setHighlightedIndex,\n keyboardNavigation,\n listProps,\n setIgnoreFocus,\n };\n};\n", "import { useControlled } from \"@salt-ds/core\";\nimport { KeyboardEvent, MouseEvent, useCallback, useRef } from \"react\";\nimport { CollectionItem } from \"./collectionTypes\";\nimport {\n ListHandlers,\n SelectionHookProps,\n SelectionHookResult,\n selectionIsDisallowed,\n SelectionStrategy,\n SingleSelectionStrategy,\n} from \"./selectionTypes\";\n\nexport const CHECKBOX = \"checkbox\";\n\nexport const GROUP_SELECTION_NONE = \"none\";\nexport const GROUP_SELECTION_SINGLE = \"single\";\nexport const GROUP_SELECTION_CASCADE = \"cascade\";\n\nconst NO_SELECTION_HANDLERS: ListHandlers = {};\n\nexport type GroupSelectionMode = \"none\" | \"single\" | \"cascade\";\n\nconst defaultSelectionKeys = [\"Enter\", \" \"];\n\nconst isSelectable = (item?: CollectionItem<unknown>) =>\n item && item.disabled !== true && item.selectable !== false;\n\nconst byItemIndex = (\n i1: CollectionItem<unknown>,\n i2: CollectionItem<unknown>\n) => (i1.index ?? 0) - (i2.index ?? 0);\n\nexport const groupSelectionEnabled = (\n groupSelection: GroupSelectionMode\n): boolean => groupSelection && groupSelection !== GROUP_SELECTION_NONE;\n\nexport const useSelection = <\n Item,\n Selection extends SelectionStrategy = \"default\"\n>({\n defaultSelected,\n disableSelection = false,\n // groupSelection = GROUP_SELECTION_NONE,\n highlightedIdx,\n indexPositions,\n onSelect,\n onSelectionChange,\n selected: selectedProp,\n selectionStrategy,\n selectionKeys = defaultSelectionKeys,\n tabToSelect,\n}: SelectionHookProps<Item, Selection>): SelectionHookResult<\n Item,\n Selection\n> => {\n type collectionItem = CollectionItem<Item>;\n\n const isDeselectable = selectionStrategy === \"deselectable\";\n const isMultipleSelect = selectionStrategy === \"multiple\";\n const isExtendedSelect = selectionStrategy === \"extended\";\n\n const lastActive = useRef(-1);\n\n const isSelectionEvent = useCallback(\n (evt: KeyboardEvent) => selectionKeys.includes(evt.key),\n [selectionKeys]\n );\n\n const emptyValue = useCallback(<\n Item\n >(): Selection extends SingleSelectionStrategy\n ? null\n : CollectionItem<Item>[] => {\n type returnType = Selection extends SingleSelectionStrategy\n ? null\n : CollectionItem<Item>[];\n return isMultipleSelect || isExtendedSelect\n ? ([] as unknown as returnType)\n : (null as returnType);\n }, [isMultipleSelect, isExtendedSelect]);\n\n const [selected, setSelected] = useControlled<\n Selection extends SingleSelectionStrategy\n ? CollectionItem<Item> | null\n : CollectionItem<Item>[]\n >({\n controlled: selectedProp,\n default: defaultSelected ?? emptyValue(),\n name: \"UseSelection\",\n state: \"selected\",\n });\n\n const isItemSelected = useCallback(\n (item: collectionItem) => {\n return Array.isArray(selected)\n ? selected.includes(item)\n : selected === item;\n },\n [selected]\n );\n\n const selectDefault = useCallback((item: collectionItem) => item, []);\n const selectDeselectable = useCallback(\n (item: collectionItem) => (isItemSelected(item) ? null : item),\n [isItemSelected]\n );\n const selectMultiple = useCallback(\n (item: collectionItem) => {\n const nextItems = isItemSelected(item)\n ? (selected as collectionItem[]).filter((i) => i !== item)\n : (selected as collectionItem[]).concat(item);\n nextItems.sort(byItemIndex);\n return nextItems;\n },\n [isItemSelected, selected]\n );\n const selectRange = useCallback(\n (idx: number, preserveExistingSelection?: boolean) => {\n const currentSelection = preserveExistingSelection\n ? (selected as collectionItem[])\n : ([] as collectionItem[]);\n\n const [lastSelectedItem] = (selected as collectionItem[]).slice(-1);\n const lastSelectedItemIndex = lastSelectedItem\n ? indexPositions.indexOf(lastSelectedItem)\n : 0;\n\n const startRegion = Math.min(idx, lastSelectedItemIndex);\n const endRegion = Math.max(idx, lastSelectedItemIndex);\n const rangeSelection = indexPositions.slice(startRegion, endRegion + 1);\n // concat the current selection with a new selection and remove duplicates for overlaps\n const nextItems = [...new Set([...currentSelection, ...rangeSelection])];\n nextItems.sort(byItemIndex);\n return nextItems;\n },\n [indexPositions, selected]\n );\n\n const selectItemAtIndex = useCallback(\n (\n evt: any,\n idx: number,\n item: collectionItem,\n rangeSelect: boolean,\n preserveExistingSelection?: boolean\n ) => {\n type returnType = Selection extends SingleSelectionStrategy\n ? CollectionItem<Item> | null\n : CollectionItem<Item>[];\n let newSelected: returnType;\n if (isMultipleSelect) {\n newSelected = selectMultiple(item) as returnType;\n } else if (isExtendedSelect) {\n if (preserveExistingSelection && !rangeSelect) {\n newSelected = selectMultiple(item) as returnType;\n } else if (rangeSelect) {\n newSelected = selectRange(\n idx,\n preserveExistingSelection\n ) as returnType;\n } else {\n newSelected = [item] as returnType;\n }\n } else if (isDeselectable) {\n newSelected = selectDeselectable(item) as returnType;\n } else {\n newSelected = selectDefault(item) as returnType;\n }\n\n if (newSelected !== selected) {\n setSelected(newSelected);\n }\n\n // We fire onSelect irrespective of whether selection changes\n onSelect?.(evt, item);\n\n if (newSelected !== selected) {\n if (onSelectionChange) {\n onSelectionChange(evt, newSelected);\n }\n }\n },\n [\n isMultipleSelect,\n isExtendedSelect,\n isDeselectable,\n selected,\n onSelect,\n selectMultiple,\n selectRange,\n selectDeselectable,\n selectDefault,\n setSelected,\n onSelectionChange,\n ]\n );\n\n const handleKeyDown = useCallback(\n (evt: KeyboardEvent) => {\n const item = indexPositions[highlightedIdx];\n if (isSelectable(item)) {\n if (isSelectionEvent(evt) || (tabToSelect && evt.key === \"Tab\")) {\n // We do not inhibit Tab behaviour, if we are selecting on Tab then we apply\n // selection as a side effect of the Tab, not as a replacement for Tabbing.\n if (evt.key !== \"Tab\") {\n evt.preventDefault();\n }\n selectItemAtIndex(\n evt,\n highlightedIdx,\n item,\n false,\n evt.ctrlKey || evt.metaKey\n );\n if (isExtendedSelect) {\n lastActive.current = highlightedIdx;\n }\n }\n }\n },\n [\n indexPositions,\n highlightedIdx,\n isSelectionEvent,\n tabToSelect,\n selectItemAtIndex,\n isExtendedSelect,\n ]\n );\n\n const handleKeyboardNavigation = useCallback(\n (evt: KeyboardEvent, currentIndex: number) => {\n if (isExtendedSelect && evt.shiftKey) {\n const item = indexPositions[currentIndex];\n if (isSelectable(item)) {\n selectItemAtIndex(evt, currentIndex, item, true);\n }\n }\n },\n [isExtendedSelect, indexPositions, selectItemAtIndex]\n );\n\n const handleClick = useCallback(\n (evt: MouseEvent) => {\n const item = indexPositions[highlightedIdx];\n if (!disableSelection && isSelectable(item)) {\n // if (!isCollapsibleItem(item)) {\n evt.preventDefault();\n evt.stopPropagation();\n selectItemAtIndex(\n evt,\n highlightedIdx,\n item,\n evt.shiftKey,\n evt.ctrlKey || evt.metaKey\n );\n if (isExtendedSelect) {\n lastActive.current = highlightedIdx;\n }\n // }\n }\n },\n [\n disableSelection,\n isExtendedSelect,\n highlightedIdx,\n indexPositions,\n selectItemAtIndex,\n ]\n );\n\n const listHandlers = selectionIsDisallowed(selectionStrategy)\n ? NO_SELECTION_HANDLERS\n : {\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onKeyboardNavigation: handleKeyboardNavigation,\n };\n\n return {\n listHandlers,\n selected,\n setSelected,\n };\n};\n", "import { useCallback, useRef } from \"react\";\nimport { isCharacterKey, Space } from \"./keyUtils\";\nimport { CollectionItem } from \"./collectionTypes\";\n\ninterface TypeaheadHookProps<Item> {\n disableTypeToSelect?: boolean;\n highlightedIdx: number;\n highlightItemAtIndex: (idx: number) => void;\n applyIncrementalSearch?: boolean;\n typeToNavigate: boolean;\n items: CollectionItem<Item>[];\n}\n\ninterface TypeaheadHookResult {\n onKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\nexport const useTypeahead = <Item>({\n disableTypeToSelect,\n highlightedIdx,\n highlightItemAtIndex,\n typeToNavigate,\n items,\n applyIncrementalSearch = true,\n}: TypeaheadHookProps<Item>): TypeaheadHookResult => {\n const keyDownTimer = useRef<number | null>(null);\n const searchChars = useRef(\"\");\n const startIdx = useRef(-1);\n\n const applySearch = useCallback(\n (intermediateSearch?: true | undefined) => {\n if (intermediateSearch || !applyIncrementalSearch) {\n const regex = new RegExp(`^${searchChars.current}`, \"i\");\n let idx = items.findIndex(\n ({ label }, i) => i > startIdx.current && regex.test(label!)\n );\n if (idx === -1) {\n idx = items.findIndex(\n ({ label }, i) => i <= startIdx.current && regex.test(label!)\n );\n }\n if (idx !== -1) {\n highlightItemAtIndex(idx);\n }\n } else {\n searchChars.current = \"\";\n keyDownTimer.current = null;\n startIdx.current = -1;\n }\n },\n [applyIncrementalSearch, highlightItemAtIndex, items]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n const searchInProgress = startIdx.current !== -1;\n if (isCharacterKey(e) || (searchInProgress && e.key === Space)) {\n if (typeToNavigate) {\n e.preventDefault();\n e.stopPropagation();\n // If we type the same key repeatedly, we cycle through the matches\n if (startIdx.current === -1 || e.key === searchChars.current) {\n startIdx.current = highlightedIdx;\n }\n if (keyDownTimer.current !== null) {\n clearTimeout(keyDownTimer.current);\n keyDownTimer.current = null;\n }\n if (e.key !== searchChars.current) {\n searchChars.current += e.key;\n }\n if (applyIncrementalSearch) {\n applySearch(true);\n }\n // keyDownTimer.current = window.setTimeout(applySearch, 100);\n keyDownTimer.current = window.setTimeout(() => {\n applySearch();\n }, 100);\n }\n }\n },\n [typeToNavigate, applyIncrementalSearch, highlightedIdx, applySearch]\n );\n\n return {\n onKeyDown: disableTypeToSelect ? undefined : handleKeyDown,\n };\n};\n", "import { MutableRefObject, RefObject, useCallback, useRef } from \"react\";\nimport { CollectionItem } from \"./collectionTypes\";\nimport { ResizeHandler, useResizeObserver } from \"../../common-hooks\";\nimport { useIsomorphicLayoutEffect } from \"@salt-ds/core\";\n\nconst HeightOnly = [\"height\"];\nconst HeightWithScroll = [\"height\", \"scrollHeight\"];\nconst EMPTY_ARRAY: any[] = [];\n\nconst ObservedDimensions = {\n containerOnly: [HeightWithScroll, EMPTY_ARRAY],\n withContent: [HeightOnly, HeightOnly],\n};\nconst getObservedDimensions = (containerOnly: boolean) =>\n containerOnly\n ? ObservedDimensions.containerOnly\n : ObservedDimensions.withContent;\n\nconst NULL_REF = { current: null };\n\nconst getItemTop = (\n element: HTMLElement,\n offsetContainer: HTMLElement | null\n) => {\n const { transform = \"none\" } = getComputedStyle(element);\n if (transform.startsWith(\"matrix\")) {\n const pos = transform.lastIndexOf(\",\");\n return parseInt(transform.slice(pos + 1));\n } else {\n let offsetParent = element.offsetParent as HTMLElement;\n if (offsetParent === offsetContainer || offsetContainer === null) {\n return element.offsetTop;\n } else {\n let top = element.offsetTop;\n while (offsetParent !== null && offsetParent !== offsetContainer) {\n top += offsetParent.offsetTop;\n offsetParent = offsetParent.offsetParent as HTMLElement;\n }\n return top;\n }\n }\n};\n\nexport interface ViewportTrackingProps<Item> {\n containerRef: RefObject<HTMLElement>;\n contentRef?: RefObject<HTMLElement>;\n highlightedIdx?: number;\n indexPositions: CollectionItem<Item>[];\n stickyHeaders?: boolean;\n}\n\nexport interface ViewportTrackingResult<Item> {\n isScrolling: MutableRefObject<boolean>;\n scrollIntoView: (item: CollectionItem<Item>) => void;\n}\n\nexport const useViewportTracking = <Item>({\n containerRef,\n contentRef = NULL_REF,\n highlightedIdx = -1,\n indexPositions,\n stickyHeaders = false,\n}: ViewportTrackingProps<Item>): ViewportTrackingResult<Item> => {\n const scrolling = useRef<boolean>(false);\n const viewport = useRef({\n height: 0,\n contentHeight: 0,\n });\n\n const scrollTo = useCallback((scrollPos: number) => {\n scrolling.current = true;\n if (containerRef.current) {\n containerRef.current.scrollTop = scrollPos;\n }\n setTimeout(() => {\n scrolling.current = false;\n });\n }, []);\n\n const scrollToStart = useCallback(() => scrollTo(0), [scrollTo]);\n\n const scrollToEnd = useCallback(() => {\n scrollTo(viewport.current.contentHeight - viewport.current.height);\n }, [scrollTo]);\n\n const scrollIntoViewIfNeeded = useCallback(\n (item: CollectionItem<Item>) => {\n const offsetContainer = contentRef.current || containerRef.current;\n if (item.id) {\n const el = document.getElementById(item.id);\n if (el && containerRef.current) {\n const { height: viewportHeight } = viewport.current;\n const targetEl =\n el.ariaExpanded && el.firstChild\n ? (el.firstChild as HTMLElement)\n : el;\n const headerHeight = stickyHeaders ? 36 : 0;\n const itemTop = getItemTop(targetEl, offsetContainer);\n const itemHeight = targetEl.offsetHeight;\n const { scrollTop } = containerRef.current;\n const viewportStart = scrollTop + headerHeight;\n const viewportEnd = viewportStart + viewportHeight - headerHeight;\n\n if (itemTop + itemHeight > viewportEnd || itemTop < viewportStart) {\n const newScrollTop =\n itemTop + itemHeight > viewportEnd\n ? scrollTop + (itemTop + itemHeight) - viewportEnd\n : itemTop - headerHeight;\n\n scrollTo(newScrollTop);\n }\n }\n }\n },\n [containerRef, contentRef, scrollTo, stickyHeaders]\n );\n\n useIsomorphicLayoutEffect(() => {\n const { height, contentHeight } = viewport.current;\n const item = indexPositions[highlightedIdx];\n if (contentHeight > height && item) {\n const [firstItem] = indexPositions;\n const [lastItem] = indexPositions.slice(-1);\n if (item === firstItem) {\n scrollToStart();\n } else if (item === lastItem) {\n scrollToEnd();\n } else {\n scrollIntoViewIfNeeded(indexPositions[highlightedIdx]);\n }\n }\n }, [\n highlightedIdx,\n indexPositions,\n scrollIntoViewIfNeeded,\n scrollToEnd,\n scrollToStart,\n ]);\n\n const onContainerResize: ResizeHandler = useCallback(\n ({ height, scrollHeight }) => {\n if (typeof height === \"number\") {\n viewport.current.height = height;\n }\n if (typeof scrollHeight === \"number\") {\n viewport.current.contentHeight = scrollHeight;\n }\n },\n []\n );\n\n const onContentResize: ResizeHandler = useCallback(({ height }) => {\n if (typeof height === \"number\") {\n viewport.current.contentHeight = height;\n }\n }, []);\n\n // If we only have a container, then we will observe its height and scrollHeight,\n // contentRef will be null, so second call to observer will observe nothing.\n // If we have both container and content, then we observe the height of each.\n const [containerDimensions, contentDimensions] = getObservedDimensions(\n contentRef === NULL_REF\n );\n useResizeObserver(containerRef, containerDimensions, onContainerResize, true);\n useResizeObserver(contentRef, contentDimensions, onContentResize, true);\n\n return {\n isScrolling: scrolling,\n scrollIntoView: scrollIntoViewIfNeeded,\n };\n};\n", "import { RefObject, useCallback, useEffect, useRef } from \"react\";\n\nexport const WidthHeight = [\"height\", \"width\"];\nexport const WidthOnly = [\"width\"];\nexport const HeightOnly = [\"height\"];\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 {\n isValidElement,\n KeyboardEvent,\n MouseEvent,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport {\n closestListItemIndex,\n hasSelection,\n CollectionItem,\n ListHandlers,\n selectedType,\n SelectHandler,\n SelectionChangeHandler,\n SelectionStrategy,\n useCollapsibleGroups,\n useKeyboardNavigation,\n useSelection,\n useTypeahead,\n useViewportTracking,\n} from \"./common-hooks\";\nimport { useDragDropNext as useDragDrop } from \"../drag-drop\";\n\nimport { ListHookProps, ListHookResult, ListControlProps } from \"./listTypes\";\n\nexport const useList = <Item, Selection extends SelectionStrategy = \"default\">({\n allowDragDrop = false,\n collapsibleHeaders,\n collectionHook: dataHook,\n containerRef,\n contentRef,\n defaultHighlightedIndex,\n defaultSelected,\n disabled,\n disableAriaActiveDescendant,\n disableHighlightOnFocus,\n disableTypeToSelect,\n highlightedIndex: highlightedIndexProp,\n id,\n label = \"\",\n listHandlers: listHandlersProp,\n onHighlight,\n onKeyboardNavigation,\n onKeyDown,\n onMoveListItem,\n onSelect,\n onSelectionChange,\n restoreLastFocus,\n selected,\n selectionStrategy,\n selectionKeys,\n stickyHeaders,\n tabToSelect,\n viewportRange,\n}: ListHookProps<Item, Selection>): ListHookResult<Item, Selection> => {\n type selectedItem = selectedType<Item, Selection>;\n\n // Used to preserve selection across a drop event.\n const selectedByIndexRef = useRef<number | null | number[]>(null);\n const lastSelection = useRef<typeof selected>(selected || defaultSelected);\n const handleKeyboardNavigation = (evt: KeyboardEvent, nextIndex: number) => {\n selectionHook.listHandlers.onKeyboardNavigation?.(evt, nextIndex);\n onKeyboardNavigation?.(evt, nextIndex);\n };\n\n // TODO where do these belong ?\n const handleSelect = useCallback<SelectHandler<CollectionItem<Item>>>(\n (evt, selectedItem) => {\n if (onSelect) {\n if (isValidElement(selectedItem.value)) {\n onSelect(evt, selectedItem.label as any);\n } else if (selectedItem.value !== null) {\n onSelect(evt, selectedItem.value);\n }\n }\n },\n [onSelect]\n );\n\n const handleSelectionChange = useCallback<\n SelectionChangeHandler<CollectionItem<Item>, Selection>\n >(\n (evt, selected) => {\n if (onSelectionChange) {\n onSelectionChange(\n evt,\n Array.isArray(selected)\n ? (selected.map((s) =>\n isValidElement(s.value) ? s.label : s.value\n ) as selectedItem)\n : selected &&\n ((isValidElement(selected.value)\n ? selected.label\n : selected.value) as any)\n );\n }\n },\n [onSelectionChange]\n );\n\n const {\n highlightedIndex,\n listProps: {\n onKeyDown: navigationKeyDown,\n onMouseMove: navigationMouseMove,\n ...navigationControlProps\n },\n setHighlightedIndex,\n ...keyboardHook\n } = useKeyboardNavigation<Item, Selection>({\n containerRef,\n defaultHighlightedIndex,\n disableHighlightOnFocus,\n highlightedIndex: highlightedIndexProp,\n indexPositions: dataHook.data,\n label,\n onHighlight,\n onKeyboardNavigation: handleKeyboardNavigation,\n restoreLastFocus,\n selected: lastSelection.current,\n });\n\n const collapsibleHook = useCollapsibleGroups({\n collapsibleHeaders,\n highlightedIdx: highlightedIndex,\n collectionHook: dataHook,\n });\n\n const handleDragStart = useCallback(() => {\n setHighlightedIndex(-1);\n }, [setHighlightedIndex]);\n\n const selectionHook = useSelection<Item, Selection>({\n defaultSelected,\n highlightedIdx: highlightedIndex,\n indexPositions: dataHook.data,\n label,\n onSelect: handleSelect,\n onSelectionChange: handleSelectionChange,\n selected,\n selectionStrategy,\n selectionKeys,\n tabToSelect,\n });\n\n const adjustIndex = useCallback(\n (item: CollectionItem<Item>, fromIndex: number, toIndex: number) => {\n const index = dataHook.data.indexOf(item);\n if (index === fromIndex) {\n return toIndex;\n } else if (\n index < Math.min(fromIndex, toIndex) ||\n index > Math.max(fromIndex, toIndex)\n ) {\n return index;\n }\n if (fromIndex < index) {\n return index - 1;\n } else {\n return index + 1;\n }\n },\n [dataHook.data]\n );\n\n // Used after a drop event, to calculate wht the new selected indices will be\n const reorderSelectedIndices = useCallback(\n (\n selected: CollectionItem<Item> | CollectionItem<Item>[],\n fromIndex: number,\n toIndex: number\n ) => {\n if (Array.isArray(selected)) {\n return selected.map((item) => adjustIndex(item, fromIndex, toIndex));\n } else {\n return adjustIndex(selected, fromIndex, toIndex);\n }\n },\n [adjustIndex]\n );\n\n const handleDrop = useCallback(\n (fromIndex: number, toIndex: number) => {\n if (hasSelection(selectionHook.selected)) {\n selectedByIndexRef.current = reorderSelectedIndices(\n selectionHook.selected,\n fromIndex,\n toIndex\n );\n }\n onMoveListItem?.(fromIndex, toIndex);\n setHighlightedIndex(-1);\n },\n [\n selectionHook.selected,\n onMoveListItem,\n setHighlightedIndex,\n reorderSelectedIndices,\n ]\n );\n\n const handleDropSettle = useCallback(\n (toIndex: number) => {\n setHighlightedIndex(toIndex);\n },\n [setHighlightedIndex]\n );\n\n const { setSelected } = selectionHook;\n useEffect(() => {\n const { current: selectedByIndex } = selectedByIndexRef;\n if (hasSelection(selectedByIndex)) {\n const postDropSelected = Array.isArray(selectedByIndex)\n ? selectedByIndex.map((i) => dataHook.data[i])\n : dataHook.data[selectedByIndex];\n\n // TODO gave up trying to figure out how to type this correctly\n setSelected(postDropSelected as any);\n }\n }, [dataHook.data, setSelected]);\n\n useEffect(() => {\n if (hasSelection(lastSelection.current)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n setSelected(Array.isArray(lastSelection.current) ? [] : null);\n }\n }, [setSelected, dataHook.data]);\n\n const {\n onMouseDown,\n isDragging,\n isScrolling: isDragDropScrolling,\n ...dragDropHook\n } = useDragDrop({\n allowDragDrop,\n draggableClassName: \"list-item\",\n orientation: \"vertical\",\n containerRef,\n id,\n itemQuery: \".vuuListItem\",\n onDragStart: handleDragStart,\n onDrop: handleDrop,\n onDropSettle: handleDropSettle,\n // selected: selectionHook.selected,\n viewportRange,\n });\n\n const { onKeyDown: typeaheadOnKeyDown } = useTypeahead<Item>({\n disableTypeToSelect,\n highlightedIdx: highlightedIndex,\n highlightItemAtIndex: setHighlightedIndex,\n typeToNavigate: true,\n items: dataHook.data,\n });\n\n const handleKeyDown = useCallback(\n (evt: KeyboardEvent) => {\n if (!evt.defaultPrevented) {\n typeaheadOnKeyDown?.(evt);\n }\n // We still let the keyboard navigation hook process the event even\n // if it has been handled by the typeahead hook. That is so it can\n // correctly manage the focusVisible state.\n navigationKeyDown(evt);\n if (!evt.defaultPrevented) {\n selectionHook.listHandlers.onKeyDown?.(evt);\n }\n if (!evt.defaultPrevented) {\n collapsibleHook?.onKeyDown?.(evt);\n }\n\n if (!evt.defaultPrevented) {\n onKeyDown?.(evt);\n }\n },\n [\n collapsibleHook,\n navigationKeyDown,\n onKeyDown,\n selectionHook.listHandlers,\n typeaheadOnKeyDown,\n ]\n );\n\n // This is only appropriate when we are directly controlling a List,\n // not when a control is manipulating the list\n const { isScrolling: isViewportScrolling, scrollIntoView } =\n useViewportTracking({\n containerRef,\n contentRef,\n highlightedIdx: highlightedIndex,\n indexPositions: dataHook.data,\n stickyHeaders,\n });\n\n const isScrolling =\n isViewportScrolling.current || isDragDropScrolling.current;\n\n const handleMouseMove = useCallback(\n (evt: MouseEvent) => {\n if (!isScrolling && !disabled && !isDragging) {\n navigationMouseMove();\n const idx = closestListItemIndex(evt.target as HTMLElement);\n if (idx !== -1 && idx !== highlightedIndex) {\n const item = dataHook.data[idx];\n if (!item || item.disabled) {\n setHighlightedIndex(-1);\n } else {\n setHighlightedIndex(idx);\n }\n }\n }\n },\n [\n isDragging,\n isScrolling,\n disabled,\n setHighlightedIndex,\n navigationMouseMove,\n highlightedIndex,\n dataHook.data,\n ]\n );\n\n const getActiveDescendant = () =>\n highlightedIndex === undefined ||\n highlightedIndex === -1 ||\n disableAriaActiveDescendant\n ? undefined\n : dataHook.data[highlightedIndex]?.id;\n\n // We need this on reEntry for navigation hook to handle focus\n lastSelection.current = selectionHook.selected;\n\n // controlProps ?\n const listControlProps: ListControlProps = {\n \"aria-activedescendant\": getActiveDescendant(),\n onBlur: navigationControlProps.onBlur,\n onFocus: navigationControlProps.onFocus,\n onKeyDown: handleKeyDown,\n onMouseDown: onMouseDown,\n onMouseDownCapture: navigationControlProps.onMouseDownCapture,\n onMouseLeave: navigationControlProps.onMouseLeave,\n };\n\n const listHandlers: ListHandlers = listHandlersProp || {\n onClick: selectionHook.listHandlers.onClick,\n // MouseEnter would be much better for this. There is a bug in Cypress\n // wheby it emits spurious MouseEnter (and MouseOver) events around\n // keypress events, which break many tests.\n onMouseMove: handleMouseMove,\n };\n\n return {\n focusVisible: keyboardHook.focusVisible,\n controlledHighlighting: keyboardHook.controlledHighlighting,\n highlightedIndex,\n keyboardNavigation: keyboardHook.keyboardNavigation,\n listHandlers,\n listItemHeaderHandlers: collapsibleHook,\n listControlProps,\n scrollIntoView,\n selected: selectionHook.selected,\n setHighlightedIndex,\n setIgnoreFocus: keyboardHook.setIgnoreFocus,\n setSelected: selectionHook.setSelected,\n ...dragDropHook,\n };\n};\n", "import { useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport { RefObject, useCallback, useMemo, useState } from \"react\";\nimport { HeightOnly, ResizeHandler, useResizeObserver } from \"../common-hooks\";\n\nexport interface ListHeightHookProps {\n borderless?: boolean;\n displayedItemCount: number;\n getItemHeight?: (index: number) => number;\n height?: number | string;\n itemCount: number;\n itemGapSize: number;\n itemHeight?: number;\n rootRef: RefObject<HTMLElement>;\n rowHeightRef: RefObject<HTMLElement | null>;\n}\n\nexport interface HeightHookResult {\n contentHeight: number;\n listClientHeight?: number;\n listItemHeight: number;\n listHeight: number | string;\n}\n\nconst getContentHeight = (\n itemCount: number,\n itemHeight: number,\n itemGapSize = 0\n) => {\n if (itemCount === 0) {\n return 0;\n } else if (itemGapSize === 0) {\n return itemCount * itemHeight;\n } else {\n return itemCount - 1 * (itemHeight + itemGapSize) + itemHeight;\n }\n};\n\nexport const useListHeight = ({\n borderless,\n displayedItemCount,\n getItemHeight,\n // TODO no need to incur the cost of a resizeObserver if height is explicit\n height,\n itemCount,\n itemGapSize,\n itemHeight: itemHeightProp,\n rootRef,\n rowHeightRef,\n}: ListHeightHookProps): HeightHookResult => {\n // TODO default by density\n const [measuredItemHeight, setMeasuredItemHeight] = useState<number>(36);\n const [clientHeight, setClientHeight] = useState<number>();\n\n const [contentHeight, listHeight] = useMemo(() => {\n let result = borderless ? 0 : 2;\n const itemHeight = itemHeightProp ?? measuredItemHeight;\n const contentHeight = getContentHeight(itemCount, itemHeight, itemGapSize);\n if (\n (height !== undefined && typeof height === \"number\") ||\n typeof height === \"string\"\n ) {\n // TODO if this is a percentage, convert to number\n return [contentHeight, height];\n }\n\n // if there are 0 items we render with the preferred count\n const preferredItemCount =\n Math.min(displayedItemCount, itemCount) || displayedItemCount;\n\n if (typeof getItemHeight === \"function\") {\n result +=\n Array(preferredItemCount)\n .fill(0)\n .reduce<number>(\n (total, _, index) => total + getItemHeight(index) + itemGapSize,\n 0\n ) -\n // We don't want gap after the last item\n itemGapSize;\n } else {\n result +=\n preferredItemCount * Number(itemHeight) +\n (preferredItemCount - 1) * itemGapSize;\n }\n\n const listHeight = result;\n\n return [contentHeight, listHeight, clientHeight];\n }, [\n borderless,\n clientHeight,\n displayedItemCount,\n getItemHeight,\n height,\n itemCount,\n itemGapSize,\n itemHeightProp,\n measuredItemHeight,\n ]);\n\n useIsomorphicLayoutEffect(() => {\n if (rootRef.current) {\n const { clientHeight } = rootRef.current;\n setClientHeight(clientHeight);\n }\n }, [rootRef]);\n\n const handleRowHeight: ResizeHandler = useCallback(({ height }) => {\n if (typeof height === \"number\") {\n setMeasuredItemHeight(height);\n }\n }, []);\n\n useResizeObserver(rowHeightRef, HeightOnly, handleRowHeight, true);\n\n return {\n contentHeight,\n listClientHeight: clientHeight,\n listItemHeight: measuredItemHeight,\n listHeight,\n };\n};\n", "import { useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport { UIEvent, useCallback, useMemo, useRef, useState } from \"react\";\n\nexport type ViewportRange = {\n atEnd: boolean;\n atStart: boolean;\n from: number;\n to: number;\n};\n\ninterface ScrollPositionHookProps {\n containerSize: number;\n itemCount: number;\n itemGapSize?: number;\n itemSize: number;\n onViewportScroll?: (\n firstVisibleItemIndex: number,\n lastVisibleitemIndex: number\n ) => void;\n}\n\nconst getRange = (\n scrollPos: number,\n height: number,\n itemCount: number,\n itemHeight: number\n): ViewportRange => {\n const viewportRowCount = Math.ceil(height / itemHeight);\n const from = Math.floor(scrollPos / itemHeight);\n const to = Math.ceil(from + viewportRowCount - 1);\n return {\n atStart: from === 0,\n atEnd: to === itemCount - 1,\n from,\n to,\n };\n};\n\nexport const useScrollPosition = ({\n containerSize: listHeight,\n itemCount: listItemCount,\n itemGapSize: listItemGapSize = 0,\n itemSize: listItemHeight,\n onViewportScroll,\n}: ScrollPositionHookProps) => {\n const firstVisibleRowRef = useRef(0);\n const lastVisibleRowRef = useRef(0);\n const scrollPosRef = useRef(0);\n\n const range = useMemo(() => {\n return getRange(\n scrollPosRef.current,\n listHeight,\n listItemCount,\n listItemHeight + listItemGapSize\n );\n }, [listHeight, listItemCount, listItemHeight, listItemGapSize]);\n\n const [viewportRange, setViewportRange] = useState<ViewportRange>(range);\n\n useIsomorphicLayoutEffect(() => {\n setViewportRange(range);\n }, [range]);\n\n const handleVerticalScroll = useCallback(\n (e: UIEvent<HTMLElement>) => {\n const scrollTop = (e.target as HTMLElement).scrollTop;\n if (scrollTop !== scrollPosRef.current) {\n scrollPosRef.current = scrollTop;\n const itemHeight = listItemHeight + listItemGapSize;\n const range = getRange(\n scrollTop,\n listHeight,\n listItemCount,\n itemHeight\n );\n if (\n range.from !== firstVisibleRowRef.current ||\n range.to !== lastVisibleRowRef.current\n ) {\n firstVisibleRowRef.current = range.from;\n lastVisibleRowRef.current = range.to;\n onViewportScroll?.(range.from, range.to);\n setViewportRange(range);\n }\n }\n },\n [\n listItemHeight,\n listItemGapSize,\n listHeight,\n listItemCount,\n onViewportScroll,\n ]\n );\n\n return {\n onVerticalScroll: handleVerticalScroll,\n viewportRange,\n };\n};\n", "import { makePrefixer, useForkRef, useIdMemo } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { ForwardedRef, forwardRef, memo, ReactElement, useRef } from \"react\";\nimport {\n CollectionIndexer,\n isSelected,\n SelectionStrategy,\n useCollectionItems,\n useImperativeScrollingAPI,\n} from \"./common-hooks\";\nimport { useListHeight } from \"./useListHeight\";\n\nimport { ListItem as DefaultListItem, ListItemProxy } from \"./ListItem\";\nimport { ListProps } from \"./listTypes\";\nimport { useList } from \"./useList\";\nimport { Row, useVirtualization } from \"./useVirtualization\";\nimport { useScrollPosition } from \"./useScrollPosition\";\n\nimport \"./List.css\";\n\nconst defaultEmptyMessage = \"No data to display\";\n\nconst withBaseName = makePrefixer(\"saltList\");\n\nconst ListItem = memo(DefaultListItem);\n\nexport const VirtualizedList = forwardRef(function List<\n Item,\n Selection extends SelectionStrategy = \"default\"\n>(\n {\n borderless,\n children,\n className,\n collapsibleHeaders = false,\n defaultHighlightedIndex: defaultHighlightedIdx,\n defaultSelected,\n disabled: listDisabled = false,\n disableFocus = false,\n disableTypeToSelect,\n displayedItemCount = 10,\n emptyMessage,\n getItemHeight,\n getItemId,\n height,\n highlightedIndex: highlightedIdxProp,\n id: idProp,\n itemGapSize = 0,\n itemHeight: itemHeightProp,\n itemTextHighlightPattern,\n itemToString,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n onSelect,\n onSelectionChange,\n onViewportScroll,\n onHighlight,\n restoreLastFocus,\n selected: selectedProp,\n selectionStrategy,\n scrollingApiRef,\n // TODO do we still need these ?\n selectionKeys,\n showEmptyMessage = false,\n source,\n style: styleProp,\n stickyHeaders,\n tabToSelect,\n width,\n ...htmlAttributes\n }: ListProps<Item, Selection>,\n forwardedRef?: ForwardedRef<HTMLDivElement>\n) {\n const id = useIdMemo(idProp);\n const rootRef = useRef<HTMLDivElement>(null);\n const rowHeightProxyRef = useRef<HTMLDivElement | null>(null);\n\n const collectionHook = useCollectionItems<Item>({\n id,\n label: \"List\",\n source,\n children,\n options: {\n collapsibleHeaders,\n getItemId,\n itemToString,\n },\n });\n\n const { contentHeight, listItemHeight, listHeight } = useListHeight({\n borderless,\n displayedItemCount,\n height,\n itemCount: collectionHook.data.length,\n itemGapSize,\n itemHeight: itemHeightProp,\n rootRef,\n rowHeightRef: rowHeightProxyRef,\n });\n\n const {\n focusVisible,\n highlightedIndex,\n listControlProps,\n listHandlers,\n scrollIntoView,\n selected,\n } = useList<Item, Selection>({\n collapsibleHeaders,\n collectionHook,\n containerRef: rootRef,\n defaultHighlightedIndex: defaultHighlightedIdx,\n defaultSelected: collectionHook.itemToCollectionItem<\n Selection,\n typeof defaultSelected\n >(defaultSelected),\n disabled: listDisabled,\n disableTypeToSelect,\n highlightedIndex: highlightedIdxProp,\n label: id,\n onSelect,\n onSelectionChange,\n onHighlight,\n restoreLastFocus,\n selected: collectionHook.itemToCollectionItem<\n Selection,\n typeof defaultSelected\n >(selectedProp),\n selectionStrategy,\n selectionKeys,\n stickyHeaders,\n tabToSelect,\n });\n\n const { onVerticalScroll, viewportRange } = useScrollPosition({\n containerSize: typeof listHeight === \"number\" ? listHeight : 0,\n itemCount: collectionHook.data.length,\n itemGapSize: itemGapSize,\n itemSize: listItemHeight,\n });\n\n console.log({ viewPortRange: viewportRange });\n\n // TODO move into useList\n const data = useVirtualization<Item>({\n data: collectionHook.data,\n listItemGapSize: itemGapSize,\n listItemHeight,\n viewportRange,\n });\n\n useImperativeScrollingAPI({\n collectionHook,\n forwardedRef: scrollingApiRef,\n scrollableRef: rootRef,\n scrollIntoView,\n });\n\n function addItem(\n list: ReactElement[],\n row: Row<Item>,\n idx: { value: number }\n ) {\n const [key, offset, pos, item] = row;\n const index = pos - 1;\n list.push(\n <ListItem\n aria-setsize={collectionHook.data.length}\n aria-posinset={pos}\n className={clsx(className, {\n saltHighlighted: index === highlightedIndex,\n saltFocusVisible: focusVisible === index,\n })}\n data-idx={index}\n item={item}\n key={key}\n label={item.label}\n data-offset={offset}\n role=\"option\"\n selected={isSelected<Item>(selected, item)}\n id={item.id}\n translate3d={offset}\n // style={{\n // transform: `translate3d(0px, ${offset}px, 0px)`\n // }}\n />\n );\n idx.value += 1;\n }\n\n function renderItems(\n data: Row<Item>[],\n idx: CollectionIndexer = { value: 0 },\n end = data.length\n ) {\n const listItems: ReactElement[] = [];\n while (idx.value < end) {\n const item = data[idx.value];\n addItem(listItems, item, idx);\n }\n return listItems;\n }\n\n function renderEmpty() {\n if (emptyMessage || showEmptyMessage) {\n return (\n <span className={withBaseName(\"empty-message\")}>\n {emptyMessage ?? defaultEmptyMessage}\n </span>\n );\n } else {\n return null;\n }\n }\n\n const renderContent = () => {\n if (data.length) {\n return renderItems(data);\n } else {\n renderEmpty();\n }\n };\n\n const sizeStyles = {\n \"--list-item-gap\": itemGapSize ? `${itemGapSize}px` : undefined,\n minWidth,\n minHeight,\n width: width ?? \"100%\",\n height: height ?? \"100%\",\n maxWidth: maxWidth ?? width,\n maxHeight: maxHeight ?? listHeight,\n };\n\n return (\n <div\n {...htmlAttributes}\n {...listHandlers}\n {...listControlProps}\n className={clsx(withBaseName(), className, withBaseName(\"virtualized\"))}\n id={`${id}`}\n ref={useForkRef<HTMLDivElement>(rootRef, forwardedRef)}\n role=\"listbox\"\n onScroll={onVerticalScroll}\n style={{ ...styleProp, ...sizeStyles }}\n tabIndex={listDisabled || disableFocus ? undefined : 0}\n >\n <div\n className={withBaseName(\"scrollingContentContainer\")}\n style={{ height: contentHeight }}\n >\n <ListItemProxy ref={rowHeightProxyRef} />\n {renderContent()}\n </div>\n </div>\n );\n}) as <Item = string, Selection extends SelectionStrategy = \"default\">(\n props: ListProps<Item, Selection> & {\n ref?: ForwardedRef<HTMLDivElement>;\n }\n) => ReactElement<ListProps<Item, Selection>>;\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 { useMemo } from \"react\";\nimport { KeySet } from \"./keyset\";\nimport { CollectionItem } from \"./common-hooks\";\nimport { ViewportRange } from \"./useScrollPosition\";\n\n/**\n * [ item key, total height before the item, next row index, CollectionItem<Item>]\n * e.g. first item: [0, 0, 1, data[0]]\n */\nexport type Row<Item> = [number, number, number, CollectionItem<Item>];\n\nconst byKey = ([k1]: Row<unknown>, [k2]: Row<unknown>) => k1 - k2;\n\nconst renderBuffer = 5;\n\ninterface VirtualizationHookProps<Item> {\n data: CollectionItem<Item>[];\n listItemGapSize?: number;\n listItemHeight: number;\n viewportRange: ViewportRange;\n}\n\nexport const useVirtualization = <Item>({\n data,\n listItemGapSize = 0,\n listItemHeight,\n viewportRange,\n}: VirtualizationHookProps<Item>): Row<Item>[] => {\n const keys = useMemo(() => new KeySet(0, 1), []);\n const rowHeightWithGap = listItemHeight + listItemGapSize;\n const lo = Math.max(0, viewportRange.from - renderBuffer);\n const hi = Math.min(data.length, viewportRange.to + renderBuffer);\n keys.reset(lo, hi);\n const rows = data\n .slice(lo, hi)\n .map(\n (value, idx) =>\n [\n keys.keyFor(idx + lo),\n (idx + lo) * rowHeightWithGap,\n idx + lo + 1,\n value,\n ] as Row<Item>\n )\n .sort(byKey);\n\n return rows;\n};\n", "export class KeySet {\n private keys: Map<number, number>;\n private free: number[];\n private nextKeyValue: number;\n\n constructor(from = 0, to = 0) {\n this.keys = new Map<number, number>();\n this.free = [];\n this.nextKeyValue = 0;\n this.reset(from, to);\n }\n\n next(): number {\n if (this.free.length) {\n return this.free.pop()!;\n } else {\n return this.nextKeyValue++;\n }\n }\n\n reset(from: number, to: number) {\n this.keys.forEach((keyValue, rowIndex) => {\n if (rowIndex < from || rowIndex >= to) {\n this.free.push(keyValue);\n this.keys.delete(rowIndex);\n }\n });\n\n const size = to - from;\n if (this.keys.size + this.free.length > size) {\n this.free.length = size - this.keys.size;\n }\n\n for (let rowIndex = from; rowIndex < to; rowIndex++) {\n if (!this.keys.has(rowIndex)) {\n const nextKeyValue = this.next();\n this.keys.set(rowIndex, nextKeyValue);\n }\n }\n }\n\n keyFor(rowIndex: number) {\n return this.keys.get(rowIndex);\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 \"../common-hooks\";\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 { 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 React, {\n createContext,\n HTMLAttributes,\n ReactNode,\n isValidElement,\n cloneElement,\n useContext,\n} from \"react\";\nimport cx from \"classnames\";\n\nexport const DEFAULT_DENSITY: Density = \"medium\";\nexport const DEFAULT_THEME = \"salt-theme\";\nexport const DEFAULT_THEME_MODE: ThemeMode = \"light\";\n\nexport type Density = \"high\" | \"medium\" | \"low\" | \"touch\";\nexport type ThemeMode = \"light\" | \"dark\";\nexport type TargetElement = \"root\" | \"scope\" | \"child\";\n\nexport interface ThemeContextProps {\n density: Density;\n theme: string;\n themeMode: ThemeMode;\n}\n\nexport const ThemeContext = createContext<ThemeContextProps>({\n density: \"high\",\n theme: \"salt\",\n themeMode: \"light\",\n});\n\nexport type ThemeClasses = [string, string, string];\n\nconst DEFAULT_THEME_ATTRIBUTES: ThemeClasses = [\n \"salt\",\n \"salt-density-high\",\n \"light\",\n];\n\nexport const useThemeAttributes = (): [string, string, string] => {\n const context = useContext(ThemeContext);\n if (context) {\n return [\n `${context.theme}-theme`,\n `salt-density-${context.density}`,\n context.themeMode,\n ];\n }\n return DEFAULT_THEME_ATTRIBUTES;\n};\n\nconst createThemedChildren = (\n children: ReactNode,\n theme: string,\n themeMode: ThemeMode,\n density: Density\n) => {\n if (isValidElement<HTMLAttributes<HTMLElement>>(children)) {\n return cloneElement(children, {\n className: cx(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n children.props?.className,\n `${theme}-theme`,\n `${theme}-density-${density}`\n ),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n \"data-mode\": themeMode,\n });\n } else {\n console.warn(\n `\\nThemeProvider can only apply CSS classes for theming to a single nested child element of the ThemeProvider.\n Wrap elements with a single container`\n );\n return children;\n }\n};\n\ninterface ThemeProviderProps {\n applyThemeClasses?: boolean;\n children: ReactNode;\n density?: Density;\n theme?: string;\n themeMode?: ThemeMode;\n}\n\nexport const ThemeProvider = ({\n applyThemeClasses = false,\n children,\n theme: themeProp,\n themeMode: themeModeProp,\n density: densityProp,\n}: ThemeProviderProps) => {\n const {\n density: inheritedDensity,\n themeMode: inheritedThemeMode,\n theme: inheritedTheme,\n } = useContext(ThemeContext);\n const density = densityProp ?? inheritedDensity ?? DEFAULT_DENSITY;\n const themeMode = themeModeProp ?? inheritedThemeMode ?? DEFAULT_THEME_MODE;\n const theme = themeProp ?? inheritedTheme ?? DEFAULT_THEME;\n const themedChildren = applyThemeClasses\n ? createThemedChildren(children, theme, themeMode, density)\n : children;\n\n return (\n <ThemeContext.Provider value={{ themeMode, density, theme }}>\n {themedChildren}\n </ThemeContext.Provider>\n );\n};\n\nThemeProvider.displayName = \"ThemeProvider\";\n", "import { ChangeEvent, HTMLAttributes, useState } from \"react\";\nimport { Button, FormField, FormFieldLabel, Input } from \"@salt-ds/core\";\n\nimport \"./LoginPanel.css\";\n\nconst classBase = \"vuuLoginPanel\";\n\nexport interface LoginPanelProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onSubmit\"> {\n onSubmit: (username: string, password: string) => void;\n requirePassword?: boolean;\n}\n\nexport const LoginPanel = ({\n requirePassword = true,\n onSubmit,\n}: LoginPanelProps) => {\n const [username, setUserName] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n\n const login = () => {\n onSubmit(username, password);\n };\n\n const handleUsername = (evt: ChangeEvent<HTMLInputElement>) => {\n setUserName(evt.target.value);\n };\n\n const handlePassword = (evt: ChangeEvent<HTMLInputElement>) => {\n setPassword(evt.target.value);\n };\n\n const dataIsValid =\n username.trim() !== \"\" &&\n (requirePassword === false || password.trim() !== \"\");\n\n return (\n <div className={classBase}>\n <FormField style={{ width: 200 }}>\n <FormFieldLabel>Username</FormFieldLabel>\n <Input value={username} id=\"text-username\" onChange={handleUsername} />\n </FormField>\n\n {requirePassword ? (\n <FormField style={{ width: 200 }}>\n <FormFieldLabel>Password</FormFieldLabel>\n <Input\n inputProps={{\n type: \"password\",\n }}\n value={password}\n id=\"text-password\"\n onChange={handlePassword}\n />\n </FormField>\n ) : null}\n\n <Button\n className={`${classBase}-login`}\n disabled={!dataIsValid}\n onClick={login}\n variant=\"cta\"\n >\n Login\n </Button>\n </div>\n );\n};\n", "import { getCookieValue } from \"@vuu-ui/vuu-utils\";\n\nexport const getAuthModeFromCookies = (): string => {\n const mode = getCookieValue(\"vuu-auth-mode\") as string;\n return mode ?? \"\";\n};\n\nexport const getAuthDetailsFromCookies = (): [string, string] => {\n const username = getCookieValue(\"vuu-username\") as string;\n const token = getCookieValue(\"vuu-auth-token\") as string;\n return [username, token];\n};\n\nconst getDefaultLoginUrl = () => {\n const authMode = getAuthModeFromCookies();\n return authMode === \"login\" ? \"login.html\" : \"demo.html\";\n};\n\nexport const redirectToLogin = (loginUrl = getDefaultLoginUrl()) => {\n window.location.href = loginUrl;\n};\n\nexport const logout = (loginUrl?: string) => {\n document.cookie = \"vuu-username= ; expires = Thu, 01 Jan 1970 00:00:00 GMT\";\n document.cookie = \"vuu-auth-token= ; expires = Thu, 01 Jan 1970 00:00:00 GMT\";\n redirectToLogin(loginUrl);\n};\n", "import {\n ChangeEvent,\n FocusEvent,\n HTMLAttributes,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\nimport {\n VuuColumnDataType,\n VuuDataRow,\n VuuRowDataItemType,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { useIdMemo } from \"@salt-ds/core\";\nimport { Button } from \"@salt-ds/core\";\nimport {\n DataSource,\n hasAction,\n isErrorResponse,\n RemoteDataSource,\n TableSchema,\n} from \"@vuu-ui/vuu-data\";\nimport {\n buildColumnMap,\n isValidNumber,\n shallowEquals,\n} from \"@vuu-ui/vuu-utils\";\n\nimport \"./SessionEditingForm.css\";\n\nexport type FormFieldDescriptor = {\n isKeyField?: boolean;\n label?: string;\n name: string;\n type: VuuColumnDataType;\n description: string;\n readonly?: boolean;\n required?: boolean;\n};\n\nexport type FormConfig = {\n title: string;\n key: string;\n fields: FormFieldDescriptor[];\n};\n\nexport interface SessionEditingFormProps\n extends HTMLAttributes<HTMLDivElement> {\n config: FormConfig;\n onClose: () => void;\n dataSource?: DataSource;\n schema?: TableSchema;\n}\n\nconst classBase = \"vuuSessionEditingForm\";\n\nconst getField = (\n fields: FormFieldDescriptor[],\n name: string\n): FormFieldDescriptor => {\n const field = fields.find((f) => f.name === name);\n if (field) {\n return field;\n } else {\n throw Error(`SessionEditingForm, no field '${name}' found`);\n }\n};\n\nconst getFieldNameAndValue = (\n evt: ChangeEvent | FocusEvent\n): [string, string] => {\n const {\n dataset: { field },\n value,\n } = evt.target as HTMLInputElement;\n if (field === undefined) {\n throw Error(\"SessionEditingForm, form field has no field name\");\n }\n return [field, value];\n};\n\nconst Status = {\n uninitialised: 0,\n unchanged: 1,\n changed: 2,\n invalid: 3,\n};\n\nfunction getTypedValue(\n value: string,\n type: VuuColumnDataType,\n throwIfUndefined?: false\n): VuuRowDataItemType | undefined;\nfunction getTypedValue(\n value: string,\n type: VuuColumnDataType,\n throwIfUndefined: true\n): VuuRowDataItemType;\nfunction getTypedValue(\n value: string,\n type: VuuColumnDataType,\n throwIfUndefined = false\n): VuuRowDataItemType | undefined {\n switch (type) {\n case \"int\":\n case \"long\": {\n const typedValue = parseInt(value, 10);\n if (isValidNumber(typedValue)) {\n return typedValue;\n } else if (throwIfUndefined) {\n throw Error(\"SessionEditingForm getTypedValue\");\n } else {\n return undefined;\n }\n }\n\n case \"double\": {\n const typedValue = parseFloat(value);\n if (isValidNumber(typedValue)) {\n return typedValue;\n }\n return undefined;\n }\n\n case \"boolean\":\n return value === \"true\" ? true : false;\n default:\n return value;\n }\n}\n\nconst getDataSource = (\n dataSource?: DataSource,\n schema?: TableSchema\n): DataSource => {\n if (dataSource) {\n return dataSource;\n } else if (schema) {\n return new RemoteDataSource({\n bufferSize: 0,\n table: schema.table,\n columns: schema.columns.map((col) => col.name),\n }) as DataSource;\n } else {\n throw Error(\n \"SessionEditingForm: either a DataSource or a TableSchema must be provided\"\n );\n }\n};\n\ntype FormValues = { [key: string]: VuuRowDataItemType | undefined };\n\nexport const SessionEditingForm = ({\n className,\n config: { fields, key: keyField },\n dataSource: dataSourceProp,\n id: idProp,\n onClose,\n schema,\n ...htmlAttributes\n}: SessionEditingFormProps) => {\n const [values, setValues] = useState<FormValues>();\n const [errorMessage, setErrorMessage] = useState(\"\");\n const formContentRef = useRef<HTMLDivElement>(null);\n const initialDataRef = useRef<FormValues>();\n const dataStatusRef = useRef(Status.uninitialised);\n\n const dataSource = useMemo(() => {\n const applyServerData = (data: VuuDataRow) => {\n if (columnMap) {\n const values: { [key: string]: VuuRowDataItemType } = {};\n for (const column of dataSource.columns) {\n values[column] = data[columnMap[column]];\n }\n if (dataStatusRef.current === Status.uninitialised) {\n dataStatusRef.current = Status.unchanged;\n initialDataRef.current = values;\n }\n setValues(values);\n }\n };\n\n const ds = getDataSource(dataSourceProp, schema);\n const columnMap = buildColumnMap(ds.columns);\n ds.subscribe({ range: { from: 0, to: 5 } }, (message) => {\n if (message.type === \"viewport-update\" && message.rows) {\n if (dataStatusRef.current === Status.uninitialised) {\n applyServerData(message.rows[0]);\n } else {\n console.log(\"what do we do with server updates\");\n }\n }\n });\n return ds;\n }, [dataSourceProp, schema]);\n\n const id = useIdMemo(idProp);\n\n const handleChange = useCallback(\n (evt) => {\n const [field, value] = getFieldNameAndValue(evt);\n const { type } = getField(fields, field);\n const typedValue = getTypedValue(value, type);\n setValues((values = {}) => {\n const newValues = {\n ...values,\n [field]: typedValue,\n };\n const notUpdated = shallowEquals(newValues, initialDataRef.current);\n dataStatusRef.current = notUpdated\n ? Status.unchanged\n : typedValue !== undefined\n ? Status.changed\n : Status.invalid;\n return newValues;\n });\n },\n [fields]\n );\n\n const handleBlur = useCallback(\n (evt: FocusEvent) => {\n const [field, value] = getFieldNameAndValue(evt);\n const { type } = getField(fields, field);\n const rowKey = values?.[keyField];\n const typedValue = getTypedValue(value, type, true);\n if (typeof rowKey === \"string\") {\n dataSource.menuRpcCall({\n rowKey,\n field: field,\n value: typedValue,\n type: \"VP_EDIT_CELL_RPC\",\n });\n }\n },\n [dataSource, fields, keyField, values]\n );\n\n const applyAction = useCallback(\n (action: unknown) => {\n if (typeof action === \"object\" && action !== null) {\n if (\"type\" in action && action.type === \"CLOSE_DIALOG_ACTION\") {\n onClose();\n }\n }\n },\n [onClose]\n );\n\n const handleSubmit = useCallback(async () => {\n const response = await dataSource.menuRpcCall({\n type: \"VP_EDIT_SUBMIT_FORM_RPC\",\n });\n if (isErrorResponse(response)) {\n setErrorMessage(response.error);\n } else if (hasAction(response)) {\n applyAction(response.action);\n }\n }, [applyAction, dataSource]);\n\n const handleKeyDown = useCallback(\n (evt) => {\n if (evt.key === \"Enter\" && dataStatusRef.current === Status.changed) {\n handleSubmit();\n }\n },\n [handleSubmit]\n );\n\n const handleCancel = useCallback(() => {\n onClose();\n }, [onClose]);\n\n const getFormControl = (field: FormFieldDescriptor) => {\n const value = String(values?.[field.name] ?? \"\");\n if (field.readonly || field.name === keyField) {\n return (\n <div className={`${classBase}-fieldValue vuuReadOnly`}>{value}</div>\n );\n } else {\n return (\n <input\n className={`${classBase}-fieldValue`}\n data-field={field.name}\n onBlur={handleBlur}\n onChange={handleChange}\n type=\"text\"\n value={value}\n id={`${id}-input-${field.name}`}\n />\n );\n }\n };\n\n useEffect(() => {\n if (formContentRef.current) {\n const firstInput = formContentRef.current.querySelector(\n \"input\"\n ) as HTMLInputElement;\n if (firstInput) {\n setTimeout(() => {\n firstInput.focus();\n firstInput.select();\n }, 100);\n }\n }\n }, []);\n\n useEffect(() => {\n return () => {\n if (dataSource) {\n dataSource.unsubscribe();\n }\n };\n }, [dataSource]);\n\n const isDirty = dataStatusRef.current === Status.changed;\n return (\n <div {...htmlAttributes} className={cx(classBase, className)}>\n {errorMessage ? (\n <div\n className={`${classBase}-errorBanner`}\n data-icon=\"error\"\n title={errorMessage}\n >\n Error, edit(s) not saved\n </div>\n ) : undefined}\n <div\n className={`${classBase}-content`}\n ref={formContentRef}\n onKeyDown={handleKeyDown}\n >\n {fields.map((field) => (\n <div className={`${classBase}-field`} key={field.name}>\n <label\n className={cx(`${classBase}-fieldLabel`, {\n [`${classBase}-required`]: field.required,\n })}\n htmlFor={`${id}-input-${field.name}`}\n >\n {field?.label ?? field.description}\n </label>\n {getFormControl(field)}\n </div>\n ))}\n </div>\n <div className={`${classBase}-buttonbar salt-theme salt-density-high`}>\n <Button\n type=\"submit\"\n variant=\"cta\"\n disabled={!isDirty}\n onClick={handleSubmit}\n >\n Submit\n </Button>\n <Button variant=\"secondary\" onClick={handleCancel}>\n Cancel\n </Button>\n </div>\n </div>\n );\n};\n", "import { connectToServer } from \"@vuu-ui/vuu-data\";\nimport cx from \"classnames\";\nimport {\n HTMLAttributes,\n ReactElement,\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { useLayoutConfig } from \"./layout-config\";\nimport { DraggableLayout, LayoutProvider } from \"@vuu-ui/vuu-layout\";\nimport { LayoutJSON } from \"@vuu-ui/vuu-layout/src/layout-reducer\";\nimport { AppHeader } from \"./app-header\";\nimport { ThemeMode, ThemeProvider, useThemeAttributes } from \"./theme-provider\";\nimport { logger } from \"@vuu-ui/vuu-utils\";\nimport { useShellLayout } from \"./shell-layouts\";\nimport { SaveLocation } from \"./shellTypes\";\n\nimport \"./shell.css\";\n\nexport type VuuUser = {\n username: string;\n token: string;\n};\n\nconst { error } = logger(\"Shell\");\n\nconst warningLayout = {\n type: \"View\",\n props: {\n style: { height: \"calc(100% - 6px)\" },\n },\n children: [\n {\n props: {\n className: \"vuuShell-warningPlaceholder\",\n },\n type: \"Placeholder\",\n },\n ],\n};\n\nexport interface ShellProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n defaultLayout?: LayoutJSON;\n leftSidePanel?: ReactElement;\n leftSidePanelLayout?: \"full-height\" | \"inlay\";\n loginUrl?: string;\n // paletteConfig: any;\n saveLocation?: SaveLocation;\n saveUrl?: string;\n serverUrl?: string;\n user: VuuUser;\n}\n\nexport const Shell = ({\n children,\n className: classNameProp,\n defaultLayout = warningLayout,\n leftSidePanel,\n leftSidePanelLayout,\n loginUrl,\n saveLocation = \"remote\",\n saveUrl,\n serverUrl,\n user,\n ...htmlAttributes\n}: ShellProps) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const layoutId = useRef(\"latest\");\n const [layout, saveLayoutConfig, loadLayoutById] = useLayoutConfig({\n defaultLayout,\n saveLocation,\n user,\n });\n\n const handleLayoutChange = useCallback(\n (layout) => {\n try {\n saveLayoutConfig(layout);\n } catch {\n error?.(\"Failed to save layout\");\n }\n },\n [saveLayoutConfig]\n );\n\n const handleSwitchTheme = useCallback((mode: ThemeMode) => {\n if (rootRef.current) {\n rootRef.current.dataset.mode = mode;\n }\n }, []);\n\n const handleNavigate = useCallback(\n (id) => {\n layoutId.current = id;\n loadLayoutById(id);\n },\n [loadLayoutById]\n );\n\n useEffect(() => {\n if (serverUrl && user.token) {\n connectToServer({\n authToken: user.token,\n url: serverUrl,\n username: user.username,\n });\n }\n }, [serverUrl, user.token, user.username]);\n\n const [themeClass, densityClass, dataMode] = useThemeAttributes();\n const className = cx(\"vuuShell\", classNameProp, themeClass, densityClass);\n\n const shellLayout = useShellLayout({\n leftSidePanelLayout,\n appHeader: (\n <AppHeader\n layoutId={layoutId.current}\n loginUrl={loginUrl}\n user={user}\n onNavigate={handleNavigate}\n onSwitchTheme={handleSwitchTheme}\n />\n ),\n leftSidePanel,\n });\n\n return (\n // ShellContext TBD\n <ThemeProvider>\n <LayoutProvider layout={layout} onLayoutChange={handleLayoutChange}>\n <DraggableLayout\n className={className}\n data-mode={dataMode}\n ref={rootRef}\n {...htmlAttributes}\n >\n {shellLayout}\n </DraggableLayout>\n </LayoutProvider>\n {children}\n </ThemeProvider>\n );\n};\n", "import { LayoutJSON } from \"@vuu-ui/vuu-layout/src/layout-reducer\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { VuuUser } from \"../shell\";\nimport { SaveLocation } from \"../shellTypes\";\nimport { loadLocalConfig, saveLocalConfig } from \"./local-config\";\nimport { loadRemoteConfig, saveRemoteConfig } from \"./remote-config\";\n\nexport interface LayoutConfigHookProps {\n defaultLayout: LayoutJSON;\n saveLocation: SaveLocation;\n saveUrl?: string;\n user: VuuUser;\n}\n\nexport type LayoutHookResult = [\n LayoutJSON,\n (layout: LayoutJSON) => void,\n (id: string) => void\n];\n\nexport const useLayoutConfig = ({\n saveLocation,\n saveUrl = \"api/vui\",\n user,\n defaultLayout,\n}: LayoutConfigHookProps): LayoutHookResult => {\n const [layout, _setLayout] = useState(defaultLayout);\n const usingRemote = saveLocation === \"remote\";\n const loadConfig = usingRemote ? loadRemoteConfig : loadLocalConfig;\n const saveConfig = usingRemote ? saveRemoteConfig : saveLocalConfig;\n\n const load = useCallback(\n async (id = \"latest\") => {\n try {\n const layout = await loadConfig(saveUrl, user, id);\n _setLayout(layout);\n } catch {\n _setLayout(defaultLayout);\n }\n },\n [defaultLayout, loadConfig, saveUrl, user]\n );\n\n useEffect(() => {\n load();\n }, [load]);\n\n const saveData = useCallback(\n (data) => {\n saveConfig(saveUrl, user, data);\n },\n [saveConfig, saveUrl, user]\n );\n\n const loadLayoutById = useCallback((id) => load(id), [load]);\n\n return [layout, saveData, loadLayoutById];\n};\n", "import { LayoutJSON } from \"@vuu-ui/vuu-layout/src/layout-reducer\";\nimport { VuuUser } from \"../shell\";\n\nexport const loadLocalConfig = (\n saveUrl: string,\n user: VuuUser,\n id = \"latest\"\n): Promise<LayoutJSON> =>\n new Promise((resolve, reject) => {\n console.log(\n `load local config at ${saveUrl} for user ${user.username}, id ${id}`\n );\n const data = localStorage.getItem(saveUrl);\n if (data) {\n const layout = JSON.parse(data);\n resolve(layout);\n } else {\n reject();\n }\n });\n\nexport const saveLocalConfig = (\n saveUrl: string,\n user: VuuUser,\n data: LayoutJSON\n): Promise<undefined> =>\n new Promise((resolve, reject) => {\n try {\n localStorage.setItem(saveUrl, JSON.stringify(data));\n resolve(undefined);\n } catch {\n reject();\n }\n });\n", "import { LayoutJSON } from \"@vuu-ui/vuu-layout/src/layout-reducer\";\nimport { VuuUser } from \"../shell\";\n\nexport const loadRemoteConfig = (\n saveUrl: string,\n user: VuuUser,\n id = \"latest\"\n): Promise<LayoutJSON> =>\n new Promise((resolve, reject) => {\n fetch(`${saveUrl}/${user.username}/${id}`, {})\n .then((response) => {\n if (response.ok) {\n resolve(response.json());\n } else {\n reject(undefined);\n }\n })\n .catch(() => {\n // TODO we should set a layout with a warning here\n // setLayout(defaultLayout);\n reject(undefined);\n });\n });\n\nexport const saveRemoteConfig = (\n saveUrl: string,\n user: VuuUser,\n data: LayoutJSON\n) =>\n new Promise((resolve, reject) => {\n fetch(`${saveUrl}/${user.username}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(data),\n }).then((response) => {\n if (response.ok) {\n resolve(undefined);\n } else {\n reject();\n }\n });\n });\n", "import { HTMLAttributes, useCallback } from \"react\";\nimport { VuuUser } from \"../shell\";\nimport { UserProfile } from \"../user-profile\";\nimport { ThemeSwitch } from \"../theme-switch\";\nimport { ThemeMode } from \"../theme-provider\";\nimport cx from \"classnames\";\n\nimport \"./AppHeader.css\";\n\nconst classBase = \"vuuAppHeader\";\nexport interface AppHeaderProps extends HTMLAttributes<HTMLDivElement> {\n layoutId: string;\n loginUrl?: string;\n onNavigate: (id: string) => void;\n onSwitchTheme?: (mode: ThemeMode) => void;\n themeMode?: ThemeMode;\n user: VuuUser;\n}\n\nexport const AppHeader = ({\n className: classNameProp,\n layoutId,\n loginUrl,\n onNavigate,\n onSwitchTheme,\n themeMode = \"light\",\n user,\n ...htmlAttributes\n}: AppHeaderProps) => {\n const className = cx(classBase, classNameProp);\n const handleSwitchTheme = useCallback(\n (mode: ThemeMode) => onSwitchTheme?.(mode),\n [onSwitchTheme]\n );\n return (\n <header className={className} {...htmlAttributes}>\n <ThemeSwitch defaultMode={themeMode} onChange={handleSwitchTheme} />\n <UserProfile\n layoutId={layoutId}\n loginUrl={loginUrl}\n onNavigate={onNavigate}\n user={user}\n />\n </header>\n );\n};\n", "import { Button } from \"@salt-ds/core\";\nimport { DropdownBase } from \"@salt-ds/lab\";\nimport { UserSolidIcon } from \"@salt-ds/icons\";\nimport { UserPanel } from \"./UserPanel\";\n\nimport \"./UserProfile.css\";\nimport { VuuUser } from \"../shell\";\n\nexport interface UserProfileProps {\n layoutId: string;\n loginUrl?: string;\n onNavigate: (id: string) => void;\n user: VuuUser;\n}\n\nexport const UserProfile = ({\n layoutId,\n loginUrl,\n onNavigate,\n user,\n}: UserProfileProps) => {\n const handleNavigate = (id: string) => {\n onNavigate(id);\n };\n\n return (\n <DropdownBase className=\"vuuUserProfile\" placement=\"bottom-end\">\n <Button variant=\"secondary\">\n <UserSolidIcon />\n </Button>\n <UserPanel\n layoutId={layoutId}\n loginUrl={loginUrl}\n onNavigate={handleNavigate}\n user={user}\n />\n </DropdownBase>\n );\n};\n", "import { formatDate } from \"@vuu-ui/vuu-utils\";\nimport { List, ListItem, ListItemProps } from \"@salt-ds/lab\";\nimport { Button } from \"@salt-ds/core\";\nimport { ExportIcon } from \"@salt-ds/icons\";\nimport {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n useCallback,\n useEffect,\n useState,\n} from \"react\";\nimport { getLayoutHistory, LayoutHistoryItem } from \"../get-layout-history\";\nimport { logout } from \"../login\";\nimport { VuuUser } from \"../shell\";\n\nimport \"./UserPanel.css\";\n\nconst byLastUpdate = (\n { lastUpdate: l1 }: LayoutHistoryItem,\n { lastUpdate: l2 }: LayoutHistoryItem\n) => {\n return l2 === l1 ? 0 : l2 < l1 ? -1 : 1;\n};\n\ntype HistoryEntry = {\n id: string;\n label: string;\n lastUpdate: number;\n};\n\nconst HistoryListItem = (props: ListItemProps<HistoryEntry>) => {\n return <ListItem {...props} />;\n};\n\nexport interface UserPanelProps extends HTMLAttributes<HTMLDivElement> {\n loginUrl?: string;\n onNavigate: (id: string) => void;\n user: VuuUser;\n layoutId: string;\n}\n\nexport const UserPanel = forwardRef(function UserPanel(\n { loginUrl, onNavigate, user, layoutId = \"latest\" }: UserPanelProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const [history, setHistory] = useState<HistoryEntry[]>([]);\n\n useEffect(() => {\n async function getHistory() {\n const history = await getLayoutHistory(user);\n const sortedHistory = history\n .filter((item) => item.id !== \"latest\")\n .sort(byLastUpdate)\n .map<HistoryEntry>(({ id, lastUpdate }) => ({\n lastUpdate,\n id,\n label: `Saved at ${formatDate(new Date(lastUpdate), \"kk:mm:ss\")}`,\n }));\n console.log({ sortedHistory });\n setHistory(sortedHistory);\n }\n\n getHistory();\n }, [user]);\n\n const handleHisorySelected = useCallback(\n (evt, selected) => {\n if (selected) {\n onNavigate(selected.id);\n }\n },\n [onNavigate]\n );\n\n const handleLogout = useCallback(() => {\n logout(loginUrl);\n }, [loginUrl]);\n\n const selected =\n history.length === 0\n ? null\n : layoutId === \"latest\"\n ? history[0]\n : history.find((i) => i.id === layoutId);\n\n return (\n <div className=\"vuuUserPanel\" ref={forwardedRef}>\n <List<HistoryEntry>\n ListItem={HistoryListItem}\n className=\"vuuUserPanel-history\"\n onSelect={handleHisorySelected}\n selected={selected}\n source={history}\n />\n <div className=\"vuuUserPanel-buttonBar\">\n <Button aria-label=\"logout\" onClick={handleLogout}>\n <ExportIcon /> Logout\n </Button>\n </div>\n </div>\n );\n});\n", "import { VuuUser } from \"./shell\";\n\nexport interface LayoutHistoryItem {\n user: string;\n id: string;\n uniqueId: string;\n lastUpdate: number;\n}\n\nexport const getLayoutHistory = async (\n user: VuuUser\n): Promise<LayoutHistoryItem[]> => {\n const history = await fetch(`api/vui/${user.username}`, {})\n .then((response) => {\n return response.ok ? response.json() : null;\n })\n .catch(() => {\n // TODO we should set a layout with a warning here\n console.log(\"error getting history\");\n });\n\n return history;\n};\n", "import cx from \"classnames\";\nimport { ToggleButton, ToggleButtonGroup, useControlled } from \"@salt-ds/core\";\nimport { HTMLAttributes, SyntheticEvent, useCallback } from \"react\";\nimport { ThemeMode } from \"../theme-provider\";\n\nimport \"./ThemeSwitch.css\";\n\nconst classBase = \"vuuThemeSwitch\";\nexport interface ThemeSwitchProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n defaultMode?: ThemeMode;\n mode?: ThemeMode;\n onChange: (mode: ThemeMode) => void;\n}\n\nexport const ThemeSwitch = ({\n className: classNameProp,\n defaultMode: defaultModeProp,\n mode: modeProp,\n onChange,\n ...htmlAttributes\n}: ThemeSwitchProps) => {\n const [mode, setMode] = useControlled<ThemeMode>({\n controlled: modeProp,\n default: defaultModeProp ?? \"light\",\n name: \"ThemeSwitch\",\n state: \"mode\",\n });\n\n const handleChangeSecondary = useCallback(\n (evt: SyntheticEvent<HTMLButtonElement>) => {\n const { value } = evt.target as HTMLButtonElement;\n setMode(value as ThemeMode);\n onChange(value as ThemeMode);\n },\n [onChange, setMode]\n );\n const className = cx(classBase, classNameProp);\n return (\n <ToggleButtonGroup\n className={className}\n {...htmlAttributes}\n onChange={handleChangeSecondary}\n value={mode}\n >\n <ToggleButton aria-label=\"alert\" data-icon=\"light\" value=\"dark\" />\n <ToggleButton aria-label=\"home\" data-icon=\"dark\" value=\"light\" />\n </ToggleButtonGroup>\n );\n};\n", "import { Button } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport { useCallback, useMemo } from \"react\";\nimport {\n layoutFromJson,\n LayoutJSON,\n useLayoutProviderDispatch,\n} from \"@vuu-ui/vuu-layout\";\n\nimport \"./ContextPanel.css\";\n\nconst classBase = \"vuuContextPanel\";\n\nexport interface ContextPanelProps {\n [key: string]: unknown;\n className?: string;\n content?: LayoutJSON;\n expanded?: boolean;\n overlay?: boolean;\n}\n\nexport const ContextPanel = ({\n className: classNameProp,\n expanded = false,\n content: contentProp,\n overlay = false,\n title,\n}: ContextPanelProps) => {\n const dispatchLayoutAction = useLayoutProviderDispatch();\n const handleClose = useCallback(() => {\n dispatchLayoutAction({\n path: \"#context-panel\",\n propName: \"expanded\",\n propValue: false,\n type: \"set-prop\",\n });\n }, [dispatchLayoutAction]);\n // TODO look up content using context\n\n const className = cx(classBase, classNameProp, {\n [`${classBase}-expanded`]: expanded,\n [`${classBase}-inline`]: overlay !== true,\n [`${classBase}-overlay`]: overlay,\n });\n\n const content = useMemo(\n () => (contentProp ? layoutFromJson(contentProp, \"context-0\") : null),\n [contentProp]\n );\n\n return (\n <div className={cx(classBase, className)}>\n <div className={`${classBase}-inner`}>\n <div className={`${classBase}-header`}>\n <h2 className={`${classBase}-title`}>{title}</h2>\n <Button\n className={`${classBase}-close`}\n data-icon=\"close\"\n onClick={handleClose}\n variant=\"secondary\"\n />\n </div>\n <div className={`${classBase}-content`}>{content}</div>\n </div>\n </div>\n );\n};\n", "import { DraggableLayout, Flexbox } from \"@vuu-ui/vuu-layout\";\nimport { ReactElement } from \"react\";\nimport { ContextPanel } from \"./context-panel\";\nimport { ShellLayoutProps } from \"./useShellLayout\";\n\nexport const useFullHeightLeftPanel = ({\n appHeader,\n leftSidePanel,\n}: ShellLayoutProps): ReactElement => {\n return (\n <Flexbox\n className=\"App\"\n style={{\n flexDirection: \"row\",\n height: \"100%\",\n width: \"100%\",\n }}\n >\n {leftSidePanel}\n <Flexbox\n className=\"vuuShell-content\"\n style={{ flex: 1, flexDirection: \"column\" }}\n >\n {appHeader}\n <DraggableLayout dropTarget key=\"main-content\" style={{ flex: 1 }} />\n </Flexbox>\n <ContextPanel\n id=\"context-panel\"\n overlay\n title=\"Column Settings\"\n ></ContextPanel>\n </Flexbox>\n );\n};\n", "import {\n DockLayout,\n DraggableLayout,\n Drawer,\n Flexbox,\n View,\n} from \"@vuu-ui/vuu-layout\";\n\nimport { MouseEvent, ReactElement, useCallback, useRef, useState } from \"react\";\nimport { ShellLayoutProps } from \"./useShellLayout\";\n\nexport const useInlayLeftPanel = ({\n appHeader,\n leftSidePanel,\n}: ShellLayoutProps): ReactElement => {\n const paletteView = useRef<HTMLDivElement>(null);\n const [open, setOpen] = useState(true);\n\n const handleDrawerClick = useCallback(\n (e: MouseEvent<HTMLElement>) => {\n const target = e.target as HTMLElement;\n if (!paletteView.current?.contains(target)) {\n setOpen(!open);\n }\n },\n [open]\n );\n\n const getDrawers = useCallback(\n (leftSidePanel) => {\n const drawers: ReactElement[] = [];\n drawers.push(\n <Drawer\n key=\"left-panel\"\n onClick={handleDrawerClick}\n open={open}\n position=\"left\"\n inline\n peekaboo\n sizeOpen={200}\n toggleButton=\"end\"\n >\n <View\n className=\"vuuShell-palette\"\n id=\"vw-app-palette\"\n key=\"app-palette\"\n ref={paletteView}\n style={{ height: \"100%\" }}\n >\n {leftSidePanel}\n </View>\n </Drawer>\n );\n\n return drawers;\n },\n [handleDrawerClick, open]\n );\n\n return (\n <Flexbox\n className=\"App\"\n style={{ flexDirection: \"column\", height: \"100%\", width: \"100%\" }}\n >\n {appHeader}\n <DockLayout style={{ flex: 1 }}>\n {getDrawers(leftSidePanel).concat(\n <DraggableLayout\n dropTarget\n key=\"main-content\"\n style={{ width: \"100%\", height: \"100%\" }}\n />\n )}\n </DockLayout>\n </Flexbox>\n );\n};\n", "import { ReactElement } from \"react\";\nimport { useFullHeightLeftPanel } from \"./useFullHeightLeftPanel\";\nimport { useInlayLeftPanel } from \"./useInlayLeftPanel\";\n\nexport type ShellLayoutType = \"full-height\" | \"inlay\";\nexport interface ShellLayoutProps {\n appHeader: ReactElement;\n leftSidePanel?: ReactElement;\n}\n\nexport const useShellLayout = ({\n leftSidePanelLayout = \"inlay\",\n ...props\n}:\n | ShellLayoutProps & {\n leftSidePanelLayout?: \"full-height\" | \"inlay\";\n }) => {\n const useLayoutHook =\n leftSidePanelLayout === \"inlay\"\n ? useInlayLeftPanel\n : useFullHeightLeftPanel;\n\n return useLayoutHook(props);\n};\n", "import { ColumnDescriptor } from \"@vuu-ui/vuu-datagrid-types\";\nimport { RpcResponseHandler } from \"packages/vuu-data-react/src\";\nimport { createContext, ReactElement, ReactNode, useContext } from \"react\";\n\nexport interface ShellContextProps {\n getDefaultColumnConfig?: (\n tableName: string,\n columnName: string\n ) => Partial<ColumnDescriptor>;\n handleRpcResponse?: RpcResponseHandler;\n}\n\nconst defaultConfig = {};\n\nconst ShellContext = createContext<ShellContextProps>(defaultConfig);\n\nexport interface ShellProviderProps {\n children: ReactNode;\n value?: ShellContextProps;\n}\n\nconst Provider = ({\n children,\n context,\n inheritedContext,\n}: {\n children: ReactNode;\n context?: ShellContextProps;\n inheritedContext?: ShellContextProps;\n}) => {\n // TODO functions provided at multiple levels must be merged\n const mergedContext = {\n ...inheritedContext,\n ...context,\n };\n return (\n <ShellContext.Provider value={mergedContext}>\n {children}\n </ShellContext.Provider>\n );\n};\n\nexport const ShellContextProvider = ({\n children,\n value,\n}: ShellProviderProps): ReactElement => {\n return (\n <ShellContext.Consumer>\n {(context) => (\n <Provider context={value} inheritedContext={context}>\n {children}\n </Provider>\n )}\n </ShellContext.Consumer>\n );\n};\n\nexport const useShellContext = () => {\n return useContext(ShellContext);\n};\n"],
5
- "mappings": "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",
6
- "names": ["DEFAULT_DENSITY", "classBase", "React", "cx", "import_react", "import_classnames", "import_jsx_runtime", "cx", "import_react", "import_react", "import_jsx_runtime", "React", "error", "import_jsx_runtime", "import_jsx_runtime", "React", "import_jsx_runtime", "classBase", "import_react", "import_jsx_runtime", "import_vuu_layout", "import_react", "import_jsx_runtime", "import_react", "import_react", "start", "import_core", "import_classnames", "import_react", "import_lab", "import_classnames", "import_react", "import_react", "ReactDOM", "import_classnames", "cx", "import_classnames", "Portal", "cx", "import_jsx_runtime", "import_react", "import_react", "import_classnames", "import_vuu_layout", "import_react", "navigationKeys", "import_react", "React", "menus", "actions", "import_jsx_runtime", "classBase", "React", "isRoot", "children", "className", "props", "cx", "import_react", "import_vuu_layout", "import_jsx_runtime", "import_react", "id", "import_react", "import_jsx_runtime", "import_classnames", "import_react", "import_classnames", "import_react", "ReactDOM", "cx", "ReactDOM", "import_jsx_runtime", "menuBuilder", "ContextMenuProps", "cx", "menuDescriptors", "import_react", "import_classnames", "import_core", "import_vuu_layout", "import_jsx_runtime", "classBase", "getPosition", "showContextMenu", "cx", "import_jsx_runtime", "Draggable", "cx", "import_react", "import_react", "dropZone", "import_jsx_runtime", "NOT_OVERFLOWED", "NOT_HIDDEN", "dropZone", "import_react", "import_react", "import_jsx_runtime", "import_classnames", "import_react", "import_core", "import_jsx_runtime", "classBase", "EditableLabel", "value", "cx", "import_core", "import_jsx_runtime", "import_react", "import_classnames", "import_classnames", "import_jsx_runtime", "classBase", "cx", "import_jsx_runtime", "classBase", "cx", "ListItem", "import_vuu_layout", "import_core", "import_classnames", "import_react", "import_react", "import_jsx_runtime", "union", "Enter", "actionKeys", "focusKeys", "arrowLeftRightKeys", "functionKeys", "specialKeys", "union", "isNavigationKey", "import_react", "Enter", "closestListItem", "closestListItem", "import_react", "import_react", "isSelected", "itemToString", "isExpanded", "flattenedCollection", "flattenedSource", "_a", "isLeaf", "children", "toCollectionItem", "import_react", "import_core", "import_react", "nextItemIdx", "isFocusable", "useKeyboardNavigation", "isNavigationKey", "import_core", "import_react", "import_react", "import_react", "import_react", "dimensions", "import_core", "HeightOnly", "import_react", "selected", "useKeyboardNavigation", "import_core", "import_react", "contentHeight", "listHeight", "clientHeight", "height", "import_core", "import_react", "range", "import_jsx_runtime", "import_react", "classBase", "List", "ListItem", "itemToString", "createHeader", "cx", "addGroup", "id", "childItems", "import_core", "import_react", "import_react", "import_jsx_runtime", "defaultEmptyMessage", "withBaseName", "ListItem", "List", "itemToString", "data", "import_vuu_layout", "import_core", "import_classnames", "import_react", "import_react", "import_vuu_utils", "import_react", "_a", "_b", "import_core", "import_vuu_utils", "import_react", "isNavigationKey", "nextItemIdx", "useKeyboardNavigation", "import_core", "import_react", "defaultSelectionKeys", "useSelection", "useKeyboardNavigation", "useSelection", "import_jsx_runtime", "import_react", "classBase", "cx", "React", "import_core", "import_classnames", "import_react", "import_react", "import_classnames", "import_jsx_runtime", "classBase", "cx", "import_jsx_runtime", "classBase", "noop", "Tab", "editable", "cx", "import_core", "import_classnames", "import_react", "listItemIndex", "closestListItem", "closestListItemIndex", "listItemIndex", "closestListItem", "import_react", "PathSeparators", "isPathSeparator", "isParentPath", "countChildItems", "count", "isExpanded", "flattenedSource", "isLeaf", "import_react", "import_core", "defaultSelectionKeys", "NO_HANDLERS", "useSelection", "isSelected", "id", "import_react", "HeightOnly", "useViewportTracking", "import_react", "import_react", "isGroupNode", "isHeader", "PATH_SEPARATORS", "isDescendantOf", "import_core", "union", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "Enter", "Delete", "actionKeys", "Enter", "focusKeys", "arrowLeftRightKeys", "verticalNavigationKeys", "horizontalNavigationKeys", "functionKeys", "specialKeys", "union", "isNavigationKey", "navigationKeys", "verticalNavigationKeys", "horizontalNavigationKeys", "nextItemIdx", "ArrowUp", "ArrowLeft", "isLeaf", "isFocusable", "useKeyboardNavigation", "ArrowDown", "isNavigationKey", "import_react", "isHeader", "isGroupNode", "import_react", "NO_HANDLERS", "useCollapsibleGroups", "ArrowRight", "Enter", "ArrowLeft", "closestListItem", "import_react", "ArrowLeft", "EMPTY_ARRAY", "useKeyboardNavigation", "useCollapsibleGroups", "useSelection", "import_jsx_runtime", "import_react", "classBase", "Tree", "useId", "selected", "sourceItems", "id", "useViewportTracking", "closestListItemIndex", "cx", "import_classnames", "import_react", "import_react", "import_classnames", "import_jsx_runtime", "DEFAULT_DENSITY", "cx", "import_jsx_runtime", "classBase", "cx", "import_react", "import_core", "import_jsx_runtime", "classBase", "import_vuu_utils", "import_react", "import_classnames", "import_core", "import_vuu_utils", "import_jsx_runtime", "classBase", "values", "cx", "import_vuu_data", "import_classnames", "import_react", "import_react", "layout", "import_vuu_layout", "import_react", "import_core", "import_lab", "import_icons", "import_vuu_utils", "import_lab", "import_core", "import_react", "import_jsx_runtime", "UserPanel", "history", "selected", "import_jsx_runtime", "import_classnames", "import_core", "import_react", "import_jsx_runtime", "classBase", "cx", "import_classnames", "import_jsx_runtime", "classBase", "cx", "import_vuu_utils", "import_core", "import_classnames", "import_react", "import_vuu_layout", "import_jsx_runtime", "classBase", "cx", "import_vuu_layout", "import_jsx_runtime", "import_vuu_layout", "import_react", "import_jsx_runtime", "leftSidePanel", "import_jsx_runtime", "layout", "cx", "import_react", "import_jsx_runtime"]
5
+ "mappings": "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",
6
+ "names": ["src_exports", "__export", "ConnectionStatusIcon", "ContextPanel", "DEFAULT_DENSITY", "DEFAULT_THEME", "DEFAULT_THEME_MODE", "DensitySwitch", "Feature", "LeftNav", "LoginPanel", "SaveLayoutPanel", "SessionEditingForm", "Shell", "ShellContextProvider", "ThemeContext", "ThemeProvider", "ThemeSwitch", "getAuthDetailsFromCookies", "getAuthModeFromCookies", "logout", "redirectToLogin", "useShellContext", "useShellLayout", "useThemeAttributes", "__toCommonJS", "import_react", "import_classnames", "import_jsx_runtime", "ConnectionStatusIcon", "connectionStatus", "className", "element", "props", "classBase", "setClassBase", "statusIcon", "React", "cx", "import_lab", "import_react", "import_classnames", "import_jsx_runtime", "classBase", "densities", "DEFAULT_DENSITY", "DensitySwitch", "classNameProp", "defaultDensity", "onChange", "handleSelectionChange", "_event", "selectedItem", "className", "cx", "import_react", "import_vuu_layout", "import_react", "import_jsx_runtime", "ErrorBoundary", "React", "props", "error", "errorInfo", "import_jsx_runtime", "Loader", "importCSS", "path", "container", "x", "import_jsx_runtime", "componentsMap", "useCachedFeature", "url", "React", "RawFeature", "css", "params", "props", "importCSS", "styleSheet", "LazyFeature", "ErrorBoundary", "Loader", "Feature", "import_jsx_runtime", "SaveLayoutPanel", "import_react", "import_jsx_runtime", "VuuLogo", "import_vuu_layout", "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", "absoluteIndex", "indexOfDraggedItem", "d", "draggedItemOriginalIndex", "minIndex", "min", "mutateDropTargetsSwitchDropTargetPosition", "direction", "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", "import_classnames", "import_react", "import_lab", "import_core", "import_classnames", "import_react", "import_react", "ReactDOM", "ReactDOM", "import_classnames", "containerId", "getPortalContainer", "className", "dataMode", "x", "y", "win", "el", "cx", "createContainer", "props", "renderPortal", "component", "container", "onRender", "import_classnames", "Portal", "children", "x", "y", "onRender", "themeClass", "densityClass", "dataMode", "useThemeAttributes", "renderContainer", "createContainer", "cx", "renderPortal", "_a", "import_jsx_runtime", "import_react", "import_react", "import_classnames", "import_vuu_layout", "import_react", "isRoot", "el", "hasPopup", "idx", "_a", "union", "set1", "sets", "result", "set", "element", "Enter", "Delete", "actionKeys", "Enter", "focusKeys", "arrowLeftRightKeys", "verticalNavigationKeys", "horizontalNavigationKeys", "functionKeys", "specialKeys", "union", "isNavigationKey", "key", "orientation", "verticalNavigationKeys", "horizontalNavigationKeys", "useKeyboardNavigation", "autoHighlightFirstItem", "count", "highlightedIndexProp", "onActivate", "onHighlight", "onCloseMenu", "onOpenMenu", "highlightedIndexRef", "forceRender", "controlledHighlighting", "setHighlightedIdx", "idx", "setHighlightedIndex", "keyBoardNavigation", "ignoreFocus", "setIgnoreFocus", "value", "highlightedIndex", "navigateChildldItems", "e", "nextIdx", "nextItemIdx", "handleKeyDown", "isNavigationKey", "hasPopup", "menuItemEl", "isRoot", "listProps", "key", "import_react", "isMenuItemGroup", "child", "MenuItemGroup", "getLabelFromChildren", "children", "isMenuItemLabel", "assignId", "path", "group", "hasSeparator", "React", "useItemsWithIdsNext", "childrenProp", "rootId", "normalizeChildren", "collectChildren", "menus", "actions", "list", "idx", "Separator", "hasChildItems", "childPath", "action", "options", "childWithId", "grandChildren", "import_jsx_runtime", "classBase", "Separator", "MenuItemGroup", "MenuItem", "children", "idx", "props", "MenuItemLabel", "getDisplayName", "item", "React", "isMenuItemLabel", "hasIcon", "child", "MenuList", "activatedByKeyboard", "childMenuShowing", "className", "highlightedIdxProp", "idProp", "isRoot", "listItemProps", "onHighlightMenuItem", "onActivate", "onCloseMenu", "onOpenMenu", "id", "root", "mapIdxToId", "handleActivate", "_a", "el", "focusVisible", "highlightedIndex", "listProps", "useKeyboardNavigation", "appliedFocusVisible", "getActiveDescendant", "renderContent", "propsCommonToAllListItems", "maybeIcon", "childElement", "withIcon", "iconName", "addClonedChild", "list", "itemId", "hasSeparator", "label", "hasSubMenu", "isMenuItemGroup", "subMenuShowing", "ariaControls", "getMenuItemProps", "listItems", "cx", "key", "highlightedIdx", "MenuList_default", "import_react", "closestListItem", "el", "nudge", "menus", "distance", "pos", "m", "i", "nudgeLeft", "nudgeUp", "flipSides", "id", "parentMenu", "menu", "el", "width", "getPosition", "openMenus", "left", "menuTop", "top", "getHostMenuId", "rootId", "getTargetMenuId", "getMenuItemDetails", "ariaExpanded", "ariaHasPopup", "useCascade", "onActivate", "onMouseEnterItem", "posX", "posY", "forceRefresh", "menuIsOpen", "menuId", "getOpenMenuStatus", "state", "menuState", "setOpenMenus", "menuOpenPendingTimeout", "menuClosePendingTimeout", "openMenu", "hostMenuId", "targetMenuId", "itemId", "closeMenu", "lastMenu", "closeMenus", "menuItemId", "menuItemMenuId", "lastMenuId", "parentMenuId", "clearAnyScheduledOpenTasks", "scheduleOpen", "scheduleClose", "openMenuId", "handleRender", "right", "bottom", "clientHeight", "clientWidth", "newMenus", "triggerChildMenu", "menuItemEl", "isGroup", "isOpen", "menuStatus", "parentOfLastOpenedMenu", "lastOpenedMenu", "listItemProps", "evt", "closestListItem", "listItemEl", "import_vuu_layout", "import_jsx_runtime", "import_react", "noop", "ContextMenu", "activatedByKeyboard", "childrenProp", "className", "idProp", "onClose", "position", "style", "menuListProps", "closeHandlerRef", "id", "closeMenuRef", "menus", "actions", "useItemsWithIdsNext", "navigatingWithKeyboard", "handleMouseEnterItem", "handleActivate", "menuItemId", "actionId", "action", "options", "closeMenu", "listItemProps", "openMenu", "openMenus", "handleRender", "useCascade", "handleCloseMenu", "handleHighlightMenuItem", "lastMenu", "getChildMenuId", "i", "menuId", "left", "top", "all", "childMenuId", "Portal", "MenuList_default", "import_react", "import_jsx_runtime", "ContextMenuContext", "import_vuu_utils", "import_classnames", "import_react", "import_classnames", "import_react", "import_react_dom", "_dialogOpen", "_popups", "reasonIsMenuAction", "reason", "reasonIsClickAway", "specialKeyHandler", "closeAllPopups", "dialogRoot", "ReactDOM", "outsideClickHandler", "popupContainers", "i", "PopupService", "popupClosed", "popupOpened", "name", "_popups", "_dialogOpen", "specialKeyHandler", "outsideClickHandler", "popupClosed", "pos", "PopupComponent", "children", "position", "style", "className", "cx", "incrementingKey", "PopupService", "group", "left", "right", "top", "width", "component", "el", "renderPortal", "evt", "reason", "_a", "popupRoot", "ReactDOM", "target", "height", "currentRight", "w", "overflowH", "overflowW", "adjustment", "import_jsx_runtime", "useContextMenu", "menuBuilder", "menuActionHandler", "ctx", "ContextMenuContext", "themeClass", "densityClass", "dataMode", "useThemeAttributes", "buildMenuOptions", "menuBuilders", "location", "options", "results", "handleShowContextMenu", "e", "ContextMenuProps", "contextMenu", "showContextMenuComponent", "menuItemDescriptors", "menuHandler", "action", "showContextMenu", "cx", "hideContextMenu", "NO_OPTIONS", "position", "PopupService", "menuDescriptors", "handleContextMenuAction", "positionProp", "contextMenuProps", "menuItems", "fromDescriptor", "menuItem", "i", "MenuItemGroup", "MenuItem", "handleClose", "reason", "_a", "reasonIsMenuAction", "component", "ContextMenu", "import_react", "import_classnames", "import_core", "import_vuu_layout", "import_jsx_runtime", "classBase", "getPosition", "element", "bottom", "left", "PopupMenu", "className", "icon", "idProp", "menuActionHandler", "menuBuilder", "menuLocation", "menuOptions", "onMenuClose", "tabIndex", "htmlAttributes", "rootRef", "suppressShowMenuRef", "menuOpen", "setMenuOpen", "id", "showContextMenu", "useContextMenu", "handleMenuClose", "reason", "reasonIsClickAway", "_a", "showMenu", "e", "cx", "import_jsx_runtime", "makeClassNames", "classNames", "className", "Draggable", "wrapperClassName", "element", "onTransitionEnd", "style", "scale", "forwardedRef", "callbackRef", "el", "forkedRef", "Portal", "cx", "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", "displaceFunction", "showPopup", "hidePopup", "popupShowing", "button", "drag", "dragPos", "mouseMoveDirection", "overflowIndicator", "drop", "_a", "absoluteIndexDraggedItem", "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_classnames", "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", "cx", "import_core", "regExp", "escapeRegExp", "string", "import_jsx_runtime", "withBaseName", "Highlighter", "props", "matchPattern", "text", "matchRegex", "escapeRegExp", "part", "index", "import_react", "import_classnames", "import_classnames", "import_jsx_runtime", "classBase", "CheckboxIcon", "checked", "htmlAttributes", "cx", "import_jsx_runtime", "classBase", "ListItemProxy", "props", "forwardedRef", "cx", "ListItem", "children", "classNameProp", "disabled", "tabIndex", "item", "itemHeight", "itemTextHighlightPattern", "label", "_notUsed", "selected", "showCheckbox", "styleProp", "className", "style", "CheckboxIcon", "Highlighter", "import_vuu_layout", "import_core", "import_classnames", "import_react", "import_react", "import_jsx_runtime", "CollectionContext", "useCollection", "collection", "CollectionContext", "isPlainObject", "obj", "itemToString", "item", "union", "set1", "sets", "result", "set", "element", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "Enter", "Home", "End", "PageUp", "PageDown", "Space", "actionKeys", "focusKeys", "arrowLeftRightKeys", "navigationKeys", "Home", "End", "PageUp", "PageDown", "ArrowDown", "ArrowUp", "functionKeys", "specialKeys", "union", "isCharacterKey", "evt", "isNavigationKey", "key", "import_react", "NO_HANDLERS", "canToggleItem", "item", "canSelectItem", "toggleIconClicked", "el", "useCollapsibleGroups", "collapsibleHeaders", "collectionHook", "highlightedIdx", "onToggle", "handleKeyDown", "e", "ArrowRight", "Enter", "ArrowLeft", "listHandlers", "evt", "listItemIndex", "listItemEl", "idx", "closestListItem", "el", "closestListItemIndex", "el", "listItemIndex", "closestListItem", "selectionIsDisallowed", "selection", "hasSelection", "selected", "getFirstSelectedItem", "import_react", "import_react", "ListItemGroup", "_", "ListItemHeader", "_", "sourceItemHasProp", "item", "propertyName", "isHeader", "isGroupNode", "childItemHasProp", "isDisabled", "isFocusable", "countChildItems", "items", "idx", "i", "count", "getChildLabel", "element", "childIsHeader", "child", "ListItemHeader", "childIsGroup", "ListItemGroup", "childIsSelectable", "getChildNodes", "children", "childItems", "mapReactElementChildren", "fn", "childElements", "sourceItems", "source", "options", "index", "_a", "_b", "itemToString", "dataId", "disabled", "id", "dataExpanded", "expanded", "PathSeparators", "isPathSeparator", "char", "isParentPath", "parentPath", "childPath", "PATH_SEPARATORS", "isDescendantOf", "basePath", "targetPath", "replaceCollectionItem", "nodes", "props", "childNodes", "node", "leftTrim", "value", "getDefaultFilterRegex", "escapeRegExp", "getDefaultFilter", "inputValue", "getFilterRegex", "itemValue", "isSelected", "selected", "item", "defaultCollectionOptions", "useCollectionItems", "children", "idRoot", "label", "options", "source", "_a", "getItemId", "forceUpdate", "inheritedCollectionHook", "useCollection", "dataRef", "flattenedDataRef", "EMPTY_COLLECTION", "filterPattern", "getFilterRegex", "getDefaultFilterRegex", "noChildrenLabel", "itemToString", "isExpanded", "path", "addMetadataToItems", "items", "indexer", "level", "results", "flattenedCollection", "flattenedSource", "item", "i", "all", "_b", "isCollapsibleHeader", "isNonCollapsibleGroupNode", "isLeaf", "nonCollapsible", "childPath", "id", "expanded", "normalisedItem", "countChildItems", "isDisabled", "isFocusable", "getFilter", "getDefaultFilter", "collectVisibleItems", "filter", "idx", "skipToNextHeader", "isHeader", "isGroupNode", "partialCollectionItems", "sourceItems", "childItems", "collectionItems", "collectionItemsRef", "setFilterPattern", "pattern", "itemById", "target", "sourceWithId", "isParentPath", "toCollectionItem", "collectionItem", "itemToCollectionItem", "sel", "result", "stringToCollectionItem", "value", "itemToId", "collapseGroupItem", "replaceCollectionItem", "expandGroupItem", "import_react", "noScrolling", "itemIndex", "item", "scrollOffset", "useImperativeScrollingAPI", "collectionHook", "forwardedRef", "scrollableRef", "scrollIntoView", "scrollHandles", "collectionItem", "import_core", "import_react", "LIST_FOCUS_VISIBLE", "nextItemIdx", "count", "key", "idx", "ArrowUp", "End", "getIndexOfSelectedItem", "items", "selected", "selectedItem", "getFirstSelectedItem", "getStartIdx", "selectedIdx", "length", "Home", "getItemRect", "item", "el", "pageDown", "containerEl", "itemEl", "indexPositions", "index", "itemTop", "scrollTop", "clientHeight", "scrollHeight", "lastIndexPosition", "newScrollTop", "nextIdx", "nextRect", "pageUp", "resolve", "isLeaf", "isFocusable", "useKeyboardNavigation", "containerRef", "defaultHighlightedIndex", "disableHighlightOnFocus", "highlightedIndexProp", "onHighlight", "onKeyboardNavigation", "restoreLastFocus", "lastFocus", "forceRender", "highlightedIndex", "setHighlightedIdx", "isControlledHighlighting", "setHighlightedIndex", "fromKeyboard", "nextPageItemIdx", "e", "id", "result", "PageDown", "nextFocusableItemIdx", "ArrowDown", "indexOfSelectedItem", "startIdx", "keyboardNavigation", "ignoreFocus", "setIgnoreFocus", "value", "handleFocus", "selectedItemIdx", "hasSelection", "navigateChildItems", "PageUp", "handleKeyDown", "isNavigationKey", "isCharacterKey", "listProps", "sourceTarget", "destTarget", "import_core", "import_react", "NO_SELECTION_HANDLERS", "defaultSelectionKeys", "isSelectable", "item", "byItemIndex", "i1", "i2", "_a", "_b", "useSelection", "defaultSelected", "disableSelection", "highlightedIdx", "indexPositions", "onSelect", "onSelectionChange", "selectedProp", "selectionStrategy", "selectionKeys", "defaultSelectionKeys", "tabToSelect", "isDeselectable", "isMultipleSelect", "isExtendedSelect", "lastActive", "isSelectionEvent", "evt", "emptyValue", "selected", "setSelected", "isItemSelected", "item", "selectDefault", "selectDeselectable", "selectMultiple", "nextItems", "i", "byItemIndex", "selectRange", "idx", "preserveExistingSelection", "currentSelection", "lastSelectedItem", "lastSelectedItemIndex", "startRegion", "endRegion", "rangeSelection", "selectItemAtIndex", "rangeSelect", "newSelected", "handleKeyDown", "isSelectable", "handleKeyboardNavigation", "currentIndex", "handleClick", "selectionIsDisallowed", "NO_SELECTION_HANDLERS", "import_react", "useTypeahead", "disableTypeToSelect", "highlightedIdx", "highlightItemAtIndex", "typeToNavigate", "items", "applyIncrementalSearch", "keyDownTimer", "searchChars", "startIdx", "applySearch", "intermediateSearch", "regex", "idx", "label", "i", "handleKeyDown", "e", "searchInProgress", "isCharacterKey", "Space", "import_react", "import_react", "HeightOnly", "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", "import_core", "HeightOnly", "HeightWithScroll", "EMPTY_ARRAY", "ObservedDimensions", "getObservedDimensions", "containerOnly", "NULL_REF", "getItemTop", "element", "offsetContainer", "transform", "pos", "offsetParent", "top", "useViewportTracking", "containerRef", "contentRef", "highlightedIdx", "indexPositions", "stickyHeaders", "scrolling", "viewport", "scrollTo", "scrollPos", "scrollToStart", "scrollToEnd", "scrollIntoViewIfNeeded", "item", "el", "viewportHeight", "targetEl", "headerHeight", "itemTop", "itemHeight", "scrollTop", "viewportStart", "viewportEnd", "newScrollTop", "height", "contentHeight", "firstItem", "lastItem", "onContainerResize", "scrollHeight", "onContentResize", "containerDimensions", "contentDimensions", "useResizeObserver", "import_react", "useList", "allowDragDrop", "collapsibleHeaders", "dataHook", "containerRef", "contentRef", "defaultHighlightedIndex", "defaultSelected", "disabled", "disableAriaActiveDescendant", "disableHighlightOnFocus", "disableTypeToSelect", "highlightedIndexProp", "id", "label", "listHandlersProp", "onHighlight", "onKeyboardNavigation", "onKeyDown", "onMoveListItem", "onSelect", "onSelectionChange", "restoreLastFocus", "selected", "selectionStrategy", "selectionKeys", "stickyHeaders", "tabToSelect", "viewportRange", "selectedByIndexRef", "lastSelection", "handleKeyboardNavigation", "evt", "nextIndex", "_a", "_b", "selectionHook", "handleSelect", "selectedItem", "handleSelectionChange", "s", "highlightedIndex", "navigationKeyDown", "navigationMouseMove", "navigationControlProps", "setHighlightedIndex", "keyboardHook", "useKeyboardNavigation", "collapsibleHook", "useCollapsibleGroups", "handleDragStart", "useSelection", "adjustIndex", "item", "fromIndex", "toIndex", "index", "reorderSelectedIndices", "handleDrop", "hasSelection", "handleDropSettle", "setSelected", "selectedByIndex", "postDropSelected", "i", "onMouseDown", "isDragging", "isDragDropScrolling", "dragDropHook", "useDragDropNext", "typeaheadOnKeyDown", "useTypeahead", "handleKeyDown", "_c", "isViewportScrolling", "scrollIntoView", "useViewportTracking", "isScrolling", "handleMouseMove", "idx", "closestListItemIndex", "getActiveDescendant", "listControlProps", "listHandlers", "import_core", "import_react", "getContentHeight", "itemCount", "itemHeight", "itemGapSize", "useListHeight", "borderless", "displayedItemCount", "getItemHeight", "height", "itemHeightProp", "rootRef", "rowHeightRef", "measuredItemHeight", "setMeasuredItemHeight", "clientHeight", "setClientHeight", "contentHeight", "listHeight", "result", "preferredItemCount", "total", "_", "index", "handleRowHeight", "useResizeObserver", "HeightOnly", "import_core", "import_react", "getRange", "scrollPos", "height", "itemCount", "itemHeight", "viewportRowCount", "from", "to", "useScrollPosition", "listHeight", "listItemCount", "listItemGapSize", "listItemHeight", "onViewportScroll", "firstVisibleRowRef", "lastVisibleRowRef", "scrollPosRef", "range", "viewportRange", "setViewportRange", "e", "scrollTop", "import_jsx_runtime", "import_react", "defaultEmptyMessage", "classBase", "List", "ListItem", "ListPlaceholder", "allowDragDrop", "borderless", "children", "className", "collapsibleHeaders", "defaultHighlightedIndex", "defaultSelected", "listDisabled", "disableFocus", "disableTypeToSelect", "displayedItemCount", "emptyMessage", "focusVisibleProp", "getItemHeightProp", "getItemId", "height", "highlightedIndexProp", "idProp", "itemGapSize", "itemHeightProp", "itemTextHighlightPattern", "itemToString", "listHandlersProp", "maxHeight", "maxWidth", "minHeight", "minWidth", "onMoveListItem", "onSelect", "onSelectionChange", "onHighlight", "restoreLastFocus", "selectedProp", "selectionStrategy", "checkable", "scrollingApiRef", "selectionKeys", "showEmptyMessage", "source", "styleProp", "stickyHeaders", "tabToSelect", "width", "htmlAttributes", "forwardedRef", "id", "rootRef", "contentRef", "rowHeightProxyRef", "collectionHook", "useCollectionItems", "listClientHeight", "listHeight", "listItemHeight", "useListHeight", "onVerticalScroll", "viewportRange", "useScrollPosition", "draggable", "draggedItemIndex", "dropIndicator", "focusVisible", "highlightedIndex", "listControlProps", "listHandlers", "listItemHeaderHandlers", "scrollIntoView", "selected", "useList", "useImperativeScrollingAPI", "appliedFocusVisible", "createHeader", "idx", "headerId", "title", "expanded", "header", "cx", "getItemHeight", "renderCollectionItem", "list", "item", "_a", "_b", "disabled", "value", "itemId", "label", "isChildItem", "listItemProps", "isSelected", "addGroup", "items", "count", "childItems", "renderCollectionItems", "end", "listItems", "renderEmpty", "renderContent", "itemsToRender", "contentHeight", "sizeStyles", "LIST_FOCUS_VISIBLE", "ListItemProxy", "import_core", "r", "f", "clsx", "import_react", "import_react", "KeySet", "from", "to", "keyValue", "rowIndex", "size", "nextKeyValue", "byKey", "k1", "k2", "renderBuffer", "useVirtualization", "data", "listItemGapSize", "listItemHeight", "viewportRange", "keys", "KeySet", "rowHeightWithGap", "lo", "hi", "value", "idx", "import_jsx_runtime", "defaultEmptyMessage", "withBaseName", "ListItem", "VirtualizedList", "borderless", "children", "className", "collapsibleHeaders", "defaultHighlightedIdx", "defaultSelected", "listDisabled", "disableFocus", "disableTypeToSelect", "displayedItemCount", "emptyMessage", "getItemHeight", "getItemId", "height", "highlightedIdxProp", "idProp", "itemGapSize", "itemHeightProp", "itemTextHighlightPattern", "itemToString", "maxHeight", "maxWidth", "minHeight", "minWidth", "onSelect", "onSelectionChange", "onViewportScroll", "onHighlight", "restoreLastFocus", "selectedProp", "selectionStrategy", "scrollingApiRef", "selectionKeys", "showEmptyMessage", "source", "styleProp", "stickyHeaders", "tabToSelect", "width", "htmlAttributes", "forwardedRef", "id", "rootRef", "rowHeightProxyRef", "collectionHook", "useCollectionItems", "contentHeight", "listItemHeight", "listHeight", "useListHeight", "focusVisible", "highlightedIndex", "listControlProps", "listHandlers", "scrollIntoView", "selected", "useList", "onVerticalScroll", "viewportRange", "useScrollPosition", "data", "useVirtualization", "useImperativeScrollingAPI", "addItem", "list", "row", "idx", "key", "offset", "pos", "item", "index", "clsx", "isSelected", "renderItems", "end", "listItems", "renderEmpty", "renderContent", "sizeStyles", "ListItemProxy", "import_vuu_layout", "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", "className", "cx", "style", "tabs", "child", "index", "tabId", "closeable", "editable", "showMenuButton", "selected", "React", "import_core", "import_classnames", "import_react", "import_react", "import_classnames", "import_jsx_runtime", "classBase", "TabMenu", "allowClose", "allowRename", "location", "onMenuAction", "onMenuClose", "index", "menuBuilder", "menuOptions", "_location", "options", "menuItems", "renameCommand", "closeCommand", "PopupMenu", "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", "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", "import_classnames", "import_react", "import_react", "import_classnames", "import_jsx_runtime", "DEFAULT_DENSITY", "DEFAULT_THEME", "DEFAULT_THEME_MODE", "ThemeContext", "DEFAULT_THEME_ATTRIBUTES", "useThemeAttributes", "context", "createThemedChildren", "children", "theme", "themeMode", "density", "_a", "cx", "ThemeProvider", "applyThemeClasses", "themeProp", "themeModeProp", "densityProp", "_b", "_c", "inheritedDensity", "inheritedThemeMode", "inheritedTheme", "themedChildren", "import_jsx_runtime", "classBase", "LeftNav", "path", "onResize", "open", "sizeCollapsed", "sizeContent", "sizeExpanded", "styleProp", "htmlAttributes", "dispatch", "openRef", "navState", "setNavState", "themeClass", "useThemeAttributes", "getWidthAndStatus", "isOpen", "tabIndex", "handleTabSelection", "value", "width", "navStatus", "toggleSize", "activeTabIndex", "style", "cx", "VuuLogo", "Tabstrip", "Tab", "import_react", "import_core", "import_jsx_runtime", "classBase", "LoginPanel", "requirePassword", "onSubmit", "username", "setUserName", "password", "setPassword", "login", "handleUsername", "evt", "handlePassword", "dataIsValid", "import_vuu_utils", "getAuthModeFromCookies", "mode", "getAuthDetailsFromCookies", "username", "token", "getDefaultLoginUrl", "redirectToLogin", "loginUrl", "logout", "import_react", "import_classnames", "import_core", "import_vuu_data", "import_vuu_utils", "import_jsx_runtime", "classBase", "getField", "fields", "name", "field", "f", "getFieldNameAndValue", "evt", "value", "Status", "getTypedValue", "type", "throwIfUndefined", "typedValue", "getDataSource", "dataSource", "schema", "col", "SessionEditingForm", "className", "keyField", "dataSourceProp", "idProp", "onClose", "htmlAttributes", "values", "setValues", "errorMessage", "setErrorMessage", "formContentRef", "initialDataRef", "dataStatusRef", "applyServerData", "data", "columnMap", "column", "ds", "message", "id", "handleChange", "newValues", "notUpdated", "handleBlur", "rowKey", "applyAction", "action", "handleSubmit", "response", "handleKeyDown", "handleCancel", "getFormControl", "_a", "firstInput", "isDirty", "cx", "import_vuu_data", "import_classnames", "import_react", "import_react", "loadLocalConfig", "saveUrl", "user", "id", "resolve", "reject", "data", "layout", "saveLocalConfig", "loadRemoteConfig", "saveUrl", "user", "id", "resolve", "reject", "response", "saveRemoteConfig", "data", "useLayoutConfig", "saveLocation", "saveUrl", "user", "defaultLayout", "layout", "_setLayout", "usingRemote", "loadConfig", "loadRemoteConfig", "loadLocalConfig", "saveConfig", "saveRemoteConfig", "saveLocalConfig", "load", "id", "saveData", "data", "loadLayoutById", "import_vuu_layout", "import_react", "import_core", "import_lab", "import_icons", "import_vuu_utils", "import_lab", "import_core", "import_icons", "import_react", "getLayoutHistory", "user", "response", "import_jsx_runtime", "byLastUpdate", "l1", "l2", "HistoryListItem", "props", "UserPanel", "loginUrl", "onNavigate", "user", "layoutId", "forwardedRef", "history", "setHistory", "getHistory", "sortedHistory", "getLayoutHistory", "item", "id", "lastUpdate", "handleHisorySelected", "evt", "selected", "handleLogout", "logout", "i", "import_jsx_runtime", "UserProfile", "layoutId", "loginUrl", "onNavigate", "user", "UserPanel", "id", "import_classnames", "import_core", "import_react", "import_jsx_runtime", "classBase", "ThemeSwitch", "classNameProp", "defaultModeProp", "modeProp", "onChange", "htmlAttributes", "mode", "setMode", "handleChangeSecondary", "evt", "value", "className", "cx", "import_classnames", "import_jsx_runtime", "classBase", "AppHeader", "classNameProp", "layoutId", "loginUrl", "onNavigate", "onSwitchTheme", "themeMode", "user", "htmlAttributes", "className", "cx", "handleSwitchTheme", "mode", "ThemeSwitch", "UserProfile", "import_vuu_utils", "import_core", "import_classnames", "import_react", "import_vuu_layout", "import_jsx_runtime", "classBase", "ContextPanel", "classNameProp", "expanded", "contentProp", "overlay", "title", "dispatchLayoutAction", "handleClose", "className", "cx", "content", "import_vuu_layout", "import_jsx_runtime", "useFullHeightLeftPanel", "appHeader", "leftSidePanel", "ContextPanel", "import_vuu_layout", "import_react", "import_jsx_runtime", "useInlayLeftPanel", "appHeader", "leftSidePanel", "paletteView", "open", "setOpen", "handleDrawerClick", "e", "_a", "target", "getDrawers", "drawers", "useShellLayout", "leftSidePanelLayout", "props", "useInlayLeftPanel", "useFullHeightLeftPanel", "import_jsx_runtime", "error", "warningLayout", "Shell", "children", "classNameProp", "defaultLayout", "leftSidePanel", "leftSidePanelLayout", "loginUrl", "saveLocation", "saveUrl", "serverUrl", "user", "htmlAttributes", "rootRef", "layoutId", "layout", "saveLayoutConfig", "loadLayoutById", "useLayoutConfig", "handleLayoutChange", "handleSwitchTheme", "mode", "handleNavigate", "id", "themeClass", "densityClass", "dataMode", "useThemeAttributes", "className", "cx", "shellLayout", "useShellLayout", "AppHeader", "ThemeProvider", "import_react", "import_jsx_runtime", "defaultConfig", "ShellContext", "Provider", "children", "context", "inheritedContext", "mergedContext", "ShellContextProvider", "value", "useShellContext"]
7
7
  }