@likec4/diagram 1.30.0 → 1.32.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 (403) hide show
  1. package/README.md +324 -5
  2. package/bundle/chunk-BvTQaUYl.js +21851 -0
  3. package/bundle/custom.js +65 -0
  4. package/bundle/index.js +19910 -40570
  5. package/dist/LikeC4CustomColors.d.ts +2 -7
  6. package/dist/LikeC4CustomColors.js +17 -6
  7. package/dist/LikeC4Diagram.d.ts +3 -2
  8. package/dist/LikeC4Diagram.js +14 -16
  9. package/dist/LikeC4Diagram.props.d.ts +34 -23
  10. package/dist/LikeC4ModelProvider.d.ts +5 -4
  11. package/dist/LikeC4ModelProvider.js +0 -1
  12. package/dist/StaticLikeC4Diagram.d.ts +3 -2
  13. package/dist/StaticLikeC4Diagram.js +2 -2
  14. package/dist/base/BaseXYFlow.js +8 -8
  15. package/dist/base/const.d.ts +1 -1
  16. package/dist/base/const.js +1 -1
  17. package/dist/base/index.d.ts +2 -1
  18. package/dist/base/primitives/compound/CompoundActionButton.d.ts +3 -2
  19. package/dist/base/primitives/compound/CompoundActionButton.js +2 -1
  20. package/dist/base/primitives/compound/CompoundDetailsButton.d.ts +3 -2
  21. package/dist/base/primitives/compound/CompoundDetailsButton.js +2 -1
  22. package/dist/base/primitives/compound/CompoundNodeContainer.d.ts +7 -3
  23. package/dist/base/primitives/compound/CompoundNodeContainer.js +3 -2
  24. package/dist/base/primitives/compound/CompoundTitle.d.ts +1 -1
  25. package/dist/base/primitives/compound/CompoundTitle.js +2 -1
  26. package/dist/base/primitives/customEdge.d.ts +2 -35
  27. package/dist/base/primitives/customEdge.js +2 -2
  28. package/dist/base/primitives/customNode.d.ts +2 -2
  29. package/dist/base/primitives/customNode.js +9 -2
  30. package/dist/base/primitives/edge/EdgeContainer.d.ts +1 -1
  31. package/dist/base/primitives/edge/EdgeContainer.js +0 -1
  32. package/dist/base/primitives/edge/EdgeLabel.css.js +1 -0
  33. package/dist/base/primitives/edge/EdgeLabel.d.ts +3 -3
  34. package/dist/base/primitives/edge/EdgeLabel.js +6 -5
  35. package/dist/base/primitives/edge/EdgeLabelContainer.d.ts +1 -1
  36. package/dist/base/primitives/edge/EdgeLabelContainer.js +0 -2
  37. package/dist/base/primitives/edge/EdgeMarkers.d.ts +1 -1
  38. package/dist/base/primitives/edge/EdgePath.d.ts +1 -1
  39. package/dist/base/primitives/edge/EdgePath.js +2 -2
  40. package/dist/base/primitives/element/ElementActionButtons.js +10 -9
  41. package/dist/base/primitives/element/ElementDetailsButton.js +2 -1
  42. package/dist/base/primitives/element/ElementNodeContainer.d.ts +24 -22
  43. package/dist/base/primitives/element/ElementNodeContainer.js +66 -68
  44. package/dist/base/primitives/element/ElementShape.d.ts +8 -4
  45. package/dist/base/primitives/element/ElementShape.js +4 -3
  46. package/dist/base/primitives/element/ElementTags.d.ts +14 -0
  47. package/dist/base/primitives/element/ElementTags.js +176 -0
  48. package/dist/base/primitives/element/ElementTitle.css.d.ts +1 -1
  49. package/dist/base/primitives/element/ElementTitle.d.ts +5 -4
  50. package/dist/base/primitives/element/ElementTitle.js +6 -7
  51. package/dist/base/primitives/index.d.ts +1 -0
  52. package/dist/base/types.Base.d.ts +54 -0
  53. package/dist/base/types.Base.js +48 -0
  54. package/dist/base/types.d.ts +3 -53
  55. package/dist/bundle/LikeC4View.d.ts +2 -1
  56. package/dist/bundle/LikeC4View.js +13 -8
  57. package/dist/bundle/LikeC4View.props.d.ts +20 -5
  58. package/dist/bundle/ReactLikeC4.d.ts +4 -7
  59. package/dist/bundle/ReactLikeC4.js +4 -4
  60. package/dist/bundle/ShadowRoot.js +3 -3
  61. package/dist/bundle/custom.d.ts +1 -0
  62. package/dist/bundle/index.d.ts +3 -1
  63. package/dist/bundle/index.js +9 -0
  64. package/dist/bundle/styles.css.js +5 -5
  65. package/dist/components/ErrorFallback.d.ts +2 -0
  66. package/dist/components/ErrorFallback.js +29 -0
  67. package/dist/components/SearchControl.js +2 -2
  68. package/dist/context/ControlsCustomLayout.js +0 -1
  69. package/dist/context/DiagramEventHandlers.d.ts +6 -5
  70. package/dist/context/DiagramEventHandlers.js +5 -5
  71. package/dist/context/DiagramFeatures.d.ts +3 -5
  72. package/dist/context/DiagramFeatures.js +11 -40
  73. package/dist/context/EnsureMantine.js +9 -4
  74. package/dist/context/FramerMotionConfig.js +0 -1
  75. package/dist/context/IconRenderer.js +8 -11
  76. package/dist/context/ReduceGraphics.js +6 -6
  77. package/dist/context/RootContainer.js +10 -6
  78. package/dist/context/TagStylesContext.d.ts +7 -0
  79. package/dist/context/TagStylesContext.js +85 -0
  80. package/dist/context/index.d.ts +1 -1
  81. package/dist/custom/components.d.ts +5 -0
  82. package/dist/custom/customNodes.d.ts +228 -0
  83. package/dist/custom/hooks.d.ts +10 -0
  84. package/dist/custom/index.d.ts +4 -0
  85. package/dist/hooks/index.d.ts +1 -1
  86. package/dist/hooks/safeContext.js +3 -3
  87. package/dist/hooks/useCurrentViewId.d.ts +5 -1
  88. package/dist/hooks/useCurrentViewId.js +1 -2
  89. package/dist/hooks/useDiagram.d.ts +77 -12572
  90. package/dist/hooks/useDiagram.js +9 -7
  91. package/dist/hooks/useMantinePortalProps.d.ts +2 -2
  92. package/dist/hooks/useMantinePortalProps.js +2 -2
  93. package/dist/hooks/useSearchActor.d.ts +2 -0
  94. package/dist/hooks/useSearchActor.js +10 -0
  95. package/dist/hooks/useSetState.js +3 -3
  96. package/dist/hooks/useUpdateEffect.js +3 -1
  97. package/dist/hooks/useXYFlow.d.ts +75 -73
  98. package/dist/hooks/useXYFlow.js +7 -3
  99. package/dist/index.d.ts +2 -4
  100. package/dist/index.js +8 -3
  101. package/dist/likec4diagram/DiagramUI.js +9 -4
  102. package/dist/likec4diagram/DiagramXYFlow.d.ts +4 -3
  103. package/dist/likec4diagram/DiagramXYFlow.js +124 -109
  104. package/dist/likec4diagram/custom/edges/NotePopover.js +2 -2
  105. package/dist/likec4diagram/custom/edges/RelationshipEdge.d.ts +12 -15
  106. package/dist/likec4diagram/custom/edges/RelationshipEdge.js +16 -8
  107. package/dist/likec4diagram/custom/edges/RelationshipsDropdownMenu.js +19 -15
  108. package/dist/likec4diagram/custom/index.d.ts +18 -21
  109. package/dist/likec4diagram/custom/index.js +3 -3
  110. package/dist/likec4diagram/custom/nodes/CompoundActions.js +2 -2
  111. package/dist/likec4diagram/custom/nodes/ElementActions.d.ts +27 -4
  112. package/dist/likec4diagram/custom/nodes/ElementActions.js +67 -53
  113. package/dist/likec4diagram/custom/nodes/index.d.ts +8 -0
  114. package/dist/likec4diagram/custom/nodes/nodes.d.ts +10 -0
  115. package/dist/likec4diagram/custom/nodes/nodes.js +105 -0
  116. package/dist/likec4diagram/custom/nodes/toolbar/ColorButton.js +2 -2
  117. package/dist/likec4diagram/custom/nodes/toolbar/CompoundToolbar.js +6 -7
  118. package/dist/likec4diagram/custom/nodes/toolbar/ElementToolbar.js +3 -3
  119. package/dist/likec4diagram/custom/nodes/toolbar/Toolbar.d.ts +3 -2
  120. package/dist/likec4diagram/custom/nodes/toolbar/Toolbar.js +2 -2
  121. package/dist/likec4diagram/custom/nodes/toolbar/_shared.d.ts +5 -5
  122. package/dist/likec4diagram/custom/nodes/toolbar/_shared.js +2 -2
  123. package/dist/likec4diagram/types.d.ts +18 -10
  124. package/dist/likec4diagram/ui/controls/ChangeAutoLayoutButton.js +4 -4
  125. package/dist/likec4diagram/ui/controls/Controls.js +14 -6
  126. package/dist/likec4diagram/ui/diagram-title/DiagramTitlePanel.js +2 -2
  127. package/dist/likec4diagram/ui/notation/NotationPanel.js +7 -9
  128. package/dist/likec4diagram/ui/walkthrough/DynamicViewWalkthrough.js +4 -4
  129. package/dist/likec4diagram/useLayoutConstraints.js +3 -4
  130. package/dist/likec4diagram/useViewToNodesEdges.d.ts +5 -3
  131. package/dist/likec4diagram/useViewToNodesEdges.js +22 -30
  132. package/dist/likec4model/LikeC4ModelContext.d.ts +2 -2
  133. package/dist/likec4model/LikeC4ModelContext.js +2 -2
  134. package/dist/likec4model/useLikeC4ElementsTree.d.ts +1 -1
  135. package/dist/likec4model/useLikeC4ElementsTree.js +4 -4
  136. package/dist/likec4model/useLikeC4Model.d.ts +22 -10
  137. package/dist/likec4model/useLikeC4Model.js +13 -9
  138. package/dist/overlays/Overlays.d.ts +2 -3
  139. package/dist/overlays/Overlays.js +9 -33
  140. package/dist/overlays/element-details/ElementDetailsCard.css.js +13 -9
  141. package/dist/overlays/element-details/ElementDetailsCard.d.ts +1 -1
  142. package/dist/overlays/element-details/ElementDetailsCard.js +110 -110
  143. package/dist/overlays/element-details/TabPanelDeployments.d.ts +1 -1
  144. package/dist/overlays/element-details/TabPanelDeployments.js +5 -5
  145. package/dist/overlays/element-details/TabPanelRelationships.d.ts +1 -1
  146. package/dist/overlays/element-details/TabPanelRelationships.js +2 -2
  147. package/dist/overlays/element-details/TabPanelStructure.d.ts +1 -1
  148. package/dist/overlays/element-details/TabPanelStructure.js +3 -3
  149. package/dist/overlays/element-details/actor.d.ts +5482 -18265
  150. package/dist/overlays/element-details/actor.js +0 -2
  151. package/dist/overlays/element-details/actorContext.js +3 -3
  152. package/dist/overlays/overlay/Overlay.css.d.ts +57 -2
  153. package/dist/overlays/overlay/Overlay.css.js +76 -39
  154. package/dist/overlays/overlay/Overlay.d.ts +23 -1
  155. package/dist/overlays/overlay/Overlay.js +40 -29
  156. package/dist/overlays/overlaysActor.d.ts +5 -3
  157. package/dist/overlays/overlaysActor.js +2 -1
  158. package/dist/overlays/relationship-details/RelationshipDetails.d.ts +6 -9
  159. package/dist/overlays/relationship-details/RelationshipDetails.js +15 -15
  160. package/dist/overlays/relationship-details/SelectEdge.js +2 -3
  161. package/dist/overlays/relationship-details/_types.d.ts +7 -6
  162. package/dist/overlays/relationship-details/actor.d.ts +3 -3
  163. package/dist/overlays/relationship-details/actor.js +7 -7
  164. package/dist/overlays/relationship-details/compute.js +3 -3
  165. package/dist/overlays/relationship-details/custom/edgeTypes.d.ts +6 -9
  166. package/dist/overlays/relationship-details/custom/edgeTypes.js +2 -2
  167. package/dist/overlays/relationship-details/custom/nodeTypes.d.ts +3 -31
  168. package/dist/overlays/relationship-details/custom/nodeTypes.js +4 -0
  169. package/dist/overlays/relationship-details/hooks.d.ts +28 -27
  170. package/dist/overlays/relationship-details/hooks.js +4 -4
  171. package/dist/overlays/relationship-details/layout-to-xyflow.js +1 -0
  172. package/dist/overlays/relationship-details/layout.js +5 -4
  173. package/dist/overlays/relationships-browser/RelationshipsBrowser.d.ts +6 -9
  174. package/dist/overlays/relationships-browser/RelationshipsBrowser.js +8 -8
  175. package/dist/overlays/relationships-browser/SelectElement.js +6 -6
  176. package/dist/overlays/relationships-browser/_types.d.ts +7 -6
  177. package/dist/overlays/relationships-browser/actor.d.ts +64 -429
  178. package/dist/overlays/relationships-browser/actor.js +7 -7
  179. package/dist/overlays/relationships-browser/custom/edgeTypes.d.ts +6 -9
  180. package/dist/overlays/relationships-browser/custom/edgeTypes.js +2 -2
  181. package/dist/overlays/relationships-browser/custom/nodeTypes.d.ts +17 -18
  182. package/dist/overlays/relationships-browser/custom/nodeTypes.js +5 -2
  183. package/dist/overlays/relationships-browser/hooks.d.ts +4 -61
  184. package/dist/overlays/relationships-browser/hooks.js +4 -4
  185. package/dist/overlays/relationships-browser/layout.d.ts +2 -2
  186. package/dist/overlays/relationships-browser/layout.js +13 -10
  187. package/dist/overlays/relationships-browser/useViewToNodesEdges.js +4 -3
  188. package/dist/search/Search.d.ts +5 -0
  189. package/dist/search/Search.js +192 -0
  190. package/dist/{likec4diagram/ui/search → search/components}/ElementsColumn.css.js +0 -1
  191. package/dist/search/components/ElementsColumn.d.ts +2 -0
  192. package/dist/{likec4diagram/ui/search → search/components}/ElementsColumn.js +26 -25
  193. package/dist/search/components/PickView.d.ts +4 -0
  194. package/dist/search/components/PickView.js +135 -0
  195. package/dist/search/components/SearchByTags.d.ts +1 -0
  196. package/dist/search/components/SearchByTags.js +116 -0
  197. package/dist/search/components/SearchInput.d.ts +2 -0
  198. package/dist/{likec4diagram/ui/search → search/components}/SearchInput.js +53 -35
  199. package/dist/{likec4diagram/ui/search → search/components}/ViewsColum.d.ts +3 -2
  200. package/dist/{likec4diagram/ui/search → search/components}/ViewsColum.js +14 -13
  201. package/dist/search/components/_shared.css.d.ts +4 -0
  202. package/dist/{likec4diagram/ui/search → search/components}/_shared.css.js +26 -35
  203. package/dist/{likec4diagram/ui/search/LikeC4Search.css.d.ts → search/components/styles.css.d.ts} +0 -2
  204. package/dist/search/components/styles.css.js +60 -0
  205. package/dist/{likec4diagram/ui/search → search/components}/utils.d.ts +1 -0
  206. package/dist/{likec4diagram/ui/search → search/components}/utils.js +7 -1
  207. package/dist/search/hooks.d.ts +16 -0
  208. package/dist/search/hooks.js +35 -0
  209. package/dist/search/searchActor.d.ts +90 -0
  210. package/dist/search/searchActor.js +75 -0
  211. package/dist/state/DiagramActorProvider.d.ts +9 -7
  212. package/dist/state/DiagramActorProvider.js +24 -18
  213. package/dist/state/assign.d.ts +0 -1
  214. package/dist/state/assign.js +9 -19
  215. package/dist/state/diagram-machine.d.ts +749 -10678
  216. package/dist/state/diagram-machine.js +121 -55
  217. package/dist/state/hotkeyActor.d.ts +4 -2
  218. package/dist/state/syncManualLayoutActor.d.ts +15 -4
  219. package/dist/state/syncManualLayoutActor.js +2 -1
  220. package/dist/state/types.d.ts +7 -4
  221. package/dist/state/utils.d.ts +3 -1
  222. package/dist/state/utils.js +3 -0
  223. package/dist/styles-font.css +1 -0
  224. package/dist/styles-min.css +1 -0
  225. package/dist/styles-xyflow.css +1 -0
  226. package/dist/styles.css +1 -0
  227. package/dist/styles.css2.js +3 -0
  228. package/package.json +50 -25
  229. package/panda.buildinfo.json +1002 -0
  230. package/src/LikeC4CustomColors.tsx +21 -6
  231. package/src/LikeC4Diagram.props.ts +42 -31
  232. package/src/LikeC4Diagram.tsx +21 -20
  233. package/src/LikeC4ModelProvider.tsx +7 -6
  234. package/src/StaticLikeC4Diagram.tsx +9 -6
  235. package/src/base/Background.tsx +0 -4
  236. package/src/base/const.ts +1 -1
  237. package/src/base/index.ts +2 -1
  238. package/src/base/primitives/compound/CompoundActionButton.tsx +9 -5
  239. package/src/base/primitives/compound/CompoundDetailsButton.tsx +9 -5
  240. package/src/base/primitives/compound/CompoundNodeContainer.tsx +8 -7
  241. package/src/base/primitives/compound/CompoundTitle.tsx +3 -2
  242. package/src/base/primitives/customEdge.ts +1 -1
  243. package/src/base/primitives/{customNode.ts → customNode.tsx} +11 -3
  244. package/src/base/primitives/edge/EdgeContainer.tsx +2 -1
  245. package/src/base/primitives/edge/EdgeLabel.css.ts +1 -0
  246. package/src/base/primitives/edge/EdgeLabel.tsx +20 -15
  247. package/src/base/primitives/edge/EdgeLabelContainer.tsx +1 -1
  248. package/src/base/primitives/edge/EdgeMarkers.tsx +2 -1
  249. package/src/base/primitives/edge/EdgePath.tsx +1 -1
  250. package/src/base/primitives/element/ElementActionButtons.tsx +11 -10
  251. package/src/base/primitives/element/ElementDetailsButton.tsx +2 -1
  252. package/src/base/primitives/element/ElementNodeContainer.tsx +87 -80
  253. package/src/base/primitives/element/ElementShape.tsx +12 -10
  254. package/src/base/primitives/element/ElementTags.tsx +182 -0
  255. package/src/base/primitives/element/ElementTitle.tsx +21 -15
  256. package/src/base/primitives/index.ts +1 -0
  257. package/src/base/types.Base.ts +104 -0
  258. package/src/base/types.ts +4 -106
  259. package/src/bundle/LikeC4View.props.ts +23 -5
  260. package/src/bundle/LikeC4View.tsx +20 -19
  261. package/src/bundle/ReactLikeC4.tsx +15 -27
  262. package/src/bundle/custom.ts +1 -0
  263. package/src/bundle/index.ts +20 -1
  264. package/src/bundle/styles.css.ts +1 -1
  265. package/src/components/ErrorFallback.tsx +30 -0
  266. package/src/components/SearchControl.tsx +1 -1
  267. package/src/context/DiagramEventHandlers.tsx +5 -4
  268. package/src/context/DiagramFeatures.tsx +15 -30
  269. package/src/context/EnsureMantine.tsx +13 -3
  270. package/src/context/IconRenderer.tsx +2 -5
  271. package/src/context/ReduceGraphics.tsx +6 -6
  272. package/src/context/RootContainer.tsx +9 -3
  273. package/src/context/TagStylesContext.tsx +96 -0
  274. package/src/context/index.ts +0 -1
  275. package/src/custom/components.ts +49 -0
  276. package/src/custom/customNodes.tsx +254 -0
  277. package/src/custom/hooks.ts +36 -0
  278. package/src/custom/index.ts +5 -0
  279. package/src/hooks/index.ts +1 -1
  280. package/src/hooks/useCurrentViewId.ts +6 -1
  281. package/src/hooks/useDiagram.ts +131 -18
  282. package/src/hooks/useMantinePortalProps.ts +10 -1
  283. package/src/hooks/useSearchActor.ts +11 -0
  284. package/src/hooks/useUpdateEffect.ts +7 -4
  285. package/src/hooks/useXYFlow.ts +5 -0
  286. package/src/index.ts +4 -8
  287. package/src/likec4diagram/DiagramUI.tsx +5 -0
  288. package/src/likec4diagram/DiagramXYFlow.tsx +135 -115
  289. package/src/likec4diagram/custom/edges/RelationshipEdge.tsx +10 -1
  290. package/src/likec4diagram/custom/edges/RelationshipsDropdownMenu.tsx +17 -14
  291. package/src/likec4diagram/custom/{index.tsx → index.ts} +2 -2
  292. package/src/likec4diagram/custom/nodes/CompoundActions.tsx +2 -2
  293. package/src/likec4diagram/custom/nodes/ElementActions.tsx +100 -57
  294. package/src/likec4diagram/custom/nodes/index.ts +17 -0
  295. package/src/likec4diagram/custom/nodes/nodes.tsx +127 -0
  296. package/src/likec4diagram/custom/nodes/toolbar/CompoundToolbar.tsx +3 -4
  297. package/src/likec4diagram/custom/nodes/toolbar/ElementToolbar.tsx +3 -3
  298. package/src/likec4diagram/custom/nodes/toolbar/Toolbar.tsx +5 -4
  299. package/src/likec4diagram/custom/nodes/toolbar/_shared.tsx +11 -3
  300. package/src/likec4diagram/types.ts +24 -12
  301. package/src/likec4diagram/ui/controls/Controls.tsx +11 -4
  302. package/src/likec4diagram/ui/diagram-title/DiagramTitlePanel.tsx +1 -1
  303. package/src/likec4diagram/ui/notation/NotationPanel.tsx +3 -4
  304. package/src/likec4diagram/ui/walkthrough/DynamicViewWalkthrough.tsx +1 -1
  305. package/src/likec4diagram/useViewToNodesEdges.ts +36 -36
  306. package/src/likec4model/LikeC4ModelContext.ts +2 -2
  307. package/src/likec4model/useLikeC4ElementsTree.ts +4 -2
  308. package/src/likec4model/useLikeC4Model.ts +18 -16
  309. package/src/overlays/Overlays.tsx +7 -35
  310. package/src/overlays/element-details/ElementDetailsCard.css.ts +14 -22
  311. package/src/overlays/element-details/ElementDetailsCard.tsx +43 -34
  312. package/src/overlays/element-details/TabPanelDeployments.tsx +3 -2
  313. package/src/overlays/element-details/TabPanelRelationships.tsx +2 -1
  314. package/src/overlays/element-details/TabPanelStructure.tsx +1 -1
  315. package/src/overlays/element-details/actor.ts +2 -2
  316. package/src/overlays/overlay/Overlay.css.ts +75 -38
  317. package/src/overlays/overlay/Overlay.tsx +45 -29
  318. package/src/overlays/overlaysActor.ts +5 -4
  319. package/src/overlays/relationship-details/RelationshipDetails.tsx +5 -5
  320. package/src/overlays/relationship-details/SelectEdge.tsx +0 -2
  321. package/src/overlays/relationship-details/_types.ts +18 -14
  322. package/src/overlays/relationship-details/custom/edgeTypes.tsx +2 -2
  323. package/src/overlays/relationship-details/custom/nodeTypes.tsx +4 -0
  324. package/src/overlays/relationship-details/layout-to-xyflow.ts +1 -0
  325. package/src/overlays/relationship-details/layout.ts +3 -1
  326. package/src/overlays/relationships-browser/SelectElement.tsx +1 -1
  327. package/src/overlays/relationships-browser/_types.ts +20 -16
  328. package/src/overlays/relationships-browser/actor.ts +2 -2
  329. package/src/overlays/relationships-browser/custom/edgeTypes.tsx +2 -2
  330. package/src/overlays/relationships-browser/custom/nodeTypes.tsx +5 -2
  331. package/src/overlays/relationships-browser/layout.ts +12 -7
  332. package/src/overlays/relationships-browser/useViewToNodesEdges.ts +4 -4
  333. package/src/search/Search.tsx +237 -0
  334. package/src/{likec4diagram/ui/search → search/components}/ElementsColumn.css.ts +0 -29
  335. package/src/{likec4diagram/ui/search → search/components}/ElementsColumn.tsx +25 -25
  336. package/src/search/components/PickView.tsx +140 -0
  337. package/src/search/components/SearchByTags.tsx +109 -0
  338. package/src/{likec4diagram/ui/search → search/components}/SearchInput.tsx +63 -36
  339. package/src/{likec4diagram/ui/search → search/components}/ViewsColum.tsx +17 -18
  340. package/src/{likec4diagram/ui/search → search/components}/_shared.css.ts +26 -37
  341. package/src/{likec4diagram/ui/search/LikeC4Search.css.ts → search/components/styles.css.ts} +9 -36
  342. package/src/{likec4diagram/ui/search → search/components}/utils.ts +7 -0
  343. package/src/search/hooks.ts +41 -0
  344. package/src/search/searchActor.ts +99 -0
  345. package/src/state/DiagramActorProvider.tsx +36 -25
  346. package/src/state/assign.ts +10 -10
  347. package/src/state/diagram-machine.ts +128 -60
  348. package/src/state/hotkeyActor.ts +4 -2
  349. package/src/state/syncManualLayoutActor.ts +10 -4
  350. package/src/state/types.ts +11 -3
  351. package/src/state/utils.ts +7 -3
  352. package/src/styles-min.css +2 -0
  353. package/src/styles-xyflow.css +1 -0
  354. package/dist/_virtual/_commonjsHelpers.js +0 -5
  355. package/dist/_virtual/default-map.js +0 -7
  356. package/dist/_virtual/index.js +0 -5
  357. package/dist/_virtual/index2.js +0 -3
  358. package/dist/_virtual/react.production.js +0 -3
  359. package/dist/_virtual/set.js +0 -5
  360. package/dist/_virtual/set2.js +0 -3
  361. package/dist/base/types.js +0 -54
  362. package/dist/base/xyflowMachine.d.ts +0 -212
  363. package/dist/likec4diagram/custom/nodes/nodeTypes.d.ts +0 -8
  364. package/dist/likec4diagram/custom/nodes/nodeTypes.js +0 -92
  365. package/dist/likec4diagram/ui/search/ElementsColumn.d.ts +0 -1
  366. package/dist/likec4diagram/ui/search/LikeC4Search.css.js +0 -87
  367. package/dist/likec4diagram/ui/search/LikeC4Search.d.ts +0 -2
  368. package/dist/likec4diagram/ui/search/LikeC4Search.js +0 -267
  369. package/dist/likec4diagram/ui/search/SearchInput.d.ts +0 -1
  370. package/dist/likec4diagram/ui/search/_shared.css.d.ts +0 -4
  371. package/dist/likec4diagram/ui/search/state.d.ts +0 -19
  372. package/dist/likec4diagram/ui/search/state.js +0 -64
  373. package/dist/node_modules/.pnpm/mnemonist@0.40.3_patch_hash_5c12abb43fcff6fd81e53021b89075d53249640d165a2556cc1e58d71201a13a/node_modules/mnemonist/default-map.js +0 -172
  374. package/dist/node_modules/.pnpm/mnemonist@0.40.3_patch_hash_5c12abb43fcff6fd81e53021b89075d53249640d165a2556cc1e58d71201a13a/node_modules/mnemonist/set.js +0 -369
  375. package/dist/node_modules/.pnpm/react@19.1.0/node_modules/react/cjs/react.production.js +0 -556
  376. package/dist/node_modules/.pnpm/react@19.1.0/node_modules/react/index.js +0 -15
  377. package/dist/packages/core/src/compute-view/relationships-view/compute.js +0 -123
  378. package/dist/packages/core/src/compute-view/relationships-view/utils.js +0 -68
  379. package/dist/packages/core/src/errors/index.js +0 -15
  380. package/dist/packages/core/src/model/connection/model/ConnectionModel.js +0 -121
  381. package/dist/packages/core/src/model/connection/model/find.js +0 -39
  382. package/dist/packages/core/src/model/connection/ops.js +0 -7
  383. package/dist/packages/core/src/utils/const.js +0 -3
  384. package/dist/packages/core/src/utils/fqn.js +0 -51
  385. package/dist/packages/core/src/utils/guards.js +0 -7
  386. package/dist/packages/core/src/utils/iterable/filter.js +0 -21
  387. package/dist/packages/core/src/utils/iterable/find.js +0 -21
  388. package/dist/packages/core/src/utils/iterable/map.js +0 -18
  389. package/dist/packages/core/src/utils/iterable/some.js +0 -21
  390. package/dist/packages/core/src/utils/iterable/to.js +0 -14
  391. package/dist/packages/core/src/utils/set.js +0 -48
  392. package/dist/packages/core/src/utils/string-hash.js +0 -13
  393. package/dist/styles.css.js +0 -3
  394. package/src/base/xyflowMachine.ts +0 -75
  395. package/src/likec4diagram/custom/nodes/nodeTypes.tsx +0 -109
  396. package/src/likec4diagram/ui/search/LikeC4Search.tsx +0 -301
  397. package/src/likec4diagram/ui/search/state.ts +0 -78
  398. /package/dist/{likec4diagram/ui/search → search/components}/ElementsColumn.css.d.ts +0 -0
  399. /package/dist/{likec4diagram/ui/search → search/components}/ViewsColumn.css.d.ts +0 -0
  400. /package/dist/{likec4diagram/ui/search → search/components}/ViewsColumn.css.js +0 -0
  401. /package/dist/{bundle/font.css.js → styles-font.css2.js} +0 -0
  402. /package/src/{likec4diagram/ui/search → search/components}/ViewsColumn.css.ts +0 -0
  403. /package/src/{bundle/font.css → styles-font.css} +0 -0
@@ -1,7 +1,2 @@
1
- import { CustomColorDefinitions } from '@likec4/core';
2
- import { NamedExoticComponent } from 'react';
3
- interface LikeC4CustomColorsProperties {
4
- customColors: CustomColorDefinitions;
5
- }
6
- export declare const LikeC4CustomColors: NamedExoticComponent<LikeC4CustomColorsProperties>;
7
- export {};
1
+ import { MemoExoticComponent } from 'react';
2
+ export declare const LikeC4CustomColors: MemoExoticComponent<() => import("react/jsx-runtime").JSX.Element | null>;
@@ -1,9 +1,10 @@
1
1
  import { jsx, Fragment } from 'react/jsx-runtime';
2
2
  import '@likec4/core';
3
3
  import { useMantineStyleNonce } from '@mantine/core';
4
- import { deepEqual } from 'fast-equals';
5
- import { r as reactExports } from './_virtual/index.js';
6
- import { entries } from 'remeda';
4
+ import { memo, useState } from 'react';
5
+ import { isEmpty, entries } from 'remeda';
6
+ import { useLikeC4Specification } from './likec4model/useLikeC4Model.js';
7
+ import { useUpdateEffect } from './hooks/useUpdateEffect.js';
7
8
 
8
9
  function toStyle(name, colors) {
9
10
  const darken = (color) => `color-mix(in srgb, ${color} 80%, black)`;
@@ -24,11 +25,21 @@ function toStyle(name, colors) {
24
25
  }
25
26
  `;
26
27
  }
27
- const LikeC4CustomColors = reactExports.memo(({ customColors }) => {
28
- const styles = entries(customColors).map(([name, color]) => toStyle(name, color)).join("\n");
28
+ function generateCustomColorStyles(customColors) {
29
+ return entries(customColors).map(([name, color]) => toStyle(name, color)).join("\n").trim();
30
+ }
31
+ const LikeC4CustomColors = memo(() => {
32
+ const customColors = useLikeC4Specification().customColors ?? {};
33
+ const [styles, setStyles] = useState(() => generateCustomColorStyles(customColors));
34
+ useUpdateEffect(() => {
35
+ setStyles(generateCustomColorStyles(customColors));
36
+ }, [customColors]);
29
37
  const nonce = useMantineStyleNonce()?.();
38
+ if (isEmpty(customColors)) {
39
+ return null;
40
+ }
30
41
  return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx("style", { type: "text/css", dangerouslySetInnerHTML: { __html: styles }, nonce }) });
31
- }, deepEqual);
42
+ });
32
43
  LikeC4CustomColors.displayName = "LikeC4CustomColors";
33
44
 
34
45
  export { LikeC4CustomColors };
@@ -1,4 +1,5 @@
1
+ import { Any } from '@likec4/core/types';
1
2
  import { PropsWithChildren } from 'react';
2
3
  import { LikeC4DiagramEventHandlers, LikeC4DiagramProperties } from './LikeC4Diagram.props';
3
- export type LikeC4DiagramProps = PropsWithChildren<LikeC4DiagramProperties & LikeC4DiagramEventHandlers>;
4
- export declare function LikeC4Diagram({ onCanvasClick, onCanvasContextMenu, onCanvasDblClick, onEdgeClick, onChange, onEdgeContextMenu, onNavigateTo, onNodeClick, onNodeContextMenu, onOpenSource, onBurgerMenuClick, view, className, fitView, fitViewPadding, readonly, pannable, zoomable, background, enableFocusMode, enableElementDetails, enableRelationshipDetails, enableRelationshipBrowser, nodesDraggable, nodesSelectable, controls, showDiagramTitle, showNotations, showNavigationButtons, enableDynamicViewWalkthrough, enableSearch, initialWidth, initialHeight, experimentalEdgeEditing, reduceGraphics, renderIcon, renderControls, where, reactFlowProps, children, }: LikeC4DiagramProps): import("react/jsx-runtime").JSX.Element;
4
+ export type LikeC4DiagramProps<A extends Any = Any> = PropsWithChildren<LikeC4DiagramProperties<A> & LikeC4DiagramEventHandlers<A>>;
5
+ export declare function LikeC4Diagram<A extends Any = Any>({ onCanvasClick, onCanvasContextMenu, onCanvasDblClick, onEdgeClick, onChange, onEdgeContextMenu, onNavigateTo, onNodeClick, onNodeContextMenu, onOpenSource, onBurgerMenuClick, view, className, fitView, fitViewPadding, readonly, pannable, zoomable, background, enableElementTags, enableFocusMode, enableElementDetails, enableRelationshipDetails, enableRelationshipBrowser, nodesDraggable, nodesSelectable, controls, showDiagramTitle, showNotations, showNavigationButtons, enableDynamicViewWalkthrough, enableSearch, initialWidth, initialHeight, experimentalEdgeEditing, reduceGraphics, renderIcon, renderControls, where, reactFlowProps, renderNodes, children, }: LikeC4DiagramProps<A>): import("react/jsx-runtime").JSX.Element;
@@ -1,13 +1,11 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { ReactFlowProvider } from '@xyflow/react';
3
- import { r as reactExports } from './_virtual/index.js';
4
- import { isEmpty } from 'remeda';
3
+ import { useRef } from 'react';
5
4
  import { ControlsCustomLayoutProvider } from './context/ControlsCustomLayout.js';
6
5
  import { ReduceGraphicsContext } from './context/ReduceGraphics.js';
7
6
  import { LikeC4CustomColors } from './LikeC4CustomColors.js';
8
7
  import { LikeC4DiagramXYFlow } from './likec4diagram/DiagramXYFlow.js';
9
8
  import { DiagramActorProvider } from './state/DiagramActorProvider.js';
10
- import { useLikeC4Model } from './likec4model/useLikeC4Model.js';
11
9
  import { EnsureMantine } from './context/EnsureMantine.js';
12
10
  import { FramerMotionConfig } from './context/FramerMotionConfig.js';
13
11
  import { IconRendererProvider } from './context/IconRenderer.js';
@@ -35,6 +33,7 @@ function LikeC4Diagram({
35
33
  pannable = true,
36
34
  zoomable = true,
37
35
  background = "dots",
36
+ enableElementTags = true,
38
37
  enableFocusMode = false,
39
38
  enableElementDetails = false,
40
39
  enableRelationshipDetails = enableElementDetails,
@@ -55,11 +54,10 @@ function LikeC4Diagram({
55
54
  renderControls,
56
55
  where,
57
56
  reactFlowProps = {},
57
+ renderNodes,
58
58
  children
59
59
  }) {
60
- const hasLikec4model = !!useLikeC4Model();
61
- const initialRef = reactExports.useRef(null);
62
- const isDynamicView = view.__ === "dynamic";
60
+ const initialRef = useRef(null);
63
61
  if (initialRef.current == null) {
64
62
  initialRef.current = {
65
63
  defaultEdges: [],
@@ -86,13 +84,13 @@ function LikeC4Diagram({
86
84
  enableRelationshipBrowser,
87
85
  enableSearch,
88
86
  enableNavigationButtons: showNavigationButtons && !!onNavigateTo,
89
- enableDynamicViewWalkthrough: isDynamicView && enableDynamicViewWalkthrough,
87
+ enableDynamicViewWalkthrough: view._type === "dynamic" && enableDynamicViewWalkthrough,
90
88
  enableEdgeEditing: experimentalEdgeEditing,
91
89
  enableNotations: showNotations,
92
90
  enableVscode: !!onOpenSource,
93
91
  enableControls: controls,
94
92
  enableViewTitle: showDiagramTitle,
95
- enableLikeC4Model: hasLikec4model
93
+ enableElementTags
96
94
  },
97
95
  children: /* @__PURE__ */ jsx(
98
96
  DiagramEventHandlers,
@@ -111,7 +109,7 @@ function LikeC4Diagram({
111
109
  onBurgerMenuClick
112
110
  },
113
111
  children: /* @__PURE__ */ jsx(ReduceGraphicsContext, { reduceGraphics: isReducedGraphicsMode, children: /* @__PURE__ */ jsxs(RootContainer, { className, reduceGraphics: isReducedGraphicsMode, children: [
114
- !isEmpty(view.customColorDefinitions) && /* @__PURE__ */ jsx(LikeC4CustomColors, { customColors: view.customColorDefinitions }),
112
+ /* @__PURE__ */ jsx(LikeC4CustomColors, {}),
115
113
  /* @__PURE__ */ jsx(
116
114
  ReactFlowProvider,
117
115
  {
@@ -120,13 +118,12 @@ function LikeC4Diagram({
120
118
  children: /* @__PURE__ */ jsx(
121
119
  DiagramActorProvider,
122
120
  {
123
- input: {
124
- view,
125
- pannable,
126
- zoomable,
127
- nodesSelectable,
128
- fitViewPadding
129
- },
121
+ view,
122
+ zoomable,
123
+ pannable,
124
+ fitViewPadding,
125
+ nodesSelectable,
126
+ where: where ?? null,
130
127
  children: /* @__PURE__ */ jsx(ControlsCustomLayoutProvider, { value: renderControls ?? null, children: /* @__PURE__ */ jsx(
131
128
  LikeC4DiagramXYFlow,
132
129
  {
@@ -134,6 +131,7 @@ function LikeC4Diagram({
134
131
  nodesSelectable,
135
132
  background,
136
133
  reactFlowProps,
134
+ renderNodes,
137
135
  children
138
136
  }
139
137
  ) })
@@ -1,22 +1,24 @@
1
- import { DiagramEdge, DiagramNode, DiagramView, Fqn, RelationId, ViewChange, ViewId, WhereOperator } from '@likec4/core';
1
+ import { Any, DiagramEdge, DiagramNode, LayoutedView, ViewChange, WhereOperator } from '@likec4/core/types';
2
2
  import { ReactFlowProps as XYFlowProps } from '@xyflow/react';
3
3
  import { MouseEvent as ReactMouseEvent, ReactNode } from 'react';
4
+ import { SetRequired } from 'type-fest';
4
5
  import { ControlsCustomLayout } from './context/ControlsCustomLayout';
5
- export type { WhereOperator };
6
- export type DiagramNodeWithNavigate<ID = ViewId> = Omit<DiagramNode, 'navigateTo'> & {
7
- navigateTo: ID;
8
- };
6
+ import { CustomNodes } from './custom/customNodes';
7
+ import type * as aux from '@likec4/core/types/aux';
8
+ export type { CustomNodes, WhereOperator };
9
+ export type DiagramNodeWithNavigate<A extends Any> = SetRequired<DiagramNode<A>, 'navigateTo'>;
9
10
  type ElementIconRendererProps = {
10
11
  node: {
11
12
  id: string;
12
13
  title: string;
13
14
  icon?: string | null | undefined;
14
15
  };
16
+ className?: string;
15
17
  };
16
18
  export type ElementIconRenderer = (props: ElementIconRendererProps) => ReactNode;
17
- export type OnNavigateTo<ID = ViewId> = (to: ID, event?: ReactMouseEvent, element?: DiagramNodeWithNavigate<ID>) => void;
18
- export type OnNodeClick = (node: DiagramNode, event: ReactMouseEvent) => void;
19
- export type OnEdgeClick = (edge: DiagramEdge, event: ReactMouseEvent) => void;
19
+ export type OnNavigateTo<A extends Any> = (to: aux.ViewId<A>, event?: ReactMouseEvent, element?: DiagramNodeWithNavigate<A>) => void;
20
+ export type OnNodeClick<A extends Any> = (node: DiagramNode<A>, event: ReactMouseEvent) => void;
21
+ export type OnEdgeClick<A extends Any> = (edge: DiagramEdge<A>, event: ReactMouseEvent) => void;
20
22
  /**
21
23
  * On pane/canvas click (not on any node or edge)
22
24
  */
@@ -29,8 +31,8 @@ export type LikeC4ColorScheme = 'light' | 'dark';
29
31
  export type OverrideReactFlowProps = Pick<XYFlowProps, 'paneClickDistance' | 'nodeClickDistance' | 'selectionKeyCode' | 'panActivationKeyCode' | 'multiSelectionKeyCode' | 'zoomActivationKeyCode' | 'snapToGrid' | 'snapGrid' | 'onlyRenderVisibleElements' | 'nodesDraggable' | 'nodesFocusable' | 'elementsSelectable' | 'selectNodesOnDrag' | 'panOnDrag' | 'preventScrolling' | 'zoomOnScroll' | 'zoomOnPinch' | 'panOnScroll' | 'panOnScrollSpeed' | 'panOnScrollMode' | 'zoomOnDoubleClick' | 'nodeDragThreshold'>;
30
32
  export type PaddingUnit = 'px' | '%';
31
33
  export type PaddingWithUnit = `${number}${PaddingUnit}` | number;
32
- export interface LikeC4DiagramProperties {
33
- view: DiagramView;
34
+ export interface LikeC4DiagramProperties<A extends aux.Any> {
35
+ view: LayoutedView<A>;
34
36
  className?: string | undefined;
35
37
  /**
36
38
  * Enable/disable panning
@@ -124,6 +126,11 @@ export interface LikeC4DiagramProperties {
124
126
  * @default false
125
127
  */
126
128
  enableDynamicViewWalkthrough?: boolean | undefined;
129
+ /**
130
+ * Display element tags in the bottom left corner
131
+ * @default true
132
+ */
133
+ enableElementTags?: boolean | undefined;
127
134
  /**
128
135
  * Experimental feature to enable edge editing
129
136
  * @default false
@@ -144,36 +151,40 @@ export interface LikeC4DiagramProperties {
144
151
  * Customize layout of the controls on the top left
145
152
  */
146
153
  renderControls?: ControlsCustomLayout | undefined;
154
+ /**
155
+ * Override node renderers
156
+ */
157
+ renderNodes?: CustomNodes | undefined;
147
158
  /**
148
159
  * Dynamic filter, applies both to nodes and edges
149
160
  */
150
- where?: WhereOperator<string, string> | undefined;
161
+ where?: WhereOperator<A> | undefined;
151
162
  /**
152
163
  * Override ReactFlow props
153
164
  */
154
165
  reactFlowProps?: OverrideReactFlowProps | undefined;
155
166
  }
156
- export type OpenSourceParams = {
157
- element: Fqn;
167
+ export type OpenSourceParams<A extends aux.Any = aux.Any> = {
168
+ element: aux.Fqn<A>;
158
169
  property?: string;
159
170
  } | {
160
- relation: RelationId;
171
+ relation: aux.RelationId;
161
172
  } | {
162
- deployment: Fqn;
173
+ deployment: aux.DeploymentFqn<A>;
163
174
  property?: string;
164
175
  } | {
165
- view: ViewId;
176
+ view: aux.StrictViewId<A>;
166
177
  };
167
- export interface LikeC4DiagramEventHandlers {
178
+ export interface LikeC4DiagramEventHandlers<A extends aux.Any> {
168
179
  onChange?: OnChange | null | undefined;
169
- onNavigateTo?: OnNavigateTo | null | undefined;
170
- onNodeClick?: OnNodeClick | null | undefined;
171
- onNodeContextMenu?: OnNodeClick | null | undefined;
180
+ onNavigateTo?: OnNavigateTo<A> | null | undefined;
181
+ onNodeClick?: OnNodeClick<A> | null | undefined;
182
+ onNodeContextMenu?: OnNodeClick<A> | null | undefined;
172
183
  onCanvasContextMenu?: OnCanvasClick | null | undefined;
173
- onEdgeClick?: OnEdgeClick | null | undefined;
174
- onEdgeContextMenu?: OnEdgeClick | null | undefined;
184
+ onEdgeClick?: OnEdgeClick<A> | null | undefined;
185
+ onEdgeContextMenu?: OnEdgeClick<A> | null | undefined;
175
186
  onCanvasClick?: OnCanvasClick | null | undefined;
176
187
  onCanvasDblClick?: OnCanvasClick | null | undefined;
177
188
  onBurgerMenuClick?: null | undefined | (() => void);
178
- onOpenSource?: null | undefined | ((params: OpenSourceParams) => void);
189
+ onOpenSource?: null | undefined | ((params: OpenSourceParams<A>) => void);
179
190
  }
@@ -1,9 +1,10 @@
1
- import { LikeC4Model } from '@likec4/core';
1
+ import { LikeC4Model } from '@likec4/core/model';
2
+ import { Any, Unknown } from '@likec4/core/types';
2
3
  import { PropsWithChildren } from 'react';
3
- export type LikeC4ModelProviderProps = PropsWithChildren<{
4
- likec4model: LikeC4Model;
4
+ export type LikeC4ModelProviderProps<A extends Any> = PropsWithChildren<{
5
+ likec4model: LikeC4Model<A>;
5
6
  }>;
6
7
  /**
7
8
  * Ensures LikeC4Model context
8
9
  */
9
- export declare function LikeC4ModelProvider({ children, likec4model }: LikeC4ModelProviderProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare function LikeC4ModelProvider<A extends Any = Unknown>({ children, likec4model, }: LikeC4ModelProviderProps<A>): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,4 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import './_virtual/index.js';
3
2
  import { LikeC4ModelContext } from './likec4model/LikeC4ModelContext.js';
4
3
 
5
4
  function LikeC4ModelProvider({
@@ -1,3 +1,4 @@
1
1
  import { LikeC4DiagramProperties } from './LikeC4Diagram.props';
2
- export type StaticLikeC4DiagramProps = Pick<LikeC4DiagramProperties, 'view' | 'className' | 'fitView' | 'fitViewPadding' | 'background' | 'enableElementDetails' | 'enableRelationshipDetails' | 'enableRelationshipBrowser' | 'reduceGraphics' | 'initialWidth' | 'initialHeight' | 'renderIcon' | 'where'>;
3
- export declare function StaticLikeC4Diagram({ view, fitView, fitViewPadding, enableElementDetails, enableRelationshipDetails, enableRelationshipBrowser, background, ...rest }: StaticLikeC4DiagramProps): import("react/jsx-runtime").JSX.Element;
2
+ import type * as aux from '@likec4/core/types/aux';
3
+ export type StaticLikeC4DiagramProps<A extends aux.Any> = Pick<LikeC4DiagramProperties<A>, 'view' | 'className' | 'fitView' | 'fitViewPadding' | 'background' | 'enableElementDetails' | 'enableRelationshipDetails' | 'enableRelationshipBrowser' | 'enableElementTags' | 'reduceGraphics' | 'initialWidth' | 'initialHeight' | 'renderIcon' | 'renderNodes' | 'where'>;
4
+ export declare function StaticLikeC4Diagram<A extends aux.Any = aux.UnknownLayouted>({ view, fitView, fitViewPadding, enableRelationshipDetails, enableRelationshipBrowser, background, ...rest }: StaticLikeC4DiagramProps<A>): import("react/jsx-runtime").JSX.Element;
@@ -5,7 +5,6 @@ function StaticLikeC4Diagram({
5
5
  view,
6
6
  fitView = true,
7
7
  fitViewPadding = "8px",
8
- enableElementDetails = false,
9
8
  enableRelationshipDetails = false,
10
9
  enableRelationshipBrowser = enableRelationshipDetails,
11
10
  background = "transparent",
@@ -24,7 +23,7 @@ function StaticLikeC4Diagram({
24
23
  background,
25
24
  showDiagramTitle: false,
26
25
  showNotations: false,
27
- enableElementDetails,
26
+ enableElementDetails: false,
28
27
  enableRelationshipDetails,
29
28
  enableRelationshipBrowser,
30
29
  enableDynamicViewWalkthrough: false,
@@ -34,6 +33,7 @@ function StaticLikeC4Diagram({
34
33
  enableSearch: false,
35
34
  nodesSelectable: false,
36
35
  nodesDraggable: false,
36
+ enableElementTags: false,
37
37
  ...rest
38
38
  }
39
39
  );
@@ -2,13 +2,13 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { cx, css } from '@likec4/styles/css';
3
3
  import { useCallbackRef } from '@mantine/hooks';
4
4
  import { ReactFlow, useStore } from '@xyflow/react';
5
- import { r as reactExports } from '../_virtual/index.js';
5
+ import { useMemo, Fragment } from 'react';
6
6
  import { useUpdateEffect } from '../hooks/useUpdateEffect.js';
7
7
  import { useIsZoomTooSmall, useXYStoreApi } from '../hooks/useXYFlow.js';
8
8
  import { stopPropagation } from '../utils/xyflow.js';
9
9
  import { Background } from './Background.js';
10
10
  import { MinZoom, MaxZoom } from './const.js';
11
- import { Base } from './types.js';
11
+ import { setHovered } from './types.Base.js';
12
12
 
13
13
  const cssTransparentBg = css({
14
14
  background: "transparent !important",
@@ -82,7 +82,7 @@ const BaseXYFlow = ({
82
82
  maxZoom: zoomable ? MaxZoom : 1,
83
83
  minZoom: zoomable ? MinZoom : 1,
84
84
  fitView,
85
- fitViewOptions: reactExports.useMemo(() => ({
85
+ fitViewOptions: useMemo(() => ({
86
86
  minZoom: MinZoom,
87
87
  maxZoom: 1,
88
88
  padding: fitViewPadding,
@@ -121,7 +121,7 @@ const BaseXYFlow = ({
121
121
  onNodesChange([{
122
122
  id: node.id,
123
123
  type: "replace",
124
- item: Base.setHovered(node, true)
124
+ item: setHovered(node, true)
125
125
  }]);
126
126
  }
127
127
  }),
@@ -130,7 +130,7 @@ const BaseXYFlow = ({
130
130
  onNodesChange([{
131
131
  id: node.id,
132
132
  type: "replace",
133
- item: Base.setHovered(node, false)
133
+ item: setHovered(node, false)
134
134
  }]);
135
135
  }
136
136
  }),
@@ -139,7 +139,7 @@ const BaseXYFlow = ({
139
139
  onEdgesChange([{
140
140
  id: edge.id,
141
141
  type: "replace",
142
- item: Base.setHovered(edge, true)
142
+ item: setHovered(edge, true)
143
143
  }]);
144
144
  }
145
145
  }),
@@ -148,7 +148,7 @@ const BaseXYFlow = ({
148
148
  onEdgesChange([{
149
149
  id: edge.id,
150
150
  type: "replace",
151
- item: Base.setHovered(edge, false)
151
+ item: setHovered(edge, false)
152
152
  }]);
153
153
  }
154
154
  }),
@@ -156,7 +156,7 @@ const BaseXYFlow = ({
156
156
  onEdgeDoubleClick: stopPropagation,
157
157
  ...props,
158
158
  children: [
159
- /* @__PURE__ */ jsxs(reactExports.Fragment, { children: [
159
+ /* @__PURE__ */ jsxs(Fragment, { children: [
160
160
  isBgWithPattern && /* @__PURE__ */ jsx(Background, { background }),
161
161
  onViewportResize && /* @__PURE__ */ jsx(ViewportResizeHanlder, { onViewportResize })
162
162
  ] }, "_internals"),
@@ -5,4 +5,4 @@ export declare const ZIndexes: {
5
5
  readonly Max: 8;
6
6
  };
7
7
  export declare const MinZoom = 0.05;
8
- export declare const MaxZoom = 2;
8
+ export declare const MaxZoom = 3;
@@ -5,6 +5,6 @@ const ZIndexes = {
5
5
  Max: 8
6
6
  };
7
7
  const MinZoom = 0.05;
8
- const MaxZoom = 2;
8
+ const MaxZoom = 3;
9
9
 
10
10
  export { MaxZoom, MinZoom, ZIndexes };
@@ -1,2 +1,3 @@
1
1
  export { BaseXYFlow, type BaseXYFlowProps } from './BaseXYFlow';
2
- export { Base, type EdgeProps, type NodeProps, type NonOptional, type ReactFlowEdge, type ReactFlowNode, } from './types';
2
+ export { type EdgeProps, type NodeProps, type NonOptional, type ReactFlowEdge, type ReactFlowNode, } from './types';
3
+ export * as Base from './types.Base';
@@ -1,7 +1,8 @@
1
+ import { Simplify } from 'type-fest';
1
2
  import { NodeProps } from '../../types';
2
- type CompoundActionButtonProps = NodeProps & {
3
+ type CompoundActionButtonProps = Simplify<NodeProps<{}> & {
3
4
  icon?: React.ReactNode;
4
5
  onClick: (e: React.MouseEvent) => void;
5
- };
6
+ }>;
6
7
  export declare function CompoundActionButton({ data: { hovered: isHovered, }, icon, onClick, }: CompoundActionButtonProps): import("react/jsx-runtime").JSX.Element;
7
8
  export {};
@@ -1,7 +1,8 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { cx, css } from '@likec4/styles/css';
3
+ import { Box } from '@likec4/styles/jsx';
3
4
  import { actionBtn } from '@likec4/styles/recipes';
4
- import { Box, ActionIcon } from '@mantine/core';
5
+ import { ActionIcon } from '@mantine/core';
5
6
  import { useDebouncedValue } from '@mantine/hooks';
6
7
  import { IconZoomScan } from '@tabler/icons-react';
7
8
  import * as m from 'motion/react-m';
@@ -1,7 +1,8 @@
1
+ import { Simplify } from 'type-fest';
1
2
  import { NodeProps } from '../../types';
2
- type CompoundDetailsButtonProps = NodeProps & {
3
+ type CompoundDetailsButtonProps = Simplify<NodeProps<{}> & {
3
4
  icon?: React.ReactNode;
4
5
  onClick: (e: React.MouseEvent) => void;
5
- };
6
+ }>;
6
7
  export declare function CompoundDetailsButton({ data: { hovered: isHovered, }, icon, onClick, }: CompoundDetailsButtonProps): import("react/jsx-runtime").JSX.Element;
7
8
  export {};
@@ -1,7 +1,8 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { cx, css } from '@likec4/styles/css';
3
+ import { Box } from '@likec4/styles/jsx';
3
4
  import { actionBtn } from '@likec4/styles/recipes';
4
- import { Box, ActionIcon } from '@mantine/core';
5
+ import { ActionIcon } from '@mantine/core';
5
6
  import { useDebouncedValue } from '@mantine/hooks';
6
7
  import { IconId } from '@tabler/icons-react';
7
8
  import * as m from 'motion/react-m';
@@ -1,10 +1,14 @@
1
- import { DiagramNode } from '@likec4/core';
1
+ import { Color, ElementStyle } from '@likec4/core/types';
2
2
  import { HTMLMotionProps } from 'motion/react';
3
3
  import { PropsWithChildren } from 'react';
4
4
  import { NodeProps } from '../../types';
5
- type RequiredData = Pick<DiagramNode, 'color' | 'depth' | 'style'>;
5
+ export type RequiredData = {
6
+ color: Color;
7
+ depth: number;
8
+ style: ElementStyle;
9
+ };
6
10
  type CompoundNodeContainerProps = Omit<HTMLMotionProps<'div'>, 'children'> & PropsWithChildren<{
7
11
  nodeProps: NodeProps<RequiredData>;
8
12
  }>;
9
- export declare function CompoundNodeContainer({ nodeProps: { selected: isSelected, data: { hovered: isHovered, dimmed: isDimmed, ...data }, }, children, style, ...rest }: CompoundNodeContainerProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare function CompoundNodeContainer({ nodeProps: { selected: isSelected, data: { hovered: isHovered, dimmed: isDimmed, ...data }, }, className, children, style, ...rest }: CompoundNodeContainerProps): import("react/jsx-runtime").JSX.Element;
10
14
  export {};
@@ -1,7 +1,6 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { cx, css } from '@likec4/styles/css';
3
3
  import { m } from 'motion/react';
4
- import '../../../_virtual/index.js';
5
4
  import { isNumber, clamp } from 'remeda';
6
5
  import { compound, borderOpacityPercent, borderRadius, borderWidth, compoundOpacity } from './CompoundNodeContainer.css.js';
7
6
  import { useIsReducedGraphics } from '../../../context/ReduceGraphics.js';
@@ -15,6 +14,7 @@ function CompoundNodeContainer({
15
14
  ...data
16
15
  }
17
16
  },
17
+ className,
18
18
  children,
19
19
  style,
20
20
  ...rest
@@ -48,7 +48,8 @@ function CompoundNodeContainer({
48
48
  likec4Palette: `${data.color}.${depth}`
49
49
  }),
50
50
  classes.root,
51
- "likec4-compound-node"
51
+ "likec4-compound-node",
52
+ className
52
53
  ),
53
54
  initial: false,
54
55
  "data-likec4-hovered": isHovered,
@@ -1,4 +1,4 @@
1
- import { DiagramNode } from '@likec4/core';
1
+ import { DiagramNode } from '@likec4/core/types';
2
2
  import { NodeProps } from '../../types';
3
3
  type Data = Pick<DiagramNode, 'color' | 'title' | 'icon' | 'style'>;
4
4
  type CompoundTitleProps = NodeProps<Data>;
@@ -1,6 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { cx, css } from '@likec4/styles/css';
3
- import { Box, Text } from '@mantine/core';
3
+ import { Box } from '@likec4/styles/jsx';
4
+ import { Text } from '@mantine/core';
4
5
  import { IconRenderer } from '../../../context/IconRenderer.js';
5
6
 
6
7
  const titleContainer = css({
@@ -1,37 +1,4 @@
1
- import { FunctionComponent, NamedExoticComponent, CSSProperties, ReactNode } from 'react';
1
+ import { FunctionComponent } from 'react';
2
2
  import { Base, EdgeProps } from '../types';
3
- import { Position } from '@xyflow/system';
4
3
  export declare const edgePropsEqual: <P extends Record<string, unknown> = Base.EdgeData>(prev: EdgeProps<P>, next: EdgeProps<P>) => boolean;
5
- export declare function customEdge<P extends Record<string, unknown> = Base.NodeData>(Edge: FunctionComponent<EdgeProps<P>>): NamedExoticComponent<{
6
- id: string;
7
- selected?: boolean;
8
- selectable?: boolean;
9
- deletable?: boolean;
10
- style?: CSSProperties;
11
- source: string;
12
- target: string;
13
- animated?: boolean;
14
- sourceX: number;
15
- sourceY: number;
16
- targetX: number;
17
- targetY: number;
18
- sourcePosition: Position;
19
- targetPosition: Position;
20
- label?: ReactNode;
21
- labelStyle?: CSSProperties;
22
- labelShowBg?: boolean;
23
- labelBgStyle?: CSSProperties;
24
- labelBgPadding?: [number, number];
25
- labelBgBorderRadius?: number;
26
- sourceHandleId?: string | null;
27
- targetHandleId?: string | null;
28
- markerStart?: string;
29
- markerEnd?: string;
30
- pathOptions?: any;
31
- interactionWidth?: number;
32
- data: {
33
- hovered?: boolean;
34
- active?: boolean;
35
- dimmed?: Base.Dimmed;
36
- } & P;
37
- }>;
4
+ export declare function customEdge<P extends Record<string, unknown> = Base.NodeData>(Edge: FunctionComponent<EdgeProps<P>>): FunctionComponent<EdgeProps<P>>;
@@ -1,12 +1,12 @@
1
1
  import { deepEqual } from 'fast-equals';
2
- import { r as reactExports } from '../../_virtual/index.js';
2
+ import { memo } from 'react';
3
3
 
4
4
  const isSame = (a, b) => {
5
5
  return Math.abs(a - b) < 2.5;
6
6
  };
7
7
  const edgePropsEqual = (prev, next) => prev.id === next.id && deepEqual(prev.selected ?? false, next.selected ?? false) && deepEqual(prev.animated ?? false, next.animated ?? false) && deepEqual(prev.source, next.source) && deepEqual(prev.sourceHandleId ?? null, next.sourceHandleId ?? null) && deepEqual(prev.sourcePosition, next.sourcePosition) && deepEqual(prev.target, next.target) && deepEqual(prev.targetHandleId ?? null, next.targetHandleId ?? null) && deepEqual(prev.targetPosition, next.targetPosition) && isSame(prev.sourceX, next.sourceX) && isSame(prev.sourceY, next.sourceY) && isSame(prev.targetX, next.targetX) && isSame(prev.targetY, next.targetY) && deepEqual(prev.data, next.data);
8
8
  function customEdge(Edge) {
9
- return reactExports.memo(Edge, edgePropsEqual);
9
+ return memo(Edge, edgePropsEqual);
10
10
  }
11
11
 
12
12
  export { customEdge, edgePropsEqual };
@@ -1,4 +1,4 @@
1
- import { FunctionComponent, NamedExoticComponent } from 'react';
1
+ import { FunctionComponent, MemoExoticComponent } from 'react';
2
2
  import { Base, NodeProps } from '../types';
3
3
  export declare const nodePropsEqual: <P extends Record<string, unknown> = Base.NodeData>(prev: NodeProps<P>, next: NodeProps<P>) => boolean;
4
- export declare function customNode<P extends Record<string, unknown> = Base.NodeData>(Node: FunctionComponent<NodeProps<P>>): NamedExoticComponent<NodeProps<P>>;
4
+ export declare function customNode<P extends Record<string, unknown> = {}, NodeType extends string = string>(Node: FunctionComponent<NodeProps<P, NodeType>>): MemoExoticComponent<(props: NodeProps<P, NodeType>) => import("react/jsx-runtime").JSX.Element>;
@@ -1,9 +1,16 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
1
2
  import { deepEqual } from 'fast-equals';
2
- import { r as reactExports } from '../../_virtual/index.js';
3
+ import { memo } from 'react';
4
+ import { DefaultHandles } from './NodeHandles.js';
3
5
 
4
6
  const nodePropsEqual = (prev, next) => prev.id === next.id && deepEqual(prev.selected ?? false, next.selected ?? false) && deepEqual(prev.dragging ?? false, next.dragging ?? false) && deepEqual(prev.width ?? 0, next.width ?? 0) && deepEqual(prev.height ?? 0, next.height ?? 0) && deepEqual(prev.zIndex ?? 0, next.zIndex ?? 0) && deepEqual(prev.data, next.data);
5
7
  function customNode(Node) {
6
- return reactExports.memo(Node, nodePropsEqual);
8
+ const NodeComponent = memo((props) => /* @__PURE__ */ jsxs(Fragment, { children: [
9
+ /* @__PURE__ */ jsx(Node, { ...props }),
10
+ /* @__PURE__ */ jsx(DefaultHandles, {})
11
+ ] }), nodePropsEqual);
12
+ NodeComponent.displayName = "Node";
13
+ return NodeComponent;
7
14
  }
8
15
 
9
16
  export { customNode, nodePropsEqual };
@@ -1,4 +1,4 @@
1
- import { DiagramEdge } from '@likec4/core';
1
+ import { DiagramEdge } from '@likec4/core/types';
2
2
  import { PropsWithChildren } from 'react';
3
3
  import { UndefinedOnPartialDeep } from 'type-fest';
4
4
  import { EdgeProps } from '../../types';
@@ -1,7 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { invariant } from '@likec4/core';
3
3
  import { cx, css } from '@likec4/styles/css';
4
- import '../../../_virtual/index.js';
5
4
  import { edgeVars, edgeContainer } from './edge.css.js';
6
5
 
7
6
  function EdgeContainer({
@@ -57,6 +57,7 @@ const labelsva = sva({
57
57
  slots: ["root", "stepNumber", "labelContents", "labelText", "labelTechnology"],
58
58
  base: {
59
59
  root: {
60
+ pointerEvents: "all",
60
61
  fontFamily: "likec4.relation",
61
62
  padding: "3px 5px 5px 5px",
62
63
  display: "flex",