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

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/esm/index.js.map CHANGED
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/vuu-shell/src/app-header/AppHeader.tsx", "../../../packages/vuu-shell/src/login/LoginPanel.tsx", "../../../packages/vuu-shell/src/login/VuuLogo.tsx", "../../../packages/vuu-shell/src/login/login-utils.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/FeatureErrorBoundary.tsx", "../../../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-shell/src/layout-management/LayoutList.tsx", "../../../packages/vuu-shell/src/layout-management/useLayoutManager.tsx", "../../../packages/vuu-popups/src/dialog/Dialog.tsx", "../../../packages/vuu-popups/src/portal/Portal.tsx", "../../../packages/vuu-popups/src/dialog-header/DialogHeader.tsx", "../../../packages/vuu-popups/src/dialog/useDialog.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/portal-deprecated/render-portal.tsx", "../../../packages/vuu-popups/src/popup/Popup.tsx", "../../../packages/vuu-popups/src/popup/useAnchoredPosition.ts", "../../../packages/vuu-popups/src/popup-menu/PopupMenu.tsx", "../../../packages/vuu-popups/src/prompt/Prompt.tsx", "../../../packages/vuu-popups/src/tooltip/useAnchoredPosition.ts", "../../../packages/vuu-popups/src/tooltip/Tooltip.tsx", "../../../packages/vuu-popups/src/tooltip/useTooltip.ts", "../../../packages/vuu-popups/src/notifications/NotificationsProvider.tsx", "../../../packages/vuu-shell/src/left-nav/LeftNav.tsx", "../../../packages/vuu-shell/src/feature-list/FeatureList.tsx", "../../../packages/vuu-shell/src/theme-provider/ThemeProvider.tsx", "../../../packages/vuu-shell/src/session-editing-form/SessionEditingForm.tsx", "../../../packages/vuu-shell/src/shell.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/side-panel/SidePanel.tsx", "../../../packages/vuu-shell/src/shell-layouts/useInlayLeftPanel.tsx", "../../../packages/vuu-shell/src/shell-layouts/useShellLayout.ts", "../../../packages/vuu-shell/src/shellTypes.ts", "../../../packages/vuu-shell/src/ShellContextProvider.tsx", "../../../packages/vuu-shell/src/theme-switch/ThemeSwitch.tsx"],
4
4
  "sourcesContent": ["import { HTMLAttributes, useCallback } from \"react\";\nimport { VuuUser } from \"../shell\";\n// import { UserProfile } from \"../user-profile\";\n// import { ThemeSwitch } from \"../theme-switch\";\nimport { ThemeMode } from \"../theme-provider\";\nimport cx from \"classnames\";\nimport { Toolbar } from \"@vuu-ui/vuu-layout\";\nimport { logout } from \"../login\";\n\nimport \"./AppHeader.css\";\nimport { Button } from \"@salt-ds/core\";\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\n const handleLogout = useCallback(() => {\n logout(loginUrl);\n }, [loginUrl]);\n\n return (\n <Toolbar\n alignItems=\"end\"\n className={className}\n height={36}\n showSeparators\n {...htmlAttributes}\n >\n <Button className={`${classBase}-menuItem`} variant=\"secondary\">\n Help\n </Button>\n <Button className={`${classBase}-menuItem`} variant=\"secondary\">\n History <span data-icon=\"history\" />\n </Button>\n <Button className={`${classBase}-menuItem`} variant=\"secondary\">\n View <span data-icon=\"settings\" />\n </Button>\n <Button\n className={`${classBase}-menuItem`}\n onClick={handleLogout}\n variant=\"secondary\"\n >\n Log out\n </Button>\n {/* <ThemeSwitch\n data-align=\"right\"\n defaultMode={themeMode}\n onChange={handleSwitchTheme}\n /> */}\n {/* <UserProfile\n layoutId={layoutId}\n loginUrl={loginUrl}\n onNavigate={onNavigate}\n user={user}\n /> */}\n </Toolbar>\n );\n};\n", "import {\n ChangeEvent,\n HTMLAttributes,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { Button, FormField, FormFieldLabel } from \"@salt-ds/core\";\nimport { VuuInput } from \"@vuu-ui/vuu-ui-controls\";\nimport { VuuLogo } from \"./VuuLogo\";\nimport cx from \"classnames\";\n\nimport \"./LoginPanel.css\";\n\nconst classBase = \"vuuLoginPanel\";\n\nexport interface LoginPanelProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onSubmit\"> {\n appName?: string;\n onSubmit: (username: string, password?: string) => void;\n requirePassword?: boolean;\n}\n\nexport const LoginPanel = ({\n appName = \"Demo App\",\n className,\n requirePassword = true,\n onSubmit,\n ...htmlAttributes\n}: LoginPanelProps) => {\n const [username, setUserName] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const inputRef = useRef<HTMLInputElement>(null);\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 handleCommitName = useCallback(() => {\n if (!requirePassword) {\n onSubmit(username);\n }\n }, [onSubmit, requirePassword, username]);\n\n const handleCommitPassword = useCallback(() => {\n if (username) {\n onSubmit(username, password);\n }\n }, [onSubmit, password, username]);\n\n const dataIsValid =\n username.trim() !== \"\" &&\n (requirePassword === false || password.trim() !== \"\");\n\n useEffect(() => {\n console.log(`inputRef`, {\n input: inputRef.current,\n });\n inputRef.current?.focus();\n }, []);\n\n return (\n <div {...htmlAttributes} className={cx(classBase, className)}>\n <div className={`${classBase}-branding`}>\n <VuuLogo />\n <div className={`${classBase}-appName`}>{appName}</div>\n </div>\n <div className={`${classBase}-form`}>\n <div className={`${classBase}-title`}>Welcome Back</div>\n <FormField>\n <FormFieldLabel>Username</FormFieldLabel>\n <VuuInput\n value={username}\n id=\"text-username\"\n inputRef={inputRef}\n onChange={handleUsername}\n onCommit={handleCommitName}\n />\n </FormField>\n\n {requirePassword ? (\n <FormField>\n <FormFieldLabel>Password</FormFieldLabel>\n <VuuInput\n className={`${classBase}-password`}\n inputProps={{\n type: \"password\",\n }}\n value={password}\n id=\"text-password\"\n onChange={handlePassword}\n onCommit={handleCommitPassword}\n endAdornment={\n <span data-icon=\"eye\" style={{ cursor: \"pointer\" }} />\n }\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 </div>\n );\n};\n", "import { useMemo } from \"react\";\n\nexport const VuuLogo = () => {\n const logo = useMemo(\n () => (\n <svg\n width=\"184\"\n height=\"90\"\n viewBox=\"0 0 184 90\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_1173_59965)\">\n <path\n d=\"M77.0775 31.1019L69.4572 15.1795L66.3997 13.7093L47.6353 44.165L75.7224 61.2361L81.8124 51.2694L77.0775 31.1019Z\"\n fill=\"url(#paint0_linear_1173_59965)\"\n />\n <path\n d=\"M82.4101 49.7431C81.0488 51.8314 79.1993 53.648 76.8897 54.9809C74.2954 56.4792 71.4601 57.194 68.6623 57.194C63.3422 57.194 58.1597 54.6188 55.0209 49.971L30.5358 7.8193L30.5232 7.84116C25.8791 0.274825 16.0118 -2.26289 8.27258 2.21011C0.411306 6.74866 -2.26753 16.7872 2.28587 24.625L35.5054 81.8189C36.9856 84.3691 39.0542 86.3668 41.4358 87.7527C41.4545 87.7652 41.4733 87.7777 41.4921 87.7902C41.5015 87.7964 41.514 87.8027 41.5234 87.8089C42.6312 88.4457 43.8079 88.942 45.0253 89.3072C45.116 89.3353 45.2099 89.3634 45.3007 89.3883C45.7388 89.5101 46.1801 89.6193 46.6276 89.7067C46.7121 89.7223 46.7966 89.7317 46.8811 89.7473C47.241 89.8097 47.604 89.8628 47.967 89.9003C48.111 89.9159 48.2549 89.9315 48.3989 89.9408C48.8151 89.9752 49.2313 89.997 49.6507 90.0001C49.6726 90.0001 49.6945 90.0001 49.7132 90.0001C49.7195 90.0001 49.7226 90.0001 49.7289 90.0001C49.7352 90.0001 49.7383 90.0001 49.7445 90.0001C50.1983 90.0001 50.6552 89.9752 51.109 89.9377C51.2123 89.9283 51.3155 89.919 51.422 89.9065C51.8663 89.8597 52.3107 89.8004 52.7551 89.7192C52.7614 89.7192 52.7676 89.7192 52.7739 89.7192C53.2621 89.6287 53.7503 89.5101 54.2322 89.3727C54.2635 89.3634 54.2917 89.354 54.323 89.3446C55.024 89.1418 55.7156 88.8889 56.3978 88.5861C56.4104 88.5799 56.426 88.5736 56.4385 88.5674C56.958 88.3364 57.4712 88.0836 57.9751 87.7933C58.4852 87.4999 58.9703 87.1815 59.4334 86.8413C59.8371 86.5478 60.2252 86.2357 60.6039 85.9048C61.0639 85.499 61.4989 85.0745 61.9026 84.6282C62.2062 84.2942 62.4972 83.9446 62.7757 83.5825C62.8665 83.4639 62.951 83.3421 63.0355 83.2235C63.2264 82.9613 63.4079 82.6929 63.5831 82.4182C63.6739 82.2746 63.7646 82.1342 63.8523 81.9906C63.8867 81.9344 63.9242 81.8813 63.9555 81.8251L82.5854 49.7525H82.4039L82.4101 49.7431Z\"\n fill=\"url(#paint1_linear_1173_59965)\"\n />\n <path\n d=\"M82.8264 32.8436L81.4181 30.4464L75.3375 19.1687L72.5178 14.3929C71.9858 13.1225 70.7309 12.2266 69.26 12.2266C67.3104 12.2266 65.7331 13.8029 65.7331 15.7445C65.7331 16.4031 65.924 17.0086 66.2401 17.5362L66.2025 17.5611L77.1557 36.1617C78.4764 38.4372 78.83 41.0873 78.1509 43.6281C77.4718 46.169 75.8445 48.2915 73.5631 49.6119C72.0609 50.4797 70.3553 50.9385 68.6341 50.9385C65.1166 50.9385 61.84 49.0563 60.0812 46.0285L44.3368 19.2654H44.3681L37.7179 7.81917L37.7054 7.84102C37.5896 7.65061 37.455 7.47893 37.333 7.29477L37.1452 6.97326C37.1452 6.97326 37.1296 6.98262 37.1233 6.98887C34.0001 2.55332 29.0054 0.0780356 23.8512 0.0187285V0H15.3515V0.0436999C21.2881 -0.368328 27.2247 2.46593 30.5232 7.84102L30.5357 7.81917L55.0177 49.974C58.1566 54.6187 63.3422 57.197 68.6592 57.197C71.4569 57.197 74.2922 56.4853 76.8866 54.9839C79.1961 53.651 81.0425 51.8312 82.407 49.7461H82.5885L82.5259 49.8523C83.399 48.4695 84.0687 46.9462 84.5006 45.3231C85.6304 41.0904 85.042 36.6705 82.8201 32.8467L82.8264 32.8436Z\"\n fill=\"#F37880\"\n />\n <g opacity=\"0.86\">\n <path\n d=\"M66.1994 17.5642L77.1526 36.1648C78.4732 38.4403 78.8269 41.0904 78.1478 43.6313C77.7347 45.1795 76.9648 46.5716 75.9133 47.7234C77.2903 46.4686 78.2823 44.8486 78.7737 43.007C79.4527 40.4661 79.0991 37.816 77.7785 35.5405L66.8253 16.94L66.8628 16.915C66.5467 16.3875 66.3558 15.7819 66.3558 15.1233C66.3558 14.3117 66.6344 13.5657 67.0975 12.9695C66.2651 13.6125 65.7299 14.6176 65.7299 15.7476C65.7299 16.4062 65.9208 17.0118 66.2369 17.5393L66.1994 17.5642Z\"\n fill=\"white\"\n />\n <path\n d=\"M82.5382 49.8335L82.5291 49.8487C82.5291 49.8487 82.5352 49.8365 82.5413 49.8304C82.5413 49.8304 82.5413 49.8304 82.5413 49.8335H82.5382Z\"\n fill=\"white\"\n />\n <path\n d=\"M77.5156 54.3596C74.9213 55.8579 72.0859 56.5727 69.2882 56.5727C63.9681 56.5727 58.7856 53.9975 55.6467 49.3497L31.1616 7.19488L31.1491 7.21673C28.9053 3.56154 25.4441 1.08626 21.5917 0H15.3515V0.0436999C21.2881 -0.368328 27.2247 2.46593 30.5232 7.84102L30.5357 7.81917L55.0177 49.974C58.1566 54.6187 63.3422 57.197 68.6592 57.197C71.4569 57.197 74.2922 56.4853 76.8866 54.9839C78.2698 54.1848 79.4809 53.2109 80.5293 52.1122C79.6311 52.9581 78.6266 53.7166 77.5125 54.3596H77.5156Z\"\n fill=\"white\"\n />\n </g>\n </g>\n <path\n d=\"M117.046 58.661C116.362 58.661 115.792 58.509 115.336 58.205C114.906 57.8757 114.551 57.3943 114.272 56.761L104.354 34.493C104.076 33.8597 104 33.3023 104.126 32.821C104.253 32.3397 104.519 31.9597 104.924 31.681C105.33 31.4023 105.811 31.263 106.368 31.263C107.103 31.263 107.648 31.4277 108.002 31.757C108.382 32.061 108.699 32.5297 108.952 33.163L117.958 54.025H116.324L125.292 33.125C125.571 32.517 125.9 32.061 126.28 31.757C126.66 31.4277 127.192 31.263 127.876 31.263C128.434 31.263 128.89 31.4023 129.244 31.681C129.624 31.9597 129.865 32.3397 129.966 32.821C130.068 33.3023 129.979 33.8597 129.7 34.493L119.782 56.761C119.504 57.3943 119.149 57.8757 118.718 58.205C118.313 58.509 117.756 58.661 117.046 58.661Z\"\n fill=\"white\"\n />\n <path\n d=\"M144.63 58.737C142.781 58.737 141.147 58.4963 139.728 58.015C138.335 57.5337 137.157 56.8243 136.194 55.887C135.232 54.9243 134.51 53.7337 134.028 52.315C133.547 50.8963 133.306 49.2497 133.306 47.375V33.733C133.306 32.897 133.509 32.2763 133.914 31.871C134.345 31.4657 134.953 31.263 135.738 31.263C136.524 31.263 137.119 31.4657 137.524 31.871C137.955 32.2763 138.17 32.897 138.17 33.733V47.337C138.17 49.7437 138.715 51.555 139.804 52.771C140.919 53.9617 142.528 54.557 144.63 54.557C146.733 54.557 148.329 53.9617 149.418 52.771C150.508 51.555 151.052 49.7437 151.052 47.337V33.733C151.052 32.897 151.255 32.2763 151.66 31.871C152.091 31.4657 152.699 31.263 153.484 31.263C154.244 31.263 154.827 31.4657 155.232 31.871C155.663 32.2763 155.878 32.897 155.878 33.733V47.375C155.878 49.8577 155.448 51.9477 154.586 53.645C153.75 55.3423 152.496 56.6217 150.824 57.483C149.152 58.319 147.088 58.737 144.63 58.737Z\"\n fill=\"white\"\n />\n <path\n d=\"M172.685 58.737C170.836 58.737 169.202 58.4963 167.783 58.015C166.39 57.5337 165.212 56.8243 164.249 55.887C163.286 54.9243 162.564 53.7337 162.083 52.315C161.602 50.8963 161.361 49.2497 161.361 47.375V33.733C161.361 32.897 161.564 32.2763 161.969 31.871C162.4 31.4657 163.008 31.263 163.793 31.263C164.578 31.263 165.174 31.4657 165.579 31.871C166.01 32.2763 166.225 32.897 166.225 33.733V47.337C166.225 49.7437 166.77 51.555 167.859 52.771C168.974 53.9617 170.582 54.557 172.685 54.557C174.788 54.557 176.384 53.9617 177.473 52.771C178.562 51.555 179.107 49.7437 179.107 47.337V33.733C179.107 32.897 179.31 32.2763 179.715 31.871C180.146 31.4657 180.754 31.263 181.539 31.263C182.299 31.263 182.882 31.4657 183.287 31.871C183.718 32.2763 183.933 32.897 183.933 33.733V47.375C183.933 49.8577 183.502 51.9477 182.641 53.645C181.805 55.3423 180.551 56.6217 178.879 57.483C177.207 58.319 175.142 58.737 172.685 58.737Z\"\n fill=\"white\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_1173_59965\"\n x1=\"47.6353\"\n y1=\"37.4727\"\n x2=\"81.8124\"\n y2=\"37.4727\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#4906A5\" />\n <stop offset=\"1\" stopColor=\"#D3423A\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_1173_59965\"\n x1=\"0.0670626\"\n y1=\"45.0017\"\n x2=\"82.5916\"\n y2=\"45.0017\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#7C06A5\" />\n <stop offset=\"1\" stopColor=\"#D3423A\" />\n </linearGradient>\n <clipPath id=\"clip0_1173_59965\">\n <rect\n width=\"85\"\n height=\"90\"\n fill=\"white\"\n transform=\"translate(0.0670471)\"\n />\n </clipPath>\n </defs>\n </svg>\n ),\n []\n );\n\n return logo;\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 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, ViewProps } from \"@vuu-ui/vuu-layout\";\nimport { FeatureErrorBoundary } from \"./FeatureErrorBoundary\";\nimport { Loader } from \"./Loader\";\nimport { importCSS } from \"./css-module-loader\";\n\n/**\n * Ensure we never lazy load the same component more than once\n */\nconst componentsMap = new Map<string, ReturnType<typeof React.lazy>>();\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 const lazyFeature = componentsMap.get(url);\n\n if (!lazyFeature) {\n throw Error(`Unable to load Lazy Feature at url ${url}`);\n } else {\n return lazyFeature;\n }\n};\n\nexport interface FeatureProps<P extends object | undefined = any> {\n /**\n props that will be passed to the lazily loaded component.\n */\n ComponentProps?: P;\n ViewProps?: Partial<Pick<ViewProps, \"closeable\" | \"header\">>;\n css?: string;\n height?: number;\n title?: string;\n /** \n The url of javascript bundle to lazily load. Bundle must provide a default export\n and that export must be a React component.\n */\n url: string;\n width?: number;\n}\n\nfunction RawFeature<Params extends object | undefined>({\n url,\n css,\n ComponentProps: params,\n ...props\n}: FeatureProps<Params>) {\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 <FeatureErrorBoundary url={url}>\n <Suspense fallback={<Loader />}>\n <LazyFeature {...props} {...params} />\n </Suspense>\n </FeatureErrorBoundary>\n );\n}\n\n/**\n Feature is a wrapper around React Lazy Loading. It will load a component\n from the given url. That url must resolve to a javascript bundle with a\n single default export. That export must be a React component.\n */\nexport const Feature = React.memo(RawFeature);\nFeature.displayName = \"Feature\";\nregisterComponent(\"Feature\", Feature, \"view\");\n", "import React, { ErrorInfo, ReactNode } from \"react\";\nimport { FeatureProps } from \"./Feature\";\n\nexport interface FeatureErrorBoundaryProps extends FeatureProps {\n children: ReactNode;\n}\n\nexport class FeatureErrorBoundary extends React.Component<\n FeatureErrorBoundaryProps,\n any\n> {\n constructor(props: FeatureErrorBoundaryProps) {\n super(props);\n this.state = { errorMessage: null };\n }\n\n static getDerivedStateFromError(error: Error) {\n // Update state so the next render will show the fallback UI.\n return { errorMessage: error.message };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n // You can also log the error to an error reporting service\n console.log(`error creating component at ${this.props.url}`);\n console.log(error, errorInfo);\n }\n\n render() {\n if (this.state.errorMessage) {\n return (\n <>\n <h1>An error occured while creating component.</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\"></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 { ChangeEvent, useEffect, useState } from \"react\";\nimport { Input, Button, FormField, FormFieldLabel, Text } from \"@salt-ds/core\";\nimport { ComboBox, Checkbox, RadioButton } from \"@vuu-ui/vuu-ui-controls\";\nimport { takeScreenshot } from \"@vuu-ui/vuu-utils\";\nimport { LayoutMetadataDto } from \"./layoutTypes\";\n\nimport \"./SaveLayoutPanel.css\";\n\nconst classBase = \"saveLayoutPanel\";\nconst formField = `${classBase}-formField`;\n\nconst groups = [\"Group 1\", \"Group 2\", \"Group 3\", \"Group 4\", \"Group 5\"];\n\nconst checkboxValues = [\"Value 1\", \"Value 2\", \"Value 3\"];\n\nconst radioValues = [\"Value 1\", \"Value 2\", \"Value 3\"] as const;\n\ntype RadioValue = (typeof radioValues)[number];\n\ntype SaveLayoutPanelProps = {\n componentId?: string;\n defaultTitle?: string;\n onCancel: () => void;\n onSave: (layoutMetadata: LayoutMetadataDto) => void;\n};\n\nexport const SaveLayoutPanel = (props: SaveLayoutPanelProps) => {\n const { defaultTitle = \"\", onCancel, onSave, componentId } = props;\n\n const [layoutName, setLayoutName] = useState<string>(defaultTitle);\n const [group, setGroup] = useState<string>(\"\");\n const [checkValues, setCheckValues] = useState<string[]>([]);\n const [radioValue, setRadioValue] = useState<RadioValue>(radioValues[0]);\n const [screenshot, setScreenshot] = useState<string | undefined>();\n\n useEffect(() => {\n if (componentId) {\n takeScreenshot(document.getElementById(componentId) as HTMLElement).then(\n (screenshot) => setScreenshot(screenshot)\n );\n }\n }, [componentId]);\n\n const handleSubmit = () => {\n onSave({\n name: layoutName,\n group,\n screenshot: screenshot ?? \"\",\n user: \"User\",\n });\n };\n\n return (\n <div className={`${classBase}-panelContainer`}>\n <div className={`${classBase}-panelContent`}>\n <div className={`${classBase}-formContainer`}>\n <FormField className={formField}>\n <FormFieldLabel>Group</FormFieldLabel>\n <ComboBox\n source={groups}\n allowFreeText\n InputProps={{\n inputProps: {\n className: `${classBase}-inputText`,\n placeholder: \"Select Group or Enter New Name\",\n onChange: (event: ChangeEvent<HTMLInputElement>) =>\n setGroup(event.target.value),\n },\n }}\n width=\"100%\"\n onSelectionChange={(_, value) => setGroup(value || \"\")}\n />\n </FormField>\n <FormField className={formField}>\n <FormFieldLabel>Layout Name</FormFieldLabel>\n <Input\n inputProps={{\n className: `${classBase}-inputText`,\n placeholder: \"Enter Layout Name\",\n }}\n onChange={(event: ChangeEvent<HTMLInputElement>) =>\n setLayoutName(event.target.value)\n }\n value={layoutName}\n />\n </FormField>\n <FormField className={formField}>\n <FormFieldLabel>Some Layout Setting</FormFieldLabel>\n <div className={`${classBase}-settingsGroup`}>\n {checkboxValues.map((value, i) => (\n <Checkbox\n key={i}\n onToggle={() =>\n setCheckValues((prev) =>\n prev.includes(value)\n ? prev.filter((entry) => entry !== value)\n : [...prev, value]\n )\n }\n checked={checkValues.includes(value)}\n label={value}\n />\n ))}\n </div>\n </FormField>\n <FormField className={formField}>\n <FormFieldLabel>Some Layout Setting</FormFieldLabel>\n <div className={`${classBase}-settingsGroup`}>\n {radioValues.map((value, i) => (\n <RadioButton\n key={i}\n onClick={() => setRadioValue(value)}\n checked={radioValue === value}\n label={value}\n groupName=\"radioGroup\"\n />\n ))}\n </div>\n </FormField>\n </div>\n <div className={`${classBase}-screenshotContainer`}>\n {screenshot ? (\n <img\n className={`${classBase}-screenshot`}\n src={screenshot}\n alt=\"screenshot of current layout\"\n />\n ) : (\n <Text className=\"screenshot\">No screenshot available</Text>\n )}\n </div>\n </div>\n <div className={`${classBase}-buttonsContainer`}>\n <Button className={`${classBase}-cancelButton`} onClick={onCancel}>\n Cancel\n </Button>\n <Button\n className={`${classBase}-saveButton`}\n onClick={handleSubmit}\n disabled={layoutName === \"\" || group === \"\"}\n >\n Save\n </Button>\n </div>\n </div>\n );\n};\n", "import { HTMLAttributes } from \"react\";\nimport { List } from \"@vuu-ui/vuu-ui-controls\";\nimport { LayoutMetadata } from \"./layoutTypes\";\nimport { useLayoutManager } from \"./useLayoutManager\";\n\nimport \"./LayoutList.css\";\n\ntype LayoutGroups = {\n [groupName: string]: LayoutMetadata[];\n};\n\nconst classBase = \"vuuLayoutList\";\n\nexport const LayoutsList = (props: HTMLAttributes<HTMLDivElement>) => {\n const { layoutMetadata, loadLayoutById } = useLayoutManager();\n\n const handleLoadLayout = (layoutId?: string) => {\n if (layoutId) {\n loadLayoutById(layoutId);\n }\n };\n\n const layoutsByGroup = layoutMetadata.reduce((acc: LayoutGroups, cur) => {\n if (acc[cur.group]) {\n return {\n ...acc,\n [cur.group]: [...acc[cur.group], cur],\n };\n }\n return {\n ...acc,\n [cur.group]: [cur],\n };\n }, {});\n\n return (\n <div className={classBase} {...props}>\n <div className={`${classBase}-header`}>My Layouts</div>\n <List<[string, LayoutMetadata[]]>\n height=\"auto\"\n source={Object.entries(layoutsByGroup)}\n ListItem={({ item }) => {\n if (!item) return <></>;\n const [groupName, layoutMetadata] = item;\n return (\n <>\n <div className={`${classBase}-groupName`}>{groupName}</div>\n {layoutMetadata.map((metadata) => (\n <div\n className={`${classBase}-layoutContainer`}\n key={metadata?.id}\n onClick={() => handleLoadLayout(metadata?.id)}\n >\n <img\n className={`${classBase}-screenshot`}\n src={metadata?.screenshot}\n />\n <div>\n <div className={`${classBase}-layoutName`}>\n {metadata?.name}\n </div>\n <div className={`${classBase}-layoutDetails`}>\n <div>{`${metadata?.user}, ${metadata?.created}`}</div>\n </div>\n </div>\n </div>\n ))}\n </>\n );\n }}\n />\n </div>\n );\n};\n", "import React, {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport {\n ApplicationJSON,\n ApplicationSettings,\n loadingApplicationJson,\n LayoutJSON,\n LayoutPersistenceManager,\n LocalLayoutPersistenceManager,\n RemoteLayoutPersistenceManager,\n resolveJSONPath,\n defaultApplicationJson,\n} from \"@vuu-ui/vuu-layout\";\nimport { NotificationLevel, useNotifications } from \"@vuu-ui/vuu-popups\";\nimport { LayoutMetadata, LayoutMetadataDto } from \"./layoutTypes\";\n\nlet _persistenceManager: LayoutPersistenceManager;\n\nconst getPersistenceManager = () => {\n if (_persistenceManager === undefined) {\n _persistenceManager = process.env.LOCAL\n ? new LocalLayoutPersistenceManager()\n : new RemoteLayoutPersistenceManager();\n }\n return _persistenceManager;\n};\n\nexport const LayoutManagementContext = React.createContext<{\n layoutMetadata: LayoutMetadata[];\n saveLayout: (n: LayoutMetadataDto) => void;\n applicationJson: ApplicationJSON;\n saveApplicationLayout: (layout: LayoutJSON) => void;\n saveApplicationSettings: (settings: ApplicationSettings) => void;\n loadLayoutById: (id: string) => void;\n}>({\n layoutMetadata: [],\n saveLayout: () => undefined,\n // The default Application JSON will be served if no LayoutManagementProvider\n applicationJson: defaultApplicationJson,\n saveApplicationLayout: () => undefined,\n saveApplicationSettings: () => undefined,\n loadLayoutById: () => undefined,\n});\n\ntype LayoutManagementProviderProps = {\n children: JSX.Element | JSX.Element[];\n};\n\nconst ensureLayoutHasTitle = (\n layout: LayoutJSON,\n layoutMetadata: LayoutMetadataDto\n) => {\n if (layout.props?.title !== undefined) {\n return layout;\n } else {\n return {\n ...layout,\n props: {\n ...layout.props,\n title: layoutMetadata.name,\n },\n };\n }\n};\n\nexport const LayoutManagementProvider = (\n props: LayoutManagementProviderProps\n) => {\n const [layoutMetadata, setLayoutMetadata] = useState<LayoutMetadata[]>([]);\n // TODO this default should probably be a loading state rather than the placeholder\n // It will be replaced as soon as the localStorage/remote layout is resolved\n const [, forceRefresh] = useState({});\n const { notify } = useNotifications();\n const applicationJSONRef = useRef<ApplicationJSON>(loadingApplicationJson);\n\n const setApplicationJSON = useCallback(\n (applicationJSON: ApplicationJSON, rerender = true) => {\n applicationJSONRef.current = applicationJSON;\n if (rerender) {\n forceRefresh({});\n }\n },\n []\n );\n\n const setApplicationLayout = useCallback(\n (layout: LayoutJSON, rerender = true) => {\n setApplicationJSON(\n {\n ...applicationJSONRef.current,\n layout,\n },\n rerender\n );\n },\n [setApplicationJSON]\n );\n\n const setApplicationSettings = useCallback(\n (settings: ApplicationSettings) => {\n setApplicationJSON(\n {\n ...applicationJSONRef.current,\n settings: {\n ...applicationJSONRef.current.settings,\n ...settings,\n },\n },\n false\n );\n },\n [setApplicationJSON]\n );\n\n useEffect(() => {\n const persistenceManager = getPersistenceManager();\n\n persistenceManager\n .loadMetadata()\n .then((metadata) => {\n setLayoutMetadata(metadata);\n })\n .catch((error: Error) => {\n notify({\n type: NotificationLevel.Error,\n header: \"Failed to Load Layouts\",\n body: \"Could not load list of available layouts\",\n });\n console.error(\"Error occurred while retrieving metadata\", error);\n });\n\n persistenceManager\n .loadApplicationJSON()\n .then((applicationJSON: ApplicationJSON) => {\n setApplicationJSON(applicationJSON);\n })\n .catch((error: Error) => {\n notify({\n type: NotificationLevel.Error,\n header: \"Failed to Load Layout\",\n body: \"Could not load your latest view\",\n });\n console.error(\n \"Error occurred while retrieving application layout\",\n error\n );\n });\n }, [notify, setApplicationJSON]);\n\n const saveApplicationLayout = useCallback(\n (layout: LayoutJSON) => {\n setApplicationLayout(layout, false);\n getPersistenceManager().saveApplicationJSON(applicationJSONRef.current);\n },\n [setApplicationLayout]\n );\n\n const saveLayout = useCallback(\n (metadata: LayoutMetadataDto) => {\n const layoutToSave = resolveJSONPath(\n applicationJSONRef.current.layout,\n \"#main-tabs.ACTIVE_CHILD\"\n );\n\n if (layoutToSave) {\n getPersistenceManager()\n .createLayout(metadata, ensureLayoutHasTitle(layoutToSave, metadata))\n .then((metadata) => {\n notify({\n type: NotificationLevel.Success,\n header: \"Layout Saved Successfully\",\n body: `${metadata.name} saved successfully`,\n });\n setLayoutMetadata((prev) => [...prev, metadata]);\n })\n .catch((error: Error) => {\n notify({\n type: NotificationLevel.Error,\n header: \"Failed to Save Layout\",\n body: `Failed to save layout ${metadata.name}`,\n });\n console.error(\"Error occurred while saving layout\", error);\n });\n } else {\n notify({\n type: NotificationLevel.Error,\n header: \"Failed to Save Layout\",\n body: \"Cannot save undefined layout\",\n });\n }\n },\n [notify]\n );\n\n const saveApplicationSettings = useCallback(\n (settings: ApplicationSettings) => {\n setApplicationSettings(settings);\n getPersistenceManager().saveApplicationJSON(applicationJSONRef.current);\n },\n [setApplicationSettings]\n );\n\n const loadLayoutById = useCallback(\n (id: string) => {\n getPersistenceManager()\n .loadLayout(id)\n .then((layoutJson) => {\n const { layout: currentLayout } = applicationJSONRef.current;\n setApplicationLayout({\n ...currentLayout,\n children: (currentLayout.children || []).concat(layoutJson),\n props: {\n ...currentLayout.props,\n active: currentLayout.children?.length ?? 0,\n },\n });\n })\n .catch((error: Error) => {\n notify({\n type: NotificationLevel.Error,\n header: \"Failed to Load Layout\",\n body: \"Failed to load the requested layout\",\n });\n console.error(\"Error occurred while loading layout\", error);\n });\n },\n [notify, setApplicationLayout]\n );\n\n return (\n <LayoutManagementContext.Provider\n value={{\n layoutMetadata,\n saveLayout,\n applicationJson: applicationJSONRef.current,\n saveApplicationLayout,\n saveApplicationSettings,\n loadLayoutById,\n }}\n >\n {props.children}\n </LayoutManagementContext.Provider>\n );\n};\n\nexport const useLayoutManager = () => useContext(LayoutManagementContext);\n", "import { Scrim } from \"@salt-ds/lab\";\nimport cx from \"classnames\";\nimport { HTMLAttributes, useCallback, useRef } from \"react\";\nimport { Portal } from \"../portal\";\nimport { DialogHeader } from \"../dialog-header\";\n\nimport \"./Dialog.css\";\n\nconst classBase = \"vuuDialog\";\n\nexport interface DialogProps extends HTMLAttributes<HTMLDivElement> {\n isOpen?: boolean;\n onClose?: () => void;\n hideCloseButton?: boolean;\n}\n\nexport const Dialog = ({\n children,\n className,\n isOpen = false,\n onClose,\n title,\n hideCloseButton = false,\n ...props\n}: DialogProps) => {\n const root = useRef<HTMLDivElement>(null);\n\n const close = useCallback(() => {\n onClose?.();\n }, [onClose]);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <Portal>\n <Scrim className={`${classBase}-scrim`} open={isOpen} autoFocusRef={root}>\n <div {...props} className={cx(classBase, className)} ref={root}>\n <DialogHeader\n hideCloseButton={hideCloseButton}\n onClose={close}\n title={title}\n />\n <div className={`${classBase}-body`}>{children}</div>\n </div>\n </Scrim>\n </Portal>\n );\n};\n", "import { ThemeAttributes, useThemeAttributes } from \"@vuu-ui/vuu-shell\";\nimport { ReactNode, useLayoutEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport \"./Portal.css\";\n\nexport interface PortalProps {\n /**\n * The children to render into the `container`.\n */\n children?: ReactNode;\n /**\n * An HTML element, component instance, or function that returns either.\n * The `container` will have the portal children appended to it.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container?: Element | (() => Element | null) | null;\n /**\n * If this node does not exist on the document, it will be created for you.\n */\n id?: string;\n /**\n * Callback invoked immediately after render (in layoutEffect). Can be\n * used to check position vis-a-vis viewport and adjust if out of bounds\n */\n onRender?: () => void;\n /**\n * Allow conditional rendering of this Portal, if false, will render nothing.\n * Defaults to true\n */\n open?: boolean;\n /**\n * ThemeAttributes can be passed in for cases where ContextMenu is\n * rendered via popup-service showPopup, outside the Context hierarchy.\n */\n themeAttributes?: ThemeAttributes;\n}\n\nfunction getContainer(container: PortalProps[\"container\"]) {\n return typeof container === \"function\" ? container() : container;\n}\n\nconst DEFAULT_ID = \"vuu-portal-root\";\n\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n */\nexport const Portal = ({\n children,\n container: containerProp = document.body,\n id = DEFAULT_ID,\n onRender,\n open = true,\n themeAttributes,\n}: PortalProps) => {\n const [mounted, setMounted] = useState(false);\n const portalRef = useRef<HTMLElement | null>(null);\n const container = getContainer(containerProp) ?? document.body;\n const [themeClass, densityClass, dataMode] =\n useThemeAttributes(themeAttributes);\n\n useLayoutEffect(() => {\n const root = document.getElementById(id);\n if (root) {\n portalRef.current = root;\n } else {\n portalRef.current = document.createElement(\"div\");\n portalRef.current.id = id;\n }\n const el = portalRef.current;\n if (!container.contains(el)) {\n container.appendChild(el);\n }\n el.classList.add(themeClass, densityClass);\n el.dataset.mode = dataMode;\n setMounted(true);\n }, [id, container, themeClass, densityClass, dataMode]);\n\n useLayoutEffect(() => {\n requestAnimationFrame(() => {\n onRender?.();\n });\n }, [onRender]);\n\n if (open && mounted && portalRef.current && children) {\n return createPortal(children, portalRef.current);\n }\n\n return null;\n};\n", "import { Button, Text } from \"@salt-ds/core\";\nimport { HTMLAttributes } from \"react\";\nimport cx from \"classnames\";\n\nimport \"./DialogHeader.css\";\n\nconst classBase = \"vuuDialogHeader\";\n\nexport interface DialogHeaderProps extends HTMLAttributes<HTMLDivElement> {\n hideCloseButton?: boolean;\n onClose: () => void;\n}\n\nexport const DialogHeader = ({\n hideCloseButton = false,\n title,\n onClose,\n ...htmlAttributes\n}: DialogHeaderProps) => {\n return (\n <div {...htmlAttributes} className={cx(classBase, \"vuuToolbarProxy\")}>\n <Text className=\"dialogHeader\">{title}</Text>\n {!hideCloseButton && (\n <Button\n key=\"close\"\n onClick={onClose}\n data-align=\"end\"\n data-icon=\"close\"\n variant=\"secondary\"\n />\n )}\n </div>\n );\n};\n", "import { ReactElement, useCallback, useState } from \"react\";\nimport { Dialog } from \"./Dialog\";\n\nexport type DialogState = {\n content: ReactElement;\n title: string;\n hideCloseButton?: boolean;\n};\n\nexport type SetDialog = (dialogState?: DialogState) => void;\n\nexport const useDialog = () => {\n const [dialogState, setDialogState] = useState<DialogState>();\n\n const handleClose = useCallback(() => {\n setDialogState(undefined);\n }, []);\n\n const dialog = dialogState ? (\n <Dialog\n className=\"vuDialog\"\n isOpen={true}\n onClose={handleClose}\n style={{ maxHeight: 500 }}\n title={dialogState.title}\n hideCloseButton={dialogState.hideCloseButton}\n >\n {dialogState.content}\n </Dialog>\n ) : null;\n\n return {\n dialog,\n setDialogState,\n };\n};\n", "import { useCallback, useRef } from \"react\";\nimport { MenuList, MenuListProps } from \"./MenuList\";\nimport { useCascade } from \"./use-cascade\";\nimport { useItemsWithIdsNext } from \"./use-items-with-ids-next\";\nimport { useId } from \"@vuu-ui/vuu-layout\";\nimport { PopupCloseCallback } from \"../popup\";\nimport { ContextMenuOptions } from \"./useContextMenu\";\nimport {\n PopupComponent as Popup,\n Portal,\n PortalProps,\n} from \"@vuu-ui/vuu-popups\";\n\nexport interface ContextMenuProps extends Omit<MenuListProps, \"onCloseMenu\"> {\n PortalProps?: Partial<PortalProps>;\n onClose?: PopupCloseCallback;\n position?: { x: number; y: number };\n withPortal?: boolean;\n}\n\nconst noop = () => undefined;\n\nexport const ContextMenu = ({\n PortalProps,\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 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 {\n closeMenu,\n listItemProps,\n openMenu: onOpenMenu,\n openMenus,\n 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 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 return (\n <Portal {...PortalProps} key={i} onRender={handleRender}>\n <Popup\n anchorElement={{ current: document.body }}\n placement=\"absolute\"\n position={{ left, top }}\n >\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 openMenu={onOpenMenu}\n style={style}\n tabIndex={i === all.length - 1 ? 0 : undefined}\n >\n {menus[menuId]}\n </MenuList>\n </Popup>\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 = ({\n children,\n idx,\n options,\n ...props\n}: 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 type MenuOpenHandler = (\n menuItemEl: HTMLElement,\n immediate?: boolean\n) => void;\nexport interface MenuListProps extends HTMLAttributes<HTMLDivElement> {\n activatedByKeyboard?: boolean;\n children: ReactElement[];\n childMenuShowing?: string;\n defaultHighlightedIdx?: number;\n highlightedIdx?: number;\n isRoot?: boolean;\n listItemProps?: Partial<MenuItemProps>;\n onActivate?: (menuId: string) => void;\n onCloseMenu: (idx: number) => void;\n openMenu?: MenuOpenHandler;\n onHighlightMenuItem?: (idx: number) => void;\n}\n\nexport const MenuList = ({\n activatedByKeyboard,\n childMenuShowing,\n children,\n className,\n defaultHighlightedIdx,\n highlightedIdx: highlightedIdxProp,\n id: idProp,\n isRoot,\n listItemProps,\n onHighlightMenuItem,\n onActivate,\n onCloseMenu,\n openMenu: 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-index='${idx}']`);\n el?.id && onActivate?.(el.id);\n };\n\n const { focusVisible, highlightedIndex, listProps } = useKeyboardNavigation({\n count: React.Children.count(children),\n defaultHighlightedIdx,\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-index\": 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\";\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\";\nimport { isValidNumber } from \"@vuu-ui/vuu-utils\";\nimport { MenuOpenHandler } from \"./MenuList\";\n\nexport interface KeyboardNavigationProps {\n autoHighlightFirstItem?: boolean;\n count: number;\n defaultHighlightedIdx?: number;\n highlightedIndex?: number;\n onActivate: (idx: number) => void;\n onHighlight?: (idx: number) => void;\n onCloseMenu: (idx: number) => void;\n onOpenMenu?: MenuOpenHandler;\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 defaultHighlightedIdx,\n highlightedIndex: highlightedIndexProp,\n onActivate,\n onHighlight,\n // onKeyDown,\n onCloseMenu,\n onOpenMenu,\n}: KeyboardNavigationProps): NavigationHookResult => {\n if (\n isValidNumber(highlightedIndexProp) &&\n isValidNumber(defaultHighlightedIdx)\n ) {\n throw Error(\n \"useKeyboardNavigation do not pass values for both highlightedIndex and defaultHighlightedIdx\"\n );\n }\n\n const controlledHighlighting = isValidNumber(highlightedIndexProp);\n const highlightedIndexRef = useRef(\n defaultHighlightedIdx ??\n highlightedIndexProp ??\n (autoHighlightFirstItem ? 0 : -1)\n );\n const [, forceRender] = useState<unknown>(null);\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-index='${highlightedIndex}']`\n ) as HTMLElement;\n\n if (menuItemEl) {\n onOpenMenu?.(menuItemEl, true);\n }\n } else if (e.key === \"ArrowLeft\" && !isRoot(e.target as HTMLElement)) {\n onCloseMenu(highlightedIndex);\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n e.stopPropagation();\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-index='${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, MenuOpenHandler } 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\n/** menuitem-vuu-1-0 vuu-1 */\nexport const getHostMenuId = (id: string, rootId: string) => {\n const pos = id.lastIndexOf(\"-\");\n if (id.startsWith(\"menuitem\")) {\n return pos > -1 ? id.slice(9, pos) : rootId;\n } else {\n return pos > -1 ? id.slice(0, pos) : rootId;\n }\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: MenuOpenHandler;\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 (\n hostMenuId: string,\n targetMenuId: string,\n menuItemId: string,\n delay = 300\n ) => {\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 }, delay);\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 // console.log(`call closeMenus from scheduleClose`);\n closeMenus(itemId);\n }, 400);\n },\n [closeMenus]\n );\n\n const handleRender = useCallback(() => {\n const { current: menus } = openMenus;\n const menu = menus.at(-1);\n const el = menu ? document.getElementById(menu.id) : undefined;\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 el.focus();\n }\n }\n }, [rootId, setOpenMenus]);\n\n // TODO introduce a delay parameter that allows click to requeat an immediate render\n const triggerChildMenu = useCallback<MenuOpenHandler>(\n (menuItemEl, immediate = false) => {\n const { hostMenuId, targetMenuId, menuItemId, isGroup, isOpen } =\n getMenuItemDetails(menuItemEl, rootId);\n const {\n current: { [hostMenuId]: state },\n } = menuState;\n\n const delay = immediate ? 0 : undefined;\n\n // console.log(\n // `%ctriggerChildMenu\n // rootId ${rootId}\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 if (state === \"no-popup\" && isGroup) {\n menuState.current[hostMenuId] = \"popup-pending\";\n scheduleOpen(hostMenuId, targetMenuId, menuItemId, delay);\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, delay);\n } else if (state === \"popup-open\") {\n if (menuIsOpen(targetMenuId)) {\n const menuStatus = getOpenMenuStatus(targetMenuId);\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, delay);\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, delay);\n } else if (isGroup) {\n // closeMenus(menuId, itemId);\n scheduleOpen(hostMenuId, targetMenuId, menuItemId, delay);\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", "export function listItemIndex(listItemEl: HTMLElement) {\n if (listItemEl) {\n const idx = listItemEl.dataset.index;\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-index],[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 ContextMenuConfiguration {\n menuActionHandler?: MenuActionHandler;\n menuBuilder: MenuBuilder;\n}\n\nexport interface ContextMenuProviderProps extends ContextMenuConfiguration {\n children: ReactNode;\n label?: string;\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 {\n ContextMenuItemDescriptor,\n MenuActionHandler,\n MenuBuilder,\n} from \"@vuu-ui/vuu-data-types\";\nimport { isGroupMenuItemDescriptor } from \"@vuu-ui/vuu-utils\";\nimport { cloneElement, useCallback, useContext, useMemo } from \"react\";\nimport {\n MenuActionClosePopup,\n PopupCloseReason,\n PopupService,\n reasonIsMenuAction,\n} from \"../popup\";\nimport { ContextMenu, ContextMenuProps } from \"./ContextMenu\";\nimport { MenuItem, MenuItemGroup } from \"./MenuList\";\nimport { ContextMenuContext } from \"./context-menu-provider\";\nimport { useThemeAttributes } from \"@vuu-ui/vuu-shell\";\n\nexport type ContextMenuOptions = {\n [key: string]: unknown;\n contextMenu?: JSX.Element;\n ContextMenuProps?: Partial<ContextMenuProps> & {\n className?: string;\n };\n controlledComponentId?: string;\n};\n\nexport type EventLike = {\n clientX: number;\n clientY: number;\n preventDefault?: () => void;\n stopPropagation?: () => void;\n};\n\nexport type ShowContextMenu = (\n e: EventLike,\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\n const [themeClass, densityClass, dataMode] = useThemeAttributes();\n const themeAttributes = useMemo(\n () => ({\n themeClass,\n densityClass,\n dataMode,\n }),\n [dataMode, densityClass, themeClass]\n );\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<ShowContextMenu>(\n (e, location, { ContextMenuProps, contextMenu, ...options }) => {\n e.stopPropagation?.();\n e.preventDefault?.();\n\n if (contextMenu) {\n return showContextMenuComponent(\n {\n x: e.clientX,\n y: e.clientY,\n },\n contextMenu\n );\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 // because showPopup is going to be used to render the context menu, it will not\n // have access to the ContextMenuContext. Pass the theme attributes here\n showContextMenu(e, menuItemDescriptors, menuHandler, {\n PortalProps: {\n themeAttributes,\n },\n ...ContextMenuProps,\n });\n }\n } else {\n console.warn(\n \"useContextMenu, no menuBuilders configured. These should be supplied via the ContextMenuProvider(s)\"\n );\n }\n },\n [buildMenuOptions, ctx, menuActionHandler, menuBuilder, themeAttributes]\n );\n\n const hideContextMenu = useCallback(() => {\n console.log(\"hide context menu\");\n }, []);\n\n return [handleShowContextMenu, hideContextMenu];\n};\n\nconst NO_OPTIONS = {};\n\nconst showContextMenuComponent = (\n position: { x: number; y: number },\n contextMenu: JSX.Element\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: EventLike,\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 className={menuItem.className}\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} from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { ContextMenuOptions } from \"../menu\";\nimport { renderPortal } from \"../portal-deprecated\";\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 EscapeClosePopup = {\n type: \"escape\";\n event: KeyboardEvent;\n};\n\nexport type MenuActionClosePopup = {\n menuId: string;\n options: ContextMenuOptions;\n type: \"menu-action\";\n};\n\nexport type PopupCloseReason =\n | ClickAwayClosePopup\n | EscapeClosePopup\n | 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 const popupContainers = document.body.querySelectorAll(\n \".vuuPopup,#vuu-portal-root\"\n );\n for (let i = 0; i < popupContainers.length; i++) {\n if (popupContainers[i].contains(e.target as HTMLElement)) {\n return;\n }\n }\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 PopupService.hidePopup({ type: \"escape\", event: evt });\n }\n }\n\n static hidePopup(reason?: PopupCloseReason, name = \"anon\", group = \"all\") {\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 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", "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 cx from \"classnames\";\nimport { HTMLAttributes, RefObject } from \"react\";\nimport { Position, useAnchoredPosition } from \"./useAnchoredPosition\";\n\nimport \"./Popup.css\";\n\nexport type PopupPlacement =\n | \"absolute\"\n | \"below\"\n | \"below-center\"\n | \"below-right\"\n | \"below-full-width\"\n | \"center\"\n | \"right\";\n\nexport interface PopupComponentProps extends HTMLAttributes<HTMLDivElement> {\n anchorElement: RefObject<HTMLElement>;\n minWidth?: number | string;\n offsetLeft?: number;\n offsetTop?: number;\n placement: PopupPlacement;\n position?: Position;\n}\n\nexport const PopupComponent = ({\n children,\n className,\n anchorElement,\n minWidth,\n placement,\n position: positionProp,\n}: PopupComponentProps) => {\n const { popupRef, position } = useAnchoredPosition({\n anchorElement,\n minWidth,\n placement,\n position: positionProp,\n });\n return position === undefined ? null : (\n <div className={cx(`vuuPortal`, className)} ref={popupRef} style={position}>\n {children}\n </div>\n );\n};\n", "import { useCallback, useLayoutEffect, useRef, useState } from \"react\";\nimport { PopupComponentProps, PopupPlacement } from \"./Popup\";\n\nexport type AnchoredPositionHookProps = Pick<\n PopupComponentProps,\n | \"anchorElement\"\n | \"minWidth\"\n | \"offsetLeft\"\n | \"offsetTop\"\n | \"placement\"\n | \"position\"\n>;\n\nexport type Visibility = \"hidden\" | \"visible\";\n\nconst getPositionRelativeToAnchor = (\n anchorElement: HTMLElement,\n placement: PopupPlacement,\n offsetLeft: number,\n offsetTop: number,\n minWidth?: number | string,\n dimensions?: { height: number; width: number }\n): {\n left: number;\n minWidth?: number | string;\n top: number;\n visibility?: Visibility;\n width?: number;\n} => {\n const { bottom, height, left, right, top, width } =\n anchorElement.getBoundingClientRect();\n switch (placement) {\n case \"below\":\n return { left: left + offsetLeft, top: bottom + offsetTop };\n case \"right\":\n return { left: right + offsetLeft, top: top + offsetTop };\n case \"below-center\":\n return { left: left + width / 2 + offsetLeft, top: bottom + offsetTop };\n case \"below-right\":\n return { left: left, minWidth, top: bottom + offsetTop };\n case \"below-full-width\":\n return {\n left: left + offsetLeft,\n minWidth,\n top: bottom + offsetTop,\n width,\n };\n case \"center\":\n if (dimensions) {\n return {\n left: width / 2 - dimensions.width / 2 + offsetLeft,\n top: height / 2 - dimensions.height / 2 + offsetTop,\n visibility: \"visible\",\n };\n } else {\n return {\n left: width / 2 + offsetLeft,\n top: height / 2 + offsetTop,\n visibility: \"hidden\",\n };\n }\n default:\n throw Error(\n \"Popup getPositionRelativeToAnchor only supported placement values are below and right\"\n );\n }\n};\n\nexport type Position = {\n left: number;\n minWidth?: number | string;\n top: number;\n visibility?: Visibility;\n width?: number;\n};\n\nexport const useAnchoredPosition = ({\n anchorElement,\n minWidth,\n offsetLeft = 0,\n offsetTop = 0,\n placement,\n position: positionProp,\n}: AnchoredPositionHookProps) => {\n const popupRef = useRef<HTMLElement | null>(null);\n const [position, setPosition] = useState<Position | undefined>(positionProp);\n\n // maybe better as useMemo ?\n useLayoutEffect(() => {\n if (placement === \"absolute\" && positionProp) {\n setPosition(positionProp);\n } else if (anchorElement.current) {\n const dimensions =\n popupRef.current === null\n ? undefined\n : popupRef.current.getBoundingClientRect();\n const position = getPositionRelativeToAnchor(\n anchorElement.current,\n placement,\n offsetLeft,\n offsetTop,\n minWidth,\n dimensions\n );\n setPosition(position);\n }\n }, [anchorElement, minWidth, offsetLeft, offsetTop, placement, positionProp]);\n\n const popupCallbackRef = useCallback(\n (el: HTMLDivElement | null) => {\n popupRef.current = el;\n if (el && placement === \"center\" && anchorElement.current) {\n const { height, width } = el.getBoundingClientRect();\n setPosition(\n getPositionRelativeToAnchor(\n anchorElement.current,\n placement,\n offsetLeft,\n offsetTop,\n undefined,\n { height, width }\n )\n );\n }\n },\n [anchorElement, offsetLeft, offsetTop, placement]\n );\n\n return {\n position,\n popupRef: placement === \"center\" ? popupCallbackRef : undefined,\n };\n};\n", "import {\n HTMLAttributes,\n MouseEvent,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport {\n MenuOpenHandler,\n PopupCloseCallback,\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\";\nimport { MenuActionHandler, MenuBuilder } from \"@vuu-ui/vuu-data-types\";\n\nimport \"./PopupMenu.css\";\n\nconst classBase = \"vuuPopupMenu\";\n\nexport interface PopupMenuProps extends HTMLAttributes<HTMLButtonElement> {\n icon?: string;\n label?: string;\n menuActionHandler?: MenuActionHandler;\n menuBuilder?: MenuBuilder;\n menuLocation?: string;\n menuOptions?: { [key: string]: unknown };\n onMenuClose?: (reason?: PopupCloseReason) => 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 label,\n icon = label ? \"chevron-down\" : \"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 handleOpenMenu = useCallback<MenuOpenHandler>((el) => {\n console.log(`menu Open `, {\n el,\n });\n }, []);\n\n const handleMenuClose = useCallback<PopupCloseCallback>(\n (reason?: PopupCloseReason) => {\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?.(reason);\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 openMenu: handleOpenMenu,\n position: getPosition(rootRef.current),\n },\n ...menuOptions,\n });\n }\n },\n [\n handleMenuClose,\n handleOpenMenu,\n id,\n menuLocation,\n menuOptions,\n showContextMenu,\n ]\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}-withCaption`]: label !== undefined,\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 {label}\n </Button>\n );\n};\n", "import { useThemeAttributes } from \"@vuu-ui/vuu-shell\";\nimport { Button } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport { HTMLAttributes, useLayoutEffect, useRef } from \"react\";\nimport { PopupComponentProps, useAnchoredPosition } from \"../popup\";\n\nimport \"./Prompt.css\";\n\nconst classBase = \"vuuPrompt\";\n\nconst AnchorBody = { current: document.body };\n\nconst EMPTY_PROPS = {};\n\nexport interface PromptProps extends HTMLAttributes<HTMLDialogElement> {\n PopupProps?: Partial<PopupComponentProps>;\n cancelButtonLabel?: string;\n confirmButtonLabel?: string;\n onCancel: () => void;\n onConfirm: () => void;\n icon?: string;\n text: string;\n variant?: \"warn\" | \"error\" | \"info\";\n}\n\nexport const Prompt = ({\n PopupProps = EMPTY_PROPS,\n cancelButtonLabel = \"Cancel\",\n confirmButtonLabel = \"Confirm\",\n icon,\n onCancel,\n onConfirm,\n style,\n text,\n title,\n variant = \"info\",\n ...htmlAttributes\n}: PromptProps) => {\n const {\n anchorElement = AnchorBody,\n offsetLeft = 0,\n offsetTop = 0,\n placement = \"below\",\n } = PopupProps;\n const [themeClass, densityClass, dataMode] = useThemeAttributes();\n const { position } = useAnchoredPosition({\n anchorElement,\n offsetLeft,\n offsetTop,\n placement,\n });\n const rootRef = useRef<HTMLDialogElement>(null);\n const confirmRef = useRef<HTMLButtonElement>(null);\n\n useLayoutEffect(() => {\n if (rootRef.current) {\n rootRef.current.showModal();\n if (confirmRef.current) {\n confirmRef.current.focus();\n }\n if (placement.endsWith(\"center\")) {\n const { width } = rootRef.current.getBoundingClientRect();\n rootRef.current.style.marginLeft = `-${width / 2}px`;\n }\n }\n }, [placement]);\n\n return (\n <dialog\n {...htmlAttributes}\n className={cx(classBase, `${classBase}-${variant}`, themeClass)}\n data-mode={dataMode}\n ref={rootRef}\n style={{ ...style, ...position }}\n >\n <form className={`${classBase}-form`}>\n <div className={`${classBase}-header`} data-icon={icon}>\n {title}\n </div>\n <div className={`${classBase}-text`}>{text}</div>\n <div className={`${classBase}-buttonBar`}>\n <Button onClick={onCancel} variant=\"secondary\">\n {cancelButtonLabel}\n </Button>\n <Button onClick={onConfirm} ref={confirmRef} value=\"default\">\n {confirmButtonLabel}\n </Button>\n </div>\n </form>\n </dialog>\n );\n};\n", "// TODO merge with Popup\n\nimport { RefObject, useLayoutEffect, useState } from \"react\";\n\nexport type TooltipPlacement = \"above\" | \"right\" | \"below\" | \"left\";\n\nexport interface AnchoredPositionHookProps {\n anchorElement: RefObject<HTMLElement>;\n offsetLeft?: number;\n offsetTop?: number;\n placement: TooltipPlacement;\n}\n\nconst getPositionRelativeToAnchor = (\n anchorElement: HTMLElement,\n placement: TooltipPlacement,\n offsetLeft: number,\n offsetTop: number\n): { left: number; top: number } => {\n const { bottom, height, left, right, top, width } =\n anchorElement.getBoundingClientRect();\n const midX = left + width / 2;\n const midY = top + height / 2;\n\n switch (placement) {\n case \"above\":\n return { left: midX + offsetLeft, top: top + offsetTop };\n case \"below\":\n return { left: midX + offsetLeft, top: bottom + offsetTop };\n case \"right\":\n return { left: right + offsetLeft, top: midY + offsetLeft };\n // case \"below-center\":\n // return { left: left + width / 2 + offsetLeft, top: bottom + offsetTop };\n case \"left\":\n return { left: left + offsetLeft, top: midY + offsetLeft };\n default:\n throw Error(\n \"Tooltip getPositionRelativeToAnchor only supported placement values are left, right, below and right\"\n );\n }\n};\n\nexport const useAnchoredPosition = ({\n anchorElement,\n offsetLeft = 0,\n offsetTop = 0,\n placement,\n}: AnchoredPositionHookProps) => {\n const [position, setPosition] = useState<\n { left: number; top: number } | undefined\n >();\n\n // maybe better as useMemo ?\n useLayoutEffect(() => {\n if (anchorElement.current) {\n const position = getPositionRelativeToAnchor(\n anchorElement.current,\n placement,\n offsetLeft,\n offsetTop\n );\n setPosition(position);\n }\n }, [anchorElement, offsetLeft, offsetTop, placement]);\n\n return position;\n};\n", "import { MouseEventHandler, ReactNode, RefObject } from \"react\";\nimport { Portal } from \"../portal\";\nimport { TooltipPlacement, useAnchoredPosition } from \"./useAnchoredPosition\";\nimport cx from \"classnames\";\n\nimport \"./Tooltip.css\";\n\nconst classBase = \"vuuTooltip\";\n\nexport type TooltipStatus = \"warning\" | \"error\" | \"info\";\nexport interface TooltipProps {\n anchorElement: RefObject<HTMLElement>;\n children: ReactNode;\n id?: string;\n onMouseEnter: MouseEventHandler;\n onMouseLeave: MouseEventHandler;\n placement: TooltipPlacement;\n status?: TooltipStatus;\n}\n\nexport const Tooltip = ({\n anchorElement,\n children,\n id,\n onMouseEnter,\n onMouseLeave,\n placement,\n status,\n}: TooltipProps) => {\n const position = useAnchoredPosition({ anchorElement, placement });\n if (position === undefined) {\n return null;\n }\n return (\n <Portal>\n <div\n className={cx(classBase, {\n [`${classBase}-error`]: status === \"error\",\n })}\n data-align={placement}\n id={id}\n style={position}\n >\n <span\n className={`${classBase}-content`}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {children}\n </span>\n </div>\n </Portal>\n );\n};\n", "import { MouseEvent, ReactNode, useCallback, useRef, useState } from \"react\";\nimport { TooltipProps } from \"./Tooltip\";\nimport { TooltipPlacement } from \"./useAnchoredPosition\";\nimport { useId } from \"@vuu-ui/vuu-layout\";\n\nexport interface TooltipHookProps {\n id: string;\n placement?: TooltipPlacement;\n tooltipContent: ReactNode;\n}\n\nexport const useTooltip = ({\n id: idProp,\n placement = \"right\",\n tooltipContent,\n}: TooltipHookProps) => {\n const hideTooltipRef = useRef<() => void>();\n const anchorElementRef = useRef<HTMLElement | null>(null);\n const mouseEnterTimerRef = useRef<number | undefined>();\n const mouseLeaveTimerRef = useRef<number | undefined>();\n const [tooltipProps, setTooltipProps] = useState<TooltipProps | undefined>();\n\n const id = useId(idProp);\n\n const escapeListener = useCallback((evt: KeyboardEvent) => {\n if (evt.key === \"Escape\") {\n hideTooltipRef.current?.();\n }\n }, []);\n\n hideTooltipRef.current = useCallback(() => {\n setTooltipProps(undefined);\n document.removeEventListener(\"keydown\", escapeListener);\n }, [escapeListener]);\n\n const handleMouseEnterTooltip = useCallback(() => {\n window.clearTimeout(mouseLeaveTimerRef.current);\n }, []);\n\n const handleMouseLeaveTooltip = useCallback(() => {\n hideTooltipRef.current?.();\n }, []);\n\n const showTooltip = useCallback(() => {\n const { current: anchorEl } = anchorElementRef;\n if (anchorEl) {\n setTooltipProps({\n anchorElement: anchorElementRef,\n children: tooltipContent,\n id: `${id}-tooltip`,\n onMouseEnter: handleMouseEnterTooltip,\n onMouseLeave: handleMouseLeaveTooltip,\n placement: placement,\n });\n // register ESC listener\n document.addEventListener(\"keydown\", escapeListener);\n }\n mouseEnterTimerRef.current = undefined;\n }, [\n escapeListener,\n handleMouseEnterTooltip,\n handleMouseLeaveTooltip,\n id,\n placement,\n tooltipContent,\n ]);\n\n const handleMouseEnter = useCallback(\n (evt: MouseEvent) => {\n const el = evt.target as HTMLElement;\n if (el) {\n anchorElementRef.current = el;\n mouseEnterTimerRef.current = window.setTimeout(showTooltip, 800);\n }\n },\n [showTooltip]\n );\n\n const handleMouseLeave = useCallback(() => {\n if (anchorElementRef.current)\n if (mouseEnterTimerRef.current) {\n window.clearTimeout(mouseEnterTimerRef.current);\n mouseEnterTimerRef.current = undefined;\n } else {\n if (hideTooltipRef.current) {\n mouseLeaveTimerRef.current = window.setTimeout(\n hideTooltipRef.current,\n 200\n );\n }\n }\n }, []);\n\n const anchorProps = {\n \"aria-describedby\": `${id}-tooltip`,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n };\n\n return {\n anchorProps,\n tooltipProps,\n };\n};\n", "import React, { useState, useContext, useCallback, useEffect } from \"react\";\nimport classNames from \"classnames\";\nimport { getUniqueId } from \"@vuu-ui/vuu-utils\";\n\nimport \"./notifications.css\";\nimport { Portal } from \"../portal\";\n\n// animation times in milliseconds\nconst toastOffsetTop = 60;\nconst toastDisplayDuration = 6000;\nconst horizontalTransitionDuration = 1000;\nconst verticalTransitionDuration = 300;\n\n// toast size in pixels\nconst toastHeight = 56;\nconst toastWidth = 300;\nconst toastContainerContentGap = 10;\nconst toastContainerLeftPadding = 10;\n// rightPadding is used together with the toastWidth to compute the toast position\n// at the beginning and at the end of the animation\nconst toastContainerRightPadding = 50;\n\nconst classBase = \"vuuToastNotifications\";\n\nexport enum NotificationLevel {\n Info = \"info\",\n Success = \"success\",\n Warning = \"warning\",\n Error = \"error\",\n}\n\ntype Notification = {\n type: NotificationLevel;\n header: string;\n body: string;\n id: string;\n};\n\nexport const NotificationsContext = React.createContext<{\n notify: (notification: Omit<Notification, \"id\">) => void;\n}>({\n notify: () => \"have you forgotten to provide a NotificationProvider?\",\n});\n\nexport const NotificationsProvider = (props: {\n children: JSX.Element | JSX.Element[];\n}) => {\n const [notifications, setNotifications] = useState<Notification[]>([]);\n\n const notify = useCallback((notification: Omit<Notification, \"id\">) => {\n const newNotification = { ...notification, id: getUniqueId() };\n\n setNotifications((prev) => [...prev, newNotification]);\n\n setTimeout(() => {\n setNotifications((prev) => prev.filter((n) => n !== newNotification));\n }, toastDisplayDuration + horizontalTransitionDuration * 2);\n }, []);\n\n return (\n <NotificationsContext.Provider value={{ notify }}>\n <div\n style={{\n width:\n toastWidth + toastContainerRightPadding + toastContainerLeftPadding,\n }}\n >\n {notifications.map((notification, i) => (\n <ToastNotification\n top={toastOffsetTop + (toastHeight + toastContainerContentGap) * i}\n notification={notification}\n key={notification.id}\n />\n ))}\n </div>\n {props.children}\n </NotificationsContext.Provider>\n );\n};\n\nexport const useNotifications = () => useContext(NotificationsContext);\n\ntype ToastNotificationProps = {\n top: number;\n notification: Notification;\n animated?: boolean;\n};\n\n// Only exported for use in individual toast examples. Normal usage will be through the provider\nexport const ToastNotification = (props: ToastNotificationProps) => {\n const { top, notification, animated = true } = props;\n\n const [right, setRight] = useState(-toastWidth - toastContainerRightPadding);\n\n useEffect(() => {\n setTimeout(() => setRight(toastContainerRightPadding));\n\n if (animated) {\n setTimeout(\n () => setRight(-toastWidth - toastContainerRightPadding),\n toastDisplayDuration + horizontalTransitionDuration\n );\n }\n }, [animated]);\n\n return (\n <Portal>\n <div\n className={classNames(`${classBase}-toast`, notification.type)}\n style={{\n height: toastHeight,\n right,\n width: toastWidth,\n top,\n transition: animated\n ? `right ${horizontalTransitionDuration}ms, top ${verticalTransitionDuration}ms `\n : \"none\",\n }}\n >\n <div\n className={classNames(\n `${classBase}-toastIcon`,\n `${notification.type}-icon`\n )}\n />\n <div className={`${classBase}-toastContent`}>\n <strong className={`${classBase}-toastHeader`}>\n {notification.header}\n </strong>\n <div>{notification.body}</div>\n </div>\n </div>\n </Portal>\n );\n};\n", "import { VuuLogo } from \"@vuu-ui/vuu-icons\";\nimport { 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 { LayoutsList } from \"../layout-management\";\nimport { CSSProperties, HTMLAttributes, useCallback, useState } from \"react\";\nimport { FeatureProps } from \"../feature\";\nimport { FeatureList } from \"../feature-list\";\nimport { useThemeAttributes } from \"../theme-provider\";\n\nimport \"./LeftNav.css\";\n\nconst classBase = \"vuuLeftNav\";\n\nexport type NavDisplayStatus =\n | \"menu-full\"\n | \"menu-icons\"\n | \"menu-full-content\"\n | \"menu-icons-content\";\n\nconst getDisplayStatus = (\n activeTabIndex: number,\n expanded: boolean\n): NavDisplayStatus => {\n if (activeTabIndex === 0) {\n return expanded ? \"menu-full\" : \"menu-icons\";\n } else {\n return expanded ? \"menu-full-content\" : \"menu-icons-content\";\n }\n};\n\nexport type NavDisplayStatusHandler = (\n navDisplayStatus: NavDisplayStatus\n) => void;\nexport interface LeftNavProps extends HTMLAttributes<HTMLDivElement> {\n \"data-path\"?: string;\n defaultActiveTabIndex?: number;\n defaultExpanded?: boolean;\n features: FeatureProps[];\n onActiveChange?: (activeTabIndex: number) => void;\n onTogglePrimaryMenu?: (expanded: boolean) => void;\n sizeCollapsed?: number;\n sizeContent?: number;\n sizeExpanded?: number;\n tableFeatures: FeatureProps[];\n}\n\ntype NavState = {\n activeTabIndex: number;\n expanded: boolean;\n};\n\nexport const LeftNav = (props: LeftNavProps) => {\n const dispatch = useLayoutProviderDispatch();\n const [themeClass] = useThemeAttributes();\n const {\n \"data-path\": path,\n defaultExpanded = true,\n defaultActiveTabIndex = 0,\n features,\n onActiveChange,\n onTogglePrimaryMenu,\n sizeCollapsed = 80,\n sizeContent = 300,\n sizeExpanded = 240,\n style: styleProp,\n tableFeatures,\n ...htmlAttributes\n } = props;\n\n const [navState, setNavState] = useState<NavState>({\n activeTabIndex: defaultActiveTabIndex,\n expanded: defaultExpanded,\n });\n\n const getFullWidth = useCallback(\n (tabIndex: number, expanded: boolean): number => {\n if (tabIndex === 0) {\n return expanded ? sizeExpanded : sizeCollapsed;\n } else {\n return expanded\n ? sizeExpanded + sizeContent\n : sizeCollapsed + sizeContent;\n }\n },\n [sizeCollapsed, sizeContent, sizeExpanded]\n );\n\n const handleTabSelection = useCallback(\n (activeTabIndex: number) => {\n const { activeTabIndex: currentIndex, expanded } = navState;\n const newState = { activeTabIndex, expanded };\n setNavState(newState);\n if (activeTabIndex === 0 || currentIndex === 0) {\n const width = getFullWidth(activeTabIndex, expanded);\n dispatch({\n type: \"layout-resize\",\n path: \"#vuu-side-panel\",\n size: width,\n } as LayoutResizeAction);\n }\n onActiveChange?.(activeTabIndex);\n },\n [dispatch, getFullWidth, navState, onActiveChange]\n );\n\n const displayStatus = getDisplayStatus(\n navState.activeTabIndex,\n navState.expanded\n );\n\n const toggleExpanded = useCallback(() => {\n const { activeTabIndex, expanded } = navState;\n const primaryMenuExpanded = !expanded;\n const newState = { activeTabIndex, expanded: primaryMenuExpanded };\n setNavState(newState);\n dispatch({\n type: \"layout-resize\",\n path: \"#vuu-side-panel\",\n size: getFullWidth(activeTabIndex, primaryMenuExpanded),\n } as LayoutResizeAction);\n onTogglePrimaryMenu?.(primaryMenuExpanded);\n }, [dispatch, getFullWidth, navState, onTogglePrimaryMenu]);\n\n const style = {\n ...styleProp,\n \"--nav-menu-collapsed-width\": `${sizeCollapsed}px`,\n \"--nav-menu-expanded-width\": `${sizeExpanded}px`,\n \"--nav-menu-content-width\": `${sizeContent}px`,\n } as CSSProperties;\n\n return (\n <div\n {...htmlAttributes}\n className={cx(classBase, `${classBase}-${displayStatus}`)}\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=\"features\" label=\"VUU FEATURES\"></Tab>\n <Tab data-icon=\"tables\" label=\"VUU TABLES\"></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\":\n displayStatus.startsWith(\"menu-full\"),\n \"vuuLeftNav-toggleButton-closed\":\n displayStatus.startsWith(\"menu-icons\"),\n })}\n data-icon={\n displayStatus.startsWith(\"menu-full\")\n ? \"chevron-left\"\n : \"chevron-right\"\n }\n onClick={toggleExpanded}\n />\n </div>\n </div>\n <Stack\n active={navState.activeTabIndex - 1}\n className={`${classBase}-menu-secondary`}\n showTabs={false}\n >\n <FeatureList features={features} title=\"VUU FEATURES\" />\n <FeatureList features={tableFeatures} title=\"VUU TABLES\" />\n <div className=\"vuuLeftNav-drawer\">\n <LayoutsList />\n </div>\n </Stack>\n </div>\n );\n};\n", "import { Palette, PaletteItem } from \"@vuu-ui/vuu-layout\";\nimport { ListProps } from \"@vuu-ui/vuu-ui-controls\";\nimport { HTMLAttributes } from \"react\";\nimport { Feature, FeatureProps } from \"../feature/Feature\";\n\nimport \"./FeatureList.css\";\n\nconst classBase = \"vuuFeatureList\";\n\nexport interface FeatureListProps extends HTMLAttributes<HTMLDivElement> {\n features: FeatureProps[];\n}\n\nexport const FeatureList = ({\n features,\n title = \"VUU TABLES\",\n ...htmlAttributes\n}: FeatureListProps) => {\n const ViewProps = {};\n\n const listProps: Partial<ListProps> = {\n height: \"100%\",\n };\n\n return (\n <div {...htmlAttributes} className={classBase}>\n <div className={`${classBase}-header`}>{title}</div>\n <div className={`${classBase}-content`}>\n <Palette\n orientation=\"vertical\"\n ListProps={listProps}\n ViewProps={ViewProps}\n >\n {features.map((featureProps, i) => (\n <PaletteItem\n closeable\n key={i}\n label={featureProps.title}\n resizeable\n resize=\"defer\"\n header\n >\n <Feature {...featureProps} />\n </PaletteItem>\n ))}\n </Palette>\n </div>\n </div>\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: \"vuu\",\n themeMode: \"light\",\n});\n\nexport type ThemeClasses = [string, string, ThemeMode];\n\nconst DEFAULT_THEME_ATTRIBUTES: ThemeClasses = [\n \"vuu\",\n \"vuu-density-high\",\n \"light\" as ThemeMode,\n];\n\nexport type ThemeAttributes = {\n themeClass: string;\n densityClass: string;\n dataMode: ThemeMode;\n};\n\nexport const useThemeAttributes = (\n themeAttributes?: ThemeAttributes\n): [string, string, ThemeMode] => {\n const context = useContext(ThemeContext);\n if (themeAttributes) {\n return [\n themeAttributes.themeClass,\n themeAttributes.densityClass,\n themeAttributes.dataMode,\n ];\n } else if (context) {\n return [\n `${context.theme}-theme`,\n `${context.theme}-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 {\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 {\n DraggableLayout,\n LayoutProvider,\n LayoutProviderProps,\n loadingApplicationJson,\n useLayoutContextMenuItems,\n} from \"@vuu-ui/vuu-layout\";\nimport { LayoutChangeHandler } from \"@vuu-ui/vuu-layout/src/layout-reducer\";\nimport { logger } from \"@vuu-ui/vuu-utils\";\nimport cx from \"classnames\";\nimport {\n HTMLAttributes,\n ReactElement,\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { AppHeader } from \"./app-header\";\nimport { useLayoutManager } from \"./layout-management\";\nimport { SidePanelProps, useShellLayout } from \"./shell-layouts\";\nimport { SaveLocation } from \"./shellTypes\";\nimport { ThemeMode, ThemeProvider, useThemeAttributes } from \"./theme-provider\";\nimport { ShellContextProvider } from \".\";\n\nimport { ContextMenuProvider, useDialog } from \"@vuu-ui/vuu-popups\";\nimport \"./shell.css\";\n\nexport type VuuUser = {\n username: string;\n token: string;\n};\n\nconst { error } = logger(\"Shell\");\n\nconst defaultLeftSidePanel: ShellProps[\"LeftSidePanelProps\"] = {};\n\nexport type LayoutTemplateName = \"full-height\" | \"inlay\";\n\nexport interface ShellProps extends HTMLAttributes<HTMLDivElement> {\n LayoutProps?: Pick<\n LayoutProviderProps,\n \"createNewChild\" | \"pathToDropTarget\"\n >;\n LeftSidePanelProps?: SidePanelProps;\n children?: ReactNode;\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 LayoutProps,\n LeftSidePanelProps = defaultLeftSidePanel,\n children,\n className: classNameProp,\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 { dialog, setDialogState } = useDialog();\n const layoutId = useRef(\"latest\");\n const { applicationJson, saveApplicationLayout, loadLayoutById } =\n useLayoutManager();\n const { buildMenuOptions, handleMenuAction } =\n useLayoutContextMenuItems(setDialogState);\n\n const handleLayoutChange = useCallback<LayoutChangeHandler>(\n (layout, layoutChangeReason) => {\n try {\n saveApplicationLayout(layout);\n } catch {\n error?.(\"Failed to save layout\");\n }\n },\n [saveApplicationLayout]\n );\n\n const handleSwitchTheme = useCallback((mode: ThemeMode) => {\n if (rootRef.current) {\n rootRef.current.dataset.mode = mode;\n }\n }, []);\n\n // TODO this is out of date\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 isLoading = applicationJson === loadingApplicationJson;\n\n const shellLayout = useShellLayout({\n LeftSidePanelProps,\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 });\n\n return isLoading ? null : (\n <ThemeProvider>\n <ContextMenuProvider\n menuActionHandler={handleMenuAction}\n menuBuilder={buildMenuOptions}\n >\n <LayoutProvider\n {...LayoutProps}\n layout={applicationJson.layout}\n onLayoutChange={handleLayoutChange}\n >\n <DraggableLayout\n className={className}\n data-mode={dataMode}\n ref={rootRef}\n {...htmlAttributes}\n >\n {shellLayout}\n </DraggableLayout>\n </LayoutProvider>\n {children || dialog}\n </ContextMenuProvider>\n </ThemeProvider>\n );\n};\n", "import { Button } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport { useCallback, useMemo } from \"react\";\nimport {\n layoutFromJson,\n LayoutJSON,\n View,\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 [contentJson, setContentJson] = useState(contentProp);\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 () =>\n contentProp && expanded ? layoutFromJson(contentProp, \"context-0\") : null,\n [contentProp, expanded]\n );\n\n return (\n <div\n className={cx(classBase, className, {\n [`${classBase}-expanded`]: expanded,\n })}\n >\n <View className={`${classBase}-inner`} header={false} id=\"context-panel\">\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 </View>\n </div>\n );\n};\n", "import { DraggableLayout, Flexbox } from \"@vuu-ui/vuu-layout\";\nimport { ReactElement } from \"react\";\nimport { ContextPanel } from \"./context-panel\";\nimport { SidePanel } from \"./side-panel\";\nimport { ShellLayoutProps } from \"./useShellLayout\";\n\nexport const useFullHeightLeftPanel = ({\n appHeader,\n LeftSidePanelProps,\n}: ShellLayoutProps): ReactElement => {\n return (\n <Flexbox\n className=\"App\"\n style={{\n flexDirection: \"row\",\n height: \"100%\",\n width: \"100%\",\n }}\n >\n <SidePanel {...LeftSidePanelProps} id=\"vuu-side-panel\" />\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 id=\"context-panel\" overlay></ContextPanel>\n </Flexbox>\n );\n};\n", "import { CSSProperties, HTMLAttributes, useMemo } from \"react\";\nimport cx from \"classnames\";\n\nimport \"./SidePanel.css\";\n// import { useLayoutManager } from \"../../layout-management\";\n\nconst classBase = \"vuuShellSidePanel\";\n\nexport interface SidePanelProps extends HTMLAttributes<HTMLDivElement> {\n open?: boolean;\n path?: string;\n sizeOpen?: number;\n sizeClosed?: number;\n}\n\nexport const SidePanel = ({\n children,\n open = true,\n sizeClosed = 90,\n sizeOpen = 200,\n style: styleProp,\n ...htmlAttributes\n}: SidePanelProps) => {\n // const { applicationJson, saveApplicationSettings } = useLayoutManager();\n // console.log(`settings`, {\n // expanded: applicationJson?.settings?.leftNav?.expanded,\n // active: applicationJson?.settings?.leftNav?.activeTabIndex,\n // });\n\n const style = useMemo(\n () =>\n ({\n ...styleProp,\n \"--shell-left-nav-size\": open ? `${sizeOpen}px` : `${sizeClosed}px`,\n } as CSSProperties),\n [open, sizeClosed, sizeOpen, styleProp]\n );\n return (\n <div {...htmlAttributes} className={cx(classBase)} style={style}>\n {children}\n </div>\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 LeftSidePanelProps,\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(LeftSidePanelProps?.children).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 { ShellProps } from \"../shell\";\nimport { useFullHeightLeftPanel } from \"./useFullHeightLeftPanel\";\nimport { useInlayLeftPanel } from \"./useInlayLeftPanel\";\n\nexport type ShellLayoutType = \"full-height\" | \"inlay\";\nexport interface ShellLayoutProps {\n LeftSidePanelProps: ShellProps[\"LeftSidePanelProps\"];\n appHeader: 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 { VuuTable } from \"@vuu-ui/vuu-protocol-types\";\n\ndeclare global {\n const vuuConfig: Promise<VuuConfig>;\n}\n\nexport type SaveLocation = \"local\" | \"remote\";\n\nexport interface FeatureConfig {\n name: string;\n title: string;\n url: string;\n css?: string;\n leftNavLocation: \"vuu-features\" | \"vuu-tables\";\n featureProps?: {\n schema?: \"*\" | VuuTable;\n schemas?: VuuTable[];\n };\n}\n\nexport type Features = {\n [key: string]: FeatureConfig;\n};\nexport interface VuuConfig {\n features: Features;\n authUrl?: string;\n websocketUrl: string;\n}\n\nexport const isWildcardSchema = (schema?: \"*\" | VuuTable): schema is \"*\" =>\n schema === \"*\";\nexport const isTableSchema = (schema?: \"*\" | VuuTable): schema is VuuTable =>\n typeof schema === \"object\" &&\n typeof schema.module === \"string\" &&\n typeof schema.table === \"string\";\n", "import { ColumnDescriptor, ListOption } from \"@vuu-ui/vuu-table-types\";\nimport { RpcResponseHandler } from \"@vuu-ui/vuu-data-react\";\nimport { createContext, ReactElement, ReactNode, useContext } from \"react\";\nimport { VuuTable } from \"@vuu-ui/vuu-protocol-types\";\n\nexport type LookupTableProvider = (table: VuuTable) => ListOption[];\n\nexport type DefaultColumnConfiguration = <T extends string = string>(\n tableName: T,\n columnName: string\n) => Partial<ColumnDescriptor> | undefined;\nexport interface ShellContextProps {\n getDefaultColumnConfig?: DefaultColumnConfiguration;\n getLookupValues?: LookupTableProvider;\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", "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"],
5
- "mappings": "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",
6
- "names": ["useCallback", "cx", "jsx", "jsxs", "Button", "jsx", "jsxs", "classBase", "cx", "useCallback", "useEffect", "useState", "cx", "jsx", "jsxs", "classBase", "useState", "useEffect", "cx", "useCallback", "cx", "jsx", "classBase", "React", "useEffect", "React", "Fragment", "jsx", "jsxs", "error", "jsx", "jsx", "useEffect", "React", "useEffect", "useState", "Button", "FormField", "FormFieldLabel", "jsx", "jsxs", "classBase", "useState", "useEffect", "screenshot", "FormField", "FormFieldLabel", "Button", "React", "useCallback", "useContext", "useEffect", "useRef", "useState", "cx", "useCallback", "useRef", "useRef", "useState", "useState", "useRef", "Button", "Text", "cx", "jsx", "jsxs", "classBase", "cx", "Text", "Button", "jsx", "jsxs", "classBase", "useRef", "useCallback", "cx", "useCallback", "useState", "jsx", "useState", "useCallback", "useCallback", "useRef", "React", "useLayoutEffect", "useMemo", "useRef", "cx", "useCallback", "useMemo", "useRef", "useState", "useRef", "useState", "useCallback", "useMemo", "React", "useCallback", "useMemo", "React", "useCallback", "menus", "actions", "useMemo", "Fragment", "jsx", "classBase", "React", "isRoot", "useRef", "useMemo", "useLayoutEffect", "children", "className", "props", "cx", "useCallback", "useMemo", "useRef", "useState", "useState", "useRef", "useCallback", "useMemo", "useId", "Fragment", "jsx", "PortalProps", "useRef", "useId", "useCallback", "id", "useCallback", "useMemo", "jsx", "useCallback", "useMemo", "cx", "React", "createElement", "ReactDOM", "cx", "cx", "useCallback", "useLayoutEffect", "useRef", "useState", "position", "jsx", "cx", "jsx", "useCallback", "useRef", "useState", "cx", "Button", "useId", "jsx", "Button", "cx", "useLayoutEffect", "useRef", "jsx", "jsxs", "useLayoutEffect", "useState", "cx", "jsx", "useCallback", "useRef", "useState", "useId", "React", "useState", "useContext", "useCallback", "useEffect", "jsx", "jsxs", "React", "useContext", "jsx", "React", "useState", "useRef", "useCallback", "useEffect", "error", "metadata", "useContext", "Fragment", "jsx", "jsxs", "classBase", "layoutMetadata", "VuuLogo", "cx", "useCallback", "useState", "jsx", "jsxs", "classBase", "ViewProps", "createContext", "cloneElement", "useContext", "cx", "jsx", "DEFAULT_DENSITY", "jsx", "jsxs", "classBase", "useState", "useCallback", "cx", "VuuLogo", "useCallback", "useEffect", "useMemo", "useRef", "useState", "cx", "Button", "isValidNumber", "jsx", "jsxs", "classBase", "isValidNumber", "useState", "useRef", "useMemo", "values", "useCallback", "useEffect", "cx", "Button", "DraggableLayout", "loadingApplicationJson", "cx", "useCallback", "useEffect", "useRef", "Button", "cx", "useCallback", "useMemo", "useLayoutProviderDispatch", "jsx", "jsxs", "classBase", "useLayoutProviderDispatch", "useCallback", "cx", "useMemo", "Button", "useMemo", "cx", "jsx", "classBase", "useMemo", "cx", "jsx", "jsxs", "DraggableLayout", "Flexbox", "View", "useCallback", "useRef", "useState", "jsx", "jsxs", "jsx", "jsxs", "useRef", "useCallback", "useEffect", "cx", "loadingApplicationJson", "DraggableLayout", "createContext", "useContext", "jsx", "Provider", "cx", "useCallback", "jsx", "jsxs", "classBase", "useCallback", "cx"]
5
+ "mappings": "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",
6
+ "names": ["useCallback", "cx", "Toolbar", "useCallback", "useEffect", "useRef", "useState", "Button", "FormField", "FormFieldLabel", "VuuInput", "useMemo", "jsx", "jsxs", "VuuLogo", "cx", "jsx", "jsxs", "classBase", "LoginPanel", "appName", "className", "requirePassword", "onSubmit", "htmlAttributes", "username", "setUserName", "useState", "password", "setPassword", "inputRef", "useRef", "login", "handleUsername", "evt", "handlePassword", "handleCommitName", "useCallback", "handleCommitPassword", "dataIsValid", "useEffect", "_a", "cx", "VuuLogo", "FormField", "FormFieldLabel", "VuuInput", "Button", "getCookieValue", "getAuthModeFromCookies", "mode", "getAuthDetailsFromCookies", "username", "token", "getDefaultLoginUrl", "redirectToLogin", "loginUrl", "logout", "Button", "jsx", "jsxs", "classBase", "AppHeader", "classNameProp", "layoutId", "loginUrl", "onNavigate", "onSwitchTheme", "themeMode", "user", "htmlAttributes", "className", "cx", "handleLogout", "useCallback", "logout", "Toolbar", "React", "useEffect", "useState", "cx", "Fragment", "jsx", "jsxs", "ConnectionStatusIcon", "connectionStatus", "className", "element", "props", "classBase", "setClassBase", "useState", "useEffect", "statusIcon", "React", "cx", "Dropdown", "useCallback", "cx", "jsx", "classBase", "densities", "DEFAULT_DENSITY", "DensitySwitch", "classNameProp", "defaultDensity", "onChange", "handleSelectionChange", "_event", "selectedItem", "className", "React", "Suspense", "useEffect", "registerComponent", "React", "Fragment", "jsx", "jsxs", "FeatureErrorBoundary", "props", "error", "errorInfo", "jsx", "Loader", "importCSS", "path", "container", "x", "jsx", "componentsMap", "useCachedFeature", "url", "useEffect", "React", "lazyFeature", "RawFeature", "css", "params", "props", "importCSS", "styleSheet", "LazyFeature", "FeatureErrorBoundary", "Suspense", "Loader", "Feature", "registerComponent", "useEffect", "useState", "Input", "Button", "FormField", "FormFieldLabel", "Text", "ComboBox", "Checkbox", "RadioButton", "takeScreenshot", "jsx", "jsxs", "classBase", "formField", "groups", "checkboxValues", "radioValues", "SaveLayoutPanel", "props", "defaultTitle", "onCancel", "onSave", "componentId", "layoutName", "setLayoutName", "useState", "group", "setGroup", "checkValues", "setCheckValues", "radioValue", "setRadioValue", "screenshot", "setScreenshot", "useEffect", "takeScreenshot", "handleSubmit", "FormField", "FormFieldLabel", "ComboBox", "event", "_", "value", "Input", "i", "Checkbox", "prev", "entry", "RadioButton", "Text", "Button", "List", "React", "useCallback", "useContext", "useEffect", "useRef", "useState", "loadingApplicationJson", "LocalLayoutPersistenceManager", "resolveJSONPath", "defaultApplicationJson", "Scrim", "cx", "useCallback", "useRef", "useLayoutEffect", "useRef", "useState", "createPortal", "getContainer", "container", "DEFAULT_ID", "Portal", "children", "containerProp", "id", "onRender", "open", "themeAttributes", "_a", "mounted", "setMounted", "useState", "portalRef", "useRef", "themeClass", "densityClass", "dataMode", "useThemeAttributes", "useLayoutEffect", "root", "el", "createPortal", "Button", "Text", "cx", "jsx", "jsxs", "classBase", "DialogHeader", "hideCloseButton", "title", "onClose", "htmlAttributes", "cx", "Text", "Button", "jsx", "jsxs", "classBase", "Dialog", "children", "className", "isOpen", "onClose", "title", "hideCloseButton", "props", "root", "useRef", "close", "useCallback", "Portal", "Scrim", "cx", "DialogHeader", "useCallback", "useState", "jsx", "useDialog", "dialogState", "setDialogState", "useState", "handleClose", "useCallback", "Dialog", "useCallback", "useRef", "React", "useLayoutEffect", "useMemo", "useRef", "cx", "useId", "useCallback", "useMemo", "useRef", "useState", "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", "isValidNumber", "useKeyboardNavigation", "autoHighlightFirstItem", "count", "defaultHighlightedIdx", "highlightedIndexProp", "onActivate", "onHighlight", "onCloseMenu", "onOpenMenu", "_a", "controlledHighlighting", "highlightedIndexRef", "useRef", "forceRender", "useState", "setHighlightedIdx", "useCallback", "idx", "setHighlightedIndex", "keyBoardNavigation", "ignoreFocus", "setIgnoreFocus", "value", "highlightedIndex", "navigateChildldItems", "e", "nextIdx", "nextItemIdx", "handleKeyDown", "isNavigationKey", "hasPopup", "menuItemEl", "isRoot", "listProps", "useMemo", "key", "React", "useCallback", "useMemo", "isMenuItemGroup", "child", "MenuItemGroup", "getLabelFromChildren", "children", "isMenuItemLabel", "assignId", "path", "group", "hasSeparator", "React", "useItemsWithIdsNext", "childrenProp", "rootId", "normalizeChildren", "useCallback", "collectChildren", "menus", "actions", "list", "idx", "Separator", "hasChildItems", "childPath", "action", "options", "childWithId", "grandChildren", "useMemo", "Fragment", "jsx", "classBase", "Separator", "MenuItemGroup", "MenuItem", "children", "idx", "options", "props", "MenuItemLabel", "getDisplayName", "item", "React", "isMenuItemLabel", "hasIcon", "child", "MenuList", "activatedByKeyboard", "childMenuShowing", "className", "defaultHighlightedIdx", "highlightedIdxProp", "idProp", "isRoot", "listItemProps", "onHighlightMenuItem", "onActivate", "onCloseMenu", "onOpenMenu", "id", "useId", "root", "useRef", "mapIdxToId", "useMemo", "handleActivate", "_a", "el", "focusVisible", "highlightedIndex", "listProps", "useKeyboardNavigation", "appliedFocusVisible", "useLayoutEffect", "getActiveDescendant", "renderContent", "propsCommonToAllListItems", "maybeIcon", "childElement", "withIcon", "iconName", "addClonedChild", "list", "itemId", "hasSeparator", "label", "hasSubMenu", "isMenuItemGroup", "subMenuShowing", "ariaControls", "getMenuItemProps", "listItems", "cx", "key", "highlightedIdx", "useCallback", "useMemo", "useRef", "useState", "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", "useState", "useRef", "menuIsOpen", "useCallback", "menuId", "getOpenMenuStatus", "state", "menuState", "setOpenMenus", "menuOpenPendingTimeout", "menuClosePendingTimeout", "openMenu", "hostMenuId", "targetMenuId", "itemId", "closeMenu", "lastMenu", "closeMenus", "menuItemId", "menuItemMenuId", "lastMenuId", "parentMenuId", "clearAnyScheduledOpenTasks", "scheduleOpen", "delay", "scheduleClose", "openMenuId", "handleRender", "right", "bottom", "clientHeight", "clientWidth", "newMenus", "triggerChildMenu", "menuItemEl", "immediate", "isGroup", "isOpen", "menuStatus", "parentOfLastOpenedMenu", "lastOpenedMenu", "listItemProps", "useMemo", "evt", "closestListItem", "listItemEl", "useId", "Fragment", "jsx", "createElement", "noop", "ContextMenu", "PortalProps", "activatedByKeyboard", "childrenProp", "className", "idProp", "onClose", "position", "style", "menuListProps", "closeHandlerRef", "useRef", "id", "useId", "closeMenuRef", "menus", "actions", "useItemsWithIdsNext", "navigatingWithKeyboard", "handleMouseEnterItem", "useCallback", "handleActivate", "menuItemId", "actionId", "action", "options", "closeMenu", "listItemProps", "onOpenMenu", "openMenus", "handleRender", "useCascade", "handleCloseMenu", "handleHighlightMenuItem", "lastMenu", "getChildMenuId", "i", "menuId", "left", "top", "all", "childMenuId", "Portal", "PopupComponent", "MenuList", "createContext", "useCallback", "useMemo", "jsx", "ContextMenuContext", "Provider", "children", "context", "menuActionHandler", "menuBuilder", "menuBuilders", "handleMenuAction", "reason", "_a", "ContextMenuProvider", "label", "parentContext", "isGroupMenuItemDescriptor", "cloneElement", "useCallback", "useContext", "useMemo", "cx", "React", "createElement", "ReactDOM", "ReactDOM", "cx", "cx", "useCallback", "useLayoutEffect", "useRef", "useState", "getPositionRelativeToAnchor", "anchorElement", "placement", "offsetLeft", "offsetTop", "minWidth", "dimensions", "bottom", "height", "left", "right", "top", "width", "useAnchoredPosition", "positionProp", "popupRef", "position", "setPosition", "popupCallbackRef", "el", "jsx", "PopupComponent", "children", "className", "anchorElement", "minWidth", "placement", "positionProp", "popupRef", "position", "useAnchoredPosition", "cx", "jsx", "useCallback", "useRef", "useState", "cx", "Button", "useId", "jsx", "Button", "cx", "useLayoutEffect", "useRef", "jsx", "jsxs", "AnchorBody", "useLayoutEffect", "useState", "cx", "jsx", "useCallback", "useRef", "useState", "useId", "React", "useState", "useContext", "useCallback", "useEffect", "classNames", "getUniqueId", "jsx", "jsxs", "NotificationsContext", "React", "useNotifications", "useContext", "NotificationsContext", "jsx", "_persistenceManager", "getPersistenceManager", "LocalLayoutPersistenceManager", "LayoutManagementContext", "React", "defaultApplicationJson", "ensureLayoutHasTitle", "layout", "layoutMetadata", "_a", "LayoutManagementProvider", "props", "setLayoutMetadata", "useState", "forceRefresh", "notify", "useNotifications", "applicationJSONRef", "useRef", "loadingApplicationJson", "setApplicationJSON", "useCallback", "applicationJSON", "rerender", "setApplicationLayout", "setApplicationSettings", "settings", "useEffect", "persistenceManager", "metadata", "error", "saveApplicationLayout", "saveLayout", "layoutToSave", "resolveJSONPath", "prev", "saveApplicationSettings", "loadLayoutById", "id", "layoutJson", "_b", "currentLayout", "useLayoutManager", "useContext", "Fragment", "jsx", "jsxs", "classBase", "LayoutsList", "props", "layoutMetadata", "loadLayoutById", "useLayoutManager", "handleLoadLayout", "layoutId", "layoutsByGroup", "acc", "cur", "List", "item", "groupName", "metadata", "VuuLogo", "Stack", "useLayoutProviderDispatch", "Tab", "Tabstrip", "cx", "useCallback", "useState", "Palette", "PaletteItem", "jsx", "jsxs", "classBase", "FeatureList", "features", "title", "htmlAttributes", "ViewProps", "listProps", "Palette", "featureProps", "i", "PaletteItem", "Feature", "createContext", "isValidElement", "cloneElement", "useContext", "cx", "jsx", "DEFAULT_DENSITY", "DEFAULT_THEME", "DEFAULT_THEME_MODE", "ThemeContext", "DEFAULT_THEME_ATTRIBUTES", "useThemeAttributes", "themeAttributes", "context", "createThemedChildren", "children", "theme", "themeMode", "density", "_a", "ThemeProvider", "applyThemeClasses", "themeProp", "themeModeProp", "densityProp", "_b", "_c", "inheritedDensity", "inheritedThemeMode", "inheritedTheme", "themedChildren", "jsx", "jsxs", "classBase", "getDisplayStatus", "activeTabIndex", "expanded", "LeftNav", "props", "dispatch", "useLayoutProviderDispatch", "themeClass", "useThemeAttributes", "path", "defaultExpanded", "defaultActiveTabIndex", "features", "onActiveChange", "onTogglePrimaryMenu", "sizeCollapsed", "sizeContent", "sizeExpanded", "styleProp", "tableFeatures", "htmlAttributes", "navState", "setNavState", "useState", "getFullWidth", "useCallback", "tabIndex", "handleTabSelection", "currentIndex", "width", "displayStatus", "toggleExpanded", "primaryMenuExpanded", "style", "cx", "VuuLogo", "Tabstrip", "Tab", "Stack", "FeatureList", "LayoutsList", "useCallback", "useEffect", "useMemo", "useRef", "useState", "cx", "useIdMemo", "Button", "hasAction", "isErrorResponse", "RemoteDataSource", "buildColumnMap", "isValidNumber", "shallowEquals", "jsx", "jsxs", "classBase", "getField", "fields", "name", "field", "f", "getFieldNameAndValue", "evt", "value", "Status", "getTypedValue", "type", "throwIfUndefined", "typedValue", "isValidNumber", "getDataSource", "dataSource", "schema", "RemoteDataSource", "col", "SessionEditingForm", "className", "keyField", "dataSourceProp", "idProp", "onClose", "htmlAttributes", "values", "setValues", "useState", "errorMessage", "setErrorMessage", "formContentRef", "useRef", "initialDataRef", "dataStatusRef", "useMemo", "applyServerData", "data", "columnMap", "column", "ds", "buildColumnMap", "message", "id", "useIdMemo", "handleChange", "useCallback", "newValues", "notUpdated", "shallowEquals", "handleBlur", "rowKey", "applyAction", "action", "handleSubmit", "response", "isErrorResponse", "hasAction", "handleKeyDown", "handleCancel", "getFormControl", "_a", "useEffect", "firstInput", "isDirty", "cx", "Button", "connectToServer", "DraggableLayout", "LayoutProvider", "loadingApplicationJson", "useLayoutContextMenuItems", "logger", "cx", "useCallback", "useEffect", "useRef", "Button", "cx", "useCallback", "useMemo", "layoutFromJson", "View", "useLayoutProviderDispatch", "jsx", "jsxs", "classBase", "ContextPanel", "classNameProp", "expanded", "contentProp", "overlay", "title", "dispatchLayoutAction", "useLayoutProviderDispatch", "handleClose", "useCallback", "className", "cx", "content", "useMemo", "layoutFromJson", "View", "Button", "DraggableLayout", "Flexbox", "useMemo", "cx", "jsx", "classBase", "SidePanel", "children", "open", "sizeClosed", "sizeOpen", "styleProp", "htmlAttributes", "style", "useMemo", "cx", "jsx", "jsxs", "useFullHeightLeftPanel", "appHeader", "LeftSidePanelProps", "Flexbox", "SidePanel", "DraggableLayout", "ContextPanel", "DockLayout", "DraggableLayout", "Drawer", "Flexbox", "View", "useCallback", "useRef", "useState", "jsx", "jsxs", "useInlayLeftPanel", "appHeader", "LeftSidePanelProps", "paletteView", "open", "setOpen", "handleDrawerClick", "e", "_a", "target", "getDrawers", "leftSidePanel", "drawers", "useShellLayout", "leftSidePanelLayout", "props", "useInlayLeftPanel", "useFullHeightLeftPanel", "jsx", "jsxs", "error", "logger", "defaultLeftSidePanel", "Shell", "LayoutProps", "LeftSidePanelProps", "children", "classNameProp", "leftSidePanelLayout", "loginUrl", "saveLocation", "saveUrl", "serverUrl", "user", "htmlAttributes", "rootRef", "useRef", "dialog", "setDialogState", "useDialog", "layoutId", "applicationJson", "saveApplicationLayout", "loadLayoutById", "useLayoutManager", "buildMenuOptions", "handleMenuAction", "useLayoutContextMenuItems", "handleLayoutChange", "useCallback", "layout", "layoutChangeReason", "handleSwitchTheme", "mode", "handleNavigate", "id", "useEffect", "connectToServer", "themeClass", "densityClass", "dataMode", "useThemeAttributes", "className", "cx", "isLoading", "loadingApplicationJson", "shellLayout", "useShellLayout", "AppHeader", "ThemeProvider", "ContextMenuProvider", "LayoutProvider", "DraggableLayout", "isWildcardSchema", "schema", "isTableSchema", "createContext", "useContext", "jsx", "defaultConfig", "ShellContext", "Provider", "children", "context", "inheritedContext", "mergedContext", "ShellContextProvider", "value", "useShellContext", "cx", "ToggleButton", "ToggleButtonGroup", "useControlled", "useCallback", "jsx", "jsxs", "classBase", "ThemeSwitch", "classNameProp", "defaultModeProp", "modeProp", "onChange", "htmlAttributes", "mode", "setMode", "useControlled", "handleChangeSecondary", "useCallback", "evt", "value", "className", "cx", "ToggleButtonGroup", "ToggleButton"]
7
7
  }