@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,64 @@
1
+ import styled from '@emotion/styled';
2
+ import { CIRCLE_WIDTH, LABEL_FONT_SIZE, LABEL_MAX_WIDTH, ICON_SCALE } from '../../../resources/constants.esm.js';
3
+ import 'react/jsx-runtime';
4
+ import { Orientation } from './ConnectionModel.esm.js';
5
+
6
+ const getConnectionHeadBorderColor = ({
7
+ theme,
8
+ isSelected,
9
+ isFocused
10
+ }) => {
11
+ if (isSelected) {
12
+ return theme.colors.SECONDARY;
13
+ }
14
+ if (isFocused) {
15
+ return theme.colors.SECONDARY;
16
+ }
17
+ return theme.colors.OUTLINE;
18
+ };
19
+ const ConnectionNode = styled.div`
20
+ color: ${({ theme }) => theme.colors.ON_SURFACE_VARIANT};
21
+ display: flex;
22
+ flex-direction: ${(props) => props.orientation === Orientation.VERTICAL ? "column" : "row"};
23
+ align-items: center;
24
+ justify-content: center;
25
+ gap: 10px;
26
+ padding: 2px;
27
+ pointer-events: all;
28
+ cursor: ${(props) => props.previewMode ? "pointer" : "grab"};
29
+ &:active {
30
+ cursor: ${(props) => props.previewMode ? "pointer" : "grabbing"};
31
+ }
32
+ `;
33
+ const ConnectionHead = styled.div`
34
+ background-color: ${({ theme, isSelected }) => isSelected ? theme.colors.SECONDARY_CONTAINER : theme.colors.SURFACE};
35
+ border: ${({ theme, borderWidth, isSelected, isFocused }) => `${borderWidth}px solid ${getConnectionHeadBorderColor({
36
+ theme,
37
+ isSelected,
38
+ isFocused
39
+ })}`};
40
+ border-radius: 50%;
41
+ height: ${CIRCLE_WIDTH}px;
42
+ width: ${CIRCLE_WIDTH}px;
43
+ display: flex;
44
+ justify-content: center;
45
+ align-items: center;
46
+ `;
47
+ const ConnectionName = styled.span`
48
+ font-size: ${LABEL_FONT_SIZE}px;
49
+ white-space: nowrap;
50
+ overflow: hidden;
51
+ text-overflow: ellipsis;
52
+ max-width: ${(props) => props.orientation === Orientation.VERTICAL ? LABEL_MAX_WIDTH : "unset"};
53
+ `;
54
+ const IconWrapper = styled.div`
55
+ height: 32px;
56
+ width: 32px;
57
+ svg {
58
+ fill: ${({ theme, isSelected }) => isSelected ? theme.colors.SECONDARY : theme.colors.OUTLINE};
59
+ transform: ${({ previewMode }) => previewMode ? `scale(${ICON_SCALE.PREVIEW})` : "none"};
60
+ }
61
+ `;
62
+
63
+ export { ConnectionHead, ConnectionName, ConnectionNode, IconWrapper };
64
+ //# sourceMappingURL=styles.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.esm.js","sources":["../../../../src/components/Connection/ConnectionNode/styles.ts"],"sourcesContent":["import styled from '@emotion/styled';\nimport { Theme } from '@emotion/react';\nimport {\n CIRCLE_WIDTH,\n ICON_SCALE,\n LABEL_FONT_SIZE,\n LABEL_MAX_WIDTH,\n} from '../../../resources';\nimport { Orientation } from './ConnectionModel';\n\ninterface StyleProps {\n isAnonymous?: boolean;\n isSelected?: boolean;\n isClickable?: boolean;\n isCollapsed?: boolean;\n isFocused?: boolean;\n orientation?: Orientation;\n borderWidth?: number;\n previewMode?: boolean;\n}\n\nconst getConnectionHeadBorderColor = ({\n theme,\n isSelected,\n isFocused,\n}: Pick<StyleProps, 'isSelected' | 'isFocused'> & { theme: Theme }) => {\n if (isSelected) {\n return theme.colors.SECONDARY;\n }\n if (isFocused) {\n return theme.colors.SECONDARY;\n }\n return theme.colors.OUTLINE;\n};\n\nexport const ConnectionNode = styled.div<StyleProps>`\n color: ${({ theme }) => theme.colors.ON_SURFACE_VARIANT};\n display: flex;\n flex-direction: ${(props: StyleProps) =>\n props.orientation === Orientation.VERTICAL ? 'column' : 'row'};\n align-items: center;\n justify-content: center;\n gap: 10px;\n padding: 2px;\n pointer-events: all;\n cursor: ${(props: StyleProps) => (props.previewMode ? 'pointer' : 'grab')};\n &:active {\n cursor: ${(props: StyleProps) =>\n props.previewMode ? 'pointer' : 'grabbing'};\n }\n`;\n\nexport const ConnectionHead = styled.div<StyleProps>`\n background-color: ${({ theme, isSelected }) =>\n isSelected ? theme.colors.SECONDARY_CONTAINER : theme.colors.SURFACE};\n border: ${({ theme, borderWidth, isSelected, isFocused }) =>\n `${borderWidth}px solid ${getConnectionHeadBorderColor({\n theme,\n isSelected,\n isFocused,\n })}`};\n border-radius: 50%;\n height: ${CIRCLE_WIDTH}px;\n width: ${CIRCLE_WIDTH}px;\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport const ConnectionName = styled.span<StyleProps>`\n font-size: ${LABEL_FONT_SIZE}px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: ${(props: StyleProps) =>\n props.orientation === Orientation.VERTICAL ? LABEL_MAX_WIDTH : 'unset'};\n`;\n\ninterface IconWrapperStyleProps {\n previewMode: boolean;\n isSelected?: boolean;\n}\nexport const IconWrapper = styled.div<IconWrapperStyleProps>`\n height: 32px;\n width: 32px;\n svg {\n fill: ${({ theme, isSelected }) =>\n isSelected ? theme.colors.SECONDARY : theme.colors.OUTLINE};\n transform: ${({ previewMode }) =>\n previewMode ? `scale(${ICON_SCALE.PREVIEW})` : 'none'};\n }\n`;\n"],"names":[],"mappings":";;;;;AAqBA,MAAM,+BAA+B,CAAC;AAAA,EACpC,KAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,KAAuE;AACrE,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,OAAO,MAAM,MAAA,CAAO,SAAA;AAAA,EACtB;AACA,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,OAAO,MAAM,MAAA,CAAO,SAAA;AAAA,EACtB;AACA,EAAA,OAAO,MAAM,MAAA,CAAO,OAAA;AACtB,CAAA;AAEO,MAAM,iBAAiB,MAAA,CAAO,GAAA;AAAA,SAAA,EAC1B,CAAC,EAAE,KAAA,EAAM,KAAM,KAAA,CAAM,OAAO,kBAAkB,CAAA;AAAA;AAAA,kBAAA,EAErC,CAAC,KAAA,KACjB,KAAA,CAAM,gBAAgB,WAAA,CAAY,QAAA,GAAW,WAAW,KAAK,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAA,EAMrD,CAAC,KAAA,KAAuB,KAAA,CAAM,WAAA,GAAc,YAAY,MAAO,CAAA;AAAA;AAAA,YAAA,EAE7D,CAAC,KAAA,KACT,KAAA,CAAM,WAAA,GAAc,YAAY,UAAU,CAAA;AAAA;AAAA;AAIzC,MAAM,iBAAiB,MAAA,CAAO,GAAA;AAAA,oBAAA,EACf,CAAC,EAAE,KAAA,EAAO,UAAA,EAAW,KACvC,UAAA,GAAa,KAAA,CAAM,MAAA,CAAO,mBAAA,GAAsB,KAAA,CAAM,MAAA,CAAO,OAAO,CAAA;AAAA,UAAA,EAC5D,CAAC,EAAE,KAAA,EAAO,WAAA,EAAa,UAAA,EAAY,WAAU,KACrD,CAAA,EAAG,WAAW,CAAA,SAAA,EAAY,4BAAA,CAA6B;AAAA,EACrD,KAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAC,CAAC,CAAA,CAAE,CAAA;AAAA;AAAA,UAAA,EAEI,YAAY,CAAA;AAAA,SAAA,EACb,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA;AAMhB,MAAM,iBAAiB,MAAA,CAAO,IAAA;AAAA,aAAA,EACtB,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EAIf,CAAC,KAAA,KACZ,KAAA,CAAM,gBAAgB,WAAA,CAAY,QAAA,GAAW,kBAAkB,OAAO,CAAA;AAAA;AAOnE,MAAM,cAAc,MAAA,CAAO,GAAA;AAAA;AAAA;AAAA;AAAA,UAAA,EAItB,CAAC,EAAE,KAAA,EAAO,UAAA,EAAW,KAC3B,UAAA,GAAa,KAAA,CAAM,MAAA,CAAO,SAAA,GAAY,KAAA,CAAM,MAAA,CAAO,OAAO,CAAA;AAAA,eAAA,EAC/C,CAAC,EAAE,WAAA,EAAY,KAC1B,cAAc,CAAA,MAAA,EAAS,UAAA,CAAW,OAAO,CAAA,CAAA,CAAA,GAAM,MAAM,CAAA;AAAA;AAAA;;;;"}
@@ -0,0 +1,17 @@
1
+ import { AbstractModelFactory } from '@projectstorm/react-canvas-core';
2
+ import { ConnectionPortModel } from './ConnectionPortModel.esm.js';
3
+
4
+ class ConnectionPortFactory extends AbstractModelFactory {
5
+ constructor() {
6
+ super("connectionPort");
7
+ }
8
+ generateModel(event) {
9
+ return new ConnectionPortModel(
10
+ event.initialConfig.id,
11
+ event.initialConfig.portType
12
+ );
13
+ }
14
+ }
15
+
16
+ export { ConnectionPortFactory };
17
+ //# sourceMappingURL=ConnectionPortFactory.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionPortFactory.esm.js","sources":["../../../../src/components/Connection/ConnectionPort/ConnectionPortFactory.tsx"],"sourcesContent":["import { DiagramEngine, PortModel } from '@projectstorm/react-diagrams';\nimport { AbstractModelFactory } from '@projectstorm/react-canvas-core';\nimport { ConnectionPortModel } from './ConnectionPortModel';\n\nexport class ConnectionPortFactory extends AbstractModelFactory<\n PortModel,\n DiagramEngine\n> {\n constructor() {\n super('connectionPort');\n }\n\n generateModel(event: { initialConfig: any }): ConnectionPortModel {\n return new ConnectionPortModel(\n event.initialConfig.id,\n event.initialConfig.portType,\n );\n }\n}\n"],"names":[],"mappings":";;;AAIO,MAAM,8BAA8B,oBAAA,CAGzC;AAAA,EACA,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,gBAAgB,CAAA;AAAA,EACxB;AAAA,EAEA,cAAc,KAAA,EAAoD;AAChE,IAAA,OAAO,IAAI,mBAAA;AAAA,MACT,MAAM,aAAA,CAAc,EAAA;AAAA,MACpB,MAAM,aAAA,CAAc;AAAA,KACtB;AAAA,EACF;AACF;;;;"}
@@ -0,0 +1,18 @@
1
+ import { PortModel } from '@projectstorm/react-diagrams';
2
+
3
+ class ConnectionPortModel extends PortModel {
4
+ constructor(id, portType) {
5
+ super({
6
+ type: "connectionPort",
7
+ name: `${portType}-${id}`,
8
+ id: `${portType}-${id}`,
9
+ alignment: portType
10
+ });
11
+ }
12
+ isLocked() {
13
+ return true;
14
+ }
15
+ }
16
+
17
+ export { ConnectionPortModel };
18
+ //# sourceMappingURL=ConnectionPortModel.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionPortModel.esm.js","sources":["../../../../src/components/Connection/ConnectionPort/ConnectionPortModel.ts"],"sourcesContent":["import { PortModel, PortModelAlignment } from '@projectstorm/react-diagrams';\n\nexport class ConnectionPortModel extends PortModel {\n constructor(id: string, portType: PortModelAlignment) {\n super({\n type: 'connectionPort',\n name: `${portType}-${id}`,\n id: `${portType}-${id}`,\n alignment: portType,\n });\n }\n\n isLocked(): boolean {\n return true;\n }\n}\n"],"names":[],"mappings":";;AAEO,MAAM,4BAA4B,SAAA,CAAU;AAAA,EACjD,WAAA,CAAY,IAAY,QAAA,EAA8B;AACpD,IAAA,KAAA,CAAM;AAAA,MACJ,IAAA,EAAM,gBAAA;AAAA,MACN,IAAA,EAAM,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA;AAAA,MACvB,EAAA,EAAI,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA;AAAA,MACrB,SAAA,EAAW;AAAA,KACZ,CAAA;AAAA,EACH;AAAA,EAEA,QAAA,GAAoB;AAClB,IAAA,OAAO,IAAA;AAAA,EACT;AACF;;;;"}
@@ -0,0 +1,24 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { PortWidget, PortModelAlignment } from '@projectstorm/react-diagrams';
3
+ import { sidePortStyles, inclusionPortStyles } from './styles.esm.js';
4
+
5
+ function getPortStyles(alignment) {
6
+ if (alignment === PortModelAlignment.LEFT) {
7
+ return { left: 0, ...sidePortStyles };
8
+ }
9
+ if (alignment === PortModelAlignment.RIGHT) {
10
+ return { right: 0, ...sidePortStyles };
11
+ }
12
+ if (alignment === PortModelAlignment.TOP) {
13
+ return { top: 0, ...inclusionPortStyles };
14
+ }
15
+ return { bottom: 0, ...inclusionPortStyles };
16
+ }
17
+ function ConnectionPortWidget(props) {
18
+ const { port, engine } = props;
19
+ const portStyles = getPortStyles(port.getOptions().alignment);
20
+ return /* @__PURE__ */ jsx(PortWidget, { engine, port, style: portStyles });
21
+ }
22
+
23
+ export { ConnectionPortWidget };
24
+ //# sourceMappingURL=ConnectionPortWidget.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionPortWidget.esm.js","sources":["../../../../src/components/Connection/ConnectionPort/ConnectionPortWidget.tsx"],"sourcesContent":["import { CSSProperties } from 'react';\nimport {\n DiagramEngine,\n PortModelAlignment,\n PortWidget,\n} from '@projectstorm/react-diagrams';\nimport { ConnectionPortModel } from './ConnectionPortModel';\nimport { inclusionPortStyles, sidePortStyles } from './styles';\n\ninterface CustomPortProps {\n port: ConnectionPortModel;\n engine: DiagramEngine;\n}\n\nfunction getPortStyles(\n alignment: PortModelAlignment | undefined,\n): CSSProperties {\n if (alignment === PortModelAlignment.LEFT) {\n return { left: 0, ...sidePortStyles };\n }\n if (alignment === PortModelAlignment.RIGHT) {\n return { right: 0, ...sidePortStyles };\n }\n if (alignment === PortModelAlignment.TOP) {\n return { top: 0, ...inclusionPortStyles };\n }\n return { bottom: 0, ...inclusionPortStyles };\n}\n\nexport function ConnectionPortWidget(props: CustomPortProps) {\n const { port, engine } = props;\n const portStyles: CSSProperties = getPortStyles(port.getOptions().alignment);\n\n return <PortWidget engine={engine} port={port} style={portStyles} />;\n}\n"],"names":[],"mappings":";;;;AAcA,SAAS,cACP,SAAA,EACe;AACf,EAAA,IAAI,SAAA,KAAc,mBAAmB,IAAA,EAAM;AACzC,IAAA,OAAO,EAAE,IAAA,EAAM,CAAA,EAAG,GAAG,cAAA,EAAe;AAAA,EACtC;AACA,EAAA,IAAI,SAAA,KAAc,mBAAmB,KAAA,EAAO;AAC1C,IAAA,OAAO,EAAE,KAAA,EAAO,CAAA,EAAG,GAAG,cAAA,EAAe;AAAA,EACvC;AACA,EAAA,IAAI,SAAA,KAAc,mBAAmB,GAAA,EAAK;AACxC,IAAA,OAAO,EAAE,GAAA,EAAK,CAAA,EAAG,GAAG,mBAAA,EAAoB;AAAA,EAC1C;AACA,EAAA,OAAO,EAAE,MAAA,EAAQ,CAAA,EAAG,GAAG,mBAAA,EAAoB;AAC7C;AAEO,SAAS,qBAAqB,KAAA,EAAwB;AAC3D,EAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAO,GAAI,KAAA;AACzB,EAAA,MAAM,UAAA,GAA4B,aAAA,CAAc,IAAA,CAAK,UAAA,GAAa,SAAS,CAAA;AAE3E,EAAA,uBAAO,GAAA,CAAC,UAAA,EAAA,EAAW,MAAA,EAAgB,IAAA,EAAY,OAAO,UAAA,EAAY,CAAA;AACpE;;;;"}
@@ -0,0 +1,13 @@
1
+ const sidePortStyles = {
2
+ position: "absolute",
3
+ height: "16px",
4
+ width: "2px"
5
+ };
6
+ const inclusionPortStyles = {
7
+ position: "absolute",
8
+ height: "2px",
9
+ width: "2px"
10
+ };
11
+
12
+ export { inclusionPortStyles, sidePortStyles };
13
+ //# sourceMappingURL=styles.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.esm.js","sources":["../../../../src/components/Connection/ConnectionPort/styles.ts"],"sourcesContent":["import { CSSProperties } from 'react';\n\nexport const sidePortStyles: CSSProperties = {\n position: 'absolute',\n height: '16px',\n width: '2px',\n};\n\nexport const inclusionPortStyles: CSSProperties = {\n position: 'absolute',\n height: '2px',\n width: '2px',\n};\n"],"names":[],"mappings":"AAEO,MAAM,cAAA,GAAgC;AAAA,EAC3C,QAAA,EAAU,UAAA;AAAA,EACV,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO;AACT;AAEO,MAAM,mBAAA,GAAqC;AAAA,EAChD,QAAA,EAAU,UAAA;AAAA,EACV,MAAA,EAAQ,KAAA;AAAA,EACR,KAAA,EAAO;AACT;;;;"}
@@ -0,0 +1,12 @@
1
+ import { CONNECTION_NODE, NAME_JOIN_CHAR } from '../../resources/constants.esm.js';
2
+ import 'react/jsx-runtime';
3
+
4
+ function getConnectionName(connection) {
5
+ return getConnectionNameById(connection.id);
6
+ }
7
+ function getConnectionNameById(id) {
8
+ return `${CONNECTION_NODE}${NAME_JOIN_CHAR}${id}`;
9
+ }
10
+
11
+ export { getConnectionName, getConnectionNameById };
12
+ //# sourceMappingURL=connection-node-util.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-node-util.esm.js","sources":["../../../src/components/Connection/connection-node-util.ts"],"sourcesContent":["import { CONNECTION_NODE, NAME_JOIN_CHAR } from '../../resources';\nimport { Connection } from '../../types';\n\nexport function getConnectionName(connection: Connection): string {\n return getConnectionNameById(connection.id);\n}\n\nexport function getConnectionNameById(id: string): string {\n return `${CONNECTION_NODE}${NAME_JOIN_CHAR}${id}`;\n}\n\nexport function getConnectionMetadataByName(name: string): {\n type: string;\n id: string;\n} {\n const parts = name.split(NAME_JOIN_CHAR);\n return { type: parts[0], id: parts[1] };\n}\n\nexport function getConnectionLinkName(source: string, target: string): string {\n return `${CONNECTION_NODE}${NAME_JOIN_CHAR}${source}::${target}`;\n}\n"],"names":[],"mappings":";;;AAGO,SAAS,kBAAkB,UAAA,EAAgC;AAChE,EAAA,OAAO,qBAAA,CAAsB,WAAW,EAAE,CAAA;AAC5C;AAEO,SAAS,sBAAsB,EAAA,EAAoB;AACxD,EAAA,OAAO,CAAA,EAAG,eAAe,CAAA,EAAG,cAAc,GAAG,EAAE,CAAA,CAAA;AACjD;;;;"}
@@ -0,0 +1,54 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import Tooltip from '@mui/material/Tooltip';
3
+ import { ControlIconButton } from './style.esm.js';
4
+
5
+ function CanvasControlButton(props) {
6
+ const {
7
+ children,
8
+ onClick,
9
+ tooltipTitle,
10
+ tooltipPlacement = "left-end"
11
+ } = props;
12
+ return /* @__PURE__ */ jsx(
13
+ Tooltip,
14
+ {
15
+ arrow: true,
16
+ placement: tooltipPlacement,
17
+ title: tooltipTitle,
18
+ enterNextDelay: 200,
19
+ componentsProps: {
20
+ tooltip: {
21
+ sx: {
22
+ fontFamily: "GilmerRegular",
23
+ fontSize: "12px",
24
+ padding: "6px 10px"
25
+ }
26
+ }
27
+ },
28
+ PopperProps: {
29
+ modifiers: [
30
+ {
31
+ name: "offset",
32
+ options: {
33
+ offset: [0, -10]
34
+ }
35
+ }
36
+ ]
37
+ },
38
+ children: /* @__PURE__ */ jsx(
39
+ ControlIconButton,
40
+ {
41
+ size: "small",
42
+ onClick,
43
+ sx: {
44
+ cursor: "pointer"
45
+ },
46
+ children
47
+ }
48
+ )
49
+ }
50
+ );
51
+ }
52
+
53
+ export { CanvasControlButton };
54
+ //# sourceMappingURL=ControlButton.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControlButton.esm.js","sources":["../../../../src/components/Controls/ControlButtons/ControlButton.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport Tooltip from '@mui/material/Tooltip';\nimport { ControlIconButton } from './style';\n\ninterface ControlButtonProps {\n children: ReactNode;\n onClick: () => void;\n tooltipTitle: string;\n tooltipPlacement?: 'left-end' | 'right-end' | 'top-start';\n}\n\nexport function CanvasControlButton(props: ControlButtonProps) {\n const {\n children,\n onClick,\n tooltipTitle,\n tooltipPlacement = 'left-end',\n } = props;\n\n return (\n <Tooltip\n arrow\n placement={tooltipPlacement}\n title={tooltipTitle}\n enterNextDelay={200}\n componentsProps={{\n tooltip: {\n sx: {\n fontFamily: 'GilmerRegular',\n fontSize: '12px',\n padding: '6px 10px',\n },\n },\n }}\n PopperProps={{\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, -10],\n },\n },\n ],\n }}\n >\n <ControlIconButton\n size=\"small\"\n onClick={onClick}\n sx={{\n cursor: 'pointer',\n }}\n >\n {children}\n </ControlIconButton>\n </Tooltip>\n );\n}\n"],"names":[],"mappings":";;;;AAWO,SAAS,oBAAoB,KAAA,EAA2B;AAC7D,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,gBAAA,GAAmB;AAAA,GACrB,GAAI,KAAA;AAEJ,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAK,IAAA;AAAA,MACL,SAAA,EAAW,gBAAA;AAAA,MACX,KAAA,EAAO,YAAA;AAAA,MACP,cAAA,EAAgB,GAAA;AAAA,MAChB,eAAA,EAAiB;AAAA,QACf,OAAA,EAAS;AAAA,UACP,EAAA,EAAI;AAAA,YACF,UAAA,EAAY,eAAA;AAAA,YACZ,QAAA,EAAU,MAAA;AAAA,YACV,OAAA,EAAS;AAAA;AACX;AACF,OACF;AAAA,MACA,WAAA,EAAa;AAAA,QACX,SAAA,EAAW;AAAA,UACT;AAAA,YACE,IAAA,EAAM,QAAA;AAAA,YACN,OAAA,EAAS;AAAA,cACP,MAAA,EAAQ,CAAC,CAAA,EAAG,GAAG;AAAA;AACjB;AACF;AACF,OACF;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAA;AAAA,UACA,EAAA,EAAI;AAAA,YACF,MAAA,EAAQ;AAAA,WACV;AAAA,UAEC;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;;;;"}
@@ -0,0 +1,19 @@
1
+ import styled from '@emotion/styled';
2
+ import IconButton from '@mui/material/IconButton';
3
+
4
+ const ControlIconButton = styled(IconButton)`
5
+ background-color: ${({ theme }) => theme.colors.SURFACE_BRIGHT} !important;
6
+ border: 1px solid ${({ theme }) => theme.colors.SURFACE_DIM} !important;
7
+ border-radius: 2px !important;
8
+ height: 32px !important;
9
+ width: 32px !important;
10
+ color: ${({ theme }) => theme.colors.ON_SURFACE_VARIANT};
11
+
12
+ & svg {
13
+ height: 20px;
14
+ width: 20px;
15
+ }
16
+ `;
17
+
18
+ export { ControlIconButton };
19
+ //# sourceMappingURL=style.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.esm.js","sources":["../../../../src/components/Controls/ControlButtons/style.ts"],"sourcesContent":["import styled from '@emotion/styled';\nimport IconButton from '@mui/material/IconButton';\n\n/**\n * Themed IconButton used by `CanvasControlButton`. Background and border are\n * pulled from the active cell-diagram theme so the canvas controls match\n * dark mode automatically.\n */\nexport const ControlIconButton: React.FC<any> = styled(IconButton)`\n background-color: ${({ theme }) => theme.colors.SURFACE_BRIGHT} !important;\n border: 1px solid ${({ theme }) => theme.colors.SURFACE_DIM} !important;\n border-radius: 2px !important;\n height: 32px !important;\n width: 32px !important;\n color: ${({ theme }) => theme.colors.ON_SURFACE_VARIANT};\n\n & svg {\n height: 20px;\n width: 20px;\n }\n`;\n"],"names":[],"mappings":";;;AAQO,MAAM,iBAAA,GAAmC,OAAO,UAAU,CAAA;AAAA,oBAAA,EAC3C,CAAC,EAAE,KAAA,EAAM,KAAM,KAAA,CAAM,OAAO,cAAc,CAAA;AAAA,oBAAA,EAC1C,CAAC,EAAE,KAAA,EAAM,KAAM,KAAA,CAAM,OAAO,WAAW,CAAA;AAAA;AAAA;AAAA;AAAA,SAAA,EAIlD,CAAC,EAAE,KAAA,EAAM,KAAM,KAAA,CAAM,OAAO,kBAAkB,CAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;;;"}
@@ -0,0 +1,88 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useRef, useEffect } from 'react';
3
+ import { FullScreenIcon } from '../../resources/assets/icons/FullScreenIcon.esm.js';
4
+ import { FitScreenIcon } from '../../resources/assets/icons/FitScreenIcon.esm.js';
5
+ import { AddIcon } from '../../resources/assets/icons/AddIcon.esm.js';
6
+ import { RemoveIcon } from '../../resources/assets/icons/RemoveIcon.esm.js';
7
+ import { RefreshIcon } from '../../resources/assets/icons/RefreshIcon.esm.js';
8
+ import styled from '@emotion/styled';
9
+ import { CanvasControlButton } from './ControlButtons/ControlButton.esm.js';
10
+ import gsap from 'gsap';
11
+
12
+ const ControlPanel = styled.div`
13
+ bottom: 15px;
14
+ display: flex;
15
+ flex-direction: column;
16
+ gap: 5px;
17
+ justify-content: space-between;
18
+ position: absolute;
19
+ right: 15px;
20
+ width: 32px;
21
+ `;
22
+ function DiagramControls(props) {
23
+ const { engine, animation = true, refreshDiagram } = props;
24
+ const controlPanelRef = useRef(null);
25
+ useEffect(() => {
26
+ if (animation) {
27
+ gsap.fromTo(
28
+ controlPanelRef.current,
29
+ { scale: 0 },
30
+ {
31
+ scale: 1,
32
+ duration: 1,
33
+ ease: "power3.out",
34
+ delay: 1
35
+ }
36
+ );
37
+ }
38
+ }, []);
39
+ const onZoom = (zoomIn) => {
40
+ const delta = zoomIn ? 5 : -5;
41
+ engine.getModel().setZoomLevel(engine.getModel().getZoomLevel() + delta);
42
+ engine.repaintCanvas();
43
+ };
44
+ const zoomToFit = () => {
45
+ engine.zoomToFitNodes({ margin: 10, maxZoom: 1 });
46
+ };
47
+ const zoomToActualSize = () => {
48
+ engine.getModel().setZoomLevel(100);
49
+ engine.repaintCanvas();
50
+ };
51
+ return /* @__PURE__ */ jsxs(ControlPanel, { ref: controlPanelRef, children: [
52
+ refreshDiagram && /* @__PURE__ */ jsx(CanvasControlButton, { onClick: refreshDiagram, tooltipTitle: "Refresh", children: /* @__PURE__ */ jsx(RefreshIcon, {}) }),
53
+ /* @__PURE__ */ jsx(CanvasControlButton, { onClick: zoomToFit, tooltipTitle: "Zoom to fit nodes", children: /* @__PURE__ */ jsx(FullScreenIcon, {}) }),
54
+ /* @__PURE__ */ jsx(
55
+ CanvasControlButton,
56
+ {
57
+ onClick: zoomToActualSize,
58
+ tooltipTitle: "Zoom to actual size",
59
+ children: /* @__PURE__ */ jsx(FitScreenIcon, {})
60
+ }
61
+ ),
62
+ /* @__PURE__ */ jsxs("div", { children: [
63
+ /* @__PURE__ */ jsx(
64
+ CanvasControlButton,
65
+ {
66
+ onClick: () => {
67
+ onZoom(true);
68
+ },
69
+ tooltipTitle: "Zoom in",
70
+ children: /* @__PURE__ */ jsx(AddIcon, {})
71
+ }
72
+ ),
73
+ /* @__PURE__ */ jsx(
74
+ CanvasControlButton,
75
+ {
76
+ onClick: () => {
77
+ onZoom(false);
78
+ },
79
+ tooltipTitle: "Zoom out",
80
+ children: /* @__PURE__ */ jsx(RemoveIcon, {})
81
+ }
82
+ )
83
+ ] })
84
+ ] });
85
+ }
86
+
87
+ export { ControlPanel, DiagramControls };
88
+ //# sourceMappingURL=DiagramControls.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagramControls.esm.js","sources":["../../../src/components/Controls/DiagramControls.tsx"],"sourcesContent":["import { FC, useEffect, useRef } from 'react';\nimport {\n FullScreenIcon,\n FitScreenIcon,\n AddIcon,\n RemoveIcon,\n RefreshIcon,\n} from '../../resources/assets/icons';\nimport styled from '@emotion/styled';\nimport { DiagramEngine } from '@projectstorm/react-diagrams';\nimport { CanvasControlButton } from './ControlButtons/ControlButton';\nimport gsap from 'gsap';\n\ninterface ControlProps {\n engine: DiagramEngine;\n animation?: boolean;\n refreshDiagram?: () => void;\n}\n\nexport const ControlPanel: FC<any> = styled.div`\n bottom: 15px;\n display: flex;\n flex-direction: column;\n gap: 5px;\n justify-content: space-between;\n position: absolute;\n right: 15px;\n width: 32px;\n`;\n\nexport function DiagramControls(props: ControlProps) {\n const { engine, animation = true, refreshDiagram } = props;\n const controlPanelRef = useRef(null);\n\n useEffect(() => {\n if (animation) {\n gsap.fromTo(\n controlPanelRef.current,\n { scale: 0 },\n {\n scale: 1,\n duration: 1,\n ease: 'power3.out',\n delay: 1,\n },\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const onZoom = (zoomIn: boolean) => {\n const delta: number = zoomIn ? +5 : -5;\n engine.getModel().setZoomLevel(engine.getModel().getZoomLevel() + delta);\n engine.repaintCanvas();\n };\n\n const zoomToFit = () => {\n engine.zoomToFitNodes({ margin: 10, maxZoom: 1 });\n };\n\n const zoomToActualSize = () => {\n engine.getModel().setZoomLevel(100);\n engine.repaintCanvas();\n };\n\n return (\n <ControlPanel ref={controlPanelRef}>\n {refreshDiagram && (\n <CanvasControlButton onClick={refreshDiagram} tooltipTitle=\"Refresh\">\n <RefreshIcon />\n </CanvasControlButton>\n )}\n\n <CanvasControlButton onClick={zoomToFit} tooltipTitle=\"Zoom to fit nodes\">\n <FullScreenIcon />\n </CanvasControlButton>\n\n <CanvasControlButton\n onClick={zoomToActualSize}\n tooltipTitle=\"Zoom to actual size\"\n >\n <FitScreenIcon />\n </CanvasControlButton>\n\n <div>\n <CanvasControlButton\n onClick={() => {\n onZoom(true);\n }}\n tooltipTitle=\"Zoom in\"\n >\n <AddIcon />\n </CanvasControlButton>\n\n <CanvasControlButton\n onClick={() => {\n onZoom(false);\n }}\n tooltipTitle=\"Zoom out\"\n >\n <RemoveIcon />\n </CanvasControlButton>\n </div>\n </ControlPanel>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAmBO,MAAM,eAAwB,MAAA,CAAO,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWrC,SAAS,gBAAgB,KAAA,EAAqB;AACnD,EAAA,MAAM,EAAE,MAAA,EAAQ,SAAA,GAAY,IAAA,EAAM,gBAAe,GAAI,KAAA;AACrD,EAAA,MAAM,eAAA,GAAkB,OAAO,IAAI,CAAA;AAEnC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,IAAA,CAAK,MAAA;AAAA,QACH,eAAA,CAAgB,OAAA;AAAA,QAChB,EAAE,OAAO,CAAA,EAAE;AAAA,QACX;AAAA,UACE,KAAA,EAAO,CAAA;AAAA,UACP,QAAA,EAAU,CAAA;AAAA,UACV,IAAA,EAAM,YAAA;AAAA,UACN,KAAA,EAAO;AAAA;AACT,OACF;AAAA,IACF;AAAA,EAEF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,MAAA,GAAS,CAAC,MAAA,KAAoB;AAClC,IAAA,MAAM,KAAA,GAAgB,SAAS,CAAA,GAAK,EAAA;AACpC,IAAA,MAAA,CAAO,QAAA,GAAW,YAAA,CAAa,MAAA,CAAO,UAAS,CAAE,YAAA,KAAiB,KAAK,CAAA;AACvE,IAAA,MAAA,CAAO,aAAA,EAAc;AAAA,EACvB,CAAA;AAEA,EAAA,MAAM,YAAY,MAAM;AACtB,IAAA,MAAA,CAAO,eAAe,EAAE,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAS,GAAG,CAAA;AAAA,EAClD,CAAA;AAEA,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,MAAA,CAAO,QAAA,EAAS,CAAE,YAAA,CAAa,GAAG,CAAA;AAClC,IAAA,MAAA,CAAO,aAAA,EAAc;AAAA,EACvB,CAAA;AAEA,EAAA,uBACE,IAAA,CAAC,YAAA,EAAA,EAAa,GAAA,EAAK,eAAA,EAChB,QAAA,EAAA;AAAA,IAAA,cAAA,oBACC,GAAA,CAAC,uBAAoB,OAAA,EAAS,cAAA,EAAgB,cAAa,SAAA,EACzD,QAAA,kBAAA,GAAA,CAAC,eAAY,CAAA,EACf,CAAA;AAAA,oBAGF,GAAA,CAAC,uBAAoB,OAAA,EAAS,SAAA,EAAW,cAAa,mBAAA,EACpD,QAAA,kBAAA,GAAA,CAAC,kBAAe,CAAA,EAClB,CAAA;AAAA,oBAEA,GAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,gBAAA;AAAA,QACT,YAAA,EAAa,qBAAA;AAAA,QAEb,8BAAC,aAAA,EAAA,EAAc;AAAA;AAAA,KACjB;AAAA,yBAEC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,mBAAA;AAAA,QAAA;AAAA,UACC,SAAS,MAAM;AACb,YAAA,MAAA,CAAO,IAAI,CAAA;AAAA,UACb,CAAA;AAAA,UACA,YAAA,EAAa,SAAA;AAAA,UAEb,8BAAC,OAAA,EAAA,EAAQ;AAAA;AAAA,OACX;AAAA,sBAEA,GAAA;AAAA,QAAC,mBAAA;AAAA,QAAA;AAAA,UACC,SAAS,MAAM;AACb,YAAA,MAAA,CAAO,KAAK,CAAA;AAAA,UACd,CAAA;AAAA,UACA,YAAA,EAAa,UAAA;AAAA,UAEb,8BAAC,UAAA,EAAA,EAAW;AAAA;AAAA;AACd,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -0,0 +1,166 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useState, useRef, useEffect } from 'react';
3
+ import styled from '@emotion/styled';
4
+ import gsap from 'gsap';
5
+ import { useDiagramContext } from '../DiagramContext/DiagramContext.esm.js';
6
+ import { LayersIcon } from '../../resources/assets/icons/LayersIcon.esm.js';
7
+ import { ObservationIcon } from '../../resources/assets/icons/ObservationIcon.esm.js';
8
+ import { DiffIcon } from '../../resources/assets/icons/DiffIcon.esm.js';
9
+ import { DiagramIcon } from '../../resources/assets/icons/DiagramIcon.esm.js';
10
+ import { DiagramLayer } from '../../types.esm.js';
11
+ import { CanvasControlButton } from './ControlButtons/ControlButton.esm.js';
12
+ import { LayerButton } from './LayerButton.esm.js';
13
+
14
+ const DiagramLayersPanel = styled.div`
15
+ display: flex;
16
+ flex-direction: row;
17
+ justify-content: space-between;
18
+ align-items: end;
19
+ gap: 4px;
20
+ position: absolute;
21
+ bottom: 15px;
22
+ left: 15px;
23
+ `;
24
+ const LayersPanel = styled.div`
25
+ display: flex;
26
+ flex-direction: row;
27
+ justify-content: space-between;
28
+ align-items: center;
29
+ gap: 8px;
30
+ padding: 6px 6px 4px;
31
+ background-color: ${({ theme }) => theme.colors.SURFACE_BRIGHT};
32
+ border: 1px solid ${({ theme }) => theme.colors.SURFACE_DIM};
33
+ `;
34
+ styled.div`
35
+ border: 1px solid ${({ theme }) => theme.colors.SURFACE_DIM};
36
+ width: 34px;
37
+ height: 34px;
38
+ border-radius: 2px;
39
+ color: ${({ theme, selected }) => selected ? theme.colors.PRIMARY : theme.colors.OUTLINE_VARIANT};
40
+ background-color: ${({ theme }) => theme.colors.SURFACE_BRIGHT};
41
+ display: inline-flex;
42
+ align-items: center;
43
+ justify-content: center;
44
+ position: relative;
45
+ box-sizing: border-box;
46
+ padding: 5px;
47
+ cursor: pointer;
48
+ &:active {
49
+ background-color: ${({ theme }) => theme.colors.SURFACE_DIM};
50
+ }
51
+ `;
52
+ const LayerIcon = styled.div`
53
+ width: 40px;
54
+ height: 40px;
55
+ border-radius: 2px;
56
+ display: inline-flex;
57
+ align-items: center;
58
+ justify-content: center;
59
+ position: relative;
60
+ box-sizing: border-box;
61
+ padding: 4px;
62
+ `;
63
+ function DiagramLayers(props) {
64
+ const { animation = true, tooltips } = props;
65
+ const {
66
+ diagramLayers: { addLayer, removeLayer, hasLayer, activeLayers }
67
+ } = useDiagramContext();
68
+ const [hover, setHover] = useState(true);
69
+ const controlPanelRef = useRef(null);
70
+ const canRemoveLayer = activeLayers.length > 1;
71
+ useEffect(() => {
72
+ if (animation) {
73
+ gsap.fromTo(
74
+ controlPanelRef.current,
75
+ { scale: 0 },
76
+ {
77
+ scale: 1,
78
+ duration: 1,
79
+ ease: "power3.out",
80
+ delay: 1
81
+ }
82
+ );
83
+ }
84
+ }, []);
85
+ const toggleArchitectureLayer = () => {
86
+ if (hasLayer(DiagramLayer.ARCHITECTURE)) {
87
+ removeLayer(DiagramLayer.ARCHITECTURE);
88
+ } else {
89
+ addLayer(DiagramLayer.ARCHITECTURE);
90
+ }
91
+ };
92
+ const toggleObservabilityLayer = () => {
93
+ if (hasLayer(DiagramLayer.OBSERVABILITY)) {
94
+ removeLayer(DiagramLayer.OBSERVABILITY);
95
+ } else {
96
+ addLayer(DiagramLayer.OBSERVABILITY);
97
+ }
98
+ };
99
+ const toggleDiffLayer = () => {
100
+ if (hasLayer(DiagramLayer.DIFF)) {
101
+ removeLayer(DiagramLayer.DIFF);
102
+ } else {
103
+ addLayer(DiagramLayer.DIFF);
104
+ }
105
+ };
106
+ const toggleDiagramLayerPanel = () => {
107
+ setHover((prev) => !prev);
108
+ };
109
+ return /* @__PURE__ */ jsxs(DiagramLayersPanel, { ref: controlPanelRef, children: [
110
+ /* @__PURE__ */ jsx(
111
+ CanvasControlButton,
112
+ {
113
+ onClick: toggleDiagramLayerPanel,
114
+ tooltipTitle: !hover ? "Toggle architecture layers" : "",
115
+ children: /* @__PURE__ */ jsx(LayersIcon, {})
116
+ }
117
+ ),
118
+ hover && /* @__PURE__ */ jsxs(LayersPanel, { children: [
119
+ /* @__PURE__ */ jsxs(
120
+ LayerButton,
121
+ {
122
+ onClick: toggleArchitectureLayer,
123
+ selected: hasLayer(DiagramLayer.ARCHITECTURE),
124
+ clickable: hasLayer(DiagramLayer.ARCHITECTURE) ? canRemoveLayer : true,
125
+ tooltipTitle: "Toggle static architecture layer",
126
+ tooltipDescription: tooltips?.staticLayer || "Visualize the static architecture defined in the component-config.yaml file. This layer represents the intended architecture of the system and shows the connections between components as specified by the user.",
127
+ children: [
128
+ /* @__PURE__ */ jsx(LayerIcon, { children: /* @__PURE__ */ jsx(DiagramIcon, { styles: { width: 24, height: 24 } }) }),
129
+ "Static"
130
+ ]
131
+ }
132
+ ),
133
+ /* @__PURE__ */ jsxs(
134
+ LayerButton,
135
+ {
136
+ onClick: toggleObservabilityLayer,
137
+ selected: hasLayer(DiagramLayer.OBSERVABILITY),
138
+ clickable: hasLayer(DiagramLayer.OBSERVABILITY) ? canRemoveLayer : true,
139
+ tooltipTitle: "Toggle runtime architecture layer",
140
+ tooltipDescription: tooltips?.runtimeLayer || "Visualize the runtime architecture of the system. This layer represents the actual runtime architecture of the system and shows the connections between components based on observability data.",
141
+ children: [
142
+ /* @__PURE__ */ jsx(LayerIcon, { children: /* @__PURE__ */ jsx(ObservationIcon, { styles: { width: 24, height: 24 } }) }),
143
+ "Runtime"
144
+ ]
145
+ }
146
+ ),
147
+ /* @__PURE__ */ jsxs(
148
+ LayerButton,
149
+ {
150
+ onClick: toggleDiffLayer,
151
+ selected: hasLayer(DiagramLayer.DIFF),
152
+ clickable: hasLayer(DiagramLayer.DIFF) ? canRemoveLayer : true,
153
+ tooltipTitle: "Toggle architectural drift layer",
154
+ tooltipDescription: tooltips?.diffLayer || "Detect architectural drift by comparing the static and runtime architecture layers. This layer highlights the differences between the static and runtime architecture layers, allowing you to identify architectural drift.",
155
+ children: [
156
+ /* @__PURE__ */ jsx(LayerIcon, { children: /* @__PURE__ */ jsx(DiffIcon, { styles: { width: 24, height: 24 } }) }),
157
+ "Diff"
158
+ ]
159
+ }
160
+ )
161
+ ] })
162
+ ] });
163
+ }
164
+
165
+ export { DiagramLayers, DiagramLayersPanel, LayerIcon, LayersPanel };
166
+ //# sourceMappingURL=DiagramLayers.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagramLayers.esm.js","sources":["../../../src/components/Controls/DiagramLayers.tsx"],"sourcesContent":["import { FC, useEffect, useRef, useState } from 'react';\nimport styled from '@emotion/styled';\nimport gsap from 'gsap';\nimport { useDiagramContext } from '../DiagramContext/DiagramContext';\nimport {\n DiagramIcon,\n DiffIcon,\n LayersIcon,\n ObservationIcon,\n} from '../../resources';\nimport { DiagramLayer, DiagramLayerTooltips } from '../../types';\nimport { CanvasControlButton } from './ControlButtons/ControlButton';\nimport { LayerButton } from './LayerButton';\n\nexport const DiagramLayersPanel: FC<any> = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: end;\n gap: 4px;\n position: absolute;\n bottom: 15px;\n left: 15px;\n`;\n\nexport const LayersPanel: FC<any> = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n padding: 6px 6px 4px;\n background-color: ${({ theme }) => theme.colors.SURFACE_BRIGHT};\n border: 1px solid ${({ theme }) => theme.colors.SURFACE_DIM};\n`;\n\nexport const MainButton: FC<any> = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.SURFACE_DIM};\n width: 34px;\n height: 34px;\n border-radius: 2px;\n color: ${({ theme, selected }: { theme: any; selected?: boolean }) =>\n selected ? theme.colors.PRIMARY : theme.colors.OUTLINE_VARIANT};\n background-color: ${({ theme }) => theme.colors.SURFACE_BRIGHT};\n display: inline-flex;\n align-items: center;\n justify-content: center;\n position: relative;\n box-sizing: border-box;\n padding: 5px;\n cursor: pointer;\n &:active {\n background-color: ${({ theme }) => theme.colors.SURFACE_DIM};\n }\n`;\n\nexport const LayerIcon: FC<any> = styled.div`\n width: 40px;\n height: 40px;\n border-radius: 2px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n`;\n\ninterface DiagramLayersProps {\n animation?: boolean;\n tooltips?: DiagramLayerTooltips;\n}\n\nexport function DiagramLayers(props: DiagramLayersProps) {\n const { animation = true, tooltips } = props;\n const {\n diagramLayers: { addLayer, removeLayer, hasLayer, activeLayers },\n } = useDiagramContext();\n const [hover, setHover] = useState(true);\n const controlPanelRef = useRef(null);\n const canRemoveLayer = activeLayers.length > 1;\n\n useEffect(() => {\n if (animation) {\n gsap.fromTo(\n controlPanelRef.current,\n { scale: 0 },\n {\n scale: 1,\n duration: 1,\n ease: 'power3.out',\n delay: 1,\n },\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const toggleArchitectureLayer = () => {\n if (hasLayer(DiagramLayer.ARCHITECTURE)) {\n removeLayer(DiagramLayer.ARCHITECTURE);\n } else {\n addLayer(DiagramLayer.ARCHITECTURE);\n }\n };\n\n const toggleObservabilityLayer = () => {\n if (hasLayer(DiagramLayer.OBSERVABILITY)) {\n removeLayer(DiagramLayer.OBSERVABILITY);\n } else {\n addLayer(DiagramLayer.OBSERVABILITY);\n }\n };\n\n const toggleDiffLayer = () => {\n if (hasLayer(DiagramLayer.DIFF)) {\n removeLayer(DiagramLayer.DIFF);\n } else {\n addLayer(DiagramLayer.DIFF);\n }\n };\n\n const toggleDiagramLayerPanel = () => {\n setHover(prev => !prev);\n };\n\n return (\n <DiagramLayersPanel ref={controlPanelRef}>\n <CanvasControlButton\n onClick={toggleDiagramLayerPanel}\n tooltipTitle={!hover ? 'Toggle architecture layers' : ''}\n >\n <LayersIcon />\n </CanvasControlButton>\n {hover && (\n <LayersPanel>\n <LayerButton\n onClick={toggleArchitectureLayer}\n selected={hasLayer(DiagramLayer.ARCHITECTURE)}\n clickable={\n hasLayer(DiagramLayer.ARCHITECTURE) ? canRemoveLayer : true\n }\n tooltipTitle=\"Toggle static architecture layer\"\n tooltipDescription={\n tooltips?.staticLayer ||\n 'Visualize the static architecture defined in the component-config.yaml file. This layer represents the intended architecture of the system and shows the connections between components as specified by the user.'\n }\n >\n <LayerIcon>\n <DiagramIcon styles={{ width: 24, height: 24 }} />\n </LayerIcon>\n Static\n </LayerButton>\n <LayerButton\n onClick={toggleObservabilityLayer}\n selected={hasLayer(DiagramLayer.OBSERVABILITY)}\n clickable={\n hasLayer(DiagramLayer.OBSERVABILITY) ? canRemoveLayer : true\n }\n tooltipTitle=\"Toggle runtime architecture layer\"\n tooltipDescription={\n tooltips?.runtimeLayer ||\n 'Visualize the runtime architecture of the system. This layer represents the actual runtime architecture of the system and shows the connections between components based on observability data.'\n }\n >\n <LayerIcon>\n <ObservationIcon styles={{ width: 24, height: 24 }} />\n </LayerIcon>\n Runtime\n </LayerButton>\n <LayerButton\n onClick={toggleDiffLayer}\n selected={hasLayer(DiagramLayer.DIFF)}\n clickable={hasLayer(DiagramLayer.DIFF) ? canRemoveLayer : true}\n tooltipTitle=\"Toggle architectural drift layer\"\n tooltipDescription={\n tooltips?.diffLayer ||\n 'Detect architectural drift by comparing the static and runtime architecture layers. This layer highlights the differences between the static and runtime architecture layers, allowing you to identify architectural drift.'\n }\n >\n <LayerIcon>\n <DiffIcon styles={{ width: 24, height: 24 }} />\n </LayerIcon>\n Diff\n </LayerButton>\n </LayersPanel>\n )}\n </DiagramLayersPanel>\n );\n}\n"],"names":[],"mappings":"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"}