@likec4/diagram 1.46.4 → 1.48.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 (337) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/bundle/index.js +7332 -5799
  4. package/dist/LikeC4Diagram.d.ts +1 -1
  5. package/dist/LikeC4Diagram.js +20 -14
  6. package/dist/LikeC4Diagram.props.d.ts +2 -6
  7. package/dist/LikeC4ProjectsOverview.d.ts +7 -0
  8. package/dist/LikeC4ProjectsOverview.js +32 -0
  9. package/dist/LikeC4ProjectsProvider.js +7 -5
  10. package/dist/LikeC4Styles.d.ts +2 -6
  11. package/dist/LikeC4Styles.js +44 -43
  12. package/dist/LikeC4View.d.ts +9 -1
  13. package/dist/LikeC4View.js +10 -8
  14. package/dist/ReactLikeC4.d.ts +12 -2
  15. package/dist/ReactLikeC4.js +5 -3
  16. package/dist/adhoc-editor/ActorProvider.d.ts +7 -0
  17. package/dist/adhoc-editor/ActorProvider.js +41 -0
  18. package/dist/adhoc-editor/EditorNavigationPanel.d.ts +1 -0
  19. package/dist/adhoc-editor/EditorNavigationPanel.js +32 -0
  20. package/dist/adhoc-editor/LikeC4AdHocViewEditor.d.ts +4 -0
  21. package/dist/adhoc-editor/LikeC4AdHocViewEditor.js +71 -0
  22. package/dist/adhoc-editor/SelectElementOverlay.d.ts +1 -0
  23. package/dist/adhoc-editor/SelectElementOverlay.js +124 -0
  24. package/dist/adhoc-editor/actor.d.ts +131 -0
  25. package/dist/adhoc-editor/actor.editor.d.ts +54 -0
  26. package/dist/adhoc-editor/actor.editor.js +96 -0
  27. package/dist/adhoc-editor/actor.js +20 -0
  28. package/dist/adhoc-editor/actor.layouter.d.ts +48 -0
  29. package/dist/adhoc-editor/actor.layouter.js +66 -0
  30. package/dist/adhoc-editor/actor.types.d.ts +57 -0
  31. package/dist/adhoc-editor/actor.types.js +22 -0
  32. package/dist/adhoc-editor/hooks.d.ts +14 -0
  33. package/dist/adhoc-editor/hooks.js +47 -0
  34. package/dist/adhoc-editor/index.d.ts +2 -0
  35. package/dist/adhoc-editor/viewrules/ViewRulesPanel.d.ts +6 -0
  36. package/dist/adhoc-editor/viewrules/ViewRulesPanel.js +104 -0
  37. package/dist/base/const.d.ts +1 -0
  38. package/dist/base/const.js +2 -1
  39. package/dist/base/updateEdges.js +26 -3
  40. package/dist/base/updateNodes.js +8 -5
  41. package/dist/base-primitives/Markdown.js +1 -1
  42. package/dist/base-primitives/NodeHandles.d.ts +4 -2
  43. package/dist/base-primitives/NodeHandles.js +46 -19
  44. package/dist/base-primitives/compound/CompoundActionButton.js +3 -1
  45. package/dist/base-primitives/compound/CompoundDetailsButton.js +3 -1
  46. package/dist/base-primitives/compound/CompoundNodeContainer.d.ts +4 -3
  47. package/dist/base-primitives/compound/CompoundNodeContainer.js +6 -4
  48. package/dist/base-primitives/compound/CompoundTitle.js +1 -2
  49. package/dist/base-primitives/edge/EdgeActionButton.js +1 -1
  50. package/dist/base-primitives/edge/EdgeContainer.js +5 -2
  51. package/dist/base-primitives/edge/EdgeLabelContainer.js +5 -1
  52. package/dist/base-primitives/element/ElementActionButtons.js +31 -58
  53. package/dist/base-primitives/element/ElementData.d.ts +7 -7
  54. package/dist/base-primitives/element/ElementData.js +61 -48
  55. package/dist/base-primitives/element/ElementDetailsButton.js +2 -1
  56. package/dist/base-primitives/element/ElementNodeContainer.d.ts +2 -2
  57. package/dist/base-primitives/element/ElementNodeContainer.js +3 -3
  58. package/dist/base-primitives/element/ElementShape.js +109 -20
  59. package/dist/base-primitives/element/ElementTags.d.ts +6 -2
  60. package/dist/base-primitives/element/ElementTags.js +55 -32
  61. package/dist/base-primitives/index.d.ts +1 -1
  62. package/dist/base-primitives/memoEdge.js +1 -1
  63. package/dist/base-primitives/memoNode.js +1 -1
  64. package/dist/components/ErrorFallback.js +1 -1
  65. package/dist/components/Link.js +2 -2
  66. package/dist/components/Logo.js +1 -1
  67. package/dist/components/NavigationPanel.d.ts +11 -0
  68. package/dist/components/NavigationPanel.js +50 -0
  69. package/dist/components/RootContainer.js +5 -8
  70. package/dist/context/DefaultMantineProvider.d.ts +2 -0
  71. package/dist/context/DefaultMantineProvider.js +66 -0
  72. package/dist/context/DiagramEventHandlers.js +1 -1
  73. package/dist/context/DiagramFeatures.js +12 -11
  74. package/dist/context/EnsureMantine.d.ts +0 -3
  75. package/dist/context/EnsureMantine.js +3 -4
  76. package/dist/context/IconRenderer.d.ts +14 -0
  77. package/dist/context/IconRenderer.js +11 -8
  78. package/dist/context/TagStylesContext.js +12 -4
  79. package/dist/custom/hooks.d.ts +2 -2
  80. package/dist/custom/index.d.ts +1 -1
  81. package/dist/custom/index.js +2 -2
  82. package/dist/editor/LikeC4EditorCallbacks.d.ts +18 -0
  83. package/dist/editor/LikeC4EditorCallbacks.js +5 -0
  84. package/dist/editor/LikeC4EditorProvider.d.ts +30 -18
  85. package/dist/editor/LikeC4EditorProvider.js +2 -2
  86. package/dist/editor/applyChangesToManualLayout.js +1 -0
  87. package/dist/editor/editorActor.actions.d.ts +25 -25
  88. package/dist/editor/editorActor.actions.js +2 -2
  89. package/dist/editor/editorActor.setup.d.ts +84 -0
  90. package/dist/editor/editorActor.setup.js +38 -0
  91. package/dist/editor/editorActor.states.d.ts +9 -0
  92. package/dist/editor/{editorActor.js → editorActor.states.js} +22 -64
  93. package/dist/editor/index.d.ts +4 -3
  94. package/dist/editor/useEditorActorLogic.d.ts +2 -564
  95. package/dist/editor/useEditorActorLogic.js +8 -12
  96. package/dist/hooks/index.d.ts +1 -1
  97. package/dist/hooks/useCallbackRef.d.ts +6 -0
  98. package/dist/hooks/useCurrentViewModel.d.ts +10 -0
  99. package/dist/hooks/useDiagram.js +2 -2
  100. package/dist/hooks/useDiagramCompareLayout.d.ts +1 -1
  101. package/dist/hooks/useDiagramCompareLayout.js +1 -1
  102. package/dist/hooks/useLikeC4ElementsTree.js +1 -1
  103. package/dist/hooks/useLikeC4Model.js +2 -2
  104. package/dist/hooks/useLikeC4Project.js +10 -2
  105. package/dist/hooks/useLikeC4Styles.js +0 -3
  106. package/dist/hooks/useSetState.d.ts +6 -1
  107. package/dist/hooks/useSetState.js +7 -4
  108. package/dist/hooks/useXYFlow.d.ts +7 -1
  109. package/dist/hooks/useXYFlow.js +4 -4
  110. package/dist/index.d.ts +9 -5
  111. package/dist/index.js +6 -3
  112. package/dist/likec4diagram/DiagramUI.js +1 -3
  113. package/dist/likec4diagram/DiagramXYFlow.js +26 -12
  114. package/dist/likec4diagram/convert-to-xyflow.d.ts +2 -1
  115. package/dist/likec4diagram/convert-to-xyflow.js +2 -6
  116. package/dist/likec4diagram/custom/edges/RelationshipEdge.js +13 -14
  117. package/dist/likec4diagram/custom/edges/useControlPoints.js +3 -3
  118. package/dist/likec4diagram/custom/edges/useRelationshipEdgePath.d.ts +3 -0
  119. package/dist/likec4diagram/custom/edges/useRelationshipEdgePath.js +68 -35
  120. package/dist/likec4diagram/custom/nodes/ElementActions.d.ts +1 -2
  121. package/dist/likec4diagram/custom/nodes/ElementActions.js +7 -10
  122. package/dist/likec4diagram/custom/nodes/SequenceActorNode.js +7 -5
  123. package/dist/likec4diagram/custom/nodes/nodes.js +25 -6
  124. package/dist/likec4diagram/custom/nodes/toolbar/ColorButton.js +8 -7
  125. package/dist/likec4diagram/custom/nodes/toolbar/CompoundToolbar.js +1 -38
  126. package/dist/likec4diagram/custom/nodes/toolbar/ElementToolbar.d.ts +6 -1
  127. package/dist/likec4diagram/custom/nodes/toolbar/ElementToolbar.js +35 -19
  128. package/dist/likec4diagram/custom/nodes/toolbar/Toolbar.js +9 -5
  129. package/dist/likec4diagram/custom/nodes/toolbar/_shared.d.ts +6 -1
  130. package/dist/likec4diagram/custom/nodes/toolbar/_shared.js +46 -10
  131. package/dist/likec4diagram/custom/nodes/toolbar/styles.css.js +2 -2
  132. package/dist/likec4diagram/relationship-popover/RelationshipPopover.js +15 -15
  133. package/dist/likec4diagram/relationship-popover/components.d.ts +7 -0
  134. package/dist/likec4diagram/relationship-popover/components.js +39 -0
  135. package/dist/likec4diagram/state/DiagramActorProvider.d.ts +4 -3
  136. package/dist/likec4diagram/state/DiagramActorProvider.js +14 -15
  137. package/dist/likec4diagram/state/assign.d.ts +1 -1
  138. package/dist/likec4diagram/state/createViewChange.js +16 -4
  139. package/dist/likec4diagram/state/machine.actions.d.ts +65 -0
  140. package/dist/likec4diagram/state/machine.actions.js +51 -39
  141. package/dist/likec4diagram/state/machine.actions.layout.d.ts +22 -2
  142. package/dist/likec4diagram/state/machine.actions.layout.js +32 -14
  143. package/dist/likec4diagram/state/machine.d.ts +1 -1
  144. package/dist/likec4diagram/state/machine.js +31 -30
  145. package/dist/likec4diagram/state/machine.setup.d.ts +21 -5
  146. package/dist/likec4diagram/state/machine.setup.js +13 -4
  147. package/dist/likec4diagram/state/machine.state.initializing.d.ts +32 -2
  148. package/dist/likec4diagram/state/machine.state.navigating.d.ts +1 -1
  149. package/dist/likec4diagram/state/machine.state.navigating.js +81 -49
  150. package/dist/likec4diagram/state/machine.state.ready.d.ts +508 -582
  151. package/dist/likec4diagram/state/machine.state.ready.focused.d.ts +17 -148
  152. package/dist/likec4diagram/state/machine.state.ready.focused.js +6 -14
  153. package/dist/likec4diagram/state/machine.state.ready.idle.d.ts +11 -96
  154. package/dist/likec4diagram/state/machine.state.ready.idle.js +7 -12
  155. package/dist/likec4diagram/state/machine.state.ready.js +80 -69
  156. package/dist/likec4diagram/state/machine.state.ready.printing.d.ts +4 -0
  157. package/dist/likec4diagram/state/machine.state.ready.printing.js +4 -3
  158. package/dist/likec4diagram/state/machine.state.ready.walkthrough.d.ts +145 -2
  159. package/dist/likec4diagram/state/machine.state.ready.walkthrough.js +29 -21
  160. package/dist/likec4diagram/state/types.d.ts +1 -1
  161. package/dist/likec4diagram/state/utils.d.ts +13 -14
  162. package/dist/likec4diagram/state/utils.js +11 -3
  163. package/dist/likec4diagram/types.d.ts +9 -1
  164. package/dist/likec4diagram/ui/notation/NotationPanel.css.js +1 -1
  165. package/dist/likec4diagram/ui/notation/NotationPanel.js +3 -3
  166. package/dist/likec4diagram/useLayoutConstraints.js +4 -1
  167. package/dist/likec4diagram/xyflow-diagram/diagram-view.d.ts +11 -3
  168. package/dist/likec4diagram/xyflow-diagram/diagram-view.js +5 -3
  169. package/dist/likec4diagram/xyflow-sequence/sequence-layout.d.ts +7 -3
  170. package/dist/likec4diagram/xyflow-sequence/sequence-layout.js +10 -8
  171. package/dist/likec4diagram/xyflow-sequence/utils.d.ts +1 -1
  172. package/dist/navigationpanel/NavigationPanel.js +2 -1
  173. package/dist/navigationpanel/NavigationPanelControls.js +6 -4
  174. package/dist/navigationpanel/NavigationPanelDropdown.js +7 -7
  175. package/dist/navigationpanel/_common.js +1 -2
  176. package/dist/navigationpanel/comparepanel/CompareActionsMenu.js +2 -2
  177. package/dist/navigationpanel/comparepanel/ComparePanelControls.js +1 -1
  178. package/dist/navigationpanel/comparepanel/LayoutTypeSwitcher.js +4 -5
  179. package/dist/navigationpanel/controls/DetailsControls.js +5 -5
  180. package/dist/navigationpanel/controls/LayoutWarning.js +2 -2
  181. package/dist/navigationpanel/controls/LogoButton.d.ts +1 -0
  182. package/dist/navigationpanel/controls/{BurgerButton.js → LogoButton.js} +5 -5
  183. package/dist/navigationpanel/controls/NavigationButtons.js +2 -2
  184. package/dist/navigationpanel/controls/OpenSource.js +1 -1
  185. package/dist/navigationpanel/controls/SearchControl.d.ts +1 -2
  186. package/dist/navigationpanel/controls/SearchControl.js +8 -12
  187. package/dist/navigationpanel/controls/ToggleReadonly.js +4 -5
  188. package/dist/navigationpanel/controls/index.d.ts +1 -1
  189. package/dist/navigationpanel/dropdown/ProjectsMenu.js +12 -6
  190. package/dist/navigationpanel/editorpanel/CenterCamera.js +1 -1
  191. package/dist/navigationpanel/editorpanel/ChangeAutoLayoutButton.js +1 -1
  192. package/dist/navigationpanel/editorpanel/ManualLayoutToolsButton.js +9 -9
  193. package/dist/navigationpanel/editorpanel/ToggleReadonly.js +1 -1
  194. package/dist/navigationpanel/editorpanel/styles.js +4 -4
  195. package/dist/navigationpanel/styles.css.js +1 -1
  196. package/dist/navigationpanel/walkthrough/ActiveWalkthroughControls.js +3 -3
  197. package/dist/navigationpanel/walkthrough/DynamicViewControls.d.ts +67 -67
  198. package/dist/navigationpanel/walkthrough/DynamicViewControls.js +1 -1
  199. package/dist/navigationpanel/walkthrough/WalkthroughPanel.js +1 -1
  200. package/dist/node_modules/.pnpm/@tabler_icons-react@3.36.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconCirclePlus.js +14 -0
  201. package/dist/node_modules/.pnpm/@tabler_icons-react@3.36.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconFileText.js +14 -0
  202. package/dist/node_modules/.pnpm/@tabler_icons-react@3.36.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconTrash.js +14 -0
  203. package/dist/overlays/element-details/ElementDetailsCard.css.js +4 -4
  204. package/dist/overlays/element-details/ElementDetailsCard.js +4 -4
  205. package/dist/overlays/element-details/MetadataValue.js +6 -7
  206. package/dist/overlays/element-details/TabPanelDeployments.js +7 -5
  207. package/dist/overlays/element-details/TabPanelRelationships.css.js +5 -25
  208. package/dist/overlays/element-details/TabPanelRelationships.js +3 -3
  209. package/dist/overlays/element-details/TabPanelStructure.js +3 -2
  210. package/dist/overlays/overlaysActor.js +18 -0
  211. package/dist/overlays/relationship-details/RelationshipDetails.d.ts +0 -5
  212. package/dist/overlays/relationship-details/RelationshipDetails.js +4 -4
  213. package/dist/overlays/relationship-details/SelectEdge.css.js +2 -2
  214. package/dist/overlays/relationship-details/SelectEdge.js +2 -2
  215. package/dist/overlays/relationship-details/compute.js +1 -1
  216. package/dist/overlays/relationship-details/custom/ElementActions.js +3 -3
  217. package/dist/overlays/relationship-details/custom/nodeTypes.js +14 -1
  218. package/dist/overlays/relationship-details/layout.js +1 -1
  219. package/dist/overlays/relationships-browser/RelationshipsBrowser.d.ts +0 -5
  220. package/dist/overlays/relationships-browser/RelationshipsBrowser.js +116 -21
  221. package/dist/overlays/relationships-browser/SelectElement.js +2 -2
  222. package/dist/overlays/relationships-browser/custom/ElementActions.js +3 -3
  223. package/dist/overlays/relationships-browser/custom/EmptyNode.js +21 -6
  224. package/dist/overlays/relationships-browser/custom/edgeTypes.js +0 -1
  225. package/dist/overlays/relationships-browser/custom/nodeTypes.js +14 -1
  226. package/dist/overlays/relationships-browser/layout.d.ts +1 -1
  227. package/dist/overlays/relationships-browser/layout.js +1 -1
  228. package/dist/projects-overview/ProjectsOverview.d.ts +13 -0
  229. package/dist/projects-overview/ProjectsOverview.js +57 -0
  230. package/dist/projects-overview/ProjectsOverviewXY.d.ts +17 -0
  231. package/dist/projects-overview/ProjectsOverviewXY.js +98 -0
  232. package/dist/projects-overview/_types.d.ts +34 -0
  233. package/dist/projects-overview/actor.d.ts +121 -0
  234. package/dist/projects-overview/actor.js +359 -0
  235. package/dist/projects-overview/context.d.ts +4 -0
  236. package/dist/projects-overview/context.js +9 -0
  237. package/dist/projects-overview/custom/edgeTypes.d.ts +3 -0
  238. package/dist/projects-overview/custom/edgeTypes.js +23 -0
  239. package/dist/projects-overview/custom/index.d.ts +2 -0
  240. package/dist/projects-overview/custom/nodeTypes.d.ts +2 -0
  241. package/dist/projects-overview/custom/nodeTypes.js +45 -0
  242. package/dist/projects-overview/hooks.d.ts +5 -0
  243. package/dist/projects-overview/hooks.js +14 -0
  244. package/dist/projects-overview/index.d.ts +1 -0
  245. package/dist/projects-overview/layouted-to-xyflow.d.ts +6 -0
  246. package/dist/projects-overview/layouted-to-xyflow.js +49 -0
  247. package/dist/projects-overview/panel/ProjectsOverviewPanel.d.ts +1 -0
  248. package/dist/projects-overview/panel/ProjectsOverviewPanel.js +11 -0
  249. package/dist/projects-overview/persistence.d.ts +5 -0
  250. package/dist/projects-overview/persistence.js +24 -0
  251. package/dist/search/Search.d.ts +1 -4
  252. package/dist/search/Search.js +89 -87
  253. package/dist/search/components/ElementsColumn.css.js +3 -3
  254. package/dist/search/components/ElementsColumn.js +3 -4
  255. package/dist/search/components/PickView.d.ts +3 -1
  256. package/dist/search/components/PickView.js +5 -4
  257. package/dist/search/components/SearchByTags.js +1 -1
  258. package/dist/search/components/SearchInput.js +1 -1
  259. package/dist/search/components/ViewsColum.js +2 -2
  260. package/dist/search/components/_shared.css.js +1 -1
  261. package/dist/search/components/utils.js +1 -1
  262. package/dist/search/hooks.d.ts +1 -6
  263. package/dist/search/hooks.js +12 -9
  264. package/dist/search/searchActor.d.ts +1 -1
  265. package/dist/shadowroot/ShadowRoot.js +20 -19
  266. package/dist/shadowroot/styles.css.d.ts +0 -2
  267. package/dist/shadowroot/styles.css.js +1 -34
  268. package/dist/styles-font.css2.js +1 -1
  269. package/dist/styles.css2.js +1 -1
  270. package/dist/utils/view-bounds.js +9 -5
  271. package/dist/utils/xyflow.d.ts +19 -3
  272. package/dist/utils/xyflow.js +52 -9
  273. package/package.json +23 -22
  274. package/panda.buildinfo.json +93 -84
  275. package/styles-font.css +1 -1
  276. package/styles-min.css +1 -1
  277. package/styles.css +1 -1
  278. package/dist/base-primitives/element/ElementNodeContainer.css.d.ts +0 -1
  279. package/dist/base-primitives/element/ElementNodeContainer.css.js +0 -39
  280. package/dist/editor/__tests__/fixture.d.ts +0 -205
  281. package/dist/editor/editorActor.d.ts +0 -653
  282. package/dist/likec4diagram/relationship-popover/styles.css.d.ts +0 -2
  283. package/dist/likec4diagram/relationship-popover/styles.css.js +0 -28
  284. package/dist/navigationpanel/controls/BurgerButton.d.ts +0 -1
  285. package/dist/overlays/relationships-browser/custom/styles.css.js +0 -14
  286. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/createReactComponent.js +0 -0
  287. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/defaultAttributes.js +0 -0
  288. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconAlertTriangle.js +0 -0
  289. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowDownRight.js +0 -0
  290. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowLeft.js +0 -0
  291. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowRight.js +0 -0
  292. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconBolt.js +0 -0
  293. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconBrowser.js +0 -0
  294. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconCheck.js +0 -0
  295. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconChevronDown.js +0 -0
  296. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconChevronLeft.js +0 -0
  297. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconChevronRight.js +0 -0
  298. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconCopy.js +0 -0
  299. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconCylinder.js +0 -0
  300. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconDeviceMobile.js +0 -0
  301. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconDirectionSignFilled.js +0 -0
  302. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconExternalLink.js +0 -0
  303. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconFileSymlink.js +0 -0
  304. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconFocusCentered.js +0 -0
  305. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconFolderFilled.js +0 -0
  306. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconHelpCircle.js +0 -0
  307. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconId.js +0 -0
  308. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconInfoCircle.js +0 -0
  309. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutAlignBottom.js +0 -0
  310. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutAlignCenter.js +0 -0
  311. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutAlignLeft.js +0 -0
  312. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutAlignMiddle.js +0 -0
  313. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutAlignRight.js +0 -0
  314. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutAlignTop.js +0 -0
  315. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutBoardSplit.js +0 -0
  316. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutCollage.js +0 -0
  317. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutDashboard.js +0 -0
  318. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconLink.js +0 -0
  319. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconLock.js +0 -0
  320. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconLockOpen2.js +0 -0
  321. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconPlayerPlayFilled.js +0 -0
  322. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconPlayerSkipBackFilled.js +0 -0
  323. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconPlayerSkipForwardFilled.js +0 -0
  324. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconPlayerStopFilled.js +0 -0
  325. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconRectangularPrism.js +0 -0
  326. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconReorder.js +0 -0
  327. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconRouteOff.js +0 -0
  328. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconSearch.js +0 -0
  329. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconSelector.js +0 -0
  330. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconStack2.js +0 -0
  331. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconStarFilled.js +0 -0
  332. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconTarget.js +0 -0
  333. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconTransform.js +0 -0
  334. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconUser.js +0 -0
  335. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconX.js +0 -0
  336. /package/dist/node_modules/.pnpm/{@tabler_icons-react@3.36.0_react@19.2.3 → @tabler_icons-react@3.36.0_react@19.2.4}/node_modules/@tabler/icons-react/dist/esm/icons/IconZoomScan.js +0 -0
  337. /package/dist/{overlays/relationships-browser → projects-overview}/custom/styles.css.d.ts +0 -0
@@ -1,13 +1,14 @@
1
1
  import { DiagramView, DynamicViewDisplayVariant, WhereOperator } from '@likec4/core/types';
2
2
  import { PropsWithChildren } from 'react';
3
3
  import { ViewPaddings } from '../../LikeC4Diagram.props';
4
- export declare function DiagramActorProvider({ view, zoomable, pannable, nodesDraggable, nodesSelectable, fitViewPadding, where, children, dynamicViewVariant: _defaultVariant, }: PropsWithChildren<{
4
+ export declare function DiagramActorProvider({ id, view, zoomable, pannable, nodesDraggable, nodesSelectable, fitViewPadding, where, children, dynamicViewVariant: _defaultVariant, }: PropsWithChildren<{
5
+ id: string;
5
6
  view: DiagramView;
6
7
  zoomable: boolean;
7
8
  pannable: boolean;
8
9
  nodesDraggable: boolean;
9
10
  nodesSelectable: boolean;
10
11
  fitViewPadding: ViewPaddings;
11
- where: WhereOperator | null;
12
- dynamicViewVariant: DynamicViewDisplayVariant | undefined;
12
+ where?: WhereOperator | null;
13
+ dynamicViewVariant?: DynamicViewDisplayVariant | undefined;
13
14
  }>): import("react/jsx-runtime").JSX.Element;
@@ -1,10 +1,9 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { useRafEffect } from '@react-hookz/web';
3
2
  import { useActorRef, useSelector } from '@xstate/react';
4
3
  import { useStoreApi } from '@xyflow/react';
5
4
  import { shallowEqual } from 'fast-equals';
6
5
  import { useRef, useState, useEffect, memo } from 'react';
7
- import { omitBy, isNullish } from 'remeda';
6
+ import { isNullish } from 'remeda';
8
7
  import { ErrorBoundary } from '../../components/ErrorFallback.js';
9
8
  import { useDiagramEventHandlers } from '../../context/DiagramEventHandlers.js';
10
9
  import { useEnabledFeatures, DiagramFeatures } from '../../context/DiagramFeatures.js';
@@ -12,20 +11,21 @@ import { CurrentViewModelContext } from '../../context/LikeC4ModelContext.js';
12
11
  import { useEditorActorLogic } from '../../editor/useEditorActorLogic.js';
13
12
  import { DiagramActorContextProvider, DiagramApiContextProvider, useDiagram } from '../../hooks/safeContext.js';
14
13
  import { useOnDiagramEvent, useDiagramContext } from '../../hooks/useDiagram.js';
15
- import { useLikeC4Model } from '../../hooks/useLikeC4Model.js';
14
+ import { useOptionalLikeC4Model } from '../../hooks/useLikeC4Model.js';
16
15
  import { useUpdateEffect } from '../../hooks/useUpdateEffect.js';
17
16
  import { makeDiagramApi } from './diagram-api.js';
18
17
  import { diagramMachine } from './machine.js';
19
18
  import { DiagramToggledFeaturesPersistence } from './persistence.js';
20
19
 
21
20
  function DiagramActorProvider({
21
+ id,
22
22
  view,
23
23
  zoomable,
24
24
  pannable,
25
25
  nodesDraggable,
26
26
  nodesSelectable,
27
27
  fitViewPadding,
28
- where,
28
+ where = null,
29
29
  children,
30
30
  dynamicViewVariant: _defaultVariant
31
31
  }) {
@@ -38,7 +38,7 @@ function DiagramActorProvider({
38
38
  }
39
39
  }),
40
40
  {
41
- id: `diagram`,
41
+ id: `diagram-${id}`,
42
42
  systemId: "diagram",
43
43
  // ...inspector,
44
44
  input: {
@@ -57,11 +57,10 @@ function DiagramActorProvider({
57
57
  const actorRef = useRef(actor);
58
58
  if (actorRef.current !== actor) {
59
59
  console.warn("DiagramMachine actor instance changed", {
60
- context: {
61
- previous: actorRef.current.getSnapshot().context,
62
- current: actor.getSnapshot().context
63
- }
60
+ previous: actorRef.current.getSnapshot().context,
61
+ current: actor.getSnapshot().context
64
62
  });
63
+ actorRef.current.send({ type: "destroy" });
65
64
  actorRef.current = actor;
66
65
  }
67
66
  const [api, setApi] = useState(() => makeDiagramApi(actorRef));
@@ -92,7 +91,7 @@ function DiagramActorProvider({
92
91
  if (!_defaultVariant) return;
93
92
  actor.send({ type: "switch.dynamicViewVariant", variant: _defaultVariant });
94
93
  }, [_defaultVariant, actor]);
95
- useRafEffect(
94
+ useEffect(
96
95
  () => actor.send({ type: "update.view", view, source: "external" }),
97
96
  [actor, view]
98
97
  );
@@ -104,8 +103,8 @@ function DiagramActorProvider({
104
103
  const selectFromActor = ({ context }) => {
105
104
  let toggledFeatures = context.toggledFeatures;
106
105
  const hasDrifts = context.view.drifts != null && context.view.drifts.length > 0;
107
- const enableCompareWithLatest = context.features.enableCompareWithLatest && (toggledFeatures.enableCompareWithLatest ?? false) && isNullish(context.activeWalkthrough) && hasDrifts;
108
- const enableReadOnly = context.features.enableReadOnly || toggledFeatures.enableReadOnly || !!context.activeWalkthrough || context.dynamicViewVariant === "sequence" && context.view._type === "dynamic" || enableCompareWithLatest && context.view._layout === "auto";
106
+ const enableCompareWithLatest = hasDrifts && context.features.enableCompareWithLatest && (toggledFeatures.enableCompareWithLatest ?? false) && isNullish(context.activeWalkthrough);
107
+ const enableReadOnly = context.features.enableReadOnly || toggledFeatures.enableReadOnly || !!context.activeWalkthrough || enableCompareWithLatest && context.view._layout === "auto";
109
108
  if (toggledFeatures.enableReadOnly !== enableReadOnly || toggledFeatures.enableCompareWithLatest !== enableCompareWithLatest) {
110
109
  toggledFeatures = {
111
110
  ...toggledFeatures,
@@ -127,8 +126,8 @@ function CurrentViewModelProvider({ children, actorRef }) {
127
126
  selectFromActor,
128
127
  compareSelected
129
128
  );
130
- const likec4model = useLikeC4Model();
131
- const viewmodel = likec4model.findView(viewId);
129
+ const likec4model = useOptionalLikeC4Model();
130
+ const viewmodel = likec4model?.findView(viewId) ?? null;
132
131
  return /* @__PURE__ */ jsx(CurrentViewModelContext.Provider, { value: viewmodel, children: /* @__PURE__ */ jsx(DiagramFeatures, { overrides: toggledFeatures, children }) });
133
132
  }
134
133
  const DiagramActorEventListener = memo(() => {
@@ -161,7 +160,7 @@ const DiagramActorEventListener = memo(() => {
161
160
  shallowEqual
162
161
  );
163
162
  useUpdateEffect(() => {
164
- DiagramToggledFeaturesPersistence.write(omitBy(toggledFeatures, isNullish));
163
+ DiagramToggledFeaturesPersistence.write(toggledFeatures);
165
164
  }, [toggledFeatures]);
166
165
  return null;
167
166
  });
@@ -23,4 +23,4 @@ export declare function focusNodesEdges(context: DiagramContext): {
23
23
  } | null;
24
24
  export declare function updateNodeData({ context, event }: ActionArg): Partial<DiagramContext>;
25
25
  export declare function updateEdgeData({ context, event }: ActionArg): Partial<DiagramContext>;
26
- export declare function resetEdgeControlPoints(nodeLookup: NodeLookup, edge: Types.Edge): [XYPoint] | [XYPoint, XYPoint];
26
+ export declare function resetEdgeControlPoints(nodeLookup: NodeLookup, edge: Types.Edge): [XYPoint, XYPoint];
@@ -1,5 +1,5 @@
1
1
  import { getNodeDimensions } from '@xyflow/system';
2
- import { map, omit, hasAtLeast } from 'remeda';
2
+ import { map, hasAtLeast } from 'remeda';
3
3
  import { calcViewBounds } from '../../utils/view-bounds.js';
4
4
  import { isSamePoint, bezierControlPoints } from '../../utils/xyflow.js';
5
5
 
@@ -56,14 +56,26 @@ function createViewChange(parentContext) {
56
56
  controlPoints = bezierControlPoints(data.points);
57
57
  }
58
58
  const _updated = {
59
- ...omit(edge, ["controlPoints", "labelBBox"]),
59
+ ...edge,
60
60
  points: data.points
61
61
  };
62
62
  if (data.labelBBox) {
63
- _updated.labelBBox = data.labelBBox;
63
+ _updated.labelBBox = {
64
+ x: Math.round(data.labelBBox.x),
65
+ y: Math.round(data.labelBBox.y),
66
+ width: Math.round(data.labelBBox.width),
67
+ height: Math.round(data.labelBBox.height)
68
+ };
69
+ } else {
70
+ _updated.labelBBox = null;
64
71
  }
65
72
  if (hasAtLeast(controlPoints, 1)) {
66
- _updated.controlPoints = controlPoints;
73
+ _updated.controlPoints = map(controlPoints, (v) => ({
74
+ x: Math.round(v.x),
75
+ y: Math.round(v.y)
76
+ }));
77
+ } else {
78
+ _updated.controlPoints = null;
67
79
  }
68
80
  return _updated;
69
81
  });
@@ -341,6 +341,10 @@ export declare const focusOnNodesAndEdges: () => ActionFunction<Context, Events,
341
341
  type: "click: selected edge";
342
342
  params: unknown;
343
343
  };
344
+ "click: active walkthrough step": {
345
+ type: "click: active walkthrough step";
346
+ params: unknown;
347
+ };
344
348
  }>, never, EmittedEvents>;
345
349
  export declare const undimEverything: () => ActionFunction<Context, Events, Events, undefined, Values<{
346
350
  hotkeyActorLogic: {
@@ -456,6 +460,7 @@ export declare const onNodeMouseLeave: (params?: {
456
460
  }>, never, never, never, never>;
457
461
  export declare const emitPaneClick: () => ActionFunction<Context, Events, Events, undefined, never, never, never, never, EmittedEvents>;
458
462
  export declare const emitOpenSource: (params?: OpenSourceParams) => ActionFunction<Context, Events, Events, undefined, never, never, never, never, EmittedEvents>;
463
+ export declare const emitOpenSourceOfView: () => ActionFunction<Context, Events, Events, undefined, never, never, never, never, EmittedEvents>;
459
464
  export declare const emitInitialized: () => ActionFunction<Context, Events, Events, undefined, never, never, never, never, EmittedEvents>;
460
465
  export declare const emitNodeClick: () => ActionFunction<Context, Events, Events, undefined, never, never, never, never, EmittedEvents>;
461
466
  export declare const emitNavigateTo: (params?: {
@@ -577,6 +582,10 @@ export declare const triggerChange: (viewChange?: ViewChange) => ActionFunction<
577
582
  type: "click: selected edge";
578
583
  params: unknown;
579
584
  };
585
+ "click: active walkthrough step": {
586
+ type: "click: active walkthrough step";
587
+ params: unknown;
588
+ };
580
589
  }>, never, EmittedEvents>;
581
590
  export declare const emitOnLayoutTypeChange: () => ActionFunction<Context, Events, Events, undefined, Values<{
582
591
  hotkeyActorLogic: {
@@ -693,6 +702,10 @@ export declare const emitOnLayoutTypeChange: () => ActionFunction<Context, Event
693
702
  type: "click: selected edge";
694
703
  params: unknown;
695
704
  };
705
+ "click: active walkthrough step": {
706
+ type: "click: active walkthrough step";
707
+ params: unknown;
708
+ };
696
709
  }>, never, EmittedEvents>;
697
710
  export declare const layoutAlign: (params?: {
698
711
  mode: AlignmentMode;
@@ -811,6 +824,10 @@ export declare const layoutAlign: (params?: {
811
824
  type: "click: selected edge";
812
825
  params: unknown;
813
826
  };
827
+ "click: active walkthrough step": {
828
+ type: "click: active walkthrough step";
829
+ params: unknown;
830
+ };
814
831
  }>, never, EmittedEvents>;
815
832
  export declare const resetEdgesControlPoints: () => ActionFunction<Context, Events, Events, undefined, Values<{
816
833
  hotkeyActorLogic: {
@@ -1037,6 +1054,10 @@ export declare const stopEditorActor: () => ActionFunction<Context, Events, Even
1037
1054
  type: "click: selected edge";
1038
1055
  params: unknown;
1039
1056
  };
1057
+ "click: active walkthrough step": {
1058
+ type: "click: active walkthrough step";
1059
+ params: unknown;
1060
+ };
1040
1061
  }>, never, EmittedEvents>;
1041
1062
  /**
1042
1063
  * Ensure that the sync layout actor is running or stopped based on the read-only state
@@ -1156,6 +1177,10 @@ export declare const ensureEditorActor: () => ActionFunction<Context, Events, Ev
1156
1177
  type: "click: selected edge";
1157
1178
  params: unknown;
1158
1179
  };
1180
+ "click: active walkthrough step": {
1181
+ type: "click: active walkthrough step";
1182
+ params: unknown;
1183
+ };
1159
1184
  }>, never, EmittedEvents>;
1160
1185
  export declare const startEditing: (subject?: "node" | "edge") => ActionFunction<Context, Events, Events, undefined, never, never, never, never, never>;
1161
1186
  export declare const sendSynced: () => ActionFunction<Context, Events, Events, undefined, never, never, never, never, never>;
@@ -1279,6 +1304,10 @@ export declare const openElementDetails: (params?: {
1279
1304
  type: "click: selected edge";
1280
1305
  params: unknown;
1281
1306
  };
1307
+ "click: active walkthrough step": {
1308
+ type: "click: active walkthrough step";
1309
+ params: unknown;
1310
+ };
1282
1311
  }>, never, EmittedEvents>;
1283
1312
  export declare const openOverlay: () => ActionFunction<Context, Events, Events, undefined, Values<{
1284
1313
  hotkeyActorLogic: {
@@ -1395,6 +1424,10 @@ export declare const openOverlay: () => ActionFunction<Context, Events, Events,
1395
1424
  type: "click: selected edge";
1396
1425
  params: unknown;
1397
1426
  };
1427
+ "click: active walkthrough step": {
1428
+ type: "click: active walkthrough step";
1429
+ params: unknown;
1430
+ };
1398
1431
  }>, never, EmittedEvents>;
1399
1432
  export declare const openSourceOfFocusedOrLastClickedNode: () => ActionFunction<Context, Events, Events, undefined, Values<{
1400
1433
  hotkeyActorLogic: {
@@ -1511,6 +1544,10 @@ export declare const openSourceOfFocusedOrLastClickedNode: () => ActionFunction<
1511
1544
  type: "click: selected edge";
1512
1545
  params: unknown;
1513
1546
  };
1547
+ "click: active walkthrough step": {
1548
+ type: "click: active walkthrough step";
1549
+ params: unknown;
1550
+ };
1514
1551
  }>, never, EmittedEvents>;
1515
1552
  /**
1516
1553
  * Ensure that the overlays actor is running or stopped based on the current feature flags
@@ -1630,6 +1667,10 @@ export declare const ensureOverlaysActor: () => ActionFunction<Context, Events,
1630
1667
  type: "click: selected edge";
1631
1668
  params: unknown;
1632
1669
  };
1670
+ "click: active walkthrough step": {
1671
+ type: "click: active walkthrough step";
1672
+ params: unknown;
1673
+ };
1633
1674
  }>, never, EmittedEvents>;
1634
1675
  /**
1635
1676
  * Ensure that the search actor is running or stopped based on the current feature flags
@@ -1749,6 +1790,10 @@ export declare const ensureSearchActor: () => ActionFunction<Context, Events, Ev
1749
1790
  type: "click: selected edge";
1750
1791
  params: unknown;
1751
1792
  };
1793
+ "click: active walkthrough step": {
1794
+ type: "click: active walkthrough step";
1795
+ params: unknown;
1796
+ };
1752
1797
  }>, never, EmittedEvents>;
1753
1798
  export declare const onEdgeMouseEnter: () => ActionFunction<Context, Events, Events, undefined, Values<{
1754
1799
  hotkeyActorLogic: {
@@ -1865,6 +1910,10 @@ export declare const onEdgeMouseEnter: () => ActionFunction<Context, Events, Eve
1865
1910
  type: "click: selected edge";
1866
1911
  params: unknown;
1867
1912
  };
1913
+ "click: active walkthrough step": {
1914
+ type: "click: active walkthrough step";
1915
+ params: unknown;
1916
+ };
1868
1917
  }>, never, EmittedEvents>;
1869
1918
  export declare const onEdgeMouseLeave: () => ActionFunction<Context, Events, Events, undefined, Values<{
1870
1919
  hotkeyActorLogic: {
@@ -1981,6 +2030,10 @@ export declare const onEdgeMouseLeave: () => ActionFunction<Context, Events, Eve
1981
2030
  type: "click: selected edge";
1982
2031
  params: unknown;
1983
2032
  };
2033
+ "click: active walkthrough step": {
2034
+ type: "click: active walkthrough step";
2035
+ params: unknown;
2036
+ };
1984
2037
  }>, never, EmittedEvents>;
1985
2038
  export declare const reraise: () => ActionFunction<Context, Events, Events, undefined, never, never, never, never, never>;
1986
2039
  export declare const startHotKeyActor: () => ActionFunction<Context, Events, Events, undefined, Values<{
@@ -2126,6 +2179,10 @@ export declare const startAutoUnfocusTimer: () => ActionFunction<Context, Events
2126
2179
  type: "click: selected edge";
2127
2180
  params: unknown;
2128
2181
  };
2182
+ "click: active walkthrough step": {
2183
+ type: "click: active walkthrough step";
2184
+ params: unknown;
2185
+ };
2129
2186
  }>, never, EmittedEvents>;
2130
2187
  export declare const cancelAutoUnfocusTimer: () => CancelAction<Context, Events, undefined, Events>;
2131
2188
  export declare const handleNavigate: () => ActionFunction<Context, Events, Events, undefined, Values<{
@@ -2243,6 +2300,10 @@ export declare const handleNavigate: () => ActionFunction<Context, Events, Event
2243
2300
  type: "click: selected edge";
2244
2301
  params: unknown;
2245
2302
  };
2303
+ "click: active walkthrough step": {
2304
+ type: "click: active walkthrough step";
2305
+ params: unknown;
2306
+ };
2246
2307
  }>, never, EmittedEvents>;
2247
2308
  export declare const updateView: () => ActionFunction<Context, Events, Events, undefined, Values<{
2248
2309
  hotkeyActorLogic: {
@@ -2359,4 +2420,8 @@ export declare const updateView: () => ActionFunction<Context, Events, Events, u
2359
2420
  type: "click: selected edge";
2360
2421
  params: unknown;
2361
2422
  };
2423
+ "click: active walkthrough step": {
2424
+ type: "click: active walkthrough step";
2425
+ params: unknown;
2426
+ };
2362
2427
  }>, never, EmittedEvents>;
@@ -1,4 +1,4 @@
1
- import { nonNullable, nonexhaustive, invariant } from '@likec4/core';
1
+ import { nonNullable, BBox, nonexhaustive, invariant } from '@likec4/core';
2
2
  import { nodeToRect } from '@xyflow/system';
3
3
  import { produce } from 'immer';
4
4
  import { hasAtLeast, isTruthy } from 'remeda';
@@ -7,10 +7,10 @@ import { convertToXYFlow } from '../convert-to-xyflow.js';
7
7
  import { createLayoutConstraints } from '../useLayoutConstraints.js';
8
8
  import { getAligner, toNodeRect } from './aligners.js';
9
9
  import { resetEdgeControlPoints, mergeXYNodesEdges, focusNodesEdges } from './assign.js';
10
- import { setViewport, cancelFitDiagram, raiseFitDiagram } from './machine.actions.layout.js';
10
+ import { setViewport, setViewportCenter, cancelFitDiagram, raiseFitDiagram } from './machine.actions.layout.js';
11
11
  export { assignViewportBefore, fitDiagram, fitFocusedBounds, raiseSetViewport, raiseUpdateView, returnViewportBefore } from './machine.actions.layout.js';
12
12
  import { machine } from './machine.setup.js';
13
- import { typedSystem, findDiagramEdge, findDiagramNode } from './utils.js';
13
+ import { typedSystem, findDiagramNode, findDiagramEdge, viewBounds } from './utils.js';
14
14
  import { Base } from '../../base/Base.js';
15
15
 
16
16
  const disableCompareWithLatest = () => machine.assign(({ context }) => {
@@ -31,20 +31,20 @@ const onEdgeDoubleClick = () => machine.assign(({ context, event }) => {
31
31
  const { nodeLookup } = context.xystore.getState();
32
32
  return {
33
33
  xyedges: context.xyedges.map((e) => {
34
- if (e.id === event.edge.id) {
35
- const controlPoints = resetEdgeControlPoints(nodeLookup, e);
36
- const pt = controlPoints[0];
37
- return {
38
- ...e,
39
- data: {
40
- ...e.data,
41
- controlPoints,
42
- labelBBox: e.data.labelBBox ? { ...e.data.labelBBox, ...pt } : null,
43
- labelXY: null
44
- }
45
- };
34
+ if (e.id !== event.edge.id) {
35
+ return e;
46
36
  }
47
- return e;
37
+ const controlPoints = resetEdgeControlPoints(nodeLookup, e);
38
+ const pt = controlPoints[0];
39
+ return {
40
+ ...e,
41
+ data: {
42
+ ...e.data,
43
+ controlPoints,
44
+ labelBBox: e.data.labelBBox ? { ...e.data.labelBBox, ...pt } : null,
45
+ labelXY: null
46
+ }
47
+ };
48
48
  })
49
49
  };
50
50
  });
@@ -75,10 +75,11 @@ const assignFocusedNode = () => machine.assign(({ event }) => {
75
75
  case "xyflow.nodeClick":
76
76
  focusedNode = event.node.data.id;
77
77
  break;
78
- case "focus.node":
78
+ case "focus.node": {
79
79
  focusedNode = event.nodeId;
80
80
  autoUnfocusTimer = event.autoUnfocus === true;
81
81
  break;
82
+ }
82
83
  default:
83
84
  throw new Error(`Unexpected event type: ${event.type} in action 'assign: focusedNode'`);
84
85
  }
@@ -105,6 +106,7 @@ const assignXYDataFromView = (view) => machine.assign(({ context, event }) => {
105
106
  {
106
107
  assertEvent(event, "update.view");
107
108
  xydata = "xynodes" in event ? event : convertToXYFlow({
109
+ currentViewId: context.view.id,
108
110
  dynamicViewVariant: context.dynamicViewVariant,
109
111
  view: event.view,
110
112
  where: context.where
@@ -188,18 +190,18 @@ const emitPaneClick = () => machine.emit(() => ({
188
190
  type: "paneClick"
189
191
  }));
190
192
  const emitOpenSource = (params) => machine.emit(({ event }) => {
191
- if (params) {
192
- return {
193
- type: "openSource",
194
- params
195
- };
196
- }
197
193
  assertEvent(event, "open.source");
198
194
  return {
199
195
  type: "openSource",
200
196
  params: event
201
197
  };
202
198
  });
199
+ const emitOpenSourceOfView = () => machine.emit(({ context }) => ({
200
+ type: "openSource",
201
+ params: {
202
+ view: context.view.id
203
+ }
204
+ }));
203
205
  const emitInitialized = () => machine.emit(({ context }) => {
204
206
  invariant(context.xyflow, "XYFlow instance not found");
205
207
  return {
@@ -361,12 +363,13 @@ const tagHighlight = () => machine.assign(({ context, event }) => {
361
363
  });
362
364
  const assignToggledFeatures = () => machine.assign(({ context, event }) => {
363
365
  assertEvent(event, "toggle.feature");
364
- const currentValue = context.toggledFeatures[`enable${event.feature}`] ?? context.features[`enable${event.feature}`];
366
+ const feature = `enable${event.feature}`;
367
+ const currentValue = context.toggledFeatures[feature] ?? context.features[feature];
365
368
  const nextValue = event.forceValue ?? !currentValue;
366
369
  return {
367
370
  toggledFeatures: {
368
371
  ...context.toggledFeatures,
369
- [`enable${event.feature}`]: nextValue
372
+ [feature]: nextValue
370
373
  }
371
374
  };
372
375
  });
@@ -418,7 +421,7 @@ const sendSynced = () => machine.sendTo(
418
421
  type: "synced"
419
422
  }
420
423
  );
421
- const stopEditing = (wasChanged = true) => machine.sendTo(
424
+ const stopEditing = (wasChanged = false) => machine.sendTo(
422
425
  typedSystem.editorActor,
423
426
  {
424
427
  type: "edit.finish",
@@ -507,6 +510,10 @@ const openOverlay = () => machine.enqueueActions(({ context, event, enqueue, che
507
510
  break;
508
511
  }
509
512
  case "open.relationshipsBrowser": {
513
+ if (!context.features.enableRelationshipBrowser) {
514
+ console.warn("RelationshipBrowser feature is disabled");
515
+ return;
516
+ }
510
517
  enqueue.sendTo(
511
518
  typedSystem.overlaysActor,
512
519
  {
@@ -522,6 +529,10 @@ const openOverlay = () => machine.enqueueActions(({ context, event, enqueue, che
522
529
  break;
523
530
  }
524
531
  case "open.relationshipDetails": {
532
+ if (!context.features.enableRelationshipDetails) {
533
+ console.warn("RelationshipDetails feature is disabled");
534
+ return;
535
+ }
525
536
  enqueue.sendTo(
526
537
  typedSystem.overlaysActor,
527
538
  {
@@ -629,14 +640,12 @@ const handleNavigate = () => machine.enqueueActions(({ enqueue, context, event }
629
640
  viewport,
630
641
  viewportChangedManually,
631
642
  viewportBefore,
632
- navigationHistory: {
633
- currentIndex,
634
- history: _history
635
- }
643
+ navigationHistory
636
644
  } = context;
637
- let history = [..._history];
645
+ let { currentIndex, history: _history } = navigationHistory;
646
+ let history = _history;
638
647
  if (currentIndex < _history.length) {
639
- const updatedEntry = produce(_history[currentIndex], (draft) => {
648
+ const updatedEntry = produce(_history.at(currentIndex) ?? {}, (draft) => {
640
649
  draft.viewport = { ...viewport };
641
650
  draft.viewportChangedManually = viewportChangedManually;
642
651
  draft.focusedNode = focusedNode;
@@ -648,7 +657,7 @@ const handleNavigate = () => machine.enqueueActions(({ enqueue, context, event }
648
657
  draft.dynamicViewVariant = null;
649
658
  }
650
659
  if (viewportBefore) {
651
- draft.viewportBefore = viewportBefore;
660
+ draft.viewportBefore = structuredClone(viewportBefore);
652
661
  } else {
653
662
  delete draft.viewportBefore;
654
663
  }
@@ -720,7 +729,6 @@ const updateView = () => machine.enqueueActions(
720
729
  return;
721
730
  }
722
731
  enqueue(sendSynced());
723
- let recenter = !context.viewportChangedManually && !context.focusedNode && !context.activeWalkthrough;
724
732
  if (context.toggledFeatures.enableCompareWithLatest === true && context.view._layout !== nextView._layout) {
725
733
  if (nextView._layout === "auto" && context.viewportOnAutoLayout) {
726
734
  enqueue(
@@ -741,15 +749,19 @@ const updateView = () => machine.enqueueActions(
741
749
  return;
742
750
  }
743
751
  }
744
- recenter = recenter || nextView._type === "dynamic" && context.view._type === "dynamic" && nextView.variant !== context.view.variant;
752
+ let recenter = !context.viewportChangedManually && !context.focusedNode && !context.activeWalkthrough;
745
753
  recenter = recenter || context.toggledFeatures.enableCompareWithLatest === true && !!nextView._layout && context.view._layout !== nextView._layout;
754
+ if (nextView._type === "dynamic" && context.view._type === "dynamic") {
755
+ if (nextView.variant === context.view.variant && nextView.variant !== context.dynamicViewVariant) {
756
+ const nextCenter = BBox.center(viewBounds(context, nextView));
757
+ enqueue(setViewportCenter(nextCenter));
758
+ }
759
+ }
746
760
  if (recenter) {
747
761
  enqueue(cancelFitDiagram());
748
- enqueue(raiseFitDiagram({
749
- bounds: event.view.bounds
750
- }));
762
+ enqueue(raiseFitDiagram());
751
763
  }
752
764
  }
753
765
  );
754
766
 
755
- export { assignDynamicViewVariant, assignFocusedNode, assignLastClickedNode, assignToggledFeatures, assignXYDataFromView, cancelAutoUnfocusTimer, cancelEditing, cancelFitDiagram, closeAllOverlays, closeSearch, disableCompareWithLatest, emitEdgeClick, emitInitialized, emitNavigateTo, emitNodeClick, emitOnLayoutTypeChange, emitOpenSource, emitPaneClick, ensureEditorActor, ensureOverlaysActor, ensureSearchActor, focusOnNodesAndEdges, handleNavigate, layoutAlign, notationsHighlight, onEdgeDoubleClick, onEdgeMouseEnter, onEdgeMouseLeave, onNodeMouseEnter, onNodeMouseLeave, openElementDetails, openOverlay, openSourceOfFocusedOrLastClickedNode, raiseFitDiagram, resetEdgesControlPoints, resetLastClickedNode, sendSynced, setViewport, startAutoUnfocusTimer, startEditing, startHotKeyActor, stopEditing, stopEditorActor, stopHotKeyActor, tagHighlight, triggerChange, undimEverything, updateFeatures, updateInputs, updateView };
767
+ export { assignDynamicViewVariant, assignFocusedNode, assignLastClickedNode, assignToggledFeatures, assignXYDataFromView, cancelAutoUnfocusTimer, cancelEditing, cancelFitDiagram, closeAllOverlays, closeSearch, disableCompareWithLatest, emitEdgeClick, emitInitialized, emitNavigateTo, emitNodeClick, emitOnLayoutTypeChange, emitOpenSource, emitOpenSourceOfView, emitPaneClick, ensureEditorActor, ensureOverlaysActor, ensureSearchActor, focusOnNodesAndEdges, handleNavigate, layoutAlign, notationsHighlight, onEdgeDoubleClick, onEdgeMouseEnter, onEdgeMouseLeave, onNodeMouseEnter, onNodeMouseLeave, openElementDetails, openOverlay, openSourceOfFocusedOrLastClickedNode, raiseFitDiagram, resetEdgesControlPoints, resetLastClickedNode, sendSynced, setViewport, setViewportCenter, startAutoUnfocusTimer, startEditing, startHotKeyActor, stopEditing, stopEditorActor, stopHotKeyActor, tagHighlight, triggerChange, undimEverything, updateFeatures, updateInputs, updateView };
@@ -126,6 +126,10 @@ export declare const setViewport: (params?: {
126
126
  type: "click: selected edge";
127
127
  params: unknown;
128
128
  };
129
+ "click: active walkthrough step": {
130
+ type: "click: active walkthrough step";
131
+ params: unknown;
132
+ };
129
133
  }>, never, EmittedEvents>;
130
134
  export declare const setViewportCenter: (params?: {
131
135
  x: number;
@@ -245,11 +249,15 @@ export declare const setViewportCenter: (params?: {
245
249
  type: "click: selected edge";
246
250
  params: unknown;
247
251
  };
252
+ "click: active walkthrough step": {
253
+ type: "click: active walkthrough step";
254
+ params: unknown;
255
+ };
248
256
  }>, never, EmittedEvents>;
249
257
  export declare const fitDiagram: (params?: {
250
258
  duration?: number;
251
259
  bounds?: BBox;
252
- }) => ActionFunction<Context, Events, Events, undefined, Values<{
260
+ }) => ActionFunction<Context, Events, Events, unknown, Values<{
253
261
  hotkeyActorLogic: {
254
262
  src: "hotkeyActorLogic";
255
263
  logic: HotkeyActorLogic;
@@ -364,6 +372,10 @@ export declare const fitDiagram: (params?: {
364
372
  type: "click: selected edge";
365
373
  params: unknown;
366
374
  };
375
+ "click: active walkthrough step": {
376
+ type: "click: active walkthrough step";
377
+ params: unknown;
378
+ };
367
379
  }>, never, EmittedEvents>;
368
380
  export declare const fitFocusedBounds: () => ActionFunction<Context, Events, Events, unknown, Values<{
369
381
  hotkeyActorLogic: {
@@ -480,6 +492,10 @@ export declare const fitFocusedBounds: () => ActionFunction<Context, Events, Eve
480
492
  type: "click: selected edge";
481
493
  params: unknown;
482
494
  };
495
+ "click: active walkthrough step": {
496
+ type: "click: active walkthrough step";
497
+ params: unknown;
498
+ };
483
499
  }>, never, EmittedEvents>;
484
500
  export declare const raiseSetViewport: (params: {
485
501
  delay?: number;
@@ -493,7 +509,7 @@ export declare const raiseFitDiagram: (params?: {
493
509
  bounds?: BBox;
494
510
  }) => ActionFunction<Context, Events, Events, undefined, never, never, never, never, never>;
495
511
  export declare const raiseUpdateView: (view?: DiagramView) => ActionFunction<Context, Events, Events, undefined, never, never, never, never, never>;
496
- export declare const assignViewportBefore: (viewport?: Viewport | null) => ActionFunction<Context, Events, Events, undefined, Values<{
512
+ export declare const assignViewportBefore: (viewport?: Viewport | false) => ActionFunction<Context, Events, Events, undefined, Values<{
497
513
  hotkeyActorLogic: {
498
514
  src: "hotkeyActorLogic";
499
515
  logic: HotkeyActorLogic;
@@ -638,4 +654,8 @@ export declare const returnViewportBefore: (params?: {
638
654
  type: "click: selected edge";
639
655
  params: unknown;
640
656
  };
657
+ "click: active walkthrough step": {
658
+ type: "click: active walkthrough step";
659
+ params: unknown;
660
+ };
641
661
  }>, never, EmittedEvents>;