@floegence/floe-webapp-core 0.40.14 → 0.40.16

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,6 +1,6 @@
1
1
  import { type UIFirstSelectionEvent } from '../../utils/uiFirstSelection';
2
2
  import { type WorkbenchContextMenuItem } from './WorkbenchContextMenu';
3
- import { type WorkbenchDockItemActivation, type WorkbenchDockAction } from './WorkbenchFilterBar';
3
+ import { type WorkbenchDockItemActivation, type WorkbenchDockAction, type WorkbenchExternalDockDragController, type WorkbenchExternalDockDragItem, type WorkbenchHostDockItem } from './WorkbenchFilterBar';
4
4
  import type { WorkbenchState, WorkbenchAnnotationItem, WorkbenchBackgroundLayer, WorkbenchBackgroundLayerDefaults, WorkbenchBackgroundLayerPatch, WorkbenchContextMenuState, WorkbenchInteractionAdapter, WorkbenchStickyNoteItem, WorkbenchStickyNotePatch, WorkbenchTextAnnotationDefaults, WorkbenchTextAnnotationPatch, WorkbenchWidgetDefinition, WorkbenchWidgetItem, WorkbenchWidgetType } from './types';
5
5
  export interface WorkbenchCreateAtOptions {
6
6
  worldX?: number;
@@ -69,6 +69,9 @@ export interface WorkbenchSurfaceProps {
69
69
  onRequestDelete?: (widgetId: string) => void;
70
70
  onDockItemClick?: (item: WorkbenchDockItemActivation) => boolean | void;
71
71
  dockActions?: readonly WorkbenchDockAction[];
72
+ dockItems?: readonly WorkbenchHostDockItem[];
73
+ registerExternalDockDragController?: (controller: WorkbenchExternalDockDragController | null) => void;
74
+ onExternalDockDrop?: (item: WorkbenchExternalDockDragItem) => void;
72
75
  onLayoutInteractionStart?: () => void;
73
76
  onLayoutInteractionEnd?: () => void;
74
77
  /** Defer pointer/focus widget activation until the visual selection has painted. */
@@ -1,5 +1,5 @@
1
- import { use as j, spread as K, mergeProps as Z, insert as v, createComponent as l, Portal as G, addEventListener as J, template as R, delegateEvents as Q } from "solid-js/web";
2
- import { createSignal as C, createMemo as w, untrack as h, createEffect as k, onCleanup as A, Show as ee } from "solid-js";
1
+ import { use as j, spread as K, mergeProps as Z, insert as v, createComponent as l, Portal as G, addEventListener as J, template as E, delegateEvents as Q } from "solid-js/web";
2
+ import { createSignal as W, createMemo as w, untrack as h, createEffect as k, onCleanup as A, Show as ee } from "solid-js";
3
3
  import { clientToCanvasWorld as B } from "../ui/canvasGeometry.js";
4
4
  import { createUIFirstSelection as te } from "../../utils/uiFirstSelection.js";
5
5
  import { WorkbenchCanvas as ne } from "./WorkbenchCanvas.js";
@@ -12,7 +12,7 @@ import { createContextMenuPosition as de, WORKBENCH_CONTEXT_MENU_WIDTH_PX as ue,
12
12
  import { resolveWorkbenchWidgetPlacementPreview as le, resolveWorkbenchToolPlacementPreview as ge } from "./workbenchPlacement.js";
13
13
  import { useWorkbenchModel as we } from "./useWorkbenchModel.js";
14
14
  import { resolveWorkbenchInteractionAdapter as me } from "./workbenchInteractionAdapter.js";
15
- var fe = /* @__PURE__ */ R("<div class=workbench-menu-backdrop data-floe-workbench-boundary=true>"), ve = /* @__PURE__ */ R("<div><div class=workbench-surface__body data-floe-workbench-canvas-frame=true>");
15
+ var fe = /* @__PURE__ */ E("<div class=workbench-menu-backdrop data-floe-workbench-boundary=true>"), ve = /* @__PURE__ */ E("<div><div class=workbench-surface__body data-floe-workbench-canvas-frame=true>");
16
16
  const ke = "F1";
17
17
  function T(i) {
18
18
  if (i)
@@ -24,7 +24,7 @@ function T(i) {
24
24
  i.focus();
25
25
  }
26
26
  }
27
- function Re(i) {
27
+ function Ee(i) {
28
28
  const t = we({
29
29
  state: () => i.state(),
30
30
  setState: (e) => i.setState(e),
@@ -44,7 +44,7 @@ function Re(i) {
44
44
  t.canvas.selectWidget(e), n?.bringToFront && t.canvas.commitFront(e);
45
45
  },
46
46
  onEvent: (e) => i.onWidgetActivationEvent?.(e)
47
- }), F = () => i.widgetActivationMode === "after-paint" ? u.visual() : t.selectedWidgetId(), N = () => {
47
+ }), R = () => i.widgetActivationMode === "after-paint" ? u.visual() : t.selectedWidgetId(), F = () => {
48
48
  if (i.widgetActivationMode !== "after-paint" || !u.pending())
49
49
  return t.selectedObject();
50
50
  const e = u.visual();
@@ -52,7 +52,7 @@ function Re(i) {
52
52
  kind: "widget",
53
53
  id: e
54
54
  } : null;
55
- }, O = (e) => {
55
+ }, N = (e) => {
56
56
  if (i.widgetActivationMode === "after-paint") {
57
57
  if (u.pending() && u.visual() === e) return;
58
58
  u.request(e, {
@@ -61,7 +61,7 @@ function Re(i) {
61
61
  return;
62
62
  }
63
63
  t.canvas.selectWidget(e);
64
- }, E = (e) => {
64
+ }, O = (e) => {
65
65
  if (i.widgetActivationMode === "after-paint") {
66
66
  if (u.pending() && u.visual() === e) return;
67
67
  u.request(e, {
@@ -70,7 +70,7 @@ function Re(i) {
70
70
  return;
71
71
  }
72
72
  t.canvas.selectWidget(e), t.canvas.commitFront(e);
73
- }, [s, X] = C(null), [_, q] = C(null), c = w(() => me(i.interactionAdapter)), [p, g] = C(h(() => c().createInitialInputOwner())), S = w(() => {
73
+ }, [s, X] = W(null), [_, q] = W(null), c = w(() => me(i.interactionAdapter)), [p, g] = W(h(() => c().createInitialInputOwner())), S = w(() => {
74
74
  const e = i.launcherWidgetTypes;
75
75
  return !e || e.length <= 0 ? null : new Set(e);
76
76
  }), Y = w(() => {
@@ -93,7 +93,7 @@ function Re(i) {
93
93
  widget: d,
94
94
  closeMenu: t.contextMenu.close
95
95
  });
96
- }), M = w(() => {
96
+ }), D = w(() => {
97
97
  const e = t.contextMenu.state();
98
98
  if (!e) return;
99
99
  const n = b(), o = n.filter((a) => a.kind === "action").length, r = n.filter((a) => a.kind === "separator").length;
@@ -202,7 +202,7 @@ function Re(i) {
202
202
  i.onApiReady?.(null);
203
203
  });
204
204
  });
205
- const D = () => i.lockShortcut === void 0 ? ke : i.lockShortcut;
205
+ const M = () => i.lockShortcut === void 0 ? ke : i.lockShortcut;
206
206
  k(() => {
207
207
  if (typeof window > "u" || !t.contextMenu.state()) return;
208
208
  const e = ce({
@@ -227,7 +227,7 @@ function Re(i) {
227
227
  });
228
228
  }), k(() => {
229
229
  if (i.enableKeyboard === !1 || typeof document > "u") return;
230
- const e = D(), n = (o) => {
230
+ const e = M(), n = (o) => {
231
231
  if (!(o.defaultPrevented || o.isComposing)) {
232
232
  if (e !== null && o.key === e) {
233
233
  o.preventDefault(), t.lock.toggle();
@@ -261,7 +261,7 @@ function Re(i) {
261
261
  };
262
262
  document.addEventListener("keydown", n, !0), A(() => document.removeEventListener("keydown", n, !0));
263
263
  });
264
- const W = (e, n, o) => {
264
+ const C = (e, n, o) => {
265
265
  if (o?.canvasFrame)
266
266
  return B(o.canvasFrame, t.viewport(), {
267
267
  clientX: e,
@@ -275,10 +275,10 @@ function Re(i) {
275
275
  clientY: n
276
276
  });
277
277
  }, z = (e, n, o, r) => {
278
- const a = W(n, o, r);
278
+ const a = C(n, o, r);
279
279
  a && t.widgetActions.addWidgetAtWorldCenter(e, a.worldX, a.worldY);
280
280
  }, H = (e, n, o, r) => {
281
- const a = W(n, o, r);
281
+ const a = C(n, o, r);
282
282
  if (a) {
283
283
  if (e === "sticky-note") {
284
284
  t.widgetActions.addStickyNoteAtCursor(a.worldX, a.worldY);
@@ -295,7 +295,7 @@ function Re(i) {
295
295
  }, $ = w(() => {
296
296
  const e = _();
297
297
  if (!e) return null;
298
- const n = W(e.clientX, e.clientY, e);
298
+ const n = C(e.clientX, e.clientY, e);
299
299
  return n ? e.kind === "widget" ? le({
300
300
  type: e.id,
301
301
  widgetDefinitions: t.widgetDefinitions(),
@@ -354,10 +354,10 @@ function Re(i) {
354
354
  return t.canvasFrameSize();
355
355
  },
356
356
  get selectedWidgetId() {
357
- return F();
357
+ return R();
358
358
  },
359
359
  get selectedObject() {
360
- return N();
360
+ return F();
361
361
  },
362
362
  get mode() {
363
363
  return t.mode();
@@ -387,8 +387,8 @@ function Re(i) {
387
387
  return t.canvas.openCanvasContextMenu;
388
388
  },
389
389
  onCanvasPointerDown: U,
390
- onSelectWidget: O,
391
- onActivateWidget: E,
390
+ onSelectWidget: N,
391
+ onActivateWidget: O,
392
392
  get onWidgetContextMenu() {
393
393
  return t.canvas.openWidgetContextMenu;
394
394
  },
@@ -483,7 +483,7 @@ function Re(i) {
483
483
  return t.lock.toggle;
484
484
  },
485
485
  get shortcutLabel() {
486
- return D() ?? void 0;
486
+ return M() ?? void 0;
487
487
  }
488
488
  }), null), v(e, l(re, {
489
489
  get widgetDefinitions() {
@@ -519,6 +519,15 @@ function Re(i) {
519
519
  get dockActions() {
520
520
  return i.dockActions;
521
521
  },
522
+ get dockItems() {
523
+ return i.dockItems;
524
+ },
525
+ get registerExternalDockDragController() {
526
+ return i.registerExternalDockDragController;
527
+ },
528
+ get onExternalDockDrop() {
529
+ return i.onExternalDockDrop;
530
+ },
522
531
  onDragPreviewChange: q
523
532
  }), null), v(e, l(ie, {
524
533
  get scaleLabel() {
@@ -546,10 +555,10 @@ function Re(i) {
546
555
  return J(o, "contextmenu", t.contextMenu.retarget, !0), o;
547
556
  })(), l(oe, {
548
557
  get x() {
549
- return M()?.left ?? 0;
558
+ return D()?.left ?? 0;
550
559
  },
551
560
  get y() {
552
- return M()?.top ?? 0;
561
+ return D()?.top ?? 0;
553
562
  },
554
563
  get items() {
555
564
  return b();
@@ -563,5 +572,5 @@ function Re(i) {
563
572
  }
564
573
  Q(["contextmenu"]);
565
574
  export {
566
- Re as WorkbenchSurface
575
+ Ee as WorkbenchSurface
567
576
  };
@@ -1,6 +1,6 @@
1
1
  export { WorkbenchOverlay, type WorkbenchOverlayProps, } from './WorkbenchOverlay';
2
2
  export { WorkbenchSurface, type WorkbenchSurfaceApi, type WorkbenchCreateAtOptions, type WorkbenchCreateWidgetOptions, type WorkbenchContextMenuItemsResolver, type WorkbenchSurfaceProps, } from './WorkbenchSurface';
3
- export type { WorkbenchDockAction, WorkbenchDockItemActivation } from './WorkbenchFilterBar';
3
+ export type { WorkbenchDockAction, WorkbenchDockItemActivation, WorkbenchExternalDockDragController, WorkbenchExternalDockDragItem, WorkbenchHostDockItem, } from './WorkbenchFilterBar';
4
4
  export { WorkbenchContextMenu, type WorkbenchContextMenuItem, type WorkbenchContextMenuProps, } from './WorkbenchContextMenu';
5
5
  export { useWorkbenchModel, type UseWorkbenchModelOptions } from './useWorkbenchModel';
6
6
  export { WIDGET_REGISTRY, createWorkbenchFilterState, getWidgetEntry, isValidWorkbenchWidgetType, resolveWorkbenchWidgetDefinitions, type WidgetRegistryEntry, } from './widgets/widgetRegistry';