@floegence/floe-webapp-core 0.55.2 → 0.56.2
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/ui/SurfaceAnchoredLayer.d.ts +8 -0
- package/dist/components/ui/SurfaceAnchoredLayer.js +64 -52
- package/dist/components/workbench/WorkbenchCanvas.d.ts +1 -1
- package/dist/components/workbench/WorkbenchCanvas.js +139 -133
- package/dist/components/workbench/WorkbenchCanvasField.d.ts +1 -1
- package/dist/components/workbench/WorkbenchCanvasField.js +82 -76
- package/dist/components/workbench/WorkbenchCompositionToolbar.d.ts +22 -0
- package/dist/components/workbench/WorkbenchCompositionToolbar.js +261 -0
- package/dist/components/workbench/WorkbenchLayerObjects.d.ts +3 -1
- package/dist/components/workbench/WorkbenchLayerObjects.js +1020 -854
- package/dist/components/workbench/WorkbenchSurface.js +439 -437
- package/dist/components/workbench/types.d.ts +3 -1
- package/dist/components/workbench/useWorkbenchModel.d.ts +16 -1
- package/dist/components/workbench/useWorkbenchModel.js +302 -282
- package/dist/components/workbench/workbenchCompositionMessages.d.ts +37 -4
- package/dist/components/workbench/workbenchCompositionMessages.js +42 -12
- package/dist/components/workbench/workbenchHelpers.js +25 -21
- package/dist/components/workbench/workbenchInteractionAdapter.js +39 -39
- package/dist/components/workbench/workbenchOptions.d.ts +35 -5
- package/dist/components/workbench/workbenchOptions.js +29 -13
- package/dist/styles.css +1 -1
- package/dist/workbench-composition.css +911 -0
- package/dist/workbench.css +18 -536
- package/package.json +1 -1
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { insert as l, memo as
|
|
2
|
-
import { createMemo as a, createSignal as
|
|
1
|
+
import { insert as l, memo as g, createComponent as u, effect as W, template as h } from "solid-js/web";
|
|
2
|
+
import { createMemo as a, createSignal as M, For as S } from "solid-js";
|
|
3
3
|
import { resolveWorkbenchInteractionAdapter as B } from "./workbenchInteractionAdapter.js";
|
|
4
|
-
import { WORKBENCH_BACKGROUND_REGION_FILTER_ID as
|
|
5
|
-
import { createWorkbenchRenderLayerMap as
|
|
4
|
+
import { WORKBENCH_BACKGROUND_REGION_FILTER_ID as E, WORKBENCH_TEXT_FILTER_ID as x, WORKBENCH_STICKY_FILTER_ID as N } from "./types.js";
|
|
5
|
+
import { createWorkbenchRenderLayerMap as A } from "./workbenchHelpers.js";
|
|
6
6
|
import { getWidgetEntry as D } from "./widgets/widgetRegistry.js";
|
|
7
7
|
import { WorkbenchWidget as V } from "./WorkbenchWidget.js";
|
|
8
|
-
import { WorkbenchPlacementPreview as
|
|
9
|
-
import { WorkbenchBackgroundLayerView as j, WorkbenchAnnotationLayerView as G, WorkbenchLayerControlOverlayView as T,
|
|
10
|
-
var
|
|
8
|
+
import { WorkbenchPlacementPreview as _ } from "./WorkbenchPlacementPreview.js";
|
|
9
|
+
import { createWorkbenchTextEditorRegistry as P, WorkbenchBackgroundLayerView as j, WorkbenchAnnotationLayerView as G, WorkbenchLayerControlOverlayView as T, WorkbenchStickyNote as U } from "./WorkbenchLayerObjects.js";
|
|
10
|
+
var q = /* @__PURE__ */ h("<div class=workbench-canvas__field><div class=workbench-work-layer>");
|
|
11
11
|
function z(e) {
|
|
12
12
|
const d = a((i) => {
|
|
13
13
|
const m = e.widgetById().get(e.widgetId);
|
|
14
14
|
if (m) return m;
|
|
15
15
|
if (i) return i;
|
|
16
16
|
throw new Error(`Workbench widget ${e.widgetId} is missing from the render map.`);
|
|
17
|
-
}),
|
|
18
|
-
return
|
|
17
|
+
}), r = a(() => D(d().type, e.widgetDefinitions));
|
|
18
|
+
return u(V, {
|
|
19
19
|
get definition() {
|
|
20
|
-
return
|
|
20
|
+
return r();
|
|
21
21
|
},
|
|
22
22
|
get widgetId() {
|
|
23
23
|
return e.widgetId;
|
|
@@ -63,7 +63,7 @@ function z(e) {
|
|
|
63
63
|
return e.locked;
|
|
64
64
|
},
|
|
65
65
|
get filtered() {
|
|
66
|
-
return
|
|
66
|
+
return g(() => !e.workLayerLocked)() && e.filters[d().type] === !1;
|
|
67
67
|
},
|
|
68
68
|
get interactionAdapter() {
|
|
69
69
|
return e.interactionAdapter;
|
|
@@ -115,19 +115,19 @@ function z(e) {
|
|
|
115
115
|
}
|
|
116
116
|
});
|
|
117
117
|
}
|
|
118
|
-
function
|
|
119
|
-
const d = a((
|
|
118
|
+
function s(e) {
|
|
119
|
+
const d = a((r) => {
|
|
120
120
|
const i = e.stickyNoteById().get(e.noteId);
|
|
121
121
|
if (i) return i;
|
|
122
|
-
if (
|
|
122
|
+
if (r) return r;
|
|
123
123
|
throw new Error(`Workbench sticky note ${e.noteId} is missing from the render map.`);
|
|
124
124
|
});
|
|
125
|
-
return
|
|
125
|
+
return u(U, {
|
|
126
126
|
get item() {
|
|
127
127
|
return d();
|
|
128
128
|
},
|
|
129
129
|
get selected() {
|
|
130
|
-
return
|
|
130
|
+
return g(() => e.selectedObject?.kind === "sticky_note")() && e.selectedObject.id === e.noteId;
|
|
131
131
|
},
|
|
132
132
|
get viewportScale() {
|
|
133
133
|
return e.viewportScale;
|
|
@@ -147,14 +147,14 @@ function $(e) {
|
|
|
147
147
|
get visualFront() {
|
|
148
148
|
return e.visualFrontOwnerId === e.noteId;
|
|
149
149
|
},
|
|
150
|
-
onSelect: (
|
|
151
|
-
onContextMenu: (
|
|
152
|
-
onClaimVisualFrontOwner: (
|
|
153
|
-
onCommitFront: (
|
|
154
|
-
onCommitMove: (
|
|
155
|
-
onCommitResize: (
|
|
156
|
-
onUpdate: (
|
|
157
|
-
onDelete: (
|
|
150
|
+
onSelect: (r) => e.onSelectStickyNote?.(r),
|
|
151
|
+
onContextMenu: (r, i) => e.onStickyNoteContextMenu?.(r, i),
|
|
152
|
+
onClaimVisualFrontOwner: (r) => e.onClaimStickyVisualFrontOwner?.(r),
|
|
153
|
+
onCommitFront: (r) => e.onCommitStickyFront?.(r),
|
|
154
|
+
onCommitMove: (r, i) => e.onCommitStickyMove?.(r, i),
|
|
155
|
+
onCommitResize: (r, i) => e.onCommitStickyResize?.(r, i),
|
|
156
|
+
onUpdate: (r, i) => e.onUpdateStickyNote?.(r, i),
|
|
157
|
+
onDelete: (r) => e.onDeleteStickyNote?.(r),
|
|
158
158
|
get onLayoutInteractionStart() {
|
|
159
159
|
return e.onLayoutInteractionStart;
|
|
160
160
|
},
|
|
@@ -163,23 +163,23 @@ function $(e) {
|
|
|
163
163
|
}
|
|
164
164
|
});
|
|
165
165
|
}
|
|
166
|
-
function
|
|
167
|
-
const d = a(() => B(e.interactionAdapter)),
|
|
166
|
+
function ee(e) {
|
|
167
|
+
const d = a(() => B(e.interactionAdapter)), r = a(() => e.widgets.map((o) => o.id)), i = a(() => new Map(e.widgets.map((o) => [o.id, o]))), m = a(() => (e.stickyNotes ?? []).map((o) => o.id)), f = a(() => new Map((e.stickyNotes ?? []).map((o) => [o.id, o]))), R = P(), w = a(() => e.textEditorRegistry ?? R), L = a(() => A([...e.widgets, ...e.stickyNotes ?? []])), b = a(() => e.selectedObject?.kind === "widget" ? e.selectedObject.id : e.selectedWidgetId), C = a(() => e.locked || !!e.workLayerLocked), [O, F] = M(null), k = a(() => e.layerGeometryPreview === void 0 ? O() : e.layerGeometryPreview), v = (o) => {
|
|
168
168
|
if (e.onLayerGeometryPreview) {
|
|
169
169
|
e.onLayerGeometryPreview(o);
|
|
170
170
|
return;
|
|
171
171
|
}
|
|
172
|
-
|
|
173
|
-
},
|
|
172
|
+
F(o);
|
|
173
|
+
}, I = a(() => e.renderFreeformLayers !== !1);
|
|
174
174
|
return (() => {
|
|
175
|
-
var o =
|
|
175
|
+
var o = q(), y = o.firstChild;
|
|
176
176
|
return l(o, (() => {
|
|
177
|
-
var
|
|
178
|
-
return () =>
|
|
177
|
+
var c = g(() => !!I());
|
|
178
|
+
return () => c() ? [u(j, {
|
|
179
179
|
get textEditorRegistry() {
|
|
180
|
-
return
|
|
180
|
+
return w();
|
|
181
181
|
},
|
|
182
|
-
onUpdate: (t,
|
|
182
|
+
onUpdate: (t, n) => e.onUpdateBackgroundLayer?.(t, n),
|
|
183
183
|
get items() {
|
|
184
184
|
return e.backgroundLayers ?? [];
|
|
185
185
|
},
|
|
@@ -187,22 +187,22 @@ function te(e) {
|
|
|
187
187
|
return e.selectedObject ?? null;
|
|
188
188
|
},
|
|
189
189
|
get editable() {
|
|
190
|
-
return
|
|
190
|
+
return g(() => !!e.backgroundLayerEditable)() && !e.locked;
|
|
191
191
|
},
|
|
192
192
|
get filtered() {
|
|
193
|
-
return e.filters[
|
|
193
|
+
return e.filters[E] === !1;
|
|
194
194
|
},
|
|
195
195
|
get preview() {
|
|
196
|
-
return
|
|
196
|
+
return k();
|
|
197
197
|
},
|
|
198
|
-
onPreviewGeometry:
|
|
198
|
+
onPreviewGeometry: v,
|
|
199
199
|
get viewport() {
|
|
200
200
|
return e.viewport;
|
|
201
201
|
},
|
|
202
202
|
onSelect: (t) => e.onSelectBackgroundLayer?.(t),
|
|
203
|
-
onContextMenu: (t,
|
|
204
|
-
onCommitMove: (t,
|
|
205
|
-
}),
|
|
203
|
+
onContextMenu: (t, n) => e.onBackgroundLayerContextMenu?.(t, n),
|
|
204
|
+
onCommitMove: (t, n) => e.onCommitBackgroundMove?.(t, n)
|
|
205
|
+
}), u(G, {
|
|
206
206
|
get items() {
|
|
207
207
|
return e.annotations ?? [];
|
|
208
208
|
},
|
|
@@ -210,32 +210,32 @@ function te(e) {
|
|
|
210
210
|
return e.selectedObject ?? null;
|
|
211
211
|
},
|
|
212
212
|
get editable() {
|
|
213
|
-
return
|
|
213
|
+
return g(() => !!e.annotationLayerEditable)() && !e.locked;
|
|
214
214
|
},
|
|
215
215
|
get filtered() {
|
|
216
|
-
return e.filters[
|
|
216
|
+
return e.filters[x] === !1;
|
|
217
217
|
},
|
|
218
218
|
get preview() {
|
|
219
|
-
return
|
|
219
|
+
return k();
|
|
220
220
|
},
|
|
221
|
-
onPreviewGeometry:
|
|
221
|
+
onPreviewGeometry: v,
|
|
222
222
|
get textEditorRegistry() {
|
|
223
|
-
return
|
|
223
|
+
return w();
|
|
224
224
|
},
|
|
225
225
|
get viewport() {
|
|
226
226
|
return e.viewport;
|
|
227
227
|
},
|
|
228
228
|
onSelect: (t) => e.onSelectAnnotation?.(t),
|
|
229
|
-
onContextMenu: (t,
|
|
230
|
-
onCommitMove: (t,
|
|
231
|
-
onUpdate: (t,
|
|
229
|
+
onContextMenu: (t, n) => e.onAnnotationContextMenu?.(t, n),
|
|
230
|
+
onCommitMove: (t, n) => e.onCommitAnnotationMove?.(t, n),
|
|
231
|
+
onUpdate: (t, n) => e.onUpdateTextAnnotation?.(t, n)
|
|
232
232
|
})] : null;
|
|
233
|
-
})(),
|
|
233
|
+
})(), y), l(y, u(S, {
|
|
234
234
|
get each() {
|
|
235
|
-
return
|
|
235
|
+
return r();
|
|
236
236
|
},
|
|
237
|
-
children: (
|
|
238
|
-
widgetId:
|
|
237
|
+
children: (c) => u(z, {
|
|
238
|
+
widgetId: c,
|
|
239
239
|
get widgetDefinitions() {
|
|
240
240
|
return e.widgetDefinitions;
|
|
241
241
|
},
|
|
@@ -243,12 +243,12 @@ function te(e) {
|
|
|
243
243
|
return e.widgets;
|
|
244
244
|
},
|
|
245
245
|
widgetById: i,
|
|
246
|
-
renderLayers:
|
|
246
|
+
renderLayers: L,
|
|
247
247
|
get viewport() {
|
|
248
248
|
return e.viewport;
|
|
249
249
|
},
|
|
250
250
|
get selectedWidgetId() {
|
|
251
|
-
return
|
|
251
|
+
return b();
|
|
252
252
|
},
|
|
253
253
|
get visualFrontOwnerId() {
|
|
254
254
|
return e.visualFrontOwnerId;
|
|
@@ -257,7 +257,7 @@ function te(e) {
|
|
|
257
257
|
return e.viewportScale;
|
|
258
258
|
},
|
|
259
259
|
get locked() {
|
|
260
|
-
return
|
|
260
|
+
return C();
|
|
261
261
|
},
|
|
262
262
|
get filters() {
|
|
263
263
|
return e.filters;
|
|
@@ -311,13 +311,13 @@ function te(e) {
|
|
|
311
311
|
return e.onLayoutInteractionEnd;
|
|
312
312
|
}
|
|
313
313
|
})
|
|
314
|
-
}), null), l(
|
|
314
|
+
}), null), l(y, u(S, {
|
|
315
315
|
get each() {
|
|
316
316
|
return m();
|
|
317
317
|
},
|
|
318
|
-
children: (
|
|
319
|
-
noteId:
|
|
320
|
-
stickyNoteById:
|
|
318
|
+
children: (c) => u(s, {
|
|
319
|
+
noteId: c,
|
|
320
|
+
stickyNoteById: f,
|
|
321
321
|
get selectedObject() {
|
|
322
322
|
return e.selectedObject;
|
|
323
323
|
},
|
|
@@ -328,10 +328,10 @@ function te(e) {
|
|
|
328
328
|
return e.viewportScale;
|
|
329
329
|
},
|
|
330
330
|
get locked() {
|
|
331
|
-
return
|
|
331
|
+
return C();
|
|
332
332
|
},
|
|
333
333
|
get filtered() {
|
|
334
|
-
return
|
|
334
|
+
return g(() => !e.workLayerLocked)() && e.filters[N] === !1;
|
|
335
335
|
},
|
|
336
336
|
get onSelectStickyNote() {
|
|
337
337
|
return e.onSelectStickyNote;
|
|
@@ -363,11 +363,11 @@ function te(e) {
|
|
|
363
363
|
get onLayoutInteractionEnd() {
|
|
364
364
|
return e.onLayoutInteractionEnd;
|
|
365
365
|
},
|
|
366
|
-
renderLayers:
|
|
366
|
+
renderLayers: L
|
|
367
367
|
})
|
|
368
368
|
}), null), l(o, (() => {
|
|
369
|
-
var
|
|
370
|
-
return () =>
|
|
369
|
+
var c = g(() => !!I());
|
|
370
|
+
return () => c() ? u(T, {
|
|
371
371
|
get annotations() {
|
|
372
372
|
return e.annotations ?? [];
|
|
373
373
|
},
|
|
@@ -378,7 +378,7 @@ function te(e) {
|
|
|
378
378
|
return e.selectedObject ?? null;
|
|
379
379
|
},
|
|
380
380
|
get editable() {
|
|
381
|
-
return
|
|
381
|
+
return g(() => !!(e.annotationLayerEditable || e.backgroundLayerEditable))() && !e.locked;
|
|
382
382
|
},
|
|
383
383
|
get showRegionOutlines() {
|
|
384
384
|
return !!e.showRegionOutlines;
|
|
@@ -387,21 +387,21 @@ function te(e) {
|
|
|
387
387
|
return e.viewport;
|
|
388
388
|
},
|
|
389
389
|
get preview() {
|
|
390
|
-
return
|
|
390
|
+
return k();
|
|
391
391
|
},
|
|
392
|
-
onPreviewGeometry:
|
|
392
|
+
onPreviewGeometry: v,
|
|
393
393
|
get textEditorRegistry() {
|
|
394
|
-
return
|
|
394
|
+
return w();
|
|
395
395
|
},
|
|
396
|
-
onCommitAnnotationMove: (t,
|
|
397
|
-
onCommitAnnotationResize: (t,
|
|
398
|
-
onUpdateTextAnnotation: (t,
|
|
396
|
+
onCommitAnnotationMove: (t, n) => e.onCommitAnnotationMove?.(t, n),
|
|
397
|
+
onCommitAnnotationResize: (t, n) => e.onCommitAnnotationResize?.(t, n),
|
|
398
|
+
onUpdateTextAnnotation: (t, n) => e.onUpdateTextAnnotation?.(t, n),
|
|
399
399
|
onDeleteAnnotation: (t) => e.onDeleteAnnotation?.(t),
|
|
400
|
-
onCommitBackgroundResize: (t,
|
|
401
|
-
onUpdateBackgroundLayer: (t,
|
|
400
|
+
onCommitBackgroundResize: (t, n) => e.onCommitBackgroundResize?.(t, n),
|
|
401
|
+
onUpdateBackgroundLayer: (t, n) => e.onUpdateBackgroundLayer?.(t, n),
|
|
402
402
|
onDeleteBackgroundLayer: (t) => e.onDeleteBackgroundLayer?.(t)
|
|
403
403
|
}) : null;
|
|
404
|
-
})(), null), l(o,
|
|
404
|
+
})(), null), l(o, u(_, {
|
|
405
405
|
get preview() {
|
|
406
406
|
return e.placementPreview;
|
|
407
407
|
},
|
|
@@ -409,9 +409,15 @@ function te(e) {
|
|
|
409
409
|
get viewport() {
|
|
410
410
|
return e.viewport;
|
|
411
411
|
}
|
|
412
|
-
}), null), W(() =>
|
|
412
|
+
}), null), W((c) => {
|
|
413
|
+
var t = !!e.workLayerLocked, n = !!e.workLayerLocked;
|
|
414
|
+
return t !== c.e && o.classList.toggle("is-work-layer-muted", c.e = t), n !== c.t && (y.inert = c.t = n), c;
|
|
415
|
+
}, {
|
|
416
|
+
e: void 0,
|
|
417
|
+
t: void 0
|
|
418
|
+
}), o;
|
|
413
419
|
})();
|
|
414
420
|
}
|
|
415
421
|
export {
|
|
416
|
-
|
|
422
|
+
ee as WorkbenchCanvasField
|
|
417
423
|
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type JSX } from 'solid-js';
|
|
2
|
+
import { type WorkbenchCompositionMessageKey } from './workbenchCompositionMessages';
|
|
3
|
+
export declare function CompositionIcon(props: {
|
|
4
|
+
name: 'emoji' | 'text' | 'left' | 'center' | 'copy' | 'trash';
|
|
5
|
+
}): JSX.Element;
|
|
6
|
+
export declare function CompositionDivider(): JSX.Element;
|
|
7
|
+
/** Object tools keep their anchor when a material or emoji menu opens. */
|
|
8
|
+
export declare function CompositionToolbar(props: {
|
|
9
|
+
kind: 'sticky' | 'region' | 'text';
|
|
10
|
+
children?: JSX.Element;
|
|
11
|
+
actions?: JSX.Element;
|
|
12
|
+
palette?: JSX.Element;
|
|
13
|
+
onInsertEmoji?: (emoji: string) => void;
|
|
14
|
+
materials?: readonly WorkbenchCompositionMessageKey[];
|
|
15
|
+
material?: WorkbenchCompositionMessageKey;
|
|
16
|
+
preview?: (material: WorkbenchCompositionMessageKey) => JSX.Element;
|
|
17
|
+
onMaterial?: (material: WorkbenchCompositionMessageKey) => void;
|
|
18
|
+
materialLabel?: (material: WorkbenchCompositionMessageKey) => string;
|
|
19
|
+
more?: (closeMenu: () => void) => JSX.Element;
|
|
20
|
+
onMoreClose?: () => void;
|
|
21
|
+
moreOpen?: boolean;
|
|
22
|
+
}): JSX.Element;
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import { spread as H, mergeProps as N, insert as s, createComponent as d, use as L, setAttribute as m, effect as p, setStyleProperty as C, memo as F, template as h, delegateEvents as U } from "solid-js/web";
|
|
2
|
+
import { createSignal as A, createUniqueId as z, createEffect as T, onCleanup as I, Show as b, For as R } from "solid-js";
|
|
3
|
+
import { Check as K, ChevronDown as W } from "../icons/index.js";
|
|
4
|
+
import { WORKBENCH_TEXT_EMOJI_OPTIONS as V } from "./workbenchOptions.js";
|
|
5
|
+
import { resolveFloatingBoundary as J } from "../ui/surfaceFloatingBoundary.js";
|
|
6
|
+
import { LOCAL_INTERACTION_SURFACE_ATTR as X } from "../ui/localInteractionSurface.js";
|
|
7
|
+
import { useWorkbenchCompositionText as G } from "./workbenchCompositionMessages.js";
|
|
8
|
+
import { resolveSurfacePortalHost as Q } from "../ui/dialogSurfaceScope.js";
|
|
9
|
+
var Y = /* @__PURE__ */ h("<svg><circle cx=12 cy=12 r=9></svg>", !1, !0, !1), Z = /* @__PURE__ */ h("<svg><rect x=8 y=8 width=12 height=12 rx=2></svg>", !1, !0, !1), ee = /* @__PURE__ */ h('<svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=1.65 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path>'), te = /* @__PURE__ */ h("<span class=workbench-composition-divider aria-hidden=true>"), re = /* @__PURE__ */ h('<div class="workbench-menu-options workbench-treatment-options"role=group>'), ne = /* @__PURE__ */ h("<div class=workbench-material-settings>"), oe = /* @__PURE__ */ h("<div class=workbench-emoji-heading>"), ie = /* @__PURE__ */ h('<div class="workbench-menu-options workbench-emoji-options"role=menu>'), ae = /* @__PURE__ */ h("<div class=workbench-composition-menu>"), le = /* @__PURE__ */ h("<div class=workbench-composition-more>"), ce = /* @__PURE__ */ h("<button type=button class=workbench-treatment-trigger><span>"), se = /* @__PURE__ */ h("<button type=button class=workbench-emoji-trigger aria-haspopup=menu>"), ue = /* @__PURE__ */ h("<div><div class=workbench-toolbar-main>"), me = /* @__PURE__ */ h("<button type=button><span class=workbench-treatment-label>"), de = /* @__PURE__ */ h("<button type=button role=menuitem class=workbench-emoji-option>");
|
|
10
|
+
function he(n) {
|
|
11
|
+
const g = {
|
|
12
|
+
emoji: "M8 14s1.5 2 4 2 4-2 4-2M8 9h.01M16 9h.01",
|
|
13
|
+
copy: "M16 8V4H4v12h4",
|
|
14
|
+
trash: "M3 6h18M9 6V3h6v3M5 6l1 15h12l1-15M10 10v7m4-7v7",
|
|
15
|
+
text: "M4 5h16M12 5v15M8 20h8M4 5v3m16-3v3",
|
|
16
|
+
left: "M4 5h16M4 10h11M4 15h16M4 20h11",
|
|
17
|
+
center: "M4 5h16M7 10h10M4 15h16M7 20h10"
|
|
18
|
+
};
|
|
19
|
+
return (() => {
|
|
20
|
+
var o = ee(), v = o.firstChild;
|
|
21
|
+
return s(o, d(b, {
|
|
22
|
+
get when() {
|
|
23
|
+
return n.name === "emoji";
|
|
24
|
+
},
|
|
25
|
+
get children() {
|
|
26
|
+
return Y();
|
|
27
|
+
}
|
|
28
|
+
}), v), s(o, d(b, {
|
|
29
|
+
get when() {
|
|
30
|
+
return n.name === "copy";
|
|
31
|
+
},
|
|
32
|
+
get children() {
|
|
33
|
+
return Z();
|
|
34
|
+
}
|
|
35
|
+
}), v), p(() => m(v, "d", g[n.name])), o;
|
|
36
|
+
})();
|
|
37
|
+
}
|
|
38
|
+
function q() {
|
|
39
|
+
return te();
|
|
40
|
+
}
|
|
41
|
+
function ye(n) {
|
|
42
|
+
const g = G(), [o, v] = A(null), [_, B] = A(), [j, O] = A(), E = z();
|
|
43
|
+
let f, M = !1;
|
|
44
|
+
const $ = () => {
|
|
45
|
+
v(null), n.onMoreClose?.();
|
|
46
|
+
}, x = (i) => f?.querySelector(i === "emoji" ? ".workbench-emoji-trigger" : ".workbench-treatment-trigger"), S = (i) => (i.querySelector('button[aria-pressed="true"]') ?? i.querySelector(".workbench-menu-options > button"))?.focus({
|
|
47
|
+
preventScroll: !0
|
|
48
|
+
}), P = (i, a) => {
|
|
49
|
+
i.key === "ArrowDown" && (i.preventDefault(), i.stopPropagation(), o() === a && _() ? S(_()) : (M = !0, v(a)));
|
|
50
|
+
};
|
|
51
|
+
return T(() => {
|
|
52
|
+
const i = _();
|
|
53
|
+
if (!o() || !i || !f) {
|
|
54
|
+
O(void 0);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const a = J(Q({
|
|
58
|
+
owner: f
|
|
59
|
+
})), k = x(o());
|
|
60
|
+
if (!a || !k) return;
|
|
61
|
+
const t = k.getBoundingClientRect(), e = f.getBoundingClientRect();
|
|
62
|
+
i.style.maxHeight = `${Math.max(0, a.bottom - a.top - 24)}px`;
|
|
63
|
+
const r = i.getBoundingClientRect(), u = t.top - r.height - 10, l = Math.max(a.top + 12, u >= a.top + 12 ? u : Math.min(t.bottom + 10, a.bottom - r.height - 12)), c = Math.max(a.left + 12, Math.min(t.left, a.right - r.width - 12));
|
|
64
|
+
O({
|
|
65
|
+
x: c - e.left,
|
|
66
|
+
y: l - e.top
|
|
67
|
+
}), M && (M = !1, queueMicrotask(() => {
|
|
68
|
+
i.isConnected && S(i);
|
|
69
|
+
}));
|
|
70
|
+
}), T(() => {
|
|
71
|
+
if (!o() && !n.moreOpen) return;
|
|
72
|
+
const i = (a) => {
|
|
73
|
+
a.target instanceof Node && !f?.contains(a.target) && $();
|
|
74
|
+
};
|
|
75
|
+
if (document.addEventListener("pointerdown", i, !0), I(() => document.removeEventListener("pointerdown", i, !0)), o()) {
|
|
76
|
+
const a = (k) => {
|
|
77
|
+
k.target instanceof Node && !f?.contains(k.target) && $();
|
|
78
|
+
};
|
|
79
|
+
window.addEventListener("resize", $), document.addEventListener("wheel", a, {
|
|
80
|
+
capture: !0,
|
|
81
|
+
passive: !0
|
|
82
|
+
}), I(() => {
|
|
83
|
+
window.removeEventListener("resize", $), document.removeEventListener("wheel", a, !0);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}), (() => {
|
|
87
|
+
var i = ue(), a = i.firstChild, k = f;
|
|
88
|
+
return typeof k == "function" ? L(k, i) : f = i, H(i, N({
|
|
89
|
+
get class() {
|
|
90
|
+
return `workbench-composition-toolbar workbench-${n.kind === "sticky" ? "sticky__actions" : n.kind === "region" ? "background-region__toolbar" : "text-annotation__toolbar"}`;
|
|
91
|
+
},
|
|
92
|
+
get "data-kind"() {
|
|
93
|
+
return n.kind;
|
|
94
|
+
}
|
|
95
|
+
}, {
|
|
96
|
+
[X]: "true"
|
|
97
|
+
}, {
|
|
98
|
+
role: "toolbar",
|
|
99
|
+
get "aria-label"() {
|
|
100
|
+
return g("treatment");
|
|
101
|
+
},
|
|
102
|
+
onPointerDown: (t) => t.stopPropagation(),
|
|
103
|
+
onClick: (t) => t.stopPropagation(),
|
|
104
|
+
onKeyDown: (t) => {
|
|
105
|
+
if (t.key === "Escape" && (o() || n.moreOpen)) {
|
|
106
|
+
t.stopPropagation();
|
|
107
|
+
const e = x(o());
|
|
108
|
+
$(), e?.focus({
|
|
109
|
+
preventScroll: !0
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}), !1, !0), s(i, d(b, {
|
|
114
|
+
get when() {
|
|
115
|
+
return o();
|
|
116
|
+
},
|
|
117
|
+
get children() {
|
|
118
|
+
var t = ae();
|
|
119
|
+
return t.$$keydown = (e) => {
|
|
120
|
+
if (e.key === "Tab" && o() === "emoji") {
|
|
121
|
+
const w = x(o());
|
|
122
|
+
v(null), w?.focus({
|
|
123
|
+
preventScroll: !0
|
|
124
|
+
});
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
if (!["ArrowDown", "ArrowUp", "ArrowLeft", "ArrowRight", "Home", "End"].includes(e.key) || !(e.target instanceof Element) || !e.target.closest(".workbench-menu-options")) return;
|
|
128
|
+
e.preventDefault(), e.stopPropagation();
|
|
129
|
+
const r = Array.from(e.currentTarget.querySelectorAll(".workbench-menu-options > button")), u = r.indexOf(document.activeElement), l = o() === "emoji" && (e.key === "ArrowUp" || e.key === "ArrowDown") ? 6 : 1, c = e.key === "Home" ? 0 : e.key === "End" ? r.length - 1 : (u + (e.key === "ArrowUp" || e.key === "ArrowLeft" ? -l : l) + r.length) % r.length;
|
|
130
|
+
r[c]?.focus({
|
|
131
|
+
preventScroll: !0
|
|
132
|
+
});
|
|
133
|
+
}, L(B, t), m(t, "id", E), s(t, d(b, {
|
|
134
|
+
get when() {
|
|
135
|
+
return o() === "material";
|
|
136
|
+
},
|
|
137
|
+
get children() {
|
|
138
|
+
return [(() => {
|
|
139
|
+
var e = re();
|
|
140
|
+
return s(e, d(R, {
|
|
141
|
+
get each() {
|
|
142
|
+
return n.materials;
|
|
143
|
+
},
|
|
144
|
+
children: (r) => (() => {
|
|
145
|
+
var u = me(), l = u.firstChild;
|
|
146
|
+
return u.$$click = () => {
|
|
147
|
+
n.onMaterial?.(r), v(null), f?.querySelector(".workbench-treatment-trigger")?.focus({
|
|
148
|
+
preventScroll: !0
|
|
149
|
+
});
|
|
150
|
+
}, u.$$pointerdown = (c) => c.preventDefault(), s(u, () => n.preview?.(r), l), s(l, () => g(r), null), s(l, d(K, {}), null), p((c) => {
|
|
151
|
+
var w = n.materialLabel?.(r), y = n.material === r;
|
|
152
|
+
return w !== c.e && m(u, "aria-label", c.e = w), y !== c.t && m(u, "aria-pressed", c.t = y), c;
|
|
153
|
+
}, {
|
|
154
|
+
e: void 0,
|
|
155
|
+
t: void 0
|
|
156
|
+
}), u;
|
|
157
|
+
})()
|
|
158
|
+
})), p(() => m(e, "aria-label", g(n.kind === "region" ? "regionMaterial" : "stickyMaterial"))), e;
|
|
159
|
+
})(), d(b, {
|
|
160
|
+
get when() {
|
|
161
|
+
return n.more;
|
|
162
|
+
},
|
|
163
|
+
get children() {
|
|
164
|
+
var e = ne();
|
|
165
|
+
return s(e, () => n.more?.($)), e;
|
|
166
|
+
}
|
|
167
|
+
})];
|
|
168
|
+
}
|
|
169
|
+
}), null), s(t, d(b, {
|
|
170
|
+
get when() {
|
|
171
|
+
return o() === "emoji";
|
|
172
|
+
},
|
|
173
|
+
get children() {
|
|
174
|
+
return [(() => {
|
|
175
|
+
var e = oe();
|
|
176
|
+
return s(e, () => g("emoji")), e;
|
|
177
|
+
})(), (() => {
|
|
178
|
+
var e = ie();
|
|
179
|
+
return s(e, d(R, {
|
|
180
|
+
each: V,
|
|
181
|
+
children: (r, u) => (() => {
|
|
182
|
+
var l = de();
|
|
183
|
+
return l.$$click = () => {
|
|
184
|
+
v(null), n.onInsertEmoji?.(r);
|
|
185
|
+
}, l.$$pointerdown = (c) => c.preventDefault(), s(l, r), p((c) => {
|
|
186
|
+
var w = u() === 0 ? 0 : -1, y = g("useEmoji", r), D = g("useEmoji", r);
|
|
187
|
+
return w !== c.e && m(l, "tabindex", c.e = w), y !== c.t && m(l, "aria-label", c.t = y), D !== c.a && m(l, "title", c.a = D), c;
|
|
188
|
+
}, {
|
|
189
|
+
e: void 0,
|
|
190
|
+
t: void 0,
|
|
191
|
+
a: void 0
|
|
192
|
+
}), l;
|
|
193
|
+
})()
|
|
194
|
+
})), p(() => m(e, "aria-label", g("emoji"))), e;
|
|
195
|
+
})()];
|
|
196
|
+
}
|
|
197
|
+
}), null), p((e) => {
|
|
198
|
+
var r = o() === "material", u = o() === "emoji", l = `${j()?.x ?? 0}px`, c = `${j()?.y ?? 0}px`, w = j() ? "visible" : "hidden";
|
|
199
|
+
return r !== e.e && t.classList.toggle("workbench-treatment-panel", e.e = r), u !== e.t && t.classList.toggle("workbench-emoji-panel", e.t = u), l !== e.a && C(t, "left", e.a = l), c !== e.o && C(t, "top", e.o = c), w !== e.i && C(t, "visibility", e.i = w), e;
|
|
200
|
+
}, {
|
|
201
|
+
e: void 0,
|
|
202
|
+
t: void 0,
|
|
203
|
+
a: void 0,
|
|
204
|
+
o: void 0,
|
|
205
|
+
i: void 0
|
|
206
|
+
}), t;
|
|
207
|
+
}
|
|
208
|
+
}), a), s(i, d(b, {
|
|
209
|
+
get when() {
|
|
210
|
+
return F(() => !n.materials)() && n.moreOpen;
|
|
211
|
+
},
|
|
212
|
+
get children() {
|
|
213
|
+
var t = le();
|
|
214
|
+
return s(t, () => n.more?.($)), t;
|
|
215
|
+
}
|
|
216
|
+
}), a), s(a, () => n.palette, null), s(a, d(b, {
|
|
217
|
+
get when() {
|
|
218
|
+
return n.material;
|
|
219
|
+
},
|
|
220
|
+
get children() {
|
|
221
|
+
return [d(q, {}), (() => {
|
|
222
|
+
var t = ce(), e = t.firstChild;
|
|
223
|
+
return t.$$click = () => {
|
|
224
|
+
v(o() === "material" ? null : "material");
|
|
225
|
+
}, t.$$pointerdown = (r) => r.preventDefault(), t.$$keydown = (r) => P(r, "material"), m(t, "aria-controls", E), s(t, () => n.preview?.(n.material), e), s(e, () => g(n.material)), s(t, d(W, {}), null), p((r) => {
|
|
226
|
+
var u = g("treatment"), l = o() === "material";
|
|
227
|
+
return u !== r.e && m(t, "aria-label", r.e = u), l !== r.t && m(t, "aria-expanded", r.t = l), r;
|
|
228
|
+
}, {
|
|
229
|
+
e: void 0,
|
|
230
|
+
t: void 0
|
|
231
|
+
}), t;
|
|
232
|
+
})(), d(q, {})];
|
|
233
|
+
}
|
|
234
|
+
}), null), s(a, () => n.children, null), s(a, d(b, {
|
|
235
|
+
get when() {
|
|
236
|
+
return n.onInsertEmoji;
|
|
237
|
+
},
|
|
238
|
+
get children() {
|
|
239
|
+
var t = se();
|
|
240
|
+
return t.$$click = () => {
|
|
241
|
+
M = o() !== "emoji", v(o() === "emoji" ? null : "emoji");
|
|
242
|
+
}, t.$$keydown = (e) => P(e, "emoji"), t.$$pointerdown = (e) => e.preventDefault(), m(t, "aria-controls", E), s(t, d(he, {
|
|
243
|
+
name: "emoji"
|
|
244
|
+
})), p((e) => {
|
|
245
|
+
var r = g("insertEmoji"), u = g("insertEmoji"), l = o() === "emoji";
|
|
246
|
+
return r !== e.e && m(t, "aria-label", e.e = r), u !== e.t && m(t, "title", e.t = u), l !== e.a && m(t, "aria-expanded", e.a = l), e;
|
|
247
|
+
}, {
|
|
248
|
+
e: void 0,
|
|
249
|
+
t: void 0,
|
|
250
|
+
a: void 0
|
|
251
|
+
}), t;
|
|
252
|
+
}
|
|
253
|
+
}), null), s(a, () => n.actions, null), i;
|
|
254
|
+
})();
|
|
255
|
+
}
|
|
256
|
+
U(["keydown", "pointerdown", "click"]);
|
|
257
|
+
export {
|
|
258
|
+
q as CompositionDivider,
|
|
259
|
+
he as CompositionIcon,
|
|
260
|
+
ye as CompositionToolbar
|
|
261
|
+
};
|
|
@@ -11,6 +11,8 @@ export type WorkbenchLayerGeometryPreview = {
|
|
|
11
11
|
export type WorkbenchLayerProjectionMode = 'world' | 'screen';
|
|
12
12
|
export interface WorkbenchTextEditorHandle {
|
|
13
13
|
focus: () => void;
|
|
14
|
+
blur: () => void;
|
|
15
|
+
isFocused: Accessor<boolean>;
|
|
14
16
|
insertTextAtSelection: (text: string) => void;
|
|
15
17
|
readText: () => string;
|
|
16
18
|
}
|
|
@@ -42,7 +44,7 @@ export declare function WorkbenchStickyNote(props: {
|
|
|
42
44
|
width: number;
|
|
43
45
|
height: number;
|
|
44
46
|
}) => void;
|
|
45
|
-
onUpdate: (noteId: string, patch: Partial<Pick<WorkbenchStickyNoteItem, 'body' | 'color' | 'material'>>) => void;
|
|
47
|
+
onUpdate: (noteId: string, patch: Partial<Pick<WorkbenchStickyNoteItem, 'title' | 'body' | 'color' | 'material'>>) => void;
|
|
46
48
|
onDelete: (noteId: string) => void;
|
|
47
49
|
onLayoutInteractionStart?: () => void;
|
|
48
50
|
onLayoutInteractionEnd?: () => void;
|