@floegence/floe-webapp-core 0.36.13 → 0.36.16

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 (39) hide show
  1. package/dist/components/deck/DeckCell.js +46 -38
  2. package/dist/components/file-browser/FileContextMenu.js +8 -6
  3. package/dist/components/ui/Dialog.js +62 -52
  4. package/dist/components/ui/Dropdown.js +50 -48
  5. package/dist/components/ui/FloatingWindow.js +73 -69
  6. package/dist/components/ui/InfiniteCanvas.d.ts +2 -0
  7. package/dist/components/ui/InfiniteCanvas.js +121 -101
  8. package/dist/components/ui/canvasGeometry.d.ts +32 -0
  9. package/dist/components/ui/canvasGeometry.js +33 -0
  10. package/dist/components/ui/dialogSurfaceScope.d.ts +8 -8
  11. package/dist/components/ui/dialogSurfaceScope.js +108 -62
  12. package/dist/components/ui/index.d.ts +2 -0
  13. package/dist/components/ui/surfacePortalScope.d.ts +1 -1
  14. package/dist/components/ui/surfacePortalTypes.d.ts +8 -0
  15. package/dist/components/workbench/WorkbenchCanvas.d.ts +4 -0
  16. package/dist/components/workbench/WorkbenchCanvas.js +52 -26
  17. package/dist/components/workbench/WorkbenchCanvasField.d.ts +2 -0
  18. package/dist/components/workbench/WorkbenchCanvasField.js +18 -6
  19. package/dist/components/workbench/WorkbenchHud.d.ts +9 -0
  20. package/dist/components/workbench/WorkbenchHud.js +24 -10
  21. package/dist/components/workbench/WorkbenchSurface.js +56 -36
  22. package/dist/components/workbench/WorkbenchThemeSelector.d.ts +6 -0
  23. package/dist/components/workbench/WorkbenchThemeSelector.js +77 -0
  24. package/dist/components/workbench/WorkbenchWidget.d.ts +2 -0
  25. package/dist/components/workbench/WorkbenchWidget.js +205 -164
  26. package/dist/components/workbench/index.d.ts +2 -0
  27. package/dist/components/workbench/types.d.ts +2 -0
  28. package/dist/components/workbench/useWorkbenchModel.d.ts +6 -0
  29. package/dist/components/workbench/useWorkbenchModel.js +115 -106
  30. package/dist/components/workbench/workbenchHelpers.js +53 -50
  31. package/dist/components/workbench/workbenchThemes.d.ts +32 -0
  32. package/dist/components/workbench/workbenchThemes.js +82 -0
  33. package/dist/full.js +611 -591
  34. package/dist/styles.css +1 -1
  35. package/dist/ui.js +120 -100
  36. package/dist/workbench-themes.css +1106 -0
  37. package/dist/workbench.css +492 -96
  38. package/dist/workbench.js +35 -27
  39. package/package.json +1 -1
@@ -1,19 +1,19 @@
1
- import { use as v, insert as m, createComponent as i, effect as W, template as f } from "solid-js/web";
2
- import { createMemo as o, Show as h, For as F } from "solid-js";
3
- import { WorkbenchCanvasField as y } from "./WorkbenchCanvasField.js";
4
- import { WorkbenchWidget as R } from "./WorkbenchWidget.js";
1
+ import { use as C, insert as m, createComponent as i, effect as R, template as w } from "solid-js/web";
2
+ import { createMemo as o, Show as h, For as W } from "solid-js";
3
+ import { WorkbenchCanvasField as F } from "./WorkbenchCanvasField.js";
4
+ import { WorkbenchWidget as y } from "./WorkbenchWidget.js";
5
5
  import { createWorkbenchRenderLayerMap as I, resolveWorkbenchWidgetRenderMode as l } from "./workbenchHelpers.js";
6
- import { getWidgetEntry as c } from "./widgets/widgetRegistry.js";
6
+ import { getWidgetEntry as u } from "./widgets/widgetRegistry.js";
7
7
  import { InfiniteCanvas as S } from "../ui/InfiniteCanvas.js";
8
- var M = /* @__PURE__ */ f("<div class=workbench-canvas>"), k = /* @__PURE__ */ f("<div class=workbench-canvas__projected-layer>");
9
- function b(e) {
8
+ var k = /* @__PURE__ */ w("<div class=workbench-canvas><div class=workbench-canvas__atmosphere aria-hidden=true>"), M = /* @__PURE__ */ w("<div class=workbench-canvas__projected-layer>");
9
+ function q(e) {
10
10
  const n = o((g) => {
11
11
  const d = e.widgetById().get(e.widgetId);
12
12
  if (d) return d;
13
13
  if (g) return g;
14
14
  throw new Error(`Workbench widget ${e.widgetId} is missing from the projected render map.`);
15
- }), a = o(() => c(n().type, e.widgetDefinitions));
16
- return i(R, {
15
+ }), a = o(() => u(n().type, e.widgetDefinitions));
16
+ return i(y, {
17
17
  get definition() {
18
18
  return a();
19
19
  },
@@ -85,22 +85,30 @@ function b(e) {
85
85
  get onCommitResize() {
86
86
  return e.onCommitResize;
87
87
  },
88
+ get onRequestOverview() {
89
+ return e.onRequestOverview;
90
+ },
91
+ get onRequestFit() {
92
+ return e.onRequestFit;
93
+ },
88
94
  get onRequestDelete() {
89
95
  return e.onRequestDelete;
90
96
  }
91
97
  });
92
98
  }
93
- function q(e) {
99
+ function V(e) {
94
100
  const n = o(() => new Map(e.widgets.map((t) => [t.id, t]))), a = o(() => I(e.widgets)), g = o(() => e.widgets.filter((t) => {
95
- const r = c(t.type, e.widgetDefinitions);
101
+ const r = u(t.type, e.widgetDefinitions);
96
102
  return l(r) === "canvas_scaled";
97
103
  })), d = o(() => e.widgets.filter((t) => {
98
- const r = c(t.type, e.widgetDefinitions);
104
+ const r = u(t.type, e.widgetDefinitions);
99
105
  return l(r) === "projected_surface";
100
- }).map((t) => t.id)), w = () => e.canvasFrameSize.width > 0 && e.canvasFrameSize.height > 0;
106
+ }).map((t) => t.id)), s = () => e.canvasFrameSize.width > 0 && e.canvasFrameSize.height > 0;
101
107
  return (() => {
102
- var t = M(), r = e.setCanvasFrameRef;
103
- return typeof r == "function" ? v(r, t) : e.setCanvasFrameRef = t, m(t, i(S, {
108
+ var t = k();
109
+ t.firstChild;
110
+ var r = e.setCanvasFrameRef;
111
+ return typeof r == "function" ? C(r, t) : e.setCanvasFrameRef = t, m(t, i(S, {
104
112
  ariaLabel: "Workbench canvas",
105
113
  class: "workbench-canvas__infinite",
106
114
  get viewport() {
@@ -109,24 +117,30 @@ function q(e) {
109
117
  get onViewportChange() {
110
118
  return e.onViewportCommit;
111
119
  },
120
+ get onViewportInteractionStart() {
121
+ return e.onViewportInteractionStart;
122
+ },
112
123
  get onCanvasContextMenu() {
113
124
  return e.onCanvasContextMenu;
114
125
  },
126
+ get onCanvasPointerDown() {
127
+ return e.onCanvasPointerDown;
128
+ },
115
129
  get disablePanZoom() {
116
130
  return e.locked;
117
131
  },
118
- overlay: (s) => i(h, {
132
+ overlay: (v) => i(h, {
119
133
  get when() {
120
134
  return d().length > 0;
121
135
  },
122
136
  get children() {
123
- var u = k();
124
- return m(u, i(F, {
137
+ var c = M();
138
+ return m(c, i(W, {
125
139
  get each() {
126
140
  return d();
127
141
  },
128
- children: (C) => i(b, {
129
- widgetId: C,
142
+ children: (f) => i(q, {
143
+ widgetId: f,
130
144
  get widgetDefinitions() {
131
145
  return e.widgetDefinitions;
132
146
  },
@@ -174,19 +188,25 @@ function q(e) {
174
188
  get onCommitResize() {
175
189
  return e.onCommitResize;
176
190
  },
191
+ get onRequestOverview() {
192
+ return e.onRequestOverview;
193
+ },
194
+ get onRequestFit() {
195
+ return e.onRequestFit;
196
+ },
177
197
  get onRequestDelete() {
178
198
  return e.onRequestDelete;
179
199
  },
180
- projectedViewport: s,
200
+ projectedViewport: v,
181
201
  get surfaceReady() {
182
- return w();
202
+ return s();
183
203
  }
184
204
  })
185
- })), u;
205
+ })), c;
186
206
  }
187
207
  }),
188
208
  get children() {
189
- return i(y, {
209
+ return i(F, {
190
210
  get widgetDefinitions() {
191
211
  return e.widgetDefinitions;
192
212
  },
@@ -226,14 +246,20 @@ function q(e) {
226
246
  get onCommitResize() {
227
247
  return e.onCommitResize;
228
248
  },
249
+ get onRequestOverview() {
250
+ return e.onRequestOverview;
251
+ },
252
+ get onRequestFit() {
253
+ return e.onRequestFit;
254
+ },
229
255
  get onRequestDelete() {
230
256
  return e.onRequestDelete;
231
257
  }
232
258
  });
233
259
  }
234
- })), W(() => t.classList.toggle("is-locked", !!e.locked)), t;
260
+ }), null), R(() => t.classList.toggle("is-locked", !!e.locked)), t;
235
261
  })();
236
262
  }
237
263
  export {
238
- q as WorkbenchCanvas
264
+ V as WorkbenchCanvas
239
265
  };
@@ -19,6 +19,8 @@ export interface WorkbenchCanvasFieldProps {
19
19
  width: number;
20
20
  height: number;
21
21
  }) => void;
22
+ onRequestOverview: (item: WorkbenchWidgetItem) => void;
23
+ onRequestFit: (item: WorkbenchWidgetItem) => void;
22
24
  onRequestDelete: (widgetId: string) => void;
23
25
  }
24
26
  export declare function WorkbenchCanvasField(props: WorkbenchCanvasFieldProps): import("solid-js").JSX.Element;
@@ -3,8 +3,8 @@ import { createMemo as i, For as c } from "solid-js";
3
3
  import { createWorkbenchRenderLayerMap as a } from "./workbenchHelpers.js";
4
4
  import { getWidgetEntry as l } from "./widgets/widgetRegistry.js";
5
5
  import { WorkbenchWidget as w } from "./WorkbenchWidget.js";
6
- var f = /* @__PURE__ */ m("<div class=workbench-canvas__field><div class=workbench-canvas__grid aria-hidden=true>");
7
- function W(e) {
6
+ var v = /* @__PURE__ */ m("<div class=workbench-canvas__field><div class=workbench-canvas__grid aria-hidden=true>");
7
+ function f(e) {
8
8
  const t = i((r) => {
9
9
  const n = e.widgetById().get(e.widgetId);
10
10
  if (n) return n;
@@ -76,20 +76,26 @@ function W(e) {
76
76
  get onCommitResize() {
77
77
  return e.onCommitResize;
78
78
  },
79
+ get onRequestOverview() {
80
+ return e.onRequestOverview;
81
+ },
82
+ get onRequestFit() {
83
+ return e.onRequestFit;
84
+ },
79
85
  get onRequestDelete() {
80
86
  return e.onRequestDelete;
81
87
  }
82
88
  });
83
89
  }
84
- function v(e) {
90
+ function F(e) {
85
91
  const t = i(() => e.widgets.map((n) => n.id)), d = i(() => new Map(e.widgets.map((n) => [n.id, n]))), r = i(() => a(e.widgets));
86
92
  return (() => {
87
- var n = f();
93
+ var n = v();
88
94
  return n.firstChild, u(n, g(c, {
89
95
  get each() {
90
96
  return t();
91
97
  },
92
- children: (o) => g(W, {
98
+ children: (o) => g(f, {
93
99
  widgetId: o,
94
100
  get widgetDefinitions() {
95
101
  return e.widgetDefinitions;
@@ -132,6 +138,12 @@ function v(e) {
132
138
  get onCommitResize() {
133
139
  return e.onCommitResize;
134
140
  },
141
+ get onRequestOverview() {
142
+ return e.onRequestOverview;
143
+ },
144
+ get onRequestFit() {
145
+ return e.onRequestFit;
146
+ },
135
147
  get onRequestDelete() {
136
148
  return e.onRequestDelete;
137
149
  }
@@ -140,5 +152,5 @@ function v(e) {
140
152
  })();
141
153
  }
142
154
  export {
143
- v as WorkbenchCanvasField
155
+ F as WorkbenchCanvasField
144
156
  };
@@ -1,6 +1,15 @@
1
+ import type { WorkbenchThemeId } from './workbenchThemes';
1
2
  export interface WorkbenchHudProps {
2
3
  scaleLabel: string;
3
4
  onZoomOut: () => void;
4
5
  onZoomIn: () => void;
6
+ /**
7
+ * Current workbench theme. When provided alongside {@link onSelectTheme},
8
+ * the HUD renders an inline theme selector next to the zoom controls.
9
+ * Omit both to hide the selector entirely (e.g. when the consumer provides
10
+ * its own theming UI elsewhere).
11
+ */
12
+ activeTheme?: WorkbenchThemeId;
13
+ onSelectTheme?: (id: WorkbenchThemeId) => void;
5
14
  }
6
15
  export declare function WorkbenchHud(props: WorkbenchHudProps): import("solid-js").JSX.Element;
@@ -1,17 +1,31 @@
1
- import { insert as n, createComponent as c, template as i, delegateEvents as r } from "solid-js/web";
2
- import { Minus as u, Plus as s } from "../icons/index.js";
3
- var b = /* @__PURE__ */ i('<div class=workbench-hud data-floe-canvas-interactive=true><button type=button class=workbench-hud__button aria-label="Zoom out"></button><div class=workbench-hud__scale></div><button type=button class=workbench-hud__button aria-label="Zoom in">');
4
- function m(t) {
1
+ import { insert as n, createComponent as o, memo as h, template as i, delegateEvents as u } from "solid-js/web";
2
+ import { Show as m } from "solid-js";
3
+ import { Minus as b, Plus as d } from "../icons/index.js";
4
+ import { WorkbenchThemeSelector as s } from "./WorkbenchThemeSelector.js";
5
+ var _ = /* @__PURE__ */ i("<div class=workbench-hud__divider aria-hidden=true>"), v = /* @__PURE__ */ i('<div class=workbench-hud data-floe-canvas-interactive=true><button type=button class=workbench-hud__button aria-label="Zoom out"></button><div class=workbench-hud__scale></div><button type=button class=workbench-hud__button aria-label="Zoom in">');
6
+ function S(e) {
5
7
  return (() => {
6
- var o = b(), e = o.firstChild, l = e.nextSibling, a = l.nextSibling;
7
- return e.$$click = () => t.onZoomOut(), n(e, c(u, {
8
+ var l = v(), t = l.firstChild, c = t.nextSibling, r = c.nextSibling;
9
+ return n(l, o(m, {
10
+ get when() {
11
+ return h(() => !!e.activeTheme)() && e.onSelectTheme;
12
+ },
13
+ get children() {
14
+ return [o(s, {
15
+ get activeTheme() {
16
+ return e.activeTheme;
17
+ },
18
+ onSelect: (a) => e.onSelectTheme?.(a)
19
+ }), _()];
20
+ }
21
+ }), t), t.$$click = () => e.onZoomOut(), n(t, o(b, {
8
22
  class: "w-3.5 h-3.5"
9
- })), n(l, () => t.scaleLabel), a.$$click = () => t.onZoomIn(), n(a, c(s, {
23
+ })), n(c, () => e.scaleLabel), r.$$click = () => e.onZoomIn(), n(r, o(d, {
10
24
  class: "w-3.5 h-3.5"
11
- })), o;
25
+ })), l;
12
26
  })();
13
27
  }
14
- r(["click"]);
28
+ u(["click"]);
15
29
  export {
16
- m as WorkbenchHud
30
+ S as WorkbenchHud
17
31
  };
@@ -1,17 +1,18 @@
1
- import { insert as c, createComponent as a, Portal as h, addEventListener as p, effect as k, className as W, template as g, delegateEvents as b } from "solid-js/web";
2
- import { createEffect as s, onCleanup as u, Show as C } from "solid-js";
3
- import { isTypingElement as y } from "../../utils/dom.js";
4
- import { WorkbenchCanvas as A } from "./WorkbenchCanvas.js";
5
- import { WorkbenchContextMenu as D } from "./WorkbenchContextMenu.js";
6
- import { WorkbenchFilterBar as x } from "./WorkbenchFilterBar.js";
7
- import { WorkbenchHud as S } from "./WorkbenchHud.js";
1
+ import { insert as c, createComponent as a, Portal as v, addEventListener as w, effect as h, className as k, setAttribute as p, template as g, delegateEvents as W } from "solid-js/web";
2
+ import { createEffect as s, onCleanup as u, Show as b } from "solid-js";
3
+ import { isTypingElement as C } from "../../utils/dom.js";
4
+ import { clientToCanvasWorld as A } from "../ui/canvasGeometry.js";
5
+ import { WorkbenchCanvas as D } from "./WorkbenchCanvas.js";
6
+ import { WorkbenchContextMenu as y } from "./WorkbenchContextMenu.js";
7
+ import { WorkbenchFilterBar as S } from "./WorkbenchFilterBar.js";
8
+ import { WorkbenchHud as x } from "./WorkbenchHud.js";
8
9
  import { WorkbenchLockButton as M } from "./WorkbenchLockButton.js";
9
10
  import { installWorkbenchContextMenuDismissListeners as F } from "./workbenchContextMenuDismiss.js";
10
- import { useWorkbenchModel as L } from "./useWorkbenchModel.js";
11
- var R = /* @__PURE__ */ g("<div class=workbench-menu-backdrop data-floe-workbench-boundary=true>"), E = /* @__PURE__ */ g("<div><div class=workbench-surface__body data-floe-workbench-canvas-frame=true>");
12
- const _ = "F1";
13
- function P(i) {
14
- const e = L({
11
+ import { useWorkbenchModel as R } from "./useWorkbenchModel.js";
12
+ var T = /* @__PURE__ */ g("<div class=workbench-menu-backdrop data-floe-workbench-boundary=true>"), L = /* @__PURE__ */ g("<div><div class=workbench-surface__body data-floe-workbench-canvas-frame=true>");
13
+ const E = "F1";
14
+ function H(i) {
15
+ const e = R({
15
16
  state: () => i.state(),
16
17
  setState: (t) => i.setState(t),
17
18
  widgetDefinitions: () => i.widgetDefinitions,
@@ -30,7 +31,7 @@ function P(i) {
30
31
  i.onApiReady?.(null);
31
32
  });
32
33
  });
33
- const d = () => i.lockShortcut === void 0 ? _ : i.lockShortcut;
34
+ const l = () => i.lockShortcut === void 0 ? E : i.lockShortcut;
34
35
  s(() => {
35
36
  if (typeof window > "u" || !e.contextMenu.state()) return;
36
37
  const t = F({
@@ -40,14 +41,14 @@ function P(i) {
40
41
  u(() => t());
41
42
  }), s(() => {
42
43
  if (i.enableKeyboard === !1 || typeof document > "u") return;
43
- const t = d(), r = (n) => {
44
+ const t = l(), r = (n) => {
44
45
  if (n.defaultPrevented || n.isComposing) return;
45
46
  if (t !== null && n.key === t) {
46
47
  n.preventDefault(), e.lock.toggle();
47
48
  return;
48
49
  }
49
50
  const o = n.target;
50
- if (!(o instanceof Element && y(o)))
51
+ if (!(o instanceof Element && C(o)))
51
52
  switch (n.key) {
52
53
  case "ArrowUp":
53
54
  n.preventDefault(), e.navigation.handleArrowNavigation("up");
@@ -73,20 +74,17 @@ function P(i) {
73
74
  const n = document.querySelector('[data-floe-workbench-canvas-frame="true"]');
74
75
  if (!n) return null;
75
76
  const o = n.getBoundingClientRect();
76
- if (t < o.left || t > o.right || r < o.top || r > o.bottom)
77
- return null;
78
- const w = t - o.left, v = r - o.top, l = e.viewport();
79
- return {
80
- worldX: (w - l.x) / l.scale,
81
- worldY: (v - l.y) / l.scale
82
- };
77
+ return A(o, e.viewport(), {
78
+ clientX: t,
79
+ clientY: r
80
+ });
83
81
  }, f = (t, r, n) => {
84
82
  const o = m(r, n);
85
83
  o && e.widgetActions.addWidgetAtCursor(t, o.worldX, o.worldY);
86
84
  };
87
85
  return (() => {
88
- var t = E(), r = t.firstChild;
89
- return c(r, a(A, {
86
+ var t = L(), r = t.firstChild;
87
+ return c(r, a(D, {
90
88
  get widgetDefinitions() {
91
89
  return e.widgetDefinitions();
92
90
  },
@@ -117,9 +115,15 @@ function P(i) {
117
115
  get onViewportCommit() {
118
116
  return e.canvas.commitViewport;
119
117
  },
118
+ get onViewportInteractionStart() {
119
+ return e.canvas.cancelViewportNavigation;
120
+ },
120
121
  get onCanvasContextMenu() {
121
122
  return e.canvas.openCanvasContextMenu;
122
123
  },
124
+ get onCanvasPointerDown() {
125
+ return e.selection.clear;
126
+ },
123
127
  get onSelectWidget() {
124
128
  return e.canvas.selectWidget;
125
129
  },
@@ -138,6 +142,12 @@ function P(i) {
138
142
  get onCommitResize() {
139
143
  return e.canvas.commitResize;
140
144
  },
145
+ get onRequestOverview() {
146
+ return e.navigation.overviewWidget;
147
+ },
148
+ get onRequestFit() {
149
+ return e.navigation.fitWidget;
150
+ },
141
151
  get onRequestDelete() {
142
152
  return e.widgetActions.deleteWidget;
143
153
  }
@@ -149,9 +159,9 @@ function P(i) {
149
159
  return e.lock.toggle;
150
160
  },
151
161
  get shortcutLabel() {
152
- return d() ?? void 0;
162
+ return l() ?? void 0;
153
163
  }
154
- }), null), c(t, a(x, {
164
+ }), null), c(t, a(S, {
155
165
  get widgetDefinitions() {
156
166
  return e.widgetDefinitions();
157
167
  },
@@ -168,7 +178,7 @@ function P(i) {
168
178
  return e.filter.showAll;
169
179
  },
170
180
  onCreateAt: f
171
- }), null), c(t, a(S, {
181
+ }), null), c(t, a(x, {
172
182
  get scaleLabel() {
173
183
  return e.scaleLabel();
174
184
  },
@@ -177,18 +187,22 @@ function P(i) {
177
187
  },
178
188
  get onZoomIn() {
179
189
  return e.hud.zoomIn;
180
- }
181
- }), null), c(t, a(C, {
190
+ },
191
+ get activeTheme() {
192
+ return e.theme();
193
+ },
194
+ onSelectTheme: (n) => e.appearance.setTheme(n)
195
+ }), null), c(t, a(b, {
182
196
  get when() {
183
197
  return e.contextMenu.state();
184
198
  },
185
199
  get children() {
186
- return a(h, {
200
+ return a(v, {
187
201
  get children() {
188
202
  return [(() => {
189
- var n = R();
190
- return p(n, "contextmenu", e.contextMenu.retarget, !0), n;
191
- })(), a(D, {
203
+ var n = T();
204
+ return w(n, "contextmenu", e.contextMenu.retarget, !0), n;
205
+ })(), a(y, {
192
206
  get x() {
193
207
  return e.contextMenu.position()?.left ?? 0;
194
208
  },
@@ -202,10 +216,16 @@ function P(i) {
202
216
  }
203
217
  });
204
218
  }
205
- }), null), k(() => W(t, `workbench-surface${i.class ? ` ${i.class}` : ""}`)), t;
219
+ }), null), h((n) => {
220
+ var o = `workbench-surface${i.class ? ` ${i.class}` : ""}`, d = e.theme();
221
+ return o !== n.e && k(t, n.e = o), d !== n.t && p(t, "data-workbench-theme", n.t = d), n;
222
+ }, {
223
+ e: void 0,
224
+ t: void 0
225
+ }), t;
206
226
  })();
207
227
  }
208
- b(["contextmenu"]);
228
+ W(["contextmenu"]);
209
229
  export {
210
- P as WorkbenchSurface
230
+ H as WorkbenchSurface
211
231
  };
@@ -0,0 +1,6 @@
1
+ import { type WorkbenchThemeId } from './workbenchThemes';
2
+ export interface WorkbenchThemeSelectorProps {
3
+ activeTheme: WorkbenchThemeId;
4
+ onSelect: (id: WorkbenchThemeId) => void;
5
+ }
6
+ export declare function WorkbenchThemeSelector(props: WorkbenchThemeSelectorProps): import("solid-js").JSX.Element;
@@ -0,0 +1,77 @@
1
+ import { createComponent as l, insert as c, template as o, effect as $, setAttribute as k, setStyleProperty as h, delegateEvents as S } from "solid-js/web";
2
+ import { createMemo as u, For as T } from "solid-js";
3
+ import { Sparkles as C } from "../icons/index.js";
4
+ import { Dropdown as x } from "../ui/Dropdown.js";
5
+ import { workbenchThemeMeta as W, WORKBENCH_THEMES as E } from "./workbenchThemes.js";
6
+ var y = /* @__PURE__ */ o("<div class=workbench-theme-selector data-floe-canvas-interactive=true>"), L = /* @__PURE__ */ o("<span class=workbench-theme-selector__trigger-inner>"), M = /* @__PURE__ */ o('<div class=workbench-theme-grid role=radiogroup aria-label="Workbench theme"><div class=workbench-theme-grid__header>Workbench theme</div><div class=workbench-theme-grid__items>'), p = /* @__PURE__ */ o("<button type=button class=workbench-theme-tile role=radio><span class=workbench-theme-tile__canvas aria-hidden=true><span class=workbench-theme-tile__widget></span><span class=workbench-theme-tile__dot></span></span><span class=workbench-theme-tile__meta><span class=workbench-theme-tile__label></span><span class=workbench-theme-tile__description>");
7
+ function K(e) {
8
+ const r = u(() => W(e.activeTheme).label), a = u(() => [{
9
+ id: "theme-grid",
10
+ label: "Theme",
11
+ keepOpen: !0,
12
+ content: () => l(A, {
13
+ get activeTheme() {
14
+ return e.activeTheme;
15
+ },
16
+ onSelect: (i) => e.onSelect(i)
17
+ })
18
+ }]);
19
+ return (() => {
20
+ var i = y();
21
+ return c(i, l(x, {
22
+ get trigger() {
23
+ return (() => {
24
+ var n = L();
25
+ return c(n, l(C, {
26
+ class: "w-3.5 h-3.5"
27
+ })), n;
28
+ })();
29
+ },
30
+ get triggerAriaLabel() {
31
+ return `Workbench theme · ${r()}`;
32
+ },
33
+ triggerClass: "workbench-theme-selector__trigger",
34
+ get items() {
35
+ return a();
36
+ },
37
+ onSelect: () => {
38
+ },
39
+ align: "end"
40
+ })), i;
41
+ })();
42
+ }
43
+ function A(e) {
44
+ return (() => {
45
+ var r = M(), a = r.firstChild, i = a.nextSibling;
46
+ return c(i, l(T, {
47
+ each: E,
48
+ children: (n) => l(H, {
49
+ theme: n,
50
+ get active() {
51
+ return n.id === e.activeTheme;
52
+ },
53
+ onClick: () => e.onSelect(n.id)
54
+ })
55
+ })), r;
56
+ })();
57
+ }
58
+ function H(e) {
59
+ return (() => {
60
+ var r = p(), a = r.firstChild, i = a.firstChild, n = i.nextSibling, w = a.nextSibling, s = w.firstChild, f = s.nextSibling;
61
+ return r.$$click = () => e.onClick(), c(s, () => e.theme.label), c(f, () => e.theme.description), $((t) => {
62
+ var m = !!e.active, d = e.active, v = e.active, b = e.theme.preview.canvas, g = e.theme.preview.widget, _ = e.theme.preview.accent;
63
+ return m !== t.e && r.classList.toggle("is-active", t.e = m), d !== t.t && k(r, "aria-pressed", t.t = d), v !== t.a && k(r, "aria-checked", t.a = v), b !== t.o && h(a, "background", t.o = b), g !== t.i && h(i, "background", t.i = g), _ !== t.n && h(n, "background", t.n = _), t;
64
+ }, {
65
+ e: void 0,
66
+ t: void 0,
67
+ a: void 0,
68
+ o: void 0,
69
+ i: void 0,
70
+ n: void 0
71
+ }), r;
72
+ })();
73
+ }
74
+ S(["click"]);
75
+ export {
76
+ K as WorkbenchThemeSelector
77
+ };
@@ -32,6 +32,8 @@ export interface WorkbenchWidgetProps {
32
32
  width: number;
33
33
  height: number;
34
34
  }) => void;
35
+ onRequestOverview: (item: WorkbenchWidgetItem) => void;
36
+ onRequestFit: (item: WorkbenchWidgetItem) => void;
35
37
  onRequestDelete: (widgetId: string) => void;
36
38
  }
37
39
  export declare function WorkbenchWidget(props: WorkbenchWidgetProps): JSX.Element;