@uipath/apollo-react 4.18.1 → 4.18.3

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.
@@ -122,16 +122,18 @@ function shiftForEdgeInsertion({ nodes, edges, previewNode, insertedNode, getNod
122
122
  const requiredInsertedLeft = sourceNode.position.x + sourceSize.width + TOP_LEVEL_INSERTION_GAP_PX;
123
123
  if (insertedX < requiredInsertedLeft) insertedX = (0, NodeUtils_cjs_namespaceObject.snapUpToGrid)(requiredInsertedLeft);
124
124
  }
125
+ const isBackEdge = void 0 !== sourceNode && sourceNode.parentId === insertedNode.parentId && sourceNode.position.x >= targetNode.position.x;
125
126
  const requiredTargetLeft = insertedX + insertedSize.width + TOP_LEVEL_INSERTION_GAP_PX;
126
- const downstreamShift = targetNode.position.x < requiredTargetLeft ? (0, NodeUtils_cjs_namespaceObject.snapUpToGrid)(requiredTargetLeft - targetNode.position.x) : 0;
127
+ const downstreamShift = !isBackEdge && targetNode.position.x < requiredTargetLeft ? (0, NodeUtils_cjs_namespaceObject.snapUpToGrid)(requiredTargetLeft - targetNode.position.x) : 0;
127
128
  const chainIds = downstreamShift > 0 ? new Set((0, container_cjs_namespaceObject.collectLinearDownstreamSiblings)({
128
129
  startNodeId: targetNode.id,
129
130
  parentId: insertedNode.parentId,
130
131
  nodes,
131
132
  edges
132
133
  })) : new Set();
134
+ chainIds.delete(originalEdge.source);
133
135
  const insertedXChanged = insertedX !== insertedNode.position.x;
134
- if (!insertedXChanged && 0 === downstreamShift) return null;
136
+ if (!insertedXChanged && 0 === chainIds.size) return null;
135
137
  const updatedInsertedNode = insertedXChanged ? {
136
138
  ...insertedNode,
137
139
  position: {
@@ -176,7 +178,8 @@ function placeAddedNode({ nodes, edges, previewNode, insertedNode, registry, ign
176
178
  edges,
177
179
  getNodeDimensions: getDimensions,
178
180
  safeArea: (0, container_cjs_namespaceObject.getContainerSafeArea)(containerNode),
179
- getContainerFitGeometry: (node)=>(0, container_cjs_namespaceObject.isContainerNodeManifest)(getManifestForNode(registry, node)) ? (0, container_cjs_namespaceObject.getContainerFitGeometry)() : null
181
+ getContainerFitGeometry: (node)=>(0, container_cjs_namespaceObject.isContainerNodeManifest)(getManifestForNode(registry, node)) ? (0, container_cjs_namespaceObject.getContainerFitGeometry)() : null,
182
+ ignoredNodeTypes
180
183
  });
181
184
  return {
182
185
  nodes: resolvedNodes,
@@ -190,10 +193,25 @@ function placeAddedNode({ nodes, edges, previewNode, insertedNode, registry, ign
190
193
  insertedNode,
191
194
  getNodeSize: getDimensions
192
195
  });
193
- return resolveScopedCollisions(shifted?.nodes ?? nodes, shifted?.insertedNode ?? insertedNode, {
196
+ const placementResult = resolveScopedCollisions(shifted?.nodes ?? nodes, shifted?.insertedNode ?? insertedNode, {
194
197
  ignoredNodeTypes,
195
198
  getNodeSize: getDimensions
196
199
  });
200
+ if (!placementResult.insertedNode.parentId) return placementResult;
201
+ const fittedNodes = (0, container_cjs_namespaceObject.fitContainersAndPushSiblings)({
202
+ nodes: placementResult.nodes,
203
+ containerIds: [
204
+ placementResult.insertedNode.parentId
205
+ ],
206
+ getContainerFitGeometry: (node)=>(0, container_cjs_namespaceObject.isContainerNodeManifest)(getManifestForNode(registry, node)) ? (0, container_cjs_namespaceObject.getContainerFitGeometry)() : null,
207
+ getNodeDimensions: getDimensions,
208
+ ignoredNodeTypes,
209
+ gap: container_cjs_namespaceObject.CONTAINER_SEQUENCE_GAP_PX
210
+ });
211
+ return {
212
+ nodes: fittedNodes,
213
+ insertedNode: fittedNodes.find((node)=>node.id === placementResult.insertedNode.id) ?? placementResult.insertedNode
214
+ };
197
215
  }
198
216
  exports.alignNodeToPreview = __webpack_exports__.alignNodeToPreview;
199
217
  exports.getOriginalEdge = __webpack_exports__.getOriginalEdge;
@@ -1 +1 @@
1
- {"version":3,"file":"AddNodeManager.helpers.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/AddNodePanel/AddNodeManager.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAG3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAsBjD,UAAU,sBAAsB;IAC9B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,EAAE,IAAI,CAAC;CACpB;AAMD,wBAAgB,eAAe,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAEjF;AAmCD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,IAAI,EACjB,kBAAkB,EAAE,yBAAyB,EAAE,EAC/C,YAAY,EAAE,YAAY,GAAG,SAAS,GACrC,IAAI,CA2DN;AAoHD,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,KAAK,EACL,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,gBAAgB,GACjB,EAAE;IACD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,IAAI,CAAC;IAClB,YAAY,EAAE,IAAI,CAAC;IACnB,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,GAAG,sBAAsB,CAsDzB"}
1
+ {"version":3,"file":"AddNodeManager.helpers.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/AddNodePanel/AddNodeManager.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAG3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAwBjD,UAAU,sBAAsB;IAC9B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,YAAY,EAAE,IAAI,CAAC;CACpB;AAMD,wBAAgB,eAAe,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAEjF;AAmCD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,IAAI,EACjB,kBAAkB,EAAE,yBAAyB,EAAE,EAC/C,YAAY,EAAE,YAAY,GAAG,SAAS,GACrC,IAAI,CA2DN;AAqID,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,KAAK,EACL,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,gBAAgB,GACjB,EAAE;IACD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,IAAI,CAAC;IAClB,YAAY,EAAE,IAAI,CAAC;IACnB,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,GAAG,sBAAsB,CAkFzB"}
@@ -2,7 +2,7 @@ import { Position } from "../../xyflow/react.js";
2
2
  import { GRID_SPACING } from "../../constants.js";
3
3
  import { resolveCollisions } from "../../utils/index.js";
4
4
  import { getExpandedSize } from "../../utils/collapse.js";
5
- import { collectLinearDownstreamSiblings, getContainerFitGeometry, getContainerPlacement, getContainerSafeArea, getNodeDimensions, isContainerNodeManifest, placeContainerNode } from "../../utils/container.js";
5
+ import { CONTAINER_SEQUENCE_GAP_PX, collectLinearDownstreamSiblings, fitContainersAndPushSiblings, getContainerFitGeometry, getContainerPlacement, getContainerSafeArea, getNodeDimensions, isContainerNodeManifest, placeContainerNode } from "../../utils/container.js";
6
6
  import { snapUpToGrid } from "../../utils/NodeUtils.js";
7
7
  const TOP_LEVEL_INSERTION_GAP_PX = 5 * GRID_SPACING;
8
8
  function getOriginalEdge(previewNode) {
@@ -92,16 +92,18 @@ function shiftForEdgeInsertion({ nodes, edges, previewNode, insertedNode, getNod
92
92
  const requiredInsertedLeft = sourceNode.position.x + sourceSize.width + TOP_LEVEL_INSERTION_GAP_PX;
93
93
  if (insertedX < requiredInsertedLeft) insertedX = snapUpToGrid(requiredInsertedLeft);
94
94
  }
95
+ const isBackEdge = void 0 !== sourceNode && sourceNode.parentId === insertedNode.parentId && sourceNode.position.x >= targetNode.position.x;
95
96
  const requiredTargetLeft = insertedX + insertedSize.width + TOP_LEVEL_INSERTION_GAP_PX;
96
- const downstreamShift = targetNode.position.x < requiredTargetLeft ? snapUpToGrid(requiredTargetLeft - targetNode.position.x) : 0;
97
+ const downstreamShift = !isBackEdge && targetNode.position.x < requiredTargetLeft ? snapUpToGrid(requiredTargetLeft - targetNode.position.x) : 0;
97
98
  const chainIds = downstreamShift > 0 ? new Set(collectLinearDownstreamSiblings({
98
99
  startNodeId: targetNode.id,
99
100
  parentId: insertedNode.parentId,
100
101
  nodes,
101
102
  edges
102
103
  })) : new Set();
104
+ chainIds.delete(originalEdge.source);
103
105
  const insertedXChanged = insertedX !== insertedNode.position.x;
104
- if (!insertedXChanged && 0 === downstreamShift) return null;
106
+ if (!insertedXChanged && 0 === chainIds.size) return null;
105
107
  const updatedInsertedNode = insertedXChanged ? {
106
108
  ...insertedNode,
107
109
  position: {
@@ -146,7 +148,8 @@ function placeAddedNode({ nodes, edges, previewNode, insertedNode, registry, ign
146
148
  edges,
147
149
  getNodeDimensions: getDimensions,
148
150
  safeArea: getContainerSafeArea(containerNode),
149
- getContainerFitGeometry: (node)=>isContainerNodeManifest(getManifestForNode(registry, node)) ? getContainerFitGeometry() : null
151
+ getContainerFitGeometry: (node)=>isContainerNodeManifest(getManifestForNode(registry, node)) ? getContainerFitGeometry() : null,
152
+ ignoredNodeTypes
150
153
  });
151
154
  return {
152
155
  nodes: resolvedNodes,
@@ -160,9 +163,24 @@ function placeAddedNode({ nodes, edges, previewNode, insertedNode, registry, ign
160
163
  insertedNode,
161
164
  getNodeSize: getDimensions
162
165
  });
163
- return resolveScopedCollisions(shifted?.nodes ?? nodes, shifted?.insertedNode ?? insertedNode, {
166
+ const placementResult = resolveScopedCollisions(shifted?.nodes ?? nodes, shifted?.insertedNode ?? insertedNode, {
164
167
  ignoredNodeTypes,
165
168
  getNodeSize: getDimensions
166
169
  });
170
+ if (!placementResult.insertedNode.parentId) return placementResult;
171
+ const fittedNodes = fitContainersAndPushSiblings({
172
+ nodes: placementResult.nodes,
173
+ containerIds: [
174
+ placementResult.insertedNode.parentId
175
+ ],
176
+ getContainerFitGeometry: (node)=>isContainerNodeManifest(getManifestForNode(registry, node)) ? getContainerFitGeometry() : null,
177
+ getNodeDimensions: getDimensions,
178
+ ignoredNodeTypes,
179
+ gap: CONTAINER_SEQUENCE_GAP_PX
180
+ });
181
+ return {
182
+ nodes: fittedNodes,
183
+ insertedNode: fittedNodes.find((node)=>node.id === placementResult.insertedNode.id) ?? placementResult.insertedNode
184
+ };
167
185
  }
168
186
  export { alignNodeToPreview, getOriginalEdge, placeAddedNode };
@@ -102,7 +102,30 @@ function pickPreferredInnerHandle(groups, type) {
102
102
  }
103
103
  return null;
104
104
  }
105
+ function resolveClickedHandleType({ source, reactFlowInstance, getManifestForNode }) {
106
+ if (!source.handleId) return;
107
+ const sourceNode = reactFlowInstance.getNode(source.nodeId);
108
+ if (!sourceNode) return;
109
+ const sourceManifest = getManifestForNode(sourceNode);
110
+ const dataHandleConfiguration = sourceNode.data?.handleConfigurations;
111
+ const handleConfiguration = Array.isArray(dataHandleConfiguration) ? dataHandleConfiguration : sourceManifest?.handleConfiguration;
112
+ if (!handleConfiguration) return;
113
+ const sourceHandles = (0, manifest_resolver_cjs_namespaceObject.resolveHandles)(handleConfiguration, {
114
+ ...sourceNode.data,
115
+ nodeId: sourceNode.id
116
+ });
117
+ for (const group of sourceHandles){
118
+ const handle = group.handles.find((candidate)=>candidate.id === source.handleId);
119
+ if (handle) return handle.handleType;
120
+ }
121
+ }
105
122
  function resolveContainerAddNodePreview({ source, sourceHandleType, reactFlowInstance, getManifestForNode }) {
123
+ const clickedHandleType = resolveClickedHandleType({
124
+ source,
125
+ reactFlowInstance,
126
+ getManifestForNode
127
+ });
128
+ if ('output' !== clickedHandleType) return null;
106
129
  return (0, container_cjs_namespaceObject.resolveContainerPreview)({
107
130
  source,
108
131
  sourceHandleType,
@@ -1 +1 @@
1
- {"version":3,"file":"LoopNode.helpers.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/LoopNode/LoopNode.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,IAAI,EACT,QAAQ,EACR,KAAK,iBAAiB,EACvB,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAOjE,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE7F,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAI5F,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,OAAO,CAAC;AACxD,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG;IACvD,QAAQ,EAAE,uBAAuB,CAAC;IAClC,kBAAkB,EAAE,QAAQ,CAAC;CAC9B,CAAC;AAEF,MAAM,WAAW,iCAAiC;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,QAAQ,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,gCAAgC,GAAG,CAC7C,IAAI,EAAE,IAAI,KACP,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,qBAAqB,CAAC,GAAG,SAAS,CAAC;AAOvE,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAAE,GAC5B,oBAAoB,EAAE,CAaxB;AAMD,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;;;EAQrE;AAwBD,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,GAAG,SAAS,EAC/D,OAAO,EAAE,iBAAiB,GACzB,iCAAiC,GAAG,IAAI,CAgB1C;AAoBD,wBAAgB,8BAA8B,CAAC,EAC7C,MAAM,EACN,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,EAAE;IACD,MAAM,EAAE,eAAe,CAAC;IACxB,gBAAgB,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACtC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,kBAAkB,EAAE,gCAAgC,CAAC;CACtD,GAAG,qBAAqB,GAAG,IAAI,CA0B/B"}
1
+ {"version":3,"file":"LoopNode.helpers.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/LoopNode/LoopNode.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,IAAI,EACT,QAAQ,EACR,KAAK,iBAAiB,EACvB,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAuB,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAOtF,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE7F,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAI5F,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,OAAO,CAAC;AACxD,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG;IACvD,QAAQ,EAAE,uBAAuB,CAAC;IAClC,kBAAkB,EAAE,QAAQ,CAAC;CAC9B,CAAC;AAEF,MAAM,WAAW,iCAAiC;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,QAAQ,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,gCAAgC,GAAG,CAC7C,IAAI,EAAE,IAAI,KACP,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,qBAAqB,CAAC,GAAG,SAAS,CAAC;AAOvE,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAAE,GAC5B,oBAAoB,EAAE,CAaxB;AAMD,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;;;EAQrE;AAwBD,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,GAAG,SAAS,EAC/D,OAAO,EAAE,iBAAiB,GACzB,iCAAiC,GAAG,IAAI,CAgB1C;AAuDD,wBAAgB,8BAA8B,CAAC,EAC7C,MAAM,EACN,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,EAAE;IACD,MAAM,EAAE,eAAe,CAAC;IACxB,gBAAgB,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACtC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,kBAAkB,EAAE,gCAAgC,CAAC;CACtD,GAAG,qBAAqB,GAAG,IAAI,CAuC/B"}
@@ -71,7 +71,30 @@ function pickPreferredInnerHandle(groups, type) {
71
71
  }
72
72
  return null;
73
73
  }
74
+ function resolveClickedHandleType({ source, reactFlowInstance, getManifestForNode }) {
75
+ if (!source.handleId) return;
76
+ const sourceNode = reactFlowInstance.getNode(source.nodeId);
77
+ if (!sourceNode) return;
78
+ const sourceManifest = getManifestForNode(sourceNode);
79
+ const dataHandleConfiguration = sourceNode.data?.handleConfigurations;
80
+ const handleConfiguration = Array.isArray(dataHandleConfiguration) ? dataHandleConfiguration : sourceManifest?.handleConfiguration;
81
+ if (!handleConfiguration) return;
82
+ const sourceHandles = resolveHandles(handleConfiguration, {
83
+ ...sourceNode.data,
84
+ nodeId: sourceNode.id
85
+ });
86
+ for (const group of sourceHandles){
87
+ const handle = group.handles.find((candidate)=>candidate.id === source.handleId);
88
+ if (handle) return handle.handleType;
89
+ }
90
+ }
74
91
  function resolveContainerAddNodePreview({ source, sourceHandleType, reactFlowInstance, getManifestForNode }) {
92
+ const clickedHandleType = resolveClickedHandleType({
93
+ source,
94
+ reactFlowInstance,
95
+ getManifestForNode
96
+ });
97
+ if ('output' !== clickedHandleType) return null;
75
98
  return resolveContainerPreview({
76
99
  source,
77
100
  sourceHandleType,
@@ -30,6 +30,7 @@ __webpack_require__.d(__webpack_exports__, {
30
30
  getContainerSafeArea: ()=>container_getContainerSafeArea,
31
31
  DEFAULT_CONTAINER_WIDTH: ()=>DEFAULT_CONTAINER_WIDTH,
32
32
  isContainerNodeManifest: ()=>isContainerNodeManifest,
33
+ fitContainersAndPushSiblings: ()=>fitContainersAndPushSiblings,
33
34
  DEFAULT_CONTAINER_MIN_HEIGHT: ()=>DEFAULT_CONTAINER_MIN_HEIGHT,
34
35
  placeContainerNode: ()=>placeContainerNode,
35
36
  getContainerNodeForEdge: ()=>getContainerNodeForEdge,
@@ -101,10 +102,7 @@ function container_getContainerFitGeometry() {
101
102
  return {
102
103
  minWidth: DEFAULT_CONTAINER_MIN_WIDTH,
103
104
  minHeight: DEFAULT_CONTAINER_MIN_HEIGHT,
104
- padding: {
105
- right: padding.right,
106
- bottom: padding.bottom
107
- }
105
+ padding
108
106
  };
109
107
  }
110
108
  function isContainerNodeManifest(manifest) {
@@ -162,25 +160,52 @@ function ensureContainersFitChildren(nodes, { containerIds, getContainerFitGeome
162
160
  const padding = geometry.padding ?? {};
163
161
  let requiredWidth = geometry.minWidth;
164
162
  let requiredHeight = geometry.minHeight;
163
+ let leadingShiftX = 0;
164
+ let leadingShiftY = 0;
165
+ const childrenToFit = [];
166
+ const childIdsToShift = new Set();
165
167
  for (const childNode of nextNodes){
166
168
  if (childNode.id === external_constants_cjs_namespaceObject.PREVIEW_NODE_ID || childNode.hidden || childNode.parentId !== containerId || ignoredTypes.has(childNode.type ?? '')) continue;
167
169
  const childSize = resolveNodeDimensions(childNode);
168
- requiredWidth = Math.max(requiredWidth, childNode.position.x + childSize.width + (padding.right ?? 0));
169
- requiredHeight = Math.max(requiredHeight, childNode.position.y + childSize.height + (padding.bottom ?? 0));
170
+ childrenToFit.push({
171
+ node: childNode,
172
+ size: childSize
173
+ });
174
+ childIdsToShift.add(childNode.id);
175
+ if (void 0 !== padding.left) leadingShiftX = Math.max(leadingShiftX, padding.left - childNode.position.x);
176
+ if (void 0 !== padding.top) leadingShiftY = Math.max(leadingShiftY, padding.top - childNode.position.y);
177
+ }
178
+ leadingShiftX = leadingShiftX > 0 ? (0, external_NodeUtils_cjs_namespaceObject.snapUpToGrid)(leadingShiftX) : 0;
179
+ leadingShiftY = leadingShiftY > 0 ? (0, external_NodeUtils_cjs_namespaceObject.snapUpToGrid)(leadingShiftY) : 0;
180
+ for (const { node: childNode, size: childSize } of childrenToFit){
181
+ requiredWidth = Math.max(requiredWidth, childNode.position.x + leadingShiftX + childSize.width + (padding.right ?? 0));
182
+ requiredHeight = Math.max(requiredHeight, childNode.position.y + leadingShiftY + childSize.height + (padding.bottom ?? 0));
170
183
  }
184
+ requiredWidth = Math.max(requiredWidth, currentSize.width + leadingShiftX);
185
+ requiredHeight = Math.max(requiredHeight, currentSize.height + leadingShiftY);
171
186
  const nextSize = {
172
187
  width: Math.max(currentSize.width, (0, external_NodeUtils_cjs_namespaceObject.snapUpToGrid)(requiredWidth)),
173
188
  height: Math.max(currentSize.height, (0, external_NodeUtils_cjs_namespaceObject.snapUpToGrid)(requiredHeight))
174
189
  };
175
- if (nextSize.width !== currentSize.width || nextSize.height !== currentSize.height) {
176
- nextNodes = nextNodes.map((node)=>node.id === containerId ? withNodeDimensions(node, nextSize) : node);
177
- nodesById.set(containerId, nextNodes.find((node)=>node.id === containerId));
178
- changes.push({
179
- containerId,
180
- previousSize: currentSize,
181
- nextSize
182
- });
183
- }
190
+ if (nextSize.width === currentSize.width && nextSize.height === currentSize.height && 0 === leadingShiftX && 0 === leadingShiftY) continue;
191
+ const shouldShiftChildren = 0 !== leadingShiftX || 0 !== leadingShiftY;
192
+ nextNodes = nextNodes.map((node)=>{
193
+ if (node.id === containerId) return withNodeDimensions(node, nextSize);
194
+ if (shouldShiftChildren && childIdsToShift.has(node.id)) return {
195
+ ...node,
196
+ position: {
197
+ x: node.position.x + leadingShiftX,
198
+ y: node.position.y + leadingShiftY
199
+ }
200
+ };
201
+ return node;
202
+ });
203
+ nodesById.set(containerId, nextNodes.find((node)=>node.id === containerId));
204
+ if (nextSize.width !== currentSize.width || nextSize.height !== currentSize.height) changes.push({
205
+ containerId,
206
+ previousSize: currentSize,
207
+ nextSize
208
+ });
184
209
  }
185
210
  return {
186
211
  nodes: nextNodes,
@@ -545,13 +570,14 @@ function pushSiblingsAfterContainerGrowth({ nodes, changes, getNodeDimensions, g
545
570
  shifted
546
571
  };
547
572
  }
548
- function fitContainersAndPushSiblings({ nodes, containerIds, getContainerFitGeometry, getNodeDimensions, gap }) {
573
+ function fitContainersAndPushSiblings({ nodes, containerIds, getContainerFitGeometry, getNodeDimensions, ignoredNodeTypes, gap }) {
549
574
  let nextNodes = nodes;
550
575
  for(let iteration = 0; iteration < 10; iteration += 1){
551
576
  const fitResult = ensureContainersFitChildren(nextNodes, {
552
577
  containerIds,
553
578
  getContainerFitGeometry,
554
579
  getNodeDimensions,
580
+ ignoredNodeTypes,
555
581
  includeAncestors: true
556
582
  });
557
583
  nextNodes = fitResult.nodes;
@@ -573,7 +599,7 @@ function getContainerPlacement(previewNode) {
573
599
  if (previewNode.parentId && placement.containerId !== previewNode.parentId) return null;
574
600
  return placement;
575
601
  }
576
- function placeContainerNode({ nodes, insertedNode, placement, safeArea, getContainerFitGeometry: resolveContainerFitGeometry = container_getContainerFitGeometry, getNodeDimensions: resolveNodeDimensions = container_getNodeDimensions, gap = CONTAINER_SEQUENCE_GAP_PX, downstreamNodeIds, edges }) {
602
+ function placeContainerNode({ nodes, insertedNode, placement, safeArea, getContainerFitGeometry: resolveContainerFitGeometry = container_getContainerFitGeometry, getNodeDimensions: resolveNodeDimensions = container_getNodeDimensions, gap = CONTAINER_SEQUENCE_GAP_PX, downstreamNodeIds, ignoredNodeTypes, edges }) {
577
603
  const containerNode = nodes.find((node)=>node.id === placement.containerId);
578
604
  const nodesById = new Map(nodes.map((node)=>[
579
605
  node.id,
@@ -608,8 +634,12 @@ function placeContainerNode({ nodes, insertedNode, placement, safeArea, getConta
608
634
  nodes,
609
635
  edges
610
636
  }) : fallbackTargetIds));
637
+ if (placement.sourceNodeId) idsToShift.delete(placement.sourceNodeId);
638
+ const sourceNode = placement.sourceNodeId ? nodesById.get(placement.sourceNodeId) : void 0;
639
+ const sourceIsContainer = placement.sourceNodeId === placement.containerId;
640
+ const isBackEdge = !sourceIsContainer && void 0 !== sourceNode && void 0 !== targetNode && sourceNode.position.x >= targetNode.position.x;
611
641
  const requiredTargetLeft = positionedNode.position.x + insertedSize.width + gap;
612
- const downstreamShift = targetNode && targetNode.position.x < requiredTargetLeft ? (0, external_NodeUtils_cjs_namespaceObject.snapUpToGrid)(requiredTargetLeft - targetNode.position.x) : 0;
642
+ const downstreamShift = !isBackEdge && targetNode && targetNode.position.x < requiredTargetLeft ? (0, external_NodeUtils_cjs_namespaceObject.snapUpToGrid)(requiredTargetLeft - targetNode.position.x) : 0;
613
643
  const positionedNodes = nodes.map((node)=>{
614
644
  if (node.id === insertedNode.id) return positionedNode;
615
645
  if (downstreamShift > 0 && idsToShift.has(node.id)) return {
@@ -628,6 +658,7 @@ function placeContainerNode({ nodes, insertedNode, placement, safeArea, getConta
628
658
  ],
629
659
  getContainerFitGeometry: resolveContainerFitGeometry,
630
660
  getNodeDimensions: resolveNodeDimensions,
661
+ ignoredNodeTypes,
631
662
  gap
632
663
  });
633
664
  }
@@ -639,6 +670,7 @@ exports.DEFAULT_CONTAINER_MIN_WIDTH = __webpack_exports__.DEFAULT_CONTAINER_MIN_
639
670
  exports.DEFAULT_CONTAINER_WIDTH = __webpack_exports__.DEFAULT_CONTAINER_WIDTH;
640
671
  exports.collectLinearDownstreamSiblings = __webpack_exports__.collectLinearDownstreamSiblings;
641
672
  exports.ensureContainersFitChildren = __webpack_exports__.ensureContainersFitChildren;
673
+ exports.fitContainersAndPushSiblings = __webpack_exports__.fitContainersAndPushSiblings;
642
674
  exports.getContainerFitGeometry = __webpack_exports__.getContainerFitGeometry;
643
675
  exports.getContainerNodeForEdge = __webpack_exports__.getContainerNodeForEdge;
644
676
  exports.getContainerPlacement = __webpack_exports__.getContainerPlacement;
@@ -656,6 +688,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
656
688
  "DEFAULT_CONTAINER_WIDTH",
657
689
  "collectLinearDownstreamSiblings",
658
690
  "ensureContainersFitChildren",
691
+ "fitContainersAndPushSiblings",
659
692
  "getContainerFitGeometry",
660
693
  "getContainerNodeForEdge",
661
694
  "getContainerPlacement",
@@ -9,7 +9,9 @@ export interface ContainerFitGeometry {
9
9
  minWidth: number;
10
10
  minHeight: number;
11
11
  padding?: {
12
+ left?: number;
12
13
  right?: number;
14
+ top?: number;
13
15
  bottom?: number;
14
16
  };
15
17
  }
@@ -94,8 +96,16 @@ export declare function collectLinearDownstreamSiblings({ startNodeId, parentId,
94
96
  getNextNodeId?: NextNodeResolver;
95
97
  }): string[];
96
98
  export declare function resolveContainerPreview({ source, sourceHandleType, reactFlowInstance, ...options }: ContainerPreviewContext & ContainerPreviewOptions): PreviewGraphOverrides | null;
99
+ export declare function fitContainersAndPushSiblings({ nodes, containerIds, getContainerFitGeometry, getNodeDimensions, ignoredNodeTypes, gap, }: {
100
+ nodes: Node[];
101
+ containerIds: Iterable<string>;
102
+ getContainerFitGeometry: (containerNode: Node) => ContainerFitGeometry | null | undefined;
103
+ getNodeDimensions: (node: Node) => NodeDimensions;
104
+ ignoredNodeTypes?: string[];
105
+ gap: number;
106
+ }): Node[];
97
107
  export declare function getContainerPlacement(previewNode: Pick<Node, 'data' | 'parentId'>): ContainerPlacement | null;
98
- export declare function placeContainerNode({ nodes, insertedNode, placement, safeArea, getContainerFitGeometry: resolveContainerFitGeometry, getNodeDimensions: resolveNodeDimensions, gap, downstreamNodeIds, edges, }: {
108
+ export declare function placeContainerNode({ nodes, insertedNode, placement, safeArea, getContainerFitGeometry: resolveContainerFitGeometry, getNodeDimensions: resolveNodeDimensions, gap, downstreamNodeIds, ignoredNodeTypes, edges, }: {
99
109
  nodes: Node[];
100
110
  insertedNode: Node;
101
111
  placement: ContainerPlacement;
@@ -104,6 +114,7 @@ export declare function placeContainerNode({ nodes, insertedNode, placement, saf
104
114
  getNodeDimensions?: (node: Node) => NodeDimensions;
105
115
  gap?: number;
106
116
  downstreamNodeIds?: Iterable<string>;
117
+ ignoredNodeTypes?: string[];
107
118
  edges?: Edge[];
108
119
  }): Node[];
109
120
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../src/canvas/utils/container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../src/canvas/utils/container.ts"],"names":[],"mappings":"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"}
@@ -58,10 +58,7 @@ function container_getContainerFitGeometry() {
58
58
  return {
59
59
  minWidth: DEFAULT_CONTAINER_MIN_WIDTH,
60
60
  minHeight: DEFAULT_CONTAINER_MIN_HEIGHT,
61
- padding: {
62
- right: padding.right,
63
- bottom: padding.bottom
64
- }
61
+ padding
65
62
  };
66
63
  }
67
64
  function isContainerNodeManifest(manifest) {
@@ -119,25 +116,52 @@ function ensureContainersFitChildren(nodes, { containerIds, getContainerFitGeome
119
116
  const padding = geometry.padding ?? {};
120
117
  let requiredWidth = geometry.minWidth;
121
118
  let requiredHeight = geometry.minHeight;
119
+ let leadingShiftX = 0;
120
+ let leadingShiftY = 0;
121
+ const childrenToFit = [];
122
+ const childIdsToShift = new Set();
122
123
  for (const childNode of nextNodes){
123
124
  if (childNode.id === PREVIEW_NODE_ID || childNode.hidden || childNode.parentId !== containerId || ignoredTypes.has(childNode.type ?? '')) continue;
124
125
  const childSize = resolveNodeDimensions(childNode);
125
- requiredWidth = Math.max(requiredWidth, childNode.position.x + childSize.width + (padding.right ?? 0));
126
- requiredHeight = Math.max(requiredHeight, childNode.position.y + childSize.height + (padding.bottom ?? 0));
126
+ childrenToFit.push({
127
+ node: childNode,
128
+ size: childSize
129
+ });
130
+ childIdsToShift.add(childNode.id);
131
+ if (void 0 !== padding.left) leadingShiftX = Math.max(leadingShiftX, padding.left - childNode.position.x);
132
+ if (void 0 !== padding.top) leadingShiftY = Math.max(leadingShiftY, padding.top - childNode.position.y);
133
+ }
134
+ leadingShiftX = leadingShiftX > 0 ? snapUpToGrid(leadingShiftX) : 0;
135
+ leadingShiftY = leadingShiftY > 0 ? snapUpToGrid(leadingShiftY) : 0;
136
+ for (const { node: childNode, size: childSize } of childrenToFit){
137
+ requiredWidth = Math.max(requiredWidth, childNode.position.x + leadingShiftX + childSize.width + (padding.right ?? 0));
138
+ requiredHeight = Math.max(requiredHeight, childNode.position.y + leadingShiftY + childSize.height + (padding.bottom ?? 0));
127
139
  }
140
+ requiredWidth = Math.max(requiredWidth, currentSize.width + leadingShiftX);
141
+ requiredHeight = Math.max(requiredHeight, currentSize.height + leadingShiftY);
128
142
  const nextSize = {
129
143
  width: Math.max(currentSize.width, snapUpToGrid(requiredWidth)),
130
144
  height: Math.max(currentSize.height, snapUpToGrid(requiredHeight))
131
145
  };
132
- if (nextSize.width !== currentSize.width || nextSize.height !== currentSize.height) {
133
- nextNodes = nextNodes.map((node)=>node.id === containerId ? withNodeDimensions(node, nextSize) : node);
134
- nodesById.set(containerId, nextNodes.find((node)=>node.id === containerId));
135
- changes.push({
136
- containerId,
137
- previousSize: currentSize,
138
- nextSize
139
- });
140
- }
146
+ if (nextSize.width === currentSize.width && nextSize.height === currentSize.height && 0 === leadingShiftX && 0 === leadingShiftY) continue;
147
+ const shouldShiftChildren = 0 !== leadingShiftX || 0 !== leadingShiftY;
148
+ nextNodes = nextNodes.map((node)=>{
149
+ if (node.id === containerId) return withNodeDimensions(node, nextSize);
150
+ if (shouldShiftChildren && childIdsToShift.has(node.id)) return {
151
+ ...node,
152
+ position: {
153
+ x: node.position.x + leadingShiftX,
154
+ y: node.position.y + leadingShiftY
155
+ }
156
+ };
157
+ return node;
158
+ });
159
+ nodesById.set(containerId, nextNodes.find((node)=>node.id === containerId));
160
+ if (nextSize.width !== currentSize.width || nextSize.height !== currentSize.height) changes.push({
161
+ containerId,
162
+ previousSize: currentSize,
163
+ nextSize
164
+ });
141
165
  }
142
166
  return {
143
167
  nodes: nextNodes,
@@ -502,13 +526,14 @@ function pushSiblingsAfterContainerGrowth({ nodes, changes, getNodeDimensions, g
502
526
  shifted
503
527
  };
504
528
  }
505
- function fitContainersAndPushSiblings({ nodes, containerIds, getContainerFitGeometry, getNodeDimensions, gap }) {
529
+ function fitContainersAndPushSiblings({ nodes, containerIds, getContainerFitGeometry, getNodeDimensions, ignoredNodeTypes, gap }) {
506
530
  let nextNodes = nodes;
507
531
  for(let iteration = 0; iteration < 10; iteration += 1){
508
532
  const fitResult = ensureContainersFitChildren(nextNodes, {
509
533
  containerIds,
510
534
  getContainerFitGeometry,
511
535
  getNodeDimensions,
536
+ ignoredNodeTypes,
512
537
  includeAncestors: true
513
538
  });
514
539
  nextNodes = fitResult.nodes;
@@ -530,7 +555,7 @@ function getContainerPlacement(previewNode) {
530
555
  if (previewNode.parentId && placement.containerId !== previewNode.parentId) return null;
531
556
  return placement;
532
557
  }
533
- function placeContainerNode({ nodes, insertedNode, placement, safeArea, getContainerFitGeometry: resolveContainerFitGeometry = container_getContainerFitGeometry, getNodeDimensions: resolveNodeDimensions = container_getNodeDimensions, gap = CONTAINER_SEQUENCE_GAP_PX, downstreamNodeIds, edges }) {
558
+ function placeContainerNode({ nodes, insertedNode, placement, safeArea, getContainerFitGeometry: resolveContainerFitGeometry = container_getContainerFitGeometry, getNodeDimensions: resolveNodeDimensions = container_getNodeDimensions, gap = CONTAINER_SEQUENCE_GAP_PX, downstreamNodeIds, ignoredNodeTypes, edges }) {
534
559
  const containerNode = nodes.find((node)=>node.id === placement.containerId);
535
560
  const nodesById = new Map(nodes.map((node)=>[
536
561
  node.id,
@@ -565,8 +590,12 @@ function placeContainerNode({ nodes, insertedNode, placement, safeArea, getConta
565
590
  nodes,
566
591
  edges
567
592
  }) : fallbackTargetIds));
593
+ if (placement.sourceNodeId) idsToShift.delete(placement.sourceNodeId);
594
+ const sourceNode = placement.sourceNodeId ? nodesById.get(placement.sourceNodeId) : void 0;
595
+ const sourceIsContainer = placement.sourceNodeId === placement.containerId;
596
+ const isBackEdge = !sourceIsContainer && void 0 !== sourceNode && void 0 !== targetNode && sourceNode.position.x >= targetNode.position.x;
568
597
  const requiredTargetLeft = positionedNode.position.x + insertedSize.width + gap;
569
- const downstreamShift = targetNode && targetNode.position.x < requiredTargetLeft ? snapUpToGrid(requiredTargetLeft - targetNode.position.x) : 0;
598
+ const downstreamShift = !isBackEdge && targetNode && targetNode.position.x < requiredTargetLeft ? snapUpToGrid(requiredTargetLeft - targetNode.position.x) : 0;
570
599
  const positionedNodes = nodes.map((node)=>{
571
600
  if (node.id === insertedNode.id) return positionedNode;
572
601
  if (downstreamShift > 0 && idsToShift.has(node.id)) return {
@@ -585,7 +614,8 @@ function placeContainerNode({ nodes, insertedNode, placement, safeArea, getConta
585
614
  ],
586
615
  getContainerFitGeometry: resolveContainerFitGeometry,
587
616
  getNodeDimensions: resolveNodeDimensions,
617
+ ignoredNodeTypes,
588
618
  gap
589
619
  });
590
620
  }
591
- export { CONTAINER_FRAME_INSET_PX, CONTAINER_SEQUENCE_GAP_PX, DEFAULT_CONTAINER_HEIGHT, DEFAULT_CONTAINER_MIN_HEIGHT, DEFAULT_CONTAINER_MIN_WIDTH, DEFAULT_CONTAINER_WIDTH, collectLinearDownstreamSiblings, ensureContainersFitChildren, container_getContainerFitGeometry as getContainerFitGeometry, getContainerNodeForEdge, getContainerPlacement, container_getContainerSafeArea as getContainerSafeArea, container_getNodeDimensions as getNodeDimensions, isContainerNodeManifest, placeContainerNode, resolveContainerPreview };
621
+ export { CONTAINER_FRAME_INSET_PX, CONTAINER_SEQUENCE_GAP_PX, DEFAULT_CONTAINER_HEIGHT, DEFAULT_CONTAINER_MIN_HEIGHT, DEFAULT_CONTAINER_MIN_WIDTH, DEFAULT_CONTAINER_WIDTH, collectLinearDownstreamSiblings, ensureContainersFitChildren, fitContainersAndPushSiblings, container_getContainerFitGeometry as getContainerFitGeometry, getContainerNodeForEdge, getContainerPlacement, container_getContainerSafeArea as getContainerSafeArea, container_getNodeDimensions as getNodeDimensions, isContainerNodeManifest, placeContainerNode, resolveContainerPreview };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uipath/apollo-react",
3
- "version": "4.18.1",
3
+ "version": "4.18.3",
4
4
  "description": "Apollo Design System - React component library with Material UI theming",
5
5
  "repository": {
6
6
  "type": "git",
@@ -201,8 +201,8 @@
201
201
  "use-sync-external-store": "^1.2.0",
202
202
  "zod": "^4.3.5",
203
203
  "zustand": "^5.0.9",
204
- "@uipath/apollo-core": "5.9.0",
205
- "@uipath/apollo-wind": "2.9.0"
204
+ "@uipath/apollo-wind": "2.9.0",
205
+ "@uipath/apollo-core": "5.9.0"
206
206
  },
207
207
  "devDependencies": {
208
208
  "@lingui/cli": "^5.6.1",