@openchoreo/cell-diagram 1.2.0-rc.1

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 (285) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +115 -0
  3. package/dist/Diagram.esm.js +55 -0
  4. package/dist/Diagram.esm.js.map +1 -0
  5. package/dist/components/Cell/CellLink/CellLinkFactory.esm.js +19 -0
  6. package/dist/components/Cell/CellLink/CellLinkFactory.esm.js.map +1 -0
  7. package/dist/components/Cell/CellLink/CellLinkModel.esm.js +59 -0
  8. package/dist/components/Cell/CellLink/CellLinkModel.esm.js.map +1 -0
  9. package/dist/components/Cell/CellLink/CellLinkWidget.esm.js +217 -0
  10. package/dist/components/Cell/CellLink/CellLinkWidget.esm.js.map +1 -0
  11. package/dist/components/Cell/CellNode/CellFactory.esm.js +19 -0
  12. package/dist/components/Cell/CellNode/CellFactory.esm.js.map +1 -0
  13. package/dist/components/Cell/CellNode/CellModel.esm.js +73 -0
  14. package/dist/components/Cell/CellNode/CellModel.esm.js.map +1 -0
  15. package/dist/components/Cell/CellNode/CellWidget.esm.js +166 -0
  16. package/dist/components/Cell/CellNode/CellWidget.esm.js.map +1 -0
  17. package/dist/components/Cell/CellNode/styles.esm.js +149 -0
  18. package/dist/components/Cell/CellNode/styles.esm.js.map +1 -0
  19. package/dist/components/Cell/CellPort/CellPortFactory.esm.js +17 -0
  20. package/dist/components/Cell/CellPort/CellPortFactory.esm.js.map +1 -0
  21. package/dist/components/Cell/CellPort/CellPortModel.esm.js +18 -0
  22. package/dist/components/Cell/CellPort/CellPortModel.esm.js.map +1 -0
  23. package/dist/components/Cell/CellPort/CellPortWidget.esm.js +24 -0
  24. package/dist/components/Cell/CellPort/CellPortWidget.esm.js.map +1 -0
  25. package/dist/components/Cell/CellPort/styles.esm.js +13 -0
  26. package/dist/components/Cell/CellPort/styles.esm.js.map +1 -0
  27. package/dist/components/Cell/EmptyNode/EmptyFactory.esm.js +20 -0
  28. package/dist/components/Cell/EmptyNode/EmptyFactory.esm.js.map +1 -0
  29. package/dist/components/Cell/EmptyNode/EmptyModel.esm.js +25 -0
  30. package/dist/components/Cell/EmptyNode/EmptyModel.esm.js.map +1 -0
  31. package/dist/components/Cell/EmptyNode/EmptyWidget.esm.js +52 -0
  32. package/dist/components/Cell/EmptyNode/EmptyWidget.esm.js.map +1 -0
  33. package/dist/components/Cell/EmptyNode/styles.esm.js +12 -0
  34. package/dist/components/Cell/EmptyNode/styles.esm.js.map +1 -0
  35. package/dist/components/Cell/cell-util.esm.js +110 -0
  36. package/dist/components/Cell/cell-util.esm.js.map +1 -0
  37. package/dist/components/Component/ComponentLink/ComponentLinkFactory.esm.js +19 -0
  38. package/dist/components/Component/ComponentLink/ComponentLinkFactory.esm.js.map +1 -0
  39. package/dist/components/Component/ComponentLink/ComponentLinkModel.esm.js +20 -0
  40. package/dist/components/Component/ComponentLink/ComponentLinkModel.esm.js.map +1 -0
  41. package/dist/components/Component/ComponentLink/ComponentLinkWidget.esm.js +205 -0
  42. package/dist/components/Component/ComponentLink/ComponentLinkWidget.esm.js.map +1 -0
  43. package/dist/components/Component/ComponentNode/ComponentFactory.esm.js +20 -0
  44. package/dist/components/Component/ComponentNode/ComponentFactory.esm.js.map +1 -0
  45. package/dist/components/Component/ComponentNode/ComponentHead/ComponentHead.esm.js +97 -0
  46. package/dist/components/Component/ComponentNode/ComponentHead/ComponentHead.esm.js.map +1 -0
  47. package/dist/components/Component/ComponentNode/ComponentModel.esm.js +26 -0
  48. package/dist/components/Component/ComponentNode/ComponentModel.esm.js.map +1 -0
  49. package/dist/components/Component/ComponentNode/ComponentWidget.esm.js +158 -0
  50. package/dist/components/Component/ComponentNode/ComponentWidget.esm.js.map +1 -0
  51. package/dist/components/Component/ComponentNode/styles.esm.js +102 -0
  52. package/dist/components/Component/ComponentNode/styles.esm.js.map +1 -0
  53. package/dist/components/Component/ComponentPort/ComponentPortFactory.esm.js +17 -0
  54. package/dist/components/Component/ComponentPort/ComponentPortFactory.esm.js.map +1 -0
  55. package/dist/components/Component/ComponentPort/ComponentPortModel.esm.js +18 -0
  56. package/dist/components/Component/ComponentPort/ComponentPortModel.esm.js.map +1 -0
  57. package/dist/components/Component/ComponentPort/ComponentPortWidget.esm.js +24 -0
  58. package/dist/components/Component/ComponentPort/ComponentPortWidget.esm.js.map +1 -0
  59. package/dist/components/Component/ComponentPort/styles.esm.js +16 -0
  60. package/dist/components/Component/ComponentPort/styles.esm.js.map +1 -0
  61. package/dist/components/Component/component-node-util.esm.js +15 -0
  62. package/dist/components/Component/component-node-util.esm.js.map +1 -0
  63. package/dist/components/Connection/ConnectionNode/ConnectionFactory.esm.js +20 -0
  64. package/dist/components/Connection/ConnectionNode/ConnectionFactory.esm.js.map +1 -0
  65. package/dist/components/Connection/ConnectionNode/ConnectionHead/ConnectionHead.esm.js +68 -0
  66. package/dist/components/Connection/ConnectionNode/ConnectionHead/ConnectionHead.esm.js.map +1 -0
  67. package/dist/components/Connection/ConnectionNode/ConnectionModel.esm.js +29 -0
  68. package/dist/components/Connection/ConnectionNode/ConnectionModel.esm.js.map +1 -0
  69. package/dist/components/Connection/ConnectionNode/ConnectionWidget.esm.js +51 -0
  70. package/dist/components/Connection/ConnectionNode/ConnectionWidget.esm.js.map +1 -0
  71. package/dist/components/Connection/ConnectionNode/styles.esm.js +64 -0
  72. package/dist/components/Connection/ConnectionNode/styles.esm.js.map +1 -0
  73. package/dist/components/Connection/ConnectionPort/ConnectionPortFactory.esm.js +17 -0
  74. package/dist/components/Connection/ConnectionPort/ConnectionPortFactory.esm.js.map +1 -0
  75. package/dist/components/Connection/ConnectionPort/ConnectionPortModel.esm.js +18 -0
  76. package/dist/components/Connection/ConnectionPort/ConnectionPortModel.esm.js.map +1 -0
  77. package/dist/components/Connection/ConnectionPort/ConnectionPortWidget.esm.js +24 -0
  78. package/dist/components/Connection/ConnectionPort/ConnectionPortWidget.esm.js.map +1 -0
  79. package/dist/components/Connection/ConnectionPort/styles.esm.js +13 -0
  80. package/dist/components/Connection/ConnectionPort/styles.esm.js.map +1 -0
  81. package/dist/components/Connection/connection-node-util.esm.js +12 -0
  82. package/dist/components/Connection/connection-node-util.esm.js.map +1 -0
  83. package/dist/components/Controls/ControlButtons/ControlButton.esm.js +54 -0
  84. package/dist/components/Controls/ControlButtons/ControlButton.esm.js.map +1 -0
  85. package/dist/components/Controls/ControlButtons/style.esm.js +19 -0
  86. package/dist/components/Controls/ControlButtons/style.esm.js.map +1 -0
  87. package/dist/components/Controls/DiagramControls.esm.js +88 -0
  88. package/dist/components/Controls/DiagramControls.esm.js.map +1 -0
  89. package/dist/components/Controls/DiagramLayers.esm.js +166 -0
  90. package/dist/components/Controls/DiagramLayers.esm.js.map +1 -0
  91. package/dist/components/Controls/DiagramLegend.esm.js +242 -0
  92. package/dist/components/Controls/DiagramLegend.esm.js.map +1 -0
  93. package/dist/components/Controls/LayerButton.esm.js +96 -0
  94. package/dist/components/Controls/LayerButton.esm.js.map +1 -0
  95. package/dist/components/DiagramContext/DiagramContext.esm.js +47 -0
  96. package/dist/components/DiagramContext/DiagramContext.esm.js.map +1 -0
  97. package/dist/components/External/ExternalLink/ExternalLinkFactory.esm.js +19 -0
  98. package/dist/components/External/ExternalLink/ExternalLinkFactory.esm.js.map +1 -0
  99. package/dist/components/External/ExternalLink/ExternalLinkModel.esm.js +112 -0
  100. package/dist/components/External/ExternalLink/ExternalLinkModel.esm.js.map +1 -0
  101. package/dist/components/External/ExternalLink/ExternalLinkWidget.esm.js +68 -0
  102. package/dist/components/External/ExternalLink/ExternalLinkWidget.esm.js.map +1 -0
  103. package/dist/components/External/ExternalNode/ExternalFactory.esm.js +20 -0
  104. package/dist/components/External/ExternalNode/ExternalFactory.esm.js.map +1 -0
  105. package/dist/components/External/ExternalNode/ExternalModel.esm.js +20 -0
  106. package/dist/components/External/ExternalNode/ExternalModel.esm.js.map +1 -0
  107. package/dist/components/External/ExternalNode/ExternalWidget.esm.js +40 -0
  108. package/dist/components/External/ExternalNode/ExternalWidget.esm.js.map +1 -0
  109. package/dist/components/External/ExternalNode/styles.esm.js +9 -0
  110. package/dist/components/External/ExternalNode/styles.esm.js.map +1 -0
  111. package/dist/components/External/external-node-util.esm.js +12 -0
  112. package/dist/components/External/external-node-util.esm.js.map +1 -0
  113. package/dist/components/Header/Header.esm.js +17 -0
  114. package/dist/components/Header/Header.esm.js.map +1 -0
  115. package/dist/components/MoreVertMenu/MoreVertMenu.esm.js +81 -0
  116. package/dist/components/MoreVertMenu/MoreVertMenu.esm.js.map +1 -0
  117. package/dist/components/ObservationLabel/ObservationLabel.esm.js +102 -0
  118. package/dist/components/ObservationLabel/ObservationLabel.esm.js.map +1 -0
  119. package/dist/components/OverlayLoader/OverlayLayerFactory.esm.js +19 -0
  120. package/dist/components/OverlayLoader/OverlayLayerFactory.esm.js.map +1 -0
  121. package/dist/components/OverlayLoader/OverlayLayerModel.esm.js +15 -0
  122. package/dist/components/OverlayLoader/OverlayLayerModel.esm.js.map +1 -0
  123. package/dist/components/OverlayLoader/OverlayLayerWidget.esm.js +28 -0
  124. package/dist/components/OverlayLoader/OverlayLayerWidget.esm.js.map +1 -0
  125. package/dist/components/Project/AdvancedLink/AdvancedLinkFactory.esm.js +69 -0
  126. package/dist/components/Project/AdvancedLink/AdvancedLinkFactory.esm.js.map +1 -0
  127. package/dist/components/Project/AdvancedLink/AdvancedLinkModel.esm.js +162 -0
  128. package/dist/components/Project/AdvancedLink/AdvancedLinkModel.esm.js.map +1 -0
  129. package/dist/components/Project/AdvancedLink/AdvancedLinkPointWidget.esm.js +45 -0
  130. package/dist/components/Project/AdvancedLink/AdvancedLinkPointWidget.esm.js.map +1 -0
  131. package/dist/components/Project/AdvancedLink/AdvancedLinkSegmentWidget.esm.js +46 -0
  132. package/dist/components/Project/AdvancedLink/AdvancedLinkSegmentWidget.esm.js.map +1 -0
  133. package/dist/components/Project/AdvancedLink/AdvancedLinkWidget.esm.js +149 -0
  134. package/dist/components/Project/AdvancedLink/AdvancedLinkWidget.esm.js.map +1 -0
  135. package/dist/components/Project/ProjectLink/ProjectLinkFactory.esm.js +20 -0
  136. package/dist/components/Project/ProjectLink/ProjectLinkFactory.esm.js.map +1 -0
  137. package/dist/components/Project/ProjectLink/ProjectLinkModel.esm.js +20 -0
  138. package/dist/components/Project/ProjectLink/ProjectLinkModel.esm.js.map +1 -0
  139. package/dist/components/Project/ProjectLink/ProjectLinkWidget.esm.js +94 -0
  140. package/dist/components/Project/ProjectLink/ProjectLinkWidget.esm.js.map +1 -0
  141. package/dist/components/Project/ProjectNode/ProjectFactory.esm.js +20 -0
  142. package/dist/components/Project/ProjectNode/ProjectFactory.esm.js.map +1 -0
  143. package/dist/components/Project/ProjectNode/ProjectHeadWidget/ProjectHeadWidget.esm.js +68 -0
  144. package/dist/components/Project/ProjectNode/ProjectHeadWidget/ProjectHeadWidget.esm.js.map +1 -0
  145. package/dist/components/Project/ProjectNode/ProjectModel.esm.js +56 -0
  146. package/dist/components/Project/ProjectNode/ProjectModel.esm.js.map +1 -0
  147. package/dist/components/Project/ProjectNode/ProjectWidget.esm.js +111 -0
  148. package/dist/components/Project/ProjectNode/ProjectWidget.esm.js.map +1 -0
  149. package/dist/components/Project/ProjectNode/styles.esm.js +66 -0
  150. package/dist/components/Project/ProjectNode/styles.esm.js.map +1 -0
  151. package/dist/components/Project/ProjectPort/ProjectPortFactory.esm.js +17 -0
  152. package/dist/components/Project/ProjectPort/ProjectPortFactory.esm.js.map +1 -0
  153. package/dist/components/Project/ProjectPort/ProjectPortModel.esm.js +18 -0
  154. package/dist/components/Project/ProjectPort/ProjectPortModel.esm.js.map +1 -0
  155. package/dist/components/Project/ProjectPort/ProjectPortWidget.esm.js +26 -0
  156. package/dist/components/Project/ProjectPort/ProjectPortWidget.esm.js.map +1 -0
  157. package/dist/components/Project/ProjectPort/styles.esm.js +38 -0
  158. package/dist/components/Project/ProjectPort/styles.esm.js.map +1 -0
  159. package/dist/components/PromptScreen/PromptScreen.esm.js +30 -0
  160. package/dist/components/PromptScreen/PromptScreen.esm.js.map +1 -0
  161. package/dist/components/SharedLink/SharedLink.esm.js +175 -0
  162. package/dist/components/SharedLink/SharedLink.esm.js.map +1 -0
  163. package/dist/components/SharedNode/SharedNode.esm.js +44 -0
  164. package/dist/components/SharedNode/SharedNode.esm.js.map +1 -0
  165. package/dist/components/TooltipLabel/TooltipLabel.esm.js +22 -0
  166. package/dist/components/TooltipLabel/TooltipLabel.esm.js.map +1 -0
  167. package/dist/diagrams/OrgDiagram.esm.js +176 -0
  168. package/dist/diagrams/OrgDiagram.esm.js.map +1 -0
  169. package/dist/diagrams/ProjectDiagram.esm.js +251 -0
  170. package/dist/diagrams/ProjectDiagram.esm.js.map +1 -0
  171. package/dist/hooks/useActiveLayers.esm.js +27 -0
  172. package/dist/hooks/useActiveLayers.esm.js.map +1 -0
  173. package/dist/index.d.ts +407 -0
  174. package/dist/index.esm.js +4 -0
  175. package/dist/index.esm.js.map +1 -0
  176. package/dist/renderDiagram.esm.js +11 -0
  177. package/dist/renderDiagram.esm.js.map +1 -0
  178. package/dist/resources/Dagre/DagreEngine.esm.js +178 -0
  179. package/dist/resources/Dagre/DagreEngine.esm.js.map +1 -0
  180. package/dist/resources/assets/font/Gilmer-Bold.ttf +0 -0
  181. package/dist/resources/assets/font/Gilmer-Bold.woff +0 -0
  182. package/dist/resources/assets/font/Gilmer-Bold.woff2 +0 -0
  183. package/dist/resources/assets/font/Gilmer-Medium.ttf +0 -0
  184. package/dist/resources/assets/font/Gilmer-Medium.woff +0 -0
  185. package/dist/resources/assets/font/Gilmer-Medium.woff2 +0 -0
  186. package/dist/resources/assets/font/Gilmer-Regular.ttf +0 -0
  187. package/dist/resources/assets/font/Gilmer-Regular.woff +0 -0
  188. package/dist/resources/assets/font/Gilmer-Regular.woff2 +0 -0
  189. package/dist/resources/assets/font/fonts.esm.js +57 -0
  190. package/dist/resources/assets/font/fonts.esm.js.map +1 -0
  191. package/dist/resources/assets/icons/AddCheckIcon.esm.js +22 -0
  192. package/dist/resources/assets/icons/AddCheckIcon.esm.js.map +1 -0
  193. package/dist/resources/assets/icons/AddIcon.esm.js +16 -0
  194. package/dist/resources/assets/icons/AddIcon.esm.js.map +1 -0
  195. package/dist/resources/assets/icons/CodeIcon.esm.js +26 -0
  196. package/dist/resources/assets/icons/CodeIcon.esm.js.map +1 -0
  197. package/dist/resources/assets/icons/ConnectionIcon.esm.js +22 -0
  198. package/dist/resources/assets/icons/ConnectionIcon.esm.js.map +1 -0
  199. package/dist/resources/assets/icons/DatabaseIcon.esm.js +23 -0
  200. package/dist/resources/assets/icons/DatabaseIcon.esm.js.map +1 -0
  201. package/dist/resources/assets/icons/DebugIcon.esm.js +25 -0
  202. package/dist/resources/assets/icons/DebugIcon.esm.js.map +1 -0
  203. package/dist/resources/assets/icons/DiagramIcon.esm.js +22 -0
  204. package/dist/resources/assets/icons/DiagramIcon.esm.js.map +1 -0
  205. package/dist/resources/assets/icons/DiffIcon.esm.js +22 -0
  206. package/dist/resources/assets/icons/DiffIcon.esm.js.map +1 -0
  207. package/dist/resources/assets/icons/EventIcon.esm.js +22 -0
  208. package/dist/resources/assets/icons/EventIcon.esm.js.map +1 -0
  209. package/dist/resources/assets/icons/ExternalConsumerIcon.esm.js +36 -0
  210. package/dist/resources/assets/icons/ExternalConsumerIcon.esm.js.map +1 -0
  211. package/dist/resources/assets/icons/FitScreenIcon.esm.js +22 -0
  212. package/dist/resources/assets/icons/FitScreenIcon.esm.js.map +1 -0
  213. package/dist/resources/assets/icons/FullScreenIcon.esm.js +22 -0
  214. package/dist/resources/assets/icons/FullScreenIcon.esm.js.map +1 -0
  215. package/dist/resources/assets/icons/GatewayIcon.esm.js +22 -0
  216. package/dist/resources/assets/icons/GatewayIcon.esm.js.map +1 -0
  217. package/dist/resources/assets/icons/InfoIcon.esm.js +22 -0
  218. package/dist/resources/assets/icons/InfoIcon.esm.js.map +1 -0
  219. package/dist/resources/assets/icons/LayersIcon.esm.js +28 -0
  220. package/dist/resources/assets/icons/LayersIcon.esm.js.map +1 -0
  221. package/dist/resources/assets/icons/ManualTaskIcon.esm.js +22 -0
  222. package/dist/resources/assets/icons/ManualTaskIcon.esm.js.map +1 -0
  223. package/dist/resources/assets/icons/MoreVertIcon.esm.js +18 -0
  224. package/dist/resources/assets/icons/MoreVertIcon.esm.js.map +1 -0
  225. package/dist/resources/assets/icons/ObservationIcon.esm.js +22 -0
  226. package/dist/resources/assets/icons/ObservationIcon.esm.js.map +1 -0
  227. package/dist/resources/assets/icons/ProxyIcon.esm.js +22 -0
  228. package/dist/resources/assets/icons/ProxyIcon.esm.js.map +1 -0
  229. package/dist/resources/assets/icons/RefreshIcon.esm.js +22 -0
  230. package/dist/resources/assets/icons/RefreshIcon.esm.js.map +1 -0
  231. package/dist/resources/assets/icons/RemoveIcon.esm.js +16 -0
  232. package/dist/resources/assets/icons/RemoveIcon.esm.js.map +1 -0
  233. package/dist/resources/assets/icons/ScheduledTaskIcon.esm.js +22 -0
  234. package/dist/resources/assets/icons/ScheduledTaskIcon.esm.js.map +1 -0
  235. package/dist/resources/assets/icons/ServiceIcon.esm.js +24 -0
  236. package/dist/resources/assets/icons/ServiceIcon.esm.js.map +1 -0
  237. package/dist/resources/assets/icons/SettingsIcon.esm.js +38 -0
  238. package/dist/resources/assets/icons/SettingsIcon.esm.js.map +1 -0
  239. package/dist/resources/assets/icons/WarningIcon.esm.js +32 -0
  240. package/dist/resources/assets/icons/WarningIcon.esm.js.map +1 -0
  241. package/dist/resources/assets/icons/WebAppIcon.esm.js +45 -0
  242. package/dist/resources/assets/icons/WebAppIcon.esm.js.map +1 -0
  243. package/dist/resources/assets/icons/WebhookIcon.esm.js +22 -0
  244. package/dist/resources/assets/icons/WebhookIcon.esm.js.map +1 -0
  245. package/dist/resources/assets/icons/index.esm.js +38 -0
  246. package/dist/resources/assets/icons/index.esm.js.map +1 -0
  247. package/dist/resources/assets/icons/lang/BallerinaIcon.esm.js +24 -0
  248. package/dist/resources/assets/icons/lang/BallerinaIcon.esm.js.map +1 -0
  249. package/dist/resources/assets/icons/lang/DockerIcon.esm.js +24 -0
  250. package/dist/resources/assets/icons/lang/DockerIcon.esm.js.map +1 -0
  251. package/dist/resources/assets/icons/lang/GoIcon.esm.js +24 -0
  252. package/dist/resources/assets/icons/lang/GoIcon.esm.js.map +1 -0
  253. package/dist/resources/assets/icons/lang/JavaIcon.esm.js +54 -0
  254. package/dist/resources/assets/icons/lang/JavaIcon.esm.js.map +1 -0
  255. package/dist/resources/assets/icons/lang/MIIcon.esm.js +75 -0
  256. package/dist/resources/assets/icons/lang/MIIcon.esm.js.map +1 -0
  257. package/dist/resources/assets/icons/lang/NodeJsIcon.esm.js +33 -0
  258. package/dist/resources/assets/icons/lang/NodeJsIcon.esm.js.map +1 -0
  259. package/dist/resources/assets/icons/lang/PhpIcon.esm.js +74 -0
  260. package/dist/resources/assets/icons/lang/PhpIcon.esm.js.map +1 -0
  261. package/dist/resources/assets/icons/lang/PythonIcon.esm.js +67 -0
  262. package/dist/resources/assets/icons/lang/PythonIcon.esm.js.map +1 -0
  263. package/dist/resources/assets/icons/lang/RubyIcon.esm.js +26 -0
  264. package/dist/resources/assets/icons/lang/RubyIcon.esm.js.map +1 -0
  265. package/dist/resources/assets/icons/lang/RustIcon.esm.js +46 -0
  266. package/dist/resources/assets/icons/lang/RustIcon.esm.js.map +1 -0
  267. package/dist/resources/constants.esm.js +44 -0
  268. package/dist/resources/constants.esm.js.map +1 -0
  269. package/dist/theme/CellDiagramThemeProvider.esm.js +37 -0
  270. package/dist/theme/CellDiagramThemeProvider.esm.js.map +1 -0
  271. package/dist/theme/ThemeContext.esm.js +14 -0
  272. package/dist/theme/ThemeContext.esm.js.map +1 -0
  273. package/dist/theme/colors.esm.js +50 -0
  274. package/dist/theme/colors.esm.js.map +1 -0
  275. package/dist/types.esm.js +30 -0
  276. package/dist/types.esm.js.map +1 -0
  277. package/dist/utils/CanvasStyles.esm.js +67 -0
  278. package/dist/utils/CanvasStyles.esm.js.map +1 -0
  279. package/dist/utils/diagramUtils.esm.js +151 -0
  280. package/dist/utils/diagramUtils.esm.js.map +1 -0
  281. package/dist/utils/orgUtils.esm.js +119 -0
  282. package/dist/utils/orgUtils.esm.js.map +1 -0
  283. package/dist/utils/projectUtils.esm.js +969 -0
  284. package/dist/utils/projectUtils.esm.js.map +1 -0
  285. package/package.json +86 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectUtils.esm.js","sources":["../../src/utils/projectUtils.ts"],"sourcesContent":["import {\n DiagramModel,\n NodeModel,\n NodeModelGenerics,\n PortModelAlignment,\n} from '@projectstorm/react-diagrams';\nimport { BaseModel, BaseModelGenerics } from '@projectstorm/react-canvas-core';\nimport {\n ComponentLinkModel,\n ComponentModel,\n ComponentPortModel,\n CellLinkModel,\n CellPortModel,\n ExternalLinkModel,\n ExternalModel,\n EmptyModel,\n ConnectionModel,\n ConnectionPortModel,\n} from '../components';\nimport {\n CommonModel,\n Connection,\n ConnectionMetadata,\n ConnectionType,\n ConnectorMetadata,\n ProjectDiagramData,\n Project,\n ComponentMetadata,\n Observations,\n Gateways,\n ObservationSummary,\n ComponentType,\n} from '../types';\nimport { CellBounds } from '../components/Cell/CellNode/CellModel';\nimport {\n getNodePortId,\n getCellPortMetadata,\n getCellLinkName,\n} from '../components/Cell/cell-util';\nimport {\n BORDER_GAP,\n BORDER_NODE,\n CIRCLE_WIDTH,\n COMPONENT_NODE,\n CONNECTION_NODE,\n DIAGRAM_END,\n DOT_WIDTH,\n LINE_MIN_WIDTH,\n MAIN_CELL,\n MAIN_CELL_DEFAULT_HEIGHT,\n} from '../resources';\nimport { Orientation } from '../components/Connection/ConnectionNode/ConnectionModel';\nimport {\n getComponentNameById,\n getComponentName,\n getComponentLinkName,\n} from '../components/Component/component-node-util';\nimport { getConnectionNameById } from '../components/Connection/connection-node-util';\nimport { getEmptyNodeName } from '../components/Cell/cell-util';\nimport {\n getExternalLinkName,\n getExternalNodeName,\n} from '../components/External/external-node-util';\nimport { DagreEngine } from '../resources/Dagre/DagreEngine';\n\n// Project diagram engine utils\nexport function getDiagramDataFromProject(\n project: Project,\n): ProjectDiagramData {\n const componentNodes: Map<string, CommonModel> =\n generateComponentNodes(project);\n const connectorNodes: Map<string, ConnectionModel> =\n generateConnectorNodes(project);\n const connectionNodes: Map<string, ConnectionModel> =\n generateConnectionNodes(project);\n const externalNodes: Map<string, ExternalModel> = generateExternalNodes();\n const emptyNodes: Map<string, EmptyModel> = generateEmptyNodes(project.name, [\n ...connectionNodes.values(),\n ...connectorNodes.values(),\n ]);\n const gateways = getCellGateways(project);\n const observationSummary = getObservationSummary(project);\n\n const componentLinks: Map<string, ComponentLinkModel> =\n generateComponentLinks(project, componentNodes);\n const cellLinks: Map<string, ComponentLinkModel> = generateCellLinks(\n project,\n emptyNodes,\n componentNodes,\n );\n const connectorLinks: Map<string, ExternalLinkModel> = generateConnectorLinks(\n emptyNodes,\n connectorNodes,\n );\n const connectionLinks: Map<string, ExternalLinkModel> =\n generateConnectionLinks(emptyNodes, connectionNodes);\n const externalLinks: Map<string, ExternalLinkModel> = generateExternalLinks(\n emptyNodes,\n externalNodes,\n gateways,\n );\n const externalConnectionLinks: Map<string, ExternalLinkModel> =\n generateExternalConnectionLinks(project, componentNodes, connectionNodes);\n\n return {\n nodes: {\n componentNodes,\n connectionNodes,\n connectorNodes,\n externalNodes,\n emptyNodes,\n },\n links: {\n componentLinks,\n cellLinks,\n connectorLinks,\n connectionLinks,\n externalLinks,\n externalConnectionLinks,\n },\n gateways,\n observationSummary,\n };\n}\n\n// Cell utils\n\nexport function getComponentDiagramWidth(models: ProjectDiagramData): number {\n const tempModel = new DiagramModel();\n tempModel.addAll(\n ...models.nodes.componentNodes.values(),\n ...models.links.componentLinks.values(),\n ...models.nodes.emptyNodes.values(),\n ...models.links.cellLinks.values(),\n );\n // auto distribute component nodes, component links, empty nodes and cell links\n const dagreEngine = new DagreEngine({\n graph: {\n rankdir: 'LR',\n ranksep: 200,\n edgesep: 100,\n nodesep: 150,\n ranker: 'tight-tree',\n },\n });\n dagreEngine.redistribute(tempModel);\n // calculate component diagram width\n return calculateCellWidth(tempModel);\n}\n\nexport function getComponentDiagramBoundaries(model: DiagramModel) {\n let minX = DIAGRAM_END;\n let minY = DIAGRAM_END;\n let maxX = 0;\n let maxY = 0;\n model.getNodes().forEach(node => {\n if (!isRenderInsideCell(node)) {\n return;\n }\n const nodePosition = node.getPosition().clone();\n minX = Math.min(minX, nodePosition.x);\n minY = Math.min(minY, nodePosition.y);\n maxX = Math.max(maxX, nodePosition.x + node.width);\n maxY = Math.max(maxY, nodePosition.y + node.height);\n });\n return { maxX, minX, maxY, minY };\n}\n\nexport function calculateCellWidth(model: DiagramModel) {\n const { maxX, minX, maxY, minY } = getComponentDiagramBoundaries(model);\n const layoutWidth = Math.max(\n maxX - minX,\n maxY - minY,\n MAIN_CELL_DEFAULT_HEIGHT,\n );\n const cellWidth = (layoutWidth * 3) / 2;\n return cellWidth;\n}\n\n// Node distribution utils\n\nexport function manualDistribute(model: DiagramModel): DiagramModel {\n // get component diagram boundaries and calculate center\n const { maxX, minX, maxY, minY } = getComponentDiagramBoundaries(model);\n const layoutCenterX = (maxX + minX) / 2;\n const layoutCenterY = (maxY + minY) / 2;\n const cellNode = model.getNode(MAIN_CELL);\n if (!cellNode) {\n return model;\n }\n const cellWidth = cellNode.width;\n // center cell node\n const cellNodePosition = cellNode.getPosition().clone();\n cellNodePosition.x = layoutCenterX - cellWidth / 2;\n cellNodePosition.y = layoutCenterY - cellWidth / 2;\n cellNode.setPosition(cellNodePosition);\n // update empty node and connection node positions\n updateBoundNodePositions(cellNode, model);\n\n return model;\n}\n\nexport function updateBoundNodePositions(\n cellNode: NodeModel<NodeModelGenerics>,\n model: DiagramModel,\n) {\n const externalLinkOffset = Math.max(100, cellNode.width / 10);\n let nextConnectorNodeOffset = externalLinkOffset;\n\n let externalConsumerOffset = 0;\n // Position external consumer components\n model.getNodes().forEach(node => {\n if (node instanceof ComponentModel && node.isExternalConsumer()) {\n const cellPosition = cellNode.getPosition();\n node.setPosition(\n cellPosition.x - 200 - externalConsumerOffset,\n cellPosition.y - 200,\n );\n externalConsumerOffset += node.width + 50; // Add some spacing between external consumers\n }\n });\n\n for (const key in cellNode.getPorts()) {\n if (Object.prototype.hasOwnProperty.call(cellNode.getPorts(), key)) {\n const port = cellNode.getPorts()[key];\n const { bound, align, args } = getCellPortMetadata(port.getID());\n if (!bound || !align) {\n return;\n }\n const connectionId = args?.length > 0 ? args[0] : undefined;\n // change south bound positions\n if (\n bound === CellBounds.SouthBound &&\n align === PortModelAlignment.BOTTOM\n ) {\n const portPosition = port.getPosition().clone();\n // change connection link positions\n const connectionNode = model.getNode(\n getConnectionNameById(connectionId as string),\n );\n const defaultNodeWidth = CIRCLE_WIDTH + 24; // padding + circle border width\n if (connectionNode) {\n portPosition.x = portPosition.x - connectionNode.width / 2;\n portPosition.y = portPosition.y + nextConnectorNodeOffset;\n connectionNode.setPosition(portPosition);\n // if connection node width is greater than cell node width, next connection node should be placed below the previous one\n if (\n nextConnectorNodeOffset === externalLinkOffset &&\n connectionNode.width > defaultNodeWidth\n ) {\n nextConnectorNodeOffset =\n externalLinkOffset + connectionNode.height;\n } else {\n nextConnectorNodeOffset = externalLinkOffset;\n }\n }\n }\n if (\n connectionId &&\n bound === CellBounds.SouthBound &&\n align === PortModelAlignment.TOP\n ) {\n const portPosition = port.getPosition().clone();\n // change south bound empty node position\n model\n .getNode(getEmptyNodeName(CellBounds.SouthBound, connectionId))\n .setPosition(portPosition);\n }\n // change east bound positions\n if (\n connectionId &&\n bound === CellBounds.EastBound &&\n align === PortModelAlignment.RIGHT\n ) {\n const portPosition = port.getPosition().clone();\n // change east bound external link position\n const connectionNode = model.getNode(\n getConnectionNameById(connectionId),\n );\n if (connectionNode) {\n portPosition.x = portPosition.x + externalLinkOffset;\n portPosition.y = portPosition.y - connectionNode.height / 2 + 7.5;\n connectionNode.setPosition(portPosition);\n }\n }\n if (\n connectionId &&\n bound === CellBounds.EastBound &&\n align === PortModelAlignment.LEFT\n ) {\n const portPosition = port.getPosition().clone();\n // change east bound empty node position\n model\n .getNode(getEmptyNodeName(CellBounds.EastBound, connectionId))\n .setPosition(portPosition);\n }\n // change west bound external link position\n if (bound === CellBounds.WestBound && align === PortModelAlignment.LEFT) {\n // change west bound empty node position\n const nodePosition = port.getPosition().clone();\n nodePosition.x = nodePosition.x - LINE_MIN_WIDTH * 2;\n model\n .getNode(getEmptyNodeName(CellBounds.WestBound))\n .setPosition(nodePosition);\n // change west bound external link position\n const portPosition = port.getPosition().clone();\n portPosition.x = portPosition.x - externalLinkOffset;\n model.getNode(getExternalNodeName(bound))?.setPosition(portPosition);\n }\n // change north bound positions\n if (bound === CellBounds.NorthBound && align === PortModelAlignment.TOP) {\n // change north bound empty node position\n const nodePosition = port.getPosition().clone();\n nodePosition.y = nodePosition.y - LINE_MIN_WIDTH * 2;\n model\n .getNode(getEmptyNodeName(CellBounds.NorthBound))\n .setPosition(nodePosition);\n // change north bound external link position\n const portPosition = port.getPosition().clone();\n portPosition.y = portPosition.y - externalLinkOffset;\n model.getNode(getExternalNodeName(bound))?.setPosition(portPosition);\n }\n }\n }\n // arrange border nodes\n // change north bound border empty node position\n const cellPositionNorth = cellNode.getPosition().clone();\n cellPositionNorth.y =\n cellPositionNorth.y - (externalLinkOffset + CIRCLE_WIDTH / 2) - BORDER_GAP;\n model\n .getNode(getEmptyNodeName(CellBounds.NorthBound, BORDER_NODE))\n ?.setPosition(cellPositionNorth.clone());\n // change south bound border empty node position\n const cellPositionSouth = cellNode.getPosition().clone();\n cellPositionSouth.y =\n cellPositionSouth.y + (cellNode.width - CIRCLE_WIDTH) + BORDER_GAP;\n model\n .getNode(getEmptyNodeName(CellBounds.SouthBound, BORDER_NODE))\n ?.setPosition(cellPositionSouth.clone());\n}\n\nexport function isRenderInsideCell(\n node: BaseModel<BaseModelGenerics>,\n): boolean {\n return (\n (node.getType() === COMPONENT_NODE &&\n !(node as ComponentModel).isExternalConsumer()) ||\n (node.getType() === CONNECTION_NODE &&\n isConnectorConnection((node as ConnectionModel).connection) &&\n !!(node as ConnectionModel).connection.onPlatform)\n );\n}\n\n// Node generation utils\n\nfunction generateComponentNodes(project: Project): Map<string, CommonModel> {\n const nodes: Map<string, CommonModel> = new Map<string, ComponentModel>();\n project.components?.forEach((component, _key) => {\n const componentNode = new ComponentModel(component);\n nodes.set(componentNode.getID(), componentNode);\n component.connections?.forEach(connection => {\n // add platform connections\n if (isConnectorConnection(connection) && connection.onPlatform) {\n const connectionNode = new ConnectionModel(connection);\n nodes.set(connectionNode.getID(), connectionNode);\n }\n });\n });\n project.configurations?.forEach((connection, _key) => {\n if (isConnectorConnection(connection) && connection.onPlatform) {\n const connectionNode = new ConnectionModel(connection);\n nodes.set(connectionNode.getID(), connectionNode);\n }\n });\n\n return nodes;\n}\n\nfunction generateConnectionNodes(\n project: Project,\n): Map<string, ConnectionModel> {\n const nodes: Map<string, ConnectionModel> = new Map<\n string,\n ConnectionModel\n >();\n project.components?.forEach((component, _key) => {\n component.connections?.forEach(connection => {\n if (isExternalConnection(project.id, connection, true)) {\n // Skip platform check for org level connections\n const connectionNode = new ConnectionModel(\n connection,\n Orientation.HORIZONTAL,\n );\n nodes.set(connectionNode.getID(), connectionNode);\n }\n });\n });\n\n return nodes;\n}\n\nfunction generateConnectorNodes(\n project: Project,\n): Map<string, ConnectionModel> {\n const nodes: Map<string, ConnectionModel> = new Map<\n string,\n ConnectionModel\n >();\n project.components?.forEach((component, _key) => {\n component.connections?.forEach(connection => {\n if (isConnectorConnection(connection) && !connection.onPlatform) {\n const connectionNode = new ConnectionModel(connection);\n nodes.set(connectionNode.getID(), connectionNode);\n }\n });\n });\n project.configurations?.forEach((connection, _key) => {\n if (isConnectorConnection(connection) && !connection.onPlatform) {\n const connectionNode = new ConnectionModel(connection);\n nodes.set(connectionNode.getID(), connectionNode);\n }\n });\n\n return nodes;\n}\n\nfunction generateExternalNodes(): Map<string, ExternalModel> {\n const nodes: Map<string, ExternalModel> = new Map<string, ExternalModel>();\n\n const northBoundExternalNode = new ExternalModel(CellBounds.NorthBound);\n nodes.set(northBoundExternalNode.getID(), northBoundExternalNode);\n\n const westBoundExternalNode = new ExternalModel(CellBounds.WestBound);\n nodes.set(westBoundExternalNode.getID(), westBoundExternalNode);\n\n return nodes;\n}\n\nfunction generateEmptyNodes(\n projectId: string,\n connectionNodes: ConnectionModel[],\n): Map<string, EmptyModel> {\n const nodes: Map<string, EmptyModel> = new Map<string, EmptyModel>();\n\n const northBoundEmptyNode = new EmptyModel(\n CellBounds.NorthBound,\n CIRCLE_WIDTH + LINE_MIN_WIDTH * 4,\n );\n northBoundEmptyNode.setPosition(0, DIAGRAM_END * -1);\n nodes.set(northBoundEmptyNode.getID(), northBoundEmptyNode);\n\n const westBoundEmptyNode = new EmptyModel(\n CellBounds.WestBound,\n CIRCLE_WIDTH + LINE_MIN_WIDTH * 4,\n );\n westBoundEmptyNode.setPosition(DIAGRAM_END * -1, 0);\n nodes.set(westBoundEmptyNode.getID(), westBoundEmptyNode);\n\n let count = 0;\n connectionNodes.forEach((connectionNode, _key) => {\n if (isConnectorConnection(connectionNode.connection)) {\n const connectionEmptyNode = new EmptyModel(\n CellBounds.SouthBound,\n DOT_WIDTH,\n connectionNode.connection.id,\n );\n connectionEmptyNode.setPosition(count++ * 30, DIAGRAM_END);\n nodes.set(connectionEmptyNode.getID(), connectionEmptyNode);\n } else if (\n isExternalConnection(projectId, connectionNode.connection, true)\n ) {\n const connectionEmptyNode = new EmptyModel(\n CellBounds.EastBound,\n DOT_WIDTH,\n connectionNode.connection.id,\n );\n connectionEmptyNode.setPosition(DIAGRAM_END, count++ * 30);\n nodes.set(connectionEmptyNode.getID(), connectionEmptyNode);\n }\n });\n\n // add border empty nodes\n const northBoundBorderEmptyNode = new EmptyModel(\n CellBounds.NorthBound,\n CIRCLE_WIDTH,\n BORDER_NODE,\n );\n nodes.set(northBoundBorderEmptyNode.getID(), northBoundBorderEmptyNode);\n\n const southBoundBorderEmptyNode = new EmptyModel(\n CellBounds.SouthBound,\n CIRCLE_WIDTH,\n BORDER_NODE,\n );\n nodes.set(southBoundBorderEmptyNode.getID(), southBoundBorderEmptyNode);\n\n return nodes;\n}\n\nfunction getCellGateways(project: Project): Gateways {\n const gateways = {\n internet: false,\n intranet: false,\n };\n\n project.components?.forEach((component, _key) => {\n for (const serviceId in component.services) {\n if (Object.prototype.hasOwnProperty.call(component.services, serviceId)) {\n const service = component.services[serviceId];\n // add platform connections\n if (service.deploymentMetadata?.gateways.internet.isExposed) {\n gateways.internet = true;\n }\n if (service.deploymentMetadata?.gateways.intranet.isExposed) {\n gateways.intranet = true;\n }\n }\n }\n });\n\n return gateways;\n}\n\nfunction getObservationSummary(project: Project): ObservationSummary {\n let maxRequestCount = 0;\n let minRequestCount = Infinity;\n\n const calculateRequestCount = (observations: Observations[] | undefined) => {\n if (observations && observations.length > 0) {\n const requestCount = observations.reduce(\n (acc, obs) => acc + obs.requestCount,\n 0,\n );\n if (requestCount > maxRequestCount) {\n maxRequestCount = requestCount;\n }\n if (requestCount < minRequestCount) {\n minRequestCount = requestCount;\n }\n }\n };\n\n project.components?.forEach((component, _key) => {\n for (const serviceId in component.services) {\n if (Object.prototype.hasOwnProperty.call(component.services, serviceId)) {\n const service = component.services[serviceId];\n calculateRequestCount(\n service.deploymentMetadata?.gateways.internet.observations,\n );\n calculateRequestCount(\n service.deploymentMetadata?.gateways.intranet.observations,\n );\n }\n }\n if (component.connections.length > 0) {\n component.connections.forEach(connection => {\n calculateRequestCount(connection.observations);\n });\n }\n });\n // Set min request count to 0 since all requests are not captured in Observations\n return { requestCount: { max: maxRequestCount, min: 0 } };\n}\n\n// Links generation utils\n\nfunction generateComponentLinks(\n project: Project,\n nodes: Map<string, CommonModel>,\n): Map<string, ComponentLinkModel> {\n const links: Map<string, ComponentLinkModel> = new Map();\n\n project.components?.forEach((component, _key) => {\n // skip generating component links for external consumer components\n if (component.type === ComponentType.EXTERNAL_CONSUMER) {\n return;\n }\n const componentId = getComponentName(component);\n const callingComponent: ComponentModel | undefined = nodes.get(\n componentId,\n ) as ComponentModel;\n\n component.connections.forEach(connection => {\n const connectionMetadata = getConnectionMetadata(connection);\n if (\n connectionMetadata &&\n !isConnectorConnection(connection) &&\n isInternalComponent(project.id, connection)\n ) {\n const associatedComponent = nodes.get(\n getComponentNameById(\n (connectionMetadata as ComponentMetadata).component,\n ),\n ) as ComponentModel;\n if (callingComponent && associatedComponent) {\n const sourcePort: ComponentPortModel | null =\n callingComponent.getPort(`right-${callingComponent.getID()}`);\n const targetPort: ComponentPortModel | null =\n associatedComponent.getPort(`left-${associatedComponent.getID()}`);\n\n if (sourcePort && targetPort) {\n const linkId = getComponentLinkName(\n sourcePort.getID(),\n targetPort.getID(),\n );\n const link: ComponentLinkModel = new ComponentLinkModel(linkId);\n links.set(\n linkId,\n createLinks(sourcePort, targetPort, link) as ComponentLinkModel,\n );\n link.setSourceNode(callingComponent.getID());\n link.setTargetNode(associatedComponent.getID());\n if (connection.observations && connection.observations.length > 0) {\n link.setObservations(\n connection.observations,\n connection.observationOnly,\n );\n }\n if (connection.tooltip) {\n link.setTooltip(connection.tooltip);\n }\n }\n }\n }\n if (isConnectorConnection(connection) && connection.onPlatform) {\n const associatedComponent = nodes.get(\n getConnectionNameById(connection.id),\n ) as ConnectionModel;\n if (callingComponent && associatedComponent) {\n const sourcePort: ComponentPortModel | null =\n callingComponent.getPort(`bottom-${callingComponent.getID()}`);\n const targetPort: ConnectionPortModel | null =\n associatedComponent.getPort(`top-${associatedComponent.getID()}`);\n\n if (sourcePort && targetPort) {\n const linkId = getComponentLinkName(\n sourcePort.getID(),\n targetPort.getID(),\n );\n const link: ComponentLinkModel = new ComponentLinkModel(linkId);\n links.set(\n linkId,\n createLinks(sourcePort, targetPort, link) as ComponentLinkModel,\n );\n link.setSourceNode(callingComponent.getID());\n link.setTargetNode(associatedComponent.getID());\n if (connection.observations && connection.observations.length > 0) {\n link.setObservations(\n connection.observations,\n connection.observationOnly,\n );\n }\n if (connection.tooltip) {\n link.setTooltip(connection.tooltip);\n }\n }\n }\n }\n });\n });\n\n return links;\n}\n\nfunction generateConnectorLinks(\n emptyNodes: Map<string, EmptyModel>,\n connectorNodes: Map<string, ConnectionModel>,\n): Map<string, ExternalLinkModel> {\n const links: Map<string, ExternalLinkModel> = new Map();\n\n connectorNodes?.forEach((connectionNode, _key) => {\n const southBoundEmptyNode = emptyNodes.get(\n getEmptyNodeName(CellBounds.SouthBound, connectionNode.connection.id),\n );\n if (!southBoundEmptyNode) {\n return;\n }\n const sourcePort: CellPortModel | null = southBoundEmptyNode.getPort(\n getNodePortId(southBoundEmptyNode.getID(), PortModelAlignment.BOTTOM),\n );\n const targetPort: ConnectionPortModel | null = connectionNode.getPort(\n `top-${connectionNode.getID()}`,\n );\n\n if (sourcePort && targetPort) {\n const linkId = getExternalLinkName(\n sourcePort.getID(),\n targetPort.getID(),\n );\n const link: ExternalLinkModel = new ExternalLinkModel(linkId);\n links.set(\n linkId,\n createLinks(sourcePort, targetPort, link) as ExternalLinkModel,\n );\n link.setSourceNode(southBoundEmptyNode.getID());\n link.setTargetNode(connectionNode.getID());\n }\n });\n\n return links;\n}\n\nfunction generateConnectionLinks(\n emptyNodes: Map<string, EmptyModel>,\n connectionNodes: Map<string, ConnectionModel>,\n): Map<string, ExternalLinkModel> {\n const links: Map<string, ExternalLinkModel> = new Map();\n\n connectionNodes?.forEach((connectionNode, _key) => {\n const eastboundEmptyNode = emptyNodes.get(\n getEmptyNodeName(CellBounds.EastBound, connectionNode.connection.id),\n );\n if (!eastboundEmptyNode) {\n return;\n }\n const sourcePort: CellPortModel | null = eastboundEmptyNode.getPort(\n getNodePortId(eastboundEmptyNode.getID(), PortModelAlignment.RIGHT),\n );\n const targetPort: ConnectionPortModel | null = connectionNode.getPort(\n `left-${connectionNode.getID()}`,\n );\n\n if (sourcePort && targetPort) {\n const linkId = getExternalLinkName(\n sourcePort.getID(),\n targetPort.getID(),\n );\n const link: ExternalLinkModel = new ExternalLinkModel(linkId);\n links.set(\n linkId,\n createLinks(sourcePort, targetPort, link) as ExternalLinkModel,\n );\n link.setSourceNode(eastboundEmptyNode.getID());\n link.setTargetNode(connectionNode.getID());\n }\n });\n\n return links;\n}\n\nfunction generateCellLinks(\n project: Project,\n emptyNodes: Map<string, EmptyModel>,\n nodes: Map<string, CommonModel>,\n): Map<string, CellLinkModel> {\n const links: Map<string, CellLinkModel> = new Map();\n\n project.components?.forEach((component, _key) => {\n const componentId = getComponentName(component);\n const targetComponent: ComponentModel | undefined = nodes.get(\n componentId,\n ) as ComponentModel;\n // internet/public exposed services links\n if (targetComponent) {\n let isExposed = false;\n let tooltip = '';\n const observations: Observations[] = [];\n let observationOnly = false;\n for (const serviceId in component.services) {\n if (\n Object.prototype.hasOwnProperty.call(component.services, serviceId)\n ) {\n const service = component.services[serviceId];\n const internet = service.deploymentMetadata?.gateways.internet;\n isExposed = isExposed || !!internet?.isExposed;\n // capture service exposed link observations\n if (internet?.observations && internet.observations.length > 0) {\n observations.push(\n ...internet.observations.map(obs => {\n if (service.label) {\n obs.label = service.label;\n }\n return obs;\n }),\n );\n observationOnly = observationOnly || !!internet?.observationOnly;\n }\n tooltip = internet?.tooltip ?? '';\n }\n }\n const northBoundEmptyNode = emptyNodes.get(\n getEmptyNodeName(CellBounds.NorthBound),\n );\n if (isExposed && northBoundEmptyNode) {\n const sourcePort: CellPortModel | null = northBoundEmptyNode.getPort(\n getNodePortId(northBoundEmptyNode.getID(), PortModelAlignment.BOTTOM),\n );\n const targetPort: ComponentPortModel | null = targetComponent.getPort(\n `top-${targetComponent.getID()}`,\n );\n if (sourcePort && targetPort) {\n const linkId = getCellLinkName(\n sourcePort.getID(),\n targetPort.getID(),\n );\n const link: CellLinkModel = new CellLinkModel(linkId);\n links.set(\n linkId,\n createLinks(sourcePort, targetPort, link) as CellLinkModel,\n );\n link.setSourceNode(northBoundEmptyNode.getID());\n link.setTargetNode(targetComponent.getID());\n if (observations?.length > 0) {\n link.setObservations(observations, observationOnly);\n }\n if (tooltip) {\n link.setTooltip(tooltip);\n }\n }\n }\n }\n // intranet/org exposed services links\n if (targetComponent) {\n let isExposed = false;\n let tooltip = '';\n const observations: Observations[] = [];\n let observationOnly = false;\n for (const serviceId in component.services) {\n if (\n Object.prototype.hasOwnProperty.call(component.services, serviceId)\n ) {\n const service = component.services[serviceId];\n const intranet = service.deploymentMetadata?.gateways.intranet;\n isExposed = isExposed || !!intranet?.isExposed;\n // capture service exposed link observations\n if (intranet?.observations && intranet.observations.length > 0) {\n observations.push(...intranet.observations);\n }\n observationOnly = observationOnly || !!intranet?.observationOnly;\n tooltip = intranet?.tooltip ?? '';\n }\n }\n const northBoundEmptyNode = emptyNodes.get(\n getEmptyNodeName(CellBounds.WestBound),\n );\n if (isExposed && northBoundEmptyNode) {\n const sourcePort: CellPortModel | null = northBoundEmptyNode.getPort(\n getNodePortId(northBoundEmptyNode.getID(), PortModelAlignment.RIGHT),\n );\n const targetPort: ComponentPortModel | null = targetComponent.getPort(\n `left-${targetComponent.getID()}`,\n );\n if (sourcePort && targetPort) {\n const linkId = getCellLinkName(\n sourcePort.getID(),\n targetPort.getID(),\n );\n const link: CellLinkModel = new CellLinkModel(linkId);\n links.set(\n linkId,\n createLinks(sourcePort, targetPort, link) as CellLinkModel,\n );\n link.setSourceNode(northBoundEmptyNode.getID());\n link.setTargetNode(targetComponent.getID());\n if (observations.length > 0) {\n link.setObservations(observations, observationOnly);\n }\n if (tooltip) {\n link.setTooltip(tooltip);\n }\n }\n }\n }\n // connection links\n component.connections.forEach(connection => {\n if (isConnectorConnection(connection)) {\n const southBoundEmptyNode = emptyNodes.get(\n getEmptyNodeName(CellBounds.SouthBound, connection.id),\n );\n if (targetComponent && southBoundEmptyNode) {\n const sourcePort: ComponentPortModel | null = targetComponent.getPort(\n `bottom-${targetComponent.getID()}`,\n );\n const targetPort: CellPortModel | null = southBoundEmptyNode.getPort(\n getNodePortId(southBoundEmptyNode.getID(), PortModelAlignment.TOP),\n );\n\n if (sourcePort && targetPort) {\n const linkId = getCellLinkName(\n sourcePort.getID(),\n targetPort.getID(),\n );\n const link: CellLinkModel = new CellLinkModel(linkId);\n links.set(\n linkId,\n createLinks(sourcePort, targetPort, link) as CellLinkModel,\n );\n link.setSourceNode(targetComponent.getID());\n link.setTargetNode(southBoundEmptyNode.getID());\n if (connection.observations && connection.observations.length > 0) {\n link.setObservations(\n connection.observations,\n connection.observationOnly,\n );\n }\n if (connection.tooltip) {\n link.setTooltip(connection.tooltip);\n }\n }\n }\n } else if (isExternalConnection(project.id, connection, true)) {\n if (targetComponent && targetComponent.isExternalConsumer()) {\n // Skip external consumer connections and handle them separately\n return;\n }\n const eastBoundEmptyNode = emptyNodes.get(\n getEmptyNodeName(CellBounds.EastBound, connection.id),\n );\n if (targetComponent && eastBoundEmptyNode) {\n const sourcePort: ComponentPortModel | null = targetComponent.getPort(\n `right-${targetComponent.getID()}`,\n );\n const targetPort: CellPortModel | null = eastBoundEmptyNode.getPort(\n getNodePortId(eastBoundEmptyNode.getID(), PortModelAlignment.LEFT),\n );\n\n if (sourcePort && targetPort) {\n const linkId = getCellLinkName(\n sourcePort.getID(),\n targetPort.getID(),\n );\n const link: CellLinkModel = new CellLinkModel(linkId);\n links.set(\n linkId,\n createLinks(sourcePort, targetPort, link) as CellLinkModel,\n );\n link.setSourceNode(targetComponent.getID());\n link.setTargetNode(eastBoundEmptyNode.getID());\n if (connection.observations && connection.observations.length > 0) {\n link.setObservations(\n connection.observations,\n connection.observationOnly,\n );\n }\n if (connection.tooltip) {\n link.setTooltip(connection.tooltip);\n }\n }\n }\n }\n });\n // external consumer connections\n if (targetComponent && targetComponent.isExternalConsumer()) {\n for (const connection of component.connections) {\n let targetEmptyNode: EmptyModel | null = null;\n let targetBound: CellBounds | null = null;\n let destinationComponentNode: ComponentModel | null = null;\n const metadata = getConnectionMetadata(connection) as ComponentMetadata;\n for (const cmp of project.components) {\n if (cmp.id === metadata.component) {\n destinationComponentNode = nodes.get(\n getComponentName(cmp),\n ) as ComponentModel;\n // If any service is exposed to internet, set targetBound to NorthBound, else to WestBound\n // This is due to a limit in current model to track individual services by connection ID\n const services = Object.values(cmp.services);\n targetBound = CellBounds.WestBound; // Default to WestBound\n for (const service of services) {\n if (service.deploymentMetadata?.gateways.internet.isExposed) {\n targetBound = CellBounds.NorthBound;\n break; // Exit the loop once we find an internet-exposed service\n }\n }\n }\n }\n if (targetBound) {\n targetEmptyNode =\n emptyNodes.get(getEmptyNodeName(targetBound)) ?? null;\n }\n if (targetEmptyNode) {\n // create cell gateway connection for external consumer\n const sourcePort: ComponentPortModel | null = targetComponent.getPort(\n `bottom-${targetComponent.getID()}`,\n );\n const targetPort: CellPortModel | null = targetEmptyNode.getPort(\n getNodePortId(\n targetEmptyNode.getID(),\n targetBound === CellBounds.NorthBound\n ? PortModelAlignment.TOP\n : PortModelAlignment.LEFT,\n ),\n );\n if (sourcePort && targetPort) {\n const linkId = getCellLinkName(\n sourcePort.getID(),\n targetPort.getID(),\n );\n const link: CellLinkModel = new CellLinkModel(linkId);\n link.setSourceNode(targetComponent.getID());\n link.setTargetNode(targetEmptyNode.getID());\n link.setIsExternalConsumerLink(true);\n link.setDestinationNode(destinationComponentNode as ComponentModel);\n links.set(\n linkId,\n createLinks(sourcePort, targetPort, link) as CellLinkModel,\n );\n }\n }\n }\n }\n });\n\n return links;\n}\n\nfunction generateExternalLinks(\n emptyNodes: Map<string, EmptyModel>,\n externalNodes: Map<string, ExternalModel>,\n gateways: Gateways,\n): Map<string, ExternalLinkModel> {\n const links: Map<string, ExternalLinkModel> = new Map();\n // East bound external node link\n const eastBoundEmptyNode = emptyNodes.get(\n getEmptyNodeName(CellBounds.EastBound),\n );\n if (eastBoundEmptyNode) {\n const eastBoundLink = createExternalLink(\n eastBoundEmptyNode,\n externalNodes,\n CellBounds.EastBound,\n PortModelAlignment.RIGHT,\n );\n if (eastBoundLink) {\n links.set(eastBoundLink.getID(), eastBoundLink);\n }\n }\n // North bound external node link\n const northBoundEmptyNode = emptyNodes.get(\n getEmptyNodeName(CellBounds.NorthBound),\n );\n if (northBoundEmptyNode && gateways.internet) {\n const northBoundLink = createExternalLink(\n northBoundEmptyNode,\n externalNodes,\n CellBounds.NorthBound,\n PortModelAlignment.TOP,\n true,\n );\n if (northBoundLink) {\n links.set(northBoundLink.getID(), northBoundLink);\n }\n }\n // West bound external node link\n const westBoundEmptyNode = emptyNodes.get(\n getEmptyNodeName(CellBounds.WestBound),\n );\n if (westBoundEmptyNode && gateways.intranet) {\n const westBoundLink = createExternalLink(\n westBoundEmptyNode,\n externalNodes,\n CellBounds.WestBound,\n PortModelAlignment.LEFT,\n true,\n );\n if (westBoundLink) {\n links.set(westBoundLink.getID(), westBoundLink);\n }\n }\n return links;\n}\n\nfunction generateExternalConnectionLinks(\n project: Project,\n nodes: Map<string, CommonModel>,\n connectionNodes: Map<string, ConnectionModel>,\n): Map<string, ExternalLinkModel> {\n const links: Map<string, ExternalLinkModel> = new Map();\n project.components?.forEach((component, _key) => {\n const componentId = getComponentName(component);\n const targetComponent: ComponentModel | undefined = nodes.get(\n componentId,\n ) as ComponentModel;\n component.connections.forEach(connection => {\n if (\n isExternalConnection(project.id, connection, true) &&\n targetComponent &&\n targetComponent.isExternalConsumer()\n ) {\n // external consumer connections with another project components in the same organization\n const connectionNode = connectionNodes.get(\n getConnectionNameById(connection.id),\n );\n if (targetComponent && connectionNode) {\n const sourcePort: ComponentPortModel | null = targetComponent.getPort(\n `right-${targetComponent.getID()}`,\n );\n const targetPort: ConnectionPortModel | null = connectionNode.getPort(\n getNodePortId(connectionNode.getID(), PortModelAlignment.LEFT),\n );\n\n if (sourcePort && targetPort) {\n const linkId = getCellLinkName(\n sourcePort.getID(),\n targetPort.getID(),\n );\n const link: ExternalLinkModel = new ExternalLinkModel(linkId, true);\n links.set(\n linkId,\n createLinks(sourcePort, targetPort, link) as ExternalLinkModel,\n );\n link.setSourceNode(targetComponent.getID());\n link.setTargetNode(connectionNode.getID());\n if (connection.observations && connection.observations.length > 0) {\n link.setObservations(\n connection.observations,\n connection.observationOnly,\n );\n }\n if (connection.tooltip) {\n link.setTooltip(connection.tooltip);\n }\n }\n }\n }\n });\n });\n return links;\n}\n\nfunction createLinks(\n sourcePort: ComponentPortModel,\n targetPort: ComponentPortModel,\n link: ComponentLinkModel | ExternalLinkModel | CellLinkModel,\n): ComponentLinkModel | ExternalLinkModel | CellLinkModel {\n link.setSourcePort(sourcePort);\n link.setTargetPort(targetPort);\n sourcePort.addLink(link);\n return link;\n}\n\nfunction createExternalLink(\n emptyNode: EmptyModel,\n externalNodes: Map<string, ExternalModel>,\n bounds: CellBounds,\n alignment: PortModelAlignment,\n switchArrow = false,\n) {\n const sourcePort: CellPortModel | null = emptyNode.getPort(\n getNodePortId(emptyNode.getID(), alignment),\n );\n const targetNode = externalNodes.get(getExternalNodeName(bounds));\n const targetPort = targetNode?.getPort(\n `${getOppositeAlignment(alignment)}-${targetNode.getID()}`,\n );\n\n if (sourcePort && targetNode && targetPort) {\n const linkId = getExternalLinkName(sourcePort.getID(), targetPort.getID());\n const link: ExternalLinkModel = new ExternalLinkModel(linkId);\n\n if (switchArrow) {\n link.setSourceNode(targetNode.getID());\n link.setTargetNode(emptyNode.getID());\n return createLinks(targetPort, sourcePort, link) as ExternalLinkModel;\n }\n link.setSourceNode(emptyNode.getID());\n link.setTargetNode(targetNode.getID());\n return createLinks(sourcePort, targetPort, link) as ExternalLinkModel;\n }\n return undefined;\n}\n\n// Common utils\n\nfunction getOppositeAlignment(\n alignment: PortModelAlignment,\n): PortModelAlignment {\n switch (alignment) {\n case PortModelAlignment.LEFT:\n return PortModelAlignment.RIGHT;\n case PortModelAlignment.RIGHT:\n return PortModelAlignment.LEFT;\n case PortModelAlignment.TOP:\n return PortModelAlignment.BOTTOM;\n case PortModelAlignment.BOTTOM:\n return PortModelAlignment.TOP;\n default:\n return alignment;\n }\n}\n\nexport function getConnectionMetadata(\n connection: Connection,\n): ConnectionMetadata | null {\n const ids = connection.id.split(':');\n if (ids.length === 3) {\n return {\n type: connection.type,\n organization: ids[0],\n project: ids[1],\n component: ids[2],\n } as ComponentMetadata;\n } else if (ids.length === 4) {\n return {\n type: connection.type,\n organization: ids[0],\n project: ids[1],\n component: ids[2],\n service: ids[3],\n } as ComponentMetadata;\n } else if (isConnectorConnection(connection) && ids.length === 2) {\n return {\n type: connection.type,\n organization: ids[0],\n package: ids[1],\n } as ConnectorMetadata;\n }\n return null;\n}\n\nexport function isInternalComponent(\n projectId: string,\n connection: Connection,\n): boolean {\n const metadata = getConnectionMetadata(connection);\n return !!metadata && (metadata as ComponentMetadata).project === projectId;\n}\n\nexport function isExternalConnection(\n projectId: string,\n connection: Connection,\n skipPlatform?: boolean,\n): boolean {\n const metadata = getConnectionMetadata(connection);\n return Boolean(\n (!isConnectorConnection(connection) || !connection.type) && // Some connections doesn't have connection type\n (skipPlatform || !connection.onPlatform) && // Skip platform fields for some connections\n metadata &&\n (metadata as ComponentMetadata).project !== projectId,\n );\n}\n\n// check is connector connection\nexport function isConnectorConnection(connection: Connection): boolean {\n // connector and datastore treat as connector connections\n return (\n connection.type === ConnectionType.Connector ||\n connection.type === ConnectionType.Datastore\n );\n}\n"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,86 @@
1
+ {
2
+ "name": "@openchoreo/cell-diagram",
3
+ "version": "1.2.0-rc.1",
4
+ "description": "React component library that visualizes OpenChoreo cell architectures.",
5
+ "license": "Apache-2.0",
6
+ "main": "dist/index.esm.js",
7
+ "types": "dist/index.d.ts",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/openchoreo/backstage-plugins.git",
11
+ "directory": "packages/cell-diagram"
12
+ },
13
+ "keywords": [
14
+ "cell-architecture"
15
+ ],
16
+ "publishConfig": {
17
+ "access": "public",
18
+ "main": "dist/index.esm.js",
19
+ "types": "dist/index.d.ts"
20
+ },
21
+ "backstage": {
22
+ "role": "web-library"
23
+ },
24
+ "sideEffects": [
25
+ "*.css"
26
+ ],
27
+ "scripts": {
28
+ "start": "backstage-cli package start",
29
+ "build": "backstage-cli package build",
30
+ "lint": "backstage-cli package lint",
31
+ "test": "backstage-cli package test",
32
+ "clean": "backstage-cli package clean",
33
+ "prepack": "backstage-cli package prepack",
34
+ "postpack": "backstage-cli package postpack",
35
+ "storybook": "storybook dev -p 6006",
36
+ "build-storybook": "storybook build -o storybook-static"
37
+ },
38
+ "dependencies": {
39
+ "@emotion/react": "^11.9.3",
40
+ "@emotion/styled": "^11.10.5",
41
+ "@material-ui/core": "^4.12.3",
42
+ "@mui/icons-material": "~5.15.19",
43
+ "@mui/material": "~5.13.2",
44
+ "@projectstorm/geometry": "^6.7.4",
45
+ "@projectstorm/react-canvas-core": "^6.7.4",
46
+ "@projectstorm/react-diagrams": "^6.7.4",
47
+ "@projectstorm/react-diagrams-core": "^6.7.4",
48
+ "@projectstorm/react-diagrams-defaults": "^6.7.4",
49
+ "@projectstorm/react-diagrams-routing": "^6.7.4",
50
+ "@storybook/addon-actions": "^8.6.14",
51
+ "dagre": "^0.8.5",
52
+ "gsap": "~3.12.2",
53
+ "lodash": "^4.17.11"
54
+ },
55
+ "peerDependencies": {
56
+ "react": "^18.0.0",
57
+ "react-dom": "^18.0.0"
58
+ },
59
+ "devDependencies": {
60
+ "@backstage/cli": "0.34.3",
61
+ "@storybook/addon-essentials": "^8.6.14",
62
+ "@storybook/react": "^8.6.14",
63
+ "@storybook/react-vite": "^8.6.14",
64
+ "@testing-library/jest-dom": "6.9.1",
65
+ "@testing-library/react": "14.3.1",
66
+ "@types/dagre": "^0.7.53",
67
+ "@types/lodash": "^4.14.189",
68
+ "@types/react": "^18.0.0",
69
+ "@types/react-dom": "^18.0.0",
70
+ "react": "^18.0.0",
71
+ "react-dom": "^18.0.0",
72
+ "storybook": "^8.6.14",
73
+ "vite": "^5.4.0"
74
+ },
75
+ "files": [
76
+ "dist"
77
+ ],
78
+ "typesVersions": {
79
+ "*": {
80
+ "package.json": [
81
+ "package.json"
82
+ ]
83
+ }
84
+ },
85
+ "module": "./dist/index.esm.js"
86
+ }