@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,407 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { BaseModelOptions, DeserializeEvent, BaseEvent } from '@projectstorm/react-canvas-core';
3
+ import { DefaultLinkModel, DiagramEngine, NodeModel, NodeModelGenerics, PortModel, DefaultPortModel, PortModelAlignment } from '@projectstorm/react-diagrams';
4
+ import { LinkModel, PortModel as PortModel$1, PointModel, LabelModel, PointModelGenerics } from '@projectstorm/react-diagrams-core';
5
+ import { DefaultLinkModelGenerics } from '@projectstorm/react-diagrams-defaults';
6
+
7
+ declare class SharedLinkModel extends DefaultLinkModel {
8
+ diagramEngine: DiagramEngine;
9
+ observations: Observations[];
10
+ observationOnly: boolean;
11
+ tooltip: string;
12
+ constructor(id: string, type: string);
13
+ initLinks: (diagramEngine: DiagramEngine) => void;
14
+ fireEventTroughLink: (event: string) => void;
15
+ selectLinkedNodes: () => void;
16
+ resetLinkedNodes: () => void;
17
+ getCurvePath: () => string;
18
+ getArrowHeadPoints: (scale?: number) => string;
19
+ setObservations: (observations: Observations[], observationOnly?: boolean) => void;
20
+ setTooltip: (tooltip: string) => void;
21
+ getMidPoint: () => {
22
+ x: number;
23
+ y: number;
24
+ };
25
+ scaleValueToLinkWidth: (requestCount: number, minRequestCount: number, maxRequestCount: number, maxPossibleRequestCount?: number, minStrokeWidth?: number, maxFullStrokeWidth?: number) => number;
26
+ getLinkArrowId: () => string;
27
+ }
28
+
29
+ interface LinkOrigins$2 {
30
+ nodeId: string;
31
+ }
32
+ declare class ComponentLinkModel extends SharedLinkModel {
33
+ sourceNode: LinkOrigins$2;
34
+ targetNode: LinkOrigins$2;
35
+ constructor(id: string);
36
+ setSourceNode(nodeId: string): void;
37
+ setTargetNode(nodeId: string): void;
38
+ }
39
+
40
+ declare class SharedNodeModel extends NodeModel<NodeModelGenerics> {
41
+ constructor(type: string, id: string);
42
+ handleHover: (ports: PortModel[], task: string) => void;
43
+ isNodeSelected: (selectedLink: ComponentLinkModel, portIdentifier: string) => boolean;
44
+ getDynamicLineWidth: (zoomLevel: number, minWidth?: number, maxWidth?: number) => number;
45
+ }
46
+
47
+ declare class ProjectPortModel extends DefaultPortModel {
48
+ constructor(id: string, portType: PortModelAlignment);
49
+ isLocked(): boolean;
50
+ }
51
+
52
+ declare class ProjectModel extends SharedNodeModel {
53
+ readonly project: Project;
54
+ constructor(project: Project);
55
+ getPort(name: string): ProjectPortModel;
56
+ }
57
+
58
+ interface AdvancedLinkModelOptions extends BaseModelOptions {
59
+ width?: number;
60
+ color?: string;
61
+ selectedColor?: string;
62
+ curvyness?: number;
63
+ type?: string;
64
+ testName?: string;
65
+ receiver?: string;
66
+ }
67
+ declare class AdvancedLinkModel extends LinkModel<DefaultLinkModelGenerics> {
68
+ linkYOffset: number;
69
+ linkXOffset: number;
70
+ constructor(options?: AdvancedLinkModelOptions);
71
+ calculateControlOffset(port: PortModel$1): [number, number];
72
+ getSVGPath(): string;
73
+ getSVGPathSegment(firstPoint: PointModel, lastPoint: PointModel): string;
74
+ calculateControlOffsetWithPosition(rightTraget: boolean, bottomTarget: boolean): [number, number];
75
+ serialize(): {
76
+ width: number | undefined;
77
+ color: string | undefined;
78
+ curvyness: number | undefined;
79
+ selectedColor: string | undefined;
80
+ source: string;
81
+ sourcePort: string;
82
+ target: string;
83
+ targetPort: string;
84
+ points: {
85
+ x: number;
86
+ y: number;
87
+ type: string;
88
+ selected: boolean;
89
+ extras: any;
90
+ id: string;
91
+ locked: boolean;
92
+ }[];
93
+ labels: {
94
+ offsetX: number;
95
+ offsetY: number;
96
+ type: string;
97
+ selected: boolean;
98
+ extras: any;
99
+ id: string;
100
+ locked: boolean;
101
+ }[];
102
+ type: string;
103
+ selected: boolean;
104
+ extras: any;
105
+ id: string;
106
+ locked: boolean;
107
+ };
108
+ deserialize(event: DeserializeEvent<this>): void;
109
+ addLabel(label: LabelModel | string): void;
110
+ setWidth(width: number): void;
111
+ setColor(color: string): void;
112
+ addPoint<P extends PointModel<PointModelGenerics>>(): P;
113
+ }
114
+
115
+ declare class ComponentModel extends SharedNodeModel {
116
+ readonly component: Component;
117
+ constructor(component: Component);
118
+ isExternalConsumer(): boolean;
119
+ }
120
+
121
+ declare enum Orientation {
122
+ VERTICAL = "vertical",
123
+ HORIZONTAL = "horizontal"
124
+ }
125
+ declare class ConnectionModel extends SharedNodeModel {
126
+ readonly connection: Connection;
127
+ readonly orientation: Orientation;
128
+ constructor(connection: Connection, orientation?: Orientation);
129
+ }
130
+
131
+ declare enum CellBounds {
132
+ NorthBound = "nb",
133
+ SouthBound = "sb",
134
+ EastBound = "eb",
135
+ WestBound = "wb"
136
+ }
137
+
138
+ interface LinkOrigins$1 {
139
+ nodeId: string;
140
+ }
141
+ declare class CellLinkModel extends SharedLinkModel {
142
+ sourceNode: LinkOrigins$1;
143
+ targetNode: LinkOrigins$1;
144
+ isExternalConsumerLink: boolean;
145
+ destinationNode: ComponentModel;
146
+ constructor(id: string);
147
+ setIsExternalConsumerLink(isExternalConsumerLink: boolean): void;
148
+ setDestinationNode(destinationNode: ComponentModel): void;
149
+ setSourceNode(nodeId: string): void;
150
+ setTargetNode(nodeId: string): void;
151
+ getDestinationNode(): ComponentModel;
152
+ getIsExternalConsumerLink(): boolean;
153
+ getArrowHeadPoints: (scale?: number) => string;
154
+ showArrowHead: () => boolean;
155
+ }
156
+
157
+ declare class EmptyModel extends SharedNodeModel {
158
+ readonly bound: CellBounds;
159
+ readonly width: number;
160
+ constructor(bound: CellBounds, width?: number, suffix?: string);
161
+ }
162
+
163
+ declare class ExternalModel extends SharedNodeModel {
164
+ constructor(id: string);
165
+ }
166
+
167
+ interface LinkOrigins {
168
+ nodeId: string;
169
+ }
170
+ declare class ExternalLinkModel extends SharedLinkModel {
171
+ sourceNode: LinkOrigins;
172
+ targetNode: LinkOrigins;
173
+ withRightOffset: boolean;
174
+ constructor(id: string, withRightOffset?: boolean);
175
+ setSourceNode(nodeId: string): void;
176
+ setTargetNode(nodeId: string): void;
177
+ getArrowHeadPoints: () => string;
178
+ getCurvePath: () => string;
179
+ getCurvePathWithOffset: () => string;
180
+ getTwoBendPath: () => string;
181
+ }
182
+
183
+ interface Organization {
184
+ id: string;
185
+ name: string;
186
+ projects: Project[];
187
+ configurations?: Connection[];
188
+ modelVersion: string;
189
+ }
190
+ interface Project {
191
+ id: string;
192
+ name: string;
193
+ components: Component[];
194
+ connections?: OrgConnection[];
195
+ configurations?: Connection[];
196
+ modelVersion?: string;
197
+ }
198
+ declare enum ComponentType {
199
+ SERVICE = "service",
200
+ WEB_APP = "web-app",
201
+ SCHEDULED_TASK = "scheduled-task",
202
+ MANUAL_TASK = "manual-task",
203
+ API_PROXY = "api-proxy",
204
+ WEB_HOOK = "web-hook",
205
+ EVENT_HANDLER = "event-handler",
206
+ TEST = "test",
207
+ EXTERNAL_CONSUMER = "external-consumer",
208
+ SYSTEM_COMPONENT = "system"
209
+ }
210
+ type ExternalConsumerLinkSelectEvent = BaseEvent & {
211
+ cellBound: CellBounds;
212
+ };
213
+ interface Component {
214
+ id: string;
215
+ label?: string;
216
+ version: string;
217
+ type: ComponentType;
218
+ buildPack?: string;
219
+ services: Services;
220
+ connections: Connection[];
221
+ disabled?: {
222
+ status: boolean;
223
+ reason?: string;
224
+ };
225
+ }
226
+ interface Services {
227
+ [key: string]: Service;
228
+ }
229
+ interface Service {
230
+ id: string;
231
+ label?: string;
232
+ type: string;
233
+ dependencyIds: string[];
234
+ deploymentMetadata?: DeploymentMetadata;
235
+ }
236
+ interface Connection {
237
+ id: string;
238
+ label?: string;
239
+ type?: ConnectionType;
240
+ onPlatform?: boolean;
241
+ tooltip?: string;
242
+ observations?: Observations[];
243
+ observationOnly?: boolean;
244
+ }
245
+ declare enum ConnectionType {
246
+ HTTP = "http",
247
+ GRPC = "grpc",
248
+ WebSocket = "web-socket",
249
+ Connector = "connector",
250
+ Datastore = "datastore"
251
+ }
252
+ interface ProjectGateway {
253
+ projectId: string;
254
+ boundary: CellBounds;
255
+ }
256
+ interface OrgConnection {
257
+ id: string;
258
+ label?: string;
259
+ tooltip?: string;
260
+ source: {
261
+ boundary: CellBounds;
262
+ };
263
+ target?: ProjectGateway | Connection;
264
+ }
265
+ interface ComponentMetadata {
266
+ type: ConnectionType;
267
+ organization: string;
268
+ project: string;
269
+ component: string;
270
+ service?: string;
271
+ }
272
+ interface ConnectorMetadata {
273
+ type: ConnectionType.Connector;
274
+ organization: string;
275
+ package: string;
276
+ }
277
+ type ConnectionMetadata = ComponentMetadata | ConnectorMetadata;
278
+ interface DeploymentMetadata {
279
+ gateways: {
280
+ internet: {
281
+ isExposed: boolean;
282
+ tooltip?: string;
283
+ observations?: Observations[];
284
+ observationOnly?: boolean;
285
+ };
286
+ intranet: {
287
+ isExposed: boolean;
288
+ tooltip?: string;
289
+ observations?: Observations[];
290
+ observationOnly?: boolean;
291
+ };
292
+ };
293
+ }
294
+ interface Observations {
295
+ label?: string;
296
+ componentVersion?: string;
297
+ sourceNodeId: number;
298
+ destinationNodeId: number;
299
+ avgLatency: number;
300
+ errorCount: number;
301
+ p50Latency: number;
302
+ p90Latency: number;
303
+ p99Latency: number;
304
+ requestCount: number;
305
+ }
306
+ type CommonModel = ProjectModel | ComponentModel | ConnectionModel | ExternalModel | EmptyModel;
307
+ interface OrgDiagramData {
308
+ nodes: Nodes;
309
+ links: Links;
310
+ }
311
+ interface ProjectDiagramData {
312
+ nodes: Nodes;
313
+ links: Links;
314
+ gateways: Gateways;
315
+ observationSummary: ObservationSummary;
316
+ }
317
+ interface Gateways {
318
+ internet: boolean;
319
+ intranet: boolean;
320
+ }
321
+ interface ObservationSummary {
322
+ requestCount: {
323
+ min: number;
324
+ max: number;
325
+ };
326
+ }
327
+ interface Nodes {
328
+ [key: string]: Map<string, CommonModel>;
329
+ }
330
+ interface Links {
331
+ [key: string]: Map<string, ComponentLinkModel | ExternalLinkModel | CellLinkModel | AdvancedLinkModel>;
332
+ }
333
+ interface MoreVertMenuItem {
334
+ label: string;
335
+ callback: (id: string, version?: string) => void;
336
+ }
337
+ declare enum DiagramLayer {
338
+ ARCHITECTURE = "architecture",
339
+ OBSERVABILITY = "observability",
340
+ DIFF = "diff"
341
+ }
342
+ interface CustomTooltips {
343
+ diagramLayers: DiagramLayerTooltips;
344
+ }
345
+ interface DiagramLayerTooltips {
346
+ staticLayer?: string;
347
+ runtimeLayer?: string;
348
+ diffLayer?: string;
349
+ }
350
+
351
+ /**
352
+ * The full color vocabulary the cell diagram paints with.
353
+ *
354
+ * The shape mirrors a Material You-style token system. `lightColors` is the
355
+ * historical default and matches the original `Colors` enum byte-for-byte;
356
+ * `darkColors` is the dark-mode counterpart. Host applications can also
357
+ * override individual tokens by passing a `colors` prop to `<CellDiagram>`.
358
+ */
359
+ type CellDiagramColors = {
360
+ PRIMARY: string;
361
+ ON_PRIMARY: string;
362
+ PRIMARY_CONTAINER: string;
363
+ /** Hover accent for primary-tinted clickable surfaces (e.g. project node title). */
364
+ PRIMARY_HOVER: string;
365
+ SECONDARY: string;
366
+ ON_SECONDARY: string;
367
+ SECONDARY_CONTAINER: string;
368
+ SURFACE_BRIGHT: string;
369
+ SURFACE: string;
370
+ SURFACE_DIM: string;
371
+ SURFACE_CONTAINER: string;
372
+ ON_SURFACE: string;
373
+ ON_SURFACE_VARIANT: string;
374
+ OUTLINE: string;
375
+ OUTLINE_VARIANT: string;
376
+ ERROR: string;
377
+ };
378
+ type CellDiagramThemeMode = 'light' | 'dark';
379
+
380
+ interface CellDiagramProps {
381
+ organization?: Organization;
382
+ project?: Project;
383
+ componentMenu?: MoreVertMenuItem[];
384
+ showControls?: boolean;
385
+ animation?: boolean;
386
+ defaultDiagramLayer?: DiagramLayer;
387
+ customTooltips?: CustomTooltips;
388
+ modelVersion?: string;
389
+ previewMode?: boolean;
390
+ onComponentDoubleClick?: (componentId: string) => void;
391
+ /**
392
+ * Color scheme to render the diagram in. Defaults to `'light'` so
393
+ * existing callers see no visual change.
394
+ */
395
+ mode?: CellDiagramThemeMode;
396
+ /**
397
+ * Optional per-token overrides merged on top of the `mode` preset. Use
398
+ * this to snap the diagram to a host application's brand palette.
399
+ */
400
+ colors?: Partial<CellDiagramColors>;
401
+ }
402
+ declare function CellDiagram(props: CellDiagramProps): react_jsx_runtime.JSX.Element;
403
+
404
+ declare function renderDiagram(projectModel: string, target: HTMLDivElement): void;
405
+
406
+ export { CellDiagram, ComponentType, ConnectionType, DiagramLayer, renderDiagram };
407
+ export type { CommonModel, Component, ComponentMetadata, Connection, ConnectionMetadata, ConnectorMetadata, CustomTooltips, DeploymentMetadata, DiagramLayerTooltips, ExternalConsumerLinkSelectEvent, Gateways, Links, MoreVertMenuItem, Nodes, ObservationSummary, Observations, OrgConnection, OrgDiagramData, Organization, Project, ProjectDiagramData, ProjectGateway, Service, Services };
@@ -0,0 +1,4 @@
1
+ export { CellDiagram } from './Diagram.esm.js';
2
+ export { ComponentType, ConnectionType, DiagramLayer } from './types.esm.js';
3
+ export { renderDiagram } from './renderDiagram.esm.js';
4
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,11 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { render } from 'react-dom';
3
+ import { CellDiagram } from './Diagram.esm.js';
4
+
5
+ function renderDiagram(projectModel, target) {
6
+ const project = JSON.parse(JSON.stringify(projectModel));
7
+ render(/* @__PURE__ */ jsx(CellDiagram, { project }), target);
8
+ }
9
+
10
+ export { renderDiagram };
11
+ //# sourceMappingURL=renderDiagram.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderDiagram.esm.js","sources":["../src/renderDiagram.tsx"],"sourcesContent":["import { render } from 'react-dom';\nimport { CellDiagram } from './Diagram';\nimport { Project } from './types';\n\nexport function renderDiagram(projectModel: string, target: HTMLDivElement) {\n const project: Project = JSON.parse(JSON.stringify(projectModel));\n render(<CellDiagram project={project} />, target);\n}\n"],"names":[],"mappings":";;;;AAIO,SAAS,aAAA,CAAc,cAAsB,MAAA,EAAwB;AAC1E,EAAA,MAAM,UAAmB,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,YAAY,CAAC,CAAA;AAChE,EAAA,MAAA,iBAAO,GAAA,CAAC,WAAA,EAAA,EAAY,OAAA,EAAkB,CAAA,EAAI,MAAM,CAAA;AAClD;;;;"}
@@ -0,0 +1,178 @@
1
+ import { PointModel } from '@projectstorm/react-diagrams-core';
2
+ import * as dagre from 'dagre';
3
+ import * as _ from 'lodash';
4
+ import { Point } from '@projectstorm/geometry';
5
+ import { EMPTY_NODE, MAIN_CELL, COMPONENT_NODE, COMPONENT_CIRCLE_WIDTH, DIAGRAM_END, BORDER_GAP } from '../constants.esm.js';
6
+
7
+ class DagreEngine {
8
+ options;
9
+ constructor(options = {}) {
10
+ this.options = options;
11
+ }
12
+ redistribute(model) {
13
+ const g = new dagre.graphlib.Graph({
14
+ multigraph: true,
15
+ compound: true
16
+ });
17
+ g.setGraph(this.options.graph || {});
18
+ g.setDefaultEdgeLabel(() => {
19
+ return {};
20
+ });
21
+ const ug = new dagre.graphlib.Graph({
22
+ multigraph: true,
23
+ compound: true
24
+ });
25
+ ug.setGraph(this.options.graph || {});
26
+ _.forEach(model.getNodes(), (node) => {
27
+ const ports = {
28
+ top: 0,
29
+ bottom: 0,
30
+ left: 0,
31
+ right: 0
32
+ };
33
+ _.forEach(node.getPorts(), (port) => {
34
+ if (port.getOptions().alignment === "top") {
35
+ ports.top = _.size(port.getLinks());
36
+ } else if (port.getOptions().alignment === "bottom") {
37
+ ports.bottom = _.size(port.getLinks());
38
+ } else if (port.getOptions().alignment === "left") {
39
+ ports.left = _.size(port.getLinks());
40
+ } else if (port.getOptions().alignment === "right") {
41
+ ports.right = _.size(port.getLinks());
42
+ }
43
+ });
44
+ if (node.getType() === EMPTY_NODE) {
45
+ g.setNode(node.getID(), {
46
+ label: node.getID(),
47
+ width: node.width,
48
+ height: node.height,
49
+ x: node.getX(),
50
+ y: node.getY(),
51
+ fixed: true
52
+ });
53
+ } else if (this.isLinkedNode(ports)) {
54
+ g.setNode(node.getID(), {
55
+ label: node.getID(),
56
+ width: node.width,
57
+ height: node.height,
58
+ ports,
59
+ node
60
+ });
61
+ } else {
62
+ ug.setNode(node.getID(), {
63
+ label: node.getID(),
64
+ width: node.width,
65
+ height: node.height,
66
+ node
67
+ });
68
+ }
69
+ });
70
+ const mainCell = g.node(MAIN_CELL);
71
+ if (mainCell) {
72
+ _.forEach(model.getNodes(), (node) => {
73
+ if (node.getType() === COMPONENT_NODE) {
74
+ g.setParent(node.getID(), MAIN_CELL);
75
+ }
76
+ });
77
+ }
78
+ _.forEach(model.getLinks(), (link) => {
79
+ if (link.getSourcePort() && link.getTargetPort()) {
80
+ g.setEdge({
81
+ v: link.getSourcePort().getNode().getID(),
82
+ w: link.getTargetPort().getNode().getID(),
83
+ name: link.getID()
84
+ });
85
+ }
86
+ });
87
+ const space = BORDER_GAP * 2;
88
+ dagre.layout(g);
89
+ this.angleLayout(g, space);
90
+ const { x, y } = this.getRightTopConnerOfGraph(g);
91
+ this.arrangeInGridLayout(ug.nodes(), ug, space, x, y);
92
+ ug.nodes().forEach((v) => {
93
+ g.setNode(v, ug.node(v));
94
+ });
95
+ g.nodes().forEach((v) => {
96
+ const node = g.node(v);
97
+ if (model.getNode(v).getType() !== EMPTY_NODE) {
98
+ model.getNode(v).setPosition(node.x - node.width / 2, node.y - node.height / 2);
99
+ }
100
+ });
101
+ if (this.options.includeLinks) {
102
+ g.edges().forEach((e) => {
103
+ const edge = g.edge(e);
104
+ const link = model.getLink(e.name);
105
+ const points = [link.getFirstPoint()];
106
+ for (let i = 1; i < edge.points.length - 1; i++) {
107
+ points.push(
108
+ new PointModel({
109
+ link,
110
+ position: new Point(edge.points[i].x, edge.points[i].y)
111
+ })
112
+ );
113
+ }
114
+ link.setPoints(points.concat(link.getLastPoint()));
115
+ });
116
+ }
117
+ }
118
+ gridLayout(g, spacing) {
119
+ const nodes = g.nodes();
120
+ this.arrangeInGridLayout(nodes, g, spacing);
121
+ }
122
+ // nodes are all layout in vertical line. this method will add horizontal spacing between nodes to align nodes in angle line
123
+ angleLayout(g, spacing) {
124
+ const nodes = g.nodes();
125
+ let lastX = 0;
126
+ nodes.forEach((v) => {
127
+ const node = g.node(v);
128
+ if (node.ports && node.ports.top > 0 && node.ports.bottom === 0 && node.ports.left >= 0 && node.ports.right === 0) {
129
+ if (lastX === 0) {
130
+ lastX = node.x;
131
+ } else {
132
+ lastX += node.width + spacing;
133
+ node.x = lastX;
134
+ }
135
+ }
136
+ });
137
+ }
138
+ isLinkedNode(ports) {
139
+ return ports.top > 0 || ports.bottom > 0 || ports.left > 0 || ports.right > 0;
140
+ }
141
+ arrangeInGridLayout(nodes, g, spacing, startX = 0, startY = 0) {
142
+ const gridSize = Math.ceil(Math.sqrt(nodes.length));
143
+ const minWidth = COMPONENT_CIRCLE_WIDTH + BORDER_GAP;
144
+ let x = 0;
145
+ let y = 0;
146
+ nodes.forEach((v) => {
147
+ const node = g.node(v);
148
+ const space = minWidth + spacing;
149
+ node.x = startX + x * space + (space - minWidth) / 2;
150
+ node.y = startY + y * space;
151
+ x++;
152
+ if (x >= gridSize) {
153
+ x = 0;
154
+ y++;
155
+ }
156
+ });
157
+ }
158
+ getRightTopConnerOfGraph(g) {
159
+ let maxX = 0;
160
+ let minY = DIAGRAM_END;
161
+ g.nodes().forEach((v) => {
162
+ const node = g.node(v);
163
+ if (node.x > maxX) {
164
+ maxX = node.x;
165
+ }
166
+ if (node.y < minY) {
167
+ minY = node.y;
168
+ }
169
+ });
170
+ if (maxX !== 0) {
171
+ maxX += COMPONENT_CIRCLE_WIDTH * 2;
172
+ }
173
+ return { x: maxX, y: minY };
174
+ }
175
+ }
176
+
177
+ export { DagreEngine };
178
+ //# sourceMappingURL=DagreEngine.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DagreEngine.esm.js","sources":["../../../src/resources/Dagre/DagreEngine.ts"],"sourcesContent":["import { DiagramModel, PointModel } from '@projectstorm/react-diagrams-core';\nimport * as dagre from 'dagre';\nimport * as _ from 'lodash';\nimport { GraphLabel } from 'dagre';\nimport { Point } from '@projectstorm/geometry';\nimport {\n BORDER_GAP,\n COMPONENT_CIRCLE_WIDTH,\n COMPONENT_NODE,\n DIAGRAM_END,\n EMPTY_NODE,\n MAIN_CELL,\n} from '../constants';\n\nexport interface DagreEngineOptions {\n graph?: GraphLabel;\n /**\n * Will also layout links\n */\n includeLinks?: boolean;\n}\n\nexport class DagreEngine {\n options: DagreEngineOptions;\n\n constructor(options: DagreEngineOptions = {}) {\n this.options = options;\n }\n\n redistribute(model: DiagramModel) {\n // Create a new directed graph\n const g = new dagre.graphlib.Graph({\n multigraph: true,\n compound: true,\n });\n g.setGraph(this.options.graph || {});\n g.setDefaultEdgeLabel(() => {\n return {};\n });\n // Create a new unlinked node paths\n const ug = new dagre.graphlib.Graph({\n multigraph: true,\n compound: true,\n });\n ug.setGraph(this.options.graph || {});\n\n // set nodes\n _.forEach(model.getNodes(), node => {\n const ports = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n };\n // Count the number of links on each side of the node\n _.forEach(node.getPorts(), port => {\n if (port.getOptions().alignment === 'top') {\n ports.top = _.size(port.getLinks());\n } else if (port.getOptions().alignment === 'bottom') {\n ports.bottom = _.size(port.getLinks());\n } else if (port.getOptions().alignment === 'left') {\n ports.left = _.size(port.getLinks());\n } else if (port.getOptions().alignment === 'right') {\n ports.right = _.size(port.getLinks());\n }\n });\n\n // Check if the node is of type EMPTY_NODE\n if (node.getType() === EMPTY_NODE) {\n // If it's an EMPTY_NODE, set its position as fixed\n g.setNode(node.getID(), {\n label: node.getID(),\n width: node.width,\n height: node.height,\n x: node.getX(),\n y: node.getY(),\n fixed: true,\n });\n } else if (this.isLinkedNode(ports)) {\n // For other nodes, set the default position\n g.setNode(node.getID(), {\n label: node.getID(),\n width: node.width,\n height: node.height,\n ports,\n node,\n });\n } else {\n // For nodes without any links, set their position in the unlinked graph\n ug.setNode(node.getID(), {\n label: node.getID(),\n width: node.width,\n height: node.height,\n node,\n });\n }\n });\n\n // set node parents\n const mainCell = g.node(MAIN_CELL);\n if (mainCell) {\n _.forEach(model.getNodes(), node => {\n if (node.getType() === COMPONENT_NODE) {\n g.setParent(node.getID(), MAIN_CELL);\n }\n });\n }\n\n _.forEach(model.getLinks(), link => {\n // set edges\n if (link.getSourcePort() && link.getTargetPort()) {\n g.setEdge({\n v: link.getSourcePort().getNode().getID(),\n w: link.getTargetPort().getNode().getID(),\n name: link.getID(),\n });\n }\n });\n\n const space = BORDER_GAP * 2;\n dagre.layout(g);\n this.angleLayout(g, space);\n // get layout edge\n const { x, y } = this.getRightTopConnerOfGraph(g);\n this.arrangeInGridLayout(ug.nodes(), ug, space, x, y);\n // merge two graphs\n ug.nodes().forEach(v => {\n g.setNode(v, ug.node(v));\n });\n\n g.nodes().forEach(v => {\n const node = g.node(v);\n // Only update positions for non-EMPTY_NODE type nodes\n if (model.getNode(v).getType() !== EMPTY_NODE) {\n model\n .getNode(v)\n .setPosition(node.x - node.width / 2, node.y - node.height / 2);\n }\n });\n\n // also include links?\n if (this.options.includeLinks) {\n g.edges().forEach(e => {\n const edge = g.edge(e);\n const link = model.getLink(e.name as string);\n\n const points = [link.getFirstPoint()];\n for (let i = 1; i < edge.points.length - 1; i++) {\n points.push(\n new PointModel({\n link: link,\n position: new Point(edge.points[i].x, edge.points[i].y),\n }),\n );\n }\n link.setPoints(points.concat(link.getLastPoint()));\n });\n }\n }\n\n gridLayout(g: dagre.graphlib.Graph, spacing: number) {\n const nodes = g.nodes();\n this.arrangeInGridLayout(nodes, g, spacing);\n }\n\n // nodes are all layout in vertical line. this method will add horizontal spacing between nodes to align nodes in angle line\n angleLayout(g: dagre.graphlib.Graph, spacing: number) {\n const nodes = g.nodes();\n let lastX = 0;\n\n nodes.forEach((v: string) => {\n const node = g.node(v) as dagre.Node & {\n ports?: { top: number; bottom: number; left: number; right: number };\n };\n // node only has top connection will be arranged\n if (\n node.ports &&\n node.ports.top > 0 &&\n node.ports.bottom === 0 &&\n node.ports.left >= 0 &&\n node.ports.right === 0\n ) {\n if (lastX === 0) {\n lastX = node.x;\n } else {\n lastX += node.width + spacing;\n node.x = lastX;\n }\n }\n });\n }\n\n isLinkedNode(ports: {\n top: number;\n bottom: number;\n left: number;\n right: number;\n }) {\n return (\n ports.top > 0 || ports.bottom > 0 || ports.left > 0 || ports.right > 0\n );\n }\n\n arrangeInGridLayout(\n nodes: string[],\n g: dagre.graphlib.Graph,\n spacing: number,\n startX = 0,\n startY = 0,\n ) {\n const gridSize = Math.ceil(Math.sqrt(nodes.length));\n const minWidth = COMPONENT_CIRCLE_WIDTH + BORDER_GAP;\n let x = 0;\n let y = 0;\n\n nodes.forEach(v => {\n const node = g.node(v);\n const space = minWidth + spacing;\n node.x = startX + x * space + (space - minWidth) / 2;\n node.y = startY + y * space;\n x++;\n if (x >= gridSize) {\n x = 0;\n y++;\n }\n });\n }\n\n getRightTopConnerOfGraph(g: dagre.graphlib.Graph) {\n let maxX = 0;\n let minY = DIAGRAM_END;\n g.nodes().forEach((v: string) => {\n const node = g.node(v);\n if (node.x > maxX) {\n maxX = node.x;\n }\n if (node.y < minY) {\n minY = node.y;\n }\n });\n if (maxX !== 0) {\n maxX += COMPONENT_CIRCLE_WIDTH * 2;\n }\n return { x: maxX, y: minY };\n }\n}\n"],"names":[],"mappings":"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"}