@vuu-ui/vuu-shell 0.13.9 → 0.13.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/ShellContextProvider.js +25 -0
- package/cjs/ShellContextProvider.js.map +1 -0
- package/cjs/app-header/AppHeader.css.js +6 -0
- package/cjs/app-header/AppHeader.css.js.map +1 -0
- package/cjs/app-header/AppHeader.js +85 -0
- package/cjs/app-header/AppHeader.js.map +1 -0
- package/cjs/app-status-bar/AppStatusBar.css.js +6 -0
- package/cjs/app-status-bar/AppStatusBar.css.js.map +1 -0
- package/cjs/app-status-bar/AppStatusBar.js +47 -0
- package/cjs/app-status-bar/AppStatusBar.js.map +1 -0
- package/cjs/application-provider/ApplicationContext.js +18 -0
- package/cjs/application-provider/ApplicationContext.js.map +1 -0
- package/cjs/application-provider/ApplicationProvider.js +104 -0
- package/cjs/application-provider/ApplicationProvider.js.map +1 -0
- package/cjs/connection-status/ConnectionRetryCountdown.js +36 -0
- package/cjs/connection-status/ConnectionRetryCountdown.js.map +1 -0
- package/cjs/connection-status/ConnectionStateDisplay.css.js +6 -0
- package/cjs/connection-status/ConnectionStateDisplay.css.js.map +1 -0
- package/cjs/connection-status/ConnectionStateDisplay.js +65 -0
- package/cjs/connection-status/ConnectionStateDisplay.js.map +1 -0
- package/cjs/connection-status/ConnectionStatusIndicator.css.js +6 -0
- package/cjs/connection-status/ConnectionStatusIndicator.css.js.map +1 -0
- package/cjs/connection-status/ConnectionStatusIndicator.js +81 -0
- package/cjs/connection-status/ConnectionStatusIndicator.js.map +1 -0
- package/cjs/feature/Feature.js +55 -0
- package/cjs/feature/Feature.js.map +1 -0
- package/cjs/feature/FeatureErrorBoundary.js +30 -0
- package/cjs/feature/FeatureErrorBoundary.js.map +1 -0
- package/cjs/feature/Loader.js +8 -0
- package/cjs/feature/Loader.js.map +1 -0
- package/cjs/feature-and-layout-provider/FeatureAndLayoutProvider.js +60 -0
- package/cjs/feature-and-layout-provider/FeatureAndLayoutProvider.js.map +1 -0
- package/cjs/feature-list/FeatureList.css.js +6 -0
- package/cjs/feature-list/FeatureList.css.js.map +1 -0
- package/cjs/feature-list/FeatureList.js +97 -0
- package/cjs/feature-list/FeatureList.js.map +1 -0
- package/cjs/index.js +77 -2826
- package/cjs/index.js.map +1 -1
- package/cjs/left-nav/LeftNav.css.js +6 -0
- package/cjs/left-nav/LeftNav.css.js.map +1 -0
- package/cjs/left-nav/LeftNav.js +199 -0
- package/cjs/left-nav/LeftNav.js.map +1 -0
- package/cjs/login/LoginPanel.css.js +6 -0
- package/cjs/login/LoginPanel.css.js.map +1 -0
- package/cjs/login/LoginPanel.js +108 -0
- package/cjs/login/LoginPanel.js.map +1 -0
- package/cjs/login/VuuLogo.js +134 -0
- package/cjs/login/VuuLogo.js.map +1 -0
- package/cjs/login/login-utils.js +31 -0
- package/cjs/login/login-utils.js.map +1 -0
- package/cjs/persistence-manager/LocalPersistenceManager.js +197 -0
- package/cjs/persistence-manager/LocalPersistenceManager.js.map +1 -0
- package/cjs/persistence-manager/PersistenceProvider.js +21 -0
- package/cjs/persistence-manager/PersistenceProvider.js.map +1 -0
- package/cjs/persistence-manager/RemotePersistenceManager.js +175 -0
- package/cjs/persistence-manager/RemotePersistenceManager.js.map +1 -0
- package/cjs/persistence-manager/StaticPersistenceManager.js +71 -0
- package/cjs/persistence-manager/StaticPersistenceManager.js.map +1 -0
- package/cjs/shell-layout-templates/context-panel/ContextPanel.css.js +6 -0
- package/cjs/shell-layout-templates/context-panel/ContextPanel.css.js.map +1 -0
- package/cjs/shell-layout-templates/context-panel/ContextPanel.js +94 -0
- package/cjs/shell-layout-templates/context-panel/ContextPanel.js.map +1 -0
- package/cjs/shell-layout-templates/full-height-left-panel/useFullHeightLeftPanel.js +53 -0
- package/cjs/shell-layout-templates/full-height-left-panel/useFullHeightLeftPanel.js.map +1 -0
- package/cjs/shell-layout-templates/inlay-left-panel/useInlayLeftPanel.js +83 -0
- package/cjs/shell-layout-templates/inlay-left-panel/useInlayLeftPanel.js.map +1 -0
- package/cjs/shell-layout-templates/left-main-tabs/useLeftMainTabs.js +46 -0
- package/cjs/shell-layout-templates/left-main-tabs/useLeftMainTabs.js.map +1 -0
- package/cjs/shell-layout-templates/side-panel/SidePanel.css.js +6 -0
- package/cjs/shell-layout-templates/side-panel/SidePanel.css.js.map +1 -0
- package/cjs/shell-layout-templates/side-panel/SidePanel.js +36 -0
- package/cjs/shell-layout-templates/side-panel/SidePanel.js.map +1 -0
- package/cjs/shell-layout-templates/simple-content-pane/useSimpleContentPane.js +48 -0
- package/cjs/shell-layout-templates/simple-content-pane/useSimpleContentPane.js.map +1 -0
- package/cjs/shell-layout-templates/useShellLayout.js +23 -0
- package/cjs/shell-layout-templates/useShellLayout.js.map +1 -0
- package/cjs/shell.css.js +6 -0
- package/cjs/shell.css.js.map +1 -0
- package/cjs/shell.js +161 -0
- package/cjs/shell.js.map +1 -0
- package/cjs/theme-switch/ThemeSwitch.css.js +6 -0
- package/cjs/theme-switch/ThemeSwitch.css.js.map +1 -0
- package/cjs/theme-switch/ThemeSwitch.js +56 -0
- package/cjs/theme-switch/ThemeSwitch.js.map +1 -0
- package/cjs/user-settings/SettingsForm.css.js +6 -0
- package/cjs/user-settings/SettingsForm.css.js.map +1 -0
- package/cjs/user-settings/SettingsForm.js +168 -0
- package/cjs/user-settings/SettingsForm.js.map +1 -0
- package/cjs/user-settings/UserSettingsPanel.css.js +6 -0
- package/cjs/user-settings/UserSettingsPanel.css.js.map +1 -0
- package/cjs/user-settings/UserSettingsPanel.js +42 -0
- package/cjs/user-settings/UserSettingsPanel.js.map +1 -0
- package/cjs/workspace-management/LayoutList.css.js +6 -0
- package/cjs/workspace-management/LayoutList.css.js.map +1 -0
- package/cjs/workspace-management/LayoutList.js +116 -0
- package/cjs/workspace-management/LayoutList.js.map +1 -0
- package/cjs/workspace-management/LayoutTile.css.js +6 -0
- package/cjs/workspace-management/LayoutTile.css.js.map +1 -0
- package/cjs/workspace-management/LayoutTile.js +41 -0
- package/cjs/workspace-management/LayoutTile.js.map +1 -0
- package/cjs/workspace-management/SaveLayoutPanel.css.js +6 -0
- package/cjs/workspace-management/SaveLayoutPanel.css.js.map +1 -0
- package/cjs/workspace-management/SaveLayoutPanel.js +129 -0
- package/cjs/workspace-management/SaveLayoutPanel.js.map +1 -0
- package/cjs/workspace-management/WorkspaceProvider.js +264 -0
- package/cjs/workspace-management/WorkspaceProvider.js.map +1 -0
- package/cjs/workspace-management/defaultWorkspaceJSON.js +101 -0
- package/cjs/workspace-management/defaultWorkspaceJSON.js.map +1 -0
- package/cjs/workspace-management/screenshot-utils.js +25 -0
- package/cjs/workspace-management/screenshot-utils.js.map +1 -0
- package/cjs/workspace-management/useWorkspaceContextMenuItems.js +72 -0
- package/cjs/workspace-management/useWorkspaceContextMenuItems.js.map +1 -0
- package/esm/ShellContextProvider.js +23 -0
- package/esm/ShellContextProvider.js.map +1 -0
- package/esm/app-header/AppHeader.css.js +4 -0
- package/esm/app-header/AppHeader.css.js.map +1 -0
- package/esm/app-header/AppHeader.js +83 -0
- package/esm/app-header/AppHeader.js.map +1 -0
- package/esm/app-status-bar/AppStatusBar.css.js +4 -0
- package/esm/app-status-bar/AppStatusBar.css.js.map +1 -0
- package/esm/app-status-bar/AppStatusBar.js +45 -0
- package/esm/app-status-bar/AppStatusBar.js.map +1 -0
- package/esm/application-provider/ApplicationContext.js +16 -0
- package/esm/application-provider/ApplicationContext.js.map +1 -0
- package/esm/application-provider/ApplicationProvider.js +98 -0
- package/esm/application-provider/ApplicationProvider.js.map +1 -0
- package/esm/connection-status/ConnectionRetryCountdown.js +34 -0
- package/esm/connection-status/ConnectionRetryCountdown.js.map +1 -0
- package/esm/connection-status/ConnectionStateDisplay.css.js +4 -0
- package/esm/connection-status/ConnectionStateDisplay.css.js.map +1 -0
- package/esm/connection-status/ConnectionStateDisplay.js +63 -0
- package/esm/connection-status/ConnectionStateDisplay.js.map +1 -0
- package/esm/connection-status/ConnectionStatusIndicator.css.js +4 -0
- package/esm/connection-status/ConnectionStatusIndicator.css.js.map +1 -0
- package/esm/connection-status/ConnectionStatusIndicator.js +79 -0
- package/esm/connection-status/ConnectionStatusIndicator.js.map +1 -0
- package/esm/feature/Feature.js +53 -0
- package/esm/feature/Feature.js.map +1 -0
- package/esm/feature/FeatureErrorBoundary.js +28 -0
- package/esm/feature/FeatureErrorBoundary.js.map +1 -0
- package/esm/feature/Loader.js +6 -0
- package/esm/feature/Loader.js.map +1 -0
- package/esm/feature-and-layout-provider/FeatureAndLayoutProvider.js +56 -0
- package/esm/feature-and-layout-provider/FeatureAndLayoutProvider.js.map +1 -0
- package/esm/feature-list/FeatureList.css.js +4 -0
- package/esm/feature-list/FeatureList.css.js.map +1 -0
- package/esm/feature-list/FeatureList.js +95 -0
- package/esm/feature-list/FeatureList.js.map +1 -0
- package/esm/index.js +27 -2780
- package/esm/index.js.map +1 -1
- package/esm/left-nav/LeftNav.css.js +4 -0
- package/esm/left-nav/LeftNav.css.js.map +1 -0
- package/esm/left-nav/LeftNav.js +197 -0
- package/esm/left-nav/LeftNav.js.map +1 -0
- package/esm/login/LoginPanel.css.js +4 -0
- package/esm/login/LoginPanel.css.js.map +1 -0
- package/esm/login/LoginPanel.js +106 -0
- package/esm/login/LoginPanel.js.map +1 -0
- package/esm/login/VuuLogo.js +132 -0
- package/esm/login/VuuLogo.js.map +1 -0
- package/esm/login/login-utils.js +26 -0
- package/esm/login/login-utils.js.map +1 -0
- package/esm/persistence-manager/LocalPersistenceManager.js +195 -0
- package/esm/persistence-manager/LocalPersistenceManager.js.map +1 -0
- package/esm/persistence-manager/PersistenceProvider.js +17 -0
- package/esm/persistence-manager/PersistenceProvider.js.map +1 -0
- package/esm/persistence-manager/RemotePersistenceManager.js +173 -0
- package/esm/persistence-manager/RemotePersistenceManager.js.map +1 -0
- package/esm/persistence-manager/StaticPersistenceManager.js +69 -0
- package/esm/persistence-manager/StaticPersistenceManager.js.map +1 -0
- package/esm/shell-layout-templates/context-panel/ContextPanel.css.js +4 -0
- package/esm/shell-layout-templates/context-panel/ContextPanel.css.js.map +1 -0
- package/esm/shell-layout-templates/context-panel/ContextPanel.js +92 -0
- package/esm/shell-layout-templates/context-panel/ContextPanel.js.map +1 -0
- package/esm/shell-layout-templates/full-height-left-panel/useFullHeightLeftPanel.js +51 -0
- package/esm/shell-layout-templates/full-height-left-panel/useFullHeightLeftPanel.js.map +1 -0
- package/esm/shell-layout-templates/inlay-left-panel/useInlayLeftPanel.js +81 -0
- package/esm/shell-layout-templates/inlay-left-panel/useInlayLeftPanel.js.map +1 -0
- package/esm/shell-layout-templates/left-main-tabs/useLeftMainTabs.js +44 -0
- package/esm/shell-layout-templates/left-main-tabs/useLeftMainTabs.js.map +1 -0
- package/esm/shell-layout-templates/side-panel/SidePanel.css.js +4 -0
- package/esm/shell-layout-templates/side-panel/SidePanel.css.js.map +1 -0
- package/esm/shell-layout-templates/side-panel/SidePanel.js +34 -0
- package/esm/shell-layout-templates/side-panel/SidePanel.js.map +1 -0
- package/esm/shell-layout-templates/simple-content-pane/useSimpleContentPane.js +46 -0
- package/esm/shell-layout-templates/simple-content-pane/useSimpleContentPane.js.map +1 -0
- package/esm/shell-layout-templates/useShellLayout.js +21 -0
- package/esm/shell-layout-templates/useShellLayout.js.map +1 -0
- package/esm/shell.css.js +4 -0
- package/esm/shell.css.js.map +1 -0
- package/esm/shell.js +159 -0
- package/esm/shell.js.map +1 -0
- package/esm/theme-switch/ThemeSwitch.css.js +4 -0
- package/esm/theme-switch/ThemeSwitch.css.js.map +1 -0
- package/esm/theme-switch/ThemeSwitch.js +54 -0
- package/esm/theme-switch/ThemeSwitch.js.map +1 -0
- package/esm/user-settings/SettingsForm.css.js +4 -0
- package/esm/user-settings/SettingsForm.css.js.map +1 -0
- package/esm/user-settings/SettingsForm.js +162 -0
- package/esm/user-settings/SettingsForm.js.map +1 -0
- package/esm/user-settings/UserSettingsPanel.css.js +4 -0
- package/esm/user-settings/UserSettingsPanel.css.js.map +1 -0
- package/esm/user-settings/UserSettingsPanel.js +40 -0
- package/esm/user-settings/UserSettingsPanel.js.map +1 -0
- package/esm/workspace-management/LayoutList.css.js +4 -0
- package/esm/workspace-management/LayoutList.css.js.map +1 -0
- package/esm/workspace-management/LayoutList.js +114 -0
- package/esm/workspace-management/LayoutList.js.map +1 -0
- package/esm/workspace-management/LayoutTile.css.js +4 -0
- package/esm/workspace-management/LayoutTile.css.js.map +1 -0
- package/esm/workspace-management/LayoutTile.js +39 -0
- package/esm/workspace-management/LayoutTile.js.map +1 -0
- package/esm/workspace-management/SaveLayoutPanel.css.js +4 -0
- package/esm/workspace-management/SaveLayoutPanel.css.js.map +1 -0
- package/esm/workspace-management/SaveLayoutPanel.js +127 -0
- package/esm/workspace-management/SaveLayoutPanel.js.map +1 -0
- package/esm/workspace-management/WorkspaceProvider.js +261 -0
- package/esm/workspace-management/WorkspaceProvider.js.map +1 -0
- package/esm/workspace-management/defaultWorkspaceJSON.js +95 -0
- package/esm/workspace-management/defaultWorkspaceJSON.js.map +1 -0
- package/esm/workspace-management/screenshot-utils.js +23 -0
- package/esm/workspace-management/screenshot-utils.js.map +1 -0
- package/esm/workspace-management/useWorkspaceContextMenuItems.js +70 -0
- package/esm/workspace-management/useWorkspaceContextMenuItems.js.map +1 -0
- package/package.json +13 -13
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var vuuLayout = require('@vuu-ui/vuu-layout');
|
|
5
|
+
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
6
|
+
var ContextPanel = require('../context-panel/ContextPanel.js');
|
|
7
|
+
var SidePanel = require('../side-panel/SidePanel.js');
|
|
8
|
+
var React = require('react');
|
|
9
|
+
var AppStatusBar = require('../../app-status-bar/AppStatusBar.js');
|
|
10
|
+
|
|
11
|
+
const useFullHeightLeftPanel = ({
|
|
12
|
+
appHeader,
|
|
13
|
+
SidePanelProps: LeftSidePanelProps,
|
|
14
|
+
htmlAttributes
|
|
15
|
+
}) => React.useMemo(
|
|
16
|
+
() => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17
|
+
vuuLayout.Flexbox,
|
|
18
|
+
{
|
|
19
|
+
...htmlAttributes,
|
|
20
|
+
style: {
|
|
21
|
+
...htmlAttributes?.style,
|
|
22
|
+
flexDirection: "row"
|
|
23
|
+
},
|
|
24
|
+
children: [
|
|
25
|
+
/* @__PURE__ */ jsxRuntime.jsx(SidePanel.SidePanel, { ...LeftSidePanelProps, id: vuuUtils.VuuShellLocation.SidePanel }),
|
|
26
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
27
|
+
vuuLayout.Flexbox,
|
|
28
|
+
{
|
|
29
|
+
className: "vuuShell-content",
|
|
30
|
+
style: { flex: 1, flexDirection: "column" },
|
|
31
|
+
children: [
|
|
32
|
+
appHeader,
|
|
33
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
34
|
+
vuuLayout.LayoutContainer,
|
|
35
|
+
{
|
|
36
|
+
id: vuuUtils.VuuShellLocation.WorkspaceContainer,
|
|
37
|
+
style: { flex: 1 }
|
|
38
|
+
},
|
|
39
|
+
"main-content"
|
|
40
|
+
),
|
|
41
|
+
/* @__PURE__ */ jsxRuntime.jsx(AppStatusBar.ApplicationStatusBar, {})
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
),
|
|
45
|
+
/* @__PURE__ */ jsxRuntime.jsx(ContextPanel.ContextPanel, { id: vuuUtils.VuuShellLocation.ContextPanel, overlay: true })
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
),
|
|
49
|
+
[LeftSidePanelProps, appHeader, htmlAttributes]
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
exports.useFullHeightLeftPanel = useFullHeightLeftPanel;
|
|
53
|
+
//# sourceMappingURL=useFullHeightLeftPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFullHeightLeftPanel.js","sources":["../../../src/shell-layout-templates/full-height-left-panel/useFullHeightLeftPanel.tsx"],"sourcesContent":["import { LayoutContainer, Flexbox } from \"@vuu-ui/vuu-layout\";\nimport { VuuShellLocation } from \"@vuu-ui/vuu-utils\";\nimport { ContextPanel } from \"../context-panel\";\nimport { SidePanel } from \"../side-panel\";\nimport { ShellLayoutTemplateHook } from \"../useShellLayout\";\nimport { useMemo } from \"react\";\nimport { ApplicationStatusBar } from \"../../app-status-bar\";\n\nexport const useFullHeightLeftPanel: ShellLayoutTemplateHook = ({\n appHeader,\n SidePanelProps: LeftSidePanelProps,\n htmlAttributes,\n}) =>\n useMemo(\n () => (\n <Flexbox\n {...htmlAttributes}\n style={{\n ...htmlAttributes?.style,\n flexDirection: \"row\",\n }}\n >\n <SidePanel {...LeftSidePanelProps} id={VuuShellLocation.SidePanel} />\n <Flexbox\n className=\"vuuShell-content\"\n style={{ flex: 1, flexDirection: \"column\" }}\n >\n {appHeader}\n <LayoutContainer\n id={VuuShellLocation.WorkspaceContainer}\n key=\"main-content\"\n style={{ flex: 1 }}\n />\n <ApplicationStatusBar />\n </Flexbox>\n <ContextPanel id={VuuShellLocation.ContextPanel} overlay></ContextPanel>\n </Flexbox>\n ),\n [LeftSidePanelProps, appHeader, htmlAttributes],\n );\n"],"names":["useMemo","jsxs","Flexbox","jsx","SidePanel","VuuShellLocation","LayoutContainer","ApplicationStatusBar","ContextPanel"],"mappings":";;;;;;;;;;AAQO,MAAM,yBAAkD,CAAC;AAAA,EAC9D,SAAA;AAAA,EACA,cAAgB,EAAA,kBAAA;AAAA,EAChB;AACF,CACE,KAAAA,aAAA;AAAA,EACE,sBACEC,eAAA;AAAA,IAACC,iBAAA;AAAA,IAAA;AAAA,MACE,GAAG,cAAA;AAAA,MACJ,KAAO,EAAA;AAAA,QACL,GAAG,cAAgB,EAAA,KAAA;AAAA,QACnB,aAAe,EAAA;AAAA,OACjB;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAC,cAAA,CAACC,mBAAW,EAAA,EAAA,GAAG,kBAAoB,EAAA,EAAA,EAAIC,0BAAiB,SAAW,EAAA,CAAA;AAAA,wBACnEJ,eAAA;AAAA,UAACC,iBAAA;AAAA,UAAA;AAAA,YACC,SAAU,EAAA,kBAAA;AAAA,YACV,KAAO,EAAA,EAAE,IAAM,EAAA,CAAA,EAAG,eAAe,QAAS,EAAA;AAAA,YAEzC,QAAA,EAAA;AAAA,cAAA,SAAA;AAAA,8BACDC,cAAA;AAAA,gBAACG,yBAAA;AAAA,gBAAA;AAAA,kBACC,IAAID,yBAAiB,CAAA,kBAAA;AAAA,kBAErB,KAAA,EAAO,EAAE,IAAA,EAAM,CAAE;AAAA,iBAAA;AAAA,gBADb;AAAA,eAEN;AAAA,6CACCE,iCAAqB,EAAA,EAAA;AAAA;AAAA;AAAA,SACxB;AAAA,uCACCC,yBAAa,EAAA,EAAA,EAAA,EAAIH,yBAAiB,CAAA,YAAA,EAAc,SAAO,IAAC,EAAA;AAAA;AAAA;AAAA,GAC3D;AAAA,EAEF,CAAC,kBAAoB,EAAA,SAAA,EAAW,cAAc;AAChD;;;;"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var vuuLayout = require('@vuu-ui/vuu-layout');
|
|
5
|
+
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
|
|
8
|
+
const useInlayLeftPanel = ({
|
|
9
|
+
SidePanelProps: LeftSidePanelProps,
|
|
10
|
+
appHeader,
|
|
11
|
+
htmlAttributes
|
|
12
|
+
}) => {
|
|
13
|
+
const paletteView = React.useRef(null);
|
|
14
|
+
const [open, setOpen] = React.useState(true);
|
|
15
|
+
const handleDrawerClick = React.useCallback(
|
|
16
|
+
(e) => {
|
|
17
|
+
const target = e.target;
|
|
18
|
+
if (!paletteView.current?.contains(target)) {
|
|
19
|
+
setOpen(!open);
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
[open]
|
|
23
|
+
);
|
|
24
|
+
return React.useMemo(() => {
|
|
25
|
+
const getDrawers = (leftSidePanel) => {
|
|
26
|
+
const drawers = [];
|
|
27
|
+
drawers.push(
|
|
28
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
29
|
+
vuuLayout.Drawer,
|
|
30
|
+
{
|
|
31
|
+
onClick: handleDrawerClick,
|
|
32
|
+
open,
|
|
33
|
+
position: "left",
|
|
34
|
+
inline: true,
|
|
35
|
+
peekaboo: true,
|
|
36
|
+
sizeOpen: 200,
|
|
37
|
+
toggleButton: "end",
|
|
38
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
39
|
+
vuuLayout.View,
|
|
40
|
+
{
|
|
41
|
+
className: "vuuShell-palette",
|
|
42
|
+
id: "vw-app-palette",
|
|
43
|
+
ref: paletteView,
|
|
44
|
+
style: { height: "100%" },
|
|
45
|
+
children: leftSidePanel
|
|
46
|
+
},
|
|
47
|
+
"app-palette"
|
|
48
|
+
)
|
|
49
|
+
},
|
|
50
|
+
"left-panel"
|
|
51
|
+
)
|
|
52
|
+
);
|
|
53
|
+
return drawers;
|
|
54
|
+
};
|
|
55
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
56
|
+
vuuLayout.Flexbox,
|
|
57
|
+
{
|
|
58
|
+
...htmlAttributes,
|
|
59
|
+
style: {
|
|
60
|
+
...htmlAttributes?.style,
|
|
61
|
+
flexDirection: "column"
|
|
62
|
+
},
|
|
63
|
+
children: [
|
|
64
|
+
appHeader,
|
|
65
|
+
/* @__PURE__ */ jsxRuntime.jsx(vuuLayout.DockLayout, { style: { flex: 1 }, children: getDrawers(LeftSidePanelProps?.children).concat(
|
|
66
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67
|
+
vuuLayout.LayoutContainer,
|
|
68
|
+
{
|
|
69
|
+
dropTarget: true,
|
|
70
|
+
id: vuuUtils.VuuShellLocation.WorkspaceContainer,
|
|
71
|
+
style: { width: "100%", height: "100%" }
|
|
72
|
+
},
|
|
73
|
+
"main-content"
|
|
74
|
+
)
|
|
75
|
+
) })
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
);
|
|
79
|
+
}, [LeftSidePanelProps, appHeader, handleDrawerClick, htmlAttributes, open]);
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
exports.useInlayLeftPanel = useInlayLeftPanel;
|
|
83
|
+
//# sourceMappingURL=useInlayLeftPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInlayLeftPanel.js","sources":["../../../src/shell-layout-templates/inlay-left-panel/useInlayLeftPanel.tsx"],"sourcesContent":["import {\n DockLayout,\n LayoutContainer,\n Drawer,\n Flexbox,\n View,\n} from \"@vuu-ui/vuu-layout\";\n\nimport { VuuShellLocation } from \"@vuu-ui/vuu-utils\";\nimport {\n MouseEvent,\n ReactElement,\n ReactNode,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { ShellLayoutTemplateHook } from \"../useShellLayout\";\n\nexport const useInlayLeftPanel: ShellLayoutTemplateHook = ({\n SidePanelProps: LeftSidePanelProps,\n appHeader,\n htmlAttributes,\n}) => {\n const paletteView = useRef<HTMLDivElement>(null);\n const [open, setOpen] = useState(true);\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 return useMemo(() => {\n const getDrawers = (leftSidePanel: ReactNode) => {\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\n return (\n <Flexbox\n {...htmlAttributes}\n style={{\n ...htmlAttributes?.style,\n flexDirection: \"column\",\n }}\n >\n {appHeader}\n <DockLayout style={{ flex: 1 }}>\n {getDrawers(LeftSidePanelProps?.children).concat(\n <LayoutContainer\n dropTarget\n id={VuuShellLocation.WorkspaceContainer}\n key=\"main-content\"\n style={{ width: \"100%\", height: \"100%\" }}\n />,\n )}\n </DockLayout>\n </Flexbox>\n );\n }, [LeftSidePanelProps, appHeader, handleDrawerClick, htmlAttributes, open]);\n};\n"],"names":["useRef","useState","useCallback","useMemo","jsx","Drawer","View","jsxs","Flexbox","DockLayout","LayoutContainer","VuuShellLocation"],"mappings":";;;;;;;AAoBO,MAAM,oBAA6C,CAAC;AAAA,EACzD,cAAgB,EAAA,kBAAA;AAAA,EAChB,SAAA;AAAA,EACA;AACF,CAAM,KAAA;AACJ,EAAM,MAAA,WAAA,GAAcA,aAAuB,IAAI,CAAA;AAC/C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIC,eAAS,IAAI,CAAA;AACrC,EAAA,MAAM,iBAAoB,GAAAC,iBAAA;AAAA,IACxB,CAAC,CAA+B,KAAA;AAC9B,MAAA,MAAM,SAAS,CAAE,CAAA,MAAA;AACjB,MAAA,IAAI,CAAC,WAAA,CAAY,OAAS,EAAA,QAAA,CAAS,MAAM,CAAG,EAAA;AAC1C,QAAA,OAAA,CAAQ,CAAC,IAAI,CAAA;AAAA;AACf,KACF;AAAA,IACA,CAAC,IAAI;AAAA,GACP;AAEA,EAAA,OAAOC,cAAQ,MAAM;AACnB,IAAM,MAAA,UAAA,GAAa,CAAC,aAA6B,KAAA;AAC/C,MAAA,MAAM,UAA0B,EAAC;AACjC,MAAQ,OAAA,CAAA,IAAA;AAAA,wBACNC,cAAA;AAAA,UAACC,gBAAA;AAAA,UAAA;AAAA,YAEC,OAAS,EAAA,iBAAA;AAAA,YACT,IAAA;AAAA,YACA,QAAS,EAAA,MAAA;AAAA,YACT,MAAM,EAAA,IAAA;AAAA,YACN,QAAQ,EAAA,IAAA;AAAA,YACR,QAAU,EAAA,GAAA;AAAA,YACV,YAAa,EAAA,KAAA;AAAA,YAEb,QAAA,kBAAAD,cAAA;AAAA,cAACE,cAAA;AAAA,cAAA;AAAA,gBACC,SAAU,EAAA,kBAAA;AAAA,gBACV,EAAG,EAAA,gBAAA;AAAA,gBAEH,GAAK,EAAA,WAAA;AAAA,gBACL,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAO,EAAA;AAAA,gBAEvB,QAAA,EAAA;AAAA,eAAA;AAAA,cAJG;AAAA;AAKN,WAAA;AAAA,UAjBI;AAAA;AAkBN,OACF;AAEA,MAAO,OAAA,OAAA;AAAA,KACT;AAEA,IACE,uBAAAC,eAAA;AAAA,MAACC,iBAAA;AAAA,MAAA;AAAA,QACE,GAAG,cAAA;AAAA,QACJ,KAAO,EAAA;AAAA,UACL,GAAG,cAAgB,EAAA,KAAA;AAAA,UACnB,aAAe,EAAA;AAAA,SACjB;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,SAAA;AAAA,0BACDJ,cAAA,CAACK,oBAAW,EAAA,EAAA,KAAA,EAAO,EAAE,IAAA,EAAM,GACxB,EAAA,QAAA,EAAA,UAAA,CAAW,kBAAoB,EAAA,QAAQ,CAAE,CAAA,MAAA;AAAA,4BACxCL,cAAA;AAAA,cAACM,yBAAA;AAAA,cAAA;AAAA,gBACC,UAAU,EAAA,IAAA;AAAA,gBACV,IAAIC,yBAAiB,CAAA,kBAAA;AAAA,gBAErB,KAAO,EAAA,EAAE,KAAO,EAAA,MAAA,EAAQ,QAAQ,MAAO;AAAA,eAAA;AAAA,cADnC;AAAA;AAEN,WAEJ,EAAA;AAAA;AAAA;AAAA,KACF;AAAA,KAED,CAAC,kBAAA,EAAoB,WAAW,iBAAmB,EAAA,cAAA,EAAgB,IAAI,CAAC,CAAA;AAC7E;;;;"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var vuuLayout = require('@vuu-ui/vuu-layout');
|
|
5
|
+
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
|
|
8
|
+
const useLeftMainTabs = ({
|
|
9
|
+
appHeader,
|
|
10
|
+
htmlAttributes,
|
|
11
|
+
ToolbarProps
|
|
12
|
+
}) => {
|
|
13
|
+
if (ToolbarProps === void 0) {
|
|
14
|
+
throw Error("LeftMainTabs layout requires ToolbarProps");
|
|
15
|
+
}
|
|
16
|
+
return React.useMemo(() => {
|
|
17
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
18
|
+
vuuLayout.Flexbox,
|
|
19
|
+
{
|
|
20
|
+
...htmlAttributes,
|
|
21
|
+
style: {
|
|
22
|
+
...htmlAttributes?.style,
|
|
23
|
+
flexDirection: "column"
|
|
24
|
+
},
|
|
25
|
+
children: [
|
|
26
|
+
appHeader,
|
|
27
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28
|
+
vuuLayout.StackLayout,
|
|
29
|
+
{
|
|
30
|
+
TabstripProps: {
|
|
31
|
+
className: `${vuuUtils.VuuShellLocation.MultiWorkspaceContainer}-tabs`
|
|
32
|
+
},
|
|
33
|
+
active: 0,
|
|
34
|
+
showTabs: "left",
|
|
35
|
+
style: { flex: 1 },
|
|
36
|
+
id: vuuUtils.VuuShellLocation.MultiWorkspaceContainer
|
|
37
|
+
}
|
|
38
|
+
)
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
);
|
|
42
|
+
}, [appHeader, htmlAttributes]);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
exports.useLeftMainTabs = useLeftMainTabs;
|
|
46
|
+
//# sourceMappingURL=useLeftMainTabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLeftMainTabs.js","sources":["../../../src/shell-layout-templates/left-main-tabs/useLeftMainTabs.tsx"],"sourcesContent":["import { Flexbox, StackLayout } from \"@vuu-ui/vuu-layout\";\n\nimport { VuuShellLocation } from \"@vuu-ui/vuu-utils\";\nimport { useMemo } from \"react\";\nimport { ShellLayoutTemplateHook } from \"../useShellLayout\";\n\nexport const useLeftMainTabs: ShellLayoutTemplateHook = ({\n appHeader,\n htmlAttributes,\n ToolbarProps,\n}) => {\n if (ToolbarProps === undefined) {\n throw Error(\"LeftMainTabs layout requires ToolbarProps\");\n }\n\n return useMemo(() => {\n return (\n <Flexbox\n {...htmlAttributes}\n style={{\n ...htmlAttributes?.style,\n flexDirection: \"column\",\n }}\n >\n {appHeader}\n <StackLayout\n TabstripProps={{\n className: `${VuuShellLocation.MultiWorkspaceContainer}-tabs`,\n }}\n active={0}\n showTabs=\"left\"\n style={{ flex: 1 }}\n id={VuuShellLocation.MultiWorkspaceContainer}\n />\n </Flexbox>\n );\n }, [appHeader, htmlAttributes]);\n};\n"],"names":["useMemo","jsxs","Flexbox","jsx","StackLayout","VuuShellLocation"],"mappings":";;;;;;;AAMO,MAAM,kBAA2C,CAAC;AAAA,EACvD,SAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAM,KAAA;AACJ,EAAA,IAAI,iBAAiB,KAAW,CAAA,EAAA;AAC9B,IAAA,MAAM,MAAM,2CAA2C,CAAA;AAAA;AAGzD,EAAA,OAAOA,cAAQ,MAAM;AACnB,IACE,uBAAAC,eAAA;AAAA,MAACC,iBAAA;AAAA,MAAA;AAAA,QACE,GAAG,cAAA;AAAA,QACJ,KAAO,EAAA;AAAA,UACL,GAAG,cAAgB,EAAA,KAAA;AAAA,UACnB,aAAe,EAAA;AAAA,SACjB;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,SAAA;AAAA,0BACDC,cAAA;AAAA,YAACC,qBAAA;AAAA,YAAA;AAAA,cACC,aAAe,EAAA;AAAA,gBACb,SAAA,EAAW,CAAG,EAAAC,yBAAA,CAAiB,uBAAuB,CAAA,KAAA;AAAA,eACxD;AAAA,cACA,MAAQ,EAAA,CAAA;AAAA,cACR,QAAS,EAAA,MAAA;AAAA,cACT,KAAA,EAAO,EAAE,IAAA,EAAM,CAAE,EAAA;AAAA,cACjB,IAAIA,yBAAiB,CAAA;AAAA;AAAA;AACvB;AAAA;AAAA,KACF;AAAA,GAED,EAAA,CAAC,SAAW,EAAA,cAAc,CAAC,CAAA;AAChC;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidePanel.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var cx = require('clsx');
|
|
6
|
+
var styles = require('@salt-ds/styles');
|
|
7
|
+
var window = require('@salt-ds/window');
|
|
8
|
+
var SidePanel$1 = require('./SidePanel.css.js');
|
|
9
|
+
|
|
10
|
+
const classBase = "vuuShellSidePanel";
|
|
11
|
+
const SidePanel = ({
|
|
12
|
+
children,
|
|
13
|
+
open = true,
|
|
14
|
+
sizeClosed = 90,
|
|
15
|
+
sizeOpen = 200,
|
|
16
|
+
style: styleProp,
|
|
17
|
+
...htmlAttributes
|
|
18
|
+
}) => {
|
|
19
|
+
const targetWindow = window.useWindow();
|
|
20
|
+
styles.useComponentCssInjection({
|
|
21
|
+
testId: "vuu-side-panel",
|
|
22
|
+
css: SidePanel$1,
|
|
23
|
+
window: targetWindow
|
|
24
|
+
});
|
|
25
|
+
const style = React.useMemo(
|
|
26
|
+
() => ({
|
|
27
|
+
...styleProp,
|
|
28
|
+
"--shell-left-nav-size": open ? `${sizeOpen}px` : `${sizeClosed}px`
|
|
29
|
+
}),
|
|
30
|
+
[open, sizeClosed, sizeOpen, styleProp]
|
|
31
|
+
);
|
|
32
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...htmlAttributes, className: cx(classBase), style, children });
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
exports.SidePanel = SidePanel;
|
|
36
|
+
//# sourceMappingURL=SidePanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidePanel.js","sources":["../../../src/shell-layout-templates/side-panel/SidePanel.tsx"],"sourcesContent":["import { CSSProperties, HTMLAttributes, useMemo } from \"react\";\nimport cx from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport sidePanelCss from \"./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 targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-side-panel\",\n css: sidePanelCss,\n window: targetWindow,\n });\n\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"],"names":["useWindow","useComponentCssInjection","sidePanelCss","useMemo","jsx"],"mappings":";;;;;;;;;AAQA,MAAM,SAAY,GAAA,mBAAA;AASX,MAAM,YAAY,CAAC;AAAA,EACxB,QAAA;AAAA,EACA,IAAO,GAAA,IAAA;AAAA,EACP,UAAa,GAAA,EAAA;AAAA,EACb,QAAW,GAAA,GAAA;AAAA,EACX,KAAO,EAAA,SAAA;AAAA,EACP,GAAG;AACL,CAAsB,KAAA;AACpB,EAAA,MAAM,eAAeA,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,gBAAA;AAAA,IACR,GAAK,EAAAC,WAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAQD,EAAA,MAAM,KAAQ,GAAAC,aAAA;AAAA,IACZ,OACG;AAAA,MACC,GAAG,SAAA;AAAA,MACH,yBAAyB,IAAO,GAAA,CAAA,EAAG,QAAQ,CAAA,EAAA,CAAA,GAAO,GAAG,UAAU,CAAA,EAAA;AAAA,KACjE,CAAA;AAAA,IACF,CAAC,IAAA,EAAM,UAAY,EAAA,QAAA,EAAU,SAAS;AAAA,GACxC;AACA,EACE,uBAAAC,cAAA,CAAC,SAAK,GAAG,cAAA,EAAgB,WAAW,EAAG,CAAA,SAAS,CAAG,EAAA,KAAA,EAChD,QACH,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var vuuLayout = require('@vuu-ui/vuu-layout');
|
|
5
|
+
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
6
|
+
var ContextPanel = require('../context-panel/ContextPanel.js');
|
|
7
|
+
var React = require('react');
|
|
8
|
+
|
|
9
|
+
const useSimpleContentPane = ({
|
|
10
|
+
appHeader,
|
|
11
|
+
htmlAttributes
|
|
12
|
+
}) => React.useMemo(
|
|
13
|
+
() => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
14
|
+
vuuLayout.Flexbox,
|
|
15
|
+
{
|
|
16
|
+
...htmlAttributes,
|
|
17
|
+
style: {
|
|
18
|
+
...htmlAttributes?.style,
|
|
19
|
+
flexDirection: "row"
|
|
20
|
+
},
|
|
21
|
+
children: [
|
|
22
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
23
|
+
vuuLayout.Flexbox,
|
|
24
|
+
{
|
|
25
|
+
className: "vuuShell-content",
|
|
26
|
+
style: { flex: 1, flexDirection: "column" },
|
|
27
|
+
children: [
|
|
28
|
+
appHeader,
|
|
29
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30
|
+
vuuLayout.LayoutContainer,
|
|
31
|
+
{
|
|
32
|
+
id: vuuUtils.VuuShellLocation.WorkspaceContainer,
|
|
33
|
+
style: { flex: 1 }
|
|
34
|
+
},
|
|
35
|
+
"main-content"
|
|
36
|
+
)
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
),
|
|
40
|
+
/* @__PURE__ */ jsxRuntime.jsx(ContextPanel.ContextPanel, { id: vuuUtils.VuuShellLocation.ContextPanel, overlay: true })
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
),
|
|
44
|
+
[appHeader, htmlAttributes]
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
exports.useSimpleContentPane = useSimpleContentPane;
|
|
48
|
+
//# sourceMappingURL=useSimpleContentPane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSimpleContentPane.js","sources":["../../../src/shell-layout-templates/simple-content-pane/useSimpleContentPane.tsx"],"sourcesContent":["import { LayoutContainer, Flexbox } from \"@vuu-ui/vuu-layout\";\nimport { VuuShellLocation } from \"@vuu-ui/vuu-utils\";\nimport { ContextPanel } from \"../context-panel\";\nimport { ShellLayoutTemplateHook } from \"../useShellLayout\";\nimport { useMemo } from \"react\";\n\nexport const useSimpleContentPane: ShellLayoutTemplateHook = ({\n appHeader,\n htmlAttributes,\n}) =>\n useMemo(\n () => (\n <Flexbox\n {...htmlAttributes}\n style={{\n ...htmlAttributes?.style,\n flexDirection: \"row\",\n }}\n >\n <Flexbox\n className=\"vuuShell-content\"\n style={{ flex: 1, flexDirection: \"column\" }}\n >\n {appHeader}\n <LayoutContainer\n id={VuuShellLocation.WorkspaceContainer}\n key=\"main-content\"\n style={{ flex: 1 }}\n />\n </Flexbox>\n <ContextPanel id={VuuShellLocation.ContextPanel} overlay></ContextPanel>\n </Flexbox>\n ),\n [appHeader, htmlAttributes],\n );\n"],"names":["useMemo","jsxs","Flexbox","jsx","LayoutContainer","VuuShellLocation","ContextPanel"],"mappings":";;;;;;;;AAMO,MAAM,uBAAgD,CAAC;AAAA,EAC5D,SAAA;AAAA,EACA;AACF,CACE,KAAAA,aAAA;AAAA,EACE,sBACEC,eAAA;AAAA,IAACC,iBAAA;AAAA,IAAA;AAAA,MACE,GAAG,cAAA;AAAA,MACJ,KAAO,EAAA;AAAA,QACL,GAAG,cAAgB,EAAA,KAAA;AAAA,QACnB,aAAe,EAAA;AAAA,OACjB;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,eAAA;AAAA,UAACC,iBAAA;AAAA,UAAA;AAAA,YACC,SAAU,EAAA,kBAAA;AAAA,YACV,KAAO,EAAA,EAAE,IAAM,EAAA,CAAA,EAAG,eAAe,QAAS,EAAA;AAAA,YAEzC,QAAA,EAAA;AAAA,cAAA,SAAA;AAAA,8BACDC,cAAA;AAAA,gBAACC,yBAAA;AAAA,gBAAA;AAAA,kBACC,IAAIC,yBAAiB,CAAA,kBAAA;AAAA,kBAErB,KAAA,EAAO,EAAE,IAAA,EAAM,CAAE;AAAA,iBAAA;AAAA,gBADb;AAAA;AAEN;AAAA;AAAA,SACF;AAAA,uCACCC,yBAAa,EAAA,EAAA,EAAA,EAAID,yBAAiB,CAAA,YAAA,EAAc,SAAO,IAAC,EAAA;AAAA;AAAA;AAAA,GAC3D;AAAA,EAEF,CAAC,WAAW,cAAc;AAC5B;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var useFullHeightLeftPanel = require('./full-height-left-panel/useFullHeightLeftPanel.js');
|
|
4
|
+
var useInlayLeftPanel = require('./inlay-left-panel/useInlayLeftPanel.js');
|
|
5
|
+
var useLeftMainTabs = require('./left-main-tabs/useLeftMainTabs.js');
|
|
6
|
+
var useSimpleContentPane = require('./simple-content-pane/useSimpleContentPane.js');
|
|
7
|
+
|
|
8
|
+
const LayoutHook = {
|
|
9
|
+
"full-height": useFullHeightLeftPanel.useFullHeightLeftPanel,
|
|
10
|
+
inlay: useInlayLeftPanel.useInlayLeftPanel,
|
|
11
|
+
"left-main-tabs": useLeftMainTabs.useLeftMainTabs,
|
|
12
|
+
"simple-content-pane": useSimpleContentPane.useSimpleContentPane
|
|
13
|
+
};
|
|
14
|
+
const useShellLayout = ({
|
|
15
|
+
layoutTemplateId = "simple-content-pane",
|
|
16
|
+
...props
|
|
17
|
+
}) => {
|
|
18
|
+
const useLayoutHook = LayoutHook[layoutTemplateId];
|
|
19
|
+
return useLayoutHook(props);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
exports.useShellLayout = useShellLayout;
|
|
23
|
+
//# sourceMappingURL=useShellLayout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useShellLayout.js","sources":["../../src/shell-layout-templates/useShellLayout.ts"],"sourcesContent":["import { HTMLAttributes, ReactElement, ReactNode } from \"react\";\nimport { useFullHeightLeftPanel } from \"./full-height-left-panel/useFullHeightLeftPanel\";\nimport { useInlayLeftPanel } from \"./inlay-left-panel/useInlayLeftPanel\";\nimport { useLeftMainTabs } from \"./left-main-tabs/useLeftMainTabs\";\nimport { useSimpleContentPane } from \"./simple-content-pane/useSimpleContentPane\";\nimport { SidePanelProps as ShellSidePanelProps } from \"./side-panel\";\n\nconst LayoutHook = {\n \"full-height\": useFullHeightLeftPanel,\n inlay: useInlayLeftPanel,\n \"left-main-tabs\": useLeftMainTabs,\n \"simple-content-pane\": useSimpleContentPane,\n};\n\nexport type LayoutTemplateId = keyof typeof LayoutHook;\n\nexport type ShellLayoutTemplateProps = Omit<\n ShellLayoutProps,\n \"layoutTemplateId\"\n>;\n\nexport type ShellToolbarProps = {\n children: ReactNode;\n position?: \"left\";\n width?: number;\n};\n\nexport type ShellLayoutTemplateHook = (\n props: ShellLayoutTemplateProps,\n) => ReactElement;\n\n/**\n * The Shell Layout is the outermost 'chrome' of the appliciation,\n * enclosing the main content area. It will be rendered by one of\n * two available templates, determined by the layoutTemplateId,\n */\nexport interface ShellLayoutProps {\n /**\n * App Header will be rendered in position determined by layout-template\n */\n appHeader?: ReactNode;\n\n /**\n * HTML attributes that will be applied to root div.\n */\n htmlAttributes?: HTMLAttributes<HTMLDivElement>;\n /**\n * identifier for shell layout template to be used. Default template\n * will be \"inlay\"\n */\n layoutTemplateId?: LayoutTemplateId;\n /**\n * If template renders SidePanel, these props will be provided\n */\n SidePanelProps?: ShellSidePanelProps;\n /**\n * If template renders Toolbar, these props will be provided\n */\n ToolbarProps?: ShellToolbarProps;\n}\n\n/**\n * This hook acts as a stub for the actual shell layout\n * template hooks. It will delegate to the appropriate shell\n * layout hook, based on the value of layoutTemplateId.\n */\nexport const useShellLayout = ({\n layoutTemplateId = \"simple-content-pane\",\n ...props\n}: ShellLayoutProps) => {\n const useLayoutHook = LayoutHook[layoutTemplateId];\n return useLayoutHook(props);\n};\n"],"names":["useFullHeightLeftPanel","useInlayLeftPanel","useLeftMainTabs","useSimpleContentPane"],"mappings":";;;;;;;AAOA,MAAM,UAAa,GAAA;AAAA,EACjB,aAAe,EAAAA,6CAAA;AAAA,EACf,KAAO,EAAAC,mCAAA;AAAA,EACP,gBAAkB,EAAAC,+BAAA;AAAA,EAClB,qBAAuB,EAAAC;AACzB,CAAA;AAsDO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,gBAAmB,GAAA,qBAAA;AAAA,EACnB,GAAG;AACL,CAAwB,KAAA;AACtB,EAAM,MAAA,aAAA,GAAgB,WAAW,gBAAgB,CAAA;AACjD,EAAA,OAAO,cAAc,KAAK,CAAA;AAC5B;;;;"}
|
package/cjs/shell.css.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var shellCss = ".vuuShell {\n background-color: var(\n --vuuShell-background,\n var(--salt-container-primary-background)\n );\n height: var(--vuuShell-height, 100vh);\n width: var(--vuuShell-width, 100vw);\n\n .left-main-tabs {\n --vuuOverflowContainer-width: 48px;\n }\n}\n\n.vuu-workspace-tabs {\n background: var(\n --vuuWorkspace-background,\n var(--salt-container-primary-background)\n );\n}\n\n.vuuShell-palette {\n --vuuView-border: none;\n --vuuView-margin: 0;\n}\n\n.vuuShell-warningPlaceholder {\n background-color: var(--salt-container-background-high);\n height: 100%;\n}\n\n/* until we reinstat5e the toolbar */\n.vuuToolbarProxy {\n background: var(--salt-container-primary-background);\n}\n\n.vuu-workspace-tabs > .vuuTabstrip > .vuuOverflowContainer-wrapContainer {\n background: var(--vuuShell-background, var(--vuu-color-gray-25));\n}\n\n.vuu-workspace-tabs {\n --vuuTab-height: 28px;\n border: solid 1px var(--salt-separable-primary-borderColor);\n border-top: none !important;\n border-radius: 6px;\n height: 100%;\n padding: 36px 8px 8px 8px;\n position: relative;\n width: 100%;\n}\n\n.vuu-workspace-tabs > .vuuTabstrip {\n left: 0px;\n padding-bottom: 7px;\n position: absolute !important;\n right: 0px;\n top: 0;\n}\n\n.vuuShell-content {\n padding: var(--vuuShell-content-padding, 8px);\n}\n";
|
|
4
|
+
|
|
5
|
+
module.exports = shellCss;
|
|
6
|
+
//# sourceMappingURL=shell.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
package/cjs/shell.js
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var vuuDataRemote = require('@vuu-ui/vuu-data-remote');
|
|
5
|
+
var vuuLayout = require('@vuu-ui/vuu-layout');
|
|
6
|
+
var vuuPopups = require('@vuu-ui/vuu-popups');
|
|
7
|
+
var vuuUtils = require('@vuu-ui/vuu-utils');
|
|
8
|
+
var styles = require('@salt-ds/styles');
|
|
9
|
+
var window = require('@salt-ds/window');
|
|
10
|
+
var React = require('react');
|
|
11
|
+
var AppHeader = require('./app-header/AppHeader.js');
|
|
12
|
+
var ApplicationProvider = require('./application-provider/ApplicationProvider.js');
|
|
13
|
+
var PersistenceProvider = require('./persistence-manager/PersistenceProvider.js');
|
|
14
|
+
var LocalPersistenceManager = require('./persistence-manager/LocalPersistenceManager.js');
|
|
15
|
+
require('@vuu-ui/vuu-ui-controls');
|
|
16
|
+
require('@salt-ds/core');
|
|
17
|
+
require('clsx');
|
|
18
|
+
require('./persistence-manager/StaticPersistenceManager.js');
|
|
19
|
+
var useShellLayout = require('./shell-layout-templates/useShellLayout.js');
|
|
20
|
+
var UserSettingsPanel = require('./user-settings/UserSettingsPanel.js');
|
|
21
|
+
require('html-to-image');
|
|
22
|
+
var WorkspaceProvider = require('./workspace-management/WorkspaceProvider.js');
|
|
23
|
+
require('./feature-and-layout-provider/FeatureAndLayoutProvider.js');
|
|
24
|
+
var defaultWorkspaceJSON = require('./workspace-management/defaultWorkspaceJSON.js');
|
|
25
|
+
var useWorkspaceContextMenuItems = require('./workspace-management/useWorkspaceContextMenuItems.js');
|
|
26
|
+
var shell = require('./shell.css.js');
|
|
27
|
+
var vuuContextMenu = require('@vuu-ui/vuu-context-menu');
|
|
28
|
+
|
|
29
|
+
vuuUtils.registerComponent("ApplicationSettings", UserSettingsPanel.UserSettingsPanel, "view");
|
|
30
|
+
if (process.env.NODE_ENV === "production") {
|
|
31
|
+
if (typeof vuuLayout.StackLayout !== "function") {
|
|
32
|
+
console.warn(
|
|
33
|
+
"StackLayout module not loaded, will be unable to deserialize from layout JSON"
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const { error } = vuuUtils.logger("Shell");
|
|
38
|
+
const defaultAppHeader = /* @__PURE__ */ jsxRuntime.jsx(AppHeader.AppHeader, {});
|
|
39
|
+
const getAppHeader = (shellLayoutProps) => shellLayoutProps?.appHeader ?? defaultAppHeader;
|
|
40
|
+
const defaultHTMLAttributes = {
|
|
41
|
+
className: "vuuShell"
|
|
42
|
+
};
|
|
43
|
+
const getHTMLAttributes = (props) => {
|
|
44
|
+
if (props?.htmlAttributes) {
|
|
45
|
+
return {
|
|
46
|
+
...defaultHTMLAttributes,
|
|
47
|
+
...props.htmlAttributes
|
|
48
|
+
};
|
|
49
|
+
} else {
|
|
50
|
+
return defaultHTMLAttributes;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
const VuuApplication = ({
|
|
54
|
+
shellLayoutProps: ShellLayoutProps2,
|
|
55
|
+
children,
|
|
56
|
+
// loginUrl, // need to make this available to app header
|
|
57
|
+
serverUrl,
|
|
58
|
+
user
|
|
59
|
+
}) => {
|
|
60
|
+
const targetWindow = window.useWindow();
|
|
61
|
+
styles.useComponentCssInjection({
|
|
62
|
+
testId: "vuu-shell",
|
|
63
|
+
css: shell,
|
|
64
|
+
window: targetWindow
|
|
65
|
+
});
|
|
66
|
+
const notify = vuuPopups.useNotifications();
|
|
67
|
+
const { workspaceJSON, saveApplicationLayout } = WorkspaceProvider.useWorkspace();
|
|
68
|
+
const { buildMenuOptions, handleMenuAction } = useWorkspaceContextMenuItems.useWorkspaceContextMenuItems();
|
|
69
|
+
const handleLayoutChange = React.useCallback(
|
|
70
|
+
(layout) => {
|
|
71
|
+
try {
|
|
72
|
+
saveApplicationLayout(layout);
|
|
73
|
+
} catch {
|
|
74
|
+
error?.("Failed to save layout");
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
[saveApplicationLayout]
|
|
78
|
+
);
|
|
79
|
+
React.useMemo(async () => {
|
|
80
|
+
if (serverUrl && user.token) {
|
|
81
|
+
const connectionResult = await vuuDataRemote.ConnectionManager.connect({
|
|
82
|
+
token: user.token,
|
|
83
|
+
url: serverUrl,
|
|
84
|
+
username: user.username
|
|
85
|
+
});
|
|
86
|
+
if (connectionResult === "rejected") {
|
|
87
|
+
notify({
|
|
88
|
+
type: "error",
|
|
89
|
+
body: "Unable to connect to VUU Server",
|
|
90
|
+
header: "Error"
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
} else {
|
|
94
|
+
console.warn(
|
|
95
|
+
`Shell: serverUrl: '${serverUrl}', token: '${Array(user.token.length).fill("#").join("")}'
|
|
96
|
+
`
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
}, [notify, serverUrl, user.token, user.username]);
|
|
100
|
+
const isLayoutLoading = workspaceJSON === defaultWorkspaceJSON.loadingJSON;
|
|
101
|
+
const initialLayout = useShellLayout.useShellLayout({
|
|
102
|
+
...ShellLayoutProps2,
|
|
103
|
+
appHeader: getAppHeader(ShellLayoutProps2),
|
|
104
|
+
htmlAttributes: getHTMLAttributes(ShellLayoutProps2)
|
|
105
|
+
});
|
|
106
|
+
return isLayoutLoading ? null : /* @__PURE__ */ jsxRuntime.jsxs(
|
|
107
|
+
vuuContextMenu.ContextMenuProvider,
|
|
108
|
+
{
|
|
109
|
+
menuActionHandler: handleMenuAction,
|
|
110
|
+
menuBuilder: buildMenuOptions,
|
|
111
|
+
children: [
|
|
112
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
113
|
+
vuuLayout.LayoutProvider,
|
|
114
|
+
{
|
|
115
|
+
workspaceJSON,
|
|
116
|
+
onLayoutChange: handleLayoutChange,
|
|
117
|
+
children: initialLayout
|
|
118
|
+
}
|
|
119
|
+
),
|
|
120
|
+
children
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
);
|
|
124
|
+
};
|
|
125
|
+
const Shell = ({
|
|
126
|
+
loginUrl,
|
|
127
|
+
user,
|
|
128
|
+
userSettingsSchema,
|
|
129
|
+
workspaceProps,
|
|
130
|
+
...props
|
|
131
|
+
}) => {
|
|
132
|
+
const persistenceManager = PersistenceProvider.usePersistenceManager();
|
|
133
|
+
const localPersistenceManager = React.useMemo(() => {
|
|
134
|
+
if (persistenceManager) {
|
|
135
|
+
return void 0;
|
|
136
|
+
}
|
|
137
|
+
console.log(
|
|
138
|
+
`No Persistence Manager, configuration data will be persisted to Local Storage, key: 'vuu/${user.username}'`
|
|
139
|
+
);
|
|
140
|
+
return new LocalPersistenceManager.LocalPersistenceManager(`vuu/${user.username}`);
|
|
141
|
+
}, [persistenceManager, user.username]);
|
|
142
|
+
const shellProviders = /* @__PURE__ */ jsxRuntime.jsx(
|
|
143
|
+
ApplicationProvider.ApplicationProvider,
|
|
144
|
+
{
|
|
145
|
+
density: "high",
|
|
146
|
+
loginUrl,
|
|
147
|
+
theme: "vuu-theme",
|
|
148
|
+
user,
|
|
149
|
+
userSettingsSchema,
|
|
150
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(WorkspaceProvider.WorkspaceProvider, { ...workspaceProps, children: /* @__PURE__ */ jsxRuntime.jsx(vuuPopups.DialogProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(vuuPopups.NotificationsProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(VuuApplication, { ...props, user }) }) }) })
|
|
151
|
+
}
|
|
152
|
+
);
|
|
153
|
+
if (persistenceManager) {
|
|
154
|
+
return shellProviders;
|
|
155
|
+
} else {
|
|
156
|
+
return /* @__PURE__ */ jsxRuntime.jsx(PersistenceProvider.PersistenceProvider, { persistenceManager: localPersistenceManager, children: shellProviders });
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
exports.Shell = Shell;
|
|
161
|
+
//# sourceMappingURL=shell.js.map
|
package/cjs/shell.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.js","sources":["../src/shell.tsx"],"sourcesContent":["import { ConnectionManager } from \"@vuu-ui/vuu-data-remote\";\nimport type { LayoutChangeHandler } from \"@vuu-ui/vuu-layout\";\nimport { LayoutProvider, StackLayout } from \"@vuu-ui/vuu-layout\";\nimport {\n DialogProvider,\n NotificationsProvider,\n useNotifications,\n} from \"@vuu-ui/vuu-popups\";\nimport { VuuUser, logger, registerComponent } from \"@vuu-ui/vuu-utils\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { HTMLAttributes, ReactNode, useCallback, useMemo } from \"react\";\nimport { AppHeader } from \"./app-header\";\nimport { ApplicationProvider } from \"./application-provider\";\nimport {\n IPersistenceManager,\n LocalPersistenceManager,\n PersistenceProvider,\n usePersistenceManager,\n} from \"./persistence-manager\";\nimport { ShellLayoutProps, useShellLayout } from \"./shell-layout-templates\";\nimport { SettingsSchema, UserSettingsPanel } from \"./user-settings\";\nimport {\n WorkspaceProps,\n WorkspaceProvider,\n useWorkspace,\n useWorkspaceContextMenuItems,\n} from \"./workspace-management\";\n\nimport shellCss from \"./shell.css\";\nimport { loadingJSON } from \"./workspace-management/defaultWorkspaceJSON\";\nimport { ContextMenuProvider } from \"@vuu-ui/vuu-context-menu\";\n\nregisterComponent(\"ApplicationSettings\", UserSettingsPanel, \"view\");\n\nif (process.env.NODE_ENV === \"production\") {\n // StackLayout is loaded just to force component registration, we know it will be\n // required when default layout is instantiated. This is only required in prod\n // to avoif tree shaking the Stack away. Causes a runtime issue in dev.\n if (typeof StackLayout !== \"function\") {\n console.warn(\n \"StackLayout module not loaded, will be unable to deserialize from layout JSON\",\n );\n }\n}\n\nconst { error } = logger(\"Shell\");\n\nexport type LayoutTemplateName = \"full-height\" | \"inlay\";\n\nexport interface ShellProps extends HTMLAttributes<HTMLDivElement> {\n shellLayoutProps?: ShellLayoutProps;\n userSettingsSchema?: SettingsSchema;\n workspaceProps?: WorkspaceProps;\n children?: ReactNode;\n loginUrl?: string;\n saveUrl?: string;\n serverUrl?: string;\n user: VuuUser;\n}\n\nconst defaultAppHeader = <AppHeader />;\n\nconst getAppHeader = (shellLayoutProps?: ShellLayoutProps) =>\n shellLayoutProps?.appHeader ?? defaultAppHeader;\n\nconst defaultHTMLAttributes: HTMLAttributes<HTMLDivElement> = {\n className: \"vuuShell\",\n};\n\nconst getHTMLAttributes = (props?: ShellLayoutProps) => {\n if (props?.htmlAttributes) {\n return {\n ...defaultHTMLAttributes,\n ...props.htmlAttributes,\n };\n } else {\n return defaultHTMLAttributes;\n }\n};\n\nconst VuuApplication = ({\n shellLayoutProps: ShellLayoutProps,\n children,\n // loginUrl, // need to make this available to app header\n serverUrl,\n user,\n}: Omit<\n ShellProps,\n \"ContentLayoutProps\" | \"loginUrl\" | \"userSettingsSchema\" | \"workspaceProps\"\n>) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-shell\",\n css: shellCss,\n window: targetWindow,\n });\n\n const notify = useNotifications();\n const { workspaceJSON, saveApplicationLayout } = useWorkspace();\n\n const { buildMenuOptions, handleMenuAction } = useWorkspaceContextMenuItems();\n\n const handleLayoutChange = useCallback<LayoutChangeHandler>(\n (layout) => {\n try {\n saveApplicationLayout(layout);\n } catch {\n error?.(\"Failed to save layout\");\n }\n },\n [saveApplicationLayout],\n );\n\n useMemo(async () => {\n if (serverUrl && user.token) {\n const connectionResult = await ConnectionManager.connect({\n token: user.token,\n url: serverUrl,\n username: user.username,\n });\n if (connectionResult === \"rejected\") {\n notify({\n type: \"error\",\n body: \"Unable to connect to VUU Server\",\n header: \"Error\",\n });\n }\n } else {\n console.warn(\n `Shell: serverUrl: '${serverUrl}', token: '${Array(user.token.length)\n .fill(\"#\")\n .join(\"\")}' \n `,\n );\n }\n }, [notify, serverUrl, user.token, user.username]);\n\n const isLayoutLoading = workspaceJSON === loadingJSON;\n\n const initialLayout = useShellLayout({\n ...ShellLayoutProps,\n appHeader: getAppHeader(ShellLayoutProps),\n htmlAttributes: getHTMLAttributes(ShellLayoutProps),\n });\n\n return isLayoutLoading ? null : (\n <ContextMenuProvider\n menuActionHandler={handleMenuAction}\n menuBuilder={buildMenuOptions}\n >\n <LayoutProvider\n workspaceJSON={workspaceJSON}\n onLayoutChange={handleLayoutChange}\n >\n {initialLayout}\n </LayoutProvider>\n {children}\n </ContextMenuProvider>\n );\n};\n\nexport const Shell = ({\n loginUrl,\n user,\n userSettingsSchema,\n workspaceProps,\n ...props\n}: ShellProps) => {\n // If user has provided an implementation of IPersistenceManager\n // by wrapping higher level PersistenceProvider, use it, otw\n // default to LocalPersistenceManager\n const persistenceManager = usePersistenceManager();\n const localPersistenceManager = useMemo<\n IPersistenceManager | undefined\n >(() => {\n if (persistenceManager) {\n return undefined;\n }\n console.log(\n `No Persistence Manager, configuration data will be persisted to Local Storage, key: 'vuu/${user.username}'`,\n );\n return new LocalPersistenceManager(`vuu/${user.username}`);\n }, [persistenceManager, user.username]);\n\n // ApplicationProvider must go outside Dialog and Notification providers\n // ApplicationProvider injects the SaltProvider and this must be the root\n // SaltProvider.\n\n const shellProviders = (\n <ApplicationProvider\n density=\"high\"\n loginUrl={loginUrl}\n theme=\"vuu-theme\"\n user={user}\n userSettingsSchema={userSettingsSchema}\n >\n <WorkspaceProvider {...workspaceProps}>\n <DialogProvider>\n <NotificationsProvider>\n <VuuApplication {...props} user={user} />\n </NotificationsProvider>\n </DialogProvider>\n </WorkspaceProvider>\n </ApplicationProvider>\n );\n\n if (persistenceManager) {\n return shellProviders;\n } else {\n return (\n <PersistenceProvider persistenceManager={localPersistenceManager}>\n {shellProviders}\n </PersistenceProvider>\n );\n }\n};\n"],"names":["registerComponent","UserSettingsPanel","StackLayout","logger","AppHeader","ShellLayoutProps","useWindow","useComponentCssInjection","shellCss","useNotifications","useWorkspace","useWorkspaceContextMenuItems","useCallback","useMemo","ConnectionManager","loadingJSON","useShellLayout","jsxs","ContextMenuProvider","jsx","LayoutProvider","usePersistenceManager","LocalPersistenceManager","ApplicationProvider","WorkspaceProvider","DialogProvider","NotificationsProvider","PersistenceProvider"],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var themeSwitchCss = "\n.vuuThemeSwitch {\n --saltButton-minWidth: 22px;\n --svg-light: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 48\"><path d=\"M24 31q2.9 0 4.95-2.05Q31 26.9 31 24q0-2.9-2.05-4.95Q26.9 17 24 17q-2.9 0-4.95 2.05Q17 21.1 17 24q0 2.9 2.05 4.95Q21.1 31 24 31Zm0 3q-4.15 0-7.075-2.925T14 24q0-4.15 2.925-7.075T24 14q4.15 0 7.075 2.925T34 24q0 4.15-2.925 7.075T24 34ZM3.5 25.5q-.65 0-1.075-.425Q2 24.65 2 24q0-.65.425-1.075Q2.85 22.5 3.5 22.5h5q.65 0 1.075.425Q10 23.35 10 24q0 .65-.425 1.075-.425.425-1.075.425Zm36 0q-.65 0-1.075-.425Q38 24.65 38 24q0-.65.425-1.075.425-.425 1.075-.425h5q.65 0 1.075.425Q46 23.35 46 24q0 .65-.425 1.075-.425.425-1.075.425ZM24 10q-.65 0-1.075-.425Q22.5 9.15 22.5 8.5v-5q0-.65.425-1.075Q23.35 2 24 2q.65 0 1.075.425.425.425.425 1.075v5q0 .65-.425 1.075Q24.65 10 24 10Zm0 36q-.65 0-1.075-.425-.425-.425-.425-1.075v-5q0-.65.425-1.075Q23.35 38 24 38q.65 0 1.075.425.425.425.425 1.075v5q0 .65-.425 1.075Q24.65 46 24 46ZM12 14.1l-2.85-2.8q-.45-.45-.425-1.075.025-.625.425-1.075.45-.45 1.075-.45t1.075.45L14.1 12q.4.45.4 1.05 0 .6-.4 1-.4.45-1.025.45-.625 0-1.075-.4Zm24.7 24.75L33.9 36q-.4-.45-.4-1.075t.45-1.025q.4-.45 1-.45t1.05.45l2.85 2.8q.45.45.425 1.075-.025.625-.425 1.075-.45.45-1.075.45t-1.075-.45ZM33.9 14.1q-.45-.45-.45-1.05 0-.6.45-1.05l2.8-2.85q.45-.45 1.075-.425.625.025 1.075.425.45.45.45 1.075t-.45 1.075L36 14.1q-.4.4-1.025.4-.625 0-1.075-.4ZM9.15 38.85q-.45-.45-.45-1.075t.45-1.075L12 33.9q.45-.45 1.05-.45.6 0 1.05.45.45.45.45 1.05 0 .6-.45 1.05l-2.8 2.85q-.45.45-1.075.425-.625-.025-1.075-.425ZM24 24Z\"/></svg>');\n --svg-dark: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 48 48\"><path d=\"M24 42q-7.5 0-12.75-5.25T6 24q0-7.5 5.25-12.75T24 6q.4 0 .85.025.45.025 1.15.075-1.8 1.6-2.8 3.95-1 2.35-1 4.95 0 4.5 3.15 7.65Q28.5 25.8 33 25.8q2.6 0 4.95-.925T41.9 22.3q.05.6.075.975Q42 23.65 42 24q0 7.5-5.25 12.75T24 42Zm0-3q5.45 0 9.5-3.375t5.05-7.925q-1.25.55-2.675.825Q34.45 28.8 33 28.8q-5.75 0-9.775-4.025T19.2 15q0-1.2.25-2.575.25-1.375.9-3.125-4.9 1.35-8.125 5.475Q9 18.9 9 24q0 6.25 4.375 10.625T24 39Zm-.2-14.85Z\"/></svg>');\n padding: 2px;\n}\n\n.salt-density-high .vuuThemeSwitch {\n --saltButton-minWidth: 16px;\n --saltButton-width: 18px;\n --vuuThemeSwitch-iconSize: 16px;\n}\n\n.vuuThemeSwitch [data-icon] {\n --vuu-icon-size: var(--vuuThemeSwitch-iconSize,18px);\n}\n\n.vuuThemeSwitch [data-icon='light'] {\n --vuu-icon-svg: var(--svg-light);\n}\n.vuuThemeSwitch [data-icon='dark'] {\n --vuu-icon-svg: var(--svg-dark);\n}\n\n.vuuThemeSwitch .saltToggleButton {\n height: 20px;\n width: 20px;\n}\n\n";
|
|
4
|
+
|
|
5
|
+
module.exports = themeSwitchCss;
|
|
6
|
+
//# sourceMappingURL=ThemeSwitch.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeSwitch.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var cx = require('clsx');
|
|
5
|
+
var core = require('@salt-ds/core');
|
|
6
|
+
var styles = require('@salt-ds/styles');
|
|
7
|
+
var window = require('@salt-ds/window');
|
|
8
|
+
var React = require('react');
|
|
9
|
+
var ThemeSwitch$1 = require('./ThemeSwitch.css.js');
|
|
10
|
+
|
|
11
|
+
const classBase = "vuuThemeSwitch";
|
|
12
|
+
const ThemeSwitch = ({
|
|
13
|
+
className: classNameProp,
|
|
14
|
+
defaultMode: defaultModeProp,
|
|
15
|
+
mode: modeProp,
|
|
16
|
+
onChange,
|
|
17
|
+
...htmlAttributes
|
|
18
|
+
}) => {
|
|
19
|
+
const targetWindow = window.useWindow();
|
|
20
|
+
styles.useComponentCssInjection({
|
|
21
|
+
testId: "vuu-theme-switch",
|
|
22
|
+
css: ThemeSwitch$1,
|
|
23
|
+
window: targetWindow
|
|
24
|
+
});
|
|
25
|
+
const [mode, setMode] = core.useControlled({
|
|
26
|
+
controlled: modeProp,
|
|
27
|
+
default: defaultModeProp ?? "light",
|
|
28
|
+
name: "ThemeSwitch",
|
|
29
|
+
state: "mode"
|
|
30
|
+
});
|
|
31
|
+
const handleChangeSecondary = React.useCallback(
|
|
32
|
+
(evt) => {
|
|
33
|
+
const { value } = evt.target;
|
|
34
|
+
setMode(value);
|
|
35
|
+
onChange(value);
|
|
36
|
+
},
|
|
37
|
+
[onChange, setMode]
|
|
38
|
+
);
|
|
39
|
+
const className = cx(classBase, classNameProp);
|
|
40
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
41
|
+
core.ToggleButtonGroup,
|
|
42
|
+
{
|
|
43
|
+
className,
|
|
44
|
+
...htmlAttributes,
|
|
45
|
+
onChange: handleChangeSecondary,
|
|
46
|
+
value: mode,
|
|
47
|
+
children: [
|
|
48
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.ToggleButton, { "aria-label": "alert", "data-icon": "light", value: "light" }),
|
|
49
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.ToggleButton, { "aria-label": "home", "data-icon": "dark", value: "dark" })
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
exports.ThemeSwitch = ThemeSwitch;
|
|
56
|
+
//# sourceMappingURL=ThemeSwitch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeSwitch.js","sources":["../../src/theme-switch/ThemeSwitch.tsx"],"sourcesContent":["import cx from \"clsx\";\nimport { ToggleButton, ToggleButtonGroup, useControlled } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { HTMLAttributes, SyntheticEvent, useCallback } from \"react\";\nimport { ThemeMode } from \"@vuu-ui/vuu-utils\";\n\nimport themeSwitchCss from \"./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 targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-theme-switch\",\n css: themeSwitchCss,\n window: targetWindow,\n });\n\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=\"light\" />\n <ToggleButton aria-label=\"home\" data-icon=\"dark\" value=\"dark\" />\n </ToggleButtonGroup>\n );\n};\n"],"names":["useWindow","useComponentCssInjection","themeSwitchCss","useControlled","useCallback","jsxs","ToggleButtonGroup","jsx","ToggleButton"],"mappings":";;;;;;;;;;AASA,MAAM,SAAY,GAAA,gBAAA;AAQX,MAAM,cAAc,CAAC;AAAA,EAC1B,SAAW,EAAA,aAAA;AAAA,EACX,WAAa,EAAA,eAAA;AAAA,EACb,IAAM,EAAA,QAAA;AAAA,EACN,QAAA;AAAA,EACA,GAAG;AACL,CAAwB,KAAA;AACtB,EAAA,MAAM,eAAeA,gBAAU,EAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,kBAAA;AAAA,IACR,GAAK,EAAAC,aAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIC,kBAAyB,CAAA;AAAA,IAC/C,UAAY,EAAA,QAAA;AAAA,IACZ,SAAS,eAAmB,IAAA,OAAA;AAAA,IAC5B,IAAM,EAAA,aAAA;AAAA,IACN,KAAO,EAAA;AAAA,GACR,CAAA;AAED,EAAA,MAAM,qBAAwB,GAAAC,iBAAA;AAAA,IAC5B,CAAC,GAA2C,KAAA;AAC1C,MAAM,MAAA,EAAE,KAAM,EAAA,GAAI,GAAI,CAAA,MAAA;AACtB,MAAA,OAAA,CAAQ,KAAkB,CAAA;AAC1B,MAAA,QAAA,CAAS,KAAkB,CAAA;AAAA,KAC7B;AAAA,IACA,CAAC,UAAU,OAAO;AAAA,GACpB;AACA,EAAM,MAAA,SAAA,GAAY,EAAG,CAAA,SAAA,EAAW,aAAa,CAAA;AAC7C,EACE,uBAAAC,eAAA;AAAA,IAACC,sBAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACC,GAAG,cAAA;AAAA,MACJ,QAAU,EAAA,qBAAA;AAAA,MACV,KAAO,EAAA,IAAA;AAAA,MAEP,QAAA,EAAA;AAAA,wBAAAC,cAAA,CAACC,qBAAa,YAAW,EAAA,OAAA,EAAQ,WAAU,EAAA,OAAA,EAAQ,OAAM,OAAQ,EAAA,CAAA;AAAA,uCAChEA,iBAAa,EAAA,EAAA,YAAA,EAAW,QAAO,WAAU,EAAA,MAAA,EAAO,OAAM,MAAO,EAAA;AAAA;AAAA;AAAA,GAChE;AAEJ;;;;"}
|