@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
@@ -14,5 +14,6 @@ export { ElementActionButtons } from './element/ElementActionButtons';
14
14
  export { ElementDetailsButton } from './element/ElementDetailsButton';
15
15
  export { ElementNodeContainer } from './element/ElementNodeContainer';
16
16
  export { ElementShape } from './element/ElementShape';
17
+ export { ElementTag, ElementTags } from './element/ElementTags';
17
18
  export { ElementTitle } from './element/ElementTitle';
18
19
  export { DefaultHandles } from './NodeHandles';
@@ -0,0 +1,54 @@
1
+ import { Edge as RFEdge, Node as RFNode, NodeProps as ReactFlowNodeProps } from '@xyflow/react';
2
+ import { Simplify } from 'type-fest';
3
+ export type Dimmed = 'immediate' | boolean;
4
+ export type NodeData = {
5
+ /**
6
+ * Whether the cursor is hovering over the node
7
+ */
8
+ hovered?: boolean;
9
+ /**
10
+ * Whether the node is dimmed
11
+ * 'immediate' means that the node is dimmed without delay
12
+ */
13
+ dimmed?: Dimmed;
14
+ };
15
+ export type Node = RFNode<NodeData>;
16
+ export type NodeProps = ReactFlowNodeProps<RFNode<NodeData, any>>;
17
+ export type EdgeData = {
18
+ /**
19
+ * Whether the cursor is hovering over the edge
20
+ */
21
+ hovered?: boolean;
22
+ /**
23
+ * Whether the edge is active (animated and highlighted)
24
+ */
25
+ active?: boolean;
26
+ /**
27
+ * Whether the edge is dimmed
28
+ * 'immediate' means that the edge is dimmed without delay
29
+ */
30
+ dimmed?: Dimmed;
31
+ };
32
+ export type Edge = Simplify<Omit<RFEdge, 'data'> & {
33
+ data: EdgeData;
34
+ }>;
35
+ type WithDimmed = {
36
+ data: {
37
+ dimmed?: Dimmed;
38
+ };
39
+ };
40
+ type WithHovered = {
41
+ data: {
42
+ hovered?: boolean;
43
+ };
44
+ };
45
+ export declare function setDimmed<T extends WithDimmed>(value: T, dimmed: 'immediate' | boolean): T;
46
+ export declare function setDimmed(dimmed: 'immediate' | boolean): <T extends WithDimmed>(value: T) => T;
47
+ export declare function setHovered<T extends WithHovered>(value: T, hovered: boolean): T;
48
+ export declare function setHovered(hovered: boolean): <T extends WithHovered>(value: T) => T;
49
+ type WithData<D> = {
50
+ data: D;
51
+ };
52
+ export declare function setData<E extends WithData<any>>(value: E, state: Partial<E['data']>): E;
53
+ export declare function setData<E extends WithData<any>>(state: Partial<E['data']>): (value: E) => E;
54
+ export {};
@@ -0,0 +1,48 @@
1
+ import { hasSubObject } from 'remeda';
2
+
3
+ const _setDimmed = (v, dimmed) => (v.data.dimmed ?? false) === dimmed ? v : {
4
+ ...v,
5
+ data: {
6
+ ...v.data,
7
+ dimmed
8
+ }
9
+ };
10
+ function setDimmed(arg1, arg2) {
11
+ if (arg2 !== void 0) {
12
+ return _setDimmed(arg1, arg2);
13
+ }
14
+ return (v) => _setDimmed(v, arg1);
15
+ }
16
+ const _setHovered = (v, hovered) => (v.data.hovered ?? false) === hovered ? v : {
17
+ ...v,
18
+ data: {
19
+ ...v.data,
20
+ hovered
21
+ }
22
+ };
23
+ function setHovered(arg1, arg2) {
24
+ if (arg2 !== void 0) {
25
+ return _setHovered(arg1, arg2);
26
+ }
27
+ return (v) => _setHovered(v, arg1);
28
+ }
29
+ function _setData(value, state) {
30
+ if (hasSubObject(value.data, state)) {
31
+ return value;
32
+ }
33
+ return {
34
+ ...value,
35
+ data: {
36
+ ...value.data,
37
+ ...state
38
+ }
39
+ };
40
+ }
41
+ function setData(arg1, arg2) {
42
+ if (arg2 !== void 0) {
43
+ return _setData(arg1, arg2);
44
+ }
45
+ return (edge) => _setData(edge, arg1);
46
+ }
47
+
48
+ export { setData, setDimmed, setHovered };
@@ -1,5 +1,6 @@
1
1
  import { Edge as RFEdge, EdgeProps as ReactFlowEdgeProps, Node as RFNode, NodeProps as ReactFlowNodeProps } from '@xyflow/react';
2
2
  import { OptionalKeysOf, SetRequired, Simplify } from 'type-fest';
3
+ import * as Base from './types.Base';
3
4
  /**
4
5
 
5
6
  To cooperate with `exactOptionalPropertyTypes` in `tsconfig.json`
@@ -29,62 +30,11 @@ export type NonOptional<T extends object, Keys extends OptionalKeysOf<T> = Optio
29
30
  /**
30
31
  * ReactFlow Custom Node properties with BaseNodeData at least
31
32
  */
32
- export type NodeProps<T extends Record<string, unknown> = {}> = ReactFlowNodeProps<RFNode<Base.NodeData & T, any>>;
33
+ export type NodeProps<T extends Record<string, unknown> = {}, NodeType extends string = string> = ReactFlowNodeProps<RFNode<Base.NodeData & T, NodeType>>;
33
34
  /**
34
35
  * ReactFlow Custom Edge properties with BaseEdgeData at least
35
36
  */
36
37
  export type EdgeProps<T extends Record<string, unknown> = {}> = SetRequired<ReactFlowEdgeProps<RFEdge<Base.EdgeData & T, any>>, 'data'>;
37
38
  export type ReactFlowNode<Data extends Record<string, unknown>, NodeType extends string> = SetRequired<RFNode<Data, NodeType>, 'type' | 'initialWidth' | 'initialHeight'>;
38
39
  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
- }
40
+ export * as Base from './types.Base';
@@ -1,2 +1,3 @@
1
1
  import { LikeC4ViewProps } from './LikeC4View.props';
2
- export declare function LikeC4View<ViewId extends string = string, Tag = string, Kind = string>({ viewId, ...props }: LikeC4ViewProps<ViewId, Tag, Kind>): import("react/jsx-runtime").JSX.Element;
2
+ import type * as aux from '@likec4/core/types/aux';
3
+ export declare function LikeC4View<A extends aux.Any = aux.UnknownLayouted>({ viewId, ...props }: LikeC4ViewProps<A>): import("react/jsx-runtime").JSX.Element;
@@ -1,15 +1,15 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import { r as reactExports } from '../_virtual/index.js';
3
- import { ShadowRoot } from './ShadowRoot.js';
4
2
  import { cx } from '@likec4/styles/css';
5
3
  import { Box, ActionIcon } from '@mantine/core';
6
4
  import { shallowEqual } from '@mantine/hooks';
7
5
  import { IconX } from '@tabler/icons-react';
6
+ import { memo, useState } from 'react';
8
7
  import { isBoolean } from 'remeda';
9
8
  import { FramerMotionConfig } from '../context/FramerMotionConfig.js';
10
9
  import { LikeC4Diagram } from '../LikeC4Diagram.js';
11
10
  import { useLikeC4Model } from '../likec4model/useLikeC4Model.js';
12
11
  import { Overlay } from '../overlays/overlay/Overlay.js';
12
+ import { ShadowRoot } from './ShadowRoot.js';
13
13
  import { useColorScheme, useShadowRootStyle, cssInteractive } from './styles.css.js';
14
14
  import { ErrorMessage, ViewNotFound } from './ViewNotFound.js';
15
15
 
@@ -22,7 +22,7 @@ function LikeC4View({
22
22
  if (!likec4model) {
23
23
  return /* @__PURE__ */ jsx(ErrorMessage, { children: "LikeC4Model not found. Make sure you have LikeC4ModelProvider." });
24
24
  }
25
- if (likec4model.type !== "layouted") {
25
+ if (likec4model.stage !== "layouted") {
26
26
  return /* @__PURE__ */ jsx(ErrorMessage, { children: "LikeC4Model is not layouted. Make sure you have LikeC4ModelProvider with layouted model." });
27
27
  }
28
28
  if (!view || !view.isDiagram()) {
@@ -30,7 +30,7 @@ function LikeC4View({
30
30
  }
31
31
  return /* @__PURE__ */ jsx(LikeC4ViewInner, { view: view.$view, ...props });
32
32
  }
33
- const LikeC4ViewInner = reactExports.memo(({
33
+ const LikeC4ViewInner = memo(({
34
34
  view,
35
35
  className,
36
36
  pannable = false,
@@ -56,14 +56,15 @@ const LikeC4ViewInner = reactExports.memo(({
56
56
  styleNonce,
57
57
  style,
58
58
  reactFlowProps = {},
59
+ renderNodes,
59
60
  ...props
60
61
  }) => {
61
- const likec4model = useLikeC4Model(true, "layouted");
62
+ const likec4model = useLikeC4Model("layouted");
62
63
  const colorScheme = useColorScheme(explicitColorScheme);
63
64
  const [shadowRootProps, cssstyle] = useShadowRootStyle(keepAspectRatio, view);
64
- const [browserViewId, onNavigateTo] = reactExports.useState(null);
65
+ const [browserViewId, onNavigateTo] = useState(null);
65
66
  const browserView = browserViewId ? likec4model.findView(browserViewId)?.$view : null;
66
- const notations = view.notation?.elements ?? [];
67
+ const notations = view.notation?.nodes ?? [];
67
68
  const hasNotations = notations.length > 0;
68
69
  let nonce;
69
70
  if (typeof styleNonce === "string") {
@@ -117,6 +118,7 @@ const LikeC4ViewInner = reactExports.memo(({
117
118
  enableRelationshipDetails,
118
119
  enableElementDetails,
119
120
  enableRelationshipBrowser,
121
+ enableElementTags: false,
120
122
  controls,
121
123
  nodesDraggable: false,
122
124
  reduceGraphics,
@@ -128,6 +130,7 @@ const LikeC4ViewInner = reactExports.memo(({
128
130
  onNodeClick: () => onNavigateTo(view.id)
129
131
  },
130
132
  reactFlowProps,
133
+ renderNodes,
131
134
  ...props
132
135
  }
133
136
  ),
@@ -144,13 +147,15 @@ const LikeC4ViewInner = reactExports.memo(({
144
147
  enableElementDetails: true,
145
148
  enableRelationshipDetails: true,
146
149
  enableSearch: true,
150
+ enableElementTags: true,
147
151
  controls: true,
148
152
  readonly: true,
149
153
  fitView: true,
150
154
  fitViewPadding: "16px",
155
+ renderNodes,
151
156
  ...props,
152
157
  ...browserProps,
153
- showNotations: (browserProps.showNotations ?? true) && (browserView.notation?.elements.length ?? 0) > 0
158
+ showNotations: (browserProps.showNotations ?? true) && (browserView.notation?.nodes.length ?? 0) > 0
154
159
  }
155
160
  ),
156
161
  /* @__PURE__ */ jsx(Box, { pos: "absolute", top: "1rem", right: "1rem", children: /* @__PURE__ */ jsx(
@@ -1,11 +1,12 @@
1
- import { WhereOperator } from '@likec4/core';
1
+ import { WhereOperator } from '@likec4/core/types';
2
2
  import { CSSProperties } from 'react';
3
- import { ElementIconRenderer, OverrideReactFlowProps, PaddingWithUnit } from '../LikeC4Diagram.props';
4
- export interface LikeC4ViewProps<ViewId = string, Tag = string, Kind = string> {
3
+ import { CustomNodes, ElementIconRenderer, OverrideReactFlowProps, PaddingWithUnit } from '../LikeC4Diagram.props';
4
+ import type * as aux from '@likec4/core/types/aux';
5
+ export interface LikeC4ViewProps<A extends aux.Any> {
5
6
  /**
6
7
  * View to display.
7
8
  */
8
- viewId: ViewId;
9
+ viewId: aux.ViewId<A>;
9
10
  /**
10
11
  * Enable/disable panning
11
12
  * @default false
@@ -92,6 +93,11 @@ export interface LikeC4ViewProps<ViewId = string, Tag = string, Kind = string> {
92
93
  * @default false
93
94
  */
94
95
  enableElementDetails?: boolean | undefined;
96
+ /**
97
+ * Display element tags in the bottom left corner
98
+ * @default false
99
+ */
100
+ enableElementTags?: boolean | undefined;
95
101
  /**
96
102
  * Experimental feature to browse relationships
97
103
  *
@@ -109,7 +115,7 @@ export interface LikeC4ViewProps<ViewId = string, Tag = string, Kind = string> {
109
115
  * @default 'auto' - will be set to true if view is pannable and has more than 3000 * 2000 pixels
110
116
  */
111
117
  reduceGraphics?: 'auto' | boolean | undefined;
112
- where?: WhereOperator<Tag, Kind> | undefined;
118
+ where?: WhereOperator<A> | undefined;
113
119
  /**
114
120
  * Override some react flow props
115
121
  */
@@ -122,6 +128,10 @@ export interface LikeC4ViewProps<ViewId = string, Tag = string, Kind = string> {
122
128
  mantineTheme?: any;
123
129
  /** Function to generate nonce attribute added to all generated `<style />` tags */
124
130
  styleNonce?: string | (() => string) | undefined;
131
+ /**
132
+ * Override node renderers
133
+ */
134
+ renderNodes?: CustomNodes | undefined;
125
135
  /**
126
136
  * Render custom icon for a node
127
137
  * By default, if icon is http:// or https://, it will be rendered as an image
@@ -187,6 +197,11 @@ export interface LikeC4BrowserProps {
187
197
  * @default enableRelationshipBrowser
188
198
  */
189
199
  enableRelationshipDetails?: boolean | undefined;
200
+ /**
201
+ * Display element tags in the bottom left corner
202
+ * @default true
203
+ */
204
+ enableElementTags?: boolean | undefined;
190
205
  /**
191
206
  * Display notations of the view
192
207
  * @default true
@@ -1,9 +1,8 @@
1
- import { WhereOperator } from '@likec4/core';
2
1
  import { CSSProperties } from 'react';
3
2
  import { LikeC4DiagramProps } from '../LikeC4Diagram';
4
- import { OnNavigateTo } from '../LikeC4Diagram.props';
5
- export type ReactLikeC4Props<ViewId = string, Tag = string, Kind = string> = Omit<LikeC4DiagramProps, 'view' | 'where' | 'onNavigateTo'> & {
6
- viewId: ViewId;
3
+ import type * as aux from '@likec4/core/types/aux';
4
+ export type ReactLikeC4Props<A extends aux.Any> = Omit<LikeC4DiagramProps<A>, 'view'> & {
5
+ viewId: aux.ViewId<A>;
7
6
  /**
8
7
  * Keep aspect ratio of the diagram
9
8
  * Disable if you need to manage the viewport (use className)
@@ -24,13 +23,11 @@ export type ReactLikeC4Props<ViewId = string, Tag = string, Kind = string> = Omi
24
23
  */
25
24
  injectFontCss?: boolean | undefined;
26
25
  style?: CSSProperties | undefined;
27
- where?: WhereOperator<Tag, Kind> | undefined;
28
- onNavigateTo?: OnNavigateTo<ViewId> | undefined;
29
26
  mantineTheme?: any;
30
27
  /** Function to generate nonce attribute added to all generated `<style />` tags */
31
28
  styleNonce?: string | (() => string) | undefined;
32
29
  };
33
- export declare function ReactLikeC4<ViewId extends string = string, Tag = string, Kind = string>({ viewId, ...props }: ReactLikeC4Props<ViewId, Tag, Kind>): import("react/jsx-runtime").JSX.Element;
30
+ export declare function ReactLikeC4<A extends aux.Any = aux.UnknownLayouted>({ viewId, ...props }: ReactLikeC4Props<A>): import("react/jsx-runtime").JSX.Element;
34
31
  export declare namespace ReactLikeC4 {
35
32
  var displayName: string;
36
33
  }
@@ -1,10 +1,9 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import '../_virtual/index.js';
3
- import { ShadowRoot } from './ShadowRoot.js';
4
2
  import { cx } from '@likec4/styles/css';
5
3
  import { isString, isFunction } from 'remeda';
6
4
  import { LikeC4Diagram } from '../LikeC4Diagram.js';
7
5
  import { useLikeC4Model } from '../likec4model/useLikeC4Model.js';
6
+ import { ShadowRoot } from './ShadowRoot.js';
8
7
  import { useColorScheme, useShadowRootStyle } from './styles.css.js';
9
8
  import { ErrorMessage, ViewNotFound } from './ViewNotFound.js';
10
9
 
@@ -41,7 +40,7 @@ function ReactLikeC4Inner({
41
40
  }) {
42
41
  const colorScheme = useColorScheme(explicitColorScheme);
43
42
  const [shadowRootProps, cssstyle] = useShadowRootStyle(keepAspectRatio, view);
44
- const notations = view.notation?.elements ?? [];
43
+ const notations = view.notation?.nodes ?? [];
45
44
  const hasNotations = notations.length > 0;
46
45
  let nonce;
47
46
  if (isString(styleNonce)) {
@@ -78,6 +77,7 @@ function ReactLikeC4Inner({
78
77
  showNotations: showNotations && hasNotations,
79
78
  onNavigateTo,
80
79
  background,
80
+ enableElementTags: false,
81
81
  ...props
82
82
  }
83
83
  )
@@ -85,6 +85,6 @@ function ReactLikeC4Inner({
85
85
  )
86
86
  ] });
87
87
  }
88
- ReactLikeC4.displayName = "GenericReactLikeC4";
88
+ ReactLikeC4.displayName = "ReactLikeC4";
89
89
 
90
90
  export { ReactLikeC4 };
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { cx, css } from '@likec4/styles/css';
3
3
  import { MantineProvider } from '@mantine/core';
4
- import { r as reactExports } from '../_virtual/index.js';
4
+ import { useRef, useCallback } from 'react';
5
5
  import root from 'react-shadow';
6
6
  import { isDefined } from 'remeda';
7
7
  import { useBundledStyleSheet, DefaultTheme } from './styles.css.js';
@@ -15,9 +15,9 @@ function ShadowRoot({
15
15
  colorScheme,
16
16
  ...props
17
17
  }) {
18
- const rootRef = reactExports.useRef(null);
18
+ const rootRef = useRef(null);
19
19
  const styleSheets = useBundledStyleSheet(injectFontCss, styleNonce);
20
- const getRootElement = reactExports.useCallback(() => rootRef.current ?? void 0, [rootRef]);
20
+ const getRootElement = useCallback(() => rootRef.current ?? void 0, [rootRef]);
21
21
  let getStyleNonce;
22
22
  if (isDefined(styleNonce)) {
23
23
  getStyleNonce = typeof styleNonce === "function" ? styleNonce : () => styleNonce;
@@ -0,0 +1 @@
1
+ export * from '../custom';
@@ -1,5 +1,7 @@
1
+ export type { ChangeEvent, CustomNodes, DiagramNodeWithNavigate, ElementIconRenderer, LikeC4ColorScheme, LikeC4DiagramEventHandlers, OnCanvasClick, OnChange, OnEdgeClick, OnNavigateTo, OnNodeClick, OpenSourceParams, PaddingUnit, PaddingWithUnit, WhereOperator, } from '../LikeC4Diagram.props';
1
2
  export { LikeC4View } from './LikeC4View';
2
- export type { LikeC4ViewProps } from './LikeC4View.props';
3
+ export type { LikeC4BrowserProps, LikeC4ViewProps } from './LikeC4View.props';
3
4
  export { ReactLikeC4, type ReactLikeC4Props } from './ReactLikeC4';
4
5
  export { LikeC4ModelProvider } from './LikeC4ModelProvider';
5
6
  export { ViewNotFound } from './ViewNotFound';
7
+ export * from '../custom/hooks';
@@ -2,3 +2,12 @@ export { LikeC4View } from './LikeC4View.js';
2
2
  export { ReactLikeC4 } from './ReactLikeC4.js';
3
3
  export { LikeC4ModelProvider } from './LikeC4ModelProvider.js';
4
4
  export { ViewNotFound } from './ViewNotFound.js';
5
+ export { useDiagramEventHandlers } from '../context/DiagramEventHandlers.js';
6
+ export { useEnabledFeatures } from '../context/DiagramFeatures.js';
7
+ export { useCurrentViewId } from '../hooks/useCurrentViewId.js';
8
+ export { useDiagram, useDiagramContext } from '../hooks/useDiagram.js';
9
+ export { useXYFlow, useXYInternalNode, useXYStore, useXYStoreApi } from '../hooks/useXYFlow.js';
10
+ export { useLikeC4Model, useLikeC4Specification } from '../likec4model/useLikeC4Model.js';
11
+ export { useMantinePortalProps } from '../hooks/useMantinePortalProps.js';
12
+ export { useSetState } from '../hooks/useSetState.js';
13
+ export { useUpdateEffect } from '../hooks/useUpdateEffect.js';
@@ -2,10 +2,10 @@ import { css } from '@likec4/styles/css';
2
2
  import { createTheme, Portal } from '@mantine/core';
3
3
  import { useColorScheme as useColorScheme$1, useMutationObserver, useDebouncedCallback, useId } from '@mantine/hooks';
4
4
  import { useIsomorphicLayoutEffect } from '@react-hookz/web';
5
- import { r as reactExports } from '../_virtual/index.js';
5
+ import { useState } from 'react';
6
6
  import { first, isString, isFunction } from 'remeda';
7
- import inlinedStyles from '../styles.css.js';
8
- import fontsCss from './font.css.js';
7
+ import fontsCss from '../styles-font.css2.js';
8
+ import inlinedStyles from '../styles.css2.js';
9
9
 
10
10
  const DefaultTheme = createTheme({
11
11
  autoContrast: true,
@@ -42,7 +42,7 @@ const cssInteractive = css({
42
42
  }
43
43
  });
44
44
  function useBundledStyleSheet(injectFontCss, styleNonce) {
45
- const [styleSheets, setStyleSheets] = reactExports.useState([]);
45
+ const [styleSheets, setStyleSheets] = useState([]);
46
46
  useIsomorphicLayoutEffect(() => {
47
47
  if (injectFontCss && !document.querySelector(`style[data-likec4-font]`)) {
48
48
  const style = document.createElement("style");
@@ -83,7 +83,7 @@ const getComputedColorScheme = () => {
83
83
  };
84
84
  function useColorScheme(explicit) {
85
85
  const preferred = useColorScheme$1();
86
- const [computed, setComputed] = reactExports.useState(getComputedColorScheme);
86
+ const [computed, setComputed] = useState(getComputedColorScheme);
87
87
  useMutationObserver(
88
88
  useDebouncedCallback(() => setComputed(getComputedColorScheme), 100),
89
89
  {
@@ -0,0 +1,2 @@
1
+ import { FallbackProps } from 'react-error-boundary';
2
+ export declare function ErrorFallback({ error, resetErrorBoundary }: FallbackProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,29 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { Box } from '@likec4/styles/jsx';
3
+ import { Notification, ScrollAreaAutosize, Code, Group, Button } from '@mantine/core';
4
+ import { IconX } from '@tabler/icons-react';
5
+
6
+ function ErrorFallback({ error, resetErrorBoundary }) {
7
+ const errorString = error instanceof Error ? error.message : "Unknown error";
8
+ return /* @__PURE__ */ jsx(Box, { pos: "fixed", top: 0, left: 0, w: "100%", p: 0, style: { zIndex: 1e3 }, children: /* @__PURE__ */ jsxs(
9
+ Notification,
10
+ {
11
+ icon: /* @__PURE__ */ jsx(IconX, { style: { width: 16, height: 16 } }),
12
+ styles: {
13
+ icon: {
14
+ alignSelf: "flex-start"
15
+ }
16
+ },
17
+ color: "red",
18
+ title: "Oops, something went wrong",
19
+ p: "xl",
20
+ withCloseButton: false,
21
+ children: [
22
+ /* @__PURE__ */ jsx(ScrollAreaAutosize, { maw: "100%", mah: 400, children: /* @__PURE__ */ jsx(Code, { block: true, children: errorString }) }),
23
+ /* @__PURE__ */ jsx(Group, { gap: "xs", mt: "xl", children: /* @__PURE__ */ jsx(Button, { color: "gray", size: "xs", variant: "light", onClick: () => resetErrorBoundary(), children: "Reset" }) })
24
+ ]
25
+ }
26
+ ) });
27
+ }
28
+
29
+ export { ErrorFallback };
@@ -1,13 +1,13 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { cx } from '@likec4/styles/css';
2
3
  import { UnstyledButton, Group, Text } from '@mantine/core';
3
4
  import { IconSearch } from '@tabler/icons-react';
4
5
  import { isMacOs } from '@xyflow/system';
5
- import clsx from 'clsx';
6
6
  import { placeholder, shortcut, root } from './SearchControl.css.js';
7
7
 
8
8
  function SearchControl({ className, ...others }) {
9
9
  const isMac = isMacOs();
10
- return /* @__PURE__ */ jsx(UnstyledButton, { ...others, className: clsx("group", root, className), children: /* @__PURE__ */ jsxs(Group, { gap: "xs", children: [
10
+ return /* @__PURE__ */ jsx(UnstyledButton, { ...others, className: cx("group", root, className), children: /* @__PURE__ */ jsxs(Group, { gap: "xs", children: [
11
11
  /* @__PURE__ */ jsx(IconSearch, { style: { width: "15px", height: "15px" }, stroke: 2 }),
12
12
  /* @__PURE__ */ jsx(Text, { component: "div", className: placeholder, children: "Search" }),
13
13
  /* @__PURE__ */ jsx(Text, { component: "div", className: shortcut, children: isMac ? "⌘ + K" : "Ctrl + K" })
@@ -1,5 +1,4 @@
1
1
  import { createOptionalContext } from '@mantine/core';
2
- import '../_virtual/index.js';
3
2
 
4
3
  const [
5
4
  ControlsCustomLayoutProvider,
@@ -1,14 +1,15 @@
1
+ import { Any } from '@likec4/core/types';
1
2
  import { PropsWithChildren, RefObject } from 'react';
2
3
  import { LikeC4DiagramEventHandlers } from '../LikeC4Diagram.props';
3
4
  type RequiredOrNull<T> = {
4
5
  [P in keyof T]-?: NonNullable<T[P]> | null;
5
6
  };
6
- type DiagramEventHandlersContextValue = RequiredOrNull<LikeC4DiagramEventHandlers> & {
7
- handlersRef: RefObject<LikeC4DiagramEventHandlers>;
7
+ type DiagramEventHandlersContextValue = RequiredOrNull<LikeC4DiagramEventHandlers<Any>> & {
8
+ handlersRef: RefObject<LikeC4DiagramEventHandlers<Any>>;
8
9
  };
9
- export declare function DiagramEventHandlers({ handlers, children, }: PropsWithChildren<{
10
- handlers: LikeC4DiagramEventHandlers;
10
+ export declare function DiagramEventHandlers<A extends Any>({ handlers, children, }: PropsWithChildren<{
11
+ handlers: LikeC4DiagramEventHandlers<A>;
11
12
  }>): import("react/jsx-runtime").JSX.Element;
12
13
  export declare function useDiagramEventHandlers(): DiagramEventHandlersContextValue;
13
- export declare function useDiagramEventHandlersRef(): RefObject<LikeC4DiagramEventHandlers>;
14
+ export declare function useDiagramEventHandlersRef(): RefObject<LikeC4DiagramEventHandlers<Any>>;
14
15
  export {};
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { useSyncedRef } from '@react-hookz/web';
3
- import { r as reactExports } from '../_virtual/index.js';
3
+ import { useContext, createContext, useMemo } from 'react';
4
4
  import { isFunction, mapToObj } from 'remeda';
5
5
 
6
6
  const HandlerNames = [
@@ -16,7 +16,7 @@ const HandlerNames = [
16
16
  "onChange",
17
17
  "onCanvasDblClick"
18
18
  ];
19
- const DiagramEventHandlersContext = reactExports.createContext({
19
+ const DiagramEventHandlersContext = createContext({
20
20
  ...mapToObj(HandlerNames, (name) => [name, null]),
21
21
  handlersRef: {
22
22
  current: {}
@@ -28,7 +28,7 @@ function DiagramEventHandlers({
28
28
  }) {
29
29
  const handlersRef = useSyncedRef(handlers);
30
30
  const deps = HandlerNames.map((name) => isFunction(handlers[name]));
31
- const value = reactExports.useMemo(() => ({
31
+ const value = useMemo(() => ({
32
32
  ...mapToObj(HandlerNames, (name) => {
33
33
  if (handlersRef.current[name]) {
34
34
  return [name, (...args) => handlersRef.current[name]?.(...args)];
@@ -40,10 +40,10 @@ function DiagramEventHandlers({
40
40
  return /* @__PURE__ */ jsx(DiagramEventHandlersContext.Provider, { value, children });
41
41
  }
42
42
  function useDiagramEventHandlers() {
43
- return reactExports.useContext(DiagramEventHandlersContext);
43
+ return useContext(DiagramEventHandlersContext);
44
44
  }
45
45
  function useDiagramEventHandlersRef() {
46
- return reactExports.useContext(DiagramEventHandlersContext).handlersRef;
46
+ return useContext(DiagramEventHandlersContext).handlersRef;
47
47
  }
48
48
 
49
49
  export { DiagramEventHandlers, useDiagramEventHandlers, useDiagramEventHandlersRef };
@@ -1,6 +1,6 @@
1
- import { ExclusiveUnion, NonEmptyArray } from '@likec4/core';
1
+ import { ExclusiveUnion } from '@likec4/core/types';
2
2
  import { PropsWithChildren } from 'react';
3
- declare const FeatureNames: readonly ["Controls", "ReadOnly", "FocusMode", "NavigateTo", "ElementDetails", "RelationshipDetails", "RelationshipBrowser", "Search", "NavigationButtons", "Notations", "DynamicViewWalkthrough", "EdgeEditing", "ViewTitle", "FitView", "LikeC4Model", "Vscode"];
3
+ declare const FeatureNames: readonly ["Controls", "ReadOnly", "FocusMode", "NavigateTo", "ElementDetails", "RelationshipDetails", "RelationshipBrowser", "Search", "NavigationButtons", "Notations", "DynamicViewWalkthrough", "EdgeEditing", "ViewTitle", "FitView", "Vscode", "ElementTags"];
4
4
  export type FeatureName = typeof FeatureNames[number];
5
5
  export type EnabledFeatures = {
6
6
  [P in `enable${FeatureName}`]: boolean;
@@ -17,9 +17,6 @@ export declare function DiagramFeatures({ children, features, overrides, }: Prop
17
17
  export declare namespace DiagramFeatures {
18
18
  var Overlays: ({ children }: PropsWithChildren) => import("react/jsx-runtime").JSX.Element;
19
19
  }
20
- export declare function useEnabledFeature<F extends NonEmptyArray<FeatureName>>(...names: F): {
21
- [P in `enable${F[number]}`]: boolean;
22
- };
23
20
  export declare function useEnabledFeatures(): EnabledFeatures;
24
21
  export declare function IfEnabled({ feature, children, and, }: PropsWithChildren<{
25
22
  feature: FeatureName;
@@ -28,4 +25,5 @@ export declare function IfEnabled({ feature, children, and, }: PropsWithChildren
28
25
  export declare function IfNotEnabled({ feature, children, }: PropsWithChildren<{
29
26
  feature: FeatureName;
30
27
  }>): import("react/jsx-runtime").JSX.Element | null;
28
+ export declare function IfNotReadOnly({ children, }: PropsWithChildren): import("react/jsx-runtime").JSX.Element | null;
31
29
  export {};