@floegence/floe-webapp-core 0.36.45 → 0.36.48

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.
@@ -1,6 +1,6 @@
1
1
  import { type InfiniteCanvasContextMenuEvent } from '../../ui';
2
2
  import { type ResolvedWorkbenchInteractionAdapter } from './workbenchInteractionAdapter';
3
- import { type WorkbenchAnnotationItem, type WorkbenchBackgroundLayer, type WorkbenchInteractionMode, type WorkbenchInteractionAdapter, type WorkbenchSelection, type WorkbenchStickyNoteItem, type WorkbenchTextAnnotationPatch, type WorkbenchViewport, type WorkbenchWidgetDefinition, type WorkbenchWidgetItem } from './types';
3
+ import { type WorkbenchAnnotationItem, type WorkbenchBackgroundLayer, type WorkbenchInteractionMode, type WorkbenchInteractionAdapter, type WorkbenchSelection, type WorkbenchStickyNoteItem, type WorkbenchTextAnnotationPatch, type WorkbenchViewport, type WorkbenchWidgetDefinition, type WorkbenchWidgetItem, type WorkbenchWidgetMotionIntent } from './types';
4
4
  export interface WorkbenchCanvasProps {
5
5
  widgetDefinitions: readonly WorkbenchWidgetDefinition[];
6
6
  widgets: readonly WorkbenchWidgetItem[];
@@ -18,6 +18,7 @@ export interface WorkbenchCanvasProps {
18
18
  optimisticFrontWidgetId: string | null;
19
19
  locked: boolean;
20
20
  filters: Record<string, boolean>;
21
+ widgetMotionById?: Record<string, WorkbenchWidgetMotionIntent | null | undefined>;
21
22
  interactionAdapter?: WorkbenchInteractionAdapter | ResolvedWorkbenchInteractionAdapter;
22
23
  setCanvasFrameRef: (el: HTMLDivElement | undefined) => void;
23
24
  onViewportCommit: (viewport: WorkbenchViewport) => void;
@@ -1,24 +1,25 @@
1
- import { use as D, insert as S, createComponent as u, memo as y, effect as M, template as N } from "solid-js/web";
2
- import { createMemo as d, createSignal as B, Show as E, For as O } from "solid-js";
3
- import { resolveWorkbenchInteractionAdapter as _ } from "./workbenchInteractionAdapter.js";
4
- import { WORKBENCH_BACKGROUND_REGION_FILTER_ID as z, WORKBENCH_TEXT_FILTER_ID as V, WORKBENCH_STICKY_FILTER_ID as q } from "./types.js";
5
- import { WorkbenchCanvasField as U } from "./WorkbenchCanvasField.js";
6
- import { WorkbenchBackgroundLayerView as P, WorkbenchAnnotationLayerView as T, WorkbenchLayerControlOverlayView as G, createWorkbenchTextEditorRegistry as $, WorkbenchStickyNote as K } from "./WorkbenchLayerObjects.js";
7
- import { WorkbenchWidget as H } from "./WorkbenchWidget.js";
8
- import { createWorkbenchRenderLayerMap as Z, resolveWorkbenchModeStrategy as X, resolveWorkbenchWidgetRenderMode as j } from "./workbenchHelpers.js";
9
- import { getWidgetEntry as I } from "./widgets/widgetRegistry.js";
10
- import { InfiniteCanvas as Y } from "../ui/InfiniteCanvas.js";
11
- var J = /* @__PURE__ */ N("<div class=workbench-canvas><div class=workbench-canvas__atmosphere aria-hidden=true>"), Q = /* @__PURE__ */ N("<div class=workbench-canvas__projected-layer><div class=workbench-canvas__projected-work-layer>");
12
- function p(e) {
1
+ import { use as E, insert as S, createComponent as g, memo as k, effect as F, template as x } from "solid-js/web";
2
+ import { createMemo as d, createSignal as _, Show as z, For as O } from "solid-js";
3
+ import { resolveWorkbenchInteractionAdapter as V } from "./workbenchInteractionAdapter.js";
4
+ import { WORKBENCH_BACKGROUND_REGION_FILTER_ID as q, WORKBENCH_TEXT_FILTER_ID as T, WORKBENCH_STICKY_FILTER_ID as U } from "./types.js";
5
+ import { WorkbenchCanvasField as P } from "./WorkbenchCanvasField.js";
6
+ import { WorkbenchBackgroundLayerView as G, WorkbenchAnnotationLayerView as $, WorkbenchLayerControlOverlayView as K, createWorkbenchTextEditorRegistry as H, WorkbenchStickyNote as Z } from "./WorkbenchLayerObjects.js";
7
+ import { WorkbenchWidget as X } from "./WorkbenchWidget.js";
8
+ import { createWorkbenchRenderLayerMap as Y, resolveWorkbenchModeStrategy as J, resolveWorkbenchWidgetRenderMode as j } from "./workbenchHelpers.js";
9
+ import { createWorkbenchWidgetEnterMotionTracker as Q } from "./workbenchMotion.js";
10
+ import { getWidgetEntry as L } from "./widgets/widgetRegistry.js";
11
+ import { InfiniteCanvas as p } from "../ui/InfiniteCanvas.js";
12
+ var ee = /* @__PURE__ */ x("<div class=workbench-canvas><div class=workbench-canvas__atmosphere aria-hidden=true>"), te = /* @__PURE__ */ x("<div class=workbench-canvas__projected-layer><div class=workbench-canvas__projected-work-layer>");
13
+ function ne(e) {
13
14
  const a = d((c) => {
14
- const w = e.widgetById().get(e.widgetId);
15
- if (w) return w;
15
+ const C = e.widgetById().get(e.widgetId);
16
+ if (C) return C;
16
17
  if (c) return c;
17
18
  throw new Error(`Workbench widget ${e.widgetId} is missing from the projected render map.`);
18
- }), n = d(() => I(a().type, e.widgetDefinitions));
19
- return u(H, {
19
+ }), r = d(() => L(a().type, e.widgetDefinitions));
20
+ return g(X, {
20
21
  get definition() {
21
- return n();
22
+ return r();
22
23
  },
23
24
  get widgetId() {
24
25
  return e.widgetId;
@@ -51,6 +52,9 @@ function p(e) {
51
52
  get optimisticFront() {
52
53
  return e.optimisticFrontWidgetId === e.widgetId;
53
54
  },
55
+ get motion() {
56
+ return e.widgetMotionById?.[e.widgetId] ?? null;
57
+ },
54
58
  get topRenderLayer() {
55
59
  return e.renderLayers().topRenderLayer;
56
60
  },
@@ -61,7 +65,7 @@ function p(e) {
61
65
  return e.locked;
62
66
  },
63
67
  get filtered() {
64
- return y(() => !e.locked)() && e.filters[a().type] === !1;
68
+ return k(() => !e.locked)() && e.filters[a().type] === !1;
65
69
  },
66
70
  get interactionAdapter() {
67
71
  return e.interactionAdapter;
@@ -117,19 +121,19 @@ function p(e) {
117
121
  }
118
122
  });
119
123
  }
120
- function ee(e) {
121
- const a = d((n) => {
124
+ function re(e) {
125
+ const a = d((r) => {
122
126
  const c = e.stickyNoteById().get(e.noteId);
123
127
  if (c) return c;
124
- if (n) return n;
128
+ if (r) return r;
125
129
  throw new Error(`Workbench sticky note ${e.noteId} is missing from the projected render map.`);
126
130
  });
127
- return u(K, {
131
+ return g(Z, {
128
132
  get item() {
129
133
  return a();
130
134
  },
131
135
  get selected() {
132
- return y(() => e.selectedObject?.kind === "sticky_note")() && e.selectedObject.id === e.noteId;
136
+ return k(() => e.selectedObject?.kind === "sticky_note")() && e.selectedObject.id === e.noteId;
133
137
  },
134
138
  get viewportScale() {
135
139
  return e.projectedViewport().scale;
@@ -155,14 +159,14 @@ function ee(e) {
155
159
  get optimisticFront() {
156
160
  return e.optimisticFrontWidgetId === e.noteId;
157
161
  },
158
- onSelect: (n) => e.onSelectStickyNote?.(n),
159
- onContextMenu: (n, c) => e.onStickyNoteContextMenu?.(n, c),
160
- onStartOptimisticFront: (n) => e.onStartStickyOptimisticFront?.(n),
161
- onCommitFront: (n) => e.onCommitStickyFront?.(n),
162
- onCommitMove: (n, c) => e.onCommitStickyMove?.(n, c),
163
- onCommitResize: (n, c) => e.onCommitStickyResize?.(n, c),
164
- onUpdate: (n, c) => e.onUpdateStickyNote?.(n, c),
165
- onDelete: (n) => e.onDeleteStickyNote?.(n),
162
+ onSelect: (r) => e.onSelectStickyNote?.(r),
163
+ onContextMenu: (r, c) => e.onStickyNoteContextMenu?.(r, c),
164
+ onStartOptimisticFront: (r) => e.onStartStickyOptimisticFront?.(r),
165
+ onCommitFront: (r) => e.onCommitStickyFront?.(r),
166
+ onCommitMove: (r, c) => e.onCommitStickyMove?.(r, c),
167
+ onCommitResize: (r, c) => e.onCommitStickyResize?.(r, c),
168
+ onUpdate: (r, c) => e.onUpdateStickyNote?.(r, c),
169
+ onDelete: (r) => e.onDeleteStickyNote?.(r),
166
170
  get onLayoutInteractionStart() {
167
171
  return e.onLayoutInteractionStart;
168
172
  },
@@ -171,26 +175,36 @@ function ee(e) {
171
175
  }
172
176
  });
173
177
  }
174
- function me(e) {
175
- const a = d(() => _(e.interactionAdapter)), n = d(() => new Map(e.widgets.map((r) => [r.id, r]))), c = d(() => (e.stickyNotes ?? []).map((r) => r.id)), w = d(() => new Map((e.stickyNotes ?? []).map((r) => [r.id, r]))), R = d(() => Z([...e.widgets, ...e.stickyNotes ?? []])), f = $(), [v, s] = B(null), L = d(() => X(e.mode)), C = d(() => L().workLayerLocked), m = d(() => L().layerEditingEnabled), x = d(() => e.widgets.filter((r) => {
176
- const k = I(r.type, e.widgetDefinitions);
177
- return j(k) === "canvas_scaled";
178
- })), b = d(() => e.widgets.filter((r) => {
179
- const k = I(r.type, e.widgetDefinitions);
180
- return j(k) === "projected_surface";
181
- }).map((r) => r.id)), h = d(() => b().length > 0), A = d(() => h() ? [] : e.stickyNotes ?? []), W = () => e.canvasFrameSize.width > 0 && e.canvasFrameSize.height > 0, F = h;
178
+ function Se(e) {
179
+ const a = d(() => V(e.interactionAdapter)), r = Q(() => e.widgets.map((n) => n.id)), c = d(() => {
180
+ const n = e.widgetMotionById;
181
+ if (!n)
182
+ return r();
183
+ const m = {
184
+ ...r()
185
+ };
186
+ for (const [o, u] of Object.entries(n))
187
+ u !== void 0 && (m[o] = u);
188
+ return m;
189
+ }), C = d(() => new Map(e.widgets.map((n) => [n.id, n]))), B = d(() => (e.stickyNotes ?? []).map((n) => n.id)), N = d(() => new Map((e.stickyNotes ?? []).map((n) => [n.id, n]))), R = d(() => Y([...e.widgets, ...e.stickyNotes ?? []])), s = H(), [v, f] = _(null), I = d(() => J(e.mode)), w = d(() => I().workLayerLocked), l = d(() => I().layerEditingEnabled), A = d(() => e.widgets.filter((n) => {
190
+ const m = L(n.type, e.widgetDefinitions);
191
+ return j(m) === "canvas_scaled";
192
+ })), b = d(() => e.widgets.filter((n) => {
193
+ const m = L(n.type, e.widgetDefinitions);
194
+ return j(m) === "projected_surface";
195
+ }).map((n) => n.id)), M = d(() => b().length > 0), D = d(() => M() ? [] : e.stickyNotes ?? []), W = () => e.canvasFrameSize.width > 0 && e.canvasFrameSize.height > 0, h = M;
182
196
  return (() => {
183
- var r = J();
184
- r.firstChild;
185
- var k = e.setCanvasFrameRef;
186
- return typeof k == "function" ? D(k, r) : e.setCanvasFrameRef = r, S(r, u(Y, {
197
+ var n = ee();
198
+ n.firstChild;
199
+ var m = e.setCanvasFrameRef;
200
+ return typeof m == "function" ? E(m, n) : e.setCanvasFrameRef = n, S(n, g(p, {
187
201
  ariaLabel: "Workbench canvas",
188
202
  class: "workbench-canvas__infinite",
189
203
  get viewport() {
190
204
  return e.viewport;
191
205
  },
192
206
  get minScale() {
193
- return L().minScale;
207
+ return I().minScale;
194
208
  },
195
209
  get onViewportChange() {
196
210
  return e.onViewportCommit;
@@ -218,13 +232,13 @@ function me(e) {
218
232
  get disablePanZoom() {
219
233
  return e.locked;
220
234
  },
221
- overlay: (o) => u(E, {
235
+ overlay: (o) => g(z, {
222
236
  get when() {
223
- return F();
237
+ return h();
224
238
  },
225
239
  get children() {
226
- var g = Q(), l = g.firstChild;
227
- return S(g, u(P, {
240
+ var u = te(), y = u.firstChild;
241
+ return S(u, g(G, {
228
242
  get items() {
229
243
  return e.backgroundLayers ?? [];
230
244
  },
@@ -232,23 +246,23 @@ function me(e) {
232
246
  return e.selectedObject ?? null;
233
247
  },
234
248
  get editable() {
235
- return y(() => !!m())() && !e.locked;
249
+ return k(() => !!l())() && !e.locked;
236
250
  },
237
251
  get filtered() {
238
- return e.filters[z] === !1;
252
+ return e.filters[q] === !1;
239
253
  },
240
254
  projection: "screen",
241
255
  get preview() {
242
256
  return v();
243
257
  },
244
- onPreviewGeometry: s,
258
+ onPreviewGeometry: f,
245
259
  get viewport() {
246
260
  return o();
247
261
  },
248
262
  onSelect: (t) => e.onSelectBackgroundLayer?.(t),
249
263
  onContextMenu: (t, i) => e.onBackgroundLayerContextMenu?.(t, i),
250
264
  onCommitMove: (t, i) => e.onCommitBackgroundMove?.(t, i)
251
- }), l), S(g, u(T, {
265
+ }), y), S(u, g($, {
252
266
  get items() {
253
267
  return e.annotations ?? [];
254
268
  },
@@ -256,17 +270,17 @@ function me(e) {
256
270
  return e.selectedObject ?? null;
257
271
  },
258
272
  get editable() {
259
- return y(() => !!m())() && !e.locked;
273
+ return k(() => !!l())() && !e.locked;
260
274
  },
261
275
  get filtered() {
262
- return e.filters[V] === !1;
276
+ return e.filters[T] === !1;
263
277
  },
264
278
  projection: "screen",
265
279
  get preview() {
266
280
  return v();
267
281
  },
268
- onPreviewGeometry: s,
269
- textEditorRegistry: f,
282
+ onPreviewGeometry: f,
283
+ textEditorRegistry: s,
270
284
  get viewport() {
271
285
  return o();
272
286
  },
@@ -274,11 +288,11 @@ function me(e) {
274
288
  onContextMenu: (t, i) => e.onAnnotationContextMenu?.(t, i),
275
289
  onCommitMove: (t, i) => e.onCommitAnnotationMove?.(t, i),
276
290
  onUpdate: (t, i) => e.onUpdateTextAnnotation?.(t, i)
277
- }), l), S(l, u(O, {
291
+ }), y), S(y, g(O, {
278
292
  get each() {
279
293
  return b();
280
294
  },
281
- children: (t) => u(p, {
295
+ children: (t) => g(ne, {
282
296
  widgetId: t,
283
297
  get widgetDefinitions() {
284
298
  return e.widgetDefinitions;
@@ -286,16 +300,19 @@ function me(e) {
286
300
  get canvasFrameSize() {
287
301
  return e.canvasFrameSize;
288
302
  },
289
- widgetById: n,
303
+ widgetById: C,
290
304
  renderLayers: R,
305
+ get widgetMotionById() {
306
+ return c();
307
+ },
291
308
  get selectedWidgetId() {
292
- return y(() => e.selectedObject?.kind === "widget")() ? e.selectedObject.id : e.selectedWidgetId;
309
+ return k(() => e.selectedObject?.kind === "widget")() ? e.selectedObject.id : e.selectedWidgetId;
293
310
  },
294
311
  get optimisticFrontWidgetId() {
295
312
  return e.optimisticFrontWidgetId;
296
313
  },
297
314
  get locked() {
298
- return e.locked || C();
315
+ return e.locked || w();
299
316
  },
300
317
  get filters() {
301
318
  return e.filters;
@@ -350,13 +367,13 @@ function me(e) {
350
367
  return W();
351
368
  }
352
369
  })
353
- }), null), S(l, u(O, {
370
+ }), null), S(y, g(O, {
354
371
  get each() {
355
- return c();
372
+ return B();
356
373
  },
357
- children: (t) => u(ee, {
374
+ children: (t) => g(re, {
358
375
  noteId: t,
359
- stickyNoteById: w,
376
+ stickyNoteById: N,
360
377
  get selectedObject() {
361
378
  return e.selectedObject;
362
379
  },
@@ -366,10 +383,10 @@ function me(e) {
366
383
  return e.optimisticFrontWidgetId;
367
384
  },
368
385
  get locked() {
369
- return e.locked || C();
386
+ return e.locked || w();
370
387
  },
371
388
  get filtered() {
372
- return y(() => !C())() && e.filters[q] === !1;
389
+ return k(() => !w())() && e.filters[U] === !1;
373
390
  },
374
391
  get onSelectStickyNote() {
375
392
  return e.onSelectStickyNote;
@@ -405,7 +422,7 @@ function me(e) {
405
422
  return W();
406
423
  }
407
424
  })
408
- }), null), S(g, u(G, {
425
+ }), null), S(u, g(K, {
409
426
  get annotations() {
410
427
  return e.annotations ?? [];
411
428
  },
@@ -416,10 +433,10 @@ function me(e) {
416
433
  return e.selectedObject ?? null;
417
434
  },
418
435
  get editable() {
419
- return y(() => !!m())() && !e.locked;
436
+ return k(() => !!l())() && !e.locked;
420
437
  },
421
438
  get showRegionOutlines() {
422
- return m();
439
+ return l();
423
440
  },
424
441
  projection: "screen",
425
442
  get viewport() {
@@ -428,8 +445,8 @@ function me(e) {
428
445
  get preview() {
429
446
  return v();
430
447
  },
431
- onPreviewGeometry: s,
432
- textEditorRegistry: f,
448
+ onPreviewGeometry: f,
449
+ textEditorRegistry: s,
433
450
  onCommitAnnotationMove: (t, i) => e.onCommitAnnotationMove?.(t, i),
434
451
  onCommitAnnotationResize: (t, i) => e.onCommitAnnotationResize?.(t, i),
435
452
  onUpdateTextAnnotation: (t, i) => e.onUpdateTextAnnotation?.(t, i),
@@ -437,19 +454,19 @@ function me(e) {
437
454
  onCommitBackgroundResize: (t, i) => e.onCommitBackgroundResize?.(t, i),
438
455
  onUpdateBackgroundLayer: (t, i) => e.onUpdateBackgroundLayer?.(t, i),
439
456
  onDeleteBackgroundLayer: (t) => e.onDeleteBackgroundLayer?.(t)
440
- }), null), M(() => g.classList.toggle("is-work-layer-locked", !!C())), g;
457
+ }), null), F(() => u.classList.toggle("is-work-layer-locked", !!w())), u;
441
458
  }
442
459
  }),
443
460
  get children() {
444
- return u(U, {
461
+ return g(P, {
445
462
  get widgetDefinitions() {
446
463
  return e.widgetDefinitions;
447
464
  },
448
465
  get widgets() {
449
- return x();
466
+ return A();
450
467
  },
451
468
  get stickyNotes() {
452
- return A();
469
+ return D();
453
470
  },
454
471
  get annotations() {
455
472
  return e.annotations ?? [];
@@ -470,19 +487,19 @@ function me(e) {
470
487
  return e.optimisticFrontWidgetId;
471
488
  },
472
489
  get workLayerLocked() {
473
- return C();
490
+ return w();
474
491
  },
475
492
  get annotationLayerEditable() {
476
- return m();
493
+ return l();
477
494
  },
478
495
  get backgroundLayerEditable() {
479
- return m();
496
+ return l();
480
497
  },
481
498
  get showRegionOutlines() {
482
- return m();
499
+ return l();
483
500
  },
484
501
  get renderFreeformLayers() {
485
- return !F();
502
+ return !h();
486
503
  },
487
504
  get viewportScale() {
488
505
  return e.viewport.scale;
@@ -493,6 +510,9 @@ function me(e) {
493
510
  get filters() {
494
511
  return e.filters;
495
512
  },
513
+ get widgetMotionById() {
514
+ return c();
515
+ },
496
516
  get interactionAdapter() {
497
517
  return a();
498
518
  },
@@ -598,19 +618,19 @@ function me(e) {
598
618
  get layerGeometryPreview() {
599
619
  return v();
600
620
  },
601
- onLayerGeometryPreview: s,
602
- textEditorRegistry: f
621
+ onLayerGeometryPreview: f,
622
+ textEditorRegistry: s
603
623
  });
604
624
  }
605
- }), null), M((o) => {
606
- var g = !!e.locked, l = !!m();
607
- return g !== o.e && r.classList.toggle("is-locked", o.e = g), l !== o.t && r.classList.toggle("is-composition-mode", o.t = l), o;
625
+ }), null), F((o) => {
626
+ var u = !!e.locked, y = !!l();
627
+ return u !== o.e && n.classList.toggle("is-locked", o.e = u), y !== o.t && n.classList.toggle("is-composition-mode", o.t = y), o;
608
628
  }, {
609
629
  e: void 0,
610
630
  t: void 0
611
- }), r;
631
+ }), n;
612
632
  })();
613
633
  }
614
634
  export {
615
- me as WorkbenchCanvas
635
+ Se as WorkbenchCanvas
616
636
  };
@@ -1,5 +1,5 @@
1
1
  import { type ResolvedWorkbenchInteractionAdapter } from './workbenchInteractionAdapter';
2
- import { type WorkbenchWidgetItem, type WorkbenchAnnotationItem, type WorkbenchBackgroundLayer, type WorkbenchInteractionAdapter, type WorkbenchSelection, type WorkbenchStickyNoteItem, type WorkbenchTextAnnotationPatch, type WorkbenchViewport, type WorkbenchWidgetDefinition } from './types';
2
+ import { type WorkbenchWidgetItem, type WorkbenchAnnotationItem, type WorkbenchBackgroundLayer, type WorkbenchInteractionAdapter, type WorkbenchSelection, type WorkbenchStickyNoteItem, type WorkbenchTextAnnotationPatch, type WorkbenchViewport, type WorkbenchWidgetDefinition, type WorkbenchWidgetMotionIntent } from './types';
3
3
  import { type WorkbenchLayerGeometryPreview, type WorkbenchTextEditorRegistry } from './WorkbenchLayerObjects';
4
4
  export interface WorkbenchCanvasFieldProps {
5
5
  widgetDefinitions: readonly WorkbenchWidgetDefinition[];
@@ -19,6 +19,7 @@ export interface WorkbenchCanvasFieldProps {
19
19
  viewportScale: number;
20
20
  locked: boolean;
21
21
  filters: Record<string, boolean>;
22
+ widgetMotionById?: Record<string, WorkbenchWidgetMotionIntent | null | undefined>;
22
23
  interactionAdapter?: WorkbenchInteractionAdapter | ResolvedWorkbenchInteractionAdapter;
23
24
  onSelectWidget: (widgetId: string) => void;
24
25
  onWidgetContextMenu: (event: MouseEvent, item: WorkbenchWidgetItem) => void;
@@ -1,20 +1,20 @@
1
- import { insert as m, memo as u, createComponent as d, effect as O, template as M } from "solid-js/web";
2
- import { createMemo as a, createSignal as E, For as I } from "solid-js";
3
- import { resolveWorkbenchInteractionAdapter as x } from "./workbenchInteractionAdapter.js";
4
- import { WORKBENCH_BACKGROUND_REGION_FILTER_ID as B, WORKBENCH_TEXT_FILTER_ID as N, WORKBENCH_STICKY_FILTER_ID as _ } from "./types.js";
5
- import { createWorkbenchRenderLayerMap as s } from "./workbenchHelpers.js";
6
- import { getWidgetEntry as A } from "./widgets/widgetRegistry.js";
7
- import { WorkbenchWidget as D } from "./WorkbenchWidget.js";
1
+ import { insert as m, memo as g, createComponent as d, effect as M, template as O } from "solid-js/web";
2
+ import { createMemo as a, createSignal as E, For as C } from "solid-js";
3
+ import { resolveWorkbenchInteractionAdapter as B } from "./workbenchInteractionAdapter.js";
4
+ import { WORKBENCH_BACKGROUND_REGION_FILTER_ID as x, WORKBENCH_TEXT_FILTER_ID as N, WORKBENCH_STICKY_FILTER_ID as _ } from "./types.js";
5
+ import { createWorkbenchRenderLayerMap as A } from "./workbenchHelpers.js";
6
+ import { getWidgetEntry as D } from "./widgets/widgetRegistry.js";
7
+ import { WorkbenchWidget as s } from "./WorkbenchWidget.js";
8
8
  import { WorkbenchBackgroundLayerView as G, WorkbenchAnnotationLayerView as T, WorkbenchLayerControlOverlayView as j, createWorkbenchTextEditorRegistry as q, WorkbenchStickyNote as z } from "./WorkbenchLayerObjects.js";
9
- var P = /* @__PURE__ */ M("<div class=workbench-canvas__field><div class=workbench-canvas__grid aria-hidden=true></div><div class=workbench-work-layer>");
9
+ var P = /* @__PURE__ */ O("<div class=workbench-canvas__field><div class=workbench-canvas__grid aria-hidden=true></div><div class=workbench-work-layer>");
10
10
  function U(e) {
11
11
  const c = a((o) => {
12
12
  const l = e.widgetById().get(e.widgetId);
13
13
  if (l) return l;
14
14
  if (o) return o;
15
15
  throw new Error(`Workbench widget ${e.widgetId} is missing from the render map.`);
16
- }), n = a(() => A(c().type, e.widgetDefinitions));
17
- return d(D, {
16
+ }), n = a(() => D(c().type, e.widgetDefinitions));
17
+ return d(s, {
18
18
  get definition() {
19
19
  return n();
20
20
  },
@@ -49,6 +49,9 @@ function U(e) {
49
49
  get optimisticFront() {
50
50
  return e.optimisticFrontWidgetId === e.widgetId;
51
51
  },
52
+ get motion() {
53
+ return e.widgetMotionById?.[e.widgetId] ?? null;
54
+ },
52
55
  get topRenderLayer() {
53
56
  return e.renderLayers().topRenderLayer;
54
57
  },
@@ -59,7 +62,7 @@ function U(e) {
59
62
  return e.locked;
60
63
  },
61
64
  get filtered() {
62
- return u(() => !e.workLayerLocked)() && e.filters[c().type] === !1;
65
+ return g(() => !e.workLayerLocked)() && e.filters[c().type] === !1;
63
66
  },
64
67
  get interactionAdapter() {
65
68
  return e.interactionAdapter;
@@ -120,7 +123,7 @@ function V(e) {
120
123
  return c();
121
124
  },
122
125
  get selected() {
123
- return u(() => e.selectedObject?.kind === "sticky_note")() && e.selectedObject.id === e.noteId;
126
+ return g(() => e.selectedObject?.kind === "sticky_note")() && e.selectedObject.id === e.noteId;
124
127
  },
125
128
  get viewportScale() {
126
129
  return e.viewportScale;
@@ -157,18 +160,18 @@ function V(e) {
157
160
  });
158
161
  }
159
162
  function p(e) {
160
- const c = a(() => x(e.interactionAdapter)), n = a(() => e.widgets.map((i) => i.id)), o = a(() => new Map(e.widgets.map((i) => [i.id, i]))), l = a(() => (e.stickyNotes ?? []).map((i) => i.id)), f = a(() => new Map((e.stickyNotes ?? []).map((i) => [i.id, i]))), R = q(), S = a(() => e.textEditorRegistry ?? R), v = a(() => s([...e.widgets, ...e.stickyNotes ?? []])), b = a(() => e.selectedObject?.kind === "widget" ? e.selectedObject.id : e.selectedWidgetId), L = a(() => e.locked || !!e.workLayerLocked), [W, h] = E(null), y = a(() => e.layerGeometryPreview === void 0 ? W() : e.layerGeometryPreview), k = (i) => {
163
+ const c = a(() => B(e.interactionAdapter)), n = a(() => e.widgets.map((i) => i.id)), o = a(() => new Map(e.widgets.map((i) => [i.id, i]))), l = a(() => (e.stickyNotes ?? []).map((i) => i.id)), f = a(() => new Map((e.stickyNotes ?? []).map((i) => [i.id, i]))), R = q(), S = a(() => e.textEditorRegistry ?? R), v = a(() => A([...e.widgets, ...e.stickyNotes ?? []])), b = a(() => e.selectedObject?.kind === "widget" ? e.selectedObject.id : e.selectedWidgetId), L = a(() => e.locked || !!e.workLayerLocked), [W, h] = E(null), y = a(() => e.layerGeometryPreview === void 0 ? W() : e.layerGeometryPreview), w = (i) => {
161
164
  if (e.onLayerGeometryPreview) {
162
165
  e.onLayerGeometryPreview(i);
163
166
  return;
164
167
  }
165
168
  h(i);
166
- }, C = a(() => e.renderFreeformLayers !== !1);
169
+ }, I = a(() => e.renderFreeformLayers !== !1);
167
170
  return (() => {
168
- var i = P(), F = i.firstChild, w = F.nextSibling;
171
+ var i = P(), F = i.firstChild, k = F.nextSibling;
169
172
  return m(i, (() => {
170
- var g = u(() => !!C());
171
- return () => g() ? [d(G, {
173
+ var u = g(() => !!I());
174
+ return () => u() ? [d(G, {
172
175
  get items() {
173
176
  return e.backgroundLayers ?? [];
174
177
  },
@@ -176,15 +179,15 @@ function p(e) {
176
179
  return e.selectedObject ?? null;
177
180
  },
178
181
  get editable() {
179
- return u(() => !!e.backgroundLayerEditable)() && !e.locked;
182
+ return g(() => !!e.backgroundLayerEditable)() && !e.locked;
180
183
  },
181
184
  get filtered() {
182
- return e.filters[B] === !1;
185
+ return e.filters[x] === !1;
183
186
  },
184
187
  get preview() {
185
188
  return y();
186
189
  },
187
- onPreviewGeometry: k,
190
+ onPreviewGeometry: w,
188
191
  get viewport() {
189
192
  return e.viewport;
190
193
  },
@@ -199,7 +202,7 @@ function p(e) {
199
202
  return e.selectedObject ?? null;
200
203
  },
201
204
  get editable() {
202
- return u(() => !!e.annotationLayerEditable)() && !e.locked;
205
+ return g(() => !!e.annotationLayerEditable)() && !e.locked;
203
206
  },
204
207
  get filtered() {
205
208
  return e.filters[N] === !1;
@@ -207,7 +210,7 @@ function p(e) {
207
210
  get preview() {
208
211
  return y();
209
212
  },
210
- onPreviewGeometry: k,
213
+ onPreviewGeometry: w,
211
214
  get textEditorRegistry() {
212
215
  return S();
213
216
  },
@@ -219,12 +222,12 @@ function p(e) {
219
222
  onCommitMove: (t, r) => e.onCommitAnnotationMove?.(t, r),
220
223
  onUpdate: (t, r) => e.onUpdateTextAnnotation?.(t, r)
221
224
  })] : null;
222
- })(), w), m(w, d(I, {
225
+ })(), k), m(k, d(C, {
223
226
  get each() {
224
227
  return n();
225
228
  },
226
- children: (g) => d(U, {
227
- widgetId: g,
229
+ children: (u) => d(U, {
230
+ widgetId: u,
228
231
  get widgetDefinitions() {
229
232
  return e.widgetDefinitions;
230
233
  },
@@ -251,6 +254,9 @@ function p(e) {
251
254
  get filters() {
252
255
  return e.filters;
253
256
  },
257
+ get widgetMotionById() {
258
+ return e.widgetMotionById;
259
+ },
254
260
  get interactionAdapter() {
255
261
  return c();
256
262
  },
@@ -294,12 +300,12 @@ function p(e) {
294
300
  return e.onLayoutInteractionEnd;
295
301
  }
296
302
  })
297
- }), null), m(w, d(I, {
303
+ }), null), m(k, d(C, {
298
304
  get each() {
299
305
  return l();
300
306
  },
301
- children: (g) => d(V, {
302
- noteId: g,
307
+ children: (u) => d(V, {
308
+ noteId: u,
303
309
  stickyNoteById: f,
304
310
  get selectedObject() {
305
311
  return e.selectedObject;
@@ -314,7 +320,7 @@ function p(e) {
314
320
  return L();
315
321
  },
316
322
  get filtered() {
317
- return u(() => !e.workLayerLocked)() && e.filters[_] === !1;
323
+ return g(() => !e.workLayerLocked)() && e.filters[_] === !1;
318
324
  },
319
325
  get onSelectStickyNote() {
320
326
  return e.onSelectStickyNote;
@@ -349,8 +355,8 @@ function p(e) {
349
355
  renderLayers: v
350
356
  })
351
357
  }), null), m(i, (() => {
352
- var g = u(() => !!C());
353
- return () => g() ? d(j, {
358
+ var u = g(() => !!I());
359
+ return () => u() ? d(j, {
354
360
  get annotations() {
355
361
  return e.annotations ?? [];
356
362
  },
@@ -361,7 +367,7 @@ function p(e) {
361
367
  return e.selectedObject ?? null;
362
368
  },
363
369
  get editable() {
364
- return u(() => !!(e.annotationLayerEditable || e.backgroundLayerEditable))() && !e.locked;
370
+ return g(() => !!(e.annotationLayerEditable || e.backgroundLayerEditable))() && !e.locked;
365
371
  },
366
372
  get showRegionOutlines() {
367
373
  return !!e.showRegionOutlines;
@@ -372,7 +378,7 @@ function p(e) {
372
378
  get preview() {
373
379
  return y();
374
380
  },
375
- onPreviewGeometry: k,
381
+ onPreviewGeometry: w,
376
382
  get textEditorRegistry() {
377
383
  return S();
378
384
  },
@@ -384,7 +390,7 @@ function p(e) {
384
390
  onUpdateBackgroundLayer: (t, r) => e.onUpdateBackgroundLayer?.(t, r),
385
391
  onDeleteBackgroundLayer: (t) => e.onDeleteBackgroundLayer?.(t)
386
392
  }) : null;
387
- })(), null), O(() => i.classList.toggle("is-work-layer-muted", !!e.workLayerLocked)), i;
393
+ })(), null), M(() => i.classList.toggle("is-work-layer-muted", !!e.workLayerLocked)), i;
388
394
  })();
389
395
  }
390
396
  export {
@@ -1,6 +1,6 @@
1
1
  import { type WorkbenchSurfaceProps } from './WorkbenchSurface';
2
2
  import type { WorkbenchState } from './types';
3
- type WorkbenchOverlaySurfaceProps = Pick<WorkbenchSurfaceProps, 'enableKeyboard' | 'widgetDefinitions' | 'launcherWidgetTypes' | 'textAnnotationDefaults' | 'interactionAdapter' | 'resolveContextMenuItems' | 'onApiReady' | 'onRequestDelete' | 'onLayoutInteractionStart' | 'onLayoutInteractionEnd'>;
3
+ type WorkbenchOverlaySurfaceProps = Pick<WorkbenchSurfaceProps, 'enableKeyboard' | 'widgetDefinitions' | 'launcherWidgetTypes' | 'textAnnotationDefaults' | 'backgroundLayerDefaults' | 'interactionAdapter' | 'resolveContextMenuItems' | 'onApiReady' | 'onRequestDelete' | 'onLayoutInteractionStart' | 'onLayoutInteractionEnd'>;
4
4
  export interface WorkbenchOverlayProps extends WorkbenchOverlaySurfaceProps {
5
5
  open: boolean;
6
6
  onClose: () => void;