@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,12 +1,10 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import '@likec4/core';
3
2
  import { cx, css } from '@likec4/styles/css';
4
3
  import { Tooltip, ThemeIcon, ActionIcon, Paper, Tabs, TabsList, TabsTab, TabsPanel, ScrollAreaAutosize, Stack, Card, Group, Box, Badge, Text } from '@mantine/core';
5
4
  import { useLocalStorage } from '@mantine/hooks';
6
5
  import { IconAlertTriangle, IconHelpCircle, IconArrowDownRight } from '@tabler/icons-react';
7
- import clsx from 'clsx';
8
6
  import { AnimatePresence, m } from 'motion/react';
9
- import { r as reactExports } from '../../../_virtual/index.js';
7
+ import { memo, useState } from 'react';
10
8
  import { ceil, isNonNullish } from 'remeda';
11
9
  import { useDiagramContext, useDiagram } from '../../../hooks/useDiagram.js';
12
10
  import { useXYStore } from '../../../hooks/useXYFlow.js';
@@ -20,7 +18,7 @@ const ElementNotation = ({ value }) => {
20
18
  color = "primary",
21
19
  shape = "rectangle"
22
20
  } = value;
23
- const [onlyKind, setOnlyKind] = reactExports.useState(null);
21
+ const [onlyKind, setOnlyKind] = useState(null);
24
22
  const diagram = useDiagram();
25
23
  const w = 300;
26
24
  const h = 200;
@@ -115,11 +113,11 @@ const ElementNotation = ({ value }) => {
115
113
  };
116
114
  const selector = (s) => ({
117
115
  id: s.view.id,
118
- notations: s.view.notation?.elements ?? [],
116
+ notations: s.view.notation?.nodes ?? [],
119
117
  isVisible: true
120
118
  // isVisible: isNullish(s.focusedNodeId ?? s.activeWalkthrough),
121
119
  });
122
- const NotationPanel = reactExports.memo(() => {
120
+ const NotationPanel = memo(() => {
123
121
  const height = useXYStore((s) => s.height);
124
122
  const {
125
123
  id,
@@ -142,7 +140,7 @@ const NotationPanel = reactExports.memo(() => {
142
140
  translateX: "100%",
143
141
  opacity: 0.6
144
142
  },
145
- className: clsx("react-flow__panel", container),
143
+ className: cx("react-flow__panel", container),
146
144
  children: /* @__PURE__ */ jsx(Tooltip, { label: "View has no notations", color: "orange", ...portalProps, children: /* @__PURE__ */ jsx(
147
145
  ThemeIcon,
148
146
  {
@@ -165,7 +163,7 @@ const NotationPanel = reactExports.memo(() => {
165
163
  translateX: "100%",
166
164
  opacity: 0.6
167
165
  },
168
- className: clsx("react-flow__panel", container),
166
+ className: cx("react-flow__panel", container),
169
167
  children: /* @__PURE__ */ jsx(Tooltip, { label: "Show notation", color: "dark", fz: "xs", ...portalProps, children: /* @__PURE__ */ jsx(
170
168
  ActionIcon,
171
169
  {
@@ -193,7 +191,7 @@ const NotationPanel = reactExports.memo(() => {
193
191
  opacity: 0,
194
192
  scale: 0.25
195
193
  },
196
- className: clsx("react-flow__panel", container),
194
+ className: cx("react-flow__panel", container),
197
195
  style: {
198
196
  transformOrigin: "bottom right"
199
197
  },
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { cx } from '@likec4/styles/css';
2
3
  import { Box, Button, Badge, ButtonGroup } from '@mantine/core';
3
4
  import { IconPlayerPlayFilled, IconPlayerSkipBackFilled, IconPlayerStopFilled, IconPlayerSkipForwardFilled } from '@tabler/icons-react';
4
- import clsx from 'clsx';
5
5
  import { AnimatePresence, m } from 'motion/react';
6
6
  import { isTruthy, isNonNull } from 'remeda';
7
7
  import { useDiagramContext, useDiagram } from '../../../hooks/useDiagram.js';
@@ -36,14 +36,14 @@ function DynamicViewWalkthrough() {
36
36
  initial: { opacity: 0 },
37
37
  animate: { opacity: 1 },
38
38
  exit: { opacity: 0 },
39
- className: clsx("react-flow__panel", parallelStateFrame)
39
+ className: cx("react-flow__panel", parallelStateFrame)
40
40
  },
41
41
  "parallel-frame"
42
42
  ),
43
43
  /* @__PURE__ */ jsxs(
44
44
  Box,
45
45
  {
46
- className: clsx("react-flow__panel", container),
46
+ className: cx("react-flow__panel", container),
47
47
  onClick: (e) => e.stopPropagation(),
48
48
  onDoubleClick: (e) => e.stopPropagation(),
49
49
  children: [
@@ -51,7 +51,7 @@ function DynamicViewWalkthrough() {
51
51
  Button,
52
52
  {
53
53
  ...buttonProps,
54
- className: clsx(buttons, btn),
54
+ className: cx(buttons, btn),
55
55
  rightSection: /* @__PURE__ */ jsx(IconPlayerPlayFilled, {}),
56
56
  onClick: () => diagram.startWalkthrough(),
57
57
  px: "xl",
@@ -1,7 +1,6 @@
1
1
  import { nonNullable } from '@likec4/core';
2
- import '@xyflow/react';
3
2
  import { getNodeDimensions } from '@xyflow/system';
4
- import { r as reactExports } from '../_virtual/index.js';
3
+ import { useRef, useMemo } from 'react';
5
4
  import { pipe, filter, hasAtLeast, map } from 'remeda';
6
5
  import { useDiagram } from '../hooks/useDiagram.js';
7
6
  import { useXYStoreApi } from '../hooks/useXYFlow.js';
@@ -186,8 +185,8 @@ function createLayoutConstraints(xyflowApi, editingNodeIds) {
186
185
  function useLayoutConstraints() {
187
186
  const xystore = useXYStoreApi();
188
187
  const diagram = useDiagram();
189
- const solverRef = reactExports.useRef(void 0);
190
- return reactExports.useMemo(() => {
188
+ const solverRef = useRef(void 0);
189
+ return useMemo(() => {
191
190
  let wasPending = false;
192
191
  const initial = { x: 0, y: 0 };
193
192
  let moved = false;
@@ -1,10 +1,12 @@
1
1
  import { DiagramView, WhereOperator } from '@likec4/core';
2
2
  import { Types } from './types';
3
- export declare function useViewToNodesEdges({ view: { id, nodes, edges, __, }, ...opts }: {
3
+ type ViewToNodesEdgeInput = {
4
4
  view: DiagramView;
5
- where: WhereOperator<string, string> | undefined;
5
+ where: WhereOperator | null;
6
6
  nodesSelectable: boolean;
7
- }): {
7
+ };
8
+ export declare function useViewToNodesEdges(params: ViewToNodesEdgeInput): {
8
9
  xynodes: Types.Node[];
9
10
  xyedges: Types.Edge[];
10
11
  };
12
+ export {};
@@ -1,5 +1,6 @@
1
- import { Queue, whereOperatorAsPredicate, nonNullable, ElementKind, DiagramNode, invariant } from '@likec4/core';
2
- import { useDeepCompareMemo } from '@react-hookz/web';
1
+ import { Queue, whereOperatorAsPredicate, nonNullable, GroupElementKind, invariant } from '@likec4/core';
2
+ import { useCustomCompareMemo } from '@react-hookz/web';
3
+ import { shallowEqual, deepEqual } from 'fast-equals';
3
4
  import { pick, hasAtLeast } from 'remeda';
4
5
  import { ZIndexes } from '../base/const.js';
5
6
 
@@ -8,7 +9,7 @@ function viewToNodesEdge(opts) {
8
9
  view,
9
10
  nodesSelectable: selectable
10
11
  } = opts;
11
- view.__ === "dynamic"; const xynodes = [], xyedges = [], nodeLookup = /* @__PURE__ */ new Map();
12
+ view._type === "dynamic"; const xynodes = [], xyedges = [], nodeLookup = /* @__PURE__ */ new Map();
12
13
  const queue = Queue.from(view.nodes.reduce(
13
14
  (acc, node) => {
14
15
  nodeLookup.set(node.id, node);
@@ -37,7 +38,7 @@ function viewToNodesEdge(opts) {
37
38
  let next;
38
39
  while (next = queue.dequeue()) {
39
40
  const { node, parent } = next;
40
- const isCompound = hasAtLeast(node.children, 1) || node.kind == ElementKind.Group;
41
+ const isCompound = hasAtLeast(node.children, 1) || node.kind == GroupElementKind;
41
42
  if (isCompound) {
42
43
  for (const child of node.children) {
43
44
  queue.enqueue({ node: nodeById(child), parent: node });
@@ -54,8 +55,8 @@ function viewToNodesEdge(opts) {
54
55
  const id = ns + node.id;
55
56
  const base = {
56
57
  id,
57
- selectable: selectable && node.kind !== ElementKind.Group,
58
- focusable: selectable && node.kind !== ElementKind.Group,
58
+ selectable: selectable && node.kind !== GroupElementKind,
59
+ focusable: selectable && node.kind !== GroupElementKind,
59
60
  deletable: false,
60
61
  position,
61
62
  zIndex: isCompound ? ZIndexes.Compound : ZIndexes.Element,
@@ -65,12 +66,13 @@ function viewToNodesEdge(opts) {
65
66
  },
66
67
  initialWidth: node.width,
67
68
  initialHeight: node.height,
68
- hidden: node.kind !== ElementKind.Group && !visiblePredicate(node),
69
+ hidden: node.kind !== GroupElementKind && !visiblePredicate(node),
69
70
  ...parent && {
70
71
  parentId: ns + parent.id
71
72
  }
72
73
  };
73
74
  const compoundData = {
75
+ viewId: view.id,
74
76
  id: node.id,
75
77
  title: node.title,
76
78
  color: node.color,
@@ -78,9 +80,11 @@ function viewToNodesEdge(opts) {
78
80
  style: node.style,
79
81
  depth: node.depth ?? 0,
80
82
  icon: node.icon ?? "none",
83
+ tags: node.tags ?? null,
81
84
  position: node.position
82
85
  };
83
86
  const leafNodeData = {
87
+ viewId: view.id,
84
88
  id: node.id,
85
89
  title: node.title,
86
90
  technology: node.technology,
@@ -92,10 +96,11 @@ function viewToNodesEdge(opts) {
92
96
  shape: node.shape,
93
97
  style: node.style,
94
98
  icon: node.icon ?? null,
99
+ tags: node.tags,
95
100
  position: node.position,
96
101
  isMultiple: node.style?.multiple ?? false
97
102
  };
98
- if (node.kind === ElementKind.Group) {
103
+ if (node.kind === GroupElementKind) {
99
104
  xynodes.push({
100
105
  ...base,
101
106
  type: "view-group",
@@ -107,8 +112,8 @@ function viewToNodesEdge(opts) {
107
112
  });
108
113
  continue;
109
114
  }
110
- const modelFqn = DiagramNode.modelRef(node);
111
- const deploymentFqn = DiagramNode.deploymentRef(node);
115
+ const modelFqn = node.modelRef ?? null;
116
+ const deploymentFqn = node.deploymentRef ?? null;
112
117
  if (!modelFqn && !deploymentFqn) {
113
118
  console.error("Invalid node", node);
114
119
  throw new Error("Element should have either modelRef or deploymentRef");
@@ -219,26 +224,13 @@ function viewToNodesEdge(opts) {
219
224
  xyedges
220
225
  };
221
226
  }
222
- function useViewToNodesEdges({
223
- view: {
224
- id,
225
- nodes,
226
- edges,
227
- __ = "element"
228
- },
229
- ...opts
230
- }) {
231
- return useDeepCompareMemo(() => {
232
- return viewToNodesEdge({
233
- view: {
234
- id,
235
- nodes,
236
- edges,
237
- __
238
- },
239
- ...opts
240
- });
241
- }, [id, __, nodes, edges, opts]);
227
+ const viewToNodesEdgeEqual = (a, b) => a.view.id === b.view.id && a.view._type === b.view._type && a.nodesSelectable === b.nodesSelectable && shallowEqual(a.view.nodes, b.view.nodes) && shallowEqual(a.view.edges, b.view.edges) && deepEqual(a.where, b.where);
228
+ function useViewToNodesEdges(params) {
229
+ return useCustomCompareMemo(
230
+ () => viewToNodesEdge(params),
231
+ [params],
232
+ ([a], [b]) => !!a && !!b && viewToNodesEdgeEqual(a, b)
233
+ );
242
234
  }
243
235
 
244
236
  export { useViewToNodesEdges };
@@ -1,3 +1,3 @@
1
- import { LikeC4Model } from '@likec4/core';
1
+ import { LikeC4Model } from '@likec4/core/model';
2
2
  import { Context } from 'react';
3
- export declare const LikeC4ModelContext: Context<LikeC4Model<LikeC4Model.Any> | null>;
3
+ export declare const LikeC4ModelContext: Context<LikeC4Model<any> | null>;
@@ -1,5 +1,5 @@
1
- import { r as reactExports } from '../_virtual/index.js';
1
+ import { createContext } from 'react';
2
2
 
3
- const LikeC4ModelContext = reactExports.createContext(null);
3
+ const LikeC4ModelContext = createContext(null);
4
4
 
5
5
  export { LikeC4ModelContext };
@@ -1,4 +1,4 @@
1
- import { Fqn, ViewId } from '@likec4/core';
1
+ import { Fqn, ViewId } from '@likec4/core/types';
2
2
  interface LikeC4ModelTreeNodeData {
3
3
  label: string;
4
4
  value: Fqn;
@@ -1,5 +1,5 @@
1
- import { compareNatural } from '@likec4/core';
2
- import { r as reactExports } from '../_virtual/index.js';
1
+ import { compareNatural } from '@likec4/core/utils';
2
+ import { useMemo } from 'react';
3
3
  import { useLikeC4Model } from './useLikeC4Model.js';
4
4
 
5
5
  const sortByLabel = (a, b) => compareNatural(a.label, b.label);
@@ -11,8 +11,8 @@ function buildNode(element) {
11
11
  };
12
12
  }
13
13
  function useLikeC4ElementsTree(viewId) {
14
- const model = useLikeC4Model(true);
15
- return reactExports.useMemo(() => {
14
+ const model = useLikeC4Model();
15
+ return useMemo(() => {
16
16
  if (viewId) {
17
17
  const view = model.view(viewId);
18
18
  return [...view.roots()].map(buildNode).sort(sortByLabel);
@@ -1,10 +1,22 @@
1
- import { LikeC4Model } from '@likec4/core';
2
- export declare function useLikeC4Model(): LikeC4Model | null;
3
- export declare function useLikeC4Model(strict: true): LikeC4Model;
4
- export declare function useLikeC4Model(strict: boolean): LikeC4Model | null;
5
- export declare function useLikeC4Model(strict: true, type: 'layouted'): LikeC4Model.Layouted;
6
- export declare function useLikeC4Model(strict: true, type: 'computed'): LikeC4Model.Computed;
7
- export declare function useLikeC4Model(strict: true, type: 'layouted' | 'computed' | undefined): LikeC4Model;
8
- export declare function useLikeC4Model(strict: boolean, type: 'layouted'): LikeC4Model.Layouted | null;
9
- export declare function useLikeC4Model(strict: boolean, type: 'computed'): LikeC4Model.Computed | null;
10
- export declare function useLikeC4Model(strict: boolean, type: 'layouted' | 'computed' | undefined): LikeC4Model | null;
1
+ import { aux, LikeC4Model } from '@likec4/core/model';
2
+ import { TagSpecification, ElementSpecification, RelationshipSpecification, CustomColorDefinitions } from '@likec4/core';
3
+ export declare function useLikeC4Model<A extends aux.Any = aux.Unknown>(): LikeC4Model<A>;
4
+ export declare function useLikeC4Model<A extends aux.Any = aux.Unknown>(type: 'layouted'): LikeC4Model.Layouted<A>;
5
+ export declare function useLikeC4Model<A extends aux.Any = aux.Unknown>(type: 'computed'): LikeC4Model.Computed<A>;
6
+ export declare function useLikeC4Model<A extends aux.Any = aux.Unknown>(type: 'layouted' | 'computed' | undefined): LikeC4Model<A>;
7
+ export declare function useLikeC4Specification(): {
8
+ tags: {
9
+ [x: string]: TagSpecification;
10
+ };
11
+ elements: {
12
+ [x: string]: Partial< ElementSpecification>;
13
+ };
14
+ deployments: {
15
+ [x: string]: Partial< ElementSpecification>;
16
+ };
17
+ relationships: {
18
+ [x: string]: Partial< RelationshipSpecification>;
19
+ };
20
+ metadataKeys?: string[];
21
+ customColors?: CustomColorDefinitions;
22
+ };
@@ -1,16 +1,20 @@
1
- import { r as reactExports } from '../_virtual/index.js';
2
- import { isString, isNonNullish, isDefined } from 'remeda';
1
+ import { useContext } from 'react';
2
+ import { isString } from 'remeda';
3
3
  import { LikeC4ModelContext } from './LikeC4ModelContext.js';
4
4
 
5
- function useLikeC4Model(strict, type) {
6
- const model = reactExports.useContext(LikeC4ModelContext);
7
- if (isString(type) && isNonNullish(model) && model.type !== type) {
8
- throw new Error(`Invalid LikeC4ModelContext, expected "${type}" but got "${model.type}" in context`);
9
- }
10
- if (isDefined(strict) && strict === true && !model) {
5
+ function useLikeC4Model(type) {
6
+ const model = useContext(LikeC4ModelContext);
7
+ if (!model) {
11
8
  throw new Error("No LikeC4Model found in context");
12
9
  }
10
+ if (isString(type) && model.stage !== type) {
11
+ throw new Error(`Invalid LikeC4ModelContext, expected "${type}" but got "${model.stage}" in context`);
12
+ }
13
13
  return model;
14
14
  }
15
+ function useLikeC4Specification() {
16
+ const model = useLikeC4Model();
17
+ return model.$data.specification;
18
+ }
15
19
 
16
- export { useLikeC4Model };
20
+ export { useLikeC4Model, useLikeC4Specification };
@@ -1,5 +1,4 @@
1
1
  import { OverlaysActorRef } from './overlaysActor';
2
- import { MemoExoticComponent } from 'react';
3
- export declare const Overlays: MemoExoticComponent<({ overlaysActorRef }: {
2
+ export declare function Overlays({ overlaysActorRef }: {
4
3
  overlaysActorRef: OverlaysActorRef;
5
- }) => import("react/jsx-runtime").JSX.Element>;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -1,13 +1,12 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
1
+ import { jsx } from 'react/jsx-runtime';
2
2
  import { nonexhaustive } from '@likec4/core';
3
- import { Box, Notification, ScrollAreaAutosize, Code, Group, Button } from '@mantine/core';
4
- import { IconX } from '@tabler/icons-react';
5
3
  import { useSelector } from '@xstate/react';
6
4
  import { animate } from 'motion';
7
5
  import { useReducedMotionConfig, LayoutGroup, AnimatePresence } from 'motion/react';
8
- import { r as reactExports } from '../_virtual/index.js';
6
+ import { useMemo, useEffect } from 'react';
9
7
  import { ErrorBoundary } from 'react-error-boundary';
10
8
  import { isNonNullish } from 'remeda';
9
+ import { ErrorFallback } from '../components/ErrorFallback.js';
11
10
  import { ElementDetails } from './element-details/ElementDetails.js';
12
11
  import { Overlay } from './overlay/Overlay.js';
13
12
  import { RelationshipDetails } from './relationship-details/RelationshipDetails.js';
@@ -15,28 +14,6 @@ import { RelationshipsBrowser } from './relationships-browser/RelationshipsBrows
15
14
  import { useXYStore } from '../hooks/useXYFlow.js';
16
15
  import { DiagramFeatures } from '../context/DiagramFeatures.js';
17
16
 
18
- function Fallback({ error, resetErrorBoundary }) {
19
- const errorString = error instanceof Error ? error.message : "Unknown error";
20
- return /* @__PURE__ */ jsx(Box, { pos: "fixed", top: 0, left: 0, w: "100%", p: 0, style: { zIndex: 1e3 }, children: /* @__PURE__ */ jsxs(
21
- Notification,
22
- {
23
- icon: /* @__PURE__ */ jsx(IconX, { style: { width: 16, height: 16 } }),
24
- styles: {
25
- icon: {
26
- alignSelf: "flex-start"
27
- }
28
- },
29
- color: "red",
30
- title: "Oops, something went wrong",
31
- p: "xl",
32
- withCloseButton: false,
33
- children: [
34
- /* @__PURE__ */ jsx(ScrollAreaAutosize, { maw: "100%", mah: 400, children: /* @__PURE__ */ jsx(Code, { block: true, children: errorString }) }),
35
- /* @__PURE__ */ jsx(Group, { gap: "xs", mt: "xl", children: /* @__PURE__ */ jsx(Button, { color: "gray", size: "xs", variant: "light", onClick: () => resetErrorBoundary(), children: "Reset" }) })
36
- ]
37
- }
38
- ) });
39
- }
40
17
  const selectOverlays = (s) => {
41
18
  return s.context.overlays.map((overlay) => {
42
19
  switch (overlay.type) {
@@ -65,15 +42,15 @@ const compareSelectOverlays = (a, b) => {
65
42
  return overlay.actorRef === b[i].actorRef;
66
43
  });
67
44
  };
68
- const Overlays = reactExports.memo(({ overlaysActorRef }) => {
45
+ function Overlays({ overlaysActorRef }) {
69
46
  const xyflowDomNode = useXYStore((s) => s.domNode);
70
- const xyflowRendererDom = reactExports.useMemo(() => xyflowDomNode?.querySelector(".react-flow__renderer") ?? null, [
47
+ const xyflowRendererDom = useMemo(() => xyflowDomNode?.querySelector(".react-flow__renderer") ?? null, [
71
48
  xyflowDomNode
72
49
  ]);
73
50
  const overlays = useSelector(overlaysActorRef, selectOverlays, compareSelectOverlays);
74
51
  const isMotionReduced = useReducedMotionConfig() ?? false;
75
- const isActiveOverlay = overlays.length > 0;
76
- reactExports.useEffect(() => {
52
+ const isActiveOverlay = overlays.some((overlay) => overlay.type === "elementDetails");
53
+ useEffect(() => {
77
54
  if (!xyflowRendererDom || isMotionReduced) return;
78
55
  animate(xyflowRendererDom, {
79
56
  opacity: isActiveOverlay ? 0.7 : 1,
@@ -121,8 +98,7 @@ const Overlays = reactExports.memo(({ overlaysActorRef }) => {
121
98
  nonexhaustive(overlay);
122
99
  }
123
100
  });
124
- return /* @__PURE__ */ jsx(DiagramFeatures.Overlays, { children: /* @__PURE__ */ jsx(ErrorBoundary, { FallbackComponent: Fallback, onReset: () => overlaysActorRef.send({ type: "close.all" }), children: /* @__PURE__ */ jsx(LayoutGroup, { children: /* @__PURE__ */ jsx(AnimatePresence, { children: overlaysReact }) }) }) });
125
- });
126
- Overlays.displayName = "Overlays";
101
+ return /* @__PURE__ */ jsx(DiagramFeatures.Overlays, { children: /* @__PURE__ */ jsx(ErrorBoundary, { FallbackComponent: ErrorFallback, onReset: () => overlaysActorRef.send({ type: "close.all" }), children: /* @__PURE__ */ jsx(LayoutGroup, { children: /* @__PURE__ */ jsx(AnimatePresence, { children: overlaysReact }) }) }) });
102
+ }
127
103
 
128
104
  export { Overlays };
@@ -26,16 +26,20 @@ const card = css({
26
26
  pointerEvents: "all",
27
27
  gap: "lg",
28
28
  justifyContent: "stretch",
29
- backgroundColor: "mantine.colors.body",
30
- backgroundImage: `linear-gradient(180deg, {colors.likec4.palette.fill}, {colors.likec4.palette.fill} 4px, transparent 4px)`,
31
- borderTopColor: "likec4.palette.fill",
32
- _dark: {
33
- backgroundColor: `mantine.colors.dark[6]`,
34
- backgroundImage: `
35
- linear-gradient(180deg, color-mix(in srgb, {colors.likec4.palette.fill} 15%, transparent), transparent 80px),
36
- linear-gradient(180deg, {colors.likec4.palette.fill}, {colors.likec4.palette.fill} 4px, transparent 4px)
37
- `
29
+ backgroundColor: {
30
+ base: "mantine.colors.body",
31
+ _dark: "mantine.colors.dark[6]"
38
32
  },
33
+ border: `none`,
34
+ backgroundImage: `
35
+ linear-gradient(180deg,
36
+ color-mix(in srgb, {colors.likec4.palette.fill} 60%, transparent),
37
+ color-mix(in srgb, {colors.likec4.palette.fill} 20%, transparent) 8px,
38
+ color-mix(in srgb, {colors.likec4.palette.fill} 14%, transparent) 20px,
39
+ transparent 80px
40
+ ),
41
+ linear-gradient(180deg, {colors.likec4.palette.fill}, {colors.likec4.palette.fill} 4px, transparent 4px)
42
+ `,
39
43
  "& .react-flow__attribution": {
40
44
  display: "none"
41
45
  }
@@ -1,4 +1,4 @@
1
- import { Fqn, NodeId, ViewId } from '@likec4/core';
1
+ import { Fqn, NodeId, ViewId } from '@likec4/core/types';
2
2
  import { Rect } from '@xyflow/system';
3
3
  type ElementDetailsCardProps = {
4
4
  viewId: ViewId;