@uipath/apollo-react 4.14.1 → 4.15.0-pr605.635fb17

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 +28 -4
  5. package/dist/canvas/components/AddNodePanel/createAddNodePreview.d.ts +2 -1
  6. package/dist/canvas/components/AddNodePanel/createAddNodePreview.d.ts.map +1 -1
  7. package/dist/canvas/components/AddNodePanel/createAddNodePreview.js +28 -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
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ createPreviewGraph: ()=>createPreviewGraph,
28
+ reparentPreviewNodeToContainer: ()=>reparentPreviewNodeToContainer,
29
+ showPreviewGraph: ()=>showPreviewGraph,
30
+ applyPreviewGraphToReactFlow: ()=>applyPreviewGraphToReactFlow
31
+ });
32
+ const external_constants_cjs_namespaceObject = require("../constants.cjs");
33
+ const external_createPreviewNode_cjs_namespaceObject = require("./createPreviewNode.cjs");
34
+ const external_NodeUtils_cjs_namespaceObject = require("./NodeUtils.cjs");
35
+ function inferPreviewContainerId(sourceNode, targetNode) {
36
+ if (!targetNode) return sourceNode.parentId;
37
+ if (sourceNode.parentId === targetNode.parentId) return sourceNode.parentId;
38
+ if (targetNode.parentId === sourceNode.id) return sourceNode.id;
39
+ if (sourceNode.parentId === targetNode.id) return targetNode.id;
40
+ }
41
+ function reparentPreviewNodeToContainer(previewNode, containerId, reactFlowInstance) {
42
+ const containerNode = reactFlowInstance.getNode(containerId);
43
+ if (!containerNode) return null;
44
+ const containerAbsolutePosition = (0, external_NodeUtils_cjs_namespaceObject.getAbsolutePosition)(containerNode, reactFlowInstance.getNodes());
45
+ return {
46
+ ...previewNode,
47
+ position: {
48
+ x: previewNode.position.x - containerAbsolutePosition.x,
49
+ y: previewNode.position.y - containerAbsolutePosition.y
50
+ },
51
+ parentId: containerId,
52
+ extent: 'parent'
53
+ };
54
+ }
55
+ function createPreviewNodeForGraph({ sourceNodeId, sourceHandleId, reactFlowInstance, position, data, sourceHandleType, previewNodeSize, handlePosition, ignoredNodeTypes, positionMode }) {
56
+ return (0, external_createPreviewNode_cjs_namespaceObject.createPreviewNode)(sourceNodeId, sourceHandleId, reactFlowInstance, position, data, sourceHandleType, previewNodeSize, handlePosition, ignoredNodeTypes, positionMode);
57
+ }
58
+ function createTrailingPreviewEdge({ targetNodeId, targetHandleId, trailingEdgeId, trailingEdgeStyle = external_createPreviewNode_cjs_namespaceObject.PREVIEW_EDGE_STYLE }) {
59
+ if (!targetNodeId) return null;
60
+ return {
61
+ id: trailingEdgeId ?? `${external_constants_cjs_namespaceObject.PREVIEW_NODE_ID}-${targetNodeId}`,
62
+ source: external_constants_cjs_namespaceObject.PREVIEW_NODE_ID,
63
+ sourceHandle: external_constants_cjs_namespaceObject.DEFAULT_SOURCE_HANDLE_ID,
64
+ target: targetNodeId,
65
+ targetHandle: targetHandleId,
66
+ type: 'default',
67
+ style: trailingEdgeStyle
68
+ };
69
+ }
70
+ function createPreviewGraph(options) {
71
+ const { reactFlowInstance, targetNodeId, containerId, removedEdgeIds, sourceNodeId } = options;
72
+ const preview = createPreviewNodeForGraph(options);
73
+ if (!preview) return null;
74
+ const sourceNode = reactFlowInstance.getNode(sourceNodeId);
75
+ if (!sourceNode) return null;
76
+ const targetNode = targetNodeId ? reactFlowInstance.getNode(targetNodeId) : void 0;
77
+ const resolvedContainerId = containerId ?? inferPreviewContainerId(sourceNode, targetNode);
78
+ const finalPreviewNode = resolvedContainerId ? reparentPreviewNodeToContainer(preview.node, resolvedContainerId, reactFlowInstance) : preview.node;
79
+ if (!finalPreviewNode) return null;
80
+ const trailingEdge = createTrailingPreviewEdge(options);
81
+ const edges = trailingEdge ? [
82
+ preview.edge,
83
+ trailingEdge
84
+ ] : [
85
+ preview.edge
86
+ ];
87
+ return {
88
+ node: finalPreviewNode,
89
+ edges,
90
+ removedEdgeIds
91
+ };
92
+ }
93
+ function showPreviewGraph(options) {
94
+ const preview = createPreviewGraph(options);
95
+ if (preview) applyPreviewGraphToReactFlow(preview, options.reactFlowInstance);
96
+ return preview;
97
+ }
98
+ function applyPreviewGraphToReactFlow(preview, reactFlowInstance) {
99
+ const removedEdgeIds = new Set(preview.removedEdgeIds ?? []);
100
+ setTimeout(()=>{
101
+ reactFlowInstance.setNodes((nodes)=>[
102
+ ...nodes.filter((node)=>node.id !== external_constants_cjs_namespaceObject.PREVIEW_NODE_ID).map((node)=>({
103
+ ...node,
104
+ selected: false
105
+ })),
106
+ preview.node
107
+ ]);
108
+ reactFlowInstance.setEdges((edges)=>[
109
+ ...edges.filter((edge)=>!(0, external_createPreviewNode_cjs_namespaceObject.isPreviewEdge)(edge) && !removedEdgeIds.has(edge.id)),
110
+ ...preview.edges
111
+ ]);
112
+ }, 0);
113
+ }
114
+ exports.applyPreviewGraphToReactFlow = __webpack_exports__.applyPreviewGraphToReactFlow;
115
+ exports.createPreviewGraph = __webpack_exports__.createPreviewGraph;
116
+ exports.reparentPreviewNodeToContainer = __webpack_exports__.reparentPreviewNodeToContainer;
117
+ exports.showPreviewGraph = __webpack_exports__.showPreviewGraph;
118
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
119
+ "applyPreviewGraphToReactFlow",
120
+ "createPreviewGraph",
121
+ "reparentPreviewNodeToContainer",
122
+ "showPreviewGraph"
123
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
124
+ Object.defineProperty(exports, '__esModule', {
125
+ value: true
126
+ });
@@ -0,0 +1,37 @@
1
+ import type { Edge, Node, Position, ReactFlowInstance } from '../xyflow/react.ts';
2
+ import { type PreviewNodePositionMode } from './createPreviewNode';
3
+ export interface PreviewGraph {
4
+ node: Node;
5
+ edges: Edge[];
6
+ removedEdgeIds?: string[];
7
+ }
8
+ export interface CreatePreviewGraphOptions {
9
+ sourceNodeId: string;
10
+ sourceHandleId: string;
11
+ reactFlowInstance: ReactFlowInstance;
12
+ position?: {
13
+ x: number;
14
+ y: number;
15
+ };
16
+ data?: Record<string, unknown>;
17
+ sourceHandleType?: 'source' | 'target';
18
+ previewNodeSize?: {
19
+ width: number;
20
+ height: number;
21
+ };
22
+ handlePosition?: Position;
23
+ ignoredNodeTypes?: string[];
24
+ positionMode?: PreviewNodePositionMode;
25
+ targetNodeId?: string;
26
+ targetHandleId?: string | null;
27
+ containerId?: string;
28
+ removedEdgeIds?: string[];
29
+ trailingEdgeId?: string;
30
+ trailingEdgeStyle?: Edge['style'];
31
+ }
32
+ export type PreviewGraphOverrides = Partial<Pick<CreatePreviewGraphOptions, 'containerId' | 'data' | 'position' | 'positionMode' | 'removedEdgeIds' | 'targetHandleId' | 'targetNodeId'>>;
33
+ export declare function reparentPreviewNodeToContainer(previewNode: Node, containerId: string, reactFlowInstance: ReactFlowInstance): Node | null;
34
+ export declare function createPreviewGraph(options: CreatePreviewGraphOptions): PreviewGraph | null;
35
+ export declare function showPreviewGraph(options: CreatePreviewGraphOptions): PreviewGraph | null;
36
+ export declare function applyPreviewGraphToReactFlow(preview: PreviewGraph, reactFlowInstance: ReactFlowInstance): void;
37
+ //# sourceMappingURL=createPreviewGraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPreviewGraph.d.ts","sourceRoot":"","sources":["../../../src/canvas/utils/createPreviewGraph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,iBAAiB,EAClB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,qBAAqB,CAAC;AAG7B,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,gBAAgB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACvC,eAAe,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,uBAAuB,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;CACnC;AAMD,MAAM,MAAM,qBAAqB,GAAG,OAAO,CACzC,IAAI,CACF,yBAAyB,EACvB,aAAa,GACb,MAAM,GACN,UAAU,GACV,cAAc,GACd,gBAAgB,GAChB,gBAAgB,GAChB,cAAc,CACjB,CACF,CAAC;AAsBF,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,IAAI,EACjB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,iBAAiB,GACnC,IAAI,GAAG,IAAI,CAoBb;AAkDD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,YAAY,GAAG,IAAI,CAyB1F;AAOD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,yBAAyB,GAAG,YAAY,GAAG,IAAI,CAMxF;AAOD,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,YAAY,EACrB,iBAAiB,EAAE,iBAAiB,GACnC,IAAI,CAgBN"}
@@ -0,0 +1,83 @@
1
+ import { DEFAULT_SOURCE_HANDLE_ID, PREVIEW_NODE_ID } from "../constants.js";
2
+ import { PREVIEW_EDGE_STYLE, createPreviewNode, isPreviewEdge } from "./createPreviewNode.js";
3
+ import { getAbsolutePosition } from "./NodeUtils.js";
4
+ function inferPreviewContainerId(sourceNode, targetNode) {
5
+ if (!targetNode) return sourceNode.parentId;
6
+ if (sourceNode.parentId === targetNode.parentId) return sourceNode.parentId;
7
+ if (targetNode.parentId === sourceNode.id) return sourceNode.id;
8
+ if (sourceNode.parentId === targetNode.id) return targetNode.id;
9
+ }
10
+ function reparentPreviewNodeToContainer(previewNode, containerId, reactFlowInstance) {
11
+ const containerNode = reactFlowInstance.getNode(containerId);
12
+ if (!containerNode) return null;
13
+ const containerAbsolutePosition = getAbsolutePosition(containerNode, reactFlowInstance.getNodes());
14
+ return {
15
+ ...previewNode,
16
+ position: {
17
+ x: previewNode.position.x - containerAbsolutePosition.x,
18
+ y: previewNode.position.y - containerAbsolutePosition.y
19
+ },
20
+ parentId: containerId,
21
+ extent: 'parent'
22
+ };
23
+ }
24
+ function createPreviewNodeForGraph({ sourceNodeId, sourceHandleId, reactFlowInstance, position, data, sourceHandleType, previewNodeSize, handlePosition, ignoredNodeTypes, positionMode }) {
25
+ return createPreviewNode(sourceNodeId, sourceHandleId, reactFlowInstance, position, data, sourceHandleType, previewNodeSize, handlePosition, ignoredNodeTypes, positionMode);
26
+ }
27
+ function createTrailingPreviewEdge({ targetNodeId, targetHandleId, trailingEdgeId, trailingEdgeStyle = PREVIEW_EDGE_STYLE }) {
28
+ if (!targetNodeId) return null;
29
+ return {
30
+ id: trailingEdgeId ?? `${PREVIEW_NODE_ID}-${targetNodeId}`,
31
+ source: PREVIEW_NODE_ID,
32
+ sourceHandle: DEFAULT_SOURCE_HANDLE_ID,
33
+ target: targetNodeId,
34
+ targetHandle: targetHandleId,
35
+ type: 'default',
36
+ style: trailingEdgeStyle
37
+ };
38
+ }
39
+ function createPreviewGraph(options) {
40
+ const { reactFlowInstance, targetNodeId, containerId, removedEdgeIds, sourceNodeId } = options;
41
+ const preview = createPreviewNodeForGraph(options);
42
+ if (!preview) return null;
43
+ const sourceNode = reactFlowInstance.getNode(sourceNodeId);
44
+ if (!sourceNode) return null;
45
+ const targetNode = targetNodeId ? reactFlowInstance.getNode(targetNodeId) : void 0;
46
+ const resolvedContainerId = containerId ?? inferPreviewContainerId(sourceNode, targetNode);
47
+ const finalPreviewNode = resolvedContainerId ? reparentPreviewNodeToContainer(preview.node, resolvedContainerId, reactFlowInstance) : preview.node;
48
+ if (!finalPreviewNode) return null;
49
+ const trailingEdge = createTrailingPreviewEdge(options);
50
+ const edges = trailingEdge ? [
51
+ preview.edge,
52
+ trailingEdge
53
+ ] : [
54
+ preview.edge
55
+ ];
56
+ return {
57
+ node: finalPreviewNode,
58
+ edges,
59
+ removedEdgeIds
60
+ };
61
+ }
62
+ function showPreviewGraph(options) {
63
+ const preview = createPreviewGraph(options);
64
+ if (preview) applyPreviewGraphToReactFlow(preview, options.reactFlowInstance);
65
+ return preview;
66
+ }
67
+ function applyPreviewGraphToReactFlow(preview, reactFlowInstance) {
68
+ const removedEdgeIds = new Set(preview.removedEdgeIds ?? []);
69
+ setTimeout(()=>{
70
+ reactFlowInstance.setNodes((nodes)=>[
71
+ ...nodes.filter((node)=>node.id !== PREVIEW_NODE_ID).map((node)=>({
72
+ ...node,
73
+ selected: false
74
+ })),
75
+ preview.node
76
+ ]);
77
+ reactFlowInstance.setEdges((edges)=>[
78
+ ...edges.filter((edge)=>!isPreviewEdge(edge) && !removedEdgeIds.has(edge.id)),
79
+ ...preview.edges
80
+ ]);
81
+ }, 0);
82
+ }
83
+ export { applyPreviewGraphToReactFlow, createPreviewGraph, reparentPreviewNodeToContainer, showPreviewGraph };
@@ -24,13 +24,25 @@ var __webpack_require__ = {};
24
24
  var __webpack_exports__ = {};
25
25
  __webpack_require__.r(__webpack_exports__);
26
26
  __webpack_require__.d(__webpack_exports__, {
27
- applyPreviewToReactFlow: ()=>applyPreviewToReactFlow,
27
+ PREVIEW_EDGE_STYLE: ()=>PREVIEW_EDGE_STYLE,
28
+ isPreviewEdge: ()=>isPreviewEdge,
28
29
  removePreviewFromReactFlow: ()=>removePreviewFromReactFlow,
30
+ applyPreviewToReactFlow: ()=>applyPreviewToReactFlow,
31
+ getOppositePosition: ()=>getOppositePosition,
29
32
  createPreviewNode: ()=>createPreviewNode
30
33
  });
31
34
  const react_cjs_namespaceObject = require("../xyflow/react.cjs");
32
35
  const external_constants_cjs_namespaceObject = require("../constants.cjs");
33
36
  const external_NodeUtils_cjs_namespaceObject = require("./NodeUtils.cjs");
37
+ const PREVIEW_EDGE_STYLE = {
38
+ strokeDasharray: '5,5',
39
+ opacity: 0.8,
40
+ stroke: 'var(--canvas-selection-indicator)',
41
+ strokeWidth: 2
42
+ };
43
+ function isPreviewEdge(edge) {
44
+ return edge.id === external_constants_cjs_namespaceObject.PREVIEW_EDGE_ID || edge.source === external_constants_cjs_namespaceObject.PREVIEW_NODE_ID || edge.target === external_constants_cjs_namespaceObject.PREVIEW_NODE_ID;
45
+ }
34
46
  function getOppositePosition(position) {
35
47
  switch(position){
36
48
  case react_cjs_namespaceObject.Position.Left:
@@ -74,6 +86,12 @@ function calculatePositionFromDrop(dropPosition, handlePosition, previewNodeSize
74
86
  };
75
87
  }
76
88
  }
89
+ function calculateCenteredPosition(centerPosition, previewNodeSize) {
90
+ return {
91
+ x: centerPosition.x - previewNodeSize.width / 2,
92
+ y: centerPosition.y - previewNodeSize.height / 2
93
+ };
94
+ }
77
95
  function computeSpreadOffset(handle, size) {
78
96
  const index = handle?.index ?? null;
79
97
  const count = handle?.count ?? 1;
@@ -82,6 +100,25 @@ function computeSpreadOffset(handle, size) {
82
100
  if (index >= Math.ceil(count / 2)) return size;
83
101
  return 0;
84
102
  }
103
+ function getOppositeOverflowDirection(overflowDirection) {
104
+ return {
105
+ x: 'right' === overflowDirection.x ? 'left' : 'right',
106
+ y: 'down' === overflowDirection.y ? 'up' : 'down'
107
+ };
108
+ }
109
+ function getPerpendicularDistance(initialPosition, resolvedPosition, direction) {
110
+ return 'left' === direction || 'right' === direction ? Math.abs(resolvedPosition.y - initialPosition.y) : Math.abs(resolvedPosition.x - initialPosition.x);
111
+ }
112
+ function getNonOverlappingPreviewPosition({ nodes, initialPosition, previewNodeSize, direction, offset, ignoredNodeTypes, overflowDirection, handle }) {
113
+ const preferredPosition = (0, external_NodeUtils_cjs_namespaceObject.getNonOverlappingPositionForDirection)(nodes, {
114
+ ...initialPosition
115
+ }, previewNodeSize, direction, offset, ignoredNodeTypes, overflowDirection);
116
+ if ((handle?.count ?? 1) <= 1) return preferredPosition;
117
+ const alternatePosition = (0, external_NodeUtils_cjs_namespaceObject.getNonOverlappingPositionForDirection)(nodes, {
118
+ ...initialPosition
119
+ }, previewNodeSize, direction, offset, ignoredNodeTypes, getOppositeOverflowDirection(overflowDirection));
120
+ return getPerpendicularDistance(initialPosition, alternatePosition, direction) < getPerpendicularDistance(initialPosition, preferredPosition, direction) ? alternatePosition : preferredPosition;
121
+ }
85
122
  function calculateAutoPosition(sourceNode, handlePosition, previewNodeSize, existingNodes, offset = 5 * external_constants_cjs_namespaceObject.GRID_SPACING, ignoredNodeTypes = [], handle) {
86
123
  const sourceAbsolutePosition = sourceNode.parentId ? (0, external_NodeUtils_cjs_namespaceObject.getAbsolutePosition)(sourceNode, existingNodes) : sourceNode.position;
87
124
  const sourceWidth = sourceNode.measured?.width ?? 0;
@@ -134,12 +171,21 @@ function calculateAutoPosition(sourceNode, handlePosition, previewNodeSize, exis
134
171
  x: anchorX >= sourceAbsolutePosition.x + sourceWidth / 2 ? 'right' : 'left',
135
172
  y: anchorY >= sourceAbsolutePosition.y + sourceHeight / 2 ? 'down' : 'up'
136
173
  };
137
- return (0, external_NodeUtils_cjs_namespaceObject.getNonOverlappingPositionForDirection)(nodesWithAbsolutePositions, initialPosition, previewNodeSize, direction, offset, ignoredNodeTypes, overflowDirection);
174
+ return getNonOverlappingPreviewPosition({
175
+ nodes: nodesWithAbsolutePositions,
176
+ initialPosition,
177
+ previewNodeSize,
178
+ direction,
179
+ offset,
180
+ ignoredNodeTypes,
181
+ overflowDirection,
182
+ handle
183
+ });
138
184
  }
139
185
  function createPreviewNode(sourceNodeId, sourceHandleId, reactFlowInstance, position, data, sourceHandleType = 'source', previewNodeSize = {
140
186
  width: external_constants_cjs_namespaceObject.DEFAULT_NODE_SIZE,
141
187
  height: external_constants_cjs_namespaceObject.DEFAULT_NODE_SIZE
142
- }, handlePosition = react_cjs_namespaceObject.Position.Right, ignoredNodeTypes = []) {
188
+ }, handlePosition = react_cjs_namespaceObject.Position.Right, ignoredNodeTypes = [], positionMode = 'drop') {
143
189
  const sourceNode = reactFlowInstance.getNode(sourceNodeId);
144
190
  if (!sourceNode) {
145
191
  console.warn(`Source node ${sourceNodeId} not found`);
@@ -149,7 +195,7 @@ function createPreviewNode(sourceNodeId, sourceHandleId, reactFlowInstance, posi
149
195
  const existingNodes = reactFlowInstance.getNodes().filter((n)=>n.id !== external_constants_cjs_namespaceObject.PREVIEW_NODE_ID);
150
196
  const internalNode = void 0 === position ? reactFlowInstance.getInternalNode(sourceNodeId) : void 0;
151
197
  const handle = internalNode ? (0, external_NodeUtils_cjs_namespaceObject.resolveHandleContext)(internalNode, sourceHandleId, handlePosition) : void 0;
152
- const nodePosition = position ? calculatePositionFromDrop(position, handlePosition, previewNodeSize) : calculateAutoPosition(sourceNode, handlePosition, previewNodeSize, existingNodes, void 0, ignoredNodeTypes, handle);
198
+ const nodePosition = position ? 'center' === positionMode ? calculateCenteredPosition(position, previewNodeSize) : calculatePositionFromDrop(position, handlePosition, previewNodeSize) : calculateAutoPosition(sourceNode, handlePosition, previewNodeSize, existingNodes, void 0, ignoredNodeTypes, handle);
153
199
  const handleFacingSource = getOppositePosition(handlePosition);
154
200
  const finalData = {
155
201
  ...data ?? {}
@@ -179,12 +225,7 @@ function createPreviewNode(sourceNodeId, sourceHandleId, reactFlowInstance, posi
179
225
  id: external_constants_cjs_namespaceObject.PREVIEW_EDGE_ID,
180
226
  ...previewSourceAndTargetData,
181
227
  type: 'default',
182
- style: {
183
- strokeDasharray: '5,5',
184
- opacity: 0.8,
185
- stroke: 'var(--canvas-selection-indicator)',
186
- strokeWidth: 2
187
- }
228
+ style: PREVIEW_EDGE_STYLE
188
229
  };
189
230
  return {
190
231
  node: previewNode,
@@ -201,21 +242,27 @@ function applyPreviewToReactFlow(preview, reactFlowInstance) {
201
242
  preview.node
202
243
  ]);
203
244
  reactFlowInstance.setEdges((edges)=>[
204
- ...edges.filter((e)=>e.id !== external_constants_cjs_namespaceObject.PREVIEW_EDGE_ID),
245
+ ...edges.filter((e)=>e.source !== external_constants_cjs_namespaceObject.PREVIEW_NODE_ID && e.target !== external_constants_cjs_namespaceObject.PREVIEW_NODE_ID),
205
246
  preview.edge
206
247
  ]);
207
248
  }, 0);
208
249
  }
209
250
  function removePreviewFromReactFlow(reactFlowInstance) {
210
251
  reactFlowInstance.setNodes((nodes)=>nodes.filter((n)=>n.id !== external_constants_cjs_namespaceObject.PREVIEW_NODE_ID));
211
- reactFlowInstance.setEdges((edges)=>edges.filter((e)=>e.id !== external_constants_cjs_namespaceObject.PREVIEW_EDGE_ID));
252
+ reactFlowInstance.setEdges((edges)=>edges.filter((e)=>e.source !== external_constants_cjs_namespaceObject.PREVIEW_NODE_ID && e.target !== external_constants_cjs_namespaceObject.PREVIEW_NODE_ID));
212
253
  }
254
+ exports.PREVIEW_EDGE_STYLE = __webpack_exports__.PREVIEW_EDGE_STYLE;
213
255
  exports.applyPreviewToReactFlow = __webpack_exports__.applyPreviewToReactFlow;
214
256
  exports.createPreviewNode = __webpack_exports__.createPreviewNode;
257
+ exports.getOppositePosition = __webpack_exports__.getOppositePosition;
258
+ exports.isPreviewEdge = __webpack_exports__.isPreviewEdge;
215
259
  exports.removePreviewFromReactFlow = __webpack_exports__.removePreviewFromReactFlow;
216
260
  for(var __rspack_i in __webpack_exports__)if (-1 === [
261
+ "PREVIEW_EDGE_STYLE",
217
262
  "applyPreviewToReactFlow",
218
263
  "createPreviewNode",
264
+ "getOppositePosition",
265
+ "isPreviewEdge",
219
266
  "removePreviewFromReactFlow"
220
267
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
221
268
  Object.defineProperty(exports, '__esModule', {
@@ -1,11 +1,19 @@
1
1
  import { type Edge, type Node, Position, type ReactFlowInstance } from '../xyflow/react.ts';
2
+ export type PreviewNodePositionMode = 'drop' | 'center';
3
+ export declare const PREVIEW_EDGE_STYLE: Edge['style'];
4
+ export declare function isPreviewEdge(edge: {
5
+ id?: string;
6
+ source?: string;
7
+ target?: string;
8
+ }): boolean;
9
+ export declare function getOppositePosition(position: Position): Position;
2
10
  export declare function createPreviewNode(sourceNodeId: string, sourceHandleId: string, reactFlowInstance: ReactFlowInstance, position?: {
3
11
  x: number;
4
12
  y: number;
5
- }, data?: Record<string, any>, sourceHandleType?: 'source' | 'target', previewNodeSize?: {
13
+ }, data?: Record<string, unknown>, sourceHandleType?: 'source' | 'target', previewNodeSize?: {
6
14
  width: number;
7
15
  height: number;
8
- }, handlePosition?: Position, ignoredNodeTypes?: string[]): {
16
+ }, handlePosition?: Position, ignoredNodeTypes?: string[], positionMode?: PreviewNodePositionMode): {
9
17
  node: Node;
10
18
  edge: Edge;
11
19
  } | null;
@@ -1 +1 @@
1
- {"version":3,"file":"createPreviewNode.d.ts","sourceRoot":"","sources":["../../../src/canvas/utils/createPreviewNode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,IAAI,EACT,KAAK,IAAI,EACT,QAAQ,EACR,KAAK,iBAAiB,EACvB,MAAM,0CAA0C,CAAC;AAiMlD,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACnC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,gBAAgB,GAAE,QAAQ,GAAG,QAAmB,EAChD,eAAe,GAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAG/C,EACD,cAAc,GAAE,QAAyB,EACzC,gBAAgB,GAAE,MAAM,EAAO,GAC9B;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAAG,IAAI,CA2FnC;AAMD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,EACnC,iBAAiB,EAAE,iBAAiB,GACnC,IAAI,CAcN;AAKD,wBAAgB,0BAA0B,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAGrF"}
1
+ {"version":3,"file":"createPreviewNode.d.ts","sourceRoot":"","sources":["../../../src/canvas/utils/createPreviewNode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,IAAI,EACT,KAAK,IAAI,EACT,QAAQ,EACR,KAAK,iBAAiB,EACvB,MAAM,0CAA0C,CAAC;AASlD,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAExD,eAAO,MAAM,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAK5C,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAM9F;AAMD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAahE;AA2PD,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACnC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,gBAAgB,GAAE,QAAQ,GAAG,QAAmB,EAChD,eAAe,GAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAG/C,EACD,cAAc,GAAE,QAAyB,EACzC,gBAAgB,GAAE,MAAM,EAAO,EAC/B,YAAY,GAAE,uBAAgC,GAC7C;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAAG,IAAI,CAwFnC;AAMD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,EACnC,iBAAiB,EAAE,iBAAiB,GACnC,IAAI,CAcN;AAKD,wBAAgB,0BAA0B,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAKrF"}
@@ -1,6 +1,15 @@
1
1
  import { Position } from "../xyflow/react.js";
2
2
  import { DEFAULT_NODE_SIZE, GRID_SPACING, PREVIEW_EDGE_ID, PREVIEW_NODE_ID } from "../constants.js";
3
3
  import { getAbsolutePosition, getNonOverlappingPositionForDirection, resolveHandleContext } from "./NodeUtils.js";
4
+ const PREVIEW_EDGE_STYLE = {
5
+ strokeDasharray: '5,5',
6
+ opacity: 0.8,
7
+ stroke: 'var(--canvas-selection-indicator)',
8
+ strokeWidth: 2
9
+ };
10
+ function isPreviewEdge(edge) {
11
+ return edge.id === PREVIEW_EDGE_ID || edge.source === PREVIEW_NODE_ID || edge.target === PREVIEW_NODE_ID;
12
+ }
4
13
  function getOppositePosition(position) {
5
14
  switch(position){
6
15
  case Position.Left:
@@ -44,6 +53,12 @@ function calculatePositionFromDrop(dropPosition, handlePosition, previewNodeSize
44
53
  };
45
54
  }
46
55
  }
56
+ function calculateCenteredPosition(centerPosition, previewNodeSize) {
57
+ return {
58
+ x: centerPosition.x - previewNodeSize.width / 2,
59
+ y: centerPosition.y - previewNodeSize.height / 2
60
+ };
61
+ }
47
62
  function computeSpreadOffset(handle, size) {
48
63
  const index = handle?.index ?? null;
49
64
  const count = handle?.count ?? 1;
@@ -52,6 +67,25 @@ function computeSpreadOffset(handle, size) {
52
67
  if (index >= Math.ceil(count / 2)) return size;
53
68
  return 0;
54
69
  }
70
+ function getOppositeOverflowDirection(overflowDirection) {
71
+ return {
72
+ x: 'right' === overflowDirection.x ? 'left' : 'right',
73
+ y: 'down' === overflowDirection.y ? 'up' : 'down'
74
+ };
75
+ }
76
+ function getPerpendicularDistance(initialPosition, resolvedPosition, direction) {
77
+ return 'left' === direction || 'right' === direction ? Math.abs(resolvedPosition.y - initialPosition.y) : Math.abs(resolvedPosition.x - initialPosition.x);
78
+ }
79
+ function getNonOverlappingPreviewPosition({ nodes, initialPosition, previewNodeSize, direction, offset, ignoredNodeTypes, overflowDirection, handle }) {
80
+ const preferredPosition = getNonOverlappingPositionForDirection(nodes, {
81
+ ...initialPosition
82
+ }, previewNodeSize, direction, offset, ignoredNodeTypes, overflowDirection);
83
+ if ((handle?.count ?? 1) <= 1) return preferredPosition;
84
+ const alternatePosition = getNonOverlappingPositionForDirection(nodes, {
85
+ ...initialPosition
86
+ }, previewNodeSize, direction, offset, ignoredNodeTypes, getOppositeOverflowDirection(overflowDirection));
87
+ return getPerpendicularDistance(initialPosition, alternatePosition, direction) < getPerpendicularDistance(initialPosition, preferredPosition, direction) ? alternatePosition : preferredPosition;
88
+ }
55
89
  function calculateAutoPosition(sourceNode, handlePosition, previewNodeSize, existingNodes, offset = 5 * GRID_SPACING, ignoredNodeTypes = [], handle) {
56
90
  const sourceAbsolutePosition = sourceNode.parentId ? getAbsolutePosition(sourceNode, existingNodes) : sourceNode.position;
57
91
  const sourceWidth = sourceNode.measured?.width ?? 0;
@@ -104,12 +138,21 @@ function calculateAutoPosition(sourceNode, handlePosition, previewNodeSize, exis
104
138
  x: anchorX >= sourceAbsolutePosition.x + sourceWidth / 2 ? 'right' : 'left',
105
139
  y: anchorY >= sourceAbsolutePosition.y + sourceHeight / 2 ? 'down' : 'up'
106
140
  };
107
- return getNonOverlappingPositionForDirection(nodesWithAbsolutePositions, initialPosition, previewNodeSize, direction, offset, ignoredNodeTypes, overflowDirection);
141
+ return getNonOverlappingPreviewPosition({
142
+ nodes: nodesWithAbsolutePositions,
143
+ initialPosition,
144
+ previewNodeSize,
145
+ direction,
146
+ offset,
147
+ ignoredNodeTypes,
148
+ overflowDirection,
149
+ handle
150
+ });
108
151
  }
109
152
  function createPreviewNode(sourceNodeId, sourceHandleId, reactFlowInstance, position, data, sourceHandleType = 'source', previewNodeSize = {
110
153
  width: DEFAULT_NODE_SIZE,
111
154
  height: DEFAULT_NODE_SIZE
112
- }, handlePosition = Position.Right, ignoredNodeTypes = []) {
155
+ }, handlePosition = Position.Right, ignoredNodeTypes = [], positionMode = 'drop') {
113
156
  const sourceNode = reactFlowInstance.getNode(sourceNodeId);
114
157
  if (!sourceNode) {
115
158
  console.warn(`Source node ${sourceNodeId} not found`);
@@ -119,7 +162,7 @@ function createPreviewNode(sourceNodeId, sourceHandleId, reactFlowInstance, posi
119
162
  const existingNodes = reactFlowInstance.getNodes().filter((n)=>n.id !== PREVIEW_NODE_ID);
120
163
  const internalNode = void 0 === position ? reactFlowInstance.getInternalNode(sourceNodeId) : void 0;
121
164
  const handle = internalNode ? resolveHandleContext(internalNode, sourceHandleId, handlePosition) : void 0;
122
- const nodePosition = position ? calculatePositionFromDrop(position, handlePosition, previewNodeSize) : calculateAutoPosition(sourceNode, handlePosition, previewNodeSize, existingNodes, void 0, ignoredNodeTypes, handle);
165
+ const nodePosition = position ? 'center' === positionMode ? calculateCenteredPosition(position, previewNodeSize) : calculatePositionFromDrop(position, handlePosition, previewNodeSize) : calculateAutoPosition(sourceNode, handlePosition, previewNodeSize, existingNodes, void 0, ignoredNodeTypes, handle);
123
166
  const handleFacingSource = getOppositePosition(handlePosition);
124
167
  const finalData = {
125
168
  ...data ?? {}
@@ -149,12 +192,7 @@ function createPreviewNode(sourceNodeId, sourceHandleId, reactFlowInstance, posi
149
192
  id: PREVIEW_EDGE_ID,
150
193
  ...previewSourceAndTargetData,
151
194
  type: 'default',
152
- style: {
153
- strokeDasharray: '5,5',
154
- opacity: 0.8,
155
- stroke: 'var(--canvas-selection-indicator)',
156
- strokeWidth: 2
157
- }
195
+ style: PREVIEW_EDGE_STYLE
158
196
  };
159
197
  return {
160
198
  node: previewNode,
@@ -171,13 +209,13 @@ function applyPreviewToReactFlow(preview, reactFlowInstance) {
171
209
  preview.node
172
210
  ]);
173
211
  reactFlowInstance.setEdges((edges)=>[
174
- ...edges.filter((e)=>e.id !== PREVIEW_EDGE_ID),
212
+ ...edges.filter((e)=>e.source !== PREVIEW_NODE_ID && e.target !== PREVIEW_NODE_ID),
175
213
  preview.edge
176
214
  ]);
177
215
  }, 0);
178
216
  }
179
217
  function removePreviewFromReactFlow(reactFlowInstance) {
180
218
  reactFlowInstance.setNodes((nodes)=>nodes.filter((n)=>n.id !== PREVIEW_NODE_ID));
181
- reactFlowInstance.setEdges((edges)=>edges.filter((e)=>e.id !== PREVIEW_EDGE_ID));
219
+ reactFlowInstance.setEdges((edges)=>edges.filter((e)=>e.source !== PREVIEW_NODE_ID && e.target !== PREVIEW_NODE_ID));
182
220
  }
183
- export { applyPreviewToReactFlow, createPreviewNode, removePreviewFromReactFlow };
221
+ export { PREVIEW_EDGE_STYLE, applyPreviewToReactFlow, createPreviewNode, getOppositePosition, isPreviewEdge, removePreviewFromReactFlow };