@uipath/apollo-react 4.17.0 → 4.18.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 +35 -21
- package/dist/canvas/components/AddNodePanel/AddNodeManager.d.ts.map +1 -1
- package/dist/canvas/components/AddNodePanel/AddNodeManager.helpers.cjs +154 -0
- package/dist/canvas/components/AddNodePanel/AddNodeManager.helpers.d.ts +20 -0
- package/dist/canvas/components/AddNodePanel/AddNodeManager.helpers.d.ts.map +1 -0
- package/dist/canvas/components/AddNodePanel/AddNodeManager.helpers.js +114 -0
- package/dist/canvas/components/AddNodePanel/AddNodeManager.js +35 -21
- package/dist/canvas/components/AddNodePanel/createAddNodePreview.cjs +15 -4
- package/dist/canvas/components/AddNodePanel/createAddNodePreview.d.ts +5 -1
- package/dist/canvas/components/AddNodePanel/createAddNodePreview.d.ts.map +1 -1
- package/dist/canvas/components/AddNodePanel/createAddNodePreview.js +15 -4
- package/dist/canvas/components/AddNodePanel/index.d.ts +1 -1
- package/dist/canvas/components/AddNodePanel/index.d.ts.map +1 -1
- package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.cjs +23 -1
- package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.d.ts.map +1 -1
- package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.js +23 -1
- package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvasWithControls.cjs +0 -14
- package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvasWithControls.d.ts.map +1 -1
- package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvasWithControls.js +2 -16
- package/dist/canvas/components/LoopNode/LoopNode.cjs +25 -19
- package/dist/canvas/components/LoopNode/LoopNode.d.ts.map +1 -1
- package/dist/canvas/components/LoopNode/LoopNode.helpers.cjs +33 -42
- package/dist/canvas/components/LoopNode/LoopNode.helpers.d.ts +9 -10
- package/dist/canvas/components/LoopNode/LoopNode.helpers.d.ts.map +1 -1
- package/dist/canvas/components/LoopNode/LoopNode.helpers.js +25 -31
- package/dist/canvas/components/LoopNode/LoopNode.js +17 -11
- package/dist/canvas/components/LoopNode/LoopNodePreview.cjs +17 -4
- package/dist/canvas/components/LoopNode/LoopNodePreview.d.ts.map +1 -1
- package/dist/canvas/components/LoopNode/LoopNodePreview.js +17 -4
- package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.cjs +26 -14
- package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.d.ts.map +1 -1
- package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.js +26 -14
- package/dist/canvas/constants.cjs +0 -8
- package/dist/canvas/constants.d.ts +0 -2
- package/dist/canvas/constants.d.ts.map +1 -1
- package/dist/canvas/constants.js +1 -3
- package/dist/canvas/hooks/useAddNodeOnConnectEnd.cjs +4 -2
- package/dist/canvas/hooks/useAddNodeOnConnectEnd.d.ts.map +1 -1
- package/dist/canvas/hooks/useAddNodeOnConnectEnd.js +4 -2
- package/dist/canvas/storybook-utils/hooks/useCanvasStory.d.ts.map +1 -1
- package/dist/canvas/utils/NodeUtils.cjs +26 -10
- package/dist/canvas/utils/NodeUtils.d.ts +7 -0
- package/dist/canvas/utils/NodeUtils.d.ts.map +1 -1
- package/dist/canvas/utils/NodeUtils.js +13 -6
- package/dist/canvas/utils/collapse.cjs +3 -3
- package/dist/canvas/utils/collapse.d.ts.map +1 -1
- package/dist/canvas/utils/collapse.js +1 -1
- package/dist/canvas/utils/container.cjs +643 -0
- package/dist/canvas/utils/container.d.ts +97 -0
- package/dist/canvas/utils/container.d.ts.map +1 -0
- package/dist/canvas/utils/container.js +567 -0
- package/dist/canvas/utils/createPreviewGraph.cjs +13 -15
- package/dist/canvas/utils/createPreviewGraph.d.ts +9 -7
- package/dist/canvas/utils/createPreviewGraph.d.ts.map +1 -1
- package/dist/canvas/utils/createPreviewGraph.js +13 -15
- package/dist/canvas/utils/createPreviewNode.cjs +16 -10
- package/dist/canvas/utils/createPreviewNode.d.ts.map +1 -1
- package/dist/canvas/utils/createPreviewNode.js +16 -10
- package/dist/canvas/utils/index.cjs +29 -22
- package/dist/canvas/utils/index.d.ts +1 -0
- package/dist/canvas/utils/index.d.ts.map +1 -1
- package/dist/canvas/utils/index.js +1 -0
- package/package.json +3 -3
- package/dist/canvas/components/LoopNode/LoopNode.constants.cjs +0 -56
- package/dist/canvas/components/LoopNode/LoopNode.constants.d.ts +0 -7
- package/dist/canvas/components/LoopNode/LoopNode.constants.d.ts.map +0 -1
- package/dist/canvas/components/LoopNode/LoopNode.constants.js +0 -7
|
@@ -2,10 +2,10 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { NodeResizeControl, useStore, useUpdateNodeInternals } from "../../xyflow/react.js";
|
|
3
3
|
import { cn } from "@uipath/apollo-wind";
|
|
4
4
|
import { memo, useCallback, useEffect, useMemo, useState } from "react";
|
|
5
|
-
import { DEFAULT_CONTAINER_HEIGHT, DEFAULT_CONTAINER_WIDTH } from "../../constants.js";
|
|
6
5
|
import { useOptionalNodeTypeRegistry } from "../../core/index.js";
|
|
7
6
|
import { useElementValidationStatus, useNodeExecutionState } from "../../hooks/index.js";
|
|
8
7
|
import { resolveAdornments } from "../../utils/adornment-resolver.js";
|
|
8
|
+
import { DEFAULT_CONTAINER_HEIGHT, DEFAULT_CONTAINER_MIN_HEIGHT, DEFAULT_CONTAINER_MIN_WIDTH, DEFAULT_CONTAINER_WIDTH } from "../../utils/container.js";
|
|
9
9
|
import { CanvasIcon } from "../../utils/icon-registry.js";
|
|
10
10
|
import { resolveDisplay, resolveHandles } from "../../utils/manifest-resolver.js";
|
|
11
11
|
import { selectIsConnecting, snapToGrid } from "../../utils/NodeUtils.js";
|
|
@@ -18,8 +18,9 @@ import { getStatusBorder } from "../BaseNode/BaseNodeContainer.js";
|
|
|
18
18
|
import { MissingManifestNode } from "../BaseNode/BaseNodeMissingManifest.js";
|
|
19
19
|
import { ButtonHandles } from "../ButtonHandle/index.js";
|
|
20
20
|
import { NodeToolbar } from "../Toolbar/index.js";
|
|
21
|
-
import { DEFAULT_CONTAINER_MIN_HEIGHT, DEFAULT_CONTAINER_MIN_WIDTH, DEFAULT_LOOP_ICON, DEFAULT_LOOP_TITLE } from "./LoopNode.constants.js";
|
|
22
21
|
import { resolveContainerHandleGroups } from "./LoopNode.helpers.js";
|
|
22
|
+
const DEFAULT_LOOP_ICON = 'repeat';
|
|
23
|
+
const DEFAULT_LOOP_TITLE = 'Loop';
|
|
23
24
|
const EMPTY_DATA = {};
|
|
24
25
|
const RESIZE_CONTROLS = [
|
|
25
26
|
{
|
|
@@ -186,7 +187,7 @@ function LoopNodeComponent(props) {
|
|
|
186
187
|
]);
|
|
187
188
|
const handleMouseEnter = useCallback(()=>setIsHovered(true), []);
|
|
188
189
|
const handleMouseLeave = useCallback(()=>setIsHovered(false), []);
|
|
189
|
-
const
|
|
190
|
+
const handleHandleAction = useCallback((_event)=>{
|
|
190
191
|
setIsHovered(false);
|
|
191
192
|
}, []);
|
|
192
193
|
const shouldShowHandles = (isConnecting || selected || isHovered) && !dragging;
|
|
@@ -264,7 +265,7 @@ function LoopNodeComponent(props) {
|
|
|
264
265
|
nodeWidth: containerWidth,
|
|
265
266
|
nodeHeight: containerHeight,
|
|
266
267
|
connectedHandleIds: connectedHandleIds,
|
|
267
|
-
|
|
268
|
+
onHandleAction: handleHandleAction
|
|
268
269
|
})
|
|
269
270
|
]
|
|
270
271
|
});
|
|
@@ -376,24 +377,29 @@ function HandleGroups({ groups, ...handleGroupProps }) {
|
|
|
376
377
|
}, `${group.boundary}:${group.position}:${groupIndex}`))
|
|
377
378
|
});
|
|
378
379
|
}
|
|
379
|
-
function HandleGroup({ nodeId, group, selected, hovered, shouldShowHandles, showAddButton, showNotches, nodeWidth, nodeHeight, connectedHandleIds,
|
|
380
|
+
function HandleGroup({ nodeId, group, selected, hovered, shouldShowHandles, showAddButton, showNotches, nodeWidth, nodeHeight, connectedHandleIds, onHandleAction }) {
|
|
380
381
|
const groupVisible = shouldShowHandles && (group.visible ?? true);
|
|
381
382
|
const position = group.position;
|
|
382
383
|
const enhancedHandles = useMemo(()=>group.handles.map((handle)=>{
|
|
383
|
-
const
|
|
384
|
-
|
|
384
|
+
const showHandle = connectedHandleIds.has(handle.id) || groupVisible;
|
|
385
|
+
if ('inner' === group.boundary) return {
|
|
386
|
+
...handle,
|
|
387
|
+
showHandle,
|
|
388
|
+
showButton: false,
|
|
389
|
+
onAction: void 0
|
|
390
|
+
};
|
|
385
391
|
return {
|
|
386
392
|
...handle,
|
|
387
|
-
showHandle
|
|
388
|
-
showButton:
|
|
389
|
-
onAction: handle.onAction ??
|
|
393
|
+
showHandle,
|
|
394
|
+
showButton: handle.showButton,
|
|
395
|
+
onAction: handle.onAction ?? onHandleAction
|
|
390
396
|
};
|
|
391
397
|
}), [
|
|
392
398
|
group.boundary,
|
|
393
399
|
group.handles,
|
|
394
400
|
connectedHandleIds,
|
|
395
401
|
groupVisible,
|
|
396
|
-
|
|
402
|
+
onHandleAction
|
|
397
403
|
]);
|
|
398
404
|
return /*#__PURE__*/ jsx(ButtonHandles, {
|
|
399
405
|
nodeId: nodeId,
|
|
@@ -39,15 +39,28 @@ function showCenteredContainerPreview({ containerId, reactFlowInstance, previewH
|
|
|
39
39
|
x: (0, NodeUtils_cjs_namespaceObject.snapToGrid)(containerAbsolutePosition.x + relativeCenter.x),
|
|
40
40
|
y: (0, NodeUtils_cjs_namespaceObject.snapToGrid)(containerAbsolutePosition.y + relativeCenter.y)
|
|
41
41
|
};
|
|
42
|
-
|
|
42
|
+
const placement = {
|
|
43
|
+
containerId,
|
|
43
44
|
sourceNodeId: containerId,
|
|
44
|
-
|
|
45
|
+
targetNodeId: containerId,
|
|
46
|
+
mode: 'first-child'
|
|
47
|
+
};
|
|
48
|
+
(0, createPreviewGraph_cjs_namespaceObject.showPreviewGraph)({
|
|
49
|
+
source: {
|
|
50
|
+
nodeId: containerId,
|
|
51
|
+
handleId: previewHandles.sourceHandleId
|
|
52
|
+
},
|
|
45
53
|
reactFlowInstance,
|
|
46
54
|
position: previewCenter,
|
|
47
55
|
positionMode: 'center',
|
|
48
56
|
handlePosition: previewHandles.sourceHandlePosition,
|
|
49
|
-
|
|
50
|
-
|
|
57
|
+
target: {
|
|
58
|
+
nodeId: containerId,
|
|
59
|
+
handleId: previewHandles.targetHandleId
|
|
60
|
+
},
|
|
61
|
+
data: {
|
|
62
|
+
placement
|
|
63
|
+
},
|
|
51
64
|
containerId,
|
|
52
65
|
trailingEdgeId
|
|
53
66
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoopNodePreview.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/LoopNode/LoopNodePreview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"LoopNodePreview.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/LoopNode/LoopNodePreview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAIlF,OAAO,EACL,KAAK,iCAAiC,EAEvC,MAAM,oBAAoB,CAAC;AAE5B,wBAAgB,4BAA4B,CAAC,EAC3C,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,cAAc,GACf,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,cAAc,EAAE,iCAAiC,CAAC;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,QAmCA"}
|
|
@@ -11,15 +11,28 @@ function showCenteredContainerPreview({ containerId, reactFlowInstance, previewH
|
|
|
11
11
|
x: snapToGrid(containerAbsolutePosition.x + relativeCenter.x),
|
|
12
12
|
y: snapToGrid(containerAbsolutePosition.y + relativeCenter.y)
|
|
13
13
|
};
|
|
14
|
-
|
|
14
|
+
const placement = {
|
|
15
|
+
containerId,
|
|
15
16
|
sourceNodeId: containerId,
|
|
16
|
-
|
|
17
|
+
targetNodeId: containerId,
|
|
18
|
+
mode: 'first-child'
|
|
19
|
+
};
|
|
20
|
+
showPreviewGraph({
|
|
21
|
+
source: {
|
|
22
|
+
nodeId: containerId,
|
|
23
|
+
handleId: previewHandles.sourceHandleId
|
|
24
|
+
},
|
|
17
25
|
reactFlowInstance,
|
|
18
26
|
position: previewCenter,
|
|
19
27
|
positionMode: 'center',
|
|
20
28
|
handlePosition: previewHandles.sourceHandlePosition,
|
|
21
|
-
|
|
22
|
-
|
|
29
|
+
target: {
|
|
30
|
+
nodeId: containerId,
|
|
31
|
+
handleId: previewHandles.targetHandleId
|
|
32
|
+
},
|
|
33
|
+
data: {
|
|
34
|
+
placement
|
|
35
|
+
},
|
|
23
36
|
containerId,
|
|
24
37
|
trailingEdgeId
|
|
25
38
|
});
|
|
@@ -29,14 +29,20 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
29
29
|
const react_cjs_namespaceObject = require("../../../xyflow/react.cjs");
|
|
30
30
|
const external_react_namespaceObject = require("react");
|
|
31
31
|
const external_constants_cjs_namespaceObject = require("../../../constants.cjs");
|
|
32
|
+
const index_cjs_namespaceObject = require("../../../core/index.cjs");
|
|
32
33
|
const createPreviewGraph_cjs_namespaceObject = require("../../../utils/createPreviewGraph.cjs");
|
|
33
34
|
const createPreviewNode_cjs_namespaceObject = require("../../../utils/createPreviewNode.cjs");
|
|
34
35
|
const BaseCanvasModeProvider_cjs_namespaceObject = require("../../BaseCanvas/BaseCanvasModeProvider.cjs");
|
|
36
|
+
const LoopNode_helpers_cjs_namespaceObject = require("../../LoopNode/LoopNode.helpers.cjs");
|
|
35
37
|
const external_useEdgeToolbarPositioning_cjs_namespaceObject = require("./useEdgeToolbarPositioning.cjs");
|
|
36
38
|
function useEdgeToolbarState({ edgeId, pathElementRef, isHovered, source, target, sourceHandleId, targetHandleId, sourcePosition, targetPosition, ignoredNodeTypes }) {
|
|
37
39
|
const reactFlow = (0, react_cjs_namespaceObject.useReactFlow)();
|
|
40
|
+
const registry = (0, index_cjs_namespaceObject.useOptionalNodeTypeRegistry)();
|
|
38
41
|
const { mode } = (0, BaseCanvasModeProvider_cjs_namespaceObject.useBaseCanvasMode)();
|
|
39
42
|
const isDesignMode = 'design' === mode;
|
|
43
|
+
const getManifestForNode = (0, external_react_namespaceObject.useCallback)((node)=>node.type ? registry?.getManifest(node.type) : void 0, [
|
|
44
|
+
registry
|
|
45
|
+
]);
|
|
40
46
|
const previewEdge = (0, createPreviewNode_cjs_namespaceObject.isPreviewEdge)({
|
|
41
47
|
id: edgeId,
|
|
42
48
|
source,
|
|
@@ -48,36 +54,42 @@ function useEdgeToolbarState({ edgeId, pathElementRef, isHovered, source, target
|
|
|
48
54
|
targetPosition
|
|
49
55
|
});
|
|
50
56
|
const handleAddNodeOnEdge = (0, external_react_namespaceObject.useCallback)((position)=>{
|
|
51
|
-
const originalEdge =
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
targetHandle: targetHandleId,
|
|
57
|
-
type: 'default'
|
|
57
|
+
const originalEdge = reactFlow.getEdges().find((edge)=>edge.id === edgeId);
|
|
58
|
+
if (!originalEdge) return;
|
|
59
|
+
const sourceEndpoint = {
|
|
60
|
+
nodeId: source,
|
|
61
|
+
handleId: sourceHandleId ?? external_constants_cjs_namespaceObject.DEFAULT_SOURCE_HANDLE_ID
|
|
58
62
|
};
|
|
63
|
+
const containerOverrides = registry ? (0, LoopNode_helpers_cjs_namespaceObject.resolveContainerAddNodePreview)({
|
|
64
|
+
source: sourceEndpoint,
|
|
65
|
+
sourceHandleType: 'source',
|
|
66
|
+
reactFlowInstance: reactFlow,
|
|
67
|
+
getManifestForNode
|
|
68
|
+
}) : null;
|
|
59
69
|
(0, createPreviewGraph_cjs_namespaceObject.showPreviewGraph)({
|
|
60
|
-
|
|
61
|
-
sourceHandleId: sourceHandleId ?? external_constants_cjs_namespaceObject.DEFAULT_SOURCE_HANDLE_ID,
|
|
70
|
+
source: sourceEndpoint,
|
|
62
71
|
reactFlowInstance: reactFlow,
|
|
63
72
|
position,
|
|
73
|
+
positionMode: 'drop',
|
|
64
74
|
data: {
|
|
65
75
|
originalEdge
|
|
66
76
|
},
|
|
67
77
|
sourceHandleType: 'source',
|
|
68
78
|
handlePosition: sourcePosition,
|
|
69
79
|
ignoredNodeTypes: ignoredNodeTypes ?? [],
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
80
|
+
target: {
|
|
81
|
+
nodeId: target,
|
|
82
|
+
handleId: targetHandleId
|
|
83
|
+
},
|
|
84
|
+
...containerOverrides ?? {}
|
|
75
85
|
});
|
|
76
86
|
}, [
|
|
77
87
|
sourcePosition,
|
|
78
88
|
source,
|
|
79
89
|
sourceHandleId,
|
|
80
90
|
reactFlow,
|
|
91
|
+
registry,
|
|
92
|
+
getManifestForNode,
|
|
81
93
|
target,
|
|
82
94
|
targetHandleId,
|
|
83
95
|
edgeId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEdgeToolbarState.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,QAAQ,EAAgB,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"useEdgeToolbarState.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,QAAQ,EAAgB,MAAM,0CAA0C,CAAC;AAQlG,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAGtF,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC9D,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,cAAc,EAAE,QAAQ,CAAC;IACzB,cAAc,EAAE,QAAQ,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACnD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;CAC3D;AAED,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,cAAc,EACd,SAAS,EACT,MAAM,EACN,MAAM,EACN,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,gBAAgB,GACjB,EAAE,wBAAwB,GAAG,gBAAgB,CA+F7C"}
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import { useReactFlow } from "../../../xyflow/react.js";
|
|
2
2
|
import { useCallback, useMemo } from "react";
|
|
3
3
|
import { DEFAULT_SOURCE_HANDLE_ID } from "../../../constants.js";
|
|
4
|
+
import { useOptionalNodeTypeRegistry } from "../../../core/index.js";
|
|
4
5
|
import { showPreviewGraph } from "../../../utils/createPreviewGraph.js";
|
|
5
6
|
import { isPreviewEdge } from "../../../utils/createPreviewNode.js";
|
|
6
7
|
import { useBaseCanvasMode } from "../../BaseCanvas/BaseCanvasModeProvider.js";
|
|
8
|
+
import { resolveContainerAddNodePreview } from "../../LoopNode/LoopNode.helpers.js";
|
|
7
9
|
import { useEdgeToolbarPositioning } from "./useEdgeToolbarPositioning.js";
|
|
8
10
|
function useEdgeToolbarState({ edgeId, pathElementRef, isHovered, source, target, sourceHandleId, targetHandleId, sourcePosition, targetPosition, ignoredNodeTypes }) {
|
|
9
11
|
const reactFlow = useReactFlow();
|
|
12
|
+
const registry = useOptionalNodeTypeRegistry();
|
|
10
13
|
const { mode } = useBaseCanvasMode();
|
|
11
14
|
const isDesignMode = 'design' === mode;
|
|
15
|
+
const getManifestForNode = useCallback((node)=>node.type ? registry?.getManifest(node.type) : void 0, [
|
|
16
|
+
registry
|
|
17
|
+
]);
|
|
12
18
|
const previewEdge = isPreviewEdge({
|
|
13
19
|
id: edgeId,
|
|
14
20
|
source,
|
|
@@ -20,36 +26,42 @@ function useEdgeToolbarState({ edgeId, pathElementRef, isHovered, source, target
|
|
|
20
26
|
targetPosition
|
|
21
27
|
});
|
|
22
28
|
const handleAddNodeOnEdge = useCallback((position)=>{
|
|
23
|
-
const originalEdge =
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
targetHandle: targetHandleId,
|
|
29
|
-
type: 'default'
|
|
29
|
+
const originalEdge = reactFlow.getEdges().find((edge)=>edge.id === edgeId);
|
|
30
|
+
if (!originalEdge) return;
|
|
31
|
+
const sourceEndpoint = {
|
|
32
|
+
nodeId: source,
|
|
33
|
+
handleId: sourceHandleId ?? DEFAULT_SOURCE_HANDLE_ID
|
|
30
34
|
};
|
|
35
|
+
const containerOverrides = registry ? resolveContainerAddNodePreview({
|
|
36
|
+
source: sourceEndpoint,
|
|
37
|
+
sourceHandleType: 'source',
|
|
38
|
+
reactFlowInstance: reactFlow,
|
|
39
|
+
getManifestForNode
|
|
40
|
+
}) : null;
|
|
31
41
|
showPreviewGraph({
|
|
32
|
-
|
|
33
|
-
sourceHandleId: sourceHandleId ?? DEFAULT_SOURCE_HANDLE_ID,
|
|
42
|
+
source: sourceEndpoint,
|
|
34
43
|
reactFlowInstance: reactFlow,
|
|
35
44
|
position,
|
|
45
|
+
positionMode: 'drop',
|
|
36
46
|
data: {
|
|
37
47
|
originalEdge
|
|
38
48
|
},
|
|
39
49
|
sourceHandleType: 'source',
|
|
40
50
|
handlePosition: sourcePosition,
|
|
41
51
|
ignoredNodeTypes: ignoredNodeTypes ?? [],
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
52
|
+
target: {
|
|
53
|
+
nodeId: target,
|
|
54
|
+
handleId: targetHandleId
|
|
55
|
+
},
|
|
56
|
+
...containerOverrides ?? {}
|
|
47
57
|
});
|
|
48
58
|
}, [
|
|
49
59
|
sourcePosition,
|
|
50
60
|
source,
|
|
51
61
|
sourceHandleId,
|
|
52
62
|
reactFlow,
|
|
63
|
+
registry,
|
|
64
|
+
getManifestForNode,
|
|
53
65
|
target,
|
|
54
66
|
targetHandleId,
|
|
55
67
|
edgeId,
|
|
@@ -25,8 +25,6 @@ var __webpack_exports__ = {};
|
|
|
25
25
|
__webpack_require__.r(__webpack_exports__);
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
27
|
CANVAS_COMPACT_BREAKPOINT: ()=>CANVAS_COMPACT_BREAKPOINT,
|
|
28
|
-
DEFAULT_CONTAINER_HEIGHT: ()=>DEFAULT_CONTAINER_HEIGHT,
|
|
29
|
-
DEFAULT_CONTAINER_WIDTH: ()=>DEFAULT_CONTAINER_WIDTH,
|
|
30
28
|
DEFAULT_NODE_SIZE: ()=>DEFAULT_NODE_SIZE,
|
|
31
29
|
DEFAULT_RECTANGLE_NODE_WIDTH: ()=>DEFAULT_RECTANGLE_NODE_WIDTH,
|
|
32
30
|
DEFAULT_SOURCE_HANDLE_ID: ()=>DEFAULT_SOURCE_HANDLE_ID,
|
|
@@ -60,8 +58,6 @@ const PREVIEW_EDGE_ID = 'preview-edge-id';
|
|
|
60
58
|
const DEFAULT_SOURCE_HANDLE_ID = 'output';
|
|
61
59
|
const DEFAULT_NODE_SIZE = 96;
|
|
62
60
|
const GRID_SPACING = 16;
|
|
63
|
-
const DEFAULT_CONTAINER_WIDTH = 35 * GRID_SPACING;
|
|
64
|
-
const DEFAULT_CONTAINER_HEIGHT = 20 * GRID_SPACING;
|
|
65
61
|
const CANVAS_COMPACT_BREAKPOINT = 600;
|
|
66
62
|
const TOOLBOX_WIDTH = 320;
|
|
67
63
|
const TOOLBOX_HEIGHT = 440;
|
|
@@ -86,8 +82,6 @@ const NODE_BADGE_SIZE = 20;
|
|
|
86
82
|
const NODE_BADGE_INSET_SQUARE = 6;
|
|
87
83
|
const NODE_BADGE_INSET_CIRCLE = 12;
|
|
88
84
|
exports.CANVAS_COMPACT_BREAKPOINT = __webpack_exports__.CANVAS_COMPACT_BREAKPOINT;
|
|
89
|
-
exports.DEFAULT_CONTAINER_HEIGHT = __webpack_exports__.DEFAULT_CONTAINER_HEIGHT;
|
|
90
|
-
exports.DEFAULT_CONTAINER_WIDTH = __webpack_exports__.DEFAULT_CONTAINER_WIDTH;
|
|
91
85
|
exports.DEFAULT_NODE_SIZE = __webpack_exports__.DEFAULT_NODE_SIZE;
|
|
92
86
|
exports.DEFAULT_RECTANGLE_NODE_WIDTH = __webpack_exports__.DEFAULT_RECTANGLE_NODE_WIDTH;
|
|
93
87
|
exports.DEFAULT_SOURCE_HANDLE_ID = __webpack_exports__.DEFAULT_SOURCE_HANDLE_ID;
|
|
@@ -117,8 +111,6 @@ exports.TOOLBOX_PADDING_Y = __webpack_exports__.TOOLBOX_PADDING_Y;
|
|
|
117
111
|
exports.TOOLBOX_WIDTH = __webpack_exports__.TOOLBOX_WIDTH;
|
|
118
112
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
119
113
|
"CANVAS_COMPACT_BREAKPOINT",
|
|
120
|
-
"DEFAULT_CONTAINER_HEIGHT",
|
|
121
|
-
"DEFAULT_CONTAINER_WIDTH",
|
|
122
114
|
"DEFAULT_NODE_SIZE",
|
|
123
115
|
"DEFAULT_RECTANGLE_NODE_WIDTH",
|
|
124
116
|
"DEFAULT_SOURCE_HANDLE_ID",
|
|
@@ -3,8 +3,6 @@ export declare const PREVIEW_EDGE_ID = "preview-edge-id";
|
|
|
3
3
|
export declare const DEFAULT_SOURCE_HANDLE_ID = "output";
|
|
4
4
|
export declare const DEFAULT_NODE_SIZE = 96;
|
|
5
5
|
export declare const GRID_SPACING = 16;
|
|
6
|
-
export declare const DEFAULT_CONTAINER_WIDTH: number;
|
|
7
|
-
export declare const DEFAULT_CONTAINER_HEIGHT: number;
|
|
8
6
|
export declare const CANVAS_COMPACT_BREAKPOINT = 600;
|
|
9
7
|
export declare const TOOLBOX_WIDTH = 320;
|
|
10
8
|
export declare const TOOLBOX_HEIGHT = 440;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/canvas/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,wBAAwB,WAAW,CAAC;AACjD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,eAAO,MAAM,YAAY,KAAK,CAAC;AAG/B,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/canvas/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,wBAAwB,WAAW,CAAC;AACjD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,eAAO,MAAM,YAAY,KAAK,CAAC;AAG/B,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAG7C,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,eAAO,MAAM,WAAW,KAAK,CAAC;AAU9B,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAG/C,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAGhD,eAAO,MAAM,mBAAmB,QAAmB,CAAC;AACpD,eAAO,MAAM,yBAAyB,QAAmB,CAAC;AAC1D,eAAO,MAAM,yBAAyB,QAAoB,CAAC;AAC3D,eAAO,MAAM,yBAAyB,QAAoB,CAAC;AAO3D,eAAO,MAAM,2BAA2B,QAAyB,CAAC;AAClE,eAAO,MAAM,sBAAsB,QAAyB,CAAC;AAC7D,eAAO,MAAM,qBAAqB,QAAyB,CAAC;AAC5D,eAAO,MAAM,uBAAuB,QAAyB,CAAC;AAC9D,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAGlC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAGvC,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,oCAAoC,MAAM,CAAC;AAGxD,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,uBAAuB,KAAK,CAAC"}
|
package/dist/canvas/constants.js
CHANGED
|
@@ -3,8 +3,6 @@ const PREVIEW_EDGE_ID = 'preview-edge-id';
|
|
|
3
3
|
const DEFAULT_SOURCE_HANDLE_ID = 'output';
|
|
4
4
|
const DEFAULT_NODE_SIZE = 96;
|
|
5
5
|
const GRID_SPACING = 16;
|
|
6
|
-
const DEFAULT_CONTAINER_WIDTH = 35 * GRID_SPACING;
|
|
7
|
-
const DEFAULT_CONTAINER_HEIGHT = 20 * GRID_SPACING;
|
|
8
6
|
const CANVAS_COMPACT_BREAKPOINT = 600;
|
|
9
7
|
const TOOLBOX_WIDTH = 320;
|
|
10
8
|
const TOOLBOX_HEIGHT = 440;
|
|
@@ -28,4 +26,4 @@ const NODE_TEXT_BOTTOM_OFFSET_WITH_HANDLES = -40;
|
|
|
28
26
|
const NODE_BADGE_SIZE = 20;
|
|
29
27
|
const NODE_BADGE_INSET_SQUARE = 6;
|
|
30
28
|
const NODE_BADGE_INSET_CIRCLE = 12;
|
|
31
|
-
export { CANVAS_COMPACT_BREAKPOINT,
|
|
29
|
+
export { CANVAS_COMPACT_BREAKPOINT, DEFAULT_NODE_SIZE, DEFAULT_RECTANGLE_NODE_WIDTH, DEFAULT_SOURCE_HANDLE_ID, FLOATING_CANVAS_PANEL_OFFSET, GRID_SPACING, NODE_BADGE_INSET_CIRCLE, NODE_BADGE_INSET_SQUARE, NODE_BADGE_SIZE, NODE_BORDER_SIZE, NODE_CONTAINER_RADIUS_RATIO, NODE_ERROR_ICON_SIZE, NODE_HEIGHT_DEFAULT, NODE_HEIGHT_FOOTER_BUTTON, NODE_HEIGHT_FOOTER_DOUBLE, NODE_HEIGHT_FOOTER_SINGLE, NODE_INNER_ICON_RATIO, NODE_INNER_RADIUS_RATIO, NODE_INNER_SHAPE_RATIO, NODE_TEXT_BOTTOM_OFFSET, NODE_TEXT_BOTTOM_OFFSET_WITH_HANDLES, PREVIEW_EDGE_ID, PREVIEW_NODE_ID, TOOLBOX_GAP, TOOLBOX_HEIGHT, TOOLBOX_PADDING_X, TOOLBOX_PADDING_Y, TOOLBOX_WIDTH };
|
|
@@ -49,8 +49,10 @@ function useAddNodeOnConnectEnd(ignoredNodeTypes = EMPTY_IGNORED_NODE_TYPES) {
|
|
|
49
49
|
if (!clientPosition) return;
|
|
50
50
|
const flowDropPosition = reactFlowInstance.screenToFlowPosition(clientPosition);
|
|
51
51
|
(0, index_cjs_namespaceObject.showPreviewGraph)({
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
source: {
|
|
53
|
+
nodeId: connectionState.fromNode.id,
|
|
54
|
+
handleId: connectionState.fromHandle.id ?? 'output'
|
|
55
|
+
},
|
|
54
56
|
reactFlowInstance,
|
|
55
57
|
position: flowDropPosition,
|
|
56
58
|
sourceHandleType: connectionState.fromHandle.type,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAddNodeOnConnectEnd.d.ts","sourceRoot":"","sources":["../../../src/canvas/hooks/useAddNodeOnConnectEnd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAgB,MAAM,0CAA0C,CAAC;AAoB3F,wBAAgB,sBAAsB,CAAC,gBAAgB,GAAE,MAAM,EAA6B,
|
|
1
|
+
{"version":3,"file":"useAddNodeOnConnectEnd.d.ts","sourceRoot":"","sources":["../../../src/canvas/hooks/useAddNodeOnConnectEnd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAgB,MAAM,0CAA0C,CAAC;AAoB3F,wBAAgB,sBAAsB,CAAC,gBAAgB,GAAE,MAAM,EAA6B,gBAiC3F"}
|
|
@@ -21,8 +21,10 @@ function useAddNodeOnConnectEnd(ignoredNodeTypes = EMPTY_IGNORED_NODE_TYPES) {
|
|
|
21
21
|
if (!clientPosition) return;
|
|
22
22
|
const flowDropPosition = reactFlowInstance.screenToFlowPosition(clientPosition);
|
|
23
23
|
showPreviewGraph({
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
source: {
|
|
25
|
+
nodeId: connectionState.fromNode.id,
|
|
26
|
+
handleId: connectionState.fromHandle.id ?? 'output'
|
|
27
|
+
},
|
|
26
28
|
reactFlowInstance,
|
|
27
29
|
position: flowDropPosition,
|
|
28
30
|
sourceHandleType: connectionState.fromHandle.type,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCanvasStory.d.ts","sourceRoot":"","sources":["../../../../src/canvas/storybook-utils/hooks/useCanvasStory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,SAAS,EACV,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAW,aAAa,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAMjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"useCanvasStory.d.ts","sourceRoot":"","sources":["../../../../src/canvas/storybook-utils/hooks/useCanvasStory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,SAAS,EACV,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAW,aAAa,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAMjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMjD,MAAM,WAAW,qBAAqB;IAIpC,YAAY,EAAE,IAAI,EAAE,CAAC;IAMrB,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IAMtB,aAAa,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAKlC,mBAAmB,CAAC,EAAE,SAAS,CAAC;CACjC;AAKD,MAAM,WAAW,oBAAoB;IAEnC,KAAK,EAAE,IAAI,EAAE,CAAC;IAEd,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEvD,aAAa,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAGnD,KAAK,EAAE,IAAI,EAAE,CAAC;IAEd,SAAS,EAAE,SAAS,CAAC;IAErB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEvD,aAAa,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAGnD,SAAS,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAG5C,gBAAgB,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;IAEzD,SAAS,EAAE,SAAS,CAAC;IAMrB,WAAW,EAAE;QACX,KAAK,EAAE,IAAI,EAAE,CAAC;QACd,KAAK,EAAE,IAAI,EAAE,CAAC;QACd,aAAa,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,aAAa,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,SAAS,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;QAC5C,SAAS,EAAE,SAAS,CAAC;QACrB,SAAS,EAAE,SAAS,CAAC;KACtB,CAAC;CACH;AA8BD,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,CA8DnF;AAYD,wBAAgB,wBAAwB,CAAC,aAAa,GAAE,SAAS,CAAC,MAAM,CAAY,GAAG,SAAS,CAY/F"}
|
|
@@ -26,11 +26,14 @@ __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,
|
|
31
|
-
getHandleIndex: ()=>getHandleIndex,
|
|
32
29
|
selectIsConnecting: ()=>selectIsConnecting,
|
|
33
|
-
|
|
30
|
+
clamp: ()=>clamp,
|
|
31
|
+
getHandleIndex: ()=>getHandleIndex,
|
|
32
|
+
snapToGrid: ()=>snapToGrid,
|
|
33
|
+
snapUpToGrid: ()=>snapUpToGrid,
|
|
34
|
+
resolveHandleContext: ()=>resolveHandleContext,
|
|
35
|
+
resolveCollisions: ()=>resolveCollisions,
|
|
36
|
+
snapDownToGrid: ()=>snapDownToGrid
|
|
34
37
|
});
|
|
35
38
|
const react_cjs_namespaceObject = require("../xyflow/react.cjs");
|
|
36
39
|
const external_constants_cjs_namespaceObject = require("../constants.cjs");
|
|
@@ -63,25 +66,32 @@ function getNonOverlappingPositionForDirection(nodes, newNodePosition, newNodeSt
|
|
|
63
66
|
return newNodePosition;
|
|
64
67
|
}
|
|
65
68
|
const snapToGrid = (value)=>Math.round(value / external_constants_cjs_namespaceObject.GRID_SPACING) * external_constants_cjs_namespaceObject.GRID_SPACING;
|
|
66
|
-
|
|
69
|
+
const snapUpToGrid = (value)=>Math.ceil(value / external_constants_cjs_namespaceObject.GRID_SPACING) * external_constants_cjs_namespaceObject.GRID_SPACING;
|
|
70
|
+
const snapDownToGrid = (value)=>Math.floor(value / external_constants_cjs_namespaceObject.GRID_SPACING) * external_constants_cjs_namespaceObject.GRID_SPACING;
|
|
71
|
+
const clamp = (value, min, max)=>Math.min(Math.max(value, min), max);
|
|
72
|
+
function getBoxesFromNodes(nodes, margin = 0, getNodeSize) {
|
|
67
73
|
const boxes = new Array(nodes.length);
|
|
68
74
|
for(let i = 0; i < nodes.length; i++){
|
|
69
75
|
const node = nodes[i];
|
|
76
|
+
const nodeSize = getNodeSize?.(node) ?? {
|
|
77
|
+
width: node.width ?? node.measured?.width ?? external_constants_cjs_namespaceObject.DEFAULT_NODE_SIZE,
|
|
78
|
+
height: node.height ?? node.measured?.height ?? external_constants_cjs_namespaceObject.DEFAULT_NODE_SIZE
|
|
79
|
+
};
|
|
70
80
|
boxes[i] = {
|
|
71
81
|
x: node.position.x - margin,
|
|
72
82
|
y: node.position.y - margin,
|
|
73
|
-
width:
|
|
74
|
-
height:
|
|
83
|
+
width: nodeSize.width + 2 * margin,
|
|
84
|
+
height: nodeSize.height + 2 * margin,
|
|
75
85
|
node,
|
|
76
86
|
moved: false
|
|
77
87
|
};
|
|
78
88
|
}
|
|
79
89
|
return boxes;
|
|
80
90
|
}
|
|
81
|
-
const resolveCollisions = (nodes, { maxIterations = 50, overlapThreshold = 0, margin = 2 * external_constants_cjs_namespaceObject.GRID_SPACING, ignoredNodeTypes } = {})=>{
|
|
91
|
+
const resolveCollisions = (nodes, { maxIterations = 50, overlapThreshold = 0, margin = 2 * external_constants_cjs_namespaceObject.GRID_SPACING, ignoredNodeTypes, getNodeSize } = {})=>{
|
|
82
92
|
const ignoredSet = new Set(ignoredNodeTypes);
|
|
83
93
|
const collisionNodes = ignoredSet.size > 0 ? nodes.filter((n)=>!ignoredSet.has(n.type ?? '')) : nodes;
|
|
84
|
-
const boxes = getBoxesFromNodes(collisionNodes, margin);
|
|
94
|
+
const boxes = getBoxesFromNodes(collisionNodes, margin, getNodeSize);
|
|
85
95
|
for(let iter = 0; iter < maxIterations; iter++){
|
|
86
96
|
let moved = false;
|
|
87
97
|
for(let i = 0; i < boxes.length; i++)for(let j = i + 1; j < boxes.length; j++){
|
|
@@ -143,21 +153,27 @@ function getHandleIndex(handleId, position, allHandles) {
|
|
|
143
153
|
const index = peers.findIndex((h)=>h.id === handleId);
|
|
144
154
|
return -1 === index ? null : index;
|
|
145
155
|
}
|
|
156
|
+
exports.clamp = __webpack_exports__.clamp;
|
|
146
157
|
exports.getAbsolutePosition = __webpack_exports__.getAbsolutePosition;
|
|
147
158
|
exports.getHandleIndex = __webpack_exports__.getHandleIndex;
|
|
148
159
|
exports.getNonOverlappingPositionForDirection = __webpack_exports__.getNonOverlappingPositionForDirection;
|
|
149
160
|
exports.resolveCollisions = __webpack_exports__.resolveCollisions;
|
|
150
161
|
exports.resolveHandleContext = __webpack_exports__.resolveHandleContext;
|
|
151
162
|
exports.selectIsConnecting = __webpack_exports__.selectIsConnecting;
|
|
163
|
+
exports.snapDownToGrid = __webpack_exports__.snapDownToGrid;
|
|
152
164
|
exports.snapToGrid = __webpack_exports__.snapToGrid;
|
|
165
|
+
exports.snapUpToGrid = __webpack_exports__.snapUpToGrid;
|
|
153
166
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
167
|
+
"clamp",
|
|
154
168
|
"getAbsolutePosition",
|
|
155
169
|
"getHandleIndex",
|
|
156
170
|
"getNonOverlappingPositionForDirection",
|
|
157
171
|
"resolveCollisions",
|
|
158
172
|
"resolveHandleContext",
|
|
159
173
|
"selectIsConnecting",
|
|
160
|
-
"
|
|
174
|
+
"snapDownToGrid",
|
|
175
|
+
"snapToGrid",
|
|
176
|
+
"snapUpToGrid"
|
|
161
177
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
162
178
|
Object.defineProperty(exports, '__esModule', {
|
|
163
179
|
value: true
|
|
@@ -12,11 +12,18 @@ export declare function getNonOverlappingPositionForDirection(nodes: Node[], new
|
|
|
12
12
|
y: 'up' | 'down';
|
|
13
13
|
}): XYPosition;
|
|
14
14
|
export declare const snapToGrid: (value: number) => number;
|
|
15
|
+
export declare const snapUpToGrid: (value: number) => number;
|
|
16
|
+
export declare const snapDownToGrid: (value: number) => number;
|
|
17
|
+
export declare const clamp: (value: number, min: number, max: number) => number;
|
|
15
18
|
export type CollisionAlgorithmOptions = {
|
|
16
19
|
maxIterations?: number;
|
|
17
20
|
overlapThreshold?: number;
|
|
18
21
|
margin?: number;
|
|
19
22
|
ignoredNodeTypes?: string[];
|
|
23
|
+
getNodeSize?: (node: Node) => {
|
|
24
|
+
width: number;
|
|
25
|
+
height: number;
|
|
26
|
+
};
|
|
20
27
|
};
|
|
21
28
|
export type CollisionAlgorithm = (nodes: Node[], options?: CollisionAlgorithmOptions) => Node[];
|
|
22
29
|
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,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,0CAA0C,CAAC;AAQlD,eAAO,MAAM,kBAAkB,GAAI,OAAO,cAAc,YAAkC,CAAC;AAS3F,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;
|
|
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,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,0CAA0C,CAAC;AAQlD,eAAO,MAAM,kBAAkB,GAAI,OAAO,cAAc,YAAkC,CAAC;AAS3F,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,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,MAE5C,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,KAAG,MAE9C,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,KAAG,MAE/D,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;IAE5B,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;AAyChG,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"}
|
|
@@ -29,25 +29,32 @@ function getNonOverlappingPositionForDirection(nodes, newNodePosition, newNodeSt
|
|
|
29
29
|
return newNodePosition;
|
|
30
30
|
}
|
|
31
31
|
const snapToGrid = (value)=>Math.round(value / GRID_SPACING) * GRID_SPACING;
|
|
32
|
-
|
|
32
|
+
const snapUpToGrid = (value)=>Math.ceil(value / GRID_SPACING) * GRID_SPACING;
|
|
33
|
+
const snapDownToGrid = (value)=>Math.floor(value / GRID_SPACING) * GRID_SPACING;
|
|
34
|
+
const clamp = (value, min, max)=>Math.min(Math.max(value, min), max);
|
|
35
|
+
function getBoxesFromNodes(nodes, margin = 0, getNodeSize) {
|
|
33
36
|
const boxes = new Array(nodes.length);
|
|
34
37
|
for(let i = 0; i < nodes.length; i++){
|
|
35
38
|
const node = nodes[i];
|
|
39
|
+
const nodeSize = getNodeSize?.(node) ?? {
|
|
40
|
+
width: node.width ?? node.measured?.width ?? DEFAULT_NODE_SIZE,
|
|
41
|
+
height: node.height ?? node.measured?.height ?? DEFAULT_NODE_SIZE
|
|
42
|
+
};
|
|
36
43
|
boxes[i] = {
|
|
37
44
|
x: node.position.x - margin,
|
|
38
45
|
y: node.position.y - margin,
|
|
39
|
-
width:
|
|
40
|
-
height:
|
|
46
|
+
width: nodeSize.width + 2 * margin,
|
|
47
|
+
height: nodeSize.height + 2 * margin,
|
|
41
48
|
node,
|
|
42
49
|
moved: false
|
|
43
50
|
};
|
|
44
51
|
}
|
|
45
52
|
return boxes;
|
|
46
53
|
}
|
|
47
|
-
const resolveCollisions = (nodes, { maxIterations = 50, overlapThreshold = 0, margin = 2 * GRID_SPACING, ignoredNodeTypes } = {})=>{
|
|
54
|
+
const resolveCollisions = (nodes, { maxIterations = 50, overlapThreshold = 0, margin = 2 * GRID_SPACING, ignoredNodeTypes, getNodeSize } = {})=>{
|
|
48
55
|
const ignoredSet = new Set(ignoredNodeTypes);
|
|
49
56
|
const collisionNodes = ignoredSet.size > 0 ? nodes.filter((n)=>!ignoredSet.has(n.type ?? '')) : nodes;
|
|
50
|
-
const boxes = getBoxesFromNodes(collisionNodes, margin);
|
|
57
|
+
const boxes = getBoxesFromNodes(collisionNodes, margin, getNodeSize);
|
|
51
58
|
for(let iter = 0; iter < maxIterations; iter++){
|
|
52
59
|
let moved = false;
|
|
53
60
|
for(let i = 0; i < boxes.length; i++)for(let j = i + 1; j < boxes.length; j++){
|
|
@@ -109,4 +116,4 @@ function getHandleIndex(handleId, position, allHandles) {
|
|
|
109
116
|
const index = peers.findIndex((h)=>h.id === handleId);
|
|
110
117
|
return -1 === index ? null : index;
|
|
111
118
|
}
|
|
112
|
-
export { getAbsolutePosition, getHandleIndex, getNonOverlappingPositionForDirection, resolveCollisions, resolveHandleContext, selectIsConnecting, snapToGrid };
|
|
119
|
+
export { clamp, getAbsolutePosition, getHandleIndex, getNonOverlappingPositionForDirection, resolveCollisions, resolveHandleContext, selectIsConnecting, snapDownToGrid, snapToGrid, snapUpToGrid };
|
|
@@ -31,7 +31,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
31
31
|
COLLAPSED_NODE_SIZE: ()=>COLLAPSED_NODE_SIZE,
|
|
32
32
|
getCollapsedSize: ()=>getCollapsedSize
|
|
33
33
|
});
|
|
34
|
-
const
|
|
34
|
+
const external_container_cjs_namespaceObject = require("./container.cjs");
|
|
35
35
|
const COLLAPSED_NODE_SIZE = 96;
|
|
36
36
|
const EXPANDED_RECTANGLE_WIDTH = 288;
|
|
37
37
|
const getCollapsedShape = (originalShape)=>'rectangle' === originalShape ? 'square' : originalShape;
|
|
@@ -42,8 +42,8 @@ const getCollapsedSize = ()=>({
|
|
|
42
42
|
});
|
|
43
43
|
const getExpandedSize = (shape)=>{
|
|
44
44
|
if ('container' === shape) return {
|
|
45
|
-
width:
|
|
46
|
-
height:
|
|
45
|
+
width: external_container_cjs_namespaceObject.DEFAULT_CONTAINER_WIDTH,
|
|
46
|
+
height: external_container_cjs_namespaceObject.DEFAULT_CONTAINER_HEIGHT
|
|
47
47
|
};
|
|
48
48
|
return {
|
|
49
49
|
width: 'rectangle' === shape ? EXPANDED_RECTANGLE_WIDTH : COLLAPSED_NODE_SIZE,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collapse.d.ts","sourceRoot":"","sources":["../../../src/canvas/utils/collapse.ts"],"names":[],"mappings":"
|
|
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;AAM3D,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;CAYlF,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DEFAULT_CONTAINER_HEIGHT, DEFAULT_CONTAINER_WIDTH } from "
|
|
1
|
+
import { DEFAULT_CONTAINER_HEIGHT, DEFAULT_CONTAINER_WIDTH } from "./container.js";
|
|
2
2
|
const COLLAPSED_NODE_SIZE = 96;
|
|
3
3
|
const EXPANDED_RECTANGLE_WIDTH = 288;
|
|
4
4
|
const getCollapsedShape = (originalShape)=>'rectangle' === originalShape ? 'square' : originalShape;
|