@uipath/apollo-react 4.15.1 → 4.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/canvas/components/AddNodePanel/AddNodeManager.cjs +6 -1
- package/dist/canvas/components/AddNodePanel/AddNodeManager.d.ts.map +1 -1
- package/dist/canvas/components/AddNodePanel/AddNodeManager.js +6 -1
- package/dist/canvas/components/AddNodePanel/createAddNodePreview.cjs +9 -3
- package/dist/canvas/components/AddNodePanel/createAddNodePreview.d.ts.map +1 -1
- package/dist/canvas/components/AddNodePanel/createAddNodePreview.js +9 -3
- package/dist/canvas/components/AgentCanvas/agent-flow.manifest.d.ts +2 -1
- package/dist/canvas/components/AgentCanvas/agent-flow.manifest.d.ts.map +1 -1
- package/dist/canvas/components/BaseNode/BaseNode.cjs +5 -4
- package/dist/canvas/components/BaseNode/BaseNode.d.ts.map +1 -1
- package/dist/canvas/components/BaseNode/BaseNode.js +4 -3
- package/dist/canvas/components/ButtonHandle/ButtonHandle.cjs +108 -13
- package/dist/canvas/components/ButtonHandle/ButtonHandle.d.ts +10 -5
- package/dist/canvas/components/ButtonHandle/ButtonHandle.d.ts.map +1 -1
- package/dist/canvas/components/ButtonHandle/ButtonHandle.js +108 -13
- package/dist/canvas/components/ButtonHandle/ButtonHandleLayoutUtils.cjs +159 -0
- package/dist/canvas/components/ButtonHandle/ButtonHandleLayoutUtils.d.ts +21 -0
- package/dist/canvas/components/ButtonHandle/ButtonHandleLayoutUtils.d.ts.map +1 -0
- package/dist/canvas/components/ButtonHandle/ButtonHandleLayoutUtils.js +122 -0
- package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.cjs +10 -2
- package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.d.ts +2 -0
- package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.d.ts.map +1 -1
- package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.js +5 -3
- package/dist/canvas/components/ButtonHandle/HandleButton.cjs +13 -2
- package/dist/canvas/components/ButtonHandle/HandleButton.d.ts +10 -1
- package/dist/canvas/components/ButtonHandle/HandleButton.d.ts.map +1 -1
- package/dist/canvas/components/ButtonHandle/HandleButton.js +13 -2
- package/dist/canvas/components/ButtonHandle/useButtonHandles.cjs +4 -2
- package/dist/canvas/components/ButtonHandle/useButtonHandles.d.ts +2 -1
- package/dist/canvas/components/ButtonHandle/useButtonHandles.d.ts.map +1 -1
- package/dist/canvas/components/ButtonHandle/useButtonHandles.js +4 -2
- package/dist/canvas/components/Edges/SequenceEdge.cjs +8 -4
- package/dist/canvas/components/Edges/SequenceEdge.js +8 -4
- package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.cjs +24 -22
- package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.d.ts.map +1 -1
- package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.js +25 -23
- package/dist/canvas/components/LoopNode/LoopCanvasNode.cjs +75 -0
- package/dist/canvas/components/LoopNode/LoopCanvasNode.d.ts +6 -0
- package/dist/canvas/components/LoopNode/LoopCanvasNode.d.ts.map +1 -0
- package/dist/canvas/components/LoopNode/LoopCanvasNode.js +41 -0
- package/dist/canvas/components/LoopNode/LoopNode.cjs +447 -0
- package/dist/canvas/components/LoopNode/LoopNode.constants.cjs +56 -0
- package/dist/canvas/components/LoopNode/LoopNode.constants.d.ts +7 -0
- package/dist/canvas/components/LoopNode/LoopNode.constants.d.ts.map +1 -0
- package/dist/canvas/components/LoopNode/LoopNode.constants.js +7 -0
- package/dist/canvas/components/LoopNode/LoopNode.d.ts +5 -0
- package/dist/canvas/components/LoopNode/LoopNode.d.ts.map +1 -0
- package/dist/canvas/components/LoopNode/LoopNode.helpers.cjs +145 -0
- package/dist/canvas/components/LoopNode/LoopNode.helpers.d.ts +29 -0
- package/dist/canvas/components/LoopNode/LoopNode.helpers.d.ts.map +1 -0
- package/dist/canvas/components/LoopNode/LoopNode.helpers.js +99 -0
- package/dist/canvas/components/LoopNode/LoopNode.js +413 -0
- package/dist/canvas/components/LoopNode/LoopNode.types.cjs +18 -0
- package/dist/canvas/components/LoopNode/LoopNode.types.d.ts +22 -0
- package/dist/canvas/components/LoopNode/LoopNode.types.d.ts.map +1 -0
- package/dist/canvas/components/LoopNode/LoopNode.types.js +0 -0
- package/dist/canvas/components/LoopNode/LoopNodePreview.cjs +61 -0
- package/dist/canvas/components/LoopNode/LoopNodePreview.d.ts +9 -0
- package/dist/canvas/components/LoopNode/LoopNodePreview.d.ts.map +1 -0
- package/dist/canvas/components/LoopNode/LoopNodePreview.js +27 -0
- package/dist/canvas/components/LoopNode/index.cjs +79 -0
- package/dist/canvas/components/LoopNode/index.d.ts +5 -0
- package/dist/canvas/components/LoopNode/index.d.ts.map +1 -0
- package/dist/canvas/components/LoopNode/index.js +4 -0
- package/dist/canvas/components/NodeViewportOverlay.cjs +63 -0
- package/dist/canvas/components/NodeViewportOverlay.d.ts +22 -0
- package/dist/canvas/components/NodeViewportOverlay.d.ts.map +1 -0
- package/dist/canvas/components/NodeViewportOverlay.js +29 -0
- package/dist/canvas/components/Toolbar/EdgeToolbar/EdgeToolbar.cjs +1 -1
- package/dist/canvas/components/Toolbar/EdgeToolbar/EdgeToolbar.js +1 -1
- package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.cjs +25 -23
- package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.d.ts.map +1 -1
- package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.js +27 -25
- package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.cjs +10 -3
- package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.d.ts +1 -1
- package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.d.ts.map +1 -1
- package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.js +10 -3
- package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.types.d.ts +1 -0
- package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.types.d.ts.map +1 -1
- package/dist/canvas/components/index.cjs +27 -20
- package/dist/canvas/components/index.d.ts +1 -0
- package/dist/canvas/components/index.d.ts.map +1 -1
- package/dist/canvas/components/index.js +1 -0
- package/dist/canvas/constants.cjs +12 -0
- package/dist/canvas/constants.d.ts +3 -0
- package/dist/canvas/constants.d.ts.map +1 -1
- package/dist/canvas/constants.js +4 -1
- package/dist/canvas/hooks/useAddNodeOnConnectEnd.cjs +22 -23
- package/dist/canvas/hooks/useAddNodeOnConnectEnd.d.ts.map +1 -1
- package/dist/canvas/hooks/useAddNodeOnConnectEnd.js +23 -24
- package/dist/canvas/hooks/usePreviewNode.cjs +2 -1
- package/dist/canvas/hooks/usePreviewNode.d.ts.map +1 -1
- package/dist/canvas/hooks/usePreviewNode.js +2 -1
- package/dist/canvas/schema/node-definition/handle.cjs +10 -2
- package/dist/canvas/schema/node-definition/handle.d.ts +9 -0
- package/dist/canvas/schema/node-definition/handle.d.ts.map +1 -1
- package/dist/canvas/schema/node-definition/handle.js +6 -1
- package/dist/canvas/schema/node-definition/index.cjs +4 -1
- package/dist/canvas/schema/node-definition/index.d.ts +3 -3
- package/dist/canvas/schema/node-definition/index.d.ts.map +1 -1
- package/dist/canvas/schema/node-definition/index.js +2 -2
- package/dist/canvas/schema/node-definition/node-manifest.cjs +2 -1
- package/dist/canvas/schema/node-definition/node-manifest.d.ts +7 -0
- package/dist/canvas/schema/node-definition/node-manifest.d.ts.map +1 -1
- package/dist/canvas/schema/node-definition/node-manifest.js +2 -1
- package/dist/canvas/schema/node-instance/base.d.ts +1 -0
- package/dist/canvas/schema/node-instance/base.d.ts.map +1 -1
- package/dist/canvas/schema/node-instance/node.d.ts +1 -0
- package/dist/canvas/schema/node-instance/node.d.ts.map +1 -1
- package/dist/canvas/storybook-utils/hooks/useCanvasStory.d.ts.map +1 -1
- package/dist/canvas/storybook-utils/manifests/index.d.ts +2 -1
- package/dist/canvas/storybook-utils/manifests/index.d.ts.map +1 -1
- package/dist/canvas/storybook-utils/manifests/node-definitions.d.ts.map +1 -1
- package/dist/canvas/styles/reactflow-reset.css +2 -2
- package/dist/canvas/styles/tailwind.canvas.css +1 -1
- package/dist/canvas/utils/NodeUtils.cjs +4 -0
- package/dist/canvas/utils/NodeUtils.d.ts +2 -1
- package/dist/canvas/utils/NodeUtils.d.ts.map +1 -1
- package/dist/canvas/utils/NodeUtils.js +2 -1
- package/dist/canvas/utils/collapse.cjs +13 -6
- package/dist/canvas/utils/collapse.d.ts.map +1 -1
- package/dist/canvas/utils/collapse.js +9 -2
- package/dist/canvas/utils/createPreviewGraph.cjs +126 -0
- package/dist/canvas/utils/createPreviewGraph.d.ts +36 -0
- package/dist/canvas/utils/createPreviewGraph.d.ts.map +1 -0
- package/dist/canvas/utils/createPreviewGraph.js +83 -0
- package/dist/canvas/utils/createPreviewNode.cjs +30 -11
- package/dist/canvas/utils/createPreviewNode.d.ts +10 -2
- package/dist/canvas/utils/createPreviewNode.d.ts.map +1 -1
- package/dist/canvas/utils/createPreviewNode.js +21 -11
- package/dist/canvas/utils/index.cjs +33 -26
- package/dist/canvas/utils/index.d.ts +2 -1
- package/dist/canvas/utils/index.d.ts.map +1 -1
- package/dist/canvas/utils/index.js +2 -1
- package/package.json +2 -2
|
@@ -0,0 +1,145 @@
|
|
|
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
|
+
resolveContainerHandleGroups: ()=>resolveContainerHandleGroups,
|
|
28
|
+
isContainerNodeManifest: ()=>isContainerNodeManifest,
|
|
29
|
+
resolveContainerPreviewConnectionHandles: ()=>resolveContainerPreviewConnectionHandles,
|
|
30
|
+
getContainerRelativeBodyCenter: ()=>getContainerRelativeBodyCenter,
|
|
31
|
+
getContainerBodyCenter: ()=>getContainerBodyCenter
|
|
32
|
+
});
|
|
33
|
+
const react_cjs_namespaceObject = require("../../xyflow/react.cjs");
|
|
34
|
+
const external_constants_cjs_namespaceObject = require("../../constants.cjs");
|
|
35
|
+
const createPreviewNode_cjs_namespaceObject = require("../../utils/createPreviewNode.cjs");
|
|
36
|
+
const manifest_resolver_cjs_namespaceObject = require("../../utils/manifest-resolver.cjs");
|
|
37
|
+
const NodeUtils_cjs_namespaceObject = require("../../utils/NodeUtils.cjs");
|
|
38
|
+
const external_LoopNode_constants_cjs_namespaceObject = require("./LoopNode.constants.cjs");
|
|
39
|
+
function clamp(value, min, max) {
|
|
40
|
+
return Math.min(Math.max(value, min), max);
|
|
41
|
+
}
|
|
42
|
+
function isContainerNodeManifest(manifest) {
|
|
43
|
+
return manifest?.display.shape === 'container';
|
|
44
|
+
}
|
|
45
|
+
function resolveContainerHandleGroups(groups) {
|
|
46
|
+
return groups.map((group)=>{
|
|
47
|
+
const boundary = group.boundary ?? 'outer';
|
|
48
|
+
const position = group.position;
|
|
49
|
+
return {
|
|
50
|
+
...group,
|
|
51
|
+
boundary,
|
|
52
|
+
connectionPosition: 'inner' === boundary ? (0, createPreviewNode_cjs_namespaceObject.getOppositePosition)(position) : position,
|
|
53
|
+
customPositionAndOffsets: 'inner' === boundary ? insetInnerGroup(group) : group.customPositionAndOffsets
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function getContainerBodyCenter({ width, height, headerHeight }) {
|
|
58
|
+
const clampedHeaderHeight = clamp(headerHeight, 0, height);
|
|
59
|
+
return {
|
|
60
|
+
x: clamp((0, NodeUtils_cjs_namespaceObject.snapToGrid)(width / 2), 0, width),
|
|
61
|
+
y: clamp((0, NodeUtils_cjs_namespaceObject.snapToGrid)(clampedHeaderHeight + (height - clampedHeaderHeight) / 2), 0, height)
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function getContainerRelativeBodyCenter(containerNode) {
|
|
65
|
+
const width = readNumericDimension(containerNode.width, containerNode.measured?.width, containerNode.style?.width);
|
|
66
|
+
const height = readNumericDimension(containerNode.height, containerNode.measured?.height, containerNode.style?.height);
|
|
67
|
+
return getContainerBodyCenter({
|
|
68
|
+
width: width ?? external_constants_cjs_namespaceObject.DEFAULT_CONTAINER_WIDTH,
|
|
69
|
+
height: height ?? external_constants_cjs_namespaceObject.DEFAULT_CONTAINER_HEIGHT,
|
|
70
|
+
headerHeight: external_LoopNode_constants_cjs_namespaceObject.DEFAULT_CONTAINER_HEADER_HEIGHT_PX
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
function insetInnerGroup(group) {
|
|
74
|
+
const offsets = group.customPositionAndOffsets ?? {};
|
|
75
|
+
switch(group.position){
|
|
76
|
+
case react_cjs_namespaceObject.Position.Left:
|
|
77
|
+
return {
|
|
78
|
+
...offsets,
|
|
79
|
+
left: (offsets.left ?? 0) + external_LoopNode_constants_cjs_namespaceObject.CONTAINER_FRAME_INSET_PX
|
|
80
|
+
};
|
|
81
|
+
case react_cjs_namespaceObject.Position.Right:
|
|
82
|
+
return {
|
|
83
|
+
...offsets,
|
|
84
|
+
right: (offsets.right ?? 0) + external_LoopNode_constants_cjs_namespaceObject.CONTAINER_FRAME_INSET_PX
|
|
85
|
+
};
|
|
86
|
+
case react_cjs_namespaceObject.Position.Top:
|
|
87
|
+
return {
|
|
88
|
+
...offsets,
|
|
89
|
+
top: (offsets.top ?? 0) + external_LoopNode_constants_cjs_namespaceObject.CONTAINER_FRAME_INSET_PX
|
|
90
|
+
};
|
|
91
|
+
case react_cjs_namespaceObject.Position.Bottom:
|
|
92
|
+
return {
|
|
93
|
+
...offsets,
|
|
94
|
+
bottom: (offsets.bottom ?? 0) + external_LoopNode_constants_cjs_namespaceObject.CONTAINER_FRAME_INSET_PX
|
|
95
|
+
};
|
|
96
|
+
default:
|
|
97
|
+
return offsets;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function readNumericDimension(...values) {
|
|
101
|
+
for (const value of values){
|
|
102
|
+
if ('number' == typeof value) return value;
|
|
103
|
+
if ('string' == typeof value) {
|
|
104
|
+
const parsedValue = Number.parseFloat(value);
|
|
105
|
+
if (Number.isFinite(parsedValue)) return parsedValue;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function resolveContainerPreviewConnectionHandles(manifest, context) {
|
|
110
|
+
if (!manifest) return null;
|
|
111
|
+
const innerGroups = (0, manifest_resolver_cjs_namespaceObject.resolveHandles)(manifest.handleConfiguration, context).filter((group)=>'inner' === group.boundary && (group.visible ?? true));
|
|
112
|
+
const sourceHandle = pickPreferredInnerHandle(innerGroups, 'source');
|
|
113
|
+
const targetHandle = pickPreferredInnerHandle(innerGroups, 'target');
|
|
114
|
+
if (!sourceHandle || !targetHandle) return null;
|
|
115
|
+
return {
|
|
116
|
+
sourceHandleId: sourceHandle.handle.id,
|
|
117
|
+
sourceHandlePosition: (0, createPreviewNode_cjs_namespaceObject.getOppositePosition)(sourceHandle.group.position),
|
|
118
|
+
targetHandleId: targetHandle.handle.id
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function pickPreferredInnerHandle(groups, type) {
|
|
122
|
+
for (const group of groups){
|
|
123
|
+
const handle = group.handles.find((candidate)=>candidate.type === type && candidate.visible);
|
|
124
|
+
if (handle) return {
|
|
125
|
+
group,
|
|
126
|
+
handle
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
exports.getContainerBodyCenter = __webpack_exports__.getContainerBodyCenter;
|
|
132
|
+
exports.getContainerRelativeBodyCenter = __webpack_exports__.getContainerRelativeBodyCenter;
|
|
133
|
+
exports.isContainerNodeManifest = __webpack_exports__.isContainerNodeManifest;
|
|
134
|
+
exports.resolveContainerHandleGroups = __webpack_exports__.resolveContainerHandleGroups;
|
|
135
|
+
exports.resolveContainerPreviewConnectionHandles = __webpack_exports__.resolveContainerPreviewConnectionHandles;
|
|
136
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
137
|
+
"getContainerBodyCenter",
|
|
138
|
+
"getContainerRelativeBodyCenter",
|
|
139
|
+
"isContainerNodeManifest",
|
|
140
|
+
"resolveContainerHandleGroups",
|
|
141
|
+
"resolveContainerPreviewConnectionHandles"
|
|
142
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
143
|
+
Object.defineProperty(exports, '__esModule', {
|
|
144
|
+
value: true
|
|
145
|
+
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type Node, Position } from '../../xyflow/react.ts';
|
|
2
|
+
import type { NodeManifest } from '../../schema/node-definition';
|
|
3
|
+
import type { ResolutionContext, ResolvedHandleGroup } from '../../utils/manifest-resolver';
|
|
4
|
+
export type ContainerHandleBoundary = 'outer' | 'inner';
|
|
5
|
+
export type ContainerHandleGroup = ResolvedHandleGroup & {
|
|
6
|
+
boundary: ContainerHandleBoundary;
|
|
7
|
+
connectionPosition: Position;
|
|
8
|
+
};
|
|
9
|
+
export interface ContainerPreviewConnectionHandles {
|
|
10
|
+
sourceHandleId: string;
|
|
11
|
+
sourceHandlePosition: Position;
|
|
12
|
+
targetHandleId: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function isContainerNodeManifest(manifest: Pick<NodeManifest, 'display'> | undefined): boolean;
|
|
15
|
+
export declare function resolveContainerHandleGroups(groups: ResolvedHandleGroup[]): ContainerHandleGroup[];
|
|
16
|
+
export declare function getContainerBodyCenter({ width, height, headerHeight, }: {
|
|
17
|
+
width: number;
|
|
18
|
+
height: number;
|
|
19
|
+
headerHeight: number;
|
|
20
|
+
}): {
|
|
21
|
+
x: number;
|
|
22
|
+
y: number;
|
|
23
|
+
};
|
|
24
|
+
export declare function getContainerRelativeBodyCenter(containerNode: Pick<Node, 'width' | 'height' | 'measured' | 'style'>): {
|
|
25
|
+
x: number;
|
|
26
|
+
y: number;
|
|
27
|
+
};
|
|
28
|
+
export declare function resolveContainerPreviewConnectionHandles(manifest: Pick<NodeManifest, 'handleConfiguration'> | undefined, context: ResolutionContext): ContainerPreviewConnectionHandles | null;
|
|
29
|
+
//# sourceMappingURL=LoopNode.helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoopNode.helpers.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/LoopNode/LoopNode.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAE/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAK5F,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;AAMD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG,SAAS,GAClD,OAAO,CAET;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,mBAAmB,EAAE,GAC5B,oBAAoB,EAAE,CAaxB;AAED,wBAAgB,sBAAsB,CAAC,EACrC,KAAK,EACL,MAAM,EACN,YAAY,GACb,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;;;EAOA;AAED,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;;;EAkBrE;AA+BD,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,GAAG,SAAS,EAC/D,OAAO,EAAE,iBAAiB,GACzB,iCAAiC,GAAG,IAAI,CAgB1C"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { Position } from "../../xyflow/react.js";
|
|
2
|
+
import { DEFAULT_CONTAINER_HEIGHT, DEFAULT_CONTAINER_WIDTH } from "../../constants.js";
|
|
3
|
+
import { getOppositePosition } from "../../utils/createPreviewNode.js";
|
|
4
|
+
import { resolveHandles } from "../../utils/manifest-resolver.js";
|
|
5
|
+
import { snapToGrid } from "../../utils/NodeUtils.js";
|
|
6
|
+
import { CONTAINER_FRAME_INSET_PX, DEFAULT_CONTAINER_HEADER_HEIGHT_PX } from "./LoopNode.constants.js";
|
|
7
|
+
function clamp(value, min, max) {
|
|
8
|
+
return Math.min(Math.max(value, min), max);
|
|
9
|
+
}
|
|
10
|
+
function isContainerNodeManifest(manifest) {
|
|
11
|
+
return manifest?.display.shape === 'container';
|
|
12
|
+
}
|
|
13
|
+
function resolveContainerHandleGroups(groups) {
|
|
14
|
+
return groups.map((group)=>{
|
|
15
|
+
const boundary = group.boundary ?? 'outer';
|
|
16
|
+
const position = group.position;
|
|
17
|
+
return {
|
|
18
|
+
...group,
|
|
19
|
+
boundary,
|
|
20
|
+
connectionPosition: 'inner' === boundary ? getOppositePosition(position) : position,
|
|
21
|
+
customPositionAndOffsets: 'inner' === boundary ? insetInnerGroup(group) : group.customPositionAndOffsets
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function getContainerBodyCenter({ width, height, headerHeight }) {
|
|
26
|
+
const clampedHeaderHeight = clamp(headerHeight, 0, height);
|
|
27
|
+
return {
|
|
28
|
+
x: clamp(snapToGrid(width / 2), 0, width),
|
|
29
|
+
y: clamp(snapToGrid(clampedHeaderHeight + (height - clampedHeaderHeight) / 2), 0, height)
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function getContainerRelativeBodyCenter(containerNode) {
|
|
33
|
+
const width = readNumericDimension(containerNode.width, containerNode.measured?.width, containerNode.style?.width);
|
|
34
|
+
const height = readNumericDimension(containerNode.height, containerNode.measured?.height, containerNode.style?.height);
|
|
35
|
+
return getContainerBodyCenter({
|
|
36
|
+
width: width ?? DEFAULT_CONTAINER_WIDTH,
|
|
37
|
+
height: height ?? DEFAULT_CONTAINER_HEIGHT,
|
|
38
|
+
headerHeight: DEFAULT_CONTAINER_HEADER_HEIGHT_PX
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
function insetInnerGroup(group) {
|
|
42
|
+
const offsets = group.customPositionAndOffsets ?? {};
|
|
43
|
+
switch(group.position){
|
|
44
|
+
case Position.Left:
|
|
45
|
+
return {
|
|
46
|
+
...offsets,
|
|
47
|
+
left: (offsets.left ?? 0) + CONTAINER_FRAME_INSET_PX
|
|
48
|
+
};
|
|
49
|
+
case Position.Right:
|
|
50
|
+
return {
|
|
51
|
+
...offsets,
|
|
52
|
+
right: (offsets.right ?? 0) + CONTAINER_FRAME_INSET_PX
|
|
53
|
+
};
|
|
54
|
+
case Position.Top:
|
|
55
|
+
return {
|
|
56
|
+
...offsets,
|
|
57
|
+
top: (offsets.top ?? 0) + CONTAINER_FRAME_INSET_PX
|
|
58
|
+
};
|
|
59
|
+
case Position.Bottom:
|
|
60
|
+
return {
|
|
61
|
+
...offsets,
|
|
62
|
+
bottom: (offsets.bottom ?? 0) + CONTAINER_FRAME_INSET_PX
|
|
63
|
+
};
|
|
64
|
+
default:
|
|
65
|
+
return offsets;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function readNumericDimension(...values) {
|
|
69
|
+
for (const value of values){
|
|
70
|
+
if ('number' == typeof value) return value;
|
|
71
|
+
if ('string' == typeof value) {
|
|
72
|
+
const parsedValue = Number.parseFloat(value);
|
|
73
|
+
if (Number.isFinite(parsedValue)) return parsedValue;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function resolveContainerPreviewConnectionHandles(manifest, context) {
|
|
78
|
+
if (!manifest) return null;
|
|
79
|
+
const innerGroups = resolveHandles(manifest.handleConfiguration, context).filter((group)=>'inner' === group.boundary && (group.visible ?? true));
|
|
80
|
+
const sourceHandle = pickPreferredInnerHandle(innerGroups, 'source');
|
|
81
|
+
const targetHandle = pickPreferredInnerHandle(innerGroups, 'target');
|
|
82
|
+
if (!sourceHandle || !targetHandle) return null;
|
|
83
|
+
return {
|
|
84
|
+
sourceHandleId: sourceHandle.handle.id,
|
|
85
|
+
sourceHandlePosition: getOppositePosition(sourceHandle.group.position),
|
|
86
|
+
targetHandleId: targetHandle.handle.id
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function pickPreferredInnerHandle(groups, type) {
|
|
90
|
+
for (const group of groups){
|
|
91
|
+
const handle = group.handles.find((candidate)=>candidate.type === type && candidate.visible);
|
|
92
|
+
if (handle) return {
|
|
93
|
+
group,
|
|
94
|
+
handle
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
export { getContainerBodyCenter, getContainerRelativeBodyCenter, isContainerNodeManifest, resolveContainerHandleGroups, resolveContainerPreviewConnectionHandles };
|