@likec4/diagram 1.60.0 → 1.61.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 (486) hide show
  1. package/README.md +63 -11
  2. package/dist/LikeC4Diagram.d.mts +4 -6
  3. package/dist/LikeC4Diagram.mjs +13 -12
  4. package/dist/LikeC4Diagram.props.d.mts +5 -7
  5. package/dist/LikeC4MantineProvider.d.mts +1 -2
  6. package/dist/LikeC4MantineProvider.mjs +26 -11
  7. package/dist/LikeC4ModelProvider.d.mts +1 -3
  8. package/dist/LikeC4ModelProvider.mjs +1 -2
  9. package/dist/LikeC4ProjectsOverview.d.mts +1 -3
  10. package/dist/LikeC4ProjectsOverview.mjs +1 -2
  11. package/dist/LikeC4ProjectsProvider.d.mts +1 -2
  12. package/dist/LikeC4ProjectsProvider.mjs +2 -3
  13. package/dist/LikeC4Styles.d.mts +1 -2
  14. package/dist/LikeC4Styles.mjs +11 -6
  15. package/dist/LikeC4View.d.mts +3 -5
  16. package/dist/LikeC4View.mjs +12 -11
  17. package/dist/ReactLikeC4.d.mts +3 -5
  18. package/dist/ReactLikeC4.mjs +8 -7
  19. package/dist/StaticLikeC4Diagram.d.mts +1 -3
  20. package/dist/StaticLikeC4Diagram.mjs +1 -2
  21. package/dist/_virtual/_rolldown/runtime.mjs +1 -2
  22. package/dist/base/Background.mjs +1 -2
  23. package/dist/base/Base.d.mts +1 -2
  24. package/dist/base/Base.mjs +1 -2
  25. package/dist/base/BaseXYFlow.mjs +12 -10
  26. package/dist/base/const.d.mts +1 -3
  27. package/dist/base/const.mjs +1 -2
  28. package/dist/base/keyboardZoom.mjs +1 -2
  29. package/dist/base/types.d.mts +2 -4
  30. package/dist/base/updateEdges.mjs +1 -2
  31. package/dist/base/updateNodes.mjs +1 -2
  32. package/dist/base-primitives/Markdown.d.mts +5 -5
  33. package/dist/base-primitives/Markdown.mjs +22 -11
  34. package/dist/base-primitives/NodeHandles.d.mts +1 -3
  35. package/dist/base-primitives/NodeHandles.mjs +1 -2
  36. package/dist/base-primitives/compound/CompoundActionButton.d.mts +1 -2
  37. package/dist/base-primitives/compound/CompoundActionButton.mjs +3 -4
  38. package/dist/base-primitives/compound/CompoundDetailsButton.d.mts +1 -2
  39. package/dist/base-primitives/compound/CompoundDetailsButton.mjs +3 -4
  40. package/dist/base-primitives/compound/CompoundNodeContainer.d.mts +1 -2
  41. package/dist/base-primitives/compound/CompoundNodeContainer.mjs +1 -2
  42. package/dist/base-primitives/compound/CompoundTitle.d.mts +1 -2
  43. package/dist/base-primitives/compound/CompoundTitle.mjs +1 -2
  44. package/dist/base-primitives/compound/actionbtns.css.mjs +1 -2
  45. package/dist/base-primitives/edge/EdgeActionButton.mjs +2 -3
  46. package/dist/base-primitives/edge/EdgeContainer.mjs +2 -3
  47. package/dist/base-primitives/edge/EdgeLabel.mjs +3 -3
  48. package/dist/base-primitives/edge/EdgeLabelContainer.mjs +2 -3
  49. package/dist/base-primitives/edge/EdgeMarkers.mjs +1 -2
  50. package/dist/base-primitives/edge/EdgePath.mjs +1 -2
  51. package/dist/base-primitives/element/ElementActionButtons.d.mts +1 -2
  52. package/dist/base-primitives/element/ElementActionButtons.mjs +2 -3
  53. package/dist/base-primitives/element/ElementData.d.mts +1 -2
  54. package/dist/base-primitives/element/ElementData.mjs +1 -2
  55. package/dist/base-primitives/element/ElementDetailsButton.d.mts +1 -2
  56. package/dist/base-primitives/element/ElementDetailsButton.mjs +2 -3
  57. package/dist/base-primitives/element/ElementNodeContainer.d.mts +1 -2
  58. package/dist/base-primitives/element/ElementNodeContainer.mjs +2 -3
  59. package/dist/base-primitives/element/ElementShape.d.mts +11 -6
  60. package/dist/base-primitives/element/ElementShape.mjs +10 -5
  61. package/dist/base-primitives/element/ElementTags.d.mts +6 -3
  62. package/dist/base-primitives/element/ElementTags.mjs +2 -4
  63. package/dist/base-primitives/index.d.mts +5 -5
  64. package/dist/base-primitives/memoEdge.d.mts +2 -6
  65. package/dist/base-primitives/memoEdge.mjs +1 -2
  66. package/dist/base-primitives/memoNode.d.mts +2 -6
  67. package/dist/components/EmptyBox.mjs +1 -2
  68. package/dist/components/ErrorFallback.d.mts +4 -3
  69. package/dist/components/ErrorFallback.mjs +61 -56
  70. package/dist/components/FloatingWindow.mjs +3 -4
  71. package/dist/components/GithubIcon.mjs +1 -2
  72. package/dist/components/Link.mjs +3 -4
  73. package/dist/components/Logo.d.mts +3 -5
  74. package/dist/components/Logo.mjs +28 -35
  75. package/dist/components/NavigationLink.mjs +1 -2
  76. package/dist/components/NavigationPanel.mjs +11 -11
  77. package/dist/components/PortalToContainer.d.mts +1 -3
  78. package/dist/components/PortalToContainer.mjs +1 -2
  79. package/dist/components/RootContainer.mjs +1 -2
  80. package/dist/components/SearchControl.css.mjs +1 -2
  81. package/dist/components/SearchControl.d.mts +1 -2
  82. package/dist/components/SearchControl.mjs +2 -3
  83. package/dist/components/ViewIcon.mjs +5 -6
  84. package/dist/components/ViewNotFound.mjs +1 -2
  85. package/dist/components/markdown/MarkdownWithRefs.mjs +268 -0
  86. package/dist/components/markdown/markdown-refs.mjs +145 -0
  87. package/dist/components/markdown/useMarkdownRefsInteractivity.mjs +126 -0
  88. package/dist/context/ComparingLayoutsContext.mjs +24 -0
  89. package/dist/context/CurrentViewModelProvider.mjs +1 -2
  90. package/dist/context/DiagramEventHandlers.mjs +3 -4
  91. package/dist/context/DiagramFeatures.d.mts +2 -3
  92. package/dist/context/DiagramFeatures.mjs +15 -9
  93. package/dist/context/EnsureMantine.mjs +1 -2
  94. package/dist/context/FramerMotionConfig.d.mts +1 -3
  95. package/dist/context/FramerMotionConfig.mjs +1 -2
  96. package/dist/context/IconRenderer.d.mts +1 -3
  97. package/dist/context/IconRenderer.mjs +14 -14
  98. package/dist/context/LikeC4ModelContext.d.mts +1 -2
  99. package/dist/context/LikeC4ModelContext.mjs +1 -2
  100. package/dist/context/LikeC4ProjectsContext.d.mts +1 -3
  101. package/dist/context/LikeC4ProjectsContext.mjs +1 -2
  102. package/dist/context/RootContainerContext.mjs +1 -2
  103. package/dist/context/TagStylesContext.d.mts +1 -2
  104. package/dist/context/TagStylesContext.mjs +7 -19
  105. package/dist/custom/builtins.d.mts +4 -1
  106. package/dist/custom/customNodes.d.mts +164 -7
  107. package/dist/custom/customNodes.mjs +387 -8
  108. package/dist/custom/index.d.mts +18 -30
  109. package/dist/custom/index.mjs +11 -19
  110. package/dist/custom/primitives.d.mts +3 -5
  111. package/dist/customization/CustomizationContext.d.mts +50 -0
  112. package/dist/customization/CustomizationContext.mjs +64 -0
  113. package/dist/customization/customizable.d.mts +32 -0
  114. package/dist/customization/customizable.mjs +75 -0
  115. package/dist/customization/customization-types.d.mts +40 -0
  116. package/dist/customization/customization-types.mjs +8 -0
  117. package/dist/customization/stableComponents.mjs +35 -0
  118. package/dist/editor/LikeC4EditorCallbacks.d.mts +1 -3
  119. package/dist/editor/LikeC4EditorCallbacks.mjs +1 -2
  120. package/dist/editor/LikeC4EditorProvider.d.mts +1 -3
  121. package/dist/editor/LikeC4EditorProvider.mjs +1 -2
  122. package/dist/editor/actor/actions.mjs +2 -3
  123. package/dist/editor/actor/hotkey.d.mts +1 -3
  124. package/dist/editor/actor/hotkey.mjs +1 -2
  125. package/dist/editor/actor/machine.d.mts +2 -4
  126. package/dist/editor/actor/machine.mjs +1 -2
  127. package/dist/editor/actor/setup.d.mts +1 -2
  128. package/dist/editor/actor/setup.mjs +1 -2
  129. package/dist/editor/actor/state.editor.mjs +2 -3
  130. package/dist/editor/actor/state.sync-queue.mjs +2 -3
  131. package/dist/editor/actor/types.d.mts +1 -3
  132. package/dist/editor/actor/types.mjs +1 -2
  133. package/dist/editor/applyChangesToManualLayout.mjs +1 -2
  134. package/dist/editor/index.d.mts +1 -1
  135. package/dist/editor/useEditorActorLogic.mjs +3 -4
  136. package/dist/hooks/safeContext.d.mts +16 -35
  137. package/dist/hooks/safeContext.mjs +1 -2
  138. package/dist/hooks/useCallbackRef.mjs +1 -2
  139. package/dist/hooks/useCurrentView.d.mts +1 -3
  140. package/dist/hooks/useCurrentView.mjs +1 -2
  141. package/dist/hooks/useCurrentViewModel.d.mts +0 -2
  142. package/dist/hooks/useCurrentViewModel.mjs +1 -2
  143. package/dist/hooks/useDiagram.d.mts +3 -12
  144. package/dist/hooks/useDiagram.mjs +11 -10
  145. package/dist/hooks/useDiagramCompareLayout.d.mts +2 -4
  146. package/dist/hooks/useDiagramCompareLayout.mjs +12 -21
  147. package/dist/hooks/useDiagramMarkdownRefActions.mjs +35 -0
  148. package/dist/hooks/useEdgeLabelFontLoader.mjs +29 -0
  149. package/dist/hooks/useEdgeTracks.mjs +2 -3
  150. package/dist/hooks/useEditorActor.mjs +1 -2
  151. package/dist/hooks/useId.mjs +1 -2
  152. package/dist/hooks/useLikeC4ElementsTree.mjs +1 -2
  153. package/dist/hooks/useLikeC4Model.d.mts +0 -2
  154. package/dist/hooks/useLikeC4Model.mjs +1 -2
  155. package/dist/hooks/useLikeC4Project.d.mts +2 -4
  156. package/dist/hooks/useLikeC4Project.mjs +1 -2
  157. package/dist/hooks/useLikeC4Styles.d.mts +1 -3
  158. package/dist/hooks/useLikeC4Styles.mjs +1 -2
  159. package/dist/hooks/useMantinePortalProps.mjs +1 -2
  160. package/dist/hooks/useSetState.mjs +1 -2
  161. package/dist/hooks/useUpdateEffect.d.mts +0 -2
  162. package/dist/hooks/useUpdateEffect.mjs +1 -2
  163. package/dist/hooks/useXYFlow.d.mts +1 -3
  164. package/dist/hooks/useXYFlow.mjs +1 -2
  165. package/dist/index.d.mts +20 -18
  166. package/dist/index.mjs +20 -18
  167. package/dist/likec4diagram/DiagramUI.mjs +14 -11
  168. package/dist/likec4diagram/DiagramXYFlow.mjs +34 -34
  169. package/dist/likec4diagram/convert-to-xyflow.mjs +7 -3
  170. package/dist/likec4diagram/custom/edges/EdgeDrifts.mjs +4 -3
  171. package/dist/likec4diagram/custom/edges/RelationshipEdge.mjs +18 -14
  172. package/dist/likec4diagram/custom/edges/SequenceStepEdge.mjs +3 -4
  173. package/dist/likec4diagram/custom/edges/useControlPoints.mjs +2 -3
  174. package/dist/likec4diagram/custom/edges/useRelationshipEdgePath.mjs +2 -3
  175. package/dist/likec4diagram/custom/index.mjs +4 -5
  176. package/dist/likec4diagram/custom/nodes/CompoundActions.d.mts +1 -2
  177. package/dist/likec4diagram/custom/nodes/CompoundActions.mjs +2 -3
  178. package/dist/likec4diagram/custom/nodes/ElementActions.d.mts +3 -4
  179. package/dist/likec4diagram/custom/nodes/ElementActions.mjs +4 -5
  180. package/dist/likec4diagram/custom/nodes/GraphElementNode.d.mts +6 -1
  181. package/dist/likec4diagram/custom/nodes/GraphElementNode.mjs +3 -4
  182. package/dist/likec4diagram/custom/nodes/NodeDrifts.d.mts +6 -1
  183. package/dist/likec4diagram/custom/nodes/NodeDrifts.mjs +4 -3
  184. package/dist/likec4diagram/custom/nodes/NodeNotes.mjs +3 -5
  185. package/dist/likec4diagram/custom/nodes/SequenceActorNode.d.mts +1 -3
  186. package/dist/likec4diagram/custom/nodes/SequenceActorNode.mjs +3 -4
  187. package/dist/likec4diagram/custom/nodes/SequenceSubFlow.d.mts +3 -1
  188. package/dist/likec4diagram/custom/nodes/SequenceSubFlow.mjs +1 -2
  189. package/dist/likec4diagram/custom/nodes/index.d.mts +4 -4
  190. package/dist/likec4diagram/custom/nodes/nodes.d.mts +3 -4
  191. package/dist/likec4diagram/custom/nodes/nodes.mjs +19 -21
  192. package/dist/likec4diagram/custom/nodes/toolbar/ColorButton.mjs +1 -2
  193. package/dist/likec4diagram/custom/nodes/toolbar/CompoundToolbar.d.mts +1 -3
  194. package/dist/likec4diagram/custom/nodes/toolbar/CompoundToolbar.mjs +1 -2
  195. package/dist/likec4diagram/custom/nodes/toolbar/ElementToolbar.d.mts +1 -3
  196. package/dist/likec4diagram/custom/nodes/toolbar/ElementToolbar.mjs +4 -5
  197. package/dist/likec4diagram/custom/nodes/toolbar/Toolbar.d.mts +1 -3
  198. package/dist/likec4diagram/custom/nodes/toolbar/Toolbar.mjs +4 -6
  199. package/dist/likec4diagram/custom/nodes/toolbar/_shared.mjs +3 -4
  200. package/dist/likec4diagram/custom/nodes/toolbar/styles.css.mjs +1 -2
  201. package/dist/likec4diagram/custom/nodes/toolbar/types.mjs +1 -2
  202. package/dist/likec4diagram/custom/nodes/toolbar/useHandlers.mjs +1 -2
  203. package/dist/likec4diagram/relationship-popover/RelationshipPopover.mjs +29 -12
  204. package/dist/likec4diagram/relationship-popover/actor.mjs +1 -2
  205. package/dist/likec4diagram/relationship-popover/components.mjs +1 -2
  206. package/dist/likec4diagram/state/DiagramActorProvider.mjs +22 -34
  207. package/dist/likec4diagram/state/aligners.d.mts +1 -3
  208. package/dist/likec4diagram/state/aligners.mjs +1 -2
  209. package/dist/likec4diagram/state/assign.mjs +3 -4
  210. package/dist/likec4diagram/state/createViewChange.mjs +1 -2
  211. package/dist/likec4diagram/state/diagram-api.d.mts +33 -16
  212. package/dist/likec4diagram/state/diagram-api.mjs +55 -31
  213. package/dist/likec4diagram/state/hotkeyActor.d.mts +1 -3
  214. package/dist/likec4diagram/state/hotkeyActor.mjs +12 -6
  215. package/dist/likec4diagram/state/machine.actions.layout.mjs +2 -3
  216. package/dist/likec4diagram/state/machine.actions.mjs +81 -44
  217. package/dist/likec4diagram/state/machine.d.mts +107 -15
  218. package/dist/likec4diagram/state/machine.mjs +3 -4
  219. package/dist/likec4diagram/state/machine.setup.d.mts +14 -10
  220. package/dist/likec4diagram/state/machine.setup.mjs +55 -28
  221. package/dist/likec4diagram/state/machine.state.initializing.mjs +3 -4
  222. package/dist/likec4diagram/state/machine.state.navigating.mjs +3 -6
  223. package/dist/likec4diagram/state/machine.state.ready.comparing.mjs +63 -0
  224. package/dist/likec4diagram/state/machine.state.ready.focused.mjs +10 -7
  225. package/dist/likec4diagram/state/machine.state.ready.idle.mjs +10 -7
  226. package/dist/likec4diagram/state/machine.state.ready.mjs +8 -8
  227. package/dist/likec4diagram/state/machine.state.ready.printing.mjs +3 -4
  228. package/dist/likec4diagram/state/machine.state.ready.walkthrough.mjs +5 -6
  229. package/dist/likec4diagram/state/mediaPrintActor.d.mts +1 -3
  230. package/dist/likec4diagram/state/mediaPrintActor.mjs +1 -2
  231. package/dist/likec4diagram/state/persistence.mjs +12 -5
  232. package/dist/likec4diagram/state/types.d.mts +1 -3
  233. package/dist/likec4diagram/state/utils.mjs +2 -3
  234. package/dist/likec4diagram/types.d.mts +1 -3
  235. package/dist/likec4diagram/ui/FloatingSequenceActors.mjs +5 -7
  236. package/dist/likec4diagram/ui/notation/NotationPanel.css.mjs +1 -2
  237. package/dist/likec4diagram/ui/notation/NotationPanel.mjs +6 -7
  238. package/dist/likec4diagram/ui/sequence-outline/ActiveTrail.mjs +2 -3
  239. package/dist/likec4diagram/ui/sequence-outline/FlowRow.mjs +3 -4
  240. package/dist/likec4diagram/ui/sequence-outline/OutlineBody.mjs +4 -7
  241. package/dist/likec4diagram/ui/sequence-outline/OutlineHeader.mjs +4 -5
  242. package/dist/likec4diagram/ui/sequence-outline/OutlineNodes.mjs +4 -6
  243. package/dist/likec4diagram/ui/sequence-outline/SequenceOutlinePanel.mjs +2 -3
  244. package/dist/likec4diagram/ui/sequence-outline/StepBadge.mjs +1 -2
  245. package/dist/likec4diagram/ui/sequence-outline/StepRow.mjs +7 -8
  246. package/dist/likec4diagram/ui/sequence-outline/StoreProvider.mjs +3 -9
  247. package/dist/likec4diagram/ui/sequence-outline/depth-of-field.mjs +1 -2
  248. package/dist/likec4diagram/ui/sequence-outline/motion.mjs +1 -2
  249. package/dist/likec4diagram/ui/sequence-outline/presentation.mjs +7 -8
  250. package/dist/likec4diagram/ui/sequence-outline/tree.mjs +1 -2
  251. package/dist/likec4diagram/ui/sequence-outline/types.mjs +1 -2
  252. package/dist/likec4diagram/useLayoutConstraints.mjs +5 -10
  253. package/dist/likec4diagram/useNodeDragHandlers.mjs +28 -0
  254. package/dist/likec4diagram/xyflow-diagram/diagram-view.mjs +9 -2
  255. package/dist/likec4diagram/xyflow-graph/graph-view-to-xy.mjs +1 -2
  256. package/dist/likec4diagram/xyflow-graph/useGraphForceSimulation.mjs +3 -6
  257. package/dist/likec4diagram/xyflow-props.mjs +25 -0
  258. package/dist/likec4diagram/xyflow-sequence/const.mjs +1 -2
  259. package/dist/likec4diagram/xyflow-sequence/layouter.mjs +2 -3
  260. package/dist/likec4diagram/xyflow-sequence/sequence-view-to-xy.mjs +2 -3
  261. package/dist/likec4diagram/xyflow-sequence/sequence-view.mjs +2 -3
  262. package/dist/likec4diagram/xyflow-sequence/utils.mjs +1 -2
  263. package/dist/navigationpanel/ElementViewControls.mjs +6 -7
  264. package/dist/navigationpanel/NavigationPanel.mjs +38 -67
  265. package/dist/navigationpanel/NavigationPanelControls.mjs +35 -114
  266. package/dist/navigationpanel/NavigationPanelDropdown.mjs +37 -34
  267. package/dist/navigationpanel/_common.mjs +3 -4
  268. package/dist/navigationpanel/actor.actions.mjs +1 -2
  269. package/dist/navigationpanel/actor.d.mts +0 -2
  270. package/dist/navigationpanel/actor.mjs +2 -3
  271. package/dist/navigationpanel/actor.setup.d.mts +1 -3
  272. package/dist/navigationpanel/actor.setup.mjs +1 -2
  273. package/dist/navigationpanel/comparepanel/ComparePanel.mjs +160 -90
  274. package/dist/navigationpanel/comparepanel/DriftsSummary.mjs +173 -142
  275. package/dist/{likec4diagram/ui → navigationpanel/comparepanel}/LayoutDriftFrame.mjs +6 -12
  276. package/dist/navigationpanel/comparepanel/LayoutTypeSwitcher.mjs +14 -19
  277. package/dist/navigationpanel/controls/LayoutWarning.mjs +3 -4
  278. package/dist/navigationpanel/controls/LogoButton.mjs +5 -23
  279. package/dist/navigationpanel/controls/NavigationBreadcrumbs.mjs +110 -0
  280. package/dist/navigationpanel/controls/NavigationButtons.mjs +3 -4
  281. package/dist/navigationpanel/controls/OpenSource.mjs +2 -3
  282. package/dist/navigationpanel/controls/SearchControl.mjs +2 -3
  283. package/dist/navigationpanel/controls/ToggleReadonly.mjs +36 -21
  284. package/dist/navigationpanel/controls/ViewDetailsButton.mjs +12 -15
  285. package/dist/navigationpanel/dropdown/ProjectsMenu.mjs +46 -13
  286. package/dist/navigationpanel/editorpanel/ApplySemanticLayout.mjs +3 -4
  287. package/dist/navigationpanel/editorpanel/CenterCamera.mjs +2 -3
  288. package/dist/navigationpanel/editorpanel/ChangeAutoLayoutButton.mjs +3 -4
  289. package/dist/navigationpanel/editorpanel/EditorPanel.mjs +4 -4
  290. package/dist/navigationpanel/editorpanel/ManualLayoutToolsButton.mjs +11 -13
  291. package/dist/navigationpanel/editorpanel/ToggleReadonly.mjs +2 -3
  292. package/dist/navigationpanel/editorpanel/_common.mjs +1 -2
  293. package/dist/navigationpanel/editorpanel/styles.mjs +1 -2
  294. package/dist/navigationpanel/hooks.mjs +1 -2
  295. package/dist/navigationpanel/walkthrough/ActiveWalkthroughControls.mjs +5 -6
  296. package/dist/navigationpanel/walkthrough/DynamicViewControls.mjs +7 -9
  297. package/dist/navigationpanel/walkthrough/DynamicViewModeSwitcher.mjs +1 -2
  298. package/dist/navigationpanel/walkthrough/WalkthroughPanel.mjs +3 -4
  299. package/dist/navigationpanel/windows/ViewDetailsWindow.mjs +44 -38
  300. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/createReactComponent.mjs +1 -2
  301. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/defaultAttributes.mjs +1 -2
  302. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconAlertTriangle.mjs +1 -2
  303. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowDownRight.mjs +1 -2
  304. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowFork.mjs +1 -2
  305. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowGuide.mjs +1 -2
  306. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowLeft.mjs +1 -2
  307. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowRight.mjs +1 -2
  308. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconBolt.mjs +1 -2
  309. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconBrowser.mjs +1 -2
  310. package/dist/node_modules/.pnpm/@tabler_icons-react@3.49.0_react@19.3.1/node_modules/@tabler/icons-react/dist/esm/icons/IconCaretRightFilled.mjs +16 -0
  311. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconCheck.mjs +1 -2
  312. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconChevronDown.mjs +1 -2
  313. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconChevronLeft.mjs +1 -2
  314. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconChevronRight.mjs +1 -2
  315. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconCopy.mjs +1 -2
  316. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconCornerDownRight.mjs +1 -2
  317. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconCylinder.mjs +1 -2
  318. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconDeviceMobile.mjs +1 -2
  319. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconDirectionSignFilled.mjs +1 -2
  320. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconExternalLink.mjs +1 -2
  321. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconFileSymlink.mjs +1 -2
  322. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconFileText.mjs +1 -2
  323. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconFocusCentered.mjs +1 -2
  324. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconFolderFilled.mjs +1 -2
  325. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconHelpCircle.mjs +1 -2
  326. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconId.mjs +1 -2
  327. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconInfoCircle.mjs +1 -2
  328. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutAlignBottom.mjs +1 -2
  329. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutAlignCenter.mjs +1 -2
  330. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutAlignLeft.mjs +1 -2
  331. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutAlignMiddle.mjs +1 -2
  332. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutAlignRight.mjs +1 -2
  333. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutAlignTop.mjs +1 -2
  334. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutBoardSplit.mjs +1 -2
  335. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutCollage.mjs +1 -2
  336. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutDashboard.mjs +1 -2
  337. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconLink.mjs +1 -2
  338. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconLock.mjs +1 -2
  339. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconLockOpen2.mjs +1 -2
  340. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconPlayerPlayFilled.mjs +1 -2
  341. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconPlayerSkipBackFilled.mjs +1 -2
  342. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconPlayerSkipForwardFilled.mjs +1 -2
  343. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconPlayerStop.mjs +1 -2
  344. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconPlayerStopFilled.mjs +1 -2
  345. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconRectangularPrism.mjs +1 -2
  346. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconReorder.mjs +1 -2
  347. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconRepeat.mjs +1 -2
  348. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconRobot.mjs +1 -2
  349. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconRouteOff.mjs +1 -2
  350. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconSearch.mjs +1 -2
  351. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconSelector.mjs +1 -2
  352. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconSparkles.mjs +1 -2
  353. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconStack2.mjs +1 -2
  354. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconStarFilled.mjs +1 -2
  355. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconTarget.mjs +1 -2
  356. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconTransform.mjs +1 -2
  357. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconUser.mjs +1 -2
  358. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconX.mjs +1 -2
  359. package/dist/node_modules/.pnpm/{@tabler_icons-react@3.49.0_react@19.3.0 → @tabler_icons-react@3.49.0_react@19.3.1}/node_modules/@tabler/icons-react/dist/esm/icons/IconZoomScan.mjs +1 -2
  360. package/dist/overlays/Overlays.mjs +4 -5
  361. package/dist/overlays/element-details/ElementDetails.mjs +2 -3
  362. package/dist/overlays/element-details/ElementDetailsCard.css.mjs +148 -102
  363. package/dist/overlays/element-details/ElementDetailsCard.mjs +503 -256
  364. package/dist/overlays/element-details/MetadataValue.mjs +115 -222
  365. package/dist/overlays/element-details/PropertiesSplit.mjs +162 -0
  366. package/dist/overlays/element-details/TabPanelDeployments.css.mjs +1 -2
  367. package/dist/overlays/element-details/TabPanelDeployments.mjs +5 -6
  368. package/dist/overlays/element-details/TabPanelRelationships.css.mjs +1 -2
  369. package/dist/overlays/element-details/TabPanelRelationships.mjs +6 -7
  370. package/dist/overlays/element-details/TabPanelStructure.css.mjs +1 -2
  371. package/dist/overlays/element-details/TabPanelStructure.mjs +3 -4
  372. package/dist/overlays/element-details/TabPanelViews.mjs +51 -0
  373. package/dist/overlays/element-details/actor.d.mts +6 -7
  374. package/dist/overlays/element-details/actor.mjs +31 -15
  375. package/dist/overlays/element-details/actorContext.mjs +1 -2
  376. package/dist/overlays/element-details/subject.d.mts +12 -0
  377. package/dist/overlays/element-details/subject.mjs +15 -0
  378. package/dist/overlays/hooks.mjs +1 -2
  379. package/dist/overlays/overlay/Overlay.d.mts +1 -3
  380. package/dist/overlays/overlay/Overlay.mjs +4 -5
  381. package/dist/overlays/overlaysActor.d.mts +12 -5
  382. package/dist/overlays/overlaysActor.mjs +24 -6
  383. package/dist/overlays/relationship-details/RelationshipDetails.mjs +16 -8
  384. package/dist/overlays/relationship-details/SelectEdge.css.mjs +1 -2
  385. package/dist/overlays/relationship-details/SelectEdge.mjs +3 -4
  386. package/dist/overlays/relationship-details/_types.d.mts +6 -4
  387. package/dist/overlays/relationship-details/actor.d.mts +0 -2
  388. package/dist/overlays/relationship-details/actor.mjs +2 -3
  389. package/dist/overlays/relationship-details/compute.mjs +1 -2
  390. package/dist/overlays/relationship-details/custom/ElementActions.mjs +6 -7
  391. package/dist/overlays/relationship-details/custom/edgeTypes.mjs +8 -13
  392. package/dist/overlays/relationship-details/custom/nodeTypes.mjs +8 -6
  393. package/dist/overlays/relationship-details/hooks.mjs +1 -2
  394. package/dist/overlays/relationship-details/layout-to-xyflow.mjs +3 -3
  395. package/dist/overlays/relationship-details/layout.d.mts +1 -3
  396. package/dist/overlays/relationship-details/layout.mjs +39 -13
  397. package/dist/overlays/relationships-browser/RelationshipsBrowser.mjs +12 -13
  398. package/dist/overlays/relationships-browser/SelectElement.css.mjs +1 -2
  399. package/dist/overlays/relationships-browser/SelectElement.mjs +4 -5
  400. package/dist/overlays/relationships-browser/_types.d.mts +6 -4
  401. package/dist/overlays/relationships-browser/actor.d.mts +0 -2
  402. package/dist/overlays/relationships-browser/actor.mjs +4 -5
  403. package/dist/overlays/relationships-browser/const.mjs +1 -2
  404. package/dist/overlays/relationships-browser/custom/ElementActions.mjs +6 -7
  405. package/dist/overlays/relationships-browser/custom/EmptyNode.mjs +1 -2
  406. package/dist/overlays/relationships-browser/custom/edgeTypes.mjs +14 -17
  407. package/dist/overlays/relationships-browser/custom/nodeTypes.mjs +12 -7
  408. package/dist/overlays/relationships-browser/hooks.mjs +1 -2
  409. package/dist/overlays/relationships-browser/layout.d.mts +1 -3
  410. package/dist/overlays/relationships-browser/layout.mjs +73 -24
  411. package/dist/overlays/relationships-browser/useViewToNodesEdges.mjs +2 -2
  412. package/dist/overlays/types.d.mts +5 -7
  413. package/dist/projects-overview/ProjectsOverview.d.mts +1 -3
  414. package/dist/projects-overview/ProjectsOverview.mjs +1 -2
  415. package/dist/projects-overview/ProjectsOverviewXY.d.mts +1 -3
  416. package/dist/projects-overview/ProjectsOverviewXY.mjs +3 -4
  417. package/dist/projects-overview/actor.mjs +1 -2
  418. package/dist/projects-overview/context.mjs +1 -2
  419. package/dist/projects-overview/custom/edgeTypes.mjs +2 -3
  420. package/dist/projects-overview/custom/nodeTypes.mjs +3 -4
  421. package/dist/projects-overview/hooks.mjs +1 -2
  422. package/dist/projects-overview/layouted-to-xyflow.mjs +1 -2
  423. package/dist/projects-overview/panel/ProjectsOverviewPanel.mjs +1 -2
  424. package/dist/projects-overview/persistence.mjs +1 -2
  425. package/dist/search/Search.d.mts +1 -3
  426. package/dist/search/Search.mjs +13 -12
  427. package/dist/search/SearchContext.d.mts +1 -3
  428. package/dist/search/SearchContext.mjs +1 -2
  429. package/dist/search/XStateSearchAdapter.mjs +1 -2
  430. package/dist/search/components/ElementsColumn.css.mjs +1 -2
  431. package/dist/search/components/ElementsColumn.mjs +31 -9
  432. package/dist/search/components/PickView.mjs +3 -4
  433. package/dist/search/components/SearchByTags.mjs +3 -4
  434. package/dist/search/components/SearchInput.mjs +3 -4
  435. package/dist/search/components/ViewsColum.mjs +20 -20
  436. package/dist/search/components/ViewsColumn.css.mjs +1 -2
  437. package/dist/search/components/_shared.css.mjs +1 -2
  438. package/dist/search/components/styles.css.mjs +1 -2
  439. package/dist/search/components/utils.mjs +32 -3
  440. package/dist/search/fuzzy.mjs +27 -0
  441. package/dist/search/hooks.mjs +1 -2
  442. package/dist/search/metadata-search.mjs +32 -0
  443. package/dist/search/searchActor.d.mts +1 -3
  444. package/dist/search/searchActor.mjs +1 -2
  445. package/dist/shadowroot/ShadowRoot.mjs +8 -7
  446. package/dist/styles-font2.mjs +1 -2
  447. package/dist/styles-min.css +1 -1
  448. package/dist/styles.css +1 -1
  449. package/dist/styles2.mjs +2 -3
  450. package/dist/utils/defineActors.d.mts +1 -3
  451. package/dist/utils/defineActors.mjs +1 -2
  452. package/dist/utils/edge-corners.mjs +2 -3
  453. package/dist/utils/edge-endpoints.mjs +1 -2
  454. package/dist/utils/edge-label.mjs +1 -2
  455. package/dist/utils/edge-path-through-label.mjs +51 -0
  456. package/dist/utils/edge-path.mjs +1 -2
  457. package/dist/utils/edge-tracks.mjs +1 -2
  458. package/dist/utils/filterProjects.d.mts +10 -0
  459. package/dist/utils/filterProjects.mjs +36 -0
  460. package/dist/utils/index.mjs +1 -0
  461. package/dist/utils/measure-edge-label.mjs +129 -0
  462. package/dist/utils/readableText.mjs +1 -2
  463. package/dist/utils/roundDpr.mjs +1 -2
  464. package/dist/utils/search-event.mjs +17 -0
  465. package/dist/utils/view-bounds.d.mts +1 -3
  466. package/dist/utils/view-bounds.mjs +1 -2
  467. package/dist/utils/view-routing.mjs +1 -2
  468. package/dist/utils/xyflow.mjs +2 -3
  469. package/dist/webcomponent/defineWebcomponent.d.mts +12 -0
  470. package/dist/webcomponent/defineWebcomponent.mjs +93 -0
  471. package/package.json +29 -26
  472. package/panda.buildinfo.json +211 -208
  473. package/styles-min.css +1 -1
  474. package/styles.css +1 -1
  475. package/dist/base-primitives/memoNode.mjs +0 -23
  476. package/dist/context/DiagramEventHandlers.d.mts +0 -11
  477. package/dist/custom/hooks.d.mts +0 -17
  478. package/dist/hooks/useSetState.d.mts +0 -10
  479. package/dist/likec4diagram/custom/edges/edges.css.mjs +0 -50
  480. package/dist/navigationpanel/comparepanel/CompareActionsMenu.mjs +0 -69
  481. package/dist/navigationpanel/comparepanel/ComparePanelControls.mjs +0 -56
  482. package/dist/navigationpanel/styles.css.mjs +0 -23
  483. package/src/styles-font.css +0 -114
  484. package/src/styles-min.css +0 -2
  485. package/src/styles-xyflow.css +0 -1
  486. package/src/styles.css +0 -3
@@ -1,10 +1,8 @@
1
1
  import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
2
  import { ActorRefFromLogic, AnyActorLogic } from "xstate";
3
- //#region src/utils/defineActors.d.ts
4
3
  export type inferChildrenRef<A> = A extends Record<string, AnyActorLogic> ? { [K in keyof A & string]: ActorRefFromLogic<A[K]> | undefined; } : never;
5
4
  export type inferProvidedActor<A> = A extends Record<string, AnyActorLogic> ? { [K in keyof A & string]: {
6
5
  id: K;
7
6
  logic: A[K];
8
7
  src: K;
9
- }; }[keyof A & string] : never;
10
- //#endregion
8
+ }; }[keyof A & string] : never;
@@ -1,6 +1,6 @@
1
1
  import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
2
 
3
- //#region src/utils/defineActors.ts
3
+ // src/utils/defineActors.ts
4
4
  /**
5
5
  * Helper function to define actors for use to mimize type inference issues
6
6
  * with XState ActorSystem
@@ -11,5 +11,4 @@ function defineActors(actors) {
11
11
  return actors;
12
12
  }
13
13
 
14
- //#endregion
15
14
  export { defineActors };
@@ -1,9 +1,9 @@
1
1
  import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
- import { bezierControlPoints } from "./xyflow.mjs";
3
2
  import { inDrawingOrder, orthoPolyline } from "./edge-path.mjs";
3
+ import { bezierControlPoints } from "./xyflow.mjs";
4
4
  import { isOrthoSpline, nearlyEqual, projectOnSegment, splineToPolyline } from "@likec4/core/geometry";
5
5
 
6
- //#region src/utils/edge-corners.ts
6
+ // src/utils/edge-corners.ts
7
7
  /** Interior corners of an orthogonal Graphviz spline. */
8
8
  function orthoCorners(points) {
9
9
  const anchors = splineToPolyline(points).map((p) => ({
@@ -122,5 +122,4 @@ function insertCorner({ point, controlPoints, routing, ...edge }) {
122
122
  return result;
123
123
  }
124
124
 
125
- //#endregion
126
125
  export { initialControlPoints, insertCorner, snapCorner };
@@ -1,7 +1,7 @@
1
1
  import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
2
  import { nodeToRect } from "./xyflow.mjs";
3
3
 
4
- //#region src/utils/edge-endpoints.ts
4
+ // src/utils/edge-endpoints.ts
5
5
  /**
6
6
  * Returns an edge endpoint from the node's actual bounds and handle center.
7
7
  * Falls back to the node center when handle bounds are unavailable.
@@ -38,5 +38,4 @@ function edgeEndCenters(nodeLookup, edge) {
38
38
  };
39
39
  }
40
40
 
41
- //#endregion
42
41
  export { edgeEndCenters, edgeEndFromNode };
@@ -2,7 +2,7 @@ import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
2
  import { firstBy } from "remeda";
3
3
  import { distanceBetween, placeLabelAlongSegments } from "@likec4/core/geometry";
4
4
 
5
- //#region src/utils/edge-label.ts
5
+ // src/utils/edge-label.ts
6
6
  /**
7
7
  * Top-left position of the label of an edge being edited: centered at half the path length for
8
8
  * splines; beside a straight run for ortho routing, avoiding obstacles unless the label is customized,
@@ -37,5 +37,4 @@ function centredAt(point, size) {
37
37
  };
38
38
  }
39
39
 
40
- //#endregion
41
40
  export { edgeLabelPosition };
@@ -0,0 +1,51 @@
1
+ import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
+ import { Position, getBezierPath } from "@xyflow/system";
3
+
4
+ // src/utils/edge-path-through-label.ts
5
+ /**
6
+ * Returns the bezier edge path through the label placed by the layout (left to right):
7
+ * a curve to the left side of the label and a curve from its right side to the target,
8
+ * with a gap under the label, so the line does not show through the label background.
9
+ *
10
+ * Without label box, it is a single bezier curve with the label in the middle.
11
+ */
12
+ function edgePathThroughLabel(params, labelBBox) {
13
+ if (!labelBBox) {
14
+ const [path, x, y] = getBezierPath({
15
+ sourceX: params.sourceX,
16
+ sourceY: params.sourceY,
17
+ sourcePosition: params.sourcePosition,
18
+ targetX: params.targetX,
19
+ targetY: params.targetY,
20
+ targetPosition: params.targetPosition
21
+ });
22
+ return [path, {
23
+ x,
24
+ y,
25
+ translate: "translate(-50%, 0)"
26
+ }];
27
+ }
28
+ const y = labelBBox.y + labelBBox.height / 2;
29
+ const [toLabel] = getBezierPath({
30
+ sourceX: params.sourceX,
31
+ sourceY: params.sourceY,
32
+ sourcePosition: params.sourcePosition,
33
+ targetX: labelBBox.x,
34
+ targetY: y,
35
+ targetPosition: Position.Left
36
+ });
37
+ const [fromLabel] = getBezierPath({
38
+ sourceX: labelBBox.x + labelBBox.width,
39
+ sourceY: y,
40
+ sourcePosition: Position.Right,
41
+ targetX: params.targetX,
42
+ targetY: params.targetY,
43
+ targetPosition: params.targetPosition
44
+ });
45
+ return [`${toLabel} ${fromLabel}`, {
46
+ x: labelBBox.x,
47
+ y: labelBBox.y
48
+ }];
49
+ }
50
+
51
+ export { edgePathThroughLabel };
@@ -5,7 +5,7 @@ import { continuesRun, distanceBetween, isOrthoSpline, nearlyEqual, polylineToSe
5
5
  import { nonNullable } from "@likec4/core/utils";
6
6
  import { curveCatmullRomOpen, line } from "d3-shape";
7
7
 
8
- //#region src/utils/edge-path.ts
8
+ // src/utils/edge-path.ts
9
9
  /** Endpoints in drawing order, reversed for `dir: 'back'`. */
10
10
  function inDrawingOrder({ source, target, dir }) {
11
11
  return dir === "back" ? [target, source] : [source, target];
@@ -242,5 +242,4 @@ function layoutedEdgePath({ points, routing, ...edge }) {
242
242
  };
243
243
  }
244
244
 
245
- //#endregion
246
245
  export { drawnFromRoute, editedEdgePath, editedEdgeRoute, inDrawingOrder, layoutedEdgePath, layoutedEdgeRoute, orthoPolyline };
@@ -2,7 +2,7 @@ import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
2
  import { drawnFromRoute, editedEdgePath, editedEdgeRoute } from "./edge-path.mjs";
3
3
  import { nearlyEqual } from "@likec4/core/geometry";
4
4
 
5
- //#region src/utils/edge-tracks.ts
5
+ // src/utils/edge-tracks.ts
6
6
  const TRACK_SPACING = 12;
7
7
  const END_INSET = 8;
8
8
  const SAME_TRACK = 4;
@@ -137,5 +137,4 @@ function trackedEdgePath({ id, controlPoints, routing, others, ...endpoints }) {
137
137
  }, [...others]));
138
138
  }
139
139
 
140
- //#endregion
141
140
  export { keepOwnTrack, trackedEdgePath };
@@ -0,0 +1,10 @@
1
+ import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
+ import { LikeC4ProjectData } from "../LikeC4ProjectsProvider.mjs";
3
+ /**
4
+ * Keeps the projects whose id, title or path match every term of the query.
5
+ */
6
+ export declare function filterProjects<P extends Pick<LikeC4ProjectData, 'id' | 'title' | 'path'>>(projects: ReadonlyArray<P>, query: string): ReadonlyArray<P>;
7
+ /**
8
+ * Literal fragments of the query, to highlight in the matching projects.
9
+ */
10
+ export declare function projectSearchHighlights(query: string): string[];
@@ -0,0 +1,36 @@
1
+ import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
+
3
+ // src/utils/filterProjects.ts
4
+ function escapeRegExp(value) {
5
+ return value.replace(/[.+?^${}()|[\]\\]/g, "\\$&");
6
+ }
7
+ /**
8
+ * Splits a search query into lowercase terms; `*` inside a term matches any characters.
9
+ */
10
+ function projectSearchTerms(query) {
11
+ return query.trim().toLowerCase().split(/\s+/).filter((term) => term.replaceAll("*", "").length > 0);
12
+ }
13
+ /**
14
+ * Keeps the projects whose id, title or path match every term of the query.
15
+ */
16
+ function filterProjects(projects, query) {
17
+ const terms = projectSearchTerms(query);
18
+ if (terms.length === 0) return projects;
19
+ const matchers = terms.map((term) => new RegExp(term.split("*").map(escapeRegExp).join(".*")));
20
+ return projects.filter(({ id, title, path }) => {
21
+ const haystack = [
22
+ id,
23
+ title,
24
+ path
25
+ ].filter(Boolean).join("\n").toLowerCase();
26
+ return matchers.every((matcher) => matcher.test(haystack));
27
+ });
28
+ }
29
+ /**
30
+ * Literal fragments of the query, to highlight in the matching projects.
31
+ */
32
+ function projectSearchHighlights(query) {
33
+ return projectSearchTerms(query).flatMap((term) => term.split("*")).filter(Boolean);
34
+ }
35
+
36
+ export { filterProjects, projectSearchHighlights, projectSearchTerms };
@@ -1,6 +1,7 @@
1
1
  import { roundDpr } from "./roundDpr.mjs";
2
2
  import { bezierControlPoints, bezierPath, getNodeCenter, getNodeIntersectionFromCenterToPoint, isSamePoint, nodeToRect, stopPropagation } from "./xyflow.mjs";
3
3
  import { readableText } from "./readableText.mjs";
4
+ import { isEventFromSearch } from "./search-event.mjs";
4
5
  import { pickViewBounds } from "./view-bounds.mjs";
5
6
  import { vector as vector$1 } from "@likec4/core/geometry";
6
7
 
@@ -0,0 +1,129 @@
1
+ import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
+ import { DefaultFontFamily, EdgeLabelMetrics } from "@likec4/core/styles";
3
+ import { clearCache, layout, layoutWithLines, measureNaturalWidth, prepare, prepareWithSegments } from "@chenglou/pretext";
4
+
5
+ // src/utils/measure-edge-label.ts
6
+ /**
7
+ * Canvas font of the edge label (see `EdgeLabelMetrics` in the style preset)
8
+ */
9
+ const edgeLabelFont = (size = EdgeLabelMetrics.label.fontSize) => `${size}px ${DefaultFontFamily}`;
10
+ /**
11
+ * Finds the narrowest width that keeps the same number of lines as at `maxWidth`,
12
+ * so lines are roughly equal (like CSS `text-wrap: balance`)
13
+ */
14
+ function balancedWidth(paragraph, prepared, { maxWidth, lineHeight, font }) {
15
+ const lineCount = layout(prepared, maxWidth, lineHeight).lineCount;
16
+ if (lineCount <= 1) return maxWidth;
17
+ const longestWord = Math.max(...paragraph.split(/\s+/).map((word) => word ? measureNaturalWidth(prepare(word, font)) : 0));
18
+ if (longestWord >= maxWidth) return maxWidth;
19
+ let lo = longestWord;
20
+ let hi = maxWidth;
21
+ if (layout(prepared, lo, lineHeight).lineCount === lineCount) return lo;
22
+ while (hi - lo > 1) {
23
+ const mid = (lo + hi) / 2;
24
+ if (layout(prepared, mid, lineHeight).lineCount > lineCount) lo = mid;
25
+ else hi = mid;
26
+ }
27
+ return hi;
28
+ }
29
+ function wrapLabel(label, maxWidth) {
30
+ const font = edgeLabelFont();
31
+ const lineHeight = EdgeLabelMetrics.label.fontSize * EdgeLabelMetrics.label.lineHeight;
32
+ let lines = [];
33
+ for (const paragraph of label.trim().split(/\r?\n/)) {
34
+ if (!paragraph.trim()) {
35
+ lines.push("");
36
+ continue;
37
+ }
38
+ const prepared = prepareWithSegments(paragraph, font);
39
+ const width = balancedWidth(paragraph, prepared, {
40
+ maxWidth,
41
+ lineHeight,
42
+ font
43
+ });
44
+ for (const line of layoutWithLines(prepared, width, lineHeight).lines) lines.push(line.text.trim());
45
+ }
46
+ lines = lines.slice(0, EdgeLabelMetrics.label.maxLines);
47
+ const width = Math.max(0, ...lines.map((line) => line ? measureNaturalWidth(prepare(line, font)) : 0));
48
+ return {
49
+ lines,
50
+ width
51
+ };
52
+ }
53
+ /**
54
+ * Rough estimate, when there is no canvas to measure text (e.g. jsdom)
55
+ */
56
+ function estimateLabel(label, maxWidth) {
57
+ const charWidth = EdgeLabelMetrics.label.fontSize * .55;
58
+ const maxChars = Math.max(1, Math.floor(maxWidth / charWidth));
59
+ const lines = [];
60
+ for (const paragraph of label.trim().split(/\r?\n/)) {
61
+ let line = "";
62
+ for (const word of paragraph.split(/\s+/).filter(Boolean)) {
63
+ if (line && line.length + 1 + word.length > maxChars) {
64
+ lines.push(line);
65
+ line = "";
66
+ }
67
+ let rest = line ? `${line} ${word}` : word;
68
+ while (rest.length > maxChars) {
69
+ lines.push(rest.slice(0, maxChars));
70
+ rest = rest.slice(maxChars);
71
+ }
72
+ line = rest;
73
+ }
74
+ lines.push(line);
75
+ }
76
+ const visible = lines.slice(0, EdgeLabelMetrics.label.maxLines);
77
+ return {
78
+ lines: visible,
79
+ width: Math.min(maxWidth, Math.max(0, ...visible.map((line) => line.length * charWidth)))
80
+ };
81
+ }
82
+ /**
83
+ * Wraps and measures the edge label as it is rendered by `EdgeLabel`.
84
+ * Uses canvas of the browser, so the font must be loaded (see {@link loadEdgeLabelFont})
85
+ */
86
+ function measureEdgeLabel({ label, technology, withActionButton = false, maxWidth = EdgeLabelMetrics.maxTextWidth }) {
87
+ const { label: labelStyle, technology: techStyle, gap, paddingBlock, paddingInline, actionButtonSize } = EdgeLabelMetrics;
88
+ let wrapped;
89
+ let techWidth = 0;
90
+ try {
91
+ wrapped = label?.trim() ? wrapLabel(label, maxWidth) : {
92
+ lines: [],
93
+ width: 0
94
+ };
95
+ if (technology) techWidth = measureNaturalWidth(prepare(`[ ${technology} ]`, edgeLabelFont(techStyle.fontSize)));
96
+ } catch {
97
+ wrapped = label?.trim() ? estimateLabel(label, maxWidth) : {
98
+ lines: [],
99
+ width: 0
100
+ };
101
+ techWidth = technology ? (technology.length + 4) * techStyle.fontSize * .55 : 0;
102
+ }
103
+ const rows = [];
104
+ if (wrapped.lines.length > 0) rows.push(wrapped.lines.length * labelStyle.fontSize * labelStyle.lineHeight);
105
+ if (technology) rows.push(techStyle.fontSize * techStyle.lineHeight);
106
+ if (withActionButton) rows.push(actionButtonSize);
107
+ const width = Math.max(wrapped.width, techWidth, withActionButton ? actionButtonSize : 0);
108
+ const height = rows.reduce((sum, h) => sum + h, 0) + Math.max(0, rows.length - 1) * gap;
109
+ return {
110
+ label: wrapped.lines.length > 0 ? wrapped.lines.join("\n") : null,
111
+ width: Math.ceil(width + 2 * paddingInline),
112
+ height: Math.ceil(height + 2 * paddingBlock)
113
+ };
114
+ }
115
+ /**
116
+ * Loads faces of the edge label font required to render given texts.
117
+ * Resolves to `true` if something was loaded (measurements should be repeated)
118
+ */
119
+ async function loadEdgeLabelFont(texts) {
120
+ if (typeof document === "undefined" || !document.fonts) return false;
121
+ const sample = texts.join(" ");
122
+ const font = edgeLabelFont();
123
+ if (document.fonts.check(font, sample)) return false;
124
+ await document.fonts.load(font, sample);
125
+ clearCache();
126
+ return true;
127
+ }
128
+
129
+ export { edgeLabelFont, loadEdgeLabelFont, measureEdgeLabel };
@@ -1,7 +1,7 @@
1
1
  import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
2
  import { RichText } from "@likec4/core";
3
3
 
4
- //#region src/utils/readableText.ts
4
+ // src/utils/readableText.ts
5
5
  const WHITESPACE = /\s+/g;
6
6
  /**
7
7
  * Flattens a markdown or plain string value into a single line of
@@ -16,5 +16,4 @@ function readableText(value) {
16
16
  return RichText.from(value).text?.replace(WHITESPACE, " ").trim() || null;
17
17
  }
18
18
 
19
- //#endregion
20
19
  export { readableText };
@@ -1,7 +1,7 @@
1
1
  import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
2
  import { clamp } from "remeda";
3
3
 
4
- //#region src/utils/roundDpr.ts
4
+ // src/utils/roundDpr.ts
5
5
  /**
6
6
  * Returns the current device pixel ratio (DPR) given the passed options
7
7
  *
@@ -22,5 +22,4 @@ function roundDpr(v) {
22
22
  return Math.round(v * knownDpr) / knownDpr;
23
23
  }
24
24
 
25
- //#endregion
26
25
  export { roundDpr };
@@ -0,0 +1,17 @@
1
+ import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
+
3
+ // src/utils/search-event.ts
4
+ /**
5
+ * Checks if the event comes from inside the search overlay (marked with `data-likec4-search`).
6
+ *
7
+ * Search can be opened on top of overlays and the diagram (e.g. by clicking a tag or metadata
8
+ * in element details). Global hotkey handlers must leave such events to the search:
9
+ * Escape closes the search, arrows move the caret in the search input.
10
+ *
11
+ * Uses `composedPath`, as the diagram may be rendered in a shadow root.
12
+ */
13
+ function isEventFromSearch(event) {
14
+ return event.composedPath().some((target) => "dataset" in target && target.dataset["likec4Search"] === "true");
15
+ }
16
+
17
+ export { isEventFromSearch };
@@ -1,10 +1,8 @@
1
1
  import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
2
  import { BBox } from "@likec4/core/geometry";
3
3
  import { DiagramEdge, DynamicViewDisplayVariant, LayoutedView } from "@likec4/core/types";
4
- //#region src/utils/view-bounds.d.ts
5
4
  /**
6
5
  * Picks appropriate bounds from the view,
7
6
  * depending on its type and dynamic variant
8
7
  */
9
- export declare function pickViewBounds(view: LayoutedView, dynamicVariant?: DynamicViewDisplayVariant): BBox;
10
- //#endregion
8
+ export declare function pickViewBounds(view: LayoutedView, dynamicVariant?: DynamicViewDisplayVariant): BBox;
@@ -2,7 +2,7 @@ import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
2
  import { invariant } from "@likec4/core";
3
3
  import { BBox as BBox$1 } from "@likec4/core/geometry";
4
4
 
5
- //#region src/utils/view-bounds.ts
5
+ // src/utils/view-bounds.ts
6
6
  /**
7
7
  * Picks appropriate bounds from the view,
8
8
  * depending on its type and dynamic variant
@@ -53,5 +53,4 @@ function calcViewBounds({ nodes, edges }) {
53
53
  return BBox$1.expand(BBox$1.merge(...nodes, ...edges.map(calcEdgeBounds).filter((box) => isFinite(box.x) && isFinite(box.y))), 20);
54
54
  }
55
55
 
56
- //#endregion
57
56
  export { calcEdgeBounds, calcViewBounds, pickViewBounds };
@@ -1,6 +1,6 @@
1
1
  import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
2
 
3
- //#region src/utils/view-routing.ts
3
+ // src/utils/view-routing.ts
4
4
  /**
5
5
  * Returns a view's resolved routing mode, defaulting to `spline` when omitted.
6
6
  */
@@ -8,5 +8,4 @@ function viewRouting(view) {
8
8
  return view.routing ?? "spline";
9
9
  }
10
10
 
11
- //#endregion
12
11
  export { viewRouting };
@@ -1,12 +1,12 @@
1
1
  import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
2
  import { Position } from "@xyflow/react";
3
3
  import { flatMap, hasAtLeast, isArray, isNumber } from "remeda";
4
+ import { getNodeDimensions } from "@xyflow/system";
4
5
  import { BBox, vector } from "@likec4/core/geometry";
5
6
  import { invariant } from "@likec4/core/utils";
6
- import { getNodeDimensions } from "@xyflow/system";
7
7
  import { Bezier } from "bezier-js";
8
8
 
9
- //#region src/utils/xyflow.ts
9
+ // src/utils/xyflow.ts
10
10
  function isEqualRects(a, b) {
11
11
  return Math.trunc(a.x) === Math.trunc(b.x) && Math.trunc(a.y) === Math.trunc(b.y) && Math.trunc(a.width) === Math.trunc(b.width) && Math.trunc(a.height) === Math.trunc(b.height);
12
12
  }
@@ -170,5 +170,4 @@ function parsePaddings(padding, width, height) {
170
170
  };
171
171
  }
172
172
 
173
- //#endregion
174
173
  export { bezierControlPoints, bezierPath, getNodeCenter, getNodeIntersectionFromCenterToPoint, isEqualRects, isLeafNodeType, isSamePoint, leafNodeRects, nodeToRect$1 as nodeToRect, parsePaddings, stopPropagation };
@@ -0,0 +1,12 @@
1
+ import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
+ import { LikeC4ViewProps } from "../LikeC4View.mjs";
3
+ import { ProjectId } from "@likec4/core";
4
+ type LikeC4ViewComponent = (props: LikeC4ViewProps) => React.ReactElement;
5
+ /**
6
+ * Defines a custom element for a LikeC4 view component.
7
+ * Used by the LikeC4 Vite plugin.
8
+ *
9
+ * @internal
10
+ */
11
+ export declare function defineLikeC4Webcomponent(name: string, viewComponent: LikeC4ViewComponent, projectId: ProjectId): CustomElementConstructor;
12
+ export {};
@@ -0,0 +1,93 @@
1
+ import { __name } from "../_virtual/_rolldown/runtime.mjs";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { createRoot } from "react-dom/client";
4
+
5
+ // src/webcomponent/defineWebcomponent.ts
6
+ const ObservedAttributes = [
7
+ "view-id",
8
+ "browser",
9
+ "dynamic-variant",
10
+ "color-scheme"
11
+ ];
12
+ function readProps(element) {
13
+ function booleanAttribute(name, fallback) {
14
+ const value = element.getAttribute(name);
15
+ return value === null ? fallback : value.toLowerCase() !== "false";
16
+ }
17
+ function enumAttribute(name, values) {
18
+ const value = element.getAttribute(name);
19
+ return value !== null && values.includes(value) ? value : void 0;
20
+ }
21
+ const props = {
22
+ viewId: element.getAttribute("view-id") ?? "index",
23
+ browser: booleanAttribute("browser", true)
24
+ };
25
+ const dynamicViewVariant = enumAttribute("dynamic-variant", ["diagram", "sequence"]);
26
+ const colorScheme = enumAttribute("color-scheme", ["light", "dark"]);
27
+ if (dynamicViewVariant) props.dynamicViewVariant = dynamicViewVariant;
28
+ if (colorScheme) props.colorScheme = colorScheme;
29
+ return props;
30
+ }
31
+ /**
32
+ * The class is created on demand: this module is also imported where `HTMLElement` does not exist (SSR, node).
33
+ */
34
+ function createLikeC4ViewElement(component) {
35
+ return class LikeC4ViewElement extends HTMLElement {
36
+ static observedAttributes = ObservedAttributes;
37
+ shadow;
38
+ mount;
39
+ root;
40
+ constructor() {
41
+ super();
42
+ this.shadow = this.attachShadow({
43
+ mode: "open",
44
+ delegatesFocus: true
45
+ });
46
+ const style = document.createElement("style");
47
+ style.textContent = ":host { display: contents; background-color: transparent; margin: 0; padding: 0; }";
48
+ this.mount = document.createElement("div");
49
+ this.mount.style.display = "contents";
50
+ this.shadow.append(style, this.mount);
51
+ }
52
+ connectedCallback() {
53
+ this.root ??= createRoot(this.mount);
54
+ this.render();
55
+ }
56
+ disconnectedCallback() {
57
+ this.root?.unmount();
58
+ this.root = void 0;
59
+ }
60
+ attributeChangedCallback() {
61
+ if (this.root) this.render();
62
+ }
63
+ render() {
64
+ if (!this.root) return;
65
+ this.root.render(jsx(component, readProps(this)));
66
+ }
67
+ };
68
+ }
69
+ const projectIdSymbol = Symbol.for("likec4.webcomponent.projectId");
70
+ /**
71
+ * Defines a custom element for a LikeC4 view component.
72
+ * Used by the LikeC4 Vite plugin.
73
+ *
74
+ * @internal
75
+ */
76
+ function defineLikeC4Webcomponent(name, viewComponent, projectId) {
77
+ if (typeof name !== "string" || name.trim().length === 0) throw new Error("name must be a non-empty string");
78
+ const existing = customElements.get(name);
79
+ if (existing) {
80
+ if (existing[projectIdSymbol] === projectId) return existing;
81
+ throw new Error("Custom element \"" + name + "\" is already defined");
82
+ }
83
+ const ViewElement = createLikeC4ViewElement(viewComponent);
84
+ Object.defineProperty(ViewElement, projectIdSymbol, {
85
+ enumerable: false,
86
+ writable: false,
87
+ value: projectId
88
+ });
89
+ customElements.define(name, ViewElement);
90
+ return ViewElement;
91
+ }
92
+
93
+ export { defineLikeC4Webcomponent };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@likec4/diagram",
3
- "version": "1.60.0",
3
+ "version": "1.61.0",
4
4
  "description": "A React component library for rendering software architecture diagrams",
5
5
  "homepage": "https://likec4.dev",
6
6
  "bugs": "https://github.com/likec4/likec4/issues",
@@ -47,59 +47,62 @@
47
47
  "!**/*.d.ts.map"
48
48
  ],
49
49
  "dependencies": {
50
+ "@chenglou/pretext": "1.0.0",
50
51
  "@dagrejs/dagre": "1.1.8",
51
52
  "@floating-ui/dom": "^1.8.0",
52
- "@likec4/core": "1.60.0",
53
- "@likec4/styles": "1.60.0",
53
+ "@likec4/core": "1.61.0",
54
+ "@likec4/styles": "1.61.0",
54
55
  "@lume/kiwi": "^0.4.4",
55
- "@mantine/core": "9.7.1",
56
- "@mantine/hooks": "9.7.1",
56
+ "@mantine/core": "9.7.4",
57
+ "@mantine/hooks": "9.7.4",
57
58
  "@nanostores/media-query": "0.1.2",
58
59
  "@nanostores/react": "2.0.1",
59
- "@react-hookz/web": "^25.3.0",
60
+ "@react-hookz/web": "^26.1.0",
60
61
  "@xstate/react": "6.1.0",
61
62
  "@xstate/store": "4.3.0",
62
63
  "@xstate/store-react": "2.1.0",
63
- "@xyflow/react": "12.12.0",
64
- "@xyflow/system": "0.0.83",
64
+ "@xyflow/react": "12.12.1",
65
+ "@xyflow/system": "0.0.84",
65
66
  "bezier-js": "^6.1.4",
66
67
  "d3-force": "^3.0.0",
67
68
  "d3-shape": "^3.2.0",
68
69
  "defu": "^6.1.7",
69
- "fast-equals": "^6.1.1",
70
+ "fast-equals": "^6.2.2",
71
+ "fuse.js": "^7.5.0",
70
72
  "immer": "^11.1.21",
71
- "motion": "^12.43.0",
73
+ "motion": "^14.10.1",
72
74
  "nanostores": "1.5.5",
73
- "react": "19.3.0",
74
- "react-dom": "19.3.0",
75
+ "react": "19.3.1",
76
+ "react-dom": "19.3.1",
75
77
  "react-error-boundary": "^6.1.6",
76
- "remeda": "^2.51.0",
78
+ "react-resizable-panels": "^4.14.3",
79
+ "remeda": "^2.52.0",
77
80
  "type-fest": "^4.41.0",
78
- "xstate": "5.33.2"
81
+ "xstate": "5.33.3"
79
82
  },
80
83
  "devDependencies": {
81
84
  "@likec4/devops": "1.59.4",
82
- "@likec4/tsconfig": "1.60.0",
83
- "@pandacss/dev": "^1.12.1",
84
- "@statelyai/inspect": "^0.4.0",
85
+ "@likec4/tsconfig": "1.61.0",
86
+ "@pandacss/dev": "^1.12.2",
87
+ "@statelyai/inspect": "^0.7.2",
85
88
  "@tabler/icons-react": "3.49.0",
86
- "@tsdown/css": "^0.23.0",
89
+ "@tsdown/css": "^0.23.4",
87
90
  "@types/bezier-js": "^4.1.3",
88
91
  "@types/d3-force": "^3.0.10",
89
92
  "@types/d3-shape": "^3.1.8",
90
- "@types/node": "~22.19.19",
93
+ "@types/node": "~22.20.5",
91
94
  "@types/react": "19.3.0",
92
95
  "@types/react-dom": "19.3.0",
93
96
  "@vitejs/plugin-react": "^6.1.2",
94
- "oxc-transform-react": "^0.153.0",
95
- "oxlint": "1.87.0",
96
- "postcss": "8.5.29",
97
+ "oxc-transform-react": "^0.156.0",
98
+ "oxlint": "1.88.0",
99
+ "postcss": "8.5.30",
97
100
  "postcss-import": "^17.0.0",
98
- "tsdown": "^0.23.0",
101
+ "tsdown": "^0.23.4",
99
102
  "typescript": "6.0.3",
100
- "vite": "^8.3.4",
101
- "vite-plugin-dts": "5.0.2",
102
- "vitest": "4.1.11",
103
+ "vite": "^8.3.5",
104
+ "vite-plugin-dts": "5.1.2",
105
+ "vitest": "4.1.12",
103
106
  "zx": "8.8.5"
104
107
  },
105
108
  "publishConfig": {