@uipath/apollo-react 4.14.1-pr556.aa710a0 → 4.15.0-pr605.2728a1c
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/canvas/components/AddNodePanel/AddNodeManager.cjs +106 -10
- package/dist/canvas/components/AddNodePanel/AddNodeManager.d.ts.map +1 -1
- package/dist/canvas/components/AddNodePanel/AddNodeManager.js +106 -10
- package/dist/canvas/components/AddNodePanel/createAddNodePreview.cjs +29 -1
- package/dist/canvas/components/AddNodePanel/createAddNodePreview.d.ts +5 -1
- package/dist/canvas/components/AddNodePanel/createAddNodePreview.d.ts.map +1 -1
- package/dist/canvas/components/AddNodePanel/createAddNodePreview.js +29 -1
- package/dist/canvas/components/Edges/SequenceEdge.cjs +10 -8
- package/dist/canvas/components/Edges/SequenceEdge.d.ts.map +1 -1
- package/dist/canvas/components/Edges/SequenceEdge.js +10 -8
- package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvasWithControls.cjs +9 -2
- package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvasWithControls.d.ts.map +1 -1
- package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvasWithControls.js +10 -3
- package/dist/canvas/components/LoopNode/LoopNode.constants.cjs +17 -5
- package/dist/canvas/components/LoopNode/LoopNode.constants.d.ts +3 -0
- package/dist/canvas/components/LoopNode/LoopNode.constants.d.ts.map +1 -1
- package/dist/canvas/components/LoopNode/LoopNode.constants.js +4 -1
- package/dist/canvas/components/LoopNode/LoopNode.helpers.cjs +65 -24
- package/dist/canvas/components/LoopNode/LoopNode.helpers.d.ts +29 -0
- package/dist/canvas/components/LoopNode/LoopNode.helpers.d.ts.map +1 -1
- package/dist/canvas/components/LoopNode/LoopNode.helpers.js +48 -22
- package/dist/canvas/components/LoopNode/LoopNode.sequence.cjs +433 -0
- package/dist/canvas/components/LoopNode/LoopNode.sequence.d.ts +57 -0
- package/dist/canvas/components/LoopNode/LoopNode.sequence.d.ts.map +1 -0
- package/dist/canvas/components/LoopNode/LoopNode.sequence.js +387 -0
- package/dist/canvas/components/LoopNode/LoopNodePreview.cjs +12 -13
- package/dist/canvas/components/LoopNode/LoopNodePreview.d.ts +1 -1
- package/dist/canvas/components/LoopNode/LoopNodePreview.d.ts.map +1 -1
- package/dist/canvas/components/LoopNode/LoopNodePreview.js +12 -13
- package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.cjs +17 -2
- package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.d.ts.map +1 -1
- package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.js +17 -2
- package/dist/canvas/utils/NodeUtils.cjs +25 -9
- package/dist/canvas/utils/NodeUtils.d.ts +7 -0
- package/dist/canvas/utils/NodeUtils.d.ts.map +1 -1
- package/dist/canvas/utils/NodeUtils.js +13 -6
- package/dist/canvas/utils/container-sizing.cjs +169 -0
- package/dist/canvas/utils/container-sizing.d.ts +23 -0
- package/dist/canvas/utils/container-sizing.d.ts.map +1 -0
- package/dist/canvas/utils/container-sizing.js +132 -0
- package/dist/canvas/utils/createPreviewGraph.d.ts +1 -0
- package/dist/canvas/utils/createPreviewGraph.d.ts.map +1 -1
- package/dist/canvas/utils/createPreviewNode.cjs +29 -1
- package/dist/canvas/utils/createPreviewNode.d.ts.map +1 -1
- package/dist/canvas/utils/createPreviewNode.js +29 -1
- package/dist/canvas/utils/index.cjs +29 -22
- package/dist/canvas/utils/index.d.ts +1 -0
- package/dist/canvas/utils/index.d.ts.map +1 -1
- package/dist/canvas/utils/index.js +1 -0
- package/package.json +1 -1
|
@@ -33,8 +33,86 @@ const external_constants_cjs_namespaceObject = require("../../constants.cjs");
|
|
|
33
33
|
const index_cjs_namespaceObject = require("../../core/index.cjs");
|
|
34
34
|
const usePreviewNode_cjs_namespaceObject = require("../../hooks/usePreviewNode.cjs");
|
|
35
35
|
const external_utils_index_cjs_namespaceObject = require("../../utils/index.cjs");
|
|
36
|
+
const collapse_cjs_namespaceObject = require("../../utils/collapse.cjs");
|
|
37
|
+
const container_sizing_cjs_namespaceObject = require("../../utils/container-sizing.cjs");
|
|
38
|
+
const manifest_resolver_cjs_namespaceObject = require("../../utils/manifest-resolver.cjs");
|
|
36
39
|
const external_FloatingCanvasPanel_index_cjs_namespaceObject = require("../FloatingCanvasPanel/index.cjs");
|
|
40
|
+
const LoopNode_helpers_cjs_namespaceObject = require("../LoopNode/LoopNode.helpers.cjs");
|
|
41
|
+
const LoopNode_sequence_cjs_namespaceObject = require("../LoopNode/LoopNode.sequence.cjs");
|
|
37
42
|
const external_AddNodePanel_cjs_namespaceObject = require("./AddNodePanel.cjs");
|
|
43
|
+
function getManifestForNode(registry, node) {
|
|
44
|
+
return node.type ? registry?.getManifest(node.type, (0, manifest_resolver_cjs_namespaceObject.getNodeTypeVersion)(node.data)) : void 0;
|
|
45
|
+
}
|
|
46
|
+
function getManifestAwareNodeDimensions(registry, node) {
|
|
47
|
+
const manifest = getManifestForNode(registry, node);
|
|
48
|
+
const fallbackDimensions = (0, collapse_cjs_namespaceObject.getExpandedSize)(manifest?.display.shape, manifest);
|
|
49
|
+
return (0, container_sizing_cjs_namespaceObject.getNodeDimensions)(node, fallbackDimensions);
|
|
50
|
+
}
|
|
51
|
+
function getContainerFitGeometry(registry, node) {
|
|
52
|
+
const manifest = getManifestForNode(registry, node);
|
|
53
|
+
return (0, LoopNode_helpers_cjs_namespaceObject.isLoopContainerManifest)(manifest) ? (0, LoopNode_helpers_cjs_namespaceObject.getLoopContainerFitGeometry)() : null;
|
|
54
|
+
}
|
|
55
|
+
function centerNodeOnPreview(previewNode, nodeDimensions) {
|
|
56
|
+
const previewDimensions = (0, container_sizing_cjs_namespaceObject.getNodeDimensions)(previewNode);
|
|
57
|
+
return {
|
|
58
|
+
x: previewNode.position.x + (previewDimensions.width - nodeDimensions.width) / 2,
|
|
59
|
+
y: previewNode.position.y + (previewDimensions.height - nodeDimensions.height) / 2
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function centerNodeVerticallyOnPreview(previewNode, nodeDimensions) {
|
|
63
|
+
const previewDimensions = (0, container_sizing_cjs_namespaceObject.getNodeDimensions)(previewNode);
|
|
64
|
+
return {
|
|
65
|
+
x: previewNode.position.x,
|
|
66
|
+
y: previewNode.position.y + (previewDimensions.height - nodeDimensions.height) / 2
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function resolveSiblingCollisions(nodes, insertedNode, options) {
|
|
70
|
+
const siblingNodes = nodes.filter((node)=>node.parentId === insertedNode.parentId);
|
|
71
|
+
const resolvedSiblings = (0, external_utils_index_cjs_namespaceObject.resolveCollisions)(siblingNodes, options);
|
|
72
|
+
const resolvedSiblingsById = new Map(resolvedSiblings.map((node)=>[
|
|
73
|
+
node.id,
|
|
74
|
+
node
|
|
75
|
+
]));
|
|
76
|
+
return nodes.map((node)=>resolvedSiblingsById.get(node.id) ?? node);
|
|
77
|
+
}
|
|
78
|
+
function resolveNodePlacement(nodes, insertedNode, registry, ignoredNodeTypes, edges, loopSequencePlacement) {
|
|
79
|
+
const getNodeSize = (node)=>getManifestAwareNodeDimensions(registry, node);
|
|
80
|
+
if (!insertedNode.parentId) {
|
|
81
|
+
const resolvedNodes = (0, external_utils_index_cjs_namespaceObject.resolveCollisions)(nodes, {
|
|
82
|
+
ignoredNodeTypes,
|
|
83
|
+
getNodeSize
|
|
84
|
+
});
|
|
85
|
+
return {
|
|
86
|
+
nodes: resolvedNodes,
|
|
87
|
+
insertedNode: resolvedNodes.find((node)=>node.id === insertedNode.id) ?? insertedNode
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
const loopSequenceNodes = loopSequencePlacement ? (0, LoopNode_sequence_cjs_namespaceObject.resolveLoopSequenceMaterializedNodes)({
|
|
91
|
+
nodes,
|
|
92
|
+
edges,
|
|
93
|
+
insertedNode,
|
|
94
|
+
placement: loopSequencePlacement,
|
|
95
|
+
getNodeSize
|
|
96
|
+
}) : null;
|
|
97
|
+
let resolvedNodes = loopSequenceNodes;
|
|
98
|
+
if (!resolvedNodes) resolvedNodes = resolveSiblingCollisions(nodes, insertedNode, {
|
|
99
|
+
ignoredNodeTypes,
|
|
100
|
+
getNodeSize
|
|
101
|
+
});
|
|
102
|
+
const fittedNodes = (0, container_sizing_cjs_namespaceObject.ensureContainersFitChildren)(resolvedNodes, {
|
|
103
|
+
containerIds: [
|
|
104
|
+
insertedNode.parentId
|
|
105
|
+
],
|
|
106
|
+
getContainerFitGeometry: (node)=>getContainerFitGeometry(registry, node),
|
|
107
|
+
getNodeDimensions: getNodeSize,
|
|
108
|
+
ignoredNodeTypes,
|
|
109
|
+
includeAncestors: true
|
|
110
|
+
});
|
|
111
|
+
return {
|
|
112
|
+
nodes: fittedNodes,
|
|
113
|
+
insertedNode: fittedNodes.find((node)=>node.id === insertedNode.id) ?? insertedNode
|
|
114
|
+
};
|
|
115
|
+
}
|
|
38
116
|
const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData, onBeforeNodeAdded, onNodeAdded, ignoredNodeTypes })=>{
|
|
39
117
|
const reactFlowInstance = (0, react_cjs_namespaceObject.useReactFlow)();
|
|
40
118
|
const registry = (0, index_cjs_namespaceObject.useOptionalNodeTypeRegistry)();
|
|
@@ -70,28 +148,45 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
|
|
|
70
148
|
const handleNodeSelect = (0, external_react_namespaceObject.useCallback)((nodeItem)=>{
|
|
71
149
|
const currentPreviewNode = reactFlowInstance.getNode(external_constants_cjs_namespaceObject.PREVIEW_NODE_ID);
|
|
72
150
|
if (!currentPreviewNode || !previewNodeConnectionInfo || 0 === previewNodeConnectionInfo.length) return;
|
|
151
|
+
const loopSequenceResolverOptions = (0, LoopNode_sequence_cjs_namespaceObject.createLoopSequenceResolverOptions)(registry);
|
|
152
|
+
const loopSequencePlacement = (0, LoopNode_sequence_cjs_namespaceObject.getLoopSequencePlacementFromPreviewGraph)(currentPreviewNode, previewNodeConnectionInfo, {
|
|
153
|
+
isLoopContainerId: (containerId)=>{
|
|
154
|
+
const containerNode = reactFlowInstance.getNode(containerId);
|
|
155
|
+
return containerNode ? loopSequenceResolverOptions.isLoopContainerNode?.(containerNode) ?? false : false;
|
|
156
|
+
}
|
|
157
|
+
});
|
|
73
158
|
const newNodeId = `${nodeItem.data.type}-${Date.now()}`;
|
|
74
159
|
const baseNodeData = createNodeData ? createNodeData(nodeItem) : {
|
|
75
160
|
label: nodeItem.name,
|
|
76
161
|
subLabel: nodeItem.description
|
|
77
162
|
};
|
|
78
|
-
const nodeData =
|
|
163
|
+
const nodeData = {
|
|
79
164
|
...baseNodeData,
|
|
80
|
-
|
|
81
|
-
|
|
165
|
+
...nodeItem.data.version ? {
|
|
166
|
+
typeVersion: nodeItem.data.version
|
|
167
|
+
} : {},
|
|
168
|
+
...currentPreviewNode.data?.useSmartHandles ? {
|
|
169
|
+
useSmartHandles: true
|
|
170
|
+
} : {}
|
|
171
|
+
};
|
|
82
172
|
const newNode = {
|
|
83
173
|
id: newNodeId,
|
|
84
174
|
type: nodeItem.data.type,
|
|
85
175
|
position: currentPreviewNode.position,
|
|
176
|
+
parentId: currentPreviewNode.parentId,
|
|
177
|
+
extent: currentPreviewNode.extent,
|
|
86
178
|
selected: true,
|
|
87
179
|
data: nodeData
|
|
88
180
|
};
|
|
89
|
-
const newNodeManifest = registry?.getManifest(nodeItem.data.type);
|
|
181
|
+
const newNodeManifest = registry?.getManifest(nodeItem.data.type, nodeItem.data.version);
|
|
182
|
+
const newNodeDimensions = getManifestAwareNodeDimensions(registry, newNode);
|
|
183
|
+
if (currentPreviewNode.parentId) newNode.position = centerNodeOnPreview(currentPreviewNode, newNodeDimensions);
|
|
184
|
+
else if ((0, LoopNode_helpers_cjs_namespaceObject.isLoopContainerManifest)(newNodeManifest)) newNode.position = centerNodeVerticallyOnPreview(currentPreviewNode, newNodeDimensions);
|
|
90
185
|
const newEdges = [];
|
|
91
186
|
const previewEdgeIds = [];
|
|
92
187
|
for (const connectionInfoItem of previewNodeConnectionInfo){
|
|
93
188
|
const newNodeHandleType = connectionInfoItem.addNewNodeAsSource ? 'source' : 'target';
|
|
94
|
-
const newNodeDefaultHandle = newNodeManifest ? registry?.getDefaultHandle(newNodeManifest.nodeType, newNodeHandleType) : void 0;
|
|
189
|
+
const newNodeDefaultHandle = newNodeManifest ? registry?.getDefaultHandle(newNodeManifest.nodeType, newNodeHandleType, nodeItem.data.version) : void 0;
|
|
95
190
|
const newNodeHandleId = newNodeDefaultHandle?.id;
|
|
96
191
|
const edgeSourceTargetData = connectionInfoItem.addNewNodeAsSource ? {
|
|
97
192
|
source: newNode.id,
|
|
@@ -116,6 +211,7 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
|
|
|
116
211
|
newNode,
|
|
117
212
|
newEdges
|
|
118
213
|
};
|
|
214
|
+
let resolvedFinalNode = finalNode;
|
|
119
215
|
reactFlowInstance.setNodes((nodes)=>{
|
|
120
216
|
const newNodes = [
|
|
121
217
|
...nodes.filter((n)=>n.id !== external_constants_cjs_namespaceObject.PREVIEW_NODE_ID).map((n)=>({
|
|
@@ -124,9 +220,9 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
|
|
|
124
220
|
})),
|
|
125
221
|
finalNode
|
|
126
222
|
];
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
223
|
+
const placement = resolveNodePlacement(newNodes, finalNode, registry, ignoredNodeTypes, reactFlowInstance.getEdges(), loopSequencePlacement);
|
|
224
|
+
resolvedFinalNode = placement.insertedNode;
|
|
225
|
+
return placement.nodes;
|
|
130
226
|
});
|
|
131
227
|
reactFlowInstance.setEdges((edges)=>[
|
|
132
228
|
...edges.filter((e)=>!previewEdgeIds.includes(e.id)),
|
|
@@ -134,7 +230,7 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
|
|
|
134
230
|
]);
|
|
135
231
|
const [firstConnection] = previewNodeConnectionInfo;
|
|
136
232
|
if (firstConnection) {
|
|
137
|
-
const firstEdgeSourceHandle = firstConnection.addNewNodeAsSource ? newNodeManifest && registry?.getDefaultHandle(newNodeManifest.nodeType, 'source')?.id : firstConnection.existingHandleId;
|
|
233
|
+
const firstEdgeSourceHandle = firstConnection.addNewNodeAsSource ? newNodeManifest && registry?.getDefaultHandle(newNodeManifest.nodeType, 'source', nodeItem.data.version)?.id : firstConnection.existingHandleId;
|
|
138
234
|
const firstEdgeData = firstConnection.addNewNodeAsSource ? {
|
|
139
235
|
source: finalNode.id,
|
|
140
236
|
sourceHandle: firstEdgeSourceHandle ?? 'output'
|
|
@@ -142,7 +238,7 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
|
|
|
142
238
|
source: firstConnection.existingNodeId,
|
|
143
239
|
sourceHandle: firstConnection.existingHandleId
|
|
144
240
|
};
|
|
145
|
-
onNodeAdded?.(firstEdgeData.source, firstEdgeData.sourceHandle,
|
|
241
|
+
onNodeAdded?.(firstEdgeData.source, firstEdgeData.sourceHandle, resolvedFinalNode);
|
|
146
242
|
}
|
|
147
243
|
restoreEdgesRef.current = null;
|
|
148
244
|
handleClose();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddNodeManager.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/AddNodePanel/AddNodeManager.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AddNodeManager.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/AddNodePanel/AddNodeManager.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAShD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAKlC,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC;IAI7E,YAAY,CAAC,EAAE,OAAO,CAAC;IAIvB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAK7F,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,YAAY,CAAC;IAOtE,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,IAAI,EAAE,CAAA;KAAE,CAAC;IAK7F,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC;IAMpF,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAsHD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA0OxD,CAAC"}
|
|
@@ -5,8 +5,86 @@ import { FLOATING_CANVAS_PANEL_OFFSET, PREVIEW_NODE_ID } from "../../constants.j
|
|
|
5
5
|
import { useOptionalNodeTypeRegistry } from "../../core/index.js";
|
|
6
6
|
import { usePreviewNode } from "../../hooks/usePreviewNode.js";
|
|
7
7
|
import { resolveCollisions } from "../../utils/index.js";
|
|
8
|
+
import { getExpandedSize } from "../../utils/collapse.js";
|
|
9
|
+
import { ensureContainersFitChildren, getNodeDimensions } from "../../utils/container-sizing.js";
|
|
10
|
+
import { getNodeTypeVersion } from "../../utils/manifest-resolver.js";
|
|
8
11
|
import { FloatingCanvasPanel } from "../FloatingCanvasPanel/index.js";
|
|
12
|
+
import { getLoopContainerFitGeometry, isLoopContainerManifest } from "../LoopNode/LoopNode.helpers.js";
|
|
13
|
+
import { createLoopSequenceResolverOptions, getLoopSequencePlacementFromPreviewGraph, resolveLoopSequenceMaterializedNodes } from "../LoopNode/LoopNode.sequence.js";
|
|
9
14
|
import { AddNodePanel } from "./AddNodePanel.js";
|
|
15
|
+
function getManifestForNode(registry, node) {
|
|
16
|
+
return node.type ? registry?.getManifest(node.type, getNodeTypeVersion(node.data)) : void 0;
|
|
17
|
+
}
|
|
18
|
+
function getManifestAwareNodeDimensions(registry, node) {
|
|
19
|
+
const manifest = getManifestForNode(registry, node);
|
|
20
|
+
const fallbackDimensions = getExpandedSize(manifest?.display.shape, manifest);
|
|
21
|
+
return getNodeDimensions(node, fallbackDimensions);
|
|
22
|
+
}
|
|
23
|
+
function getContainerFitGeometry(registry, node) {
|
|
24
|
+
const manifest = getManifestForNode(registry, node);
|
|
25
|
+
return isLoopContainerManifest(manifest) ? getLoopContainerFitGeometry() : null;
|
|
26
|
+
}
|
|
27
|
+
function centerNodeOnPreview(previewNode, nodeDimensions) {
|
|
28
|
+
const previewDimensions = getNodeDimensions(previewNode);
|
|
29
|
+
return {
|
|
30
|
+
x: previewNode.position.x + (previewDimensions.width - nodeDimensions.width) / 2,
|
|
31
|
+
y: previewNode.position.y + (previewDimensions.height - nodeDimensions.height) / 2
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function centerNodeVerticallyOnPreview(previewNode, nodeDimensions) {
|
|
35
|
+
const previewDimensions = getNodeDimensions(previewNode);
|
|
36
|
+
return {
|
|
37
|
+
x: previewNode.position.x,
|
|
38
|
+
y: previewNode.position.y + (previewDimensions.height - nodeDimensions.height) / 2
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function resolveSiblingCollisions(nodes, insertedNode, options) {
|
|
42
|
+
const siblingNodes = nodes.filter((node)=>node.parentId === insertedNode.parentId);
|
|
43
|
+
const resolvedSiblings = resolveCollisions(siblingNodes, options);
|
|
44
|
+
const resolvedSiblingsById = new Map(resolvedSiblings.map((node)=>[
|
|
45
|
+
node.id,
|
|
46
|
+
node
|
|
47
|
+
]));
|
|
48
|
+
return nodes.map((node)=>resolvedSiblingsById.get(node.id) ?? node);
|
|
49
|
+
}
|
|
50
|
+
function resolveNodePlacement(nodes, insertedNode, registry, ignoredNodeTypes, edges, loopSequencePlacement) {
|
|
51
|
+
const getNodeSize = (node)=>getManifestAwareNodeDimensions(registry, node);
|
|
52
|
+
if (!insertedNode.parentId) {
|
|
53
|
+
const resolvedNodes = resolveCollisions(nodes, {
|
|
54
|
+
ignoredNodeTypes,
|
|
55
|
+
getNodeSize
|
|
56
|
+
});
|
|
57
|
+
return {
|
|
58
|
+
nodes: resolvedNodes,
|
|
59
|
+
insertedNode: resolvedNodes.find((node)=>node.id === insertedNode.id) ?? insertedNode
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const loopSequenceNodes = loopSequencePlacement ? resolveLoopSequenceMaterializedNodes({
|
|
63
|
+
nodes,
|
|
64
|
+
edges,
|
|
65
|
+
insertedNode,
|
|
66
|
+
placement: loopSequencePlacement,
|
|
67
|
+
getNodeSize
|
|
68
|
+
}) : null;
|
|
69
|
+
let resolvedNodes = loopSequenceNodes;
|
|
70
|
+
if (!resolvedNodes) resolvedNodes = resolveSiblingCollisions(nodes, insertedNode, {
|
|
71
|
+
ignoredNodeTypes,
|
|
72
|
+
getNodeSize
|
|
73
|
+
});
|
|
74
|
+
const fittedNodes = ensureContainersFitChildren(resolvedNodes, {
|
|
75
|
+
containerIds: [
|
|
76
|
+
insertedNode.parentId
|
|
77
|
+
],
|
|
78
|
+
getContainerFitGeometry: (node)=>getContainerFitGeometry(registry, node),
|
|
79
|
+
getNodeDimensions: getNodeSize,
|
|
80
|
+
ignoredNodeTypes,
|
|
81
|
+
includeAncestors: true
|
|
82
|
+
});
|
|
83
|
+
return {
|
|
84
|
+
nodes: fittedNodes,
|
|
85
|
+
insertedNode: fittedNodes.find((node)=>node.id === insertedNode.id) ?? insertedNode
|
|
86
|
+
};
|
|
87
|
+
}
|
|
10
88
|
const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData, onBeforeNodeAdded, onNodeAdded, ignoredNodeTypes })=>{
|
|
11
89
|
const reactFlowInstance = useReactFlow();
|
|
12
90
|
const registry = useOptionalNodeTypeRegistry();
|
|
@@ -42,28 +120,45 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
|
|
|
42
120
|
const handleNodeSelect = useCallback((nodeItem)=>{
|
|
43
121
|
const currentPreviewNode = reactFlowInstance.getNode(PREVIEW_NODE_ID);
|
|
44
122
|
if (!currentPreviewNode || !previewNodeConnectionInfo || 0 === previewNodeConnectionInfo.length) return;
|
|
123
|
+
const loopSequenceResolverOptions = createLoopSequenceResolverOptions(registry);
|
|
124
|
+
const loopSequencePlacement = getLoopSequencePlacementFromPreviewGraph(currentPreviewNode, previewNodeConnectionInfo, {
|
|
125
|
+
isLoopContainerId: (containerId)=>{
|
|
126
|
+
const containerNode = reactFlowInstance.getNode(containerId);
|
|
127
|
+
return containerNode ? loopSequenceResolverOptions.isLoopContainerNode?.(containerNode) ?? false : false;
|
|
128
|
+
}
|
|
129
|
+
});
|
|
45
130
|
const newNodeId = `${nodeItem.data.type}-${Date.now()}`;
|
|
46
131
|
const baseNodeData = createNodeData ? createNodeData(nodeItem) : {
|
|
47
132
|
label: nodeItem.name,
|
|
48
133
|
subLabel: nodeItem.description
|
|
49
134
|
};
|
|
50
|
-
const nodeData =
|
|
135
|
+
const nodeData = {
|
|
51
136
|
...baseNodeData,
|
|
52
|
-
|
|
53
|
-
|
|
137
|
+
...nodeItem.data.version ? {
|
|
138
|
+
typeVersion: nodeItem.data.version
|
|
139
|
+
} : {},
|
|
140
|
+
...currentPreviewNode.data?.useSmartHandles ? {
|
|
141
|
+
useSmartHandles: true
|
|
142
|
+
} : {}
|
|
143
|
+
};
|
|
54
144
|
const newNode = {
|
|
55
145
|
id: newNodeId,
|
|
56
146
|
type: nodeItem.data.type,
|
|
57
147
|
position: currentPreviewNode.position,
|
|
148
|
+
parentId: currentPreviewNode.parentId,
|
|
149
|
+
extent: currentPreviewNode.extent,
|
|
58
150
|
selected: true,
|
|
59
151
|
data: nodeData
|
|
60
152
|
};
|
|
61
|
-
const newNodeManifest = registry?.getManifest(nodeItem.data.type);
|
|
153
|
+
const newNodeManifest = registry?.getManifest(nodeItem.data.type, nodeItem.data.version);
|
|
154
|
+
const newNodeDimensions = getManifestAwareNodeDimensions(registry, newNode);
|
|
155
|
+
if (currentPreviewNode.parentId) newNode.position = centerNodeOnPreview(currentPreviewNode, newNodeDimensions);
|
|
156
|
+
else if (isLoopContainerManifest(newNodeManifest)) newNode.position = centerNodeVerticallyOnPreview(currentPreviewNode, newNodeDimensions);
|
|
62
157
|
const newEdges = [];
|
|
63
158
|
const previewEdgeIds = [];
|
|
64
159
|
for (const connectionInfoItem of previewNodeConnectionInfo){
|
|
65
160
|
const newNodeHandleType = connectionInfoItem.addNewNodeAsSource ? 'source' : 'target';
|
|
66
|
-
const newNodeDefaultHandle = newNodeManifest ? registry?.getDefaultHandle(newNodeManifest.nodeType, newNodeHandleType) : void 0;
|
|
161
|
+
const newNodeDefaultHandle = newNodeManifest ? registry?.getDefaultHandle(newNodeManifest.nodeType, newNodeHandleType, nodeItem.data.version) : void 0;
|
|
67
162
|
const newNodeHandleId = newNodeDefaultHandle?.id;
|
|
68
163
|
const edgeSourceTargetData = connectionInfoItem.addNewNodeAsSource ? {
|
|
69
164
|
source: newNode.id,
|
|
@@ -88,6 +183,7 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
|
|
|
88
183
|
newNode,
|
|
89
184
|
newEdges
|
|
90
185
|
};
|
|
186
|
+
let resolvedFinalNode = finalNode;
|
|
91
187
|
reactFlowInstance.setNodes((nodes)=>{
|
|
92
188
|
const newNodes = [
|
|
93
189
|
...nodes.filter((n)=>n.id !== PREVIEW_NODE_ID).map((n)=>({
|
|
@@ -96,9 +192,9 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
|
|
|
96
192
|
})),
|
|
97
193
|
finalNode
|
|
98
194
|
];
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
195
|
+
const placement = resolveNodePlacement(newNodes, finalNode, registry, ignoredNodeTypes, reactFlowInstance.getEdges(), loopSequencePlacement);
|
|
196
|
+
resolvedFinalNode = placement.insertedNode;
|
|
197
|
+
return placement.nodes;
|
|
102
198
|
});
|
|
103
199
|
reactFlowInstance.setEdges((edges)=>[
|
|
104
200
|
...edges.filter((e)=>!previewEdgeIds.includes(e.id)),
|
|
@@ -106,7 +202,7 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
|
|
|
106
202
|
]);
|
|
107
203
|
const [firstConnection] = previewNodeConnectionInfo;
|
|
108
204
|
if (firstConnection) {
|
|
109
|
-
const firstEdgeSourceHandle = firstConnection.addNewNodeAsSource ? newNodeManifest && registry?.getDefaultHandle(newNodeManifest.nodeType, 'source')?.id : firstConnection.existingHandleId;
|
|
205
|
+
const firstEdgeSourceHandle = firstConnection.addNewNodeAsSource ? newNodeManifest && registry?.getDefaultHandle(newNodeManifest.nodeType, 'source', nodeItem.data.version)?.id : firstConnection.existingHandleId;
|
|
110
206
|
const firstEdgeData = firstConnection.addNewNodeAsSource ? {
|
|
111
207
|
source: finalNode.id,
|
|
112
208
|
sourceHandle: firstEdgeSourceHandle ?? 'output'
|
|
@@ -114,7 +210,7 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
|
|
|
114
210
|
source: firstConnection.existingNodeId,
|
|
115
211
|
sourceHandle: firstConnection.existingHandleId
|
|
116
212
|
};
|
|
117
|
-
onNodeAdded?.(firstEdgeData.source, firstEdgeData.sourceHandle,
|
|
213
|
+
onNodeAdded?.(firstEdgeData.source, firstEdgeData.sourceHandle, resolvedFinalNode);
|
|
118
214
|
}
|
|
119
215
|
restoreEdgesRef.current = null;
|
|
120
216
|
handleClose();
|
|
@@ -28,7 +28,35 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
28
28
|
});
|
|
29
29
|
const react_cjs_namespaceObject = require("../../xyflow/react.cjs");
|
|
30
30
|
const createPreviewGraph_cjs_namespaceObject = require("../../utils/createPreviewGraph.cjs");
|
|
31
|
-
|
|
31
|
+
const LoopNode_sequence_cjs_namespaceObject = require("../LoopNode/LoopNode.sequence.cjs");
|
|
32
|
+
function normalizeOptions(options) {
|
|
33
|
+
return Array.isArray(options) ? {
|
|
34
|
+
ignoredNodeTypes: options
|
|
35
|
+
} : options;
|
|
36
|
+
}
|
|
37
|
+
function createAddNodePreview(sourceNodeId, sourceHandleId, reactFlowInstance, handlePosition = react_cjs_namespaceObject.Position.Right, sourceHandleType = 'source', options = []) {
|
|
38
|
+
const { ignoredNodeTypes = [], ...providedResolverOptions } = normalizeOptions(options);
|
|
39
|
+
const resolverOptions = {
|
|
40
|
+
...(0, LoopNode_sequence_cjs_namespaceObject.createLoopSequenceResolverOptions)(null),
|
|
41
|
+
...providedResolverOptions
|
|
42
|
+
};
|
|
43
|
+
if ('source' === sourceHandleType) {
|
|
44
|
+
const loopPreview = (0, LoopNode_sequence_cjs_namespaceObject.resolveLoopAddNodePreview)({
|
|
45
|
+
sourceNodeId,
|
|
46
|
+
sourceHandleId,
|
|
47
|
+
reactFlowInstance,
|
|
48
|
+
resolverOptions
|
|
49
|
+
});
|
|
50
|
+
if ('create-preview' === loopPreview.action) return void (0, createPreviewGraph_cjs_namespaceObject.showPreviewGraph)({
|
|
51
|
+
sourceNodeId,
|
|
52
|
+
sourceHandleId,
|
|
53
|
+
reactFlowInstance,
|
|
54
|
+
sourceHandleType,
|
|
55
|
+
handlePosition,
|
|
56
|
+
ignoredNodeTypes,
|
|
57
|
+
...loopPreview.previewGraphOptions
|
|
58
|
+
});
|
|
59
|
+
}
|
|
32
60
|
(0, createPreviewGraph_cjs_namespaceObject.showPreviewGraph)({
|
|
33
61
|
sourceNodeId,
|
|
34
62
|
sourceHandleId,
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import { Position, type ReactFlowInstance } from '../../xyflow/react.ts';
|
|
2
|
-
|
|
2
|
+
import { type LoopSequenceResolverOptions } from '../LoopNode/LoopNode.sequence';
|
|
3
|
+
export interface CreateAddNodePreviewOptions extends LoopSequenceResolverOptions {
|
|
4
|
+
ignoredNodeTypes?: string[];
|
|
5
|
+
}
|
|
6
|
+
export declare function createAddNodePreview(sourceNodeId: string, sourceHandleId: string, reactFlowInstance: ReactFlowInstance, handlePosition?: Position, sourceHandleType?: 'source' | 'target', options?: string[] | CreateAddNodePreviewOptions): void;
|
|
3
7
|
//# sourceMappingURL=createAddNodePreview.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createAddNodePreview.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/AddNodePanel/createAddNodePreview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"createAddNodePreview.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/AddNodePanel/createAddNodePreview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAE5F,OAAO,EAEL,KAAK,2BAA2B,EAEjC,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,2BAA4B,SAAQ,2BAA2B;IAC9E,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAkBD,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,GAAE,QAAyB,EACzC,gBAAgB,GAAE,QAAQ,GAAG,QAAmB,EAChD,OAAO,GAAE,MAAM,EAAE,GAAG,2BAAgC,GACnD,IAAI,CAqCN"}
|
|
@@ -1,6 +1,34 @@
|
|
|
1
1
|
import { Position } from "../../xyflow/react.js";
|
|
2
2
|
import { showPreviewGraph } from "../../utils/createPreviewGraph.js";
|
|
3
|
-
|
|
3
|
+
import { createLoopSequenceResolverOptions, resolveLoopAddNodePreview } from "../LoopNode/LoopNode.sequence.js";
|
|
4
|
+
function normalizeOptions(options) {
|
|
5
|
+
return Array.isArray(options) ? {
|
|
6
|
+
ignoredNodeTypes: options
|
|
7
|
+
} : options;
|
|
8
|
+
}
|
|
9
|
+
function createAddNodePreview(sourceNodeId, sourceHandleId, reactFlowInstance, handlePosition = Position.Right, sourceHandleType = 'source', options = []) {
|
|
10
|
+
const { ignoredNodeTypes = [], ...providedResolverOptions } = normalizeOptions(options);
|
|
11
|
+
const resolverOptions = {
|
|
12
|
+
...createLoopSequenceResolverOptions(null),
|
|
13
|
+
...providedResolverOptions
|
|
14
|
+
};
|
|
15
|
+
if ('source' === sourceHandleType) {
|
|
16
|
+
const loopPreview = resolveLoopAddNodePreview({
|
|
17
|
+
sourceNodeId,
|
|
18
|
+
sourceHandleId,
|
|
19
|
+
reactFlowInstance,
|
|
20
|
+
resolverOptions
|
|
21
|
+
});
|
|
22
|
+
if ('create-preview' === loopPreview.action) return void showPreviewGraph({
|
|
23
|
+
sourceNodeId,
|
|
24
|
+
sourceHandleId,
|
|
25
|
+
reactFlowInstance,
|
|
26
|
+
sourceHandleType,
|
|
27
|
+
handlePosition,
|
|
28
|
+
ignoredNodeTypes,
|
|
29
|
+
...loopPreview.previewGraphOptions
|
|
30
|
+
});
|
|
31
|
+
}
|
|
4
32
|
showPreviewGraph({
|
|
5
33
|
sourceNodeId,
|
|
6
34
|
sourceHandleId,
|
|
@@ -92,6 +92,8 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ (0, external_react_namespaceObje
|
|
|
92
92
|
const status = executionStatus ? executionStatus?.status ?? executionStatus : validationStatus;
|
|
93
93
|
const isDiffAdded = data?.isDiffAdded === true;
|
|
94
94
|
const isDiffRemoved = data?.isDiffRemoved === true;
|
|
95
|
+
const hideArrowHead = data?.hideArrowHead === true;
|
|
96
|
+
const hideToolbar = data?.hideToolbar === true;
|
|
95
97
|
const angle = ANGLE_MAP[targetPosition];
|
|
96
98
|
const { x: offsetX, y: offsetY } = ARROW_OFFSETS[targetPosition];
|
|
97
99
|
const { edgePath, labelX, labelY } = (0, index_cjs_namespaceObject.useEdgePath)({
|
|
@@ -102,8 +104,8 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ (0, external_react_namespaceObje
|
|
|
102
104
|
sourceX,
|
|
103
105
|
sourceY,
|
|
104
106
|
sourcePosition,
|
|
105
|
-
targetX,
|
|
106
|
-
targetY,
|
|
107
|
+
targetX: hideArrowHead ? targetX + offsetX : targetX,
|
|
108
|
+
targetY: hideArrowHead ? targetY + offsetY : targetY,
|
|
107
109
|
targetPosition
|
|
108
110
|
});
|
|
109
111
|
const { showToolbar, toolbarPositioning, config: toolbarConfig, handleMouseMoveOnPath } = (0, external_Toolbar_index_cjs_namespaceObject.useEdgeToolbarState)({
|
|
@@ -170,12 +172,12 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ (0, external_react_namespaceObje
|
|
|
170
172
|
},
|
|
171
173
|
ref: pathElementRef
|
|
172
174
|
}),
|
|
173
|
-
/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("polygon", {
|
|
175
|
+
!hideArrowHead && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("polygon", {
|
|
174
176
|
points: `
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
177
|
+
${targetX},${targetY}
|
|
178
|
+
${targetX - ARROW_SIZE * Math.cos(angle - Math.PI / 6)},${targetY - ARROW_SIZE * Math.sin(angle - Math.PI / 6)}
|
|
179
|
+
${targetX - ARROW_SIZE * Math.cos(angle + Math.PI / 6)},${targetY - ARROW_SIZE * Math.sin(angle + Math.PI / 6)}
|
|
180
|
+
`,
|
|
179
181
|
fill: edgeColor,
|
|
180
182
|
style: {
|
|
181
183
|
pointerEvents: 'none',
|
|
@@ -215,7 +217,7 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ (0, external_react_namespaceObje
|
|
|
215
217
|
})
|
|
216
218
|
]
|
|
217
219
|
}),
|
|
218
|
-
showToolbar && toolbarPositioning && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_Toolbar_index_cjs_namespaceObject.EdgeToolbar, {
|
|
220
|
+
!hideToolbar && showToolbar && toolbarPositioning && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_Toolbar_index_cjs_namespaceObject.EdgeToolbar, {
|
|
219
221
|
edgeId: id,
|
|
220
222
|
visible: showToolbar,
|
|
221
223
|
positioning: toolbarPositioning,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SequenceEdge.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/Edges/SequenceEdge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,0CAA0C,CAAC;AAoDpF,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"SequenceEdge.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/Edges/SequenceEdge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,0CAA0C,CAAC;AAoDpF,eAAO,MAAM,YAAY,iDA+MJ,CAAC"}
|
|
@@ -64,6 +64,8 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ memo(function({ id, selected, so
|
|
|
64
64
|
const status = executionStatus ? executionStatus?.status ?? executionStatus : validationStatus;
|
|
65
65
|
const isDiffAdded = data?.isDiffAdded === true;
|
|
66
66
|
const isDiffRemoved = data?.isDiffRemoved === true;
|
|
67
|
+
const hideArrowHead = data?.hideArrowHead === true;
|
|
68
|
+
const hideToolbar = data?.hideToolbar === true;
|
|
67
69
|
const angle = ANGLE_MAP[targetPosition];
|
|
68
70
|
const { x: offsetX, y: offsetY } = ARROW_OFFSETS[targetPosition];
|
|
69
71
|
const { edgePath, labelX, labelY } = useEdgePath({
|
|
@@ -74,8 +76,8 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ memo(function({ id, selected, so
|
|
|
74
76
|
sourceX,
|
|
75
77
|
sourceY,
|
|
76
78
|
sourcePosition,
|
|
77
|
-
targetX,
|
|
78
|
-
targetY,
|
|
79
|
+
targetX: hideArrowHead ? targetX + offsetX : targetX,
|
|
80
|
+
targetY: hideArrowHead ? targetY + offsetY : targetY,
|
|
79
81
|
targetPosition
|
|
80
82
|
});
|
|
81
83
|
const { showToolbar, toolbarPositioning, config: toolbarConfig, handleMouseMoveOnPath } = useEdgeToolbarState({
|
|
@@ -142,12 +144,12 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ memo(function({ id, selected, so
|
|
|
142
144
|
},
|
|
143
145
|
ref: pathElementRef
|
|
144
146
|
}),
|
|
145
|
-
/*#__PURE__*/ jsx("polygon", {
|
|
147
|
+
!hideArrowHead && /*#__PURE__*/ jsx("polygon", {
|
|
146
148
|
points: `
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
149
|
+
${targetX},${targetY}
|
|
150
|
+
${targetX - ARROW_SIZE * Math.cos(angle - Math.PI / 6)},${targetY - ARROW_SIZE * Math.sin(angle - Math.PI / 6)}
|
|
151
|
+
${targetX - ARROW_SIZE * Math.cos(angle + Math.PI / 6)},${targetY - ARROW_SIZE * Math.sin(angle + Math.PI / 6)}
|
|
152
|
+
`,
|
|
151
153
|
fill: edgeColor,
|
|
152
154
|
style: {
|
|
153
155
|
pointerEvents: 'none',
|
|
@@ -187,7 +189,7 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ memo(function({ id, selected, so
|
|
|
187
189
|
})
|
|
188
190
|
]
|
|
189
191
|
}),
|
|
190
|
-
showToolbar && toolbarPositioning && /*#__PURE__*/ jsx(EdgeToolbar, {
|
|
192
|
+
!hideToolbar && showToolbar && toolbarPositioning && /*#__PURE__*/ jsx(EdgeToolbar, {
|
|
191
193
|
edgeId: id,
|
|
192
194
|
visible: showToolbar,
|
|
193
195
|
positioning: toolbarPositioning,
|
|
@@ -35,6 +35,7 @@ const canvasStore_cjs_namespaceObject = require("../../stores/canvasStore.cjs");
|
|
|
35
35
|
const CanvasEventBus_cjs_namespaceObject = require("../../utils/CanvasEventBus.cjs");
|
|
36
36
|
const icon_registry_cjs_namespaceObject = require("../../utils/icon-registry.cjs");
|
|
37
37
|
const createAddNodePreview_cjs_namespaceObject = require("../AddNodePanel/createAddNodePreview.cjs");
|
|
38
|
+
const LoopNode_sequence_cjs_namespaceObject = require("../LoopNode/LoopNode.sequence.cjs");
|
|
38
39
|
const external_HierarchicalCanvas_cjs_namespaceObject = require("./HierarchicalCanvas.cjs");
|
|
39
40
|
const createDemoCanvases = ()=>{
|
|
40
41
|
const rootCanvas = {
|
|
@@ -325,6 +326,7 @@ const workflowManifest = {
|
|
|
325
326
|
};
|
|
326
327
|
const CanvasWithControlsContent = ({ initialCanvases, initialPath, onCanvasesChange, onPathChange })=>{
|
|
327
328
|
const reactFlowInstance = (0, react_cjs_namespaceObject.useReactFlow)();
|
|
329
|
+
const registry = (0, index_cjs_namespaceObject.useOptionalNodeTypeRegistry)();
|
|
328
330
|
const currentCanvas = (0, canvasStore_cjs_namespaceObject.useCanvasStore)(canvasStore_cjs_namespaceObject.selectCurrentCanvas);
|
|
329
331
|
const currentPathLength = (0, canvasStore_cjs_namespaceObject.useCanvasStore)(canvasStore_cjs_namespaceObject.selectCurrentPathLength);
|
|
330
332
|
const addNode = (0, canvasStore_cjs_namespaceObject.useCanvasStore)(canvasStore_cjs_namespaceObject.selectAddNode);
|
|
@@ -332,15 +334,20 @@ const CanvasWithControlsContent = ({ initialCanvases, initialPath, onCanvasesCha
|
|
|
332
334
|
const removeEdge = (0, canvasStore_cjs_namespaceObject.useCanvasStore)(canvasStore_cjs_namespaceObject.selectRemoveEdge);
|
|
333
335
|
const updateNodes = (0, canvasStore_cjs_namespaceObject.useCanvasStore)(canvasStore_cjs_namespaceObject.selectUpdateNodes);
|
|
334
336
|
(0, external_react_namespaceObject.useEffect)(()=>{
|
|
337
|
+
const resolverOptions = (0, LoopNode_sequence_cjs_namespaceObject.createLoopSequenceResolverOptions)(registry);
|
|
335
338
|
const handleAction = (event)=>{
|
|
336
|
-
if (reactFlowInstance)
|
|
339
|
+
if (reactFlowInstance) {
|
|
340
|
+
const sourceHandleType = 'input' === event.handleType ? 'target' : 'source';
|
|
341
|
+
(0, createAddNodePreview_cjs_namespaceObject.createAddNodePreview)(event.nodeId, event.handleId, reactFlowInstance, event.position, sourceHandleType, resolverOptions);
|
|
342
|
+
}
|
|
337
343
|
};
|
|
338
344
|
CanvasEventBus_cjs_namespaceObject.canvasEventBus.on('handle:action', handleAction);
|
|
339
345
|
return ()=>{
|
|
340
346
|
CanvasEventBus_cjs_namespaceObject.canvasEventBus.off('handle:action', handleAction);
|
|
341
347
|
};
|
|
342
348
|
}, [
|
|
343
|
-
reactFlowInstance
|
|
349
|
+
reactFlowInstance,
|
|
350
|
+
registry
|
|
344
351
|
]);
|
|
345
352
|
const handleAddNode = (0, external_react_namespaceObject.useCallback)((nodeType)=>{
|
|
346
353
|
const existingNodes = currentCanvas?.nodes.filter((n)=>'blank-canvas-node' !== n.id).length || 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HierarchicalCanvasWithControls.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/HierarchicalCanvas/HierarchicalCanvasWithControls.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HierarchicalCanvasWithControls.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/HierarchicalCanvas/HierarchicalCanvasWithControls.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAye/B,eAAO,MAAM,8BAA8B,EAAE,KAAK,CAAC,EA8BlD,CAAC"}
|
|
@@ -2,11 +2,12 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Panel, ReactFlowProvider, useReactFlow } from "../../xyflow/react.js";
|
|
3
3
|
import { Button } from "@uipath/apollo-wind";
|
|
4
4
|
import { useCallback, useEffect, useState } from "react";
|
|
5
|
-
import { NodeRegistryProvider } from "../../core/index.js";
|
|
5
|
+
import { NodeRegistryProvider, useOptionalNodeTypeRegistry } from "../../core/index.js";
|
|
6
6
|
import { selectAddNode, selectCurrentCanvas, selectCurrentPathLength, selectRemoveEdge, selectRemoveNode, selectUpdateNodes, useCanvasStore } from "../../stores/canvasStore.js";
|
|
7
7
|
import { canvasEventBus } from "../../utils/CanvasEventBus.js";
|
|
8
8
|
import { CanvasIcon } from "../../utils/icon-registry.js";
|
|
9
9
|
import { createAddNodePreview } from "../AddNodePanel/createAddNodePreview.js";
|
|
10
|
+
import { createLoopSequenceResolverOptions } from "../LoopNode/LoopNode.sequence.js";
|
|
10
11
|
import { HierarchicalCanvas } from "./HierarchicalCanvas.js";
|
|
11
12
|
const createDemoCanvases = ()=>{
|
|
12
13
|
const rootCanvas = {
|
|
@@ -297,6 +298,7 @@ const workflowManifest = {
|
|
|
297
298
|
};
|
|
298
299
|
const CanvasWithControlsContent = ({ initialCanvases, initialPath, onCanvasesChange, onPathChange })=>{
|
|
299
300
|
const reactFlowInstance = useReactFlow();
|
|
301
|
+
const registry = useOptionalNodeTypeRegistry();
|
|
300
302
|
const currentCanvas = useCanvasStore(selectCurrentCanvas);
|
|
301
303
|
const currentPathLength = useCanvasStore(selectCurrentPathLength);
|
|
302
304
|
const addNode = useCanvasStore(selectAddNode);
|
|
@@ -304,15 +306,20 @@ const CanvasWithControlsContent = ({ initialCanvases, initialPath, onCanvasesCha
|
|
|
304
306
|
const removeEdge = useCanvasStore(selectRemoveEdge);
|
|
305
307
|
const updateNodes = useCanvasStore(selectUpdateNodes);
|
|
306
308
|
useEffect(()=>{
|
|
309
|
+
const resolverOptions = createLoopSequenceResolverOptions(registry);
|
|
307
310
|
const handleAction = (event)=>{
|
|
308
|
-
if (reactFlowInstance)
|
|
311
|
+
if (reactFlowInstance) {
|
|
312
|
+
const sourceHandleType = 'input' === event.handleType ? 'target' : 'source';
|
|
313
|
+
createAddNodePreview(event.nodeId, event.handleId, reactFlowInstance, event.position, sourceHandleType, resolverOptions);
|
|
314
|
+
}
|
|
309
315
|
};
|
|
310
316
|
canvasEventBus.on('handle:action', handleAction);
|
|
311
317
|
return ()=>{
|
|
312
318
|
canvasEventBus.off('handle:action', handleAction);
|
|
313
319
|
};
|
|
314
320
|
}, [
|
|
315
|
-
reactFlowInstance
|
|
321
|
+
reactFlowInstance,
|
|
322
|
+
registry
|
|
316
323
|
]);
|
|
317
324
|
const handleAddNode = useCallback((nodeType)=>{
|
|
318
325
|
const existingNodes = currentCanvas?.nodes.filter((n)=>'blank-canvas-node' !== n.id).length || 0;
|