@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.
@@ -1,23 +1,23 @@
1
- import { createComponent as f, use as ut, spread as lt, mergeProps as gt, insert as C, Portal as wt, addEventListener as ft, template as z, delegateEvents as mt } from "solid-js/web";
2
- import { WorkbenchCompositionMessagesContext as kt } from "./workbenchCompositionMessages.js";
3
- import { createSignal as L, createMemo as v, untrack as W, createEffect as y, onCleanup as p, Show as vt } from "solid-js";
4
- import { clientToCanvasWorld as P } from "../ui/canvasGeometry.js";
5
- import { createUIFirstSelection as yt } from "../../utils/uiFirstSelection.js";
6
- import { WorkbenchCanvas as At } from "./WorkbenchCanvas.js";
7
- import { WorkbenchContextMenu as ht } from "./WorkbenchContextMenu.js";
8
- import { WorkbenchDock as bt } from "./WorkbenchFilterBar.js";
9
- import { WorkbenchHud as Ct } from "./WorkbenchHud.js";
10
- import { WorkbenchLockButton as Wt } from "./WorkbenchLockButton.js";
11
- import { installWorkbenchContextMenuDismissListeners as pt } from "./workbenchContextMenuDismiss.js";
12
- import { createContextMenuPosition as St, WORKBENCH_CONTEXT_MENU_WIDTH_PX as xt, estimateContextMenuHeight as It } from "./workbenchHelpers.js";
13
- import { resolveWorkbenchWidgetPlacementPreview as Mt, resolveWorkbenchToolPlacementPreview as Dt } from "./workbenchPlacement.js";
14
- import { useWorkbenchModel as Lt } from "./useWorkbenchModel.js";
15
- import { sortWorkbenchDockFocusCandidates as Tt, workbenchDockFocusCandidateKey as Y, resolveWorkbenchDockFocusCycle as Ft } from "./workbenchDockFocusCycle.js";
16
- import { resolveWorkbenchInteractionAdapter as Bt } from "./workbenchInteractionAdapter.js";
17
- import { SURFACE_PORTAL_LAYER_ATTR as Et, DIALOG_SURFACE_HOST_ATTR as _t } from "../ui/dialogSurfaceScope.js";
18
- var Rt = /* @__PURE__ */ z("<div class=workbench-menu-backdrop data-floe-workbench-boundary=true>"), Ot = /* @__PURE__ */ z("<div><div class=workbench-surface__body data-floe-workbench-canvas-frame=true>");
19
- const Nt = "F1";
20
- function q(c) {
1
+ import { createComponent as l, use as ct, spread as at, mergeProps as dt, insert as C, Portal as st, addEventListener as ut, template as P, delegateEvents as lt } from "solid-js/web";
2
+ import { WorkbenchCompositionActionsContext as gt, WorkbenchCompositionMessagesContext as ft } from "./workbenchCompositionMessages.js";
3
+ import { createSignal as I, createMemo as m, untrack as b, createEffect as h, onCleanup as W, Show as wt } from "solid-js";
4
+ import { clientToCanvasWorld as O } from "../ui/canvasGeometry.js";
5
+ import { createUIFirstSelection as kt } from "../../utils/uiFirstSelection.js";
6
+ import { WorkbenchCanvas as mt } from "./WorkbenchCanvas.js";
7
+ import { WorkbenchContextMenu as vt } from "./WorkbenchContextMenu.js";
8
+ import { WorkbenchDock as yt } from "./WorkbenchFilterBar.js";
9
+ import { WorkbenchHud as At } from "./WorkbenchHud.js";
10
+ import { WorkbenchLockButton as Ct } from "./WorkbenchLockButton.js";
11
+ import { installWorkbenchContextMenuDismissListeners as ht } from "./workbenchContextMenuDismiss.js";
12
+ import { createContextMenuPosition as bt, WORKBENCH_CONTEXT_MENU_WIDTH_PX as Wt, estimateContextMenuHeight as pt } from "./workbenchHelpers.js";
13
+ import { resolveWorkbenchWidgetPlacementPreview as St, resolveWorkbenchToolPlacementPreview as xt } from "./workbenchPlacement.js";
14
+ import { useWorkbenchModel as It } from "./useWorkbenchModel.js";
15
+ import { sortWorkbenchDockFocusCandidates as Dt, workbenchDockFocusCandidateKey as R, resolveWorkbenchDockFocusCycle as Mt } from "./workbenchDockFocusCycle.js";
16
+ import { resolveWorkbenchInteractionAdapter as Lt } from "./workbenchInteractionAdapter.js";
17
+ import { SURFACE_PORTAL_LAYER_ATTR as Ft, DIALOG_SURFACE_HOST_ATTR as Tt } from "../ui/dialogSurfaceScope.js";
18
+ var Bt = /* @__PURE__ */ P("<div class=workbench-menu-backdrop data-floe-workbench-boundary=true>"), _t = /* @__PURE__ */ P("<div><div class=workbench-surface__body data-floe-workbench-canvas-frame=true>");
19
+ const Et = "F1";
20
+ function N(c) {
21
21
  if (c)
22
22
  try {
23
23
  c.focus({
@@ -27,8 +27,8 @@ function q(c) {
27
27
  c.focus();
28
28
  }
29
29
  }
30
- function oe(c) {
31
- const e = Lt({
30
+ function te(c) {
31
+ const e = It({
32
32
  state: () => c.state(),
33
33
  setState: (t) => c.setState(t),
34
34
  widgetDefinitions: () => c.widgetDefinitions,
@@ -36,7 +36,7 @@ function oe(c) {
36
36
  backgroundLayerDefaults: () => c.backgroundLayerDefaults,
37
37
  onClose: () => {
38
38
  }
39
- }), u = yt({
39
+ }), u = kt({
40
40
  committed: e.selectedWidgetId,
41
41
  commitEqualRequests: !0,
42
42
  commit: (t, n) => {
@@ -47,7 +47,7 @@ function oe(c) {
47
47
  e.canvas.selectWidget(t), n?.bringToFront && e.canvas.commitFront(t);
48
48
  },
49
49
  onEvent: (t) => c.onWidgetActivationEvent?.(t)
50
- }), V = () => c.widgetActivationMode === "after-paint" ? u.visual() : e.selectedWidgetId(), S = () => {
50
+ }), X = () => c.widgetActivationMode === "after-paint" ? u.visual() : e.selectedWidgetId(), p = () => {
51
51
  if (c.widgetActivationMode !== "after-paint" || !u.pending())
52
52
  return e.selectedObject();
53
53
  const t = u.visual();
@@ -55,7 +55,7 @@ function oe(c) {
55
55
  kind: "widget",
56
56
  id: t
57
57
  } : null;
58
- }, $ = (t) => {
58
+ }, q = (t) => {
59
59
  if (c.widgetActivationMode === "after-paint") {
60
60
  if (u.pending() && u.visual() === t) return;
61
61
  u.request(t, {
@@ -64,7 +64,7 @@ function oe(c) {
64
64
  return;
65
65
  }
66
66
  e.canvas.selectWidget(t);
67
- }, T = (t) => {
67
+ }, D = (t) => {
68
68
  if (c.widgetActivationMode === "after-paint") {
69
69
  if (u.pending() && u.visual() === t) return;
70
70
  u.request(t, {
@@ -73,77 +73,77 @@ function oe(c) {
73
73
  return;
74
74
  }
75
75
  e.canvas.selectWidget(t), e.canvas.commitFront(t);
76
- }, [l, j] = L(null), [H, U] = L(null), s = v(() => Bt(c.interactionAdapter)), [F, m] = L(W(() => s().createInitialInputOwner())), B = v(() => {
76
+ }, [g, Y] = I(null), [z, V] = I(null), d = m(() => Lt(c.interactionAdapter)), [M, w] = I(b(() => d().createInitialInputOwner())), L = m(() => {
77
77
  const t = c.launcherWidgetTypes;
78
78
  return !t || t.length <= 0 ? null : new Set(t);
79
- }), K = v(() => {
80
- const t = e.widgetDefinitions(), n = B();
79
+ }), H = m(() => {
80
+ const t = e.widgetDefinitions(), n = L();
81
81
  return n ? t.filter((o) => n.has(o.type)) : t;
82
- }), E = v(() => {
83
- const t = e.contextMenu.state(), n = e.contextMenu.items(), o = B(), i = o ? n.filter((d) => {
84
- if (d.kind !== "action")
82
+ }), F = m(() => {
83
+ const t = e.contextMenu.state(), n = e.contextMenu.items(), o = L(), r = o ? n.filter((s) => {
84
+ if (s.kind !== "action")
85
85
  return !0;
86
- const w = /^add-(.+)$/.exec(String(d.id ?? ""));
87
- return w ? o.has(w[1]) : !0;
86
+ const A = /^add-(.+)$/.exec(String(s.id ?? ""));
87
+ return A ? o.has(A[1]) : !0;
88
88
  }) : n;
89
89
  if (!t || !c.resolveContextMenuItems)
90
- return i;
91
- const r = t.target?.kind === "widget" ? t.target.id : !t.target && t.widgetId ? t.widgetId : null, a = r ? e.queries.findWidgetById(r) : null;
90
+ return r;
91
+ const i = t.target?.kind === "widget" ? t.target.id : !t.target && t.widgetId ? t.widgetId : null, a = i ? e.queries.findWidgetById(i) : null;
92
92
  return c.resolveContextMenuItems({
93
93
  menu: t,
94
- items: i,
94
+ items: r,
95
95
  widgets: e.widgets(),
96
96
  widget: a,
97
97
  closeMenu: e.contextMenu.close
98
98
  });
99
- }), _ = v(() => {
99
+ }), T = m(() => {
100
100
  const t = e.contextMenu.state();
101
101
  if (!t) return;
102
- const n = E(), o = n.filter((r) => r.kind === "action").length, i = n.filter((r) => r.kind === "separator").length;
103
- return St({
102
+ const n = F(), o = n.filter((i) => i.kind === "action").length, r = n.filter((i) => i.kind === "separator").length;
103
+ return bt({
104
104
  clientX: t.clientX,
105
105
  clientY: t.clientY,
106
- menuWidth: xt,
107
- menuHeight: It(o, i)
106
+ menuWidth: Wt,
107
+ menuHeight: pt(o, r)
108
108
  });
109
- }), R = (t, n, o) => {
110
- const i = s(), r = i.findWidgetRoot(t), a = i.readWidgetId(r);
109
+ }), B = (t, n, o) => {
110
+ const r = d(), i = r.findWidgetRoot(t), a = r.readWidgetId(i);
111
111
  if (a) {
112
112
  if (e.queries.findStickyNoteById(a)) {
113
- m(i.createCanvasInputOwner(n === "focus" ? "background_focus" : "background_pointer"));
113
+ w(r.createCanvasInputOwner(n === "focus" ? "background_focus" : "background_pointer"));
114
114
  return;
115
115
  }
116
- m(i.createWidgetInputOwner(a, n));
116
+ w(r.createWidgetInputOwner(a, n));
117
117
  return;
118
118
  }
119
- const d = l();
120
- d && t instanceof Node && d.contains(t) && m(i.createCanvasInputOwner(o));
121
- }, O = (t = "selection_cleared") => {
122
- const n = s(), o = l();
123
- e.selection.clear(), m(n.createCanvasInputOwner(t)), queueMicrotask(() => {
119
+ const s = g();
120
+ s && t instanceof Node && s.contains(t) && w(r.createCanvasInputOwner(o));
121
+ }, _ = (t = "selection_cleared") => {
122
+ const n = d(), o = g();
123
+ e.selection.clear(), w(n.createCanvasInputOwner(t)), queueMicrotask(() => {
124
124
  if (!o || typeof document > "u") return;
125
- const i = document.activeElement;
126
- if (!(i instanceof HTMLElement) || !o.contains(i)) {
127
- q(o);
125
+ const r = document.activeElement;
126
+ if (!(r instanceof HTMLElement) || !o.contains(r)) {
127
+ N(o);
128
128
  return;
129
129
  }
130
- const r = n.findWidgetRoot(i);
131
- q(o), r && document.activeElement === i && i.isConnected && i.blur();
130
+ const i = n.findWidgetRoot(r);
131
+ N(o), i && document.activeElement === r && r.isConnected && r.blur();
132
132
  });
133
- }, A = () => {
134
- const t = l()?.querySelector('[data-floe-workbench-canvas-frame="true"]'), n = e.viewport(), o = t?.getBoundingClientRect(), i = o?.width ?? 0, r = o?.height ?? 0;
133
+ }, v = () => {
134
+ const t = g()?.querySelector('[data-floe-workbench-canvas-frame="true"]'), n = e.viewport(), o = t?.getBoundingClientRect(), r = o?.width ?? 0, i = o?.height ?? 0;
135
135
  return {
136
- worldX: i > 0 ? (i / 2 - n.x) / n.scale : 240,
137
- worldY: r > 0 ? (r / 2 - n.y) / n.scale : 180
136
+ worldX: r > 0 ? (r / 2 - n.x) / n.scale : 240,
137
+ worldY: i > 0 ? (i / 2 - n.y) / n.scale : 180
138
138
  };
139
139
  }, k = (t) => {
140
- const n = W(s), o = W(l);
140
+ const n = b(d), o = b(g);
141
141
  queueMicrotask(() => {
142
- n.focusWidgetElement(o, t), m(n.createWidgetInputOwner(t, "activation"));
142
+ n.focusWidgetElement(o, t), w(n.createWidgetInputOwner(t, "activation"));
143
143
  });
144
144
  };
145
- let h = null;
146
- const G = (t) => `${t.kind}:${String(t.id)}`, g = (t, n) => ({
145
+ let y = null;
146
+ const U = (t) => `${t.kind}:${String(t.id)}`, f = (t, n) => ({
147
147
  kind: t,
148
148
  id: n.id,
149
149
  x: n.x,
@@ -151,26 +151,26 @@ function oe(c) {
151
151
  width: n.width,
152
152
  height: n.height,
153
153
  createdAtUnixMs: n.created_at_unix_ms
154
- }), x = (t) => t.kind === "widget" ? e.widgets().filter((n) => n.type === t.id).map((n) => g("widget", n)) : t.id === "sticky-note" ? e.stickyNotes().map((n) => g("sticky_note", n)) : t.id === "text" ? e.annotations().map((n) => g("annotation", n)) : t.id === "background-region" ? e.backgroundLayers().map((n) => g("background_layer", n)) : [], Z = (t) => {
155
- const n = W(l);
154
+ }), S = (t) => t.kind === "widget" ? e.widgets().filter((n) => n.type === t.id).map((n) => f("widget", n)) : t.id === "sticky-note" ? e.stickyNotes().map((n) => f("sticky_note", n)) : t.id === "text" ? e.annotations().map((n) => f("annotation", n)) : t.id === "background-region" ? e.backgroundLayers().map((n) => f("background_layer", n)) : [], $ = (t) => {
155
+ const n = b(g);
156
156
  queueMicrotask(() => {
157
157
  if (!n) return;
158
158
  const o = t.kind === "sticky_note" ? "sticky" : t.kind === "annotation" ? "text" : t.kind === "background_layer" ? "region" : null;
159
159
  if (!o) return;
160
- const i = [...n.querySelectorAll("[data-wb-object-id]")].find((w) => w.getAttribute("data-wb-object-kind") === o && w.getAttribute("data-wb-object-id") === t.id);
161
- if (!(i instanceof HTMLElement)) return;
162
- const r = i.querySelector('[data-wb-part="content"]'), d = r instanceof HTMLElement && r.getAttribute("contenteditable") !== null && r.getAttribute("contenteditable") !== "false" ? r : i;
163
- d.hasAttribute("tabindex") || (d.tabIndex = -1);
160
+ const r = [...n.querySelectorAll("[data-wb-object-id]")].find((A) => A.getAttribute("data-wb-object-kind") === o && A.getAttribute("data-wb-object-id") === t.id);
161
+ if (!(r instanceof HTMLElement)) return;
162
+ const i = r.querySelector('[data-wb-part="content"]'), s = i instanceof HTMLElement && i.getAttribute("contenteditable") !== null && i.getAttribute("contenteditable") !== "false" ? i : r;
163
+ s.hasAttribute("tabindex") || (s.tabIndex = -1);
164
164
  try {
165
- d.focus({
165
+ s.focus({
166
166
  preventScroll: !0
167
167
  });
168
168
  } catch {
169
- d.focus();
169
+ s.focus();
170
170
  }
171
- m(s().createCanvasInputOwner("background_focus"));
171
+ w(d().createCanvasInputOwner("background_focus"));
172
172
  });
173
- }, J = (t) => {
173
+ }, j = (t) => {
174
174
  e.navigation.centerOnWidget({
175
175
  id: t.id,
176
176
  type: "dock-focus-target",
@@ -182,77 +182,77 @@ function oe(c) {
182
182
  z_index: 0,
183
183
  created_at_unix_ms: t.createdAtUnixMs
184
184
  });
185
- }, Q = (t) => {
185
+ }, K = (t) => {
186
186
  if (t.kind === "widget") {
187
187
  const n = e.queries.findWidgetById(t.id);
188
188
  if (!n) return;
189
- T(n.id), e.navigation.centerOnWidget(n), k(n.id);
189
+ D(n.id), e.navigation.centerOnWidget(n), k(n.id);
190
190
  return;
191
191
  }
192
- t.kind === "sticky_note" ? e.canvas.selectStickyNote(t.id) : t.kind === "annotation" ? e.canvas.selectAnnotation(t.id) : e.canvas.selectBackgroundLayer(t.id), J(t), Z(t);
193
- }, tt = (t) => {
194
- const n = A();
192
+ t.kind === "sticky_note" ? e.canvas.selectStickyNote(t.id) : t.kind === "annotation" ? e.canvas.selectAnnotation(t.id) : e.canvas.selectBackgroundLayer(t.id), j(t), $(t);
193
+ }, G = (t) => {
194
+ const n = v();
195
195
  if (t.kind === "widget") {
196
196
  const o = e.widgetActions.addWidgetAtWorldCenter(t.id, n.worldX, n.worldY);
197
- return o ? g("widget", o) : null;
197
+ return o ? f("widget", o) : null;
198
198
  }
199
- return t.id === "sticky-note" ? g("sticky_note", e.widgetActions.addStickyNoteAtCursor(n.worldX, n.worldY)) : t.id === "text" ? g("annotation", e.widgetActions.addTextAnnotationAtCursor(n.worldX, n.worldY)) : t.id === "background-region" ? g("background_layer", e.widgetActions.addBackgroundLayerAtCursor(n.worldX, n.worldY)) : null;
200
- }, et = (t) => {
201
- let n = x(t), o = S();
199
+ return t.id === "sticky-note" ? f("sticky_note", e.widgetActions.addStickyNoteAtCursor(n.worldX, n.worldY)) : t.id === "text" ? f("annotation", e.widgetActions.addTextAnnotationAtCursor(n.worldX, n.worldY)) : t.id === "background-region" ? f("background_layer", e.widgetActions.addBackgroundLayerAtCursor(n.worldX, n.worldY)) : null;
200
+ }, Z = (t) => {
201
+ let n = S(t), o = p();
202
202
  if (n.length === 0) {
203
- const r = tt(t);
204
- if (!r) {
205
- h = null;
203
+ const i = G(t);
204
+ if (!i) {
205
+ y = null;
206
206
  return;
207
207
  }
208
- n = x(t), o = {
209
- kind: r.kind,
210
- id: r.id
208
+ n = S(t), o = {
209
+ kind: i.kind,
210
+ id: i.id
211
211
  };
212
212
  }
213
- const i = Ft({
214
- dockItemKey: G(t),
213
+ const r = Mt({
214
+ dockItemKey: U(t),
215
215
  candidates: n,
216
216
  selectedObject: o,
217
- session: h
217
+ session: y
218
218
  });
219
- h = i.session, i.target && Q(i.target);
220
- }, nt = (t) => {
221
- const n = Tt(x(t)), o = S(), i = o ? Y(o) : null, r = i ? n.findIndex((a) => Y(a) === i) : -1;
219
+ y = r.session, r.target && K(r.target);
220
+ }, J = (t) => {
221
+ const n = Dt(S(t)), o = p(), r = o ? R(o) : null, i = r ? n.findIndex((a) => R(a) === r) : -1;
222
222
  return {
223
223
  count: n.length,
224
- currentIndex: r >= 0 ? r : null,
225
- active: r >= 0
224
+ currentIndex: i >= 0 ? i : null,
225
+ active: i >= 0
226
226
  };
227
- }, ot = (t) => {
228
- h?.dockItemKey !== `${t.kind}:${t.id}` && (h = null);
229
- }, rt = (t) => {
227
+ }, Q = (t) => {
228
+ y?.dockItemKey !== `${t.kind}:${t.id}` && (y = null);
229
+ }, tt = (t) => {
230
230
  const n = e.navigation.fitWidget(t);
231
231
  k(n.id);
232
- }, it = (t) => {
232
+ }, et = (t) => {
233
233
  const n = e.navigation.overviewWidget(t);
234
234
  k(n.id);
235
235
  };
236
- y(() => {
236
+ h(() => {
237
237
  c.onApiReady?.({
238
238
  ensureWidget: (t, n) => e.widgetActions.ensureWidget(t, n) ?? null,
239
239
  createWidget: (t, n) => {
240
- const o = A(), i = e.widgetActions.addWidgetAtWorldCenter(t, n?.worldX ?? o.worldX, n?.worldY ?? o.worldY) ?? null;
241
- return i && n?.centerViewport !== !1 && e.navigation.centerOnWidget(i), i;
240
+ const o = v(), r = e.widgetActions.addWidgetAtWorldCenter(t, n?.worldX ?? o.worldX, n?.worldY ?? o.worldY) ?? null;
241
+ return r && n?.centerViewport !== !1 && e.navigation.centerOnWidget(r), r;
242
242
  },
243
243
  createTextAnnotation: (t) => {
244
- const n = A();
244
+ const n = v();
245
245
  return e.widgetActions.addTextAnnotationAtCursor(t?.worldX ?? n.worldX, t?.worldY ?? n.worldY) ?? null;
246
246
  },
247
247
  createStickyNote: (t) => {
248
- const n = A();
248
+ const n = v();
249
249
  return e.widgetActions.addStickyNoteAtCursor(t?.worldX ?? n.worldX, t?.worldY ?? n.worldY) ?? null;
250
250
  },
251
251
  createBackgroundLayer: (t) => {
252
- const n = A();
252
+ const n = v();
253
253
  return e.widgetActions.addBackgroundLayerAtCursor(t?.worldX ?? n.worldX, t?.worldY ?? n.worldY) ?? null;
254
254
  },
255
- clearSelection: () => O("selection_cleared"),
255
+ clearSelection: () => _("selection_cleared"),
256
256
  focusWidget: (t, n) => {
257
257
  const o = e.navigation.focusWidget(t, n);
258
258
  return k(o.id), o;
@@ -271,12 +271,12 @@ function oe(c) {
271
271
  findAnnotationById: (t) => e.queries.findAnnotationById(t),
272
272
  findBackgroundLayerById: (t) => e.queries.findBackgroundLayerById(t),
273
273
  updateWidgetTitle: (t, n) => {
274
- const o = String(t ?? "").trim(), i = String(n ?? "").trim();
275
- !o || !i || c.setState((r) => ({
276
- ...r,
277
- widgets: r.widgets.map((a) => a.id === o && a.title !== i ? {
274
+ const o = String(t ?? "").trim(), r = String(n ?? "").trim();
275
+ !o || !r || c.setState((i) => ({
276
+ ...i,
277
+ widgets: i.widgets.map((a) => a.id === o && a.title !== r ? {
278
278
  ...a,
279
- title: i
279
+ title: r
280
280
  } : a)
281
281
  }));
282
282
  },
@@ -286,46 +286,46 @@ function oe(c) {
286
286
  deleteStickyNote: (t) => e.widgetActions.deleteStickyNote(t),
287
287
  deleteAnnotation: (t) => e.widgetActions.deleteAnnotation(t),
288
288
  deleteBackgroundLayer: (t) => e.widgetActions.deleteBackgroundLayer(t)
289
- }), p(() => {
289
+ }), W(() => {
290
290
  c.onApiReady?.(null);
291
291
  });
292
292
  });
293
- const N = () => c.lockShortcut === void 0 ? Nt : c.lockShortcut;
294
- y(() => {
293
+ const E = () => c.lockShortcut === void 0 ? Et : c.lockShortcut;
294
+ h(() => {
295
295
  if (typeof window > "u" || !e.contextMenu.state()) return;
296
- const t = pt({
296
+ const t = ht({
297
297
  ownerWindow: window,
298
298
  onDismiss: e.contextMenu.close
299
299
  });
300
- p(() => t());
301
- }), y(() => {
302
- const t = F();
300
+ W(() => t());
301
+ }), h(() => {
302
+ const t = M();
303
303
  if (t.kind !== "widget") return;
304
- e.widgets().some((o) => o.id === t.widgetId) || m(s().createCanvasInputOwner("widget_removed"));
305
- }), y(() => {
306
- const t = l();
304
+ e.widgets().some((o) => o.id === t.widgetId) || w(d().createCanvasInputOwner("widget_removed"));
305
+ }), h(() => {
306
+ const t = g();
307
307
  if (!t) return;
308
- const n = (i) => {
309
- R(i.target, "pointer", "background_pointer");
310
- }, o = (i) => {
311
- R(i.target, "focus", "background_focus");
308
+ const n = (r) => {
309
+ B(r.target, "pointer", "background_pointer");
310
+ }, o = (r) => {
311
+ B(r.target, "focus", "background_focus");
312
312
  };
313
- t.addEventListener("pointerdown", n, !0), t.addEventListener("focusin", o), p(() => {
313
+ t.addEventListener("pointerdown", n, !0), t.addEventListener("focusin", o), W(() => {
314
314
  t.removeEventListener("pointerdown", n, !0), t.removeEventListener("focusin", o);
315
315
  });
316
- }), y(() => {
316
+ }), h(() => {
317
317
  if (c.enableKeyboard === !1 || typeof document > "u") return;
318
- const t = N(), n = (o) => {
318
+ const t = E(), n = (o) => {
319
319
  if (!(o.defaultPrevented || o.isComposing)) {
320
320
  if (t !== null && o.key === t) {
321
321
  o.preventDefault(), e.lock.toggle();
322
322
  return;
323
323
  }
324
- if (!s().shouldBypassGlobalHotkeys({
325
- root: l(),
324
+ if (!d().shouldBypassGlobalHotkeys({
325
+ root: g(),
326
326
  target: o.target,
327
- owner: F(),
328
- interactiveSelector: s().interactiveSelector
327
+ owner: M(),
328
+ interactiveSelector: d().interactiveSelector
329
329
  }))
330
330
  switch (o.key) {
331
331
  case "ArrowUp":
@@ -347,52 +347,52 @@ function oe(c) {
347
347
  }
348
348
  }
349
349
  };
350
- document.addEventListener("keydown", n, !0), p(() => document.removeEventListener("keydown", n, !0));
350
+ document.addEventListener("keydown", n, !0), W(() => document.removeEventListener("keydown", n, !0));
351
351
  });
352
- const I = (t, n, o) => {
352
+ const x = (t, n, o) => {
353
353
  if (o?.worldPoint)
354
354
  return o.worldPoint;
355
355
  if (o?.canvasFrame)
356
- return P(o.canvasFrame, e.viewport(), {
356
+ return O(o.canvasFrame, e.viewport(), {
357
357
  clientX: t,
358
358
  clientY: n
359
359
  });
360
- const i = l()?.querySelector('[data-floe-workbench-canvas-frame="true"]');
361
- if (!i) return null;
362
- const r = i.getBoundingClientRect();
363
- return P(r, e.viewport(), {
360
+ const r = g()?.querySelector('[data-floe-workbench-canvas-frame="true"]');
361
+ if (!r) return null;
362
+ const i = r.getBoundingClientRect();
363
+ return O(i, e.viewport(), {
364
364
  clientX: t,
365
365
  clientY: n
366
366
  });
367
- }, ct = (t, n, o, i) => {
368
- const r = I(n, o, i);
369
- r && e.widgetActions.addWidgetAtWorldCenter(t, r.worldX, r.worldY);
370
- }, at = (t, n, o, i) => {
371
- const r = I(n, o, i);
372
- if (r) {
367
+ }, nt = (t, n, o, r) => {
368
+ const i = x(n, o, r);
369
+ i && e.widgetActions.addWidgetAtWorldCenter(t, i.worldX, i.worldY);
370
+ }, ot = (t, n, o, r) => {
371
+ const i = x(n, o, r);
372
+ if (i) {
373
373
  if (t === "sticky-note") {
374
- e.widgetActions.addStickyNoteAtCursor(r.worldX, r.worldY);
374
+ e.widgetActions.addStickyNoteAtCursor(i.worldX, i.worldY);
375
375
  return;
376
376
  }
377
377
  if (t === "text") {
378
- e.widgetActions.addTextAnnotationAtCursor(r.worldX, r.worldY);
378
+ e.widgetActions.addTextAnnotationAtCursor(i.worldX, i.worldY);
379
379
  return;
380
380
  }
381
- t === "background-region" && e.widgetActions.addBackgroundLayerAtCursor(r.worldX, r.worldY);
381
+ t === "background-region" && e.widgetActions.addBackgroundLayerAtCursor(i.worldX, i.worldY);
382
382
  }
383
- }, dt = (t) => {
384
- t.button === 0 && (s().findWidgetRoot(t.target) || O("background_pointer"));
385
- }, st = v(() => {
386
- const t = H();
383
+ }, rt = (t) => {
384
+ t.button === 0 && (d().findWidgetRoot(t.target) || _("background_pointer"));
385
+ }, it = m(() => {
386
+ const t = z();
387
387
  if (!t) return null;
388
- const n = I(t.clientX, t.clientY, t);
389
- return n ? t.kind === "widget" ? Mt({
388
+ const n = x(t.clientX, t.clientY, t);
389
+ return n ? t.kind === "widget" ? St({
390
390
  type: t.id,
391
391
  widgetDefinitions: e.widgetDefinitions(),
392
392
  worldX: n.worldX,
393
393
  worldY: n.worldY,
394
394
  dropAllowed: t.dropAllowed
395
- }) : Dt({
395
+ }) : xt({
396
396
  tool: t.id,
397
397
  label: t.label,
398
398
  worldX: n.worldX,
@@ -401,296 +401,298 @@ function oe(c) {
401
401
  textDefaults: c.textAnnotationDefaults,
402
402
  backgroundDefaults: c.backgroundLayerDefaults
403
403
  }) : null;
404
- }), M = () => {
405
- const t = document.activeElement;
406
- if (!(t instanceof HTMLElement) || !t.isContentEditable || !l()?.contains(t)) return;
407
- const n = t.closest("[data-wb-object-id]")?.getAttribute("data-wb-object-id"), o = e.stickyNotes().find((D) => D.id === n), i = e.annotations().find((D) => D.id === n), r = o ?? i;
408
- if (!r) return;
409
- const a = e.canvasFrameSize(), d = e.viewport(), w = d.x + r.x * d.scale, X = d.y + r.y * d.scale;
410
- if (d.scale >= 0.85 && w >= 12 && w + r.width * d.scale <= a.width - 12 && X >= 12 && X + r.height * d.scale <= a.height - 12) return;
411
- const b = Math.min(1, Math.max(0.85, (a.width - 40) / r.width));
412
- e.canvas.commitViewport({
413
- x: (a.width - r.width * b) / 2 - r.x * b,
414
- y: Math.max(100, (a.height - r.height * b) / 2) - r.y * b,
415
- scale: b
416
- });
417
- };
418
- return y(() => {
419
- const t = e.canvasFrameSize();
420
- t.width > 0 && t.height > 0 && W(M);
421
- }), f(kt.Provider, {
422
- value: () => c.compositionMessages,
423
- get children() {
424
- var t = Ot(), n = t.firstChild;
425
- return t.$$keyup = (o) => {
426
- o.key === "Tab" && M();
427
- }, t.$$click = M, ut(j, t), lt(t, gt({
428
- get class() {
429
- return `workbench-surface${c.class ? ` ${c.class}` : ""}`;
404
+ });
405
+ return l(gt.Provider, {
406
+ value: {
407
+ duplicate: (t) => {
408
+ if (t.kind === "sticky_note") {
409
+ const n = e.queries.findStickyNoteById(t.id);
410
+ n && e.widgetActions.duplicateStickyNoteFrom(n);
430
411
  }
431
- }, () => ({
432
- [s().surfaceRootAttr]: "true",
433
- [s().dialogSurfaceHostAttr]: "true",
434
- [_t]: "true",
435
- [Et]: "true"
436
- }), {
437
- get "data-workbench-theme"() {
438
- return e.theme();
439
- },
440
- get "data-workbench-mode"() {
441
- return e.mode();
442
- },
443
- tabIndex: -1
444
- }), !1, !0), C(n, f(At, {
445
- get widgetDefinitions() {
446
- return e.widgetDefinitions();
447
- },
448
- get widgets() {
449
- return e.widgets();
450
- },
451
- get stickyNotes() {
452
- return e.stickyNotes();
453
- },
454
- get annotations() {
455
- return e.annotations();
456
- },
457
- get backgroundLayers() {
458
- return e.backgroundLayers();
459
- },
460
- get placementPreview() {
461
- return st();
462
- },
463
- get viewport() {
464
- return e.viewport();
465
- },
466
- get canvasFrameSize() {
467
- return e.canvasFrameSize();
468
- },
469
- get selectedWidgetId() {
470
- return V();
471
- },
472
- get selectedObject() {
473
- return S();
474
- },
475
- get mode() {
476
- return e.mode();
477
- },
478
- get visualFrontOwnerId() {
479
- return e.visualFrontOwnerId();
480
- },
481
- get locked() {
482
- return e.locked();
483
- },
484
- get filters() {
485
- return e.filters();
486
- },
487
- get interactionAdapter() {
488
- return s();
489
- },
490
- get setCanvasFrameRef() {
491
- return e.setCanvasFrameRef;
492
- },
493
- get onViewportCommit() {
494
- return e.canvas.commitViewport;
495
- },
496
- get onViewportInteractionStart() {
497
- return e.canvas.cancelViewportNavigation;
498
- },
499
- get onCanvasContextMenu() {
500
- return e.canvas.openCanvasContextMenu;
501
- },
502
- onCanvasPointerDown: dt,
503
- onSelectWidget: $,
504
- onActivateWidget: T,
505
- get onWidgetContextMenu() {
506
- return e.canvas.openWidgetContextMenu;
507
- },
508
- get onClaimVisualFrontOwner() {
509
- return e.canvas.claimVisualFrontOwner;
510
- },
511
- get onCommitFront() {
512
- return e.canvas.commitFront;
513
- },
514
- get onCommitMove() {
515
- return e.canvas.commitMove;
516
- },
517
- get onCommitResize() {
518
- return e.canvas.commitResize;
519
- },
520
- get onSelectStickyNote() {
521
- return e.canvas.selectStickyNote;
522
- },
523
- get onStickyNoteContextMenu() {
524
- return e.canvas.openStickyNoteContextMenu;
525
- },
526
- get onClaimStickyVisualFrontOwner() {
527
- return e.canvas.claimVisualFrontOwner;
528
- },
529
- get onCommitStickyFront() {
530
- return e.canvas.commitStickyFront;
531
- },
532
- get onCommitStickyMove() {
533
- return e.canvas.commitStickyMove;
534
- },
535
- get onCommitStickyResize() {
536
- return e.canvas.commitStickyResize;
537
- },
538
- get onUpdateStickyNote() {
539
- return e.widgetActions.updateStickyNote;
540
- },
541
- get onDeleteStickyNote() {
542
- return e.widgetActions.deleteStickyNote;
543
- },
544
- get onSelectAnnotation() {
545
- return e.canvas.selectAnnotation;
546
- },
547
- get onAnnotationContextMenu() {
548
- return e.canvas.openAnnotationContextMenu;
549
- },
550
- get onCommitAnnotationMove() {
551
- return e.canvas.commitAnnotationMove;
552
- },
553
- get onCommitAnnotationResize() {
554
- return e.canvas.commitAnnotationResize;
555
- },
556
- get onUpdateTextAnnotation() {
557
- return e.widgetActions.updateTextAnnotation;
558
- },
559
- get onDeleteAnnotation() {
560
- return e.widgetActions.deleteAnnotation;
561
- },
562
- get onSelectBackgroundLayer() {
563
- return e.canvas.selectBackgroundLayer;
564
- },
565
- get onBackgroundLayerContextMenu() {
566
- return e.canvas.openBackgroundLayerContextMenu;
567
- },
568
- get onCommitBackgroundMove() {
569
- return e.canvas.commitBackgroundMove;
570
- },
571
- get onCommitBackgroundResize() {
572
- return e.canvas.commitBackgroundResize;
573
- },
574
- get onUpdateBackgroundLayer() {
575
- return e.widgetActions.updateBackgroundLayer;
576
- },
577
- get onDeleteBackgroundLayer() {
578
- return e.widgetActions.deleteBackgroundLayer;
579
- },
580
- onRequestOverview: it,
581
- onRequestFit: rt,
582
- get onRequestDelete() {
583
- return c.onRequestDelete ?? e.widgetActions.deleteWidget;
584
- },
585
- get onLayoutInteractionStart() {
586
- return c.onLayoutInteractionStart;
587
- },
588
- get onLayoutInteractionEnd() {
589
- return c.onLayoutInteractionEnd;
412
+ if (t.kind === "annotation") {
413
+ const n = e.annotations().find((o) => o.id === t.id);
414
+ n && e.widgetActions.duplicateTextAnnotationFrom(n);
590
415
  }
591
- })), C(t, f(Wt, {
592
- get locked() {
593
- return e.locked();
594
- },
595
- get onToggle() {
596
- return e.lock.toggle;
597
- },
598
- get shortcutLabel() {
599
- return N() ?? void 0;
416
+ if (t.kind === "background_layer") {
417
+ const n = e.backgroundLayers().find((o) => o.id === t.id);
418
+ n && e.widgetActions.duplicateBackgroundLayerFrom(n);
600
419
  }
601
- }), null), C(t, f(bt, {
602
- get widgetDefinitions() {
603
- return K();
604
- },
605
- get widgets() {
606
- return e.widgets();
607
- },
608
- get filters() {
609
- return e.filters();
610
- },
611
- get mode() {
612
- return e.mode();
613
- },
614
- get activationMode() {
615
- return c.dockItemActivationMode;
616
- },
617
- get viewport() {
618
- return e.viewport();
619
- },
620
- get onSoloFilter() {
621
- return e.filter.solo;
622
- },
623
- onFocusCycleItem: et,
624
- resolveItemPresentation: nt,
625
- onDockActivation: ot,
626
- get onSelectMode() {
627
- return e.modes.setMode;
628
- },
629
- get onViewportCommit() {
630
- return e.canvas.commitViewport;
631
- },
632
- onViewportInteractionStart: () => e.canvas.cancelViewportNavigation(),
633
- onCreateAt: ct,
634
- onCreateToolAt: at,
635
- get onItemClick() {
636
- return c.onDockItemClick;
637
- },
638
- get modeIcons() {
639
- return c.dockModeIcons;
640
- },
641
- get dockActions() {
642
- return c.dockActions;
643
- },
644
- get dockItems() {
645
- return c.dockItems;
646
- },
647
- get registerExternalDockDragController() {
648
- return c.registerExternalDockDragController;
649
- },
650
- onDragPreviewChange: U
651
- }), null), C(t, f(Ct, {
652
- get scaleLabel() {
653
- return e.scaleLabel();
654
- },
655
- get onZoomOut() {
656
- return e.hud.zoomOut;
657
- },
658
- get onZoomIn() {
659
- return e.hud.zoomIn;
660
- },
661
- get activeTheme() {
662
- return e.theme();
663
- },
664
- onSelectTheme: (o) => e.appearance.setTheme(o)
665
- }), null), C(t, f(vt, {
666
- get when() {
667
- return e.contextMenu.state();
668
- },
420
+ }
421
+ },
422
+ get children() {
423
+ return l(ft.Provider, {
424
+ value: () => c.compositionMessages,
669
425
  get children() {
670
- return f(wt, {
426
+ var t = _t(), n = t.firstChild;
427
+ return ct(Y, t), at(t, dt({
428
+ get class() {
429
+ return `workbench-surface${c.class ? ` ${c.class}` : ""}`;
430
+ }
431
+ }, () => ({
432
+ [d().surfaceRootAttr]: "true",
433
+ [d().dialogSurfaceHostAttr]: "true",
434
+ [Tt]: "true",
435
+ [Ft]: "true"
436
+ }), {
437
+ get "data-workbench-theme"() {
438
+ return e.theme();
439
+ },
440
+ get "data-workbench-mode"() {
441
+ return e.mode();
442
+ },
443
+ tabIndex: -1
444
+ }), !1, !0), C(n, l(mt, {
445
+ get widgetDefinitions() {
446
+ return e.widgetDefinitions();
447
+ },
448
+ get widgets() {
449
+ return e.widgets();
450
+ },
451
+ get stickyNotes() {
452
+ return e.stickyNotes();
453
+ },
454
+ get annotations() {
455
+ return e.annotations();
456
+ },
457
+ get backgroundLayers() {
458
+ return e.backgroundLayers();
459
+ },
460
+ get placementPreview() {
461
+ return it();
462
+ },
463
+ get viewport() {
464
+ return e.viewport();
465
+ },
466
+ get canvasFrameSize() {
467
+ return e.canvasFrameSize();
468
+ },
469
+ get selectedWidgetId() {
470
+ return X();
471
+ },
472
+ get selectedObject() {
473
+ return p();
474
+ },
475
+ get mode() {
476
+ return e.mode();
477
+ },
478
+ get visualFrontOwnerId() {
479
+ return e.visualFrontOwnerId();
480
+ },
481
+ get locked() {
482
+ return e.locked();
483
+ },
484
+ get filters() {
485
+ return e.filters();
486
+ },
487
+ get interactionAdapter() {
488
+ return d();
489
+ },
490
+ get setCanvasFrameRef() {
491
+ return e.setCanvasFrameRef;
492
+ },
493
+ get onViewportCommit() {
494
+ return e.canvas.commitViewport;
495
+ },
496
+ get onViewportInteractionStart() {
497
+ return e.canvas.cancelViewportNavigation;
498
+ },
499
+ get onCanvasContextMenu() {
500
+ return e.canvas.openCanvasContextMenu;
501
+ },
502
+ onCanvasPointerDown: rt,
503
+ onSelectWidget: q,
504
+ onActivateWidget: D,
505
+ get onWidgetContextMenu() {
506
+ return e.canvas.openWidgetContextMenu;
507
+ },
508
+ get onClaimVisualFrontOwner() {
509
+ return e.canvas.claimVisualFrontOwner;
510
+ },
511
+ get onCommitFront() {
512
+ return e.canvas.commitFront;
513
+ },
514
+ get onCommitMove() {
515
+ return e.canvas.commitMove;
516
+ },
517
+ get onCommitResize() {
518
+ return e.canvas.commitResize;
519
+ },
520
+ get onSelectStickyNote() {
521
+ return e.canvas.selectStickyNote;
522
+ },
523
+ get onStickyNoteContextMenu() {
524
+ return e.canvas.openStickyNoteContextMenu;
525
+ },
526
+ get onClaimStickyVisualFrontOwner() {
527
+ return e.canvas.claimVisualFrontOwner;
528
+ },
529
+ get onCommitStickyFront() {
530
+ return e.canvas.commitStickyFront;
531
+ },
532
+ get onCommitStickyMove() {
533
+ return e.canvas.commitStickyMove;
534
+ },
535
+ get onCommitStickyResize() {
536
+ return e.canvas.commitStickyResize;
537
+ },
538
+ get onUpdateStickyNote() {
539
+ return e.widgetActions.updateStickyNote;
540
+ },
541
+ get onDeleteStickyNote() {
542
+ return e.widgetActions.deleteStickyNote;
543
+ },
544
+ get onSelectAnnotation() {
545
+ return e.canvas.selectAnnotation;
546
+ },
547
+ get onAnnotationContextMenu() {
548
+ return e.canvas.openAnnotationContextMenu;
549
+ },
550
+ get onCommitAnnotationMove() {
551
+ return e.canvas.commitAnnotationMove;
552
+ },
553
+ get onCommitAnnotationResize() {
554
+ return e.canvas.commitAnnotationResize;
555
+ },
556
+ get onUpdateTextAnnotation() {
557
+ return e.widgetActions.updateTextAnnotation;
558
+ },
559
+ get onDeleteAnnotation() {
560
+ return e.widgetActions.deleteAnnotation;
561
+ },
562
+ get onSelectBackgroundLayer() {
563
+ return e.canvas.selectBackgroundLayer;
564
+ },
565
+ get onBackgroundLayerContextMenu() {
566
+ return e.canvas.openBackgroundLayerContextMenu;
567
+ },
568
+ get onCommitBackgroundMove() {
569
+ return e.canvas.commitBackgroundMove;
570
+ },
571
+ get onCommitBackgroundResize() {
572
+ return e.canvas.commitBackgroundResize;
573
+ },
574
+ get onUpdateBackgroundLayer() {
575
+ return e.widgetActions.updateBackgroundLayer;
576
+ },
577
+ get onDeleteBackgroundLayer() {
578
+ return e.widgetActions.deleteBackgroundLayer;
579
+ },
580
+ onRequestOverview: et,
581
+ onRequestFit: tt,
582
+ get onRequestDelete() {
583
+ return c.onRequestDelete ?? e.widgetActions.deleteWidget;
584
+ },
585
+ get onLayoutInteractionStart() {
586
+ return c.onLayoutInteractionStart;
587
+ },
588
+ get onLayoutInteractionEnd() {
589
+ return c.onLayoutInteractionEnd;
590
+ }
591
+ })), C(t, l(Ct, {
592
+ get locked() {
593
+ return e.locked();
594
+ },
595
+ get onToggle() {
596
+ return e.lock.toggle;
597
+ },
598
+ get shortcutLabel() {
599
+ return E() ?? void 0;
600
+ }
601
+ }), null), C(t, l(yt, {
602
+ get widgetDefinitions() {
603
+ return H();
604
+ },
605
+ get widgets() {
606
+ return e.widgets();
607
+ },
608
+ get filters() {
609
+ return e.filters();
610
+ },
611
+ get mode() {
612
+ return e.mode();
613
+ },
614
+ get activationMode() {
615
+ return c.dockItemActivationMode;
616
+ },
617
+ get viewport() {
618
+ return e.viewport();
619
+ },
620
+ get onSoloFilter() {
621
+ return e.filter.solo;
622
+ },
623
+ onFocusCycleItem: Z,
624
+ resolveItemPresentation: J,
625
+ onDockActivation: Q,
626
+ get onSelectMode() {
627
+ return e.modes.setMode;
628
+ },
629
+ get onViewportCommit() {
630
+ return e.canvas.commitViewport;
631
+ },
632
+ onViewportInteractionStart: () => e.canvas.cancelViewportNavigation(),
633
+ onCreateAt: nt,
634
+ onCreateToolAt: ot,
635
+ get onItemClick() {
636
+ return c.onDockItemClick;
637
+ },
638
+ get modeIcons() {
639
+ return c.dockModeIcons;
640
+ },
641
+ get dockActions() {
642
+ return c.dockActions;
643
+ },
644
+ get dockItems() {
645
+ return c.dockItems;
646
+ },
647
+ get registerExternalDockDragController() {
648
+ return c.registerExternalDockDragController;
649
+ },
650
+ onDragPreviewChange: V
651
+ }), null), C(t, l(At, {
652
+ get scaleLabel() {
653
+ return e.scaleLabel();
654
+ },
655
+ get onZoomOut() {
656
+ return e.hud.zoomOut;
657
+ },
658
+ get onZoomIn() {
659
+ return e.hud.zoomIn;
660
+ },
661
+ get activeTheme() {
662
+ return e.theme();
663
+ },
664
+ onSelectTheme: (o) => e.appearance.setTheme(o)
665
+ }), null), C(t, l(wt, {
666
+ get when() {
667
+ return e.contextMenu.state();
668
+ },
671
669
  get children() {
672
- return [(() => {
673
- var o = Rt();
674
- return ft(o, "contextmenu", e.contextMenu.retarget, !0), o;
675
- })(), f(ht, {
676
- get x() {
677
- return _()?.left ?? 0;
678
- },
679
- get y() {
680
- return _()?.top ?? 0;
681
- },
682
- get items() {
683
- return E();
670
+ return l(st, {
671
+ get children() {
672
+ return [(() => {
673
+ var o = Bt();
674
+ return ut(o, "contextmenu", e.contextMenu.retarget, !0), o;
675
+ })(), l(vt, {
676
+ get x() {
677
+ return T()?.left ?? 0;
678
+ },
679
+ get y() {
680
+ return T()?.top ?? 0;
681
+ },
682
+ get items() {
683
+ return F();
684
+ }
685
+ })];
684
686
  }
685
- })];
687
+ });
686
688
  }
687
- });
689
+ }), null), t;
688
690
  }
689
- }), null), t;
691
+ });
690
692
  }
691
693
  });
692
694
  }
693
- mt(["click", "keyup", "contextmenu"]);
695
+ lt(["contextmenu"]);
694
696
  export {
695
- oe as WorkbenchSurface
697
+ te as WorkbenchSurface
696
698
  };