@floegence/floe-webapp-core 0.35.58 → 0.36.0

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.
Files changed (55) hide show
  1. package/dist/components/deck/DeckCell.js +47 -50
  2. package/dist/components/deck/DeckContextMenu.d.ts +22 -0
  3. package/dist/components/deck/DeckContextMenu.js +73 -0
  4. package/dist/components/deck/DeckGrid.js +147 -104
  5. package/dist/components/deck/DeckTopBar.js +74 -96
  6. package/dist/components/deck/WidgetFrame.d.ts +7 -1
  7. package/dist/components/deck/WidgetFrame.js +60 -52
  8. package/dist/components/deck/index.d.ts +1 -0
  9. package/dist/components/ui/InfiniteCanvas.d.ts +2 -0
  10. package/dist/components/ui/InfiniteCanvas.js +43 -37
  11. package/dist/components/workbench/WorkbenchCanvas.d.ts +28 -0
  12. package/dist/components/workbench/WorkbenchCanvas.js +79 -0
  13. package/dist/components/workbench/WorkbenchContextMenu.d.ts +24 -0
  14. package/dist/components/workbench/WorkbenchContextMenu.js +44 -0
  15. package/dist/components/workbench/WorkbenchFilterBar.d.ts +16 -0
  16. package/dist/components/workbench/WorkbenchFilterBar.js +266 -0
  17. package/dist/components/workbench/WorkbenchHud.d.ts +6 -0
  18. package/dist/components/workbench/WorkbenchHud.js +17 -0
  19. package/dist/components/workbench/WorkbenchLockButton.d.ts +6 -0
  20. package/dist/components/workbench/WorkbenchLockButton.js +49 -0
  21. package/dist/components/workbench/WorkbenchOverlay.d.ts +18 -0
  22. package/dist/components/workbench/WorkbenchOverlay.js +107 -0
  23. package/dist/components/workbench/WorkbenchSurface.d.ts +21 -0
  24. package/dist/components/workbench/WorkbenchSurface.js +183 -0
  25. package/dist/components/workbench/WorkbenchWidget.d.ts +25 -0
  26. package/dist/components/workbench/WorkbenchWidget.js +183 -0
  27. package/dist/components/workbench/index.d.ts +7 -0
  28. package/dist/components/workbench/types.d.ts +39 -0
  29. package/dist/components/workbench/types.js +25 -0
  30. package/dist/components/workbench/useWorkbenchModel.d.ts +70 -0
  31. package/dist/components/workbench/useWorkbenchModel.js +259 -0
  32. package/dist/components/workbench/widgets/CodeEditorWidget.d.ts +1 -0
  33. package/dist/components/workbench/widgets/CodeEditorWidget.js +144 -0
  34. package/dist/components/workbench/widgets/FileBrowserWidget.d.ts +1 -0
  35. package/dist/components/workbench/widgets/FileBrowserWidget.js +142 -0
  36. package/dist/components/workbench/widgets/LogViewerWidget.d.ts +1 -0
  37. package/dist/components/workbench/widgets/LogViewerWidget.js +86 -0
  38. package/dist/components/workbench/widgets/SystemMonitorWidget.d.ts +1 -0
  39. package/dist/components/workbench/widgets/SystemMonitorWidget.js +122 -0
  40. package/dist/components/workbench/widgets/TerminalWidget.d.ts +1 -0
  41. package/dist/components/workbench/widgets/TerminalWidget.js +70 -0
  42. package/dist/components/workbench/widgets/widgetRegistry.d.ts +13 -0
  43. package/dist/components/workbench/widgets/widgetRegistry.js +50 -0
  44. package/dist/components/workbench/workbenchHelpers.d.ts +22 -0
  45. package/dist/components/workbench/workbenchHelpers.js +176 -0
  46. package/dist/deck.js +14 -12
  47. package/dist/full.js +381 -379
  48. package/dist/hooks/useDeckDrag.js +15 -15
  49. package/dist/styles.css +1 -1
  50. package/dist/tailwind.css +1 -0
  51. package/dist/ui.css +4 -0
  52. package/dist/workbench.css +1220 -0
  53. package/dist/workbench.d.ts +1 -0
  54. package/dist/workbench.js +22 -0
  55. package/package.json +5 -1
@@ -0,0 +1,122 @@
1
+ import { insert as d, createComponent as g, effect as A, className as L, setStyleProperty as N, template as b, setAttribute as S } from "solid-js/web";
2
+ import { createSignal as k, onMount as P, onCleanup as R, For as T } from "solid-js";
3
+ import { Cpu as B, Activity as E, Database as H } from "../../icons/index.js";
4
+ var K = /* @__PURE__ */ b("<div class=workbench-widget-sysmon>"), O = /* @__PURE__ */ b("<div class=workbench-widget-sysmon__row><div class=workbench-widget-sysmon__label><span></span></div><div class=workbench-widget-sysmon__bar><div></div></div><span class=workbench-widget-sysmon__value>%"), U = /* @__PURE__ */ b('<svg viewBox="0 0 72 22"width=72 height=22 preserveAspectRatio=none aria-hidden=true><path fill=none stroke=currentColor stroke-width=1.3 stroke-linejoin=round>');
5
+ const w = 28, W = 900;
6
+ function f(s, m, u, a) {
7
+ const e = (Math.random() - 0.5) * a;
8
+ return Math.min(u, Math.max(m, s + e));
9
+ }
10
+ function J() {
11
+ const s = () => Array.from({
12
+ length: w
13
+ }, () => 30 + Math.random() * 30), m = () => Array.from({
14
+ length: w
15
+ }, () => 55 + Math.random() * 18), u = () => Array.from({
16
+ length: w
17
+ }, () => 25 + Math.random() * 10), [a, e] = k({
18
+ value: 42,
19
+ history: s()
20
+ }), [l, r] = k({
21
+ value: 67,
22
+ history: m()
23
+ }), [i, o] = k({
24
+ value: 31,
25
+ history: u()
26
+ });
27
+ let c;
28
+ const I = () => {
29
+ e((n) => {
30
+ const t = f(n.value, 12, 92, 14);
31
+ return {
32
+ value: t,
33
+ history: [...n.history.slice(1), t]
34
+ };
35
+ }), r((n) => {
36
+ const t = f(n.value, 42, 88, 5);
37
+ return {
38
+ value: t,
39
+ history: [...n.history.slice(1), t]
40
+ };
41
+ }), o((n) => {
42
+ const t = f(n.value, 18, 64, 2.4);
43
+ return {
44
+ value: t,
45
+ history: [...n.history.slice(1), t]
46
+ };
47
+ });
48
+ };
49
+ P(() => {
50
+ c = window.setInterval(I, W);
51
+ }), R(() => {
52
+ c !== void 0 && window.clearInterval(c);
53
+ });
54
+ const D = [{
55
+ key: "cpu",
56
+ label: "CPU",
57
+ icon: B,
58
+ metric: a
59
+ }, {
60
+ key: "memory",
61
+ label: "Memory",
62
+ icon: E,
63
+ metric: l
64
+ }, {
65
+ key: "disk",
66
+ label: "Disk",
67
+ icon: H,
68
+ metric: i
69
+ }];
70
+ return (() => {
71
+ var n = K();
72
+ return d(n, g(T, {
73
+ each: D,
74
+ children: (t) => {
75
+ const F = t.icon;
76
+ return (() => {
77
+ var v = O(), y = v.firstChild, p = y.firstChild, _ = y.nextSibling, M = _.firstChild, $ = _.nextSibling, j = $.firstChild;
78
+ return d(y, g(F, {
79
+ class: "w-3.5 h-3.5"
80
+ }), p), d(p, () => t.label), d(v, g(Y, {
81
+ get points() {
82
+ return t.metric().history;
83
+ },
84
+ get variant() {
85
+ return t.key;
86
+ }
87
+ }), _), d($, () => Math.round(t.metric().value), j), A((h) => {
88
+ var C = `workbench-widget-sysmon__fill workbench-widget-sysmon__fill--${t.key}`, x = `${t.metric().value.toFixed(1)}%`;
89
+ return C !== h.e && L(M, h.e = C), x !== h.t && N(M, "width", h.t = x), h;
90
+ }, {
91
+ e: void 0,
92
+ t: void 0
93
+ }), v;
94
+ })();
95
+ }
96
+ })), n;
97
+ })();
98
+ }
99
+ function Y(s) {
100
+ const a = () => {
101
+ const e = s.points;
102
+ if (e.length === 0) return "";
103
+ const l = 72 / Math.max(1, e.length - 1);
104
+ return e.map((r, i) => {
105
+ const o = i * l, c = 22 - r / 100 * 22;
106
+ return `${i === 0 ? "M" : "L"}${o.toFixed(2)} ${c.toFixed(2)}`;
107
+ }).join(" ");
108
+ };
109
+ return (() => {
110
+ var e = U(), l = e.firstChild;
111
+ return A((r) => {
112
+ var i = `workbench-widget-sysmon__spark workbench-widget-sysmon__spark--${s.variant}`, o = a();
113
+ return i !== r.e && S(e, "class", r.e = i), o !== r.t && S(l, "d", r.t = o), r;
114
+ }, {
115
+ e: void 0,
116
+ t: void 0
117
+ }), e;
118
+ })();
119
+ }
120
+ export {
121
+ J as SystemMonitorWidget
122
+ };
@@ -0,0 +1 @@
1
+ export declare function TerminalWidget(): import("solid-js").JSX.Element;
@@ -0,0 +1,70 @@
1
+ import { insert as d, createComponent as x, memo as S, effect as C, template as w } from "solid-js/web";
2
+ import { createSignal as b, onMount as y, onCleanup as E, For as I } from "solid-js";
3
+ var M = /* @__PURE__ */ w('<div class=workbench-widget-terminal><div class=workbench-widget-terminal__toolbar><span class="workbench-widget-terminal__dot workbench-widget-terminal__dot--red"></span><span class="workbench-widget-terminal__dot workbench-widget-terminal__dot--yellow"></span><span class="workbench-widget-terminal__dot workbench-widget-terminal__dot--green"></span><span class=workbench-widget-terminal__path>~/projects/floe-webapp</span></div><div class=workbench-widget-terminal__body><div class=workbench-widget-terminal__line><span class=workbench-widget-terminal__prompt>$</span><span></span><span class=workbench-widget-terminal__cursor>'), N = /* @__PURE__ */ w("<div class=workbench-widget-terminal__line><span>"), A = /* @__PURE__ */ w("<span class=workbench-widget-terminal__prompt>$");
4
+ const k = [{
5
+ prompt: "pnpm dev",
6
+ outputs: ["VITE v7.3.2 ready in 342 ms", "➜ Local: http://localhost:5173/", "➜ Network: http://192.168.1.12:5173/"]
7
+ }, {
8
+ prompt: "git status",
9
+ outputs: ["On branch feat-workbench", "Changes not staged for commit:", " modified: apps/demo/src/App.tsx"]
10
+ }, {
11
+ prompt: "curl -s https://api.floe.dev/health | jq .status",
12
+ outputs: ['"ok"']
13
+ }], L = 42, f = 160, O = 1400;
14
+ function R() {
15
+ const [$, _] = b([]), [T, m] = b("");
16
+ let u = 0, s = 0, e, i = !1;
17
+ const h = () => {
18
+ if (i) return;
19
+ const t = k[u % k.length];
20
+ s = 0, m("");
21
+ const l = () => {
22
+ i || (s += 1, m(t.prompt.slice(0, s)), s < t.prompt.length ? e = window.setTimeout(l, L) : e = window.setTimeout(a, f));
23
+ }, a = () => {
24
+ if (i) return;
25
+ _((r) => [...r.slice(-6), {
26
+ id: `${Date.now()}-prompt`,
27
+ kind: "prompt",
28
+ text: t.prompt
29
+ }]), m("");
30
+ let n = 0;
31
+ const p = () => {
32
+ if (i) return;
33
+ if (n >= t.outputs.length) {
34
+ u += 1, e = window.setTimeout(h, O);
35
+ return;
36
+ }
37
+ const r = t.outputs[n];
38
+ _((o) => [...o.slice(-6), {
39
+ id: `${Date.now()}-${n}`,
40
+ kind: "muted",
41
+ text: r
42
+ }]), n += 1, e = window.setTimeout(p, f);
43
+ };
44
+ p();
45
+ };
46
+ l();
47
+ };
48
+ return y(() => {
49
+ e = window.setTimeout(h, 300);
50
+ }), E(() => {
51
+ i = !0, e !== void 0 && window.clearTimeout(e);
52
+ }), (() => {
53
+ var t = M(), l = t.firstChild, a = l.nextSibling, n = a.firstChild, p = n.firstChild, r = p.nextSibling;
54
+ return d(a, x(I, {
55
+ get each() {
56
+ return $();
57
+ },
58
+ children: (o) => (() => {
59
+ var c = N(), g = c.firstChild;
60
+ return d(c, (() => {
61
+ var v = S(() => o.kind === "prompt");
62
+ return () => v() ? A() : null;
63
+ })(), g), d(g, () => o.text), C(() => c.classList.toggle("workbench-widget-terminal__line--muted", o.kind === "muted")), c;
64
+ })()
65
+ }), n), d(r, T), t;
66
+ })();
67
+ }
68
+ export {
69
+ R as TerminalWidget
70
+ };
@@ -0,0 +1,13 @@
1
+ import type { Component } from 'solid-js';
2
+ import type { WorkbenchWidgetType } from '../types';
3
+ export interface WidgetRegistryEntry {
4
+ type: WorkbenchWidgetType;
5
+ label: string;
6
+ icon: Component<{
7
+ class?: string;
8
+ }>;
9
+ body: Component;
10
+ defaultTitle: string;
11
+ }
12
+ export declare const WIDGET_REGISTRY: readonly WidgetRegistryEntry[];
13
+ export declare function getWidgetEntry(type: WorkbenchWidgetType): WidgetRegistryEntry;
@@ -0,0 +1,50 @@
1
+ import { Terminal as i, Folder as r, Cpu as l, Activity as d, FileCode as m } from "../../icons/index.js";
2
+ import { TerminalWidget as n } from "./TerminalWidget.js";
3
+ import { FileBrowserWidget as y } from "./FileBrowserWidget.js";
4
+ import { SystemMonitorWidget as a } from "./SystemMonitorWidget.js";
5
+ import { LogViewerWidget as f } from "./LogViewerWidget.js";
6
+ import { CodeEditorWidget as p } from "./CodeEditorWidget.js";
7
+ const e = [
8
+ {
9
+ type: "terminal",
10
+ label: "Terminal",
11
+ icon: i,
12
+ body: n,
13
+ defaultTitle: "Terminal"
14
+ },
15
+ {
16
+ type: "file-browser",
17
+ label: "File Browser",
18
+ icon: r,
19
+ body: y,
20
+ defaultTitle: "File Browser"
21
+ },
22
+ {
23
+ type: "system-monitor",
24
+ label: "System Monitor",
25
+ icon: l,
26
+ body: a,
27
+ defaultTitle: "System Monitor"
28
+ },
29
+ {
30
+ type: "log-viewer",
31
+ label: "Log Viewer",
32
+ icon: d,
33
+ body: f,
34
+ defaultTitle: "Log Viewer"
35
+ },
36
+ {
37
+ type: "code-editor",
38
+ label: "Code Editor",
39
+ icon: m,
40
+ body: p,
41
+ defaultTitle: "Code Editor"
42
+ }
43
+ ];
44
+ function w(o) {
45
+ return e.find((t) => t.type === o) ?? e[0];
46
+ }
47
+ export {
48
+ e as WIDGET_REGISTRY,
49
+ w as getWidgetEntry
50
+ };
@@ -0,0 +1,22 @@
1
+ import { type WorkbenchState, type WorkbenchViewport, type WorkbenchWidgetItem, type WorkbenchWidgetType } from './types';
2
+ export declare function createWorkbenchId(): string;
3
+ export declare function sanitizeViewport(viewport: Partial<WorkbenchViewport> | undefined): WorkbenchViewport;
4
+ export declare function sanitizeFilters(filters: Partial<Record<WorkbenchWidgetType, boolean>> | undefined): Record<WorkbenchWidgetType, boolean>;
5
+ export declare function sanitizeWorkbenchState(input: unknown): WorkbenchState;
6
+ export declare function createDefaultWorkbenchState(): WorkbenchState;
7
+ export declare const WORKBENCH_CANVAS_ZOOM_STEP = 1.18;
8
+ export declare const WORKBENCH_CONTEXT_MENU_WIDTH_PX = 200;
9
+ export declare function createContextMenuPosition(options: {
10
+ clientX: number;
11
+ clientY: number;
12
+ menuWidth: number;
13
+ menuHeight: number;
14
+ }): {
15
+ left: number;
16
+ top: number;
17
+ };
18
+ export declare function getTopZIndex(widgets: readonly WorkbenchWidgetItem[]): number;
19
+ /** Spatial navigation: find nearest widget in a direction. */
20
+ export declare function findNearestWidget(widgets: readonly WorkbenchWidgetItem[], currentId: string | null, direction: 'up' | 'down' | 'left' | 'right', filters: Record<WorkbenchWidgetType, boolean>): WorkbenchWidgetItem | null;
21
+ export declare function clampScale(scale: number, min?: number, max?: number): number;
22
+ export declare function estimateContextMenuHeight(actionCount: number, separatorCount?: number): number;
@@ -0,0 +1,176 @@
1
+ import { DEFAULT_FILTERS as l, DEFAULT_WORKBENCH_VIEWPORT as _, WORKBENCH_WIDGET_TYPES as m } from "./types.js";
2
+ function z() {
3
+ const e = globalThis.crypto;
4
+ return e && typeof e.randomUUID == "function" ? `wb-${e.randomUUID()}` : `wb-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
5
+ }
6
+ function p(e) {
7
+ return e ? {
8
+ x: Number.isFinite(e.x) ? e.x : 0,
9
+ y: Number.isFinite(e.y) ? e.y : 0,
10
+ scale: Number.isFinite(e.scale) && e.scale > 0 ? e.scale : 1
11
+ } : { ..._ };
12
+ }
13
+ function w(e) {
14
+ if (!e) return { ...l };
15
+ const i = { ...l };
16
+ for (const n of m)
17
+ typeof e[n] == "boolean" && (i[n] = e[n]);
18
+ return i;
19
+ }
20
+ function W(e) {
21
+ return typeof e == "string" && m.includes(e);
22
+ }
23
+ function E(e) {
24
+ const i = e;
25
+ return !i || i.version !== 1 || !Array.isArray(i.widgets) ? M() : {
26
+ version: 1,
27
+ widgets: i.widgets.filter(
28
+ (t) => !!t && typeof t.id == "string" && W(t.type) && typeof t.title == "string"
29
+ ).map((t) => ({
30
+ id: t.id,
31
+ type: t.type,
32
+ title: t.title,
33
+ x: Number.isFinite(t.x) ? t.x : 0,
34
+ y: Number.isFinite(t.y) ? t.y : 0,
35
+ width: Number.isFinite(t.width) && t.width > 0 ? t.width : 300,
36
+ height: Number.isFinite(t.height) && t.height > 0 ? t.height : 200,
37
+ z_index: Number.isFinite(t.z_index) && t.z_index >= 0 ? t.z_index : 1,
38
+ created_at_unix_ms: Number.isFinite(t.created_at_unix_ms) ? t.created_at_unix_ms : Date.now()
39
+ })),
40
+ viewport: p(i.viewport),
41
+ locked: typeof i.locked == "boolean" ? i.locked : !1,
42
+ filters: w(i.filters),
43
+ selectedWidgetId: typeof i.selectedWidgetId == "string" ? i.selectedWidgetId : null
44
+ };
45
+ }
46
+ function M() {
47
+ const e = Date.now();
48
+ return {
49
+ version: 1,
50
+ widgets: [
51
+ {
52
+ id: "wb-seed-terminal",
53
+ type: "terminal",
54
+ title: "dev · terminal",
55
+ x: 80,
56
+ y: 80,
57
+ width: 480,
58
+ height: 300,
59
+ z_index: 1,
60
+ created_at_unix_ms: e - 36e5
61
+ },
62
+ {
63
+ id: "wb-seed-files",
64
+ type: "file-browser",
65
+ title: "project · files",
66
+ x: 600,
67
+ y: 80,
68
+ width: 360,
69
+ height: 380,
70
+ z_index: 2,
71
+ created_at_unix_ms: e - 3e6
72
+ },
73
+ {
74
+ id: "wb-seed-monitor",
75
+ type: "system-monitor",
76
+ title: "host · system monitor",
77
+ x: 80,
78
+ y: 420,
79
+ width: 420,
80
+ height: 260,
81
+ z_index: 3,
82
+ created_at_unix_ms: e - 24e5
83
+ },
84
+ {
85
+ id: "wb-seed-logs",
86
+ type: "log-viewer",
87
+ title: "services · logs",
88
+ x: 540,
89
+ y: 500,
90
+ width: 520,
91
+ height: 240,
92
+ z_index: 4,
93
+ created_at_unix_ms: e - 18e5
94
+ },
95
+ {
96
+ id: "wb-seed-code",
97
+ type: "code-editor",
98
+ title: "Counter.tsx",
99
+ x: 1e3,
100
+ y: 180,
101
+ width: 500,
102
+ height: 340,
103
+ z_index: 5,
104
+ created_at_unix_ms: e - 12e5
105
+ }
106
+ ],
107
+ viewport: { ..._ },
108
+ locked: !1,
109
+ filters: { ...l },
110
+ selectedWidgetId: null
111
+ };
112
+ }
113
+ const F = 1.18, T = 200;
114
+ function I(e) {
115
+ const i = typeof window < "u" ? window.innerWidth : 1280, n = typeof window < "u" ? window.innerHeight : 800;
116
+ let t = e.clientX, s = e.clientY;
117
+ return t + e.menuWidth > i && (t = Math.max(0, i - e.menuWidth - 8)), s + e.menuHeight > n && (s = Math.max(0, n - e.menuHeight - 8)), { left: t, top: s };
118
+ }
119
+ function k(e) {
120
+ return e.reduce((i, n) => Math.max(i, n.z_index), 1);
121
+ }
122
+ function D(e, i, n, t) {
123
+ const s = e.filter((r) => t[r.type]);
124
+ if (s.length === 0) return null;
125
+ if (!i) return s[0] ?? null;
126
+ const o = s.find((r) => r.id === i);
127
+ if (!o) return s[0] ?? null;
128
+ const x = o.x + o.width / 2, g = o.y + o.height / 2;
129
+ let u = null, h = 1 / 0;
130
+ for (const r of s) {
131
+ if (r.id === i) continue;
132
+ const d = r.x + r.width / 2 - x, a = r.y + r.height / 2 - g;
133
+ let c = !1;
134
+ switch (n) {
135
+ case "up":
136
+ c = a < -10;
137
+ break;
138
+ case "down":
139
+ c = a > 10;
140
+ break;
141
+ case "left":
142
+ c = d < -10;
143
+ break;
144
+ case "right":
145
+ c = d > 10;
146
+ break;
147
+ }
148
+ if (!c) continue;
149
+ const y = Math.sqrt(d * d + a * a), b = Math.atan2(
150
+ Math.abs(n === "up" || n === "down" ? d : a),
151
+ Math.abs(n === "up" || n === "down" ? a : d)
152
+ ), f = y * (1 + b * 1.5);
153
+ f < h && (h = f, u = r);
154
+ }
155
+ return u;
156
+ }
157
+ function H(e, i = 0.45, n = 2.2) {
158
+ return Math.max(i, Math.min(n, e));
159
+ }
160
+ function S(e, i = 0) {
161
+ return 16 + Math.max(1, e) * 32 + Math.max(0, i) * 9;
162
+ }
163
+ export {
164
+ F as WORKBENCH_CANVAS_ZOOM_STEP,
165
+ T as WORKBENCH_CONTEXT_MENU_WIDTH_PX,
166
+ H as clampScale,
167
+ I as createContextMenuPosition,
168
+ M as createDefaultWorkbenchState,
169
+ z as createWorkbenchId,
170
+ S as estimateContextMenuHeight,
171
+ D as findNearestWidget,
172
+ k as getTopZIndex,
173
+ w as sanitizeFilters,
174
+ p as sanitizeViewport,
175
+ E as sanitizeWorkbenchState
176
+ };
package/dist/deck.js CHANGED
@@ -1,22 +1,24 @@
1
1
  import { DECK_GRID_CONFIG as o, DeckGrid as t, getGridConfigFromElement as m } from "./components/deck/DeckGrid.js";
2
2
  import { DeckCell as f } from "./components/deck/DeckCell.js";
3
- import { DeckTopBar as x } from "./components/deck/DeckTopBar.js";
3
+ import { DeckContextMenu as i } from "./components/deck/DeckContextMenu.js";
4
+ import { DeckTopBar as D } from "./components/deck/DeckTopBar.js";
4
5
  import { DropZonePreview as g } from "./components/deck/DropZonePreview.js";
5
- import { LayoutSelector as D } from "./components/deck/LayoutSelector.js";
6
- import { WidgetFrame as c } from "./components/deck/WidgetFrame.js";
7
- import { WidgetPalette as C } from "./components/deck/WidgetPalette.js";
8
- import { WidgetResizeHandle as W } from "./components/deck/WidgetResizeHandle.js";
9
- import { WidgetTypeSwitcher as F } from "./components/deck/WidgetTypeSwitcher.js";
6
+ import { LayoutSelector as n } from "./components/deck/LayoutSelector.js";
7
+ import { WidgetFrame as C } from "./components/deck/WidgetFrame.js";
8
+ import { WidgetPalette as G } from "./components/deck/WidgetPalette.js";
9
+ import { WidgetResizeHandle as F } from "./components/deck/WidgetResizeHandle.js";
10
+ import { WidgetTypeSwitcher as w } from "./components/deck/WidgetTypeSwitcher.js";
10
11
  export {
11
12
  o as DECK_GRID_CONFIG,
12
13
  f as DeckCell,
14
+ i as DeckContextMenu,
13
15
  t as DeckGrid,
14
- x as DeckTopBar,
16
+ D as DeckTopBar,
15
17
  g as DropZonePreview,
16
- D as LayoutSelector,
17
- c as WidgetFrame,
18
- C as WidgetPalette,
19
- W as WidgetResizeHandle,
20
- F as WidgetTypeSwitcher,
18
+ n as LayoutSelector,
19
+ C as WidgetFrame,
20
+ G as WidgetPalette,
21
+ F as WidgetResizeHandle,
22
+ w as WidgetTypeSwitcher,
21
23
  m as getGridConfigFromElement
22
24
  };