@uipath/apollo-react 4.14.0 → 4.14.1-pr556.55acf00

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 (207) hide show
  1. package/dist/canvas/components/AddNodePanel/createAddNodePreview.cjs +9 -3
  2. package/dist/canvas/components/AddNodePanel/createAddNodePreview.d.ts.map +1 -1
  3. package/dist/canvas/components/AddNodePanel/createAddNodePreview.js +9 -3
  4. package/dist/canvas/components/AgentCanvas/agent-flow.manifest.d.ts +1 -0
  5. package/dist/canvas/components/AgentCanvas/agent-flow.manifest.d.ts.map +1 -1
  6. package/dist/canvas/components/BaseNode/BaseNode.cjs +11 -5
  7. package/dist/canvas/components/BaseNode/BaseNode.d.ts +2 -1
  8. package/dist/canvas/components/BaseNode/BaseNode.d.ts.map +1 -1
  9. package/dist/canvas/components/BaseNode/BaseNode.js +9 -6
  10. package/dist/canvas/components/BaseNode/BaseNode.types.d.ts +3 -0
  11. package/dist/canvas/components/BaseNode/BaseNode.types.d.ts.map +1 -1
  12. package/dist/canvas/components/ButtonHandle/ButtonHandle.cjs +222 -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 +223 -14
  16. package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.cjs +10 -2
  17. package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.d.ts +2 -0
  18. package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.d.ts.map +1 -1
  19. package/dist/canvas/components/ButtonHandle/ButtonHandleStyleUtils.js +5 -3
  20. package/dist/canvas/components/ButtonHandle/HandleButton.cjs +17 -2
  21. package/dist/canvas/components/ButtonHandle/HandleButton.d.ts +10 -1
  22. package/dist/canvas/components/ButtonHandle/HandleButton.d.ts.map +1 -1
  23. package/dist/canvas/components/ButtonHandle/HandleButton.js +17 -2
  24. package/dist/canvas/components/ButtonHandle/useButtonHandles.cjs +4 -2
  25. package/dist/canvas/components/ButtonHandle/useButtonHandles.d.ts +2 -1
  26. package/dist/canvas/components/ButtonHandle/useButtonHandles.d.ts.map +1 -1
  27. package/dist/canvas/components/ButtonHandle/useButtonHandles.js +4 -2
  28. package/dist/canvas/components/Edges/SequenceEdge.cjs +8 -4
  29. package/dist/canvas/components/Edges/SequenceEdge.js +8 -4
  30. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.cjs +34 -25
  31. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.d.ts +8 -2
  32. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.d.ts.map +1 -1
  33. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.js +36 -27
  34. package/dist/canvas/components/HierarchicalCanvas/index.d.ts +1 -1
  35. package/dist/canvas/components/HierarchicalCanvas/index.d.ts.map +1 -1
  36. package/dist/canvas/components/LoopNode/LoopCanvasNode.cjs +86 -0
  37. package/dist/canvas/components/LoopNode/LoopCanvasNode.d.ts +6 -0
  38. package/dist/canvas/components/LoopNode/LoopCanvasNode.d.ts.map +1 -0
  39. package/dist/canvas/components/LoopNode/LoopCanvasNode.js +52 -0
  40. package/dist/canvas/components/LoopNode/LoopNode.cjs +434 -0
  41. package/dist/canvas/components/LoopNode/LoopNode.constants.cjs +81 -0
  42. package/dist/canvas/components/LoopNode/LoopNode.constants.d.ts +13 -0
  43. package/dist/canvas/components/LoopNode/LoopNode.constants.d.ts.map +1 -0
  44. package/dist/canvas/components/LoopNode/LoopNode.constants.js +14 -0
  45. package/dist/canvas/components/LoopNode/LoopNode.d.ts +5 -0
  46. package/dist/canvas/components/LoopNode/LoopNode.d.ts.map +1 -0
  47. package/dist/canvas/components/LoopNode/LoopNode.helpers.cjs +144 -0
  48. package/dist/canvas/components/LoopNode/LoopNode.helpers.d.ts +29 -0
  49. package/dist/canvas/components/LoopNode/LoopNode.helpers.d.ts.map +1 -0
  50. package/dist/canvas/components/LoopNode/LoopNode.helpers.js +98 -0
  51. package/dist/canvas/components/LoopNode/LoopNode.js +400 -0
  52. package/dist/canvas/components/LoopNode/LoopNode.types.cjs +18 -0
  53. package/dist/canvas/components/LoopNode/LoopNode.types.d.ts +22 -0
  54. package/dist/canvas/components/LoopNode/LoopNode.types.d.ts.map +1 -0
  55. package/dist/canvas/components/LoopNode/LoopNode.types.js +0 -0
  56. package/dist/canvas/components/LoopNode/LoopNodePreview.cjs +61 -0
  57. package/dist/canvas/components/LoopNode/LoopNodePreview.d.ts +9 -0
  58. package/dist/canvas/components/LoopNode/LoopNodePreview.d.ts.map +1 -0
  59. package/dist/canvas/components/LoopNode/LoopNodePreview.js +27 -0
  60. package/dist/canvas/components/LoopNode/index.cjs +79 -0
  61. package/dist/canvas/components/LoopNode/index.d.ts +5 -0
  62. package/dist/canvas/components/LoopNode/index.d.ts.map +1 -0
  63. package/dist/canvas/components/LoopNode/index.js +4 -0
  64. package/dist/canvas/components/NodeViewportOverlay.cjs +63 -0
  65. package/dist/canvas/components/NodeViewportOverlay.d.ts +22 -0
  66. package/dist/canvas/components/NodeViewportOverlay.d.ts.map +1 -0
  67. package/dist/canvas/components/NodeViewportOverlay.js +29 -0
  68. package/dist/canvas/components/StageNode/StageNodeHeader.cjs +6 -1
  69. package/dist/canvas/components/StageNode/StageNodeHeader.d.ts.map +1 -1
  70. package/dist/canvas/components/StageNode/StageNodeHeader.js +6 -1
  71. package/dist/canvas/components/Toolbar/EdgeToolbar/EdgeToolbar.cjs +1 -1
  72. package/dist/canvas/components/Toolbar/EdgeToolbar/EdgeToolbar.js +1 -1
  73. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.cjs +25 -23
  74. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.d.ts.map +1 -1
  75. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.js +27 -25
  76. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.cjs +10 -3
  77. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.d.ts +1 -1
  78. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.d.ts.map +1 -1
  79. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.js +10 -3
  80. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.types.d.ts +1 -0
  81. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.types.d.ts.map +1 -1
  82. package/dist/canvas/components/index.cjs +27 -20
  83. package/dist/canvas/components/index.d.ts +1 -0
  84. package/dist/canvas/components/index.d.ts.map +1 -1
  85. package/dist/canvas/components/index.js +1 -0
  86. package/dist/canvas/constants.cjs +4 -0
  87. package/dist/canvas/constants.d.ts +1 -0
  88. package/dist/canvas/constants.d.ts.map +1 -1
  89. package/dist/canvas/constants.js +2 -1
  90. package/dist/canvas/core/NodeTypeRegistry.cjs +50 -26
  91. package/dist/canvas/core/NodeTypeRegistry.d.ts +10 -5
  92. package/dist/canvas/core/NodeTypeRegistry.d.ts.map +1 -1
  93. package/dist/canvas/core/NodeTypeRegistry.js +50 -26
  94. package/dist/canvas/core/useNodeTypeRegistry.cjs +13 -3
  95. package/dist/canvas/core/useNodeTypeRegistry.d.ts +2 -1
  96. package/dist/canvas/core/useNodeTypeRegistry.d.ts.map +1 -1
  97. package/dist/canvas/core/useNodeTypeRegistry.js +11 -4
  98. package/dist/canvas/hooks/useAddNodeOnConnectEnd.cjs +22 -23
  99. package/dist/canvas/hooks/useAddNodeOnConnectEnd.d.ts.map +1 -1
  100. package/dist/canvas/hooks/useAddNodeOnConnectEnd.js +23 -24
  101. package/dist/canvas/hooks/usePreviewNode.cjs +7 -3
  102. package/dist/canvas/hooks/usePreviewNode.d.ts.map +1 -1
  103. package/dist/canvas/hooks/usePreviewNode.js +7 -3
  104. package/dist/canvas/locales/de.cjs +1 -1
  105. package/dist/canvas/locales/de.d.ts.map +1 -1
  106. package/dist/canvas/locales/de.js +1 -1
  107. package/dist/canvas/locales/es-MX.cjs +1 -1
  108. package/dist/canvas/locales/es-MX.d.ts.map +1 -1
  109. package/dist/canvas/locales/es-MX.js +1 -1
  110. package/dist/canvas/locales/es.cjs +1 -1
  111. package/dist/canvas/locales/es.d.ts.map +1 -1
  112. package/dist/canvas/locales/es.js +1 -1
  113. package/dist/canvas/locales/fr.cjs +1 -1
  114. package/dist/canvas/locales/fr.d.ts.map +1 -1
  115. package/dist/canvas/locales/fr.js +1 -1
  116. package/dist/canvas/locales/ja.cjs +1 -1
  117. package/dist/canvas/locales/ja.d.ts.map +1 -1
  118. package/dist/canvas/locales/ja.js +1 -1
  119. package/dist/canvas/locales/ko.cjs +1 -1
  120. package/dist/canvas/locales/ko.d.ts.map +1 -1
  121. package/dist/canvas/locales/ko.js +1 -1
  122. package/dist/canvas/locales/pt-BR.cjs +1 -1
  123. package/dist/canvas/locales/pt-BR.d.ts.map +1 -1
  124. package/dist/canvas/locales/pt-BR.js +1 -1
  125. package/dist/canvas/locales/pt.cjs +1 -1
  126. package/dist/canvas/locales/pt.d.ts.map +1 -1
  127. package/dist/canvas/locales/pt.js +1 -1
  128. package/dist/canvas/locales/tr.cjs +1 -1
  129. package/dist/canvas/locales/tr.d.ts.map +1 -1
  130. package/dist/canvas/locales/tr.js +1 -1
  131. package/dist/canvas/locales/zh-CN.cjs +1 -1
  132. package/dist/canvas/locales/zh-CN.d.ts.map +1 -1
  133. package/dist/canvas/locales/zh-CN.js +1 -1
  134. package/dist/canvas/locales/zh-TW.cjs +1 -1
  135. package/dist/canvas/locales/zh-TW.d.ts.map +1 -1
  136. package/dist/canvas/locales/zh-TW.js +1 -1
  137. package/dist/canvas/schema/node-definition/handle.cjs +10 -2
  138. package/dist/canvas/schema/node-definition/handle.d.ts +9 -0
  139. package/dist/canvas/schema/node-definition/handle.d.ts.map +1 -1
  140. package/dist/canvas/schema/node-definition/handle.js +6 -1
  141. package/dist/canvas/schema/node-definition/index.cjs +4 -1
  142. package/dist/canvas/schema/node-definition/index.d.ts +3 -3
  143. package/dist/canvas/schema/node-definition/index.d.ts.map +1 -1
  144. package/dist/canvas/schema/node-definition/index.js +2 -2
  145. package/dist/canvas/schema/node-definition/node-manifest.d.ts +4 -0
  146. package/dist/canvas/schema/node-definition/node-manifest.d.ts.map +1 -1
  147. package/dist/canvas/storybook-utils/hooks/useCanvasStory.d.ts +6 -0
  148. package/dist/canvas/storybook-utils/hooks/useCanvasStory.d.ts.map +1 -1
  149. package/dist/canvas/storybook-utils/manifests/index.d.ts +1 -0
  150. package/dist/canvas/storybook-utils/manifests/index.d.ts.map +1 -1
  151. package/dist/canvas/storybook-utils/manifests/node-definitions.d.ts.map +1 -1
  152. package/dist/canvas/storybook-utils/mocks/nodes.d.ts +1 -1
  153. package/dist/canvas/storybook-utils/mocks/nodes.d.ts.map +1 -1
  154. package/dist/canvas/styles/reactflow-reset.css +2 -2
  155. package/dist/canvas/styles/tailwind.canvas.css +1 -1
  156. package/dist/canvas/utils/collapse.cjs +13 -6
  157. package/dist/canvas/utils/collapse.d.ts +2 -2
  158. package/dist/canvas/utils/collapse.d.ts.map +1 -1
  159. package/dist/canvas/utils/collapse.js +9 -2
  160. package/dist/canvas/utils/createPreviewGraph.cjs +126 -0
  161. package/dist/canvas/utils/createPreviewGraph.d.ts +36 -0
  162. package/dist/canvas/utils/createPreviewGraph.d.ts.map +1 -0
  163. package/dist/canvas/utils/createPreviewGraph.js +83 -0
  164. package/dist/canvas/utils/createPreviewNode.cjs +30 -11
  165. package/dist/canvas/utils/createPreviewNode.d.ts +10 -2
  166. package/dist/canvas/utils/createPreviewNode.d.ts.map +1 -1
  167. package/dist/canvas/utils/createPreviewNode.js +21 -11
  168. package/dist/canvas/utils/index.cjs +33 -26
  169. package/dist/canvas/utils/index.d.ts +2 -1
  170. package/dist/canvas/utils/index.d.ts.map +1 -1
  171. package/dist/canvas/utils/index.js +2 -1
  172. package/dist/canvas/utils/manifest-resolver.cjs +8 -0
  173. package/dist/canvas/utils/manifest-resolver.d.ts +1 -0
  174. package/dist/canvas/utils/manifest-resolver.d.ts.map +1 -1
  175. package/dist/canvas/utils/manifest-resolver.js +6 -1
  176. package/dist/material/components/ap-tool-call/locales/de.cjs +1 -1
  177. package/dist/material/components/ap-tool-call/locales/de.d.ts.map +1 -1
  178. package/dist/material/components/ap-tool-call/locales/de.js +1 -1
  179. package/dist/material/components/ap-tool-call/locales/es-MX.cjs +1 -1
  180. package/dist/material/components/ap-tool-call/locales/es-MX.js +1 -1
  181. package/dist/material/components/ap-tool-call/locales/es.cjs +1 -1
  182. package/dist/material/components/ap-tool-call/locales/es.js +1 -1
  183. package/dist/material/components/ap-tool-call/locales/fr.cjs +1 -1
  184. package/dist/material/components/ap-tool-call/locales/fr.d.ts.map +1 -1
  185. package/dist/material/components/ap-tool-call/locales/fr.js +1 -1
  186. package/dist/material/components/ap-tool-call/locales/ja.cjs +1 -1
  187. package/dist/material/components/ap-tool-call/locales/ja.d.ts.map +1 -1
  188. package/dist/material/components/ap-tool-call/locales/ja.js +1 -1
  189. package/dist/material/components/ap-tool-call/locales/ko.cjs +1 -1
  190. package/dist/material/components/ap-tool-call/locales/ko.d.ts.map +1 -1
  191. package/dist/material/components/ap-tool-call/locales/ko.js +1 -1
  192. package/dist/material/components/ap-tool-call/locales/pt-BR.cjs +1 -1
  193. package/dist/material/components/ap-tool-call/locales/pt-BR.d.ts.map +1 -1
  194. package/dist/material/components/ap-tool-call/locales/pt-BR.js +1 -1
  195. package/dist/material/components/ap-tool-call/locales/pt.cjs +1 -1
  196. package/dist/material/components/ap-tool-call/locales/pt.d.ts.map +1 -1
  197. package/dist/material/components/ap-tool-call/locales/pt.js +1 -1
  198. package/dist/material/components/ap-tool-call/locales/tr.cjs +1 -1
  199. package/dist/material/components/ap-tool-call/locales/tr.d.ts.map +1 -1
  200. package/dist/material/components/ap-tool-call/locales/tr.js +1 -1
  201. package/dist/material/components/ap-tool-call/locales/zh-CN.cjs +1 -1
  202. package/dist/material/components/ap-tool-call/locales/zh-CN.d.ts.map +1 -1
  203. package/dist/material/components/ap-tool-call/locales/zh-CN.js +1 -1
  204. package/dist/material/components/ap-tool-call/locales/zh-TW.cjs +1 -1
  205. package/dist/material/components/ap-tool-call/locales/zh-TW.d.ts.map +1 -1
  206. package/dist/material/components/ap-tool-call/locales/zh-TW.js +1 -1
  207. package/package.json +2 -2
@@ -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";
@@ -27,6 +27,7 @@ __webpack_require__.d(__webpack_exports__, {
27
27
  CANVAS_COMPACT_BREAKPOINT: ()=>CANVAS_COMPACT_BREAKPOINT,
28
28
  DEFAULT_NODE_SIZE: ()=>DEFAULT_NODE_SIZE,
29
29
  DEFAULT_RECTANGLE_NODE_WIDTH: ()=>DEFAULT_RECTANGLE_NODE_WIDTH,
30
+ DEFAULT_SOURCE_HANDLE_ID: ()=>DEFAULT_SOURCE_HANDLE_ID,
30
31
  FLOATING_CANVAS_PANEL_OFFSET: ()=>FLOATING_CANVAS_PANEL_OFFSET,
31
32
  GRID_SPACING: ()=>GRID_SPACING,
32
33
  NODE_BADGE_INSET_CIRCLE: ()=>NODE_BADGE_INSET_CIRCLE,
@@ -54,6 +55,7 @@ __webpack_require__.d(__webpack_exports__, {
54
55
  });
55
56
  const PREVIEW_NODE_ID = 'preview-node-id';
56
57
  const PREVIEW_EDGE_ID = 'preview-edge-id';
58
+ const DEFAULT_SOURCE_HANDLE_ID = 'output';
57
59
  const DEFAULT_NODE_SIZE = 96;
58
60
  const GRID_SPACING = 16;
59
61
  const CANVAS_COMPACT_BREAKPOINT = 600;
@@ -82,6 +84,7 @@ const NODE_BADGE_INSET_CIRCLE = 12;
82
84
  exports.CANVAS_COMPACT_BREAKPOINT = __webpack_exports__.CANVAS_COMPACT_BREAKPOINT;
83
85
  exports.DEFAULT_NODE_SIZE = __webpack_exports__.DEFAULT_NODE_SIZE;
84
86
  exports.DEFAULT_RECTANGLE_NODE_WIDTH = __webpack_exports__.DEFAULT_RECTANGLE_NODE_WIDTH;
87
+ exports.DEFAULT_SOURCE_HANDLE_ID = __webpack_exports__.DEFAULT_SOURCE_HANDLE_ID;
85
88
  exports.FLOATING_CANVAS_PANEL_OFFSET = __webpack_exports__.FLOATING_CANVAS_PANEL_OFFSET;
86
89
  exports.GRID_SPACING = __webpack_exports__.GRID_SPACING;
87
90
  exports.NODE_BADGE_INSET_CIRCLE = __webpack_exports__.NODE_BADGE_INSET_CIRCLE;
@@ -110,6 +113,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
110
113
  "CANVAS_COMPACT_BREAKPOINT",
111
114
  "DEFAULT_NODE_SIZE",
112
115
  "DEFAULT_RECTANGLE_NODE_WIDTH",
116
+ "DEFAULT_SOURCE_HANDLE_ID",
113
117
  "FLOATING_CANVAS_PANEL_OFFSET",
114
118
  "GRID_SPACING",
115
119
  "NODE_BADGE_INSET_CIRCLE",
@@ -1,5 +1,6 @@
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;
5
6
  export declare const CANVAS_COMPACT_BREAKPOINT = 600;
@@ -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,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,5 +1,6 @@
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;
5
6
  const CANVAS_COMPACT_BREAKPOINT = 600;
@@ -25,4 +26,4 @@ const NODE_TEXT_BOTTOM_OFFSET_WITH_HANDLES = -40;
25
26
  const NODE_BADGE_SIZE = 20;
26
27
  const NODE_BADGE_INSET_SQUARE = 6;
27
28
  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 };
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 };
@@ -32,12 +32,32 @@ const external_CategoryTreeAdapter_cjs_namespaceObject = require("./CategoryTree
32
32
  class NodeTypeRegistry {
33
33
  categoryById = new Map();
34
34
  nodeByType = new Map();
35
- nodeHandles = new Map();
35
+ nodeByTypeVersion = new Map();
36
+ nodeHandlesByTypeVersion = new Map();
36
37
  categoriesByParent = new Map();
37
38
  nodesByCategory = new Map();
38
39
  categoryAncestors = new Map();
39
40
  categoryDescendants = new Map();
40
41
  categoryTree = null;
42
+ getNodeHandles(manifest) {
43
+ if (!manifest) return {};
44
+ const manifestKey = this.getTypeVersionKey(manifest.nodeType, manifest.version);
45
+ const cachedHandles = this.nodeHandlesByTypeVersion.get(manifestKey);
46
+ if (cachedHandles) return cachedHandles;
47
+ return this.computeNodeHandles(manifest);
48
+ }
49
+ computeNodeHandles(manifest) {
50
+ const handlesByType = {};
51
+ for (const group of manifest.handleConfiguration)for (const handle of group.handles){
52
+ const handles = handlesByType[handle.type] ?? [];
53
+ handles.push(handle);
54
+ handlesByType[handle.type] = handles;
55
+ }
56
+ return handlesByType;
57
+ }
58
+ getTypeVersionKey(nodeType, version) {
59
+ return `${nodeType}:${version}`;
60
+ }
41
61
  registerNodeManifests(nodes) {
42
62
  const categoryMap = new Map();
43
63
  for (const node of nodes){
@@ -59,18 +79,16 @@ class NodeTypeRegistry {
59
79
  c.id,
60
80
  c
61
81
  ]));
62
- this.nodeByType = new Map(nodeManifests.map((n)=>[
63
- n.nodeType,
64
- n
65
- ]));
66
- this.nodeHandles = new Map(nodeManifests.map((n)=>[
67
- n.nodeType,
68
- n.handleConfiguration.flatMap((hc)=>hc.handles).reduce((acc, handle)=>{
69
- if (!acc[handle.type]) acc[handle.type] = [];
70
- acc[handle.type]?.push(handle);
71
- return acc;
72
- }, {})
73
- ]));
82
+ this.nodeByType = new Map();
83
+ this.nodeByTypeVersion = new Map();
84
+ this.nodeHandlesByTypeVersion = new Map();
85
+ for (const nodeManifest of nodeManifests){
86
+ const manifestKey = this.getTypeVersionKey(nodeManifest.nodeType, nodeManifest.version);
87
+ this.nodeByTypeVersion.set(manifestKey, nodeManifest);
88
+ this.nodeHandlesByTypeVersion.set(manifestKey, this.computeNodeHandles(nodeManifest));
89
+ this.nodeByType.set(nodeManifest.nodeType, nodeManifest);
90
+ }
91
+ const defaultNodeManifests = Array.from(this.nodeByType.values());
74
92
  this.categoriesByParent = new Map();
75
93
  for (const cat of categoryManifests){
76
94
  const siblings = this.categoriesByParent.get(cat.parentId) ?? [];
@@ -104,18 +122,22 @@ class NodeTypeRegistry {
104
122
  this.categoryDescendants.set(cat.id, descendants);
105
123
  }
106
124
  this.nodesByCategory = new Map();
107
- for (const node of nodeManifests){
125
+ for (const node of defaultNodeManifests){
108
126
  const categoryKey = node.category ?? void 0;
109
127
  const nodes = this.nodesByCategory.get(categoryKey) ?? [];
110
128
  nodes.push(node);
111
129
  this.nodesByCategory.set(categoryKey, nodes);
112
130
  }
113
- this.categoryTree = new external_CategoryTree_cjs_namespaceObject.CategoryTree(categoryManifests, nodeManifests);
131
+ this.categoryTree = new external_CategoryTree_cjs_namespaceObject.CategoryTree(categoryManifests, defaultNodeManifests);
114
132
  }
115
- getManifest(nodeType) {
116
- return this.nodeByType.get(nodeType);
133
+ getManifest(nodeType, version) {
134
+ if (!version) return this.nodeByType.get(nodeType);
135
+ return this.nodeByTypeVersion.get(this.getTypeVersionKey(nodeType, version));
117
136
  }
118
137
  getAllManifests() {
138
+ return Array.from(this.nodeByTypeVersion.values());
139
+ }
140
+ getDefaultManifests() {
119
141
  return Array.from(this.nodeByType.values());
120
142
  }
121
143
  getAllCategories() {
@@ -124,18 +146,19 @@ class NodeTypeRegistry {
124
146
  getAllNodeTypes() {
125
147
  return Array.from(this.nodeByType.keys());
126
148
  }
127
- getHandlesByNodeType(nodeType) {
128
- return this.nodeHandles.get(nodeType) ?? {};
149
+ getHandlesByNodeType(nodeType, version) {
150
+ const manifest = this.getManifest(nodeType, version);
151
+ return this.getNodeHandles(manifest);
129
152
  }
130
- getDefaultHandle(nodeType, handleType) {
131
- const handles = this.nodeHandles.get(nodeType)?.[handleType];
153
+ getDefaultHandle(nodeType, handleType, version) {
154
+ const handles = this.getHandlesByNodeType(nodeType, version)[handleType];
132
155
  return handles?.find((h)=>h.isDefaultForType) ?? handles?.[0];
133
156
  }
134
- createDefaultData(nodeType, label) {
135
- const manifest = this.getManifest(nodeType);
157
+ createDefaultData(nodeType, label, typeVersion) {
158
+ const manifest = this.getManifest(nodeType, typeVersion);
136
159
  if (!manifest) return {
137
160
  nodeType,
138
- version: '1.0.0',
161
+ typeVersion: typeVersion ?? '1.0.0',
139
162
  display: {
140
163
  label: label || nodeType
141
164
  }
@@ -151,7 +174,7 @@ class NodeTypeRegistry {
151
174
  };
152
175
  return {
153
176
  nodeType,
154
- version: manifest.version,
177
+ typeVersion: manifest.version,
155
178
  parameters: manifest.defaultProperties ?? {},
156
179
  display: display
157
180
  };
@@ -161,8 +184,9 @@ class NodeTypeRegistry {
161
184
  }
162
185
  clear() {
163
186
  this.nodesByCategory.clear();
164
- this.nodeHandles.clear();
165
187
  this.nodeByType.clear();
188
+ this.nodeByTypeVersion.clear();
189
+ this.nodeHandlesByTypeVersion.clear();
166
190
  this.categoryById.clear();
167
191
  this.categoryAncestors.clear();
168
192
  this.categoryDescendants.clear();
@@ -9,21 +9,26 @@ interface NodeHandles {
9
9
  export declare class NodeTypeRegistry {
10
10
  private categoryById;
11
11
  private nodeByType;
12
- private nodeHandles;
12
+ private nodeByTypeVersion;
13
+ private nodeHandlesByTypeVersion;
13
14
  private categoriesByParent;
14
15
  private nodesByCategory;
15
16
  private categoryAncestors;
16
17
  private categoryDescendants;
17
18
  private categoryTree;
19
+ private getNodeHandles;
20
+ private computeNodeHandles;
21
+ private getTypeVersionKey;
18
22
  registerNodeManifests(nodes: NodeManifest[]): void;
19
23
  registerManifest(nodeManifests: NodeManifest[], categoryManifests: CategoryManifest[]): void;
20
- getManifest(nodeType: string): NodeManifest | undefined;
24
+ getManifest(nodeType: string, version?: string): NodeManifest | undefined;
21
25
  getAllManifests(): NodeManifest[];
26
+ getDefaultManifests(): NodeManifest[];
22
27
  getAllCategories(): string[];
23
28
  getAllNodeTypes(): string[];
24
- getHandlesByNodeType(nodeType: string): NodeHandles;
25
- getDefaultHandle(nodeType: string, handleType: 'source' | 'target'): HandleManifest | undefined;
26
- createDefaultData(nodeType: string, label?: string): BaseNodeData;
29
+ getHandlesByNodeType(nodeType: string, version?: string): NodeHandles;
30
+ getDefaultHandle(nodeType: string, handleType: 'source' | 'target', version?: string): HandleManifest | undefined;
31
+ createDefaultData(nodeType: string, label?: string, typeVersion?: string): BaseNodeData;
27
32
  getCategoryTree(): CategoryTree | null;
28
33
  clear(): void;
29
34
  isValidCategoryForConnection(categoryId: string, previewNodeConnectionInfo: PreviewNodeConnectionInfo[] | null | undefined): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"NodeTypeRegistry.d.ts","sourceRoot":"","sources":["../../../src/canvas/core/NodeTypeRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAMhG,OAAO,EAAE,YAAY,EAA4B,MAAM,gBAAgB,CAAC;AAGxE,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;CAC3B;AAMD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,kBAAkB,CAAqD;IAC/E,OAAO,CAAC,eAAe,CAAiD;IACxE,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,mBAAmB,CAA+B;IAC1D,OAAO,CAAC,YAAY,CAA6B;IAUjD,qBAAqB,CAAC,KAAK,EAAE,YAAY,EAAE;IA8B3C,gBAAgB,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE;IA0ErF,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAQvD,eAAe,IAAI,YAAY,EAAE;IAQjC,gBAAgB,IAAI,MAAM,EAAE;IAQ5B,eAAe,IAAI,MAAM,EAAE;IAO3B,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAOnD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS;IAW/F,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY;IAqCjE,eAAe,IAAI,YAAY,GAAG,IAAI;IAOtC,KAAK,IAAI,IAAI;IAwBb,4BAA4B,CAC1B,UAAU,EAAE,MAAM,EAClB,yBAAyB,EAAE,yBAAyB,EAAE,GAAG,IAAI,GAAG,SAAS,GACxE,OAAO;IA6CV,wBAAwB,CACtB,QAAQ,EAAE,MAAM,EAChB,yBAAyB,EAAE,yBAAyB,EAAE,GAAG,IAAI,GAAG,SAAS;IAgE3E,OAAO,CAAC,yBAAyB;IAqCjC,cAAc,CAAC,OAAO,EAAE;QACtB,WAAW,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI,CAAC;QACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,GAAG,QAAQ,EAAE;CAyCf"}
1
+ {"version":3,"file":"NodeTypeRegistry.d.ts","sourceRoot":"","sources":["../../../src/canvas/core/NodeTypeRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAMhG,OAAO,EAAE,YAAY,EAA4B,MAAM,gBAAgB,CAAC;AAGxE,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;CAC3B;AAMD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,iBAAiB,CAAmC;IAC5D,OAAO,CAAC,wBAAwB,CAAkC;IAClE,OAAO,CAAC,kBAAkB,CAAqD;IAC/E,OAAO,CAAC,eAAe,CAAiD;IACxE,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,mBAAmB,CAA+B;IAC1D,OAAO,CAAC,YAAY,CAA6B;IAEjD,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,iBAAiB;IAYzB,qBAAqB,CAAC,KAAK,EAAE,YAAY,EAAE;IA8B3C,gBAAgB,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE;IAyErF,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAWzE,eAAe,IAAI,YAAY,EAAE;IAQjC,mBAAmB,IAAI,YAAY,EAAE;IAQrC,gBAAgB,IAAI,MAAM,EAAE;IAQ5B,eAAe,IAAI,MAAM,EAAE;IAO3B,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW;IAQrE,gBAAgB,CACd,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,QAAQ,GAAG,QAAQ,EAC/B,OAAO,CAAC,EAAE,MAAM,GACf,cAAc,GAAG,SAAS;IAW7B,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,YAAY;IAqCvF,eAAe,IAAI,YAAY,GAAG,IAAI;IAOtC,KAAK,IAAI,IAAI;IAyBb,4BAA4B,CAC1B,UAAU,EAAE,MAAM,EAClB,yBAAyB,EAAE,yBAAyB,EAAE,GAAG,IAAI,GAAG,SAAS,GACxE,OAAO;IA6CV,wBAAwB,CACtB,QAAQ,EAAE,MAAM,EAChB,yBAAyB,EAAE,yBAAyB,EAAE,GAAG,IAAI,GAAG,SAAS;IAgE3E,OAAO,CAAC,yBAAyB;IAqCjC,cAAc,CAAC,OAAO,EAAE;QACtB,WAAW,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI,CAAC;QACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,GAAG,QAAQ,EAAE;CAyCf"}
@@ -4,12 +4,32 @@ import { CategoryTreeAdapter } from "./CategoryTreeAdapter.js";
4
4
  class NodeTypeRegistry {
5
5
  categoryById = new Map();
6
6
  nodeByType = new Map();
7
- nodeHandles = new Map();
7
+ nodeByTypeVersion = new Map();
8
+ nodeHandlesByTypeVersion = new Map();
8
9
  categoriesByParent = new Map();
9
10
  nodesByCategory = new Map();
10
11
  categoryAncestors = new Map();
11
12
  categoryDescendants = new Map();
12
13
  categoryTree = null;
14
+ getNodeHandles(manifest) {
15
+ if (!manifest) return {};
16
+ const manifestKey = this.getTypeVersionKey(manifest.nodeType, manifest.version);
17
+ const cachedHandles = this.nodeHandlesByTypeVersion.get(manifestKey);
18
+ if (cachedHandles) return cachedHandles;
19
+ return this.computeNodeHandles(manifest);
20
+ }
21
+ computeNodeHandles(manifest) {
22
+ const handlesByType = {};
23
+ for (const group of manifest.handleConfiguration)for (const handle of group.handles){
24
+ const handles = handlesByType[handle.type] ?? [];
25
+ handles.push(handle);
26
+ handlesByType[handle.type] = handles;
27
+ }
28
+ return handlesByType;
29
+ }
30
+ getTypeVersionKey(nodeType, version) {
31
+ return `${nodeType}:${version}`;
32
+ }
13
33
  registerNodeManifests(nodes) {
14
34
  const categoryMap = new Map();
15
35
  for (const node of nodes){
@@ -31,18 +51,16 @@ class NodeTypeRegistry {
31
51
  c.id,
32
52
  c
33
53
  ]));
34
- this.nodeByType = new Map(nodeManifests.map((n)=>[
35
- n.nodeType,
36
- n
37
- ]));
38
- this.nodeHandles = new Map(nodeManifests.map((n)=>[
39
- n.nodeType,
40
- n.handleConfiguration.flatMap((hc)=>hc.handles).reduce((acc, handle)=>{
41
- if (!acc[handle.type]) acc[handle.type] = [];
42
- acc[handle.type]?.push(handle);
43
- return acc;
44
- }, {})
45
- ]));
54
+ this.nodeByType = new Map();
55
+ this.nodeByTypeVersion = new Map();
56
+ this.nodeHandlesByTypeVersion = new Map();
57
+ for (const nodeManifest of nodeManifests){
58
+ const manifestKey = this.getTypeVersionKey(nodeManifest.nodeType, nodeManifest.version);
59
+ this.nodeByTypeVersion.set(manifestKey, nodeManifest);
60
+ this.nodeHandlesByTypeVersion.set(manifestKey, this.computeNodeHandles(nodeManifest));
61
+ this.nodeByType.set(nodeManifest.nodeType, nodeManifest);
62
+ }
63
+ const defaultNodeManifests = Array.from(this.nodeByType.values());
46
64
  this.categoriesByParent = new Map();
47
65
  for (const cat of categoryManifests){
48
66
  const siblings = this.categoriesByParent.get(cat.parentId) ?? [];
@@ -76,18 +94,22 @@ class NodeTypeRegistry {
76
94
  this.categoryDescendants.set(cat.id, descendants);
77
95
  }
78
96
  this.nodesByCategory = new Map();
79
- for (const node of nodeManifests){
97
+ for (const node of defaultNodeManifests){
80
98
  const categoryKey = node.category ?? void 0;
81
99
  const nodes = this.nodesByCategory.get(categoryKey) ?? [];
82
100
  nodes.push(node);
83
101
  this.nodesByCategory.set(categoryKey, nodes);
84
102
  }
85
- this.categoryTree = new CategoryTree(categoryManifests, nodeManifests);
103
+ this.categoryTree = new CategoryTree(categoryManifests, defaultNodeManifests);
86
104
  }
87
- getManifest(nodeType) {
88
- return this.nodeByType.get(nodeType);
105
+ getManifest(nodeType, version) {
106
+ if (!version) return this.nodeByType.get(nodeType);
107
+ return this.nodeByTypeVersion.get(this.getTypeVersionKey(nodeType, version));
89
108
  }
90
109
  getAllManifests() {
110
+ return Array.from(this.nodeByTypeVersion.values());
111
+ }
112
+ getDefaultManifests() {
91
113
  return Array.from(this.nodeByType.values());
92
114
  }
93
115
  getAllCategories() {
@@ -96,18 +118,19 @@ class NodeTypeRegistry {
96
118
  getAllNodeTypes() {
97
119
  return Array.from(this.nodeByType.keys());
98
120
  }
99
- getHandlesByNodeType(nodeType) {
100
- return this.nodeHandles.get(nodeType) ?? {};
121
+ getHandlesByNodeType(nodeType, version) {
122
+ const manifest = this.getManifest(nodeType, version);
123
+ return this.getNodeHandles(manifest);
101
124
  }
102
- getDefaultHandle(nodeType, handleType) {
103
- const handles = this.nodeHandles.get(nodeType)?.[handleType];
125
+ getDefaultHandle(nodeType, handleType, version) {
126
+ const handles = this.getHandlesByNodeType(nodeType, version)[handleType];
104
127
  return handles?.find((h)=>h.isDefaultForType) ?? handles?.[0];
105
128
  }
106
- createDefaultData(nodeType, label) {
107
- const manifest = this.getManifest(nodeType);
129
+ createDefaultData(nodeType, label, typeVersion) {
130
+ const manifest = this.getManifest(nodeType, typeVersion);
108
131
  if (!manifest) return {
109
132
  nodeType,
110
- version: '1.0.0',
133
+ typeVersion: typeVersion ?? '1.0.0',
111
134
  display: {
112
135
  label: label || nodeType
113
136
  }
@@ -123,7 +146,7 @@ class NodeTypeRegistry {
123
146
  };
124
147
  return {
125
148
  nodeType,
126
- version: manifest.version,
149
+ typeVersion: manifest.version,
127
150
  parameters: manifest.defaultProperties ?? {},
128
151
  display: display
129
152
  };
@@ -133,8 +156,9 @@ class NodeTypeRegistry {
133
156
  }
134
157
  clear() {
135
158
  this.nodesByCategory.clear();
136
- this.nodeHandles.clear();
137
159
  this.nodeByType.clear();
160
+ this.nodeByTypeVersion.clear();
161
+ this.nodeHandlesByTypeVersion.clear();
138
162
  this.categoryById.clear();
139
163
  this.categoryAncestors.clear();
140
164
  this.categoryDescendants.clear();