@likec4/diagram 1.19.1 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (582) hide show
  1. package/dist/LikeC4Diagram.css.d.ts +0 -1
  2. package/dist/LikeC4Diagram.css.js +1 -5
  3. package/dist/LikeC4Diagram.d.ts +1 -4
  4. package/dist/LikeC4Diagram.js +102 -147
  5. package/dist/LikeC4Diagram.props.d.ts +10 -16
  6. package/dist/LikeC4Search.js +7 -15
  7. package/dist/StaticLikeC4Diagram.d.ts +1 -1
  8. package/dist/base/Background.d.ts +7 -0
  9. package/dist/{xyflow/XYFlowBackground.js → base/Background.js} +5 -6
  10. package/dist/base/BaseXYFlow.d.ts +14 -0
  11. package/dist/base/BaseXYFlow.js +146 -0
  12. package/dist/base/example/RelationshipsBrowser.d.ts +6 -0
  13. package/dist/base/example/_types.d.ts +20 -0
  14. package/dist/base/example/custom.d.ts +71 -0
  15. package/dist/base/example/useViewToNodesEdges.d.ts +6 -0
  16. package/dist/base/index.d.ts +2 -0
  17. package/dist/base/primitives/NodeHandles.d.ts +4 -0
  18. package/dist/base/primitives/NodeHandles.js +14 -0
  19. package/dist/base/primitives/compound/CompoundActionButton.css.d.ts +3 -0
  20. package/dist/base/primitives/compound/CompoundActionButton.css.js +9 -0
  21. package/dist/base/primitives/compound/CompoundActionButton.d.ts +7 -0
  22. package/dist/base/primitives/compound/CompoundActionButton.js +48 -0
  23. package/dist/base/primitives/compound/CompoundDetailsButton.css.d.ts +3 -0
  24. package/dist/base/primitives/compound/CompoundDetailsButton.css.js +9 -0
  25. package/dist/base/primitives/compound/CompoundDetailsButton.d.ts +7 -0
  26. package/dist/base/primitives/compound/CompoundDetailsButton.js +50 -0
  27. package/dist/base/primitives/compound/CompoundNodeContainer.css.d.ts +9 -0
  28. package/dist/base/primitives/compound/CompoundNodeContainer.css.js +17 -0
  29. package/dist/base/primitives/compound/CompoundNodeContainer.d.ts +26 -0
  30. package/dist/base/primitives/compound/CompoundNodeContainer.js +86 -0
  31. package/dist/base/primitives/compound/CompoundTitle.css.d.ts +2 -0
  32. package/dist/base/primitives/compound/CompoundTitle.css.js +7 -0
  33. package/dist/base/primitives/compound/CompoundTitle.d.ts +6 -0
  34. package/dist/base/primitives/compound/CompoundTitle.js +20 -0
  35. package/dist/base/primitives/customEdge.d.ts +41 -0
  36. package/dist/base/primitives/customEdge.js +13 -0
  37. package/dist/base/primitives/customNode.d.ts +7 -0
  38. package/dist/base/primitives/customNode.js +10 -0
  39. package/dist/base/primitives/edge/EdgeActionButton.d.ts +7 -0
  40. package/dist/base/primitives/edge/EdgeActionButton.js +24 -0
  41. package/dist/base/primitives/edge/EdgeContainer.d.ts +10 -0
  42. package/dist/base/primitives/edge/EdgeContainer.js +35 -0
  43. package/dist/{xyflow/edges/edges.css.d.ts → base/primitives/edge/EdgeLabel.css.d.ts} +5 -9
  44. package/dist/base/primitives/edge/EdgeLabel.css.js +25 -0
  45. package/dist/base/primitives/edge/EdgeLabel.d.ts +51 -0
  46. package/dist/base/primitives/edge/EdgeLabel.js +90 -0
  47. package/dist/{xyflow → base/primitives/edge}/EdgeMarkers.d.ts +2 -0
  48. package/dist/{xyflow → base/primitives/edge}/EdgeMarkers.js +29 -1
  49. package/dist/base/primitives/edge/EdgePath.d.ts +44 -0
  50. package/dist/base/primitives/edge/EdgePath.js +77 -0
  51. package/dist/base/primitives/edge/edge.css.d.ts +6 -0
  52. package/dist/base/primitives/edge/edge.css.js +14 -0
  53. package/dist/base/primitives/element/ElementActionButtons.css.d.ts +3 -0
  54. package/dist/base/primitives/element/ElementActionButtons.css.js +9 -0
  55. package/dist/base/primitives/element/ElementActionButtons.d.ts +13 -0
  56. package/dist/base/primitives/element/ElementActionButtons.js +62 -0
  57. package/dist/base/primitives/element/ElementDetailsButton.css.d.ts +3 -0
  58. package/dist/base/primitives/element/ElementDetailsButton.css.js +9 -0
  59. package/dist/base/primitives/element/ElementDetailsButton.d.ts +7 -0
  60. package/dist/base/primitives/element/ElementDetailsButton.js +54 -0
  61. package/dist/base/primitives/element/ElementNodeContainer.css.d.ts +3 -0
  62. package/dist/base/primitives/element/ElementNodeContainer.css.js +7 -0
  63. package/dist/base/primitives/element/ElementNodeContainer.d.ts +26 -0
  64. package/dist/base/primitives/element/ElementNodeContainer.js +60 -0
  65. package/dist/base/primitives/element/ElementShape.css.d.ts +6 -0
  66. package/dist/base/primitives/element/ElementShape.css.js +14 -0
  67. package/dist/base/primitives/element/ElementShape.d.ts +28 -0
  68. package/dist/{xyflow/nodes/element/ElementShapeSvg.js → base/primitives/element/ElementShape.js} +23 -7
  69. package/dist/base/primitives/element/ElementTitle.css.d.ts +8 -0
  70. package/dist/base/primitives/element/ElementTitle.css.js +19 -0
  71. package/dist/base/primitives/element/ElementTitle.d.ts +10 -0
  72. package/dist/base/primitives/element/ElementTitle.js +66 -0
  73. package/dist/base/primitives/index.d.ts +17 -0
  74. package/dist/base/types.d.ts +90 -0
  75. package/dist/base/types.js +54 -0
  76. package/dist/base/updateEdges.d.ts +3 -0
  77. package/dist/base/updateEdges.js +31 -0
  78. package/dist/base/updateNodes.d.ts +3 -0
  79. package/dist/base/updateNodes.js +36 -0
  80. package/dist/base/xyflowMachine.d.ts +212 -0
  81. package/dist/context/DiagramEventHandlers.d.ts +10 -0
  82. package/dist/context/DiagramEventHandlers.js +49 -0
  83. package/dist/context/DiagramFeatures.d.ts +31 -0
  84. package/dist/context/DiagramFeatures.js +140 -0
  85. package/dist/{ui → context}/FramerMotionConfig.js +2 -4
  86. package/dist/context/IconRenderer.d.ts +11 -0
  87. package/dist/{xyflow/nodes/shared/ElementIcon.js → context/IconRenderer.js} +14 -14
  88. package/dist/context/RootContainer.d.ts +9 -0
  89. package/dist/context/RootContainer.js +20 -0
  90. package/dist/context/index.d.ts +7 -0
  91. package/dist/globals.css.js +0 -87
  92. package/dist/hooks/index.d.ts +7 -5
  93. package/dist/hooks/useCurrentViewId.d.ts +2 -0
  94. package/dist/hooks/useCurrentViewId.js +8 -0
  95. package/dist/hooks/useDiagram.d.ts +10725 -0
  96. package/dist/hooks/useDiagram.js +119 -0
  97. package/dist/hooks/useDiagramActor.d.ts +5 -0
  98. package/dist/hooks/useDiagramActor.js +21 -0
  99. package/dist/hooks/useDiagramContext.d.ts +3 -0
  100. package/dist/hooks/useDiagramContext.js +10 -0
  101. package/dist/hooks/useMantinePortalProps.js +2 -2
  102. package/dist/hooks/useXYFlow.d.ts +195 -37
  103. package/dist/hooks/useXYFlow.js +4 -6
  104. package/dist/index.d.ts +3 -2
  105. package/dist/index.js +5 -6
  106. package/dist/likec4diagram/DiagramActor.d.ts +7 -0
  107. package/dist/likec4diagram/DiagramActor.js +71 -0
  108. package/dist/likec4diagram/DiagramUI.d.ts +2 -0
  109. package/dist/likec4diagram/DiagramUI.js +22 -0
  110. package/dist/likec4diagram/XYFlow.d.ts +6 -0
  111. package/dist/likec4diagram/XYFlow.js +122 -0
  112. package/dist/likec4diagram/custom/edges/NotePopover.css.d.ts +2 -0
  113. package/dist/likec4diagram/custom/edges/NotePopover.css.js +7 -0
  114. package/dist/likec4diagram/custom/edges/NotePopover.d.ts +4 -0
  115. package/dist/likec4diagram/custom/edges/NotePopover.js +101 -0
  116. package/dist/likec4diagram/custom/edges/RelationshipEdge.d.ts +55 -0
  117. package/dist/likec4diagram/custom/edges/RelationshipEdge.js +307 -0
  118. package/dist/{xyflow → likec4diagram/custom}/edges/RelationshipsDropdownMenu.css.js +4 -4
  119. package/dist/{xyflow → likec4diagram/custom}/edges/RelationshipsDropdownMenu.d.ts +5 -5
  120. package/dist/{xyflow → likec4diagram/custom}/edges/RelationshipsDropdownMenu.js +51 -53
  121. package/dist/likec4diagram/custom/edges/edges.css.d.ts +2 -0
  122. package/dist/likec4diagram/custom/edges/edges.css.js +7 -0
  123. package/dist/likec4diagram/custom/edges/utils.d.ts +22 -0
  124. package/dist/likec4diagram/custom/edges/utils.js +25 -0
  125. package/dist/likec4diagram/custom/index.d.ts +57 -0
  126. package/dist/likec4diagram/custom/index.js +7 -0
  127. package/dist/likec4diagram/custom/nodes/CompoundActions.d.ts +5 -0
  128. package/dist/likec4diagram/custom/nodes/CompoundActions.js +25 -0
  129. package/dist/likec4diagram/custom/nodes/ElementActions.d.ts +7 -0
  130. package/dist/likec4diagram/custom/nodes/ElementActions.js +69 -0
  131. package/dist/likec4diagram/custom/nodes/nodeTypes.d.ts +10 -0
  132. package/dist/likec4diagram/custom/nodes/nodeTypes.js +94 -0
  133. package/dist/likec4diagram/custom/nodes/toolbar/ColorButton.d.ts +21 -0
  134. package/dist/likec4diagram/custom/nodes/toolbar/ColorButton.js +159 -0
  135. package/dist/likec4diagram/custom/nodes/toolbar/CompoundToolbar.d.ts +7 -0
  136. package/dist/likec4diagram/custom/nodes/toolbar/CompoundToolbar.js +128 -0
  137. package/dist/likec4diagram/custom/nodes/toolbar/ElementToolbar.d.ts +7 -0
  138. package/dist/likec4diagram/custom/nodes/toolbar/ElementToolbar.js +149 -0
  139. package/dist/likec4diagram/custom/nodes/toolbar/Toolbar.d.ts +8 -0
  140. package/dist/likec4diagram/custom/nodes/toolbar/Toolbar.js +66 -0
  141. package/dist/likec4diagram/custom/nodes/toolbar/_shared.d.ts +40 -0
  142. package/dist/likec4diagram/custom/nodes/toolbar/_shared.js +131 -0
  143. package/dist/likec4diagram/custom/nodes/toolbar/styles.css.d.ts +1 -0
  144. package/dist/likec4diagram/custom/nodes/toolbar/styles.css.js +5 -0
  145. package/dist/likec4diagram/state/actorContext.d.ts +50849 -0
  146. package/dist/likec4diagram/state/actorContext.js +12 -0
  147. package/dist/{state → likec4diagram/state}/aligners.d.ts +4 -1
  148. package/dist/{state → likec4diagram/state}/aligners.js +31 -5
  149. package/dist/likec4diagram/state/assign.d.ts +18 -0
  150. package/dist/likec4diagram/state/assign.js +343 -0
  151. package/dist/likec4diagram/state/hotkeyActor.d.ts +5 -0
  152. package/dist/likec4diagram/state/hotkeyActor.js +18 -0
  153. package/dist/likec4diagram/state/inspector.d.ts +5 -0
  154. package/dist/likec4diagram/state/machine.d.ts +10751 -0
  155. package/dist/likec4diagram/state/machine.js +783 -0
  156. package/dist/likec4diagram/state/syncManualLayoutActor.d.ts +113 -0
  157. package/dist/likec4diagram/state/syncManualLayoutActor.js +178 -0
  158. package/dist/likec4diagram/state/utils.d.ts +8 -0
  159. package/dist/likec4diagram/state/utils.js +48 -0
  160. package/dist/likec4diagram/types.d.ts +74 -0
  161. package/dist/{ui/top-left → likec4diagram/ui/controls}/ChangeAutoLayoutButton.js +11 -10
  162. package/dist/likec4diagram/ui/controls/Controls.d.ts +2 -0
  163. package/dist/likec4diagram/ui/controls/Controls.js +102 -0
  164. package/dist/likec4diagram/ui/controls/LayoutDriftNotification.d.ts +2 -0
  165. package/dist/likec4diagram/ui/controls/LayoutDriftNotification.js +43 -0
  166. package/dist/{ui/top-left → likec4diagram/ui/controls}/ManualLayoutToolsButton.js +11 -11
  167. package/dist/likec4diagram/ui/controls/NavigationButtons.d.ts +1 -0
  168. package/dist/likec4diagram/ui/controls/NavigationButtons.js +92 -0
  169. package/dist/{ui/top-left → likec4diagram/ui/controls}/_shared.js +2 -1
  170. package/dist/{ui/top-left → likec4diagram/ui/controls}/styles.css.d.ts +1 -1
  171. package/dist/likec4diagram/ui/controls/styles.css.js +17 -0
  172. package/dist/likec4diagram/ui/diagram-title/DiagramTitlePanel.css.js +11 -0
  173. package/dist/likec4diagram/ui/diagram-title/DiagramTitlePanel.d.ts +1 -0
  174. package/dist/{ui → likec4diagram/ui/diagram-title}/DiagramTitlePanel.js +3 -3
  175. package/dist/likec4diagram/ui/diagram-title/Link.d.ts +4 -0
  176. package/dist/likec4diagram/ui/index.d.ts +2 -0
  177. package/dist/likec4diagram/ui/notation/NotationPanel.css.js +13 -0
  178. package/dist/likec4diagram/ui/notation/NotationPanel.d.ts +2 -0
  179. package/dist/{ui → likec4diagram/ui}/notation/NotationPanel.js +23 -31
  180. package/dist/{ui → likec4diagram/ui/walkthrough}/DynamicViewWalkthrough.css.js +4 -4
  181. package/dist/{ui → likec4diagram/ui/walkthrough}/DynamicViewWalkthrough.js +19 -44
  182. package/dist/{xyflow → likec4diagram}/useLayoutConstraints.d.ts +11 -6
  183. package/dist/{xyflow → likec4diagram}/useLayoutConstraints.js +17 -12
  184. package/dist/likec4diagram/useViewToNodesEdges.d.ts +11 -0
  185. package/dist/likec4diagram/useViewToNodesEdges.js +245 -0
  186. package/dist/likec4model/index.d.ts +1 -1
  187. package/dist/likec4model/useLikeC4Model.d.ts +1 -11
  188. package/dist/likec4model/useLikeC4Model.js +1 -39
  189. package/dist/overlays/Overlays.js +61 -105
  190. package/dist/overlays/element-details/ElementDetailsCard.js +111 -116
  191. package/dist/overlays/element-details/TabPanelDeployments.js +4 -7
  192. package/dist/overlays/element-details/TabPanelRelationships.css.js +0 -2
  193. package/dist/overlays/element-details/TabPanelRelationships.d.ts +1 -1
  194. package/dist/overlays/element-details/TabPanelRelationships.js +35 -64
  195. package/dist/overlays/element-details/TabPanelStructure.d.ts +2 -2
  196. package/dist/overlays/element-details/TabPanelStructure.js +1 -1
  197. package/dist/overlays/overlay/Overlay.css.d.ts +2 -0
  198. package/dist/overlays/overlay/Overlay.css.js +93 -0
  199. package/dist/overlays/overlay/Overlay.d.ts +8 -0
  200. package/dist/overlays/overlay/Overlay.js +86 -0
  201. package/dist/overlays/relationship-details/RelationshipDetails.d.ts +5 -0
  202. package/dist/overlays/relationship-details/RelationshipDetails.js +189 -0
  203. package/dist/overlays/{edge-details → relationship-details}/SelectEdge.css.d.ts +1 -0
  204. package/dist/overlays/relationship-details/SelectEdge.css.js +17 -0
  205. package/dist/overlays/{edge-details → relationship-details}/SelectEdge.d.ts +1 -1
  206. package/dist/overlays/{edge-details → relationship-details}/SelectEdge.js +8 -8
  207. package/dist/overlays/relationship-details/_types.d.ts +36 -0
  208. package/dist/overlays/relationship-details/actor.d.ts +41 -0
  209. package/dist/overlays/relationship-details/actor.js +113 -0
  210. package/dist/overlays/relationship-details/custom/ElementActions.d.ts +5 -0
  211. package/dist/overlays/relationship-details/custom/ElementActions.js +33 -0
  212. package/dist/overlays/relationship-details/custom/edgeTypes.d.ts +49 -0
  213. package/dist/overlays/relationship-details/custom/edgeTypes.js +51 -0
  214. package/dist/overlays/relationship-details/custom/index.d.ts +2 -0
  215. package/dist/overlays/relationship-details/custom/nodeTypes.d.ts +39 -0
  216. package/dist/overlays/relationship-details/custom/nodeTypes.js +89 -0
  217. package/dist/overlays/relationship-details/custom/styles.css.d.ts +1 -0
  218. package/dist/overlays/relationship-details/hooks.d.ts +59 -0
  219. package/dist/overlays/relationship-details/hooks.js +46 -0
  220. package/dist/overlays/{edge-details/use-layouted-edge-details.d.ts → relationship-details/useLayoutedDetails.d.ts} +4 -6
  221. package/dist/overlays/{edge-details/use-layouted-edge-details.js → relationship-details/useLayoutedDetails.js} +68 -64
  222. package/dist/overlays/relationships-browser/-useRelationshipsView.d.ts +39 -0
  223. package/dist/overlays/relationships-browser/-useRelationshipsView.js +488 -0
  224. package/dist/overlays/relationships-browser/RelationshipsBrowser.d.ts +5 -0
  225. package/dist/overlays/relationships-browser/RelationshipsBrowser.js +209 -0
  226. package/dist/overlays/{relationships-of → relationships-browser}/SelectElement.css.d.ts +1 -0
  227. package/dist/overlays/relationships-browser/SelectElement.css.js +9 -0
  228. package/dist/overlays/relationships-browser/SelectElement.d.ts +7 -0
  229. package/dist/overlays/{relationships-of → relationships-browser}/SelectElement.js +11 -7
  230. package/dist/overlays/relationships-browser/_types.d.ts +40 -0
  231. package/dist/overlays/relationships-browser/actor.d.ts +66 -0
  232. package/dist/overlays/relationships-browser/actor.js +159 -0
  233. package/dist/overlays/relationships-browser/custom/ElementActions.d.ts +5 -0
  234. package/dist/overlays/relationships-browser/custom/ElementActions.js +43 -0
  235. package/dist/overlays/relationships-browser/custom/EmptyNode.d.ts +5 -0
  236. package/dist/overlays/{relationships-of/xyflow → relationships-browser/custom}/EmptyNode.js +1 -3
  237. package/dist/overlays/relationships-browser/custom/edgeTypes.d.ts +46 -0
  238. package/dist/overlays/relationships-browser/custom/edgeTypes.js +51 -0
  239. package/dist/overlays/relationships-browser/custom/index.d.ts +2 -0
  240. package/dist/overlays/relationships-browser/custom/nodeTypes.d.ts +45 -0
  241. package/dist/overlays/relationships-browser/custom/nodeTypes.js +93 -0
  242. package/dist/overlays/relationships-browser/custom/styles.css.d.ts +1 -0
  243. package/dist/overlays/relationships-browser/custom/styles.css.js +5 -0
  244. package/dist/overlays/relationships-browser/hooks.d.ts +62 -0
  245. package/dist/overlays/relationships-browser/hooks.js +46 -0
  246. package/dist/overlays/relationships-browser/useViewToNodesEdges.d.ts +10 -0
  247. package/dist/overlays/relationships-browser/useViewToNodesEdges.js +160 -0
  248. package/dist/style.css +1 -1
  249. package/dist/theme-vars.css.js +1 -0
  250. package/dist/utils/index.d.ts +4 -0
  251. package/dist/{xyflow/utils.d.ts → utils/xyflow.d.ts} +4 -4
  252. package/dist/{xyflow/utils.js → utils/xyflow.js} +14 -20
  253. package/package.json +24 -21
  254. package/src/LikeC4Diagram.css.ts +21 -15
  255. package/src/LikeC4Diagram.props.ts +14 -21
  256. package/src/LikeC4Diagram.tsx +105 -150
  257. package/src/LikeC4Search.tsx +21 -28
  258. package/src/StaticLikeC4Diagram.tsx +0 -1
  259. package/src/{xyflow/XYFlowBackground.tsx → base/Background.tsx} +8 -8
  260. package/src/base/BaseXYFlow.tsx +200 -0
  261. package/src/{xyflow → base}/const.ts +1 -1
  262. package/src/base/example/RelationshipsBrowser.tsx +62 -0
  263. package/src/base/example/_types.ts +71 -0
  264. package/src/base/example/custom.tsx +58 -0
  265. package/src/base/example/useViewToNodesEdges.ts +193 -0
  266. package/src/base/index.ts +10 -0
  267. package/src/base/primitives/NodeHandles.tsx +18 -0
  268. package/src/base/primitives/compound/CompoundActionButton.css.ts +55 -0
  269. package/src/base/primitives/compound/CompoundActionButton.tsx +52 -0
  270. package/src/base/primitives/compound/CompoundDetailsButton.css.ts +56 -0
  271. package/src/base/primitives/compound/CompoundDetailsButton.tsx +54 -0
  272. package/src/base/primitives/compound/CompoundNodeContainer.css.ts +161 -0
  273. package/src/base/primitives/compound/CompoundNodeContainer.tsx +95 -0
  274. package/src/base/primitives/compound/CompoundTitle.css.ts +43 -0
  275. package/src/base/primitives/compound/CompoundTitle.tsx +29 -0
  276. package/src/base/primitives/customEdge.ts +32 -0
  277. package/src/base/primitives/customNode.ts +21 -0
  278. package/src/base/primitives/edge/EdgeActionButton.tsx +27 -0
  279. package/src/base/primitives/edge/EdgeContainer.tsx +48 -0
  280. package/src/base/primitives/edge/EdgeLabel.css.ts +196 -0
  281. package/src/base/primitives/edge/EdgeLabel.tsx +136 -0
  282. package/src/{xyflow → base/primitives/edge}/EdgeMarkers.tsx +29 -1
  283. package/src/base/primitives/edge/EdgePath.tsx +89 -0
  284. package/src/base/primitives/edge/edge.css.ts +122 -0
  285. package/src/base/primitives/element/ElementActionButtons.css.ts +48 -0
  286. package/src/base/primitives/element/ElementActionButtons.tsx +73 -0
  287. package/src/base/primitives/element/ElementDetailsButton.css.ts +54 -0
  288. package/src/base/primitives/element/ElementDetailsButton.tsx +59 -0
  289. package/src/base/primitives/element/ElementNodeContainer.css.ts +47 -0
  290. package/src/base/primitives/element/ElementNodeContainer.tsx +72 -0
  291. package/src/base/primitives/element/ElementShape.css.ts +134 -0
  292. package/src/{xyflow/nodes/element/ElementShapeSvg.tsx → base/primitives/element/ElementShape.tsx} +64 -19
  293. package/src/base/primitives/element/ElementTitle.css.ts +156 -0
  294. package/src/base/primitives/element/ElementTitle.tsx +76 -0
  295. package/src/base/primitives/index.ts +17 -0
  296. package/src/base/types.ts +169 -0
  297. package/src/base/updateEdges.ts +40 -0
  298. package/src/base/updateNodes.ts +46 -0
  299. package/src/base/xyflowMachine.ts +75 -0
  300. package/src/context/DiagramEventHandlers.tsx +53 -0
  301. package/src/context/DiagramFeatures.tsx +162 -0
  302. package/src/{ui → context}/FramerMotionConfig.tsx +2 -6
  303. package/src/context/IconRenderer.tsx +45 -0
  304. package/src/context/RootContainer.tsx +31 -0
  305. package/src/context/index.ts +14 -0
  306. package/src/globals.css.ts +32 -32
  307. package/src/hooks/index.ts +7 -5
  308. package/src/hooks/useCurrentViewId.ts +8 -0
  309. package/src/hooks/useDiagram.ts +129 -0
  310. package/src/hooks/useDiagramActor.ts +25 -0
  311. package/src/hooks/useDiagramContext.ts +11 -0
  312. package/src/hooks/useMantinePortalProps.ts +2 -2
  313. package/src/hooks/useXYFlow.ts +12 -38
  314. package/src/index.ts +3 -7
  315. package/src/likec4diagram/DiagramActor.tsx +79 -0
  316. package/src/likec4diagram/DiagramUI.tsx +28 -0
  317. package/src/likec4diagram/XYFlow.tsx +137 -0
  318. package/src/likec4diagram/custom/edges/NotePopover.css.ts +27 -0
  319. package/src/likec4diagram/custom/edges/NotePopover.tsx +96 -0
  320. package/src/likec4diagram/custom/edges/RelationshipEdge.tsx +355 -0
  321. package/src/{xyflow → likec4diagram/custom}/edges/RelationshipsDropdownMenu.css.ts +7 -7
  322. package/src/{xyflow → likec4diagram/custom}/edges/RelationshipsDropdownMenu.tsx +91 -70
  323. package/src/likec4diagram/custom/edges/edges.css.ts +39 -0
  324. package/src/likec4diagram/custom/edges/utils.ts +126 -0
  325. package/src/likec4diagram/custom/index.tsx +8 -0
  326. package/src/likec4diagram/custom/nodes/CompoundActions.tsx +27 -0
  327. package/src/likec4diagram/custom/nodes/ElementActions.tsx +74 -0
  328. package/src/likec4diagram/custom/nodes/nodeTypes.tsx +107 -0
  329. package/src/likec4diagram/custom/nodes/toolbar/ColorButton.tsx +175 -0
  330. package/src/likec4diagram/custom/nodes/toolbar/CompoundToolbar.tsx +122 -0
  331. package/src/likec4diagram/custom/nodes/toolbar/ElementToolbar.tsx +140 -0
  332. package/src/likec4diagram/custom/nodes/toolbar/Toolbar.tsx +77 -0
  333. package/src/likec4diagram/custom/nodes/toolbar/_shared.tsx +143 -0
  334. package/src/likec4diagram/custom/nodes/toolbar/styles.css.ts +9 -0
  335. package/src/likec4diagram/state/actorContext.ts +8 -0
  336. package/src/{state → likec4diagram/state}/aligners.ts +67 -40
  337. package/src/likec4diagram/state/assign.ts +384 -0
  338. package/src/likec4diagram/state/hotkeyActor.ts +20 -0
  339. package/src/likec4diagram/state/inspector.ts +23 -0
  340. package/src/likec4diagram/state/machine.ts +946 -0
  341. package/src/likec4diagram/state/syncManualLayoutActor.ts +219 -0
  342. package/src/likec4diagram/state/utils.ts +52 -0
  343. package/src/likec4diagram/types.ts +144 -0
  344. package/src/{ui/top-left → likec4diagram/ui/controls}/ChangeAutoLayoutButton.tsx +32 -28
  345. package/src/likec4diagram/ui/controls/Controls.tsx +107 -0
  346. package/src/likec4diagram/ui/controls/LayoutDriftNotification.tsx +46 -0
  347. package/src/{ui/top-left → likec4diagram/ui/controls}/ManualLayoutToolsButton.tsx +16 -16
  348. package/src/likec4diagram/ui/controls/NavigationButtons.tsx +83 -0
  349. package/src/{ui/top-left → likec4diagram/ui/controls}/_shared.ts +4 -3
  350. package/src/{ui/top-left → likec4diagram/ui/controls}/styles.css.ts +17 -17
  351. package/src/{ui → likec4diagram/ui/diagram-title}/DiagramTitlePanel.css.ts +11 -11
  352. package/src/{ui → likec4diagram/ui/diagram-title}/DiagramTitlePanel.tsx +6 -5
  353. package/src/likec4diagram/ui/diagram-title/Link.tsx +40 -0
  354. package/src/likec4diagram/ui/index.ts +2 -0
  355. package/src/{ui → likec4diagram/ui}/notation/NotationPanel.css.ts +18 -18
  356. package/src/{ui → likec4diagram/ui}/notation/NotationPanel.tsx +44 -44
  357. package/src/{ui → likec4diagram/ui/walkthrough}/DynamicViewWalkthrough.css.ts +16 -16
  358. package/src/{ui → likec4diagram/ui/walkthrough}/DynamicViewWalkthrough.tsx +29 -49
  359. package/src/{xyflow → likec4diagram}/useLayoutConstraints.ts +54 -43
  360. package/src/likec4diagram/useViewToNodesEdges.ts +297 -0
  361. package/src/likec4model/index.ts +0 -6
  362. package/src/likec4model/useLikeC4Model.ts +1 -43
  363. package/src/overlays/Overlays.tsx +201 -147
  364. package/src/overlays/element-details/ElementDetailsCard.css.ts +58 -58
  365. package/src/overlays/element-details/ElementDetailsCard.tsx +143 -128
  366. package/src/overlays/element-details/TabPanelDeployments.css.ts +14 -14
  367. package/src/overlays/element-details/TabPanelDeployments.tsx +22 -22
  368. package/src/overlays/element-details/TabPanelRelationships.css.ts +19 -19
  369. package/src/overlays/element-details/TabPanelRelationships.tsx +45 -28
  370. package/src/overlays/element-details/TabPanelStructure.css.ts +7 -7
  371. package/src/overlays/element-details/TabPanelStructure.tsx +11 -11
  372. package/src/overlays/overlay/Overlay.css.ts +73 -0
  373. package/src/overlays/overlay/Overlay.tsx +99 -0
  374. package/src/overlays/relationship-details/RelationshipDetails.tsx +234 -0
  375. package/src/overlays/{edge-details → relationship-details}/SelectEdge.css.ts +20 -13
  376. package/src/overlays/{edge-details → relationship-details}/SelectEdge.tsx +14 -14
  377. package/src/overlays/relationship-details/_types.ts +73 -0
  378. package/src/overlays/relationship-details/actor.ts +162 -0
  379. package/src/overlays/relationship-details/custom/ElementActions.tsx +45 -0
  380. package/src/overlays/relationship-details/custom/edgeTypes.tsx +49 -0
  381. package/src/overlays/relationship-details/custom/index.tsx +2 -0
  382. package/src/overlays/relationship-details/custom/nodeTypes.tsx +108 -0
  383. package/src/overlays/relationship-details/custom/styles.css.ts +13 -0
  384. package/src/overlays/relationship-details/hooks.ts +48 -0
  385. package/src/overlays/{edge-details/use-layouted-edge-details.ts → relationship-details/useLayoutedDetails.ts} +128 -114
  386. package/src/overlays/relationships-browser/-useRelationshipsView.ts +642 -0
  387. package/src/overlays/relationships-browser/RelationshipsBrowser.tsx +247 -0
  388. package/src/overlays/{relationships-of → relationships-browser}/SelectElement.css.ts +12 -5
  389. package/src/overlays/{relationships-of → relationships-browser}/SelectElement.tsx +19 -17
  390. package/src/overlays/relationships-browser/_types.ts +89 -0
  391. package/src/overlays/relationships-browser/actor.ts +224 -0
  392. package/src/overlays/relationships-browser/custom/ElementActions.tsx +44 -0
  393. package/src/overlays/relationships-browser/custom/EmptyNode.tsx +18 -0
  394. package/src/overlays/relationships-browser/custom/edgeTypes.tsx +49 -0
  395. package/src/overlays/relationships-browser/custom/index.tsx +2 -0
  396. package/src/overlays/relationships-browser/custom/nodeTypes.tsx +109 -0
  397. package/src/overlays/relationships-browser/custom/styles.css.ts +13 -0
  398. package/src/overlays/relationships-browser/hooks.ts +48 -0
  399. package/src/overlays/relationships-browser/useViewToNodesEdges.ts +209 -0
  400. package/src/utils/index.ts +15 -0
  401. package/src/{xyflow/utils.ts → utils/xyflow.ts} +22 -8
  402. package/dist/_virtual/_commonjsHelpers.js +0 -6
  403. package/dist/controls/Text.d.ts +0 -2
  404. package/dist/controls/Text.js +0 -7
  405. package/dist/controls/action-button-bar/ActionButtonBar.css.d.ts +0 -1
  406. package/dist/controls/action-button-bar/ActionButtonBar.css.js +0 -5
  407. package/dist/controls/action-button-bar/ActionButtonBar.d.ts +0 -9
  408. package/dist/controls/action-button-bar/ActionButtonBar.js +0 -100
  409. package/dist/controls/action-button-bar/useActionButtonBarCtx.d.ts +0 -10
  410. package/dist/controls/action-button-bar/useActionButtonBarCtx.js +0 -9
  411. package/dist/controls/action-buttons/ActionButton.css.d.ts +0 -1
  412. package/dist/controls/action-buttons/ActionButton.css.js +0 -5
  413. package/dist/controls/action-buttons/ActionButton.d.ts +0 -9
  414. package/dist/controls/action-buttons/ActionButton.js +0 -66
  415. package/dist/controls/action-buttons/ActionButtons.d.ts +0 -12
  416. package/dist/controls/action-buttons/ActionButtons.js +0 -99
  417. package/dist/hooks/useDiagramState.d.ts +0 -6
  418. package/dist/hooks/useDiagramState.js +0 -27
  419. package/dist/overlays/OverlayContext.d.ts +0 -10
  420. package/dist/overlays/OverlayContext.js +0 -9
  421. package/dist/overlays/Overlays.css.d.ts +0 -3
  422. package/dist/overlays/Overlays.css.js +0 -7
  423. package/dist/overlays/edge-details/EdgeDetailsXYFlow.d.ts +0 -5
  424. package/dist/overlays/edge-details/EdgeDetailsXYFlow.js +0 -185
  425. package/dist/overlays/edge-details/SelectEdge.css.js +0 -17
  426. package/dist/overlays/edge-details/_types.d.ts +0 -14
  427. package/dist/overlays/edge-details/xyflow/CompoundNode.d.ts +0 -5
  428. package/dist/overlays/edge-details/xyflow/CompoundNode.js +0 -76
  429. package/dist/overlays/edge-details/xyflow/ElementNode.d.ts +0 -5
  430. package/dist/overlays/edge-details/xyflow/ElementNode.js +0 -159
  431. package/dist/overlays/edge-details/xyflow/RelationshipEdge.d.ts +0 -3
  432. package/dist/overlays/edge-details/xyflow/RelationshipEdge.js +0 -84
  433. package/dist/overlays/edge-details/xyflow/styles.css.d.ts +0 -9
  434. package/dist/overlays/edge-details/xyflow/styles.css.js +0 -21
  435. package/dist/overlays/index.d.ts +0 -1
  436. package/dist/overlays/relationships-of/RelationshipsOverlay.d.ts +0 -5
  437. package/dist/overlays/relationships-of/RelationshipsOverlay.js +0 -193
  438. package/dist/overlays/relationships-of/RelationshipsXYFlow.d.ts +0 -19
  439. package/dist/overlays/relationships-of/RelationshipsXYFlow.js +0 -290
  440. package/dist/overlays/relationships-of/SelectElement.css.js +0 -7
  441. package/dist/overlays/relationships-of/SelectElement.d.ts +0 -7
  442. package/dist/overlays/relationships-of/_types.d.ts +0 -28
  443. package/dist/overlays/relationships-of/use-layouted-relationships.d.ts +0 -22
  444. package/dist/overlays/relationships-of/use-layouted-relationships.js +0 -496
  445. package/dist/overlays/relationships-of/xyflow/CompoundNode.d.ts +0 -6
  446. package/dist/overlays/relationships-of/xyflow/CompoundNode.js +0 -120
  447. package/dist/overlays/relationships-of/xyflow/ElementNode.d.ts +0 -6
  448. package/dist/overlays/relationships-of/xyflow/ElementNode.js +0 -194
  449. package/dist/overlays/relationships-of/xyflow/EmptyNode.d.ts +0 -5
  450. package/dist/overlays/relationships-of/xyflow/RelationshipEdge.d.ts +0 -3
  451. package/dist/overlays/relationships-of/xyflow/RelationshipEdge.js +0 -123
  452. package/dist/overlays/relationships-of/xyflow/styles.css.d.ts +0 -14
  453. package/dist/overlays/relationships-of/xyflow/styles.css.js +0 -24
  454. package/dist/overlays/shared/xyflow/RelationshipEdge.css.d.ts +0 -4
  455. package/dist/overlays/shared/xyflow/RelationshipEdge.css.js +0 -12
  456. package/dist/overlays/shared/xyflow/_types.d.ts +0 -77
  457. package/dist/state/DiagramContext.d.ts +0 -1609
  458. package/dist/state/DiagramContext.js +0 -101
  459. package/dist/state/diagram-to-xyflow.d.ts +0 -11
  460. package/dist/state/diagram-to-xyflow.js +0 -113
  461. package/dist/state/diagramStore.d.ts +0 -1705
  462. package/dist/state/diagramStore.js +0 -808
  463. package/dist/state/diagramStore.layout.d.ts +0 -4
  464. package/dist/state/diagramStore.layout.js +0 -56
  465. package/dist/ui/DiagramTitlePanel.css.js +0 -11
  466. package/dist/ui/DiagramTitlePanel.d.ts +0 -1
  467. package/dist/ui/notation/NotationPanel.css.js +0 -16
  468. package/dist/ui/notation/NotationPanel.d.ts +0 -1
  469. package/dist/ui/top-left/TopLeftPanel.d.ts +0 -4
  470. package/dist/ui/top-left/TopLeftPanel.js +0 -211
  471. package/dist/ui/top-left/styles.css.js +0 -17
  472. package/dist/xyflow/FitviewOnDiagramChange.d.ts +0 -4
  473. package/dist/xyflow/FitviewOnDiagramChange.js +0 -72
  474. package/dist/xyflow/SelectEdgesOnNodeFocus.d.ts +0 -1
  475. package/dist/xyflow/SelectEdgesOnNodeFocus.js +0 -96
  476. package/dist/xyflow/XYFlow.d.ts +0 -8
  477. package/dist/xyflow/XYFlow.js +0 -145
  478. package/dist/xyflow/XYFlowBackground.d.ts +0 -10
  479. package/dist/xyflow/XYFlowInner.d.ts +0 -8
  480. package/dist/xyflow/XYFlowInner.js +0 -41
  481. package/dist/xyflow/edges/EdgeLabel.d.ts +0 -7
  482. package/dist/xyflow/edges/EdgeLabel.js +0 -160
  483. package/dist/xyflow/edges/RelationshipEdge.d.ts +0 -6
  484. package/dist/xyflow/edges/RelationshipEdge.js +0 -443
  485. package/dist/xyflow/edges/edges.css.js +0 -37
  486. package/dist/xyflow/edges/utils.d.ts +0 -16
  487. package/dist/xyflow/edges/utils.js +0 -24
  488. package/dist/xyflow/nodes/AnimateVariants.d.ts +0 -1313
  489. package/dist/xyflow/nodes/AnimateVariants.js +0 -123
  490. package/dist/xyflow/nodes/Node.css.d.ts +0 -3
  491. package/dist/xyflow/nodes/Node.css.js +0 -9
  492. package/dist/xyflow/nodes/compound/CompoundNode.css.d.ts +0 -14
  493. package/dist/xyflow/nodes/compound/CompoundNode.css.js +0 -27
  494. package/dist/xyflow/nodes/compound/CompoundNode.d.ts +0 -6
  495. package/dist/xyflow/nodes/compound/CompoundNode.js +0 -216
  496. package/dist/xyflow/nodes/compound/index.d.ts +0 -1
  497. package/dist/xyflow/nodes/element/ElementLink.css.d.ts +0 -3
  498. package/dist/xyflow/nodes/element/ElementLink.d.ts +0 -6
  499. package/dist/xyflow/nodes/element/ElementNode.d.ts +0 -6
  500. package/dist/xyflow/nodes/element/ElementNode.js +0 -190
  501. package/dist/xyflow/nodes/element/ElementShapeSvg.d.ts +0 -17
  502. package/dist/xyflow/nodes/element/element.css.d.ts +0 -18
  503. package/dist/xyflow/nodes/element/element.css.js +0 -31
  504. package/dist/xyflow/nodes/element/index.d.ts +0 -1
  505. package/dist/xyflow/nodes/shared/ElementIcon.d.ts +0 -8
  506. package/dist/xyflow/nodes/shared/Toolbar.d.ts +0 -9
  507. package/dist/xyflow/nodes/shared/Toolbar.js +0 -436
  508. package/dist/xyflow/types.d.ts +0 -36
  509. package/dist/xyflow/useXYFlowEvents.d.ts +0 -160
  510. package/dist/xyflow/useXYFlowEvents.js +0 -275
  511. package/src/controls/Text.ts +0 -5
  512. package/src/controls/action-button-bar/ActionButtonBar.css.ts +0 -13
  513. package/src/controls/action-button-bar/ActionButtonBar.tsx +0 -138
  514. package/src/controls/action-button-bar/useActionButtonBarCtx.ts +0 -13
  515. package/src/controls/action-buttons/ActionButton.css.ts +0 -29
  516. package/src/controls/action-buttons/ActionButton.tsx +0 -66
  517. package/src/controls/action-buttons/ActionButtons.tsx +0 -138
  518. package/src/hooks/useDiagramState.ts +0 -36
  519. package/src/overlays/OverlayContext.tsx +0 -11
  520. package/src/overlays/Overlays.css.ts +0 -136
  521. package/src/overlays/edge-details/EdgeDetailsXYFlow.tsx +0 -255
  522. package/src/overlays/edge-details/_types.ts +0 -18
  523. package/src/overlays/edge-details/xyflow/CompoundNode.tsx +0 -72
  524. package/src/overlays/edge-details/xyflow/ElementNode.tsx +0 -152
  525. package/src/overlays/edge-details/xyflow/RelationshipEdge.tsx +0 -85
  526. package/src/overlays/edge-details/xyflow/styles.css.ts +0 -144
  527. package/src/overlays/index.tsx +0 -1
  528. package/src/overlays/relationships-of/RelationshipsOverlay.tsx +0 -185
  529. package/src/overlays/relationships-of/RelationshipsXYFlow.tsx +0 -378
  530. package/src/overlays/relationships-of/_types.ts +0 -40
  531. package/src/overlays/relationships-of/use-layouted-relationships.ts +0 -699
  532. package/src/overlays/relationships-of/xyflow/CompoundNode.tsx +0 -124
  533. package/src/overlays/relationships-of/xyflow/ElementNode.tsx +0 -194
  534. package/src/overlays/relationships-of/xyflow/EmptyNode.tsx +0 -19
  535. package/src/overlays/relationships-of/xyflow/RelationshipEdge.tsx +0 -127
  536. package/src/overlays/relationships-of/xyflow/styles.css.ts +0 -214
  537. package/src/overlays/shared/xyflow/RelationshipEdge.css.ts +0 -60
  538. package/src/overlays/shared/xyflow/_types.ts +0 -87
  539. package/src/state/DiagramContext.tsx +0 -107
  540. package/src/state/diagram-to-xyflow.ts +0 -150
  541. package/src/state/diagramStore.layout.ts +0 -66
  542. package/src/state/diagramStore.ts +0 -1099
  543. package/src/ui/top-left/TopLeftPanel.tsx +0 -220
  544. package/src/xyflow/FitviewOnDiagramChange.tsx +0 -83
  545. package/src/xyflow/SelectEdgesOnNodeFocus.tsx +0 -106
  546. package/src/xyflow/XYFlow.tsx +0 -179
  547. package/src/xyflow/XYFlowInner.tsx +0 -48
  548. package/src/xyflow/edges/EdgeLabel.tsx +0 -193
  549. package/src/xyflow/edges/RelationshipEdge.tsx +0 -547
  550. package/src/xyflow/edges/edges.css.ts +0 -288
  551. package/src/xyflow/edges/utils.ts +0 -153
  552. package/src/xyflow/nodes/AnimateVariants.ts +0 -143
  553. package/src/xyflow/nodes/Node.css.ts +0 -44
  554. package/src/xyflow/nodes/compound/CompoundNode.css.ts +0 -258
  555. package/src/xyflow/nodes/compound/CompoundNode.tsx +0 -226
  556. package/src/xyflow/nodes/compound/index.ts +0 -1
  557. package/src/xyflow/nodes/element/ElementLink.css.ts +0 -67
  558. package/src/xyflow/nodes/element/ElementLink.tsx +0 -97
  559. package/src/xyflow/nodes/element/ElementNode.tsx +0 -208
  560. package/src/xyflow/nodes/element/element.css.ts +0 -369
  561. package/src/xyflow/nodes/element/index.ts +0 -1
  562. package/src/xyflow/nodes/shared/ElementIcon.tsx +0 -43
  563. package/src/xyflow/nodes/shared/Toolbar.tsx +0 -496
  564. package/src/xyflow/types.ts +0 -57
  565. package/src/xyflow/useXYFlowEvents.ts +0 -315
  566. /package/dist/{xyflow → base}/const.d.ts +0 -0
  567. /package/dist/{xyflow → base}/const.js +0 -0
  568. /package/dist/{ui → context}/EnsureMantine.d.ts +0 -0
  569. /package/dist/{ui → context}/EnsureMantine.js +0 -0
  570. /package/dist/{ui → context}/FramerMotionConfig.d.ts +0 -0
  571. /package/dist/{xyflow → likec4diagram/custom}/edges/RelationshipsDropdownMenu.css.d.ts +0 -0
  572. /package/dist/{ui/top-left → likec4diagram/ui/controls}/ChangeAutoLayoutButton.d.ts +0 -0
  573. /package/dist/{ui/top-left → likec4diagram/ui/controls}/ManualLayoutToolsButton.d.ts +0 -0
  574. /package/dist/{ui/top-left → likec4diagram/ui/controls}/_shared.d.ts +0 -0
  575. /package/dist/{ui → likec4diagram/ui/diagram-title}/DiagramTitlePanel.css.d.ts +0 -0
  576. /package/dist/{ui → likec4diagram/ui/diagram-title}/Link.js +0 -0
  577. /package/dist/{ui → likec4diagram/ui}/notation/NotationPanel.css.d.ts +0 -0
  578. /package/dist/{ui → likec4diagram/ui}/notation/index.d.ts +0 -0
  579. /package/dist/{ui → likec4diagram/ui/walkthrough}/DynamicViewWalkthrough.css.d.ts +0 -0
  580. /package/dist/{ui → likec4diagram/ui/walkthrough}/DynamicViewWalkthrough.d.ts +0 -0
  581. /package/src/{ui → context}/EnsureMantine.tsx +0 -0
  582. /package/src/{ui → likec4diagram/ui}/notation/index.ts +0 -0
@@ -1,275 +0,0 @@
1
- import { DiagramNode } from "@likec4/core";
2
- import { useRef, useMemo } from "react";
3
- import { isTruthy, isNonNullish, first } from "remeda";
4
- import { useDiagramStoreApi } from "../hooks/useDiagramState.js";
5
- function useXYFlowEvents() {
6
- const diagramApi = useDiagramStoreApi();
7
- const lastClickTimestamp = useRef();
8
- const dblclickTimeout = useRef();
9
- return useMemo(() => {
10
- const dbclickLock = () => {
11
- if (dblclickTimeout.current !== void 0) {
12
- return true;
13
- }
14
- dblclickTimeout.current = window.setTimeout(() => {
15
- dblclickTimeout.current = void 0;
16
- }, 300);
17
- return false;
18
- };
19
- const lastClickWasRecent = (ms = 2e3) => {
20
- const prevTimestamp = lastClickTimestamp.current ?? 0;
21
- const now = lastClickTimestamp.current = Date.now();
22
- return prevTimestamp + ms > now;
23
- };
24
- return {
25
- onDoubleClick: (event) => {
26
- const {
27
- onCanvasDblClick,
28
- zoomable,
29
- viewportChanged,
30
- fitDiagram,
31
- resetFocusAndLastClicked
32
- } = diagramApi.getState();
33
- resetFocusAndLastClicked();
34
- if (zoomable && viewportChanged) {
35
- fitDiagram();
36
- }
37
- if (!onCanvasDblClick) {
38
- event.stopPropagation();
39
- }
40
- onCanvasDblClick == null ? void 0 : onCanvasDblClick(event);
41
- },
42
- onPaneClick: (event) => {
43
- if (dbclickLock()) {
44
- return;
45
- }
46
- const {
47
- focusedNodeId,
48
- activeWalkthrough,
49
- fitDiagram,
50
- onCanvasClick,
51
- resetFocusAndLastClicked
52
- } = diagramApi.getState();
53
- if ((focusedNodeId ?? activeWalkthrough) !== null) {
54
- fitDiagram();
55
- if (!onCanvasClick) {
56
- event.stopPropagation();
57
- }
58
- }
59
- resetFocusAndLastClicked();
60
- onCanvasClick == null ? void 0 : onCanvasClick(event);
61
- },
62
- onNodeContextMenu: (event, xynode) => {
63
- var _a, _b;
64
- diagramApi.getState().setLastClickedNode(xynode.id);
65
- (_b = (_a = diagramApi.getState()).onNodeContextMenu) == null ? void 0 : _b.call(
66
- _a,
67
- xynode.data.element,
68
- event
69
- );
70
- },
71
- onPaneContextMenu: (event) => {
72
- var _a, _b;
73
- diagramApi.getState().resetFocusAndLastClicked();
74
- (_b = (_a = diagramApi.getState()).onCanvasContextMenu) == null ? void 0 : _b.call(_a, event);
75
- },
76
- onEdgeContextMenu: (event, xyedge) => {
77
- var _a, _b;
78
- diagramApi.getState().setLastClickedEdge(xyedge.id);
79
- (_b = (_a = diagramApi.getState()).onEdgeContextMenu) == null ? void 0 : _b.call(
80
- _a,
81
- xyedge.data.edge,
82
- event
83
- );
84
- },
85
- onNodeClick: (event, xynode) => {
86
- const {
87
- focusedNodeId,
88
- fitDiagram,
89
- focusOnNode,
90
- onNodeClick,
91
- xystore,
92
- enableFocusMode,
93
- lastClickedNodeId,
94
- nodesSelectable,
95
- enableElementDetails,
96
- setLastClickedNode,
97
- onOpenSource,
98
- openOverlay
99
- } = diagramApi.getState();
100
- const modelRef = DiagramNode.modelRef(xynode.data.element);
101
- const deploymentRef = DiagramNode.deploymentRef(xynode.data.element);
102
- setLastClickedNode(xynode.id);
103
- const shallChangeFocus = !!focusedNodeId && focusedNodeId !== xynode.id;
104
- const clickedRecently = lastClickWasRecent() && lastClickedNodeId === xynode.id;
105
- let stopPropagation = false;
106
- if (clickedRecently && !!onOpenSource && (modelRef || deploymentRef)) {
107
- if (modelRef) {
108
- onOpenSource({
109
- element: modelRef
110
- });
111
- } else if (deploymentRef) {
112
- onOpenSource({
113
- deployment: deploymentRef
114
- });
115
- }
116
- stopPropagation = true;
117
- }
118
- if (enableFocusMode) {
119
- switch (true) {
120
- case (shallChangeFocus || clickedRecently && !focusedNodeId): {
121
- focusOnNode(xynode.id);
122
- stopPropagation = true;
123
- break;
124
- }
125
- case (clickedRecently && focusedNodeId === xynode.id): {
126
- focusOnNode(false);
127
- fitDiagram();
128
- stopPropagation = true;
129
- break;
130
- }
131
- case (!clickedRecently && modelRef && focusedNodeId === xynode.id && enableElementDetails): {
132
- openOverlay({
133
- elementDetails: xynode.data.element.id
134
- });
135
- stopPropagation = true;
136
- break;
137
- }
138
- }
139
- } else if (enableElementDetails && modelRef && (clickedRecently || focusedNodeId === xynode.id) && !onNodeClick) {
140
- openOverlay({
141
- elementDetails: xynode.data.element.id
142
- });
143
- stopPropagation = true;
144
- } else if (nodesSelectable) {
145
- xystore.getState().addSelectedNodes([xynode.id]);
146
- stopPropagation = true;
147
- }
148
- if (!onNodeClick && stopPropagation) {
149
- event.stopPropagation();
150
- return;
151
- }
152
- onNodeClick == null ? void 0 : onNodeClick(
153
- xynode.data.element,
154
- event
155
- );
156
- },
157
- onNodeDoubleClick: (event, xynode) => {
158
- const {
159
- setLastClickedNode
160
- } = diagramApi.getState();
161
- setLastClickedNode(xynode.id);
162
- lastClickWasRecent();
163
- event.stopPropagation();
164
- },
165
- onEdgeClick: (event, xyedge) => {
166
- const {
167
- lastClickedEdgeId,
168
- isDynamicView,
169
- enableDynamicViewWalkthrough,
170
- activateWalkthrough,
171
- activeWalkthrough,
172
- focusedNodeId,
173
- xystore,
174
- nodesSelectable,
175
- onOpenSource,
176
- focusOnNode,
177
- onEdgeClick,
178
- setLastClickedEdge
179
- } = diagramApi.getState();
180
- if (lastClickedEdgeId !== xyedge.id) {
181
- setLastClickedEdge(xyedge.id);
182
- }
183
- const isNotAFirstClick = lastClickedEdgeId === xyedge.id;
184
- const connectedToFocusedNode = isTruthy(focusedNodeId) && (focusedNodeId === xyedge.source || focusedNodeId === xyedge.target);
185
- if (isDynamicView && enableDynamicViewWalkthrough && (connectedToFocusedNode || isNotAFirstClick || isNonNullish(activeWalkthrough))) {
186
- const nextStep = xyedge.data.edge.id;
187
- if ((activeWalkthrough == null ? void 0 : activeWalkthrough.stepId) !== nextStep) {
188
- activateWalkthrough(nextStep);
189
- event.stopPropagation();
190
- return;
191
- }
192
- }
193
- if (isTruthy(focusedNodeId)) {
194
- if (connectedToFocusedNode) {
195
- focusOnNode(focusedNodeId === xyedge.source ? xyedge.target : xyedge.source);
196
- } else {
197
- focusOnNode(xyedge.source);
198
- }
199
- if (!onEdgeClick) {
200
- event.stopPropagation();
201
- return;
202
- }
203
- } else if (onOpenSource && !onEdgeClick) {
204
- onOpenSource({
205
- relation: first(xyedge.data.edge.relations)
206
- });
207
- event.stopPropagation();
208
- return;
209
- } else if (nodesSelectable) {
210
- xystore.getState().addSelectedEdges([xyedge.id]);
211
- if (!onEdgeClick) {
212
- event.stopPropagation();
213
- return;
214
- }
215
- }
216
- onEdgeClick == null ? void 0 : onEdgeClick(
217
- xyedge.data.edge,
218
- event
219
- );
220
- },
221
- onEdgeDoubleClick: (event, xyedge) => {
222
- diagramApi.getState().setLastClickedEdge(xyedge.id);
223
- const {
224
- enableFocusMode,
225
- isDynamicView,
226
- enableDynamicViewWalkthrough,
227
- focusOnNode,
228
- activeWalkthrough,
229
- activateWalkthrough,
230
- openOverlay,
231
- enableRelationshipDetails
232
- } = diagramApi.getState();
233
- if (isDynamicView && enableDynamicViewWalkthrough) {
234
- const nextStep = xyedge.data.edge.id;
235
- if ((activeWalkthrough == null ? void 0 : activeWalkthrough.stepId) !== nextStep) {
236
- activateWalkthrough(nextStep);
237
- event.stopPropagation();
238
- }
239
- return;
240
- }
241
- if (enableRelationshipDetails) {
242
- openOverlay({
243
- edgeDetails: xyedge.data.edge.id
244
- });
245
- event.stopPropagation();
246
- return;
247
- }
248
- if (enableFocusMode) {
249
- focusOnNode(xyedge.source);
250
- event.stopPropagation();
251
- return;
252
- }
253
- },
254
- onMoveEnd: (event, _viewport) => {
255
- const viewportChanged = !!event;
256
- if (viewportChanged !== diagramApi.getState().viewportChanged) {
257
- diagramApi.setState({ viewportChanged }, false, `viewport-changed: ${viewportChanged}`);
258
- }
259
- },
260
- onEdgeMouseEnter: (_event, { id }) => {
261
- const { setHoveredEdge } = diagramApi.getState();
262
- setHoveredEdge(id);
263
- },
264
- onEdgeMouseLeave: (_event, xyedge) => {
265
- const { hoveredEdgeId, setHoveredEdge } = diagramApi.getState();
266
- if (hoveredEdgeId === xyedge.id) {
267
- setHoveredEdge(null);
268
- }
269
- }
270
- };
271
- }, [diagramApi]);
272
- }
273
- export {
274
- useXYFlowEvents
275
- };
@@ -1,5 +0,0 @@
1
- import { Text as MantineText } from '@mantine/core'
2
-
3
- export const Text = MantineText.withProps({
4
- component: 'div'
5
- })
@@ -1,13 +0,0 @@
1
- import { style } from "@vanilla-extract/css";
2
-
3
- export const container = style({
4
- zIndex: 100,
5
- width: '100%',
6
- display: 'flex',
7
- flexDirection: 'row',
8
- flexWrap: 'nowrap',
9
- alignItems: 'center',
10
- gap: 2,
11
- justifyContent: 'center',
12
- pointerEvents: 'none',
13
- })
@@ -1,138 +0,0 @@
1
- import { Box } from '@mantine/core'
2
- import { useId } from '@mantine/hooks'
3
- import clsx from 'clsx'
4
- import { type Variants } from 'framer-motion'
5
- import type { PropsWithChildren } from 'react'
6
- import * as css from './ActionButtonBar.css'
7
- import { ActionButtonBarContext } from './useActionButtonBarCtx'
8
-
9
- const TRANSLATE_DIFF = 5
10
-
11
- type ShiftX = 'left' | 'spread' | 'right'
12
- type ShiftY = 'top' | 'spread' | 'bottom'
13
- type ShiftMode = number | 'spread'
14
-
15
- type ActionButtonBarProps = PropsWithChildren<{
16
- shiftX?: ShiftX
17
- shiftY?: ShiftY
18
- }>
19
-
20
- const elementVariants = (prefix: string, index: number, count: number, shiftX: ShiftMode, shiftY: ShiftMode) => {
21
- const name = `${prefix}${index + 1}`
22
- const translation = count > 1
23
- ? {
24
- x: shiftX === 'spread' ? 1 - count + index * 2 : shiftX,
25
- y: shiftY === 'spread' ? 1 - count + index * 2 : shiftY,
26
- }
27
- : {
28
- x: 0,
29
- y: 1,
30
- }
31
-
32
- const variants = {
33
- idle: {
34
- '--icon-scale': 'scale(1)',
35
- '--ai-bg': 'var(--ai-bg-idle)',
36
- scale: 1,
37
- opacity: 0.8,
38
- translateX: 0,
39
- translateY: 0,
40
- originX: 0.5,
41
- originY: 0.5,
42
- // translateY: 0,
43
- // ...align === 'left' && {
44
- // originX: 0.75,
45
- // translateX: -1
46
- // },
47
- // ...align === 'right' && {
48
- // originX: 0.25,
49
- // translateX: 1
50
- // }
51
- },
52
- hovered: {
53
- '--ai-bg': 'var(--ai-bg-hover)',
54
- '--icon-scale': 'scale(1)',
55
- // translateY: 3,
56
- scale: 1.28,
57
- opacity: 1,
58
- translateX: translation.x * TRANSLATE_DIFF,
59
- translateY: translation.y * TRANSLATE_DIFF,
60
- // ...align === 'left' && {
61
- // translateX: -4
62
- // },
63
- // ...align === 'right' && {
64
- // translateX: 4
65
- // }
66
- },
67
- [`hovered:${name}`]: {
68
- '--ai-bg': 'var(--ai-hover)',
69
- '--icon-scale': 'scale(1.08)',
70
- scale: 1.45,
71
- },
72
- [`tap:${name}`]: {
73
- '--icon-scale': 'scale(1)',
74
- scale: 1.15,
75
- },
76
- selected: {},
77
- } satisfies Variants
78
- variants['selected'] = variants['hovered']
79
- variants['hovered:details'] = variants['idle']
80
- return {
81
- variants,
82
- ['data-animate-target']: name,
83
- }
84
- }
85
-
86
- export const ActionButtonBar = ({
87
- shiftX = 'spread',
88
- shiftY = 'spread',
89
- children,
90
- }: ActionButtonBarProps) => {
91
- const id = useId()
92
- const childrenArray = Array.isArray(children) ? children : [children]
93
-
94
- // determine offsets for shifting
95
- let shiftDiffX: ShiftMode = 'spread'
96
- if (shiftX == 'left') {
97
- shiftDiffX = -1
98
- }
99
- else if (shiftX == 'right') {
100
- shiftDiffX = 1
101
- }
102
-
103
- let shiftDiffY: ShiftMode = 'spread'
104
- if (shiftY == 'top') {
105
- shiftDiffY = -1
106
- }
107
- else if (shiftY == 'bottom') {
108
- shiftDiffY = 1
109
- }
110
-
111
- return (
112
- <Box className={clsx(css.container)}>
113
- {childrenArray.map((child, i, all) => (
114
- <ActionButtonBarContext.Provider
115
- value={elementVariants(id, i, all.length, shiftDiffX, shiftDiffY)}>
116
- {child}
117
- </ActionButtonBarContext.Provider>
118
- // <>{cloneElement(child, {
119
- // key: i,
120
- // variants: elementVariants(i, all.length, shiftDiffX, shiftDiffY),
121
- // ['data-animate-target']: `i${i + 1}`,
122
- // ...props
123
- // })}</>
124
- ))}
125
- {
126
- /* {childrenArray.filter(child => !!child).map((child, i) => (
127
- <m.div
128
- key={i}
129
- variants={elementVariants(i, childrenArray.length, shiftDiffX, shiftDiffY)}
130
- {...props}
131
- >
132
- {child}
133
- </m.div>
134
- ))} */
135
- }
136
- </Box>
137
- )
138
- }
@@ -1,13 +0,0 @@
1
- import type { Variants } from 'framer-motion'
2
- import { createContext, useContext } from 'react'
3
-
4
- export const ActionButtonBarContext = createContext<
5
- {
6
- variants: Variants
7
- ['data-animate-target']?: string
8
- } | null
9
- >(null)
10
-
11
- export function useActionButtonBarCtx() {
12
- return useContext(ActionButtonBarContext)
13
- }
@@ -1,29 +0,0 @@
1
- import { style } from '@vanilla-extract/css'
2
- import { mantine, vars, whereLight } from '../../theme-vars'
3
-
4
- export const btn = style({
5
- pointerEvents: 'all',
6
- color: vars.element.loContrast,
7
- cursor: 'pointer',
8
- backgroundColor: 'var(--ai-bg)',
9
- 'vars': {
10
- '--ai-bg-idle': `color-mix(in srgb , ${vars.element.fill}, transparent 99%)`,
11
- '--ai-bg': `var(--ai-bg-idle)`,
12
- '--ai-bg-hover': `color-mix(in srgb , ${vars.element.fill} 65%, ${vars.element.stroke})`,
13
- '--ai-hover': `color-mix(in srgb , ${vars.element.fill} 50%, ${vars.element.stroke})`,
14
- },
15
- ':hover': {
16
- boxShadow: mantine.shadows.md,
17
- },
18
- selectors: {
19
- [`${whereLight} .likec4-compound-transparent &`]: {
20
- color: vars.element.stroke,
21
- opacity: 0.85,
22
- vars: {
23
- '--ai-bg-hover': `color-mix(in srgb , ${vars.element.fill}, transparent 20%)`,
24
- '--ai-hover': `color-mix(in srgb , ${vars.element.fill}, transparent 10%)`,
25
- '--ai-bg': `color-mix(in srgb , ${vars.element.fill}, transparent 99%)`,
26
- },
27
- },
28
- },
29
- })
@@ -1,66 +0,0 @@
1
- import { type ActionIconProps, ActionIcon, Tooltip } from '@mantine/core'
2
- import clsx from 'clsx'
3
- import { type HTMLMotionProps, type Variants, m } from 'framer-motion'
4
- import type { PropsWithoutRef } from 'react'
5
- import { stopPropagation } from '../../xyflow/utils'
6
- import { useActionButtonBarCtx } from '../action-button-bar/useActionButtonBarCtx'
7
- import * as css from './ActionButton.css'
8
-
9
- export type ActionButtonProps = PropsWithoutRef<
10
- Omit<ActionIconProps & HTMLMotionProps<'div'>, 'onClick' | 'children'> & {
11
- onClick: (e: React.MouseEvent) => void
12
- IconComponent: React.ComponentType<any>
13
- tooltipLabel?: string
14
- }
15
- >
16
-
17
- const variants = {
18
- idle: {
19
- '--icon-scale': 'scale(1)',
20
- '--ai-bg': 'var(--ai-bg-idle)',
21
- },
22
- hovered: {
23
- '--icon-scale': 'scale(1)',
24
- '--ai-bg': 'var(--ai-bg-hover)',
25
- },
26
- selected: {},
27
- } satisfies Variants
28
- variants['selected'] = variants['hovered']
29
-
30
- export const ActionButton = ({
31
- onClick: action,
32
- IconComponent,
33
- tooltipLabel,
34
- ...props
35
- }: ActionButtonProps) => {
36
- const ctx = useActionButtonBarCtx() ?? {
37
- variants: variants,
38
- }
39
- return (
40
- <Tooltip
41
- fz="xs"
42
- color="dark"
43
- label={tooltipLabel ?? ''}
44
- disabled={!tooltipLabel}
45
- withinPortal={false}
46
- offset={2}
47
- openDelay={600}>
48
- <ActionIcon
49
- component={m.div}
50
- className={clsx('nodrag nopan', css.btn)}
51
- radius="md"
52
- role="button"
53
- onClick={action}
54
- onDoubleClick={stopPropagation}
55
- {...ctx}
56
- {...props}
57
- >
58
- <IconComponent
59
- style={{
60
- width: '70%',
61
- transform: 'var(--icon-scale)',
62
- }} />
63
- </ActionIcon>
64
- </Tooltip>
65
- )
66
- }
@@ -1,138 +0,0 @@
1
- import type { Fqn } from '@likec4/core'
2
- import { IconFileSymlink, IconId, IconTransform, IconZoomScan } from '@tabler/icons-react'
3
- import { useCallback } from 'react'
4
- import { useDiagramState, useDiagramStoreApi } from '../../hooks'
5
- import { type ActionButtonProps, ActionButton } from './ActionButton'
6
-
7
- export type NodeActionButtonProps = Omit<ActionButtonProps, 'onClick' | 'IconComponent' | 'tooltipLabel'> & {
8
- fqn: Fqn
9
- }
10
-
11
- // Browse Relationships
12
-
13
- export const BrowseRelationshipsButton = ({
14
- fqn,
15
- ...props
16
- }: NodeActionButtonProps) => {
17
- const {
18
- openOverlay,
19
- } = useDiagramState(s => ({
20
- openOverlay: s.openOverlay,
21
- }))
22
-
23
- const onBrowseRelationships = useCallback((e: React.MouseEvent) => {
24
- e.stopPropagation()
25
- openOverlay({ relationshipsOf: fqn })
26
- }, [openOverlay, fqn])
27
-
28
- return (
29
- <ActionButton
30
- {...props}
31
- onClick={onBrowseRelationships}
32
- IconComponent={IconTransform}
33
- tooltipLabel="Browse relationships"
34
- />
35
- )
36
- }
37
-
38
- // Navigate to
39
- // It triggers the onNavigateTo event from the xynode (node should have a navigateTo property)
40
- export type NavigateToButtonProps = Omit<ActionButtonProps, 'onClick' | 'IconComponent' | 'tooltipLabel'> & {
41
- xynodeId: string
42
- }
43
- export const NavigateToButton = ({
44
- xynodeId,
45
- ...props
46
- }: NavigateToButtonProps) => {
47
- const store = useDiagramStoreApi()
48
-
49
- const onNavigateTo = useCallback((e: React.MouseEvent) => {
50
- e.stopPropagation()
51
- store.getState().triggerOnNavigateTo(xynodeId, e)
52
- }, [store, xynodeId])
53
-
54
- return (
55
- <ActionButton
56
- {...props}
57
- onClick={onNavigateTo}
58
- IconComponent={IconZoomScan}
59
- tooltipLabel="Open scoped view"
60
- />
61
- )
62
- }
63
-
64
- // Open details
65
- const VariantsDetailsBtn = {
66
- idle: {
67
- '--ai-bg': 'var(--ai-bg-idle)',
68
- scale: 1,
69
- opacity: 0.5,
70
- originX: 0.45,
71
- originY: 0.55,
72
- },
73
- selected: {},
74
- hovered: {
75
- scale: 1.2,
76
- opacity: 0.7,
77
- },
78
- 'hovered:details': {
79
- scale: 1.44,
80
- opacity: 1,
81
- },
82
- 'tap:details': {
83
- scale: 1.15,
84
- },
85
- }
86
- VariantsDetailsBtn['selected'] = VariantsDetailsBtn['hovered']
87
-
88
- export const OpenDetailsButton = ({
89
- fqn,
90
- ...props
91
- }: NodeActionButtonProps) => {
92
- const {
93
- openOverlay,
94
- } = useDiagramState(s => ({
95
- openOverlay: s.openOverlay,
96
- }))
97
-
98
- const onOpenDetails = useCallback((e: React.MouseEvent) => {
99
- e.stopPropagation()
100
- openOverlay({ elementDetails: fqn })
101
- }, [openOverlay, fqn])
102
-
103
- return (
104
- <ActionButton
105
- variants={VariantsDetailsBtn}
106
- onClick={onOpenDetails}
107
- IconComponent={IconId}
108
- tooltipLabel="Open details"
109
- data-animate-target="details"
110
- {...props}
111
- />
112
- )
113
- }
114
-
115
- // Open element source
116
-
117
- export const OpenSourceButton = ({
118
- fqn,
119
- ...props
120
- }: NodeActionButtonProps) => {
121
- const diagramApi = useDiagramStoreApi()
122
-
123
- const onOpenSource = useCallback((e: React.MouseEvent) => {
124
- e.stopPropagation()
125
- diagramApi.getState().onOpenSource?.({
126
- element: fqn,
127
- })
128
- }, [diagramApi, fqn])
129
-
130
- return (
131
- <ActionButton
132
- {...props}
133
- onClick={onOpenSource}
134
- IconComponent={IconFileSymlink}
135
- tooltipLabel="Open source"
136
- />
137
- )
138
- }