@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
@@ -26,13 +26,17 @@ __webpack_require__.r(__webpack_exports__);
26
26
  __webpack_require__.d(__webpack_exports__, {
27
27
  getAbsolutePosition: ()=>getAbsolutePosition,
28
28
  getNonOverlappingPositionForDirection: ()=>getNonOverlappingPositionForDirection,
29
- resolveCollisions: ()=>resolveCollisions,
30
- resolveHandleContext: ()=>resolveHandleContext,
29
+ snapUpToGrid: ()=>snapUpToGrid,
30
+ clamp: ()=>clamp,
31
31
  getHandleIndex: ()=>getHandleIndex,
32
- snapToGrid: ()=>snapToGrid
32
+ snapToGrid: ()=>snapToGrid,
33
+ resolveHandleContext: ()=>resolveHandleContext,
34
+ resolveCollisions: ()=>resolveCollisions,
35
+ snapDownToGrid: ()=>snapDownToGrid
33
36
  });
34
37
  const react_cjs_namespaceObject = require("../xyflow/react.cjs");
35
38
  const external_constants_cjs_namespaceObject = require("../constants.cjs");
39
+ const clamp = (value, min, max)=>Math.min(Math.max(value, min), max);
36
40
  const getAbsolutePosition = (node, nodes)=>{
37
41
  let x = node.position.x;
38
42
  let y = node.position.y;
@@ -61,25 +65,31 @@ function getNonOverlappingPositionForDirection(nodes, newNodePosition, newNodeSt
61
65
  return newNodePosition;
62
66
  }
63
67
  const snapToGrid = (value)=>Math.round(value / external_constants_cjs_namespaceObject.GRID_SPACING) * external_constants_cjs_namespaceObject.GRID_SPACING;
64
- function getBoxesFromNodes(nodes, margin = 0) {
68
+ const snapUpToGrid = (value)=>Math.ceil(value / external_constants_cjs_namespaceObject.GRID_SPACING) * external_constants_cjs_namespaceObject.GRID_SPACING;
69
+ const snapDownToGrid = (value)=>Math.floor(value / external_constants_cjs_namespaceObject.GRID_SPACING) * external_constants_cjs_namespaceObject.GRID_SPACING;
70
+ function getBoxesFromNodes(nodes, margin = 0, getNodeSize) {
65
71
  const boxes = new Array(nodes.length);
66
72
  for(let i = 0; i < nodes.length; i++){
67
73
  const node = nodes[i];
74
+ const nodeSize = getNodeSize?.(node) ?? {
75
+ width: node.width ?? node.measured?.width ?? external_constants_cjs_namespaceObject.DEFAULT_NODE_SIZE,
76
+ height: node.height ?? node.measured?.height ?? external_constants_cjs_namespaceObject.DEFAULT_NODE_SIZE
77
+ };
68
78
  boxes[i] = {
69
79
  x: node.position.x - margin,
70
80
  y: node.position.y - margin,
71
- width: (node.width ?? node.measured?.width ?? external_constants_cjs_namespaceObject.DEFAULT_NODE_SIZE) + 2 * margin,
72
- height: (node.height ?? node.measured?.height ?? external_constants_cjs_namespaceObject.DEFAULT_NODE_SIZE) + 2 * margin,
81
+ width: nodeSize.width + 2 * margin,
82
+ height: nodeSize.height + 2 * margin,
73
83
  node,
74
84
  moved: false
75
85
  };
76
86
  }
77
87
  return boxes;
78
88
  }
79
- const resolveCollisions = (nodes, { maxIterations = 50, overlapThreshold = 0, margin = 2 * external_constants_cjs_namespaceObject.GRID_SPACING, ignoredNodeTypes } = {})=>{
89
+ const resolveCollisions = (nodes, { maxIterations = 50, overlapThreshold = 0, margin = 2 * external_constants_cjs_namespaceObject.GRID_SPACING, ignoredNodeTypes, getNodeSize } = {})=>{
80
90
  const ignoredSet = new Set(ignoredNodeTypes);
81
91
  const collisionNodes = ignoredSet.size > 0 ? nodes.filter((n)=>!ignoredSet.has(n.type ?? '')) : nodes;
82
- const boxes = getBoxesFromNodes(collisionNodes, margin);
92
+ const boxes = getBoxesFromNodes(collisionNodes, margin, getNodeSize);
83
93
  for(let iter = 0; iter < maxIterations; iter++){
84
94
  let moved = false;
85
95
  for(let i = 0; i < boxes.length; i++)for(let j = i + 1; j < boxes.length; j++){
@@ -141,19 +151,25 @@ function getHandleIndex(handleId, position, allHandles) {
141
151
  const index = peers.findIndex((h)=>h.id === handleId);
142
152
  return -1 === index ? null : index;
143
153
  }
154
+ exports.clamp = __webpack_exports__.clamp;
144
155
  exports.getAbsolutePosition = __webpack_exports__.getAbsolutePosition;
145
156
  exports.getHandleIndex = __webpack_exports__.getHandleIndex;
146
157
  exports.getNonOverlappingPositionForDirection = __webpack_exports__.getNonOverlappingPositionForDirection;
147
158
  exports.resolveCollisions = __webpack_exports__.resolveCollisions;
148
159
  exports.resolveHandleContext = __webpack_exports__.resolveHandleContext;
160
+ exports.snapDownToGrid = __webpack_exports__.snapDownToGrid;
149
161
  exports.snapToGrid = __webpack_exports__.snapToGrid;
162
+ exports.snapUpToGrid = __webpack_exports__.snapUpToGrid;
150
163
  for(var __rspack_i in __webpack_exports__)if (-1 === [
164
+ "clamp",
151
165
  "getAbsolutePosition",
152
166
  "getHandleIndex",
153
167
  "getNonOverlappingPositionForDirection",
154
168
  "resolveCollisions",
155
169
  "resolveHandleContext",
156
- "snapToGrid"
170
+ "snapDownToGrid",
171
+ "snapToGrid",
172
+ "snapUpToGrid"
157
173
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
158
174
  Object.defineProperty(exports, '__esModule', {
159
175
  value: true
@@ -1,4 +1,5 @@
1
1
  import { type Handle, type InternalNode, type Node, Position, type XYPosition } from '../xyflow/react.ts';
2
+ export declare const clamp: (value: number, min: number, max: number) => number;
2
3
  export declare const getAbsolutePosition: (node: Node, nodes: Node[]) => {
3
4
  x: number;
4
5
  y: number;
@@ -11,11 +12,17 @@ export declare function getNonOverlappingPositionForDirection(nodes: Node[], new
11
12
  y: 'up' | 'down';
12
13
  }): XYPosition;
13
14
  export declare const snapToGrid: (value: number) => number;
15
+ export declare const snapUpToGrid: (value: number) => number;
16
+ export declare const snapDownToGrid: (value: number) => number;
14
17
  export type CollisionAlgorithmOptions = {
15
18
  maxIterations?: number;
16
19
  overlapThreshold?: number;
17
20
  margin?: number;
18
21
  ignoredNodeTypes?: string[];
22
+ getNodeSize?: (node: Node) => {
23
+ width: number;
24
+ height: number;
25
+ };
19
26
  };
20
27
  export type CollisionAlgorithm = (nodes: Node[], options?: CollisionAlgorithmOptions) => Node[];
21
28
  export declare const resolveCollisions: CollisionAlgorithm;
@@ -1 +1 @@
1
- {"version":3,"file":"NodeUtils.d.ts","sourceRoot":"","sources":["../../../src/canvas/utils/NodeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,IAAI,EACT,QAAQ,EACR,KAAK,UAAU,EAChB,MAAM,0CAA0C,CAAC;AAUlD,eAAO,MAAM,mBAAmB,GAAI,MAAM,IAAI,EAAE,OAAO,IAAI,EAAE,KAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAWrF,CAAC;AAeF,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,IAAI,EAAE,EACb,eAAe,EAAE,UAAU,EAC3B,YAAY,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAC/C,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,EAC9C,MAAM,SAAmB,EACzB,gBAAgB,GAAE,MAAM,EAAO,EAC/B,iBAAiB,GAAE;IAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;CAA8B,GACvF,UAAU,CAgCZ;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,MAE1C,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,yBAAyB,KAAK,IAAI,EAAE,CAAC;AA6BhG,eAAO,MAAM,iBAAiB,EAAE,kBAwE/B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAMF,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,QAAQ,GACvB,aAAa,GAAG,SAAS,CAgB3B;AAWD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,EAAE,GACnB,MAAM,GAAG,IAAI,CAQf"}
1
+ {"version":3,"file":"NodeUtils.d.ts","sourceRoot":"","sources":["../../../src/canvas/utils/NodeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,IAAI,EACT,QAAQ,EACR,KAAK,UAAU,EAChB,MAAM,0CAA0C,CAAC;AAMlD,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,KAAG,MAE/D,CAAC;AASF,eAAO,MAAM,mBAAmB,GAAI,MAAM,IAAI,EAAE,OAAO,IAAI,EAAE,KAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAWrF,CAAC;AAeF,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,IAAI,EAAE,EACb,eAAe,EAAE,UAAU,EAC3B,YAAY,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAC/C,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,EAC9C,MAAM,SAAmB,EACzB,gBAAgB,GAAE,MAAM,EAAO,EAC/B,iBAAiB,GAAE;IAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;CAA8B,GACvF,UAAU,CAgCZ;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,MAE1C,CAAC;AAMF,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,MAE5C,CAAC;AAMF,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,KAAG,MAE9C,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,yBAAyB,KAAK,IAAI,EAAE,CAAC;AAqChG,eAAO,MAAM,iBAAiB,EAAE,kBA8E/B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAMF,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,QAAQ,GACvB,aAAa,GAAG,SAAS,CAgB3B;AAWD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,EAAE,GACnB,MAAM,GAAG,IAAI,CAQf"}
@@ -1,5 +1,6 @@
1
1
  import { Position } from "../xyflow/react.js";
2
2
  import { DEFAULT_NODE_SIZE, GRID_SPACING, PREVIEW_NODE_ID } from "../constants.js";
3
+ const clamp = (value, min, max)=>Math.min(Math.max(value, min), max);
3
4
  const getAbsolutePosition = (node, nodes)=>{
4
5
  let x = node.position.x;
5
6
  let y = node.position.y;
@@ -28,25 +29,31 @@ function getNonOverlappingPositionForDirection(nodes, newNodePosition, newNodeSt
28
29
  return newNodePosition;
29
30
  }
30
31
  const snapToGrid = (value)=>Math.round(value / GRID_SPACING) * GRID_SPACING;
31
- function getBoxesFromNodes(nodes, margin = 0) {
32
+ const snapUpToGrid = (value)=>Math.ceil(value / GRID_SPACING) * GRID_SPACING;
33
+ const snapDownToGrid = (value)=>Math.floor(value / GRID_SPACING) * GRID_SPACING;
34
+ function getBoxesFromNodes(nodes, margin = 0, getNodeSize) {
32
35
  const boxes = new Array(nodes.length);
33
36
  for(let i = 0; i < nodes.length; i++){
34
37
  const node = nodes[i];
38
+ const nodeSize = getNodeSize?.(node) ?? {
39
+ width: node.width ?? node.measured?.width ?? DEFAULT_NODE_SIZE,
40
+ height: node.height ?? node.measured?.height ?? DEFAULT_NODE_SIZE
41
+ };
35
42
  boxes[i] = {
36
43
  x: node.position.x - margin,
37
44
  y: node.position.y - margin,
38
- width: (node.width ?? node.measured?.width ?? DEFAULT_NODE_SIZE) + 2 * margin,
39
- height: (node.height ?? node.measured?.height ?? DEFAULT_NODE_SIZE) + 2 * margin,
45
+ width: nodeSize.width + 2 * margin,
46
+ height: nodeSize.height + 2 * margin,
40
47
  node,
41
48
  moved: false
42
49
  };
43
50
  }
44
51
  return boxes;
45
52
  }
46
- const resolveCollisions = (nodes, { maxIterations = 50, overlapThreshold = 0, margin = 2 * GRID_SPACING, ignoredNodeTypes } = {})=>{
53
+ const resolveCollisions = (nodes, { maxIterations = 50, overlapThreshold = 0, margin = 2 * GRID_SPACING, ignoredNodeTypes, getNodeSize } = {})=>{
47
54
  const ignoredSet = new Set(ignoredNodeTypes);
48
55
  const collisionNodes = ignoredSet.size > 0 ? nodes.filter((n)=>!ignoredSet.has(n.type ?? '')) : nodes;
49
- const boxes = getBoxesFromNodes(collisionNodes, margin);
56
+ const boxes = getBoxesFromNodes(collisionNodes, margin, getNodeSize);
50
57
  for(let iter = 0; iter < maxIterations; iter++){
51
58
  let moved = false;
52
59
  for(let i = 0; i < boxes.length; i++)for(let j = i + 1; j < boxes.length; j++){
@@ -108,4 +115,4 @@ function getHandleIndex(handleId, position, allHandles) {
108
115
  const index = peers.findIndex((h)=>h.id === handleId);
109
116
  return -1 === index ? null : index;
110
117
  }
111
- export { getAbsolutePosition, getHandleIndex, getNonOverlappingPositionForDirection, resolveCollisions, resolveHandleContext, snapToGrid };
118
+ export { clamp, getAbsolutePosition, getHandleIndex, getNonOverlappingPositionForDirection, resolveCollisions, resolveHandleContext, snapDownToGrid, snapToGrid, snapUpToGrid };
@@ -24,13 +24,14 @@ var __webpack_require__ = {};
24
24
  var __webpack_exports__ = {};
25
25
  __webpack_require__.r(__webpack_exports__);
26
26
  __webpack_require__.d(__webpack_exports__, {
27
- COLLAPSED_NODE_SIZE: ()=>COLLAPSED_NODE_SIZE,
27
+ getExpandedShape: ()=>getExpandedShape,
28
+ getExpandedSize: ()=>getExpandedSize,
28
29
  EXPANDED_RECTANGLE_WIDTH: ()=>EXPANDED_RECTANGLE_WIDTH,
29
30
  getCollapsedShape: ()=>getCollapsedShape,
30
- getCollapsedSize: ()=>getCollapsedSize,
31
- getExpandedShape: ()=>getExpandedShape,
32
- getExpandedSize: ()=>getExpandedSize
31
+ COLLAPSED_NODE_SIZE: ()=>COLLAPSED_NODE_SIZE,
32
+ getCollapsedSize: ()=>getCollapsedSize
33
33
  });
34
+ const LoopNode_constants_cjs_namespaceObject = require("../components/LoopNode/LoopNode.constants.cjs");
34
35
  const COLLAPSED_NODE_SIZE = 96;
35
36
  const EXPANDED_RECTANGLE_WIDTH = 288;
36
37
  const getCollapsedShape = (originalShape)=>'rectangle' === originalShape ? 'square' : originalShape;
@@ -39,10 +40,16 @@ const getCollapsedSize = ()=>({
39
40
  width: COLLAPSED_NODE_SIZE,
40
41
  height: COLLAPSED_NODE_SIZE
41
42
  });
42
- const getExpandedSize = (shape)=>({
43
+ const getExpandedSize = (shape, manifest)=>{
44
+ if (manifest?.handleConfiguration.some((group)=>'inner' === group.boundary)) return {
45
+ width: LoopNode_constants_cjs_namespaceObject.DEFAULT_LOOP_WIDTH,
46
+ height: LoopNode_constants_cjs_namespaceObject.DEFAULT_LOOP_HEIGHT
47
+ };
48
+ return {
43
49
  width: 'rectangle' === shape ? EXPANDED_RECTANGLE_WIDTH : COLLAPSED_NODE_SIZE,
44
50
  height: COLLAPSED_NODE_SIZE
45
- });
51
+ };
52
+ };
46
53
  exports.COLLAPSED_NODE_SIZE = __webpack_exports__.COLLAPSED_NODE_SIZE;
47
54
  exports.EXPANDED_RECTANGLE_WIDTH = __webpack_exports__.EXPANDED_RECTANGLE_WIDTH;
48
55
  exports.getCollapsedShape = __webpack_exports__.getCollapsedShape;
@@ -1,4 +1,4 @@
1
- import type { NodeShape } from '../schema/node-definition';
1
+ import type { NodeManifest, NodeShape } from '../schema/node-definition';
2
2
  export declare const COLLAPSED_NODE_SIZE = 96;
3
3
  export declare const EXPANDED_RECTANGLE_WIDTH = 288;
4
4
  export declare const getCollapsedShape: (originalShape?: NodeShape) => NodeShape | undefined;
@@ -7,7 +7,7 @@ export declare const getCollapsedSize: () => {
7
7
  width: number;
8
8
  height: number;
9
9
  };
10
- export declare const getExpandedSize: (shape?: NodeShape) => {
10
+ export declare const getExpandedSize: (shape?: NodeShape, manifest?: Pick<NodeManifest, "handleConfiguration">) => {
11
11
  width: number;
12
12
  height: number;
13
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"collapse.d.ts","sourceRoot":"","sources":["../../../src/canvas/utils/collapse.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAK3D,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAKtC,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAM5C,eAAO,MAAM,iBAAiB,GAAI,gBAAgB,SAAS,KAAG,SAAS,GAAG,SAEzE,CAAC;AAOF,eAAO,MAAM,gBAAgB,GAAI,iBAAiB,SAAS,KAAG,SAAS,GAAG,SAEzE,CAAC;AAMF,eAAO,MAAM,gBAAgB,QAAO;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAKlE,CAAC;AAOF,eAAO,MAAM,eAAe,GAAI,QAAQ,SAAS,KAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAKlF,CAAC"}
1
+ {"version":3,"file":"collapse.d.ts","sourceRoot":"","sources":["../../../src/canvas/utils/collapse.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAKzE,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAKtC,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAM5C,eAAO,MAAM,iBAAiB,GAAI,gBAAgB,SAAS,KAAG,SAAS,GAAG,SAEzE,CAAC;AAOF,eAAO,MAAM,gBAAgB,GAAI,iBAAiB,SAAS,KAAG,SAAS,GAAG,SAEzE,CAAC;AAMF,eAAO,MAAM,gBAAgB,QAAO;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAKlE,CAAC;AAKF,eAAO,MAAM,eAAe,GAC1B,QAAQ,SAAS,EACjB,WAAW,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,KACnD;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAYjC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { DEFAULT_LOOP_HEIGHT, DEFAULT_LOOP_WIDTH } from "../components/LoopNode/LoopNode.constants.js";
1
2
  const COLLAPSED_NODE_SIZE = 96;
2
3
  const EXPANDED_RECTANGLE_WIDTH = 288;
3
4
  const getCollapsedShape = (originalShape)=>'rectangle' === originalShape ? 'square' : originalShape;
@@ -6,8 +7,14 @@ const getCollapsedSize = ()=>({
6
7
  width: COLLAPSED_NODE_SIZE,
7
8
  height: COLLAPSED_NODE_SIZE
8
9
  });
9
- const getExpandedSize = (shape)=>({
10
+ const getExpandedSize = (shape, manifest)=>{
11
+ if (manifest?.handleConfiguration.some((group)=>'inner' === group.boundary)) return {
12
+ width: DEFAULT_LOOP_WIDTH,
13
+ height: DEFAULT_LOOP_HEIGHT
14
+ };
15
+ return {
10
16
  width: 'rectangle' === shape ? EXPANDED_RECTANGLE_WIDTH : COLLAPSED_NODE_SIZE,
11
17
  height: COLLAPSED_NODE_SIZE
12
- });
18
+ };
19
+ };
13
20
  export { COLLAPSED_NODE_SIZE, EXPANDED_RECTANGLE_WIDTH, getCollapsedShape, getCollapsedSize, getExpandedShape, getExpandedSize };
@@ -0,0 +1,169 @@
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
+ ensureContainersFitChildren: ()=>ensureContainersFitChildren,
28
+ getNodeDimensions: ()=>getNodeDimensions
29
+ });
30
+ const external_constants_cjs_namespaceObject = require("../constants.cjs");
31
+ const external_NodeUtils_cjs_namespaceObject = require("./NodeUtils.cjs");
32
+ function readNumericDimension(...values) {
33
+ for (const value of values){
34
+ if ('number' == typeof value && Number.isFinite(value)) return value;
35
+ if ('string' == typeof value) {
36
+ const parsedValue = Number.parseFloat(value);
37
+ if (Number.isFinite(parsedValue)) return parsedValue;
38
+ }
39
+ }
40
+ }
41
+ function getNodeDimensions(node, fallback = {
42
+ width: external_constants_cjs_namespaceObject.DEFAULT_NODE_SIZE,
43
+ height: external_constants_cjs_namespaceObject.DEFAULT_NODE_SIZE
44
+ }) {
45
+ return {
46
+ width: readNumericDimension(node.width, node.measured?.width, node.style?.width) ?? fallback.width,
47
+ height: readNumericDimension(node.height, node.measured?.height, node.style?.height) ?? fallback.height
48
+ };
49
+ }
50
+ function updateNodeInArray(nodes, updatedNode) {
51
+ return nodes.map((node)=>node.id === updatedNode.id ? updatedNode : node);
52
+ }
53
+ function setNodeDimensions(node, dimensions) {
54
+ const styleDimensions = {
55
+ ...void 0 !== dimensions.width ? {
56
+ width: dimensions.width
57
+ } : {},
58
+ ...void 0 !== dimensions.height ? {
59
+ height: dimensions.height
60
+ } : {}
61
+ };
62
+ return {
63
+ ...node,
64
+ ...void 0 !== dimensions.width ? {
65
+ width: dimensions.width
66
+ } : {},
67
+ ...void 0 !== dimensions.height ? {
68
+ height: dimensions.height
69
+ } : {},
70
+ style: {
71
+ ...node.style,
72
+ ...styleDimensions
73
+ }
74
+ };
75
+ }
76
+ function shouldIncludeChild(node, ignoredNodeTypes) {
77
+ if (node.id === external_constants_cjs_namespaceObject.PREVIEW_NODE_ID) return false;
78
+ if (node.hidden) return false;
79
+ if (ignoredNodeTypes.has(node.type ?? '')) return false;
80
+ return true;
81
+ }
82
+ function collectContainerIds(nodes, containerIds, nodesById, includeAncestors) {
83
+ const requestedIds = containerIds ? [
84
+ ...containerIds
85
+ ].filter((containerId)=>!!containerId) : nodes.flatMap((node)=>node.parentId ? [
86
+ node.parentId
87
+ ] : []);
88
+ const collectedIds = new Set();
89
+ for (const requestedId of requestedIds){
90
+ let currentId = requestedId;
91
+ while(currentId && nodesById.has(currentId)){
92
+ collectedIds.add(currentId);
93
+ if (!includeAncestors) break;
94
+ currentId = nodesById.get(currentId)?.parentId;
95
+ }
96
+ }
97
+ return [
98
+ ...collectedIds
99
+ ].sort((leftId, rightId)=>getNodeDepth(nodesById.get(rightId), nodesById) - getNodeDepth(nodesById.get(leftId), nodesById));
100
+ }
101
+ function getNodeDepth(node, nodesById) {
102
+ let depth = 0;
103
+ let currentNode = node;
104
+ const visitedIds = new Set();
105
+ while(currentNode?.parentId && !visitedIds.has(currentNode.id)){
106
+ visitedIds.add(currentNode.id);
107
+ const parentNode = nodesById.get(currentNode.parentId);
108
+ if (!parentNode) break;
109
+ depth += 1;
110
+ currentNode = parentNode;
111
+ }
112
+ return depth;
113
+ }
114
+ function ensureContainersFitChildren(nodes, { containerIds, getContainerFitGeometry, getNodeDimensions: resolveNodeDimensions = getNodeDimensions, ignoredNodeTypes = [], includeAncestors = false } = {}) {
115
+ if (0 === nodes.length) return nodes;
116
+ let resolvedNodes = nodes;
117
+ const nodesById = new Map(resolvedNodes.map((node)=>[
118
+ node.id,
119
+ node
120
+ ]));
121
+ const ignoredNodeTypesSet = new Set(ignoredNodeTypes);
122
+ const containerIdsToFit = collectContainerIds(resolvedNodes, containerIds, nodesById, includeAncestors);
123
+ if (0 === containerIdsToFit.length) return nodes;
124
+ let changed = false;
125
+ for (const containerId of containerIdsToFit){
126
+ const containerNode = nodesById.get(containerId);
127
+ if (!containerNode) continue;
128
+ const geometry = getContainerFitGeometry?.(containerNode);
129
+ if (!geometry) continue;
130
+ const children = resolvedNodes.filter((node)=>node.parentId === containerId && shouldIncludeChild(node, ignoredNodeTypesSet));
131
+ if (0 === children.length) continue;
132
+ const requiredBounds = children.reduce((bounds, child)=>{
133
+ const childDimensions = resolveNodeDimensions(child);
134
+ return {
135
+ right: Math.max(bounds.right, child.position.x + childDimensions.width),
136
+ bottom: Math.max(bounds.bottom, child.position.y + childDimensions.height)
137
+ };
138
+ }, {
139
+ right: 0,
140
+ bottom: 0
141
+ });
142
+ const resolvedContainerDimensions = resolveNodeDimensions(containerNode);
143
+ const currentDimensions = {
144
+ width: Math.max(geometry.minWidth, resolvedContainerDimensions.width),
145
+ height: Math.max(geometry.minHeight, resolvedContainerDimensions.height)
146
+ };
147
+ const requiredWidth = (0, external_NodeUtils_cjs_namespaceObject.snapUpToGrid)(Math.max(geometry.minWidth, requiredBounds.right + geometry.padding.right));
148
+ const requiredHeight = (0, external_NodeUtils_cjs_namespaceObject.snapUpToGrid)(Math.max(geometry.minHeight, requiredBounds.bottom + geometry.padding.bottom));
149
+ const nextDimensions = {};
150
+ if (requiredWidth > currentDimensions.width) nextDimensions.width = requiredWidth;
151
+ if (requiredHeight > currentDimensions.height) nextDimensions.height = requiredHeight;
152
+ if (void 0 !== nextDimensions.width || void 0 !== nextDimensions.height) {
153
+ const updatedContainer = setNodeDimensions(containerNode, nextDimensions);
154
+ nodesById.set(containerId, updatedContainer);
155
+ resolvedNodes = updateNodeInArray(resolvedNodes, updatedContainer);
156
+ changed = true;
157
+ }
158
+ }
159
+ return changed ? resolvedNodes : nodes;
160
+ }
161
+ exports.ensureContainersFitChildren = __webpack_exports__.ensureContainersFitChildren;
162
+ exports.getNodeDimensions = __webpack_exports__.getNodeDimensions;
163
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
164
+ "ensureContainersFitChildren",
165
+ "getNodeDimensions"
166
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
167
+ Object.defineProperty(exports, '__esModule', {
168
+ value: true
169
+ });
@@ -0,0 +1,23 @@
1
+ import type { Node } from '../xyflow/react.ts';
2
+ export interface NodeDimensions {
3
+ width: number;
4
+ height: number;
5
+ }
6
+ export interface ContainerFitGeometry {
7
+ minWidth: number;
8
+ minHeight: number;
9
+ padding: {
10
+ right: number;
11
+ bottom: number;
12
+ };
13
+ }
14
+ export interface EnsureContainersFitChildrenOptions {
15
+ containerIds?: Iterable<string | undefined | null>;
16
+ getContainerFitGeometry?: (containerNode: Node) => ContainerFitGeometry | null | undefined;
17
+ getNodeDimensions?: (node: Node) => NodeDimensions;
18
+ ignoredNodeTypes?: string[];
19
+ includeAncestors?: boolean;
20
+ }
21
+ export declare function getNodeDimensions(node: Pick<Node, 'width' | 'height' | 'measured' | 'style'>, fallback?: NodeDimensions): NodeDimensions;
22
+ export declare function ensureContainersFitChildren(nodes: Node[], { containerIds, getContainerFitGeometry, getNodeDimensions: resolveNodeDimensions, ignoredNodeTypes, includeAncestors, }?: EnsureContainersFitChildrenOptions): Node[];
23
+ //# sourceMappingURL=container-sizing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-sizing.d.ts","sourceRoot":"","sources":["../../../src/canvas/utils/container-sizing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAIrE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,kCAAkC;IACjD,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;IACnD,uBAAuB,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,KAAK,oBAAoB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3F,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,cAAc,CAAC;IACnD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAkBD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC,EAC3D,QAAQ,GAAE,cAAwE,GACjF,cAAc,CAQhB;AAkFD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,IAAI,EAAE,EACb,EACE,YAAY,EACZ,uBAAuB,EACvB,iBAAiB,EAAE,qBAAyC,EAC5D,gBAAqB,EACrB,gBAAwB,GACzB,GAAE,kCAAuC,GACzC,IAAI,EAAE,CAsER"}
@@ -0,0 +1,132 @@
1
+ import { DEFAULT_NODE_SIZE, PREVIEW_NODE_ID } from "../constants.js";
2
+ import { snapUpToGrid } from "./NodeUtils.js";
3
+ function readNumericDimension(...values) {
4
+ for (const value of values){
5
+ if ('number' == typeof value && Number.isFinite(value)) return value;
6
+ if ('string' == typeof value) {
7
+ const parsedValue = Number.parseFloat(value);
8
+ if (Number.isFinite(parsedValue)) return parsedValue;
9
+ }
10
+ }
11
+ }
12
+ function getNodeDimensions(node, fallback = {
13
+ width: DEFAULT_NODE_SIZE,
14
+ height: DEFAULT_NODE_SIZE
15
+ }) {
16
+ return {
17
+ width: readNumericDimension(node.width, node.measured?.width, node.style?.width) ?? fallback.width,
18
+ height: readNumericDimension(node.height, node.measured?.height, node.style?.height) ?? fallback.height
19
+ };
20
+ }
21
+ function updateNodeInArray(nodes, updatedNode) {
22
+ return nodes.map((node)=>node.id === updatedNode.id ? updatedNode : node);
23
+ }
24
+ function setNodeDimensions(node, dimensions) {
25
+ const styleDimensions = {
26
+ ...void 0 !== dimensions.width ? {
27
+ width: dimensions.width
28
+ } : {},
29
+ ...void 0 !== dimensions.height ? {
30
+ height: dimensions.height
31
+ } : {}
32
+ };
33
+ return {
34
+ ...node,
35
+ ...void 0 !== dimensions.width ? {
36
+ width: dimensions.width
37
+ } : {},
38
+ ...void 0 !== dimensions.height ? {
39
+ height: dimensions.height
40
+ } : {},
41
+ style: {
42
+ ...node.style,
43
+ ...styleDimensions
44
+ }
45
+ };
46
+ }
47
+ function shouldIncludeChild(node, ignoredNodeTypes) {
48
+ if (node.id === PREVIEW_NODE_ID) return false;
49
+ if (node.hidden) return false;
50
+ if (ignoredNodeTypes.has(node.type ?? '')) return false;
51
+ return true;
52
+ }
53
+ function collectContainerIds(nodes, containerIds, nodesById, includeAncestors) {
54
+ const requestedIds = containerIds ? [
55
+ ...containerIds
56
+ ].filter((containerId)=>!!containerId) : nodes.flatMap((node)=>node.parentId ? [
57
+ node.parentId
58
+ ] : []);
59
+ const collectedIds = new Set();
60
+ for (const requestedId of requestedIds){
61
+ let currentId = requestedId;
62
+ while(currentId && nodesById.has(currentId)){
63
+ collectedIds.add(currentId);
64
+ if (!includeAncestors) break;
65
+ currentId = nodesById.get(currentId)?.parentId;
66
+ }
67
+ }
68
+ return [
69
+ ...collectedIds
70
+ ].sort((leftId, rightId)=>getNodeDepth(nodesById.get(rightId), nodesById) - getNodeDepth(nodesById.get(leftId), nodesById));
71
+ }
72
+ function getNodeDepth(node, nodesById) {
73
+ let depth = 0;
74
+ let currentNode = node;
75
+ const visitedIds = new Set();
76
+ while(currentNode?.parentId && !visitedIds.has(currentNode.id)){
77
+ visitedIds.add(currentNode.id);
78
+ const parentNode = nodesById.get(currentNode.parentId);
79
+ if (!parentNode) break;
80
+ depth += 1;
81
+ currentNode = parentNode;
82
+ }
83
+ return depth;
84
+ }
85
+ function ensureContainersFitChildren(nodes, { containerIds, getContainerFitGeometry, getNodeDimensions: resolveNodeDimensions = getNodeDimensions, ignoredNodeTypes = [], includeAncestors = false } = {}) {
86
+ if (0 === nodes.length) return nodes;
87
+ let resolvedNodes = nodes;
88
+ const nodesById = new Map(resolvedNodes.map((node)=>[
89
+ node.id,
90
+ node
91
+ ]));
92
+ const ignoredNodeTypesSet = new Set(ignoredNodeTypes);
93
+ const containerIdsToFit = collectContainerIds(resolvedNodes, containerIds, nodesById, includeAncestors);
94
+ if (0 === containerIdsToFit.length) return nodes;
95
+ let changed = false;
96
+ for (const containerId of containerIdsToFit){
97
+ const containerNode = nodesById.get(containerId);
98
+ if (!containerNode) continue;
99
+ const geometry = getContainerFitGeometry?.(containerNode);
100
+ if (!geometry) continue;
101
+ const children = resolvedNodes.filter((node)=>node.parentId === containerId && shouldIncludeChild(node, ignoredNodeTypesSet));
102
+ if (0 === children.length) continue;
103
+ const requiredBounds = children.reduce((bounds, child)=>{
104
+ const childDimensions = resolveNodeDimensions(child);
105
+ return {
106
+ right: Math.max(bounds.right, child.position.x + childDimensions.width),
107
+ bottom: Math.max(bounds.bottom, child.position.y + childDimensions.height)
108
+ };
109
+ }, {
110
+ right: 0,
111
+ bottom: 0
112
+ });
113
+ const resolvedContainerDimensions = resolveNodeDimensions(containerNode);
114
+ const currentDimensions = {
115
+ width: Math.max(geometry.minWidth, resolvedContainerDimensions.width),
116
+ height: Math.max(geometry.minHeight, resolvedContainerDimensions.height)
117
+ };
118
+ const requiredWidth = snapUpToGrid(Math.max(geometry.minWidth, requiredBounds.right + geometry.padding.right));
119
+ const requiredHeight = snapUpToGrid(Math.max(geometry.minHeight, requiredBounds.bottom + geometry.padding.bottom));
120
+ const nextDimensions = {};
121
+ if (requiredWidth > currentDimensions.width) nextDimensions.width = requiredWidth;
122
+ if (requiredHeight > currentDimensions.height) nextDimensions.height = requiredHeight;
123
+ if (void 0 !== nextDimensions.width || void 0 !== nextDimensions.height) {
124
+ const updatedContainer = setNodeDimensions(containerNode, nextDimensions);
125
+ nodesById.set(containerId, updatedContainer);
126
+ resolvedNodes = updateNodeInArray(resolvedNodes, updatedContainer);
127
+ changed = true;
128
+ }
129
+ }
130
+ return changed ? resolvedNodes : nodes;
131
+ }
132
+ export { ensureContainersFitChildren, getNodeDimensions };