@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.
Files changed (135) hide show
  1. package/dist/canvas/components/AddNodePanel/AddNodeManager.cjs +6 -1
  2. package/dist/canvas/components/AddNodePanel/AddNodeManager.d.ts.map +1 -1
  3. package/dist/canvas/components/AddNodePanel/AddNodeManager.js +6 -1
  4. package/dist/canvas/components/AddNodePanel/createAddNodePreview.cjs +9 -3
  5. package/dist/canvas/components/AddNodePanel/createAddNodePreview.d.ts.map +1 -1
  6. package/dist/canvas/components/AddNodePanel/createAddNodePreview.js +9 -3
  7. package/dist/canvas/components/AgentCanvas/agent-flow.manifest.d.ts +2 -1
  8. package/dist/canvas/components/AgentCanvas/agent-flow.manifest.d.ts.map +1 -1
  9. package/dist/canvas/components/BaseNode/BaseNode.cjs +5 -4
  10. package/dist/canvas/components/BaseNode/BaseNode.d.ts.map +1 -1
  11. package/dist/canvas/components/BaseNode/BaseNode.js +4 -3
  12. package/dist/canvas/components/ButtonHandle/ButtonHandle.cjs +108 -13
  13. package/dist/canvas/components/ButtonHandle/ButtonHandle.d.ts +10 -5
  14. package/dist/canvas/components/ButtonHandle/ButtonHandle.d.ts.map +1 -1
  15. package/dist/canvas/components/ButtonHandle/ButtonHandle.js +108 -13
  16. package/dist/canvas/components/ButtonHandle/ButtonHandleLayoutUtils.cjs +159 -0
  17. package/dist/canvas/components/ButtonHandle/ButtonHandleLayoutUtils.d.ts +21 -0
  18. package/dist/canvas/components/ButtonHandle/ButtonHandleLayoutUtils.d.ts.map +1 -0
  19. package/dist/canvas/components/ButtonHandle/ButtonHandleLayoutUtils.js +122 -0
  20. package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.cjs +10 -2
  21. package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.d.ts +2 -0
  22. package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.d.ts.map +1 -1
  23. package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.js +5 -3
  24. package/dist/canvas/components/ButtonHandle/HandleButton.cjs +13 -2
  25. package/dist/canvas/components/ButtonHandle/HandleButton.d.ts +10 -1
  26. package/dist/canvas/components/ButtonHandle/HandleButton.d.ts.map +1 -1
  27. package/dist/canvas/components/ButtonHandle/HandleButton.js +13 -2
  28. package/dist/canvas/components/ButtonHandle/useButtonHandles.cjs +4 -2
  29. package/dist/canvas/components/ButtonHandle/useButtonHandles.d.ts +2 -1
  30. package/dist/canvas/components/ButtonHandle/useButtonHandles.d.ts.map +1 -1
  31. package/dist/canvas/components/ButtonHandle/useButtonHandles.js +4 -2
  32. package/dist/canvas/components/Edges/SequenceEdge.cjs +8 -4
  33. package/dist/canvas/components/Edges/SequenceEdge.js +8 -4
  34. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.cjs +24 -22
  35. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.d.ts.map +1 -1
  36. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.js +25 -23
  37. package/dist/canvas/components/LoopNode/LoopCanvasNode.cjs +75 -0
  38. package/dist/canvas/components/LoopNode/LoopCanvasNode.d.ts +6 -0
  39. package/dist/canvas/components/LoopNode/LoopCanvasNode.d.ts.map +1 -0
  40. package/dist/canvas/components/LoopNode/LoopCanvasNode.js +41 -0
  41. package/dist/canvas/components/LoopNode/LoopNode.cjs +447 -0
  42. package/dist/canvas/components/LoopNode/LoopNode.constants.cjs +56 -0
  43. package/dist/canvas/components/LoopNode/LoopNode.constants.d.ts +7 -0
  44. package/dist/canvas/components/LoopNode/LoopNode.constants.d.ts.map +1 -0
  45. package/dist/canvas/components/LoopNode/LoopNode.constants.js +7 -0
  46. package/dist/canvas/components/LoopNode/LoopNode.d.ts +5 -0
  47. package/dist/canvas/components/LoopNode/LoopNode.d.ts.map +1 -0
  48. package/dist/canvas/components/LoopNode/LoopNode.helpers.cjs +145 -0
  49. package/dist/canvas/components/LoopNode/LoopNode.helpers.d.ts +29 -0
  50. package/dist/canvas/components/LoopNode/LoopNode.helpers.d.ts.map +1 -0
  51. package/dist/canvas/components/LoopNode/LoopNode.helpers.js +99 -0
  52. package/dist/canvas/components/LoopNode/LoopNode.js +413 -0
  53. package/dist/canvas/components/LoopNode/LoopNode.types.cjs +18 -0
  54. package/dist/canvas/components/LoopNode/LoopNode.types.d.ts +22 -0
  55. package/dist/canvas/components/LoopNode/LoopNode.types.d.ts.map +1 -0
  56. package/dist/canvas/components/LoopNode/LoopNode.types.js +0 -0
  57. package/dist/canvas/components/LoopNode/LoopNodePreview.cjs +61 -0
  58. package/dist/canvas/components/LoopNode/LoopNodePreview.d.ts +9 -0
  59. package/dist/canvas/components/LoopNode/LoopNodePreview.d.ts.map +1 -0
  60. package/dist/canvas/components/LoopNode/LoopNodePreview.js +27 -0
  61. package/dist/canvas/components/LoopNode/index.cjs +79 -0
  62. package/dist/canvas/components/LoopNode/index.d.ts +5 -0
  63. package/dist/canvas/components/LoopNode/index.d.ts.map +1 -0
  64. package/dist/canvas/components/LoopNode/index.js +4 -0
  65. package/dist/canvas/components/NodeViewportOverlay.cjs +63 -0
  66. package/dist/canvas/components/NodeViewportOverlay.d.ts +22 -0
  67. package/dist/canvas/components/NodeViewportOverlay.d.ts.map +1 -0
  68. package/dist/canvas/components/NodeViewportOverlay.js +29 -0
  69. package/dist/canvas/components/Toolbar/EdgeToolbar/EdgeToolbar.cjs +1 -1
  70. package/dist/canvas/components/Toolbar/EdgeToolbar/EdgeToolbar.js +1 -1
  71. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.cjs +25 -23
  72. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.d.ts.map +1 -1
  73. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.js +27 -25
  74. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.cjs +10 -3
  75. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.d.ts +1 -1
  76. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.d.ts.map +1 -1
  77. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.js +10 -3
  78. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.types.d.ts +1 -0
  79. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.types.d.ts.map +1 -1
  80. package/dist/canvas/components/index.cjs +27 -20
  81. package/dist/canvas/components/index.d.ts +1 -0
  82. package/dist/canvas/components/index.d.ts.map +1 -1
  83. package/dist/canvas/components/index.js +1 -0
  84. package/dist/canvas/constants.cjs +12 -0
  85. package/dist/canvas/constants.d.ts +3 -0
  86. package/dist/canvas/constants.d.ts.map +1 -1
  87. package/dist/canvas/constants.js +4 -1
  88. package/dist/canvas/hooks/useAddNodeOnConnectEnd.cjs +22 -23
  89. package/dist/canvas/hooks/useAddNodeOnConnectEnd.d.ts.map +1 -1
  90. package/dist/canvas/hooks/useAddNodeOnConnectEnd.js +23 -24
  91. package/dist/canvas/hooks/usePreviewNode.cjs +2 -1
  92. package/dist/canvas/hooks/usePreviewNode.d.ts.map +1 -1
  93. package/dist/canvas/hooks/usePreviewNode.js +2 -1
  94. package/dist/canvas/schema/node-definition/handle.cjs +10 -2
  95. package/dist/canvas/schema/node-definition/handle.d.ts +9 -0
  96. package/dist/canvas/schema/node-definition/handle.d.ts.map +1 -1
  97. package/dist/canvas/schema/node-definition/handle.js +6 -1
  98. package/dist/canvas/schema/node-definition/index.cjs +4 -1
  99. package/dist/canvas/schema/node-definition/index.d.ts +3 -3
  100. package/dist/canvas/schema/node-definition/index.d.ts.map +1 -1
  101. package/dist/canvas/schema/node-definition/index.js +2 -2
  102. package/dist/canvas/schema/node-definition/node-manifest.cjs +2 -1
  103. package/dist/canvas/schema/node-definition/node-manifest.d.ts +7 -0
  104. package/dist/canvas/schema/node-definition/node-manifest.d.ts.map +1 -1
  105. package/dist/canvas/schema/node-definition/node-manifest.js +2 -1
  106. package/dist/canvas/schema/node-instance/base.d.ts +1 -0
  107. package/dist/canvas/schema/node-instance/base.d.ts.map +1 -1
  108. package/dist/canvas/schema/node-instance/node.d.ts +1 -0
  109. package/dist/canvas/schema/node-instance/node.d.ts.map +1 -1
  110. package/dist/canvas/storybook-utils/hooks/useCanvasStory.d.ts.map +1 -1
  111. package/dist/canvas/storybook-utils/manifests/index.d.ts +2 -1
  112. package/dist/canvas/storybook-utils/manifests/index.d.ts.map +1 -1
  113. package/dist/canvas/storybook-utils/manifests/node-definitions.d.ts.map +1 -1
  114. package/dist/canvas/styles/reactflow-reset.css +2 -2
  115. package/dist/canvas/styles/tailwind.canvas.css +1 -1
  116. package/dist/canvas/utils/NodeUtils.cjs +4 -0
  117. package/dist/canvas/utils/NodeUtils.d.ts +2 -1
  118. package/dist/canvas/utils/NodeUtils.d.ts.map +1 -1
  119. package/dist/canvas/utils/NodeUtils.js +2 -1
  120. package/dist/canvas/utils/collapse.cjs +13 -6
  121. package/dist/canvas/utils/collapse.d.ts.map +1 -1
  122. package/dist/canvas/utils/collapse.js +9 -2
  123. package/dist/canvas/utils/createPreviewGraph.cjs +126 -0
  124. package/dist/canvas/utils/createPreviewGraph.d.ts +36 -0
  125. package/dist/canvas/utils/createPreviewGraph.d.ts.map +1 -0
  126. package/dist/canvas/utils/createPreviewGraph.js +83 -0
  127. package/dist/canvas/utils/createPreviewNode.cjs +30 -11
  128. package/dist/canvas/utils/createPreviewNode.d.ts +10 -2
  129. package/dist/canvas/utils/createPreviewNode.d.ts.map +1 -1
  130. package/dist/canvas/utils/createPreviewNode.js +21 -11
  131. package/dist/canvas/utils/index.cjs +33 -26
  132. package/dist/canvas/utils/index.d.ts +2 -1
  133. package/dist/canvas/utils/index.d.ts.map +1 -1
  134. package/dist/canvas/utils/index.js +2 -1
  135. package/package.json +2 -2
@@ -0,0 +1,63 @@
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
+ NodeViewportOverlay: ()=>NodeViewportOverlay
28
+ });
29
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
+ const react_cjs_namespaceObject = require("../xyflow/react.cjs");
31
+ const NODE_VIEWPORT_OVERLAY_Z_INDEX = {
32
+ nodeHandleAffordance: 1002,
33
+ nodeToolbar: 1003
34
+ };
35
+ function NodeViewportOverlay({ nodeId, anchor, layer, children }) {
36
+ const internalNode = (0, react_cjs_namespaceObject.useInternalNode)(nodeId);
37
+ const positionAbsolute = internalNode?.internals.positionAbsolute;
38
+ const width = anchor?.width ?? internalNode?.measured?.width ?? internalNode?.width;
39
+ const height = anchor?.height ?? internalNode?.measured?.height ?? internalNode?.height;
40
+ if (!positionAbsolute || null == width || null == height) return children;
41
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(react_cjs_namespaceObject.ViewportPortal, {
42
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
43
+ className: "absolute pointer-events-none",
44
+ style: {
45
+ position: 'absolute',
46
+ left: positionAbsolute.x + (anchor?.left ?? 0),
47
+ top: positionAbsolute.y + (anchor?.top ?? 0),
48
+ width,
49
+ height,
50
+ transform: anchor?.transform,
51
+ zIndex: layer ? NODE_VIEWPORT_OVERLAY_Z_INDEX[layer] : void 0
52
+ },
53
+ children: children
54
+ })
55
+ });
56
+ }
57
+ exports.NodeViewportOverlay = __webpack_exports__.NodeViewportOverlay;
58
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
59
+ "NodeViewportOverlay"
60
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
61
+ Object.defineProperty(exports, '__esModule', {
62
+ value: true
63
+ });
@@ -0,0 +1,22 @@
1
+ import type { CSSProperties, ReactNode } from 'react';
2
+ declare const NODE_VIEWPORT_OVERLAY_Z_INDEX: {
3
+ readonly nodeHandleAffordance: 1002;
4
+ readonly nodeToolbar: 1003;
5
+ };
6
+ type NodeViewportOverlayLayer = keyof typeof NODE_VIEWPORT_OVERLAY_Z_INDEX;
7
+ export type NodeViewportOverlayAnchor = {
8
+ left?: number;
9
+ top?: number;
10
+ width?: number;
11
+ height?: number;
12
+ transform?: CSSProperties['transform'];
13
+ };
14
+ export type NodeViewportOverlayProps = {
15
+ nodeId: string;
16
+ anchor?: NodeViewportOverlayAnchor;
17
+ layer?: NodeViewportOverlayLayer;
18
+ children: ReactNode;
19
+ };
20
+ export declare function NodeViewportOverlay({ nodeId, anchor, layer, children }: NodeViewportOverlayProps): string | number | bigint | boolean | import("react/jsx-runtime").JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | null | undefined;
21
+ export {};
22
+ //# sourceMappingURL=NodeViewportOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeViewportOverlay.d.ts","sourceRoot":"","sources":["../../../src/canvas/components/NodeViewportOverlay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAItD,QAAA,MAAM,6BAA6B;;;CAGzB,CAAC;AAEX,KAAK,wBAAwB,GAAG,MAAM,OAAO,6BAA6B,CAAC;AAE3E,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,yBAAyB,CAAC;IACnC,KAAK,CAAC,EAAE,wBAAwB,CAAC;IACjC,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,wBAAwB,2UA4BhG"}
@@ -0,0 +1,29 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { ViewportPortal, useInternalNode } from "../xyflow/react.js";
3
+ const NODE_VIEWPORT_OVERLAY_Z_INDEX = {
4
+ nodeHandleAffordance: 1002,
5
+ nodeToolbar: 1003
6
+ };
7
+ function NodeViewportOverlay({ nodeId, anchor, layer, children }) {
8
+ const internalNode = useInternalNode(nodeId);
9
+ const positionAbsolute = internalNode?.internals.positionAbsolute;
10
+ const width = anchor?.width ?? internalNode?.measured?.width ?? internalNode?.width;
11
+ const height = anchor?.height ?? internalNode?.measured?.height ?? internalNode?.height;
12
+ if (!positionAbsolute || null == width || null == height) return children;
13
+ return /*#__PURE__*/ jsx(ViewportPortal, {
14
+ children: /*#__PURE__*/ jsx("div", {
15
+ className: "absolute pointer-events-none",
16
+ style: {
17
+ position: 'absolute',
18
+ left: positionAbsolute.x + (anchor?.left ?? 0),
19
+ top: positionAbsolute.y + (anchor?.top ?? 0),
20
+ width,
21
+ height,
22
+ transform: anchor?.transform,
23
+ zIndex: layer ? NODE_VIEWPORT_OVERLAY_Z_INDEX[layer] : void 0
24
+ },
25
+ children: children
26
+ })
27
+ });
28
+ }
29
+ export { NodeViewportOverlay };
@@ -38,7 +38,7 @@ const EdgeToolbarComponent = ({ edgeId, visible, positioning, config, onMouseEnt
38
38
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(react_cjs_namespaceObject.EdgeLabelRenderer, {
39
39
  children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(react_namespaceObject.AnimatePresence, {
40
40
  children: visible && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(react_namespaceObject.motion.div, {
41
- className: "nodrag nopan absolute top-0 left-0 pointer-events-auto z-[1000] flex flex-row items-center gap-1",
41
+ className: "nodrag nopan absolute top-0 left-0 z-1004 pointer-events-auto flex flex-row items-center gap-1",
42
42
  initial: {
43
43
  opacity: 0
44
44
  },
@@ -10,7 +10,7 @@ const EdgeToolbarComponent = ({ edgeId, visible, positioning, config, onMouseEnt
10
10
  return /*#__PURE__*/ jsx(EdgeLabelRenderer, {
11
11
  children: /*#__PURE__*/ jsx(AnimatePresence, {
12
12
  children: visible && /*#__PURE__*/ jsx(motion.div, {
13
- className: "nodrag nopan absolute top-0 left-0 pointer-events-auto z-[1000] flex flex-row items-center gap-1",
13
+ className: "nodrag nopan absolute top-0 left-0 z-1004 pointer-events-auto flex flex-row items-center gap-1",
14
14
  initial: {
15
15
  opacity: 0
16
16
  },
@@ -29,6 +29,7 @@ __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 createPreviewGraph_cjs_namespaceObject = require("../../../utils/createPreviewGraph.cjs");
32
33
  const createPreviewNode_cjs_namespaceObject = require("../../../utils/createPreviewNode.cjs");
33
34
  const BaseCanvasModeProvider_cjs_namespaceObject = require("../../BaseCanvas/BaseCanvasModeProvider.cjs");
34
35
  const external_useEdgeToolbarPositioning_cjs_namespaceObject = require("./useEdgeToolbarPositioning.cjs");
@@ -36,10 +37,14 @@ function useEdgeToolbarState({ edgeId, pathElementRef, isHovered, source, target
36
37
  const reactFlow = (0, react_cjs_namespaceObject.useReactFlow)();
37
38
  const { mode } = (0, BaseCanvasModeProvider_cjs_namespaceObject.useBaseCanvasMode)();
38
39
  const isDesignMode = 'design' === mode;
39
- const isPreviewEdge = source === external_constants_cjs_namespaceObject.PREVIEW_NODE_ID || target === external_constants_cjs_namespaceObject.PREVIEW_NODE_ID;
40
+ const previewEdge = (0, createPreviewNode_cjs_namespaceObject.isPreviewEdge)({
41
+ id: edgeId,
42
+ source,
43
+ target
44
+ });
40
45
  const { positionData, handleMouseMoveOnPath } = (0, external_useEdgeToolbarPositioning_cjs_namespaceObject.useEdgeToolbarPositioning)({
41
46
  pathElementRef,
42
- isEnabled: isHovered && isDesignMode && !isPreviewEdge,
47
+ isEnabled: isHovered && isDesignMode && !previewEdge,
43
48
  targetPosition
44
49
  });
45
50
  const handleAddNodeOnEdge = (0, external_react_namespaceObject.useCallback)((position)=>{
@@ -51,26 +56,23 @@ function useEdgeToolbarState({ edgeId, pathElementRef, isHovered, source, target
51
56
  targetHandle: targetHandleId,
52
57
  type: 'default'
53
58
  };
54
- const preview = (0, createPreviewNode_cjs_namespaceObject.createPreviewNode)(source, sourceHandleId || 'output', reactFlow, position, {
55
- originalEdge
56
- }, 'source', void 0, sourcePosition, ignoredNodeTypes);
57
- if (!preview) return;
58
- const secondEdge = {
59
- id: `${external_constants_cjs_namespaceObject.PREVIEW_NODE_ID}-${target}`,
60
- source: external_constants_cjs_namespaceObject.PREVIEW_NODE_ID,
61
- sourceHandle: 'output',
62
- target,
63
- targetHandle: targetHandleId,
64
- type: 'default'
65
- };
66
- (0, createPreviewNode_cjs_namespaceObject.applyPreviewToReactFlow)(preview, reactFlow);
67
- reactFlow.setEdges((edges)=>[
68
- ...edges.filter((e)=>e.id !== edgeId).map((e)=>({
69
- ...e,
70
- selected: false
71
- })),
72
- secondEdge
73
- ]);
59
+ (0, createPreviewGraph_cjs_namespaceObject.showPreviewGraph)({
60
+ sourceNodeId: source,
61
+ sourceHandleId: sourceHandleId ?? external_constants_cjs_namespaceObject.DEFAULT_SOURCE_HANDLE_ID,
62
+ reactFlowInstance: reactFlow,
63
+ position,
64
+ data: {
65
+ originalEdge
66
+ },
67
+ sourceHandleType: 'source',
68
+ handlePosition: sourcePosition,
69
+ ignoredNodeTypes: ignoredNodeTypes ?? [],
70
+ targetNodeId: target,
71
+ targetHandleId,
72
+ removedEdgeIds: [
73
+ edgeId
74
+ ]
75
+ });
74
76
  }, [
75
77
  sourcePosition,
76
78
  source,
@@ -96,7 +98,7 @@ function useEdgeToolbarState({ edgeId, pathElementRef, isHovered, source, target
96
98
  }), [
97
99
  handleAddNodeOnEdge
98
100
  ]);
99
- const showToolbar = isHovered && isDesignMode && null !== positionData && !isPreviewEdge;
101
+ const showToolbar = isHovered && isDesignMode && null !== positionData && !previewEdge;
100
102
  return {
101
103
  showToolbar,
102
104
  toolbarPositioning: positionData,
@@ -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;AAKlG,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,CAoG7C"}
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;AAMlG,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,CAgF7C"}
@@ -1,17 +1,22 @@
1
1
  import { useReactFlow } from "../../../xyflow/react.js";
2
2
  import { useCallback, useMemo } from "react";
3
- import { PREVIEW_NODE_ID } from "../../../constants.js";
4
- import { applyPreviewToReactFlow, createPreviewNode } from "../../../utils/createPreviewNode.js";
3
+ import { DEFAULT_SOURCE_HANDLE_ID } from "../../../constants.js";
4
+ import { showPreviewGraph } from "../../../utils/createPreviewGraph.js";
5
+ import { isPreviewEdge } from "../../../utils/createPreviewNode.js";
5
6
  import { useBaseCanvasMode } from "../../BaseCanvas/BaseCanvasModeProvider.js";
6
7
  import { useEdgeToolbarPositioning } from "./useEdgeToolbarPositioning.js";
7
8
  function useEdgeToolbarState({ edgeId, pathElementRef, isHovered, source, target, sourceHandleId, targetHandleId, sourcePosition, targetPosition, ignoredNodeTypes }) {
8
9
  const reactFlow = useReactFlow();
9
10
  const { mode } = useBaseCanvasMode();
10
11
  const isDesignMode = 'design' === mode;
11
- const isPreviewEdge = source === PREVIEW_NODE_ID || target === PREVIEW_NODE_ID;
12
+ const previewEdge = isPreviewEdge({
13
+ id: edgeId,
14
+ source,
15
+ target
16
+ });
12
17
  const { positionData, handleMouseMoveOnPath } = useEdgeToolbarPositioning({
13
18
  pathElementRef,
14
- isEnabled: isHovered && isDesignMode && !isPreviewEdge,
19
+ isEnabled: isHovered && isDesignMode && !previewEdge,
15
20
  targetPosition
16
21
  });
17
22
  const handleAddNodeOnEdge = useCallback((position)=>{
@@ -23,26 +28,23 @@ function useEdgeToolbarState({ edgeId, pathElementRef, isHovered, source, target
23
28
  targetHandle: targetHandleId,
24
29
  type: 'default'
25
30
  };
26
- const preview = createPreviewNode(source, sourceHandleId || 'output', reactFlow, position, {
27
- originalEdge
28
- }, 'source', void 0, sourcePosition, ignoredNodeTypes);
29
- if (!preview) return;
30
- const secondEdge = {
31
- id: `${PREVIEW_NODE_ID}-${target}`,
32
- source: PREVIEW_NODE_ID,
33
- sourceHandle: 'output',
34
- target,
35
- targetHandle: targetHandleId,
36
- type: 'default'
37
- };
38
- applyPreviewToReactFlow(preview, reactFlow);
39
- reactFlow.setEdges((edges)=>[
40
- ...edges.filter((e)=>e.id !== edgeId).map((e)=>({
41
- ...e,
42
- selected: false
43
- })),
44
- secondEdge
45
- ]);
31
+ showPreviewGraph({
32
+ sourceNodeId: source,
33
+ sourceHandleId: sourceHandleId ?? DEFAULT_SOURCE_HANDLE_ID,
34
+ reactFlowInstance: reactFlow,
35
+ position,
36
+ data: {
37
+ originalEdge
38
+ },
39
+ sourceHandleType: 'source',
40
+ handlePosition: sourcePosition,
41
+ ignoredNodeTypes: ignoredNodeTypes ?? [],
42
+ targetNodeId: target,
43
+ targetHandleId,
44
+ removedEdgeIds: [
45
+ edgeId
46
+ ]
47
+ });
46
48
  }, [
47
49
  sourcePosition,
48
50
  source,
@@ -68,7 +70,7 @@ function useEdgeToolbarState({ edgeId, pathElementRef, isHovered, source, target
68
70
  }), [
69
71
  handleAddNodeOnEdge
70
72
  ]);
71
- const showToolbar = isHovered && isDesignMode && null !== positionData && !isPreviewEdge;
73
+ const showToolbar = isHovered && isDesignMode && null !== positionData && !previewEdge;
72
74
  return {
73
75
  showToolbar,
74
76
  toolbarPositioning: positionData,
@@ -32,6 +32,7 @@ const react_namespaceObject = require("motion/react");
32
32
  const external_react_namespaceObject = require("react");
33
33
  const icon_registry_cjs_namespaceObject = require("../../../utils/icon-registry.cjs");
34
34
  const external_CanvasTooltip_cjs_namespaceObject = require("../../CanvasTooltip.cjs");
35
+ const external_NodeViewportOverlay_cjs_namespaceObject = require("../../NodeViewportOverlay.cjs");
35
36
  const index_cjs_namespaceObject = require("../shared/index.cjs");
36
37
  const external_NodeToolbar_utils_cjs_namespaceObject = require("./NodeToolbar.utils.cjs");
37
38
  const external_useToolbarState_cjs_namespaceObject = require("./useToolbarState.cjs");
@@ -58,11 +59,11 @@ const CONTAINER_DIRECTION_CLASS = {
58
59
  const SEPARATOR_BASE_CLASS = 'flex-[0_0_auto] bg-(--canvas-background-overlay) self-center';
59
60
  const SEPARATOR_VERTICAL_CLASS = 'w-px h-5';
60
61
  const SEPARATOR_HORIZONTAL_CLASS = 'w-full h-px';
61
- const DROPDOWN_MENU_CLASS = "absolute top-[-2px] left-[calc(100%+4px)] min-w-[180px] bg-(--canvas-background-raised) border border-(--canvas-background-overlay) rounded-md shadow-[0_4px_12px_rgba(0,0,0,0.08),0_2px_4px_rgba(0,0,0,0.04)] p-1 z-[1000] pointer-events-auto";
62
+ const DROPDOWN_MENU_CLASS = "absolute top-[-2px] left-[calc(100%+4px)] min-w-[180px] bg-(--canvas-background-raised) border border-(--canvas-background-overlay) rounded-md shadow-[0_4px_12px_rgba(0,0,0,0.08),0_2px_4px_rgba(0,0,0,0.04)] p-1 pointer-events-auto";
62
63
  const DROPDOWN_ITEM_BASE_CLASS = "flex items-center gap-3 w-full py-2 px-3 bg-transparent border-none rounded-[4px] text-sm text-(--canvas-foreground) text-left [transition:background_0.15s_ease] enabled:hover:bg-(--canvas-background-hover) future:enabled:hover:bg-(--canvas-background-overlay) [&>svg]:shrink-0 [&>svg]:text-(--canvas-foreground)";
63
64
  const DROPDOWN_ITEM_DISABLED_CLASS = 'cursor-not-allowed opacity-40 pointer-events-none';
64
65
  const DROPDOWN_ITEM_ENABLED_CLASS = 'cursor-pointer opacity-100';
65
- const NodeToolbarComponent = ({ nodeId, config, expanded, hidden, offsetToolbar })=>{
66
+ const NodeToolbarComponent = ({ nodeId, config, expanded, hidden, offsetToolbar, portalToNodeOverlay })=>{
66
67
  const { isDropdownOpen, setIsDropdownOpen, dropdownRef, buttonRef, actionsToDisplay, displayState, shouldShowOverflow, overflowActionsToDisplay, separatorOrientation, toggleDropdown } = (0, external_useToolbarState_cjs_namespaceObject.useToolbarState)({
67
68
  config,
68
69
  expanded,
@@ -117,7 +118,7 @@ const NodeToolbarComponent = ({ nodeId, config, expanded, hidden, offsetToolbar
117
118
  displayState
118
119
  ]);
119
120
  if (0 === config.actions.length && (!config.overflowActions || 0 === config.overflowActions.length)) return null;
120
- return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(react_namespaceObject.AnimatePresence, {
121
+ const toolbarContent = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(react_namespaceObject.AnimatePresence, {
121
122
  children: 'hidden' !== displayState && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
122
123
  className: positionerClassName,
123
124
  style: offsetStyle,
@@ -233,6 +234,12 @@ const NodeToolbarComponent = ({ nodeId, config, expanded, hidden, offsetToolbar
233
234
  })
234
235
  })
235
236
  });
237
+ if (portalToNodeOverlay) return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_NodeViewportOverlay_cjs_namespaceObject.NodeViewportOverlay, {
238
+ nodeId: nodeId,
239
+ layer: "nodeToolbar",
240
+ children: toolbarContent
241
+ });
242
+ return toolbarContent;
236
243
  };
237
244
  const NodeToolbar = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(NodeToolbarComponent);
238
245
  exports.NodeToolbar = __webpack_exports__.NodeToolbar;
@@ -1,3 +1,3 @@
1
1
  import type { NodeToolbarProps } from './NodeToolbar.types';
2
- export declare const NodeToolbar: import("react").MemoExoticComponent<({ nodeId, config, expanded, hidden, offsetToolbar, }: NodeToolbarProps) => import("react/jsx-runtime").JSX.Element | null>;
2
+ export declare const NodeToolbar: import("react").MemoExoticComponent<({ nodeId, config, expanded, hidden, offsetToolbar, portalToNodeOverlay, }: NodeToolbarProps) => import("react/jsx-runtime").JSX.Element | null>;
3
3
  //# sourceMappingURL=NodeToolbar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/Toolbar/NodeToolbar/NodeToolbar.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AA8O5D,eAAO,MAAM,WAAW,6FAhLrB,gBAAgB,oDAgLkC,CAAC"}
1
+ {"version":3,"file":"NodeToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/Toolbar/NodeToolbar/NodeToolbar.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAyP5D,eAAO,MAAM,WAAW,kHA1LrB,gBAAgB,oDA0LkC,CAAC"}
@@ -4,6 +4,7 @@ import { AnimatePresence, motion } from "motion/react";
4
4
  import { memo, useMemo } from "react";
5
5
  import { CanvasIcon } from "../../../utils/icon-registry.js";
6
6
  import { CanvasTooltip } from "../../CanvasTooltip.js";
7
+ import { NodeViewportOverlay } from "../../NodeViewportOverlay.js";
7
8
  import { ToolbarButton, ToolbarIconButton } from "../shared/index.js";
8
9
  import { isSeparator } from "./NodeToolbar.utils.js";
9
10
  import { useToolbarState } from "./useToolbarState.js";
@@ -30,11 +31,11 @@ const CONTAINER_DIRECTION_CLASS = {
30
31
  const SEPARATOR_BASE_CLASS = 'flex-[0_0_auto] bg-(--canvas-background-overlay) self-center';
31
32
  const SEPARATOR_VERTICAL_CLASS = 'w-px h-5';
32
33
  const SEPARATOR_HORIZONTAL_CLASS = 'w-full h-px';
33
- const DROPDOWN_MENU_CLASS = "absolute top-[-2px] left-[calc(100%+4px)] min-w-[180px] bg-(--canvas-background-raised) border border-(--canvas-background-overlay) rounded-md shadow-[0_4px_12px_rgba(0,0,0,0.08),0_2px_4px_rgba(0,0,0,0.04)] p-1 z-[1000] pointer-events-auto";
34
+ const DROPDOWN_MENU_CLASS = "absolute top-[-2px] left-[calc(100%+4px)] min-w-[180px] bg-(--canvas-background-raised) border border-(--canvas-background-overlay) rounded-md shadow-[0_4px_12px_rgba(0,0,0,0.08),0_2px_4px_rgba(0,0,0,0.04)] p-1 pointer-events-auto";
34
35
  const DROPDOWN_ITEM_BASE_CLASS = "flex items-center gap-3 w-full py-2 px-3 bg-transparent border-none rounded-[4px] text-sm text-(--canvas-foreground) text-left [transition:background_0.15s_ease] enabled:hover:bg-(--canvas-background-hover) future:enabled:hover:bg-(--canvas-background-overlay) [&>svg]:shrink-0 [&>svg]:text-(--canvas-foreground)";
35
36
  const DROPDOWN_ITEM_DISABLED_CLASS = 'cursor-not-allowed opacity-40 pointer-events-none';
36
37
  const DROPDOWN_ITEM_ENABLED_CLASS = 'cursor-pointer opacity-100';
37
- const NodeToolbarComponent = ({ nodeId, config, expanded, hidden, offsetToolbar })=>{
38
+ const NodeToolbarComponent = ({ nodeId, config, expanded, hidden, offsetToolbar, portalToNodeOverlay })=>{
38
39
  const { isDropdownOpen, setIsDropdownOpen, dropdownRef, buttonRef, actionsToDisplay, displayState, shouldShowOverflow, overflowActionsToDisplay, separatorOrientation, toggleDropdown } = useToolbarState({
39
40
  config,
40
41
  expanded,
@@ -89,7 +90,7 @@ const NodeToolbarComponent = ({ nodeId, config, expanded, hidden, offsetToolbar
89
90
  displayState
90
91
  ]);
91
92
  if (0 === config.actions.length && (!config.overflowActions || 0 === config.overflowActions.length)) return null;
92
- return /*#__PURE__*/ jsx(AnimatePresence, {
93
+ const toolbarContent = /*#__PURE__*/ jsx(AnimatePresence, {
93
94
  children: 'hidden' !== displayState && /*#__PURE__*/ jsx("div", {
94
95
  className: positionerClassName,
95
96
  style: offsetStyle,
@@ -205,6 +206,12 @@ const NodeToolbarComponent = ({ nodeId, config, expanded, hidden, offsetToolbar
205
206
  })
206
207
  })
207
208
  });
209
+ if (portalToNodeOverlay) return /*#__PURE__*/ jsx(NodeViewportOverlay, {
210
+ nodeId: nodeId,
211
+ layer: "nodeToolbar",
212
+ children: toolbarContent
213
+ });
214
+ return toolbarContent;
208
215
  };
209
216
  const NodeToolbar = /*#__PURE__*/ memo(NodeToolbarComponent);
210
217
  export { NodeToolbar };
@@ -12,5 +12,6 @@ export interface NodeToolbarProps {
12
12
  expanded: boolean;
13
13
  hidden?: boolean;
14
14
  offsetToolbar?: boolean;
15
+ portalToNodeOverlay?: boolean;
15
16
  }
16
17
  //# sourceMappingURL=NodeToolbar.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeToolbar.types.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/Toolbar/NodeToolbar/NodeToolbar.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/C,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAElB,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB"}
1
+ {"version":3,"file":"NodeToolbar.types.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/Toolbar/NodeToolbar/NodeToolbar.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/C,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAElB,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B"}
@@ -36,6 +36,9 @@ var __webpack_modules__ = {
36
36
  "./HierarchicalCanvas" (module) {
37
37
  module.exports = require("./HierarchicalCanvas/index.cjs");
38
38
  },
39
+ "./LoopNode?4ffc" (module) {
40
+ module.exports = require("./LoopNode/index.cjs");
41
+ },
39
42
  "./MiniCanvasNavigator?564d" (module) {
40
43
  module.exports = require("./MiniCanvasNavigator/index.cjs");
41
44
  },
@@ -158,45 +161,49 @@ var __webpack_exports__ = {};
158
161
  var __rspack_reexport = {};
159
162
  for(const __rspack_import_key in _HierarchicalCanvas__rspack_import_11)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_HierarchicalCanvas__rspack_import_11[__rspack_import_key];
160
163
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
161
- var _MiniCanvasNavigator__rspack_import_12 = __webpack_require__("./MiniCanvasNavigator?564d");
164
+ var _LoopNode__rspack_import_12 = __webpack_require__("./LoopNode?4ffc");
165
+ var __rspack_reexport = {};
166
+ for(const __rspack_import_key in _LoopNode__rspack_import_12)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_LoopNode__rspack_import_12[__rspack_import_key];
167
+ __webpack_require__.d(__webpack_exports__, __rspack_reexport);
168
+ var _MiniCanvasNavigator__rspack_import_13 = __webpack_require__("./MiniCanvasNavigator?564d");
162
169
  var __rspack_reexport = {};
163
- for(const __rspack_import_key in _MiniCanvasNavigator__rspack_import_12)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_MiniCanvasNavigator__rspack_import_12[__rspack_import_key];
170
+ for(const __rspack_import_key in _MiniCanvasNavigator__rspack_import_13)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_MiniCanvasNavigator__rspack_import_13[__rspack_import_key];
164
171
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
165
- var _NodeContextMenu__rspack_import_13 = __webpack_require__("./NodeContextMenu");
172
+ var _NodeContextMenu__rspack_import_14 = __webpack_require__("./NodeContextMenu");
166
173
  var __rspack_reexport = {};
167
- for(const __rspack_import_key in _NodeContextMenu__rspack_import_13)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_NodeContextMenu__rspack_import_13[__rspack_import_key];
174
+ for(const __rspack_import_key in _NodeContextMenu__rspack_import_14)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_NodeContextMenu__rspack_import_14[__rspack_import_key];
168
175
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
169
- var _NodeInspector__rspack_import_14 = __webpack_require__("./NodeInspector");
176
+ var _NodeInspector__rspack_import_15 = __webpack_require__("./NodeInspector");
170
177
  var __rspack_reexport = {};
171
- for(const __rspack_import_key in _NodeInspector__rspack_import_14)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_NodeInspector__rspack_import_14[__rspack_import_key];
178
+ for(const __rspack_import_key in _NodeInspector__rspack_import_15)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_NodeInspector__rspack_import_15[__rspack_import_key];
172
179
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
173
- var _NodePropertiesPanel__rspack_import_15 = __webpack_require__("./NodePropertiesPanel?a3e8");
180
+ var _NodePropertiesPanel__rspack_import_16 = __webpack_require__("./NodePropertiesPanel?a3e8");
174
181
  var __rspack_reexport = {};
175
- for(const __rspack_import_key in _NodePropertiesPanel__rspack_import_15)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_NodePropertiesPanel__rspack_import_15[__rspack_import_key];
182
+ for(const __rspack_import_key in _NodePropertiesPanel__rspack_import_16)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_NodePropertiesPanel__rspack_import_16[__rspack_import_key];
176
183
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
177
- var _StageNode__rspack_import_16 = __webpack_require__("./StageNode");
184
+ var _StageNode__rspack_import_17 = __webpack_require__("./StageNode");
178
185
  var __rspack_reexport = {};
179
- for(const __rspack_import_key in _StageNode__rspack_import_16)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_StageNode__rspack_import_16[__rspack_import_key];
186
+ for(const __rspack_import_key in _StageNode__rspack_import_17)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_StageNode__rspack_import_17[__rspack_import_key];
180
187
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
181
- var _StickyNoteNode__rspack_import_17 = __webpack_require__("./StickyNoteNode?d2a3");
188
+ var _StickyNoteNode__rspack_import_18 = __webpack_require__("./StickyNoteNode?d2a3");
182
189
  var __rspack_reexport = {};
183
- for(const __rspack_import_key in _StickyNoteNode__rspack_import_17)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_StickyNoteNode__rspack_import_17[__rspack_import_key];
190
+ for(const __rspack_import_key in _StickyNoteNode__rspack_import_18)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_StickyNoteNode__rspack_import_18[__rspack_import_key];
184
191
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
185
- var _TaskIcon__rspack_import_18 = __webpack_require__("./TaskIcon");
192
+ var _TaskIcon__rspack_import_19 = __webpack_require__("./TaskIcon");
186
193
  var __rspack_reexport = {};
187
- for(const __rspack_import_key in _TaskIcon__rspack_import_18)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_TaskIcon__rspack_import_18[__rspack_import_key];
194
+ for(const __rspack_import_key in _TaskIcon__rspack_import_19)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_TaskIcon__rspack_import_19[__rspack_import_key];
188
195
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
189
- var _Toolbar__rspack_import_19 = __webpack_require__("./Toolbar");
196
+ var _Toolbar__rspack_import_20 = __webpack_require__("./Toolbar");
190
197
  var __rspack_reexport = {};
191
- for(const __rspack_import_key in _Toolbar__rspack_import_19)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_Toolbar__rspack_import_19[__rspack_import_key];
198
+ for(const __rspack_import_key in _Toolbar__rspack_import_20)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_Toolbar__rspack_import_20[__rspack_import_key];
192
199
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
193
- var _Toolbox__rspack_import_20 = __webpack_require__("./Toolbox?2740");
200
+ var _Toolbox__rspack_import_21 = __webpack_require__("./Toolbox?2740");
194
201
  var __rspack_reexport = {};
195
- for(const __rspack_import_key in _Toolbox__rspack_import_20)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_Toolbox__rspack_import_20[__rspack_import_key];
202
+ for(const __rspack_import_key in _Toolbox__rspack_import_21)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_Toolbox__rspack_import_21[__rspack_import_key];
196
203
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
197
- var _TriggerNode__rspack_import_21 = __webpack_require__("./TriggerNode");
204
+ var _TriggerNode__rspack_import_22 = __webpack_require__("./TriggerNode");
198
205
  var __rspack_reexport = {};
199
- for(const __rspack_import_key in _TriggerNode__rspack_import_21)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_TriggerNode__rspack_import_21[__rspack_import_key];
206
+ for(const __rspack_import_key in _TriggerNode__rspack_import_22)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_TriggerNode__rspack_import_22[__rspack_import_key];
200
207
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
201
208
  })();
202
209
  for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
@@ -10,6 +10,7 @@ export * from './ExecutionStatusIcon';
10
10
  export * from './FloatingCanvasPanel';
11
11
  export * from './GroupNode';
12
12
  export * from './HierarchicalCanvas';
13
+ export * from './LoopNode';
13
14
  export * from './MiniCanvasNavigator';
14
15
  export * from './NodeContextMenu';
15
16
  export * from './NodeInspector';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/canvas/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/canvas/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
@@ -10,6 +10,7 @@ export * from "./ExecutionStatusIcon/index.js";
10
10
  export * from "./FloatingCanvasPanel/index.js";
11
11
  export * from "./GroupNode/index.js";
12
12
  export * from "./HierarchicalCanvas/index.js";
13
+ export * from "./LoopNode/index.js";
13
14
  export * from "./MiniCanvasNavigator/index.js";
14
15
  export * from "./NodeContextMenu/index.js";
15
16
  export * from "./NodeInspector.js";
@@ -25,8 +25,11 @@ 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,
28
30
  DEFAULT_NODE_SIZE: ()=>DEFAULT_NODE_SIZE,
29
31
  DEFAULT_RECTANGLE_NODE_WIDTH: ()=>DEFAULT_RECTANGLE_NODE_WIDTH,
32
+ DEFAULT_SOURCE_HANDLE_ID: ()=>DEFAULT_SOURCE_HANDLE_ID,
30
33
  FLOATING_CANVAS_PANEL_OFFSET: ()=>FLOATING_CANVAS_PANEL_OFFSET,
31
34
  GRID_SPACING: ()=>GRID_SPACING,
32
35
  NODE_BADGE_INSET_CIRCLE: ()=>NODE_BADGE_INSET_CIRCLE,
@@ -54,8 +57,11 @@ __webpack_require__.d(__webpack_exports__, {
54
57
  });
55
58
  const PREVIEW_NODE_ID = 'preview-node-id';
56
59
  const PREVIEW_EDGE_ID = 'preview-edge-id';
60
+ const DEFAULT_SOURCE_HANDLE_ID = 'output';
57
61
  const DEFAULT_NODE_SIZE = 96;
58
62
  const GRID_SPACING = 16;
63
+ const DEFAULT_CONTAINER_WIDTH = 35 * GRID_SPACING;
64
+ const DEFAULT_CONTAINER_HEIGHT = 20 * GRID_SPACING;
59
65
  const CANVAS_COMPACT_BREAKPOINT = 600;
60
66
  const TOOLBOX_WIDTH = 320;
61
67
  const TOOLBOX_HEIGHT = 440;
@@ -80,8 +86,11 @@ const NODE_BADGE_SIZE = 20;
80
86
  const NODE_BADGE_INSET_SQUARE = 6;
81
87
  const NODE_BADGE_INSET_CIRCLE = 12;
82
88
  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;
83
91
  exports.DEFAULT_NODE_SIZE = __webpack_exports__.DEFAULT_NODE_SIZE;
84
92
  exports.DEFAULT_RECTANGLE_NODE_WIDTH = __webpack_exports__.DEFAULT_RECTANGLE_NODE_WIDTH;
93
+ exports.DEFAULT_SOURCE_HANDLE_ID = __webpack_exports__.DEFAULT_SOURCE_HANDLE_ID;
85
94
  exports.FLOATING_CANVAS_PANEL_OFFSET = __webpack_exports__.FLOATING_CANVAS_PANEL_OFFSET;
86
95
  exports.GRID_SPACING = __webpack_exports__.GRID_SPACING;
87
96
  exports.NODE_BADGE_INSET_CIRCLE = __webpack_exports__.NODE_BADGE_INSET_CIRCLE;
@@ -108,8 +117,11 @@ exports.TOOLBOX_PADDING_Y = __webpack_exports__.TOOLBOX_PADDING_Y;
108
117
  exports.TOOLBOX_WIDTH = __webpack_exports__.TOOLBOX_WIDTH;
109
118
  for(var __rspack_i in __webpack_exports__)if (-1 === [
110
119
  "CANVAS_COMPACT_BREAKPOINT",
120
+ "DEFAULT_CONTAINER_HEIGHT",
121
+ "DEFAULT_CONTAINER_WIDTH",
111
122
  "DEFAULT_NODE_SIZE",
112
123
  "DEFAULT_RECTANGLE_NODE_WIDTH",
124
+ "DEFAULT_SOURCE_HANDLE_ID",
113
125
  "FLOATING_CANVAS_PANEL_OFFSET",
114
126
  "GRID_SPACING",
115
127
  "NODE_BADGE_INSET_CIRCLE",
@@ -1,7 +1,10 @@
1
1
  export declare const PREVIEW_NODE_ID = "preview-node-id";
2
2
  export declare const PREVIEW_EDGE_ID = "preview-edge-id";
3
+ export declare const DEFAULT_SOURCE_HANDLE_ID = "output";
3
4
  export declare const DEFAULT_NODE_SIZE = 96;
4
5
  export declare const GRID_SPACING = 16;
6
+ export declare const DEFAULT_CONTAINER_WIDTH: number;
7
+ export declare const DEFAULT_CONTAINER_HEIGHT: number;
5
8
  export declare const CANVAS_COMPACT_BREAKPOINT = 600;
6
9
  export declare const TOOLBOX_WIDTH = 320;
7
10
  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,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"}
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,uBAAuB,QAAoB,CAAC;AACzD,eAAO,MAAM,wBAAwB,QAAoB,CAAC;AAG1D,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"}
@@ -1,7 +1,10 @@
1
1
  const PREVIEW_NODE_ID = 'preview-node-id';
2
2
  const PREVIEW_EDGE_ID = 'preview-edge-id';
3
+ const DEFAULT_SOURCE_HANDLE_ID = 'output';
3
4
  const DEFAULT_NODE_SIZE = 96;
4
5
  const GRID_SPACING = 16;
6
+ const DEFAULT_CONTAINER_WIDTH = 35 * GRID_SPACING;
7
+ const DEFAULT_CONTAINER_HEIGHT = 20 * GRID_SPACING;
5
8
  const CANVAS_COMPACT_BREAKPOINT = 600;
6
9
  const TOOLBOX_WIDTH = 320;
7
10
  const TOOLBOX_HEIGHT = 440;
@@ -25,4 +28,4 @@ const NODE_TEXT_BOTTOM_OFFSET_WITH_HANDLES = -40;
25
28
  const NODE_BADGE_SIZE = 20;
26
29
  const NODE_BADGE_INSET_SQUARE = 6;
27
30
  const NODE_BADGE_INSET_CIRCLE = 12;
28
- export { CANVAS_COMPACT_BREAKPOINT, DEFAULT_NODE_SIZE, DEFAULT_RECTANGLE_NODE_WIDTH, 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 };
31
+ export { CANVAS_COMPACT_BREAKPOINT, DEFAULT_CONTAINER_HEIGHT, DEFAULT_CONTAINER_WIDTH, 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 };