geonodes-web-render 0.3.24 → 0.3.26
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/README.md +8 -0
- package/dist/embed.js +169 -166
- package/dist/types/embed.d.ts +3 -0
- package/dist/types/gn/components/GeometryNodesFlow.d.ts +3 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -79,6 +79,14 @@ Set `showCopyButton={false}` (or `{ payload, showCopyButton: false }` for
|
|
|
79
79
|
`mountGraphView`) to hide the "Copy TreeClipper Magic String" button and disable
|
|
80
80
|
the right-click copy action. Defaults to `true`.
|
|
81
81
|
|
|
82
|
+
Set `allowSelection={false}` to disable node selection (left-drag pans instead
|
|
83
|
+
of box-selecting). Defaults to `true`. Combine both for a read-only pan/zoom
|
|
84
|
+
viewer:
|
|
85
|
+
|
|
86
|
+
```tsx
|
|
87
|
+
<GraphView payload="TreeClipper::H4sI..." showCopyButton={false} allowSelection={false} />
|
|
88
|
+
```
|
|
89
|
+
|
|
82
90
|
> **Preview the embed locally.** The embed view (with the "Copy TreeClipper
|
|
83
91
|
> Magic String" button and toast) isn't reachable from the standalone app, so a
|
|
84
92
|
> dev-only harness page is included. Run `npm run dev` and open
|
package/dist/embed.js
CHANGED
|
@@ -265,18 +265,18 @@ function ie(e) {
|
|
|
265
265
|
function ae() {
|
|
266
266
|
return this.firstElementChild;
|
|
267
267
|
}
|
|
268
|
-
function
|
|
268
|
+
function oe(e) {
|
|
269
269
|
return this.select(e == null ? ae : ie(typeof e == "function" ? e : ne(e)));
|
|
270
270
|
}
|
|
271
271
|
//#endregion
|
|
272
272
|
//#region node_modules/d3-selection/src/selection/selectChildren.js
|
|
273
|
-
var
|
|
273
|
+
var K = Array.prototype.filter;
|
|
274
274
|
function se() {
|
|
275
275
|
return Array.from(this.children);
|
|
276
276
|
}
|
|
277
277
|
function ce(e) {
|
|
278
278
|
return function() {
|
|
279
|
-
return
|
|
279
|
+
return K.call(this.children, e);
|
|
280
280
|
};
|
|
281
281
|
}
|
|
282
282
|
function le(e) {
|
|
@@ -773,7 +773,7 @@ It.prototype = Lt.prototype = {
|
|
|
773
773
|
constructor: It,
|
|
774
774
|
select: V,
|
|
775
775
|
selectAll: ee,
|
|
776
|
-
selectChild:
|
|
776
|
+
selectChild: oe,
|
|
777
777
|
selectChildren: le,
|
|
778
778
|
filter: ue,
|
|
779
779
|
data: ve,
|
|
@@ -6316,9 +6316,9 @@ function Hu({ id: e, edgesFocusable: t, edgesReconnectable: n, elementsSelectabl
|
|
|
6316
6316
|
s(e, { ...T });
|
|
6317
6317
|
} : void 0, ae = c ? (e) => {
|
|
6318
6318
|
c(e, { ...T });
|
|
6319
|
-
} : void 0,
|
|
6319
|
+
} : void 0, oe = l ? (e) => {
|
|
6320
6320
|
l(e, { ...T });
|
|
6321
|
-
} : void 0,
|
|
6321
|
+
} : void 0, K = p ? (e) => {
|
|
6322
6322
|
p(e, { ...T });
|
|
6323
6323
|
} : void 0;
|
|
6324
6324
|
return g("svg", {
|
|
@@ -6341,8 +6341,8 @@ function Hu({ id: e, edgesFocusable: t, edgesReconnectable: n, elementsSelectabl
|
|
|
6341
6341
|
onDoubleClick: re,
|
|
6342
6342
|
onContextMenu: ie,
|
|
6343
6343
|
onMouseEnter: ae,
|
|
6344
|
-
onMouseMove:
|
|
6345
|
-
onMouseLeave:
|
|
6344
|
+
onMouseMove: oe,
|
|
6345
|
+
onMouseLeave: K,
|
|
6346
6346
|
onKeyDown: A ? (t) => {
|
|
6347
6347
|
if (!w && ya.includes(t.key) && M) {
|
|
6348
6348
|
let { unselectNodesAndEdges: n, addSelectedEdges: r } = R.getState();
|
|
@@ -6582,7 +6582,7 @@ function od() {
|
|
|
6582
6582
|
}
|
|
6583
6583
|
}, []);
|
|
6584
6584
|
}
|
|
6585
|
-
function sd({ nodeTypes: e, edgeTypes: t, onInit: n, onNodeClick: r, onEdgeClick: i, onNodeDoubleClick: a, onEdgeDoubleClick: o, onNodeMouseEnter: s, onNodeMouseMove: c, onNodeMouseLeave: l, onNodeContextMenu: u, onSelectionContextMenu: d, onSelectionStart: f, onSelectionEnd: p, connectionLineType: m, connectionLineStyle: h, connectionLineComponent: v, connectionLineContainerStyle: y, selectionKeyCode: b, selectionOnDrag: x, selectionMode: S, multiSelectionKeyCode: C, panActivationKeyCode: w, zoomActivationKeyCode: T, deleteKeyCode: E, onlyRenderVisibleElements: D, elementsSelectable: O, defaultViewport: k, translateExtent: A, minZoom: j, maxZoom: M, preventScrolling: N, defaultMarkerColor: P, zoomOnScroll: F, zoomOnPinch: I, panOnScroll: L, panOnScrollSpeed: R, panOnScrollMode: z, zoomOnDoubleClick: B, panOnDrag: V, autoPanOnSelection: H, onPaneClick: U, onPaneMouseEnter: W, onPaneMouseMove: G, onPaneMouseLeave: ee, onPaneScroll: te, onPaneContextMenu: ne, paneClickDistance: re, nodeClickDistance: ie, onEdgeContextMenu: ae, onEdgeMouseEnter:
|
|
6585
|
+
function sd({ nodeTypes: e, edgeTypes: t, onInit: n, onNodeClick: r, onEdgeClick: i, onNodeDoubleClick: a, onEdgeDoubleClick: o, onNodeMouseEnter: s, onNodeMouseMove: c, onNodeMouseLeave: l, onNodeContextMenu: u, onSelectionContextMenu: d, onSelectionStart: f, onSelectionEnd: p, connectionLineType: m, connectionLineStyle: h, connectionLineComponent: v, connectionLineContainerStyle: y, selectionKeyCode: b, selectionOnDrag: x, selectionMode: S, multiSelectionKeyCode: C, panActivationKeyCode: w, zoomActivationKeyCode: T, deleteKeyCode: E, onlyRenderVisibleElements: D, elementsSelectable: O, defaultViewport: k, translateExtent: A, minZoom: j, maxZoom: M, preventScrolling: N, defaultMarkerColor: P, zoomOnScroll: F, zoomOnPinch: I, panOnScroll: L, panOnScrollSpeed: R, panOnScrollMode: z, zoomOnDoubleClick: B, panOnDrag: V, autoPanOnSelection: H, onPaneClick: U, onPaneMouseEnter: W, onPaneMouseMove: G, onPaneMouseLeave: ee, onPaneScroll: te, onPaneContextMenu: ne, paneClickDistance: re, nodeClickDistance: ie, onEdgeContextMenu: ae, onEdgeMouseEnter: oe, onEdgeMouseMove: K, onEdgeMouseLeave: se, reconnectRadius: ce, onReconnect: le, onReconnectStart: ue, onReconnectEnd: de, noDragClassName: fe, noWheelClassName: pe, noPanClassName: me, disableKeyboardA11y: he, nodeExtent: ge, rfId: _e, viewport: ve, onViewportChange: ye }) {
|
|
6586
6586
|
return ad(e), ad(t), od(), Yu(n), Zu(ve), g(Xl, {
|
|
6587
6587
|
onPaneClick: U,
|
|
6588
6588
|
onPaneMouseEnter: W,
|
|
@@ -6631,8 +6631,8 @@ function sd({ nodeTypes: e, edgeTypes: t, onInit: n, onNodeClick: r, onEdgeClick
|
|
|
6631
6631
|
onReconnectEnd: de,
|
|
6632
6632
|
onlyRenderVisibleElements: D,
|
|
6633
6633
|
onEdgeContextMenu: ae,
|
|
6634
|
-
onEdgeMouseEnter:
|
|
6635
|
-
onEdgeMouseMove:
|
|
6634
|
+
onEdgeMouseEnter: oe,
|
|
6635
|
+
onEdgeMouseMove: K,
|
|
6636
6636
|
onEdgeMouseLeave: se,
|
|
6637
6637
|
reconnectRadius: ce,
|
|
6638
6638
|
defaultMarkerColor: P,
|
|
@@ -7004,7 +7004,7 @@ var md = {
|
|
|
7004
7004
|
position: "relative",
|
|
7005
7005
|
zIndex: 0
|
|
7006
7006
|
};
|
|
7007
|
-
function hd({ nodes: e, edges: t, defaultNodes: n, defaultEdges: r, className: i, nodeTypes: o, edgeTypes: s, onNodeClick: c, onEdgeClick: l, onInit: u, onMove: d, onMoveStart: f, onMoveEnd: p, onConnect: m, onConnectStart: h, onConnectEnd: v, onClickConnectStart: y, onClickConnectEnd: b, onNodeMouseEnter: x, onNodeMouseMove: S, onNodeMouseLeave: C, onNodeContextMenu: w, onNodeDoubleClick: T, onNodeDragStart: E, onNodeDrag: O, onNodeDragStop: k, onNodesDelete: A, onEdgesDelete: j, onDelete: M, onSelectionChange: N, onSelectionDragStart: P, onSelectionDrag: F, onSelectionDragStop: I, onSelectionContextMenu: L, onSelectionStart: R, onSelectionEnd: z, onBeforeDelete: B, connectionMode: V, connectionLineType: H = Ta.Bezier, connectionLineStyle: U, connectionLineComponent: W, connectionLineContainerStyle: G, deleteKeyCode: ee = "Backspace", selectionKeyCode: te = "Shift", selectionOnDrag: ne = !1, selectionMode: re = Ca.Full, panActivationKeyCode: ie = "Space", multiSelectionKeyCode: ae = lo() ? "Meta" : "Control", zoomActivationKeyCode:
|
|
7007
|
+
function hd({ nodes: e, edges: t, defaultNodes: n, defaultEdges: r, className: i, nodeTypes: o, edgeTypes: s, onNodeClick: c, onEdgeClick: l, onInit: u, onMove: d, onMoveStart: f, onMoveEnd: p, onConnect: m, onConnectStart: h, onConnectEnd: v, onClickConnectStart: y, onClickConnectEnd: b, onNodeMouseEnter: x, onNodeMouseMove: S, onNodeMouseLeave: C, onNodeContextMenu: w, onNodeDoubleClick: T, onNodeDragStart: E, onNodeDrag: O, onNodeDragStop: k, onNodesDelete: A, onEdgesDelete: j, onDelete: M, onSelectionChange: N, onSelectionDragStart: P, onSelectionDrag: F, onSelectionDragStop: I, onSelectionContextMenu: L, onSelectionStart: R, onSelectionEnd: z, onBeforeDelete: B, connectionMode: V, connectionLineType: H = Ta.Bezier, connectionLineStyle: U, connectionLineComponent: W, connectionLineContainerStyle: G, deleteKeyCode: ee = "Backspace", selectionKeyCode: te = "Shift", selectionOnDrag: ne = !1, selectionMode: re = Ca.Full, panActivationKeyCode: ie = "Space", multiSelectionKeyCode: ae = lo() ? "Meta" : "Control", zoomActivationKeyCode: oe = lo() ? "Meta" : "Control", snapToGrid: K, snapGrid: se, onlyRenderVisibleElements: ce = !1, selectNodesOnDrag: le, nodesDraggable: ue, autoPanOnNodeFocus: de, nodesConnectable: fe, nodesFocusable: pe, nodeOrigin: me = Fc, edgesFocusable: he, edgesReconnectable: ge, elementsSelectable: _e = !0, defaultViewport: ve = Ic, minZoom: ye = .5, maxZoom: be = 2, translateExtent: xe = va, preventScrolling: Se = !0, nodeExtent: Ce, defaultMarkerColor: we = "#b1b1b7", zoomOnScroll: Te = !0, zoomOnPinch: Ee = !0, panOnScroll: De = !1, panOnScrollSpeed: Oe = .5, panOnScrollMode: ke = Sa.Free, zoomOnDoubleClick: Ae = !0, panOnDrag: je = !0, onPaneClick: Me, onPaneMouseEnter: Ne, onPaneMouseMove: Pe, onPaneMouseLeave: Fe, onPaneScroll: Ie, onPaneContextMenu: Le, paneClickDistance: Re = 1, nodeClickDistance: ze = 0, children: Be, onReconnect: Ve, onReconnectStart: He, onReconnectEnd: Ue, onEdgeContextMenu: We, onEdgeDoubleClick: Ge, onEdgeMouseEnter: Ke, onEdgeMouseMove: qe, onEdgeMouseLeave: Je, reconnectRadius: Ye = 10, onNodesChange: Xe, onEdgesChange: Ze, noDragClassName: Qe = "nodrag", noWheelClassName: $e = "nowheel", noPanClassName: et = "nopan", fitView: tt, fitViewOptions: nt, connectOnClick: rt, attributionPosition: it, proOptions: at, defaultEdgeOptions: ot, elevateNodesOnSelect: st = !0, elevateEdgesOnSelect: ct = !1, disableKeyboardA11y: lt = !1, autoPanOnConnect: ut, autoPanOnNodeDrag: dt, autoPanOnSelection: ft = !0, autoPanSpeed: pt, connectionRadius: mt, isValidConnection: ht, onError: gt, style: _t, id: vt, nodeDragThreshold: yt, connectionDragThreshold: bt, viewport: xt, onViewportChange: St, width: Ct, height: wt, colorMode: Tt = "light", debug: Et, onScroll: Dt, ariaLabelConfig: Ot, zIndexMode: kt = "basic", ...At }, jt) {
|
|
7008
7008
|
let Mt = vt || "1", Nt = Hc(Tt), Pt = a((e) => {
|
|
7009
7009
|
e.currentTarget.scrollTo({
|
|
7010
7010
|
top: 0,
|
|
@@ -7065,7 +7065,7 @@ function hd({ nodes: e, edges: t, defaultNodes: n, defaultEdges: r, className: i
|
|
|
7065
7065
|
nodeExtent: Ce,
|
|
7066
7066
|
onNodesChange: Xe,
|
|
7067
7067
|
onEdgesChange: Ze,
|
|
7068
|
-
snapToGrid:
|
|
7068
|
+
snapToGrid: K,
|
|
7069
7069
|
snapGrid: se,
|
|
7070
7070
|
connectionMode: V,
|
|
7071
7071
|
translateExtent: xe,
|
|
@@ -7123,7 +7123,7 @@ function hd({ nodes: e, edges: t, defaultNodes: n, defaultEdges: r, className: i
|
|
|
7123
7123
|
deleteKeyCode: ee,
|
|
7124
7124
|
multiSelectionKeyCode: ae,
|
|
7125
7125
|
panActivationKeyCode: ie,
|
|
7126
|
-
zoomActivationKeyCode:
|
|
7126
|
+
zoomActivationKeyCode: oe,
|
|
7127
7127
|
onlyRenderVisibleElements: ce,
|
|
7128
7128
|
defaultViewport: ve,
|
|
7129
7129
|
translateExtent: xe,
|
|
@@ -7515,13 +7515,13 @@ function Xd({ style: e, className: t, nodeStrokeColor: n, nodeColor: r, nodeClas
|
|
|
7515
7515
|
P,
|
|
7516
7516
|
F
|
|
7517
7517
|
]);
|
|
7518
|
-
let
|
|
7518
|
+
let oe = v ? (e) => {
|
|
7519
7519
|
let [t, n] = ae.current?.pointer(e) || [0, 0];
|
|
7520
7520
|
v(e, {
|
|
7521
7521
|
x: t,
|
|
7522
7522
|
y: n
|
|
7523
7523
|
});
|
|
7524
|
-
} : void 0,
|
|
7524
|
+
} : void 0, K = y ? a((e, t) => {
|
|
7525
7525
|
let n = E.getState().nodeLookup.get(t).internals.userNode;
|
|
7526
7526
|
y(e, n);
|
|
7527
7527
|
}, []) : void 0, se = S ?? I["minimap.ariaLabel"];
|
|
@@ -7547,14 +7547,14 @@ function Xd({ style: e, className: t, nodeStrokeColor: n, nodeColor: r, nodeClas
|
|
|
7547
7547
|
role: "img",
|
|
7548
7548
|
"aria-labelledby": re,
|
|
7549
7549
|
ref: O,
|
|
7550
|
-
onClick:
|
|
7550
|
+
onClick: oe,
|
|
7551
7551
|
children: [
|
|
7552
7552
|
se && g("title", {
|
|
7553
7553
|
id: re,
|
|
7554
7554
|
children: se
|
|
7555
7555
|
}),
|
|
7556
7556
|
g(Wd, {
|
|
7557
|
-
onClick:
|
|
7557
|
+
onClick: K,
|
|
7558
7558
|
nodeColor: r,
|
|
7559
7559
|
nodeStrokeColor: n,
|
|
7560
7560
|
nodeBorderRadius: o,
|
|
@@ -8178,7 +8178,7 @@ function Df(e) {
|
|
|
8178
8178
|
}
|
|
8179
8179
|
return r;
|
|
8180
8180
|
}
|
|
8181
|
-
function Of(e, t) {
|
|
8181
|
+
function Of(e, t, n) {
|
|
8182
8182
|
if (e.type === "NodeReroute") {
|
|
8183
8183
|
let t = e.outputs[0]?.color ?? e.inputs[0]?.color ?? "#888888";
|
|
8184
8184
|
return {
|
|
@@ -8196,6 +8196,7 @@ function Of(e, t) {
|
|
|
8196
8196
|
}
|
|
8197
8197
|
};
|
|
8198
8198
|
}
|
|
8199
|
+
let r = e.type === "NodeGroupInput" ? e.outputs.filter((e) => n.has(e.id)) : e.outputs;
|
|
8199
8200
|
return {
|
|
8200
8201
|
id: e.id,
|
|
8201
8202
|
type: "gnNode",
|
|
@@ -8209,7 +8210,7 @@ function Of(e, t) {
|
|
|
8209
8210
|
width: e.width,
|
|
8210
8211
|
headerColor: e.headerColor,
|
|
8211
8212
|
inputs: e.inputs,
|
|
8212
|
-
outputs:
|
|
8213
|
+
outputs: r,
|
|
8213
8214
|
connectedInputIds: e.inputs.filter((e) => t.has(e.id)).map((e) => e.id),
|
|
8214
8215
|
floatCurve: e.floatCurve,
|
|
8215
8216
|
colorRamp: e.colorRamp,
|
|
@@ -8244,20 +8245,20 @@ function kf(e, t, n) {
|
|
|
8244
8245
|
return l;
|
|
8245
8246
|
}
|
|
8246
8247
|
function Af(e) {
|
|
8247
|
-
let t = new Set(e.edges.map((e) => e.targetSocketId)), n =
|
|
8248
|
-
if (
|
|
8249
|
-
let t = kf(
|
|
8248
|
+
let t = new Set(e.edges.map((e) => e.targetSocketId)), n = new Set(e.edges.map((e) => e.sourceSocketId)), r = Df(e), i = e.nodes.filter((e) => e.type !== "NodeFrame").map((e) => Of(e, t, n)), a = e.nodes.find((e) => e.type === "GeometryNodeSimulationInput"), o = e.nodes.find((e) => e.type === "GeometryNodeSimulationOutput"), s = i;
|
|
8249
|
+
if (a && o) {
|
|
8250
|
+
let t = kf(a.id, o.id, e);
|
|
8250
8251
|
if (t.size > 0) {
|
|
8251
|
-
let n = new Map(e.nodes.map((e) => [e.id, e])),
|
|
8252
|
+
let n = new Map(e.nodes.map((e) => [e.id, e])), r = Infinity, c = -Infinity;
|
|
8252
8253
|
for (let e of t) {
|
|
8253
8254
|
let t = n.get(e);
|
|
8254
|
-
t && (
|
|
8255
|
+
t && (r = Math.min(r, t.position.y), c = Math.max(c, t.position.y + Tf(t)));
|
|
8255
8256
|
}
|
|
8256
|
-
let l =
|
|
8257
|
-
if (Number.isFinite(
|
|
8258
|
-
let e = d, t =
|
|
8259
|
-
|
|
8260
|
-
id: `zone:simulation:${
|
|
8257
|
+
let l = a.position.x + a.width / 2, u = o.position.x + o.width / 2, d = Math.min(l, u), f = Math.max(l, u);
|
|
8258
|
+
if (Number.isFinite(r) && Number.isFinite(c) && Number.isFinite(d) && Number.isFinite(f)) {
|
|
8259
|
+
let e = d, t = r - 26, n = f - d, o = c - r + 52;
|
|
8260
|
+
s = [{
|
|
8261
|
+
id: `zone:simulation:${a.id}`,
|
|
8261
8262
|
type: "simulationZone",
|
|
8262
8263
|
position: {
|
|
8263
8264
|
x: e,
|
|
@@ -8269,15 +8270,15 @@ function Af(e) {
|
|
|
8269
8270
|
data: {},
|
|
8270
8271
|
style: {
|
|
8271
8272
|
width: n,
|
|
8272
|
-
height:
|
|
8273
|
+
height: o,
|
|
8273
8274
|
zIndex: -10
|
|
8274
8275
|
}
|
|
8275
|
-
}, ...
|
|
8276
|
+
}, ...i];
|
|
8276
8277
|
}
|
|
8277
8278
|
}
|
|
8278
8279
|
}
|
|
8279
8280
|
return {
|
|
8280
|
-
nodes: [...
|
|
8281
|
+
nodes: [...r, ...s],
|
|
8281
8282
|
edges: e.edges.map((e) => ({
|
|
8282
8283
|
id: e.id,
|
|
8283
8284
|
source: e.sourceNodeId,
|
|
@@ -8899,129 +8900,129 @@ var gp = {
|
|
|
8899
8900
|
nodeFrame: hp
|
|
8900
8901
|
}, _p = { padding: .08 };
|
|
8901
8902
|
function vp(e) {
|
|
8902
|
-
let { nodes: t, edges: n, jsonText: r, breadcrumbs: i, onNavigate: o, onSelectionIds: s, onCopiedMagicString: l, interaction: u = "always", allowCopy: p = !0 } = e, { fitView:
|
|
8903
|
+
let { nodes: t, edges: n, jsonText: r, breadcrumbs: i, onNavigate: o, onSelectionIds: s, onCopiedMagicString: l, interaction: u = "always", allowCopy: p = !0, allowSelection: m = !0 } = e, { fitView: h, getNodes: v, getNodesBounds: y } = ml(), b = bd(), x = d(null), S = d(!1), C = d([]), [w, D] = f(null), [O, k] = f(!1), [A, j] = f(!1), M = d(null), [N, P] = f("mouse"), F = d(-Infinity), [I, L] = f(!1), [R, z] = f(!1), B = d([]), [V, H, U] = _d(t), [W, G, ee] = vd(n), [te, ne] = f(void 0);
|
|
8903
8904
|
c(() => {
|
|
8904
|
-
if (!
|
|
8905
|
-
let e = v(
|
|
8906
|
-
|
|
8905
|
+
if (!b) return;
|
|
8906
|
+
let e = y(v());
|
|
8907
|
+
ne([[e.x, e.y], [e.x + e.width, e.y + e.height]]);
|
|
8907
8908
|
}, [
|
|
8908
|
-
|
|
8909
|
+
b,
|
|
8909
8910
|
t,
|
|
8910
|
-
|
|
8911
|
-
|
|
8911
|
+
v,
|
|
8912
|
+
y
|
|
8912
8913
|
]), c(() => {
|
|
8913
|
-
|
|
8914
|
+
H(t), s?.([]), S.current = !1, h(_p);
|
|
8914
8915
|
}, [
|
|
8915
8916
|
t,
|
|
8916
|
-
|
|
8917
|
+
H,
|
|
8917
8918
|
s,
|
|
8918
|
-
|
|
8919
|
+
h
|
|
8919
8920
|
]), c(() => {
|
|
8920
|
-
|
|
8921
|
-
}, [n,
|
|
8922
|
-
let e =
|
|
8921
|
+
G(n);
|
|
8922
|
+
}, [n, G]), c(() => {
|
|
8923
|
+
let e = x.current;
|
|
8923
8924
|
if (!e) return;
|
|
8924
8925
|
let t = new ResizeObserver(() => {
|
|
8925
|
-
|
|
8926
|
+
S.current || h(_p);
|
|
8926
8927
|
});
|
|
8927
8928
|
return t.observe(e), () => t.disconnect();
|
|
8928
|
-
}, [
|
|
8929
|
-
let
|
|
8930
|
-
e && (
|
|
8931
|
-
}, []),
|
|
8929
|
+
}, [h]);
|
|
8930
|
+
let re = a((e) => {
|
|
8931
|
+
e && (S.current = !0);
|
|
8932
|
+
}, []), ie = a(({ nodes: e }) => {
|
|
8932
8933
|
let t = e.map((e) => e.id);
|
|
8933
|
-
|
|
8934
|
-
}, [s]),
|
|
8934
|
+
C.current = t, s?.(t);
|
|
8935
|
+
}, [s]), ae = a((e) => {
|
|
8935
8936
|
if (!p) return;
|
|
8936
8937
|
e.preventDefault();
|
|
8937
|
-
let t =
|
|
8938
|
-
|
|
8938
|
+
let t = x.current?.getBoundingClientRect();
|
|
8939
|
+
D({
|
|
8939
8940
|
x: e.clientX - (t?.left ?? 0),
|
|
8940
8941
|
y: e.clientY - (t?.top ?? 0)
|
|
8941
8942
|
});
|
|
8942
|
-
}, [p]),
|
|
8943
|
-
|
|
8943
|
+
}, [p]), oe = a(async () => {
|
|
8944
|
+
D(null);
|
|
8944
8945
|
try {
|
|
8945
|
-
let e = JSON.parse(r), t = new Set(
|
|
8946
|
+
let e = JSON.parse(r), t = new Set(C.current.map(Number).filter(Number.isFinite)), n = t.size > 0 ? E(e, t) : e, i = await T(JSON.stringify(n));
|
|
8946
8947
|
if (await navigator.clipboard.writeText(i), l) {
|
|
8947
8948
|
l();
|
|
8948
8949
|
return;
|
|
8949
8950
|
}
|
|
8950
|
-
|
|
8951
|
-
|
|
8951
|
+
B.current.forEach(clearTimeout), z(!1), L(!0), B.current = [setTimeout(() => z(!0), 2500), setTimeout(() => {
|
|
8952
|
+
L(!1), z(!1);
|
|
8952
8953
|
}, 3e3)];
|
|
8953
8954
|
} catch {}
|
|
8954
8955
|
}, [r, l]);
|
|
8955
|
-
c(() => () =>
|
|
8956
|
-
|
|
8956
|
+
c(() => () => B.current.forEach(clearTimeout), []), c(() => () => {
|
|
8957
|
+
M.current && clearTimeout(M.current);
|
|
8957
8958
|
}, []);
|
|
8958
|
-
let K = u === "hybrid",
|
|
8959
|
+
let K = u === "hybrid", se = u === "always" || K && O, ce = se && N === "mouse", le = se && N === "trackpad", ue = m ? [1] : [0, 1], de = m;
|
|
8959
8960
|
c(() => {
|
|
8960
|
-
let e =
|
|
8961
|
+
let e = x.current;
|
|
8961
8962
|
if (!e) return;
|
|
8962
8963
|
let t = (e) => {
|
|
8963
8964
|
if (!e.ctrlKey) {
|
|
8964
|
-
e.deltaX !== 0 && (
|
|
8965
|
-
let t = e.timeStamp -
|
|
8966
|
-
|
|
8965
|
+
e.deltaX !== 0 && (F.current = e.timeStamp);
|
|
8966
|
+
let t = e.timeStamp - F.current < 400 ? "trackpad" : "mouse";
|
|
8967
|
+
P((e) => e === t ? e : t);
|
|
8967
8968
|
}
|
|
8968
|
-
K && !
|
|
8969
|
+
K && !O && !e.ctrlKey && (j(!0), M.current && clearTimeout(M.current), M.current = setTimeout(() => j(!1), 1600));
|
|
8969
8970
|
};
|
|
8970
8971
|
return e.addEventListener("wheel", t, {
|
|
8971
8972
|
capture: !0,
|
|
8972
8973
|
passive: !0
|
|
8973
8974
|
}), () => e.removeEventListener("wheel", t, { capture: !0 });
|
|
8974
|
-
}, [K,
|
|
8975
|
-
let
|
|
8976
|
-
K && e.button === 0 && (
|
|
8977
|
-
}, [K]),
|
|
8978
|
-
K &&
|
|
8975
|
+
}, [K, O]);
|
|
8976
|
+
let fe = a((e) => {
|
|
8977
|
+
K && e.button === 0 && (k(!0), j(!1));
|
|
8978
|
+
}, [K]), pe = a(() => {
|
|
8979
|
+
K && k(!1);
|
|
8979
8980
|
}, [K]);
|
|
8980
8981
|
return c(() => {
|
|
8981
|
-
if (!
|
|
8982
|
-
let e = () =>
|
|
8983
|
-
e.key === "Escape" &&
|
|
8982
|
+
if (!w) return;
|
|
8983
|
+
let e = () => D(null), t = (e) => {
|
|
8984
|
+
e.key === "Escape" && D(null);
|
|
8984
8985
|
};
|
|
8985
8986
|
return window.addEventListener("click", e), window.addEventListener("scroll", e, !0), window.addEventListener("keydown", t), () => {
|
|
8986
8987
|
window.removeEventListener("click", e), window.removeEventListener("scroll", e, !0), window.removeEventListener("keydown", t);
|
|
8987
8988
|
};
|
|
8988
|
-
}, [
|
|
8989
|
-
ref:
|
|
8990
|
-
className: `gn-canvas-wrapper${K &&
|
|
8989
|
+
}, [w]), /* @__PURE__ */ _("div", {
|
|
8990
|
+
ref: x,
|
|
8991
|
+
className: `gn-canvas-wrapper${K && O ? " gn-canvas-wrapper--engaged" : ""}`,
|
|
8991
8992
|
style: {
|
|
8992
8993
|
width: "100%",
|
|
8993
8994
|
height: "100%",
|
|
8994
8995
|
position: "relative"
|
|
8995
8996
|
},
|
|
8996
|
-
onContextMenu:
|
|
8997
|
-
onPointerDown:
|
|
8998
|
-
onPointerLeave:
|
|
8997
|
+
onContextMenu: ae,
|
|
8998
|
+
onPointerDown: fe,
|
|
8999
|
+
onPointerLeave: pe,
|
|
8999
9000
|
children: [
|
|
9000
9001
|
/* @__PURE__ */ _(gd, {
|
|
9001
|
-
nodes:
|
|
9002
|
-
edges:
|
|
9003
|
-
onNodesChange:
|
|
9004
|
-
onEdgesChange:
|
|
9005
|
-
onSelectionChange:
|
|
9006
|
-
onMoveStart:
|
|
9002
|
+
nodes: V,
|
|
9003
|
+
edges: W,
|
|
9004
|
+
onNodesChange: U,
|
|
9005
|
+
onEdgesChange: ee,
|
|
9006
|
+
onSelectionChange: ie,
|
|
9007
|
+
onMoveStart: re,
|
|
9007
9008
|
nodeTypes: gp,
|
|
9008
9009
|
fitView: !0,
|
|
9009
9010
|
fitViewOptions: _p,
|
|
9010
9011
|
minZoom: .2,
|
|
9011
|
-
translateExtent:
|
|
9012
|
+
translateExtent: te,
|
|
9012
9013
|
nodesDraggable: !1,
|
|
9013
9014
|
nodesConnectable: !1,
|
|
9014
|
-
elementsSelectable:
|
|
9015
|
+
elementsSelectable: m,
|
|
9015
9016
|
nodesFocusable: !1,
|
|
9016
9017
|
edgesFocusable: !1,
|
|
9017
9018
|
selectNodesOnDrag: !1,
|
|
9018
|
-
selectionOnDrag:
|
|
9019
|
+
selectionOnDrag: de,
|
|
9019
9020
|
selectionMode: Ca.Partial,
|
|
9020
9021
|
connectOnClick: !1,
|
|
9021
|
-
panOnDrag:
|
|
9022
|
-
zoomOnScroll:
|
|
9023
|
-
panOnScroll:
|
|
9024
|
-
preventScrolling:
|
|
9022
|
+
panOnDrag: ue,
|
|
9023
|
+
zoomOnScroll: ce,
|
|
9024
|
+
panOnScroll: le,
|
|
9025
|
+
preventScrolling: se,
|
|
9025
9026
|
zoomOnDoubleClick: !1,
|
|
9026
9027
|
children: [
|
|
9027
9028
|
/* @__PURE__ */ g(Dd, {
|
|
@@ -9030,7 +9031,7 @@ function vp(e) {
|
|
|
9030
9031
|
color: "var(--grid-dot, #3a3a3a)"
|
|
9031
9032
|
}),
|
|
9032
9033
|
/* @__PURE__ */ g(Id, { showInteractive: !1 }),
|
|
9033
|
-
K &&
|
|
9034
|
+
K && A ? /* @__PURE__ */ g(Dc, {
|
|
9034
9035
|
position: "bottom-center",
|
|
9035
9036
|
children: /* @__PURE__ */ g("div", {
|
|
9036
9037
|
className: "gn-zoom-hint",
|
|
@@ -9044,7 +9045,7 @@ function vp(e) {
|
|
|
9044
9045
|
className: "gn-top-left",
|
|
9045
9046
|
children: [/* @__PURE__ */ _("span", {
|
|
9046
9047
|
className: "gn-version-badge",
|
|
9047
|
-
children: ["node-web-render v", "0.3.
|
|
9048
|
+
children: ["node-web-render v", "0.3.26"]
|
|
9048
9049
|
}), i.length > 1 ? /* @__PURE__ */ g("nav", {
|
|
9049
9050
|
className: "gn-breadcrumbs",
|
|
9050
9051
|
"aria-label": "Node group path",
|
|
@@ -9073,11 +9074,11 @@ function vp(e) {
|
|
|
9073
9074
|
})
|
|
9074
9075
|
]
|
|
9075
9076
|
}),
|
|
9076
|
-
|
|
9077
|
+
w ? /* @__PURE__ */ g("div", {
|
|
9077
9078
|
className: "gn-context-menu",
|
|
9078
9079
|
style: {
|
|
9079
|
-
left:
|
|
9080
|
-
top:
|
|
9080
|
+
left: w.x,
|
|
9081
|
+
top: w.y
|
|
9081
9082
|
},
|
|
9082
9083
|
onClick: (e) => e.stopPropagation(),
|
|
9083
9084
|
role: "menu",
|
|
@@ -9085,12 +9086,12 @@ function vp(e) {
|
|
|
9085
9086
|
type: "button",
|
|
9086
9087
|
className: "gn-context-menu__item",
|
|
9087
9088
|
role: "menuitem",
|
|
9088
|
-
onClick:
|
|
9089
|
+
onClick: oe,
|
|
9089
9090
|
children: "Copy selected nodes to Tree Clipper magic string"
|
|
9090
9091
|
})
|
|
9091
9092
|
}) : null,
|
|
9092
|
-
|
|
9093
|
-
className: `gn-context-toast${
|
|
9093
|
+
I || R ? /* @__PURE__ */ g("div", {
|
|
9094
|
+
className: `gn-context-toast${R ? " gnwr-leaving" : ""}`,
|
|
9094
9095
|
role: "status",
|
|
9095
9096
|
children: "Copied Tree Clipper magic string"
|
|
9096
9097
|
}) : null
|
|
@@ -9098,10 +9099,10 @@ function vp(e) {
|
|
|
9098
9099
|
});
|
|
9099
9100
|
}
|
|
9100
9101
|
function yp(e) {
|
|
9101
|
-
let { jsonText: t, showHeader: n = !0, onSelectionChange: r, onCopiedMagicString: i, interaction: o = "always", allowCopy: s = !0 } = e, [
|
|
9102
|
+
let { jsonText: t, showHeader: n = !0, onSelectionChange: r, onCopiedMagicString: i, interaction: o = "always", allowCopy: s = !0, allowSelection: l = !0 } = e, [d, p] = f({
|
|
9102
9103
|
json: t,
|
|
9103
9104
|
ids: []
|
|
9104
|
-
}),
|
|
9105
|
+
}), m = u(() => {
|
|
9105
9106
|
if (!t.trim()) return null;
|
|
9106
9107
|
try {
|
|
9107
9108
|
let { rootId: e, trees: n } = xf(JSON.parse(t)), r = {};
|
|
@@ -9124,36 +9125,36 @@ function yp(e) {
|
|
|
9124
9125
|
error: e instanceof Error ? e.message : String(e)
|
|
9125
9126
|
};
|
|
9126
9127
|
}
|
|
9127
|
-
}, [t]),
|
|
9128
|
-
if (!
|
|
9129
|
-
let e =
|
|
9130
|
-
for (let t of e)
|
|
9128
|
+
}, [t]), h = u(() => {
|
|
9129
|
+
if (!m?.views) return [];
|
|
9130
|
+
let e = d.json === t ? d.ids : [], n = [m.rootId];
|
|
9131
|
+
for (let t of e) m.views[t] && n.push(t);
|
|
9131
9132
|
return n;
|
|
9132
9133
|
}, [
|
|
9133
|
-
|
|
9134
|
-
|
|
9134
|
+
m,
|
|
9135
|
+
d,
|
|
9135
9136
|
t
|
|
9136
|
-
]),
|
|
9137
|
-
|
|
9137
|
+
]), v = m?.views ? m.views[h[h.length - 1]] : null, y = a((e) => {
|
|
9138
|
+
p((n) => ({
|
|
9138
9139
|
json: t,
|
|
9139
9140
|
ids: n.json === t ? [...n.ids, e] : [e]
|
|
9140
9141
|
}));
|
|
9141
|
-
}, [t]),
|
|
9142
|
+
}, [t]), b = u(() => ({ openGroup: y }), [y]);
|
|
9142
9143
|
c(() => {
|
|
9143
|
-
if (
|
|
9144
|
+
if (h.length <= 1) return;
|
|
9144
9145
|
function e(e) {
|
|
9145
9146
|
if (e.key !== "Tab" && e.key !== "Escape" || e.ctrlKey || e.metaKey || e.altKey) return;
|
|
9146
9147
|
let n = e.target;
|
|
9147
|
-
n && (n.isContentEditable || n.tagName === "INPUT" || n.tagName === "TEXTAREA" || n.closest(".cm-editor")) || (e.preventDefault(),
|
|
9148
|
+
n && (n.isContentEditable || n.tagName === "INPUT" || n.tagName === "TEXTAREA" || n.closest(".cm-editor")) || (e.preventDefault(), p({
|
|
9148
9149
|
json: t,
|
|
9149
|
-
ids:
|
|
9150
|
+
ids: h.slice(1, -1)
|
|
9150
9151
|
}));
|
|
9151
9152
|
}
|
|
9152
9153
|
return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
|
|
9153
|
-
}, [
|
|
9154
|
-
let
|
|
9154
|
+
}, [h, t]);
|
|
9155
|
+
let x = m?.views ? h.map((e) => ({
|
|
9155
9156
|
id: e,
|
|
9156
|
-
label:
|
|
9157
|
+
label: m.views[e].graph.label
|
|
9157
9158
|
})) : [];
|
|
9158
9159
|
return /* @__PURE__ */ _("div", {
|
|
9159
9160
|
className: "panel flow-panel",
|
|
@@ -9165,29 +9166,30 @@ function yp(e) {
|
|
|
9165
9166
|
}), /* @__PURE__ */ g("div", {
|
|
9166
9167
|
className: "panel-status",
|
|
9167
9168
|
"aria-live": "polite",
|
|
9168
|
-
children:
|
|
9169
|
+
children: v ? `${v.graph.nodes.length} nodes, ${v.graph.edges.length} links` : null
|
|
9169
9170
|
})]
|
|
9170
9171
|
}) : null, /* @__PURE__ */ g("div", {
|
|
9171
9172
|
className: "panel-body flow-panel__body",
|
|
9172
|
-
children:
|
|
9173
|
+
children: m?.error ? /* @__PURE__ */ _("div", {
|
|
9173
9174
|
className: "flow-error",
|
|
9174
9175
|
role: "alert",
|
|
9175
|
-
children: [/* @__PURE__ */ g("strong", { children: "Parse error" }), /* @__PURE__ */ g("span", { children:
|
|
9176
|
-
}) :
|
|
9177
|
-
value:
|
|
9176
|
+
children: [/* @__PURE__ */ g("strong", { children: "Parse error" }), /* @__PURE__ */ g("span", { children: m.error })]
|
|
9177
|
+
}) : v ? /* @__PURE__ */ g(Kf.Provider, {
|
|
9178
|
+
value: b,
|
|
9178
9179
|
children: /* @__PURE__ */ g(fd, { children: /* @__PURE__ */ g(vp, {
|
|
9179
|
-
nodes:
|
|
9180
|
-
edges:
|
|
9180
|
+
nodes: v.flow.nodes,
|
|
9181
|
+
edges: v.flow.edges,
|
|
9181
9182
|
jsonText: t,
|
|
9182
|
-
breadcrumbs:
|
|
9183
|
-
onNavigate: (e) =>
|
|
9183
|
+
breadcrumbs: x,
|
|
9184
|
+
onNavigate: (e) => p({
|
|
9184
9185
|
json: t,
|
|
9185
|
-
ids:
|
|
9186
|
+
ids: h.slice(1, e + 1)
|
|
9186
9187
|
}),
|
|
9187
9188
|
onSelectionIds: r,
|
|
9188
9189
|
onCopiedMagicString: i,
|
|
9189
9190
|
interaction: o,
|
|
9190
|
-
allowCopy: s
|
|
9191
|
+
allowCopy: s,
|
|
9192
|
+
allowSelection: l
|
|
9191
9193
|
}) })
|
|
9192
9194
|
}) : /* @__PURE__ */ g("div", {
|
|
9193
9195
|
className: "flow-empty",
|
|
@@ -9260,38 +9262,38 @@ function bp({ className: e }) {
|
|
|
9260
9262
|
//#endregion
|
|
9261
9263
|
//#region src/embed.tsx
|
|
9262
9264
|
function xp(e) {
|
|
9263
|
-
let { payload: t, showCopyButton: n = !0 } = e, [
|
|
9264
|
-
!
|
|
9265
|
-
|
|
9265
|
+
let { payload: t, showCopyButton: n = !0, allowSelection: r = !0 } = e, [i, a] = f(""), [o, s] = f(null), [l, u] = f(!0), [p, m] = f([]), [v, y] = f(!1), [b, S] = f(!1), C = d(!1), w = d(!1), D = d(null), O = d(null), k = d(null), A = () => {
|
|
9266
|
+
!w.current || C.current || (S(!0), k.current && clearTimeout(k.current), k.current = setTimeout(() => {
|
|
9267
|
+
y(!1), S(!1);
|
|
9266
9268
|
}, 500));
|
|
9267
|
-
},
|
|
9268
|
-
|
|
9269
|
-
|
|
9269
|
+
}, j = () => {
|
|
9270
|
+
k.current && clearTimeout(k.current), S(!1), y(!0), w.current = !1, D.current && clearTimeout(D.current), D.current = setTimeout(() => {
|
|
9271
|
+
w.current = !0, A();
|
|
9270
9272
|
}, 3e3);
|
|
9271
|
-
},
|
|
9273
|
+
}, M = async () => {
|
|
9272
9274
|
try {
|
|
9273
|
-
let e = t, n = new Set(
|
|
9275
|
+
let e = t, n = new Set(p.map(Number).filter(Number.isFinite));
|
|
9274
9276
|
if (n.size > 0) {
|
|
9275
|
-
let t = E(JSON.parse(
|
|
9277
|
+
let t = E(JSON.parse(i), n);
|
|
9276
9278
|
e = await T(JSON.stringify(t));
|
|
9277
9279
|
}
|
|
9278
|
-
await navigator.clipboard.writeText(e),
|
|
9280
|
+
await navigator.clipboard.writeText(e), j();
|
|
9279
9281
|
} catch {}
|
|
9280
|
-
}, M = () => {
|
|
9281
|
-
S.current = !0, D.current && clearTimeout(D.current), y && (O.current && clearTimeout(O.current), b(!1));
|
|
9282
9282
|
}, N = () => {
|
|
9283
|
-
|
|
9284
|
-
|
|
9283
|
+
C.current = !0, O.current && clearTimeout(O.current), b && (k.current && clearTimeout(k.current), S(!1));
|
|
9284
|
+
}, P = () => {
|
|
9285
|
+
O.current && clearTimeout(O.current), O.current = setTimeout(() => {
|
|
9286
|
+
C.current = !1, A();
|
|
9285
9287
|
}, 150);
|
|
9286
9288
|
};
|
|
9287
9289
|
return c(() => () => {
|
|
9288
|
-
|
|
9290
|
+
D.current && clearTimeout(D.current), O.current && clearTimeout(O.current), k.current && clearTimeout(k.current);
|
|
9289
9291
|
}, []), c(() => {
|
|
9290
9292
|
let e = !1;
|
|
9291
|
-
return
|
|
9292
|
-
e || (
|
|
9293
|
+
return u(!0), s(null), x(t).then((t) => {
|
|
9294
|
+
e || (a(t), u(!1));
|
|
9293
9295
|
}).catch((t) => {
|
|
9294
|
-
e || (
|
|
9296
|
+
e || (s(t instanceof Error ? t.message : String(t)), u(!1));
|
|
9295
9297
|
}), () => {
|
|
9296
9298
|
e = !0;
|
|
9297
9299
|
};
|
|
@@ -9299,7 +9301,7 @@ function xp(e) {
|
|
|
9299
9301
|
className: "geonodes-embed geonodes-embed--dark",
|
|
9300
9302
|
children: /* @__PURE__ */ g("div", {
|
|
9301
9303
|
className: "geonodes-embed__body",
|
|
9302
|
-
children:
|
|
9304
|
+
children: l ? /* @__PURE__ */ _("div", {
|
|
9303
9305
|
className: "gnwr-loading",
|
|
9304
9306
|
role: "status",
|
|
9305
9307
|
"aria-live": "polite",
|
|
@@ -9307,25 +9309,26 @@ function xp(e) {
|
|
|
9307
9309
|
className: "gnwr-loading__label",
|
|
9308
9310
|
children: "Loading graph…"
|
|
9309
9311
|
})]
|
|
9310
|
-
}) :
|
|
9312
|
+
}) : o ? /* @__PURE__ */ _("div", {
|
|
9311
9313
|
className: "flow-error",
|
|
9312
9314
|
role: "alert",
|
|
9313
|
-
children: [/* @__PURE__ */ g("strong", { children: "Decode error" }), /* @__PURE__ */ g("span", { children:
|
|
9315
|
+
children: [/* @__PURE__ */ g("strong", { children: "Decode error" }), /* @__PURE__ */ g("span", { children: o })]
|
|
9314
9316
|
}) : /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g(yp, {
|
|
9315
|
-
jsonText:
|
|
9317
|
+
jsonText: i,
|
|
9316
9318
|
showHeader: !1,
|
|
9317
9319
|
interaction: "hybrid",
|
|
9318
|
-
onSelectionChange:
|
|
9319
|
-
onCopiedMagicString:
|
|
9320
|
-
allowCopy: n
|
|
9320
|
+
onSelectionChange: m,
|
|
9321
|
+
onCopiedMagicString: j,
|
|
9322
|
+
allowCopy: n,
|
|
9323
|
+
allowSelection: r
|
|
9321
9324
|
}), n && /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g("button", {
|
|
9322
9325
|
type: "button",
|
|
9323
|
-
className: `gnwr-copy-button${
|
|
9324
|
-
onClick:
|
|
9325
|
-
onMouseEnter:
|
|
9326
|
-
onMouseLeave:
|
|
9326
|
+
className: `gnwr-copy-button${v || b ? " gnwr-copy-button--copied" : ""}`,
|
|
9327
|
+
onClick: M,
|
|
9328
|
+
onMouseEnter: N,
|
|
9329
|
+
onMouseLeave: P,
|
|
9327
9330
|
title: "Copy the Tree Clipper magic string — paste into Blender with the Tree Clipper add-on",
|
|
9328
|
-
children:
|
|
9331
|
+
children: v || b ? /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g("svg", {
|
|
9329
9332
|
className: "gnwr-copy-button__check",
|
|
9330
9333
|
viewBox: "0 0 24 24",
|
|
9331
9334
|
"aria-hidden": "true",
|
|
@@ -9337,12 +9340,12 @@ function xp(e) {
|
|
|
9337
9340
|
strokeLinecap: "round",
|
|
9338
9341
|
strokeLinejoin: "round"
|
|
9339
9342
|
})
|
|
9340
|
-
}), /* @__PURE__ */ g("span", { children: "Copied!" })] }) : /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g(bp, { className: "gnwr-copy-button__logo" }), /* @__PURE__ */ g("span", { children:
|
|
9341
|
-
}), (
|
|
9342
|
-
className: `gnwr-copy-toast${
|
|
9343
|
+
}), /* @__PURE__ */ g("span", { children: "Copied!" })] }) : /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g(bp, { className: "gnwr-copy-button__logo" }), /* @__PURE__ */ g("span", { children: p.length > 0 ? `Copy Magic String of ${p.length} selected node${p.length === 1 ? "" : "s"}` : "Copy TreeClipper Magic String" })] })
|
|
9344
|
+
}), (v || b) && /* @__PURE__ */ _("div", {
|
|
9345
|
+
className: `gnwr-copy-toast${b ? " gnwr-leaving" : ""}`,
|
|
9343
9346
|
role: "status",
|
|
9344
|
-
onMouseEnter:
|
|
9345
|
-
onMouseLeave:
|
|
9347
|
+
onMouseEnter: N,
|
|
9348
|
+
onMouseLeave: P,
|
|
9346
9349
|
children: [
|
|
9347
9350
|
"Now, you can use this magic string in Blender with the",
|
|
9348
9351
|
" ",
|
package/dist/types/embed.d.ts
CHANGED
|
@@ -6,6 +6,9 @@ export type GraphViewEmbedOptions = {
|
|
|
6
6
|
/** When false, hide the "Copy TreeClipper Magic String" button and disable the
|
|
7
7
|
* right-click copy action. Default true. */
|
|
8
8
|
showCopyButton?: boolean;
|
|
9
|
+
/** When false, disable node selection; left-drag pans instead of box-selecting.
|
|
10
|
+
* Default true. */
|
|
11
|
+
allowSelection?: boolean;
|
|
9
12
|
};
|
|
10
13
|
export declare function GraphView(props: GraphViewEmbedOptions): import("react").JSX.Element;
|
|
11
14
|
/**
|
|
@@ -23,4 +23,7 @@ export declare function GeometryNodesFlow(props: {
|
|
|
23
23
|
/** When false, disable copying to a Tree Clipper magic string (hides the
|
|
24
24
|
* right-click "copy" context menu). Default true. */
|
|
25
25
|
allowCopy?: boolean;
|
|
26
|
+
/** When false, disable node selection; left-drag pans instead of box-selecting.
|
|
27
|
+
* Default true. */
|
|
28
|
+
allowSelection?: boolean;
|
|
26
29
|
}): import("react").JSX.Element;
|
package/package.json
CHANGED