@uipath/apollo-react 4.22.2 → 4.23.0

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.
Files changed (73) hide show
  1. package/dist/canvas/components/AddNodePanel/AddNodeManager.cjs +4 -1
  2. package/dist/canvas/components/AddNodePanel/AddNodeManager.d.ts.map +1 -1
  3. package/dist/canvas/components/AddNodePanel/AddNodeManager.helpers.cjs +15 -26
  4. package/dist/canvas/components/AddNodePanel/AddNodeManager.helpers.d.ts +3 -3
  5. package/dist/canvas/components/AddNodePanel/AddNodeManager.helpers.d.ts.map +1 -1
  6. package/dist/canvas/components/AddNodePanel/AddNodeManager.helpers.js +18 -29
  7. package/dist/canvas/components/AddNodePanel/AddNodeManager.js +4 -1
  8. package/dist/canvas/components/AgentCanvas/agent-flow.manifest.d.ts +2 -2
  9. package/dist/canvas/components/BaseNode/BaseNode.cjs +11 -3
  10. package/dist/canvas/components/BaseNode/BaseNode.d.ts.map +1 -1
  11. package/dist/canvas/components/BaseNode/BaseNode.js +11 -3
  12. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.cjs +2 -9
  13. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.d.ts.map +1 -1
  14. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.js +2 -9
  15. package/dist/canvas/components/LoopNode/LoopNode.helpers.cjs +28 -8
  16. package/dist/canvas/components/LoopNode/LoopNode.helpers.d.ts +8 -2
  17. package/dist/canvas/components/LoopNode/LoopNode.helpers.d.ts.map +1 -1
  18. package/dist/canvas/components/LoopNode/LoopNode.helpers.js +23 -6
  19. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.cjs +6 -9
  20. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.d.ts.map +1 -1
  21. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.js +6 -9
  22. package/dist/canvas/components/Toolbox/ListView.cjs +6 -1
  23. package/dist/canvas/components/Toolbox/ListView.d.ts.map +1 -1
  24. package/dist/canvas/components/Toolbox/ListView.js +6 -1
  25. package/dist/canvas/components/index.cjs +19 -12
  26. package/dist/canvas/components/index.d.ts +1 -0
  27. package/dist/canvas/components/index.d.ts.map +1 -1
  28. package/dist/canvas/components/index.js +1 -0
  29. package/dist/canvas/components/shared/InitialsBadge.cjs +91 -0
  30. package/dist/canvas/components/shared/InitialsBadge.d.ts +10 -0
  31. package/dist/canvas/components/shared/InitialsBadge.d.ts.map +1 -0
  32. package/dist/canvas/components/shared/InitialsBadge.js +44 -0
  33. package/dist/canvas/components/shared/index.cjs +39 -0
  34. package/dist/canvas/components/shared/index.d.ts +3 -0
  35. package/dist/canvas/components/shared/index.d.ts.map +1 -0
  36. package/dist/canvas/components/shared/index.js +2 -0
  37. package/dist/canvas/core/CategoryTreeAdapter.cjs +10 -6
  38. package/dist/canvas/core/CategoryTreeAdapter.js +10 -6
  39. package/dist/canvas/hooks/index.cjs +19 -12
  40. package/dist/canvas/hooks/index.d.ts +1 -0
  41. package/dist/canvas/hooks/index.d.ts.map +1 -1
  42. package/dist/canvas/hooks/index.js +1 -0
  43. package/dist/canvas/hooks/useAddNodeOnConnectEnd.cjs +18 -5
  44. package/dist/canvas/hooks/useAddNodeOnConnectEnd.d.ts.map +1 -1
  45. package/dist/canvas/hooks/useAddNodeOnConnectEnd.js +18 -5
  46. package/dist/canvas/hooks/useCanvasNodeLayout.cjs +66 -0
  47. package/dist/canvas/hooks/useCanvasNodeLayout.d.ts +15 -0
  48. package/dist/canvas/hooks/useCanvasNodeLayout.d.ts.map +1 -0
  49. package/dist/canvas/hooks/useCanvasNodeLayout.js +29 -0
  50. package/dist/canvas/schema/node-definition/category-manifest.cjs +1 -1
  51. package/dist/canvas/schema/node-definition/category-manifest.d.ts +1 -1
  52. package/dist/canvas/schema/node-definition/category-manifest.js +1 -1
  53. package/dist/canvas/schema/node-definition/node-manifest.cjs +1 -1
  54. package/dist/canvas/schema/node-definition/node-manifest.d.ts +2 -2
  55. package/dist/canvas/schema/node-definition/node-manifest.js +1 -1
  56. package/dist/canvas/storybook-utils/manifests/index.d.ts +2 -2
  57. package/dist/canvas/storybook-utils/manifests/node-definitions.d.ts.map +1 -1
  58. package/dist/canvas/utils/NodeUtils.cjs +4 -4
  59. package/dist/canvas/utils/NodeUtils.d.ts +1 -1
  60. package/dist/canvas/utils/NodeUtils.d.ts.map +1 -1
  61. package/dist/canvas/utils/NodeUtils.js +4 -4
  62. package/dist/canvas/utils/container.cjs +3 -2
  63. package/dist/canvas/utils/container.d.ts +1 -0
  64. package/dist/canvas/utils/container.d.ts.map +1 -1
  65. package/dist/canvas/utils/container.js +3 -2
  66. package/dist/canvas/utils/icon-registry.cjs +8 -0
  67. package/dist/canvas/utils/icon-registry.d.ts +1 -1
  68. package/dist/canvas/utils/icon-registry.d.ts.map +1 -1
  69. package/dist/canvas/utils/icon-registry.js +8 -0
  70. package/dist/canvas/utils/manifest-resolver.cjs +2 -1
  71. package/dist/canvas/utils/manifest-resolver.d.ts.map +1 -1
  72. package/dist/canvas/utils/manifest-resolver.js +2 -1
  73. package/package.json +3 -3
@@ -31,6 +31,7 @@ const react_cjs_namespaceObject = require("../../xyflow/react.cjs");
31
31
  const external_react_namespaceObject = require("react");
32
32
  const external_constants_cjs_namespaceObject = require("../../constants.cjs");
33
33
  const index_cjs_namespaceObject = require("../../core/index.cjs");
34
+ const useCanvasNodeLayout_cjs_namespaceObject = require("../../hooks/useCanvasNodeLayout.cjs");
34
35
  const usePreviewNode_cjs_namespaceObject = require("../../hooks/usePreviewNode.cjs");
35
36
  const createPreviewNode_cjs_namespaceObject = require("../../utils/createPreviewNode.cjs");
36
37
  const external_FloatingCanvasPanel_index_cjs_namespaceObject = require("../FloatingCanvasPanel/index.cjs");
@@ -39,6 +40,7 @@ const external_AddNodePanel_cjs_namespaceObject = require("./AddNodePanel.cjs");
39
40
  const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData, onBeforeNodeAdded, onNodeAdded, ignoredNodeTypes })=>{
40
41
  const reactFlowInstance = (0, react_cjs_namespaceObject.useReactFlow)();
41
42
  const registry = (0, index_cjs_namespaceObject.useOptionalNodeTypeRegistry)();
43
+ const nodeLayout = (0, useCanvasNodeLayout_cjs_namespaceObject.useCanvasNodeLayout)();
42
44
  const { previewNode, previewNodeConnectionInfo } = (0, usePreviewNode_cjs_namespaceObject.usePreviewNode)();
43
45
  const lastPreviewNodeRef = (0, external_react_namespaceObject.useRef)(null);
44
46
  const restoreEdgesRef = (0, external_react_namespaceObject.useRef)(null);
@@ -142,7 +144,7 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
142
144
  edges: placementEdges,
143
145
  previewNode: currentPreviewNode,
144
146
  insertedNode: finalNode,
145
- registry,
147
+ layout: nodeLayout,
146
148
  ignoredNodeTypes
147
149
  });
148
150
  placedNode = placement.insertedNode;
@@ -170,6 +172,7 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
170
172
  previewNodeConnectionInfo,
171
173
  reactFlowInstance,
172
174
  registry,
175
+ nodeLayout,
173
176
  createNodeData,
174
177
  onBeforeNodeAdded,
175
178
  onNodeAdded,
@@ -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;AAM/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,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;AASD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAyNxD,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;AAO/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,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;AASD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA2NxD,CAAC"}
@@ -38,13 +38,6 @@ const TOP_LEVEL_INSERTION_GAP_PX = 5 * external_constants_cjs_namespaceObject.GR
38
38
  function getOriginalEdge(previewNode) {
39
39
  return previewNode?.data?.originalEdge ?? null;
40
40
  }
41
- function getManifestForNode(registry, node) {
42
- return node.type ? registry?.getManifest(node.type) : void 0;
43
- }
44
- function getManifestAwareNodeDimensions(registry, node) {
45
- const manifest = getManifestForNode(registry, node);
46
- return (0, container_cjs_namespaceObject.getNodeDimensions)(node, (0, collapse_cjs_namespaceObject.getExpandedSize)(manifest?.display.shape));
47
- }
48
41
  function getPrimaryPreviewHandlePosition(previewNode, previewConnections) {
49
42
  const primaryConnection = previewConnections.find((connection)=>!connection.addNewNodeAsSource) ?? previewConnections[0];
50
43
  const handlePosition = primaryConnection?.addNewNodeAsSource ? previewNode.data?.outputHandlePosition : previewNode.data?.inputHandlePosition;
@@ -95,10 +88,7 @@ function alignNodeToPreview(node, previewNode, previewConnections, nodeManifest)
95
88
  }
96
89
  function resolveScopedCollisions(nodes, insertedNode, options) {
97
90
  const siblingNodes = nodes.filter((node)=>node.parentId === insertedNode.parentId);
98
- const resolvedSiblings = (0, index_cjs_namespaceObject.resolveCollisions)(siblingNodes, {
99
- ignoredNodeTypes: options.ignoredNodeTypes,
100
- getNodeSize: options.getNodeSize
101
- });
91
+ const resolvedSiblings = (0, index_cjs_namespaceObject.resolveCollisions)(siblingNodes, options);
102
92
  const resolvedSiblingById = new Map(resolvedSiblings.map((node)=>[
103
93
  node.id,
104
94
  node
@@ -109,16 +99,16 @@ function resolveScopedCollisions(nodes, insertedNode, options) {
109
99
  insertedNode: resolvedSiblingById.get(insertedNode.id)
110
100
  };
111
101
  }
112
- function shiftForEdgeInsertion({ nodes, edges, previewNode, insertedNode, getNodeSize }) {
102
+ function shiftForEdgeInsertion({ nodes, edges, previewNode, insertedNode, getNodeDimensions }) {
113
103
  const originalEdge = getOriginalEdge(previewNode);
114
104
  if (!originalEdge) return null;
115
105
  const targetNode = nodes.find((node)=>node.id === originalEdge.target);
116
106
  if (!targetNode || targetNode.parentId !== insertedNode.parentId) return null;
117
- const insertedSize = getNodeSize(insertedNode);
107
+ const insertedSize = getNodeDimensions(insertedNode);
118
108
  let insertedX = insertedNode.position.x;
119
109
  const sourceNode = nodes.find((node)=>node.id === originalEdge.source);
120
110
  if (sourceNode && sourceNode.parentId === insertedNode.parentId) {
121
- const sourceSize = getNodeSize(sourceNode);
111
+ const sourceSize = getNodeDimensions(sourceNode);
122
112
  const requiredInsertedLeft = sourceNode.position.x + sourceSize.width + TOP_LEVEL_INSERTION_GAP_PX;
123
113
  if (insertedX < requiredInsertedLeft) insertedX = (0, NodeUtils_cjs_namespaceObject.snapUpToGrid)(requiredInsertedLeft);
124
114
  }
@@ -157,28 +147,27 @@ function shiftForEdgeInsertion({ nodes, edges, previewNode, insertedNode, getNod
157
147
  insertedNode: updatedInsertedNode
158
148
  };
159
149
  }
160
- function placeAddedNode({ nodes, edges, previewNode, insertedNode, registry, ignoredNodeTypes }) {
161
- const getDimensions = (node)=>getManifestAwareNodeDimensions(registry, node);
150
+ function placeAddedNode({ nodes, edges, previewNode, insertedNode, layout, ignoredNodeTypes }) {
151
+ const { getNodeDimensions, isContainerNode, getContainerFitGeometry } = layout;
162
152
  const placement = (0, container_cjs_namespaceObject.getContainerPlacement)(previewNode);
163
153
  if (placement) {
164
154
  const containerNode = nodes.find((node)=>node.id === placement.containerId);
165
155
  if (!containerNode) return resolveScopedCollisions(nodes, insertedNode, {
166
156
  ignoredNodeTypes,
167
- getNodeSize: getDimensions
157
+ getNodeDimensions
168
158
  });
169
- const containerManifest = getManifestForNode(registry, containerNode);
170
- if (!(0, container_cjs_namespaceObject.isContainerNodeManifest)(containerManifest)) return resolveScopedCollisions(nodes, insertedNode, {
159
+ if (!isContainerNode(containerNode)) return resolveScopedCollisions(nodes, insertedNode, {
171
160
  ignoredNodeTypes,
172
- getNodeSize: getDimensions
161
+ getNodeDimensions
173
162
  });
174
163
  const resolvedNodes = (0, container_cjs_namespaceObject.placeContainerNode)({
175
164
  nodes,
176
165
  insertedNode,
177
166
  placement,
178
167
  edges,
179
- getNodeDimensions: getDimensions,
168
+ getNodeDimensions,
180
169
  safeArea: (0, container_cjs_namespaceObject.getContainerSafeArea)(containerNode),
181
- getContainerFitGeometry: (node)=>(0, container_cjs_namespaceObject.isContainerNodeManifest)(getManifestForNode(registry, node)) ? (0, container_cjs_namespaceObject.getContainerFitGeometry)() : null,
170
+ getContainerFitGeometry,
182
171
  ignoredNodeTypes
183
172
  });
184
173
  return {
@@ -191,11 +180,11 @@ function placeAddedNode({ nodes, edges, previewNode, insertedNode, registry, ign
191
180
  edges,
192
181
  previewNode,
193
182
  insertedNode,
194
- getNodeSize: getDimensions
183
+ getNodeDimensions
195
184
  });
196
185
  const placementResult = resolveScopedCollisions(shifted?.nodes ?? nodes, shifted?.insertedNode ?? insertedNode, {
197
186
  ignoredNodeTypes,
198
- getNodeSize: getDimensions
187
+ getNodeDimensions
199
188
  });
200
189
  if (!placementResult.insertedNode.parentId) return placementResult;
201
190
  const fittedNodes = (0, container_cjs_namespaceObject.fitContainersAndPushSiblings)({
@@ -203,8 +192,8 @@ function placeAddedNode({ nodes, edges, previewNode, insertedNode, registry, ign
203
192
  containerIds: [
204
193
  placementResult.insertedNode.parentId
205
194
  ],
206
- getContainerFitGeometry: (node)=>(0, container_cjs_namespaceObject.isContainerNodeManifest)(getManifestForNode(registry, node)) ? (0, container_cjs_namespaceObject.getContainerFitGeometry)() : null,
207
- getNodeDimensions: getDimensions,
195
+ getContainerFitGeometry,
196
+ getNodeDimensions,
208
197
  ignoredNodeTypes,
209
198
  gap: container_cjs_namespaceObject.CONTAINER_SEQUENCE_GAP_PX
210
199
  });
@@ -1,5 +1,5 @@
1
1
  import type { Edge, Node } from '../../xyflow/react.ts';
2
- import type { NodeTypeRegistry } from '../../core';
2
+ import type { NodeLayout } from '../../hooks/useCanvasNodeLayout';
3
3
  import type { PreviewNodeConnectionInfo } from '../../hooks/usePreviewNode';
4
4
  import type { NodeManifest } from '../../schema';
5
5
  interface AddNodePlacementResult {
@@ -8,12 +8,12 @@ interface AddNodePlacementResult {
8
8
  }
9
9
  export declare function getOriginalEdge(previewNode: Node | null | undefined): Edge | null;
10
10
  export declare function alignNodeToPreview(node: Node, previewNode: Node, previewConnections: PreviewNodeConnectionInfo[], nodeManifest: NodeManifest | undefined): Node;
11
- export declare function placeAddedNode({ nodes, edges, previewNode, insertedNode, registry, ignoredNodeTypes, }: {
11
+ export declare function placeAddedNode({ nodes, edges, previewNode, insertedNode, layout, ignoredNodeTypes, }: {
12
12
  nodes: Node[];
13
13
  edges: Edge[];
14
14
  previewNode: Node;
15
15
  insertedNode: Node;
16
- registry: NodeTypeRegistry | null;
16
+ layout: NodeLayout;
17
17
  ignoredNodeTypes?: string[];
18
18
  }): AddNodePlacementResult;
19
19
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"AddNodeManager.helpers.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/AddNodePanel/AddNodeManager.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAG3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAwBjD,UAAU,sBAAsB;IAC9B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,EAAE,IAAI,CAAC;CACpB;AAMD,wBAAgB,eAAe,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAEjF;AAmCD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,IAAI,EACjB,kBAAkB,EAAE,yBAAyB,EAAE,EAC/C,YAAY,EAAE,YAAY,GAAG,SAAS,GACrC,IAAI,CA2DN;AAqID,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,KAAK,EACL,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,gBAAgB,GACjB,EAAE;IACD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,IAAI,CAAC;IAClB,YAAY,EAAE,IAAI,CAAC;IACnB,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,GAAG,sBAAsB,CAkFzB"}
1
+ {"version":3,"file":"AddNodeManager.helpers.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/AddNodePanel/AddNodeManager.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAG3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAsBjD,UAAU,sBAAsB;IAC9B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,EAAE,IAAI,CAAC;CACpB;AAMD,wBAAgB,eAAe,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAEjF;AAsBD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,IAAI,EACjB,kBAAkB,EAAE,yBAAyB,EAAE,EAC/C,YAAY,EAAE,YAAY,GAAG,SAAS,GACrC,IAAI,CA2DN;AAkID,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,KAAK,EACL,WAAW,EACX,YAAY,EACZ,MAAM,EACN,gBAAgB,GACjB,EAAE;IACD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,IAAI,CAAC;IAClB,YAAY,EAAE,IAAI,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,GAAG,sBAAsB,CA0EzB"}
@@ -2,27 +2,20 @@ import { Position } from "../../xyflow/react.js";
2
2
  import { GRID_SPACING } from "../../constants.js";
3
3
  import { resolveCollisions } from "../../utils/index.js";
4
4
  import { getExpandedSize } from "../../utils/collapse.js";
5
- import { CONTAINER_SEQUENCE_GAP_PX, collectLinearDownstreamSiblings, fitContainersAndPushSiblings, getContainerFitGeometry, getContainerPlacement, getContainerSafeArea, getNodeDimensions, isContainerNodeManifest, placeContainerNode } from "../../utils/container.js";
5
+ import { CONTAINER_SEQUENCE_GAP_PX, collectLinearDownstreamSiblings, fitContainersAndPushSiblings, getContainerPlacement, getContainerSafeArea, getNodeDimensions as container_js_getNodeDimensions, placeContainerNode } from "../../utils/container.js";
6
6
  import { snapUpToGrid } from "../../utils/NodeUtils.js";
7
7
  const TOP_LEVEL_INSERTION_GAP_PX = 5 * GRID_SPACING;
8
8
  function getOriginalEdge(previewNode) {
9
9
  return previewNode?.data?.originalEdge ?? null;
10
10
  }
11
- function getManifestForNode(registry, node) {
12
- return node.type ? registry?.getManifest(node.type) : void 0;
13
- }
14
- function getManifestAwareNodeDimensions(registry, node) {
15
- const manifest = getManifestForNode(registry, node);
16
- return getNodeDimensions(node, getExpandedSize(manifest?.display.shape));
17
- }
18
11
  function getPrimaryPreviewHandlePosition(previewNode, previewConnections) {
19
12
  const primaryConnection = previewConnections.find((connection)=>!connection.addNewNodeAsSource) ?? previewConnections[0];
20
13
  const handlePosition = primaryConnection?.addNewNodeAsSource ? previewNode.data?.outputHandlePosition : previewNode.data?.inputHandlePosition;
21
14
  return handlePosition;
22
15
  }
23
16
  function alignNodeToPreview(node, previewNode, previewConnections, nodeManifest) {
24
- const previewSize = getNodeDimensions(previewNode);
25
- const nodeSize = getNodeDimensions(node, getExpandedSize(nodeManifest?.display.shape));
17
+ const previewSize = container_js_getNodeDimensions(previewNode);
18
+ const nodeSize = container_js_getNodeDimensions(node, getExpandedSize(nodeManifest?.display.shape));
26
19
  if (previewSize.width === nodeSize.width && previewSize.height === nodeSize.height) return node;
27
20
  const previewHandlePosition = getPrimaryPreviewHandlePosition(previewNode, previewConnections);
28
21
  const previewCenterX = previewNode.position.x + previewSize.width / 2;
@@ -65,10 +58,7 @@ function alignNodeToPreview(node, previewNode, previewConnections, nodeManifest)
65
58
  }
66
59
  function resolveScopedCollisions(nodes, insertedNode, options) {
67
60
  const siblingNodes = nodes.filter((node)=>node.parentId === insertedNode.parentId);
68
- const resolvedSiblings = resolveCollisions(siblingNodes, {
69
- ignoredNodeTypes: options.ignoredNodeTypes,
70
- getNodeSize: options.getNodeSize
71
- });
61
+ const resolvedSiblings = resolveCollisions(siblingNodes, options);
72
62
  const resolvedSiblingById = new Map(resolvedSiblings.map((node)=>[
73
63
  node.id,
74
64
  node
@@ -79,16 +69,16 @@ function resolveScopedCollisions(nodes, insertedNode, options) {
79
69
  insertedNode: resolvedSiblingById.get(insertedNode.id)
80
70
  };
81
71
  }
82
- function shiftForEdgeInsertion({ nodes, edges, previewNode, insertedNode, getNodeSize }) {
72
+ function shiftForEdgeInsertion({ nodes, edges, previewNode, insertedNode, getNodeDimensions }) {
83
73
  const originalEdge = getOriginalEdge(previewNode);
84
74
  if (!originalEdge) return null;
85
75
  const targetNode = nodes.find((node)=>node.id === originalEdge.target);
86
76
  if (!targetNode || targetNode.parentId !== insertedNode.parentId) return null;
87
- const insertedSize = getNodeSize(insertedNode);
77
+ const insertedSize = getNodeDimensions(insertedNode);
88
78
  let insertedX = insertedNode.position.x;
89
79
  const sourceNode = nodes.find((node)=>node.id === originalEdge.source);
90
80
  if (sourceNode && sourceNode.parentId === insertedNode.parentId) {
91
- const sourceSize = getNodeSize(sourceNode);
81
+ const sourceSize = getNodeDimensions(sourceNode);
92
82
  const requiredInsertedLeft = sourceNode.position.x + sourceSize.width + TOP_LEVEL_INSERTION_GAP_PX;
93
83
  if (insertedX < requiredInsertedLeft) insertedX = snapUpToGrid(requiredInsertedLeft);
94
84
  }
@@ -127,28 +117,27 @@ function shiftForEdgeInsertion({ nodes, edges, previewNode, insertedNode, getNod
127
117
  insertedNode: updatedInsertedNode
128
118
  };
129
119
  }
130
- function placeAddedNode({ nodes, edges, previewNode, insertedNode, registry, ignoredNodeTypes }) {
131
- const getDimensions = (node)=>getManifestAwareNodeDimensions(registry, node);
120
+ function placeAddedNode({ nodes, edges, previewNode, insertedNode, layout, ignoredNodeTypes }) {
121
+ const { getNodeDimensions, isContainerNode, getContainerFitGeometry } = layout;
132
122
  const placement = getContainerPlacement(previewNode);
133
123
  if (placement) {
134
124
  const containerNode = nodes.find((node)=>node.id === placement.containerId);
135
125
  if (!containerNode) return resolveScopedCollisions(nodes, insertedNode, {
136
126
  ignoredNodeTypes,
137
- getNodeSize: getDimensions
127
+ getNodeDimensions
138
128
  });
139
- const containerManifest = getManifestForNode(registry, containerNode);
140
- if (!isContainerNodeManifest(containerManifest)) return resolveScopedCollisions(nodes, insertedNode, {
129
+ if (!isContainerNode(containerNode)) return resolveScopedCollisions(nodes, insertedNode, {
141
130
  ignoredNodeTypes,
142
- getNodeSize: getDimensions
131
+ getNodeDimensions
143
132
  });
144
133
  const resolvedNodes = placeContainerNode({
145
134
  nodes,
146
135
  insertedNode,
147
136
  placement,
148
137
  edges,
149
- getNodeDimensions: getDimensions,
138
+ getNodeDimensions,
150
139
  safeArea: getContainerSafeArea(containerNode),
151
- getContainerFitGeometry: (node)=>isContainerNodeManifest(getManifestForNode(registry, node)) ? getContainerFitGeometry() : null,
140
+ getContainerFitGeometry,
152
141
  ignoredNodeTypes
153
142
  });
154
143
  return {
@@ -161,11 +150,11 @@ function placeAddedNode({ nodes, edges, previewNode, insertedNode, registry, ign
161
150
  edges,
162
151
  previewNode,
163
152
  insertedNode,
164
- getNodeSize: getDimensions
153
+ getNodeDimensions
165
154
  });
166
155
  const placementResult = resolveScopedCollisions(shifted?.nodes ?? nodes, shifted?.insertedNode ?? insertedNode, {
167
156
  ignoredNodeTypes,
168
- getNodeSize: getDimensions
157
+ getNodeDimensions
169
158
  });
170
159
  if (!placementResult.insertedNode.parentId) return placementResult;
171
160
  const fittedNodes = fitContainersAndPushSiblings({
@@ -173,8 +162,8 @@ function placeAddedNode({ nodes, edges, previewNode, insertedNode, registry, ign
173
162
  containerIds: [
174
163
  placementResult.insertedNode.parentId
175
164
  ],
176
- getContainerFitGeometry: (node)=>isContainerNodeManifest(getManifestForNode(registry, node)) ? getContainerFitGeometry() : null,
177
- getNodeDimensions: getDimensions,
165
+ getContainerFitGeometry,
166
+ getNodeDimensions,
178
167
  ignoredNodeTypes,
179
168
  gap: CONTAINER_SEQUENCE_GAP_PX
180
169
  });
@@ -3,6 +3,7 @@ import { useReactFlow } from "../../xyflow/react.js";
3
3
  import { useCallback, useEffect, useRef } from "react";
4
4
  import { FLOATING_CANVAS_PANEL_OFFSET, PREVIEW_NODE_ID } from "../../constants.js";
5
5
  import { useOptionalNodeTypeRegistry } from "../../core/index.js";
6
+ import { useCanvasNodeLayout } from "../../hooks/useCanvasNodeLayout.js";
6
7
  import { usePreviewNode } from "../../hooks/usePreviewNode.js";
7
8
  import { isPreviewEdge } from "../../utils/createPreviewNode.js";
8
9
  import { FloatingCanvasPanel } from "../FloatingCanvasPanel/index.js";
@@ -11,6 +12,7 @@ import { AddNodePanel } from "./AddNodePanel.js";
11
12
  const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData, onBeforeNodeAdded, onNodeAdded, ignoredNodeTypes })=>{
12
13
  const reactFlowInstance = useReactFlow();
13
14
  const registry = useOptionalNodeTypeRegistry();
15
+ const nodeLayout = useCanvasNodeLayout();
14
16
  const { previewNode, previewNodeConnectionInfo } = usePreviewNode();
15
17
  const lastPreviewNodeRef = useRef(null);
16
18
  const restoreEdgesRef = useRef(null);
@@ -114,7 +116,7 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
114
116
  edges: placementEdges,
115
117
  previewNode: currentPreviewNode,
116
118
  insertedNode: finalNode,
117
- registry,
119
+ layout: nodeLayout,
118
120
  ignoredNodeTypes
119
121
  });
120
122
  placedNode = placement.insertedNode;
@@ -142,6 +144,7 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
142
144
  previewNodeConnectionInfo,
143
145
  reactFlowInstance,
144
146
  registry,
147
+ nodeLayout,
145
148
  createNodeData,
146
149
  onBeforeNodeAdded,
147
150
  onNodeAdded,
@@ -14,11 +14,11 @@ export declare const agentFlowManifest: {
14
14
  id: string;
15
15
  name: string;
16
16
  sortOrder: number;
17
- icon: string;
18
17
  tags: string[];
19
18
  parentId?: string | undefined;
20
19
  color?: string | undefined;
21
20
  colorDark?: string | undefined;
21
+ icon?: string | undefined;
22
22
  }[];
23
23
  nodes: {
24
24
  nodeType: string;
@@ -27,9 +27,9 @@ export declare const agentFlowManifest: {
27
27
  sortOrder: number;
28
28
  display: {
29
29
  label: string;
30
- icon: string;
31
30
  canvasLabel?: string | undefined;
32
31
  description?: string | undefined;
32
+ icon?: string | undefined;
33
33
  shape?: "square" | "circle" | "container" | "rectangle" | undefined;
34
34
  color?: string | undefined;
35
35
  background?: string | undefined;
@@ -43,6 +43,7 @@ const ConnectedHandlesContext_cjs_namespaceObject = require("../BaseCanvas/Conne
43
43
  const SelectionStateContext_cjs_namespaceObject = require("../BaseCanvas/SelectionStateContext.cjs");
44
44
  const SmartHandle_cjs_namespaceObject = require("../ButtonHandle/SmartHandle.cjs");
45
45
  const useButtonHandles_cjs_namespaceObject = require("../ButtonHandle/useButtonHandles.cjs");
46
+ const InitialsBadge_cjs_namespaceObject = require("../shared/InitialsBadge.cjs");
46
47
  const external_Toolbar_index_cjs_namespaceObject = require("../Toolbar/index.cjs");
47
48
  const external_BaseNodeBadgeSlot_cjs_namespaceObject = require("./BaseNodeBadgeSlot.cjs");
48
49
  const external_BaseNodeConfigContext_cjs_namespaceObject = require("./BaseNodeConfigContext.cjs");
@@ -124,11 +125,18 @@ const BaseNodeComponent = (props)=>{
124
125
  const isStacked = Boolean(manifest?.drillable || data?.isCollapsed);
125
126
  const Icon = (0, external_react_namespaceObject.useMemo)(()=>{
126
127
  if (void 0 !== iconComponent) return iconComponent;
127
- const IconComponent = (0, icon_registry_cjs_namespaceObject.getIcon)(display.icon);
128
- return IconComponent ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(IconComponent, {}) : null;
128
+ if (display.icon) {
129
+ const IconComponent = (0, icon_registry_cjs_namespaceObject.getIcon)(display.icon);
130
+ return IconComponent ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(IconComponent, {}) : null;
131
+ }
132
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(InitialsBadge_cjs_namespaceObject.InitialsBadge, {
133
+ name: display.label,
134
+ size: "var(--icon-size)"
135
+ });
129
136
  }, [
130
137
  iconComponent,
131
- display.icon
138
+ display.icon,
139
+ display.label
132
140
  ]);
133
141
  const handleConfigurations = (0, external_react_namespaceObject.useMemo)(()=>{
134
142
  if (handleConfigurationsProp && Array.isArray(handleConfigurationsProp)) return handleConfigurationsProp;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseNode.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseNode/BaseNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAuChF,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,kBAAkB,CAAC;AAynB1B,eAAO,MAAM,QAAQ,8CAnlBa,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,6CAmlBhB,CAAC"}
1
+ {"version":3,"file":"BaseNode.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseNode/BaseNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAwChF,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,kBAAkB,CAAC;AAynB1B,eAAO,MAAM,QAAQ,8CAnlBa,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,6CAmlBhB,CAAC"}
@@ -15,6 +15,7 @@ import { useConnectedHandles } from "../BaseCanvas/ConnectedHandlesContext.js";
15
15
  import { useSelectionState } from "../BaseCanvas/SelectionStateContext.js";
16
16
  import { SmartHandle, SmartHandleProvider } from "../ButtonHandle/SmartHandle.js";
17
17
  import { useButtonHandles } from "../ButtonHandle/useButtonHandles.js";
18
+ import { InitialsBadge } from "../shared/InitialsBadge.js";
18
19
  import { NodeToolbar } from "../Toolbar/index.js";
19
20
  import { BaseBadgeSlot } from "./BaseNodeBadgeSlot.js";
20
21
  import { useBaseNodeOverrideConfig } from "./BaseNodeConfigContext.js";
@@ -96,11 +97,18 @@ const BaseNodeComponent = (props)=>{
96
97
  const isStacked = Boolean(manifest?.drillable || data?.isCollapsed);
97
98
  const Icon = useMemo(()=>{
98
99
  if (void 0 !== iconComponent) return iconComponent;
99
- const IconComponent = getIcon(display.icon);
100
- return IconComponent ? /*#__PURE__*/ jsx(IconComponent, {}) : null;
100
+ if (display.icon) {
101
+ const IconComponent = getIcon(display.icon);
102
+ return IconComponent ? /*#__PURE__*/ jsx(IconComponent, {}) : null;
103
+ }
104
+ return /*#__PURE__*/ jsx(InitialsBadge, {
105
+ name: display.label,
106
+ size: "var(--icon-size)"
107
+ });
101
108
  }, [
102
109
  iconComponent,
103
- display.icon
110
+ display.icon,
111
+ display.label
104
112
  ]);
105
113
  const handleConfigurations = useMemo(()=>{
106
114
  if (handleConfigurationsProp && Array.isArray(handleConfigurationsProp)) return handleConfigurationsProp;
@@ -35,6 +35,7 @@ const index_cjs_namespaceObject = require("../../controls/index.cjs");
35
35
  const external_core_index_cjs_namespaceObject = require("../../core/index.cjs");
36
36
  const useAddNodeOnConnectEnd_cjs_namespaceObject = require("../../hooks/useAddNodeOnConnectEnd.cjs");
37
37
  const useCanvasEvents_cjs_namespaceObject = require("../../hooks/useCanvasEvents.cjs");
38
+ const useCanvasNodeLayout_cjs_namespaceObject = require("../../hooks/useCanvasNodeLayout.cjs");
38
39
  const animatedViewportManager_cjs_namespaceObject = require("../../stores/animatedViewportManager.cjs");
39
40
  const canvasStore_cjs_namespaceObject = require("../../stores/canvasStore.cjs");
40
41
  const viewportManager_cjs_namespaceObject = require("../../stores/viewportManager.cjs");
@@ -77,12 +78,6 @@ const HierarchicalCanvas = ({ mode = 'design', initialCanvases, initialPath, onC
77
78
  const lastCanvasIdRef = (0, external_react_namespaceObject.useRef)(null);
78
79
  const shouldAnimate = 'design' === mode && !(0, transitions_cjs_namespaceObject.prefersReducedMotion)();
79
80
  const nodeManifests = (0, external_core_index_cjs_namespaceObject.useNodeManifests)();
80
- const nodeManifestByType = (0, external_react_namespaceObject.useMemo)(()=>new Map(nodeManifests.map((manifest)=>[
81
- manifest.nodeType,
82
- manifest
83
- ])), [
84
- nodeManifests
85
- ]);
86
81
  const nodeTypes = (0, external_react_namespaceObject.useMemo)(()=>nodeManifests.reduce((acc, manifest)=>{
87
82
  acc[manifest.nodeType] = (0, external_utils_index_cjs_namespaceObject.isContainerNodeManifest)(manifest) ? external_LoopNode_index_cjs_namespaceObject.LoopCanvasNode : external_BaseNode_index_cjs_namespaceObject.BaseNode;
88
83
  return acc;
@@ -91,9 +86,7 @@ const HierarchicalCanvas = ({ mode = 'design', initialCanvases, initialPath, onC
91
86
  }), [
92
87
  nodeManifests
93
88
  ]);
94
- const getManifestForNode = (0, external_react_namespaceObject.useCallback)((node)=>node.type ? nodeManifestByType.get(node.type) : void 0, [
95
- nodeManifestByType
96
- ]);
89
+ const { getManifestForNode } = (0, useCanvasNodeLayout_cjs_namespaceObject.useCanvasNodeLayout)();
97
90
  const currentCanvas = (0, canvasStore_cjs_namespaceObject.useCanvasStore)(canvasStore_cjs_namespaceObject.selectCurrentCanvas);
98
91
  const previousCanvas = (0, canvasStore_cjs_namespaceObject.useCanvasStore)(canvasStore_cjs_namespaceObject.selectPreviousCanvas);
99
92
  const breadcrumbs = (0, canvasStore_cjs_namespaceObject.useCanvasStore)(canvasStore_cjs_namespaceObject.selectBreadcrumbs);
@@ -1 +1 @@
1
- {"version":3,"file":"HierarchicalCanvas.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/HierarchicalCanvas/HierarchicalCanvas.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA6B/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAe5D,UAAU,uBAAuB;IAC/B,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;IAKtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAK9C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAMvB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC;IAInE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACzC;AAyBD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA0ZhE,CAAC"}
1
+ {"version":3,"file":"HierarchicalCanvas.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/HierarchicalCanvas/HierarchicalCanvas.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA8B/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAe5D,UAAU,uBAAuB;IAC/B,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;IAKtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAK9C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAMvB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC;IAInE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACzC;AAyBD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAmZhE,CAAC"}
@@ -7,6 +7,7 @@ import { Breadcrumb } from "../../controls/index.js";
7
7
  import { useNodeManifests } from "../../core/index.js";
8
8
  import { useAddNodeOnConnectEnd } from "../../hooks/useAddNodeOnConnectEnd.js";
9
9
  import { useCanvasEvent } from "../../hooks/useCanvasEvents.js";
10
+ import { useCanvasNodeLayout } from "../../hooks/useCanvasNodeLayout.js";
10
11
  import { animatedViewportManager } from "../../stores/animatedViewportManager.js";
11
12
  import { selectBreadcrumbs, selectCanvasStack, selectCurrentCanvas, selectCurrentPath, selectDrillIntoNode, selectInitializeCanvas, selectInitializeWithData, selectNavigateToDepth, selectNavigateToSiblingCanvas, selectPreviousCanvas, selectTransitionState, selectUpdateEdges, selectUpdateNodes, selectUpdateSelection, selectUpdateViewport, useCanvasStore } from "../../stores/canvasStore.js";
12
13
  import { viewportManager } from "../../stores/viewportManager.js";
@@ -49,12 +50,6 @@ const HierarchicalCanvas = ({ mode = 'design', initialCanvases, initialPath, onC
49
50
  const lastCanvasIdRef = useRef(null);
50
51
  const shouldAnimate = 'design' === mode && !prefersReducedMotion();
51
52
  const nodeManifests = useNodeManifests();
52
- const nodeManifestByType = useMemo(()=>new Map(nodeManifests.map((manifest)=>[
53
- manifest.nodeType,
54
- manifest
55
- ])), [
56
- nodeManifests
57
- ]);
58
53
  const nodeTypes = useMemo(()=>nodeManifests.reduce((acc, manifest)=>{
59
54
  acc[manifest.nodeType] = isContainerNodeManifest(manifest) ? LoopCanvasNode : BaseNode;
60
55
  return acc;
@@ -63,9 +58,7 @@ const HierarchicalCanvas = ({ mode = 'design', initialCanvases, initialPath, onC
63
58
  }), [
64
59
  nodeManifests
65
60
  ]);
66
- const getManifestForNode = useCallback((node)=>node.type ? nodeManifestByType.get(node.type) : void 0, [
67
- nodeManifestByType
68
- ]);
61
+ const { getManifestForNode } = useCanvasNodeLayout();
69
62
  const currentCanvas = useCanvasStore(selectCurrentCanvas);
70
63
  const previousCanvas = useCanvasStore(selectPreviousCanvas);
71
64
  const breadcrumbs = useCanvasStore(selectBreadcrumbs);
@@ -24,10 +24,11 @@ var __webpack_require__ = {};
24
24
  var __webpack_exports__ = {};
25
25
  __webpack_require__.r(__webpack_exports__);
26
26
  __webpack_require__.d(__webpack_exports__, {
27
- resolveContainerAddNodePreview: ()=>resolveContainerAddNodePreview,
28
- resolveContainerPreviewConnectionHandles: ()=>resolveContainerPreviewConnectionHandles,
29
27
  resolveContainerHandleGroups: ()=>resolveContainerHandleGroups,
30
- getContainerRelativeBodyCenter: ()=>getContainerRelativeBodyCenter
28
+ getInnerHandleContainerId: ()=>getInnerHandleContainerId,
29
+ resolveContainerPreviewConnectionHandles: ()=>resolveContainerPreviewConnectionHandles,
30
+ getContainerRelativeBodyCenter: ()=>getContainerRelativeBodyCenter,
31
+ resolveContainerAddNodePreview: ()=>resolveContainerAddNodePreview
31
32
  });
32
33
  const react_cjs_namespaceObject = require("../../xyflow/react.cjs");
33
34
  const container_cjs_namespaceObject = require("../../utils/container.cjs");
@@ -102,7 +103,7 @@ function pickPreferredInnerHandle(groups, type) {
102
103
  }
103
104
  return null;
104
105
  }
105
- function resolveClickedHandleType({ source, reactFlowInstance, getManifestForNode }) {
106
+ function resolveClickedHandle({ source, reactFlowInstance, getManifestForNode }) {
106
107
  if (!source.handleId) return;
107
108
  const sourceNode = reactFlowInstance.getNode(source.nodeId);
108
109
  if (!sourceNode) return;
@@ -116,20 +117,27 @@ function resolveClickedHandleType({ source, reactFlowInstance, getManifestForNod
116
117
  });
117
118
  for (const group of sourceHandles){
118
119
  const handle = group.handles.find((candidate)=>candidate.id === source.handleId);
119
- if (handle) return handle.handleType;
120
+ if (handle) return {
121
+ boundary: group.boundary ?? 'outer',
122
+ handleType: handle.handleType
123
+ };
120
124
  }
121
125
  }
122
- function resolveContainerAddNodePreview({ source, sourceHandleType, reactFlowInstance, getManifestForNode }) {
123
- const clickedHandleType = resolveClickedHandleType({
126
+ function resolveContainerAddNodePreview({ source, sourceHandleType, reactFlowInstance, getManifestForNode, replacedEdge }) {
127
+ const clickedHandle = resolveClickedHandle({
124
128
  source,
125
129
  reactFlowInstance,
126
130
  getManifestForNode
127
131
  });
128
- if ('output' !== clickedHandleType) return null;
132
+ if (clickedHandle?.handleType !== 'output') return null;
133
+ const sourceNode = reactFlowInstance.getNode(source.nodeId);
134
+ const sourceIsContainer = void 0 !== sourceNode && (0, container_cjs_namespaceObject.isContainerNodeManifest)(getManifestForNode(sourceNode));
135
+ if (sourceIsContainer && 'inner' !== clickedHandle.boundary) return null;
129
136
  return (0, container_cjs_namespaceObject.resolveContainerPreview)({
130
137
  source,
131
138
  sourceHandleType,
132
139
  reactFlowInstance,
140
+ replacedEdge,
133
141
  isContainerNode: (node)=>(0, container_cjs_namespaceObject.isContainerNodeManifest)(getManifestForNode(node)),
134
142
  getContainerSafeArea: container_cjs_namespaceObject.getContainerSafeArea,
135
143
  getContainerContinuationTarget: ({ containerNode })=>{
@@ -144,12 +152,24 @@ function resolveContainerAddNodePreview({ source, sourceHandleType, reactFlowIns
144
152
  }
145
153
  });
146
154
  }
155
+ function getInnerHandleContainerId({ source, reactFlowInstance, getManifestForNode }) {
156
+ const sourceNode = reactFlowInstance.getNode(source.nodeId);
157
+ if (!sourceNode || !(0, container_cjs_namespaceObject.isContainerNodeManifest)(getManifestForNode(sourceNode))) return;
158
+ const clickedHandle = resolveClickedHandle({
159
+ source,
160
+ reactFlowInstance,
161
+ getManifestForNode
162
+ });
163
+ return clickedHandle?.boundary === 'inner' ? sourceNode.id : void 0;
164
+ }
147
165
  exports.getContainerRelativeBodyCenter = __webpack_exports__.getContainerRelativeBodyCenter;
166
+ exports.getInnerHandleContainerId = __webpack_exports__.getInnerHandleContainerId;
148
167
  exports.resolveContainerAddNodePreview = __webpack_exports__.resolveContainerAddNodePreview;
149
168
  exports.resolveContainerHandleGroups = __webpack_exports__.resolveContainerHandleGroups;
150
169
  exports.resolveContainerPreviewConnectionHandles = __webpack_exports__.resolveContainerPreviewConnectionHandles;
151
170
  for(var __rspack_i in __webpack_exports__)if (-1 === [
152
171
  "getContainerRelativeBodyCenter",
172
+ "getInnerHandleContainerId",
153
173
  "resolveContainerAddNodePreview",
154
174
  "resolveContainerHandleGroups",
155
175
  "resolveContainerPreviewConnectionHandles"
@@ -1,4 +1,4 @@
1
- import { type Node, Position, type ReactFlowInstance } from '../../xyflow/react.ts';
1
+ import { type Edge, type Node, Position, type ReactFlowInstance } from '../../xyflow/react.ts';
2
2
  import type { NodeManifest } from '../../schema/node-definition';
3
3
  import type { PreviewEndpoint, PreviewGraphOverrides } from '../../utils/createPreviewGraph';
4
4
  import type { ResolutionContext, ResolvedHandleGroup } from '../../utils/manifest-resolver';
@@ -19,10 +19,16 @@ export declare function getContainerRelativeBodyCenter(containerNode: Pick<Node,
19
19
  y: number;
20
20
  };
21
21
  export declare function resolveContainerPreviewConnectionHandles(manifest: Pick<NodeManifest, 'handleConfiguration'> | undefined, context: ResolutionContext): ContainerPreviewConnectionHandles | null;
22
- export declare function resolveContainerAddNodePreview({ source, sourceHandleType, reactFlowInstance, getManifestForNode, }: {
22
+ export declare function resolveContainerAddNodePreview({ source, sourceHandleType, reactFlowInstance, getManifestForNode, replacedEdge, }: {
23
23
  source: PreviewEndpoint;
24
24
  sourceHandleType: 'source' | 'target';
25
25
  reactFlowInstance: ReactFlowInstance;
26
26
  getManifestForNode: ContainerPreviewManifestResolver;
27
+ replacedEdge?: Edge;
27
28
  }): PreviewGraphOverrides | null;
29
+ export declare function getInnerHandleContainerId({ source, reactFlowInstance, getManifestForNode, }: {
30
+ source: PreviewEndpoint;
31
+ reactFlowInstance: ReactFlowInstance;
32
+ getManifestForNode: ContainerPreviewManifestResolver;
33
+ }): string | undefined;
28
34
  //# sourceMappingURL=LoopNode.helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoopNode.helpers.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/LoopNode/LoopNode.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,IAAI,EACT,QAAQ,EACR,KAAK,iBAAiB,EACvB,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAuB,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAOtF,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE7F,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAI5F,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,OAAO,CAAC;AACxD,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG;IACvD,QAAQ,EAAE,uBAAuB,CAAC;IAClC,kBAAkB,EAAE,QAAQ,CAAC;CAC9B,CAAC;AAEF,MAAM,WAAW,iCAAiC;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,QAAQ,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,gCAAgC,GAAG,CAC7C,IAAI,EAAE,IAAI,KACP,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,qBAAqB,CAAC,GAAG,SAAS,CAAC;AAOvE,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAAE,GAC5B,oBAAoB,EAAE,CAaxB;AAMD,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;;;EAQrE;AAwBD,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,GAAG,SAAS,EAC/D,OAAO,EAAE,iBAAiB,GACzB,iCAAiC,GAAG,IAAI,CAgB1C;AAuDD,wBAAgB,8BAA8B,CAAC,EAC7C,MAAM,EACN,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,EAAE;IACD,MAAM,EAAE,eAAe,CAAC;IACxB,gBAAgB,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACtC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,kBAAkB,EAAE,gCAAgC,CAAC;CACtD,GAAG,qBAAqB,GAAG,IAAI,CAuC/B"}
1
+ {"version":3,"file":"LoopNode.helpers.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/LoopNode/LoopNode.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,IAAI,EACT,KAAK,IAAI,EACT,QAAQ,EACR,KAAK,iBAAiB,EACvB,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAuB,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAOtF,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE7F,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAI5F,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,OAAO,CAAC;AACxD,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG;IACvD,QAAQ,EAAE,uBAAuB,CAAC;IAClC,kBAAkB,EAAE,QAAQ,CAAC;CAC9B,CAAC;AAEF,MAAM,WAAW,iCAAiC;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,QAAQ,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,gCAAgC,GAAG,CAC7C,IAAI,EAAE,IAAI,KACP,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,qBAAqB,CAAC,GAAG,SAAS,CAAC;AAOvE,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAAE,GAC5B,oBAAoB,EAAE,CAaxB;AAMD,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;;;EAQrE;AAwBD,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,GAAG,SAAS,EAC/D,OAAO,EAAE,iBAAiB,GACzB,iCAAiC,GAAG,IAAI,CAgB1C;AA4DD,wBAAgB,8BAA8B,CAAC,EAC7C,MAAM,EACN,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,GACb,EAAE;IACD,MAAM,EAAE,eAAe,CAAC;IACxB,gBAAgB,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACtC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,kBAAkB,EAAE,gCAAgC,CAAC;IACrD,YAAY,CAAC,EAAE,IAAI,CAAC;CACrB,GAAG,qBAAqB,GAAG,IAAI,CA+C/B;AAMD,wBAAgB,yBAAyB,CAAC,EACxC,MAAM,EACN,iBAAiB,EACjB,kBAAkB,GACnB,EAAE;IACD,MAAM,EAAE,eAAe,CAAC;IACxB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,kBAAkB,EAAE,gCAAgC,CAAC;CACtD,GAAG,MAAM,GAAG,SAAS,CAarB"}