@floegence/floe-webapp-core 0.36.18 → 0.36.20
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/InfiniteCanvas.d.ts +17 -0
- package/dist/components/ui/InfiniteCanvas.js +38 -38
- package/dist/components/workbench/WorkbenchCanvas.d.ts +5 -1
- package/dist/components/workbench/WorkbenchCanvas.js +79 -40
- package/dist/components/workbench/WorkbenchCanvasField.d.ts +5 -1
- package/dist/components/workbench/WorkbenchCanvasField.js +82 -63
- package/dist/components/workbench/WorkbenchSurface.d.ts +13 -1
- package/dist/components/workbench/WorkbenchSurface.js +222 -130
- package/dist/components/workbench/WorkbenchWidget.d.ts +5 -1
- package/dist/components/workbench/WorkbenchWidget.js +141 -114
- package/dist/components/workbench/types.d.ts +64 -0
- package/dist/components/workbench/workbenchInteractionAdapter.d.ts +39 -0
- package/dist/components/workbench/workbenchInteractionAdapter.js +103 -0
- package/package.json +1 -1
|
@@ -1,231 +1,323 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createEffect as
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
var
|
|
13
|
-
const
|
|
14
|
-
function
|
|
15
|
-
const
|
|
1
|
+
import { use as L, spread as O, mergeProps as T, insert as g, createComponent as d, Portal as _, addEventListener as B, template as S, delegateEvents as q } from "solid-js/web";
|
|
2
|
+
import { createSignal as y, createMemo as m, untrack as h, createEffect as f, onCleanup as v, Show as z } from "solid-js";
|
|
3
|
+
import { clientToCanvasWorld as $ } from "../ui/canvasGeometry.js";
|
|
4
|
+
import { WorkbenchCanvas as V } from "./WorkbenchCanvas.js";
|
|
5
|
+
import { WorkbenchContextMenu as N } from "./WorkbenchContextMenu.js";
|
|
6
|
+
import { WorkbenchFilterBar as P } from "./WorkbenchFilterBar.js";
|
|
7
|
+
import { WorkbenchHud as X } from "./WorkbenchHud.js";
|
|
8
|
+
import { WorkbenchLockButton as Y } from "./WorkbenchLockButton.js";
|
|
9
|
+
import { installWorkbenchContextMenuDismissListeners as H } from "./workbenchContextMenuDismiss.js";
|
|
10
|
+
import { useWorkbenchModel as K } from "./useWorkbenchModel.js";
|
|
11
|
+
import { resolveWorkbenchInteractionAdapter as U } from "./workbenchInteractionAdapter.js";
|
|
12
|
+
var Z = /* @__PURE__ */ S("<div class=workbench-menu-backdrop data-floe-workbench-boundary=true>"), G = /* @__PURE__ */ S("<div><div class=workbench-surface__body data-floe-workbench-canvas-frame=true>");
|
|
13
|
+
const j = "F1";
|
|
14
|
+
function ue(i) {
|
|
15
|
+
const t = K({
|
|
16
16
|
state: () => i.state(),
|
|
17
|
-
setState: (
|
|
17
|
+
setState: (e) => i.setState(e),
|
|
18
18
|
widgetDefinitions: () => i.widgetDefinitions,
|
|
19
19
|
onClose: () => {
|
|
20
20
|
}
|
|
21
|
-
})
|
|
22
|
-
|
|
21
|
+
}), [u, A] = y(null), a = m(() => U(i.interactionAdapter)), [W, w] = y(h(() => a().createInitialInputOwner())), p = m(() => {
|
|
22
|
+
const e = i.launcherWidgetTypes;
|
|
23
|
+
return !e || e.length <= 0 ? null : new Set(e);
|
|
24
|
+
}), I = m(() => {
|
|
25
|
+
const e = t.widgetDefinitions(), n = p();
|
|
26
|
+
return n ? e.filter((r) => n.has(r.type)) : e;
|
|
27
|
+
}), D = m(() => {
|
|
28
|
+
const e = t.contextMenu.items(), n = p();
|
|
29
|
+
return n ? e.filter((r) => {
|
|
30
|
+
if (r.kind !== "action")
|
|
31
|
+
return !0;
|
|
32
|
+
const o = /^add-(.+)$/.exec(String(r.id ?? ""));
|
|
33
|
+
return o ? n.has(o[1]) : !0;
|
|
34
|
+
}) : e;
|
|
35
|
+
}), k = (e, n, r) => {
|
|
36
|
+
const o = a(), c = o.findWidgetRoot(e), s = o.readWidgetId(c);
|
|
37
|
+
if (s) {
|
|
38
|
+
w(o.createWidgetInputOwner(s, n));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const b = u();
|
|
42
|
+
b && e instanceof Node && b.contains(e) && w(o.createCanvasInputOwner(r));
|
|
43
|
+
}, x = () => {
|
|
44
|
+
const e = u()?.querySelector('[data-floe-workbench-canvas-frame="true"]'), n = t.viewport(), r = e?.getBoundingClientRect(), o = r?.width ?? 0, c = r?.height ?? 0;
|
|
45
|
+
return {
|
|
46
|
+
worldX: o > 0 ? (o / 2 - n.x) / n.scale : 240,
|
|
47
|
+
worldY: c > 0 ? (c / 2 - n.y) / n.scale : 180
|
|
48
|
+
};
|
|
49
|
+
}, l = (e) => {
|
|
50
|
+
const n = h(a), r = h(u);
|
|
51
|
+
queueMicrotask(() => {
|
|
52
|
+
n.focusWidgetElement(r, e), w(n.createWidgetInputOwner(e, "activation"));
|
|
53
|
+
});
|
|
54
|
+
}, M = (e) => {
|
|
55
|
+
const n = t.navigation.fitWidget(e);
|
|
56
|
+
l(n.id);
|
|
57
|
+
}, R = (e) => {
|
|
58
|
+
const n = t.navigation.overviewWidget(e);
|
|
59
|
+
l(n.id);
|
|
60
|
+
};
|
|
61
|
+
f(() => {
|
|
23
62
|
i.onApiReady?.({
|
|
24
|
-
ensureWidget: (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
63
|
+
ensureWidget: (e, n) => t.widgetActions.ensureWidget(e, n) ?? null,
|
|
64
|
+
createWidget: (e, n) => {
|
|
65
|
+
const r = x(), o = t.widgetActions.addWidgetAtCursor(e, n?.worldX ?? r.worldX, n?.worldY ?? r.worldY) ?? null;
|
|
66
|
+
return o && n?.centerViewport !== !1 && t.navigation.centerOnWidget(o), o;
|
|
67
|
+
},
|
|
68
|
+
clearSelection: () => t.selection.clear(),
|
|
69
|
+
focusWidget: (e, n) => {
|
|
70
|
+
const r = t.navigation.focusWidget(e, n);
|
|
71
|
+
return l(r.id), r;
|
|
72
|
+
},
|
|
73
|
+
fitWidget: (e) => {
|
|
74
|
+
const n = t.navigation.fitWidget(e);
|
|
75
|
+
return l(n.id), n;
|
|
76
|
+
},
|
|
77
|
+
overviewWidget: (e) => {
|
|
78
|
+
const n = t.navigation.overviewWidget(e);
|
|
79
|
+
return l(n.id), n;
|
|
80
|
+
},
|
|
81
|
+
findWidgetByType: (e) => t.queries.findWidgetByType(e),
|
|
82
|
+
findWidgetById: (e) => t.queries.findWidgetById(e),
|
|
83
|
+
updateWidgetTitle: (e, n) => {
|
|
84
|
+
const r = String(e ?? "").trim(), o = String(n ?? "").trim();
|
|
85
|
+
!r || !o || i.setState((c) => ({
|
|
86
|
+
...c,
|
|
87
|
+
widgets: c.widgets.map((s) => s.id === r && s.title !== o ? {
|
|
88
|
+
...s,
|
|
89
|
+
title: o
|
|
90
|
+
} : s)
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
}), v(() => {
|
|
31
94
|
i.onApiReady?.(null);
|
|
32
95
|
});
|
|
33
96
|
});
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
if (typeof window > "u" || !
|
|
37
|
-
const
|
|
97
|
+
const C = () => i.lockShortcut === void 0 ? j : i.lockShortcut;
|
|
98
|
+
f(() => {
|
|
99
|
+
if (typeof window > "u" || !t.contextMenu.state()) return;
|
|
100
|
+
const e = H({
|
|
38
101
|
ownerWindow: window,
|
|
39
|
-
onDismiss:
|
|
102
|
+
onDismiss: t.contextMenu.close
|
|
103
|
+
});
|
|
104
|
+
v(() => e());
|
|
105
|
+
}), f(() => {
|
|
106
|
+
const e = W();
|
|
107
|
+
if (e.kind !== "widget") return;
|
|
108
|
+
t.widgets().some((r) => r.id === e.widgetId) || w(a().createCanvasInputOwner("widget_removed"));
|
|
109
|
+
}), f(() => {
|
|
110
|
+
const e = u();
|
|
111
|
+
if (!e) return;
|
|
112
|
+
const n = (o) => {
|
|
113
|
+
k(o.target, "pointer", "background_pointer");
|
|
114
|
+
}, r = (o) => {
|
|
115
|
+
k(o.target, "focus", "background_focus");
|
|
116
|
+
};
|
|
117
|
+
e.addEventListener("pointerdown", n, !0), e.addEventListener("focusin", r), v(() => {
|
|
118
|
+
e.removeEventListener("pointerdown", n, !0), e.removeEventListener("focusin", r);
|
|
40
119
|
});
|
|
41
|
-
|
|
42
|
-
}), s(() => {
|
|
120
|
+
}), f(() => {
|
|
43
121
|
if (i.enableKeyboard === !1 || typeof document > "u") return;
|
|
44
|
-
const
|
|
45
|
-
if (
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
const o = n.target;
|
|
51
|
-
if (!(o instanceof Element && C(o)))
|
|
52
|
-
switch (n.key) {
|
|
53
|
-
case "ArrowUp":
|
|
54
|
-
n.preventDefault(), e.navigation.handleArrowNavigation("up");
|
|
55
|
-
break;
|
|
56
|
-
case "ArrowDown":
|
|
57
|
-
n.preventDefault(), e.navigation.handleArrowNavigation("down");
|
|
58
|
-
break;
|
|
59
|
-
case "ArrowLeft":
|
|
60
|
-
n.preventDefault(), e.navigation.handleArrowNavigation("left");
|
|
61
|
-
break;
|
|
62
|
-
case "ArrowRight":
|
|
63
|
-
n.preventDefault(), e.navigation.handleArrowNavigation("right");
|
|
64
|
-
break;
|
|
65
|
-
case "Delete":
|
|
66
|
-
case "Backspace":
|
|
67
|
-
e.selectedWidgetId() && (n.preventDefault(), e.widgetActions.deleteSelected());
|
|
68
|
-
break;
|
|
122
|
+
const e = C(), n = (r) => {
|
|
123
|
+
if (!(r.defaultPrevented || r.isComposing)) {
|
|
124
|
+
if (e !== null && r.key === e) {
|
|
125
|
+
r.preventDefault(), t.lock.toggle();
|
|
126
|
+
return;
|
|
69
127
|
}
|
|
128
|
+
if (!a().shouldBypassGlobalHotkeys({
|
|
129
|
+
root: u(),
|
|
130
|
+
target: r.target,
|
|
131
|
+
owner: W(),
|
|
132
|
+
interactiveSelector: a().interactiveSelector
|
|
133
|
+
}))
|
|
134
|
+
switch (r.key) {
|
|
135
|
+
case "ArrowUp":
|
|
136
|
+
r.preventDefault(), t.navigation.handleArrowNavigation("up");
|
|
137
|
+
break;
|
|
138
|
+
case "ArrowDown":
|
|
139
|
+
r.preventDefault(), t.navigation.handleArrowNavigation("down");
|
|
140
|
+
break;
|
|
141
|
+
case "ArrowLeft":
|
|
142
|
+
r.preventDefault(), t.navigation.handleArrowNavigation("left");
|
|
143
|
+
break;
|
|
144
|
+
case "ArrowRight":
|
|
145
|
+
r.preventDefault(), t.navigation.handleArrowNavigation("right");
|
|
146
|
+
break;
|
|
147
|
+
case "Delete":
|
|
148
|
+
case "Backspace":
|
|
149
|
+
t.selectedWidgetId() && (r.preventDefault(), t.widgetActions.deleteSelected());
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
70
153
|
};
|
|
71
|
-
document.addEventListener("keydown",
|
|
154
|
+
document.addEventListener("keydown", n, !0), v(() => document.removeEventListener("keydown", n, !0));
|
|
72
155
|
});
|
|
73
|
-
const
|
|
74
|
-
const
|
|
75
|
-
if (!
|
|
76
|
-
const o =
|
|
77
|
-
return
|
|
78
|
-
clientX:
|
|
79
|
-
clientY:
|
|
156
|
+
const E = (e, n) => {
|
|
157
|
+
const r = u()?.querySelector('[data-floe-workbench-canvas-frame="true"]');
|
|
158
|
+
if (!r) return null;
|
|
159
|
+
const o = r.getBoundingClientRect();
|
|
160
|
+
return $(o, t.viewport(), {
|
|
161
|
+
clientX: e,
|
|
162
|
+
clientY: n
|
|
80
163
|
});
|
|
81
|
-
},
|
|
82
|
-
const o =
|
|
83
|
-
o &&
|
|
164
|
+
}, F = (e, n, r) => {
|
|
165
|
+
const o = E(n, r);
|
|
166
|
+
o && t.widgetActions.addWidgetAtCursor(e, o.worldX, o.worldY);
|
|
84
167
|
};
|
|
85
168
|
return (() => {
|
|
86
|
-
var
|
|
87
|
-
return
|
|
169
|
+
var e = G(), n = e.firstChild;
|
|
170
|
+
return L(A, e), O(e, T({
|
|
171
|
+
get class() {
|
|
172
|
+
return `workbench-surface${i.class ? ` ${i.class}` : ""}`;
|
|
173
|
+
}
|
|
174
|
+
}, () => ({
|
|
175
|
+
[a().surfaceRootAttr]: "true"
|
|
176
|
+
}), {
|
|
177
|
+
get "data-workbench-theme"() {
|
|
178
|
+
return t.theme();
|
|
179
|
+
}
|
|
180
|
+
}), !1, !0), g(n, d(V, {
|
|
88
181
|
get widgetDefinitions() {
|
|
89
|
-
return
|
|
182
|
+
return t.widgetDefinitions();
|
|
90
183
|
},
|
|
91
184
|
get widgets() {
|
|
92
|
-
return
|
|
185
|
+
return t.widgets();
|
|
93
186
|
},
|
|
94
187
|
get viewport() {
|
|
95
|
-
return
|
|
188
|
+
return t.viewport();
|
|
96
189
|
},
|
|
97
190
|
get canvasFrameSize() {
|
|
98
|
-
return
|
|
191
|
+
return t.canvasFrameSize();
|
|
99
192
|
},
|
|
100
193
|
get selectedWidgetId() {
|
|
101
|
-
return
|
|
194
|
+
return t.selectedWidgetId();
|
|
102
195
|
},
|
|
103
196
|
get optimisticFrontWidgetId() {
|
|
104
|
-
return
|
|
197
|
+
return t.optimisticFrontWidgetId();
|
|
105
198
|
},
|
|
106
199
|
get locked() {
|
|
107
|
-
return
|
|
200
|
+
return t.locked();
|
|
108
201
|
},
|
|
109
202
|
get filters() {
|
|
110
|
-
return
|
|
203
|
+
return t.filters();
|
|
204
|
+
},
|
|
205
|
+
get interactionAdapter() {
|
|
206
|
+
return a();
|
|
111
207
|
},
|
|
112
208
|
get setCanvasFrameRef() {
|
|
113
|
-
return
|
|
209
|
+
return t.setCanvasFrameRef;
|
|
114
210
|
},
|
|
115
211
|
get onViewportCommit() {
|
|
116
|
-
return
|
|
212
|
+
return t.canvas.commitViewport;
|
|
117
213
|
},
|
|
118
214
|
get onViewportInteractionStart() {
|
|
119
|
-
return
|
|
215
|
+
return t.canvas.cancelViewportNavigation;
|
|
120
216
|
},
|
|
121
217
|
get onCanvasContextMenu() {
|
|
122
|
-
return
|
|
218
|
+
return t.canvas.openCanvasContextMenu;
|
|
123
219
|
},
|
|
124
220
|
get onCanvasPointerDown() {
|
|
125
|
-
return
|
|
221
|
+
return t.selection.clear;
|
|
126
222
|
},
|
|
127
223
|
get onSelectWidget() {
|
|
128
|
-
return
|
|
224
|
+
return t.canvas.selectWidget;
|
|
129
225
|
},
|
|
130
226
|
get onWidgetContextMenu() {
|
|
131
|
-
return
|
|
227
|
+
return t.canvas.openWidgetContextMenu;
|
|
132
228
|
},
|
|
133
229
|
get onStartOptimisticFront() {
|
|
134
|
-
return
|
|
230
|
+
return t.canvas.startOptimisticFront;
|
|
135
231
|
},
|
|
136
232
|
get onCommitFront() {
|
|
137
|
-
return
|
|
233
|
+
return t.canvas.commitFront;
|
|
138
234
|
},
|
|
139
235
|
get onCommitMove() {
|
|
140
|
-
return
|
|
236
|
+
return t.canvas.commitMove;
|
|
141
237
|
},
|
|
142
238
|
get onCommitResize() {
|
|
143
|
-
return
|
|
239
|
+
return t.canvas.commitResize;
|
|
144
240
|
},
|
|
145
|
-
|
|
146
|
-
|
|
241
|
+
onRequestOverview: R,
|
|
242
|
+
onRequestFit: M,
|
|
243
|
+
get onRequestDelete() {
|
|
244
|
+
return i.onRequestDelete ?? t.widgetActions.deleteWidget;
|
|
147
245
|
},
|
|
148
|
-
get
|
|
149
|
-
return
|
|
246
|
+
get onLayoutInteractionStart() {
|
|
247
|
+
return i.onLayoutInteractionStart;
|
|
150
248
|
},
|
|
151
|
-
get
|
|
152
|
-
return
|
|
249
|
+
get onLayoutInteractionEnd() {
|
|
250
|
+
return i.onLayoutInteractionEnd;
|
|
153
251
|
}
|
|
154
|
-
})),
|
|
252
|
+
})), g(e, d(Y, {
|
|
155
253
|
get locked() {
|
|
156
|
-
return
|
|
254
|
+
return t.locked();
|
|
157
255
|
},
|
|
158
256
|
get onToggle() {
|
|
159
|
-
return
|
|
257
|
+
return t.lock.toggle;
|
|
160
258
|
},
|
|
161
259
|
get shortcutLabel() {
|
|
162
|
-
return
|
|
260
|
+
return C() ?? void 0;
|
|
163
261
|
}
|
|
164
|
-
}), null),
|
|
262
|
+
}), null), g(e, d(P, {
|
|
165
263
|
get widgetDefinitions() {
|
|
166
|
-
return
|
|
264
|
+
return I();
|
|
167
265
|
},
|
|
168
266
|
get widgets() {
|
|
169
|
-
return
|
|
267
|
+
return t.widgets();
|
|
170
268
|
},
|
|
171
269
|
get filters() {
|
|
172
|
-
return
|
|
270
|
+
return t.filters();
|
|
173
271
|
},
|
|
174
272
|
get onSoloFilter() {
|
|
175
|
-
return
|
|
273
|
+
return t.filter.solo;
|
|
176
274
|
},
|
|
177
275
|
get onShowAll() {
|
|
178
|
-
return
|
|
276
|
+
return t.filter.showAll;
|
|
179
277
|
},
|
|
180
|
-
onCreateAt:
|
|
181
|
-
}), null),
|
|
278
|
+
onCreateAt: F
|
|
279
|
+
}), null), g(e, d(X, {
|
|
182
280
|
get scaleLabel() {
|
|
183
|
-
return
|
|
281
|
+
return t.scaleLabel();
|
|
184
282
|
},
|
|
185
283
|
get onZoomOut() {
|
|
186
|
-
return
|
|
284
|
+
return t.hud.zoomOut;
|
|
187
285
|
},
|
|
188
286
|
get onZoomIn() {
|
|
189
|
-
return
|
|
287
|
+
return t.hud.zoomIn;
|
|
190
288
|
},
|
|
191
289
|
get activeTheme() {
|
|
192
|
-
return
|
|
290
|
+
return t.theme();
|
|
193
291
|
},
|
|
194
|
-
onSelectTheme: (
|
|
195
|
-
}), null),
|
|
292
|
+
onSelectTheme: (r) => t.appearance.setTheme(r)
|
|
293
|
+
}), null), g(e, d(z, {
|
|
196
294
|
get when() {
|
|
197
|
-
return
|
|
295
|
+
return t.contextMenu.state();
|
|
198
296
|
},
|
|
199
297
|
get children() {
|
|
200
|
-
return
|
|
298
|
+
return d(_, {
|
|
201
299
|
get children() {
|
|
202
300
|
return [(() => {
|
|
203
|
-
var
|
|
204
|
-
return
|
|
205
|
-
})(),
|
|
301
|
+
var r = Z();
|
|
302
|
+
return B(r, "contextmenu", t.contextMenu.retarget, !0), r;
|
|
303
|
+
})(), d(N, {
|
|
206
304
|
get x() {
|
|
207
|
-
return
|
|
305
|
+
return t.contextMenu.position()?.left ?? 0;
|
|
208
306
|
},
|
|
209
307
|
get y() {
|
|
210
|
-
return
|
|
308
|
+
return t.contextMenu.position()?.top ?? 0;
|
|
211
309
|
},
|
|
212
310
|
get items() {
|
|
213
|
-
return
|
|
311
|
+
return D();
|
|
214
312
|
}
|
|
215
313
|
})];
|
|
216
314
|
}
|
|
217
315
|
});
|
|
218
316
|
}
|
|
219
|
-
}), null),
|
|
220
|
-
var o = `workbench-surface${i.class ? ` ${i.class}` : ""}`, d = e.theme();
|
|
221
|
-
return o !== n.e && k(t, n.e = o), d !== n.t && p(t, "data-workbench-theme", n.t = d), n;
|
|
222
|
-
}, {
|
|
223
|
-
e: void 0,
|
|
224
|
-
t: void 0
|
|
225
|
-
}), t;
|
|
317
|
+
}), null), e;
|
|
226
318
|
})();
|
|
227
319
|
}
|
|
228
|
-
|
|
320
|
+
q(["contextmenu"]);
|
|
229
321
|
export {
|
|
230
|
-
|
|
322
|
+
ue as WorkbenchSurface
|
|
231
323
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type JSX } from 'solid-js';
|
|
2
|
-
import
|
|
2
|
+
import { type ResolvedWorkbenchInteractionAdapter } from './workbenchInteractionAdapter';
|
|
3
|
+
import type { WorkbenchViewport, WorkbenchInteractionAdapter, WorkbenchWidgetDefinition, WorkbenchWidgetItem, WorkbenchWidgetRenderMode, WorkbenchWidgetType } from './types';
|
|
3
4
|
export interface WorkbenchWidgetProps {
|
|
4
5
|
definition: WorkbenchWidgetDefinition;
|
|
5
6
|
widgetId: string;
|
|
@@ -20,6 +21,7 @@ export interface WorkbenchWidgetProps {
|
|
|
20
21
|
layoutMode?: WorkbenchWidgetRenderMode;
|
|
21
22
|
projectedViewport?: WorkbenchViewport;
|
|
22
23
|
surfaceReady?: boolean;
|
|
24
|
+
interactionAdapter?: WorkbenchInteractionAdapter | ResolvedWorkbenchInteractionAdapter;
|
|
23
25
|
onSelect: (widgetId: string) => void;
|
|
24
26
|
onContextMenu: (event: MouseEvent, item: WorkbenchWidgetItem) => void;
|
|
25
27
|
onStartOptimisticFront: (widgetId: string) => void;
|
|
@@ -35,5 +37,7 @@ export interface WorkbenchWidgetProps {
|
|
|
35
37
|
onRequestOverview: (item: WorkbenchWidgetItem) => void;
|
|
36
38
|
onRequestFit: (item: WorkbenchWidgetItem) => void;
|
|
37
39
|
onRequestDelete: (widgetId: string) => void;
|
|
40
|
+
onLayoutInteractionStart?: () => void;
|
|
41
|
+
onLayoutInteractionEnd?: () => void;
|
|
38
42
|
}
|
|
39
43
|
export declare function WorkbenchWidget(props: WorkbenchWidgetProps): JSX.Element;
|