@uipath/apollo-react 4.14.1 → 4.15.0-pr605.2728a1c

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 (224) hide show
  1. package/dist/canvas/components/AddNodePanel/AddNodeManager.cjs +106 -10
  2. package/dist/canvas/components/AddNodePanel/AddNodeManager.d.ts.map +1 -1
  3. package/dist/canvas/components/AddNodePanel/AddNodeManager.js +106 -10
  4. package/dist/canvas/components/AddNodePanel/createAddNodePreview.cjs +38 -4
  5. package/dist/canvas/components/AddNodePanel/createAddNodePreview.d.ts +5 -1
  6. package/dist/canvas/components/AddNodePanel/createAddNodePreview.d.ts.map +1 -1
  7. package/dist/canvas/components/AddNodePanel/createAddNodePreview.js +38 -4
  8. package/dist/canvas/components/AgentCanvas/agent-flow.manifest.d.ts +1 -0
  9. package/dist/canvas/components/AgentCanvas/agent-flow.manifest.d.ts.map +1 -1
  10. package/dist/canvas/components/BaseNode/BaseNode.cjs +11 -5
  11. package/dist/canvas/components/BaseNode/BaseNode.d.ts +2 -1
  12. package/dist/canvas/components/BaseNode/BaseNode.d.ts.map +1 -1
  13. package/dist/canvas/components/BaseNode/BaseNode.js +9 -6
  14. package/dist/canvas/components/BaseNode/BaseNode.types.d.ts +3 -0
  15. package/dist/canvas/components/BaseNode/BaseNode.types.d.ts.map +1 -1
  16. package/dist/canvas/components/ButtonHandle/ButtonHandle.cjs +222 -13
  17. package/dist/canvas/components/ButtonHandle/ButtonHandle.d.ts +10 -5
  18. package/dist/canvas/components/ButtonHandle/ButtonHandle.d.ts.map +1 -1
  19. package/dist/canvas/components/ButtonHandle/ButtonHandle.js +223 -14
  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 +17 -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 +17 -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 +18 -12
  33. package/dist/canvas/components/Edges/SequenceEdge.d.ts.map +1 -1
  34. package/dist/canvas/components/Edges/SequenceEdge.js +18 -12
  35. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.cjs +34 -25
  36. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.d.ts +8 -2
  37. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.d.ts.map +1 -1
  38. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.js +36 -27
  39. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvasWithControls.cjs +9 -2
  40. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvasWithControls.d.ts.map +1 -1
  41. package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvasWithControls.js +10 -3
  42. package/dist/canvas/components/HierarchicalCanvas/index.d.ts +1 -1
  43. package/dist/canvas/components/HierarchicalCanvas/index.d.ts.map +1 -1
  44. package/dist/canvas/components/LoopNode/LoopCanvasNode.cjs +86 -0
  45. package/dist/canvas/components/LoopNode/LoopCanvasNode.d.ts +6 -0
  46. package/dist/canvas/components/LoopNode/LoopCanvasNode.d.ts.map +1 -0
  47. package/dist/canvas/components/LoopNode/LoopCanvasNode.js +52 -0
  48. package/dist/canvas/components/LoopNode/LoopNode.cjs +434 -0
  49. package/dist/canvas/components/LoopNode/LoopNode.constants.cjs +93 -0
  50. package/dist/canvas/components/LoopNode/LoopNode.constants.d.ts +16 -0
  51. package/dist/canvas/components/LoopNode/LoopNode.constants.d.ts.map +1 -0
  52. package/dist/canvas/components/LoopNode/LoopNode.constants.js +17 -0
  53. package/dist/canvas/components/LoopNode/LoopNode.d.ts +5 -0
  54. package/dist/canvas/components/LoopNode/LoopNode.d.ts.map +1 -0
  55. package/dist/canvas/components/LoopNode/LoopNode.helpers.cjs +185 -0
  56. package/dist/canvas/components/LoopNode/LoopNode.helpers.d.ts +58 -0
  57. package/dist/canvas/components/LoopNode/LoopNode.helpers.d.ts.map +1 -0
  58. package/dist/canvas/components/LoopNode/LoopNode.helpers.js +124 -0
  59. package/dist/canvas/components/LoopNode/LoopNode.js +400 -0
  60. package/dist/canvas/components/LoopNode/LoopNode.sequence.cjs +433 -0
  61. package/dist/canvas/components/LoopNode/LoopNode.sequence.d.ts +57 -0
  62. package/dist/canvas/components/LoopNode/LoopNode.sequence.d.ts.map +1 -0
  63. package/dist/canvas/components/LoopNode/LoopNode.sequence.js +387 -0
  64. package/dist/canvas/components/LoopNode/LoopNode.types.cjs +18 -0
  65. package/dist/canvas/components/LoopNode/LoopNode.types.d.ts +22 -0
  66. package/dist/canvas/components/LoopNode/LoopNode.types.d.ts.map +1 -0
  67. package/dist/canvas/components/LoopNode/LoopNode.types.js +0 -0
  68. package/dist/canvas/components/LoopNode/LoopNodePreview.cjs +60 -0
  69. package/dist/canvas/components/LoopNode/LoopNodePreview.d.ts +9 -0
  70. package/dist/canvas/components/LoopNode/LoopNodePreview.d.ts.map +1 -0
  71. package/dist/canvas/components/LoopNode/LoopNodePreview.js +26 -0
  72. package/dist/canvas/components/LoopNode/index.cjs +79 -0
  73. package/dist/canvas/components/LoopNode/index.d.ts +5 -0
  74. package/dist/canvas/components/LoopNode/index.d.ts.map +1 -0
  75. package/dist/canvas/components/LoopNode/index.js +4 -0
  76. package/dist/canvas/components/NodeViewportOverlay.cjs +63 -0
  77. package/dist/canvas/components/NodeViewportOverlay.d.ts +22 -0
  78. package/dist/canvas/components/NodeViewportOverlay.d.ts.map +1 -0
  79. package/dist/canvas/components/NodeViewportOverlay.js +29 -0
  80. package/dist/canvas/components/Toolbar/EdgeToolbar/EdgeToolbar.cjs +1 -1
  81. package/dist/canvas/components/Toolbar/EdgeToolbar/EdgeToolbar.js +1 -1
  82. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.cjs +41 -24
  83. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.d.ts.map +1 -1
  84. package/dist/canvas/components/Toolbar/EdgeToolbar/useEdgeToolbarState.js +43 -26
  85. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.cjs +10 -3
  86. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.d.ts +1 -1
  87. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.d.ts.map +1 -1
  88. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.js +10 -3
  89. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.types.d.ts +1 -0
  90. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.types.d.ts.map +1 -1
  91. package/dist/canvas/components/index.cjs +27 -20
  92. package/dist/canvas/components/index.d.ts +1 -0
  93. package/dist/canvas/components/index.d.ts.map +1 -1
  94. package/dist/canvas/components/index.js +1 -0
  95. package/dist/canvas/constants.cjs +4 -0
  96. package/dist/canvas/constants.d.ts +1 -0
  97. package/dist/canvas/constants.d.ts.map +1 -1
  98. package/dist/canvas/constants.js +2 -1
  99. package/dist/canvas/core/NodeTypeRegistry.cjs +50 -26
  100. package/dist/canvas/core/NodeTypeRegistry.d.ts +10 -5
  101. package/dist/canvas/core/NodeTypeRegistry.d.ts.map +1 -1
  102. package/dist/canvas/core/NodeTypeRegistry.js +50 -26
  103. package/dist/canvas/core/useNodeTypeRegistry.cjs +13 -3
  104. package/dist/canvas/core/useNodeTypeRegistry.d.ts +2 -1
  105. package/dist/canvas/core/useNodeTypeRegistry.d.ts.map +1 -1
  106. package/dist/canvas/core/useNodeTypeRegistry.js +11 -4
  107. package/dist/canvas/hooks/useAddNodeOnConnectEnd.cjs +22 -23
  108. package/dist/canvas/hooks/useAddNodeOnConnectEnd.d.ts.map +1 -1
  109. package/dist/canvas/hooks/useAddNodeOnConnectEnd.js +23 -24
  110. package/dist/canvas/hooks/usePreviewNode.cjs +7 -3
  111. package/dist/canvas/hooks/usePreviewNode.d.ts.map +1 -1
  112. package/dist/canvas/hooks/usePreviewNode.js +7 -3
  113. package/dist/canvas/locales/de.cjs +1 -1
  114. package/dist/canvas/locales/de.d.ts.map +1 -1
  115. package/dist/canvas/locales/de.js +1 -1
  116. package/dist/canvas/locales/es-MX.cjs +1 -1
  117. package/dist/canvas/locales/es-MX.d.ts.map +1 -1
  118. package/dist/canvas/locales/es-MX.js +1 -1
  119. package/dist/canvas/locales/es.cjs +1 -1
  120. package/dist/canvas/locales/es.d.ts.map +1 -1
  121. package/dist/canvas/locales/es.js +1 -1
  122. package/dist/canvas/locales/fr.cjs +1 -1
  123. package/dist/canvas/locales/fr.d.ts.map +1 -1
  124. package/dist/canvas/locales/fr.js +1 -1
  125. package/dist/canvas/locales/ja.cjs +1 -1
  126. package/dist/canvas/locales/ja.d.ts.map +1 -1
  127. package/dist/canvas/locales/ja.js +1 -1
  128. package/dist/canvas/locales/ko.cjs +1 -1
  129. package/dist/canvas/locales/ko.d.ts.map +1 -1
  130. package/dist/canvas/locales/ko.js +1 -1
  131. package/dist/canvas/locales/pt-BR.cjs +1 -1
  132. package/dist/canvas/locales/pt-BR.d.ts.map +1 -1
  133. package/dist/canvas/locales/pt-BR.js +1 -1
  134. package/dist/canvas/locales/pt.cjs +1 -1
  135. package/dist/canvas/locales/pt.d.ts.map +1 -1
  136. package/dist/canvas/locales/pt.js +1 -1
  137. package/dist/canvas/locales/tr.cjs +1 -1
  138. package/dist/canvas/locales/tr.d.ts.map +1 -1
  139. package/dist/canvas/locales/tr.js +1 -1
  140. package/dist/canvas/locales/zh-CN.cjs +1 -1
  141. package/dist/canvas/locales/zh-CN.d.ts.map +1 -1
  142. package/dist/canvas/locales/zh-CN.js +1 -1
  143. package/dist/canvas/locales/zh-TW.cjs +1 -1
  144. package/dist/canvas/locales/zh-TW.d.ts.map +1 -1
  145. package/dist/canvas/locales/zh-TW.js +1 -1
  146. package/dist/canvas/schema/node-definition/handle.cjs +10 -2
  147. package/dist/canvas/schema/node-definition/handle.d.ts +9 -0
  148. package/dist/canvas/schema/node-definition/handle.d.ts.map +1 -1
  149. package/dist/canvas/schema/node-definition/handle.js +6 -1
  150. package/dist/canvas/schema/node-definition/index.cjs +4 -1
  151. package/dist/canvas/schema/node-definition/index.d.ts +3 -3
  152. package/dist/canvas/schema/node-definition/index.d.ts.map +1 -1
  153. package/dist/canvas/schema/node-definition/index.js +2 -2
  154. package/dist/canvas/schema/node-definition/node-manifest.d.ts +4 -0
  155. package/dist/canvas/schema/node-definition/node-manifest.d.ts.map +1 -1
  156. package/dist/canvas/storybook-utils/hooks/useCanvasStory.d.ts +6 -0
  157. package/dist/canvas/storybook-utils/hooks/useCanvasStory.d.ts.map +1 -1
  158. package/dist/canvas/storybook-utils/manifests/index.d.ts +1 -0
  159. package/dist/canvas/storybook-utils/manifests/index.d.ts.map +1 -1
  160. package/dist/canvas/storybook-utils/manifests/node-definitions.d.ts.map +1 -1
  161. package/dist/canvas/storybook-utils/mocks/nodes.d.ts +1 -1
  162. package/dist/canvas/storybook-utils/mocks/nodes.d.ts.map +1 -1
  163. package/dist/canvas/styles/reactflow-reset.css +2 -2
  164. package/dist/canvas/styles/tailwind.canvas.css +1 -1
  165. package/dist/canvas/utils/NodeUtils.cjs +25 -9
  166. package/dist/canvas/utils/NodeUtils.d.ts +7 -0
  167. package/dist/canvas/utils/NodeUtils.d.ts.map +1 -1
  168. package/dist/canvas/utils/NodeUtils.js +13 -6
  169. package/dist/canvas/utils/collapse.cjs +13 -6
  170. package/dist/canvas/utils/collapse.d.ts +2 -2
  171. package/dist/canvas/utils/collapse.d.ts.map +1 -1
  172. package/dist/canvas/utils/collapse.js +9 -2
  173. package/dist/canvas/utils/container-sizing.cjs +169 -0
  174. package/dist/canvas/utils/container-sizing.d.ts +23 -0
  175. package/dist/canvas/utils/container-sizing.d.ts.map +1 -0
  176. package/dist/canvas/utils/container-sizing.js +132 -0
  177. package/dist/canvas/utils/createPreviewGraph.cjs +126 -0
  178. package/dist/canvas/utils/createPreviewGraph.d.ts +37 -0
  179. package/dist/canvas/utils/createPreviewGraph.d.ts.map +1 -0
  180. package/dist/canvas/utils/createPreviewGraph.js +83 -0
  181. package/dist/canvas/utils/createPreviewNode.cjs +59 -12
  182. package/dist/canvas/utils/createPreviewNode.d.ts +10 -2
  183. package/dist/canvas/utils/createPreviewNode.d.ts.map +1 -1
  184. package/dist/canvas/utils/createPreviewNode.js +50 -12
  185. package/dist/canvas/utils/index.cjs +40 -26
  186. package/dist/canvas/utils/index.d.ts +3 -1
  187. package/dist/canvas/utils/index.d.ts.map +1 -1
  188. package/dist/canvas/utils/index.js +3 -1
  189. package/dist/canvas/utils/manifest-resolver.cjs +8 -0
  190. package/dist/canvas/utils/manifest-resolver.d.ts +1 -0
  191. package/dist/canvas/utils/manifest-resolver.d.ts.map +1 -1
  192. package/dist/canvas/utils/manifest-resolver.js +6 -1
  193. package/dist/material/components/ap-tool-call/locales/de.cjs +1 -1
  194. package/dist/material/components/ap-tool-call/locales/de.d.ts.map +1 -1
  195. package/dist/material/components/ap-tool-call/locales/de.js +1 -1
  196. package/dist/material/components/ap-tool-call/locales/es-MX.cjs +1 -1
  197. package/dist/material/components/ap-tool-call/locales/es-MX.js +1 -1
  198. package/dist/material/components/ap-tool-call/locales/es.cjs +1 -1
  199. package/dist/material/components/ap-tool-call/locales/es.js +1 -1
  200. package/dist/material/components/ap-tool-call/locales/fr.cjs +1 -1
  201. package/dist/material/components/ap-tool-call/locales/fr.d.ts.map +1 -1
  202. package/dist/material/components/ap-tool-call/locales/fr.js +1 -1
  203. package/dist/material/components/ap-tool-call/locales/ja.cjs +1 -1
  204. package/dist/material/components/ap-tool-call/locales/ja.d.ts.map +1 -1
  205. package/dist/material/components/ap-tool-call/locales/ja.js +1 -1
  206. package/dist/material/components/ap-tool-call/locales/ko.cjs +1 -1
  207. package/dist/material/components/ap-tool-call/locales/ko.d.ts.map +1 -1
  208. package/dist/material/components/ap-tool-call/locales/ko.js +1 -1
  209. package/dist/material/components/ap-tool-call/locales/pt-BR.cjs +1 -1
  210. package/dist/material/components/ap-tool-call/locales/pt-BR.d.ts.map +1 -1
  211. package/dist/material/components/ap-tool-call/locales/pt-BR.js +1 -1
  212. package/dist/material/components/ap-tool-call/locales/pt.cjs +1 -1
  213. package/dist/material/components/ap-tool-call/locales/pt.d.ts.map +1 -1
  214. package/dist/material/components/ap-tool-call/locales/pt.js +1 -1
  215. package/dist/material/components/ap-tool-call/locales/tr.cjs +1 -1
  216. package/dist/material/components/ap-tool-call/locales/tr.d.ts.map +1 -1
  217. package/dist/material/components/ap-tool-call/locales/tr.js +1 -1
  218. package/dist/material/components/ap-tool-call/locales/zh-CN.cjs +1 -1
  219. package/dist/material/components/ap-tool-call/locales/zh-CN.d.ts.map +1 -1
  220. package/dist/material/components/ap-tool-call/locales/zh-CN.js +1 -1
  221. package/dist/material/components/ap-tool-call/locales/zh-TW.cjs +1 -1
  222. package/dist/material/components/ap-tool-call/locales/zh-TW.d.ts.map +1 -1
  223. package/dist/material/components/ap-tool-call/locales/zh-TW.js +1 -1
  224. package/package.json +3 -3
@@ -33,8 +33,86 @@ const external_constants_cjs_namespaceObject = require("../../constants.cjs");
33
33
  const index_cjs_namespaceObject = require("../../core/index.cjs");
34
34
  const usePreviewNode_cjs_namespaceObject = require("../../hooks/usePreviewNode.cjs");
35
35
  const external_utils_index_cjs_namespaceObject = require("../../utils/index.cjs");
36
+ const collapse_cjs_namespaceObject = require("../../utils/collapse.cjs");
37
+ const container_sizing_cjs_namespaceObject = require("../../utils/container-sizing.cjs");
38
+ const manifest_resolver_cjs_namespaceObject = require("../../utils/manifest-resolver.cjs");
36
39
  const external_FloatingCanvasPanel_index_cjs_namespaceObject = require("../FloatingCanvasPanel/index.cjs");
40
+ const LoopNode_helpers_cjs_namespaceObject = require("../LoopNode/LoopNode.helpers.cjs");
41
+ const LoopNode_sequence_cjs_namespaceObject = require("../LoopNode/LoopNode.sequence.cjs");
37
42
  const external_AddNodePanel_cjs_namespaceObject = require("./AddNodePanel.cjs");
43
+ function getManifestForNode(registry, node) {
44
+ return node.type ? registry?.getManifest(node.type, (0, manifest_resolver_cjs_namespaceObject.getNodeTypeVersion)(node.data)) : void 0;
45
+ }
46
+ function getManifestAwareNodeDimensions(registry, node) {
47
+ const manifest = getManifestForNode(registry, node);
48
+ const fallbackDimensions = (0, collapse_cjs_namespaceObject.getExpandedSize)(manifest?.display.shape, manifest);
49
+ return (0, container_sizing_cjs_namespaceObject.getNodeDimensions)(node, fallbackDimensions);
50
+ }
51
+ function getContainerFitGeometry(registry, node) {
52
+ const manifest = getManifestForNode(registry, node);
53
+ return (0, LoopNode_helpers_cjs_namespaceObject.isLoopContainerManifest)(manifest) ? (0, LoopNode_helpers_cjs_namespaceObject.getLoopContainerFitGeometry)() : null;
54
+ }
55
+ function centerNodeOnPreview(previewNode, nodeDimensions) {
56
+ const previewDimensions = (0, container_sizing_cjs_namespaceObject.getNodeDimensions)(previewNode);
57
+ return {
58
+ x: previewNode.position.x + (previewDimensions.width - nodeDimensions.width) / 2,
59
+ y: previewNode.position.y + (previewDimensions.height - nodeDimensions.height) / 2
60
+ };
61
+ }
62
+ function centerNodeVerticallyOnPreview(previewNode, nodeDimensions) {
63
+ const previewDimensions = (0, container_sizing_cjs_namespaceObject.getNodeDimensions)(previewNode);
64
+ return {
65
+ x: previewNode.position.x,
66
+ y: previewNode.position.y + (previewDimensions.height - nodeDimensions.height) / 2
67
+ };
68
+ }
69
+ function resolveSiblingCollisions(nodes, insertedNode, options) {
70
+ const siblingNodes = nodes.filter((node)=>node.parentId === insertedNode.parentId);
71
+ const resolvedSiblings = (0, external_utils_index_cjs_namespaceObject.resolveCollisions)(siblingNodes, options);
72
+ const resolvedSiblingsById = new Map(resolvedSiblings.map((node)=>[
73
+ node.id,
74
+ node
75
+ ]));
76
+ return nodes.map((node)=>resolvedSiblingsById.get(node.id) ?? node);
77
+ }
78
+ function resolveNodePlacement(nodes, insertedNode, registry, ignoredNodeTypes, edges, loopSequencePlacement) {
79
+ const getNodeSize = (node)=>getManifestAwareNodeDimensions(registry, node);
80
+ if (!insertedNode.parentId) {
81
+ const resolvedNodes = (0, external_utils_index_cjs_namespaceObject.resolveCollisions)(nodes, {
82
+ ignoredNodeTypes,
83
+ getNodeSize
84
+ });
85
+ return {
86
+ nodes: resolvedNodes,
87
+ insertedNode: resolvedNodes.find((node)=>node.id === insertedNode.id) ?? insertedNode
88
+ };
89
+ }
90
+ const loopSequenceNodes = loopSequencePlacement ? (0, LoopNode_sequence_cjs_namespaceObject.resolveLoopSequenceMaterializedNodes)({
91
+ nodes,
92
+ edges,
93
+ insertedNode,
94
+ placement: loopSequencePlacement,
95
+ getNodeSize
96
+ }) : null;
97
+ let resolvedNodes = loopSequenceNodes;
98
+ if (!resolvedNodes) resolvedNodes = resolveSiblingCollisions(nodes, insertedNode, {
99
+ ignoredNodeTypes,
100
+ getNodeSize
101
+ });
102
+ const fittedNodes = (0, container_sizing_cjs_namespaceObject.ensureContainersFitChildren)(resolvedNodes, {
103
+ containerIds: [
104
+ insertedNode.parentId
105
+ ],
106
+ getContainerFitGeometry: (node)=>getContainerFitGeometry(registry, node),
107
+ getNodeDimensions: getNodeSize,
108
+ ignoredNodeTypes,
109
+ includeAncestors: true
110
+ });
111
+ return {
112
+ nodes: fittedNodes,
113
+ insertedNode: fittedNodes.find((node)=>node.id === insertedNode.id) ?? insertedNode
114
+ };
115
+ }
38
116
  const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData, onBeforeNodeAdded, onNodeAdded, ignoredNodeTypes })=>{
39
117
  const reactFlowInstance = (0, react_cjs_namespaceObject.useReactFlow)();
40
118
  const registry = (0, index_cjs_namespaceObject.useOptionalNodeTypeRegistry)();
@@ -70,28 +148,45 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
70
148
  const handleNodeSelect = (0, external_react_namespaceObject.useCallback)((nodeItem)=>{
71
149
  const currentPreviewNode = reactFlowInstance.getNode(external_constants_cjs_namespaceObject.PREVIEW_NODE_ID);
72
150
  if (!currentPreviewNode || !previewNodeConnectionInfo || 0 === previewNodeConnectionInfo.length) return;
151
+ const loopSequenceResolverOptions = (0, LoopNode_sequence_cjs_namespaceObject.createLoopSequenceResolverOptions)(registry);
152
+ const loopSequencePlacement = (0, LoopNode_sequence_cjs_namespaceObject.getLoopSequencePlacementFromPreviewGraph)(currentPreviewNode, previewNodeConnectionInfo, {
153
+ isLoopContainerId: (containerId)=>{
154
+ const containerNode = reactFlowInstance.getNode(containerId);
155
+ return containerNode ? loopSequenceResolverOptions.isLoopContainerNode?.(containerNode) ?? false : false;
156
+ }
157
+ });
73
158
  const newNodeId = `${nodeItem.data.type}-${Date.now()}`;
74
159
  const baseNodeData = createNodeData ? createNodeData(nodeItem) : {
75
160
  label: nodeItem.name,
76
161
  subLabel: nodeItem.description
77
162
  };
78
- const nodeData = currentPreviewNode.data?.useSmartHandles ? {
163
+ const nodeData = {
79
164
  ...baseNodeData,
80
- useSmartHandles: true
81
- } : baseNodeData;
165
+ ...nodeItem.data.version ? {
166
+ typeVersion: nodeItem.data.version
167
+ } : {},
168
+ ...currentPreviewNode.data?.useSmartHandles ? {
169
+ useSmartHandles: true
170
+ } : {}
171
+ };
82
172
  const newNode = {
83
173
  id: newNodeId,
84
174
  type: nodeItem.data.type,
85
175
  position: currentPreviewNode.position,
176
+ parentId: currentPreviewNode.parentId,
177
+ extent: currentPreviewNode.extent,
86
178
  selected: true,
87
179
  data: nodeData
88
180
  };
89
- const newNodeManifest = registry?.getManifest(nodeItem.data.type);
181
+ const newNodeManifest = registry?.getManifest(nodeItem.data.type, nodeItem.data.version);
182
+ const newNodeDimensions = getManifestAwareNodeDimensions(registry, newNode);
183
+ if (currentPreviewNode.parentId) newNode.position = centerNodeOnPreview(currentPreviewNode, newNodeDimensions);
184
+ else if ((0, LoopNode_helpers_cjs_namespaceObject.isLoopContainerManifest)(newNodeManifest)) newNode.position = centerNodeVerticallyOnPreview(currentPreviewNode, newNodeDimensions);
90
185
  const newEdges = [];
91
186
  const previewEdgeIds = [];
92
187
  for (const connectionInfoItem of previewNodeConnectionInfo){
93
188
  const newNodeHandleType = connectionInfoItem.addNewNodeAsSource ? 'source' : 'target';
94
- const newNodeDefaultHandle = newNodeManifest ? registry?.getDefaultHandle(newNodeManifest.nodeType, newNodeHandleType) : void 0;
189
+ const newNodeDefaultHandle = newNodeManifest ? registry?.getDefaultHandle(newNodeManifest.nodeType, newNodeHandleType, nodeItem.data.version) : void 0;
95
190
  const newNodeHandleId = newNodeDefaultHandle?.id;
96
191
  const edgeSourceTargetData = connectionInfoItem.addNewNodeAsSource ? {
97
192
  source: newNode.id,
@@ -116,6 +211,7 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
116
211
  newNode,
117
212
  newEdges
118
213
  };
214
+ let resolvedFinalNode = finalNode;
119
215
  reactFlowInstance.setNodes((nodes)=>{
120
216
  const newNodes = [
121
217
  ...nodes.filter((n)=>n.id !== external_constants_cjs_namespaceObject.PREVIEW_NODE_ID).map((n)=>({
@@ -124,9 +220,9 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
124
220
  })),
125
221
  finalNode
126
222
  ];
127
- return (0, external_utils_index_cjs_namespaceObject.resolveCollisions)(newNodes, {
128
- ignoredNodeTypes
129
- });
223
+ const placement = resolveNodePlacement(newNodes, finalNode, registry, ignoredNodeTypes, reactFlowInstance.getEdges(), loopSequencePlacement);
224
+ resolvedFinalNode = placement.insertedNode;
225
+ return placement.nodes;
130
226
  });
131
227
  reactFlowInstance.setEdges((edges)=>[
132
228
  ...edges.filter((e)=>!previewEdgeIds.includes(e.id)),
@@ -134,7 +230,7 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
134
230
  ]);
135
231
  const [firstConnection] = previewNodeConnectionInfo;
136
232
  if (firstConnection) {
137
- const firstEdgeSourceHandle = firstConnection.addNewNodeAsSource ? newNodeManifest && registry?.getDefaultHandle(newNodeManifest.nodeType, 'source')?.id : firstConnection.existingHandleId;
233
+ const firstEdgeSourceHandle = firstConnection.addNewNodeAsSource ? newNodeManifest && registry?.getDefaultHandle(newNodeManifest.nodeType, 'source', nodeItem.data.version)?.id : firstConnection.existingHandleId;
138
234
  const firstEdgeData = firstConnection.addNewNodeAsSource ? {
139
235
  source: finalNode.id,
140
236
  sourceHandle: firstEdgeSourceHandle ?? 'output'
@@ -142,7 +238,7 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
142
238
  source: firstConnection.existingNodeId,
143
239
  sourceHandle: firstConnection.existingHandleId
144
240
  };
145
- onNodeAdded?.(firstEdgeData.source, firstEdgeData.sourceHandle, finalNode);
241
+ onNodeAdded?.(firstEdgeData.source, firstEdgeData.sourceHandle, resolvedFinalNode);
146
242
  }
147
243
  restoreEdgesRef.current = null;
148
244
  handleClose();
@@ -1 +1 @@
1
- {"version":3,"file":"AddNodeManager.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/AddNodePanel/AddNodeManager.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAKlC,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC;IAI7E,YAAY,CAAC,EAAE,OAAO,CAAC;IAIvB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAK7F,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,YAAY,CAAC;IAOtE,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,IAAI,EAAE,CAAA;KAAE,CAAC;IAK7F,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC;IAMpF,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AASD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAqMxD,CAAC"}
1
+ {"version":3,"file":"AddNodeManager.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/AddNodePanel/AddNodeManager.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAShD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAKlC,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC;IAI7E,YAAY,CAAC,EAAE,OAAO,CAAC;IAIvB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAK7F,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,YAAY,CAAC;IAOtE,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,IAAI,EAAE,CAAA;KAAE,CAAC;IAK7F,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC;IAMpF,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAsHD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA0OxD,CAAC"}
@@ -5,8 +5,86 @@ import { FLOATING_CANVAS_PANEL_OFFSET, PREVIEW_NODE_ID } from "../../constants.j
5
5
  import { useOptionalNodeTypeRegistry } from "../../core/index.js";
6
6
  import { usePreviewNode } from "../../hooks/usePreviewNode.js";
7
7
  import { resolveCollisions } from "../../utils/index.js";
8
+ import { getExpandedSize } from "../../utils/collapse.js";
9
+ import { ensureContainersFitChildren, getNodeDimensions } from "../../utils/container-sizing.js";
10
+ import { getNodeTypeVersion } from "../../utils/manifest-resolver.js";
8
11
  import { FloatingCanvasPanel } from "../FloatingCanvasPanel/index.js";
12
+ import { getLoopContainerFitGeometry, isLoopContainerManifest } from "../LoopNode/LoopNode.helpers.js";
13
+ import { createLoopSequenceResolverOptions, getLoopSequencePlacementFromPreviewGraph, resolveLoopSequenceMaterializedNodes } from "../LoopNode/LoopNode.sequence.js";
9
14
  import { AddNodePanel } from "./AddNodePanel.js";
15
+ function getManifestForNode(registry, node) {
16
+ return node.type ? registry?.getManifest(node.type, getNodeTypeVersion(node.data)) : void 0;
17
+ }
18
+ function getManifestAwareNodeDimensions(registry, node) {
19
+ const manifest = getManifestForNode(registry, node);
20
+ const fallbackDimensions = getExpandedSize(manifest?.display.shape, manifest);
21
+ return getNodeDimensions(node, fallbackDimensions);
22
+ }
23
+ function getContainerFitGeometry(registry, node) {
24
+ const manifest = getManifestForNode(registry, node);
25
+ return isLoopContainerManifest(manifest) ? getLoopContainerFitGeometry() : null;
26
+ }
27
+ function centerNodeOnPreview(previewNode, nodeDimensions) {
28
+ const previewDimensions = getNodeDimensions(previewNode);
29
+ return {
30
+ x: previewNode.position.x + (previewDimensions.width - nodeDimensions.width) / 2,
31
+ y: previewNode.position.y + (previewDimensions.height - nodeDimensions.height) / 2
32
+ };
33
+ }
34
+ function centerNodeVerticallyOnPreview(previewNode, nodeDimensions) {
35
+ const previewDimensions = getNodeDimensions(previewNode);
36
+ return {
37
+ x: previewNode.position.x,
38
+ y: previewNode.position.y + (previewDimensions.height - nodeDimensions.height) / 2
39
+ };
40
+ }
41
+ function resolveSiblingCollisions(nodes, insertedNode, options) {
42
+ const siblingNodes = nodes.filter((node)=>node.parentId === insertedNode.parentId);
43
+ const resolvedSiblings = resolveCollisions(siblingNodes, options);
44
+ const resolvedSiblingsById = new Map(resolvedSiblings.map((node)=>[
45
+ node.id,
46
+ node
47
+ ]));
48
+ return nodes.map((node)=>resolvedSiblingsById.get(node.id) ?? node);
49
+ }
50
+ function resolveNodePlacement(nodes, insertedNode, registry, ignoredNodeTypes, edges, loopSequencePlacement) {
51
+ const getNodeSize = (node)=>getManifestAwareNodeDimensions(registry, node);
52
+ if (!insertedNode.parentId) {
53
+ const resolvedNodes = resolveCollisions(nodes, {
54
+ ignoredNodeTypes,
55
+ getNodeSize
56
+ });
57
+ return {
58
+ nodes: resolvedNodes,
59
+ insertedNode: resolvedNodes.find((node)=>node.id === insertedNode.id) ?? insertedNode
60
+ };
61
+ }
62
+ const loopSequenceNodes = loopSequencePlacement ? resolveLoopSequenceMaterializedNodes({
63
+ nodes,
64
+ edges,
65
+ insertedNode,
66
+ placement: loopSequencePlacement,
67
+ getNodeSize
68
+ }) : null;
69
+ let resolvedNodes = loopSequenceNodes;
70
+ if (!resolvedNodes) resolvedNodes = resolveSiblingCollisions(nodes, insertedNode, {
71
+ ignoredNodeTypes,
72
+ getNodeSize
73
+ });
74
+ const fittedNodes = ensureContainersFitChildren(resolvedNodes, {
75
+ containerIds: [
76
+ insertedNode.parentId
77
+ ],
78
+ getContainerFitGeometry: (node)=>getContainerFitGeometry(registry, node),
79
+ getNodeDimensions: getNodeSize,
80
+ ignoredNodeTypes,
81
+ includeAncestors: true
82
+ });
83
+ return {
84
+ nodes: fittedNodes,
85
+ insertedNode: fittedNodes.find((node)=>node.id === insertedNode.id) ?? insertedNode
86
+ };
87
+ }
10
88
  const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData, onBeforeNodeAdded, onNodeAdded, ignoredNodeTypes })=>{
11
89
  const reactFlowInstance = useReactFlow();
12
90
  const registry = useOptionalNodeTypeRegistry();
@@ -42,28 +120,45 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
42
120
  const handleNodeSelect = useCallback((nodeItem)=>{
43
121
  const currentPreviewNode = reactFlowInstance.getNode(PREVIEW_NODE_ID);
44
122
  if (!currentPreviewNode || !previewNodeConnectionInfo || 0 === previewNodeConnectionInfo.length) return;
123
+ const loopSequenceResolverOptions = createLoopSequenceResolverOptions(registry);
124
+ const loopSequencePlacement = getLoopSequencePlacementFromPreviewGraph(currentPreviewNode, previewNodeConnectionInfo, {
125
+ isLoopContainerId: (containerId)=>{
126
+ const containerNode = reactFlowInstance.getNode(containerId);
127
+ return containerNode ? loopSequenceResolverOptions.isLoopContainerNode?.(containerNode) ?? false : false;
128
+ }
129
+ });
45
130
  const newNodeId = `${nodeItem.data.type}-${Date.now()}`;
46
131
  const baseNodeData = createNodeData ? createNodeData(nodeItem) : {
47
132
  label: nodeItem.name,
48
133
  subLabel: nodeItem.description
49
134
  };
50
- const nodeData = currentPreviewNode.data?.useSmartHandles ? {
135
+ const nodeData = {
51
136
  ...baseNodeData,
52
- useSmartHandles: true
53
- } : baseNodeData;
137
+ ...nodeItem.data.version ? {
138
+ typeVersion: nodeItem.data.version
139
+ } : {},
140
+ ...currentPreviewNode.data?.useSmartHandles ? {
141
+ useSmartHandles: true
142
+ } : {}
143
+ };
54
144
  const newNode = {
55
145
  id: newNodeId,
56
146
  type: nodeItem.data.type,
57
147
  position: currentPreviewNode.position,
148
+ parentId: currentPreviewNode.parentId,
149
+ extent: currentPreviewNode.extent,
58
150
  selected: true,
59
151
  data: nodeData
60
152
  };
61
- const newNodeManifest = registry?.getManifest(nodeItem.data.type);
153
+ const newNodeManifest = registry?.getManifest(nodeItem.data.type, nodeItem.data.version);
154
+ const newNodeDimensions = getManifestAwareNodeDimensions(registry, newNode);
155
+ if (currentPreviewNode.parentId) newNode.position = centerNodeOnPreview(currentPreviewNode, newNodeDimensions);
156
+ else if (isLoopContainerManifest(newNodeManifest)) newNode.position = centerNodeVerticallyOnPreview(currentPreviewNode, newNodeDimensions);
62
157
  const newEdges = [];
63
158
  const previewEdgeIds = [];
64
159
  for (const connectionInfoItem of previewNodeConnectionInfo){
65
160
  const newNodeHandleType = connectionInfoItem.addNewNodeAsSource ? 'source' : 'target';
66
- const newNodeDefaultHandle = newNodeManifest ? registry?.getDefaultHandle(newNodeManifest.nodeType, newNodeHandleType) : void 0;
161
+ const newNodeDefaultHandle = newNodeManifest ? registry?.getDefaultHandle(newNodeManifest.nodeType, newNodeHandleType, nodeItem.data.version) : void 0;
67
162
  const newNodeHandleId = newNodeDefaultHandle?.id;
68
163
  const edgeSourceTargetData = connectionInfoItem.addNewNodeAsSource ? {
69
164
  source: newNode.id,
@@ -88,6 +183,7 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
88
183
  newNode,
89
184
  newEdges
90
185
  };
186
+ let resolvedFinalNode = finalNode;
91
187
  reactFlowInstance.setNodes((nodes)=>{
92
188
  const newNodes = [
93
189
  ...nodes.filter((n)=>n.id !== PREVIEW_NODE_ID).map((n)=>({
@@ -96,9 +192,9 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
96
192
  })),
97
193
  finalNode
98
194
  ];
99
- return resolveCollisions(newNodes, {
100
- ignoredNodeTypes
101
- });
195
+ const placement = resolveNodePlacement(newNodes, finalNode, registry, ignoredNodeTypes, reactFlowInstance.getEdges(), loopSequencePlacement);
196
+ resolvedFinalNode = placement.insertedNode;
197
+ return placement.nodes;
102
198
  });
103
199
  reactFlowInstance.setEdges((edges)=>[
104
200
  ...edges.filter((e)=>!previewEdgeIds.includes(e.id)),
@@ -106,7 +202,7 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
106
202
  ]);
107
203
  const [firstConnection] = previewNodeConnectionInfo;
108
204
  if (firstConnection) {
109
- const firstEdgeSourceHandle = firstConnection.addNewNodeAsSource ? newNodeManifest && registry?.getDefaultHandle(newNodeManifest.nodeType, 'source')?.id : firstConnection.existingHandleId;
205
+ const firstEdgeSourceHandle = firstConnection.addNewNodeAsSource ? newNodeManifest && registry?.getDefaultHandle(newNodeManifest.nodeType, 'source', nodeItem.data.version)?.id : firstConnection.existingHandleId;
110
206
  const firstEdgeData = firstConnection.addNewNodeAsSource ? {
111
207
  source: finalNode.id,
112
208
  sourceHandle: firstEdgeSourceHandle ?? 'output'
@@ -114,7 +210,7 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
114
210
  source: firstConnection.existingNodeId,
115
211
  sourceHandle: firstConnection.existingHandleId
116
212
  };
117
- onNodeAdded?.(firstEdgeData.source, firstEdgeData.sourceHandle, finalNode);
213
+ onNodeAdded?.(firstEdgeData.source, firstEdgeData.sourceHandle, resolvedFinalNode);
118
214
  }
119
215
  restoreEdgesRef.current = null;
120
216
  handleClose();
@@ -27,10 +27,44 @@ __webpack_require__.d(__webpack_exports__, {
27
27
  createAddNodePreview: ()=>createAddNodePreview
28
28
  });
29
29
  const react_cjs_namespaceObject = require("../../xyflow/react.cjs");
30
- const createPreviewNode_cjs_namespaceObject = require("../../utils/createPreviewNode.cjs");
31
- function createAddNodePreview(sourceNodeId, sourceHandleId, reactFlowInstance, handlePosition = react_cjs_namespaceObject.Position.Right, sourceHandleType = 'source', ignoredNodeTypes = []) {
32
- const preview = (0, createPreviewNode_cjs_namespaceObject.createPreviewNode)(sourceNodeId, sourceHandleId, reactFlowInstance, void 0, void 0, sourceHandleType, void 0, handlePosition, ignoredNodeTypes);
33
- if (preview) (0, createPreviewNode_cjs_namespaceObject.applyPreviewToReactFlow)(preview, reactFlowInstance);
30
+ const createPreviewGraph_cjs_namespaceObject = require("../../utils/createPreviewGraph.cjs");
31
+ const LoopNode_sequence_cjs_namespaceObject = require("../LoopNode/LoopNode.sequence.cjs");
32
+ function normalizeOptions(options) {
33
+ return Array.isArray(options) ? {
34
+ ignoredNodeTypes: options
35
+ } : options;
36
+ }
37
+ function createAddNodePreview(sourceNodeId, sourceHandleId, reactFlowInstance, handlePosition = react_cjs_namespaceObject.Position.Right, sourceHandleType = 'source', options = []) {
38
+ const { ignoredNodeTypes = [], ...providedResolverOptions } = normalizeOptions(options);
39
+ const resolverOptions = {
40
+ ...(0, LoopNode_sequence_cjs_namespaceObject.createLoopSequenceResolverOptions)(null),
41
+ ...providedResolverOptions
42
+ };
43
+ if ('source' === sourceHandleType) {
44
+ const loopPreview = (0, LoopNode_sequence_cjs_namespaceObject.resolveLoopAddNodePreview)({
45
+ sourceNodeId,
46
+ sourceHandleId,
47
+ reactFlowInstance,
48
+ resolverOptions
49
+ });
50
+ if ('create-preview' === loopPreview.action) return void (0, createPreviewGraph_cjs_namespaceObject.showPreviewGraph)({
51
+ sourceNodeId,
52
+ sourceHandleId,
53
+ reactFlowInstance,
54
+ sourceHandleType,
55
+ handlePosition,
56
+ ignoredNodeTypes,
57
+ ...loopPreview.previewGraphOptions
58
+ });
59
+ }
60
+ (0, createPreviewGraph_cjs_namespaceObject.showPreviewGraph)({
61
+ sourceNodeId,
62
+ sourceHandleId,
63
+ reactFlowInstance,
64
+ sourceHandleType,
65
+ handlePosition,
66
+ ignoredNodeTypes
67
+ });
34
68
  }
35
69
  exports.createAddNodePreview = __webpack_exports__.createAddNodePreview;
36
70
  for(var __rspack_i in __webpack_exports__)if (-1 === [
@@ -1,3 +1,7 @@
1
1
  import { Position, type ReactFlowInstance } from '../../xyflow/react.ts';
2
- export declare function createAddNodePreview(sourceNodeId: string, sourceHandleId: string, reactFlowInstance: ReactFlowInstance, handlePosition?: Position, sourceHandleType?: 'source' | 'target', ignoredNodeTypes?: string[]): void;
2
+ import { type LoopSequenceResolverOptions } from '../LoopNode/LoopNode.sequence';
3
+ export interface CreateAddNodePreviewOptions extends LoopSequenceResolverOptions {
4
+ ignoredNodeTypes?: string[];
5
+ }
6
+ export declare function createAddNodePreview(sourceNodeId: string, sourceHandleId: string, reactFlowInstance: ReactFlowInstance, handlePosition?: Position, sourceHandleType?: 'source' | 'target', options?: string[] | CreateAddNodePreviewOptions): void;
3
7
  //# sourceMappingURL=createAddNodePreview.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createAddNodePreview.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/AddNodePanel/createAddNodePreview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAa5F,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,GAAE,QAAyB,EACzC,gBAAgB,GAAE,QAAQ,GAAG,QAAmB,EAChD,gBAAgB,GAAE,MAAM,EAAO,GAC9B,IAAI,CAiBN"}
1
+ {"version":3,"file":"createAddNodePreview.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/AddNodePanel/createAddNodePreview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAE5F,OAAO,EAEL,KAAK,2BAA2B,EAEjC,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,2BAA4B,SAAQ,2BAA2B;IAC9E,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAkBD,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,GAAE,QAAyB,EACzC,gBAAgB,GAAE,QAAQ,GAAG,QAAmB,EAChD,OAAO,GAAE,MAAM,EAAE,GAAG,2BAAgC,GACnD,IAAI,CAqCN"}
@@ -1,7 +1,41 @@
1
1
  import { Position } from "../../xyflow/react.js";
2
- import { applyPreviewToReactFlow, createPreviewNode } from "../../utils/createPreviewNode.js";
3
- function createAddNodePreview(sourceNodeId, sourceHandleId, reactFlowInstance, handlePosition = Position.Right, sourceHandleType = 'source', ignoredNodeTypes = []) {
4
- const preview = createPreviewNode(sourceNodeId, sourceHandleId, reactFlowInstance, void 0, void 0, sourceHandleType, void 0, handlePosition, ignoredNodeTypes);
5
- if (preview) applyPreviewToReactFlow(preview, reactFlowInstance);
2
+ import { showPreviewGraph } from "../../utils/createPreviewGraph.js";
3
+ import { createLoopSequenceResolverOptions, resolveLoopAddNodePreview } from "../LoopNode/LoopNode.sequence.js";
4
+ function normalizeOptions(options) {
5
+ return Array.isArray(options) ? {
6
+ ignoredNodeTypes: options
7
+ } : options;
8
+ }
9
+ function createAddNodePreview(sourceNodeId, sourceHandleId, reactFlowInstance, handlePosition = Position.Right, sourceHandleType = 'source', options = []) {
10
+ const { ignoredNodeTypes = [], ...providedResolverOptions } = normalizeOptions(options);
11
+ const resolverOptions = {
12
+ ...createLoopSequenceResolverOptions(null),
13
+ ...providedResolverOptions
14
+ };
15
+ if ('source' === sourceHandleType) {
16
+ const loopPreview = resolveLoopAddNodePreview({
17
+ sourceNodeId,
18
+ sourceHandleId,
19
+ reactFlowInstance,
20
+ resolverOptions
21
+ });
22
+ if ('create-preview' === loopPreview.action) return void showPreviewGraph({
23
+ sourceNodeId,
24
+ sourceHandleId,
25
+ reactFlowInstance,
26
+ sourceHandleType,
27
+ handlePosition,
28
+ ignoredNodeTypes,
29
+ ...loopPreview.previewGraphOptions
30
+ });
31
+ }
32
+ showPreviewGraph({
33
+ sourceNodeId,
34
+ sourceHandleId,
35
+ reactFlowInstance,
36
+ sourceHandleType,
37
+ handlePosition,
38
+ ignoredNodeTypes
39
+ });
6
40
  }
7
41
  export { createAddNodePreview };
@@ -77,6 +77,7 @@ export declare const agentFlowManifest: {
77
77
  } | undefined;
78
78
  isDefaultForType?: boolean | undefined;
79
79
  }[];
80
+ boundary?: "outer" | "inner" | undefined;
80
81
  customPositionAndOffsets?: {
81
82
  height?: number | undefined;
82
83
  width?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-flow.manifest.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/AgentCanvas/agent-flow.manifest.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAMnF,eAAO,MAAM,mBAAmB,EAAE,gBAAgB,EAmBjD,CAAC;AAMF,eAAO,MAAM,2BAA2B,EAAE,YAsDzC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,YAqDrC,CAAC;AAMF,eAAO,MAAM,uBAAuB,EAAE,YAwBrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YAwBlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAwBjC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,YAwBxC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,YAwBpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAwBjC,CAAC;AAMF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAa7B,CAAC"}
1
+ {"version":3,"file":"agent-flow.manifest.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/AgentCanvas/agent-flow.manifest.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAMnF,eAAO,MAAM,mBAAmB,EAAE,gBAAgB,EAmBjD,CAAC;AAMF,eAAO,MAAM,2BAA2B,EAAE,YAsDzC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,YAqDrC,CAAC;AAMF,eAAO,MAAM,uBAAuB,EAAE,YAwBrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YAwBlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAwBjC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,YAwBxC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,YAwBpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAwBjC,CAAC;AAMF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAa7B,CAAC"}
@@ -24,6 +24,7 @@ var __webpack_require__ = {};
24
24
  var __webpack_exports__ = {};
25
25
  __webpack_require__.r(__webpack_exports__);
26
26
  __webpack_require__.d(__webpack_exports__, {
27
+ selectIsConnecting: ()=>selectIsConnecting,
27
28
  BaseNode: ()=>BaseNode
28
29
  });
29
30
  const jsx_runtime_namespaceObject = require("react/jsx-runtime");
@@ -69,7 +70,8 @@ const getContainerHeight = (height, hasFooter, footerVariant)=>{
69
70
  return height || external_constants_cjs_namespaceObject.NODE_HEIGHT_DEFAULT;
70
71
  };
71
72
  const BaseNodeComponent = (props)=>{
72
- const { type, data, selected, id, dragging, width, height } = props;
73
+ const { type, data, selected, id, dragging, width, height, parentId } = props;
74
+ const nodeVersion = (0, manifest_resolver_cjs_namespaceObject.getNodeTypeVersion)(data);
73
75
  const { onHandleAction: onHandleActionProp, shouldShowAddButtonFn: shouldShowAddButtonFnProp, shouldShowButtonHandleNotchesFn: shouldShowButtonHandleNotchesFnProp, toolbarConfig: toolbarConfigProp, handleConfigurations: handleConfigurationsProp, adornments: adornmentsProp, suggestionType, disabled, executionStatusOverride, labelTooltip, labelBackgroundColor, footerVariant, footerComponent, subLabelComponent, iconComponent } = (0, external_BaseNodeConfigContext_cjs_namespaceObject.useBaseNodeOverrideConfig)();
74
76
  const updateNodeInternals = (0, react_cjs_namespaceObject.useUpdateNodeInternals)();
75
77
  const { updateNodeData, updateNode } = (0, react_cjs_namespaceObject.useReactFlow)();
@@ -87,9 +89,10 @@ const BaseNodeComponent = (props)=>{
87
89
  const isConnecting = (0, react_cjs_namespaceObject.useStore)(selectIsConnecting);
88
90
  const { multipleNodesSelected } = (0, SelectionStateContext_cjs_namespaceObject.useSelectionState)();
89
91
  const { isDarkMode } = (0, CanvasThemeContext_cjs_namespaceObject.useCanvasTheme)();
90
- const manifest = (0, external_react_namespaceObject.useMemo)(()=>nodeTypeRegistry.getManifest(type), [
92
+ const manifest = (0, external_react_namespaceObject.useMemo)(()=>nodeTypeRegistry.getManifest(type, nodeVersion), [
91
93
  type,
92
- nodeTypeRegistry
94
+ nodeTypeRegistry,
95
+ nodeVersion
93
96
  ]);
94
97
  const statusContext = (0, external_react_namespaceObject.useMemo)(()=>({
95
98
  nodeId: id,
@@ -340,7 +343,8 @@ const BaseNodeComponent = (props)=>{
340
343
  showNotches,
341
344
  nodeWidth: width,
342
345
  nodeHeight: height,
343
- shouldShowAddButtonFn
346
+ shouldShowAddButtonFn,
347
+ portalActions: !!parentId
344
348
  });
345
349
  const smartHandleElements = (0, external_react_namespaceObject.useMemo)(()=>{
346
350
  if (!useSmartHandles) return null;
@@ -485,8 +489,10 @@ const BaseNodeComponent = (props)=>{
485
489
  };
486
490
  const BaseNode = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(BaseNodeComponent);
487
491
  exports.BaseNode = __webpack_exports__.BaseNode;
492
+ exports.selectIsConnecting = __webpack_exports__.selectIsConnecting;
488
493
  for(var __rspack_i in __webpack_exports__)if (-1 === [
489
- "BaseNode"
494
+ "BaseNode",
495
+ "selectIsConnecting"
490
496
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
491
497
  Object.defineProperty(exports, '__esModule', {
492
498
  value: true
@@ -1,4 +1,5 @@
1
- import type { Node, NodeProps } from '../../xyflow/react.ts';
1
+ import type { Node, NodeProps, ReactFlowState } from '../../xyflow/react.ts';
2
2
  import type { BaseNodeData } from './BaseNode.types';
3
+ export declare const selectIsConnecting: (state: ReactFlowState) => boolean;
3
4
  export declare const BaseNode: import("react").MemoExoticComponent<(props: NodeProps<Node<BaseNodeData>>) => import("react/jsx-runtime").JSX.Element>;
4
5
  //# sourceMappingURL=BaseNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseNode.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseNode/BaseNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAkB,MAAM,0CAA0C,CAAC;AAsChG,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,kBAAkB,CAAC;AA+nB1B,eAAO,MAAM,QAAQ,8CAllBa,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,6CAklBhB,CAAC"}
1
+ {"version":3,"file":"BaseNode.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseNode/BaseNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAsChG,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,kBAAkB,CAAC;AAa1B,eAAO,MAAM,kBAAkB,GAAI,OAAO,cAAc,YAAkC,CAAC;AAunB3F,eAAO,MAAM,QAAQ,8CAvlBa,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,6CAulBhB,CAAC"}
@@ -6,7 +6,7 @@ import { useNodeTypeRegistry } from "../../core/index.js";
6
6
  import { useElementValidationStatus, useNodeExecutionState } from "../../hooks/index.js";
7
7
  import { resolveAdornments } from "../../utils/adornment-resolver.js";
8
8
  import { getIcon } from "../../utils/icon-registry.js";
9
- import { resolveDisplay, resolveHandles } from "../../utils/manifest-resolver.js";
9
+ import { getNodeTypeVersion, resolveDisplay, resolveHandles } from "../../utils/manifest-resolver.js";
10
10
  import { resolveToolbar } from "../../utils/toolbar-resolver.js";
11
11
  import { useBaseCanvasMode } from "../BaseCanvas/BaseCanvasModeProvider.js";
12
12
  import { useCanvasTheme } from "../BaseCanvas/CanvasThemeContext.js";
@@ -41,7 +41,8 @@ const getContainerHeight = (height, hasFooter, footerVariant)=>{
41
41
  return height || NODE_HEIGHT_DEFAULT;
42
42
  };
43
43
  const BaseNodeComponent = (props)=>{
44
- const { type, data, selected, id, dragging, width, height } = props;
44
+ const { type, data, selected, id, dragging, width, height, parentId } = props;
45
+ const nodeVersion = getNodeTypeVersion(data);
45
46
  const { onHandleAction: onHandleActionProp, shouldShowAddButtonFn: shouldShowAddButtonFnProp, shouldShowButtonHandleNotchesFn: shouldShowButtonHandleNotchesFnProp, toolbarConfig: toolbarConfigProp, handleConfigurations: handleConfigurationsProp, adornments: adornmentsProp, suggestionType, disabled, executionStatusOverride, labelTooltip, labelBackgroundColor, footerVariant, footerComponent, subLabelComponent, iconComponent } = useBaseNodeOverrideConfig();
46
47
  const updateNodeInternals = useUpdateNodeInternals();
47
48
  const { updateNodeData, updateNode } = useReactFlow();
@@ -59,9 +60,10 @@ const BaseNodeComponent = (props)=>{
59
60
  const isConnecting = useStore(selectIsConnecting);
60
61
  const { multipleNodesSelected } = useSelectionState();
61
62
  const { isDarkMode } = useCanvasTheme();
62
- const manifest = useMemo(()=>nodeTypeRegistry.getManifest(type), [
63
+ const manifest = useMemo(()=>nodeTypeRegistry.getManifest(type, nodeVersion), [
63
64
  type,
64
- nodeTypeRegistry
65
+ nodeTypeRegistry,
66
+ nodeVersion
65
67
  ]);
66
68
  const statusContext = useMemo(()=>({
67
69
  nodeId: id,
@@ -312,7 +314,8 @@ const BaseNodeComponent = (props)=>{
312
314
  showNotches,
313
315
  nodeWidth: width,
314
316
  nodeHeight: height,
315
- shouldShowAddButtonFn
317
+ shouldShowAddButtonFn,
318
+ portalActions: !!parentId
316
319
  });
317
320
  const smartHandleElements = useMemo(()=>{
318
321
  if (!useSmartHandles) return null;
@@ -456,4 +459,4 @@ const BaseNodeComponent = (props)=>{
456
459
  return nodeContent;
457
460
  };
458
461
  const BaseNode = /*#__PURE__*/ memo(BaseNodeComponent);
459
- export { BaseNode };
462
+ export { BaseNode, selectIsConnecting };
@@ -3,6 +3,9 @@ import type { ExecutionState } from '../../types/execution';
3
3
  import type { ValidationState } from '../../types/validation';
4
4
  export type FooterVariant = 'none' | 'button' | 'single' | 'double';
5
5
  export interface BaseNodeData extends Record<string, unknown> {
6
+ nodeType?: string;
7
+ typeVersion?: string;
8
+ parameters?: Record<string, unknown>;
6
9
  display?: {
7
10
  label?: string;
8
11
  subLabel?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseNode.types.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseNode/BaseNode.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEpE,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,SAAS,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAOF,eAAe,CAAC,EAAE,OAAO,CAAC;IAM1B,WAAW,CAAC,EAAE,OAAO,CAAC;IAOtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
1
+ {"version":3,"file":"BaseNode.types.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseNode/BaseNode.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEpE,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAErC,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,SAAS,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAOF,eAAe,CAAC,EAAE,OAAO,CAAC;IAM1B,WAAW,CAAC,EAAE,OAAO,CAAC;IAOtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}