@pega/cosmos-react-build 9.0.0-build.9.9 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/lib/components/AppShell/AppShell.styles.d.ts +13 -11
  2. package/lib/components/AppShell/AppShell.styles.d.ts.map +1 -1
  3. package/lib/components/AppShell/Header/AppHeader.styles.d.ts +11 -7
  4. package/lib/components/AppShell/Header/AppHeader.styles.d.ts.map +1 -1
  5. package/lib/components/AppShell/Header/BranchButton.d.ts +6 -4
  6. package/lib/components/AppShell/Header/BranchButton.d.ts.map +1 -1
  7. package/lib/components/AppShell/Header/BranchButton.js.map +1 -1
  8. package/lib/components/AuthoringPanel/AuthoringPanel.styles.d.ts +753 -15
  9. package/lib/components/AuthoringPanel/AuthoringPanel.styles.d.ts.map +1 -1
  10. package/lib/components/AuthoringPanel/AuthoringPanel.styles.js +5 -4
  11. package/lib/components/AuthoringPanel/AuthoringPanel.styles.js.map +1 -1
  12. package/lib/components/Automation/Automation.js.map +1 -1
  13. package/lib/components/Automation/Automation.styles.d.ts +33 -10
  14. package/lib/components/Automation/Automation.styles.d.ts.map +1 -1
  15. package/lib/components/Automation/Automation.styles.js +1 -1
  16. package/lib/components/Automation/Automation.styles.js.map +1 -1
  17. package/lib/components/BackgroundPicker/BackgroundPicker.styles.d.ts +375 -11
  18. package/lib/components/BackgroundPicker/BackgroundPicker.styles.d.ts.map +1 -1
  19. package/lib/components/BackgroundPicker/BackgroundPicker.styles.js.map +1 -1
  20. package/lib/components/DynamicContentEditor/DynamicContentEditor.d.ts +8 -4
  21. package/lib/components/DynamicContentEditor/DynamicContentEditor.d.ts.map +1 -1
  22. package/lib/components/DynamicContentEditor/DynamicContentEditor.js +88 -68
  23. package/lib/components/DynamicContentEditor/DynamicContentEditor.js.map +1 -1
  24. package/lib/components/DynamicContentEditor/DynamicContentEditor.test-ids.d.ts +2 -0
  25. package/lib/components/DynamicContentEditor/DynamicContentEditor.test-ids.d.ts.map +1 -0
  26. package/lib/components/DynamicContentEditor/DynamicContentEditor.test-ids.js +9 -0
  27. package/lib/components/DynamicContentEditor/DynamicContentEditor.test-ids.js.map +1 -0
  28. package/lib/components/DynamicContentEditor/DynamicContentEditor.types.d.ts +12 -3
  29. package/lib/components/DynamicContentEditor/DynamicContentEditor.types.d.ts.map +1 -1
  30. package/lib/components/DynamicContentEditor/DynamicContentEditor.types.js +2 -1
  31. package/lib/components/DynamicContentEditor/DynamicContentEditor.types.js.map +1 -1
  32. package/lib/components/DynamicInput/DynamicInput.d.ts.map +1 -1
  33. package/lib/components/DynamicInput/DynamicInput.js +11 -5
  34. package/lib/components/DynamicInput/DynamicInput.js.map +1 -1
  35. package/lib/components/DynamicInput/DynamicInput.styles.d.ts +187 -2
  36. package/lib/components/DynamicInput/DynamicInput.styles.d.ts.map +1 -1
  37. package/lib/components/DynamicInput/DynamicInput.styles.js +29 -2
  38. package/lib/components/DynamicInput/DynamicInput.styles.js.map +1 -1
  39. package/lib/components/DynamicInput/DynamicInput.types.d.ts +4 -2
  40. package/lib/components/DynamicInput/DynamicInput.types.d.ts.map +1 -1
  41. package/lib/components/DynamicInput/DynamicInput.types.js.map +1 -1
  42. package/lib/components/DynamicInput/SourceButton.d.ts +1 -1
  43. package/lib/components/DynamicInput/SourceButton.d.ts.map +1 -1
  44. package/lib/components/DynamicInput/SourceButton.js.map +1 -1
  45. package/lib/components/DynamicInput/utils.d.ts.map +1 -1
  46. package/lib/components/DynamicInput/utils.js +5 -1
  47. package/lib/components/DynamicInput/utils.js.map +1 -1
  48. package/lib/components/EmptyRuleTemplate/EmptyRuleTemplate.d.ts +5 -5
  49. package/lib/components/EmptyRuleTemplate/EmptyRuleTemplate.d.ts.map +1 -1
  50. package/lib/components/EmptyRuleTemplate/EmptyRuleTemplate.js.map +1 -1
  51. package/lib/components/Expression/Expression.styles.d.ts +376 -8
  52. package/lib/components/Expression/Expression.styles.d.ts.map +1 -1
  53. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.d.ts.map +1 -1
  54. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.js +138 -41
  55. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.js.map +1 -1
  56. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.styles.d.ts +190 -8
  57. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.styles.d.ts.map +1 -1
  58. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.styles.js +53 -32
  59. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.styles.js.map +1 -1
  60. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.types.d.ts +2 -1
  61. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.types.d.ts.map +1 -1
  62. package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.types.js.map +1 -1
  63. package/lib/components/ExpressionBuilder/CodeEditor/getCodeSuggestions.d.ts +1 -1
  64. package/lib/components/ExpressionBuilder/CodeEditor/getCodeSuggestions.d.ts.map +1 -1
  65. package/lib/components/ExpressionBuilder/CodeEditor/getCodeSuggestions.js +7 -7
  66. package/lib/components/ExpressionBuilder/CodeEditor/getCodeSuggestions.js.map +1 -1
  67. package/lib/components/ExpressionBuilder/ExpressionBuilder.d.ts.map +1 -1
  68. package/lib/components/ExpressionBuilder/ExpressionBuilder.js +7 -6
  69. package/lib/components/ExpressionBuilder/ExpressionBuilder.js.map +1 -1
  70. package/lib/components/ExpressionBuilder/ExpressionBuilder.styles.d.ts +211 -22
  71. package/lib/components/ExpressionBuilder/ExpressionBuilder.styles.d.ts.map +1 -1
  72. package/lib/components/ExpressionBuilder/ExpressionBuilder.styles.js +6 -0
  73. package/lib/components/ExpressionBuilder/ExpressionBuilder.styles.js.map +1 -1
  74. package/lib/components/ExpressionBuilder/ExpressionBuilder.types.d.ts +5 -3
  75. package/lib/components/ExpressionBuilder/ExpressionBuilder.types.d.ts.map +1 -1
  76. package/lib/components/ExpressionBuilder/ExpressionBuilder.types.js.map +1 -1
  77. package/lib/components/ExpressionBuilder/ExpressionItem.d.ts.map +1 -1
  78. package/lib/components/ExpressionBuilder/ExpressionItem.js +17 -13
  79. package/lib/components/ExpressionBuilder/ExpressionItem.js.map +1 -1
  80. package/lib/components/ExpressionBuilder/ExpressionList.d.ts.map +1 -1
  81. package/lib/components/ExpressionBuilder/ExpressionList.js +18 -13
  82. package/lib/components/ExpressionBuilder/ExpressionList.js.map +1 -1
  83. package/lib/components/ExpressionBuilder/index.d.ts +1 -1
  84. package/lib/components/ExpressionBuilder/index.d.ts.map +1 -1
  85. package/lib/components/ExpressionBuilder/index.js.map +1 -1
  86. package/lib/components/FieldReference/FieldReference.styles.d.ts +20 -11
  87. package/lib/components/FieldReference/FieldReference.styles.d.ts.map +1 -1
  88. package/lib/components/FieldReference/FieldReference.styles.js +10 -1
  89. package/lib/components/FieldReference/FieldReference.styles.js.map +1 -1
  90. package/lib/components/FieldReference/FieldReferenceDisplay.d.ts.map +1 -1
  91. package/lib/components/FieldReference/FieldReferenceDisplay.js +3 -3
  92. package/lib/components/FieldReference/FieldReferenceDisplay.js.map +1 -1
  93. package/lib/components/FieldReference/FieldReferenceInput.d.ts.map +1 -1
  94. package/lib/components/FieldReference/FieldReferenceInput.js +13 -5
  95. package/lib/components/FieldReference/FieldReferenceInput.js.map +1 -1
  96. package/lib/components/FlowModeller/AddNode.d.ts +22 -0
  97. package/lib/components/FlowModeller/AddNode.d.ts.map +1 -0
  98. package/lib/components/FlowModeller/AddNode.js +95 -0
  99. package/lib/components/FlowModeller/AddNode.js.map +1 -0
  100. package/lib/components/FlowModeller/Connector.d.ts +12 -0
  101. package/lib/components/FlowModeller/Connector.d.ts.map +1 -0
  102. package/lib/components/FlowModeller/Connector.js +84 -0
  103. package/lib/components/FlowModeller/Connector.js.map +1 -0
  104. package/lib/components/FlowModeller/DeleteDialog.d.ts +39 -0
  105. package/lib/components/FlowModeller/DeleteDialog.d.ts.map +1 -0
  106. package/lib/components/FlowModeller/DeleteDialog.js +158 -0
  107. package/lib/components/FlowModeller/DeleteDialog.js.map +1 -0
  108. package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.d.ts +4 -0
  109. package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.d.ts.map +1 -0
  110. package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.js +37 -0
  111. package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.js.map +1 -0
  112. package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.styles.d.ts +8 -0
  113. package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.styles.d.ts.map +1 -0
  114. package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.styles.js +80 -0
  115. package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.styles.js.map +1 -0
  116. package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.types.d.ts +36 -0
  117. package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.types.d.ts.map +1 -0
  118. package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.types.js +2 -0
  119. package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.types.js.map +1 -0
  120. package/lib/components/FlowModeller/FlowModeller.d.ts +5 -0
  121. package/lib/components/FlowModeller/FlowModeller.d.ts.map +1 -0
  122. package/lib/components/FlowModeller/FlowModeller.js +359 -0
  123. package/lib/components/FlowModeller/FlowModeller.js.map +1 -0
  124. package/lib/components/FlowModeller/FlowModeller.test-ids.d.ts +3 -0
  125. package/lib/components/FlowModeller/FlowModeller.test-ids.d.ts.map +1 -0
  126. package/lib/components/FlowModeller/FlowModeller.test-ids.js +5 -0
  127. package/lib/components/FlowModeller/FlowModeller.test-ids.js.map +1 -0
  128. package/lib/components/FlowModeller/FlowModeller.types.d.ts +84 -0
  129. package/lib/components/FlowModeller/FlowModeller.types.d.ts.map +1 -0
  130. package/lib/components/FlowModeller/FlowModeller.types.js +2 -0
  131. package/lib/components/FlowModeller/FlowModeller.types.js.map +1 -0
  132. package/lib/components/FlowModeller/FlowModellerContext.d.ts +10 -0
  133. package/lib/components/FlowModeller/FlowModellerContext.d.ts.map +1 -0
  134. package/lib/components/FlowModeller/FlowModellerContext.js +8 -0
  135. package/lib/components/FlowModeller/FlowModellerContext.js.map +1 -0
  136. package/lib/components/FlowModeller/Node/Node.types.d.ts +93 -0
  137. package/lib/components/FlowModeller/Node/Node.types.d.ts.map +1 -0
  138. package/lib/components/FlowModeller/Node/Node.types.js +27 -0
  139. package/lib/components/FlowModeller/Node/Node.types.js.map +1 -0
  140. package/lib/components/FlowModeller/Node/NodeTemplate.styles.d.ts +212 -0
  141. package/lib/components/FlowModeller/Node/NodeTemplate.styles.d.ts.map +1 -0
  142. package/lib/components/FlowModeller/Node/NodeTemplate.styles.js +144 -0
  143. package/lib/components/FlowModeller/Node/NodeTemplate.styles.js.map +1 -0
  144. package/lib/components/FlowModeller/Node/NodeTemplates.d.ts +5 -0
  145. package/lib/components/FlowModeller/Node/NodeTemplates.d.ts.map +1 -0
  146. package/lib/components/FlowModeller/Node/NodeTemplates.js +130 -0
  147. package/lib/components/FlowModeller/Node/NodeTemplates.js.map +1 -0
  148. package/lib/components/FlowModeller/Node.d.ts +10 -0
  149. package/lib/components/FlowModeller/Node.d.ts.map +1 -0
  150. package/lib/components/FlowModeller/Node.js +43 -0
  151. package/lib/components/FlowModeller/Node.js.map +1 -0
  152. package/lib/components/FlowModeller/Renderer/Renderer.d.ts +4 -0
  153. package/lib/components/FlowModeller/Renderer/Renderer.d.ts.map +1 -0
  154. package/lib/components/FlowModeller/Renderer/Renderer.js +198 -0
  155. package/lib/components/FlowModeller/Renderer/Renderer.js.map +1 -0
  156. package/lib/components/FlowModeller/Renderer/Renderer.types.d.ts +20 -0
  157. package/lib/components/FlowModeller/Renderer/Renderer.types.d.ts.map +1 -0
  158. package/lib/components/FlowModeller/Renderer/Renderer.types.js +2 -0
  159. package/lib/components/FlowModeller/Renderer/Renderer.types.js.map +1 -0
  160. package/lib/components/FlowModeller/Renderer/Utils/Graph.d.ts +63 -0
  161. package/lib/components/FlowModeller/Renderer/Utils/Graph.d.ts.map +1 -0
  162. package/lib/components/FlowModeller/Renderer/Utils/Graph.js +291 -0
  163. package/lib/components/FlowModeller/Renderer/Utils/Graph.js.map +1 -0
  164. package/lib/components/FlowModeller/Renderer/Utils/GraphLayout.d.ts +37 -0
  165. package/lib/components/FlowModeller/Renderer/Utils/GraphLayout.d.ts.map +1 -0
  166. package/lib/components/FlowModeller/Renderer/Utils/GraphLayout.js +114 -0
  167. package/lib/components/FlowModeller/Renderer/Utils/GraphLayout.js.map +1 -0
  168. package/lib/components/FlowModeller/Renderer/Utils/GraphTraversal.d.ts +29 -0
  169. package/lib/components/FlowModeller/Renderer/Utils/GraphTraversal.d.ts.map +1 -0
  170. package/lib/components/FlowModeller/Renderer/Utils/GraphTraversal.js +191 -0
  171. package/lib/components/FlowModeller/Renderer/Utils/GraphTraversal.js.map +1 -0
  172. package/lib/components/FlowModeller/Renderer/Utils/RendererUtils.d.ts +38 -0
  173. package/lib/components/FlowModeller/Renderer/Utils/RendererUtils.d.ts.map +1 -0
  174. package/lib/components/FlowModeller/Renderer/Utils/RendererUtils.js +363 -0
  175. package/lib/components/FlowModeller/Renderer/Utils/RendererUtils.js.map +1 -0
  176. package/lib/components/FlowModeller/Utils/addNodeUtils.d.ts +18 -0
  177. package/lib/components/FlowModeller/Utils/addNodeUtils.d.ts.map +1 -0
  178. package/lib/components/FlowModeller/Utils/addNodeUtils.js +148 -0
  179. package/lib/components/FlowModeller/Utils/addNodeUtils.js.map +1 -0
  180. package/lib/components/FlowModeller/Utils/deleteNodeUtils.d.ts +33 -0
  181. package/lib/components/FlowModeller/Utils/deleteNodeUtils.d.ts.map +1 -0
  182. package/lib/components/FlowModeller/Utils/deleteNodeUtils.js +89 -0
  183. package/lib/components/FlowModeller/Utils/deleteNodeUtils.js.map +1 -0
  184. package/lib/components/FlowModeller/constants.d.ts +10 -0
  185. package/lib/components/FlowModeller/constants.d.ts.map +1 -0
  186. package/lib/components/FlowModeller/constants.js +9 -0
  187. package/lib/components/FlowModeller/constants.js.map +1 -0
  188. package/lib/components/FlowModeller/helper.d.ts +39 -0
  189. package/lib/components/FlowModeller/helper.d.ts.map +1 -0
  190. package/lib/components/FlowModeller/helper.js +230 -0
  191. package/lib/components/FlowModeller/helper.js.map +1 -0
  192. package/lib/components/FlowModeller/index.d.ts +18 -0
  193. package/lib/components/FlowModeller/index.d.ts.map +1 -0
  194. package/lib/components/FlowModeller/index.js +11 -0
  195. package/lib/components/FlowModeller/index.js.map +1 -0
  196. package/lib/components/IconTile/IconTile.d.ts +2 -2
  197. package/lib/components/IconTile/IconTile.d.ts.map +1 -1
  198. package/lib/components/ItemLibrary/ItemLibrary.d.ts +2 -2
  199. package/lib/components/ItemLibrary/ItemLibrary.d.ts.map +1 -1
  200. package/lib/components/ItemLibrary/ItemLibrary.js +5 -1
  201. package/lib/components/ItemLibrary/ItemLibrary.js.map +1 -1
  202. package/lib/components/LifeCycle/Category.d.ts +6 -6
  203. package/lib/components/LifeCycle/Category.d.ts.map +1 -1
  204. package/lib/components/LifeCycle/LifeCycle.d.ts +184 -2
  205. package/lib/components/LifeCycle/LifeCycle.d.ts.map +1 -1
  206. package/lib/components/LifeCycle/LifeCycle.types.d.ts +70 -0
  207. package/lib/components/LifeCycle/LifeCycle.types.d.ts.map +1 -1
  208. package/lib/components/LifeCycle/Stage.d.ts +6 -6
  209. package/lib/components/LifeCycle/Stage.d.ts.map +1 -1
  210. package/lib/components/LifeCycle/Step.d.ts +8 -8
  211. package/lib/components/LifeCycle/Step.d.ts.map +1 -1
  212. package/lib/components/LifeCycle/Step.js +1 -1
  213. package/lib/components/LifeCycle/Step.js.map +1 -1
  214. package/lib/components/LifeCycle/Task.d.ts +14 -10
  215. package/lib/components/LifeCycle/Task.d.ts.map +1 -1
  216. package/lib/components/LifeCycle/TaskGroup.d.ts +3 -1
  217. package/lib/components/LifeCycle/TaskGroup.d.ts.map +1 -1
  218. package/lib/components/MobileBuildSummary/MobileBuildSummary.d.ts +2 -2
  219. package/lib/components/MobileBuildSummary/MobileBuildSummary.d.ts.map +1 -1
  220. package/lib/components/ObjectSelect/InputTree/InputTree.styles.d.ts +10 -8
  221. package/lib/components/ObjectSelect/InputTree/InputTree.styles.d.ts.map +1 -1
  222. package/lib/components/ObjectSelect/InputTree/InputTree.styles.js +1 -1
  223. package/lib/components/ObjectSelect/InputTree/InputTree.styles.js.map +1 -1
  224. package/lib/components/PageBanner/PageBanner.d.ts +3 -3
  225. package/lib/components/PageBanner/PageBanner.d.ts.map +1 -1
  226. package/lib/components/PageBanner/PageBanner.js +6 -2
  227. package/lib/components/PageBanner/PageBanner.js.map +1 -1
  228. package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageHeader.d.ts +4 -2
  229. package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageHeader.d.ts.map +1 -1
  230. package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageHeader.js +23 -12
  231. package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageHeader.js.map +1 -1
  232. package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageTemplate.d.ts.map +1 -1
  233. package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageTemplate.js +14 -5
  234. package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageTemplate.js.map +1 -1
  235. package/lib/components/PageTemplates/GalleryPage.d.ts +2 -2
  236. package/lib/components/PageTemplates/GalleryPage.d.ts.map +1 -1
  237. package/lib/components/PageTemplates/HeaderActionButtons.d.ts.map +1 -1
  238. package/lib/components/PageTemplates/HeaderActionButtons.js +11 -3
  239. package/lib/components/PageTemplates/HeaderActionButtons.js.map +1 -1
  240. package/lib/components/PageTemplates/PageTemplate.styles.d.ts +375 -8
  241. package/lib/components/PageTemplates/PageTemplate.styles.d.ts.map +1 -1
  242. package/lib/components/PageTemplates/PageTemplate.styles.js +18 -10
  243. package/lib/components/PageTemplates/PageTemplate.styles.js.map +1 -1
  244. package/lib/components/PageTemplates/PageTemplate.types.d.ts +18 -13
  245. package/lib/components/PageTemplates/PageTemplate.types.d.ts.map +1 -1
  246. package/lib/components/PageTemplates/PageTemplate.types.js.map +1 -1
  247. package/lib/components/PageTemplates/PageTemplates.d.ts +4 -1
  248. package/lib/components/PageTemplates/PageTemplates.d.ts.map +1 -1
  249. package/lib/components/PageTemplates/PageTemplates.js +9 -5
  250. package/lib/components/PageTemplates/PageTemplates.js.map +1 -1
  251. package/lib/components/PageTemplates/ShowcasePage.d.ts +2 -2
  252. package/lib/components/PageTemplates/ShowcasePage.d.ts.map +1 -1
  253. package/lib/components/RulePicker/RulePicker.d.ts +1 -1
  254. package/lib/components/SummaryCard/SummaryCard.d.ts.map +1 -1
  255. package/lib/components/SummaryCard/SummaryCard.js +13 -1
  256. package/lib/components/SummaryCard/SummaryCard.js.map +1 -1
  257. package/lib/components/Workbench/Workbench.styles.d.ts +12 -8
  258. package/lib/components/Workbench/Workbench.styles.d.ts.map +1 -1
  259. package/lib/index.d.ts +2 -0
  260. package/lib/index.d.ts.map +1 -1
  261. package/lib/index.js +2 -0
  262. package/lib/index.js.map +1 -1
  263. package/lib/utils/typeIconMapping.d.ts.map +1 -1
  264. package/lib/utils/typeIconMapping.js +2 -0
  265. package/lib/utils/typeIconMapping.js.map +1 -1
  266. package/lib/utils/utils.d.ts +5 -0
  267. package/lib/utils/utils.d.ts.map +1 -0
  268. package/lib/utils/utils.js +19 -0
  269. package/lib/utils/utils.js.map +1 -0
  270. package/package.json +7 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphLayout.js","sourceRoot":"","sources":["../../../../../src/components/FlowModeller/Renderer/Utils/GraphLayout.ts"],"names":[],"mappings":"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","sourcesContent":["// cspell:words marginx, marginy, lablepos\n\nimport dagre from '@dagrejs/dagre';\n\nimport type { ConnectorProps, GraphData, Node } from './Graph';\n\nexport interface PlottedGraphNode<T = unknown> extends Node<T> {\n dimensions: {\n width: number;\n height: number;\n };\n position: {\n x: number;\n y: number;\n };\n referencedNode?: T;\n}\n\nexport interface PlottedGraphConnector<T = unknown> extends ConnectorProps<T> {\n points: { x: number; y: number }[];\n labelLayout?: {\n value: string;\n width: number;\n height: number;\n x: number;\n y: number;\n };\n}\n\nexport const GraphLayoutDirection = {\n LeftToRight: 'LR',\n TopToBottom: 'TB'\n};\n\nexport type GraphLayoutDirectionType =\n (typeof GraphLayoutDirection)[keyof typeof GraphLayoutDirection];\n\nconst DEFAULT_GRAPH_WIDTH = 2000;\nconst DEFAULT_GRAPH_HEIGHT = 2000;\n\nexport default class GraphLayout {\n // Using Dagre layouting\n static plot<T extends GraphData<PlottedGraphNode, PlottedGraphConnector>>(\n graphData: T,\n readOnly: boolean = false,\n direction: GraphLayoutDirectionType = GraphLayoutDirection.TopToBottom\n ) {\n const dagreGraph = new dagre.graphlib.Graph({ multigraph: true });\n\n dagreGraph.setDefaultEdgeLabel(() => ({}));\n\n const defaultNodeWidth = 280;\n const defaultNodeHeight = 112;\n\n dagreGraph.setGraph({\n rankdir: direction,\n ranksep: readOnly ? 2 : 4,\n edgesep: defaultNodeWidth / 2,\n nodesep: 20,\n marginx: 200,\n marginy: 32\n });\n\n graphData.nodes.forEach(node => {\n dagreGraph.setNode(node.id, {\n width: node.dimensions.width ?? defaultNodeWidth,\n height: node.dimensions.height ?? defaultNodeHeight\n });\n });\n\n graphData.connectors.forEach((con, index) => {\n dagreGraph.setEdge(\n con.fromNodeId,\n con.toNodeId,\n {\n weight: 1,\n minlen: 2,\n label:\n con.data &&\n typeof con.data === 'object' &&\n 'label' in con.data &&\n typeof con.data.label === 'string'\n ? con.data.label\n : '',\n width: 250,\n height: con.data && typeof con.data === 'object' && 'label' in con.data ? 90 : 40,\n lablepos: 'c',\n labeloffset: 0\n },\n index.toString()\n );\n });\n\n dagre.layout(dagreGraph, { disableOptimalOrderHeuristic: true });\n\n graphData.nodes.forEach(el => {\n const node = dagreGraph.node(el.id);\n el.position.x = node.x - el.dimensions.width / 2;\n el.position.y = node.y - el.dimensions.height / 2;\n });\n\n graphData.connectors.forEach((con, index) => {\n const edge = dagreGraph.edge(con.fromNodeId, con.toNodeId, index.toString());\n\n con.labelLayout = {\n value: edge.label,\n x: edge.x,\n y: edge.y,\n width: edge.width,\n height: edge.height\n };\n\n const lastIndex = edge.points.length - 1;\n let firstPoint = edge.points[0];\n const secondPoint = edge.points[1];\n let lastPoint = edge.points[lastIndex];\n const secondLastPoint = edge.points[lastIndex - 1];\n\n const fromNode = dagreGraph.node(con.fromNodeId);\n const toNode = dagreGraph.node(con.toNodeId);\n\n firstPoint =\n firstPoint.x !== secondPoint.x\n ? {\n ...edge.points[0],\n x: fromNode.x,\n y: edge.points[1].y\n }\n : firstPoint;\n\n lastPoint =\n lastPoint.x !== secondLastPoint.x\n ? {\n ...edge.points[lastIndex],\n x: toNode.x,\n y: edge.points[lastIndex - 1].y\n }\n : lastPoint;\n\n con.points = [\n { x: fromNode.x, y: fromNode.y + fromNode.height / 2 },\n { ...firstPoint, y: firstPoint.y + 10 },\n { ...secondPoint, y: secondPoint.y + 10 },\n ...edge.points.slice(2, lastIndex),\n lastPoint\n ];\n\n // Only add the last point incase the edge has an arc at end\n if (edge.points[lastIndex].x !== edge.points[lastIndex - 1].x) {\n con.points.push({ x: toNode.x, y: toNode.y });\n }\n\n // if current edge source node is an placeholder node move down the starting point of placeholder node by 12\n if (fromNode.height === 0) {\n con.points[0].y += 12;\n }\n\n const edgeLastPointIndex = con.points.length - 1;\n\n // Move the merging arcs last point to the starting point of placeholder node\n if (\n con.points[edgeLastPointIndex].x === con.points[edgeLastPointIndex - 1].x &&\n toNode.height === 0\n ) {\n con.points[edgeLastPointIndex].y += 12;\n }\n });\n\n const { width } = dagreGraph.graph();\n const { height } = dagreGraph.graph();\n\n return {\n width: Number.isFinite(width) ? width : DEFAULT_GRAPH_WIDTH,\n height: Number.isFinite(height) ? height : DEFAULT_GRAPH_HEIGHT\n };\n }\n}\n"]}
@@ -0,0 +1,29 @@
1
+ import type { ConnectorProps, GraphData, Node } from './Graph';
2
+ import { DirectedGraph } from './Graph';
3
+ export interface NestedArray<T> extends Array<T | NestedArray<T>> {
4
+ }
5
+ export interface ConvergenceData<T extends Node, U extends ConnectorProps> {
6
+ nodeId: string;
7
+ connectors: NestedArray<string>;
8
+ summary: {
9
+ nodesInvolved: Record<string, T>;
10
+ connectorsInvolved: Record<string, U>;
11
+ };
12
+ paths?: NestedArray<ConvergenceData<T, U>>;
13
+ }
14
+ export default class GraphTraversal {
15
+ static bfs(gd: GraphData, src?: string): string[];
16
+ static dfs(gd: GraphData, src?: string): string[];
17
+ static findRootNode(graph: DirectedGraph): string | false;
18
+ static findLeafNode(graph: DirectedGraph): string | false;
19
+ /**
20
+ * Given the graphData and the source node with morethan one branch, It calculates the convergence node, involved connectors and paths
21
+ * Assuming, goTo is not supported
22
+ *
23
+ * @param gd graphData to process on
24
+ * @param src id of the source node. This needs to be a node with multiple branches
25
+ * @returns id of the destination node or null if not found
26
+ */
27
+ static getConvergenceData<T extends Node = Node, U extends ConnectorProps = ConnectorProps>(gd: GraphData<T, U>, src: string): ConvergenceData<T, U> | false;
28
+ }
29
+ //# sourceMappingURL=GraphTraversal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphTraversal.d.ts","sourceRoot":"","sources":["../../../../../src/components/FlowModeller/Renderer/Utils/GraphTraversal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,WAAW,WAAW,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;CAAG;AAEpE,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,cAAc;IACvE,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;KACvC,CAAC;IACF,KAAK,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC5C;AAED,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAmCjD,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAyCjD,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,KAAK;IAazD,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,KAAK;IAUzD;;;;;;;OAOG;IAEH,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAAE,CAAC,SAAS,cAAc,GAAG,cAAc,EACxF,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,GAAG,EAAE,MAAM,GACV,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK;CA+HjC"}
@@ -0,0 +1,191 @@
1
+ import { DirectedGraph } from './Graph';
2
+ export default class GraphTraversal {
3
+ static bfs(gd, src) {
4
+ const graph = new DirectedGraph(gd);
5
+ if (!src) {
6
+ const rootNodeId = GraphTraversal.findRootNode(graph);
7
+ if (!rootNodeId) {
8
+ throw Error('Invalid graph, cannot find root node.');
9
+ }
10
+ src = rootNodeId;
11
+ }
12
+ const queue = [src];
13
+ const result = [];
14
+ const map = { src }; // needed for duplicate comparison
15
+ while (queue.length > 0) {
16
+ const source = queue.shift();
17
+ if (source !== undefined) {
18
+ result.push(source);
19
+ const nextNodes = graph.getNextNodes(source);
20
+ nextNodes.forEach((node) => {
21
+ if (!map[node.id]) {
22
+ queue.push(node.id);
23
+ map[node.id] = node.id;
24
+ }
25
+ });
26
+ }
27
+ }
28
+ return result;
29
+ }
30
+ static dfs(gd, src) {
31
+ const graph = new DirectedGraph(gd);
32
+ // finding the start node automatically
33
+ if (!src) {
34
+ const rootNodeId = GraphTraversal.findRootNode(graph);
35
+ if (!rootNodeId) {
36
+ throw Error('Invalid graph, cannot find root node.');
37
+ }
38
+ src = rootNodeId;
39
+ }
40
+ const stack = [src];
41
+ const result = [];
42
+ const map = {
43
+ src
44
+ }; // needed for duplicate comparison
45
+ while (stack.length > 0) {
46
+ const source = stack.pop();
47
+ if (source !== undefined) {
48
+ result.push(source);
49
+ const nextNodes = graph.getNextNodes(source);
50
+ nextNodes.forEach(node => {
51
+ if (map[node.id] === undefined) {
52
+ stack.push(node.id);
53
+ map[node.id] = node.id;
54
+ }
55
+ });
56
+ }
57
+ }
58
+ return result;
59
+ }
60
+ // Assuming the given graph has no unconnected nodes and the graph is not cyclic(if start node have in-connectors(ie., cyclic), this will fail).
61
+ // - returns first encountered node with no in-connectors as a root node, if more than one exists
62
+ static findRootNode(graph) {
63
+ const nodes = graph.getNodes();
64
+ for (let i = 0; i < nodes.length; i += 1) {
65
+ if (graph.getPrevNodesCount(nodes[i].id) === 0) {
66
+ return nodes[i].id;
67
+ }
68
+ }
69
+ return false;
70
+ }
71
+ // - returns first encountered node with no out-connectors as a leaf node, if more than one exists
72
+ static findLeafNode(graph) {
73
+ for (const node of graph.getNodes()) {
74
+ if (graph.isLeaf(node.id)) {
75
+ return node.id;
76
+ }
77
+ }
78
+ return false;
79
+ }
80
+ /**
81
+ * Given the graphData and the source node with morethan one branch, It calculates the convergence node, involved connectors and paths
82
+ * Assuming, goTo is not supported
83
+ *
84
+ * @param gd graphData to process on
85
+ * @param src id of the source node. This needs to be a node with multiple branches
86
+ * @returns id of the destination node or null if not found
87
+ */
88
+ // TODO-OPTIMIZE Memoize, for a given GraphData
89
+ static getConvergenceData(gd, src) {
90
+ const graph = new DirectedGraph(gd);
91
+ // return false, if there is no node with given source node id
92
+ if (graph.getNode(src) === undefined || graph.getNextNodesCount(src) < 2) {
93
+ return false;
94
+ }
95
+ // traverse the nodes -- and record the paths of each connector
96
+ const path = []; // array of path-arrays
97
+ const initialConnectors = graph.getOutConnectors(src);
98
+ // iterate the initial set of connectors
99
+ initialConnectors.forEach((item, index) => {
100
+ path[index] = [];
101
+ let currentConnector = item;
102
+ // traverse through each connector and push the encountered nodes
103
+ while (currentConnector && currentConnector.toNodeId !== undefined) {
104
+ path[index].push({
105
+ nodeId: currentConnector.toNodeId,
106
+ connectors: [currentConnector.id],
107
+ summary: {
108
+ nodesInvolved: {
109
+ [currentConnector.toNodeId]: graph.getNode(currentConnector.toNodeId)
110
+ },
111
+ connectorsInvolved: { [currentConnector.id]: currentConnector }
112
+ }
113
+ });
114
+ const inConnectors = graph.getInConnectors(currentConnector.toNodeId);
115
+ // if this node has multiple in connectors, that means this is a join [IMP TODO NOTE until we support goTo option]
116
+ if (inConnectors.length > 1) {
117
+ return;
118
+ }
119
+ let outConnectors = graph.getOutConnectors(currentConnector.toNodeId);
120
+ let newCurrentNodeId = currentConnector.toNodeId;
121
+ // check if this node has multiple branches and call recursively
122
+ while (outConnectors.length > 1) {
123
+ const result = GraphTraversal.getConvergenceData(gd, newCurrentNodeId);
124
+ // handle resultNodeId val as false use case: just cancel futher processing and return false
125
+ if (result === false) {
126
+ break;
127
+ }
128
+ // add result node to the path
129
+ path[index].push(result);
130
+ /** if the result node has multiple in-connectors and few of them(i.e foreign connectors or connector belonging to other/parent multi branch scenario)
131
+ * are not a part of the current multi branch scenario then the resultant node is a merging point for other branches.
132
+ * ************************** Check for foreign connectors - START ************************** */
133
+ const resultNodeInConnectors = Array.from(graph.getInConnectors(result.nodeId), con => con.id);
134
+ // All the connectors involved in the current multi branch scenario
135
+ const connectorsInvolved = Object.keys(result.summary.connectorsInvolved);
136
+ let hasForeignConnector = false;
137
+ for (let i = 0; i < resultNodeInConnectors.length; i += 1) {
138
+ if (!connectorsInvolved.some(con => con === resultNodeInConnectors[i])) {
139
+ hasForeignConnector = true;
140
+ break;
141
+ }
142
+ }
143
+ // if we have a foreign in-connector on result node then skip current path
144
+ if (hasForeignConnector) {
145
+ return;
146
+ }
147
+ // ************************** check for foreign connector - END **************************
148
+ // handle, resultNode as a shape with multiple out-connectors(multi branch)
149
+ outConnectors = graph.getOutConnectors(result.nodeId);
150
+ newCurrentNodeId = result.nodeId;
151
+ }
152
+ // else if out connectors is 1
153
+ currentConnector = outConnectors[0];
154
+ }
155
+ });
156
+ // validate and return false if no convergence node found
157
+ for (let i = 1; i < path.length; i += 1) {
158
+ if (path[i][path[i].length - 1].nodeId !== path[i - 1][path[i - 1].length - 1].nodeId) {
159
+ return false;
160
+ }
161
+ }
162
+ const result = {
163
+ nodeId: path[0][path[0].length - 1].nodeId,
164
+ connectors: [],
165
+ paths: [],
166
+ summary: {
167
+ nodesInvolved: {},
168
+ connectorsInvolved: {}
169
+ }
170
+ };
171
+ for (let i = 0; i < path.length; i += 1) {
172
+ const current = path[i];
173
+ result.connectors.push(current[current.length - 1].connectors);
174
+ if (result.paths !== undefined) {
175
+ result.paths[i] = current;
176
+ }
177
+ current.forEach(item => {
178
+ result.summary.nodesInvolved = {
179
+ ...result.summary.nodesInvolved,
180
+ ...item.summary.nodesInvolved
181
+ };
182
+ result.summary.connectorsInvolved = {
183
+ ...result.summary.connectorsInvolved,
184
+ ...item.summary.connectorsInvolved
185
+ };
186
+ });
187
+ }
188
+ return result;
189
+ }
190
+ }
191
+ //# sourceMappingURL=GraphTraversal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphTraversal.js","sourceRoot":"","sources":["../../../../../src/components/FlowModeller/Renderer/Utils/GraphTraversal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAcxC,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,MAAM,CAAC,GAAG,CAAC,EAAa,EAAE,GAAY;QACpC,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC;QAEpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAEtD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,KAAK,CAAC,uCAAuC,CAAC,CAAC;YACvD,CAAC;YAED,GAAG,GAAG,UAAU,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,GAAa,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,GAAG,GAA2B,EAAE,GAAG,EAAE,CAAC,CAAC,kCAAkC;QAE/E,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEpB,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC7C,SAAS,CAAC,OAAO,CAAC,CAAC,IAAU,EAAE,EAAE;oBAC/B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;wBAClB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACpB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;oBACzB,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,EAAa,EAAE,GAAY;QACpC,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC;QAEpC,uCAAuC;QACvC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAEtD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,KAAK,CAAC,uCAAuC,CAAC,CAAC;YACvD,CAAC;YAED,GAAG,GAAG,UAAU,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,GAAa,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,GAAG,GAA2B;YAClC,GAAG;SACJ,CAAC,CAAC,kCAAkC;QAErC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YAC3B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEpB,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAE7C,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACvB,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;wBAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACpB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;oBACzB,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,gJAAgJ;IAChJ,iGAAiG;IACjG,MAAM,CAAC,YAAY,CAAC,KAAoB;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,IAAI,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/C,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kGAAkG;IAClG,MAAM,CAAC,YAAY,CAAC,KAAoB;QACtC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACH,+CAA+C;IAC/C,MAAM,CAAC,kBAAkB,CACvB,EAAmB,EACnB,GAAW;QAEX,MAAM,KAAK,GAAG,IAAI,aAAa,CAAO,EAAE,CAAC,CAAC;QAE1C,8DAA8D;QAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,+DAA+D;QAC/D,MAAM,IAAI,GAA8B,EAAE,CAAC,CAAC,uBAAuB;QACnE,MAAM,iBAAiB,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAEtD,wCAAwC;QACxC,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACxC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAEjB,IAAI,gBAAgB,GAAG,IAAI,CAAC;YAC5B,iEAAiE;YACjE,OAAO,gBAAgB,IAAI,gBAAgB,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACnE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;oBACf,MAAM,EAAE,gBAAgB,CAAC,QAAQ;oBACjC,UAAU,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBACjC,OAAO,EAAE;wBACP,aAAa,EAAE;4BACb,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC;yBACtE;wBACD,kBAAkB,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE;qBAChE;iBACF,CAAC,CAAC;gBAEH,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBACtE,kHAAkH;gBAClH,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,OAAO;gBACT,CAAC;gBAED,IAAI,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBAEtE,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,QAAQ,CAAC;gBACjD,gEAAgE;gBAChE,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChC,MAAM,MAAM,GAAG,cAAc,CAAC,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;oBAEvE,4FAA4F;oBAC5F,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;wBACrB,MAAM;oBACR,CAAC;oBAED,8BAA8B;oBAC9B,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAEzB;;qHAEiG;oBACjG,MAAM,sBAAsB,GAAG,KAAK,CAAC,IAAI,CACvC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,EACpC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CACd,CAAC;oBAEF,mEAAmE;oBACnE,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;oBAE1E,IAAI,mBAAmB,GAAG,KAAK,CAAC;oBAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC1D,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;4BACvE,mBAAmB,GAAG,IAAI,CAAC;4BAC3B,MAAM;wBACR,CAAC;oBACH,CAAC;oBACD,0EAA0E;oBAC1E,IAAI,mBAAmB,EAAE,CAAC;wBACxB,OAAO;oBACT,CAAC;oBACD,0FAA0F;oBAE1F,2EAA2E;oBAC3E,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACtD,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;gBACnC,CAAC;gBAED,8BAA8B;gBAE9B,gBAAgB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,yDAAyD;QACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBACtF,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAA0B;YACpC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM;YAC1C,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,EAAE;YACT,OAAO,EAAE;gBACP,aAAa,EAAE,EAAE;gBACjB,kBAAkB,EAAE,EAAE;aACvB;SACF,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAE/D,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YAC5B,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACrB,MAAM,CAAC,OAAO,CAAC,aAAa,GAAG;oBAC7B,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa;oBAC/B,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;iBAC9B,CAAC;gBAEF,MAAM,CAAC,OAAO,CAAC,kBAAkB,GAAG;oBAClC,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB;oBACpC,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB;iBACnC,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF","sourcesContent":["import type { ConnectorProps, GraphData, Node } from './Graph';\nimport { DirectedGraph } from './Graph';\n\nexport interface NestedArray<T> extends Array<T | NestedArray<T>> {}\n\nexport interface ConvergenceData<T extends Node, U extends ConnectorProps> {\n nodeId: string;\n connectors: NestedArray<string>;\n summary: {\n nodesInvolved: Record<string, T>;\n connectorsInvolved: Record<string, U>;\n };\n paths?: NestedArray<ConvergenceData<T, U>>;\n}\n\nexport default class GraphTraversal {\n static bfs(gd: GraphData, src?: string): string[] {\n const graph = new DirectedGraph(gd);\n\n if (!src) {\n const rootNodeId = GraphTraversal.findRootNode(graph);\n\n if (!rootNodeId) {\n throw Error('Invalid graph, cannot find root node.');\n }\n\n src = rootNodeId;\n }\n\n const queue: string[] = [src];\n const result: string[] = [];\n const map: Record<string, string> = { src }; // needed for duplicate comparison\n\n while (queue.length > 0) {\n const source = queue.shift();\n if (source !== undefined) {\n result.push(source);\n\n const nextNodes = graph.getNextNodes(source);\n nextNodes.forEach((node: Node) => {\n if (!map[node.id]) {\n queue.push(node.id);\n map[node.id] = node.id;\n }\n });\n }\n }\n\n return result;\n }\n\n static dfs(gd: GraphData, src?: string): string[] {\n const graph = new DirectedGraph(gd);\n\n // finding the start node automatically\n if (!src) {\n const rootNodeId = GraphTraversal.findRootNode(graph);\n\n if (!rootNodeId) {\n throw Error('Invalid graph, cannot find root node.');\n }\n\n src = rootNodeId;\n }\n\n const stack: string[] = [src];\n const result: string[] = [];\n const map: Record<string, string> = {\n src\n }; // needed for duplicate comparison\n\n while (stack.length > 0) {\n const source = stack.pop();\n if (source !== undefined) {\n result.push(source);\n\n const nextNodes = graph.getNextNodes(source);\n\n nextNodes.forEach(node => {\n if (map[node.id] === undefined) {\n stack.push(node.id);\n map[node.id] = node.id;\n }\n });\n }\n }\n\n return result;\n }\n\n // Assuming the given graph has no unconnected nodes and the graph is not cyclic(if start node have in-connectors(ie., cyclic), this will fail).\n // - returns first encountered node with no in-connectors as a root node, if more than one exists\n static findRootNode(graph: DirectedGraph): string | false {\n const nodes = graph.getNodes();\n\n for (let i = 0; i < nodes.length; i += 1) {\n if (graph.getPrevNodesCount(nodes[i].id) === 0) {\n return nodes[i].id;\n }\n }\n\n return false;\n }\n\n // - returns first encountered node with no out-connectors as a leaf node, if more than one exists\n static findLeafNode(graph: DirectedGraph): string | false {\n for (const node of graph.getNodes()) {\n if (graph.isLeaf(node.id)) {\n return node.id;\n }\n }\n\n return false;\n }\n\n /**\n * Given the graphData and the source node with morethan one branch, It calculates the convergence node, involved connectors and paths\n * Assuming, goTo is not supported\n *\n * @param gd graphData to process on\n * @param src id of the source node. This needs to be a node with multiple branches\n * @returns id of the destination node or null if not found\n */\n // TODO-OPTIMIZE Memoize, for a given GraphData\n static getConvergenceData<T extends Node = Node, U extends ConnectorProps = ConnectorProps>(\n gd: GraphData<T, U>,\n src: string\n ): ConvergenceData<T, U> | false {\n const graph = new DirectedGraph<T, U>(gd);\n\n // return false, if there is no node with given source node id\n if (graph.getNode(src) === undefined || graph.getNextNodesCount(src) < 2) {\n return false;\n }\n\n // traverse the nodes -- and record the paths of each connector\n const path: ConvergenceData<T, U>[][] = []; // array of path-arrays\n const initialConnectors = graph.getOutConnectors(src);\n\n // iterate the initial set of connectors\n initialConnectors.forEach((item, index) => {\n path[index] = [];\n\n let currentConnector = item;\n // traverse through each connector and push the encountered nodes\n while (currentConnector && currentConnector.toNodeId !== undefined) {\n path[index].push({\n nodeId: currentConnector.toNodeId,\n connectors: [currentConnector.id],\n summary: {\n nodesInvolved: {\n [currentConnector.toNodeId]: graph.getNode(currentConnector.toNodeId)\n },\n connectorsInvolved: { [currentConnector.id]: currentConnector }\n }\n });\n\n const inConnectors = graph.getInConnectors(currentConnector.toNodeId);\n // if this node has multiple in connectors, that means this is a join [IMP TODO NOTE until we support goTo option]\n if (inConnectors.length > 1) {\n return;\n }\n\n let outConnectors = graph.getOutConnectors(currentConnector.toNodeId);\n\n let newCurrentNodeId = currentConnector.toNodeId;\n // check if this node has multiple branches and call recursively\n while (outConnectors.length > 1) {\n const result = GraphTraversal.getConvergenceData(gd, newCurrentNodeId);\n\n // handle resultNodeId val as false use case: just cancel futher processing and return false\n if (result === false) {\n break;\n }\n\n // add result node to the path\n path[index].push(result);\n\n /** if the result node has multiple in-connectors and few of them(i.e foreign connectors or connector belonging to other/parent multi branch scenario)\n * are not a part of the current multi branch scenario then the resultant node is a merging point for other branches.\n * ************************** Check for foreign connectors - START ************************** */\n const resultNodeInConnectors = Array.from(\n graph.getInConnectors(result.nodeId),\n con => con.id\n );\n\n // All the connectors involved in the current multi branch scenario\n const connectorsInvolved = Object.keys(result.summary.connectorsInvolved);\n\n let hasForeignConnector = false;\n\n for (let i = 0; i < resultNodeInConnectors.length; i += 1) {\n if (!connectorsInvolved.some(con => con === resultNodeInConnectors[i])) {\n hasForeignConnector = true;\n break;\n }\n }\n // if we have a foreign in-connector on result node then skip current path\n if (hasForeignConnector) {\n return;\n }\n // ************************** check for foreign connector - END **************************\n\n // handle, resultNode as a shape with multiple out-connectors(multi branch)\n outConnectors = graph.getOutConnectors(result.nodeId);\n newCurrentNodeId = result.nodeId;\n }\n\n // else if out connectors is 1\n\n currentConnector = outConnectors[0];\n }\n });\n\n // validate and return false if no convergence node found\n for (let i = 1; i < path.length; i += 1) {\n if (path[i][path[i].length - 1].nodeId !== path[i - 1][path[i - 1].length - 1].nodeId) {\n return false;\n }\n }\n\n const result: ConvergenceData<T, U> = {\n nodeId: path[0][path[0].length - 1].nodeId,\n connectors: [],\n paths: [],\n summary: {\n nodesInvolved: {},\n connectorsInvolved: {}\n }\n };\n\n for (let i = 0; i < path.length; i += 1) {\n const current = path[i];\n result.connectors.push(current[current.length - 1].connectors);\n\n if (result.paths !== undefined) {\n result.paths[i] = current;\n }\n\n current.forEach(item => {\n result.summary.nodesInvolved = {\n ...result.summary.nodesInvolved,\n ...item.summary.nodesInvolved\n };\n\n result.summary.connectorsInvolved = {\n ...result.summary.connectorsInvolved,\n ...item.summary.connectorsInvolved\n };\n });\n }\n\n return result;\n }\n}\n"]}
@@ -0,0 +1,38 @@
1
+ import { DirectedGraph } from './Graph';
2
+ import type { PlottedGraphConnector, PlottedGraphNode } from './GraphLayout';
3
+ import type { ConvergenceData } from './GraphTraversal';
4
+ export type ParentConvergence = {
5
+ convergence: ConvergenceData<PlottedGraphNode, PlottedGraphConnector>;
6
+ pathIndex: number;
7
+ itemIndexInPath: number;
8
+ parent: PlottedGraphNode;
9
+ };
10
+ /**
11
+ * Checks if the given graphItem is a part of multi branch convergence scenario and returns the convergence data and parent id
12
+ * @param graphItem - node or connector
13
+ * @param graph - Directed graph object
14
+ */
15
+ export declare const getParentConvergence: (graphItem: PlottedGraphNode | PlottedGraphConnector, graph: DirectedGraph<PlottedGraphNode, PlottedGraphConnector>) => ParentConvergence | false;
16
+ /** Returns an object where keys are y-cords of node/connector and
17
+ * values are an array of node/connector id's having same y-cord as key
18
+ * @param graph - Directed graph object
19
+ */
20
+ export declare const groupByPosition: (graph: DirectedGraph<PlottedGraphNode, PlottedGraphConnector>) => Record<string, [string]>;
21
+ interface VerticalNavigationProps {
22
+ activeGraphItemId: string;
23
+ activeGraphItem: PlottedGraphNode | PlottedGraphConnector;
24
+ readOnly: boolean;
25
+ graph: DirectedGraph<PlottedGraphNode, PlottedGraphConnector>;
26
+ }
27
+ interface HorizontalNavigationProps {
28
+ activeGraphItem: VerticalNavigationProps['activeGraphItem'];
29
+ keyEvent: 'ArrowLeft' | 'ArrowRight';
30
+ positions: Record<string, [string]>;
31
+ graph: DirectedGraph<PlottedGraphNode, PlottedGraphConnector>;
32
+ readOnly?: boolean;
33
+ }
34
+ export declare const arrowUpKey: ({ activeGraphItemId, activeGraphItem, readOnly, graph }: VerticalNavigationProps) => string | false | undefined;
35
+ export declare const arrowDownKey: ({ activeGraphItemId, activeGraphItem, readOnly, graph }: VerticalNavigationProps) => string | false;
36
+ export declare const horizontalNavigation: ({ positions, activeGraphItem, keyEvent, graph, readOnly }: HorizontalNavigationProps) => string | undefined;
37
+ export {};
38
+ //# sourceMappingURL=RendererUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RendererUtils.d.ts","sourceRoot":"","sources":["../../../../../src/components/FlowModeller/Renderer/Utils/RendererUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAE7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,eAAe,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,WAAW,gBAAgB,GAAG,qBAAqB,EACnD,OAAO,aAAa,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,KAC5D,iBAAiB,GAAG,KA+CtB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,aAAa,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,6BAoE5F,CAAC;AAEF,UAAU,uBAAuB;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,gBAAgB,GAAG,qBAAqB,CAAC;IAC1D,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,aAAa,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;CAC/D;AAED,UAAU,yBAAyB;IACjC,eAAe,EAAE,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;IAC5D,QAAQ,EAAE,WAAW,GAAG,YAAY,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,KAAK,EAAE,aAAa,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,UAAU,GAAI,yDAKxB,uBAAuB,+BA4CzB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,yDAK1B,uBAAuB,mBA4BzB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,2DAMlC,yBAAyB,uBA+K3B,CAAC"}