@floegence/floe-webapp-core 0.36.41 → 0.36.43

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 (37) hide show
  1. package/dist/components/icons/index.d.ts +2 -0
  2. package/dist/components/icons/index.js +419 -397
  3. package/dist/components/ui/FloatingWindow.d.ts +3 -0
  4. package/dist/components/ui/FloatingWindow.js +181 -181
  5. package/dist/components/ui/floatingWindowGeometry.d.ts +15 -0
  6. package/dist/components/ui/floatingWindowGeometry.js +80 -48
  7. package/dist/components/ui/index.d.ts +1 -0
  8. package/dist/components/workbench/WorkbenchCanvas.d.ts +45 -2
  9. package/dist/components/workbench/WorkbenchCanvas.js +265 -66
  10. package/dist/components/workbench/WorkbenchCanvasField.d.ts +47 -2
  11. package/dist/components/workbench/WorkbenchCanvasField.js +258 -78
  12. package/dist/components/workbench/WorkbenchFilterBar.d.ts +9 -7
  13. package/dist/components/workbench/WorkbenchFilterBar.js +233 -145
  14. package/dist/components/workbench/WorkbenchLayerObjects.d.ts +136 -0
  15. package/dist/components/workbench/WorkbenchLayerObjects.js +986 -0
  16. package/dist/components/workbench/WorkbenchOverlay.d.ts +4 -1
  17. package/dist/components/workbench/WorkbenchOverlay.js +59 -29
  18. package/dist/components/workbench/WorkbenchSurface.d.ts +23 -11
  19. package/dist/components/workbench/WorkbenchSurface.js +315 -195
  20. package/dist/components/workbench/WorkbenchWidget.js +37 -37
  21. package/dist/components/workbench/index.d.ts +2 -1
  22. package/dist/components/workbench/types.d.ts +96 -1
  23. package/dist/components/workbench/types.js +12 -4
  24. package/dist/components/workbench/useWorkbenchModel.d.ts +62 -4
  25. package/dist/components/workbench/useWorkbenchModel.js +790 -253
  26. package/dist/components/workbench/widgets/widgetRegistry.d.ts +1 -1
  27. package/dist/components/workbench/workbenchHelpers.d.ts +5 -5
  28. package/dist/components/workbench/workbenchHelpers.js +345 -154
  29. package/dist/components/workbench/workbenchOptions.d.ts +43 -0
  30. package/dist/components/workbench/workbenchOptions.js +112 -0
  31. package/dist/full.js +620 -616
  32. package/dist/icons.js +71 -69
  33. package/dist/styles.css +1 -1
  34. package/dist/ui.js +42 -40
  35. package/dist/workbench.css +1117 -26
  36. package/dist/workbench.js +52 -36
  37. package/package.json +1 -1
@@ -1,193 +1,373 @@
1
- import { insert as a, createComponent as d, template as c } from "solid-js/web";
2
- import { createMemo as r, For as m } from "solid-js";
3
- import { resolveWorkbenchInteractionAdapter as w } from "./workbenchInteractionAdapter.js";
4
- import { createWorkbenchRenderLayerMap as l } from "./workbenchHelpers.js";
5
- import { getWidgetEntry as I } from "./widgets/widgetRegistry.js";
6
- import { WorkbenchWidget as v } from "./WorkbenchWidget.js";
7
- var y = /* @__PURE__ */ c("<div class=workbench-canvas__field><div class=workbench-canvas__grid aria-hidden=true>");
8
- function C(t) {
9
- const e = r((i) => {
10
- const o = t.widgetById().get(t.widgetId);
1
+ import { insert as g, createComponent as d, memo as u, effect as f, template as R } from "solid-js/web";
2
+ import { createMemo as c, createSignal as W, For as L } from "solid-js";
3
+ import { resolveWorkbenchInteractionAdapter as h } from "./workbenchInteractionAdapter.js";
4
+ import { WORKBENCH_BACKGROUND_REGION_FILTER_ID as F, WORKBENCH_TEXT_FILTER_ID as M, WORKBENCH_STICKY_FILTER_ID as O } from "./types.js";
5
+ import { createWorkbenchRenderLayerMap as E } from "./workbenchHelpers.js";
6
+ import { getWidgetEntry as N } from "./widgets/widgetRegistry.js";
7
+ import { WorkbenchWidget as B } from "./WorkbenchWidget.js";
8
+ import { WorkbenchBackgroundLayerView as x, WorkbenchAnnotationLayerView as A, WorkbenchLayerControlOverlayView as D, createWorkbenchTextEditorRegistry as _, WorkbenchStickyNote as j } from "./WorkbenchLayerObjects.js";
9
+ var q = /* @__PURE__ */ R("<div class=workbench-canvas__field><div class=workbench-canvas__grid aria-hidden=true></div><div class=workbench-work-layer>");
10
+ function z(e) {
11
+ const a = c((o) => {
12
+ const m = e.widgetById().get(e.widgetId);
13
+ if (m) return m;
11
14
  if (o) return o;
12
- if (i) return i;
13
- throw new Error(`Workbench widget ${t.widgetId} is missing from the render map.`);
14
- }), g = r(() => I(e().type, t.widgetDefinitions));
15
- return d(v, {
15
+ throw new Error(`Workbench widget ${e.widgetId} is missing from the render map.`);
16
+ }), n = c(() => N(a().type, e.widgetDefinitions));
17
+ return d(B, {
16
18
  get definition() {
17
- return g();
19
+ return n();
18
20
  },
19
21
  get widgetId() {
20
- return t.widgetId;
22
+ return e.widgetId;
21
23
  },
22
24
  get widgetTitle() {
23
- return e().title;
25
+ return a().title;
24
26
  },
25
27
  get widgetType() {
26
- return e().type;
28
+ return a().type;
27
29
  },
28
30
  get x() {
29
- return e().x;
31
+ return a().x;
30
32
  },
31
33
  get y() {
32
- return e().y;
34
+ return a().y;
33
35
  },
34
36
  get width() {
35
- return e().width;
37
+ return a().width;
36
38
  },
37
39
  get height() {
38
- return e().height;
40
+ return a().height;
39
41
  },
40
42
  get renderLayer() {
41
- return t.renderLayers().byWidgetId.get(t.widgetId) ?? 1;
43
+ return e.renderLayers().byWidgetId.get(e.widgetId) ?? 1;
42
44
  },
43
- itemSnapshot: e,
45
+ itemSnapshot: a,
44
46
  get selected() {
45
- return t.selectedWidgetId === t.widgetId;
47
+ return e.selectedWidgetId === e.widgetId;
46
48
  },
47
49
  get optimisticFront() {
48
- return t.optimisticFrontWidgetId === t.widgetId;
50
+ return e.optimisticFrontWidgetId === e.widgetId;
49
51
  },
50
52
  get topRenderLayer() {
51
- return t.renderLayers().topRenderLayer;
53
+ return e.renderLayers().topRenderLayer;
52
54
  },
53
55
  get viewportScale() {
54
- return t.viewportScale;
56
+ return e.viewportScale;
55
57
  },
56
58
  get locked() {
57
- return t.locked;
59
+ return e.locked;
58
60
  },
59
61
  get filtered() {
60
- return !t.filters[e().type];
62
+ return u(() => !e.workLayerLocked)() && e.filters[a().type] === !1;
61
63
  },
62
64
  get interactionAdapter() {
63
- return t.interactionAdapter;
65
+ return e.interactionAdapter;
64
66
  },
65
67
  get viewport() {
66
- return t.viewport;
68
+ return e.viewport;
67
69
  },
68
70
  get onSelect() {
69
- return t.onSelectWidget;
71
+ return e.onSelectWidget;
70
72
  },
71
73
  get onContextMenu() {
72
- return t.onWidgetContextMenu;
74
+ return e.onWidgetContextMenu;
73
75
  },
74
76
  get onStartOptimisticFront() {
75
- return t.onStartOptimisticFront;
77
+ return e.onStartOptimisticFront;
76
78
  },
77
79
  get onCommitFront() {
78
- return t.onCommitFront;
80
+ return e.onCommitFront;
79
81
  },
80
82
  get onCommitMove() {
81
- return t.onCommitMove;
83
+ return e.onCommitMove;
82
84
  },
83
85
  get onCommitResize() {
84
- return t.onCommitResize;
86
+ return e.onCommitResize;
85
87
  },
86
88
  get onViewportCommit() {
87
- return t.onViewportCommit;
89
+ return e.onViewportCommit;
88
90
  },
89
91
  get onViewportInteractionStart() {
90
- return t.onViewportInteractionStart;
92
+ return e.onViewportInteractionStart;
91
93
  },
92
94
  get onRequestOverview() {
93
- return t.onRequestOverview;
95
+ return e.onRequestOverview;
94
96
  },
95
97
  get onRequestFit() {
96
- return t.onRequestFit;
98
+ return e.onRequestFit;
97
99
  },
98
100
  get onRequestDelete() {
99
- return t.onRequestDelete;
101
+ return e.onRequestDelete;
100
102
  },
101
103
  get onLayoutInteractionStart() {
102
- return t.onLayoutInteractionStart;
104
+ return e.onLayoutInteractionStart;
103
105
  },
104
106
  get onLayoutInteractionEnd() {
105
- return t.onLayoutInteractionEnd;
107
+ return e.onLayoutInteractionEnd;
106
108
  }
107
109
  });
108
110
  }
109
- function L(t) {
110
- const e = r(() => w(t.interactionAdapter)), g = r(() => t.widgets.map((n) => n.id)), i = r(() => new Map(t.widgets.map((n) => [n.id, n]))), o = r(() => l(t.widgets));
111
+ function T(e) {
112
+ const a = c((n) => {
113
+ const o = e.stickyNoteById().get(e.noteId);
114
+ if (o) return o;
115
+ if (n) return n;
116
+ throw new Error(`Workbench sticky note ${e.noteId} is missing from the render map.`);
117
+ });
118
+ return d(j, {
119
+ get item() {
120
+ return a();
121
+ },
122
+ get selected() {
123
+ return u(() => e.selectedObject?.kind === "sticky_note")() && e.selectedObject.id === e.noteId;
124
+ },
125
+ get viewportScale() {
126
+ return e.viewportScale;
127
+ },
128
+ get renderLayer() {
129
+ return e.renderLayers().byWidgetId.get(e.noteId) ?? e.renderLayers().topRenderLayer;
130
+ },
131
+ get topRenderLayer() {
132
+ return e.renderLayers().topRenderLayer;
133
+ },
134
+ get locked() {
135
+ return e.locked;
136
+ },
137
+ get filtered() {
138
+ return e.filtered;
139
+ },
140
+ get optimisticFront() {
141
+ return e.optimisticFrontWidgetId === e.noteId;
142
+ },
143
+ onSelect: (n) => e.onSelectStickyNote?.(n),
144
+ onContextMenu: (n, o) => e.onStickyNoteContextMenu?.(n, o),
145
+ onStartOptimisticFront: (n) => e.onStartStickyOptimisticFront?.(n),
146
+ onCommitFront: (n) => e.onCommitStickyFront?.(n),
147
+ onCommitMove: (n, o) => e.onCommitStickyMove?.(n, o),
148
+ onCommitResize: (n, o) => e.onCommitStickyResize?.(n, o),
149
+ onUpdate: (n, o) => e.onUpdateStickyNote?.(n, o),
150
+ onDelete: (n) => e.onDeleteStickyNote?.(n),
151
+ get onLayoutInteractionStart() {
152
+ return e.onLayoutInteractionStart;
153
+ },
154
+ get onLayoutInteractionEnd() {
155
+ return e.onLayoutInteractionEnd;
156
+ }
157
+ });
158
+ }
159
+ function X(e) {
160
+ const a = c(() => h(e.interactionAdapter)), n = c(() => e.widgets.map((r) => r.id)), o = c(() => new Map(e.widgets.map((r) => [r.id, r]))), m = c(() => (e.stickyNotes ?? []).map((r) => r.id)), v = c(() => new Map((e.stickyNotes ?? []).map((r) => [r.id, r]))), w = _(), S = c(() => E([...e.widgets, ...e.stickyNotes ?? []])), I = c(() => e.selectedObject?.kind === "widget" ? e.selectedObject.id : e.selectedWidgetId), C = c(() => e.locked || !!e.workLayerLocked), [y, k] = W(null);
111
161
  return (() => {
112
- var n = y();
113
- return n.firstChild, a(n, d(m, {
162
+ var r = q(), b = r.firstChild, l = b.nextSibling;
163
+ return g(r, d(x, {
164
+ get items() {
165
+ return e.backgroundLayers ?? [];
166
+ },
167
+ get selectedObject() {
168
+ return e.selectedObject ?? null;
169
+ },
170
+ get editable() {
171
+ return u(() => !!e.backgroundLayerEditable)() && !e.locked;
172
+ },
173
+ get filtered() {
174
+ return e.filters[F] === !1;
175
+ },
176
+ get preview() {
177
+ return y();
178
+ },
179
+ onPreviewGeometry: k,
180
+ get viewport() {
181
+ return e.viewport;
182
+ },
183
+ onSelect: (t) => e.onSelectBackgroundLayer?.(t),
184
+ onContextMenu: (t, i) => e.onBackgroundLayerContextMenu?.(t, i),
185
+ onCommitMove: (t, i) => e.onCommitBackgroundMove?.(t, i)
186
+ }), l), g(r, d(A, {
187
+ get items() {
188
+ return e.annotations ?? [];
189
+ },
190
+ get selectedObject() {
191
+ return e.selectedObject ?? null;
192
+ },
193
+ get editable() {
194
+ return u(() => !!e.annotationLayerEditable)() && !e.locked;
195
+ },
196
+ get filtered() {
197
+ return e.filters[M] === !1;
198
+ },
199
+ get preview() {
200
+ return y();
201
+ },
202
+ onPreviewGeometry: k,
203
+ textEditorRegistry: w,
204
+ get viewport() {
205
+ return e.viewport;
206
+ },
207
+ onSelect: (t) => e.onSelectAnnotation?.(t),
208
+ onContextMenu: (t, i) => e.onAnnotationContextMenu?.(t, i),
209
+ onCommitMove: (t, i) => e.onCommitAnnotationMove?.(t, i),
210
+ onUpdate: (t, i) => e.onUpdateTextAnnotation?.(t, i)
211
+ }), l), g(l, d(L, {
114
212
  get each() {
115
- return g();
213
+ return n();
116
214
  },
117
- children: (u) => d(C, {
118
- widgetId: u,
215
+ children: (t) => d(z, {
216
+ widgetId: t,
119
217
  get widgetDefinitions() {
120
- return t.widgetDefinitions;
218
+ return e.widgetDefinitions;
121
219
  },
122
220
  get widgets() {
123
- return t.widgets;
221
+ return e.widgets;
124
222
  },
125
- widgetById: i,
126
- renderLayers: o,
223
+ widgetById: o,
224
+ renderLayers: S,
127
225
  get viewport() {
128
- return t.viewport;
226
+ return e.viewport;
129
227
  },
130
228
  get selectedWidgetId() {
131
- return t.selectedWidgetId;
229
+ return I();
132
230
  },
133
231
  get optimisticFrontWidgetId() {
134
- return t.optimisticFrontWidgetId;
232
+ return e.optimisticFrontWidgetId;
135
233
  },
136
234
  get viewportScale() {
137
- return t.viewportScale;
235
+ return e.viewportScale;
138
236
  },
139
237
  get locked() {
140
- return t.locked;
238
+ return C();
141
239
  },
142
240
  get filters() {
143
- return t.filters;
241
+ return e.filters;
144
242
  },
145
243
  get interactionAdapter() {
146
- return e();
244
+ return a();
147
245
  },
148
246
  get onSelectWidget() {
149
- return t.onSelectWidget;
247
+ return e.onSelectWidget;
150
248
  },
151
249
  get onWidgetContextMenu() {
152
- return t.onWidgetContextMenu;
250
+ return e.onWidgetContextMenu;
153
251
  },
154
252
  get onStartOptimisticFront() {
155
- return t.onStartOptimisticFront;
253
+ return e.onStartOptimisticFront;
156
254
  },
157
255
  get onCommitFront() {
158
- return t.onCommitFront;
256
+ return e.onCommitFront;
159
257
  },
160
258
  get onCommitMove() {
161
- return t.onCommitMove;
259
+ return e.onCommitMove;
162
260
  },
163
261
  get onCommitResize() {
164
- return t.onCommitResize;
262
+ return e.onCommitResize;
165
263
  },
166
264
  get onViewportCommit() {
167
- return t.onViewportCommit;
265
+ return e.onViewportCommit;
168
266
  },
169
267
  get onViewportInteractionStart() {
170
- return t.onViewportInteractionStart;
268
+ return e.onViewportInteractionStart;
171
269
  },
172
270
  get onRequestOverview() {
173
- return t.onRequestOverview;
271
+ return e.onRequestOverview;
174
272
  },
175
273
  get onRequestFit() {
176
- return t.onRequestFit;
274
+ return e.onRequestFit;
177
275
  },
178
276
  get onRequestDelete() {
179
- return t.onRequestDelete;
277
+ return e.onRequestDelete;
180
278
  },
181
279
  get onLayoutInteractionStart() {
182
- return t.onLayoutInteractionStart;
280
+ return e.onLayoutInteractionStart;
183
281
  },
184
282
  get onLayoutInteractionEnd() {
185
- return t.onLayoutInteractionEnd;
283
+ return e.onLayoutInteractionEnd;
186
284
  }
187
285
  })
188
- }), null), n;
286
+ }), null), g(l, d(L, {
287
+ get each() {
288
+ return m();
289
+ },
290
+ children: (t) => d(T, {
291
+ noteId: t,
292
+ stickyNoteById: v,
293
+ get selectedObject() {
294
+ return e.selectedObject;
295
+ },
296
+ get optimisticFrontWidgetId() {
297
+ return e.optimisticFrontWidgetId;
298
+ },
299
+ get viewportScale() {
300
+ return e.viewportScale;
301
+ },
302
+ get locked() {
303
+ return C();
304
+ },
305
+ get filtered() {
306
+ return u(() => !e.workLayerLocked)() && e.filters[O] === !1;
307
+ },
308
+ get onSelectStickyNote() {
309
+ return e.onSelectStickyNote;
310
+ },
311
+ get onStickyNoteContextMenu() {
312
+ return e.onStickyNoteContextMenu;
313
+ },
314
+ get onStartStickyOptimisticFront() {
315
+ return e.onStartStickyOptimisticFront;
316
+ },
317
+ get onCommitStickyFront() {
318
+ return e.onCommitStickyFront;
319
+ },
320
+ get onCommitStickyMove() {
321
+ return e.onCommitStickyMove;
322
+ },
323
+ get onCommitStickyResize() {
324
+ return e.onCommitStickyResize;
325
+ },
326
+ get onUpdateStickyNote() {
327
+ return e.onUpdateStickyNote;
328
+ },
329
+ get onDeleteStickyNote() {
330
+ return e.onDeleteStickyNote;
331
+ },
332
+ get onLayoutInteractionStart() {
333
+ return e.onLayoutInteractionStart;
334
+ },
335
+ get onLayoutInteractionEnd() {
336
+ return e.onLayoutInteractionEnd;
337
+ },
338
+ renderLayers: S
339
+ })
340
+ }), null), g(r, d(D, {
341
+ get annotations() {
342
+ return e.annotations ?? [];
343
+ },
344
+ get backgroundLayers() {
345
+ return e.backgroundLayers ?? [];
346
+ },
347
+ get selectedObject() {
348
+ return e.selectedObject ?? null;
349
+ },
350
+ get editable() {
351
+ return u(() => !!(e.annotationLayerEditable || e.backgroundLayerEditable))() && !e.locked;
352
+ },
353
+ get viewport() {
354
+ return e.viewport;
355
+ },
356
+ get preview() {
357
+ return y();
358
+ },
359
+ onPreviewGeometry: k,
360
+ textEditorRegistry: w,
361
+ onCommitAnnotationMove: (t, i) => e.onCommitAnnotationMove?.(t, i),
362
+ onCommitAnnotationResize: (t, i) => e.onCommitAnnotationResize?.(t, i),
363
+ onUpdateTextAnnotation: (t, i) => e.onUpdateTextAnnotation?.(t, i),
364
+ onDeleteAnnotation: (t) => e.onDeleteAnnotation?.(t),
365
+ onCommitBackgroundResize: (t, i) => e.onCommitBackgroundResize?.(t, i),
366
+ onUpdateBackgroundLayer: (t, i) => e.onUpdateBackgroundLayer?.(t, i),
367
+ onDeleteBackgroundLayer: (t) => e.onDeleteBackgroundLayer?.(t)
368
+ }), null), f(() => r.classList.toggle("is-work-layer-muted", !!e.workLayerLocked)), r;
189
369
  })();
190
370
  }
191
371
  export {
192
- L as WorkbenchCanvasField
372
+ X as WorkbenchCanvasField
193
373
  };
@@ -1,20 +1,22 @@
1
1
  import { type JSX } from 'solid-js';
2
- import type { WorkbenchViewport, WorkbenchWidgetDefinition, WorkbenchWidgetItem, WorkbenchWidgetType } from './types';
2
+ import type { WorkbenchDockToolId, WorkbenchInteractionMode, WorkbenchViewport, WorkbenchWidgetDefinition, WorkbenchWidgetItem, WorkbenchWidgetType } from './types';
3
3
  export interface WorkbenchFilterBarProps {
4
4
  widgetDefinitions: readonly WorkbenchWidgetDefinition[];
5
5
  widgets: readonly WorkbenchWidgetItem[];
6
- filters: Record<WorkbenchWidgetType, boolean>;
7
- /** Solo a single widget type — only this type remains visible. */
8
- onSoloFilter: (type: WorkbenchWidgetType) => void;
9
- /** Reset filters so every widget type is visible again. */
10
- onShowAll: () => void;
6
+ filters: Record<string, boolean>;
7
+ mode?: WorkbenchInteractionMode;
8
+ /** Solo a single dock component in the supplied mode scope; soloing it again shows the full scope. */
9
+ onSoloFilter: (id: string, scope: readonly string[]) => void;
10
+ onSelectMode?: (mode: WorkbenchInteractionMode) => void;
11
11
  /**
12
12
  * Called when the user drags a widget pill onto the canvas to create a
13
13
  * new widget of that type. Coordinates are in client space (clientX/Y).
14
14
  */
15
15
  onCreateAt?: (type: WorkbenchWidgetType, clientX: number, clientY: number) => void;
16
+ onCreateToolAt?: (tool: WorkbenchDockToolId, clientX: number, clientY: number) => void;
16
17
  viewport?: WorkbenchViewport;
17
18
  onViewportCommit?: (viewport: WorkbenchViewport) => void;
18
19
  onViewportInteractionStart?: (kind: 'pan') => void;
19
20
  }
20
- export declare function WorkbenchFilterBar(props: WorkbenchFilterBarProps): JSX.Element;
21
+ export declare function WorkbenchDock(props: WorkbenchFilterBarProps): JSX.Element;
22
+ export declare const WorkbenchFilterBar: typeof WorkbenchDock;