@likec4/diagram 1.18.0 → 1.19.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 (277) hide show
  1. package/LICENSE +1 -1
  2. package/dist/LikeC4CustomColors.d.ts +7 -0
  3. package/dist/LikeC4CustomColors.js +30 -0
  4. package/dist/LikeC4Diagram.css.d.ts +5 -0
  5. package/dist/LikeC4Diagram.css.js +13 -0
  6. package/dist/LikeC4Diagram.d.ts +6 -0
  7. package/dist/LikeC4Diagram.js +194 -0
  8. package/dist/LikeC4Diagram.props.d.ts +166 -0
  9. package/dist/LikeC4ModelProvider.d.ts +9 -0
  10. package/dist/LikeC4ModelProvider.js +12 -0
  11. package/dist/LikeC4Search.css.d.ts +1 -0
  12. package/dist/LikeC4Search.css.js +5 -0
  13. package/dist/LikeC4Search.d.ts +2 -0
  14. package/dist/LikeC4Search.js +96 -0
  15. package/dist/StaticLikeC4Diagram.d.ts +3 -0
  16. package/dist/StaticLikeC4Diagram.js +41 -0
  17. package/dist/_virtual/_commonjsHelpers.js +6 -0
  18. package/dist/controls/Text.d.ts +2 -0
  19. package/dist/controls/Text.js +7 -0
  20. package/dist/controls/action-button-bar/ActionButtonBar.css.d.ts +1 -0
  21. package/dist/controls/action-button-bar/ActionButtonBar.css.js +5 -0
  22. package/dist/controls/action-button-bar/ActionButtonBar.d.ts +9 -0
  23. package/dist/controls/action-button-bar/ActionButtonBar.js +100 -0
  24. package/dist/controls/action-button-bar/useActionButtonBarCtx.d.ts +10 -0
  25. package/dist/controls/action-button-bar/useActionButtonBarCtx.js +9 -0
  26. package/dist/controls/action-buttons/ActionButton.css.d.ts +1 -0
  27. package/dist/controls/action-buttons/ActionButton.css.js +5 -0
  28. package/dist/controls/action-buttons/ActionButton.d.ts +9 -0
  29. package/dist/controls/action-buttons/ActionButton.js +66 -0
  30. package/dist/controls/action-buttons/ActionButtons.d.ts +12 -0
  31. package/dist/controls/action-buttons/ActionButtons.js +99 -0
  32. package/dist/globals.css.d.ts +1 -0
  33. package/dist/globals.css.js +92 -0
  34. package/dist/hooks/index.d.ts +5 -0
  35. package/dist/hooks/useDiagramState.d.ts +6 -0
  36. package/dist/hooks/useDiagramState.js +27 -0
  37. package/dist/hooks/useMantinePortalProps.d.ts +9 -0
  38. package/dist/hooks/useMantinePortalProps.js +9 -0
  39. package/dist/hooks/useSetState.d.ts +2 -0
  40. package/dist/hooks/useSetState.js +19 -0
  41. package/dist/hooks/useUpdateEffect.d.ts +4 -0
  42. package/dist/hooks/useUpdateEffect.js +32 -0
  43. package/dist/hooks/useXYFlow.d.ts +270 -0
  44. package/dist/hooks/useXYFlow.js +20 -0
  45. package/dist/index.d.ts +11 -0
  46. package/dist/index.js +25 -0
  47. package/dist/likec4model/LikeC4ModelContext.d.ts +3 -0
  48. package/dist/likec4model/LikeC4ModelContext.js +5 -0
  49. package/dist/likec4model/index.d.ts +2 -0
  50. package/dist/likec4model/useLikeC4ElementsTree.d.ts +12 -0
  51. package/dist/likec4model/useLikeC4ElementsTree.js +25 -0
  52. package/dist/likec4model/useLikeC4Model.d.ts +20 -0
  53. package/dist/likec4model/useLikeC4Model.js +55 -0
  54. package/dist/overlays/OverlayContext.d.ts +10 -0
  55. package/dist/overlays/OverlayContext.js +9 -0
  56. package/dist/overlays/Overlays.css.d.ts +3 -0
  57. package/dist/overlays/Overlays.css.js +7 -0
  58. package/dist/overlays/Overlays.d.ts +2 -0
  59. package/dist/overlays/Overlays.js +137 -0
  60. package/dist/overlays/edge-details/EdgeDetailsXYFlow.d.ts +5 -0
  61. package/dist/overlays/edge-details/EdgeDetailsXYFlow.js +185 -0
  62. package/dist/overlays/edge-details/SelectEdge.css.d.ts +7 -0
  63. package/dist/overlays/edge-details/SelectEdge.css.js +17 -0
  64. package/dist/overlays/edge-details/SelectEdge.d.ts +5 -0
  65. package/dist/overlays/edge-details/SelectEdge.js +129 -0
  66. package/dist/overlays/edge-details/_types.d.ts +14 -0
  67. package/dist/overlays/edge-details/use-layouted-edge-details.d.ts +21 -0
  68. package/dist/overlays/edge-details/use-layouted-edge-details.js +270 -0
  69. package/dist/overlays/edge-details/xyflow/CompoundNode.d.ts +5 -0
  70. package/dist/overlays/edge-details/xyflow/CompoundNode.js +76 -0
  71. package/dist/overlays/edge-details/xyflow/ElementNode.d.ts +5 -0
  72. package/dist/overlays/edge-details/xyflow/ElementNode.js +159 -0
  73. package/dist/overlays/edge-details/xyflow/RelationshipEdge.d.ts +3 -0
  74. package/dist/overlays/edge-details/xyflow/RelationshipEdge.js +84 -0
  75. package/dist/overlays/edge-details/xyflow/styles.css.d.ts +9 -0
  76. package/dist/overlays/edge-details/xyflow/styles.css.js +21 -0
  77. package/dist/overlays/element-details/ElementDetailsCard.css.d.ts +16 -0
  78. package/dist/overlays/element-details/ElementDetailsCard.css.js +33 -0
  79. package/dist/overlays/element-details/ElementDetailsCard.d.ts +7 -0
  80. package/dist/overlays/element-details/ElementDetailsCard.js +484 -0
  81. package/dist/overlays/element-details/TabPanelDeployments.css.d.ts +4 -0
  82. package/dist/overlays/element-details/TabPanelDeployments.css.js +11 -0
  83. package/dist/overlays/element-details/TabPanelDeployments.d.ts +7 -0
  84. package/dist/overlays/element-details/TabPanelDeployments.js +173 -0
  85. package/dist/overlays/element-details/TabPanelRelationships.css.d.ts +5 -0
  86. package/dist/overlays/element-details/TabPanelRelationships.css.js +11 -0
  87. package/dist/overlays/element-details/TabPanelRelationships.d.ts +8 -0
  88. package/dist/overlays/element-details/TabPanelRelationships.js +157 -0
  89. package/dist/overlays/element-details/TabPanelStructure.css.d.ts +2 -0
  90. package/dist/overlays/element-details/TabPanelStructure.css.js +7 -0
  91. package/dist/overlays/element-details/TabPanelStructure.d.ts +25 -0
  92. package/dist/overlays/element-details/TabPanelStructure.js +91 -0
  93. package/dist/overlays/index.d.ts +1 -0
  94. package/dist/overlays/relationships-of/RelationshipsOverlay.d.ts +5 -0
  95. package/dist/overlays/relationships-of/RelationshipsOverlay.js +193 -0
  96. package/dist/overlays/relationships-of/RelationshipsXYFlow.d.ts +19 -0
  97. package/dist/overlays/relationships-of/RelationshipsXYFlow.js +290 -0
  98. package/dist/overlays/relationships-of/SelectElement.css.d.ts +2 -0
  99. package/dist/overlays/relationships-of/SelectElement.css.js +7 -0
  100. package/dist/overlays/relationships-of/SelectElement.d.ts +7 -0
  101. package/dist/overlays/relationships-of/SelectElement.js +126 -0
  102. package/dist/overlays/relationships-of/_types.d.ts +28 -0
  103. package/dist/overlays/relationships-of/use-layouted-relationships.d.ts +22 -0
  104. package/dist/overlays/relationships-of/use-layouted-relationships.js +496 -0
  105. package/dist/overlays/relationships-of/xyflow/CompoundNode.d.ts +6 -0
  106. package/dist/overlays/relationships-of/xyflow/CompoundNode.js +120 -0
  107. package/dist/overlays/relationships-of/xyflow/ElementNode.d.ts +6 -0
  108. package/dist/overlays/relationships-of/xyflow/ElementNode.js +194 -0
  109. package/dist/overlays/relationships-of/xyflow/EmptyNode.d.ts +5 -0
  110. package/dist/overlays/relationships-of/xyflow/EmptyNode.js +18 -0
  111. package/dist/overlays/relationships-of/xyflow/RelationshipEdge.d.ts +3 -0
  112. package/dist/overlays/relationships-of/xyflow/RelationshipEdge.js +123 -0
  113. package/dist/overlays/relationships-of/xyflow/styles.css.d.ts +14 -0
  114. package/dist/overlays/relationships-of/xyflow/styles.css.js +24 -0
  115. package/dist/overlays/shared/xyflow/RelationshipEdge.css.d.ts +4 -0
  116. package/dist/overlays/shared/xyflow/RelationshipEdge.css.js +12 -0
  117. package/dist/overlays/shared/xyflow/_types.d.ts +77 -0
  118. package/dist/state/DiagramContext.d.ts +1609 -0
  119. package/dist/state/DiagramContext.js +101 -0
  120. package/dist/state/aligners.d.ts +42 -0
  121. package/dist/state/aligners.js +349 -0
  122. package/dist/state/diagram-to-xyflow.d.ts +11 -0
  123. package/dist/state/diagram-to-xyflow.js +113 -0
  124. package/dist/state/diagramStore.d.ts +1705 -0
  125. package/dist/state/diagramStore.js +808 -0
  126. package/dist/state/diagramStore.layout.d.ts +4 -0
  127. package/dist/state/diagramStore.layout.js +56 -0
  128. package/dist/style.css +1 -0
  129. package/dist/theme-vars.css.d.ts +72 -0
  130. package/dist/theme-vars.css.js +6 -0
  131. package/dist/theme-vars.css.ts.vanilla.css.js +1 -0
  132. package/dist/theme-vars.d.ts +3 -0
  133. package/dist/theme-vars.js +5 -0
  134. package/dist/ui/DiagramTitlePanel.css.d.ts +4 -0
  135. package/dist/ui/DiagramTitlePanel.css.js +11 -0
  136. package/dist/ui/DiagramTitlePanel.d.ts +1 -0
  137. package/dist/ui/DiagramTitlePanel.js +159 -0
  138. package/dist/ui/DynamicViewWalkthrough.css.d.ts +4 -0
  139. package/dist/ui/DynamicViewWalkthrough.css.js +11 -0
  140. package/dist/ui/DynamicViewWalkthrough.d.ts +1 -0
  141. package/dist/ui/DynamicViewWalkthrough.js +156 -0
  142. package/dist/ui/EnsureMantine.d.ts +7 -0
  143. package/dist/ui/EnsureMantine.js +14 -0
  144. package/dist/ui/FramerMotionConfig.d.ts +2 -0
  145. package/dist/ui/FramerMotionConfig.js +14 -0
  146. package/dist/ui/Link.d.ts +4 -0
  147. package/dist/ui/Link.js +36 -0
  148. package/dist/ui/notation/NotationPanel.css.d.ts +6 -0
  149. package/dist/ui/notation/NotationPanel.css.js +16 -0
  150. package/dist/ui/notation/NotationPanel.d.ts +1 -0
  151. package/dist/ui/notation/NotationPanel.js +250 -0
  152. package/dist/ui/notation/index.d.ts +1 -0
  153. package/dist/ui/top-left/ChangeAutoLayoutButton.d.ts +2 -0
  154. package/dist/ui/top-left/ChangeAutoLayoutButton.js +159 -0
  155. package/dist/ui/top-left/ManualLayoutToolsButton.d.ts +2 -0
  156. package/dist/ui/top-left/ManualLayoutToolsButton.js +137 -0
  157. package/dist/ui/top-left/TopLeftPanel.d.ts +4 -0
  158. package/dist/ui/top-left/TopLeftPanel.js +211 -0
  159. package/dist/ui/top-left/_shared.d.ts +7 -0
  160. package/dist/ui/top-left/_shared.js +22 -0
  161. package/dist/ui/top-left/styles.css.d.ts +8 -0
  162. package/dist/ui/top-left/styles.css.js +17 -0
  163. package/dist/utils/types.d.ts +8 -0
  164. package/dist/utils/vector.d.ts +24 -0
  165. package/dist/utils/vector.js +55 -0
  166. package/dist/xyflow/EdgeMarkers.d.ts +12 -0
  167. package/dist/xyflow/EdgeMarkers.js +192 -0
  168. package/dist/xyflow/FitviewOnDiagramChange.d.ts +4 -0
  169. package/dist/xyflow/FitviewOnDiagramChange.js +72 -0
  170. package/dist/xyflow/SelectEdgesOnNodeFocus.d.ts +1 -0
  171. package/dist/xyflow/SelectEdgesOnNodeFocus.js +96 -0
  172. package/dist/xyflow/XYFlow.d.ts +8 -0
  173. package/dist/xyflow/XYFlow.js +145 -0
  174. package/dist/xyflow/XYFlowBackground.d.ts +10 -0
  175. package/dist/xyflow/XYFlowBackground.js +25 -0
  176. package/dist/xyflow/XYFlowInner.d.ts +8 -0
  177. package/dist/xyflow/XYFlowInner.js +41 -0
  178. package/dist/xyflow/const.d.ts +7 -0
  179. package/dist/xyflow/const.js +12 -0
  180. package/dist/xyflow/edges/EdgeLabel.d.ts +7 -0
  181. package/dist/xyflow/edges/EdgeLabel.js +160 -0
  182. package/dist/xyflow/edges/RelationshipEdge.d.ts +6 -0
  183. package/dist/xyflow/edges/RelationshipEdge.js +443 -0
  184. package/dist/xyflow/edges/RelationshipsDropdownMenu.css.d.ts +4 -0
  185. package/dist/xyflow/edges/RelationshipsDropdownMenu.css.js +11 -0
  186. package/dist/xyflow/edges/RelationshipsDropdownMenu.d.ts +13 -0
  187. package/dist/xyflow/edges/RelationshipsDropdownMenu.js +211 -0
  188. package/dist/xyflow/edges/edges.css.d.ts +17 -0
  189. package/dist/xyflow/edges/edges.css.js +37 -0
  190. package/dist/xyflow/edges/utils.d.ts +16 -0
  191. package/dist/xyflow/edges/utils.js +24 -0
  192. package/dist/xyflow/nodes/AnimateVariants.d.ts +1313 -0
  193. package/dist/xyflow/nodes/AnimateVariants.js +123 -0
  194. package/dist/xyflow/nodes/Node.css.d.ts +3 -0
  195. package/dist/xyflow/nodes/Node.css.js +9 -0
  196. package/dist/xyflow/nodes/compound/CompoundNode.css.d.ts +14 -0
  197. package/dist/xyflow/nodes/compound/CompoundNode.css.js +27 -0
  198. package/dist/xyflow/nodes/compound/CompoundNode.d.ts +6 -0
  199. package/dist/xyflow/nodes/compound/CompoundNode.js +216 -0
  200. package/dist/xyflow/nodes/compound/index.d.ts +1 -0
  201. package/dist/xyflow/nodes/element/ElementLink.css.d.ts +3 -0
  202. package/dist/xyflow/nodes/element/ElementLink.d.ts +6 -0
  203. package/dist/xyflow/nodes/element/ElementNode.d.ts +6 -0
  204. package/dist/xyflow/nodes/element/ElementNode.js +190 -0
  205. package/dist/xyflow/nodes/element/ElementShapeSvg.d.ts +17 -0
  206. package/dist/xyflow/nodes/element/ElementShapeSvg.js +175 -0
  207. package/dist/xyflow/nodes/element/element.css.d.ts +18 -0
  208. package/dist/xyflow/nodes/element/element.css.js +31 -0
  209. package/dist/xyflow/nodes/element/index.d.ts +1 -0
  210. package/dist/xyflow/nodes/shared/ElementIcon.d.ts +8 -0
  211. package/dist/xyflow/nodes/shared/ElementIcon.js +38 -0
  212. package/dist/xyflow/nodes/shared/Toolbar.d.ts +9 -0
  213. package/dist/xyflow/nodes/shared/Toolbar.js +436 -0
  214. package/dist/xyflow/types.d.ts +36 -0
  215. package/dist/xyflow/useLayoutConstraints.d.ts +42 -0
  216. package/dist/xyflow/useLayoutConstraints.js +226 -0
  217. package/dist/xyflow/useXYFlowEvents.d.ts +160 -0
  218. package/dist/xyflow/useXYFlowEvents.js +275 -0
  219. package/dist/xyflow/utils.d.ts +22 -0
  220. package/dist/xyflow/utils.js +72 -0
  221. package/package.json +34 -27
  222. package/src/LikeC4Diagram.tsx +4 -4
  223. package/src/LikeC4Search.css.ts +12 -0
  224. package/src/LikeC4Search.tsx +39 -90
  225. package/src/controls/Text.ts +5 -0
  226. package/src/controls/action-button-bar/ActionButtonBar.css.ts +13 -0
  227. package/src/controls/action-button-bar/ActionButtonBar.tsx +138 -0
  228. package/src/controls/action-button-bar/useActionButtonBarCtx.ts +13 -0
  229. package/src/controls/action-buttons/ActionButton.css.ts +29 -0
  230. package/src/controls/action-buttons/ActionButton.tsx +66 -0
  231. package/src/controls/action-buttons/ActionButtons.tsx +138 -0
  232. package/src/hooks/useXYFlow.ts +8 -8
  233. package/src/index.ts +12 -6
  234. package/src/likec4model/index.ts +12 -2
  235. package/src/overlays/edge-details/EdgeDetailsXYFlow.tsx +18 -12
  236. package/src/overlays/edge-details/_types.ts +13 -37
  237. package/src/overlays/edge-details/use-layouted-edge-details.ts +16 -14
  238. package/src/overlays/edge-details/xyflow/CompoundNode.tsx +3 -11
  239. package/src/overlays/edge-details/xyflow/ElementNode.tsx +4 -11
  240. package/src/overlays/edge-details/xyflow/RelationshipEdge.tsx +3 -3
  241. package/src/overlays/edge-details/xyflow/styles.css.ts +1 -59
  242. package/src/overlays/relationships-of/RelationshipsXYFlow.tsx +23 -23
  243. package/src/overlays/relationships-of/_types.ts +20 -58
  244. package/src/overlays/relationships-of/use-layouted-relationships.ts +36 -40
  245. package/src/overlays/relationships-of/xyflow/CompoundNode.tsx +9 -13
  246. package/src/overlays/relationships-of/xyflow/ElementNode.tsx +12 -15
  247. package/src/overlays/relationships-of/xyflow/EmptyNode.tsx +4 -7
  248. package/src/overlays/relationships-of/xyflow/RelationshipEdge.tsx +16 -14
  249. package/src/overlays/shared/xyflow/RelationshipEdge.css.ts +60 -0
  250. package/src/overlays/shared/xyflow/_types.ts +87 -0
  251. package/src/state/diagram-to-xyflow.ts +6 -7
  252. package/src/state/diagramStore.layout.ts +3 -4
  253. package/src/state/diagramStore.ts +35 -37
  254. package/src/theme-vars.css.ts +81 -0
  255. package/src/theme-vars.ts +8 -81
  256. package/src/ui/DiagramTitlePanel.tsx +6 -6
  257. package/src/utils/types.ts +6 -0
  258. package/src/xyflow/SelectEdgesOnNodeFocus.tsx +3 -3
  259. package/src/xyflow/XYFlow.tsx +2 -2
  260. package/src/xyflow/edges/EdgeLabel.tsx +25 -18
  261. package/src/xyflow/edges/RelationshipEdge.tsx +5 -3
  262. package/src/xyflow/edges/RelationshipsDropdownMenu.tsx +3 -3
  263. package/src/xyflow/edges/edges.css.ts +68 -74
  264. package/src/xyflow/edges/utils.ts +6 -6
  265. package/src/xyflow/nodes/AnimateVariants.ts +143 -0
  266. package/src/xyflow/nodes/Node.css.ts +44 -0
  267. package/src/xyflow/nodes/compound/CompoundNode.css.ts +1 -64
  268. package/src/xyflow/nodes/compound/CompoundNode.tsx +69 -182
  269. package/src/xyflow/nodes/element/ElementLink.tsx +2 -3
  270. package/src/xyflow/nodes/element/ElementNode.tsx +64 -266
  271. package/src/xyflow/nodes/element/element.css.ts +0 -57
  272. package/src/xyflow/nodes/shared/Toolbar.tsx +30 -30
  273. package/src/xyflow/types.ts +48 -51
  274. package/src/xyflow/useLayoutConstraints.ts +9 -9
  275. package/src/xyflow/useXYFlowEvents.ts +13 -30
  276. package/src/xyflow/utils.ts +2 -2
  277. package/src/xyflow/nodes/use-animate-variants.tsx +0 -64
@@ -0,0 +1,1705 @@
1
+ import { ComputedNode, DiagramNode, DiagramView, EdgeId, ElementNotation, Fqn, NodeId, ViewChange, ViewId, StepEdgeId } from '@likec4/core';
2
+ import { OnEdgesChange, OnNodesChange } from '@xyflow/react';
3
+ import { MouseEvent as ReactMouseEvent, ReactNode, CSSProperties } from 'react';
4
+ import { RequireExactlyOne, Simplify } from 'type-fest';
5
+ import { XYStoreApi } from '../hooks/useXYFlow';
6
+ import { ElementIconRenderer, LikeC4DiagramEventHandlers, WhereOperator } from '../LikeC4Diagram.props';
7
+ import { DiagramFlowTypes } from '../xyflow/types';
8
+ import { AlignmentMode } from './diagramStore.layout';
9
+ import { UseBoundStoreWithEqualityFn } from 'zustand/traditional';
10
+ import { StoreApi } from 'zustand/vanilla';
11
+ import { OnChange, OnNavigateTo, OnNodeClick, OnCanvasClick, OnEdgeClick, OpenSourceParams } from '..';
12
+ import { EdgeMarkerType, HandleType } from '@xyflow/system';
13
+ type RequiredOrNull<T> = {
14
+ [P in keyof T]-?: NonNullable<T[P]> | null;
15
+ };
16
+ export type DiagramInitialState = {
17
+ view: DiagramView;
18
+ readonly: boolean;
19
+ hasLikeC4Model: boolean;
20
+ controls: boolean;
21
+ showNavigationButtons: boolean;
22
+ showNotations: boolean;
23
+ fitViewEnabled: boolean;
24
+ fitViewPadding: number;
25
+ zoomable: boolean;
26
+ pannable: boolean;
27
+ nodesDraggable: boolean;
28
+ nodesSelectable: boolean;
29
+ experimentalEdgeEditing: boolean;
30
+ enableFocusMode: boolean;
31
+ enableElementDetails: boolean;
32
+ enableRelationshipBrowser: boolean;
33
+ enableRelationshipDetails: boolean;
34
+ enableSearch: boolean;
35
+ renderIcon: ElementIconRenderer | null;
36
+ whereFilter: WhereOperator<string, string> | null;
37
+ enableDynamicViewWalkthrough: boolean;
38
+ xyflow: DiagramFlowTypes.XYFlowInstance;
39
+ xystore: XYStoreApi;
40
+ getContainer: () => HTMLDivElement | null;
41
+ } & RequiredOrNull<LikeC4DiagramEventHandlers>;
42
+ type NodeKind = ComputedNode['kind'];
43
+ export type DiagramState = Simplify<DiagramInitialState & {
44
+ readonly storeDevId: string;
45
+ xynodes: DiagramFlowTypes.Node[];
46
+ xyedges: DiagramFlowTypes.Edge[];
47
+ viewSyncDebounceTimeout: number | null;
48
+ viewportChanged: boolean;
49
+ initialized: boolean;
50
+ activeOverlay: null | RequireExactlyOne<{
51
+ elementDetails: Fqn;
52
+ relationshipsOf: Fqn;
53
+ edgeDetails: EdgeId;
54
+ }>;
55
+ isEditable: () => boolean;
56
+ isDynamicView: boolean;
57
+ activeWalkthrough: null | {
58
+ stepId: StepEdgeId;
59
+ hasPrevious: boolean;
60
+ hasNext: boolean;
61
+ parallelPrefix: string | null;
62
+ };
63
+ lastClickedNodeId: string | null;
64
+ lastClickedEdgeId: string | null;
65
+ focusedNodeId: string | null;
66
+ hoveredEdgeId: string | null;
67
+ dimmed: ReadonlySet<string>;
68
+ lastOnNavigate: null | {
69
+ fromView: ViewId;
70
+ toView: ViewId;
71
+ fromNode: NodeId | null;
72
+ };
73
+ navigationHistory: Array<{
74
+ viewId: ViewId;
75
+ nodeId: NodeId | null;
76
+ }>;
77
+ navigationHistoryIndex: number;
78
+ updateView: (view: DiagramView) => void;
79
+ /**
80
+ * A function to set the focus on a specific node given its identifier.
81
+ * It can also be used to remove focus if the input is `false`.
82
+ */
83
+ focusOnNode: (nodeId: string | false) => void;
84
+ setHoveredEdge: (edgeId: string | null) => void;
85
+ setLastClickedNode: (nodeId: string | null) => void;
86
+ setLastClickedEdge: (edgeId: string | null) => void;
87
+ resetFocusAndLastClicked: () => void;
88
+ getElement(id: Fqn): DiagramNode | null;
89
+ triggerChangeElementStyle: (change: ViewChange.ChangeElementStyle) => void;
90
+ /**
91
+ * @returns true if there was pending save layout
92
+ */
93
+ cancelSaveManualLayout: () => boolean;
94
+ scheduleSaveManualLayout: () => void;
95
+ triggerSaveManualLayout: () => void;
96
+ triggerOnNavigateTo: (xynodeId: string, event: ReactMouseEvent) => void;
97
+ fitDiagram: (duration?: number) => void;
98
+ goBack: () => void;
99
+ goForward: () => void;
100
+ nextDynamicStep: (increment?: number) => void;
101
+ activateWalkthrough: (step: EdgeId | DiagramFlowTypes.Edge) => void;
102
+ stopWalkthrough: () => void;
103
+ openOverlay: (overlay: NonNullable<DiagramState['activeOverlay']>) => void;
104
+ closeOverlay: () => void;
105
+ onInit: (xyflow: DiagramFlowTypes.XYFlowInstance) => void;
106
+ onNodesChange: OnNodesChange<DiagramFlowTypes.Node>;
107
+ onEdgesChange: OnEdgesChange<DiagramFlowTypes.Edge>;
108
+ highlightByElementNotation: (notation: ElementNotation, onlyOfKind?: NodeKind) => void;
109
+ resetEdgeControlPoints: () => void;
110
+ align: (mode: AlignmentMode) => void;
111
+ onOpenSourceView: () => void;
112
+ }>;
113
+ export declare function createDiagramStore(props: DiagramInitialState): UseBoundStoreWithEqualityFn<Omit<Omit< StoreApi<{
114
+ view: DiagramView;
115
+ readonly: boolean;
116
+ hasLikeC4Model: boolean;
117
+ controls: boolean;
118
+ showNavigationButtons: boolean;
119
+ showNotations: boolean;
120
+ fitViewEnabled: boolean;
121
+ fitViewPadding: number;
122
+ zoomable: boolean;
123
+ pannable: boolean;
124
+ nodesDraggable: boolean;
125
+ nodesSelectable: boolean;
126
+ experimentalEdgeEditing: boolean;
127
+ enableFocusMode: boolean;
128
+ enableElementDetails: boolean;
129
+ enableRelationshipBrowser: boolean;
130
+ enableRelationshipDetails: boolean;
131
+ enableSearch: boolean;
132
+ renderIcon: ElementIconRenderer | null;
133
+ whereFilter: WhereOperator<string, string> | null;
134
+ enableDynamicViewWalkthrough: boolean;
135
+ xyflow: DiagramFlowTypes.XYFlowInstance;
136
+ xystore: XYStoreApi;
137
+ getContainer: () => HTMLDivElement | null;
138
+ onChange: OnChange | null;
139
+ onNavigateTo: OnNavigateTo<ViewId> | null;
140
+ onNodeClick: OnNodeClick | null;
141
+ onNodeContextMenu: OnNodeClick | null;
142
+ onCanvasContextMenu: OnCanvasClick | null;
143
+ onEdgeClick: OnEdgeClick | null;
144
+ onEdgeContextMenu: OnEdgeClick | null;
145
+ onCanvasClick: OnCanvasClick | null;
146
+ onCanvasDblClick: OnCanvasClick | null;
147
+ onBurgerMenuClick: (() => void) | null;
148
+ onOpenSource: ((params: OpenSourceParams) => void) | null;
149
+ readonly storeDevId: string;
150
+ xynodes: DiagramFlowTypes.Node[];
151
+ xyedges: DiagramFlowTypes.Edge[];
152
+ viewSyncDebounceTimeout: number | null;
153
+ viewportChanged: boolean;
154
+ initialized: boolean;
155
+ activeOverlay: null | RequireExactlyOne<{
156
+ elementDetails: Fqn;
157
+ relationshipsOf: Fqn;
158
+ edgeDetails: EdgeId;
159
+ }>;
160
+ isEditable: () => boolean;
161
+ isDynamicView: boolean;
162
+ activeWalkthrough: null | {
163
+ stepId: StepEdgeId;
164
+ hasPrevious: boolean;
165
+ hasNext: boolean;
166
+ parallelPrefix: string | null;
167
+ };
168
+ lastClickedNodeId: string | null;
169
+ lastClickedEdgeId: string | null;
170
+ focusedNodeId: string | null;
171
+ hoveredEdgeId: string | null;
172
+ dimmed: ReadonlySet<string>;
173
+ lastOnNavigate: null | {
174
+ fromView: ViewId;
175
+ toView: ViewId;
176
+ fromNode: NodeId | null;
177
+ };
178
+ navigationHistory: Array<{
179
+ viewId: ViewId;
180
+ nodeId: NodeId | null;
181
+ }>;
182
+ navigationHistoryIndex: number;
183
+ updateView: (view: DiagramView) => void;
184
+ focusOnNode: (nodeId: string | false) => void;
185
+ setHoveredEdge: (edgeId: string | null) => void;
186
+ setLastClickedNode: (nodeId: string | null) => void;
187
+ setLastClickedEdge: (edgeId: string | null) => void;
188
+ resetFocusAndLastClicked: () => void;
189
+ getElement: (id: Fqn) => DiagramNode | null;
190
+ triggerChangeElementStyle: (change: ViewChange.ChangeElementStyle) => void;
191
+ cancelSaveManualLayout: () => boolean;
192
+ scheduleSaveManualLayout: () => void;
193
+ triggerSaveManualLayout: () => void;
194
+ triggerOnNavigateTo: (xynodeId: string, event: ReactMouseEvent) => void;
195
+ fitDiagram: (duration?: number) => void;
196
+ goBack: () => void;
197
+ goForward: () => void;
198
+ nextDynamicStep: (increment?: number) => void;
199
+ activateWalkthrough: (step: EdgeId | DiagramFlowTypes.Edge) => void;
200
+ stopWalkthrough: () => void;
201
+ openOverlay: (overlay: NonNullable<DiagramState["activeOverlay"]>) => void;
202
+ closeOverlay: () => void;
203
+ onInit: (xyflow: DiagramFlowTypes.XYFlowInstance) => void;
204
+ onNodesChange: OnNodesChange<DiagramFlowTypes.Node>;
205
+ onEdgesChange: OnEdgesChange<DiagramFlowTypes.Edge>;
206
+ highlightByElementNotation: (notation: ElementNotation, onlyOfKind?: NodeKind) => void;
207
+ resetEdgeControlPoints: () => void;
208
+ align: (mode: AlignmentMode) => void;
209
+ onOpenSourceView: () => void;
210
+ }>, "subscribe"> & {
211
+ subscribe: {
212
+ (listener: (selectedState: {
213
+ view: DiagramView;
214
+ readonly: boolean;
215
+ hasLikeC4Model: boolean;
216
+ controls: boolean;
217
+ showNavigationButtons: boolean;
218
+ showNotations: boolean;
219
+ fitViewEnabled: boolean;
220
+ fitViewPadding: number;
221
+ zoomable: boolean;
222
+ pannable: boolean;
223
+ nodesDraggable: boolean;
224
+ nodesSelectable: boolean;
225
+ experimentalEdgeEditing: boolean;
226
+ enableFocusMode: boolean;
227
+ enableElementDetails: boolean;
228
+ enableRelationshipBrowser: boolean;
229
+ enableRelationshipDetails: boolean;
230
+ enableSearch: boolean;
231
+ renderIcon: ElementIconRenderer | null;
232
+ whereFilter: WhereOperator<string, string> | null;
233
+ enableDynamicViewWalkthrough: boolean;
234
+ xyflow: DiagramFlowTypes.XYFlowInstance;
235
+ xystore: XYStoreApi;
236
+ getContainer: () => HTMLDivElement | null;
237
+ onChange: OnChange | null;
238
+ onNavigateTo: OnNavigateTo<ViewId> | null;
239
+ onNodeClick: OnNodeClick | null;
240
+ onNodeContextMenu: OnNodeClick | null;
241
+ onCanvasContextMenu: OnCanvasClick | null;
242
+ onEdgeClick: OnEdgeClick | null;
243
+ onEdgeContextMenu: OnEdgeClick | null;
244
+ onCanvasClick: OnCanvasClick | null;
245
+ onCanvasDblClick: OnCanvasClick | null;
246
+ onBurgerMenuClick: (() => void) | null;
247
+ onOpenSource: ((params: OpenSourceParams) => void) | null;
248
+ readonly storeDevId: string;
249
+ xynodes: DiagramFlowTypes.Node[];
250
+ xyedges: {
251
+ id: string;
252
+ type: "relationship";
253
+ source: string;
254
+ target: string;
255
+ sourceHandle?: string | null;
256
+ targetHandle?: string | null;
257
+ animated?: boolean;
258
+ hidden?: boolean;
259
+ deletable?: boolean;
260
+ selectable?: boolean;
261
+ data: DiagramFlowTypes.DiagramEdgeData;
262
+ selected?: boolean;
263
+ markerStart?: EdgeMarkerType;
264
+ markerEnd?: EdgeMarkerType;
265
+ zIndex?: number;
266
+ ariaLabel?: string;
267
+ interactionWidth?: number;
268
+ label?: ReactNode;
269
+ labelStyle?: CSSProperties;
270
+ labelShowBg?: boolean;
271
+ labelBgStyle?: CSSProperties;
272
+ labelBgPadding?: [number, number];
273
+ labelBgBorderRadius?: number;
274
+ style?: CSSProperties;
275
+ className?: string;
276
+ reconnectable?: boolean | HandleType;
277
+ focusable?: boolean;
278
+ }[];
279
+ viewSyncDebounceTimeout: number | null;
280
+ viewportChanged: boolean;
281
+ initialized: boolean;
282
+ activeOverlay: null | RequireExactlyOne<{
283
+ elementDetails: Fqn;
284
+ relationshipsOf: Fqn;
285
+ edgeDetails: EdgeId;
286
+ }>;
287
+ isEditable: () => boolean;
288
+ isDynamicView: boolean;
289
+ activeWalkthrough: null | {
290
+ stepId: StepEdgeId;
291
+ hasPrevious: boolean;
292
+ hasNext: boolean;
293
+ parallelPrefix: string | null;
294
+ };
295
+ lastClickedNodeId: string | null;
296
+ lastClickedEdgeId: string | null;
297
+ focusedNodeId: string | null;
298
+ hoveredEdgeId: string | null;
299
+ dimmed: ReadonlySet<string>;
300
+ lastOnNavigate: null | {
301
+ fromView: ViewId;
302
+ toView: ViewId;
303
+ fromNode: NodeId | null;
304
+ };
305
+ navigationHistory: Array<{
306
+ viewId: ViewId;
307
+ nodeId: NodeId | null;
308
+ }>;
309
+ navigationHistoryIndex: number;
310
+ updateView: (view: DiagramView) => void;
311
+ focusOnNode: (nodeId: string | false) => void;
312
+ setHoveredEdge: (edgeId: string | null) => void;
313
+ setLastClickedNode: (nodeId: string | null) => void;
314
+ setLastClickedEdge: (edgeId: string | null) => void;
315
+ resetFocusAndLastClicked: () => void;
316
+ getElement: (id: Fqn) => DiagramNode | null;
317
+ triggerChangeElementStyle: (change: ViewChange.ChangeElementStyle) => void;
318
+ cancelSaveManualLayout: () => boolean;
319
+ scheduleSaveManualLayout: () => void;
320
+ triggerSaveManualLayout: () => void;
321
+ triggerOnNavigateTo: (xynodeId: string, event: ReactMouseEvent) => void;
322
+ fitDiagram: (duration?: number) => void;
323
+ goBack: () => void;
324
+ goForward: () => void;
325
+ nextDynamicStep: (increment?: number) => void;
326
+ activateWalkthrough: (step: EdgeId | {
327
+ id: string;
328
+ type: "relationship";
329
+ source: string;
330
+ target: string;
331
+ sourceHandle?: string | null;
332
+ targetHandle?: string | null;
333
+ animated?: boolean;
334
+ hidden?: boolean;
335
+ deletable?: boolean;
336
+ selectable?: boolean;
337
+ data: DiagramFlowTypes.DiagramEdgeData;
338
+ selected?: boolean;
339
+ markerStart?: EdgeMarkerType;
340
+ markerEnd?: EdgeMarkerType;
341
+ zIndex?: number;
342
+ ariaLabel?: string;
343
+ interactionWidth?: number;
344
+ label?: ReactNode;
345
+ labelStyle?: CSSProperties;
346
+ labelShowBg?: boolean;
347
+ labelBgStyle?: CSSProperties;
348
+ labelBgPadding?: [number, number];
349
+ labelBgBorderRadius?: number;
350
+ style?: CSSProperties;
351
+ className?: string;
352
+ reconnectable?: boolean | HandleType;
353
+ focusable?: boolean;
354
+ }) => void;
355
+ stopWalkthrough: () => void;
356
+ openOverlay: (overlay: NonNullable<RequireExactlyOne<{
357
+ elementDetails: Fqn;
358
+ relationshipsOf: Fqn;
359
+ edgeDetails: EdgeId;
360
+ }> | null>) => void;
361
+ closeOverlay: () => void;
362
+ onInit: (xyflow: DiagramFlowTypes.XYFlowInstance) => void;
363
+ onNodesChange: OnNodesChange<DiagramFlowTypes.Node>;
364
+ onEdgesChange: OnEdgesChange<{
365
+ id: string;
366
+ type: "relationship";
367
+ source: string;
368
+ target: string;
369
+ sourceHandle?: string | null;
370
+ targetHandle?: string | null;
371
+ animated?: boolean;
372
+ hidden?: boolean;
373
+ deletable?: boolean;
374
+ selectable?: boolean;
375
+ data: DiagramFlowTypes.DiagramEdgeData;
376
+ selected?: boolean;
377
+ markerStart?: EdgeMarkerType;
378
+ markerEnd?: EdgeMarkerType;
379
+ zIndex?: number;
380
+ ariaLabel?: string;
381
+ interactionWidth?: number;
382
+ label?: ReactNode;
383
+ labelStyle?: CSSProperties;
384
+ labelShowBg?: boolean;
385
+ labelBgStyle?: CSSProperties;
386
+ labelBgPadding?: [number, number];
387
+ labelBgBorderRadius?: number;
388
+ style?: CSSProperties;
389
+ className?: string;
390
+ reconnectable?: boolean | HandleType;
391
+ focusable?: boolean;
392
+ }>;
393
+ highlightByElementNotation: (notation: ElementNotation, onlyOfKind?: NodeKind) => void;
394
+ resetEdgeControlPoints: () => void;
395
+ align: (mode: AlignmentMode) => void;
396
+ onOpenSourceView: () => void;
397
+ }, previousSelectedState: {
398
+ view: DiagramView;
399
+ readonly: boolean;
400
+ hasLikeC4Model: boolean;
401
+ controls: boolean;
402
+ showNavigationButtons: boolean;
403
+ showNotations: boolean;
404
+ fitViewEnabled: boolean;
405
+ fitViewPadding: number;
406
+ zoomable: boolean;
407
+ pannable: boolean;
408
+ nodesDraggable: boolean;
409
+ nodesSelectable: boolean;
410
+ experimentalEdgeEditing: boolean;
411
+ enableFocusMode: boolean;
412
+ enableElementDetails: boolean;
413
+ enableRelationshipBrowser: boolean;
414
+ enableRelationshipDetails: boolean;
415
+ enableSearch: boolean;
416
+ renderIcon: ElementIconRenderer | null;
417
+ whereFilter: WhereOperator<string, string> | null;
418
+ enableDynamicViewWalkthrough: boolean;
419
+ xyflow: DiagramFlowTypes.XYFlowInstance;
420
+ xystore: XYStoreApi;
421
+ getContainer: () => HTMLDivElement | null;
422
+ onChange: OnChange | null;
423
+ onNavigateTo: OnNavigateTo<ViewId> | null;
424
+ onNodeClick: OnNodeClick | null;
425
+ onNodeContextMenu: OnNodeClick | null;
426
+ onCanvasContextMenu: OnCanvasClick | null;
427
+ onEdgeClick: OnEdgeClick | null;
428
+ onEdgeContextMenu: OnEdgeClick | null;
429
+ onCanvasClick: OnCanvasClick | null;
430
+ onCanvasDblClick: OnCanvasClick | null;
431
+ onBurgerMenuClick: (() => void) | null;
432
+ onOpenSource: ((params: OpenSourceParams) => void) | null;
433
+ readonly storeDevId: string;
434
+ xynodes: DiagramFlowTypes.Node[];
435
+ xyedges: {
436
+ id: string;
437
+ type: "relationship";
438
+ source: string;
439
+ target: string;
440
+ sourceHandle?: string | null;
441
+ targetHandle?: string | null;
442
+ animated?: boolean;
443
+ hidden?: boolean;
444
+ deletable?: boolean;
445
+ selectable?: boolean;
446
+ data: DiagramFlowTypes.DiagramEdgeData;
447
+ selected?: boolean;
448
+ markerStart?: EdgeMarkerType;
449
+ markerEnd?: EdgeMarkerType;
450
+ zIndex?: number;
451
+ ariaLabel?: string;
452
+ interactionWidth?: number;
453
+ label?: ReactNode;
454
+ labelStyle?: CSSProperties;
455
+ labelShowBg?: boolean;
456
+ labelBgStyle?: CSSProperties;
457
+ labelBgPadding?: [number, number];
458
+ labelBgBorderRadius?: number;
459
+ style?: CSSProperties;
460
+ className?: string;
461
+ reconnectable?: boolean | HandleType;
462
+ focusable?: boolean;
463
+ }[];
464
+ viewSyncDebounceTimeout: number | null;
465
+ viewportChanged: boolean;
466
+ initialized: boolean;
467
+ activeOverlay: null | RequireExactlyOne<{
468
+ elementDetails: Fqn;
469
+ relationshipsOf: Fqn;
470
+ edgeDetails: EdgeId;
471
+ }>;
472
+ isEditable: () => boolean;
473
+ isDynamicView: boolean;
474
+ activeWalkthrough: null | {
475
+ stepId: StepEdgeId;
476
+ hasPrevious: boolean;
477
+ hasNext: boolean;
478
+ parallelPrefix: string | null;
479
+ };
480
+ lastClickedNodeId: string | null;
481
+ lastClickedEdgeId: string | null;
482
+ focusedNodeId: string | null;
483
+ hoveredEdgeId: string | null;
484
+ dimmed: ReadonlySet<string>;
485
+ lastOnNavigate: null | {
486
+ fromView: ViewId;
487
+ toView: ViewId;
488
+ fromNode: NodeId | null;
489
+ };
490
+ navigationHistory: Array<{
491
+ viewId: ViewId;
492
+ nodeId: NodeId | null;
493
+ }>;
494
+ navigationHistoryIndex: number;
495
+ updateView: (view: DiagramView) => void;
496
+ focusOnNode: (nodeId: string | false) => void;
497
+ setHoveredEdge: (edgeId: string | null) => void;
498
+ setLastClickedNode: (nodeId: string | null) => void;
499
+ setLastClickedEdge: (edgeId: string | null) => void;
500
+ resetFocusAndLastClicked: () => void;
501
+ getElement: (id: Fqn) => DiagramNode | null;
502
+ triggerChangeElementStyle: (change: ViewChange.ChangeElementStyle) => void;
503
+ cancelSaveManualLayout: () => boolean;
504
+ scheduleSaveManualLayout: () => void;
505
+ triggerSaveManualLayout: () => void;
506
+ triggerOnNavigateTo: (xynodeId: string, event: ReactMouseEvent) => void;
507
+ fitDiagram: (duration?: number) => void;
508
+ goBack: () => void;
509
+ goForward: () => void;
510
+ nextDynamicStep: (increment?: number) => void;
511
+ activateWalkthrough: (step: EdgeId | {
512
+ id: string;
513
+ type: "relationship";
514
+ source: string;
515
+ target: string;
516
+ sourceHandle?: string | null;
517
+ targetHandle?: string | null;
518
+ animated?: boolean;
519
+ hidden?: boolean;
520
+ deletable?: boolean;
521
+ selectable?: boolean;
522
+ data: DiagramFlowTypes.DiagramEdgeData;
523
+ selected?: boolean;
524
+ markerStart?: EdgeMarkerType;
525
+ markerEnd?: EdgeMarkerType;
526
+ zIndex?: number;
527
+ ariaLabel?: string;
528
+ interactionWidth?: number;
529
+ label?: ReactNode;
530
+ labelStyle?: CSSProperties;
531
+ labelShowBg?: boolean;
532
+ labelBgStyle?: CSSProperties;
533
+ labelBgPadding?: [number, number];
534
+ labelBgBorderRadius?: number;
535
+ style?: CSSProperties;
536
+ className?: string;
537
+ reconnectable?: boolean | HandleType;
538
+ focusable?: boolean;
539
+ }) => void;
540
+ stopWalkthrough: () => void;
541
+ openOverlay: (overlay: NonNullable<RequireExactlyOne<{
542
+ elementDetails: Fqn;
543
+ relationshipsOf: Fqn;
544
+ edgeDetails: EdgeId;
545
+ }> | null>) => void;
546
+ closeOverlay: () => void;
547
+ onInit: (xyflow: DiagramFlowTypes.XYFlowInstance) => void;
548
+ onNodesChange: OnNodesChange<DiagramFlowTypes.Node>;
549
+ onEdgesChange: OnEdgesChange<{
550
+ id: string;
551
+ type: "relationship";
552
+ source: string;
553
+ target: string;
554
+ sourceHandle?: string | null;
555
+ targetHandle?: string | null;
556
+ animated?: boolean;
557
+ hidden?: boolean;
558
+ deletable?: boolean;
559
+ selectable?: boolean;
560
+ data: DiagramFlowTypes.DiagramEdgeData;
561
+ selected?: boolean;
562
+ markerStart?: EdgeMarkerType;
563
+ markerEnd?: EdgeMarkerType;
564
+ zIndex?: number;
565
+ ariaLabel?: string;
566
+ interactionWidth?: number;
567
+ label?: ReactNode;
568
+ labelStyle?: CSSProperties;
569
+ labelShowBg?: boolean;
570
+ labelBgStyle?: CSSProperties;
571
+ labelBgPadding?: [number, number];
572
+ labelBgBorderRadius?: number;
573
+ style?: CSSProperties;
574
+ className?: string;
575
+ reconnectable?: boolean | HandleType;
576
+ focusable?: boolean;
577
+ }>;
578
+ highlightByElementNotation: (notation: ElementNotation, onlyOfKind?: NodeKind) => void;
579
+ resetEdgeControlPoints: () => void;
580
+ align: (mode: AlignmentMode) => void;
581
+ onOpenSourceView: () => void;
582
+ }) => void): () => void;
583
+ <U>(selector: (state: {
584
+ view: DiagramView;
585
+ readonly: boolean;
586
+ hasLikeC4Model: boolean;
587
+ controls: boolean;
588
+ showNavigationButtons: boolean;
589
+ showNotations: boolean;
590
+ fitViewEnabled: boolean;
591
+ fitViewPadding: number;
592
+ zoomable: boolean;
593
+ pannable: boolean;
594
+ nodesDraggable: boolean;
595
+ nodesSelectable: boolean;
596
+ experimentalEdgeEditing: boolean;
597
+ enableFocusMode: boolean;
598
+ enableElementDetails: boolean;
599
+ enableRelationshipBrowser: boolean;
600
+ enableRelationshipDetails: boolean;
601
+ enableSearch: boolean;
602
+ renderIcon: ElementIconRenderer | null;
603
+ whereFilter: WhereOperator<string, string> | null;
604
+ enableDynamicViewWalkthrough: boolean;
605
+ xyflow: DiagramFlowTypes.XYFlowInstance;
606
+ xystore: XYStoreApi;
607
+ getContainer: () => HTMLDivElement | null;
608
+ onChange: OnChange | null;
609
+ onNavigateTo: OnNavigateTo<ViewId> | null;
610
+ onNodeClick: OnNodeClick | null;
611
+ onNodeContextMenu: OnNodeClick | null;
612
+ onCanvasContextMenu: OnCanvasClick | null;
613
+ onEdgeClick: OnEdgeClick | null;
614
+ onEdgeContextMenu: OnEdgeClick | null;
615
+ onCanvasClick: OnCanvasClick | null;
616
+ onCanvasDblClick: OnCanvasClick | null;
617
+ onBurgerMenuClick: (() => void) | null;
618
+ onOpenSource: ((params: OpenSourceParams) => void) | null;
619
+ readonly storeDevId: string;
620
+ xynodes: DiagramFlowTypes.Node[];
621
+ xyedges: {
622
+ id: string;
623
+ type: "relationship";
624
+ source: string;
625
+ target: string;
626
+ sourceHandle?: string | null;
627
+ targetHandle?: string | null;
628
+ animated?: boolean;
629
+ hidden?: boolean;
630
+ deletable?: boolean;
631
+ selectable?: boolean;
632
+ data: DiagramFlowTypes.DiagramEdgeData;
633
+ selected?: boolean;
634
+ markerStart?: EdgeMarkerType;
635
+ markerEnd?: EdgeMarkerType;
636
+ zIndex?: number;
637
+ ariaLabel?: string;
638
+ interactionWidth?: number;
639
+ label?: ReactNode;
640
+ labelStyle?: CSSProperties;
641
+ labelShowBg?: boolean;
642
+ labelBgStyle?: CSSProperties;
643
+ labelBgPadding?: [number, number];
644
+ labelBgBorderRadius?: number;
645
+ style?: CSSProperties;
646
+ className?: string;
647
+ reconnectable?: boolean | HandleType;
648
+ focusable?: boolean;
649
+ }[];
650
+ viewSyncDebounceTimeout: number | null;
651
+ viewportChanged: boolean;
652
+ initialized: boolean;
653
+ activeOverlay: null | RequireExactlyOne<{
654
+ elementDetails: Fqn;
655
+ relationshipsOf: Fqn;
656
+ edgeDetails: EdgeId;
657
+ }>;
658
+ isEditable: () => boolean;
659
+ isDynamicView: boolean;
660
+ activeWalkthrough: null | {
661
+ stepId: StepEdgeId;
662
+ hasPrevious: boolean;
663
+ hasNext: boolean;
664
+ parallelPrefix: string | null;
665
+ };
666
+ lastClickedNodeId: string | null;
667
+ lastClickedEdgeId: string | null;
668
+ focusedNodeId: string | null;
669
+ hoveredEdgeId: string | null;
670
+ dimmed: ReadonlySet<string>;
671
+ lastOnNavigate: null | {
672
+ fromView: ViewId;
673
+ toView: ViewId;
674
+ fromNode: NodeId | null;
675
+ };
676
+ navigationHistory: Array<{
677
+ viewId: ViewId;
678
+ nodeId: NodeId | null;
679
+ }>;
680
+ navigationHistoryIndex: number;
681
+ updateView: (view: DiagramView) => void;
682
+ focusOnNode: (nodeId: string | false) => void;
683
+ setHoveredEdge: (edgeId: string | null) => void;
684
+ setLastClickedNode: (nodeId: string | null) => void;
685
+ setLastClickedEdge: (edgeId: string | null) => void;
686
+ resetFocusAndLastClicked: () => void;
687
+ getElement: (id: Fqn) => DiagramNode | null;
688
+ triggerChangeElementStyle: (change: ViewChange.ChangeElementStyle) => void;
689
+ cancelSaveManualLayout: () => boolean;
690
+ scheduleSaveManualLayout: () => void;
691
+ triggerSaveManualLayout: () => void;
692
+ triggerOnNavigateTo: (xynodeId: string, event: ReactMouseEvent) => void;
693
+ fitDiagram: (duration?: number) => void;
694
+ goBack: () => void;
695
+ goForward: () => void;
696
+ nextDynamicStep: (increment?: number) => void;
697
+ activateWalkthrough: (step: EdgeId | {
698
+ id: string;
699
+ type: "relationship";
700
+ source: string;
701
+ target: string;
702
+ sourceHandle?: string | null;
703
+ targetHandle?: string | null;
704
+ animated?: boolean;
705
+ hidden?: boolean;
706
+ deletable?: boolean;
707
+ selectable?: boolean;
708
+ data: DiagramFlowTypes.DiagramEdgeData;
709
+ selected?: boolean;
710
+ markerStart?: EdgeMarkerType;
711
+ markerEnd?: EdgeMarkerType;
712
+ zIndex?: number;
713
+ ariaLabel?: string;
714
+ interactionWidth?: number;
715
+ label?: ReactNode;
716
+ labelStyle?: CSSProperties;
717
+ labelShowBg?: boolean;
718
+ labelBgStyle?: CSSProperties;
719
+ labelBgPadding?: [number, number];
720
+ labelBgBorderRadius?: number;
721
+ style?: CSSProperties;
722
+ className?: string;
723
+ reconnectable?: boolean | HandleType;
724
+ focusable?: boolean;
725
+ }) => void;
726
+ stopWalkthrough: () => void;
727
+ openOverlay: (overlay: NonNullable<RequireExactlyOne<{
728
+ elementDetails: Fqn;
729
+ relationshipsOf: Fqn;
730
+ edgeDetails: EdgeId;
731
+ }> | null>) => void;
732
+ closeOverlay: () => void;
733
+ onInit: (xyflow: DiagramFlowTypes.XYFlowInstance) => void;
734
+ onNodesChange: OnNodesChange<DiagramFlowTypes.Node>;
735
+ onEdgesChange: OnEdgesChange<{
736
+ id: string;
737
+ type: "relationship";
738
+ source: string;
739
+ target: string;
740
+ sourceHandle?: string | null;
741
+ targetHandle?: string | null;
742
+ animated?: boolean;
743
+ hidden?: boolean;
744
+ deletable?: boolean;
745
+ selectable?: boolean;
746
+ data: DiagramFlowTypes.DiagramEdgeData;
747
+ selected?: boolean;
748
+ markerStart?: EdgeMarkerType;
749
+ markerEnd?: EdgeMarkerType;
750
+ zIndex?: number;
751
+ ariaLabel?: string;
752
+ interactionWidth?: number;
753
+ label?: ReactNode;
754
+ labelStyle?: CSSProperties;
755
+ labelShowBg?: boolean;
756
+ labelBgStyle?: CSSProperties;
757
+ labelBgPadding?: [number, number];
758
+ labelBgBorderRadius?: number;
759
+ style?: CSSProperties;
760
+ className?: string;
761
+ reconnectable?: boolean | HandleType;
762
+ focusable?: boolean;
763
+ }>;
764
+ highlightByElementNotation: (notation: ElementNotation, onlyOfKind?: NodeKind) => void;
765
+ resetEdgeControlPoints: () => void;
766
+ align: (mode: AlignmentMode) => void;
767
+ onOpenSourceView: () => void;
768
+ }) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
769
+ equalityFn?: (a: U, b: U) => boolean;
770
+ fireImmediately?: boolean;
771
+ } | undefined): () => void;
772
+ };
773
+ }, "setState"> & {
774
+ setState<A extends string | {
775
+ type: string;
776
+ }>(partial: {
777
+ view: DiagramView;
778
+ readonly: boolean;
779
+ hasLikeC4Model: boolean;
780
+ controls: boolean;
781
+ showNavigationButtons: boolean;
782
+ showNotations: boolean;
783
+ fitViewEnabled: boolean;
784
+ fitViewPadding: number;
785
+ zoomable: boolean;
786
+ pannable: boolean;
787
+ nodesDraggable: boolean;
788
+ nodesSelectable: boolean;
789
+ experimentalEdgeEditing: boolean;
790
+ enableFocusMode: boolean;
791
+ enableElementDetails: boolean;
792
+ enableRelationshipBrowser: boolean;
793
+ enableRelationshipDetails: boolean;
794
+ enableSearch: boolean;
795
+ renderIcon: ElementIconRenderer | null;
796
+ whereFilter: WhereOperator<string, string> | null;
797
+ enableDynamicViewWalkthrough: boolean;
798
+ xyflow: DiagramFlowTypes.XYFlowInstance;
799
+ xystore: XYStoreApi;
800
+ getContainer: () => HTMLDivElement | null;
801
+ onChange: OnChange | null;
802
+ onNavigateTo: OnNavigateTo<ViewId> | null;
803
+ onNodeClick: OnNodeClick | null;
804
+ onNodeContextMenu: OnNodeClick | null;
805
+ onCanvasContextMenu: OnCanvasClick | null;
806
+ onEdgeClick: OnEdgeClick | null;
807
+ onEdgeContextMenu: OnEdgeClick | null;
808
+ onCanvasClick: OnCanvasClick | null;
809
+ onCanvasDblClick: OnCanvasClick | null;
810
+ onBurgerMenuClick: (() => void) | null;
811
+ onOpenSource: ((params: OpenSourceParams) => void) | null;
812
+ readonly storeDevId: string;
813
+ xynodes: DiagramFlowTypes.Node[];
814
+ xyedges: {
815
+ id: string;
816
+ type: "relationship";
817
+ source: string;
818
+ target: string;
819
+ sourceHandle?: string | null;
820
+ targetHandle?: string | null;
821
+ animated?: boolean;
822
+ hidden?: boolean;
823
+ deletable?: boolean;
824
+ selectable?: boolean;
825
+ data: DiagramFlowTypes.DiagramEdgeData;
826
+ selected?: boolean;
827
+ markerStart?: EdgeMarkerType;
828
+ markerEnd?: EdgeMarkerType;
829
+ zIndex?: number;
830
+ ariaLabel?: string;
831
+ interactionWidth?: number;
832
+ label?: ReactNode;
833
+ labelStyle?: CSSProperties;
834
+ labelShowBg?: boolean;
835
+ labelBgStyle?: CSSProperties;
836
+ labelBgPadding?: [number, number];
837
+ labelBgBorderRadius?: number;
838
+ style?: CSSProperties;
839
+ className?: string;
840
+ reconnectable?: boolean | HandleType;
841
+ focusable?: boolean;
842
+ }[];
843
+ viewSyncDebounceTimeout: number | null;
844
+ viewportChanged: boolean;
845
+ initialized: boolean;
846
+ activeOverlay: null | RequireExactlyOne<{
847
+ elementDetails: Fqn;
848
+ relationshipsOf: Fqn;
849
+ edgeDetails: EdgeId;
850
+ }>;
851
+ isEditable: () => boolean;
852
+ isDynamicView: boolean;
853
+ activeWalkthrough: null | {
854
+ stepId: StepEdgeId;
855
+ hasPrevious: boolean;
856
+ hasNext: boolean;
857
+ parallelPrefix: string | null;
858
+ };
859
+ lastClickedNodeId: string | null;
860
+ lastClickedEdgeId: string | null;
861
+ focusedNodeId: string | null;
862
+ hoveredEdgeId: string | null;
863
+ dimmed: ReadonlySet<string>;
864
+ lastOnNavigate: null | {
865
+ fromView: ViewId;
866
+ toView: ViewId;
867
+ fromNode: NodeId | null;
868
+ };
869
+ navigationHistory: Array<{
870
+ viewId: ViewId;
871
+ nodeId: NodeId | null;
872
+ }>;
873
+ navigationHistoryIndex: number;
874
+ updateView: (view: DiagramView) => void;
875
+ focusOnNode: (nodeId: string | false) => void;
876
+ setHoveredEdge: (edgeId: string | null) => void;
877
+ setLastClickedNode: (nodeId: string | null) => void;
878
+ setLastClickedEdge: (edgeId: string | null) => void;
879
+ resetFocusAndLastClicked: () => void;
880
+ getElement: (id: Fqn) => DiagramNode | null;
881
+ triggerChangeElementStyle: (change: ViewChange.ChangeElementStyle) => void;
882
+ cancelSaveManualLayout: () => boolean;
883
+ scheduleSaveManualLayout: () => void;
884
+ triggerSaveManualLayout: () => void;
885
+ triggerOnNavigateTo: (xynodeId: string, event: ReactMouseEvent) => void;
886
+ fitDiagram: (duration?: number) => void;
887
+ goBack: () => void;
888
+ goForward: () => void;
889
+ nextDynamicStep: (increment?: number) => void;
890
+ activateWalkthrough: (step: EdgeId | {
891
+ id: string;
892
+ type: "relationship";
893
+ source: string;
894
+ target: string;
895
+ sourceHandle?: string | null;
896
+ targetHandle?: string | null;
897
+ animated?: boolean;
898
+ hidden?: boolean;
899
+ deletable?: boolean;
900
+ selectable?: boolean;
901
+ data: DiagramFlowTypes.DiagramEdgeData;
902
+ selected?: boolean;
903
+ markerStart?: EdgeMarkerType;
904
+ markerEnd?: EdgeMarkerType;
905
+ zIndex?: number;
906
+ ariaLabel?: string;
907
+ interactionWidth?: number;
908
+ label?: ReactNode;
909
+ labelStyle?: CSSProperties;
910
+ labelShowBg?: boolean;
911
+ labelBgStyle?: CSSProperties;
912
+ labelBgPadding?: [number, number];
913
+ labelBgBorderRadius?: number;
914
+ style?: CSSProperties;
915
+ className?: string;
916
+ reconnectable?: boolean | HandleType;
917
+ focusable?: boolean;
918
+ }) => void;
919
+ stopWalkthrough: () => void;
920
+ openOverlay: (overlay: NonNullable<RequireExactlyOne<{
921
+ elementDetails: Fqn;
922
+ relationshipsOf: Fqn;
923
+ edgeDetails: EdgeId;
924
+ }> | null>) => void;
925
+ closeOverlay: () => void;
926
+ onInit: (xyflow: DiagramFlowTypes.XYFlowInstance) => void;
927
+ onNodesChange: OnNodesChange<DiagramFlowTypes.Node>;
928
+ onEdgesChange: OnEdgesChange<{
929
+ id: string;
930
+ type: "relationship";
931
+ source: string;
932
+ target: string;
933
+ sourceHandle?: string | null;
934
+ targetHandle?: string | null;
935
+ animated?: boolean;
936
+ hidden?: boolean;
937
+ deletable?: boolean;
938
+ selectable?: boolean;
939
+ data: DiagramFlowTypes.DiagramEdgeData;
940
+ selected?: boolean;
941
+ markerStart?: EdgeMarkerType;
942
+ markerEnd?: EdgeMarkerType;
943
+ zIndex?: number;
944
+ ariaLabel?: string;
945
+ interactionWidth?: number;
946
+ label?: ReactNode;
947
+ labelStyle?: CSSProperties;
948
+ labelShowBg?: boolean;
949
+ labelBgStyle?: CSSProperties;
950
+ labelBgPadding?: [number, number];
951
+ labelBgBorderRadius?: number;
952
+ style?: CSSProperties;
953
+ className?: string;
954
+ reconnectable?: boolean | HandleType;
955
+ focusable?: boolean;
956
+ }>;
957
+ highlightByElementNotation: (notation: ElementNotation, onlyOfKind?: NodeKind) => void;
958
+ resetEdgeControlPoints: () => void;
959
+ align: (mode: AlignmentMode) => void;
960
+ onOpenSourceView: () => void;
961
+ } | Partial<{
962
+ view: DiagramView;
963
+ readonly: boolean;
964
+ hasLikeC4Model: boolean;
965
+ controls: boolean;
966
+ showNavigationButtons: boolean;
967
+ showNotations: boolean;
968
+ fitViewEnabled: boolean;
969
+ fitViewPadding: number;
970
+ zoomable: boolean;
971
+ pannable: boolean;
972
+ nodesDraggable: boolean;
973
+ nodesSelectable: boolean;
974
+ experimentalEdgeEditing: boolean;
975
+ enableFocusMode: boolean;
976
+ enableElementDetails: boolean;
977
+ enableRelationshipBrowser: boolean;
978
+ enableRelationshipDetails: boolean;
979
+ enableSearch: boolean;
980
+ renderIcon: ElementIconRenderer | null;
981
+ whereFilter: WhereOperator<string, string> | null;
982
+ enableDynamicViewWalkthrough: boolean;
983
+ xyflow: DiagramFlowTypes.XYFlowInstance;
984
+ xystore: XYStoreApi;
985
+ getContainer: () => HTMLDivElement | null;
986
+ onChange: OnChange | null;
987
+ onNavigateTo: OnNavigateTo<ViewId> | null;
988
+ onNodeClick: OnNodeClick | null;
989
+ onNodeContextMenu: OnNodeClick | null;
990
+ onCanvasContextMenu: OnCanvasClick | null;
991
+ onEdgeClick: OnEdgeClick | null;
992
+ onEdgeContextMenu: OnEdgeClick | null;
993
+ onCanvasClick: OnCanvasClick | null;
994
+ onCanvasDblClick: OnCanvasClick | null;
995
+ onBurgerMenuClick: (() => void) | null;
996
+ onOpenSource: ((params: OpenSourceParams) => void) | null;
997
+ readonly storeDevId: string;
998
+ xynodes: DiagramFlowTypes.Node[];
999
+ xyedges: {
1000
+ id: string;
1001
+ type: "relationship";
1002
+ source: string;
1003
+ target: string;
1004
+ sourceHandle?: string | null;
1005
+ targetHandle?: string | null;
1006
+ animated?: boolean;
1007
+ hidden?: boolean;
1008
+ deletable?: boolean;
1009
+ selectable?: boolean;
1010
+ data: DiagramFlowTypes.DiagramEdgeData;
1011
+ selected?: boolean;
1012
+ markerStart?: EdgeMarkerType;
1013
+ markerEnd?: EdgeMarkerType;
1014
+ zIndex?: number;
1015
+ ariaLabel?: string;
1016
+ interactionWidth?: number;
1017
+ label?: ReactNode;
1018
+ labelStyle?: CSSProperties;
1019
+ labelShowBg?: boolean;
1020
+ labelBgStyle?: CSSProperties;
1021
+ labelBgPadding?: [number, number];
1022
+ labelBgBorderRadius?: number;
1023
+ style?: CSSProperties;
1024
+ className?: string;
1025
+ reconnectable?: boolean | HandleType;
1026
+ focusable?: boolean;
1027
+ }[];
1028
+ viewSyncDebounceTimeout: number | null;
1029
+ viewportChanged: boolean;
1030
+ initialized: boolean;
1031
+ activeOverlay: null | RequireExactlyOne<{
1032
+ elementDetails: Fqn;
1033
+ relationshipsOf: Fqn;
1034
+ edgeDetails: EdgeId;
1035
+ }>;
1036
+ isEditable: () => boolean;
1037
+ isDynamicView: boolean;
1038
+ activeWalkthrough: null | {
1039
+ stepId: StepEdgeId;
1040
+ hasPrevious: boolean;
1041
+ hasNext: boolean;
1042
+ parallelPrefix: string | null;
1043
+ };
1044
+ lastClickedNodeId: string | null;
1045
+ lastClickedEdgeId: string | null;
1046
+ focusedNodeId: string | null;
1047
+ hoveredEdgeId: string | null;
1048
+ dimmed: ReadonlySet<string>;
1049
+ lastOnNavigate: null | {
1050
+ fromView: ViewId;
1051
+ toView: ViewId;
1052
+ fromNode: NodeId | null;
1053
+ };
1054
+ navigationHistory: Array<{
1055
+ viewId: ViewId;
1056
+ nodeId: NodeId | null;
1057
+ }>;
1058
+ navigationHistoryIndex: number;
1059
+ updateView: (view: DiagramView) => void;
1060
+ focusOnNode: (nodeId: string | false) => void;
1061
+ setHoveredEdge: (edgeId: string | null) => void;
1062
+ setLastClickedNode: (nodeId: string | null) => void;
1063
+ setLastClickedEdge: (edgeId: string | null) => void;
1064
+ resetFocusAndLastClicked: () => void;
1065
+ getElement: (id: Fqn) => DiagramNode | null;
1066
+ triggerChangeElementStyle: (change: ViewChange.ChangeElementStyle) => void;
1067
+ cancelSaveManualLayout: () => boolean;
1068
+ scheduleSaveManualLayout: () => void;
1069
+ triggerSaveManualLayout: () => void;
1070
+ triggerOnNavigateTo: (xynodeId: string, event: ReactMouseEvent) => void;
1071
+ fitDiagram: (duration?: number) => void;
1072
+ goBack: () => void;
1073
+ goForward: () => void;
1074
+ nextDynamicStep: (increment?: number) => void;
1075
+ activateWalkthrough: (step: EdgeId | {
1076
+ id: string;
1077
+ type: "relationship";
1078
+ source: string;
1079
+ target: string;
1080
+ sourceHandle?: string | null;
1081
+ targetHandle?: string | null;
1082
+ animated?: boolean;
1083
+ hidden?: boolean;
1084
+ deletable?: boolean;
1085
+ selectable?: boolean;
1086
+ data: DiagramFlowTypes.DiagramEdgeData;
1087
+ selected?: boolean;
1088
+ markerStart?: EdgeMarkerType;
1089
+ markerEnd?: EdgeMarkerType;
1090
+ zIndex?: number;
1091
+ ariaLabel?: string;
1092
+ interactionWidth?: number;
1093
+ label?: ReactNode;
1094
+ labelStyle?: CSSProperties;
1095
+ labelShowBg?: boolean;
1096
+ labelBgStyle?: CSSProperties;
1097
+ labelBgPadding?: [number, number];
1098
+ labelBgBorderRadius?: number;
1099
+ style?: CSSProperties;
1100
+ className?: string;
1101
+ reconnectable?: boolean | HandleType;
1102
+ focusable?: boolean;
1103
+ }) => void;
1104
+ stopWalkthrough: () => void;
1105
+ openOverlay: (overlay: NonNullable<RequireExactlyOne<{
1106
+ elementDetails: Fqn;
1107
+ relationshipsOf: Fqn;
1108
+ edgeDetails: EdgeId;
1109
+ }> | null>) => void;
1110
+ closeOverlay: () => void;
1111
+ onInit: (xyflow: DiagramFlowTypes.XYFlowInstance) => void;
1112
+ onNodesChange: OnNodesChange<DiagramFlowTypes.Node>;
1113
+ onEdgesChange: OnEdgesChange<{
1114
+ id: string;
1115
+ type: "relationship";
1116
+ source: string;
1117
+ target: string;
1118
+ sourceHandle?: string | null;
1119
+ targetHandle?: string | null;
1120
+ animated?: boolean;
1121
+ hidden?: boolean;
1122
+ deletable?: boolean;
1123
+ selectable?: boolean;
1124
+ data: DiagramFlowTypes.DiagramEdgeData;
1125
+ selected?: boolean;
1126
+ markerStart?: EdgeMarkerType;
1127
+ markerEnd?: EdgeMarkerType;
1128
+ zIndex?: number;
1129
+ ariaLabel?: string;
1130
+ interactionWidth?: number;
1131
+ label?: ReactNode;
1132
+ labelStyle?: CSSProperties;
1133
+ labelShowBg?: boolean;
1134
+ labelBgStyle?: CSSProperties;
1135
+ labelBgPadding?: [number, number];
1136
+ labelBgBorderRadius?: number;
1137
+ style?: CSSProperties;
1138
+ className?: string;
1139
+ reconnectable?: boolean | HandleType;
1140
+ focusable?: boolean;
1141
+ }>;
1142
+ highlightByElementNotation: (notation: ElementNotation, onlyOfKind?: NodeKind) => void;
1143
+ resetEdgeControlPoints: () => void;
1144
+ align: (mode: AlignmentMode) => void;
1145
+ onOpenSourceView: () => void;
1146
+ }> | ((state: {
1147
+ view: DiagramView;
1148
+ readonly: boolean;
1149
+ hasLikeC4Model: boolean;
1150
+ controls: boolean;
1151
+ showNavigationButtons: boolean;
1152
+ showNotations: boolean;
1153
+ fitViewEnabled: boolean;
1154
+ fitViewPadding: number;
1155
+ zoomable: boolean;
1156
+ pannable: boolean;
1157
+ nodesDraggable: boolean;
1158
+ nodesSelectable: boolean;
1159
+ experimentalEdgeEditing: boolean;
1160
+ enableFocusMode: boolean;
1161
+ enableElementDetails: boolean;
1162
+ enableRelationshipBrowser: boolean;
1163
+ enableRelationshipDetails: boolean;
1164
+ enableSearch: boolean;
1165
+ renderIcon: ElementIconRenderer | null;
1166
+ whereFilter: WhereOperator<string, string> | null;
1167
+ enableDynamicViewWalkthrough: boolean;
1168
+ xyflow: DiagramFlowTypes.XYFlowInstance;
1169
+ xystore: XYStoreApi;
1170
+ getContainer: () => HTMLDivElement | null;
1171
+ onChange: OnChange | null;
1172
+ onNavigateTo: OnNavigateTo<ViewId> | null;
1173
+ onNodeClick: OnNodeClick | null;
1174
+ onNodeContextMenu: OnNodeClick | null;
1175
+ onCanvasContextMenu: OnCanvasClick | null;
1176
+ onEdgeClick: OnEdgeClick | null;
1177
+ onEdgeContextMenu: OnEdgeClick | null;
1178
+ onCanvasClick: OnCanvasClick | null;
1179
+ onCanvasDblClick: OnCanvasClick | null;
1180
+ onBurgerMenuClick: (() => void) | null;
1181
+ onOpenSource: ((params: OpenSourceParams) => void) | null;
1182
+ readonly storeDevId: string;
1183
+ xynodes: DiagramFlowTypes.Node[];
1184
+ xyedges: {
1185
+ id: string;
1186
+ type: "relationship";
1187
+ source: string;
1188
+ target: string;
1189
+ sourceHandle?: string | null;
1190
+ targetHandle?: string | null;
1191
+ animated?: boolean;
1192
+ hidden?: boolean;
1193
+ deletable?: boolean;
1194
+ selectable?: boolean;
1195
+ data: DiagramFlowTypes.DiagramEdgeData;
1196
+ selected?: boolean;
1197
+ markerStart?: EdgeMarkerType;
1198
+ markerEnd?: EdgeMarkerType;
1199
+ zIndex?: number;
1200
+ ariaLabel?: string;
1201
+ interactionWidth?: number;
1202
+ label?: ReactNode;
1203
+ labelStyle?: CSSProperties;
1204
+ labelShowBg?: boolean;
1205
+ labelBgStyle?: CSSProperties;
1206
+ labelBgPadding?: [number, number];
1207
+ labelBgBorderRadius?: number;
1208
+ style?: CSSProperties;
1209
+ className?: string;
1210
+ reconnectable?: boolean | HandleType;
1211
+ focusable?: boolean;
1212
+ }[];
1213
+ viewSyncDebounceTimeout: number | null;
1214
+ viewportChanged: boolean;
1215
+ initialized: boolean;
1216
+ activeOverlay: null | RequireExactlyOne<{
1217
+ elementDetails: Fqn;
1218
+ relationshipsOf: Fqn;
1219
+ edgeDetails: EdgeId;
1220
+ }>;
1221
+ isEditable: () => boolean;
1222
+ isDynamicView: boolean;
1223
+ activeWalkthrough: null | {
1224
+ stepId: StepEdgeId;
1225
+ hasPrevious: boolean;
1226
+ hasNext: boolean;
1227
+ parallelPrefix: string | null;
1228
+ };
1229
+ lastClickedNodeId: string | null;
1230
+ lastClickedEdgeId: string | null;
1231
+ focusedNodeId: string | null;
1232
+ hoveredEdgeId: string | null;
1233
+ dimmed: ReadonlySet<string>;
1234
+ lastOnNavigate: null | {
1235
+ fromView: ViewId;
1236
+ toView: ViewId;
1237
+ fromNode: NodeId | null;
1238
+ };
1239
+ navigationHistory: Array<{
1240
+ viewId: ViewId;
1241
+ nodeId: NodeId | null;
1242
+ }>;
1243
+ navigationHistoryIndex: number;
1244
+ updateView: (view: DiagramView) => void;
1245
+ focusOnNode: (nodeId: string | false) => void;
1246
+ setHoveredEdge: (edgeId: string | null) => void;
1247
+ setLastClickedNode: (nodeId: string | null) => void;
1248
+ setLastClickedEdge: (edgeId: string | null) => void;
1249
+ resetFocusAndLastClicked: () => void;
1250
+ getElement: (id: Fqn) => DiagramNode | null;
1251
+ triggerChangeElementStyle: (change: ViewChange.ChangeElementStyle) => void;
1252
+ cancelSaveManualLayout: () => boolean;
1253
+ scheduleSaveManualLayout: () => void;
1254
+ triggerSaveManualLayout: () => void;
1255
+ triggerOnNavigateTo: (xynodeId: string, event: ReactMouseEvent) => void;
1256
+ fitDiagram: (duration?: number) => void;
1257
+ goBack: () => void;
1258
+ goForward: () => void;
1259
+ nextDynamicStep: (increment?: number) => void;
1260
+ activateWalkthrough: (step: EdgeId | {
1261
+ id: string;
1262
+ type: "relationship";
1263
+ source: string;
1264
+ target: string;
1265
+ sourceHandle?: string | null;
1266
+ targetHandle?: string | null;
1267
+ animated?: boolean;
1268
+ hidden?: boolean;
1269
+ deletable?: boolean;
1270
+ selectable?: boolean;
1271
+ data: DiagramFlowTypes.DiagramEdgeData;
1272
+ selected?: boolean;
1273
+ markerStart?: EdgeMarkerType;
1274
+ markerEnd?: EdgeMarkerType;
1275
+ zIndex?: number;
1276
+ ariaLabel?: string;
1277
+ interactionWidth?: number;
1278
+ label?: ReactNode;
1279
+ labelStyle?: CSSProperties;
1280
+ labelShowBg?: boolean;
1281
+ labelBgStyle?: CSSProperties;
1282
+ labelBgPadding?: [number, number];
1283
+ labelBgBorderRadius?: number;
1284
+ style?: CSSProperties;
1285
+ className?: string;
1286
+ reconnectable?: boolean | HandleType;
1287
+ focusable?: boolean;
1288
+ }) => void;
1289
+ stopWalkthrough: () => void;
1290
+ openOverlay: (overlay: NonNullable<RequireExactlyOne<{
1291
+ elementDetails: Fqn;
1292
+ relationshipsOf: Fqn;
1293
+ edgeDetails: EdgeId;
1294
+ }> | null>) => void;
1295
+ closeOverlay: () => void;
1296
+ onInit: (xyflow: DiagramFlowTypes.XYFlowInstance) => void;
1297
+ onNodesChange: OnNodesChange<DiagramFlowTypes.Node>;
1298
+ onEdgesChange: OnEdgesChange<{
1299
+ id: string;
1300
+ type: "relationship";
1301
+ source: string;
1302
+ target: string;
1303
+ sourceHandle?: string | null;
1304
+ targetHandle?: string | null;
1305
+ animated?: boolean;
1306
+ hidden?: boolean;
1307
+ deletable?: boolean;
1308
+ selectable?: boolean;
1309
+ data: DiagramFlowTypes.DiagramEdgeData;
1310
+ selected?: boolean;
1311
+ markerStart?: EdgeMarkerType;
1312
+ markerEnd?: EdgeMarkerType;
1313
+ zIndex?: number;
1314
+ ariaLabel?: string;
1315
+ interactionWidth?: number;
1316
+ label?: ReactNode;
1317
+ labelStyle?: CSSProperties;
1318
+ labelShowBg?: boolean;
1319
+ labelBgStyle?: CSSProperties;
1320
+ labelBgPadding?: [number, number];
1321
+ labelBgBorderRadius?: number;
1322
+ style?: CSSProperties;
1323
+ className?: string;
1324
+ reconnectable?: boolean | HandleType;
1325
+ focusable?: boolean;
1326
+ }>;
1327
+ highlightByElementNotation: (notation: ElementNotation, onlyOfKind?: NodeKind) => void;
1328
+ resetEdgeControlPoints: () => void;
1329
+ align: (mode: AlignmentMode) => void;
1330
+ onOpenSourceView: () => void;
1331
+ }) => {
1332
+ view: DiagramView;
1333
+ readonly: boolean;
1334
+ hasLikeC4Model: boolean;
1335
+ controls: boolean;
1336
+ showNavigationButtons: boolean;
1337
+ showNotations: boolean;
1338
+ fitViewEnabled: boolean;
1339
+ fitViewPadding: number;
1340
+ zoomable: boolean;
1341
+ pannable: boolean;
1342
+ nodesDraggable: boolean;
1343
+ nodesSelectable: boolean;
1344
+ experimentalEdgeEditing: boolean;
1345
+ enableFocusMode: boolean;
1346
+ enableElementDetails: boolean;
1347
+ enableRelationshipBrowser: boolean;
1348
+ enableRelationshipDetails: boolean;
1349
+ enableSearch: boolean;
1350
+ renderIcon: ElementIconRenderer | null;
1351
+ whereFilter: WhereOperator<string, string> | null;
1352
+ enableDynamicViewWalkthrough: boolean;
1353
+ xyflow: DiagramFlowTypes.XYFlowInstance;
1354
+ xystore: XYStoreApi;
1355
+ getContainer: () => HTMLDivElement | null;
1356
+ onChange: OnChange | null;
1357
+ onNavigateTo: OnNavigateTo<ViewId> | null;
1358
+ onNodeClick: OnNodeClick | null;
1359
+ onNodeContextMenu: OnNodeClick | null;
1360
+ onCanvasContextMenu: OnCanvasClick | null;
1361
+ onEdgeClick: OnEdgeClick | null;
1362
+ onEdgeContextMenu: OnEdgeClick | null;
1363
+ onCanvasClick: OnCanvasClick | null;
1364
+ onCanvasDblClick: OnCanvasClick | null;
1365
+ onBurgerMenuClick: (() => void) | null;
1366
+ onOpenSource: ((params: OpenSourceParams) => void) | null;
1367
+ readonly storeDevId: string;
1368
+ xynodes: DiagramFlowTypes.Node[];
1369
+ xyedges: {
1370
+ id: string;
1371
+ type: "relationship";
1372
+ source: string;
1373
+ target: string;
1374
+ sourceHandle?: string | null;
1375
+ targetHandle?: string | null;
1376
+ animated?: boolean;
1377
+ hidden?: boolean;
1378
+ deletable?: boolean;
1379
+ selectable?: boolean;
1380
+ data: DiagramFlowTypes.DiagramEdgeData;
1381
+ selected?: boolean;
1382
+ markerStart?: EdgeMarkerType;
1383
+ markerEnd?: EdgeMarkerType;
1384
+ zIndex?: number;
1385
+ ariaLabel?: string;
1386
+ interactionWidth?: number;
1387
+ label?: ReactNode;
1388
+ labelStyle?: CSSProperties;
1389
+ labelShowBg?: boolean;
1390
+ labelBgStyle?: CSSProperties;
1391
+ labelBgPadding?: [number, number];
1392
+ labelBgBorderRadius?: number;
1393
+ style?: CSSProperties;
1394
+ className?: string;
1395
+ reconnectable?: boolean | HandleType;
1396
+ focusable?: boolean;
1397
+ }[];
1398
+ viewSyncDebounceTimeout: number | null;
1399
+ viewportChanged: boolean;
1400
+ initialized: boolean;
1401
+ activeOverlay: null | RequireExactlyOne<{
1402
+ elementDetails: Fqn;
1403
+ relationshipsOf: Fqn;
1404
+ edgeDetails: EdgeId;
1405
+ }>;
1406
+ isEditable: () => boolean;
1407
+ isDynamicView: boolean;
1408
+ activeWalkthrough: null | {
1409
+ stepId: StepEdgeId;
1410
+ hasPrevious: boolean;
1411
+ hasNext: boolean;
1412
+ parallelPrefix: string | null;
1413
+ };
1414
+ lastClickedNodeId: string | null;
1415
+ lastClickedEdgeId: string | null;
1416
+ focusedNodeId: string | null;
1417
+ hoveredEdgeId: string | null;
1418
+ dimmed: ReadonlySet<string>;
1419
+ lastOnNavigate: null | {
1420
+ fromView: ViewId;
1421
+ toView: ViewId;
1422
+ fromNode: NodeId | null;
1423
+ };
1424
+ navigationHistory: Array<{
1425
+ viewId: ViewId;
1426
+ nodeId: NodeId | null;
1427
+ }>;
1428
+ navigationHistoryIndex: number;
1429
+ updateView: (view: DiagramView) => void;
1430
+ focusOnNode: (nodeId: string | false) => void;
1431
+ setHoveredEdge: (edgeId: string | null) => void;
1432
+ setLastClickedNode: (nodeId: string | null) => void;
1433
+ setLastClickedEdge: (edgeId: string | null) => void;
1434
+ resetFocusAndLastClicked: () => void;
1435
+ getElement: (id: Fqn) => DiagramNode | null;
1436
+ triggerChangeElementStyle: (change: ViewChange.ChangeElementStyle) => void;
1437
+ cancelSaveManualLayout: () => boolean;
1438
+ scheduleSaveManualLayout: () => void;
1439
+ triggerSaveManualLayout: () => void;
1440
+ triggerOnNavigateTo: (xynodeId: string, event: ReactMouseEvent) => void;
1441
+ fitDiagram: (duration?: number) => void;
1442
+ goBack: () => void;
1443
+ goForward: () => void;
1444
+ nextDynamicStep: (increment?: number) => void;
1445
+ activateWalkthrough: (step: EdgeId | {
1446
+ id: string;
1447
+ type: "relationship";
1448
+ source: string;
1449
+ target: string;
1450
+ sourceHandle?: string | null;
1451
+ targetHandle?: string | null;
1452
+ animated?: boolean;
1453
+ hidden?: boolean;
1454
+ deletable?: boolean;
1455
+ selectable?: boolean;
1456
+ data: DiagramFlowTypes.DiagramEdgeData;
1457
+ selected?: boolean;
1458
+ markerStart?: EdgeMarkerType;
1459
+ markerEnd?: EdgeMarkerType;
1460
+ zIndex?: number;
1461
+ ariaLabel?: string;
1462
+ interactionWidth?: number;
1463
+ label?: ReactNode;
1464
+ labelStyle?: CSSProperties;
1465
+ labelShowBg?: boolean;
1466
+ labelBgStyle?: CSSProperties;
1467
+ labelBgPadding?: [number, number];
1468
+ labelBgBorderRadius?: number;
1469
+ style?: CSSProperties;
1470
+ className?: string;
1471
+ reconnectable?: boolean | HandleType;
1472
+ focusable?: boolean;
1473
+ }) => void;
1474
+ stopWalkthrough: () => void;
1475
+ openOverlay: (overlay: NonNullable<RequireExactlyOne<{
1476
+ elementDetails: Fqn;
1477
+ relationshipsOf: Fqn;
1478
+ edgeDetails: EdgeId;
1479
+ }> | null>) => void;
1480
+ closeOverlay: () => void;
1481
+ onInit: (xyflow: DiagramFlowTypes.XYFlowInstance) => void;
1482
+ onNodesChange: OnNodesChange<DiagramFlowTypes.Node>;
1483
+ onEdgesChange: OnEdgesChange<{
1484
+ id: string;
1485
+ type: "relationship";
1486
+ source: string;
1487
+ target: string;
1488
+ sourceHandle?: string | null;
1489
+ targetHandle?: string | null;
1490
+ animated?: boolean;
1491
+ hidden?: boolean;
1492
+ deletable?: boolean;
1493
+ selectable?: boolean;
1494
+ data: DiagramFlowTypes.DiagramEdgeData;
1495
+ selected?: boolean;
1496
+ markerStart?: EdgeMarkerType;
1497
+ markerEnd?: EdgeMarkerType;
1498
+ zIndex?: number;
1499
+ ariaLabel?: string;
1500
+ interactionWidth?: number;
1501
+ label?: ReactNode;
1502
+ labelStyle?: CSSProperties;
1503
+ labelShowBg?: boolean;
1504
+ labelBgStyle?: CSSProperties;
1505
+ labelBgPadding?: [number, number];
1506
+ labelBgBorderRadius?: number;
1507
+ style?: CSSProperties;
1508
+ className?: string;
1509
+ reconnectable?: boolean | HandleType;
1510
+ focusable?: boolean;
1511
+ }>;
1512
+ highlightByElementNotation: (notation: ElementNotation, onlyOfKind?: NodeKind) => void;
1513
+ resetEdgeControlPoints: () => void;
1514
+ align: (mode: AlignmentMode) => void;
1515
+ onOpenSourceView: () => void;
1516
+ } | Partial<{
1517
+ view: DiagramView;
1518
+ readonly: boolean;
1519
+ hasLikeC4Model: boolean;
1520
+ controls: boolean;
1521
+ showNavigationButtons: boolean;
1522
+ showNotations: boolean;
1523
+ fitViewEnabled: boolean;
1524
+ fitViewPadding: number;
1525
+ zoomable: boolean;
1526
+ pannable: boolean;
1527
+ nodesDraggable: boolean;
1528
+ nodesSelectable: boolean;
1529
+ experimentalEdgeEditing: boolean;
1530
+ enableFocusMode: boolean;
1531
+ enableElementDetails: boolean;
1532
+ enableRelationshipBrowser: boolean;
1533
+ enableRelationshipDetails: boolean;
1534
+ enableSearch: boolean;
1535
+ renderIcon: ElementIconRenderer | null;
1536
+ whereFilter: WhereOperator<string, string> | null;
1537
+ enableDynamicViewWalkthrough: boolean;
1538
+ xyflow: DiagramFlowTypes.XYFlowInstance;
1539
+ xystore: XYStoreApi;
1540
+ getContainer: () => HTMLDivElement | null;
1541
+ onChange: OnChange | null;
1542
+ onNavigateTo: OnNavigateTo<ViewId> | null;
1543
+ onNodeClick: OnNodeClick | null;
1544
+ onNodeContextMenu: OnNodeClick | null;
1545
+ onCanvasContextMenu: OnCanvasClick | null;
1546
+ onEdgeClick: OnEdgeClick | null;
1547
+ onEdgeContextMenu: OnEdgeClick | null;
1548
+ onCanvasClick: OnCanvasClick | null;
1549
+ onCanvasDblClick: OnCanvasClick | null;
1550
+ onBurgerMenuClick: (() => void) | null;
1551
+ onOpenSource: ((params: OpenSourceParams) => void) | null;
1552
+ readonly storeDevId: string;
1553
+ xynodes: DiagramFlowTypes.Node[];
1554
+ xyedges: {
1555
+ id: string;
1556
+ type: "relationship";
1557
+ source: string;
1558
+ target: string;
1559
+ sourceHandle?: string | null;
1560
+ targetHandle?: string | null;
1561
+ animated?: boolean;
1562
+ hidden?: boolean;
1563
+ deletable?: boolean;
1564
+ selectable?: boolean;
1565
+ data: DiagramFlowTypes.DiagramEdgeData;
1566
+ selected?: boolean;
1567
+ markerStart?: EdgeMarkerType;
1568
+ markerEnd?: EdgeMarkerType;
1569
+ zIndex?: number;
1570
+ ariaLabel?: string;
1571
+ interactionWidth?: number;
1572
+ label?: ReactNode;
1573
+ labelStyle?: CSSProperties;
1574
+ labelShowBg?: boolean;
1575
+ labelBgStyle?: CSSProperties;
1576
+ labelBgPadding?: [number, number];
1577
+ labelBgBorderRadius?: number;
1578
+ style?: CSSProperties;
1579
+ className?: string;
1580
+ reconnectable?: boolean | HandleType;
1581
+ focusable?: boolean;
1582
+ }[];
1583
+ viewSyncDebounceTimeout: number | null;
1584
+ viewportChanged: boolean;
1585
+ initialized: boolean;
1586
+ activeOverlay: null | RequireExactlyOne<{
1587
+ elementDetails: Fqn;
1588
+ relationshipsOf: Fqn;
1589
+ edgeDetails: EdgeId;
1590
+ }>;
1591
+ isEditable: () => boolean;
1592
+ isDynamicView: boolean;
1593
+ activeWalkthrough: null | {
1594
+ stepId: StepEdgeId;
1595
+ hasPrevious: boolean;
1596
+ hasNext: boolean;
1597
+ parallelPrefix: string | null;
1598
+ };
1599
+ lastClickedNodeId: string | null;
1600
+ lastClickedEdgeId: string | null;
1601
+ focusedNodeId: string | null;
1602
+ hoveredEdgeId: string | null;
1603
+ dimmed: ReadonlySet<string>;
1604
+ lastOnNavigate: null | {
1605
+ fromView: ViewId;
1606
+ toView: ViewId;
1607
+ fromNode: NodeId | null;
1608
+ };
1609
+ navigationHistory: Array<{
1610
+ viewId: ViewId;
1611
+ nodeId: NodeId | null;
1612
+ }>;
1613
+ navigationHistoryIndex: number;
1614
+ updateView: (view: DiagramView) => void;
1615
+ focusOnNode: (nodeId: string | false) => void;
1616
+ setHoveredEdge: (edgeId: string | null) => void;
1617
+ setLastClickedNode: (nodeId: string | null) => void;
1618
+ setLastClickedEdge: (edgeId: string | null) => void;
1619
+ resetFocusAndLastClicked: () => void;
1620
+ getElement: (id: Fqn) => DiagramNode | null;
1621
+ triggerChangeElementStyle: (change: ViewChange.ChangeElementStyle) => void;
1622
+ cancelSaveManualLayout: () => boolean;
1623
+ scheduleSaveManualLayout: () => void;
1624
+ triggerSaveManualLayout: () => void;
1625
+ triggerOnNavigateTo: (xynodeId: string, event: ReactMouseEvent) => void;
1626
+ fitDiagram: (duration?: number) => void;
1627
+ goBack: () => void;
1628
+ goForward: () => void;
1629
+ nextDynamicStep: (increment?: number) => void;
1630
+ activateWalkthrough: (step: EdgeId | {
1631
+ id: string;
1632
+ type: "relationship";
1633
+ source: string;
1634
+ target: string;
1635
+ sourceHandle?: string | null;
1636
+ targetHandle?: string | null;
1637
+ animated?: boolean;
1638
+ hidden?: boolean;
1639
+ deletable?: boolean;
1640
+ selectable?: boolean;
1641
+ data: DiagramFlowTypes.DiagramEdgeData;
1642
+ selected?: boolean;
1643
+ markerStart?: EdgeMarkerType;
1644
+ markerEnd?: EdgeMarkerType;
1645
+ zIndex?: number;
1646
+ ariaLabel?: string;
1647
+ interactionWidth?: number;
1648
+ label?: ReactNode;
1649
+ labelStyle?: CSSProperties;
1650
+ labelShowBg?: boolean;
1651
+ labelBgStyle?: CSSProperties;
1652
+ labelBgPadding?: [number, number];
1653
+ labelBgBorderRadius?: number;
1654
+ style?: CSSProperties;
1655
+ className?: string;
1656
+ reconnectable?: boolean | HandleType;
1657
+ focusable?: boolean;
1658
+ }) => void;
1659
+ stopWalkthrough: () => void;
1660
+ openOverlay: (overlay: NonNullable<RequireExactlyOne<{
1661
+ elementDetails: Fqn;
1662
+ relationshipsOf: Fqn;
1663
+ edgeDetails: EdgeId;
1664
+ }> | null>) => void;
1665
+ closeOverlay: () => void;
1666
+ onInit: (xyflow: DiagramFlowTypes.XYFlowInstance) => void;
1667
+ onNodesChange: OnNodesChange<DiagramFlowTypes.Node>;
1668
+ onEdgesChange: OnEdgesChange<{
1669
+ id: string;
1670
+ type: "relationship";
1671
+ source: string;
1672
+ target: string;
1673
+ sourceHandle?: string | null;
1674
+ targetHandle?: string | null;
1675
+ animated?: boolean;
1676
+ hidden?: boolean;
1677
+ deletable?: boolean;
1678
+ selectable?: boolean;
1679
+ data: DiagramFlowTypes.DiagramEdgeData;
1680
+ selected?: boolean;
1681
+ markerStart?: EdgeMarkerType;
1682
+ markerEnd?: EdgeMarkerType;
1683
+ zIndex?: number;
1684
+ ariaLabel?: string;
1685
+ interactionWidth?: number;
1686
+ label?: ReactNode;
1687
+ labelStyle?: CSSProperties;
1688
+ labelShowBg?: boolean;
1689
+ labelBgStyle?: CSSProperties;
1690
+ labelBgPadding?: [number, number];
1691
+ labelBgBorderRadius?: number;
1692
+ style?: CSSProperties;
1693
+ className?: string;
1694
+ reconnectable?: boolean | HandleType;
1695
+ focusable?: boolean;
1696
+ }>;
1697
+ highlightByElementNotation: (notation: ElementNotation, onlyOfKind?: NodeKind) => void;
1698
+ resetEdgeControlPoints: () => void;
1699
+ align: (mode: AlignmentMode) => void;
1700
+ onOpenSourceView: () => void;
1701
+ }>), replace?: boolean | undefined, action?: A | undefined): void;
1702
+ }>;
1703
+ export type DiagramZustandStore = ReturnType<typeof createDiagramStore>;
1704
+ export type DiagramStoreApi = Readonly<Pick<DiagramZustandStore, 'getState' | 'setState' | 'subscribe'>>;
1705
+ export {};