@uipath/apollo-react 4.14.1 → 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.
Files changed (224) hide show
  1. package/dist/canvas/components/AddNodePanel/AddNodeManager.cjs +106 -10
  2. package/dist/canvas/components/AddNodePanel/AddNodeManager.d.ts.map +1 -1
  3. package/dist/canvas/components/AddNodePanel/AddNodeManager.js +106 -10
  4. package/dist/canvas/components/AddNodePanel/createAddNodePreview.cjs +38 -4
  5. package/dist/canvas/components/AddNodePanel/createAddNodePreview.d.ts +5 -1
  6. package/dist/canvas/components/AddNodePanel/createAddNodePreview.d.ts.map +1 -1
  7. package/dist/canvas/components/AddNodePanel/createAddNodePreview.js +38 -4
  8. package/dist/canvas/components/AgentCanvas/agent-flow.manifest.d.ts +1 -0
  9. package/dist/canvas/components/AgentCanvas/agent-flow.manifest.d.ts.map +1 -1
  10. package/dist/canvas/components/BaseNode/BaseNode.cjs +11 -5
  11. package/dist/canvas/components/BaseNode/BaseNode.d.ts +2 -1
  12. package/dist/canvas/components/BaseNode/BaseNode.d.ts.map +1 -1
  13. package/dist/canvas/components/BaseNode/BaseNode.js +9 -6
  14. package/dist/canvas/components/BaseNode/BaseNode.types.d.ts +3 -0
  15. package/dist/canvas/components/BaseNode/BaseNode.types.d.ts.map +1 -1
  16. package/dist/canvas/components/ButtonHandle/ButtonHandle.cjs +222 -13
  17. package/dist/canvas/components/ButtonHandle/ButtonHandle.d.ts +10 -5
  18. package/dist/canvas/components/ButtonHandle/ButtonHandle.d.ts.map +1 -1
  19. package/dist/canvas/components/ButtonHandle/ButtonHandle.js +223 -14
  20. package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.cjs +10 -2
  21. package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.d.ts +2 -0
  22. package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.d.ts.map +1 -1
  23. package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.js +5 -3
  24. package/dist/canvas/components/ButtonHandle/HandleButton.cjs +17 -2
  25. package/dist/canvas/components/ButtonHandle/HandleButton.d.ts +10 -1
  26. package/dist/canvas/components/ButtonHandle/HandleButton.d.ts.map +1 -1
  27. package/dist/canvas/components/ButtonHandle/HandleButton.js +17 -2
  28. package/dist/canvas/components/ButtonHandle/useButtonHandles.cjs +4 -2
  29. package/dist/canvas/components/ButtonHandle/useButtonHandles.d.ts +2 -1
  30. package/dist/canvas/components/ButtonHandle/useButtonHandles.d.ts.map +1 -1
  31. package/dist/canvas/components/ButtonHandle/useButtonHandles.js +4 -2
  32. package/dist/canvas/components/Edges/SequenceEdge.cjs +18 -12
  33. package/dist/canvas/components/Edges/SequenceEdge.d.ts.map +1 -1
  34. package/dist/canvas/components/Edges/SequenceEdge.js +18 -12
  35. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.cjs +34 -25
  36. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.d.ts +8 -2
  37. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.d.ts.map +1 -1
  38. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.js +36 -27
  39. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvasWithControls.cjs +9 -2
  40. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvasWithControls.d.ts.map +1 -1
  41. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvasWithControls.js +10 -3
  42. package/dist/canvas/components/HierarchicalCanvas/index.d.ts +1 -1
  43. package/dist/canvas/components/HierarchicalCanvas/index.d.ts.map +1 -1
  44. package/dist/canvas/components/LoopNode/LoopCanvasNode.cjs +86 -0
  45. package/dist/canvas/components/LoopNode/LoopCanvasNode.d.ts +6 -0
  46. package/dist/canvas/components/LoopNode/LoopCanvasNode.d.ts.map +1 -0
  47. package/dist/canvas/components/LoopNode/LoopCanvasNode.js +52 -0
  48. package/dist/canvas/components/LoopNode/LoopNode.cjs +434 -0
  49. package/dist/canvas/components/LoopNode/LoopNode.constants.cjs +93 -0
  50. package/dist/canvas/components/LoopNode/LoopNode.constants.d.ts +16 -0
  51. package/dist/canvas/components/LoopNode/LoopNode.constants.d.ts.map +1 -0
  52. package/dist/canvas/components/LoopNode/LoopNode.constants.js +17 -0
  53. package/dist/canvas/components/LoopNode/LoopNode.d.ts +5 -0
  54. package/dist/canvas/components/LoopNode/LoopNode.d.ts.map +1 -0
  55. package/dist/canvas/components/LoopNode/LoopNode.helpers.cjs +185 -0
  56. package/dist/canvas/components/LoopNode/LoopNode.helpers.d.ts +58 -0
  57. package/dist/canvas/components/LoopNode/LoopNode.helpers.d.ts.map +1 -0
  58. package/dist/canvas/components/LoopNode/LoopNode.helpers.js +124 -0
  59. package/dist/canvas/components/LoopNode/LoopNode.js +400 -0
  60. package/dist/canvas/components/LoopNode/LoopNode.sequence.cjs +433 -0
  61. package/dist/canvas/components/LoopNode/LoopNode.sequence.d.ts +57 -0
  62. package/dist/canvas/components/LoopNode/LoopNode.sequence.d.ts.map +1 -0
  63. package/dist/canvas/components/LoopNode/LoopNode.sequence.js +387 -0
  64. package/dist/canvas/components/LoopNode/LoopNode.types.cjs +18 -0
  65. package/dist/canvas/components/LoopNode/LoopNode.types.d.ts +22 -0
  66. package/dist/canvas/components/LoopNode/LoopNode.types.d.ts.map +1 -0
  67. package/dist/canvas/components/LoopNode/LoopNode.types.js +0 -0
  68. package/dist/canvas/components/LoopNode/LoopNodePreview.cjs +60 -0
  69. package/dist/canvas/components/LoopNode/LoopNodePreview.d.ts +9 -0
  70. package/dist/canvas/components/LoopNode/LoopNodePreview.d.ts.map +1 -0
  71. package/dist/canvas/components/LoopNode/LoopNodePreview.js +26 -0
  72. package/dist/canvas/components/LoopNode/index.cjs +79 -0
  73. package/dist/canvas/components/LoopNode/index.d.ts +5 -0
  74. package/dist/canvas/components/LoopNode/index.d.ts.map +1 -0
  75. package/dist/canvas/components/LoopNode/index.js +4 -0
  76. package/dist/canvas/components/NodeViewportOverlay.cjs +63 -0
  77. package/dist/canvas/components/NodeViewportOverlay.d.ts +22 -0
  78. package/dist/canvas/components/NodeViewportOverlay.d.ts.map +1 -0
  79. package/dist/canvas/components/NodeViewportOverlay.js +29 -0
  80. package/dist/canvas/components/Toolbar/EdgeToolbar/EdgeToolbar.cjs +1 -1
  81. package/dist/canvas/components/Toolbar/EdgeToolbar/EdgeToolbar.js +1 -1
  82. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.cjs +41 -24
  83. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.d.ts.map +1 -1
  84. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.js +43 -26
  85. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.cjs +10 -3
  86. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.d.ts +1 -1
  87. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.d.ts.map +1 -1
  88. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.js +10 -3
  89. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.types.d.ts +1 -0
  90. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.types.d.ts.map +1 -1
  91. package/dist/canvas/components/index.cjs +27 -20
  92. package/dist/canvas/components/index.d.ts +1 -0
  93. package/dist/canvas/components/index.d.ts.map +1 -1
  94. package/dist/canvas/components/index.js +1 -0
  95. package/dist/canvas/constants.cjs +4 -0
  96. package/dist/canvas/constants.d.ts +1 -0
  97. package/dist/canvas/constants.d.ts.map +1 -1
  98. package/dist/canvas/constants.js +2 -1
  99. package/dist/canvas/core/NodeTypeRegistry.cjs +50 -26
  100. package/dist/canvas/core/NodeTypeRegistry.d.ts +10 -5
  101. package/dist/canvas/core/NodeTypeRegistry.d.ts.map +1 -1
  102. package/dist/canvas/core/NodeTypeRegistry.js +50 -26
  103. package/dist/canvas/core/useNodeTypeRegistry.cjs +13 -3
  104. package/dist/canvas/core/useNodeTypeRegistry.d.ts +2 -1
  105. package/dist/canvas/core/useNodeTypeRegistry.d.ts.map +1 -1
  106. package/dist/canvas/core/useNodeTypeRegistry.js +11 -4
  107. package/dist/canvas/hooks/useAddNodeOnConnectEnd.cjs +22 -23
  108. package/dist/canvas/hooks/useAddNodeOnConnectEnd.d.ts.map +1 -1
  109. package/dist/canvas/hooks/useAddNodeOnConnectEnd.js +23 -24
  110. package/dist/canvas/hooks/usePreviewNode.cjs +7 -3
  111. package/dist/canvas/hooks/usePreviewNode.d.ts.map +1 -1
  112. package/dist/canvas/hooks/usePreviewNode.js +7 -3
  113. package/dist/canvas/locales/de.cjs +1 -1
  114. package/dist/canvas/locales/de.d.ts.map +1 -1
  115. package/dist/canvas/locales/de.js +1 -1
  116. package/dist/canvas/locales/es-MX.cjs +1 -1
  117. package/dist/canvas/locales/es-MX.d.ts.map +1 -1
  118. package/dist/canvas/locales/es-MX.js +1 -1
  119. package/dist/canvas/locales/es.cjs +1 -1
  120. package/dist/canvas/locales/es.d.ts.map +1 -1
  121. package/dist/canvas/locales/es.js +1 -1
  122. package/dist/canvas/locales/fr.cjs +1 -1
  123. package/dist/canvas/locales/fr.d.ts.map +1 -1
  124. package/dist/canvas/locales/fr.js +1 -1
  125. package/dist/canvas/locales/ja.cjs +1 -1
  126. package/dist/canvas/locales/ja.d.ts.map +1 -1
  127. package/dist/canvas/locales/ja.js +1 -1
  128. package/dist/canvas/locales/ko.cjs +1 -1
  129. package/dist/canvas/locales/ko.d.ts.map +1 -1
  130. package/dist/canvas/locales/ko.js +1 -1
  131. package/dist/canvas/locales/pt-BR.cjs +1 -1
  132. package/dist/canvas/locales/pt-BR.d.ts.map +1 -1
  133. package/dist/canvas/locales/pt-BR.js +1 -1
  134. package/dist/canvas/locales/pt.cjs +1 -1
  135. package/dist/canvas/locales/pt.d.ts.map +1 -1
  136. package/dist/canvas/locales/pt.js +1 -1
  137. package/dist/canvas/locales/tr.cjs +1 -1
  138. package/dist/canvas/locales/tr.d.ts.map +1 -1
  139. package/dist/canvas/locales/tr.js +1 -1
  140. package/dist/canvas/locales/zh-CN.cjs +1 -1
  141. package/dist/canvas/locales/zh-CN.d.ts.map +1 -1
  142. package/dist/canvas/locales/zh-CN.js +1 -1
  143. package/dist/canvas/locales/zh-TW.cjs +1 -1
  144. package/dist/canvas/locales/zh-TW.d.ts.map +1 -1
  145. package/dist/canvas/locales/zh-TW.js +1 -1
  146. package/dist/canvas/schema/node-definition/handle.cjs +10 -2
  147. package/dist/canvas/schema/node-definition/handle.d.ts +9 -0
  148. package/dist/canvas/schema/node-definition/handle.d.ts.map +1 -1
  149. package/dist/canvas/schema/node-definition/handle.js +6 -1
  150. package/dist/canvas/schema/node-definition/index.cjs +4 -1
  151. package/dist/canvas/schema/node-definition/index.d.ts +3 -3
  152. package/dist/canvas/schema/node-definition/index.d.ts.map +1 -1
  153. package/dist/canvas/schema/node-definition/index.js +2 -2
  154. package/dist/canvas/schema/node-definition/node-manifest.d.ts +4 -0
  155. package/dist/canvas/schema/node-definition/node-manifest.d.ts.map +1 -1
  156. package/dist/canvas/storybook-utils/hooks/useCanvasStory.d.ts +6 -0
  157. package/dist/canvas/storybook-utils/hooks/useCanvasStory.d.ts.map +1 -1
  158. package/dist/canvas/storybook-utils/manifests/index.d.ts +1 -0
  159. package/dist/canvas/storybook-utils/manifests/index.d.ts.map +1 -1
  160. package/dist/canvas/storybook-utils/manifests/node-definitions.d.ts.map +1 -1
  161. package/dist/canvas/storybook-utils/mocks/nodes.d.ts +1 -1
  162. package/dist/canvas/storybook-utils/mocks/nodes.d.ts.map +1 -1
  163. package/dist/canvas/styles/reactflow-reset.css +2 -2
  164. package/dist/canvas/styles/tailwind.canvas.css +1 -1
  165. package/dist/canvas/utils/NodeUtils.cjs +25 -9
  166. package/dist/canvas/utils/NodeUtils.d.ts +7 -0
  167. package/dist/canvas/utils/NodeUtils.d.ts.map +1 -1
  168. package/dist/canvas/utils/NodeUtils.js +13 -6
  169. package/dist/canvas/utils/collapse.cjs +13 -6
  170. package/dist/canvas/utils/collapse.d.ts +2 -2
  171. package/dist/canvas/utils/collapse.d.ts.map +1 -1
  172. package/dist/canvas/utils/collapse.js +9 -2
  173. package/dist/canvas/utils/container-sizing.cjs +169 -0
  174. package/dist/canvas/utils/container-sizing.d.ts +23 -0
  175. package/dist/canvas/utils/container-sizing.d.ts.map +1 -0
  176. package/dist/canvas/utils/container-sizing.js +132 -0
  177. package/dist/canvas/utils/createPreviewGraph.cjs +126 -0
  178. package/dist/canvas/utils/createPreviewGraph.d.ts +37 -0
  179. package/dist/canvas/utils/createPreviewGraph.d.ts.map +1 -0
  180. package/dist/canvas/utils/createPreviewGraph.js +83 -0
  181. package/dist/canvas/utils/createPreviewNode.cjs +59 -12
  182. package/dist/canvas/utils/createPreviewNode.d.ts +10 -2
  183. package/dist/canvas/utils/createPreviewNode.d.ts.map +1 -1
  184. package/dist/canvas/utils/createPreviewNode.js +50 -12
  185. package/dist/canvas/utils/index.cjs +40 -26
  186. package/dist/canvas/utils/index.d.ts +3 -1
  187. package/dist/canvas/utils/index.d.ts.map +1 -1
  188. package/dist/canvas/utils/index.js +3 -1
  189. package/dist/canvas/utils/manifest-resolver.cjs +8 -0
  190. package/dist/canvas/utils/manifest-resolver.d.ts +1 -0
  191. package/dist/canvas/utils/manifest-resolver.d.ts.map +1 -1
  192. package/dist/canvas/utils/manifest-resolver.js +6 -1
  193. package/dist/material/components/ap-tool-call/locales/de.cjs +1 -1
  194. package/dist/material/components/ap-tool-call/locales/de.d.ts.map +1 -1
  195. package/dist/material/components/ap-tool-call/locales/de.js +1 -1
  196. package/dist/material/components/ap-tool-call/locales/es-MX.cjs +1 -1
  197. package/dist/material/components/ap-tool-call/locales/es-MX.js +1 -1
  198. package/dist/material/components/ap-tool-call/locales/es.cjs +1 -1
  199. package/dist/material/components/ap-tool-call/locales/es.js +1 -1
  200. package/dist/material/components/ap-tool-call/locales/fr.cjs +1 -1
  201. package/dist/material/components/ap-tool-call/locales/fr.d.ts.map +1 -1
  202. package/dist/material/components/ap-tool-call/locales/fr.js +1 -1
  203. package/dist/material/components/ap-tool-call/locales/ja.cjs +1 -1
  204. package/dist/material/components/ap-tool-call/locales/ja.d.ts.map +1 -1
  205. package/dist/material/components/ap-tool-call/locales/ja.js +1 -1
  206. package/dist/material/components/ap-tool-call/locales/ko.cjs +1 -1
  207. package/dist/material/components/ap-tool-call/locales/ko.d.ts.map +1 -1
  208. package/dist/material/components/ap-tool-call/locales/ko.js +1 -1
  209. package/dist/material/components/ap-tool-call/locales/pt-BR.cjs +1 -1
  210. package/dist/material/components/ap-tool-call/locales/pt-BR.d.ts.map +1 -1
  211. package/dist/material/components/ap-tool-call/locales/pt-BR.js +1 -1
  212. package/dist/material/components/ap-tool-call/locales/pt.cjs +1 -1
  213. package/dist/material/components/ap-tool-call/locales/pt.d.ts.map +1 -1
  214. package/dist/material/components/ap-tool-call/locales/pt.js +1 -1
  215. package/dist/material/components/ap-tool-call/locales/tr.cjs +1 -1
  216. package/dist/material/components/ap-tool-call/locales/tr.d.ts.map +1 -1
  217. package/dist/material/components/ap-tool-call/locales/tr.js +1 -1
  218. package/dist/material/components/ap-tool-call/locales/zh-CN.cjs +1 -1
  219. package/dist/material/components/ap-tool-call/locales/zh-CN.d.ts.map +1 -1
  220. package/dist/material/components/ap-tool-call/locales/zh-CN.js +1 -1
  221. package/dist/material/components/ap-tool-call/locales/zh-TW.cjs +1 -1
  222. package/dist/material/components/ap-tool-call/locales/zh-TW.d.ts.map +1 -1
  223. package/dist/material/components/ap-tool-call/locales/zh-TW.js +1 -1
  224. package/package.json +3 -3
@@ -29,8 +29,8 @@ __webpack_require__.d(__webpack_exports__, {
29
29
  const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
30
  const react_cjs_namespaceObject = require("../../xyflow/react.cjs");
31
31
  const external_react_namespaceObject = require("react");
32
- const external_constants_cjs_namespaceObject = require("../../constants.cjs");
33
32
  const index_cjs_namespaceObject = require("../../hooks/index.cjs");
33
+ const createPreviewNode_cjs_namespaceObject = require("../../utils/createPreviewNode.cjs");
34
34
  const BaseCanvasModeProvider_cjs_namespaceObject = require("../BaseCanvas/BaseCanvasModeProvider.cjs");
35
35
  const external_Toolbar_index_cjs_namespaceObject = require("../Toolbar/index.cjs");
36
36
  const external_EdgeUtils_cjs_namespaceObject = require("./EdgeUtils.cjs");
@@ -80,7 +80,11 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ (0, external_react_namespaceObje
80
80
  const pathElementRef = (0, external_react_namespaceObject.useRef)(null);
81
81
  const { mode } = (0, BaseCanvasModeProvider_cjs_namespaceObject.useBaseCanvasMode)();
82
82
  const isReadOnly = 'readonly' === mode;
83
- const isPreviewEdge = id === external_constants_cjs_namespaceObject.PREVIEW_EDGE_ID;
83
+ const previewEdge = (0, createPreviewNode_cjs_namespaceObject.isPreviewEdge)({
84
+ id,
85
+ source,
86
+ target
87
+ });
84
88
  const executionStatus = (0, index_cjs_namespaceObject.useEdgeExecutionState)(id, target);
85
89
  const { validationStatus } = (0, index_cjs_namespaceObject.useElementValidationStatus)(id) ?? {
86
90
  validationStatus: void 0
@@ -88,6 +92,8 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ (0, external_react_namespaceObje
88
92
  const status = executionStatus ? executionStatus?.status ?? executionStatus : validationStatus;
89
93
  const isDiffAdded = data?.isDiffAdded === true;
90
94
  const isDiffRemoved = data?.isDiffRemoved === true;
95
+ const hideArrowHead = data?.hideArrowHead === true;
96
+ const hideToolbar = data?.hideToolbar === true;
91
97
  const angle = ANGLE_MAP[targetPosition];
92
98
  const { x: offsetX, y: offsetY } = ARROW_OFFSETS[targetPosition];
93
99
  const { edgePath, labelX, labelY } = (0, index_cjs_namespaceObject.useEdgePath)({
@@ -98,8 +104,8 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ (0, external_react_namespaceObje
98
104
  sourceX,
99
105
  sourceY,
100
106
  sourcePosition,
101
- targetX,
102
- targetY,
107
+ targetX: hideArrowHead ? targetX + offsetX : targetX,
108
+ targetY: hideArrowHead ? targetY + offsetY : targetY,
103
109
  targetPosition
104
110
  });
105
111
  const { showToolbar, toolbarPositioning, config: toolbarConfig, handleMouseMoveOnPath } = (0, external_Toolbar_index_cjs_namespaceObject.useEdgeToolbarState)({
@@ -116,7 +122,7 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ (0, external_react_namespaceObje
116
122
  const getEdgeColor = ()=>{
117
123
  if (isDiffAdded) return 'var(--canvas-success-icon)';
118
124
  if (isDiffRemoved) return 'var(--canvas-error-icon)';
119
- if (isPreviewEdge) return 'var(--canvas-primary)';
125
+ if (previewEdge) return 'var(--canvas-primary)';
120
126
  if (selected) return 'var(--canvas-primary)';
121
127
  if (isHovered) return 'var(--canvas-primary-hover)';
122
128
  if (status) return external_EdgeUtils_cjs_namespaceObject.edgeTargetStatusToEdgeColor[status] ?? 'var(--canvas-border)';
@@ -160,18 +166,18 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ (0, external_react_namespaceObje
160
166
  strokeWidth: style?.strokeWidth || 2,
161
167
  style: {
162
168
  stroke: edgeColor,
163
- strokeDasharray: isDiffRemoved ? style?.strokeDasharray || '5,5' : isPreviewEdge ? '5,5' : '0',
169
+ strokeDasharray: isDiffRemoved ? style?.strokeDasharray || '5,5' : previewEdge ? '5,5' : '0',
164
170
  opacity: style?.opacity !== void 0 ? style.opacity : 1,
165
171
  transition: 'stroke 0.2s ease, opacity 0.2s ease'
166
172
  },
167
173
  ref: pathElementRef
168
174
  }),
169
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("polygon", {
175
+ !hideArrowHead && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("polygon", {
170
176
  points: `
171
- ${targetX},${targetY}
172
- ${targetX - ARROW_SIZE * Math.cos(angle - Math.PI / 6)},${targetY - ARROW_SIZE * Math.sin(angle - Math.PI / 6)}
173
- ${targetX - ARROW_SIZE * Math.cos(angle + Math.PI / 6)},${targetY - ARROW_SIZE * Math.sin(angle + Math.PI / 6)}
174
- `,
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
+ `,
175
181
  fill: edgeColor,
176
182
  style: {
177
183
  pointerEvents: 'none',
@@ -211,7 +217,7 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ (0, external_react_namespaceObje
211
217
  })
212
218
  ]
213
219
  }),
214
- 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, {
215
221
  edgeId: id,
216
222
  visible: showToolbar,
217
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,iDAuMJ,CAAC"}
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"}
@@ -1,8 +1,8 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
2
  import { Position } from "../../xyflow/react.js";
3
3
  import { memo, useRef, useState } from "react";
4
- import { PREVIEW_EDGE_ID } from "../../constants.js";
5
4
  import { useEdgeExecutionState, useEdgePath, useElementValidationStatus } from "../../hooks/index.js";
5
+ import { isPreviewEdge } from "../../utils/createPreviewNode.js";
6
6
  import { useBaseCanvasMode } from "../BaseCanvas/BaseCanvasModeProvider.js";
7
7
  import { EdgeToolbar, useEdgeToolbarState } from "../Toolbar/index.js";
8
8
  import { edgeTargetStatusToEdgeColor, getStatusAnimation } from "./EdgeUtils.js";
@@ -52,7 +52,11 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ memo(function({ id, selected, so
52
52
  const pathElementRef = useRef(null);
53
53
  const { mode } = useBaseCanvasMode();
54
54
  const isReadOnly = 'readonly' === mode;
55
- const isPreviewEdge = id === PREVIEW_EDGE_ID;
55
+ const previewEdge = isPreviewEdge({
56
+ id,
57
+ source,
58
+ target
59
+ });
56
60
  const executionStatus = useEdgeExecutionState(id, target);
57
61
  const { validationStatus } = useElementValidationStatus(id) ?? {
58
62
  validationStatus: void 0
@@ -60,6 +64,8 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ memo(function({ id, selected, so
60
64
  const status = executionStatus ? executionStatus?.status ?? executionStatus : validationStatus;
61
65
  const isDiffAdded = data?.isDiffAdded === true;
62
66
  const isDiffRemoved = data?.isDiffRemoved === true;
67
+ const hideArrowHead = data?.hideArrowHead === true;
68
+ const hideToolbar = data?.hideToolbar === true;
63
69
  const angle = ANGLE_MAP[targetPosition];
64
70
  const { x: offsetX, y: offsetY } = ARROW_OFFSETS[targetPosition];
65
71
  const { edgePath, labelX, labelY } = useEdgePath({
@@ -70,8 +76,8 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ memo(function({ id, selected, so
70
76
  sourceX,
71
77
  sourceY,
72
78
  sourcePosition,
73
- targetX,
74
- targetY,
79
+ targetX: hideArrowHead ? targetX + offsetX : targetX,
80
+ targetY: hideArrowHead ? targetY + offsetY : targetY,
75
81
  targetPosition
76
82
  });
77
83
  const { showToolbar, toolbarPositioning, config: toolbarConfig, handleMouseMoveOnPath } = useEdgeToolbarState({
@@ -88,7 +94,7 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ memo(function({ id, selected, so
88
94
  const getEdgeColor = ()=>{
89
95
  if (isDiffAdded) return 'var(--canvas-success-icon)';
90
96
  if (isDiffRemoved) return 'var(--canvas-error-icon)';
91
- if (isPreviewEdge) return 'var(--canvas-primary)';
97
+ if (previewEdge) return 'var(--canvas-primary)';
92
98
  if (selected) return 'var(--canvas-primary)';
93
99
  if (isHovered) return 'var(--canvas-primary-hover)';
94
100
  if (status) return edgeTargetStatusToEdgeColor[status] ?? 'var(--canvas-border)';
@@ -132,18 +138,18 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ memo(function({ id, selected, so
132
138
  strokeWidth: style?.strokeWidth || 2,
133
139
  style: {
134
140
  stroke: edgeColor,
135
- strokeDasharray: isDiffRemoved ? style?.strokeDasharray || '5,5' : isPreviewEdge ? '5,5' : '0',
141
+ strokeDasharray: isDiffRemoved ? style?.strokeDasharray || '5,5' : previewEdge ? '5,5' : '0',
136
142
  opacity: style?.opacity !== void 0 ? style.opacity : 1,
137
143
  transition: 'stroke 0.2s ease, opacity 0.2s ease'
138
144
  },
139
145
  ref: pathElementRef
140
146
  }),
141
- /*#__PURE__*/ jsx("polygon", {
147
+ !hideArrowHead && /*#__PURE__*/ jsx("polygon", {
142
148
  points: `
143
- ${targetX},${targetY}
144
- ${targetX - ARROW_SIZE * Math.cos(angle - Math.PI / 6)},${targetY - ARROW_SIZE * Math.sin(angle - Math.PI / 6)}
145
- ${targetX - ARROW_SIZE * Math.cos(angle + Math.PI / 6)},${targetY - ARROW_SIZE * Math.sin(angle + Math.PI / 6)}
146
- `,
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
+ `,
147
153
  fill: edgeColor,
148
154
  style: {
149
155
  pointerEvents: 'none',
@@ -183,7 +189,7 @@ const SequenceEdge_SequenceEdge = /*#__PURE__*/ memo(function({ id, selected, so
183
189
  })
184
190
  ]
185
191
  }),
186
- showToolbar && toolbarPositioning && /*#__PURE__*/ jsx(EdgeToolbar, {
192
+ !hideToolbar && showToolbar && toolbarPositioning && /*#__PURE__*/ jsx(EdgeToolbar, {
187
193
  edgeId: id,
188
194
  visible: showToolbar,
189
195
  positioning: toolbarPositioning,
@@ -38,6 +38,7 @@ const animatedViewportManager_cjs_namespaceObject = require("../../stores/animat
38
38
  const canvasStore_cjs_namespaceObject = require("../../stores/canvasStore.cjs");
39
39
  const viewportManager_cjs_namespaceObject = require("../../stores/viewportManager.cjs");
40
40
  const external_types_cjs_namespaceObject = require("../../types.cjs");
41
+ const createPreviewNode_cjs_namespaceObject = require("../../utils/createPreviewNode.cjs");
41
42
  const icon_registry_cjs_namespaceObject = require("../../utils/icon-registry.cjs");
42
43
  const transitions_cjs_namespaceObject = require("../../utils/transitions.cjs");
43
44
  const AddNodeManager_cjs_namespaceObject = require("../AddNodePanel/AddNodeManager.cjs");
@@ -52,7 +53,15 @@ const DEFAULT_NODE_TYPES = {
52
53
  'blank-canvas-node': external_BlankCanvasNode_index_cjs_namespaceObject.BlankCanvasNode,
53
54
  preview: AddNodePreview_cjs_namespaceObject.AddNodePreview
54
55
  };
55
- const HierarchicalCanvas = ({ mode = 'design', initialCanvases, initialPath, onCanvasesChange, onPathChange })=>{
56
+ function shouldPersistNodeChange(change) {
57
+ if ('position' === change.type) return !!change.dragging;
58
+ if ('dimensions' === change.type) return !!change.setAttributes;
59
+ return true;
60
+ }
61
+ function isDefaultViewport(viewport) {
62
+ return 0 === viewport.x && 0 === viewport.y && 1 === viewport.zoom;
63
+ }
64
+ const HierarchicalCanvas = ({ resolveNodeRenderer, mode = 'design', initialCanvases, initialPath, onCanvasesChange, onPathChange })=>{
56
65
  const canvasRef = (0, external_react_namespaceObject.useRef)(null);
57
66
  const containerRef = (0, external_react_namespaceObject.useRef)(null);
58
67
  const [reactFlowInstance, setReactFlowInstance] = (0, external_react_namespaceObject.useState)(null);
@@ -63,17 +72,22 @@ const HierarchicalCanvas = ({ mode = 'design', initialCanvases, initialPath, onC
63
72
  });
64
73
  const lastCanvasIdRef = (0, external_react_namespaceObject.useRef)(null);
65
74
  const shouldAnimate = 'design' === mode && !(0, transitions_cjs_namespaceObject.prefersReducedMotion)();
66
- const nodeManifests = (0, external_core_index_cjs_namespaceObject.useNodeManifests)();
67
- const nodeTypes = (0, external_react_namespaceObject.useMemo)(()=>{
68
- const types = nodeManifests.reduce((acc, manifest)=>{
69
- if (!acc[manifest.nodeType]) acc[manifest.nodeType] = external_BaseNode_index_cjs_namespaceObject.BaseNode;
75
+ const nodeManifests = (0, external_core_index_cjs_namespaceObject.useDefaultNodeManifests)();
76
+ const nodeTypes = (0, external_react_namespaceObject.useMemo)(()=>nodeManifests.reduce((acc, manifest)=>{
77
+ if (!acc[manifest.nodeType]) {
78
+ const defaultRenderer = external_BaseNode_index_cjs_namespaceObject.BaseNode;
79
+ const resolvedRenderer = resolveNodeRenderer?.({
80
+ manifest,
81
+ defaultRenderer
82
+ });
83
+ acc[manifest.nodeType] = resolvedRenderer ?? defaultRenderer;
84
+ }
70
85
  return acc;
71
86
  }, {
72
87
  ...DEFAULT_NODE_TYPES
73
- });
74
- return types;
75
- }, [
76
- nodeManifests
88
+ }), [
89
+ nodeManifests,
90
+ resolveNodeRenderer
77
91
  ]);
78
92
  const currentCanvas = (0, canvasStore_cjs_namespaceObject.useCanvasStore)(canvasStore_cjs_namespaceObject.selectCurrentCanvas);
79
93
  const previousCanvas = (0, canvasStore_cjs_namespaceObject.useCanvasStore)(canvasStore_cjs_namespaceObject.selectPreviousCanvas);
@@ -148,15 +162,14 @@ const HierarchicalCanvas = ({ mode = 'design', initialCanvases, initialPath, onC
148
162
  if (currentCanvasId && lastCanvasIdRef.current && currentCanvasId !== lastCanvasIdRef.current) {
149
163
  if (reactFlowInstance && currentCanvas?.viewport) {
150
164
  const viewport = currentCanvas.viewport;
151
- if (0 !== viewport.x || 0 !== viewport.y || 1 !== viewport.zoom) setTimeout(()=>{
152
- reactFlowInstance.setViewport(viewport);
165
+ if (isDefaultViewport(viewport)) {
153
166
  currentViewportRef.current = viewport;
154
167
  viewportManager_cjs_namespaceObject.viewportManager.setCurrentViewport(viewport);
155
- }, 0);
156
- else {
168
+ } else setTimeout(()=>{
169
+ reactFlowInstance.setViewport(viewport);
157
170
  currentViewportRef.current = viewport;
158
171
  viewportManager_cjs_namespaceObject.viewportManager.setCurrentViewport(viewport);
159
- }
172
+ }, 0);
160
173
  }
161
174
  }
162
175
  lastCanvasIdRef.current = currentCanvasId || null;
@@ -171,9 +184,7 @@ const HierarchicalCanvas = ({ mode = 'design', initialCanvases, initialPath, onC
171
184
  const handleNodesChange = (0, external_react_namespaceObject.useCallback)((changes)=>{
172
185
  const canvas = currentCanvasRef.current;
173
186
  if (!canvas) return;
174
- const hasMeaningfulChanges = changes.some((change)=>'dimensions' !== change.type && 'position' !== change.type);
175
- const hasPositionChanges = changes.some((change)=>'position' === change.type && change.dragging);
176
- if (!hasMeaningfulChanges && !hasPositionChanges) return;
187
+ if (!changes.some(shouldPersistNodeChange)) return;
177
188
  const updatedNodes = (0, react_cjs_namespaceObject.applyNodeChanges)(changes, canvas.nodes ?? []);
178
189
  updateNodes(updatedNodes);
179
190
  }, [
@@ -205,7 +216,7 @@ const HierarchicalCanvas = ({ mode = 'design', initialCanvases, initialPath, onC
205
216
  const handleConnect = (0, external_react_namespaceObject.useCallback)((connection)=>{
206
217
  const canvas = currentCanvasRef.current;
207
218
  if (!connection.source || !connection.target || !canvas) return;
208
- if (connection.target === external_constants_cjs_namespaceObject.PREVIEW_NODE_ID || connection.source === external_constants_cjs_namespaceObject.PREVIEW_NODE_ID) return;
219
+ if ((0, createPreviewNode_cjs_namespaceObject.isPreviewEdge)(connection)) return;
209
220
  const newEdge = {
210
221
  id: `${connection.source}-${connection.target}-${Date.now()}`,
211
222
  source: connection.source,
@@ -213,15 +224,13 @@ const HierarchicalCanvas = ({ mode = 'design', initialCanvases, initialPath, onC
213
224
  sourceHandle: connection.sourceHandle || void 0,
214
225
  targetHandle: connection.targetHandle || void 0
215
226
  };
227
+ const hasPreview = canvas.nodes.some((n)=>n.id === external_constants_cjs_namespaceObject.PREVIEW_NODE_ID);
228
+ const baseEdges = hasPreview ? canvas.edges.filter((edge)=>!(0, createPreviewNode_cjs_namespaceObject.isPreviewEdge)(edge)) : canvas.edges;
216
229
  updateEdges([
217
- ...canvas.edges,
230
+ ...baseEdges,
218
231
  newEdge
219
232
  ]);
220
- const hasPreview = canvas.nodes.some((n)=>n.id === external_constants_cjs_namespaceObject.PREVIEW_NODE_ID);
221
- if (hasPreview) {
222
- updateNodes(canvas.nodes.filter((n)=>n.id !== external_constants_cjs_namespaceObject.PREVIEW_NODE_ID));
223
- updateEdges(canvas.edges.filter((e)=>e.id !== external_constants_cjs_namespaceObject.PREVIEW_EDGE_ID));
224
- }
233
+ if (hasPreview) updateNodes(canvas.nodes.filter((n)=>n.id !== external_constants_cjs_namespaceObject.PREVIEW_NODE_ID));
225
234
  }, [
226
235
  updateNodes,
227
236
  updateEdges
@@ -255,7 +264,7 @@ const HierarchicalCanvas = ({ mode = 'design', initialCanvases, initialPath, onC
255
264
  ]);
256
265
  const shouldFitView = (0, external_react_namespaceObject.useMemo)(()=>{
257
266
  const viewport = currentCanvas?.viewport;
258
- return viewport ? 0 === viewport.x && 0 === viewport.y && 1 === viewport.zoom : false;
267
+ return viewport ? isDefaultViewport(viewport) : false;
259
268
  }, [
260
269
  currentCanvas?.viewport
261
270
  ]);
@@ -1,6 +1,13 @@
1
+ import { type NodeTypes } from '../../xyflow/react.ts';
1
2
  import type React from 'react';
3
+ import type { NodeManifest } from '../../schema/node-definition';
2
4
  import type { CanvasLevel } from '../../types/canvas.types';
3
- interface HierarchicalCanvasProps {
5
+ export type NodeRendererResolver = (args: {
6
+ manifest: NodeManifest;
7
+ defaultRenderer: NodeTypes[string];
8
+ }) => NodeTypes[string] | undefined;
9
+ export interface HierarchicalCanvasProps {
10
+ resolveNodeRenderer?: NodeRendererResolver;
4
11
  mode?: 'view' | 'design' | 'readonly';
5
12
  initialCanvases?: Record<string, CanvasLevel>;
6
13
  initialPath?: string[];
@@ -8,5 +15,4 @@ interface HierarchicalCanvasProps {
8
15
  onPathChange?: (path: string[]) => void;
9
16
  }
10
17
  export declare const HierarchicalCanvas: React.FC<HierarchicalCanvasProps>;
11
- export {};
12
18
  //# sourceMappingURL=HierarchicalCanvas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HierarchicalCanvas.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/HierarchicalCanvas/HierarchicalCanvas.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA4B/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAW5D,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;AASD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA2YhE,CAAC"}
1
+ {"version":3,"file":"HierarchicalCanvas.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/HierarchicalCanvas/HierarchicalCanvas.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,SAAS,EAUf,MAAM,0CAA0C,CAAC;AAElD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAuBjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAY5D,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE;IACxC,QAAQ,EAAE,YAAY,CAAC;IACvB,eAAe,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CACpC,KAAK,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AAEpC,MAAM,WAAW,uBAAuB;IAKtC,mBAAmB,CAAC,EAAE,oBAAoB,CAAC;IAC3C,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,CAwYhE,CAAC"}
@@ -2,14 +2,15 @@ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { Panel, applyEdgeChanges, applyNodeChanges } from "../../xyflow/react.js";
3
3
  import { Spinner } from "@uipath/apollo-wind";
4
4
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
5
- import { PREVIEW_EDGE_ID, PREVIEW_NODE_ID } from "../../constants.js";
5
+ import { PREVIEW_NODE_ID } from "../../constants.js";
6
6
  import { Breadcrumb } from "../../controls/index.js";
7
- import { useNodeManifests } from "../../core/index.js";
7
+ import { useDefaultNodeManifests } from "../../core/index.js";
8
8
  import { useAddNodeOnConnectEnd } from "../../hooks/useAddNodeOnConnectEnd.js";
9
9
  import { animatedViewportManager } from "../../stores/animatedViewportManager.js";
10
10
  import { selectBreadcrumbs, selectCanvasStack, selectCurrentCanvas, selectCurrentPath, selectDrillIntoNode, selectInitializeCanvas, selectInitializeWithData, selectNavigateToDepth, selectNavigateToSiblingCanvas, selectPreviousCanvas, selectTransitionState, selectUpdateEdges, selectUpdateNodes, selectUpdateSelection, selectUpdateViewport, useCanvasStore } from "../../stores/canvasStore.js";
11
11
  import { viewportManager } from "../../stores/viewportManager.js";
12
12
  import { DefaultCanvasTranslations } from "../../types.js";
13
+ import { isPreviewEdge } from "../../utils/createPreviewNode.js";
13
14
  import { CanvasIcon } from "../../utils/icon-registry.js";
14
15
  import { prefersReducedMotion } from "../../utils/transitions.js";
15
16
  import { AddNodeManager } from "../AddNodePanel/AddNodeManager.js";
@@ -24,7 +25,15 @@ const DEFAULT_NODE_TYPES = {
24
25
  'blank-canvas-node': BlankCanvasNode,
25
26
  preview: AddNodePreview
26
27
  };
27
- const HierarchicalCanvas = ({ mode = 'design', initialCanvases, initialPath, onCanvasesChange, onPathChange })=>{
28
+ function shouldPersistNodeChange(change) {
29
+ if ('position' === change.type) return !!change.dragging;
30
+ if ('dimensions' === change.type) return !!change.setAttributes;
31
+ return true;
32
+ }
33
+ function isDefaultViewport(viewport) {
34
+ return 0 === viewport.x && 0 === viewport.y && 1 === viewport.zoom;
35
+ }
36
+ const HierarchicalCanvas = ({ resolveNodeRenderer, mode = 'design', initialCanvases, initialPath, onCanvasesChange, onPathChange })=>{
28
37
  const canvasRef = useRef(null);
29
38
  const containerRef = useRef(null);
30
39
  const [reactFlowInstance, setReactFlowInstance] = useState(null);
@@ -35,17 +44,22 @@ const HierarchicalCanvas = ({ mode = 'design', initialCanvases, initialPath, onC
35
44
  });
36
45
  const lastCanvasIdRef = useRef(null);
37
46
  const shouldAnimate = 'design' === mode && !prefersReducedMotion();
38
- const nodeManifests = useNodeManifests();
39
- const nodeTypes = useMemo(()=>{
40
- const types = nodeManifests.reduce((acc, manifest)=>{
41
- if (!acc[manifest.nodeType]) acc[manifest.nodeType] = BaseNode;
47
+ const nodeManifests = useDefaultNodeManifests();
48
+ const nodeTypes = useMemo(()=>nodeManifests.reduce((acc, manifest)=>{
49
+ if (!acc[manifest.nodeType]) {
50
+ const defaultRenderer = BaseNode;
51
+ const resolvedRenderer = resolveNodeRenderer?.({
52
+ manifest,
53
+ defaultRenderer
54
+ });
55
+ acc[manifest.nodeType] = resolvedRenderer ?? defaultRenderer;
56
+ }
42
57
  return acc;
43
58
  }, {
44
59
  ...DEFAULT_NODE_TYPES
45
- });
46
- return types;
47
- }, [
48
- nodeManifests
60
+ }), [
61
+ nodeManifests,
62
+ resolveNodeRenderer
49
63
  ]);
50
64
  const currentCanvas = useCanvasStore(selectCurrentCanvas);
51
65
  const previousCanvas = useCanvasStore(selectPreviousCanvas);
@@ -120,15 +134,14 @@ const HierarchicalCanvas = ({ mode = 'design', initialCanvases, initialPath, onC
120
134
  if (currentCanvasId && lastCanvasIdRef.current && currentCanvasId !== lastCanvasIdRef.current) {
121
135
  if (reactFlowInstance && currentCanvas?.viewport) {
122
136
  const viewport = currentCanvas.viewport;
123
- if (0 !== viewport.x || 0 !== viewport.y || 1 !== viewport.zoom) setTimeout(()=>{
124
- reactFlowInstance.setViewport(viewport);
137
+ if (isDefaultViewport(viewport)) {
125
138
  currentViewportRef.current = viewport;
126
139
  viewportManager.setCurrentViewport(viewport);
127
- }, 0);
128
- else {
140
+ } else setTimeout(()=>{
141
+ reactFlowInstance.setViewport(viewport);
129
142
  currentViewportRef.current = viewport;
130
143
  viewportManager.setCurrentViewport(viewport);
131
- }
144
+ }, 0);
132
145
  }
133
146
  }
134
147
  lastCanvasIdRef.current = currentCanvasId || null;
@@ -143,9 +156,7 @@ const HierarchicalCanvas = ({ mode = 'design', initialCanvases, initialPath, onC
143
156
  const handleNodesChange = useCallback((changes)=>{
144
157
  const canvas = currentCanvasRef.current;
145
158
  if (!canvas) return;
146
- const hasMeaningfulChanges = changes.some((change)=>'dimensions' !== change.type && 'position' !== change.type);
147
- const hasPositionChanges = changes.some((change)=>'position' === change.type && change.dragging);
148
- if (!hasMeaningfulChanges && !hasPositionChanges) return;
159
+ if (!changes.some(shouldPersistNodeChange)) return;
149
160
  const updatedNodes = applyNodeChanges(changes, canvas.nodes ?? []);
150
161
  updateNodes(updatedNodes);
151
162
  }, [
@@ -177,7 +188,7 @@ const HierarchicalCanvas = ({ mode = 'design', initialCanvases, initialPath, onC
177
188
  const handleConnect = useCallback((connection)=>{
178
189
  const canvas = currentCanvasRef.current;
179
190
  if (!connection.source || !connection.target || !canvas) return;
180
- if (connection.target === PREVIEW_NODE_ID || connection.source === PREVIEW_NODE_ID) return;
191
+ if (isPreviewEdge(connection)) return;
181
192
  const newEdge = {
182
193
  id: `${connection.source}-${connection.target}-${Date.now()}`,
183
194
  source: connection.source,
@@ -185,15 +196,13 @@ const HierarchicalCanvas = ({ mode = 'design', initialCanvases, initialPath, onC
185
196
  sourceHandle: connection.sourceHandle || void 0,
186
197
  targetHandle: connection.targetHandle || void 0
187
198
  };
199
+ const hasPreview = canvas.nodes.some((n)=>n.id === PREVIEW_NODE_ID);
200
+ const baseEdges = hasPreview ? canvas.edges.filter((edge)=>!isPreviewEdge(edge)) : canvas.edges;
188
201
  updateEdges([
189
- ...canvas.edges,
202
+ ...baseEdges,
190
203
  newEdge
191
204
  ]);
192
- const hasPreview = canvas.nodes.some((n)=>n.id === PREVIEW_NODE_ID);
193
- if (hasPreview) {
194
- updateNodes(canvas.nodes.filter((n)=>n.id !== PREVIEW_NODE_ID));
195
- updateEdges(canvas.edges.filter((e)=>e.id !== PREVIEW_EDGE_ID));
196
- }
205
+ if (hasPreview) updateNodes(canvas.nodes.filter((n)=>n.id !== PREVIEW_NODE_ID));
197
206
  }, [
198
207
  updateNodes,
199
208
  updateEdges
@@ -227,7 +236,7 @@ const HierarchicalCanvas = ({ mode = 'design', initialCanvases, initialPath, onC
227
236
  ]);
228
237
  const shouldFitView = useMemo(()=>{
229
238
  const viewport = currentCanvas?.viewport;
230
- return viewport ? 0 === viewport.x && 0 === viewport.y && 1 === viewport.zoom : false;
239
+ return viewport ? isDefaultViewport(viewport) : false;
231
240
  }, [
232
241
  currentCanvas?.viewport
233
242
  ]);
@@ -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) (0, createAddNodePreview_cjs_namespaceObject.createAddNodePreview)(event.nodeId, event.handleId, 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":"AAOA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA6d/B,eAAO,MAAM,8BAA8B,EAAE,KAAK,CAAC,EA8BlD,CAAC"}
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) createAddNodePreview(event.nodeId, event.handleId, 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;
@@ -1,2 +1,2 @@
1
- export { HierarchicalCanvas } from './HierarchicalCanvas';
1
+ export { HierarchicalCanvas, type HierarchicalCanvasProps, type NodeRendererResolver, } from './HierarchicalCanvas';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/HierarchicalCanvas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/HierarchicalCanvas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC"}