@likec4/diagram 1.19.2 → 1.20.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 (581) 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 -86
  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 +24 -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 -8
  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/utils/index.d.ts +4 -0
  250. package/dist/{xyflow/utils.d.ts → utils/xyflow.d.ts} +4 -4
  251. package/dist/{xyflow/utils.js → utils/xyflow.js} +14 -20
  252. package/package.json +23 -20
  253. package/src/LikeC4Diagram.css.ts +21 -15
  254. package/src/LikeC4Diagram.props.ts +14 -21
  255. package/src/LikeC4Diagram.tsx +105 -150
  256. package/src/LikeC4Search.tsx +21 -28
  257. package/src/StaticLikeC4Diagram.tsx +0 -1
  258. package/src/{xyflow/XYFlowBackground.tsx → base/Background.tsx} +8 -8
  259. package/src/base/BaseXYFlow.tsx +200 -0
  260. package/src/{xyflow → base}/const.ts +1 -1
  261. package/src/base/example/RelationshipsBrowser.tsx +62 -0
  262. package/src/base/example/_types.ts +71 -0
  263. package/src/base/example/custom.tsx +58 -0
  264. package/src/base/example/useViewToNodesEdges.ts +193 -0
  265. package/src/base/index.ts +10 -0
  266. package/src/base/primitives/NodeHandles.tsx +18 -0
  267. package/src/base/primitives/compound/CompoundActionButton.css.ts +55 -0
  268. package/src/base/primitives/compound/CompoundActionButton.tsx +52 -0
  269. package/src/base/primitives/compound/CompoundDetailsButton.css.ts +56 -0
  270. package/src/base/primitives/compound/CompoundDetailsButton.tsx +54 -0
  271. package/src/base/primitives/compound/CompoundNodeContainer.css.ts +161 -0
  272. package/src/base/primitives/compound/CompoundNodeContainer.tsx +95 -0
  273. package/src/base/primitives/compound/CompoundTitle.css.ts +43 -0
  274. package/src/base/primitives/compound/CompoundTitle.tsx +29 -0
  275. package/src/base/primitives/customEdge.ts +32 -0
  276. package/src/base/primitives/customNode.ts +21 -0
  277. package/src/base/primitives/edge/EdgeActionButton.tsx +27 -0
  278. package/src/base/primitives/edge/EdgeContainer.tsx +48 -0
  279. package/src/base/primitives/edge/EdgeLabel.css.ts +196 -0
  280. package/src/base/primitives/edge/EdgeLabel.tsx +136 -0
  281. package/src/{xyflow → base/primitives/edge}/EdgeMarkers.tsx +29 -1
  282. package/src/base/primitives/edge/EdgePath.tsx +89 -0
  283. package/src/base/primitives/edge/edge.css.ts +122 -0
  284. package/src/base/primitives/element/ElementActionButtons.css.ts +48 -0
  285. package/src/base/primitives/element/ElementActionButtons.tsx +73 -0
  286. package/src/base/primitives/element/ElementDetailsButton.css.ts +54 -0
  287. package/src/base/primitives/element/ElementDetailsButton.tsx +59 -0
  288. package/src/base/primitives/element/ElementNodeContainer.css.ts +47 -0
  289. package/src/base/primitives/element/ElementNodeContainer.tsx +72 -0
  290. package/src/base/primitives/element/ElementShape.css.ts +134 -0
  291. package/src/{xyflow/nodes/element/ElementShapeSvg.tsx → base/primitives/element/ElementShape.tsx} +64 -19
  292. package/src/base/primitives/element/ElementTitle.css.ts +156 -0
  293. package/src/base/primitives/element/ElementTitle.tsx +76 -0
  294. package/src/base/primitives/index.ts +17 -0
  295. package/src/base/types.ts +169 -0
  296. package/src/base/updateEdges.ts +40 -0
  297. package/src/base/updateNodes.ts +46 -0
  298. package/src/base/xyflowMachine.ts +75 -0
  299. package/src/context/DiagramEventHandlers.tsx +53 -0
  300. package/src/context/DiagramFeatures.tsx +162 -0
  301. package/src/{ui → context}/FramerMotionConfig.tsx +2 -6
  302. package/src/context/IconRenderer.tsx +45 -0
  303. package/src/context/RootContainer.tsx +31 -0
  304. package/src/context/index.ts +14 -0
  305. package/src/globals.css.ts +32 -32
  306. package/src/hooks/index.ts +7 -5
  307. package/src/hooks/useCurrentViewId.ts +8 -0
  308. package/src/hooks/useDiagram.ts +129 -0
  309. package/src/hooks/useDiagramActor.ts +25 -0
  310. package/src/hooks/useDiagramContext.ts +11 -0
  311. package/src/hooks/useMantinePortalProps.ts +2 -2
  312. package/src/hooks/useXYFlow.ts +12 -38
  313. package/src/index.ts +3 -7
  314. package/src/likec4diagram/DiagramActor.tsx +79 -0
  315. package/src/likec4diagram/DiagramUI.tsx +28 -0
  316. package/src/likec4diagram/XYFlow.tsx +137 -0
  317. package/src/likec4diagram/custom/edges/NotePopover.css.ts +27 -0
  318. package/src/likec4diagram/custom/edges/NotePopover.tsx +96 -0
  319. package/src/likec4diagram/custom/edges/RelationshipEdge.tsx +355 -0
  320. package/src/{xyflow → likec4diagram/custom}/edges/RelationshipsDropdownMenu.css.ts +7 -7
  321. package/src/{xyflow → likec4diagram/custom}/edges/RelationshipsDropdownMenu.tsx +91 -70
  322. package/src/likec4diagram/custom/edges/edges.css.ts +39 -0
  323. package/src/likec4diagram/custom/edges/utils.ts +125 -0
  324. package/src/likec4diagram/custom/index.tsx +8 -0
  325. package/src/likec4diagram/custom/nodes/CompoundActions.tsx +27 -0
  326. package/src/likec4diagram/custom/nodes/ElementActions.tsx +74 -0
  327. package/src/likec4diagram/custom/nodes/nodeTypes.tsx +107 -0
  328. package/src/likec4diagram/custom/nodes/toolbar/ColorButton.tsx +175 -0
  329. package/src/likec4diagram/custom/nodes/toolbar/CompoundToolbar.tsx +122 -0
  330. package/src/likec4diagram/custom/nodes/toolbar/ElementToolbar.tsx +140 -0
  331. package/src/likec4diagram/custom/nodes/toolbar/Toolbar.tsx +77 -0
  332. package/src/likec4diagram/custom/nodes/toolbar/_shared.tsx +143 -0
  333. package/src/likec4diagram/custom/nodes/toolbar/styles.css.ts +9 -0
  334. package/src/likec4diagram/state/actorContext.ts +8 -0
  335. package/src/{state → likec4diagram/state}/aligners.ts +67 -40
  336. package/src/likec4diagram/state/assign.ts +384 -0
  337. package/src/likec4diagram/state/hotkeyActor.ts +20 -0
  338. package/src/likec4diagram/state/inspector.ts +23 -0
  339. package/src/likec4diagram/state/machine.ts +946 -0
  340. package/src/likec4diagram/state/syncManualLayoutActor.ts +219 -0
  341. package/src/likec4diagram/state/utils.ts +52 -0
  342. package/src/likec4diagram/types.ts +144 -0
  343. package/src/{ui/top-left → likec4diagram/ui/controls}/ChangeAutoLayoutButton.tsx +32 -28
  344. package/src/likec4diagram/ui/controls/Controls.tsx +107 -0
  345. package/src/likec4diagram/ui/controls/LayoutDriftNotification.tsx +46 -0
  346. package/src/{ui/top-left → likec4diagram/ui/controls}/ManualLayoutToolsButton.tsx +16 -16
  347. package/src/likec4diagram/ui/controls/NavigationButtons.tsx +83 -0
  348. package/src/{ui/top-left → likec4diagram/ui/controls}/_shared.ts +4 -3
  349. package/src/{ui/top-left → likec4diagram/ui/controls}/styles.css.ts +17 -17
  350. package/src/{ui → likec4diagram/ui/diagram-title}/DiagramTitlePanel.css.ts +11 -11
  351. package/src/{ui → likec4diagram/ui/diagram-title}/DiagramTitlePanel.tsx +6 -5
  352. package/src/likec4diagram/ui/diagram-title/Link.tsx +40 -0
  353. package/src/likec4diagram/ui/index.ts +2 -0
  354. package/src/{ui → likec4diagram/ui}/notation/NotationPanel.css.ts +18 -18
  355. package/src/{ui → likec4diagram/ui}/notation/NotationPanel.tsx +44 -44
  356. package/src/{ui → likec4diagram/ui/walkthrough}/DynamicViewWalkthrough.css.ts +16 -16
  357. package/src/{ui → likec4diagram/ui/walkthrough}/DynamicViewWalkthrough.tsx +29 -49
  358. package/src/{xyflow → likec4diagram}/useLayoutConstraints.ts +54 -43
  359. package/src/likec4diagram/useViewToNodesEdges.ts +297 -0
  360. package/src/likec4model/index.ts +0 -6
  361. package/src/likec4model/useLikeC4Model.ts +1 -43
  362. package/src/overlays/Overlays.tsx +201 -147
  363. package/src/overlays/element-details/ElementDetailsCard.css.ts +58 -58
  364. package/src/overlays/element-details/ElementDetailsCard.tsx +143 -128
  365. package/src/overlays/element-details/TabPanelDeployments.css.ts +14 -14
  366. package/src/overlays/element-details/TabPanelDeployments.tsx +22 -22
  367. package/src/overlays/element-details/TabPanelRelationships.css.ts +19 -19
  368. package/src/overlays/element-details/TabPanelRelationships.tsx +45 -28
  369. package/src/overlays/element-details/TabPanelStructure.css.ts +7 -7
  370. package/src/overlays/element-details/TabPanelStructure.tsx +11 -11
  371. package/src/overlays/overlay/Overlay.css.ts +73 -0
  372. package/src/overlays/overlay/Overlay.tsx +99 -0
  373. package/src/overlays/relationship-details/RelationshipDetails.tsx +234 -0
  374. package/src/overlays/{edge-details → relationship-details}/SelectEdge.css.ts +20 -13
  375. package/src/overlays/{edge-details → relationship-details}/SelectEdge.tsx +14 -14
  376. package/src/overlays/relationship-details/_types.ts +73 -0
  377. package/src/overlays/relationship-details/actor.ts +162 -0
  378. package/src/overlays/relationship-details/custom/ElementActions.tsx +45 -0
  379. package/src/overlays/relationship-details/custom/edgeTypes.tsx +49 -0
  380. package/src/overlays/relationship-details/custom/index.tsx +2 -0
  381. package/src/overlays/relationship-details/custom/nodeTypes.tsx +108 -0
  382. package/src/overlays/relationship-details/custom/styles.css.ts +13 -0
  383. package/src/overlays/relationship-details/hooks.ts +48 -0
  384. package/src/overlays/{edge-details/use-layouted-edge-details.ts → relationship-details/useLayoutedDetails.ts} +128 -114
  385. package/src/overlays/relationships-browser/-useRelationshipsView.ts +642 -0
  386. package/src/overlays/relationships-browser/RelationshipsBrowser.tsx +247 -0
  387. package/src/overlays/{relationships-of → relationships-browser}/SelectElement.css.ts +12 -5
  388. package/src/overlays/{relationships-of → relationships-browser}/SelectElement.tsx +19 -18
  389. package/src/overlays/relationships-browser/_types.ts +89 -0
  390. package/src/overlays/relationships-browser/actor.ts +224 -0
  391. package/src/overlays/relationships-browser/custom/ElementActions.tsx +44 -0
  392. package/src/overlays/relationships-browser/custom/EmptyNode.tsx +18 -0
  393. package/src/overlays/relationships-browser/custom/edgeTypes.tsx +49 -0
  394. package/src/overlays/relationships-browser/custom/index.tsx +2 -0
  395. package/src/overlays/relationships-browser/custom/nodeTypes.tsx +109 -0
  396. package/src/overlays/relationships-browser/custom/styles.css.ts +13 -0
  397. package/src/overlays/relationships-browser/hooks.ts +48 -0
  398. package/src/overlays/relationships-browser/useViewToNodesEdges.ts +209 -0
  399. package/src/utils/index.ts +15 -0
  400. package/src/{xyflow/utils.ts → utils/xyflow.ts} +22 -8
  401. package/dist/_virtual/_commonjsHelpers.js +0 -6
  402. package/dist/controls/Text.d.ts +0 -2
  403. package/dist/controls/Text.js +0 -7
  404. package/dist/controls/action-button-bar/ActionButtonBar.css.d.ts +0 -1
  405. package/dist/controls/action-button-bar/ActionButtonBar.css.js +0 -5
  406. package/dist/controls/action-button-bar/ActionButtonBar.d.ts +0 -9
  407. package/dist/controls/action-button-bar/ActionButtonBar.js +0 -100
  408. package/dist/controls/action-button-bar/useActionButtonBarCtx.d.ts +0 -10
  409. package/dist/controls/action-button-bar/useActionButtonBarCtx.js +0 -9
  410. package/dist/controls/action-buttons/ActionButton.css.d.ts +0 -1
  411. package/dist/controls/action-buttons/ActionButton.css.js +0 -5
  412. package/dist/controls/action-buttons/ActionButton.d.ts +0 -9
  413. package/dist/controls/action-buttons/ActionButton.js +0 -66
  414. package/dist/controls/action-buttons/ActionButtons.d.ts +0 -12
  415. package/dist/controls/action-buttons/ActionButtons.js +0 -99
  416. package/dist/hooks/useDiagramState.d.ts +0 -6
  417. package/dist/hooks/useDiagramState.js +0 -27
  418. package/dist/overlays/OverlayContext.d.ts +0 -10
  419. package/dist/overlays/OverlayContext.js +0 -9
  420. package/dist/overlays/Overlays.css.d.ts +0 -3
  421. package/dist/overlays/Overlays.css.js +0 -7
  422. package/dist/overlays/edge-details/EdgeDetailsXYFlow.d.ts +0 -5
  423. package/dist/overlays/edge-details/EdgeDetailsXYFlow.js +0 -185
  424. package/dist/overlays/edge-details/SelectEdge.css.js +0 -17
  425. package/dist/overlays/edge-details/_types.d.ts +0 -14
  426. package/dist/overlays/edge-details/xyflow/CompoundNode.d.ts +0 -5
  427. package/dist/overlays/edge-details/xyflow/CompoundNode.js +0 -76
  428. package/dist/overlays/edge-details/xyflow/ElementNode.d.ts +0 -5
  429. package/dist/overlays/edge-details/xyflow/ElementNode.js +0 -159
  430. package/dist/overlays/edge-details/xyflow/RelationshipEdge.d.ts +0 -3
  431. package/dist/overlays/edge-details/xyflow/RelationshipEdge.js +0 -84
  432. package/dist/overlays/edge-details/xyflow/styles.css.d.ts +0 -9
  433. package/dist/overlays/edge-details/xyflow/styles.css.js +0 -21
  434. package/dist/overlays/index.d.ts +0 -1
  435. package/dist/overlays/relationships-of/RelationshipsOverlay.d.ts +0 -5
  436. package/dist/overlays/relationships-of/RelationshipsOverlay.js +0 -193
  437. package/dist/overlays/relationships-of/RelationshipsXYFlow.d.ts +0 -19
  438. package/dist/overlays/relationships-of/RelationshipsXYFlow.js +0 -290
  439. package/dist/overlays/relationships-of/SelectElement.css.js +0 -7
  440. package/dist/overlays/relationships-of/SelectElement.d.ts +0 -7
  441. package/dist/overlays/relationships-of/_types.d.ts +0 -28
  442. package/dist/overlays/relationships-of/use-layouted-relationships.d.ts +0 -22
  443. package/dist/overlays/relationships-of/use-layouted-relationships.js +0 -496
  444. package/dist/overlays/relationships-of/xyflow/CompoundNode.d.ts +0 -6
  445. package/dist/overlays/relationships-of/xyflow/CompoundNode.js +0 -120
  446. package/dist/overlays/relationships-of/xyflow/ElementNode.d.ts +0 -6
  447. package/dist/overlays/relationships-of/xyflow/ElementNode.js +0 -194
  448. package/dist/overlays/relationships-of/xyflow/EmptyNode.d.ts +0 -5
  449. package/dist/overlays/relationships-of/xyflow/RelationshipEdge.d.ts +0 -3
  450. package/dist/overlays/relationships-of/xyflow/RelationshipEdge.js +0 -123
  451. package/dist/overlays/relationships-of/xyflow/styles.css.d.ts +0 -14
  452. package/dist/overlays/relationships-of/xyflow/styles.css.js +0 -24
  453. package/dist/overlays/shared/xyflow/RelationshipEdge.css.d.ts +0 -4
  454. package/dist/overlays/shared/xyflow/RelationshipEdge.css.js +0 -12
  455. package/dist/overlays/shared/xyflow/_types.d.ts +0 -77
  456. package/dist/state/DiagramContext.d.ts +0 -1609
  457. package/dist/state/DiagramContext.js +0 -101
  458. package/dist/state/diagram-to-xyflow.d.ts +0 -11
  459. package/dist/state/diagram-to-xyflow.js +0 -113
  460. package/dist/state/diagramStore.d.ts +0 -1705
  461. package/dist/state/diagramStore.js +0 -808
  462. package/dist/state/diagramStore.layout.d.ts +0 -4
  463. package/dist/state/diagramStore.layout.js +0 -56
  464. package/dist/ui/DiagramTitlePanel.css.js +0 -11
  465. package/dist/ui/DiagramTitlePanel.d.ts +0 -1
  466. package/dist/ui/notation/NotationPanel.css.js +0 -16
  467. package/dist/ui/notation/NotationPanel.d.ts +0 -1
  468. package/dist/ui/top-left/TopLeftPanel.d.ts +0 -4
  469. package/dist/ui/top-left/TopLeftPanel.js +0 -211
  470. package/dist/ui/top-left/styles.css.js +0 -17
  471. package/dist/xyflow/FitviewOnDiagramChange.d.ts +0 -4
  472. package/dist/xyflow/FitviewOnDiagramChange.js +0 -72
  473. package/dist/xyflow/SelectEdgesOnNodeFocus.d.ts +0 -1
  474. package/dist/xyflow/SelectEdgesOnNodeFocus.js +0 -96
  475. package/dist/xyflow/XYFlow.d.ts +0 -8
  476. package/dist/xyflow/XYFlow.js +0 -145
  477. package/dist/xyflow/XYFlowBackground.d.ts +0 -10
  478. package/dist/xyflow/XYFlowInner.d.ts +0 -8
  479. package/dist/xyflow/XYFlowInner.js +0 -41
  480. package/dist/xyflow/edges/EdgeLabel.d.ts +0 -7
  481. package/dist/xyflow/edges/EdgeLabel.js +0 -160
  482. package/dist/xyflow/edges/RelationshipEdge.d.ts +0 -6
  483. package/dist/xyflow/edges/RelationshipEdge.js +0 -443
  484. package/dist/xyflow/edges/edges.css.js +0 -37
  485. package/dist/xyflow/edges/utils.d.ts +0 -16
  486. package/dist/xyflow/edges/utils.js +0 -24
  487. package/dist/xyflow/nodes/AnimateVariants.d.ts +0 -1313
  488. package/dist/xyflow/nodes/AnimateVariants.js +0 -123
  489. package/dist/xyflow/nodes/Node.css.d.ts +0 -3
  490. package/dist/xyflow/nodes/Node.css.js +0 -9
  491. package/dist/xyflow/nodes/compound/CompoundNode.css.d.ts +0 -14
  492. package/dist/xyflow/nodes/compound/CompoundNode.css.js +0 -27
  493. package/dist/xyflow/nodes/compound/CompoundNode.d.ts +0 -6
  494. package/dist/xyflow/nodes/compound/CompoundNode.js +0 -216
  495. package/dist/xyflow/nodes/compound/index.d.ts +0 -1
  496. package/dist/xyflow/nodes/element/ElementLink.css.d.ts +0 -3
  497. package/dist/xyflow/nodes/element/ElementLink.d.ts +0 -6
  498. package/dist/xyflow/nodes/element/ElementNode.d.ts +0 -6
  499. package/dist/xyflow/nodes/element/ElementNode.js +0 -190
  500. package/dist/xyflow/nodes/element/ElementShapeSvg.d.ts +0 -17
  501. package/dist/xyflow/nodes/element/element.css.d.ts +0 -18
  502. package/dist/xyflow/nodes/element/element.css.js +0 -31
  503. package/dist/xyflow/nodes/element/index.d.ts +0 -1
  504. package/dist/xyflow/nodes/shared/ElementIcon.d.ts +0 -8
  505. package/dist/xyflow/nodes/shared/Toolbar.d.ts +0 -9
  506. package/dist/xyflow/nodes/shared/Toolbar.js +0 -436
  507. package/dist/xyflow/types.d.ts +0 -36
  508. package/dist/xyflow/useXYFlowEvents.d.ts +0 -160
  509. package/dist/xyflow/useXYFlowEvents.js +0 -275
  510. package/src/controls/Text.ts +0 -5
  511. package/src/controls/action-button-bar/ActionButtonBar.css.ts +0 -13
  512. package/src/controls/action-button-bar/ActionButtonBar.tsx +0 -138
  513. package/src/controls/action-button-bar/useActionButtonBarCtx.ts +0 -13
  514. package/src/controls/action-buttons/ActionButton.css.ts +0 -29
  515. package/src/controls/action-buttons/ActionButton.tsx +0 -66
  516. package/src/controls/action-buttons/ActionButtons.tsx +0 -138
  517. package/src/hooks/useDiagramState.ts +0 -36
  518. package/src/overlays/OverlayContext.tsx +0 -11
  519. package/src/overlays/Overlays.css.ts +0 -136
  520. package/src/overlays/edge-details/EdgeDetailsXYFlow.tsx +0 -255
  521. package/src/overlays/edge-details/_types.ts +0 -18
  522. package/src/overlays/edge-details/xyflow/CompoundNode.tsx +0 -72
  523. package/src/overlays/edge-details/xyflow/ElementNode.tsx +0 -152
  524. package/src/overlays/edge-details/xyflow/RelationshipEdge.tsx +0 -85
  525. package/src/overlays/edge-details/xyflow/styles.css.ts +0 -144
  526. package/src/overlays/index.tsx +0 -1
  527. package/src/overlays/relationships-of/RelationshipsOverlay.tsx +0 -185
  528. package/src/overlays/relationships-of/RelationshipsXYFlow.tsx +0 -378
  529. package/src/overlays/relationships-of/_types.ts +0 -40
  530. package/src/overlays/relationships-of/use-layouted-relationships.ts +0 -699
  531. package/src/overlays/relationships-of/xyflow/CompoundNode.tsx +0 -124
  532. package/src/overlays/relationships-of/xyflow/ElementNode.tsx +0 -194
  533. package/src/overlays/relationships-of/xyflow/EmptyNode.tsx +0 -19
  534. package/src/overlays/relationships-of/xyflow/RelationshipEdge.tsx +0 -127
  535. package/src/overlays/relationships-of/xyflow/styles.css.ts +0 -214
  536. package/src/overlays/shared/xyflow/RelationshipEdge.css.ts +0 -60
  537. package/src/overlays/shared/xyflow/_types.ts +0 -87
  538. package/src/state/DiagramContext.tsx +0 -107
  539. package/src/state/diagram-to-xyflow.ts +0 -150
  540. package/src/state/diagramStore.layout.ts +0 -66
  541. package/src/state/diagramStore.ts +0 -1099
  542. package/src/ui/top-left/TopLeftPanel.tsx +0 -220
  543. package/src/xyflow/FitviewOnDiagramChange.tsx +0 -83
  544. package/src/xyflow/SelectEdgesOnNodeFocus.tsx +0 -106
  545. package/src/xyflow/XYFlow.tsx +0 -179
  546. package/src/xyflow/XYFlowInner.tsx +0 -48
  547. package/src/xyflow/edges/EdgeLabel.tsx +0 -193
  548. package/src/xyflow/edges/RelationshipEdge.tsx +0 -547
  549. package/src/xyflow/edges/edges.css.ts +0 -288
  550. package/src/xyflow/edges/utils.ts +0 -153
  551. package/src/xyflow/nodes/AnimateVariants.ts +0 -143
  552. package/src/xyflow/nodes/Node.css.ts +0 -44
  553. package/src/xyflow/nodes/compound/CompoundNode.css.ts +0 -258
  554. package/src/xyflow/nodes/compound/CompoundNode.tsx +0 -227
  555. package/src/xyflow/nodes/compound/index.ts +0 -1
  556. package/src/xyflow/nodes/element/ElementLink.css.ts +0 -67
  557. package/src/xyflow/nodes/element/ElementLink.tsx +0 -97
  558. package/src/xyflow/nodes/element/ElementNode.tsx +0 -209
  559. package/src/xyflow/nodes/element/element.css.ts +0 -369
  560. package/src/xyflow/nodes/element/index.ts +0 -1
  561. package/src/xyflow/nodes/shared/ElementIcon.tsx +0 -43
  562. package/src/xyflow/nodes/shared/Toolbar.tsx +0 -496
  563. package/src/xyflow/types.ts +0 -57
  564. package/src/xyflow/useXYFlowEvents.ts +0 -315
  565. /package/dist/{xyflow → base}/const.d.ts +0 -0
  566. /package/dist/{xyflow → base}/const.js +0 -0
  567. /package/dist/{ui → context}/EnsureMantine.d.ts +0 -0
  568. /package/dist/{ui → context}/EnsureMantine.js +0 -0
  569. /package/dist/{ui → context}/FramerMotionConfig.d.ts +0 -0
  570. /package/dist/{xyflow → likec4diagram/custom}/edges/RelationshipsDropdownMenu.css.d.ts +0 -0
  571. /package/dist/{ui/top-left → likec4diagram/ui/controls}/ChangeAutoLayoutButton.d.ts +0 -0
  572. /package/dist/{ui/top-left → likec4diagram/ui/controls}/ManualLayoutToolsButton.d.ts +0 -0
  573. /package/dist/{ui/top-left → likec4diagram/ui/controls}/_shared.d.ts +0 -0
  574. /package/dist/{ui → likec4diagram/ui/diagram-title}/DiagramTitlePanel.css.d.ts +0 -0
  575. /package/dist/{ui → likec4diagram/ui/diagram-title}/Link.js +0 -0
  576. /package/dist/{ui → likec4diagram/ui}/notation/NotationPanel.css.d.ts +0 -0
  577. /package/dist/{ui → likec4diagram/ui}/notation/index.d.ts +0 -0
  578. /package/dist/{ui → likec4diagram/ui/walkthrough}/DynamicViewWalkthrough.css.d.ts +0 -0
  579. /package/dist/{ui → likec4diagram/ui/walkthrough}/DynamicViewWalkthrough.d.ts +0 -0
  580. /package/src/{ui → context}/EnsureMantine.tsx +0 -0
  581. /package/src/{ui → likec4diagram/ui}/notation/index.ts +0 -0
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { Popover, PopoverTarget, PopoverDropdown, Group, ActionIconGroup } from "@mantine/core";
3
3
  import { IconLayoutCollage, IconLayoutBoardSplit, IconLayoutAlignLeft, IconLayoutAlignCenter, IconLayoutAlignRight, IconLayoutAlignTop, IconLayoutAlignMiddle, IconLayoutAlignBottom, IconRouteOff } from "@tabler/icons-react";
4
- import { useDiagramStoreApi } from "../../hooks/useDiagramState.js";
4
+ import { useDiagram } from "../../../hooks/useDiagram.js";
5
5
  import { Tooltip, ActionIcon } from "./_shared.js";
6
6
  const Action = ({
7
7
  label,
@@ -9,7 +9,7 @@ const Action = ({
9
9
  onClick
10
10
  }) => /* @__PURE__ */ jsx(Tooltip, { label, withinPortal: false, position: "top", children: /* @__PURE__ */ jsx(ActionIcon, { onClick, children: icon }) });
11
11
  const ManualLayoutToolsButton = (props) => {
12
- const store = useDiagramStoreApi();
12
+ const diagram = useDiagram();
13
13
  return /* @__PURE__ */ jsxs(
14
14
  Popover,
15
15
  {
@@ -34,7 +34,7 @@ const ManualLayoutToolsButton = (props) => {
34
34
  icon: /* @__PURE__ */ jsx(IconLayoutBoardSplit, {}),
35
35
  onClick: (e) => {
36
36
  e.stopPropagation();
37
- store.getState().align("Column");
37
+ diagram.align("Column");
38
38
  }
39
39
  }
40
40
  ),
@@ -45,7 +45,7 @@ const ManualLayoutToolsButton = (props) => {
45
45
  icon: /* @__PURE__ */ jsx(IconLayoutAlignLeft, {}),
46
46
  onClick: (e) => {
47
47
  e.stopPropagation();
48
- store.getState().align("Left");
48
+ diagram.align("Left");
49
49
  }
50
50
  }
51
51
  ),
@@ -56,7 +56,7 @@ const ManualLayoutToolsButton = (props) => {
56
56
  icon: /* @__PURE__ */ jsx(IconLayoutAlignCenter, {}),
57
57
  onClick: (e) => {
58
58
  e.stopPropagation();
59
- store.getState().align("Center");
59
+ diagram.align("Center");
60
60
  }
61
61
  }
62
62
  ),
@@ -67,7 +67,7 @@ const ManualLayoutToolsButton = (props) => {
67
67
  icon: /* @__PURE__ */ jsx(IconLayoutAlignRight, {}),
68
68
  onClick: (e) => {
69
69
  e.stopPropagation();
70
- store.getState().align("Right");
70
+ diagram.align("Right");
71
71
  }
72
72
  }
73
73
  ),
@@ -78,7 +78,7 @@ const ManualLayoutToolsButton = (props) => {
78
78
  icon: /* @__PURE__ */ jsx(IconLayoutBoardSplit, { style: { transform: "rotate(90deg)" } }),
79
79
  onClick: (e) => {
80
80
  e.stopPropagation();
81
- store.getState().align("Row");
81
+ diagram.align("Row");
82
82
  }
83
83
  }
84
84
  ),
@@ -89,7 +89,7 @@ const ManualLayoutToolsButton = (props) => {
89
89
  icon: /* @__PURE__ */ jsx(IconLayoutAlignTop, {}),
90
90
  onClick: (e) => {
91
91
  e.stopPropagation();
92
- store.getState().align("Top");
92
+ diagram.align("Top");
93
93
  }
94
94
  }
95
95
  ),
@@ -100,7 +100,7 @@ const ManualLayoutToolsButton = (props) => {
100
100
  icon: /* @__PURE__ */ jsx(IconLayoutAlignMiddle, {}),
101
101
  onClick: (e) => {
102
102
  e.stopPropagation();
103
- store.getState().align("Middle");
103
+ diagram.align("Middle");
104
104
  }
105
105
  }
106
106
  ),
@@ -111,7 +111,7 @@ const ManualLayoutToolsButton = (props) => {
111
111
  icon: /* @__PURE__ */ jsx(IconLayoutAlignBottom, {}),
112
112
  onClick: (e) => {
113
113
  e.stopPropagation();
114
- store.getState().align("Bottom");
114
+ diagram.align("Bottom");
115
115
  }
116
116
  }
117
117
  )
@@ -123,7 +123,7 @@ const ManualLayoutToolsButton = (props) => {
123
123
  icon: /* @__PURE__ */ jsx(IconRouteOff, {}),
124
124
  onClick: (e) => {
125
125
  e.stopPropagation();
126
- store.getState().resetEdgeControlPoints();
126
+ diagram.resetEdgeControlPoints();
127
127
  }
128
128
  }
129
129
  )
@@ -0,0 +1 @@
1
+ export declare const NavigationButtons: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,92 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { IconMenu2, IconChevronLeft, IconChevronRight } from "@tabler/icons-react";
3
+ import { LayoutGroup, AnimatePresence, m } from "framer-motion";
4
+ import { Group } from "@mantine/core";
5
+ import clsx from "clsx";
6
+ import { useDiagram } from "../../../hooks/useDiagram.js";
7
+ import { useDiagramContext } from "../../../hooks/useDiagramContext.js";
8
+ import { ActionIcon } from "./_shared.js";
9
+ import { navigationButtons } from "./styles.css.js";
10
+ import { useDiagramEventHandlers } from "../../../context/DiagramEventHandlers.js";
11
+ const NavigationButtons = () => {
12
+ const diagram = useDiagram();
13
+ const { onBurgerMenuClick } = useDiagramEventHandlers();
14
+ const {
15
+ hasStepBack,
16
+ hasStepForward
17
+ } = useDiagramContext((s) => ({
18
+ hasStepBack: s.navigationHistory.currentIndex > 0,
19
+ hasStepForward: s.navigationHistory.currentIndex < s.navigationHistory.history.length - 1
20
+ }));
21
+ return /* @__PURE__ */ jsx(LayoutGroup, { children: /* @__PURE__ */ jsxs(
22
+ Group,
23
+ {
24
+ className: clsx(navigationButtons, "likec4-navigation-webview"),
25
+ align: "flex-start",
26
+ gap: "xs",
27
+ children: [
28
+ onBurgerMenuClick && /* @__PURE__ */ jsx(
29
+ ActionIcon,
30
+ {
31
+ onClick: (e) => {
32
+ e.stopPropagation();
33
+ onBurgerMenuClick();
34
+ },
35
+ children: /* @__PURE__ */ jsx(IconMenu2, {})
36
+ }
37
+ ),
38
+ /* @__PURE__ */ jsxs(AnimatePresence, { children: [
39
+ hasStepBack && /* @__PURE__ */ jsx(
40
+ m.div,
41
+ {
42
+ layout: true,
43
+ initial: { opacity: 0.05, transform: "translateX(-10px)" },
44
+ animate: { opacity: 1, transform: "translateX(0)" },
45
+ exit: {
46
+ opacity: 0.05,
47
+ transform: "translateX(-10px)"
48
+ },
49
+ children: /* @__PURE__ */ jsx(
50
+ ActionIcon,
51
+ {
52
+ onClick: (e) => {
53
+ e.stopPropagation();
54
+ diagram.navigate("back");
55
+ },
56
+ children: /* @__PURE__ */ jsx(IconChevronLeft, {})
57
+ }
58
+ )
59
+ },
60
+ "back"
61
+ ),
62
+ hasStepForward && /* @__PURE__ */ jsx(
63
+ m.div,
64
+ {
65
+ layout: true,
66
+ initial: { opacity: 0.05, transform: "translateX(10px)" },
67
+ animate: { opacity: 1, transform: "translateX(0)" },
68
+ exit: {
69
+ opacity: 0,
70
+ transform: "translateX(10px)"
71
+ },
72
+ children: /* @__PURE__ */ jsx(
73
+ ActionIcon,
74
+ {
75
+ onClick: (e) => {
76
+ e.stopPropagation();
77
+ diagram.navigate("forward");
78
+ },
79
+ children: /* @__PURE__ */ jsx(IconChevronRight, {})
80
+ }
81
+ )
82
+ },
83
+ "forward"
84
+ )
85
+ ] })
86
+ ]
87
+ }
88
+ ) });
89
+ };
90
+ export {
91
+ NavigationButtons
92
+ };
@@ -7,7 +7,8 @@ const Tooltip = Tooltip$1.withProps({
7
7
  closeDelay: 120,
8
8
  label: "",
9
9
  children: null,
10
- offset: 8
10
+ offset: 8,
11
+ withinPortal: false
11
12
  });
12
13
  const ActionIcon = ActionIcon$1.withProps({
13
14
  classNames: {
@@ -1,4 +1,4 @@
1
- export declare const backwardForwardButtons: string;
1
+ export declare const navigationButtons: string;
2
2
  export declare const panel: string;
3
3
  export declare const actionIconGroup: string;
4
4
  export declare const autolayoutIcon: string;
@@ -0,0 +1,17 @@
1
+ /* empty css */
2
+ var navigationButtons = "o1xx0f0";
3
+ var panel = "o1xx0f1";
4
+ var actionIconGroup = "o1xx0f2";
5
+ var autolayoutButton = "o1xx0f4";
6
+ var autolayoutIndicator = "o1xx0f5";
7
+ var spacingSliderBody = "o1xx0f6";
8
+ var spacingSliderThumb = "o1xx0f7";
9
+ export {
10
+ actionIconGroup,
11
+ autolayoutButton,
12
+ autolayoutIndicator,
13
+ navigationButtons,
14
+ panel,
15
+ spacingSliderBody,
16
+ spacingSliderThumb
17
+ };
@@ -0,0 +1,11 @@
1
+ /* empty css */
2
+ var container = "_1wkb4qe0";
3
+ var card = "_1wkb4qe1";
4
+ var title = "_1wkb4qe2";
5
+ var description = "_1wkb4qe3";
6
+ export {
7
+ card,
8
+ container,
9
+ description,
10
+ title
11
+ };
@@ -0,0 +1 @@
1
+ export declare function DiagramTitlePanel(): import("react/jsx-runtime").JSX.Element;
@@ -4,9 +4,9 @@ import { useLocalStorage } from "@mantine/hooks";
4
4
  import { IconMenu } from "@tabler/icons-react";
5
5
  import clsx from "clsx";
6
6
  import { AnimatePresence, m } from "framer-motion";
7
+ import { useDiagramContext } from "../../../hooks/useDiagramContext.js";
7
8
  import { container, card, title, description } from "./DiagramTitlePanel.css.js";
8
9
  import { Link } from "./Link.js";
9
- import { useDiagramState } from "../hooks/useDiagramState.js";
10
10
  const selector = (s) => ({
11
11
  id: s.view.id,
12
12
  title: s.view.title ?? "untitled",
@@ -14,7 +14,7 @@ const selector = (s) => ({
14
14
  links: s.view.links
15
15
  });
16
16
  function DiagramTitlePanel() {
17
- const { id, title: title$1, description: description$1, links } = useDiagramState(selector);
17
+ const { id, title: title$1, description: description$1, links } = useDiagramContext(selector);
18
18
  const [isCollapsed, setCollapsed] = useLocalStorage({
19
19
  key: "diagram-title-webview-collapsed",
20
20
  defaultValue: false
@@ -155,5 +155,5 @@ function DiagramTitlePanel() {
155
155
  ) });
156
156
  }
157
157
  export {
158
- DiagramTitlePanel as default
158
+ DiagramTitlePanel
159
159
  };
@@ -0,0 +1,4 @@
1
+ import { Link } from '@likec4/core';
2
+ export declare function Link({ link }: {
3
+ link: Link;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { Controls } from './controls/Controls';
2
+ export { DiagramTitlePanel } from './diagram-title/DiagramTitlePanel';
@@ -0,0 +1,13 @@
1
+ /* empty css */
2
+ var container = "r9c4gg0";
3
+ var card = "r9c4gg1";
4
+ var tabPanel = "r9c4gg2";
5
+ var elementNotation = "r9c4gg3";
6
+ var shapeBadge = "r9c4gg5";
7
+ export {
8
+ card,
9
+ container,
10
+ elementNotation,
11
+ shapeBadge,
12
+ tabPanel
13
+ };
@@ -0,0 +1,2 @@
1
+ import { MemoExoticComponent } from 'react';
2
+ export declare const NotationPanel: MemoExoticComponent<() => import("react/jsx-runtime").JSX.Element>;
@@ -5,14 +5,15 @@ import { useLocalStorage } from "@mantine/hooks";
5
5
  import { IconAlertTriangle, IconHelpCircle, IconArrowDownRight } from "@tabler/icons-react";
6
6
  import clsx from "clsx";
7
7
  import { AnimatePresence, m } from "framer-motion";
8
- import { useState } from "react";
9
- import { ceil, isNonNullish, isNullish } from "remeda";
10
- import { useDiagramState, useDiagramStoreApi } from "../../hooks/useDiagramState.js";
11
- import { useMantinePortalProps } from "../../hooks/useMantinePortalProps.js";
12
- import { ElementShapeSvg } from "../../xyflow/nodes/element/ElementShapeSvg.js";
13
- import { container, card, tabPanel, elementNotation, shapeSvg, shapeBadge } from "./NotationPanel.css.js";
14
- import { vars } from "../../theme-vars.css.js";
15
- import { useXYStore } from "../../hooks/useXYFlow.js";
8
+ import { memo, useState } from "react";
9
+ import { ceil, isNonNullish } from "remeda";
10
+ import { useDiagram } from "../../../hooks/useDiagram.js";
11
+ import { useDiagramContext } from "../../../hooks/useDiagramContext.js";
12
+ import { useXYStore } from "../../../hooks/useXYFlow.js";
13
+ import { container, card, tabPanel, elementNotation, shapeBadge } from "./NotationPanel.css.js";
14
+ import { useMantinePortalProps } from "../../../hooks/useMantinePortalProps.js";
15
+ import { ElementShape } from "../../../base/primitives/element/ElementShape.js";
16
+ import { vars } from "../../../theme-vars.css.js";
16
17
  const ElementNotation = ({ value }) => {
17
18
  const {
18
19
  title,
@@ -20,7 +21,7 @@ const ElementNotation = ({ value }) => {
20
21
  shape = "rectangle"
21
22
  } = value;
22
23
  const [onlyKind, setOnlyKind] = useState(null);
23
- const diagramStore = useDiagramStoreApi();
24
+ useDiagram();
24
25
  const w = 300;
25
26
  const h = 200;
26
27
  return /* @__PURE__ */ jsx(
@@ -31,15 +32,13 @@ const ElementNotation = ({ value }) => {
31
32
  py: "sm",
32
33
  className: elementNotation,
33
34
  mod: {
34
- "data-likec4-color": color
35
+ "likec4-color": color
35
36
  },
36
37
  onMouseEnter: () => {
37
38
  setOnlyKind(null);
38
- diagramStore.getState().highlightByElementNotation(value);
39
39
  },
40
40
  onMouseLeave: () => {
41
41
  setOnlyKind(null);
42
- diagramStore.setState({ dimmed: /* @__PURE__ */ new Set() });
43
42
  },
44
43
  children: /* @__PURE__ */ jsxs(
45
44
  Group,
@@ -53,24 +52,18 @@ const ElementNotation = ({ value }) => {
53
52
  {
54
53
  flex: "0 0 70px",
55
54
  style: {
55
+ position: "relative",
56
56
  width: 70,
57
57
  height: ceil(70 * (h / w), 0)
58
58
  },
59
59
  children: /* @__PURE__ */ jsx(
60
- "svg",
60
+ ElementShape,
61
61
  {
62
- className: clsx(
63
- shapeSvg
64
- ),
65
- viewBox: `0 0 ${w} ${h}`,
66
- children: /* @__PURE__ */ jsx(
67
- ElementShapeSvg,
68
- {
69
- shape,
70
- w,
71
- h
72
- }
73
- )
62
+ data: {
63
+ shape,
64
+ width: w,
65
+ height: h
66
+ }
74
67
  }
75
68
  )
76
69
  }
@@ -82,11 +75,9 @@ const ElementNotation = ({ value }) => {
82
75
  className: shapeBadge,
83
76
  onMouseEnter: () => {
84
77
  setOnlyKind(kind);
85
- diagramStore.getState().highlightByElementNotation(value, kind);
86
78
  },
87
79
  onMouseLeave: () => {
88
80
  setOnlyKind(null);
89
- diagramStore.getState().highlightByElementNotation(value);
90
81
  },
91
82
  opacity: isNonNullish(onlyKind) && onlyKind !== kind ? 0.25 : 1,
92
83
  color: isNonNullish(onlyKind) && onlyKind !== kind ? "gray" : vars.element.fill,
@@ -119,16 +110,17 @@ const selector = (s) => {
119
110
  return {
120
111
  id: s.view.id,
121
112
  notations: ((_a = s.view.notation) == null ? void 0 : _a.elements) ?? [],
122
- isVisible: isNullish(s.focusedNodeId ?? s.activeWalkthrough)
113
+ isVisible: true
114
+ // isVisible: isNullish(s.focusedNodeId ?? s.activeWalkthrough),
123
115
  };
124
116
  };
125
- function NotationPanel() {
117
+ const NotationPanel = memo(() => {
126
118
  const height = useXYStore((s) => s.height);
127
119
  const {
128
120
  id,
129
121
  notations,
130
122
  isVisible
131
- } = useDiagramState(selector);
123
+ } = useDiagramContext(selector);
132
124
  const [isCollapsed, setCollapsed] = useLocalStorage({
133
125
  key: "notation-webview-collapsed",
134
126
  defaultValue: true
@@ -244,7 +236,7 @@ function NotationPanel() {
244
236
  id
245
237
  )
246
238
  ] });
247
- }
239
+ });
248
240
  export {
249
241
  NotationPanel
250
242
  };
@@ -1,8 +1,8 @@
1
1
  /* empty css */
2
- var container = "_2jkb2y0";
3
- var buttons = "_2jkb2y1";
4
- var btn = "_2jkb2y3";
5
- var parallelStateFrame = "_2jkb2y4";
2
+ var container = "totqfb0";
3
+ var buttons = "totqfb1";
4
+ var btn = "totqfb3";
5
+ var parallelStateFrame = "totqfb4";
6
6
  export {
7
7
  btn,
8
8
  buttons,
@@ -1,66 +1,41 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
- import { nonNullable } from "@likec4/core";
3
2
  import { Box, Button, Badge, ButtonGroup } from "@mantine/core";
4
- import { useHotkeys } from "@mantine/hooks";
5
3
  import { IconPlayerPlayFilled, IconPlayerSkipBackFilled, IconPlayerStopFilled, IconPlayerSkipForwardFilled } from "@tabler/icons-react";
6
4
  import clsx from "clsx";
7
5
  import { AnimatePresence, m } from "framer-motion";
8
- import { isNonNull, isTruthy, first } from "remeda";
6
+ import { isNonNull, isTruthy } from "remeda";
7
+ import { useDiagram } from "../../../hooks/useDiagram.js";
8
+ import { useDiagramContext } from "../../../hooks/useDiagramContext.js";
9
9
  import { parallelStateFrame, container, buttons, btn } from "./DynamicViewWalkthrough.css.js";
10
- import { useXYStore } from "../hooks/useXYFlow.js";
11
- import { useDiagramState, useDiagramStoreApi } from "../hooks/useDiagramState.js";
10
+ import { useXYStore } from "../../../hooks/useXYFlow.js";
12
11
  function DynamicViewWalkthrough() {
13
12
  const isMobile = useXYStore((s) => s.width <= 750);
14
13
  const {
15
- nextDynamicStep,
16
- stopDynamicView,
17
14
  isActive,
18
15
  isParallel,
19
16
  hasNext,
20
17
  hasPrevious
21
- } = useDiagramState((s) => {
22
- var _a, _b, _c;
18
+ } = useDiagramContext((s) => {
19
+ var _a;
23
20
  return {
24
- nextDynamicStep: s.nextDynamicStep,
25
- stopDynamicView: s.stopWalkthrough,
26
21
  isActive: isNonNull(s.activeWalkthrough),
27
22
  isParallel: isTruthy((_a = s.activeWalkthrough) == null ? void 0 : _a.parallelPrefix),
28
- hasNext: ((_b = s.activeWalkthrough) == null ? void 0 : _b.hasNext) ?? false,
29
- hasPrevious: ((_c = s.activeWalkthrough) == null ? void 0 : _c.hasPrevious) ?? false
23
+ hasNext: s.xyedges.findIndex((e) => {
24
+ var _a2;
25
+ return e.id === ((_a2 = s.activeWalkthrough) == null ? void 0 : _a2.stepId);
26
+ }) < s.xyedges.length - 1,
27
+ hasPrevious: s.xyedges.findIndex((e) => {
28
+ var _a2;
29
+ return e.id === ((_a2 = s.activeWalkthrough) == null ? void 0 : _a2.stepId);
30
+ }) > 0
30
31
  };
31
32
  });
32
- const diagramApi = useDiagramStoreApi();
33
- useHotkeys(
34
- isActive ? [
35
- ["ArrowLeft", () => nextDynamicStep(-1)],
36
- ["ArrowRight", () => nextDynamicStep()],
37
- ["Escape", (e) => {
38
- e.stopImmediatePropagation();
39
- stopDynamicView();
40
- }, { preventDefault: true }]
41
- ] : [
42
- ["ArrowLeft", () => nextDynamicStep()],
43
- ["ArrowRight", () => nextDynamicStep()]
44
- ]
45
- );
33
+ const diagram = useDiagram();
46
34
  const buttonProps = {
47
35
  className: btn,
48
36
  size: isMobile ? "compact-md" : "lg",
49
37
  radius: isMobile ? "lg" : "xl"
50
38
  };
51
- const startWalkthrough = (e) => {
52
- e.stopPropagation();
53
- const {
54
- xyedges,
55
- activateWalkthrough
56
- } = diagramApi.getState();
57
- const firstEdge = nonNullable(first(xyedges), "expected at least one edge");
58
- activateWalkthrough(firstEdge.data.edge.id);
59
- };
60
- const nextStep = (increment = 1) => (e) => {
61
- e.stopPropagation();
62
- nextDynamicStep(increment);
63
- };
64
39
  return /* @__PURE__ */ jsxs(AnimatePresence, { children: [
65
40
  isParallel && /* @__PURE__ */ jsx(
66
41
  Box,
@@ -87,7 +62,7 @@ function DynamicViewWalkthrough() {
87
62
  ...buttonProps,
88
63
  className: clsx(buttons, btn),
89
64
  rightSection: /* @__PURE__ */ jsx(IconPlayerPlayFilled, {}),
90
- onClick: startWalkthrough,
65
+ onClick: () => diagram.startWalkthrough(),
91
66
  px: "xl",
92
67
  children: "Start"
93
68
  }
@@ -117,7 +92,7 @@ function DynamicViewWalkthrough() {
117
92
  ...buttonProps,
118
93
  pl: "lg",
119
94
  disabled: !hasPrevious,
120
- onClick: nextStep(-1),
95
+ onClick: () => diagram.walkthroughStep("previous"),
121
96
  children: /* @__PURE__ */ jsx(IconPlayerSkipBackFilled, {})
122
97
  }
123
98
  ),
@@ -128,7 +103,7 @@ function DynamicViewWalkthrough() {
128
103
  px: hasNext ? "md" : "xl",
129
104
  onClick: (e) => {
130
105
  e.stopPropagation();
131
- stopDynamicView();
106
+ diagram.stopWalkthrough();
132
107
  },
133
108
  children: [
134
109
  hasNext && /* @__PURE__ */ jsx(IconPlayerStopFilled, {}),
@@ -141,7 +116,7 @@ function DynamicViewWalkthrough() {
141
116
  {
142
117
  ...buttonProps,
143
118
  pr: "lg",
144
- onClick: nextStep(),
119
+ onClick: () => diagram.walkthroughStep("next"),
145
120
  children: /* @__PURE__ */ jsx(IconPlayerSkipForwardFilled, {})
146
121
  }
147
122
  )
@@ -1,7 +1,8 @@
1
1
  import { NonEmptyArray } from '@likec4/core';
2
- import { ReactFlowProps, XYPosition } from '@xyflow/react';
3
- import { XYStoreApi } from '../hooks/useXYFlow';
4
- import { DiagramFlowTypes } from './types';
2
+ import { InternalNode as RFInternalNode, OnNodeDrag, XYPosition } from '@xyflow/react';
3
+ import { XYStoreApi } from '../hooks';
4
+ import { Types } from './types';
5
+ type InternalNode = RFInternalNode<Types.Node>;
5
6
  declare abstract class Rect {
6
7
  static readonly LeftPadding = 40;
7
8
  static readonly RightPadding = 40;
@@ -24,17 +25,21 @@ declare abstract class Rect {
24
25
  declare class Compound extends Rect {
25
26
  protected readonly parent: Compound | null;
26
27
  readonly children: Rect[];
27
- constructor(xynode: DiagramFlowTypes.InternalNode, parent?: Compound | null);
28
+ constructor(xynode: InternalNode, parent?: Compound | null);
28
29
  }
29
30
  type NodePositionUpdater = (nodes: Array<{
30
31
  rect: Rect | Compound;
31
- node: DiagramFlowTypes.InternalNode;
32
+ node: InternalNode;
32
33
  }>) => void;
33
34
  export declare function createLayoutConstraints(xyflowApi: XYStoreApi, editingNodeIds: NonEmptyArray<string>): {
34
35
  updateXYFlowNodes: () => void;
35
36
  onMove: (updater: NodePositionUpdater) => void;
36
37
  };
37
- type LayoutConstraints = Required<Pick<ReactFlowProps<DiagramFlowTypes.Node>, 'onNodeDragStart' | 'onNodeDrag' | 'onNodeDragStop'>>;
38
+ type LayoutConstraints = {
39
+ onNodeDragStart: OnNodeDrag<Types.Node>;
40
+ onNodeDrag: OnNodeDrag<Types.Node>;
41
+ onNodeDragStop: OnNodeDrag<Types.Node>;
42
+ };
38
43
  /**
39
44
  * Keeps the layout constraints (parent nodes and children) when dragging a node
40
45
  */
@@ -2,10 +2,13 @@ var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
4
  import { nonNullable } from "@likec4/core";
5
+ import "@xyflow/react";
5
6
  import { getNodeDimensions } from "@xyflow/system";
6
7
  import { useRef, useMemo } from "react";
7
8
  import { pipe, filter, map, hasAtLeast, isNullish } from "remeda";
8
- import { useDiagramStoreApi } from "../hooks/useDiagramState.js";
9
+ import { useSyncedRef } from "@react-hookz/web";
10
+ import { useDiagram } from "../hooks/useDiagram.js";
11
+ import { useXYStoreApi } from "../hooks/useXYFlow.js";
9
12
  class Rect {
10
13
  constructor() {
11
14
  __publicField(this, "id");
@@ -21,10 +24,12 @@ class Rect {
21
24
  };
22
25
  }
23
26
  set positionAbsolute(pos) {
24
- this.maxX += pos.x - this.minX;
25
- this.maxY += pos.y - this.minY;
26
- this.minX = pos.x;
27
- this.minY = pos.y;
27
+ const x = Math.round(pos.x);
28
+ const y = Math.round(pos.y);
29
+ this.maxX += x - this.minX;
30
+ this.maxY += y - this.minY;
31
+ this.minX = x;
32
+ this.minY = y;
28
33
  }
29
34
  get dimensions() {
30
35
  return {
@@ -104,7 +109,7 @@ function createLayoutConstraints(xyflowApi, editingNodeIds) {
104
109
  while (traverse.length > 0) {
105
110
  const { xynode, parent } = traverse.shift();
106
111
  const isEditing = editingNodeIds.includes(xynode.id);
107
- const shouldTraverse = !isEditing && xynode.type === "compound" && ancestorsOfDraggingNodes.has(xynode.id);
112
+ const shouldTraverse = !isEditing && (xynode.type === "compound-element" || xynode.type === "compound-deployment" || xynode.type === "view-group") && ancestorsOfDraggingNodes.has(xynode.id);
108
113
  const rect = shouldTraverse ? new Compound(xynode, parent) : new Leaf(xynode, parent);
109
114
  rects.set(xynode.id, rect);
110
115
  if (shouldTraverse) {
@@ -187,13 +192,13 @@ function createLayoutConstraints(xyflowApi, editingNodeIds) {
187
192
  };
188
193
  }
189
194
  function useLayoutConstraints() {
190
- const diagramApi = useDiagramStoreApi();
191
- const solverRef = useRef();
195
+ const xystore = useXYStoreApi();
196
+ const diagram = useSyncedRef(useDiagram());
197
+ const solverRef = useRef(void 0);
192
198
  return useMemo(() => ({
193
199
  onNodeDragStart: (_event, xynode) => {
194
- const { cancelSaveManualLayout, xystore } = diagramApi.getState();
200
+ diagram.current.cancelSaveManualLayout();
195
201
  const { nodeLookup } = xystore.getState();
196
- cancelSaveManualLayout();
197
202
  const draggingNodes = pipe(
198
203
  Array.from(nodeLookup.values()),
199
204
  filter((n) => n.dragging === true || n.id === xynode.id || n.selected === true),
@@ -215,10 +220,10 @@ function useLayoutConstraints() {
215
220
  onNodeDragStop: () => {
216
221
  var _a;
217
222
  (_a = solverRef.current) == null ? void 0 : _a.updateXYFlowNodes();
218
- diagramApi.getState().scheduleSaveManualLayout();
223
+ diagram.current.scheduleSaveManualLayout();
219
224
  solverRef.current = void 0;
220
225
  }
221
- }), [diagramApi]);
226
+ }), [xystore]);
222
227
  }
223
228
  export {
224
229
  createLayoutConstraints,