@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.
- package/dist/components/workbench/WorkbenchCanvas.d.ts +2 -1
- package/dist/components/workbench/WorkbenchCanvas.js +108 -88
- package/dist/components/workbench/WorkbenchCanvasField.d.ts +2 -1
- package/dist/components/workbench/WorkbenchCanvasField.js +40 -34
- package/dist/components/workbench/WorkbenchOverlay.d.ts +1 -1
- package/dist/components/workbench/WorkbenchOverlay.js +9 -6
- package/dist/components/workbench/WorkbenchSurface.d.ts +2 -1
- package/dist/components/workbench/WorkbenchSurface.js +6 -5
- package/dist/components/workbench/WorkbenchWidget.d.ts +2 -1
- package/dist/components/workbench/WorkbenchWidget.js +175 -168
- package/dist/components/workbench/types.d.ts +8 -0
- package/dist/components/workbench/useWorkbenchModel.d.ts +2 -1
- package/dist/components/workbench/useWorkbenchModel.js +325 -312
- package/dist/components/workbench/workbenchMotion.d.ts +3 -0
- package/dist/components/workbench/workbenchMotion.js +60 -0
- package/dist/styles.css +1 -1
- package/dist/workbench.css +25 -0
- package/package.json +1 -1
|
@@ -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
|
|
2
|
-
import { createMemo as d, createSignal as
|
|
3
|
-
import { resolveWorkbenchInteractionAdapter as
|
|
4
|
-
import { WORKBENCH_BACKGROUND_REGION_FILTER_ID as
|
|
5
|
-
import { WorkbenchCanvasField as
|
|
6
|
-
import { WorkbenchBackgroundLayerView as
|
|
7
|
-
import { WorkbenchWidget as
|
|
8
|
-
import { createWorkbenchRenderLayerMap as
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
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
|
|
15
|
-
if (
|
|
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
|
-
}),
|
|
19
|
-
return
|
|
19
|
+
}), r = d(() => L(a().type, e.widgetDefinitions));
|
|
20
|
+
return g(X, {
|
|
20
21
|
get definition() {
|
|
21
|
-
return
|
|
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
|
|
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
|
|
121
|
-
const a = d((
|
|
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 (
|
|
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
|
|
131
|
+
return g(Z, {
|
|
128
132
|
get item() {
|
|
129
133
|
return a();
|
|
130
134
|
},
|
|
131
135
|
get selected() {
|
|
132
|
-
return
|
|
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: (
|
|
159
|
-
onContextMenu: (
|
|
160
|
-
onStartOptimisticFront: (
|
|
161
|
-
onCommitFront: (
|
|
162
|
-
onCommitMove: (
|
|
163
|
-
onCommitResize: (
|
|
164
|
-
onUpdate: (
|
|
165
|
-
onDelete: (
|
|
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
|
|
175
|
-
const a = d(() =>
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
const
|
|
180
|
-
|
|
181
|
-
|
|
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
|
|
184
|
-
|
|
185
|
-
var
|
|
186
|
-
return typeof
|
|
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
|
|
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) =>
|
|
235
|
+
overlay: (o) => g(z, {
|
|
222
236
|
get when() {
|
|
223
|
-
return
|
|
237
|
+
return h();
|
|
224
238
|
},
|
|
225
239
|
get children() {
|
|
226
|
-
var
|
|
227
|
-
return S(
|
|
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
|
|
249
|
+
return k(() => !!l())() && !e.locked;
|
|
236
250
|
},
|
|
237
251
|
get filtered() {
|
|
238
|
-
return e.filters[
|
|
252
|
+
return e.filters[q] === !1;
|
|
239
253
|
},
|
|
240
254
|
projection: "screen",
|
|
241
255
|
get preview() {
|
|
242
256
|
return v();
|
|
243
257
|
},
|
|
244
|
-
onPreviewGeometry:
|
|
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
|
-
}),
|
|
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
|
|
273
|
+
return k(() => !!l())() && !e.locked;
|
|
260
274
|
},
|
|
261
275
|
get filtered() {
|
|
262
|
-
return e.filters[
|
|
276
|
+
return e.filters[T] === !1;
|
|
263
277
|
},
|
|
264
278
|
projection: "screen",
|
|
265
279
|
get preview() {
|
|
266
280
|
return v();
|
|
267
281
|
},
|
|
268
|
-
onPreviewGeometry:
|
|
269
|
-
textEditorRegistry:
|
|
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
|
-
}),
|
|
291
|
+
}), y), S(y, g(O, {
|
|
278
292
|
get each() {
|
|
279
293
|
return b();
|
|
280
294
|
},
|
|
281
|
-
children: (t) =>
|
|
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:
|
|
303
|
+
widgetById: C,
|
|
290
304
|
renderLayers: R,
|
|
305
|
+
get widgetMotionById() {
|
|
306
|
+
return c();
|
|
307
|
+
},
|
|
291
308
|
get selectedWidgetId() {
|
|
292
|
-
return
|
|
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 ||
|
|
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(
|
|
370
|
+
}), null), S(y, g(O, {
|
|
354
371
|
get each() {
|
|
355
|
-
return
|
|
372
|
+
return B();
|
|
356
373
|
},
|
|
357
|
-
children: (t) =>
|
|
374
|
+
children: (t) => g(re, {
|
|
358
375
|
noteId: t,
|
|
359
|
-
stickyNoteById:
|
|
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 ||
|
|
386
|
+
return e.locked || w();
|
|
370
387
|
},
|
|
371
388
|
get filtered() {
|
|
372
|
-
return
|
|
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(
|
|
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
|
|
436
|
+
return k(() => !!l())() && !e.locked;
|
|
420
437
|
},
|
|
421
438
|
get showRegionOutlines() {
|
|
422
|
-
return
|
|
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:
|
|
432
|
-
textEditorRegistry:
|
|
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),
|
|
457
|
+
}), null), F(() => u.classList.toggle("is-work-layer-locked", !!w())), u;
|
|
441
458
|
}
|
|
442
459
|
}),
|
|
443
460
|
get children() {
|
|
444
|
-
return
|
|
461
|
+
return g(P, {
|
|
445
462
|
get widgetDefinitions() {
|
|
446
463
|
return e.widgetDefinitions;
|
|
447
464
|
},
|
|
448
465
|
get widgets() {
|
|
449
|
-
return
|
|
466
|
+
return A();
|
|
450
467
|
},
|
|
451
468
|
get stickyNotes() {
|
|
452
|
-
return
|
|
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
|
|
490
|
+
return w();
|
|
474
491
|
},
|
|
475
492
|
get annotationLayerEditable() {
|
|
476
|
-
return
|
|
493
|
+
return l();
|
|
477
494
|
},
|
|
478
495
|
get backgroundLayerEditable() {
|
|
479
|
-
return
|
|
496
|
+
return l();
|
|
480
497
|
},
|
|
481
498
|
get showRegionOutlines() {
|
|
482
|
-
return
|
|
499
|
+
return l();
|
|
483
500
|
},
|
|
484
501
|
get renderFreeformLayers() {
|
|
485
|
-
return !
|
|
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:
|
|
602
|
-
textEditorRegistry:
|
|
621
|
+
onLayerGeometryPreview: f,
|
|
622
|
+
textEditorRegistry: s
|
|
603
623
|
});
|
|
604
624
|
}
|
|
605
|
-
}), null),
|
|
606
|
-
var
|
|
607
|
-
return
|
|
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
|
-
}),
|
|
631
|
+
}), n;
|
|
612
632
|
})();
|
|
613
633
|
}
|
|
614
634
|
export {
|
|
615
|
-
|
|
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
|
|
2
|
-
import { createMemo as a, createSignal as E, For as
|
|
3
|
-
import { resolveWorkbenchInteractionAdapter as
|
|
4
|
-
import { WORKBENCH_BACKGROUND_REGION_FILTER_ID as
|
|
5
|
-
import { createWorkbenchRenderLayerMap as
|
|
6
|
-
import { getWidgetEntry as
|
|
7
|
-
import { WorkbenchWidget as
|
|
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__ */
|
|
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(() =>
|
|
17
|
-
return 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
|
|
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
|
|
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(() =>
|
|
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
|
-
},
|
|
169
|
+
}, I = a(() => e.renderFreeformLayers !== !1);
|
|
167
170
|
return (() => {
|
|
168
|
-
var i = P(), F = i.firstChild,
|
|
171
|
+
var i = P(), F = i.firstChild, k = F.nextSibling;
|
|
169
172
|
return m(i, (() => {
|
|
170
|
-
var
|
|
171
|
-
return () =>
|
|
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
|
|
182
|
+
return g(() => !!e.backgroundLayerEditable)() && !e.locked;
|
|
180
183
|
},
|
|
181
184
|
get filtered() {
|
|
182
|
-
return e.filters[
|
|
185
|
+
return e.filters[x] === !1;
|
|
183
186
|
},
|
|
184
187
|
get preview() {
|
|
185
188
|
return y();
|
|
186
189
|
},
|
|
187
|
-
onPreviewGeometry:
|
|
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
|
|
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:
|
|
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
|
-
})(),
|
|
225
|
+
})(), k), m(k, d(C, {
|
|
223
226
|
get each() {
|
|
224
227
|
return n();
|
|
225
228
|
},
|
|
226
|
-
children: (
|
|
227
|
-
widgetId:
|
|
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(
|
|
303
|
+
}), null), m(k, d(C, {
|
|
298
304
|
get each() {
|
|
299
305
|
return l();
|
|
300
306
|
},
|
|
301
|
-
children: (
|
|
302
|
-
noteId:
|
|
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
|
|
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
|
|
353
|
-
return () =>
|
|
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
|
|
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:
|
|
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),
|
|
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;
|