@floegence/floe-webapp-core 0.36.1 → 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/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.js +54 -60
- package/dist/components/workbench/WorkbenchCanvasField.d.ts +25 -0
- package/dist/components/workbench/WorkbenchCanvasField.js +145 -0
- package/dist/components/workbench/WorkbenchWidget.d.ts +10 -2
- package/dist/components/workbench/WorkbenchWidget.js +74 -74
- package/dist/hooks/useOverlayMask.d.ts +11 -9
- package/dist/hooks/useOverlayMask.js +54 -52
- package/dist/styles.css +1 -1
- package/package.json +1 -1
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import { use as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var s = /* @__PURE__ */ c("<div class=workbench-canvas__field><div class=workbench-canvas__grid aria-hidden=true>"), f = /* @__PURE__ */ c("<div class=workbench-canvas>");
|
|
7
|
-
function b(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) {
|
|
8
6
|
return (() => {
|
|
9
|
-
var t =
|
|
10
|
-
return typeof
|
|
7
|
+
var t = m(), n = e.setCanvasFrameRef;
|
|
8
|
+
return typeof n == "function" ? r(n, t) : e.setCanvasFrameRef = t, o(t, i(u, {
|
|
11
9
|
ariaLabel: "Workbench canvas",
|
|
12
10
|
class: "workbench-canvas__infinite",
|
|
13
11
|
get viewport() {
|
|
@@ -23,61 +21,57 @@ function b(e) {
|
|
|
23
21
|
return e.locked;
|
|
24
22
|
},
|
|
25
23
|
get children() {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
return i(c, {
|
|
25
|
+
get widgetDefinitions() {
|
|
26
|
+
return e.widgetDefinitions;
|
|
27
|
+
},
|
|
28
|
+
get widgets() {
|
|
29
29
|
return e.widgets;
|
|
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
|
-
get onRequestDelete() {
|
|
73
|
-
return e.onRequestDelete;
|
|
74
|
-
}
|
|
75
|
-
})
|
|
76
|
-
}), 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
|
+
});
|
|
77
71
|
}
|
|
78
|
-
})),
|
|
72
|
+
})), a(() => t.classList.toggle("is-locked", !!e.locked)), t;
|
|
79
73
|
})();
|
|
80
74
|
}
|
|
81
75
|
export {
|
|
82
|
-
|
|
76
|
+
C as WorkbenchCanvas
|
|
83
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,8 +1,16 @@
|
|
|
1
1
|
import { type JSX } from 'solid-js';
|
|
2
|
-
import type { WorkbenchWidgetDefinition, WorkbenchWidgetItem } from './types';
|
|
2
|
+
import type { WorkbenchWidgetDefinition, WorkbenchWidgetItem, WorkbenchWidgetType } from './types';
|
|
3
3
|
export interface WorkbenchWidgetProps {
|
|
4
4
|
definition: WorkbenchWidgetDefinition;
|
|
5
|
-
|
|
5
|
+
widgetId: string;
|
|
6
|
+
widgetTitle: string;
|
|
7
|
+
widgetType: WorkbenchWidgetType;
|
|
8
|
+
x: number;
|
|
9
|
+
y: number;
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
zIndex: number;
|
|
13
|
+
itemSnapshot: () => WorkbenchWidgetItem;
|
|
6
14
|
selected: boolean;
|
|
7
15
|
optimisticFront: boolean;
|
|
8
16
|
topZIndex: number;
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import { insert as
|
|
2
|
-
import { createSignal as R, onCleanup as
|
|
1
|
+
import { insert as u, createComponent as v, memo as E, effect as B, setAttribute as G, setStyleProperty as m, template as A, delegateEvents as N } from "solid-js/web";
|
|
2
|
+
import { createSignal as R, onCleanup as O, untrack as I, createMemo as H } from "solid-js";
|
|
3
3
|
import { startHotInteraction as P } from "../../utils/hotInteraction.js";
|
|
4
4
|
import { GripVertical as q, X as V } from "../icons/index.js";
|
|
5
|
-
var Z = /* @__PURE__ */ A('<article class=workbench-widget><header class=workbench-widget__header><button type=button class=workbench-widget__drag aria-label="Drag widget"data-floe-canvas-interactive=true></button><div class=workbench-widget__title-area><span class=workbench-widget__title></span></div><button type=button class=workbench-widget__close aria-label="Remove widget"data-floe-canvas-interactive=true></button></header><div class=workbench-widget__body data-floe-canvas-interactive=true>'), j = /* @__PURE__ */ A('<div class=workbench-widget__resize aria-label="Resize widget"data-floe-canvas-interactive=true><svg class=workbench-widget__resize-glyph viewBox="0 0 12 12"aria-hidden=true><path d="M12 0 L0 12"></path><path d="M12 4 L4 12"></path><path d="M12 8 L8 12">');
|
|
5
|
+
var Z = /* @__PURE__ */ A('<article class=workbench-widget data-floe-dialog-surface-host=true><header class=workbench-widget__header><button type=button class=workbench-widget__drag aria-label="Drag widget"data-floe-canvas-interactive=true></button><div class=workbench-widget__title-area><span class=workbench-widget__title></span></div><button type=button class=workbench-widget__close aria-label="Remove widget"data-floe-canvas-interactive=true></button></header><div class=workbench-widget__body data-floe-canvas-interactive=true>'), j = /* @__PURE__ */ A('<div class=workbench-widget__resize aria-label="Resize widget"data-floe-canvas-interactive=true><svg class=workbench-widget__resize-glyph viewBox="0 0 12 12"aria-hidden=true><path d="M12 0 L0 12"></path><path d="M12 4 L4 12"></path><path d="M12 8 L8 12">');
|
|
6
6
|
const J = 220, K = 160;
|
|
7
7
|
function et(e) {
|
|
8
|
-
const [
|
|
9
|
-
let
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
const [b, x] = R(null), [f, C] = R(null);
|
|
9
|
+
let h, w;
|
|
10
|
+
O(() => {
|
|
11
|
+
h?.abort(), h = void 0, w?.abort(), w = void 0, I(b)?.stopInteraction(), I(f)?.stopInteraction();
|
|
12
12
|
});
|
|
13
|
-
const M = () =>
|
|
14
|
-
const i =
|
|
13
|
+
const M = () => b() !== null, k = () => f() !== null, y = H(() => {
|
|
14
|
+
const i = b();
|
|
15
15
|
return i ? {
|
|
16
16
|
x: i.worldX,
|
|
17
17
|
y: i.worldY
|
|
18
18
|
} : {
|
|
19
|
-
x: e.
|
|
20
|
-
y: e.
|
|
19
|
+
x: e.x,
|
|
20
|
+
y: e.y
|
|
21
21
|
};
|
|
22
|
-
}),
|
|
23
|
-
const i =
|
|
22
|
+
}), _ = H(() => {
|
|
23
|
+
const i = f();
|
|
24
24
|
return i ? {
|
|
25
25
|
width: i.width,
|
|
26
26
|
height: i.height
|
|
27
27
|
} : {
|
|
28
|
-
width: e.
|
|
29
|
-
height: e.
|
|
28
|
+
width: e.width,
|
|
29
|
+
height: e.height
|
|
30
30
|
};
|
|
31
31
|
}), $ = (i) => {
|
|
32
|
-
const o = I(
|
|
32
|
+
const o = I(b);
|
|
33
33
|
if (!o) return;
|
|
34
34
|
const a = {
|
|
35
35
|
x: o.worldX,
|
|
@@ -37,11 +37,11 @@ function et(e) {
|
|
|
37
37
|
}, r = {
|
|
38
38
|
x: o.startWorldX,
|
|
39
39
|
y: o.startWorldY
|
|
40
|
-
},
|
|
41
|
-
e.onCommitFront(e.
|
|
40
|
+
}, l = i && (Math.abs(a.x - r.x) > 1 || Math.abs(a.y - r.y) > 1);
|
|
41
|
+
e.onCommitFront(e.widgetId), l && e.onCommitMove(e.widgetId, a), o.stopInteraction(), x(null), h?.abort(), h = void 0;
|
|
42
42
|
}, F = (i) => {
|
|
43
43
|
if (i.button !== 0 || e.locked) return;
|
|
44
|
-
i.preventDefault(), i.stopPropagation(),
|
|
44
|
+
i.preventDefault(), i.stopPropagation(), h?.abort(), e.onStartOptimisticFront(e.widgetId);
|
|
45
45
|
const o = P({
|
|
46
46
|
kind: "drag",
|
|
47
47
|
cursor: "grabbing"
|
|
@@ -50,10 +50,10 @@ function et(e) {
|
|
|
50
50
|
pointerId: i.pointerId,
|
|
51
51
|
startClientX: i.clientX,
|
|
52
52
|
startClientY: i.clientY,
|
|
53
|
-
startWorldX: e.
|
|
54
|
-
startWorldY: e.
|
|
55
|
-
worldX: e.
|
|
56
|
-
worldY: e.
|
|
53
|
+
startWorldX: e.x,
|
|
54
|
+
startWorldY: e.y,
|
|
55
|
+
worldX: e.x,
|
|
56
|
+
worldY: e.y,
|
|
57
57
|
moved: !1,
|
|
58
58
|
scale: a,
|
|
59
59
|
stopInteraction: o
|
|
@@ -61,39 +61,39 @@ function et(e) {
|
|
|
61
61
|
const r = (t) => {
|
|
62
62
|
x((n) => {
|
|
63
63
|
if (!n || n.pointerId !== t.pointerId) return n;
|
|
64
|
-
const c = n.startWorldX + (t.clientX - n.startClientX) / n.scale,
|
|
64
|
+
const c = n.startWorldX + (t.clientX - n.startClientX) / n.scale, g = n.startWorldY + (t.clientY - n.startClientY) / n.scale;
|
|
65
65
|
return {
|
|
66
66
|
...n,
|
|
67
67
|
worldX: c,
|
|
68
|
-
worldY:
|
|
69
|
-
moved: n.moved || Math.abs(c - n.startWorldX) > 2 || Math.abs(
|
|
68
|
+
worldY: g,
|
|
69
|
+
moved: n.moved || Math.abs(c - n.startWorldX) > 2 || Math.abs(g - n.startWorldY) > 2
|
|
70
70
|
};
|
|
71
71
|
});
|
|
72
|
-
},
|
|
72
|
+
}, l = (t) => {
|
|
73
73
|
t.pointerId === i.pointerId && $(!0);
|
|
74
74
|
}, s = (t) => {
|
|
75
75
|
t.pointerId === i.pointerId && $(!1);
|
|
76
|
-
},
|
|
77
|
-
|
|
78
|
-
signal:
|
|
79
|
-
}), window.addEventListener("pointerup",
|
|
76
|
+
}, d = new AbortController();
|
|
77
|
+
h = d, window.addEventListener("pointermove", r, {
|
|
78
|
+
signal: d.signal
|
|
79
|
+
}), window.addEventListener("pointerup", l, {
|
|
80
80
|
once: !0,
|
|
81
|
-
signal:
|
|
81
|
+
signal: d.signal
|
|
82
82
|
}), window.addEventListener("pointercancel", s, {
|
|
83
83
|
once: !0,
|
|
84
|
-
signal:
|
|
84
|
+
signal: d.signal
|
|
85
85
|
});
|
|
86
|
-
},
|
|
87
|
-
const o = I(
|
|
86
|
+
}, S = (i) => {
|
|
87
|
+
const o = I(f);
|
|
88
88
|
if (!o) return;
|
|
89
89
|
const a = {
|
|
90
90
|
width: o.width,
|
|
91
91
|
height: o.height
|
|
92
92
|
}, r = Math.abs(o.width - o.startWidth) > 1 || Math.abs(o.height - o.startHeight) > 1;
|
|
93
|
-
i && r && e.onCommitResize(e.
|
|
94
|
-
},
|
|
93
|
+
i && r && e.onCommitResize(e.widgetId, a), o.stopInteraction(), C(null), w?.abort(), w = void 0;
|
|
94
|
+
}, T = (i) => {
|
|
95
95
|
if (i.button !== 0 || e.locked) return;
|
|
96
|
-
i.preventDefault(), i.stopPropagation(), w?.abort(), e.onStartOptimisticFront(e.
|
|
96
|
+
i.preventDefault(), i.stopPropagation(), w?.abort(), e.onStartOptimisticFront(e.widgetId);
|
|
97
97
|
const o = P({
|
|
98
98
|
kind: "drag",
|
|
99
99
|
cursor: "nwse-resize"
|
|
@@ -102,77 +102,77 @@ function et(e) {
|
|
|
102
102
|
pointerId: i.pointerId,
|
|
103
103
|
startClientX: i.clientX,
|
|
104
104
|
startClientY: i.clientY,
|
|
105
|
-
startWidth: e.
|
|
106
|
-
startHeight: e.
|
|
107
|
-
width: e.
|
|
108
|
-
height: e.
|
|
105
|
+
startWidth: e.width,
|
|
106
|
+
startHeight: e.height,
|
|
107
|
+
width: e.width,
|
|
108
|
+
height: e.height,
|
|
109
109
|
scale: a,
|
|
110
110
|
stopInteraction: o
|
|
111
111
|
});
|
|
112
112
|
const r = (t) => {
|
|
113
113
|
C((n) => {
|
|
114
114
|
if (!n || n.pointerId !== t.pointerId) return n;
|
|
115
|
-
const c = Math.max(J, n.startWidth + (t.clientX - n.startClientX) / n.scale),
|
|
115
|
+
const c = Math.max(J, n.startWidth + (t.clientX - n.startClientX) / n.scale), g = Math.max(K, n.startHeight + (t.clientY - n.startClientY) / n.scale);
|
|
116
116
|
return {
|
|
117
117
|
...n,
|
|
118
118
|
width: c,
|
|
119
|
-
height:
|
|
119
|
+
height: g
|
|
120
120
|
};
|
|
121
121
|
});
|
|
122
|
-
},
|
|
123
|
-
t.pointerId === i.pointerId &&
|
|
122
|
+
}, l = (t) => {
|
|
123
|
+
t.pointerId === i.pointerId && S(!0);
|
|
124
124
|
}, s = (t) => {
|
|
125
|
-
t.pointerId === i.pointerId &&
|
|
126
|
-
},
|
|
127
|
-
w =
|
|
128
|
-
signal:
|
|
129
|
-
}), window.addEventListener("pointerup",
|
|
125
|
+
t.pointerId === i.pointerId && S(!1);
|
|
126
|
+
}, d = new AbortController();
|
|
127
|
+
w = d, window.addEventListener("pointermove", r, {
|
|
128
|
+
signal: d.signal
|
|
129
|
+
}), window.addEventListener("pointerup", l, {
|
|
130
130
|
once: !0,
|
|
131
|
-
signal:
|
|
131
|
+
signal: d.signal
|
|
132
132
|
}), window.addEventListener("pointercancel", s, {
|
|
133
133
|
once: !0,
|
|
134
|
-
signal:
|
|
134
|
+
signal: d.signal
|
|
135
135
|
});
|
|
136
136
|
};
|
|
137
137
|
return (() => {
|
|
138
|
-
var i = Z(), o = i.firstChild, a = o.firstChild, r = a.nextSibling,
|
|
138
|
+
var i = Z(), o = i.firstChild, a = o.firstChild, r = a.nextSibling, l = r.firstChild, s = r.nextSibling, d = o.nextSibling;
|
|
139
139
|
return i.$$click = () => {
|
|
140
|
-
e.onSelect(e.
|
|
140
|
+
e.onSelect(e.widgetId), e.onCommitFront(e.widgetId);
|
|
141
141
|
}, i.$$contextmenu = (t) => {
|
|
142
|
-
t.preventDefault(), t.stopPropagation(), e.onContextMenu(t, e.
|
|
143
|
-
}, a.$$pointerdown = F,
|
|
142
|
+
t.preventDefault(), t.stopPropagation(), e.onContextMenu(t, e.itemSnapshot());
|
|
143
|
+
}, a.$$pointerdown = F, u(a, v(q, {
|
|
144
144
|
class: "w-3.5 h-3.5"
|
|
145
|
-
})),
|
|
145
|
+
})), u(r, () => {
|
|
146
146
|
const t = e.definition.icon;
|
|
147
|
-
return
|
|
147
|
+
return v(t, {
|
|
148
148
|
class: "w-3.5 h-3.5"
|
|
149
149
|
});
|
|
150
|
-
},
|
|
151
|
-
t.stopPropagation(), t.preventDefault(), e.onRequestDelete(e.
|
|
152
|
-
}, s.$$pointerdown = (t) => t.stopPropagation(),
|
|
150
|
+
}, l), u(l, () => e.widgetTitle), s.$$click = (t) => {
|
|
151
|
+
t.stopPropagation(), t.preventDefault(), e.onRequestDelete(e.widgetId);
|
|
152
|
+
}, s.$$pointerdown = (t) => t.stopPropagation(), u(s, v(V, {
|
|
153
153
|
class: "w-3 h-3"
|
|
154
|
-
})),
|
|
154
|
+
})), u(d, () => {
|
|
155
155
|
const t = e.definition.body;
|
|
156
|
-
return
|
|
156
|
+
return v(t, {
|
|
157
157
|
get widgetId() {
|
|
158
|
-
return e.
|
|
158
|
+
return e.widgetId;
|
|
159
159
|
},
|
|
160
160
|
get title() {
|
|
161
|
-
return e.
|
|
161
|
+
return e.widgetTitle;
|
|
162
162
|
},
|
|
163
163
|
get type() {
|
|
164
|
-
return e.
|
|
164
|
+
return e.widgetType;
|
|
165
165
|
}
|
|
166
166
|
});
|
|
167
|
-
}),
|
|
168
|
-
var t =
|
|
167
|
+
}), u(i, (() => {
|
|
168
|
+
var t = E(() => !!e.locked);
|
|
169
169
|
return () => t() ? null : (() => {
|
|
170
170
|
var n = j();
|
|
171
|
-
return n.$$pointerdown =
|
|
171
|
+
return n.$$pointerdown = T, n;
|
|
172
172
|
})();
|
|
173
|
-
})(), null),
|
|
174
|
-
var n = !!e.selected, c = !!M(),
|
|
175
|
-
return n !== t.e && i.classList.toggle("is-selected", t.e = n), c !== t.t && i.classList.toggle("is-dragging", t.t = c),
|
|
173
|
+
})(), null), B((t) => {
|
|
174
|
+
var n = !!e.selected, c = !!M(), g = !!k(), X = !!e.filtered, z = e.widgetId, Y = `translate(${y().x}px, ${y().y}px)`, W = `${_().width}px`, L = `${_().height}px`, D = M() || k() || e.optimisticFront ? `${e.topZIndex + 1}` : `${e.zIndex}`;
|
|
175
|
+
return n !== t.e && i.classList.toggle("is-selected", t.e = n), c !== t.t && i.classList.toggle("is-dragging", t.t = c), g !== t.a && i.classList.toggle("is-resizing", t.a = g), X !== t.o && i.classList.toggle("is-filtered-out", t.o = X), z !== t.i && G(i, "data-floe-workbench-widget-id", t.i = z), Y !== t.n && m(i, "transform", t.n = Y), W !== t.s && m(i, "width", t.s = W), L !== t.h && m(i, "height", t.h = L), D !== t.r && m(i, "z-index", t.r = D), t;
|
|
176
176
|
}, {
|
|
177
177
|
e: void 0,
|
|
178
178
|
t: void 0,
|
|
@@ -186,7 +186,7 @@ function et(e) {
|
|
|
186
186
|
}), i;
|
|
187
187
|
})();
|
|
188
188
|
}
|
|
189
|
-
|
|
189
|
+
N(["contextmenu", "click", "pointerdown"]);
|
|
190
190
|
export {
|
|
191
191
|
et as WorkbenchWidget
|
|
192
192
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type Accessor } from 'solid-js';
|
|
2
2
|
export type OverlayScrollBlockMode = 'none' | 'outside' | 'all';
|
|
3
3
|
export type OverlayEscapeCloseMode = 'none' | 'inside' | 'always';
|
|
4
|
+
type MaybeAccessor<T> = T | Accessor<T>;
|
|
4
5
|
export interface UseOverlayMaskOptions {
|
|
5
6
|
open: Accessor<boolean>;
|
|
6
7
|
root: Accessor<HTMLElement | undefined>;
|
|
@@ -10,17 +11,17 @@ export interface UseOverlayMaskOptions {
|
|
|
10
11
|
/** Optional alternate close path for Escape pressed outside the overlay surface. */
|
|
11
12
|
onEscapeOutside?: () => void;
|
|
12
13
|
/** Lock `document.body` scroll while the overlay is open (default: true). */
|
|
13
|
-
lockBodyScroll?: boolean
|
|
14
|
+
lockBodyScroll?: MaybeAccessor<boolean | undefined>;
|
|
14
15
|
/** Prevent scroll via wheel events (default: none). */
|
|
15
|
-
blockWheel?: OverlayScrollBlockMode
|
|
16
|
+
blockWheel?: MaybeAccessor<OverlayScrollBlockMode | undefined>;
|
|
16
17
|
/** Prevent scroll via touch-move events (default: none). */
|
|
17
|
-
blockTouchMove?: OverlayScrollBlockMode
|
|
18
|
+
blockTouchMove?: MaybeAccessor<OverlayScrollBlockMode | undefined>;
|
|
18
19
|
/** Keep tab focus within the overlay root (default: true). */
|
|
19
|
-
trapFocus?: boolean
|
|
20
|
+
trapFocus?: MaybeAccessor<boolean | undefined>;
|
|
20
21
|
/** Close on Escape and never leak to underlying window handlers (default: always). */
|
|
21
|
-
closeOnEscape?: boolean | OverlayEscapeCloseMode
|
|
22
|
+
closeOnEscape?: MaybeAccessor<boolean | OverlayEscapeCloseMode | undefined>;
|
|
22
23
|
/** Stop bubbling keydown events to window-level hotkeys (default: true). */
|
|
23
|
-
blockHotkeys?: boolean
|
|
24
|
+
blockHotkeys?: MaybeAccessor<boolean | undefined>;
|
|
24
25
|
/**
|
|
25
26
|
* Allow a small set of global keybinds to continue bubbling to window-level handlers
|
|
26
27
|
* while the overlay is focused. This is primarily used by floating overlays that must
|
|
@@ -28,10 +29,11 @@ export interface UseOverlayMaskOptions {
|
|
|
28
29
|
*/
|
|
29
30
|
allowHotkeys?: readonly string[] | Accessor<readonly string[] | undefined>;
|
|
30
31
|
/** Auto-focus on open (default: true). */
|
|
31
|
-
autoFocus?: boolean | {
|
|
32
|
+
autoFocus?: MaybeAccessor<boolean | {
|
|
32
33
|
selector?: string;
|
|
33
|
-
}
|
|
34
|
+
} | undefined>;
|
|
34
35
|
/** Restore focus to the previously active element on close (default: true). */
|
|
35
|
-
restoreFocus?: boolean
|
|
36
|
+
restoreFocus?: MaybeAccessor<boolean | undefined>;
|
|
36
37
|
}
|
|
37
38
|
export declare function useOverlayMask(options: UseOverlayMaskOptions): void;
|
|
39
|
+
export {};
|