@floegence/floe-webapp-core 0.36.0 → 0.36.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/deck/DeckCell.js +4 -4
- package/dist/components/layout/DisplayModePageShell.d.ts +8 -0
- package/dist/components/layout/DisplayModePageShell.js +22 -0
- package/dist/components/layout/DisplayModeSwitcher.d.ts +7 -0
- package/dist/components/layout/DisplayModeSwitcher.js +52 -0
- package/dist/components/layout/index.d.ts +2 -0
- package/dist/components/ui/Dialog.js +115 -87
- package/dist/components/ui/FloatingWindow.js +158 -144
- package/dist/components/ui/dialogSurfaceScope.d.ts +14 -0
- package/dist/components/ui/dialogSurfaceScope.js +45 -0
- package/dist/components/workbench/WorkbenchCanvas.d.ts +2 -1
- package/dist/components/workbench/WorkbenchCanvas.js +54 -56
- package/dist/components/workbench/WorkbenchCanvasField.d.ts +25 -0
- package/dist/components/workbench/WorkbenchCanvasField.js +145 -0
- package/dist/components/workbench/WorkbenchFilterBar.d.ts +2 -1
- package/dist/components/workbench/WorkbenchFilterBar.js +71 -70
- package/dist/components/workbench/WorkbenchSurface.d.ts +14 -1
- package/dist/components/workbench/WorkbenchSurface.js +73 -56
- package/dist/components/workbench/WorkbenchWidget.d.ts +11 -2
- package/dist/components/workbench/WorkbenchWidget.js +112 -103
- package/dist/components/workbench/index.d.ts +2 -2
- package/dist/components/workbench/types.d.ts +28 -11
- package/dist/components/workbench/types.js +2 -16
- package/dist/components/workbench/useWorkbenchModel.d.ts +19 -6
- package/dist/components/workbench/useWorkbenchModel.js +152 -127
- package/dist/components/workbench/widgets/widgetRegistry.d.ts +6 -5
- package/dist/components/workbench/widgets/widgetRegistry.js +47 -26
- package/dist/components/workbench/workbenchHelpers.d.ts +8 -4
- package/dist/components/workbench/workbenchHelpers.js +97 -134
- package/dist/display-mode.css +70 -0
- package/dist/full.js +485 -480
- package/dist/hooks/useOverlayMask.d.ts +11 -9
- package/dist/hooks/useOverlayMask.js +54 -52
- package/dist/layout.js +32 -27
- package/dist/styles.css +1 -1
- package/dist/tailwind.css +1 -0
- package/dist/workbench.js +21 -20
- package/package.json +1 -1
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { use as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
function w(e) {
|
|
1
|
+
import { use as r, insert as o, createComponent as i, effect as a, template as g } from "solid-js/web";
|
|
2
|
+
import { WorkbenchCanvasField as c } from "./WorkbenchCanvasField.js";
|
|
3
|
+
import { InfiniteCanvas as u } from "../ui/InfiniteCanvas.js";
|
|
4
|
+
var m = /* @__PURE__ */ g("<div class=workbench-canvas>");
|
|
5
|
+
function C(e) {
|
|
7
6
|
return (() => {
|
|
8
|
-
var t =
|
|
9
|
-
return typeof
|
|
7
|
+
var t = m(), n = e.setCanvasFrameRef;
|
|
8
|
+
return typeof n == "function" ? r(n, t) : e.setCanvasFrameRef = t, o(t, i(u, {
|
|
10
9
|
ariaLabel: "Workbench canvas",
|
|
11
10
|
class: "workbench-canvas__infinite",
|
|
12
11
|
get viewport() {
|
|
@@ -22,58 +21,57 @@ function w(e) {
|
|
|
22
21
|
return e.locked;
|
|
23
22
|
},
|
|
24
23
|
get children() {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
return i(c, {
|
|
25
|
+
get widgetDefinitions() {
|
|
26
|
+
return e.widgetDefinitions;
|
|
27
|
+
},
|
|
28
|
+
get widgets() {
|
|
28
29
|
return e.widgets;
|
|
29
30
|
},
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
})
|
|
72
|
-
}), null), r;
|
|
31
|
+
get selectedWidgetId() {
|
|
32
|
+
return e.selectedWidgetId;
|
|
33
|
+
},
|
|
34
|
+
get optimisticFrontWidgetId() {
|
|
35
|
+
return e.optimisticFrontWidgetId;
|
|
36
|
+
},
|
|
37
|
+
get topZIndex() {
|
|
38
|
+
return e.topZIndex;
|
|
39
|
+
},
|
|
40
|
+
get viewportScale() {
|
|
41
|
+
return e.viewport.scale;
|
|
42
|
+
},
|
|
43
|
+
get locked() {
|
|
44
|
+
return e.locked;
|
|
45
|
+
},
|
|
46
|
+
get filters() {
|
|
47
|
+
return e.filters;
|
|
48
|
+
},
|
|
49
|
+
get onSelectWidget() {
|
|
50
|
+
return e.onSelectWidget;
|
|
51
|
+
},
|
|
52
|
+
get onWidgetContextMenu() {
|
|
53
|
+
return e.onWidgetContextMenu;
|
|
54
|
+
},
|
|
55
|
+
get onStartOptimisticFront() {
|
|
56
|
+
return e.onStartOptimisticFront;
|
|
57
|
+
},
|
|
58
|
+
get onCommitFront() {
|
|
59
|
+
return e.onCommitFront;
|
|
60
|
+
},
|
|
61
|
+
get onCommitMove() {
|
|
62
|
+
return e.onCommitMove;
|
|
63
|
+
},
|
|
64
|
+
get onCommitResize() {
|
|
65
|
+
return e.onCommitResize;
|
|
66
|
+
},
|
|
67
|
+
get onRequestDelete() {
|
|
68
|
+
return e.onRequestDelete;
|
|
69
|
+
}
|
|
70
|
+
});
|
|
73
71
|
}
|
|
74
|
-
})),
|
|
72
|
+
})), a(() => t.classList.toggle("is-locked", !!e.locked)), t;
|
|
75
73
|
})();
|
|
76
74
|
}
|
|
77
75
|
export {
|
|
78
|
-
|
|
76
|
+
C as WorkbenchCanvas
|
|
79
77
|
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { WorkbenchWidgetDefinition, WorkbenchWidgetItem, WorkbenchWidgetType } from './types';
|
|
2
|
+
export interface WorkbenchCanvasFieldProps {
|
|
3
|
+
widgetDefinitions: readonly WorkbenchWidgetDefinition[];
|
|
4
|
+
widgets: readonly WorkbenchWidgetItem[];
|
|
5
|
+
selectedWidgetId: string | null;
|
|
6
|
+
optimisticFrontWidgetId: string | null;
|
|
7
|
+
topZIndex: number;
|
|
8
|
+
viewportScale: number;
|
|
9
|
+
locked: boolean;
|
|
10
|
+
filters: Record<WorkbenchWidgetType, boolean>;
|
|
11
|
+
onSelectWidget: (widgetId: string) => void;
|
|
12
|
+
onWidgetContextMenu: (event: MouseEvent, item: WorkbenchWidgetItem) => void;
|
|
13
|
+
onStartOptimisticFront: (widgetId: string) => void;
|
|
14
|
+
onCommitFront: (widgetId: string) => void;
|
|
15
|
+
onCommitMove: (widgetId: string, position: {
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
}) => void;
|
|
19
|
+
onCommitResize: (widgetId: string, size: {
|
|
20
|
+
width: number;
|
|
21
|
+
height: number;
|
|
22
|
+
}) => void;
|
|
23
|
+
onRequestDelete: (widgetId: string) => void;
|
|
24
|
+
}
|
|
25
|
+
export declare function WorkbenchCanvasField(props: WorkbenchCanvasFieldProps): import("solid-js").JSX.Element;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { insert as o, createComponent as g, template as u } from "solid-js/web";
|
|
2
|
+
import { createMemo as r, For as m } from "solid-js";
|
|
3
|
+
import { getWidgetEntry as c } from "./widgets/widgetRegistry.js";
|
|
4
|
+
import { WorkbenchWidget as l } from "./WorkbenchWidget.js";
|
|
5
|
+
var a = /* @__PURE__ */ u("<div class=workbench-canvas__field><div class=workbench-canvas__grid aria-hidden=true>");
|
|
6
|
+
function w(t) {
|
|
7
|
+
const e = r((n) => {
|
|
8
|
+
const i = t.widgetById().get(t.widgetId);
|
|
9
|
+
if (i) return i;
|
|
10
|
+
if (n) return n;
|
|
11
|
+
throw new Error(`Workbench widget ${t.widgetId} is missing from the render map.`);
|
|
12
|
+
}), d = r(() => c(e().type, t.widgetDefinitions));
|
|
13
|
+
return g(l, {
|
|
14
|
+
get definition() {
|
|
15
|
+
return d();
|
|
16
|
+
},
|
|
17
|
+
get widgetId() {
|
|
18
|
+
return t.widgetId;
|
|
19
|
+
},
|
|
20
|
+
get widgetTitle() {
|
|
21
|
+
return e().title;
|
|
22
|
+
},
|
|
23
|
+
get widgetType() {
|
|
24
|
+
return e().type;
|
|
25
|
+
},
|
|
26
|
+
get x() {
|
|
27
|
+
return e().x;
|
|
28
|
+
},
|
|
29
|
+
get y() {
|
|
30
|
+
return e().y;
|
|
31
|
+
},
|
|
32
|
+
get width() {
|
|
33
|
+
return e().width;
|
|
34
|
+
},
|
|
35
|
+
get height() {
|
|
36
|
+
return e().height;
|
|
37
|
+
},
|
|
38
|
+
get zIndex() {
|
|
39
|
+
return e().z_index;
|
|
40
|
+
},
|
|
41
|
+
itemSnapshot: e,
|
|
42
|
+
get selected() {
|
|
43
|
+
return t.selectedWidgetId === t.widgetId;
|
|
44
|
+
},
|
|
45
|
+
get optimisticFront() {
|
|
46
|
+
return t.optimisticFrontWidgetId === t.widgetId;
|
|
47
|
+
},
|
|
48
|
+
get topZIndex() {
|
|
49
|
+
return t.topZIndex;
|
|
50
|
+
},
|
|
51
|
+
get viewportScale() {
|
|
52
|
+
return t.viewportScale;
|
|
53
|
+
},
|
|
54
|
+
get locked() {
|
|
55
|
+
return t.locked;
|
|
56
|
+
},
|
|
57
|
+
get filtered() {
|
|
58
|
+
return !t.filters[e().type];
|
|
59
|
+
},
|
|
60
|
+
get onSelect() {
|
|
61
|
+
return t.onSelectWidget;
|
|
62
|
+
},
|
|
63
|
+
get onContextMenu() {
|
|
64
|
+
return t.onWidgetContextMenu;
|
|
65
|
+
},
|
|
66
|
+
get onStartOptimisticFront() {
|
|
67
|
+
return t.onStartOptimisticFront;
|
|
68
|
+
},
|
|
69
|
+
get onCommitFront() {
|
|
70
|
+
return t.onCommitFront;
|
|
71
|
+
},
|
|
72
|
+
get onCommitMove() {
|
|
73
|
+
return t.onCommitMove;
|
|
74
|
+
},
|
|
75
|
+
get onCommitResize() {
|
|
76
|
+
return t.onCommitResize;
|
|
77
|
+
},
|
|
78
|
+
get onRequestDelete() {
|
|
79
|
+
return t.onRequestDelete;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
function W(t) {
|
|
84
|
+
const e = r(() => t.widgets.map((n) => n.id)), d = r(() => new Map(t.widgets.map((n) => [n.id, n])));
|
|
85
|
+
return (() => {
|
|
86
|
+
var n = a();
|
|
87
|
+
return n.firstChild, o(n, g(m, {
|
|
88
|
+
get each() {
|
|
89
|
+
return e();
|
|
90
|
+
},
|
|
91
|
+
children: (i) => g(w, {
|
|
92
|
+
widgetId: i,
|
|
93
|
+
get widgetDefinitions() {
|
|
94
|
+
return t.widgetDefinitions;
|
|
95
|
+
},
|
|
96
|
+
get widgets() {
|
|
97
|
+
return t.widgets;
|
|
98
|
+
},
|
|
99
|
+
widgetById: d,
|
|
100
|
+
get selectedWidgetId() {
|
|
101
|
+
return t.selectedWidgetId;
|
|
102
|
+
},
|
|
103
|
+
get optimisticFrontWidgetId() {
|
|
104
|
+
return t.optimisticFrontWidgetId;
|
|
105
|
+
},
|
|
106
|
+
get topZIndex() {
|
|
107
|
+
return t.topZIndex;
|
|
108
|
+
},
|
|
109
|
+
get viewportScale() {
|
|
110
|
+
return t.viewportScale;
|
|
111
|
+
},
|
|
112
|
+
get locked() {
|
|
113
|
+
return t.locked;
|
|
114
|
+
},
|
|
115
|
+
get filters() {
|
|
116
|
+
return t.filters;
|
|
117
|
+
},
|
|
118
|
+
get onSelectWidget() {
|
|
119
|
+
return t.onSelectWidget;
|
|
120
|
+
},
|
|
121
|
+
get onWidgetContextMenu() {
|
|
122
|
+
return t.onWidgetContextMenu;
|
|
123
|
+
},
|
|
124
|
+
get onStartOptimisticFront() {
|
|
125
|
+
return t.onStartOptimisticFront;
|
|
126
|
+
},
|
|
127
|
+
get onCommitFront() {
|
|
128
|
+
return t.onCommitFront;
|
|
129
|
+
},
|
|
130
|
+
get onCommitMove() {
|
|
131
|
+
return t.onCommitMove;
|
|
132
|
+
},
|
|
133
|
+
get onCommitResize() {
|
|
134
|
+
return t.onCommitResize;
|
|
135
|
+
},
|
|
136
|
+
get onRequestDelete() {
|
|
137
|
+
return t.onRequestDelete;
|
|
138
|
+
}
|
|
139
|
+
})
|
|
140
|
+
}), null), n;
|
|
141
|
+
})();
|
|
142
|
+
}
|
|
143
|
+
export {
|
|
144
|
+
W as WorkbenchCanvasField
|
|
145
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type JSX } from 'solid-js';
|
|
2
|
-
import type { WorkbenchWidgetItem, WorkbenchWidgetType } from './types';
|
|
2
|
+
import type { WorkbenchWidgetDefinition, WorkbenchWidgetItem, WorkbenchWidgetType } from './types';
|
|
3
3
|
export interface WorkbenchFilterBarProps {
|
|
4
|
+
widgetDefinitions: readonly WorkbenchWidgetDefinition[];
|
|
4
5
|
widgets: readonly WorkbenchWidgetItem[];
|
|
5
6
|
filters: Record<WorkbenchWidgetType, boolean>;
|
|
6
7
|
/** Solo a single widget type — only this type remains visible. */
|
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
import { insert as
|
|
2
|
-
import { createSignal as O, onCleanup as
|
|
1
|
+
import { insert as v, createComponent as d, effect as D, setAttribute as S, template as I, Portal as F, setStyleProperty as H, delegateEvents as P } from "solid-js/web";
|
|
2
|
+
import { createSignal as O, onCleanup as R, createMemo as B, For as T, Show as X } from "solid-js";
|
|
3
3
|
import { Motion as C } from "../../node_modules/.pnpm/solid-motionone@1.0.4_solid-js@1.9.11/node_modules/solid-motionone/dist/index.js";
|
|
4
4
|
import { easing as y, duration as L } from "../../utils/animations.js";
|
|
5
|
-
import { Layers as
|
|
6
|
-
import { startHotInteraction as
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const X = 5, V = '[data-floe-workbench-canvas-frame="true"]';
|
|
5
|
+
import { Layers as G, Plus as q } from "../icons/index.js";
|
|
6
|
+
import { startHotInteraction as z } from "../../utils/hotInteraction.js";
|
|
7
|
+
var N = /* @__PURE__ */ I("<button type=button class=workbench-dock__item>"), U = /* @__PURE__ */ I('<div class=workbench-dock data-floe-canvas-interactive=true><button type=button class=workbench-dock__item aria-label="Show all widgets"></button><span class=workbench-dock__divider aria-hidden=true>'), V = /* @__PURE__ */ I("<div class=workbench-dock-ghost aria-hidden=true><div class=workbench-dock-ghost__halo></div><div class=workbench-dock-ghost__card><div class=workbench-dock-ghost__icon></div><div class=workbench-dock-ghost__copy><div class=workbench-dock-ghost__title></div><div class=workbench-dock-ghost__hint><span>");
|
|
8
|
+
const x = 5, W = '[data-floe-workbench-canvas-frame="true"]';
|
|
10
9
|
function j(e, l) {
|
|
11
|
-
const a = document.querySelector(
|
|
10
|
+
const a = document.querySelector(W);
|
|
12
11
|
if (!(a instanceof HTMLElement)) return !1;
|
|
13
12
|
const s = a.getBoundingClientRect();
|
|
14
13
|
return e >= s.left && e <= s.right && l >= s.top && l <= s.bottom;
|
|
15
14
|
}
|
|
16
|
-
function
|
|
15
|
+
function p(e) {
|
|
17
16
|
const l = () => e.hoverOffset === -1 ? {
|
|
18
17
|
scale: 1.26,
|
|
19
18
|
y: -6,
|
|
@@ -30,12 +29,12 @@ function J(e) {
|
|
|
30
29
|
scale: 1,
|
|
31
30
|
y: 0,
|
|
32
31
|
x: 0
|
|
33
|
-
}, a = () => e.hoverOffset === -1, s = (
|
|
34
|
-
|
|
32
|
+
}, a = () => e.hoverOffset === -1, s = (o) => {
|
|
33
|
+
o.button === 0 && e.onDragBegin(o, e.type, e.label, e.icon);
|
|
35
34
|
};
|
|
36
35
|
return (() => {
|
|
37
|
-
var
|
|
38
|
-
return
|
|
36
|
+
var o = N();
|
|
37
|
+
return o.$$pointerdown = s, o.addEventListener("pointerleave", () => e.onLeave()), o.addEventListener("pointerenter", () => e.onEnter()), v(o, d(C.span, {
|
|
39
38
|
class: "workbench-dock__tile",
|
|
40
39
|
get animate() {
|
|
41
40
|
return l();
|
|
@@ -54,7 +53,7 @@ function J(e) {
|
|
|
54
53
|
});
|
|
55
54
|
})();
|
|
56
55
|
}
|
|
57
|
-
}), null),
|
|
56
|
+
}), null), v(o, d(C.span, {
|
|
58
57
|
class: "workbench-dock__tooltip",
|
|
59
58
|
get animate() {
|
|
60
59
|
return {
|
|
@@ -71,71 +70,71 @@ function J(e) {
|
|
|
71
70
|
get children() {
|
|
72
71
|
return e.label;
|
|
73
72
|
}
|
|
74
|
-
}), null),
|
|
75
|
-
var
|
|
76
|
-
return
|
|
73
|
+
}), null), D((t) => {
|
|
74
|
+
var h = !!e.active, m = !!a(), f = !!e.isDragging, _ = `${e.label} — click to solo, drag to canvas to create`, b = e.active;
|
|
75
|
+
return h !== t.e && o.classList.toggle("is-active", t.e = h), m !== t.t && o.classList.toggle("is-hovered", t.t = m), f !== t.a && o.classList.toggle("is-source-dragging", t.a = f), _ !== t.o && S(o, "aria-label", t.o = _), b !== t.i && S(o, "aria-pressed", t.i = b), t;
|
|
77
76
|
}, {
|
|
78
77
|
e: void 0,
|
|
79
78
|
t: void 0,
|
|
80
79
|
a: void 0,
|
|
81
80
|
o: void 0,
|
|
82
81
|
i: void 0
|
|
83
|
-
}),
|
|
82
|
+
}), o;
|
|
84
83
|
})();
|
|
85
84
|
}
|
|
86
|
-
function
|
|
87
|
-
const [l, a] = O(null), [s,
|
|
85
|
+
function re(e) {
|
|
86
|
+
const [l, a] = O(null), [s, o] = O(null);
|
|
88
87
|
let t;
|
|
89
|
-
|
|
88
|
+
R(() => {
|
|
90
89
|
t?.abort(), t = void 0, s()?.stopInteraction();
|
|
91
90
|
});
|
|
92
|
-
const
|
|
91
|
+
const h = B(() => e.widgetDefinitions.every((i) => e.filters[i.type])), m = (i) => {
|
|
93
92
|
const r = l();
|
|
94
|
-
return r === null ? 0 : r ===
|
|
95
|
-
},
|
|
93
|
+
return r === null ? 0 : r === i ? -1 : r === i + 1 ? -2 : r === i - 1 ? 1 : 0;
|
|
94
|
+
}, f = (i) => {
|
|
96
95
|
const r = s();
|
|
97
96
|
if (!r) return;
|
|
98
97
|
const n = !r.moved;
|
|
99
|
-
if (r.stopInteraction(),
|
|
98
|
+
if (r.stopInteraction(), o(null), t?.abort(), t = void 0, n) {
|
|
100
99
|
e.onSoloFilter(r.type);
|
|
101
100
|
return;
|
|
102
101
|
}
|
|
103
|
-
|
|
104
|
-
},
|
|
105
|
-
|
|
102
|
+
i && r.overCanvas && e.onCreateAt?.(r.type, r.clientX, r.clientY);
|
|
103
|
+
}, _ = (i, r, n, u) => {
|
|
104
|
+
i.preventDefault(), t?.abort(), o({
|
|
106
105
|
type: r,
|
|
107
106
|
label: n,
|
|
108
107
|
icon: u,
|
|
109
|
-
pointerId:
|
|
110
|
-
startClientX:
|
|
111
|
-
startClientY:
|
|
112
|
-
clientX:
|
|
113
|
-
clientY:
|
|
108
|
+
pointerId: i.pointerId,
|
|
109
|
+
startClientX: i.clientX,
|
|
110
|
+
startClientY: i.clientY,
|
|
111
|
+
clientX: i.clientX,
|
|
112
|
+
clientY: i.clientY,
|
|
114
113
|
moved: !1,
|
|
115
114
|
overCanvas: !1,
|
|
116
|
-
stopInteraction:
|
|
115
|
+
stopInteraction: z({
|
|
117
116
|
kind: "drag",
|
|
118
117
|
cursor: "grabbing"
|
|
119
118
|
})
|
|
120
119
|
});
|
|
121
120
|
const c = new AbortController();
|
|
122
121
|
t = c;
|
|
123
|
-
const k = (
|
|
124
|
-
|
|
125
|
-
if (!
|
|
126
|
-
const
|
|
122
|
+
const k = (g) => {
|
|
123
|
+
o((w) => {
|
|
124
|
+
if (!w || w.pointerId !== g.pointerId) return w;
|
|
125
|
+
const Y = g.clientX - w.startClientX, M = g.clientY - w.startClientY, E = w.moved || Math.abs(Y) > x || Math.abs(M) > x;
|
|
127
126
|
return {
|
|
128
|
-
...
|
|
129
|
-
clientX:
|
|
130
|
-
clientY:
|
|
131
|
-
moved:
|
|
132
|
-
overCanvas:
|
|
127
|
+
...w,
|
|
128
|
+
clientX: g.clientX,
|
|
129
|
+
clientY: g.clientY,
|
|
130
|
+
moved: E,
|
|
131
|
+
overCanvas: E && j(g.clientX, g.clientY)
|
|
133
132
|
};
|
|
134
133
|
});
|
|
135
|
-
}, $ = (
|
|
136
|
-
|
|
137
|
-
}, A = (
|
|
138
|
-
|
|
134
|
+
}, $ = (g) => {
|
|
135
|
+
g.pointerId === i.pointerId && f(!0);
|
|
136
|
+
}, A = (g) => {
|
|
137
|
+
g.pointerId === i.pointerId && f(!1);
|
|
139
138
|
};
|
|
140
139
|
window.addEventListener("pointermove", k, {
|
|
141
140
|
signal: c.signal
|
|
@@ -146,8 +145,8 @@ function ie(e) {
|
|
|
146
145
|
});
|
|
147
146
|
}, b = () => s()?.type ?? null;
|
|
148
147
|
return [(() => {
|
|
149
|
-
var
|
|
150
|
-
return r.nextSibling,
|
|
148
|
+
var i = U(), r = i.firstChild;
|
|
149
|
+
return r.nextSibling, i.addEventListener("pointerleave", () => a(null)), r.$$click = () => e.onShowAll(), r.addEventListener("pointerleave", () => a((n) => n === 0 ? null : n)), r.addEventListener("pointerenter", () => a(0)), v(r, d(C.span, {
|
|
151
150
|
class: "workbench-dock__tile",
|
|
152
151
|
get animate() {
|
|
153
152
|
return {
|
|
@@ -163,11 +162,11 @@ function ie(e) {
|
|
|
163
162
|
};
|
|
164
163
|
},
|
|
165
164
|
get children() {
|
|
166
|
-
return d(
|
|
165
|
+
return d(G, {
|
|
167
166
|
class: "workbench-dock__icon"
|
|
168
167
|
});
|
|
169
168
|
}
|
|
170
|
-
}), null),
|
|
169
|
+
}), null), v(r, d(C.span, {
|
|
171
170
|
class: "workbench-dock__tooltip",
|
|
172
171
|
get animate() {
|
|
173
172
|
return {
|
|
@@ -182,11 +181,13 @@ function ie(e) {
|
|
|
182
181
|
};
|
|
183
182
|
},
|
|
184
183
|
children: "Show all widgets"
|
|
185
|
-
}), null),
|
|
186
|
-
each
|
|
184
|
+
}), null), v(i, d(T, {
|
|
185
|
+
get each() {
|
|
186
|
+
return e.widgetDefinitions;
|
|
187
|
+
},
|
|
187
188
|
children: (n, u) => {
|
|
188
189
|
const c = () => u() + 1;
|
|
189
|
-
return d(
|
|
190
|
+
return d(p, {
|
|
190
191
|
get type() {
|
|
191
192
|
return n.type;
|
|
192
193
|
},
|
|
@@ -200,7 +201,7 @@ function ie(e) {
|
|
|
200
201
|
return e.filters[n.type];
|
|
201
202
|
},
|
|
202
203
|
get hoverOffset() {
|
|
203
|
-
return
|
|
204
|
+
return m(c());
|
|
204
205
|
},
|
|
205
206
|
get isDragging() {
|
|
206
207
|
return b() === n.type;
|
|
@@ -208,39 +209,39 @@ function ie(e) {
|
|
|
208
209
|
onEnter: () => a(c()),
|
|
209
210
|
onLeave: () => a((k) => k === c() ? null : k),
|
|
210
211
|
onSolo: () => e.onSoloFilter(n.type),
|
|
211
|
-
onDragBegin:
|
|
212
|
+
onDragBegin: _
|
|
212
213
|
});
|
|
213
214
|
}
|
|
214
|
-
}), null),
|
|
215
|
-
var u = !!
|
|
215
|
+
}), null), D((n) => {
|
|
216
|
+
var u = !!h(), c = l() === 0, k = h();
|
|
216
217
|
return u !== n.e && r.classList.toggle("is-active", n.e = u), c !== n.t && r.classList.toggle("is-hovered", n.t = c), k !== n.a && S(r, "aria-pressed", n.a = k), n;
|
|
217
218
|
}, {
|
|
218
219
|
e: void 0,
|
|
219
220
|
t: void 0,
|
|
220
221
|
a: void 0
|
|
221
|
-
}),
|
|
222
|
-
})(), d(
|
|
222
|
+
}), i;
|
|
223
|
+
})(), d(X, {
|
|
223
224
|
get when() {
|
|
224
225
|
return s()?.moved ?? !1;
|
|
225
226
|
},
|
|
226
227
|
get children() {
|
|
227
|
-
return d(
|
|
228
|
+
return d(J, {
|
|
228
229
|
state: s
|
|
229
230
|
});
|
|
230
231
|
}
|
|
231
232
|
})];
|
|
232
233
|
}
|
|
233
|
-
function
|
|
234
|
+
function J(e) {
|
|
234
235
|
const l = () => {
|
|
235
236
|
const t = e.state();
|
|
236
237
|
return t ? `translate3d(${t.clientX + 14}px, ${t.clientY - 56}px, 0)` : "translate3d(0px, 0px, 0)";
|
|
237
|
-
}, a = () => e.state()?.overCanvas ?? !1, s = () => e.state()?.label ?? "",
|
|
238
|
+
}, a = () => e.state()?.overCanvas ?? !1, s = () => e.state()?.label ?? "", o = () => e.state()?.icon;
|
|
238
239
|
return d(F, {
|
|
239
240
|
get children() {
|
|
240
|
-
var t =
|
|
241
|
-
return
|
|
241
|
+
var t = V(), h = t.firstChild, m = h.nextSibling, f = m.firstChild, _ = f.nextSibling, b = _.firstChild, i = b.nextSibling, r = i.firstChild;
|
|
242
|
+
return v(f, d(X, {
|
|
242
243
|
get when() {
|
|
243
|
-
return
|
|
244
|
+
return o();
|
|
244
245
|
},
|
|
245
246
|
children: (n) => {
|
|
246
247
|
const u = n();
|
|
@@ -248,9 +249,9 @@ function K(e) {
|
|
|
248
249
|
class: "w-4 h-4"
|
|
249
250
|
});
|
|
250
251
|
}
|
|
251
|
-
})),
|
|
252
|
+
})), v(b, s), v(i, d(q, {
|
|
252
253
|
class: "w-3 h-3"
|
|
253
|
-
}), r),
|
|
254
|
+
}), r), v(r, () => a() ? "Drop to create" : "Drag onto canvas"), D((n) => {
|
|
254
255
|
var u = !!a(), c = l();
|
|
255
256
|
return u !== n.e && t.classList.toggle("is-over-canvas", n.e = u), c !== n.t && H(t, "transform", n.t = c), n;
|
|
256
257
|
}, {
|
|
@@ -260,7 +261,7 @@ function K(e) {
|
|
|
260
261
|
}
|
|
261
262
|
});
|
|
262
263
|
}
|
|
263
|
-
|
|
264
|
+
P(["pointerdown", "click"]);
|
|
264
265
|
export {
|
|
265
|
-
|
|
266
|
+
re as WorkbenchFilterBar
|
|
266
267
|
};
|
|
@@ -1,4 +1,15 @@
|
|
|
1
|
-
import type { WorkbenchState } from './types';
|
|
1
|
+
import type { WorkbenchState, WorkbenchWidgetDefinition, WorkbenchWidgetItem, WorkbenchWidgetType } from './types';
|
|
2
|
+
export interface WorkbenchSurfaceApi {
|
|
3
|
+
ensureWidget: (type: WorkbenchWidgetType, options?: {
|
|
4
|
+
centerViewport?: boolean;
|
|
5
|
+
worldX?: number;
|
|
6
|
+
worldY?: number;
|
|
7
|
+
}) => WorkbenchWidgetItem | null;
|
|
8
|
+
focusWidget: (widget: WorkbenchWidgetItem, options?: {
|
|
9
|
+
centerViewport?: boolean;
|
|
10
|
+
}) => WorkbenchWidgetItem;
|
|
11
|
+
findWidgetByType: (type: WorkbenchWidgetType) => WorkbenchWidgetItem | null;
|
|
12
|
+
}
|
|
2
13
|
export interface WorkbenchSurfaceProps {
|
|
3
14
|
state: () => WorkbenchState;
|
|
4
15
|
setState: (updater: (prev: WorkbenchState) => WorkbenchState) => void;
|
|
@@ -17,5 +28,7 @@ export interface WorkbenchSurfaceProps {
|
|
|
17
28
|
* Optional class added to the surface root for layout integration.
|
|
18
29
|
*/
|
|
19
30
|
class?: string;
|
|
31
|
+
widgetDefinitions?: readonly WorkbenchWidgetDefinition[];
|
|
32
|
+
onApiReady?: (api: WorkbenchSurfaceApi | null) => void;
|
|
20
33
|
}
|
|
21
34
|
export declare function WorkbenchSurface(props: WorkbenchSurfaceProps): import("solid-js").JSX.Element;
|