@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,175 @@
1
+ import { DefaultLinkModel, PortModelAlignment } from '@projectstorm/react-diagrams';
2
+ import { BezierCurve } from '@projectstorm/geometry';
3
+ import { forIn } from 'lodash';
4
+ import styled from '@emotion/styled';
5
+ import { keyframes, css } from '@emotion/react';
6
+ import { EMPTY_NODE } from '../../resources/constants.esm.js';
7
+ import 'react/jsx-runtime';
8
+ import { CellBounds } from '../Cell/CellNode/CellModel.esm.js';
9
+ import { getCellPortMetadata, getEmptyNodeName } from '../Cell/cell-util.esm.js';
10
+
11
+ class SharedLinkModel extends DefaultLinkModel {
12
+ diagramEngine;
13
+ observations;
14
+ observationOnly;
15
+ tooltip;
16
+ constructor(id, type) {
17
+ super({
18
+ id,
19
+ type
20
+ });
21
+ }
22
+ initLinks = (diagramEngine) => {
23
+ this.diagramEngine = diagramEngine;
24
+ };
25
+ fireEventTroughLink = (event) => {
26
+ const selectTargetPort = (targetNode2, alignment, bound) => {
27
+ if (targetNode2.getType() === EMPTY_NODE && targetNode2.bound === bound) {
28
+ const portMetadata = getCellPortMetadata(targetNode2.getID());
29
+ if (!portMetadata?.args) {
30
+ return;
31
+ }
32
+ const targetPort = targetNode2.getPortFromID(
33
+ `${alignment}-${getEmptyNodeName(bound, ...portMetadata.args)}`
34
+ );
35
+ if (!targetPort) {
36
+ return;
37
+ }
38
+ forIn(targetPort.getLinks(), (link) => {
39
+ link.fireEvent({ component: this }, event);
40
+ });
41
+ }
42
+ };
43
+ this.getSourcePort().getNode().fireEvent({ component: this }, event);
44
+ const targetNode = this.getTargetPort().getNode();
45
+ targetNode.fireEvent({ component: this }, event);
46
+ selectTargetPort(
47
+ targetNode,
48
+ PortModelAlignment.BOTTOM,
49
+ CellBounds.SouthBound
50
+ );
51
+ selectTargetPort(
52
+ targetNode,
53
+ PortModelAlignment.RIGHT,
54
+ CellBounds.EastBound
55
+ );
56
+ };
57
+ selectLinkedNodes = () => {
58
+ this.fireEventTroughLink("SELECT");
59
+ };
60
+ resetLinkedNodes = () => {
61
+ this.fireEventTroughLink("UNSELECT");
62
+ };
63
+ getCurvePath = () => {
64
+ const lineCurve = new BezierCurve();
65
+ if (this.getSourcePort() && this.getTargetPort()) {
66
+ const markerSpace = this.getType() === "componentLink" ? 70 : 120;
67
+ lineCurve.setSource(this.getSourcePort().getPosition());
68
+ lineCurve.setTarget(this.getTargetPort().getPosition());
69
+ const sourcePoint = this.getSourcePort().getPosition().clone();
70
+ const targetPoint = this.getTargetPort().getPosition().clone();
71
+ if (this.getTargetPort().getOptions().alignment === PortModelAlignment.LEFT) {
72
+ targetPoint.x = targetPoint.x - markerSpace;
73
+ } else if (this.getTargetPort().getOptions().alignment === PortModelAlignment.RIGHT) {
74
+ targetPoint.x = targetPoint.x + markerSpace;
75
+ } else if (this.getTargetPort().getOptions().alignment === PortModelAlignment.BOTTOM) {
76
+ targetPoint.y = targetPoint.y + markerSpace;
77
+ } else {
78
+ targetPoint.y = targetPoint.y - markerSpace;
79
+ }
80
+ if (this.getSourcePort().getOptions().alignment === PortModelAlignment.LEFT) {
81
+ sourcePoint.x = sourcePoint.x - markerSpace;
82
+ } else if (this.getSourcePort().getOptions().alignment === PortModelAlignment.RIGHT) {
83
+ sourcePoint.x = sourcePoint.x + markerSpace;
84
+ } else if (this.getSourcePort().getOptions().alignment === PortModelAlignment.BOTTOM) {
85
+ sourcePoint.y = sourcePoint.y + markerSpace;
86
+ } else {
87
+ sourcePoint.y = sourcePoint.y - markerSpace;
88
+ }
89
+ lineCurve.setSourceControl(sourcePoint);
90
+ lineCurve.setTargetControl(targetPoint);
91
+ lineCurve.getSourceControl().translate(...this.calculateControlOffset(this.getSourcePort()));
92
+ lineCurve.getTargetControl().translate(...this.calculateControlOffset(this.getTargetPort()));
93
+ }
94
+ return lineCurve.getSVGCurve();
95
+ };
96
+ getArrowHeadPoints = (scale = 1) => {
97
+ let points = "";
98
+ const sizeMultiplier = Math.max(Math.min(scale / 9, 4), 1);
99
+ const targetPort = this.getTargetPort().getPosition();
100
+ if (this.getTargetPort().getOptions().alignment === PortModelAlignment.RIGHT) {
101
+ points = `${targetPort.x + 2 * sizeMultiplier} ${targetPort.y}, ${targetPort.x + 12 * sizeMultiplier} ${targetPort.y + 6 * sizeMultiplier},
102
+ ${targetPort.x + 12 * sizeMultiplier} ${targetPort.y - 6 * sizeMultiplier}`;
103
+ } else if (this.getTargetPort().getOptions().alignment === PortModelAlignment.LEFT) {
104
+ points = `${targetPort.x} ${targetPort.y}, ${targetPort.x - 14 * sizeMultiplier} ${targetPort.y + 10 * sizeMultiplier},
105
+ ${targetPort.x - 14 * sizeMultiplier} ${targetPort.y - 10 * sizeMultiplier}`;
106
+ } else if (this.getTargetPort().getOptions().alignment === PortModelAlignment.BOTTOM) {
107
+ points = `${targetPort.x} ${targetPort.y + 2 * sizeMultiplier}, ${targetPort.x + 10 * sizeMultiplier} ${targetPort.y + 14 * sizeMultiplier},
108
+ ${targetPort.x - 10 * sizeMultiplier} ${targetPort.y + 14 * sizeMultiplier}`;
109
+ } else if (this.getTargetPort().getOptions().alignment === PortModelAlignment.TOP) {
110
+ points = `${targetPort.x} ${targetPort.y}, ${targetPort.x + 10 * sizeMultiplier} ${targetPort.y - 15 * sizeMultiplier},
111
+ ${targetPort.x - 10 * sizeMultiplier} ${targetPort.y - 15 * sizeMultiplier}`;
112
+ }
113
+ return points;
114
+ };
115
+ setObservations = (observations, observationOnly) => {
116
+ this.observations = observations;
117
+ if (observationOnly) {
118
+ this.observationOnly = observationOnly;
119
+ }
120
+ };
121
+ setTooltip = (tooltip) => {
122
+ this.tooltip = tooltip;
123
+ };
124
+ getMidPoint = () => {
125
+ const sourcePortPosition = this.getSourcePort().getPosition();
126
+ const targetPortPosition = this.getTargetPort().getPosition();
127
+ return {
128
+ x: (sourcePortPosition.x + targetPortPosition.x) / 2,
129
+ y: (sourcePortPosition.y + targetPortPosition.y) / 2
130
+ };
131
+ };
132
+ scaleValueToLinkWidth = (requestCount, minRequestCount, maxRequestCount, maxPossibleRequestCount = 1e3, minStrokeWidth = 2, maxFullStrokeWidth = 30) => {
133
+ const boundedRequestCount = Math.max(
134
+ minRequestCount,
135
+ Math.min(requestCount, maxRequestCount)
136
+ );
137
+ const range = maxRequestCount - minRequestCount;
138
+ const normalizedCount = (boundedRequestCount - minRequestCount) / range;
139
+ const normalizedMaxCount = 1;
140
+ const base = 10;
141
+ const logCount = Math.log(normalizedCount + 1) / Math.log(base);
142
+ const logMaxCount = Math.log(normalizedMaxCount + 1) / Math.log(base);
143
+ const scalingFactor = maxRequestCount < maxPossibleRequestCount ? maxRequestCount / maxPossibleRequestCount : 1;
144
+ const dynamicMaxStrokeWidth = minStrokeWidth + scalingFactor * (maxFullStrokeWidth - minStrokeWidth);
145
+ const scale = logCount / logMaxCount * (dynamicMaxStrokeWidth - minStrokeWidth);
146
+ return minStrokeWidth + scale;
147
+ };
148
+ getLinkArrowId = () => {
149
+ const id = this.getID().replace(/[^a-zA-Z0-9]/g, "");
150
+ return `${id}-arrow`;
151
+ };
152
+ }
153
+ var SharedLink;
154
+ ((SharedLink2) => {
155
+ SharedLink2.Keyframes = keyframes`
156
+ from {
157
+ stroke-dashoffset: 24;
158
+ }
159
+ to {
160
+ stroke-dashoffset: 0;
161
+ }
162
+ `;
163
+ const selected = css`
164
+ stroke-dasharray: 10, 6;
165
+ animation: ${SharedLink2.Keyframes} 1s linear infinite;
166
+ `;
167
+ SharedLink2.Path = styled.path`
168
+ ${(p) => p.selected && selected};
169
+ fill: none;
170
+ pointer-events: auto;
171
+ `;
172
+ })(SharedLink || (SharedLink = {}));
173
+
174
+ export { SharedLink, SharedLinkModel };
175
+ //# sourceMappingURL=SharedLink.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharedLink.esm.js","sources":["../../../src/components/SharedLink/SharedLink.ts"],"sourcesContent":["import {\n DefaultLinkModel,\n DiagramEngine,\n NodeModel,\n PortModelAlignment,\n} from '@projectstorm/react-diagrams';\nimport { BezierCurve, Point } from '@projectstorm/geometry';\nimport { forIn } from 'lodash';\nimport styled from '@emotion/styled';\nimport { css, keyframes } from '@emotion/react';\nimport { EMPTY_NODE } from '../../resources';\nimport { EmptyModel } from '../Cell/EmptyNode/EmptyModel';\nimport { CellBounds } from '../Cell/CellNode/CellModel';\nimport { getCellPortMetadata } from '../Cell/cell-util';\nimport { getEmptyNodeName } from '../Cell/cell-util';\nimport { Observations } from '../../types';\n\nexport class SharedLinkModel extends DefaultLinkModel {\n diagramEngine!: DiagramEngine;\n observations!: Observations[];\n observationOnly!: boolean;\n tooltip!: string;\n\n constructor(id: string, type: string) {\n super({\n id: id,\n type: type,\n });\n }\n\n initLinks = (diagramEngine: DiagramEngine) => {\n this.diagramEngine = diagramEngine;\n };\n\n fireEventTroughLink = (event: string) => {\n const selectTargetPort = (\n targetNode: NodeModel,\n alignment: PortModelAlignment,\n bound: CellBounds,\n ) => {\n if (\n targetNode.getType() === EMPTY_NODE &&\n (targetNode as EmptyModel).bound === bound\n ) {\n const portMetadata = getCellPortMetadata(targetNode.getID());\n if (!portMetadata?.args) {\n return;\n }\n const targetPort = targetNode.getPortFromID(\n `${alignment}-${getEmptyNodeName(bound, ...portMetadata.args)}`,\n );\n if (!targetPort) {\n return;\n }\n forIn(targetPort.getLinks(), link => {\n link.fireEvent({ component: this }, event);\n });\n }\n };\n\n // notify source node\n this.getSourcePort().getNode().fireEvent({ component: this }, event);\n // notify target node\n const targetNode = this.getTargetPort().getNode();\n // notify immediate target node\n targetNode.fireEvent({ component: this }, event);\n // notify target connection nodes\n selectTargetPort(\n targetNode,\n PortModelAlignment.BOTTOM,\n CellBounds.SouthBound,\n );\n // notify target inter org service nodes\n selectTargetPort(\n targetNode,\n PortModelAlignment.RIGHT,\n CellBounds.EastBound,\n );\n };\n\n selectLinkedNodes = () => {\n this.fireEventTroughLink('SELECT');\n };\n\n resetLinkedNodes = () => {\n this.fireEventTroughLink('UNSELECT');\n };\n\n getCurvePath = (): string => {\n const lineCurve = new BezierCurve();\n\n if (this.getSourcePort() && this.getTargetPort()) {\n const markerSpace: number = this.getType() === 'componentLink' ? 70 : 120;\n\n lineCurve.setSource(this.getSourcePort().getPosition());\n lineCurve.setTarget(this.getTargetPort().getPosition());\n\n // With a leeway space for the marker\n const sourcePoint: Point = this.getSourcePort().getPosition().clone();\n const targetPoint: Point = this.getTargetPort().getPosition().clone();\n\n if (\n this.getTargetPort().getOptions().alignment === PortModelAlignment.LEFT\n ) {\n targetPoint.x = targetPoint.x - markerSpace;\n } else if (\n this.getTargetPort().getOptions().alignment === PortModelAlignment.RIGHT\n ) {\n targetPoint.x = targetPoint.x + markerSpace;\n } else if (\n this.getTargetPort().getOptions().alignment ===\n PortModelAlignment.BOTTOM\n ) {\n targetPoint.y = targetPoint.y + markerSpace;\n } else {\n targetPoint.y = targetPoint.y - markerSpace;\n }\n\n if (\n this.getSourcePort().getOptions().alignment === PortModelAlignment.LEFT\n ) {\n sourcePoint.x = sourcePoint.x - markerSpace;\n } else if (\n this.getSourcePort().getOptions().alignment === PortModelAlignment.RIGHT\n ) {\n sourcePoint.x = sourcePoint.x + markerSpace;\n } else if (\n this.getSourcePort().getOptions().alignment ===\n PortModelAlignment.BOTTOM\n ) {\n sourcePoint.y = sourcePoint.y + markerSpace;\n } else {\n sourcePoint.y = sourcePoint.y - markerSpace;\n }\n\n lineCurve.setSourceControl(sourcePoint);\n lineCurve.setTargetControl(targetPoint);\n lineCurve\n .getSourceControl()\n .translate(...this.calculateControlOffset(this.getSourcePort()));\n lineCurve\n .getTargetControl()\n .translate(...this.calculateControlOffset(this.getTargetPort()));\n }\n\n return lineCurve.getSVGCurve();\n };\n\n getArrowHeadPoints = (scale = 1): string => {\n let points: string = '';\n const sizeMultiplier = Math.max(Math.min(scale / 9, 4), 1);\n const targetPort: Point = this.getTargetPort().getPosition();\n\n if (\n this.getTargetPort().getOptions().alignment === PortModelAlignment.RIGHT\n ) {\n points = `${targetPort.x + 2 * sizeMultiplier} ${targetPort.y}, ${\n targetPort.x + 12 * sizeMultiplier\n } ${targetPort.y + 6 * sizeMultiplier},\n ${targetPort.x + 12 * sizeMultiplier} ${\n targetPort.y - 6 * sizeMultiplier\n }`;\n } else if (\n this.getTargetPort().getOptions().alignment === PortModelAlignment.LEFT\n ) {\n points = `${targetPort.x} ${targetPort.y}, ${\n targetPort.x - 14 * sizeMultiplier\n } ${targetPort.y + 10 * sizeMultiplier},\n ${targetPort.x - 14 * sizeMultiplier} ${\n targetPort.y - 10 * sizeMultiplier\n }`;\n } else if (\n this.getTargetPort().getOptions().alignment === PortModelAlignment.BOTTOM\n ) {\n points = `${targetPort.x} ${targetPort.y + 2 * sizeMultiplier}, ${\n targetPort.x + 10 * sizeMultiplier\n } ${targetPort.y + 14 * sizeMultiplier},\n ${targetPort.x - 10 * sizeMultiplier} ${\n targetPort.y + 14 * sizeMultiplier\n }`;\n } else if (\n this.getTargetPort().getOptions().alignment === PortModelAlignment.TOP\n ) {\n points = `${targetPort.x} ${targetPort.y}, ${\n targetPort.x + 10 * sizeMultiplier\n } ${targetPort.y - 15 * sizeMultiplier},\n ${targetPort.x - 10 * sizeMultiplier} ${\n targetPort.y - 15 * sizeMultiplier\n }`;\n }\n return points;\n };\n\n setObservations = (\n observations: Observations[],\n observationOnly?: boolean,\n ) => {\n this.observations = observations;\n if (observationOnly) {\n this.observationOnly = observationOnly;\n }\n };\n\n setTooltip = (tooltip: string) => {\n this.tooltip = tooltip;\n };\n\n getMidPoint = () => {\n const sourcePortPosition = this.getSourcePort().getPosition();\n const targetPortPosition = this.getTargetPort().getPosition();\n // Get midpoint of the link line\n return {\n x: (sourcePortPosition.x + targetPortPosition.x) / 2,\n y: (sourcePortPosition.y + targetPortPosition.y) / 2,\n };\n };\n\n scaleValueToLinkWidth = (\n requestCount: number,\n minRequestCount: number,\n maxRequestCount: number,\n maxPossibleRequestCount: number = 1000,\n minStrokeWidth: number = 2,\n maxFullStrokeWidth: number = 30,\n ): number => {\n // Ensure the request count is within the min and max bounds\n const boundedRequestCount = Math.max(\n minRequestCount,\n Math.min(requestCount, maxRequestCount),\n );\n const range = maxRequestCount - minRequestCount;\n const normalizedCount = (boundedRequestCount - minRequestCount) / range;\n const normalizedMaxCount = 1; // Normalized value of max count in the range\n const base = 10;\n // Logarithmic transformation with a base\n const logCount = Math.log(normalizedCount + 1) / Math.log(base);\n const logMaxCount = Math.log(normalizedMaxCount + 1) / Math.log(base);\n // Adjusting the scaling factor based on max request count\n const scalingFactor =\n maxRequestCount < maxPossibleRequestCount\n ? maxRequestCount / maxPossibleRequestCount\n : 1;\n // Scale to stroke width range\n const dynamicMaxStrokeWidth =\n minStrokeWidth + scalingFactor * (maxFullStrokeWidth - minStrokeWidth);\n const scale =\n (logCount / logMaxCount) * (dynamicMaxStrokeWidth - minStrokeWidth);\n return minStrokeWidth + scale;\n };\n\n getLinkArrowId = () => {\n // remove special characters from id\n const id = this.getID().replace(/[^a-zA-Z0-9]/g, '');\n return `${id}-arrow`;\n };\n}\n\nexport namespace SharedLink {\n export const Keyframes = keyframes`\n\t\tfrom {\n\t\t\tstroke-dashoffset: 24;\n\t\t}\n\t\tto {\n\t\t\tstroke-dashoffset: 0;\n\t\t}\n\t`;\n\n const selected = css`\n stroke-dasharray: 10, 6;\n animation: ${Keyframes} 1s linear infinite;\n `;\n\n export const Path = styled.path<{ selected: boolean }>`\n ${p => p.selected && selected};\n fill: none;\n pointer-events: auto;\n `;\n}\n"],"names":["targetNode","SharedLink"],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { NodeModel } from '@projectstorm/react-diagrams';
2
+ import { LINE_MIN_WIDTH, LINE_MAX_WIDTH } from '../../resources/constants.esm.js';
3
+ import 'react/jsx-runtime';
4
+
5
+ class SharedNodeModel extends NodeModel {
6
+ constructor(type, id) {
7
+ super({
8
+ type,
9
+ id
10
+ });
11
+ }
12
+ handleHover = (ports, task) => {
13
+ if (ports.length > 0) {
14
+ ports.forEach((port) => {
15
+ const portLinks = new Map(
16
+ Object.entries(port.links)
17
+ );
18
+ portLinks.forEach((link) => {
19
+ if (link.getSourcePort().getID() === port.getID()) {
20
+ link.fireEvent({}, task);
21
+ }
22
+ });
23
+ });
24
+ }
25
+ };
26
+ isNodeSelected = (selectedLink, portIdentifier) => {
27
+ if (selectedLink) {
28
+ if (selectedLink.getSourcePort().getNode().getID() === this.getID()) {
29
+ const sourcePortID = selectedLink.getSourcePort().getID();
30
+ return sourcePortID.slice(sourcePortID.indexOf("-") + 1) === portIdentifier;
31
+ } else if (selectedLink.getTargetPort().getNode().getID() === this.getID()) {
32
+ const targetPortID = selectedLink.getTargetPort().getID();
33
+ return targetPortID.slice(targetPortID.indexOf("-") + 1) === portIdentifier;
34
+ }
35
+ }
36
+ return false;
37
+ };
38
+ getDynamicLineWidth = (zoomLevel, minWidth = LINE_MIN_WIDTH, maxWidth = LINE_MAX_WIDTH) => {
39
+ return Math.min(Math.max(minWidth, 100 / zoomLevel), maxWidth);
40
+ };
41
+ }
42
+
43
+ export { SharedNodeModel };
44
+ //# sourceMappingURL=SharedNode.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharedNode.esm.js","sources":["../../../src/components/SharedNode/SharedNode.ts"],"sourcesContent":["import {\n LinkModel,\n NodeModel,\n NodeModelGenerics,\n PortModel,\n} from '@projectstorm/react-diagrams';\nimport { ComponentLinkModel } from '../Component/ComponentLink/ComponentLinkModel';\nimport { LINE_MAX_WIDTH, LINE_MIN_WIDTH } from '../../resources';\n\nexport class SharedNodeModel extends NodeModel<NodeModelGenerics> {\n constructor(type: string, id: string) {\n super({\n type: type,\n id: id,\n });\n }\n\n handleHover = (ports: PortModel[], task: string) => {\n if (ports.length > 0) {\n ports.forEach(port => {\n const portLinks: Map<string, LinkModel> = new Map(\n Object.entries(port.links),\n );\n portLinks.forEach(link => {\n if (link.getSourcePort().getID() === port.getID()) {\n link.fireEvent({}, task);\n }\n });\n });\n }\n };\n\n isNodeSelected = (\n selectedLink: ComponentLinkModel,\n portIdentifier: string,\n ): boolean => {\n if (selectedLink) {\n if (selectedLink.getSourcePort().getNode().getID() === this.getID()) {\n const sourcePortID: string = selectedLink.getSourcePort().getID();\n return (\n sourcePortID.slice(sourcePortID.indexOf('-') + 1) === portIdentifier\n );\n } else if (\n selectedLink.getTargetPort().getNode().getID() === this.getID()\n ) {\n const targetPortID: string = selectedLink.getTargetPort().getID();\n return (\n targetPortID.slice(targetPortID.indexOf('-') + 1) === portIdentifier\n );\n }\n }\n return false;\n };\n\n getDynamicLineWidth = (\n zoomLevel: number,\n minWidth = LINE_MIN_WIDTH,\n maxWidth = LINE_MAX_WIDTH,\n ): number => {\n return Math.min(Math.max(minWidth, 100 / zoomLevel), maxWidth);\n };\n}\n"],"names":[],"mappings":";;;;AASO,MAAM,wBAAwB,SAAA,CAA6B;AAAA,EAChE,WAAA,CAAY,MAAc,EAAA,EAAY;AACpC,IAAA,KAAA,CAAM;AAAA,MACJ,IAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAAA,EAEA,WAAA,GAAc,CAAC,KAAA,EAAoB,IAAA,KAAiB;AAClD,IAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,MAAA,KAAA,CAAM,QAAQ,CAAA,IAAA,KAAQ;AACpB,QAAA,MAAM,YAAoC,IAAI,GAAA;AAAA,UAC5C,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,KAAK;AAAA,SAC3B;AACA,QAAA,SAAA,CAAU,QAAQ,CAAA,IAAA,KAAQ;AACxB,UAAA,IAAI,KAAK,aAAA,EAAc,CAAE,OAAM,KAAM,IAAA,CAAK,OAAM,EAAG;AACjD,YAAA,IAAA,CAAK,SAAA,CAAU,EAAC,EAAG,IAAI,CAAA;AAAA,UACzB;AAAA,QACF,CAAC,CAAA;AAAA,MACH,CAAC,CAAA;AAAA,IACH;AAAA,EACF,CAAA;AAAA,EAEA,cAAA,GAAiB,CACf,YAAA,EACA,cAAA,KACY;AACZ,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,IAAI,YAAA,CAAa,eAAc,CAAE,OAAA,GAAU,KAAA,EAAM,KAAM,IAAA,CAAK,KAAA,EAAM,EAAG;AACnE,QAAA,MAAM,YAAA,GAAuB,YAAA,CAAa,aAAA,EAAc,CAAE,KAAA,EAAM;AAChE,QAAA,OACE,aAAa,KAAA,CAAM,YAAA,CAAa,QAAQ,GAAG,CAAA,GAAI,CAAC,CAAA,KAAM,cAAA;AAAA,MAE1D,CAAA,MAAA,IACE,YAAA,CAAa,aAAA,EAAc,CAAE,OAAA,GAAU,KAAA,EAAM,KAAM,IAAA,CAAK,KAAA,EAAM,EAC9D;AACA,QAAA,MAAM,YAAA,GAAuB,YAAA,CAAa,aAAA,EAAc,CAAE,KAAA,EAAM;AAChE,QAAA,OACE,aAAa,KAAA,CAAM,YAAA,CAAa,QAAQ,GAAG,CAAA,GAAI,CAAC,CAAA,KAAM,cAAA;AAAA,MAE1D;AAAA,IACF;AACA,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AAAA,EAEA,sBAAsB,CACpB,SAAA,EACA,QAAA,GAAW,cAAA,EACX,WAAW,cAAA,KACA;AACX,IAAA,OAAO,IAAA,CAAK,IAAI,IAAA,CAAK,GAAA,CAAI,UAAU,GAAA,GAAM,SAAS,GAAG,QAAQ,CAAA;AAAA,EAC/D,CAAA;AACF;;;;"}
@@ -0,0 +1,22 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import styled from '@emotion/styled';
3
+
4
+ const Section = styled.div`
5
+ display: flex;
6
+ flex-direction: column;
7
+ gap: 4px;
8
+ `;
9
+ const Row = styled.div`
10
+ display: flex;
11
+ flex-direction: row;
12
+ justify-content: space-between;
13
+ align-items: center;
14
+ font-family: 'GilmerRegular';
15
+ `;
16
+ function TooltipLabel(props) {
17
+ const { tooltip } = props;
18
+ return /* @__PURE__ */ jsx(Section, { children: /* @__PURE__ */ jsx(Row, { children: tooltip }) });
19
+ }
20
+
21
+ export { TooltipLabel };
22
+ //# sourceMappingURL=TooltipLabel.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TooltipLabel.esm.js","sources":["../../../src/components/TooltipLabel/TooltipLabel.tsx"],"sourcesContent":["import styled from '@emotion/styled';\n\nconst Section = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n`;\n\nconst Row = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n font-family: 'GilmerRegular';\n`;\n\ninterface TooltipLabelProps {\n tooltip: string;\n}\n\nexport function TooltipLabel(props: TooltipLabelProps) {\n const { tooltip } = props;\n\n return (\n <Section>\n <Row>{tooltip}</Row>\n </Section>\n );\n}\n"],"names":[],"mappings":";;;AAEA,MAAM,UAAU,MAAA,CAAO,GAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAMvB,MAAM,MAAM,MAAA,CAAO,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAYZ,SAAS,aAAa,KAAA,EAA0B;AACrD,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AAEpB,EAAA,uBACE,GAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAK,mBAAQ,CAAA,EAChB,CAAA;AAEJ;;;;"}
@@ -0,0 +1,176 @@
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { useState, useEffect } from 'react';
3
+ import { DiagramModel } from '@projectstorm/react-diagrams';
4
+ import { CanvasWidget } from '@projectstorm/react-canvas-core';
5
+ import CircularProgress from '@mui/material/CircularProgress';
6
+ import { generateEngine, animateOrgDiagram } from '../utils/diagramUtils.esm.js';
7
+ import { getDiagramDataFromOrg } from '../utils/orgUtils.esm.js';
8
+ import { PROJECT_NODE, CONNECTION_NODE, Colors } from '../resources/constants.esm.js';
9
+ import '@mui/material/Fade';
10
+ import '@mui/material/Box';
11
+ import '@mui/material/Tooltip';
12
+ import '@mui/icons-material/OpenInNewRounded';
13
+ import '../components/Project/ProjectNode/styles.esm.js';
14
+ import '../components/Project/ProjectPort/styles.esm.js';
15
+ import '../components/Cell/CellNode/styles.esm.js';
16
+ import { CellDiagramContext } from '../components/DiagramContext/DiagramContext.esm.js';
17
+ import '../theme/ThemeContext.esm.js';
18
+ import '../theme/CellDiagramThemeProvider.esm.js';
19
+ import '../components/SharedLink/SharedLink.esm.js';
20
+ import '../components/Project/AdvancedLink/AdvancedLinkFactory.esm.js';
21
+ import { DiagramLayer } from '../types.esm.js';
22
+ import '../components/Component/ComponentNode/styles.esm.js';
23
+ import '../components/MoreVertMenu/MoreVertMenu.esm.js';
24
+ import '../components/ObservationLabel/ObservationLabel.esm.js';
25
+ import '../components/TooltipLabel/TooltipLabel.esm.js';
26
+ import '@mui/material/Popper';
27
+ import '../components/Connection/ConnectionNode/styles.esm.js';
28
+ import '../components/Cell/EmptyNode/styles.esm.js';
29
+ import '../components/External/ExternalNode/styles.esm.js';
30
+ import '@projectstorm/geometry';
31
+ import { OverlayLayerModel } from '../components/OverlayLoader/OverlayLayerModel.esm.js';
32
+ import '../components/OverlayLoader/OverlayLayerWidget.esm.js';
33
+ import '../components/PromptScreen/PromptScreen.esm.js';
34
+ import '../components/Header/Header.esm.js';
35
+ import { DiagramControls } from '../components/Controls/DiagramControls.esm.js';
36
+ import { DagreEngine } from '../resources/Dagre/DagreEngine.esm.js';
37
+ import { useStyles, Container, DiagramContainer } from '../utils/CanvasStyles.esm.js';
38
+
39
+ function OrgDiagram(props) {
40
+ const {
41
+ organization,
42
+ componentMenu,
43
+ showControls = true,
44
+ animation = true,
45
+ defaultDiagramLayer = DiagramLayer.ARCHITECTURE,
46
+ onComponentDoubleClick
47
+ } = props;
48
+ const [diagramEngine] = useState(generateEngine);
49
+ const [diagramModel, setDiagramModel] = useState(
50
+ void 0
51
+ );
52
+ const [selectedNodeId, setSelectedNodeId] = useState("");
53
+ const [focusedNodeId, setFocusedNodeId] = useState("");
54
+ const [zoomLevel, setZoomLevel] = useState(1);
55
+ const [isDiagramLoaded, setIsDiagramLoaded] = useState(false);
56
+ const styles = useStyles();
57
+ useEffect(() => {
58
+ if (diagramEngine) {
59
+ drawDiagram();
60
+ }
61
+ return () => {
62
+ diagramEngine.getModel()?.getNodes().forEach((node) => {
63
+ node.clearListeners();
64
+ });
65
+ };
66
+ }, [props]);
67
+ useEffect(() => {
68
+ if (diagramEngine && animation && isDiagramLoaded) {
69
+ animateOrgDiagram();
70
+ diagramEngine.repaintCanvas();
71
+ }
72
+ }, [isDiagramLoaded, diagramEngine]);
73
+ useEffect(() => {
74
+ const listener = diagramEngine.getModel()?.registerListener({
75
+ zoomUpdated: (event) => {
76
+ setZoomLevel(event.zoom);
77
+ }
78
+ });
79
+ return () => {
80
+ diagramEngine.getModel()?.deregisterListener(listener);
81
+ };
82
+ }, [diagramEngine]);
83
+ useEffect(() => {
84
+ if (diagramEngine.getCanvas()) {
85
+ document.addEventListener("keydown", handleEscapePress);
86
+ }
87
+ return () => {
88
+ document.removeEventListener("keydown", handleEscapePress);
89
+ };
90
+ }, [diagramModel, diagramEngine.getCanvas()]);
91
+ function handleEscapePress(event) {
92
+ if (event.key === "Escape" && selectedNodeId) {
93
+ setSelectedNodeId("");
94
+ }
95
+ }
96
+ const drawDiagram = () => {
97
+ const diagramData = getDiagramDataFromOrg(organization);
98
+ const model = new DiagramModel();
99
+ model.addLayer(new OverlayLayerModel());
100
+ const models = model.addAll(
101
+ ...diagramData.nodes.projectNodes.values(),
102
+ ...diagramData.links.projectLinks.values()
103
+ );
104
+ diagramEngine.setModel(model);
105
+ setDiagramModel(model);
106
+ setTimeout(() => {
107
+ const dagreEngine = new DagreEngine({
108
+ graph: {
109
+ rankdir: "LR",
110
+ ranksep: 110,
111
+ edgesep: 44,
112
+ nodesep: 20,
113
+ // acyclicer: 'greedy',
114
+ ranker: "network-simplex"
115
+ },
116
+ includeLinks: true
117
+ });
118
+ dagreEngine.redistribute(model);
119
+ const links = model.getLinks();
120
+ let maxY = 0;
121
+ links.forEach((link) => {
122
+ link.getPoints().forEach((point) => {
123
+ if (point.getY() > maxY) {
124
+ maxY = point.getY();
125
+ }
126
+ });
127
+ });
128
+ const nodes = model.getNodes();
129
+ nodes.forEach((node) => {
130
+ if (node.getType() === PROJECT_NODE) {
131
+ const y = node.getY() + 120;
132
+ if (y > maxY) {
133
+ maxY = y;
134
+ }
135
+ }
136
+ });
137
+ models.forEach((node) => {
138
+ if (node.getType() === CONNECTION_NODE) {
139
+ node.setPosition(0, maxY + 40);
140
+ }
141
+ });
142
+ if (diagramEngine.getCanvas()?.getBoundingClientRect()) {
143
+ diagramEngine.zoomToFitNodes({ margin: 40, maxZoom: 1 });
144
+ }
145
+ const overlayLayer = diagramEngine.getModel().getLayers().find((layer) => layer instanceof OverlayLayerModel);
146
+ if (overlayLayer) {
147
+ diagramEngine.getModel().removeLayer(overlayLayer);
148
+ }
149
+ diagramEngine.setModel(model);
150
+ diagramEngine.repaintCanvas();
151
+ setIsDiagramLoaded(true);
152
+ }, 1e3);
153
+ };
154
+ const ctx = {
155
+ selectedNodeId,
156
+ focusedNodeId,
157
+ componentMenu,
158
+ zoomLevel,
159
+ defaultDiagramLayer,
160
+ setSelectedNodeId,
161
+ setFocusedNodeId,
162
+ onComponentDoubleClick
163
+ };
164
+ const handleCanvasClick = (event) => {
165
+ if (focusedNodeId && event.target === diagramEngine.getCanvas()) {
166
+ setFocusedNodeId("");
167
+ }
168
+ };
169
+ return /* @__PURE__ */ jsx(Container, { children: /* @__PURE__ */ jsx(CellDiagramContext, { ...ctx, children: /* @__PURE__ */ jsx(DiagramContainer, { onClick: handleCanvasClick, children: diagramEngine?.getModel() && diagramModel ? /* @__PURE__ */ jsxs(Fragment, { children: [
170
+ /* @__PURE__ */ jsx(CanvasWidget, { engine: diagramEngine, className: styles.canvas }),
171
+ showControls && /* @__PURE__ */ jsx(DiagramControls, { engine: diagramEngine, animation })
172
+ ] }) : /* @__PURE__ */ jsx(CircularProgress, { sx: { color: Colors.PRIMARY } }) }) }) });
173
+ }
174
+
175
+ export { DiagramLayer, OrgDiagram };
176
+ //# sourceMappingURL=OrgDiagram.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrgDiagram.esm.js","sources":["../../src/diagrams/OrgDiagram.tsx"],"sourcesContent":["import { MouseEvent, useEffect, useState } from 'react';\nimport { DiagramEngine, DiagramModel } from '@projectstorm/react-diagrams';\nimport { CanvasWidget } from '@projectstorm/react-canvas-core';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport {\n generateEngine,\n getDiagramDataFromOrg,\n animateOrgDiagram,\n} from '../utils';\nimport {\n DiagramControls,\n OverlayLayerModel,\n CellDiagramContext,\n ConnectionModel,\n} from '../components';\nimport { CONNECTION_NODE, Colors, PROJECT_NODE } from '../resources';\nimport { Container, DiagramContainer, useStyles } from '../utils/CanvasStyles';\nimport {\n CustomTooltips,\n DiagramLayer,\n MoreVertMenuItem,\n Organization,\n} from '../types';\nimport { DagreEngine } from '../resources/Dagre/DagreEngine';\n\nexport { DiagramLayer } from '../types';\nexport type { MoreVertMenuItem, Project } from '../types';\n\nexport interface OrgDiagramProps {\n organization: Organization;\n componentMenu?: MoreVertMenuItem[];\n showControls?: boolean;\n animation?: boolean;\n defaultDiagramLayer?: DiagramLayer;\n customTooltips?: CustomTooltips;\n onComponentDoubleClick?: (componentId: string) => void;\n}\n\nexport function OrgDiagram(props: OrgDiagramProps) {\n const {\n organization,\n componentMenu,\n showControls = true,\n animation = true,\n defaultDiagramLayer = DiagramLayer.ARCHITECTURE,\n onComponentDoubleClick,\n } = props;\n\n const [diagramEngine] = useState<DiagramEngine>(generateEngine);\n const [diagramModel, setDiagramModel] = useState<DiagramModel | undefined>(\n undefined,\n );\n const [selectedNodeId, setSelectedNodeId] = useState<string>('');\n const [focusedNodeId, setFocusedNodeId] = useState<string>('');\n const [zoomLevel, setZoomLevel] = useState(1);\n const [isDiagramLoaded, setIsDiagramLoaded] = useState(false);\n\n const styles = useStyles();\n\n useEffect(() => {\n if (diagramEngine) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n drawDiagram();\n }\n return () => {\n diagramEngine\n .getModel()\n ?.getNodes()\n .forEach(node => {\n node.clearListeners();\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props]);\n\n useEffect(() => {\n if (diagramEngine && animation && isDiagramLoaded) {\n animateOrgDiagram();\n diagramEngine.repaintCanvas();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDiagramLoaded, diagramEngine]);\n\n useEffect(() => {\n const listener = diagramEngine.getModel()?.registerListener({\n zoomUpdated: (event: any) => {\n setZoomLevel(event.zoom);\n },\n });\n return () => {\n diagramEngine.getModel()?.deregisterListener(listener);\n };\n }, [diagramEngine]);\n\n useEffect(() => {\n if (diagramEngine.getCanvas()) {\n document.addEventListener('keydown', handleEscapePress);\n }\n return () => {\n document.removeEventListener('keydown', handleEscapePress);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [diagramModel, diagramEngine.getCanvas()]);\n\n function handleEscapePress(event: KeyboardEvent) {\n if (event.key === 'Escape' && selectedNodeId) {\n setSelectedNodeId('');\n }\n }\n\n // draw diagram\n const drawDiagram = () => {\n const diagramData = getDiagramDataFromOrg(organization);\n // create diagram model\n const model = new DiagramModel();\n // add preloader overlay layer\n model.addLayer(new OverlayLayerModel());\n // add node and links to diagram model\n const models = model.addAll(\n // nodes\n ...diagramData.nodes.projectNodes.values(),\n // links\n ...diagramData.links.projectLinks.values(),\n );\n\n // draw diagram with all nodes and links\n diagramEngine.setModel(model);\n setDiagramModel(model);\n\n setTimeout(() => {\n const dagreEngine = new DagreEngine({\n graph: {\n rankdir: 'LR',\n ranksep: 110,\n edgesep: 44,\n nodesep: 20,\n // acyclicer: 'greedy',\n ranker: 'network-simplex',\n },\n includeLinks: true,\n });\n dagreEngine.redistribute(model);\n\n // get all links and find link in the bottom of the diagram and find y coordinate\n const links = model.getLinks();\n let maxY = 0;\n links.forEach(link => {\n link.getPoints().forEach(point => {\n if (point.getY() > maxY) {\n maxY = point.getY();\n }\n });\n });\n\n // get all nodes and find node in the bottom of the diagram and find y coordinate\n const nodes = model.getNodes();\n nodes.forEach(node => {\n if (node.getType() === PROJECT_NODE) {\n const y = node.getY() + 120;\n if (y > maxY) {\n maxY = y;\n }\n }\n });\n\n // update connection nodes position to the bottom of the diagram\n models.forEach(node => {\n if (node.getType() === CONNECTION_NODE) {\n (node as ConnectionModel).setPosition(0, maxY + 40);\n }\n });\n\n if (diagramEngine.getCanvas()?.getBoundingClientRect()) {\n // zoom to fit nodes and center diagram\n diagramEngine.zoomToFitNodes({ margin: 40, maxZoom: 1 });\n }\n // remove preloader overlay layer\n const overlayLayer = diagramEngine\n .getModel()\n .getLayers()\n .find(layer => layer instanceof OverlayLayerModel);\n if (overlayLayer) {\n diagramEngine.getModel().removeLayer(overlayLayer);\n }\n // update diagram\n diagramEngine.setModel(model);\n diagramEngine.repaintCanvas();\n // After all diagram setup is complete\n setIsDiagramLoaded(true);\n }, 1000);\n };\n\n const ctx = {\n selectedNodeId,\n focusedNodeId,\n componentMenu,\n zoomLevel,\n defaultDiagramLayer,\n setSelectedNodeId,\n setFocusedNodeId,\n onComponentDoubleClick,\n };\n\n const handleCanvasClick = (\n event: MouseEvent<HTMLDivElement, globalThis.MouseEvent>,\n ) => {\n if (focusedNodeId && event.target === diagramEngine.getCanvas()) {\n setFocusedNodeId('');\n }\n };\n\n return (\n <Container>\n <CellDiagramContext {...ctx}>\n <DiagramContainer onClick={handleCanvasClick}>\n {diagramEngine?.getModel() && diagramModel ? (\n <>\n <CanvasWidget engine={diagramEngine} className={styles.canvas} />\n {showControls && (\n <DiagramControls engine={diagramEngine} animation={animation} />\n )}\n </>\n ) : (\n <CircularProgress sx={{ color: Colors.PRIMARY }} />\n )}\n </DiagramContainer>\n </CellDiagramContext>\n </Container>\n );\n}\n"],"names":[],"mappings":"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"}