@likec4/diagram 1.19.2 → 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 (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 +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/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 +126 -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 -17
  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
- import { jsx, jsxs, Fragment } from "react/jsx-runtime";
1
+ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
2
  import { nonexhaustive } from "@likec4/core";
3
- import { toDomPrecision } from "../../utils.js";
4
- import { fillMixStroke, fillElementFill } from "./element.css.js";
3
+ import { toDomPrecision } from "../../../utils/xyflow.js";
4
+ import { shapeSvgMultiple, shapeSvg, indicator, fillMixStroke, fillElementFill } from "./ElementShape.css.js";
5
5
  function cylinderSVGPath(diameter, height, tilt = 0.065) {
6
6
  const radius = Math.round(diameter / 2);
7
7
  const rx = radius;
@@ -146,16 +146,30 @@ function ElementShapeSvg({ shape, w, h }) {
146
146
  }
147
147
  }
148
148
  }
149
+ function ElementShape({ data, width, height, isMultiple = false, withSelectedIndicator = true }) {
150
+ let w = !!width && width > 10 ? width : data.width;
151
+ let h = !!height && height > 10 ? height : data.height;
152
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
153
+ isMultiple && /* @__PURE__ */ jsx("svg", { className: shapeSvgMultiple, viewBox: `0 0 ${w} ${h}`, children: /* @__PURE__ */ jsx(ElementShapeSvg, { shape: data.shape, w, h }) }),
154
+ /* @__PURE__ */ jsxs("svg", { className: shapeSvg, viewBox: `0 0 ${w} ${h}`, children: [
155
+ withSelectedIndicator && /* @__PURE__ */ jsx(SelectedIndicator, { shape: data.shape, w, h }),
156
+ /* @__PURE__ */ jsx(ElementShapeSvg, { shape: data.shape, w, h })
157
+ ] })
158
+ ] });
159
+ }
149
160
  function SelectedIndicator({ shape, w, h }) {
161
+ let svg;
150
162
  switch (shape) {
151
163
  case "queue":
152
- return /* @__PURE__ */ jsx("path", { d: queueSVGPath(w, h).path });
164
+ svg = /* @__PURE__ */ jsx("path", { d: queueSVGPath(w, h).path });
165
+ break;
153
166
  case "storage":
154
167
  case "cylinder": {
155
- return /* @__PURE__ */ jsx("path", { d: cylinderSVGPath(w, h).path });
168
+ svg = /* @__PURE__ */ jsx("path", { d: cylinderSVGPath(w, h).path });
169
+ break;
156
170
  }
157
171
  default: {
158
- return /* @__PURE__ */ jsx(
172
+ svg = /* @__PURE__ */ jsx(
159
173
  "rect",
160
174
  {
161
175
  x: -1,
@@ -165,11 +179,13 @@ function SelectedIndicator({ shape, w, h }) {
165
179
  rx: 6
166
180
  }
167
181
  );
182
+ break;
168
183
  }
169
184
  }
185
+ return /* @__PURE__ */ jsx("g", { className: indicator, children: svg });
170
186
  }
171
187
  export {
172
- ElementShapeSvg,
188
+ ElementShape,
173
189
  SelectedIndicator,
174
190
  cylinderSVGPath
175
191
  };
@@ -0,0 +1,8 @@
1
+ export declare const hasIcon: string;
2
+ export declare const iconSize: `var(--${string})` | `var(--${string}, ${string})` | `var(--${string}, ${number})`;
3
+ export declare const title: string;
4
+ export declare const description: string;
5
+ export declare const technology: string;
6
+ export declare const elementDataContainer: string;
7
+ export declare const elementTextData: string;
8
+ export declare const elementIcon: string;
@@ -0,0 +1,19 @@
1
+ /* empty css */
2
+ var hasIcon = "fo05290";
3
+ var iconSize = "var(--fo05292)";
4
+ var title = "fo05293";
5
+ var description = "fo05294";
6
+ var technology = "fo05295";
7
+ var elementDataContainer = "fo05296";
8
+ var elementTextData = "fo05297";
9
+ var elementIcon = "fo05298";
10
+ export {
11
+ description,
12
+ elementDataContainer,
13
+ elementIcon,
14
+ elementTextData,
15
+ hasIcon,
16
+ iconSize,
17
+ technology,
18
+ title
19
+ };
@@ -0,0 +1,10 @@
1
+ import { DiagramNode } from '@likec4/core';
2
+ import { NodeProps } from '../../types';
3
+ type Data = Pick<DiagramNode, 'title' | 'technology' | 'description' | 'color'> & {
4
+ icon?: string | null;
5
+ };
6
+ type ElementTitleProps = NodeProps<Data> & {
7
+ iconSize?: number;
8
+ };
9
+ export declare function ElementTitle({ id, data, iconSize }: ElementTitleProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -0,0 +1,66 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from "@mantine/core";
3
+ import { assignInlineVars } from "../../../node_modules/@vanilla-extract/dynamic/dist/vanilla-extract-dynamic.esm.js";
4
+ import clsx from "clsx";
5
+ import { isTruthy, isNumber } from "remeda";
6
+ import { IconRenderer } from "../../../context/IconRenderer.js";
7
+ import { elementIcon, elementDataContainer, hasIcon, elementTextData, title, technology, description, iconSize } from "./ElementTitle.css.js";
8
+ function ElementTitle({ id, data, iconSize: iconSize$1 }) {
9
+ const elementIcon$1 = IconRenderer({
10
+ element: {
11
+ id,
12
+ title: data.title,
13
+ icon: data.icon
14
+ },
15
+ className: elementIcon
16
+ });
17
+ return /* @__PURE__ */ jsxs(
18
+ Box,
19
+ {
20
+ className: clsx(
21
+ elementDataContainer,
22
+ isTruthy(elementIcon$1) && hasIcon,
23
+ "likec4-element"
24
+ ),
25
+ style: {
26
+ ...isNumber(iconSize$1) && assignInlineVars({
27
+ [iconSize]: `${iconSize$1}px`
28
+ })
29
+ },
30
+ children: [
31
+ elementIcon$1,
32
+ /* @__PURE__ */ jsxs(Box, { className: clsx(elementTextData, "likec4-element-main-props"), children: [
33
+ /* @__PURE__ */ jsx(
34
+ Text,
35
+ {
36
+ component: "h3",
37
+ className: clsx(title, "likec4-element-title"),
38
+ lineClamp: 3,
39
+ children: data.title
40
+ }
41
+ ),
42
+ data.technology && /* @__PURE__ */ jsx(
43
+ Text,
44
+ {
45
+ component: "div",
46
+ className: clsx(technology, "likec4-element-technology"),
47
+ children: data.technology
48
+ }
49
+ ),
50
+ data.description && /* @__PURE__ */ jsx(
51
+ Text,
52
+ {
53
+ component: "div",
54
+ className: clsx(description, "likec4-element-description"),
55
+ lineClamp: 5,
56
+ children: data.description
57
+ }
58
+ )
59
+ ] })
60
+ ]
61
+ }
62
+ );
63
+ }
64
+ export {
65
+ ElementTitle
66
+ };
@@ -0,0 +1,17 @@
1
+ export { CompoundActionButton } from './compound/CompoundActionButton';
2
+ export { CompoundDetailsButton } from './compound/CompoundDetailsButton';
3
+ export { CompoundNodeContainer } from './compound/CompoundNodeContainer';
4
+ export { CompoundTitle } from './compound/CompoundTitle';
5
+ export { customEdge } from './customEdge';
6
+ export { customNode } from './customNode';
7
+ export { EdgeActionButton } from './edge/EdgeActionButton';
8
+ export { EdgeContainer } from './edge/EdgeContainer';
9
+ export { EdgeLabel } from './edge/EdgeLabel';
10
+ export { arrowTypeToMarker, EdgeMarkers, type EdgeMarkerType } from './edge/EdgeMarkers';
11
+ export { EdgePath } from './edge/EdgePath';
12
+ export { ElementActionButtons } from './element/ElementActionButtons';
13
+ export { ElementDetailsButton } from './element/ElementDetailsButton';
14
+ export { ElementNodeContainer } from './element/ElementNodeContainer';
15
+ export { ElementShape } from './element/ElementShape';
16
+ export { ElementTitle } from './element/ElementTitle';
17
+ export { DefaultHandles } from './NodeHandles';
@@ -0,0 +1,90 @@
1
+ import { Edge as RFEdge, EdgeProps as ReactFlowEdgeProps, Node as RFNode, NodeProps as ReactFlowNodeProps } from '@xyflow/react';
2
+ import { OptionalKeysOf, SetRequired, Simplify } from 'type-fest';
3
+ /**
4
+
5
+ To cooperate with `exactOptionalPropertyTypes` in `tsconfig.json`
6
+
7
+ @example
8
+ ```
9
+ interface User {
10
+ name: string;
11
+ surname?: string;
12
+ luckyNumber?: number;
13
+ }
14
+
15
+ type NonOptionalUser = NonOptional<User>
16
+
17
+ // NonOptionalUser = {
18
+ // name: string
19
+ // surname: string | undefined
20
+ // luckyNumber: number | undefined
21
+ // }
22
+ ```
23
+ */
24
+ export type NonOptional<T extends object, Keys extends OptionalKeysOf<T> = OptionalKeysOf<T>> = Simplify<{
25
+ [P in Exclude<keyof T, Keys>]: T[P];
26
+ } & {
27
+ [P in Keys]-?: T[P] | undefined;
28
+ }>;
29
+ /**
30
+ * ReactFlow Custom Node properties with BaseNodeData at least
31
+ */
32
+ export type NodeProps<T extends Record<string, unknown> = {}> = ReactFlowNodeProps<RFNode<Base.NodeData & T, any>>;
33
+ /**
34
+ * ReactFlow Custom Edge properties with BaseEdgeData at least
35
+ */
36
+ export type EdgeProps<T extends Record<string, unknown> = {}> = SetRequired<ReactFlowEdgeProps<RFEdge<Base.EdgeData & T, any>>, 'data'>;
37
+ export type ReactFlowNode<Data extends Record<string, unknown>, NodeType extends string> = SetRequired<RFNode<Data, NodeType>, 'type' | 'initialWidth' | 'initialHeight'>;
38
+ export type ReactFlowEdge<Data extends Record<string, unknown>, EdgeType extends string> = SetRequired<RFEdge<Data, EdgeType>, 'type' | 'data'>;
39
+ export declare namespace Base {
40
+ export type Dimmed = 'immediate' | boolean;
41
+ export type NodeData<Data extends Record<string, unknown> = {}> = Simplify<Data & {
42
+ /**
43
+ * Whether the cursor is hovering over the node
44
+ */
45
+ hovered?: boolean;
46
+ /**
47
+ * Whether the node is dimmed
48
+ * 'immediate' means that the node is dimmed without delay
49
+ */
50
+ dimmed?: Dimmed;
51
+ }>;
52
+ export type Node = RFNode<NodeData>;
53
+ export type NodeProps = ReactFlowNodeProps<RFNode<Base.NodeData, any>>;
54
+ export type EdgeData<Data extends Record<string, unknown> = {}> = Simplify<Data & {
55
+ /**
56
+ * Whether the cursor is hovering over the edge
57
+ */
58
+ hovered?: boolean;
59
+ /**
60
+ * Whether the edge is active (animated and highlighted)
61
+ */
62
+ active?: boolean;
63
+ /**
64
+ * Whether the edge is dimmed
65
+ * 'immediate' means that the edge is dimmed without delay
66
+ */
67
+ dimmed?: Dimmed;
68
+ }>;
69
+ export type Edge = SetRequired<RFEdge<EdgeData>, 'data'>;
70
+ type WithDimmed = {
71
+ data: {
72
+ dimmed?: Dimmed;
73
+ };
74
+ };
75
+ type WithHovered = {
76
+ data: {
77
+ hovered?: boolean;
78
+ };
79
+ };
80
+ export function setDimmed<T extends WithDimmed>(value: T, dimmed: 'immediate' | boolean): T;
81
+ export function setDimmed(dimmed: 'immediate' | boolean): <T extends WithDimmed>(value: T) => T;
82
+ export function setHovered<T extends WithHovered>(value: T, hovered: boolean): T;
83
+ export function setHovered(hovered: boolean): <T extends WithHovered>(value: T) => T;
84
+ type WithData<D> = {
85
+ data: D;
86
+ };
87
+ export function setData<E extends WithData<any>>(value: E, state: Partial<E['data']>): E;
88
+ export function setData<E extends WithData<any>>(state: Partial<E['data']>): (value: E) => E;
89
+ export {};
90
+ }
@@ -0,0 +1,54 @@
1
+ import { hasSubObject } from "remeda";
2
+ var Base;
3
+ ((Base2) => {
4
+ const _setDimmed = (v, dimmed) => v.data.dimmed === dimmed ? v : {
5
+ ...v,
6
+ data: {
7
+ ...v.data,
8
+ dimmed
9
+ }
10
+ };
11
+ function setDimmed(arg1, arg2) {
12
+ if (arg2 !== void 0) {
13
+ return _setDimmed(arg1, arg2);
14
+ }
15
+ return (v) => _setDimmed(v, arg1);
16
+ }
17
+ Base2.setDimmed = setDimmed;
18
+ const _setHovered = (v, hovered) => v.data.hovered === hovered ? v : {
19
+ ...v,
20
+ data: {
21
+ ...v.data,
22
+ hovered
23
+ }
24
+ };
25
+ function setHovered(arg1, arg2) {
26
+ if (arg2 !== void 0) {
27
+ return _setHovered(arg1, arg2);
28
+ }
29
+ return (v) => _setHovered(v, arg1);
30
+ }
31
+ Base2.setHovered = setHovered;
32
+ function _setData(value, state) {
33
+ if (hasSubObject(value.data, state)) {
34
+ return value;
35
+ }
36
+ return {
37
+ ...value,
38
+ data: {
39
+ ...value.data,
40
+ ...state
41
+ }
42
+ };
43
+ }
44
+ function setData(arg1, arg2) {
45
+ if (arg2 !== void 0) {
46
+ return _setData(arg1, arg2);
47
+ }
48
+ return (edge) => _setData(edge, arg1);
49
+ }
50
+ Base2.setData = setData;
51
+ })(Base || (Base = {}));
52
+ export {
53
+ Base
54
+ };
@@ -0,0 +1,3 @@
1
+ import { Base } from './types';
2
+ export declare function updateEdges<E extends Base.Edge>(current: E[], update: E[]): E[];
3
+ export declare function updateEdges<E extends Base.Edge>(update: E[]): (current: E[]) => E[];
@@ -0,0 +1,31 @@
1
+ import { deepEqual } from "fast-equals";
2
+ import { isDefined } from "remeda";
3
+ function _update(current, update) {
4
+ return update.map((next) => {
5
+ const existing = current.find((n) => n.id === next.id);
6
+ if (existing && existing.type === next.type) {
7
+ if (deepEqual(existing.hidden ?? false, next.hidden ?? false) && deepEqual(existing.source, next.source) && deepEqual(existing.sourceHandle ?? null, next.sourceHandle ?? null) && deepEqual(existing.target, next.target) && deepEqual(existing.targetHandle ?? null, next.targetHandle ?? null) && deepEqual(existing.data, next.data)) {
8
+ return existing;
9
+ }
10
+ return {
11
+ ...existing,
12
+ ...next,
13
+ data: {
14
+ ...existing.data,
15
+ ...next.data
16
+ }
17
+ };
18
+ }
19
+ return next;
20
+ });
21
+ }
22
+ function updateEdges(current, update) {
23
+ if (isDefined(update)) {
24
+ return _update(current, update);
25
+ }
26
+ update = current;
27
+ return (current2) => _update(current2, update);
28
+ }
29
+ export {
30
+ updateEdges
31
+ };
@@ -0,0 +1,3 @@
1
+ import { Base } from './types';
2
+ export declare function updateNodes<N extends Base.Node>(current: N[], update: N[]): N[];
3
+ export declare function updateNodes<N extends Base.Node>(update: N[]): (current: N[]) => N[];
@@ -0,0 +1,36 @@
1
+ import { getNodeDimensions } from "@xyflow/system";
2
+ import { deepEqual } from "fast-equals";
3
+ import { isDefined, omit } from "remeda";
4
+ function _update(current, updated) {
5
+ return updated.map((update) => {
6
+ const existing = current.find((n) => n.id === update.id);
7
+ if (existing) {
8
+ const { width: existingWidth, height: existingHeight } = getNodeDimensions(existing);
9
+ if (deepEqual(existing.type, update.type) && deepEqual(existingWidth, update.initialWidth) && deepEqual(existingHeight, update.initialHeight) && deepEqual(existing.hidden ?? false, update.hidden ?? false) && deepEqual(existing.position, update.position) && deepEqual(existing.data, update.data) && deepEqual(existing.parentId ?? null, update.parentId ?? null)) {
10
+ return existing;
11
+ }
12
+ return {
13
+ ...omit(existing, ["measured", "parentId"]),
14
+ ...update,
15
+ // Force dimensions from update
16
+ width: update.initialWidth,
17
+ height: update.initialHeight,
18
+ data: {
19
+ ...existing.data,
20
+ ...update.data
21
+ }
22
+ };
23
+ }
24
+ return update;
25
+ });
26
+ }
27
+ function updateNodes(current, update) {
28
+ if (isDefined(update)) {
29
+ return _update(current, update);
30
+ }
31
+ update = current;
32
+ return (current2) => _update(current2, update);
33
+ }
34
+ export {
35
+ updateNodes
36
+ };
@@ -0,0 +1,212 @@
1
+ import { BBox } from '@likec4/core';
2
+ import { ReactFlowInstance, Viewport } from '@xyflow/react';
3
+ import { ActorRefFrom, StateMachine, NonReducibleUnknown, EventObject, MetaObject, ActorRefFromLogic, AnyActorLogic, ConditionalRequired, InputFrom, RequiredLogicInput, IsNotNever, ActorRef, MachineSnapshot, AnyActorRef, StateValue, AnyEventObject, ActionArgs } from 'xstate';
4
+ import { Base } from './types';
5
+ export interface TodoItem {
6
+ id: string;
7
+ title: string;
8
+ completed: boolean;
9
+ }
10
+ export type TodosFilter = 'all' | 'active' | 'completed';
11
+ export declare const xyflowMachine: StateMachine<{
12
+ xyflow: ReactFlowInstance<Base.Node, Base.Edge>;
13
+ fitViewPadding: number;
14
+ }, {
15
+ type: "fitBounds";
16
+ bounds: BBox;
17
+ duration?: number;
18
+ } | {
19
+ type: "fitView";
20
+ duration?: number;
21
+ } | {
22
+ type: "setCenter";
23
+ center: {
24
+ x: number;
25
+ y: number;
26
+ };
27
+ duration?: number;
28
+ } | {
29
+ type: "setViewport";
30
+ viewport: Viewport;
31
+ duration?: number;
32
+ }, {}, never, never, never, never, {}, string, {
33
+ xyflow: ReactFlowInstance<Base.Node, Base.Edge>;
34
+ fitViewPadding?: number;
35
+ }, NonReducibleUnknown, EventObject, MetaObject, {
36
+ readonly id: "xyflow";
37
+ readonly context: ({ input }: {
38
+ spawn: {
39
+ <TSrc extends never>(logic: TSrc, ...[options]: never): ActorRefFromLogic<never>;
40
+ <TLogic extends AnyActorLogic>(src: TLogic, ...[options]: ConditionalRequired<[options?: {
41
+ id?: never;
42
+ systemId?: string;
43
+ input?: InputFrom<TLogic>;
44
+ syncSnapshot?: boolean;
45
+ } & { [K in RequiredLogicInput<TLogic>]: unknown; }], IsNotNever<RequiredLogicInput<TLogic>>>): ActorRefFromLogic<TLogic>;
46
+ };
47
+ input: {
48
+ xyflow: ReactFlowInstance<Base.Node, Base.Edge>;
49
+ fitViewPadding?: number;
50
+ };
51
+ self: ActorRef<MachineSnapshot<{
52
+ xyflow: ReactFlowInstance<Base.Node, Base.Edge>;
53
+ fitViewPadding: number;
54
+ }, {
55
+ type: "fitBounds";
56
+ bounds: BBox;
57
+ duration?: number;
58
+ } | {
59
+ type: "fitView";
60
+ duration?: number;
61
+ } | {
62
+ type: "setCenter";
63
+ center: {
64
+ x: number;
65
+ y: number;
66
+ };
67
+ duration?: number;
68
+ } | {
69
+ type: "setViewport";
70
+ viewport: Viewport;
71
+ duration?: number;
72
+ }, Record<string, AnyActorRef | undefined>, StateValue, string, unknown, any, any>, {
73
+ type: "fitBounds";
74
+ bounds: BBox;
75
+ duration?: number;
76
+ } | {
77
+ type: "fitView";
78
+ duration?: number;
79
+ } | {
80
+ type: "setCenter";
81
+ center: {
82
+ x: number;
83
+ y: number;
84
+ };
85
+ duration?: number;
86
+ } | {
87
+ type: "setViewport";
88
+ viewport: Viewport;
89
+ duration?: number;
90
+ }, AnyEventObject>;
91
+ }) => {
92
+ xyflow: ReactFlowInstance<Base.Node, Base.Edge>;
93
+ fitViewPadding: number;
94
+ };
95
+ readonly on: {
96
+ readonly fitBounds: {
97
+ readonly actions: ({ context, event }: ActionArgs<{
98
+ xyflow: ReactFlowInstance<Base.Node, Base.Edge>;
99
+ fitViewPadding: number;
100
+ }, {
101
+ type: "fitBounds";
102
+ bounds: BBox;
103
+ duration?: number;
104
+ }, {
105
+ type: "fitBounds";
106
+ bounds: BBox;
107
+ duration?: number;
108
+ } | {
109
+ type: "fitView";
110
+ duration?: number;
111
+ } | {
112
+ type: "setCenter";
113
+ center: {
114
+ x: number;
115
+ y: number;
116
+ };
117
+ duration?: number;
118
+ } | {
119
+ type: "setViewport";
120
+ viewport: Viewport;
121
+ duration?: number;
122
+ }>) => void;
123
+ };
124
+ readonly fitView: {
125
+ readonly actions: ({ context, event }: ActionArgs<{
126
+ xyflow: ReactFlowInstance<Base.Node, Base.Edge>;
127
+ fitViewPadding: number;
128
+ }, {
129
+ type: "fitView";
130
+ duration?: number;
131
+ }, {
132
+ type: "fitBounds";
133
+ bounds: BBox;
134
+ duration?: number;
135
+ } | {
136
+ type: "fitView";
137
+ duration?: number;
138
+ } | {
139
+ type: "setCenter";
140
+ center: {
141
+ x: number;
142
+ y: number;
143
+ };
144
+ duration?: number;
145
+ } | {
146
+ type: "setViewport";
147
+ viewport: Viewport;
148
+ duration?: number;
149
+ }>) => void;
150
+ };
151
+ readonly setCenter: {
152
+ readonly actions: ({ context, event }: ActionArgs<{
153
+ xyflow: ReactFlowInstance<Base.Node, Base.Edge>;
154
+ fitViewPadding: number;
155
+ }, {
156
+ type: "setCenter";
157
+ center: {
158
+ x: number;
159
+ y: number;
160
+ };
161
+ duration?: number;
162
+ }, {
163
+ type: "fitBounds";
164
+ bounds: BBox;
165
+ duration?: number;
166
+ } | {
167
+ type: "fitView";
168
+ duration?: number;
169
+ } | {
170
+ type: "setCenter";
171
+ center: {
172
+ x: number;
173
+ y: number;
174
+ };
175
+ duration?: number;
176
+ } | {
177
+ type: "setViewport";
178
+ viewport: Viewport;
179
+ duration?: number;
180
+ }>) => void;
181
+ };
182
+ readonly setViewport: {
183
+ readonly actions: ({ context, event }: ActionArgs<{
184
+ xyflow: ReactFlowInstance<Base.Node, Base.Edge>;
185
+ fitViewPadding: number;
186
+ }, {
187
+ type: "setViewport";
188
+ viewport: Viewport;
189
+ duration?: number;
190
+ }, {
191
+ type: "fitBounds";
192
+ bounds: BBox;
193
+ duration?: number;
194
+ } | {
195
+ type: "fitView";
196
+ duration?: number;
197
+ } | {
198
+ type: "setCenter";
199
+ center: {
200
+ x: number;
201
+ y: number;
202
+ };
203
+ duration?: number;
204
+ } | {
205
+ type: "setViewport";
206
+ viewport: Viewport;
207
+ duration?: number;
208
+ }>) => void;
209
+ };
210
+ };
211
+ }>;
212
+ export type XYFlowActorRef = ActorRefFrom<typeof xyflowMachine>;
@@ -0,0 +1,10 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { LikeC4DiagramEventHandlers } from '../LikeC4Diagram.props';
3
+ type RequiredOrNull<T> = {
4
+ [P in keyof T]-?: NonNullable<T[P]> | null;
5
+ };
6
+ export declare function DiagramEventHandlers({ handlers, children, }: PropsWithChildren<{
7
+ handlers: LikeC4DiagramEventHandlers;
8
+ }>): import("react/jsx-runtime").JSX.Element;
9
+ export declare function useDiagramEventHandlers(): RequiredOrNull<LikeC4DiagramEventHandlers>;
10
+ export {};
@@ -0,0 +1,49 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useSyncedRef } from "@react-hookz/web";
3
+ import { createContext, useMemo, useContext } from "react";
4
+ import { mapToObj, isFunction } from "remeda";
5
+ const HandlerNames = [
6
+ "onBurgerMenuClick",
7
+ "onNavigateTo",
8
+ "onOpenSource",
9
+ "onCanvasClick",
10
+ "onCanvasContextMenu",
11
+ "onEdgeClick",
12
+ "onEdgeContextMenu",
13
+ "onNodeClick",
14
+ "onNodeContextMenu",
15
+ "onChange",
16
+ "onCanvasDblClick"
17
+ ];
18
+ const DiagramEventHandlersContext = createContext(
19
+ mapToObj(HandlerNames, (name) => [name, null])
20
+ );
21
+ function DiagramEventHandlers({
22
+ handlers,
23
+ children
24
+ }) {
25
+ const handlersRef = useSyncedRef(handlers);
26
+ const deps = HandlerNames.map((name) => isFunction(handlers[name]));
27
+ return /* @__PURE__ */ jsx(
28
+ DiagramEventHandlersContext.Provider,
29
+ {
30
+ value: useMemo(() => mapToObj(HandlerNames, (name) => {
31
+ if (handlersRef.current[name]) {
32
+ return [name, (...args) => {
33
+ var _a, _b;
34
+ return (_b = (_a = handlersRef.current)[name]) == null ? void 0 : _b.call(_a, ...args);
35
+ }];
36
+ }
37
+ return [name, null];
38
+ }), [handlersRef, ...deps]),
39
+ children
40
+ }
41
+ );
42
+ }
43
+ function useDiagramEventHandlers() {
44
+ return useContext(DiagramEventHandlersContext);
45
+ }
46
+ export {
47
+ DiagramEventHandlers,
48
+ useDiagramEventHandlers
49
+ };