@floegence/floe-webapp-core 0.36.13 → 0.36.15

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,11 +1,11 @@
1
- import { use as v, insert as m, createComponent as i, effect as W, template as f } from "solid-js/web";
1
+ import { use as v, insert as m, createComponent as i, effect as W, template as w } from "solid-js/web";
2
2
  import { createMemo as o, Show as h, For as F } from "solid-js";
3
3
  import { WorkbenchCanvasField as y } from "./WorkbenchCanvasField.js";
4
- import { WorkbenchWidget as R } from "./WorkbenchWidget.js";
5
- import { createWorkbenchRenderLayerMap as I, resolveWorkbenchWidgetRenderMode as l } from "./workbenchHelpers.js";
4
+ import { WorkbenchWidget as I } from "./WorkbenchWidget.js";
5
+ import { createWorkbenchRenderLayerMap as R, resolveWorkbenchWidgetRenderMode as l } from "./workbenchHelpers.js";
6
6
  import { getWidgetEntry as c } from "./widgets/widgetRegistry.js";
7
7
  import { InfiniteCanvas as S } from "../ui/InfiniteCanvas.js";
8
- var M = /* @__PURE__ */ f("<div class=workbench-canvas>"), k = /* @__PURE__ */ f("<div class=workbench-canvas__projected-layer>");
8
+ var M = /* @__PURE__ */ w("<div class=workbench-canvas>"), k = /* @__PURE__ */ w("<div class=workbench-canvas__projected-layer>");
9
9
  function b(e) {
10
10
  const n = o((g) => {
11
11
  const d = e.widgetById().get(e.widgetId);
@@ -13,7 +13,7 @@ function b(e) {
13
13
  if (g) return g;
14
14
  throw new Error(`Workbench widget ${e.widgetId} is missing from the projected render map.`);
15
15
  }), a = o(() => c(n().type, e.widgetDefinitions));
16
- return i(R, {
16
+ return i(I, {
17
17
  get definition() {
18
18
  return a();
19
19
  },
@@ -91,13 +91,13 @@ function b(e) {
91
91
  });
92
92
  }
93
93
  function q(e) {
94
- const n = o(() => new Map(e.widgets.map((t) => [t.id, t]))), a = o(() => I(e.widgets)), g = o(() => e.widgets.filter((t) => {
94
+ const n = o(() => new Map(e.widgets.map((t) => [t.id, t]))), a = o(() => R(e.widgets)), g = o(() => e.widgets.filter((t) => {
95
95
  const r = c(t.type, e.widgetDefinitions);
96
96
  return l(r) === "canvas_scaled";
97
97
  })), d = o(() => e.widgets.filter((t) => {
98
98
  const r = c(t.type, e.widgetDefinitions);
99
99
  return l(r) === "projected_surface";
100
- }).map((t) => t.id)), w = () => e.canvasFrameSize.width > 0 && e.canvasFrameSize.height > 0;
100
+ }).map((t) => t.id)), f = () => e.canvasFrameSize.width > 0 && e.canvasFrameSize.height > 0;
101
101
  return (() => {
102
102
  var t = M(), r = e.setCanvasFrameRef;
103
103
  return typeof r == "function" ? v(r, t) : e.setCanvasFrameRef = t, m(t, i(S, {
@@ -109,6 +109,9 @@ function q(e) {
109
109
  get onViewportChange() {
110
110
  return e.onViewportCommit;
111
111
  },
112
+ get onViewportInteractionStart() {
113
+ return e.onViewportInteractionStart;
114
+ },
112
115
  get onCanvasContextMenu() {
113
116
  return e.onCanvasContextMenu;
114
117
  },
@@ -179,7 +182,7 @@ function q(e) {
179
182
  },
180
183
  projectedViewport: s,
181
184
  get surfaceReady() {
182
- return w();
185
+ return f();
183
186
  }
184
187
  })
185
188
  })), u;
@@ -1,53 +1,54 @@
1
- import { insert as c, createComponent as a, Portal as h, addEventListener as p, effect as k, className as W, template as g, delegateEvents as b } from "solid-js/web";
2
- import { createEffect as s, onCleanup as u, Show as C } from "solid-js";
3
- import { isTypingElement as y } from "../../utils/dom.js";
4
- import { WorkbenchCanvas as A } from "./WorkbenchCanvas.js";
5
- import { WorkbenchContextMenu as D } from "./WorkbenchContextMenu.js";
6
- import { WorkbenchFilterBar as x } from "./WorkbenchFilterBar.js";
7
- import { WorkbenchHud as S } from "./WorkbenchHud.js";
8
- import { WorkbenchLockButton as M } from "./WorkbenchLockButton.js";
9
- import { installWorkbenchContextMenuDismissListeners as F } from "./workbenchContextMenuDismiss.js";
10
- import { useWorkbenchModel as L } from "./useWorkbenchModel.js";
11
- var R = /* @__PURE__ */ g("<div class=workbench-menu-backdrop data-floe-workbench-boundary=true>"), E = /* @__PURE__ */ g("<div><div class=workbench-surface__body data-floe-workbench-canvas-frame=true>");
12
- const _ = "F1";
13
- function P(i) {
14
- const e = L({
15
- state: () => i.state(),
16
- setState: (t) => i.setState(t),
17
- widgetDefinitions: () => i.widgetDefinitions,
1
+ import { insert as c, createComponent as a, Portal as f, addEventListener as w, effect as v, className as h, template as d, delegateEvents as p } from "solid-js/web";
2
+ import { createEffect as s, onCleanup as l, Show as k } from "solid-js";
3
+ import { isTypingElement as W } from "../../utils/dom.js";
4
+ import { clientToCanvasWorld as C } from "../ui/canvasGeometry.js";
5
+ import { WorkbenchCanvas as b } from "./WorkbenchCanvas.js";
6
+ import { WorkbenchContextMenu as A } from "./WorkbenchContextMenu.js";
7
+ import { WorkbenchFilterBar as y } from "./WorkbenchFilterBar.js";
8
+ import { WorkbenchHud as D } from "./WorkbenchHud.js";
9
+ import { WorkbenchLockButton as S } from "./WorkbenchLockButton.js";
10
+ import { installWorkbenchContextMenuDismissListeners as x } from "./workbenchContextMenuDismiss.js";
11
+ import { useWorkbenchModel as M } from "./useWorkbenchModel.js";
12
+ var F = /* @__PURE__ */ d("<div class=workbench-menu-backdrop data-floe-workbench-boundary=true>"), L = /* @__PURE__ */ d("<div><div class=workbench-surface__body data-floe-workbench-canvas-frame=true>");
13
+ const R = "F1";
14
+ function U(o) {
15
+ const e = M({
16
+ state: () => o.state(),
17
+ setState: (t) => o.setState(t),
18
+ widgetDefinitions: () => o.widgetDefinitions,
18
19
  onClose: () => {
19
20
  }
20
21
  });
21
22
  s(() => {
22
- i.onApiReady?.({
23
+ o.onApiReady?.({
23
24
  ensureWidget: (t, r) => e.widgetActions.ensureWidget(t, r) ?? null,
24
25
  clearSelection: () => e.selection.clear(),
25
26
  focusWidget: (t, r) => e.navigation.focusWidget(t, r),
26
27
  fitWidget: (t) => e.navigation.fitWidget(t),
27
28
  overviewWidget: (t) => e.navigation.overviewWidget(t),
28
29
  findWidgetByType: (t) => e.queries.findWidgetByType(t)
29
- }), u(() => {
30
- i.onApiReady?.(null);
30
+ }), l(() => {
31
+ o.onApiReady?.(null);
31
32
  });
32
33
  });
33
- const d = () => i.lockShortcut === void 0 ? _ : i.lockShortcut;
34
+ const u = () => o.lockShortcut === void 0 ? R : o.lockShortcut;
34
35
  s(() => {
35
36
  if (typeof window > "u" || !e.contextMenu.state()) return;
36
- const t = F({
37
+ const t = x({
37
38
  ownerWindow: window,
38
39
  onDismiss: e.contextMenu.close
39
40
  });
40
- u(() => t());
41
+ l(() => t());
41
42
  }), s(() => {
42
- if (i.enableKeyboard === !1 || typeof document > "u") return;
43
- const t = d(), r = (n) => {
43
+ if (o.enableKeyboard === !1 || typeof document > "u") return;
44
+ const t = u(), r = (n) => {
44
45
  if (n.defaultPrevented || n.isComposing) return;
45
46
  if (t !== null && n.key === t) {
46
47
  n.preventDefault(), e.lock.toggle();
47
48
  return;
48
49
  }
49
- const o = n.target;
50
- if (!(o instanceof Element && y(o)))
50
+ const i = n.target;
51
+ if (!(i instanceof Element && W(i)))
51
52
  switch (n.key) {
52
53
  case "ArrowUp":
53
54
  n.preventDefault(), e.navigation.handleArrowNavigation("up");
@@ -67,26 +68,23 @@ function P(i) {
67
68
  break;
68
69
  }
69
70
  };
70
- document.addEventListener("keydown", r, !0), u(() => document.removeEventListener("keydown", r, !0));
71
+ document.addEventListener("keydown", r, !0), l(() => document.removeEventListener("keydown", r, !0));
71
72
  });
72
- const m = (t, r) => {
73
+ const g = (t, r) => {
73
74
  const n = document.querySelector('[data-floe-workbench-canvas-frame="true"]');
74
75
  if (!n) return null;
75
- const o = n.getBoundingClientRect();
76
- if (t < o.left || t > o.right || r < o.top || r > o.bottom)
77
- return null;
78
- const w = t - o.left, v = r - o.top, l = e.viewport();
79
- return {
80
- worldX: (w - l.x) / l.scale,
81
- worldY: (v - l.y) / l.scale
82
- };
83
- }, f = (t, r, n) => {
84
- const o = m(r, n);
85
- o && e.widgetActions.addWidgetAtCursor(t, o.worldX, o.worldY);
76
+ const i = n.getBoundingClientRect();
77
+ return C(i, e.viewport(), {
78
+ clientX: t,
79
+ clientY: r
80
+ });
81
+ }, m = (t, r, n) => {
82
+ const i = g(r, n);
83
+ i && e.widgetActions.addWidgetAtCursor(t, i.worldX, i.worldY);
86
84
  };
87
85
  return (() => {
88
- var t = E(), r = t.firstChild;
89
- return c(r, a(A, {
86
+ var t = L(), r = t.firstChild;
87
+ return c(r, a(b, {
90
88
  get widgetDefinitions() {
91
89
  return e.widgetDefinitions();
92
90
  },
@@ -117,6 +115,9 @@ function P(i) {
117
115
  get onViewportCommit() {
118
116
  return e.canvas.commitViewport;
119
117
  },
118
+ get onViewportInteractionStart() {
119
+ return e.canvas.cancelViewportNavigation;
120
+ },
120
121
  get onCanvasContextMenu() {
121
122
  return e.canvas.openCanvasContextMenu;
122
123
  },
@@ -141,7 +142,7 @@ function P(i) {
141
142
  get onRequestDelete() {
142
143
  return e.widgetActions.deleteWidget;
143
144
  }
144
- })), c(t, a(M, {
145
+ })), c(t, a(S, {
145
146
  get locked() {
146
147
  return e.locked();
147
148
  },
@@ -149,9 +150,9 @@ function P(i) {
149
150
  return e.lock.toggle;
150
151
  },
151
152
  get shortcutLabel() {
152
- return d() ?? void 0;
153
+ return u() ?? void 0;
153
154
  }
154
- }), null), c(t, a(x, {
155
+ }), null), c(t, a(y, {
155
156
  get widgetDefinitions() {
156
157
  return e.widgetDefinitions();
157
158
  },
@@ -167,8 +168,8 @@ function P(i) {
167
168
  get onShowAll() {
168
169
  return e.filter.showAll;
169
170
  },
170
- onCreateAt: f
171
- }), null), c(t, a(S, {
171
+ onCreateAt: m
172
+ }), null), c(t, a(D, {
172
173
  get scaleLabel() {
173
174
  return e.scaleLabel();
174
175
  },
@@ -178,17 +179,17 @@ function P(i) {
178
179
  get onZoomIn() {
179
180
  return e.hud.zoomIn;
180
181
  }
181
- }), null), c(t, a(C, {
182
+ }), null), c(t, a(k, {
182
183
  get when() {
183
184
  return e.contextMenu.state();
184
185
  },
185
186
  get children() {
186
- return a(h, {
187
+ return a(f, {
187
188
  get children() {
188
189
  return [(() => {
189
- var n = R();
190
- return p(n, "contextmenu", e.contextMenu.retarget, !0), n;
191
- })(), a(D, {
190
+ var n = F();
191
+ return w(n, "contextmenu", e.contextMenu.retarget, !0), n;
192
+ })(), a(A, {
192
193
  get x() {
193
194
  return e.contextMenu.position()?.left ?? 0;
194
195
  },
@@ -202,10 +203,10 @@ function P(i) {
202
203
  }
203
204
  });
204
205
  }
205
- }), null), k(() => W(t, `workbench-surface${i.class ? ` ${i.class}` : ""}`)), t;
206
+ }), null), v(() => h(t, `workbench-surface${o.class ? ` ${o.class}` : ""}`)), t;
206
207
  })();
207
208
  }
208
- b(["contextmenu"]);
209
+ p(["contextmenu"]);
209
210
  export {
210
- P as WorkbenchSurface
211
+ U as WorkbenchSurface
211
212
  };
@@ -48,6 +48,7 @@ export declare function useWorkbenchModel(options: UseWorkbenchModelOptions): {
48
48
  height: number;
49
49
  }) => void;
50
50
  commitViewport: (next: WorkbenchViewport) => void;
51
+ cancelViewportNavigation: () => void;
51
52
  };
52
53
  hud: {
53
54
  zoomIn: () => void;
@@ -1,23 +1,23 @@
1
- import { createSignal as V, createMemo as d, onCleanup as xt } from "solid-js";
2
- import { ArrowUp as St, Copy as Ct, Trash as pt } from "../icons/index.js";
3
- import { getTopZIndex as kt, createContextMenuPosition as Ft, createWorkbenchId as bt, createWorkbenchViewportCenteredOnWidget as L, findNearestWidget as It, clampScale as Mt, WORKBENCH_CANVAS_ZOOM_STEP as $, WORKBENCH_MIN_SCALE as Xt, createWorkbenchViewportFitForWidget as yt, WORKBENCH_CONTEXT_MENU_WIDTH_PX as Yt, estimateContextMenuHeight as vt } from "./workbenchHelpers.js";
4
- import { resolveWorkbenchWidgetDefinitions as Ot, getWidgetEntry as j, createWorkbenchFilterState as zt } from "./widgets/widgetRegistry.js";
5
- function qt(c) {
6
- const [W, x] = V(null), [U, D] = V(null), [H, G] = V({ width: 0, height: 0 });
1
+ import { createSignal as N, createMemo as d, onCleanup as St } from "solid-js";
2
+ import { ArrowUp as Ct, Copy as pt, Trash as kt } from "../icons/index.js";
3
+ import { getTopZIndex as Ft, createContextMenuPosition as bt, createWorkbenchId as It, createWorkbenchViewportCenteredOnWidget as L, findNearestWidget as Mt, clampScale as Xt, WORKBENCH_CANVAS_ZOOM_STEP as $, WORKBENCH_MIN_SCALE as vt, createWorkbenchViewportFitForWidget as yt, WORKBENCH_CONTEXT_MENU_WIDTH_PX as Yt, estimateContextMenuHeight as Ot } from "./workbenchHelpers.js";
4
+ import { resolveWorkbenchWidgetDefinitions as zt, getWidgetEntry as j, createWorkbenchFilterState as _t } from "./widgets/widgetRegistry.js";
5
+ function Pt(c) {
6
+ const [W, x] = N(null), [U, D] = N(null), [H, G] = N({ width: 0, height: 0 });
7
7
  let r = null, S = null;
8
- const l = c.state, w = d(() => l().widgets), u = d(() => l().viewport), J = d(() => l().locked), N = d(() => l().filters), F = d(() => l().selectedWidgetId), b = d(() => kt(w())), Q = d(() => `${Math.round(u().scale * 100)}%`), tt = () => typeof c.widgetDefinitions == "function" ? c.widgetDefinitions() : c.widgetDefinitions, m = d(
9
- () => Ot(tt())
8
+ const l = c.state, w = d(() => l().widgets), u = d(() => l().viewport), J = d(() => l().locked), R = d(() => l().filters), F = d(() => l().selectedWidgetId), b = d(() => Ft(w())), Q = d(() => `${Math.round(u().scale * 100)}%`), tt = () => typeof c.widgetDefinitions == "function" ? c.widgetDefinitions() : c.widgetDefinitions, m = d(
9
+ () => zt(tt())
10
10
  ), I = (t, e) => {
11
11
  const n = Number.isFinite(t) && t > 0 ? t : 0, i = Number.isFinite(e) && e > 0 ? e : 0, o = { width: n, height: i }, s = H();
12
12
  return s.width === n && s.height === i ? s : (G(o), o);
13
- }, R = () => {
13
+ }, T = () => {
14
14
  S?.disconnect(), S = null;
15
15
  }, a = () => r ? I(r.clientWidth, r.clientHeight) : I(0, 0), et = (t) => {
16
16
  if (r === (t ?? null)) {
17
17
  a();
18
18
  return;
19
19
  }
20
- R(), r = t ?? null, a(), !(!r || typeof ResizeObserver > "u") && (S = new ResizeObserver((e) => {
20
+ T(), r = t ?? null, a(), !(!r || typeof ResizeObserver > "u") && (S = new ResizeObserver((e) => {
21
21
  const n = e[0];
22
22
  I(
23
23
  n?.contentRect.width ?? r?.clientWidth ?? 0,
@@ -25,8 +25,8 @@ function qt(c) {
25
25
  );
26
26
  }), S.observe(r));
27
27
  };
28
- xt(() => {
29
- R(), r = null;
28
+ St(() => {
29
+ T(), r = null;
30
30
  });
31
31
  const nt = (t) => {
32
32
  x({
@@ -43,7 +43,7 @@ function qt(c) {
43
43
  worldY: e.y,
44
44
  widgetId: e.id
45
45
  });
46
- }, h = () => x(null), ot = (t) => l().widgets.find((e) => e.id === t) ?? null, M = (t) => l().widgets.find((e) => e.type === t) ?? null, T = d(() => {
46
+ }, h = () => x(null), ot = (t) => l().widgets.find((e) => e.id === t) ?? null, M = (t) => l().widgets.find((e) => e.type === t) ?? null, E = d(() => {
47
47
  const t = W();
48
48
  if (!t) return [];
49
49
  if (t.widgetId) {
@@ -52,7 +52,7 @@ function qt(c) {
52
52
  id: "bring-to-front",
53
53
  kind: "action",
54
54
  label: "Bring to Front",
55
- icon: St,
55
+ icon: Ct,
56
56
  onSelect: () => {
57
57
  f(e.id), h();
58
58
  }
@@ -60,18 +60,18 @@ function qt(c) {
60
60
  id: "duplicate",
61
61
  kind: "action",
62
62
  label: "Duplicate",
63
- icon: Ct,
63
+ icon: pt,
64
64
  onSelect: () => {
65
- E(e.type, e.x + 32, e.y + 32), h();
65
+ B(e.type, e.x + 32, e.y + 32), h();
66
66
  }
67
67
  })), n.push({ id: "separator-delete", kind: "separator" }), n.push({
68
68
  id: "delete",
69
69
  kind: "action",
70
70
  label: "Delete",
71
- icon: pt,
71
+ icon: kt,
72
72
  destructive: !0,
73
73
  onSelect: () => {
74
- t.widgetId && Y(t.widgetId), h();
74
+ t.widgetId && y(t.widgetId), h();
75
75
  }
76
76
  }), n;
77
77
  }
@@ -81,25 +81,25 @@ function qt(c) {
81
81
  label: `Add ${e.label}`,
82
82
  icon: e.icon,
83
83
  onSelect: () => {
84
- y(e.type, t.worldX, t.worldY), h();
84
+ v(e.type, t.worldX, t.worldY), h();
85
85
  }
86
86
  }));
87
87
  }), ct = d(() => {
88
88
  const t = W();
89
89
  if (!t) return;
90
- const e = T(), n = e.filter((o) => o.kind === "action").length, i = e.filter((o) => o.kind === "separator").length;
91
- return Ft({
90
+ const e = E(), n = e.filter((o) => o.kind === "action").length, i = e.filter((o) => o.kind === "separator").length;
91
+ return bt({
92
92
  clientX: t.clientX,
93
93
  clientY: t.clientY,
94
94
  menuWidth: Yt,
95
- menuHeight: vt(n, i)
95
+ menuHeight: Ot(n, i)
96
96
  });
97
97
  }), X = (t, e, n) => {
98
98
  const i = j(t, m()), o = i.singleton ? M(t) : null;
99
99
  if (o)
100
100
  return p(o, { centerViewport: !0 });
101
101
  const s = i.defaultSize, g = {
102
- id: bt(),
102
+ id: It(),
103
103
  type: t,
104
104
  title: i.defaultTitle,
105
105
  x: e,
@@ -114,10 +114,10 @@ function qt(c) {
114
114
  widgets: [...k.widgets, g],
115
115
  selectedWidgetId: g.id
116
116
  })), g;
117
- }, y = (t, e, n) => {
117
+ }, v = (t, e, n) => {
118
118
  const i = j(t, m()).defaultSize;
119
119
  return X(t, e - i.width / 2, n - i.height / 2);
120
- }, E = (t, e, n) => X(t, e, n), Y = (t) => {
120
+ }, B = (t, e, n) => X(t, e, n), y = (t) => {
121
121
  c.setState((e) => ({
122
122
  ...e,
123
123
  widgets: e.widgets.filter((n) => n.id !== t),
@@ -148,17 +148,17 @@ function qt(c) {
148
148
  (i) => i.id === t ? { ...i, width: e.width, height: e.height } : i
149
149
  )
150
150
  }));
151
- }, v = (t) => {
151
+ }, Y = (t) => {
152
152
  c.setState((e) => ({ ...e, viewport: t }));
153
- }, B = (t) => {
154
- const e = u(), n = a(), i = (n.width / 2 - e.x) / e.scale, o = (n.height / 2 - e.y) / e.scale, s = Mt(
153
+ }, q = (t) => {
154
+ const e = u(), n = a(), i = (n.width / 2 - e.x) / e.scale, o = (n.height / 2 - e.y) / e.scale, s = Xt(
155
155
  t === "in" ? e.scale * $ : e.scale / $
156
156
  ), g = {
157
157
  x: n.width / 2 - i * s,
158
158
  y: n.height / 2 - o * s,
159
159
  scale: s
160
160
  };
161
- v(g);
161
+ Y(g);
162
162
  }, lt = () => {
163
163
  c.setState((t) => ({ ...t, locked: !t.locked }));
164
164
  }, at = (t) => {
@@ -174,14 +174,14 @@ function qt(c) {
174
174
  return { ...e, filters: n };
175
175
  });
176
176
  }, ut = () => {
177
- const t = zt(m());
177
+ const t = _t(m());
178
178
  c.setState((e) => ({
179
179
  ...e,
180
180
  filters: t
181
181
  }));
182
182
  }, C = (t) => {
183
183
  c.setState((e) => ({ ...e, selectedWidgetId: t }));
184
- }, q = () => {
184
+ }, P = () => {
185
185
  c.setState(
186
186
  (t) => t.selectedWidgetId === null ? t : { ...t, selectedWidgetId: null }
187
187
  );
@@ -192,48 +192,50 @@ function qt(c) {
192
192
  worldY: t.height > 0 ? (t.height / 2 - e.y) / e.scale : 180
193
193
  };
194
194
  };
195
- let P = 0;
196
- const O = (t) => {
197
- const e = u(), n = e.x, i = e.y, o = e.scale, s = performance.now(), g = 360, k = ++P, mt = (_) => 1 - Math.pow(1 - _, 3), Z = (_) => {
198
- if (k !== P) return;
199
- const Wt = _ - s, K = Math.min(Math.max(Wt / g, 0), 1), A = mt(K);
200
- v({
195
+ let O = 0;
196
+ const ft = () => {
197
+ O += 1;
198
+ }, z = (t) => {
199
+ const e = u(), n = e.x, i = e.y, o = e.scale, s = performance.now(), g = 360, k = ++O, Wt = (V) => 1 - Math.pow(1 - V, 3), Z = (V) => {
200
+ if (k !== O) return;
201
+ const xt = V - s, K = Math.min(Math.max(xt / g, 0), 1), A = Wt(K);
202
+ Y({
201
203
  x: n + (t.x - n) * A,
202
204
  y: i + (t.y - i) * A,
203
205
  scale: o + (t.scale - o) * A
204
206
  }), K < 1 && requestAnimationFrame(Z);
205
207
  };
206
208
  requestAnimationFrame(Z);
207
- }, z = (t) => {
209
+ }, _ = (t) => {
208
210
  const e = a();
209
- e.width === 0 || e.height === 0 || O(L({
211
+ e.width === 0 || e.height === 0 || z(L({
210
212
  widget: t,
211
213
  scale: u().scale,
212
214
  frameWidth: e.width,
213
215
  frameHeight: e.height
214
216
  }));
215
- }, ft = (t) => {
217
+ }, wt = (t) => {
216
218
  const e = a();
217
- e.width === 0 || e.height === 0 || O(yt({
219
+ e.width === 0 || e.height === 0 || z(yt({
218
220
  widget: t,
219
221
  frameWidth: e.width,
220
222
  frameHeight: e.height
221
223
  }));
222
- }, wt = (t) => {
224
+ }, mt = (t) => {
223
225
  const e = a();
224
- e.width === 0 || e.height === 0 || O(L({
226
+ e.width === 0 || e.height === 0 || z(L({
225
227
  widget: t,
226
- scale: Xt,
228
+ scale: vt,
227
229
  frameWidth: e.width,
228
230
  frameHeight: e.height
229
231
  }));
230
- }, p = (t, e = {}) => (C(t.id), f(t.id), e.centerViewport !== !1 && z(t), t);
232
+ }, p = (t, e = {}) => (C(t.id), f(t.id), e.centerViewport !== !1 && _(t), t);
231
233
  return {
232
234
  widgets: w,
233
235
  viewport: u,
234
236
  canvasFrameSize: H,
235
237
  locked: J,
236
- filters: N,
238
+ filters: R,
237
239
  selectedWidgetId: F,
238
240
  topZIndex: b,
239
241
  scaleLabel: Q,
@@ -242,7 +244,7 @@ function qt(c) {
242
244
  setCanvasFrameRef: et,
243
245
  contextMenu: {
244
246
  state: W,
245
- items: T,
247
+ items: E,
246
248
  position: ct,
247
249
  close: h,
248
250
  retarget: (t) => {
@@ -258,16 +260,17 @@ function qt(c) {
258
260
  openCanvasContextMenu: nt,
259
261
  openWidgetContextMenu: it,
260
262
  selectWidget: C,
261
- clearSelection: q,
263
+ clearSelection: P,
262
264
  startOptimisticFront: st,
263
265
  commitFront: f,
264
266
  commitMove: rt,
265
267
  commitResize: dt,
266
- commitViewport: v
268
+ commitViewport: Y,
269
+ cancelViewportNavigation: ft
267
270
  },
268
271
  hud: {
269
- zoomIn: () => B("in"),
270
- zoomOut: () => B("out")
272
+ zoomIn: () => q("in"),
273
+ zoomOut: () => q("out")
271
274
  },
272
275
  lock: {
273
276
  toggle: lt
@@ -279,41 +282,41 @@ function qt(c) {
279
282
  },
280
283
  navigation: {
281
284
  handleArrowNavigation: (t) => {
282
- const e = It(
285
+ const e = Mt(
283
286
  w(),
284
287
  F(),
285
288
  t,
286
- N()
289
+ R()
287
290
  );
288
291
  e && p(e);
289
292
  },
290
- centerOnWidget: z,
293
+ centerOnWidget: _,
291
294
  focusWidget: p,
292
- fitWidget: (t) => (C(t.id), f(t.id), ft(t), t),
293
- overviewWidget: (t) => (C(t.id), f(t.id), wt(t), t)
295
+ fitWidget: (t) => (C(t.id), f(t.id), wt(t), t),
296
+ overviewWidget: (t) => (C(t.id), f(t.id), mt(t), t)
294
297
  },
295
298
  selection: {
296
- clear: q
299
+ clear: P
297
300
  },
298
301
  widgetActions: {
299
302
  deleteSelected: () => {
300
303
  const t = F();
301
- t && Y(t);
304
+ t && y(t);
302
305
  },
303
- deleteWidget: Y,
306
+ deleteWidget: y,
304
307
  addWidget: X,
305
- addWidgetAtCursor: y,
306
- addWidgetCentered: E,
308
+ addWidgetAtCursor: v,
309
+ addWidgetCentered: B,
307
310
  ensureWidget: (t, e) => {
308
311
  const n = M(t);
309
312
  if (n)
310
313
  return p(n, { centerViewport: e?.centerViewport ?? !0 });
311
- const i = ht(), o = y(
314
+ const i = ht(), o = v(
312
315
  t,
313
316
  e?.worldX ?? i.worldX,
314
317
  e?.worldY ?? i.worldY
315
318
  );
316
- return (e?.centerViewport ?? !0) && o && z(o), o;
319
+ return (e?.centerViewport ?? !0) && o && _(o), o;
317
320
  }
318
321
  },
319
322
  queries: {
@@ -330,5 +333,5 @@ function qt(c) {
330
333
  };
331
334
  }
332
335
  export {
333
- qt as useWorkbenchModel
336
+ Pt as useWorkbenchModel
334
337
  };