@vuu-ui/vuu-shell 0.6.24-debug → 0.6.25-debug
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/index.js +171 -88
- package/cjs/index.js.map +4 -4
- package/esm/index.js +160 -77
- package/esm/index.js.map +4 -4
- package/index.css +60 -0
- package/index.css.map +3 -3
- package/package.json +4 -4
- package/types/app-header/AppHeader.d.ts +4 -1
- package/types/connection-status/ConnectionStatusIcon.d.ts +11 -0
- package/types/connection-status/index.d.ts +1 -0
- package/types/density-switch/DensitySwitch.d.ts +8 -0
- package/types/density-switch/index.d.ts +1 -0
- package/types/index.d.ts +1 -0
package/esm/index.js
CHANGED
|
@@ -1,11 +1,49 @@
|
|
|
1
|
+
// src/connection-status/ConnectionStatusIcon.tsx
|
|
2
|
+
import React, { useEffect, useState } from "react";
|
|
3
|
+
import cx from "classnames";
|
|
4
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
var ConnectionStatusIcon = ({ connectionStatus, className, element = "span", ...props }) => {
|
|
6
|
+
const [classBase5, setClassBase] = useState("vuuConnectingStatus");
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
switch (connectionStatus) {
|
|
9
|
+
case "connected":
|
|
10
|
+
case "reconnected":
|
|
11
|
+
setClassBase("vuuActiveStatus");
|
|
12
|
+
break;
|
|
13
|
+
case "connecting":
|
|
14
|
+
setClassBase("vuuConnectingStatus");
|
|
15
|
+
break;
|
|
16
|
+
case "disconnected":
|
|
17
|
+
setClassBase("vuuDisconnectedStatus");
|
|
18
|
+
break;
|
|
19
|
+
default:
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
}, [connectionStatus]);
|
|
23
|
+
const statusIcon = React.createElement(
|
|
24
|
+
element,
|
|
25
|
+
{
|
|
26
|
+
...props,
|
|
27
|
+
className: cx("vuuStatus vuuIcon", classBase5, className)
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", { className: "vuuStatus-container salt-theme", children: [
|
|
31
|
+
statusIcon,
|
|
32
|
+
/* @__PURE__ */ jsxs("div", { className: "vuuStatus-text", children: [
|
|
33
|
+
"Status: ",
|
|
34
|
+
connectionStatus.toUpperCase()
|
|
35
|
+
] })
|
|
36
|
+
] }) });
|
|
37
|
+
};
|
|
38
|
+
|
|
1
39
|
// src/feature/Feature.tsx
|
|
2
|
-
import
|
|
40
|
+
import React3, { Suspense } from "react";
|
|
3
41
|
import { registerComponent } from "@vuu-ui/vuu-layout";
|
|
4
42
|
|
|
5
43
|
// src/feature/ErrorBoundary.jsx
|
|
6
|
-
import
|
|
7
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
-
var ErrorBoundary = class extends
|
|
44
|
+
import React2 from "react";
|
|
45
|
+
import { Fragment as Fragment2, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
46
|
+
var ErrorBoundary = class extends React2.Component {
|
|
9
47
|
constructor(props) {
|
|
10
48
|
super(props);
|
|
11
49
|
this.state = { errorMessage: null };
|
|
@@ -18,9 +56,9 @@ var ErrorBoundary = class extends React.Component {
|
|
|
18
56
|
}
|
|
19
57
|
render() {
|
|
20
58
|
if (this.state.errorMessage) {
|
|
21
|
-
return /* @__PURE__ */
|
|
22
|
-
/* @__PURE__ */
|
|
23
|
-
/* @__PURE__ */
|
|
59
|
+
return /* @__PURE__ */ jsxs2(Fragment2, { children: [
|
|
60
|
+
/* @__PURE__ */ jsx2("h1", { children: "Something went wrong." }),
|
|
61
|
+
/* @__PURE__ */ jsx2("p", { children: this.state.errorMessage })
|
|
24
62
|
] });
|
|
25
63
|
}
|
|
26
64
|
return this.props.children;
|
|
@@ -28,8 +66,8 @@ var ErrorBoundary = class extends React.Component {
|
|
|
28
66
|
};
|
|
29
67
|
|
|
30
68
|
// src/feature/Loader.tsx
|
|
31
|
-
import { jsx as
|
|
32
|
-
var Loader = () => /* @__PURE__ */
|
|
69
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
70
|
+
var Loader = () => /* @__PURE__ */ jsx3("div", { className: "hwLoader", children: "loading" });
|
|
33
71
|
|
|
34
72
|
// src/feature/css-module-loader.ts
|
|
35
73
|
var importCSS = async (path) => {
|
|
@@ -38,7 +76,7 @@ var importCSS = async (path) => {
|
|
|
38
76
|
};
|
|
39
77
|
|
|
40
78
|
// src/feature/Feature.tsx
|
|
41
|
-
import { jsx as
|
|
79
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
42
80
|
function RawFeature({
|
|
43
81
|
url,
|
|
44
82
|
css,
|
|
@@ -53,25 +91,25 @@ function RawFeature({
|
|
|
53
91
|
];
|
|
54
92
|
});
|
|
55
93
|
}
|
|
56
|
-
const LazyFeature =
|
|
94
|
+
const LazyFeature = React3.lazy(() => import(
|
|
57
95
|
/* @vite-ignore */
|
|
58
96
|
url
|
|
59
97
|
));
|
|
60
|
-
return /* @__PURE__ */
|
|
98
|
+
return /* @__PURE__ */ jsx4(ErrorBoundary, { children: /* @__PURE__ */ jsx4(Suspense, { fallback: /* @__PURE__ */ jsx4(Loader, {}), children: /* @__PURE__ */ jsx4(LazyFeature, { ...props, ...params }) }) });
|
|
61
99
|
}
|
|
62
|
-
var Feature =
|
|
100
|
+
var Feature = React3.memo(RawFeature);
|
|
63
101
|
Feature.displayName = "Feature";
|
|
64
102
|
registerComponent("Feature", Feature, "view");
|
|
65
103
|
|
|
66
104
|
// src/login/LoginPanel.tsx
|
|
67
|
-
import { useState } from "react";
|
|
105
|
+
import { useState as useState2 } from "react";
|
|
68
106
|
import { Button } from "@salt-ds/core";
|
|
69
107
|
import { FormField, Input } from "@heswell/salt-lab";
|
|
70
|
-
import { jsx as
|
|
108
|
+
import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
71
109
|
var classBase = "vuuLoginPanel";
|
|
72
110
|
var LoginPanel = ({ onSubmit }) => {
|
|
73
|
-
const [username, setUserName] =
|
|
74
|
-
const [password, setPassword] =
|
|
111
|
+
const [username, setUserName] = useState2("");
|
|
112
|
+
const [password, setPassword] = useState2("");
|
|
75
113
|
const login = () => {
|
|
76
114
|
onSubmit(username, password);
|
|
77
115
|
};
|
|
@@ -82,9 +120,9 @@ var LoginPanel = ({ onSubmit }) => {
|
|
|
82
120
|
setPassword(value);
|
|
83
121
|
};
|
|
84
122
|
const dataIsValid = username.trim() !== "" && password.trim() !== "";
|
|
85
|
-
return /* @__PURE__ */
|
|
86
|
-
/* @__PURE__ */
|
|
87
|
-
/* @__PURE__ */
|
|
123
|
+
return /* @__PURE__ */ jsxs3("div", { className: classBase, children: [
|
|
124
|
+
/* @__PURE__ */ jsx5(FormField, { label: "Username", style: { width: 200 }, children: /* @__PURE__ */ jsx5(Input, { value: username, id: "text-username", onChange: handleUsername }) }),
|
|
125
|
+
/* @__PURE__ */ jsx5(FormField, { label: "Password", style: { width: 200 }, children: /* @__PURE__ */ jsx5(
|
|
88
126
|
Input,
|
|
89
127
|
{
|
|
90
128
|
type: "password",
|
|
@@ -93,7 +131,7 @@ var LoginPanel = ({ onSubmit }) => {
|
|
|
93
131
|
onChange: handlePassword
|
|
94
132
|
}
|
|
95
133
|
) }),
|
|
96
|
-
/* @__PURE__ */
|
|
134
|
+
/* @__PURE__ */ jsx5(
|
|
97
135
|
Button,
|
|
98
136
|
{
|
|
99
137
|
className: `${classBase}-login`,
|
|
@@ -125,16 +163,16 @@ var logout = (loginUrl) => {
|
|
|
125
163
|
// src/shell.tsx
|
|
126
164
|
import { connectToServer } from "@vuu-ui/vuu-data";
|
|
127
165
|
import {
|
|
128
|
-
useCallback as
|
|
129
|
-
useEffect as
|
|
166
|
+
useCallback as useCallback6,
|
|
167
|
+
useEffect as useEffect4,
|
|
130
168
|
useRef,
|
|
131
|
-
useState as
|
|
169
|
+
useState as useState5
|
|
132
170
|
} from "react";
|
|
133
171
|
|
|
134
172
|
// src/use-layout-config.js
|
|
135
|
-
import { useCallback, useEffect, useState as
|
|
173
|
+
import { useCallback, useEffect as useEffect2, useState as useState3 } from "react";
|
|
136
174
|
var useLayoutConfig = (user, defaultLayout) => {
|
|
137
|
-
const [layout, _setLayout] =
|
|
175
|
+
const [layout, _setLayout] = useState3(defaultLayout);
|
|
138
176
|
const setLayout = (layout2) => {
|
|
139
177
|
_setLayout(layout2);
|
|
140
178
|
};
|
|
@@ -148,7 +186,7 @@ var useLayoutConfig = (user, defaultLayout) => {
|
|
|
148
186
|
},
|
|
149
187
|
[defaultLayout, user.username]
|
|
150
188
|
);
|
|
151
|
-
|
|
189
|
+
useEffect2(() => {
|
|
152
190
|
load();
|
|
153
191
|
}, [load]);
|
|
154
192
|
const saveData = useCallback(
|
|
@@ -177,7 +215,7 @@ var use_layout_config_default = useLayoutConfig;
|
|
|
177
215
|
|
|
178
216
|
// src/ShellContextProvider.tsx
|
|
179
217
|
import { createContext, useContext } from "react";
|
|
180
|
-
import { jsx as
|
|
218
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
181
219
|
var defaultConfig = {};
|
|
182
220
|
var ShellContext = createContext(defaultConfig);
|
|
183
221
|
var Provider = ({
|
|
@@ -189,20 +227,20 @@ var Provider = ({
|
|
|
189
227
|
...inheritedContext,
|
|
190
228
|
...context
|
|
191
229
|
};
|
|
192
|
-
return /* @__PURE__ */
|
|
230
|
+
return /* @__PURE__ */ jsx6(ShellContext.Provider, { value: mergedContext, children });
|
|
193
231
|
};
|
|
194
232
|
var ShellContextProvider = ({
|
|
195
233
|
children,
|
|
196
234
|
value
|
|
197
235
|
}) => {
|
|
198
|
-
return /* @__PURE__ */
|
|
236
|
+
return /* @__PURE__ */ jsx6(ShellContext.Consumer, { children: (context) => /* @__PURE__ */ jsx6(Provider, { context: value, inheritedContext: context, children }) });
|
|
199
237
|
};
|
|
200
238
|
var useShellContext = () => {
|
|
201
239
|
return useContext(ShellContext);
|
|
202
240
|
};
|
|
203
241
|
|
|
204
242
|
// src/shell.tsx
|
|
205
|
-
import
|
|
243
|
+
import cx5 from "classnames";
|
|
206
244
|
import {
|
|
207
245
|
Chest,
|
|
208
246
|
DraggableLayout,
|
|
@@ -213,7 +251,7 @@ import {
|
|
|
213
251
|
} from "@vuu-ui/vuu-layout";
|
|
214
252
|
|
|
215
253
|
// src/app-header/AppHeader.tsx
|
|
216
|
-
import { useCallback as
|
|
254
|
+
import { useCallback as useCallback5 } from "react";
|
|
217
255
|
|
|
218
256
|
// src/user-profile/UserProfile.tsx
|
|
219
257
|
import { Button as Button3 } from "@salt-ds/core";
|
|
@@ -228,8 +266,8 @@ import { ExportIcon } from "@salt-ds/icons";
|
|
|
228
266
|
import {
|
|
229
267
|
forwardRef,
|
|
230
268
|
useCallback as useCallback2,
|
|
231
|
-
useEffect as
|
|
232
|
-
useState as
|
|
269
|
+
useEffect as useEffect3,
|
|
270
|
+
useState as useState4
|
|
233
271
|
} from "react";
|
|
234
272
|
|
|
235
273
|
// src/get-layout-history.ts
|
|
@@ -243,16 +281,16 @@ var getLayoutHistory = async (user) => {
|
|
|
243
281
|
};
|
|
244
282
|
|
|
245
283
|
// src/user-profile/UserPanel.tsx
|
|
246
|
-
import { jsx as
|
|
284
|
+
import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
247
285
|
var byLastUpdate = ({ lastUpdate: l1 }, { lastUpdate: l2 }) => {
|
|
248
286
|
return l2 === l1 ? 0 : l2 < l1 ? -1 : 1;
|
|
249
287
|
};
|
|
250
288
|
var HistoryListItem = (props) => {
|
|
251
|
-
return /* @__PURE__ */
|
|
289
|
+
return /* @__PURE__ */ jsx7(ListItem, { ...props });
|
|
252
290
|
};
|
|
253
291
|
var UserPanel = forwardRef(function UserPanel2({ loginUrl, onNavigate, user, layoutId = "latest" }, forwardedRef) {
|
|
254
|
-
const [history, setHistory] =
|
|
255
|
-
|
|
292
|
+
const [history, setHistory] = useState4([]);
|
|
293
|
+
useEffect3(() => {
|
|
256
294
|
async function getHistory() {
|
|
257
295
|
const history2 = await getLayoutHistory(user);
|
|
258
296
|
const sortedHistory = history2.filter((item) => item.id !== "latest").sort(byLastUpdate).map(({ id, lastUpdate }) => ({
|
|
@@ -277,8 +315,8 @@ var UserPanel = forwardRef(function UserPanel2({ loginUrl, onNavigate, user, lay
|
|
|
277
315
|
logout(loginUrl);
|
|
278
316
|
}, [loginUrl]);
|
|
279
317
|
const selected = history.length === 0 ? null : layoutId === "latest" ? history[0] : history.find((i) => i.id === layoutId);
|
|
280
|
-
return /* @__PURE__ */
|
|
281
|
-
/* @__PURE__ */
|
|
318
|
+
return /* @__PURE__ */ jsxs4("div", { className: "vuuUserPanel", ref: forwardedRef, children: [
|
|
319
|
+
/* @__PURE__ */ jsx7(
|
|
282
320
|
List,
|
|
283
321
|
{
|
|
284
322
|
ListItem: HistoryListItem,
|
|
@@ -288,15 +326,15 @@ var UserPanel = forwardRef(function UserPanel2({ loginUrl, onNavigate, user, lay
|
|
|
288
326
|
source: history
|
|
289
327
|
}
|
|
290
328
|
),
|
|
291
|
-
/* @__PURE__ */
|
|
292
|
-
/* @__PURE__ */
|
|
329
|
+
/* @__PURE__ */ jsx7("div", { className: "vuuUserPanel-buttonBar", children: /* @__PURE__ */ jsxs4(Button2, { "aria-label": "logout", onClick: handleLogout, children: [
|
|
330
|
+
/* @__PURE__ */ jsx7(ExportIcon, {}),
|
|
293
331
|
" Logout"
|
|
294
332
|
] }) })
|
|
295
333
|
] });
|
|
296
334
|
});
|
|
297
335
|
|
|
298
336
|
// src/user-profile/UserProfile.tsx
|
|
299
|
-
import { jsx as
|
|
337
|
+
import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
300
338
|
var UserProfile = ({
|
|
301
339
|
layoutId,
|
|
302
340
|
loginUrl,
|
|
@@ -306,9 +344,9 @@ var UserProfile = ({
|
|
|
306
344
|
const handleNavigate = (id) => {
|
|
307
345
|
onNavigate(id);
|
|
308
346
|
};
|
|
309
|
-
return /* @__PURE__ */
|
|
310
|
-
/* @__PURE__ */
|
|
311
|
-
/* @__PURE__ */
|
|
347
|
+
return /* @__PURE__ */ jsxs5(DropdownBase, { className: "vuuUserProfile", placement: "bottom-end", children: [
|
|
348
|
+
/* @__PURE__ */ jsx8(Button3, { variant: "secondary", children: /* @__PURE__ */ jsx8(UserSolidIcon, {}) }),
|
|
349
|
+
/* @__PURE__ */ jsx8(
|
|
312
350
|
UserPanel,
|
|
313
351
|
{
|
|
314
352
|
layoutId,
|
|
@@ -325,10 +363,10 @@ import {
|
|
|
325
363
|
ToggleButton,
|
|
326
364
|
ToggleButtonGroup
|
|
327
365
|
} from "@heswell/salt-lab";
|
|
328
|
-
import
|
|
366
|
+
import cx2 from "classnames";
|
|
329
367
|
import { useControlled } from "@salt-ds/core";
|
|
330
368
|
import { useCallback as useCallback3 } from "react";
|
|
331
|
-
import { jsx as
|
|
369
|
+
import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
332
370
|
var classBase2 = "vuuThemeSwitch";
|
|
333
371
|
var modes = ["light", "dark"];
|
|
334
372
|
var ThemeSwitch = ({
|
|
@@ -353,8 +391,8 @@ var ThemeSwitch = ({
|
|
|
353
391
|
},
|
|
354
392
|
[onChange, setMode]
|
|
355
393
|
);
|
|
356
|
-
const className =
|
|
357
|
-
return /* @__PURE__ */
|
|
394
|
+
const className = cx2(classBase2, classNameProp);
|
|
395
|
+
return /* @__PURE__ */ jsxs6(
|
|
358
396
|
ToggleButtonGroup,
|
|
359
397
|
{
|
|
360
398
|
className,
|
|
@@ -362,7 +400,7 @@ var ThemeSwitch = ({
|
|
|
362
400
|
onChange: handleChangeSecondary,
|
|
363
401
|
selectedIndex,
|
|
364
402
|
children: [
|
|
365
|
-
/* @__PURE__ */
|
|
403
|
+
/* @__PURE__ */ jsx9(
|
|
366
404
|
ToggleButton,
|
|
367
405
|
{
|
|
368
406
|
"aria-label": "alert",
|
|
@@ -370,7 +408,7 @@ var ThemeSwitch = ({
|
|
|
370
408
|
"data-icon": "light"
|
|
371
409
|
}
|
|
372
410
|
),
|
|
373
|
-
/* @__PURE__ */
|
|
411
|
+
/* @__PURE__ */ jsx9(
|
|
374
412
|
ToggleButton,
|
|
375
413
|
{
|
|
376
414
|
"aria-label": "home",
|
|
@@ -384,9 +422,39 @@ var ThemeSwitch = ({
|
|
|
384
422
|
};
|
|
385
423
|
|
|
386
424
|
// src/app-header/AppHeader.tsx
|
|
387
|
-
import
|
|
388
|
-
|
|
389
|
-
|
|
425
|
+
import cx4 from "classnames";
|
|
426
|
+
|
|
427
|
+
// src/density-switch/DensitySwitch.tsx
|
|
428
|
+
import { Dropdown } from "@heswell/salt-lab";
|
|
429
|
+
import { DEFAULT_DENSITY } from "@salt-ds/core";
|
|
430
|
+
import { useCallback as useCallback4 } from "react";
|
|
431
|
+
import cx3 from "classnames";
|
|
432
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
433
|
+
var classBase3 = "vuuDensitySwitch";
|
|
434
|
+
var densities = ["high", "medium", "low", "touch"];
|
|
435
|
+
var DensitySwitch = ({
|
|
436
|
+
className: classNameProp,
|
|
437
|
+
defaultDensity = DEFAULT_DENSITY,
|
|
438
|
+
onDensityChange
|
|
439
|
+
}) => {
|
|
440
|
+
const handleSelectionChange = useCallback4((_event, selectedItem) => {
|
|
441
|
+
onDensityChange(selectedItem);
|
|
442
|
+
}, [onDensityChange]);
|
|
443
|
+
const className = cx3(classBase3, classNameProp);
|
|
444
|
+
return /* @__PURE__ */ jsx10(
|
|
445
|
+
Dropdown,
|
|
446
|
+
{
|
|
447
|
+
className,
|
|
448
|
+
source: densities,
|
|
449
|
+
defaultSelected: defaultDensity,
|
|
450
|
+
onSelectionChange: handleSelectionChange
|
|
451
|
+
}
|
|
452
|
+
);
|
|
453
|
+
};
|
|
454
|
+
|
|
455
|
+
// src/app-header/AppHeader.tsx
|
|
456
|
+
import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
457
|
+
var classBase4 = "vuuAppHeader";
|
|
390
458
|
var AppHeader = ({
|
|
391
459
|
className: classNameProp,
|
|
392
460
|
layoutId,
|
|
@@ -394,17 +462,24 @@ var AppHeader = ({
|
|
|
394
462
|
onNavigate,
|
|
395
463
|
onSwitchTheme,
|
|
396
464
|
themeMode = "light",
|
|
465
|
+
onDensitySwitch,
|
|
466
|
+
density = "medium",
|
|
397
467
|
user,
|
|
398
468
|
...htmlAttributes
|
|
399
469
|
}) => {
|
|
400
|
-
const className =
|
|
401
|
-
const handleSwitchTheme =
|
|
470
|
+
const className = cx4(classBase4, classNameProp, `salt-density-${density}`);
|
|
471
|
+
const handleSwitchTheme = useCallback5(
|
|
402
472
|
(mode) => onSwitchTheme == null ? void 0 : onSwitchTheme(mode),
|
|
403
473
|
[onSwitchTheme]
|
|
404
474
|
);
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
475
|
+
const handleDensitySwitch = useCallback5(
|
|
476
|
+
(density2) => onDensitySwitch == null ? void 0 : onDensitySwitch(density2),
|
|
477
|
+
[onDensitySwitch]
|
|
478
|
+
);
|
|
479
|
+
return /* @__PURE__ */ jsxs7("header", { className, ...htmlAttributes, children: [
|
|
480
|
+
/* @__PURE__ */ jsx11(ThemeSwitch, { defaultMode: themeMode, onChange: handleSwitchTheme }),
|
|
481
|
+
/* @__PURE__ */ jsx11(DensitySwitch, { defaultDensity: density, onDensityChange: handleDensitySwitch }),
|
|
482
|
+
/* @__PURE__ */ jsx11(
|
|
408
483
|
UserProfile,
|
|
409
484
|
{
|
|
410
485
|
layoutId,
|
|
@@ -417,7 +492,7 @@ var AppHeader = ({
|
|
|
417
492
|
};
|
|
418
493
|
|
|
419
494
|
// src/shell.tsx
|
|
420
|
-
import { jsx as
|
|
495
|
+
import { jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
421
496
|
var warningLayout = {
|
|
422
497
|
type: "View",
|
|
423
498
|
props: {
|
|
@@ -443,25 +518,31 @@ var Shell = ({
|
|
|
443
518
|
...htmlAttributes
|
|
444
519
|
}) => {
|
|
445
520
|
const rootRef = useRef(null);
|
|
446
|
-
const [density] =
|
|
521
|
+
const [density, setDensity] = useState5("medium");
|
|
447
522
|
const paletteView = useRef(null);
|
|
448
|
-
const [open, setOpen] =
|
|
523
|
+
const [open, setOpen] = useState5(false);
|
|
449
524
|
const layoutId = useRef("latest");
|
|
450
525
|
const [layout, setLayoutConfig, loadLayoutById] = use_layout_config_default(
|
|
451
526
|
user,
|
|
452
527
|
defaultLayout
|
|
453
528
|
);
|
|
454
|
-
const handleLayoutChange =
|
|
529
|
+
const handleLayoutChange = useCallback6(
|
|
455
530
|
(layout2) => {
|
|
456
531
|
setLayoutConfig(layout2);
|
|
457
532
|
},
|
|
458
533
|
[setLayoutConfig]
|
|
459
534
|
);
|
|
460
|
-
const handleSwitchTheme =
|
|
535
|
+
const handleSwitchTheme = useCallback6((mode) => {
|
|
461
536
|
if (rootRef.current) {
|
|
462
537
|
rootRef.current.dataset.mode = mode;
|
|
463
538
|
}
|
|
464
539
|
}, []);
|
|
540
|
+
const handleDensitySwitch = useCallback6(
|
|
541
|
+
(density2) => {
|
|
542
|
+
setDensity(density2);
|
|
543
|
+
},
|
|
544
|
+
[setDensity]
|
|
545
|
+
);
|
|
465
546
|
const handleDrawerClick = (e) => {
|
|
466
547
|
var _a;
|
|
467
548
|
const target = e.target;
|
|
@@ -469,14 +550,14 @@ var Shell = ({
|
|
|
469
550
|
setOpen(!open);
|
|
470
551
|
}
|
|
471
552
|
};
|
|
472
|
-
const handleNavigate =
|
|
553
|
+
const handleNavigate = useCallback6(
|
|
473
554
|
(id) => {
|
|
474
555
|
layoutId.current = id;
|
|
475
556
|
loadLayoutById(id);
|
|
476
557
|
},
|
|
477
558
|
[loadLayoutById]
|
|
478
559
|
);
|
|
479
|
-
|
|
560
|
+
useEffect4(() => {
|
|
480
561
|
if (serverUrl && user.token) {
|
|
481
562
|
connectToServer(serverUrl, user.token);
|
|
482
563
|
}
|
|
@@ -485,7 +566,7 @@ var Shell = ({
|
|
|
485
566
|
const drawers = [];
|
|
486
567
|
if (leftSidePanel) {
|
|
487
568
|
drawers.push(
|
|
488
|
-
/* @__PURE__ */
|
|
569
|
+
/* @__PURE__ */ jsx12(
|
|
489
570
|
Drawer,
|
|
490
571
|
{
|
|
491
572
|
onClick: handleDrawerClick,
|
|
@@ -495,7 +576,7 @@ var Shell = ({
|
|
|
495
576
|
peekaboo: true,
|
|
496
577
|
sizeOpen: 200,
|
|
497
578
|
toggleButton: "end",
|
|
498
|
-
children: /* @__PURE__ */
|
|
579
|
+
children: /* @__PURE__ */ jsx12(
|
|
499
580
|
View,
|
|
500
581
|
{
|
|
501
582
|
className: "vuuShell-palette",
|
|
@@ -513,7 +594,7 @@ var Shell = ({
|
|
|
513
594
|
}
|
|
514
595
|
return drawers;
|
|
515
596
|
};
|
|
516
|
-
const className =
|
|
597
|
+
const className = cx5(
|
|
517
598
|
"vuuShell",
|
|
518
599
|
classNameProp,
|
|
519
600
|
"salt-theme",
|
|
@@ -521,32 +602,33 @@ var Shell = ({
|
|
|
521
602
|
);
|
|
522
603
|
return (
|
|
523
604
|
// ShellContext TBD
|
|
524
|
-
/* @__PURE__ */
|
|
525
|
-
/* @__PURE__ */
|
|
605
|
+
/* @__PURE__ */ jsxs8(ShellContextProvider, { value: void 0, children: [
|
|
606
|
+
/* @__PURE__ */ jsx12(LayoutProvider, { layout, onLayoutChange: handleLayoutChange, children: /* @__PURE__ */ jsx12(
|
|
526
607
|
DraggableLayout,
|
|
527
608
|
{
|
|
528
609
|
className,
|
|
529
610
|
"data-mode": "light",
|
|
530
611
|
ref: rootRef,
|
|
531
612
|
...htmlAttributes,
|
|
532
|
-
children: /* @__PURE__ */
|
|
613
|
+
children: /* @__PURE__ */ jsxs8(
|
|
533
614
|
Flexbox,
|
|
534
615
|
{
|
|
535
616
|
className: "App",
|
|
536
617
|
style: { flexDirection: "column", height: "100%", width: "100%" },
|
|
537
618
|
children: [
|
|
538
|
-
/* @__PURE__ */
|
|
619
|
+
/* @__PURE__ */ jsx12(
|
|
539
620
|
AppHeader,
|
|
540
621
|
{
|
|
541
622
|
layoutId: layoutId.current,
|
|
542
623
|
loginUrl,
|
|
543
624
|
user,
|
|
544
625
|
onNavigate: handleNavigate,
|
|
545
|
-
onSwitchTheme: handleSwitchTheme
|
|
626
|
+
onSwitchTheme: handleSwitchTheme,
|
|
627
|
+
onDensitySwitch: handleDensitySwitch
|
|
546
628
|
}
|
|
547
629
|
),
|
|
548
|
-
/* @__PURE__ */
|
|
549
|
-
/* @__PURE__ */
|
|
630
|
+
/* @__PURE__ */ jsx12(Chest, { style: { flex: 1 }, children: getDrawers().concat(
|
|
631
|
+
/* @__PURE__ */ jsx12(
|
|
550
632
|
DraggableLayout,
|
|
551
633
|
{
|
|
552
634
|
dropTarget: true,
|
|
@@ -565,6 +647,7 @@ var Shell = ({
|
|
|
565
647
|
);
|
|
566
648
|
};
|
|
567
649
|
export {
|
|
650
|
+
ConnectionStatusIcon,
|
|
568
651
|
Feature,
|
|
569
652
|
LoginPanel,
|
|
570
653
|
Shell,
|