@octaviaflow/core 3.0.18-beta.10 → 3.0.18-beta.11
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/chunk-5ARKSRED.js +2951 -0
- package/dist/chunk-5ARKSRED.js.map +1 -0
- package/dist/chunk-5OSGSJMM.js +2981 -0
- package/dist/chunk-5OSGSJMM.js.map +1 -0
- package/dist/chunk-5YQQMEF3.js +2981 -0
- package/dist/chunk-5YQQMEF3.js.map +1 -0
- package/dist/chunk-A6KMO4JV.js +2949 -0
- package/dist/chunk-A6KMO4JV.js.map +1 -0
- package/dist/chunk-B7FTWSTM.js +2938 -0
- package/dist/chunk-B7FTWSTM.js.map +1 -0
- package/dist/chunk-BCO6M26F.js +2940 -0
- package/dist/chunk-BCO6M26F.js.map +1 -0
- package/dist/chunk-HDOTOZNA.js +2936 -0
- package/dist/chunk-HDOTOZNA.js.map +1 -0
- package/dist/chunk-IUIICQU5.js +2946 -0
- package/dist/chunk-IUIICQU5.js.map +1 -0
- package/dist/chunk-J2UYZI6D.js +2946 -0
- package/dist/chunk-J2UYZI6D.js.map +1 -0
- package/dist/chunk-K2H7JLQW.js +2952 -0
- package/dist/chunk-K2H7JLQW.js.map +1 -0
- package/dist/chunk-KUXYBP66.js +2953 -0
- package/dist/chunk-KUXYBP66.js.map +1 -0
- package/dist/chunk-MMXL343D.js +2974 -0
- package/dist/chunk-MMXL343D.js.map +1 -0
- package/dist/chunk-NTMEYB7B.js +2949 -0
- package/dist/chunk-NTMEYB7B.js.map +1 -0
- package/dist/chunk-SLVDAZSX.js +2946 -0
- package/dist/chunk-SLVDAZSX.js.map +1 -0
- package/dist/chunk-UXMNBS22.js +2955 -0
- package/dist/chunk-UXMNBS22.js.map +1 -0
- package/dist/chunk-ZRAM6FXB.js +2949 -0
- package/dist/chunk-ZRAM6FXB.js.map +1 -0
- package/dist/index.cjs +60 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/workflow/components/FlowCanvas/FlowCanvas.d.ts +8 -0
- package/dist/workflow/components/FlowCanvas/FlowCanvas.d.ts.map +1 -1
- package/dist/workflow/utils/parenting.d.ts +5 -3
- package/dist/workflow/utils/parenting.d.ts.map +1 -1
- package/dist/workflow.cjs +60 -15
- package/dist/workflow.cjs.map +1 -1
- package/dist/workflow.js +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -139,6 +139,14 @@ export interface FlowCanvasProps {
|
|
|
139
139
|
* `autoResizeContainers` recomputes a container's frame. Default 32.
|
|
140
140
|
*/
|
|
141
141
|
containerAutoResizePadding?: number;
|
|
142
|
+
/**
|
|
143
|
+
* Floor size for `autoResizeContainers`. A container that fits its
|
|
144
|
+
* children in less than this stops shrinking here — it never collapses
|
|
145
|
+
* below the size a freshly-dropped (empty) container would have.
|
|
146
|
+
* Defaults: 320 × 200.
|
|
147
|
+
*/
|
|
148
|
+
containerMinWidth?: number;
|
|
149
|
+
containerMinHeight?: number;
|
|
142
150
|
height?: number | string;
|
|
143
151
|
width?: number | string;
|
|
144
152
|
className?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlowCanvas.d.ts","sourceRoot":"","sources":["../../../../src/workflow/components/FlowCanvas/FlowCanvas.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"FlowCanvas.d.ts","sourceRoot":"","sources":["../../../../src/workflow/components/FlowCanvas/FlowCanvas.tsx"],"names":[],"mappings":"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"}
|
|
@@ -20,9 +20,11 @@ export declare function findAncestor(node: WorkflowNode, nodes: WorkflowNode[],
|
|
|
20
20
|
*/
|
|
21
21
|
export declare function clampToParentExtent(node: WorkflowNode, proposed: Position, nodes: WorkflowNode[]): Position;
|
|
22
22
|
/**
|
|
23
|
-
* Hit-test which
|
|
24
|
-
* Used by
|
|
25
|
-
*
|
|
23
|
+
* Hit-test which container node (if any) currently contains the given
|
|
24
|
+
* point. Used by drag-to-reparent and by drop-to-add to scope a new
|
|
25
|
+
* node. Both `group` AND `forEach` are containers — a `forEach` holds
|
|
26
|
+
* its iteration body the same way a `group` holds its members, so the
|
|
27
|
+
* hit-test must accept either.
|
|
26
28
|
*/
|
|
27
29
|
export declare function findContainingGroup(point: Position, nodes: WorkflowNode[], exclude?: string[]): WorkflowNode | undefined;
|
|
28
30
|
//# sourceMappingURL=parenting.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parenting.d.ts","sourceRoot":"","sources":["../../../src/workflow/utils/parenting.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGxD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CA0BnF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,YAAY,EAAE,EACrB,SAAS,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,OAAO,GACtC,YAAY,GAAG,SAAS,CAY1B;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,YAAY,EAAE,GACpB,QAAQ,CAgBV;AAED
|
|
1
|
+
{"version":3,"file":"parenting.d.ts","sourceRoot":"","sources":["../../../src/workflow/utils/parenting.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGxD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CA0BnF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,YAAY,EAAE,EACrB,SAAS,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,OAAO,GACtC,YAAY,GAAG,SAAS,CAY1B;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,YAAY,EAAE,GACpB,QAAQ,CAgBV;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,YAAY,EAAE,EACrB,OAAO,GAAE,MAAM,EAAO,GACrB,YAAY,GAAG,SAAS,CAqB1B"}
|
package/dist/workflow.cjs
CHANGED
|
@@ -1144,7 +1144,7 @@ function findContainingGroup(point, nodes, exclude = []) {
|
|
|
1144
1144
|
for (let i = nodes.length - 1; i >= 0; i--) {
|
|
1145
1145
|
const n = nodes[i];
|
|
1146
1146
|
if (exclude.includes(n.id)) continue;
|
|
1147
|
-
if (n.type !== "group") continue;
|
|
1147
|
+
if (n.type !== "group" && n.type !== "forEach") continue;
|
|
1148
1148
|
if (n.data && typeof n.data === "object" && n.data.collapsed) {
|
|
1149
1149
|
continue;
|
|
1150
1150
|
}
|
|
@@ -2477,6 +2477,8 @@ function FlowCanvas(props) {
|
|
|
2477
2477
|
reparentOnDrag = false,
|
|
2478
2478
|
autoResizeContainers = false,
|
|
2479
2479
|
containerAutoResizePadding = 32,
|
|
2480
|
+
containerMinWidth = 320,
|
|
2481
|
+
containerMinHeight = 200,
|
|
2480
2482
|
height = "100%",
|
|
2481
2483
|
width = "100%",
|
|
2482
2484
|
className,
|
|
@@ -2613,7 +2615,9 @@ function FlowCanvas(props) {
|
|
|
2613
2615
|
id: d.id,
|
|
2614
2616
|
startPosition: d.position
|
|
2615
2617
|
}));
|
|
2616
|
-
const
|
|
2618
|
+
const evaluateReparent = altKey || reparentOnDragRef.current;
|
|
2619
|
+
const hasParent = !!node.parentId;
|
|
2620
|
+
const skipClamp = altKey || reparentOnDragRef.current && !hasParent;
|
|
2617
2621
|
dragRef.current = {
|
|
2618
2622
|
pointerId,
|
|
2619
2623
|
nodeId,
|
|
@@ -2621,7 +2625,8 @@ function FlowCanvas(props) {
|
|
|
2621
2625
|
startClientY: clientY,
|
|
2622
2626
|
startPosition: node.position,
|
|
2623
2627
|
descendants: kids,
|
|
2624
|
-
|
|
2628
|
+
skipClamp,
|
|
2629
|
+
evaluateReparent,
|
|
2625
2630
|
rafScheduled: false,
|
|
2626
2631
|
nextDelta: null
|
|
2627
2632
|
};
|
|
@@ -2681,6 +2686,8 @@ function FlowCanvas(props) {
|
|
|
2681
2686
|
const reparentOnDragRef = (0, import_react15.useRef)(reparentOnDrag);
|
|
2682
2687
|
const autoResizeContainersRef = (0, import_react15.useRef)(autoResizeContainers);
|
|
2683
2688
|
const containerAutoResizePaddingRef = (0, import_react15.useRef)(containerAutoResizePadding);
|
|
2689
|
+
const containerMinWidthRef = (0, import_react15.useRef)(containerMinWidth);
|
|
2690
|
+
const containerMinHeightRef = (0, import_react15.useRef)(containerMinHeight);
|
|
2684
2691
|
(0, import_react15.useEffect)(() => {
|
|
2685
2692
|
edgesRef.current = edges;
|
|
2686
2693
|
}, [edges]);
|
|
@@ -2714,6 +2721,12 @@ function FlowCanvas(props) {
|
|
|
2714
2721
|
(0, import_react15.useEffect)(() => {
|
|
2715
2722
|
containerAutoResizePaddingRef.current = containerAutoResizePadding;
|
|
2716
2723
|
}, [containerAutoResizePadding]);
|
|
2724
|
+
(0, import_react15.useEffect)(() => {
|
|
2725
|
+
containerMinWidthRef.current = containerMinWidth;
|
|
2726
|
+
}, [containerMinWidth]);
|
|
2727
|
+
(0, import_react15.useEffect)(() => {
|
|
2728
|
+
containerMinHeightRef.current = containerMinHeight;
|
|
2729
|
+
}, [containerMinHeight]);
|
|
2717
2730
|
const onNodesChangeRef = (0, import_react15.useRef)(onNodesChange);
|
|
2718
2731
|
const onConnectRef = (0, import_react15.useRef)(onConnect);
|
|
2719
2732
|
const onConnectEndRef = (0, import_react15.useRef)(onConnectEnd);
|
|
@@ -2758,7 +2771,7 @@ function FlowCanvas(props) {
|
|
|
2758
2771
|
x: d.startPosition.x + delta.dx,
|
|
2759
2772
|
y: d.startPosition.y + delta.dy
|
|
2760
2773
|
};
|
|
2761
|
-
const clamped = d.
|
|
2774
|
+
const clamped = d.skipClamp ? proposed : clampToParentExtent(dragNode, proposed, nodesRef.current);
|
|
2762
2775
|
const isContainer = dragNode.type === "group" || dragNode.type === "forEach";
|
|
2763
2776
|
const gap = isContainer ? subflowCollisionGapRef.current : nodeCollisionGapRef.current;
|
|
2764
2777
|
const excludeIds = /* @__PURE__ */ new Set([d.nodeId, ...d.descendants.map((kid) => kid.id)]);
|
|
@@ -2810,7 +2823,7 @@ function FlowCanvas(props) {
|
|
|
2810
2823
|
y: Math.round(proposed.y / g) * g
|
|
2811
2824
|
};
|
|
2812
2825
|
}
|
|
2813
|
-
const clamped = drag.
|
|
2826
|
+
const clamped = drag.skipClamp ? proposed : clampToParentExtent(dragNode, proposed, nodesRef.current);
|
|
2814
2827
|
const isContainer = dragNode.type === "group" || dragNode.type === "forEach";
|
|
2815
2828
|
const gap = isContainer ? subflowCollisionGapRef.current : nodeCollisionGapRef.current;
|
|
2816
2829
|
const excludeIds = /* @__PURE__ */ new Set([
|
|
@@ -2833,7 +2846,7 @@ function FlowCanvas(props) {
|
|
|
2833
2846
|
)
|
|
2834
2847
|
);
|
|
2835
2848
|
}
|
|
2836
|
-
if (drag.
|
|
2849
|
+
if (drag.evaluateReparent) {
|
|
2837
2850
|
const targetGroup = findContainingGroup(
|
|
2838
2851
|
{
|
|
2839
2852
|
x: finalPos.x + (dragNode.width ?? 0) / 2,
|
|
@@ -2848,8 +2861,10 @@ function FlowCanvas(props) {
|
|
|
2848
2861
|
...dragNode,
|
|
2849
2862
|
position: finalPos,
|
|
2850
2863
|
parentId: nextParentId,
|
|
2851
|
-
//
|
|
2852
|
-
extent:
|
|
2864
|
+
// Adopting into a container always pins the child with
|
|
2865
|
+
// `extent: 'parent'` so it's clamped from the next drag
|
|
2866
|
+
// on. Detaching clears it.
|
|
2867
|
+
extent: nextParentId ? "parent" : void 0
|
|
2853
2868
|
};
|
|
2854
2869
|
changes.push(change.node.replace(drag.nodeId, updated));
|
|
2855
2870
|
}
|
|
@@ -2860,7 +2875,9 @@ function FlowCanvas(props) {
|
|
|
2860
2875
|
// Projected children: apply the position + reparent
|
|
2861
2876
|
// changes we just built before measuring bboxes.
|
|
2862
2877
|
changes,
|
|
2863
|
-
containerAutoResizePaddingRef.current
|
|
2878
|
+
containerAutoResizePaddingRef.current,
|
|
2879
|
+
containerMinWidthRef.current,
|
|
2880
|
+
containerMinHeightRef.current
|
|
2864
2881
|
);
|
|
2865
2882
|
for (const c2 of containerChanges) changes.push(c2);
|
|
2866
2883
|
}
|
|
@@ -2946,6 +2963,25 @@ function FlowCanvas(props) {
|
|
|
2946
2963
|
window.removeEventListener("pointercancel", onPointerCancel);
|
|
2947
2964
|
};
|
|
2948
2965
|
}, [store]);
|
|
2966
|
+
(0, import_react15.useEffect)(() => {
|
|
2967
|
+
if (!autoResizeContainers || draggingId) return;
|
|
2968
|
+
const resizeChanges = computeContainerAutoResize(
|
|
2969
|
+
nodes,
|
|
2970
|
+
[],
|
|
2971
|
+
containerAutoResizePadding,
|
|
2972
|
+
containerMinWidth,
|
|
2973
|
+
containerMinHeight
|
|
2974
|
+
);
|
|
2975
|
+
if (resizeChanges.length > 0) onNodesChange?.(resizeChanges);
|
|
2976
|
+
}, [
|
|
2977
|
+
nodes,
|
|
2978
|
+
draggingId,
|
|
2979
|
+
autoResizeContainers,
|
|
2980
|
+
containerAutoResizePadding,
|
|
2981
|
+
containerMinWidth,
|
|
2982
|
+
containerMinHeight,
|
|
2983
|
+
onNodesChange
|
|
2984
|
+
]);
|
|
2949
2985
|
const panRef = (0, import_react15.useRef)(null);
|
|
2950
2986
|
const onCanvasPointerDown = (e) => {
|
|
2951
2987
|
if (e.button !== 0) return;
|
|
@@ -3408,7 +3444,9 @@ function FlowCanvas(props) {
|
|
|
3408
3444
|
function onEdgesChangeRef(id, cb) {
|
|
3409
3445
|
cb?.([change.edge.remove(id)]);
|
|
3410
3446
|
}
|
|
3411
|
-
|
|
3447
|
+
var CONTAINER_DROP_HEADROOM_W = 220;
|
|
3448
|
+
var CONTAINER_DROP_HEADROOM_H = 2 * 128;
|
|
3449
|
+
function computeContainerAutoResize(nodes, pending, padding, minWidth, minHeight) {
|
|
3412
3450
|
const projected = /* @__PURE__ */ new Map();
|
|
3413
3451
|
for (const n of nodes) projected.set(n.id, n);
|
|
3414
3452
|
for (const c of pending) {
|
|
@@ -3429,7 +3467,14 @@ function computeContainerAutoResize(nodes, pending, padding) {
|
|
|
3429
3467
|
for (const n of projected.values()) {
|
|
3430
3468
|
if (n.parentId === parent.id) children.push(n);
|
|
3431
3469
|
}
|
|
3432
|
-
if (children.length === 0)
|
|
3470
|
+
if (children.length === 0) {
|
|
3471
|
+
const curW2 = parent.width ?? 480;
|
|
3472
|
+
const curH2 = parent.height ?? 240;
|
|
3473
|
+
if (curW2 !== minWidth || curH2 !== minHeight) {
|
|
3474
|
+
out.push(change.node.dimensions(parent.id, { width: minWidth, height: minHeight }));
|
|
3475
|
+
}
|
|
3476
|
+
continue;
|
|
3477
|
+
}
|
|
3433
3478
|
let minX = Number.POSITIVE_INFINITY;
|
|
3434
3479
|
let minY = Number.POSITIVE_INFINITY;
|
|
3435
3480
|
let maxX = Number.NEGATIVE_INFINITY;
|
|
@@ -3444,12 +3489,12 @@ function computeContainerAutoResize(nodes, pending, padding) {
|
|
|
3444
3489
|
}
|
|
3445
3490
|
const targetX = minX - padding;
|
|
3446
3491
|
const targetY = minY - padding - HEADER;
|
|
3447
|
-
const targetW = maxX - minX + padding * 2;
|
|
3448
|
-
const targetH = maxY - minY + padding * 2 + HEADER;
|
|
3449
3492
|
const curW = parent.width ?? 480;
|
|
3450
3493
|
const curH = parent.height ?? 240;
|
|
3451
|
-
const
|
|
3452
|
-
const
|
|
3494
|
+
const fitW = maxX - minX + padding * 2 + CONTAINER_DROP_HEADROOM_W;
|
|
3495
|
+
const fitH = maxY - minY + padding * 2 + HEADER + CONTAINER_DROP_HEADROOM_H;
|
|
3496
|
+
const nextW = Math.max(minWidth, fitW);
|
|
3497
|
+
const nextH = Math.max(minHeight, fitH);
|
|
3453
3498
|
const positionDirty = parent.position.x !== targetX || parent.position.y !== targetY;
|
|
3454
3499
|
const sizeDirty = curW !== nextW || curH !== nextH;
|
|
3455
3500
|
if (positionDirty) {
|