@likec4/diagram 1.55.0 → 1.56.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 (345) hide show
  1. package/dist/LikeC4Diagram.js +148 -194
  2. package/dist/LikeC4ModelProvider.js +13 -9
  3. package/dist/LikeC4ProjectsOverview.js +24 -30
  4. package/dist/LikeC4ProjectsProvider.js +33 -26
  5. package/dist/LikeC4Styles.js +40 -57
  6. package/dist/LikeC4View.js +156 -196
  7. package/dist/ReactLikeC4.js +43 -65
  8. package/dist/StaticLikeC4Diagram.js +36 -41
  9. package/dist/_virtual/_rolldown/runtime.js +17 -0
  10. package/dist/adhoc-editor/EditorPanel.js +102 -101
  11. package/dist/adhoc-editor/ElementsTree.js +113 -139
  12. package/dist/adhoc-editor/LikeC4AdHocViewEditor.js +77 -70
  13. package/dist/adhoc-editor/components/Tree.d.ts +2 -2
  14. package/dist/adhoc-editor/components/Tree.js +205 -288
  15. package/dist/adhoc-editor/hooks.js +28 -23
  16. package/dist/adhoc-editor/index.js +2 -1
  17. package/dist/adhoc-editor/state/ActorProvider.js +33 -36
  18. package/dist/adhoc-editor/state/actor.editor.js +148 -186
  19. package/dist/adhoc-editor/state/actor.js +12 -14
  20. package/dist/adhoc-editor/state/actor.layouter.js +49 -65
  21. package/dist/adhoc-editor/state/actor.types.js +19 -23
  22. package/dist/adhoc-editor/state/panel.js +112 -127
  23. package/dist/adhoc-editor/state/utils.js +22 -29
  24. package/dist/adhoc-editor/useElementsTree.js +89 -121
  25. package/dist/base/Background.js +26 -29
  26. package/dist/base/Base.js +34 -41
  27. package/dist/base/BaseXYFlow.js +135 -165
  28. package/dist/base/const.js +18 -19
  29. package/dist/base/updateEdges.js +38 -57
  30. package/dist/base/updateNodes.js +46 -65
  31. package/dist/base-primitives/Markdown.d.ts +1 -1
  32. package/dist/base-primitives/Markdown.js +32 -47
  33. package/dist/base-primitives/NodeHandles.js +39 -49
  34. package/dist/base-primitives/compound/CompoundActionButton.js +49 -69
  35. package/dist/base-primitives/compound/CompoundDetailsButton.js +39 -64
  36. package/dist/base-primitives/compound/CompoundNodeContainer.js +46 -66
  37. package/dist/base-primitives/compound/CompoundTitle.js +15 -12
  38. package/dist/base-primitives/compound/actionbtns.css.js +9 -18
  39. package/dist/base-primitives/edge/EdgeActionButton.js +17 -19
  40. package/dist/base-primitives/edge/EdgeContainer.js +29 -48
  41. package/dist/base-primitives/edge/EdgeLabel.js +44 -65
  42. package/dist/base-primitives/edge/EdgeLabelContainer.d.ts +1 -1
  43. package/dist/base-primitives/edge/EdgeLabelContainer.js +35 -72
  44. package/dist/base-primitives/edge/EdgeMarkers.js +157 -215
  45. package/dist/base-primitives/edge/EdgePath.js +62 -115
  46. package/dist/base-primitives/element/ElementActionButtons.js +92 -81
  47. package/dist/base-primitives/element/ElementData.js +107 -126
  48. package/dist/base-primitives/element/ElementDetailsButton.js +78 -98
  49. package/dist/base-primitives/element/ElementNodeContainer.js +51 -82
  50. package/dist/base-primitives/element/ElementShape.js +331 -317
  51. package/dist/base-primitives/element/ElementTags.d.ts +1 -1
  52. package/dist/base-primitives/element/ElementTags.js +133 -193
  53. package/dist/base-primitives/memoEdge.js +11 -10
  54. package/dist/base-primitives/memoNode.js +16 -20
  55. package/dist/components/ErrorFallback.js +111 -75
  56. package/dist/components/GithubIcon.js +14 -16
  57. package/dist/components/Link.js +99 -113
  58. package/dist/components/Logo.js +38 -41
  59. package/dist/components/NavigationLink.js +15 -23
  60. package/dist/components/NavigationPanel.js +26 -47
  61. package/dist/components/PortalToContainer.js +16 -10
  62. package/dist/components/RootContainer.js +35 -31
  63. package/dist/components/SearchControl.css.js +65 -75
  64. package/dist/components/SearchControl.js +36 -14
  65. package/dist/components/ViewNotFound.js +22 -29
  66. package/dist/context/CurrentViewModelProvider.js +11 -9
  67. package/dist/context/DefaultMantineProvider.js +45 -72
  68. package/dist/context/DiagramEventHandlers.js +43 -48
  69. package/dist/context/DiagramFeatures.js +73 -69
  70. package/dist/context/EnsureMantine.js +13 -16
  71. package/dist/context/FramerMotionConfig.js +17 -11
  72. package/dist/context/IconRenderer.js +90 -106
  73. package/dist/context/LikeC4ModelContext.js +14 -10
  74. package/dist/context/LikeC4ProjectsContext.js +7 -6
  75. package/dist/context/RootContainerContext.d.ts +2 -5
  76. package/dist/context/RootContainerContext.js +24 -26
  77. package/dist/context/TagStylesContext.js +49 -57
  78. package/dist/custom/customNodes.js +224 -28
  79. package/dist/custom/index.js +41 -40
  80. package/dist/editor/LikeC4EditorCallbacks.js +4 -2
  81. package/dist/editor/LikeC4EditorProvider.js +32 -7
  82. package/dist/editor/applyChangesToManualLayout.js +144 -163
  83. package/dist/editor/editorActor.actions.js +122 -138
  84. package/dist/editor/editorActor.setup.js +30 -36
  85. package/dist/editor/editorActor.states.js +209 -263
  86. package/dist/editor/hotkeyActor.js +18 -17
  87. package/dist/editor/useEditorActorLogic.js +31 -43
  88. package/dist/hooks/safeContext.js +17 -17
  89. package/dist/hooks/useCallbackRef.js +18 -11
  90. package/dist/hooks/useCurrentView.js +16 -7
  91. package/dist/hooks/useCurrentViewModel.js +14 -9
  92. package/dist/hooks/useDiagram.js +55 -37
  93. package/dist/hooks/useDiagramCompareLayout.js +77 -81
  94. package/dist/hooks/useId.js +8 -6
  95. package/dist/hooks/useLikeC4ElementsTree.js +22 -21
  96. package/dist/hooks/useLikeC4Model.js +21 -20
  97. package/dist/hooks/useLikeC4Project.js +40 -29
  98. package/dist/hooks/useLikeC4Styles.js +6 -6
  99. package/dist/hooks/useMantinePortalProps.js +10 -6
  100. package/dist/hooks/useOverlaysActor.js +7 -6
  101. package/dist/hooks/useSearchActor.js +7 -6
  102. package/dist/hooks/useSetState.js +21 -19
  103. package/dist/hooks/useUpdateEffect.js +18 -29
  104. package/dist/hooks/useXYFlow.js +13 -15
  105. package/dist/index.js +24 -23
  106. package/dist/likec4diagram/DiagramUI.js +33 -37
  107. package/dist/likec4diagram/DiagramXYFlow.js +215 -224
  108. package/dist/likec4diagram/convert-to-xyflow.js +21 -22
  109. package/dist/likec4diagram/custom/edges/EdgeDrifts.js +22 -32
  110. package/dist/likec4diagram/custom/edges/RelationshipEdge.js +275 -372
  111. package/dist/likec4diagram/custom/edges/SequenceStepEdge.js +71 -75
  112. package/dist/likec4diagram/custom/edges/edges.css.js +41 -47
  113. package/dist/likec4diagram/custom/edges/useControlPoints.js +52 -56
  114. package/dist/likec4diagram/custom/edges/useRelationshipEdgePath.js +54 -76
  115. package/dist/likec4diagram/custom/index.js +17 -17
  116. package/dist/likec4diagram/custom/nodes/CompoundActions.js +19 -26
  117. package/dist/likec4diagram/custom/nodes/ElementActions.js +131 -82
  118. package/dist/likec4diagram/custom/nodes/NodeDrifts.js +20 -26
  119. package/dist/likec4diagram/custom/nodes/NodeNotes.js +215 -273
  120. package/dist/likec4diagram/custom/nodes/SequenceActorNode.js +131 -147
  121. package/dist/likec4diagram/custom/nodes/nodes.js +135 -146
  122. package/dist/likec4diagram/custom/nodes/toolbar/ColorButton.js +155 -159
  123. package/dist/likec4diagram/custom/nodes/toolbar/CompoundToolbar.js +58 -86
  124. package/dist/likec4diagram/custom/nodes/toolbar/ElementToolbar.js +108 -164
  125. package/dist/likec4diagram/custom/nodes/toolbar/Toolbar.js +56 -68
  126. package/dist/likec4diagram/custom/nodes/toolbar/_shared.d.ts +3 -6
  127. package/dist/likec4diagram/custom/nodes/toolbar/_shared.js +97 -102
  128. package/dist/likec4diagram/custom/nodes/toolbar/styles.css.js +13 -13
  129. package/dist/likec4diagram/custom/nodes/toolbar/types.js +6 -5
  130. package/dist/likec4diagram/custom/nodes/toolbar/useHandlers.js +36 -41
  131. package/dist/likec4diagram/relationship-popover/RelationshipPopover.js +510 -534
  132. package/dist/likec4diagram/relationship-popover/actor.js +113 -152
  133. package/dist/likec4diagram/relationship-popover/components.js +39 -37
  134. package/dist/likec4diagram/state/DiagramActorProvider.js +135 -136
  135. package/dist/likec4diagram/state/aligners.js +283 -360
  136. package/dist/likec4diagram/state/assign.js +84 -108
  137. package/dist/likec4diagram/state/createViewChange.js +72 -92
  138. package/dist/likec4diagram/state/diagram-api.js +224 -152
  139. package/dist/likec4diagram/state/hotkeyActor.js +54 -45
  140. package/dist/likec4diagram/state/machine.actions.js +709 -821
  141. package/dist/likec4diagram/state/machine.actions.layout.js +154 -183
  142. package/dist/likec4diagram/state/machine.js +113 -134
  143. package/dist/likec4diagram/state/machine.setup.js +104 -113
  144. package/dist/likec4diagram/state/machine.state.initializing.js +54 -54
  145. package/dist/likec4diagram/state/machine.state.navigating.js +192 -227
  146. package/dist/likec4diagram/state/machine.state.ready.focused.js +72 -88
  147. package/dist/likec4diagram/state/machine.state.ready.idle.js +79 -98
  148. package/dist/likec4diagram/state/machine.state.ready.js +126 -202
  149. package/dist/likec4diagram/state/machine.state.ready.printing.js +38 -39
  150. package/dist/likec4diagram/state/machine.state.ready.walkthrough.js +153 -193
  151. package/dist/likec4diagram/state/mediaPrintActor.js +20 -16
  152. package/dist/likec4diagram/state/persistence.js +20 -21
  153. package/dist/likec4diagram/state/utils.js +131 -162
  154. package/dist/likec4diagram/ui/LayoutDriftFrame.js +53 -64
  155. package/dist/likec4diagram/ui/notation/NotationPanel.css.js +58 -80
  156. package/dist/likec4diagram/ui/notation/NotationPanel.js +183 -214
  157. package/dist/likec4diagram/useLayoutConstraints.js +386 -433
  158. package/dist/likec4diagram/xyflow-diagram/diagram-view.js +216 -227
  159. package/dist/likec4diagram/xyflow-sequence/const.js +11 -7
  160. package/dist/likec4diagram/xyflow-sequence/sequence-layout.js +177 -180
  161. package/dist/navigationpanel/NavigationPanel.js +113 -123
  162. package/dist/navigationpanel/NavigationPanelControls.js +124 -150
  163. package/dist/navigationpanel/NavigationPanelDropdown.js +365 -477
  164. package/dist/navigationpanel/_common.d.ts +4 -10
  165. package/dist/navigationpanel/_common.js +57 -70
  166. package/dist/navigationpanel/actor.js +153 -236
  167. package/dist/navigationpanel/comparepanel/CompareActionsMenu.js +66 -83
  168. package/dist/navigationpanel/comparepanel/ComparePanel.js +135 -164
  169. package/dist/navigationpanel/comparepanel/ComparePanelControls.js +50 -58
  170. package/dist/navigationpanel/comparepanel/DriftsSummary.js +207 -254
  171. package/dist/navigationpanel/comparepanel/LayoutTypeSwitcher.js +33 -35
  172. package/dist/navigationpanel/controls/DetailsControls.js +219 -246
  173. package/dist/navigationpanel/controls/LayoutWarning.js +89 -100
  174. package/dist/navigationpanel/controls/LogoButton.js +46 -70
  175. package/dist/navigationpanel/controls/NavigationButtons.js +35 -52
  176. package/dist/navigationpanel/controls/OpenSource.js +27 -25
  177. package/dist/navigationpanel/controls/SearchControl.js +50 -61
  178. package/dist/navigationpanel/controls/ToggleReadonly.js +84 -81
  179. package/dist/navigationpanel/dropdown/ProjectsMenu.js +69 -87
  180. package/dist/navigationpanel/editorpanel/CenterCamera.js +17 -13
  181. package/dist/navigationpanel/editorpanel/ChangeAutoLayoutButton.js +182 -154
  182. package/dist/navigationpanel/editorpanel/EditorPanel.js +47 -45
  183. package/dist/navigationpanel/editorpanel/ManualLayoutToolsButton.js +122 -173
  184. package/dist/navigationpanel/editorpanel/ToggleReadonly.js +20 -13
  185. package/dist/navigationpanel/editorpanel/_common.d.ts +3 -6
  186. package/dist/navigationpanel/editorpanel/_common.js +13 -13
  187. package/dist/navigationpanel/editorpanel/styles.js +58 -75
  188. package/dist/navigationpanel/hooks.js +35 -29
  189. package/dist/navigationpanel/styles.css.js +20 -28
  190. package/dist/navigationpanel/walkthrough/ActiveWalkthroughControls.js +107 -134
  191. package/dist/navigationpanel/walkthrough/DynamicViewControls.d.ts +8 -8
  192. package/dist/navigationpanel/walkthrough/DynamicViewControls.js +105 -120
  193. package/dist/navigationpanel/walkthrough/WalkthroughPanel.js +75 -83
  194. package/dist/overlays/Overlays.js +94 -112
  195. package/dist/overlays/element-details/ElementDetails.js +22 -28
  196. package/dist/overlays/element-details/ElementDetailsCard.css.js +198 -219
  197. package/dist/overlays/element-details/ElementDetailsCard.js +517 -490
  198. package/dist/overlays/element-details/MetadataValue.js +210 -250
  199. package/dist/overlays/element-details/TabPanelDeployments.css.js +40 -60
  200. package/dist/overlays/element-details/TabPanelDeployments.js +185 -178
  201. package/dist/overlays/element-details/TabPanelRelationships.css.js +63 -71
  202. package/dist/overlays/element-details/TabPanelRelationships.js +155 -140
  203. package/dist/overlays/element-details/TabPanelStructure.css.js +29 -33
  204. package/dist/overlays/element-details/TabPanelStructure.js +93 -93
  205. package/dist/overlays/element-details/actor.js +45 -55
  206. package/dist/overlays/element-details/actorContext.js +12 -10
  207. package/dist/overlays/overlay/Overlay.js +104 -144
  208. package/dist/overlays/overlaysActor.js +213 -264
  209. package/dist/overlays/relationship-details/RelationshipDetails.js +270 -253
  210. package/dist/overlays/relationship-details/SelectEdge.css.js +62 -74
  211. package/dist/overlays/relationship-details/SelectEdge.js +146 -126
  212. package/dist/overlays/relationship-details/actor.js +242 -303
  213. package/dist/overlays/relationship-details/compute.js +109 -135
  214. package/dist/overlays/relationship-details/custom/ElementActions.js +43 -56
  215. package/dist/overlays/relationship-details/custom/edgeTypes.js +43 -49
  216. package/dist/overlays/relationship-details/custom/nodeTypes.js +93 -119
  217. package/dist/overlays/relationship-details/hooks.js +44 -38
  218. package/dist/overlays/relationship-details/layout-to-xyflow.js +119 -141
  219. package/dist/overlays/relationship-details/layout.js +275 -304
  220. package/dist/overlays/relationships-browser/RelationshipsBrowser.js +319 -321
  221. package/dist/overlays/relationships-browser/SelectElement.css.js +18 -21
  222. package/dist/overlays/relationships-browser/SelectElement.js +192 -218
  223. package/dist/overlays/relationships-browser/actor.js +364 -462
  224. package/dist/overlays/relationships-browser/const.js +7 -6
  225. package/dist/overlays/relationships-browser/custom/ElementActions.js +60 -63
  226. package/dist/overlays/relationships-browser/custom/EmptyNode.js +25 -29
  227. package/dist/overlays/relationships-browser/custom/edgeTypes.js +66 -99
  228. package/dist/overlays/relationships-browser/custom/nodeTypes.js +98 -123
  229. package/dist/overlays/relationships-browser/hooks.js +49 -51
  230. package/dist/overlays/relationships-browser/layout.js +413 -465
  231. package/dist/overlays/relationships-browser/useViewToNodesEdges.js +141 -157
  232. package/dist/projects-overview/ProjectsOverview.js +56 -55
  233. package/dist/projects-overview/ProjectsOverviewXY.js +105 -94
  234. package/dist/projects-overview/actor.js +252 -345
  235. package/dist/projects-overview/context.js +8 -7
  236. package/dist/projects-overview/custom/edgeTypes.js +22 -21
  237. package/dist/projects-overview/custom/nodeTypes.js +38 -42
  238. package/dist/projects-overview/hooks.js +9 -9
  239. package/dist/projects-overview/layouted-to-xyflow.js +46 -42
  240. package/dist/projects-overview/panel/ProjectsOverviewPanel.js +7 -9
  241. package/dist/projects-overview/persistence.js +22 -22
  242. package/dist/search/Search.js +199 -181
  243. package/dist/search/SearchContext.js +16 -15
  244. package/dist/search/XStateSearchAdapter.js +68 -62
  245. package/dist/search/components/ElementsColumn.css.js +50 -68
  246. package/dist/search/components/ElementsColumn.js +248 -290
  247. package/dist/search/components/PickView.js +116 -140
  248. package/dist/search/components/SearchByTags.js +76 -94
  249. package/dist/search/components/SearchInput.js +187 -209
  250. package/dist/search/components/ViewsColum.js +151 -141
  251. package/dist/search/components/ViewsColumn.css.js +12 -26
  252. package/dist/search/components/_shared.css.js +127 -153
  253. package/dist/search/components/styles.css.js +47 -53
  254. package/dist/search/components/utils.js +44 -47
  255. package/dist/search/hooks.js +10 -10
  256. package/dist/search/searchActor.js +93 -128
  257. package/dist/shadowroot/ShadowRoot.js +66 -78
  258. package/dist/shadowroot/styles.css.js +56 -66
  259. package/dist/styles-font2.js +4 -0
  260. package/dist/styles2.js +4 -0
  261. package/dist/utils/index.js +5 -0
  262. package/dist/utils/roundDpr.js +19 -15
  263. package/dist/utils/view-bounds.js +48 -55
  264. package/dist/utils/xyflow.js +143 -113
  265. package/package.json +15 -16
  266. package/panda.buildinfo.json +6 -3
  267. package/styles-font.css +1 -1
  268. package/styles-min.css +1 -1
  269. package/styles-xyflow.css +1 -1
  270. package/styles.css +1 -1
  271. package/dist/_virtual/_commonjsHelpers.js +0 -3
  272. package/dist/_virtual/assign-f10db67b.cjs.js +0 -3
  273. package/dist/_virtual/log-30abbb83.cjs.js +0 -3
  274. package/dist/_virtual/raise-f051f097.cjs.js +0 -3
  275. package/dist/_virtual/store-cfe7da62.cjs.js +0 -3
  276. package/dist/_virtual/xstate-actions.cjs.js +0 -5
  277. package/dist/_virtual/xstate-actions.cjs2.js +0 -3
  278. package/dist/_virtual/xstate-dev.cjs.js +0 -3
  279. package/dist/_virtual/xstate-guards.cjs.js +0 -5
  280. package/dist/_virtual/xstate-guards.cjs2.js +0 -3
  281. package/dist/_virtual/xstate-store-react.cjs.js +0 -5
  282. package/dist/_virtual/xstate-store-react.cjs2.js +0 -3
  283. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/createReactComponent.js +0 -41
  284. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/defaultAttributes.js +0 -30
  285. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconAlertTriangle.js +0 -14
  286. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowDownRight.js +0 -14
  287. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowLeft.js +0 -14
  288. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowRight.js +0 -14
  289. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconBolt.js +0 -14
  290. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconBrowser.js +0 -14
  291. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconCheck.js +0 -14
  292. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconChevronDown.js +0 -14
  293. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconChevronLeft.js +0 -14
  294. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconChevronRight.js +0 -14
  295. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconCopy.js +0 -14
  296. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconCylinder.js +0 -14
  297. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconDeviceMobile.js +0 -14
  298. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconDirectionSignFilled.js +0 -14
  299. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconExternalLink.js +0 -14
  300. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconFileSymlink.js +0 -14
  301. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconFileText.js +0 -14
  302. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconFocusCentered.js +0 -14
  303. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconFolderFilled.js +0 -14
  304. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconHelpCircle.js +0 -14
  305. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconId.js +0 -14
  306. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconInfoCircle.js +0 -14
  307. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutAlignBottom.js +0 -14
  308. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutAlignCenter.js +0 -14
  309. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutAlignLeft.js +0 -14
  310. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutAlignMiddle.js +0 -14
  311. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutAlignRight.js +0 -14
  312. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutAlignTop.js +0 -14
  313. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutBoardSplit.js +0 -14
  314. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutCollage.js +0 -14
  315. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconLayoutDashboard.js +0 -14
  316. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconLink.js +0 -14
  317. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconLock.js +0 -14
  318. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconLockOpen2.js +0 -14
  319. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconPlayerPlayFilled.js +0 -14
  320. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconPlayerSkipBackFilled.js +0 -14
  321. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconPlayerSkipForwardFilled.js +0 -14
  322. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconPlayerStopFilled.js +0 -14
  323. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconRectangularPrism.js +0 -14
  324. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconReorder.js +0 -14
  325. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconRouteOff.js +0 -14
  326. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconSearch.js +0 -14
  327. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconSelector.js +0 -14
  328. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconStack2.js +0 -14
  329. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconStarFilled.js +0 -14
  330. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconTarget.js +0 -14
  331. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconTransform.js +0 -14
  332. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconTrash.js +0 -14
  333. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconUser.js +0 -14
  334. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconX.js +0 -14
  335. package/dist/node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconZoomScan.js +0 -14
  336. package/dist/node_modules/.pnpm/@xstate_store@3.17.1_react@19.2.4/node_modules/@xstate/store/dist/store-cfe7da62.cjs.js +0 -761
  337. package/dist/node_modules/.pnpm/@xstate_store@3.17.1_react@19.2.4/node_modules/@xstate/store/react/dist/xstate-store-react.cjs.js +0 -180
  338. package/dist/node_modules/.pnpm/xstate@5.30.0/node_modules/xstate/actions/dist/xstate-actions.cjs.js +0 -37
  339. package/dist/node_modules/.pnpm/xstate@5.30.0/node_modules/xstate/dev/dist/xstate-dev.cjs.js +0 -59
  340. package/dist/node_modules/.pnpm/xstate@5.30.0/node_modules/xstate/dist/assign-f10db67b.cjs.js +0 -140
  341. package/dist/node_modules/.pnpm/xstate@5.30.0/node_modules/xstate/dist/log-30abbb83.cjs.js +0 -401
  342. package/dist/node_modules/.pnpm/xstate@5.30.0/node_modules/xstate/dist/raise-f051f097.cjs.js +0 -2830
  343. package/dist/node_modules/.pnpm/xstate@5.30.0/node_modules/xstate/guards/dist/xstate-guards.cjs.js +0 -26
  344. package/dist/styles-font.css2.js +0 -3
  345. package/dist/styles.css2.js +0 -3
@@ -1,183 +1,164 @@
1
- import { invariant, nonNullable } from '@likec4/core';
2
- import { BBox, convertPoint, vector } from '@likec4/core/geometry';
3
- import { setAutoFreeze, produce, castDraft } from 'immer';
4
- import { map, isNullish } from 'remeda';
5
-
1
+ import "../_virtual/_rolldown/runtime.js";
2
+ import { isNullish, map } from "remeda";
3
+ import { invariant, nonNullable } from "@likec4/core";
4
+ import { BBox as BBox$1, convertPoint, vector } from "@likec4/core/geometry";
5
+ import "@likec4/core/types";
6
+ import { castDraft, produce, setAutoFreeze } from "immer";
7
+ //#region src/editor/applyChangesToManualLayout.ts
8
+ /**
9
+ * Applies changes to a manual layout.
10
+ *
11
+ * @param manual - The manual layout.
12
+ * @param latest - The latest layout.
13
+ */
6
14
  function applyChangesToManualLayout(manualView, latestView) {
7
- try {
8
- setAutoFreeze(false);
9
- return _applyChangesToManualLayout(manualView, latestView);
10
- } finally {
11
- setAutoFreeze(true);
12
- }
15
+ try {
16
+ setAutoFreeze(false);
17
+ return _applyChangesToManualLayout(manualView, latestView);
18
+ } finally {
19
+ setAutoFreeze(true);
20
+ }
13
21
  }
14
- const isRootNode = (node) => isNullish(node.parent);
22
+ var isRootNode = (node) => isNullish(node.parent);
15
23
  function _applyChangesToManualLayout(manualView, latestView) {
16
- invariant(manualView.id === latestView.id, "View IDs do not match");
17
- invariant(manualView._type === latestView._type, "View types do not match");
18
- invariant(manualView._layout === "manual" && latestView._layout === "auto", "Views must be manual and auto");
19
- const compounds = /* @__PURE__ */ new Set();
20
- const newnodes = /* @__PURE__ */ new Set();
21
- const isNotCompound = (node) => !compounds.has(typeof node === "string" ? node : node.id);
22
- const isBetweenNewLeafNodes = (edge) => newnodes.has(edge.source) && newnodes.has(edge.target) && isNotCompound(edge.source) && isNotCompound(edge.target);
23
- const nodesMap = new Map(
24
- latestView.nodes.map((latest) => {
25
- if (latest.children && latest.children.length > 0) {
26
- compounds.add(latest.id);
27
- }
28
- const manual = manualView.nodes.find((n) => n.id === latest.id);
29
- if (manual) {
30
- return [latest.id, applyFromManualNode({ latest, manual })];
31
- }
32
- newnodes.add(latest.id);
33
- return [latest.id, removeDrift(latest)];
34
- })
35
- );
36
- const newNodesOnly = newnodes.size === nodesMap.size;
37
- if (newNodesOnly) {
38
- return produce(latestView, (draft) => {
39
- draft._layout = "manual";
40
- draft.nodes = castDraft([...nodesMap.values()]);
41
- draft.edges = castDraft(latestView.edges.map(removeDrift));
42
- delete draft.drifts;
43
- });
44
- }
45
- if (compounds.size > 0) {
46
- expandCompoundNodes(nodesMap);
47
- }
48
- const nodes = [...nodesMap.values()];
49
- const edges = latestView.edges.map((latest) => {
50
- const dir = latest.dir ?? "forward";
51
- const hasSameEndpoints = (candidate) => candidate.source === latest.source && candidate.target === latest.target && (candidate.dir === dir || !candidate.dir && !latest.dir);
52
- let manual = manualView.edges.find((e) => e.id === latest.id && hasSameEndpoints(e));
53
- if (!manual) {
54
- manual = manualView.edges.find((e) => hasSameEndpoints(e));
55
- }
56
- if (manual) {
57
- return applyFromManualEdge({
58
- latest,
59
- manual
60
- });
61
- }
62
- if (isBetweenNewLeafNodes(latest)) {
63
- return removeDrift(latest);
64
- }
65
- const sourceNode = nodesMap.get(latest.source);
66
- const targetNode = nodesMap.get(latest.target);
67
- return makeAsStraightLine(latest, sourceNode, targetNode);
68
- });
69
- const bounds = BBox.merge(...nodes.filter(isRootNode));
70
- return produce(latestView, (draft) => {
71
- draft._layout = "manual";
72
- draft.nodes = castDraft(nodes);
73
- draft.edges = castDraft(edges);
74
- draft.bounds = bounds;
75
- delete draft.drifts;
76
- });
24
+ invariant(manualView.id === latestView.id, "View IDs do not match");
25
+ invariant(manualView._type === latestView._type, "View types do not match");
26
+ invariant(manualView._layout === "manual" && latestView._layout === "auto", "Views must be manual and auto");
27
+ const compounds = /* @__PURE__ */ new Set();
28
+ const newnodes = /* @__PURE__ */ new Set();
29
+ const isNotCompound = (node) => !compounds.has(typeof node === "string" ? node : node.id);
30
+ const isBetweenNewLeafNodes = (edge) => newnodes.has(edge.source) && newnodes.has(edge.target) && isNotCompound(edge.source) && isNotCompound(edge.target);
31
+ const nodesMap = new Map(latestView.nodes.map((latest) => {
32
+ if (latest.children && latest.children.length > 0) compounds.add(latest.id);
33
+ const manual = manualView.nodes.find((n) => n.id === latest.id);
34
+ if (manual) return [latest.id, applyFromManualNode({
35
+ latest,
36
+ manual
37
+ })];
38
+ newnodes.add(latest.id);
39
+ return [latest.id, removeDrift(latest)];
40
+ }));
41
+ if (newnodes.size === nodesMap.size) return produce(latestView, (draft) => {
42
+ draft._layout = "manual";
43
+ draft.nodes = castDraft([...nodesMap.values()]);
44
+ draft.edges = castDraft(latestView.edges.map(removeDrift));
45
+ delete draft.drifts;
46
+ });
47
+ if (compounds.size > 0) expandCompoundNodes(nodesMap);
48
+ const nodes = [...nodesMap.values()];
49
+ const edges = latestView.edges.map((latest) => {
50
+ const dir = latest.dir ?? "forward";
51
+ const hasSameEndpoints = (candidate) => candidate.source === latest.source && candidate.target === latest.target && (candidate.dir === dir || !candidate.dir && !latest.dir);
52
+ let manual = manualView.edges.find((e) => e.id === latest.id && hasSameEndpoints(e));
53
+ if (!manual) manual = manualView.edges.find((e) => hasSameEndpoints(e));
54
+ if (manual) return applyFromManualEdge({
55
+ latest,
56
+ manual
57
+ });
58
+ if (isBetweenNewLeafNodes(latest)) return removeDrift(latest);
59
+ return makeAsStraightLine(latest, nodesMap.get(latest.source), nodesMap.get(latest.target));
60
+ });
61
+ const bounds = BBox$1.merge(...nodes.filter(isRootNode));
62
+ return produce(latestView, (draft) => {
63
+ draft._layout = "manual";
64
+ draft.nodes = castDraft(nodes);
65
+ draft.edges = castDraft(edges);
66
+ draft.bounds = bounds;
67
+ delete draft.drifts;
68
+ });
77
69
  }
78
- const COMPOUND_PADDING = {
79
- Left: 42,
80
- Right: 42,
81
- Top: 60,
82
- Bottom: 42
70
+ /**
71
+ * Padding constants for compound nodes (same as in useLayoutConstraints)
72
+ */
73
+ var COMPOUND_PADDING = {
74
+ Left: 42,
75
+ Right: 42,
76
+ Top: 60,
77
+ Bottom: 42
83
78
  };
79
+ /**
80
+ * Expands compound nodes to wrap all their children with proper padding.
81
+ * Processes nodes recursively from leaves up to ensure correct bounding boxes.
82
+ */
84
83
  function expandCompoundNodes(nodes) {
85
- function expand(nodeId) {
86
- const node = nonNullable(nodes.get(nodeId), `Node ${nodeId} not found`);
87
- if (node.children.length === 0) {
88
- return node;
89
- }
90
- const childBBoxes = [];
91
- for (const childId of node.children) {
92
- childBBoxes.push(
93
- expand(childId)
94
- );
95
- }
96
- const childrenBBox = BBox.merge(...childBBoxes);
97
- node.x = childrenBBox.x - COMPOUND_PADDING.Left;
98
- node.y = childrenBBox.y - COMPOUND_PADDING.Top;
99
- node.width = childrenBBox.width + COMPOUND_PADDING.Left + COMPOUND_PADDING.Right;
100
- node.height = childrenBBox.height + COMPOUND_PADDING.Top + COMPOUND_PADDING.Bottom;
101
- return node;
102
- }
103
- for (const node of nodes.values()) {
104
- if (!isRootNode(node) || node.children.length === 0) {
105
- continue;
106
- }
107
- expand(node.id);
108
- }
84
+ function expand(nodeId) {
85
+ const node = nonNullable(nodes.get(nodeId), `Node ${nodeId} not found`);
86
+ if (node.children.length === 0) return node;
87
+ const childBBoxes = [];
88
+ for (const childId of node.children) childBBoxes.push(expand(childId));
89
+ const childrenBBox = BBox$1.merge(...childBBoxes);
90
+ node.x = childrenBBox.x - COMPOUND_PADDING.Left;
91
+ node.y = childrenBBox.y - COMPOUND_PADDING.Top;
92
+ node.width = childrenBBox.width + COMPOUND_PADDING.Left + COMPOUND_PADDING.Right;
93
+ node.height = childrenBBox.height + COMPOUND_PADDING.Top + COMPOUND_PADDING.Bottom;
94
+ return node;
95
+ }
96
+ for (const node of nodes.values()) {
97
+ if (!isRootNode(node) || node.children.length === 0) continue;
98
+ expand(node.id);
99
+ }
109
100
  }
110
101
  function applyFromManualNode({ latest, manual }) {
111
- invariant(manual.id === latest.id, "Node IDs do not match");
112
- return produce(latest, (next) => {
113
- next.x = manual.x;
114
- next.y = manual.y;
115
- next.drifts = null;
116
- });
102
+ invariant(manual.id === latest.id, "Node IDs do not match");
103
+ return produce(latest, (next) => {
104
+ next.x = manual.x;
105
+ next.y = manual.y;
106
+ next.drifts = null;
107
+ });
117
108
  }
118
109
  function applyFromManualEdge(edges) {
119
- const { manual, latest } = edges;
120
- return produce(latest, (draft) => {
121
- if (manual.controlPoints) {
122
- draft.controlPoints = manual.controlPoints;
123
- } else {
124
- delete draft.controlPoints;
125
- }
126
- draft.points = castDraft(manual.points);
127
- if (manual.labelBBox) {
128
- draft.labelBBox = latest.labelBBox ?? manual.labelBBox;
129
- draft.labelBBox.x = manual.labelBBox.x;
130
- draft.labelBBox.y = manual.labelBBox.y;
131
- }
132
- draft.drifts = null;
133
- });
110
+ const { manual, latest } = edges;
111
+ return produce(latest, (draft) => {
112
+ if (manual.controlPoints) draft.controlPoints = manual.controlPoints;
113
+ else delete draft.controlPoints;
114
+ draft.points = castDraft(manual.points);
115
+ if (manual.labelBBox) {
116
+ draft.labelBBox = latest.labelBBox ?? manual.labelBBox;
117
+ draft.labelBBox.x = manual.labelBBox.x;
118
+ draft.labelBBox.y = manual.labelBBox.y;
119
+ }
120
+ draft.drifts = null;
121
+ });
134
122
  }
135
123
  function removeDrift(object) {
136
- if ("drifts" in object && object.drifts !== null) {
137
- const result = { ...object };
138
- result.drifts = null;
139
- return result;
140
- }
141
- return object;
124
+ if ("drifts" in object && object.drifts !== null) {
125
+ const result = { ...object };
126
+ result.drifts = null;
127
+ return result;
128
+ }
129
+ return object;
142
130
  }
143
131
  function makeAsStraightLine(edge, sourceNode, targetNode) {
144
- const controlPoints = edgeControlPoints(sourceNode, targetNode);
145
- const labelPos = controlPoints[0];
146
- return produce(edge, (draft) => {
147
- draft.points = castDraft(map(controlPoints, convertPoint));
148
- draft.controlPoints = controlPoints;
149
- if (edge.labelBBox) {
150
- draft.labelBBox.x = labelPos.x;
151
- draft.labelBBox.y = labelPos.y;
152
- }
153
- delete draft.drifts;
154
- });
132
+ const controlPoints = edgeControlPoints(sourceNode, targetNode);
133
+ const labelPos = controlPoints[0];
134
+ return produce(edge, (draft) => {
135
+ draft.points = castDraft(map(controlPoints, convertPoint));
136
+ draft.controlPoints = controlPoints;
137
+ if (edge.labelBBox) {
138
+ draft.labelBBox.x = labelPos.x;
139
+ draft.labelBBox.y = labelPos.y;
140
+ }
141
+ delete draft.drifts;
142
+ });
155
143
  }
156
144
  function getBorderPointOnVector(node, nodeCenter, v) {
157
- const xScale = node.width / 2 / v.x;
158
- const yScale = node.height / 2 / v.y;
159
- const scale = Math.min(Math.abs(xScale), Math.abs(yScale));
160
- return vector(v).multiply(scale).add(nodeCenter);
145
+ const xScale = node.width / 2 / v.x;
146
+ const yScale = node.height / 2 / v.y;
147
+ const scale = Math.min(Math.abs(xScale), Math.abs(yScale));
148
+ return vector(v).multiply(scale).add(nodeCenter);
161
149
  }
162
150
  function edgeControlPoints(source, target) {
163
- const sourceCenter = vector(BBox.center(source));
164
- const targetCenter = vector(BBox.center(target));
165
- if (source === target) {
166
- const loopSize = 80;
167
- const centerOfTopBoundary = vector(0, source.height || 0).multiply(-0.5).add(sourceCenter);
168
- return [
169
- centerOfTopBoundary.add(vector(-loopSize / 2.5, -loopSize)).trunc().toObject(),
170
- centerOfTopBoundary.add(vector(loopSize / 2.5, -loopSize)).trunc().toObject()
171
- ];
172
- }
173
- const sourceToTargetVector = targetCenter.subtract(sourceCenter);
174
- const sourceBorderPoint = getBorderPointOnVector(source, sourceCenter, sourceToTargetVector);
175
- const targetBorderPoint = getBorderPointOnVector(target, targetCenter, sourceToTargetVector.multiply(-1));
176
- const sourceToTarget = targetBorderPoint.subtract(sourceBorderPoint);
177
- return [
178
- sourceBorderPoint.add(sourceToTarget.multiply(0.4)).trunc().toObject(),
179
- sourceBorderPoint.add(sourceToTarget.multiply(0.6)).trunc().toObject()
180
- ];
151
+ const sourceCenter = vector(BBox$1.center(source));
152
+ const targetCenter = vector(BBox$1.center(target));
153
+ if (source === target) {
154
+ const loopSize = 80;
155
+ const centerOfTopBoundary = vector(0, source.height || 0).multiply(-.5).add(sourceCenter);
156
+ return [centerOfTopBoundary.add(vector(-loopSize / 2.5, -loopSize)).trunc().toObject(), centerOfTopBoundary.add(vector(loopSize / 2.5, -loopSize)).trunc().toObject()];
157
+ }
158
+ const sourceToTargetVector = targetCenter.subtract(sourceCenter);
159
+ const sourceBorderPoint = getBorderPointOnVector(source, sourceCenter, sourceToTargetVector);
160
+ const sourceToTarget = getBorderPointOnVector(target, targetCenter, sourceToTargetVector.multiply(-1)).subtract(sourceBorderPoint);
161
+ return [sourceBorderPoint.add(sourceToTarget.multiply(.4)).trunc().toObject(), sourceBorderPoint.add(sourceToTarget.multiply(.6)).trunc().toObject()];
181
162
  }
182
-
163
+ //#endregion
183
164
  export { applyChangesToManualLayout };
@@ -1,149 +1,133 @@
1
- import { last, filter, isNot, omit } from 'remeda';
2
- import { createViewChange } from '../likec4diagram/state/createViewChange.js';
3
- import { machine } from './editorActor.setup.js';
4
-
5
- const diagramActorRef = (system) => {
6
- return system.get("diagram");
1
+ import "../_virtual/_rolldown/runtime.js";
2
+ import { createViewChange } from "../likec4diagram/state/createViewChange.js";
3
+ import { machine } from "./editorActor.setup.js";
4
+ import { filter, isNot, last, omit } from "remeda";
5
+ //#region src/editor/editorActor.actions.ts
6
+ /**
7
+ * Actually this is DiagramActorRef
8
+ * But we can't use it here due to circular type inference
9
+ */
10
+ var diagramActorRef = (system) => {
11
+ return system.get("diagram");
7
12
  };
8
- const getDiagramContext = function(system) {
9
- return system.get("diagram").getSnapshot().context;
13
+ /**
14
+ * Actually this is DiagramActorRef
15
+ * But we can't use it here due to circular type inference
16
+ */
17
+ var getDiagramContext = function(system) {
18
+ return system.get("diagram").getSnapshot().context;
10
19
  };
11
- const raiseSync = () => machine.raise({ type: "sync" }, { delay: 200, id: "sync" });
12
- const cancelSync = () => machine.cancel("sync");
13
- const reschedule = (delay = 350) => machine.raise(({ event }) => event, { delay });
14
- const isLayoutChange = (change) => change.op === "reset-manual-layout" || change.op === "save-view-snapshot";
15
- const withoutSnapshotChanges = filter(isNot(isLayoutChange));
16
- const saveStateBeforeEdit = () => machine.assign(({ system }) => {
17
- const parentContext = getDiagramContext(system);
18
- return {
19
- beforeEditing: {
20
- xynodes: parentContext.xynodes.map(({ measured, data, ...n }) => ({
21
- ...omit(n, ["selected", "dragging", "resizing"]),
22
- data: omit(data, ["dimmed", "hovered"]),
23
- measured,
24
- initialWidth: measured?.width ?? n.width ?? n.initialWidth,
25
- initialHeight: measured?.height ?? n.height ?? n.initialHeight
26
- })),
27
- xyedges: parentContext.xyedges.map(({ data, ...e }) => ({
28
- ...omit(e, ["selected"]),
29
- data: omit(data, ["active", "dimmed", "hovered"])
30
- })),
31
- change: createViewChange(parentContext),
32
- view: parentContext.view,
33
- synched: false
34
- }
35
- };
20
+ var raiseSync = () => machine.raise({ type: "sync" }, {
21
+ delay: 200,
22
+ id: "sync"
36
23
  });
37
- const startEditing = () => machine.enqueueActions(({ enqueue, event }) => {
38
- enqueue(saveStateBeforeEdit());
39
- if (event.type === "edit.start") {
40
- enqueue.assign({
41
- editing: event.subject
42
- });
43
- }
24
+ var cancelSync = () => machine.cancel("sync");
25
+ var reschedule = (delay = 350) => machine.raise(({ event }) => event, { delay });
26
+ var isLayoutChange = (change) => change.op === "reset-manual-layout" || change.op === "save-view-snapshot";
27
+ var withoutSnapshotChanges = filter(isNot(isLayoutChange));
28
+ var saveStateBeforeEdit = () => machine.assign(({ system }) => {
29
+ const parentContext = getDiagramContext(system);
30
+ return { beforeEditing: {
31
+ xynodes: parentContext.xynodes.map(({ measured, data, ...n }) => ({
32
+ ...omit(n, [
33
+ "selected",
34
+ "dragging",
35
+ "resizing"
36
+ ]),
37
+ data: omit(data, ["dimmed", "hovered"]),
38
+ measured,
39
+ initialWidth: measured?.width ?? n.width ?? n.initialWidth,
40
+ initialHeight: measured?.height ?? n.height ?? n.initialHeight
41
+ })),
42
+ xyedges: parentContext.xyedges.map(({ data, ...e }) => ({
43
+ ...omit(e, ["selected"]),
44
+ data: omit(data, [
45
+ "active",
46
+ "dimmed",
47
+ "hovered"
48
+ ])
49
+ })),
50
+ change: createViewChange(parentContext),
51
+ view: parentContext.view,
52
+ synched: false
53
+ } };
44
54
  });
45
- const stopHotkey = () => machine.stopChild("hotkey");
46
- const ensureHotKey = () => machine.enqueueActions(({ check, enqueue, self }) => {
47
- const hasUndo = check("can undo");
48
- const hotkey = self.getSnapshot().children["hotkey"];
49
- if (!hasUndo && hotkey) {
50
- enqueue.stopChild(hotkey);
51
- return;
52
- }
53
- if (hasUndo && !hotkey) {
54
- enqueue.spawnChild("hotkey", {
55
- id: "hotkey"
56
- });
57
- }
55
+ var startEditing = () => machine.enqueueActions(({ enqueue, event }) => {
56
+ enqueue(saveStateBeforeEdit());
57
+ if (event.type === "edit.start") enqueue.assign({ editing: event.subject });
58
58
  });
59
- const pushHistory = () => machine.assign(({ context }) => {
60
- const snapshot = context.beforeEditing;
61
- if (!snapshot) {
62
- return {
63
- editing: null
64
- };
65
- }
66
- const history = [
67
- ...context.history,
68
- snapshot
69
- ];
70
- if (history.length > 50) {
71
- history.shift();
72
- }
73
- return {
74
- beforeEditing: null,
75
- editing: null,
76
- history
77
- };
59
+ var stopHotkey = () => machine.stopChild("hotkey");
60
+ var ensureHotKey = () => machine.enqueueActions(({ check, enqueue, self }) => {
61
+ const hasUndo = check("can undo");
62
+ const hotkey = self.getSnapshot().children["hotkey"];
63
+ if (!hasUndo && hotkey) {
64
+ enqueue.stopChild(hotkey);
65
+ return;
66
+ }
67
+ if (hasUndo && !hotkey) enqueue.spawnChild("hotkey", { id: "hotkey" });
78
68
  });
79
- const stopEditing = () => machine.enqueueActions(({ event, enqueue }) => {
80
- if (event.type === "edit.finish" && event.wasChanged) {
81
- enqueue(pushHistory());
82
- enqueue(raiseSync());
83
- return;
84
- }
85
- enqueue.assign({
86
- beforeEditing: null,
87
- editing: null
88
- });
69
+ var pushHistory = () => machine.assign(({ context }) => {
70
+ const snapshot = context.beforeEditing;
71
+ if (!snapshot) return { editing: null };
72
+ const history = [...context.history, snapshot];
73
+ if (history.length > 50) history.shift();
74
+ return {
75
+ beforeEditing: null,
76
+ editing: null,
77
+ history
78
+ };
89
79
  });
90
- const markHistoryAsSynched = () => machine.assign(({ context }) => {
91
- return {
92
- beforeEditing: context.beforeEditing && context.beforeEditing.synched === false ? {
93
- ...context.beforeEditing,
94
- synched: true
95
- } : context.beforeEditing,
96
- history: context.history.map((i) => ({
97
- ...i,
98
- synched: true
99
- }))
100
- };
80
+ var stopEditing = () => machine.enqueueActions(({ event, enqueue }) => {
81
+ if (event.type === "edit.finish" && event.wasChanged) {
82
+ enqueue(pushHistory());
83
+ enqueue(raiseSync());
84
+ return;
85
+ }
86
+ enqueue.assign({
87
+ beforeEditing: null,
88
+ editing: null
89
+ });
101
90
  });
102
- const popHistory = () => machine.assign(({ context }) => {
103
- if (context.history.length <= 1) {
104
- return {
105
- history: []
106
- };
107
- }
108
- return {
109
- history: context.history.slice(0, context.history.length - 1)
110
- };
91
+ var markHistoryAsSynched = () => machine.assign(({ context }) => {
92
+ return {
93
+ beforeEditing: context.beforeEditing && context.beforeEditing.synched === false ? {
94
+ ...context.beforeEditing,
95
+ synched: true
96
+ } : context.beforeEditing,
97
+ history: context.history.map((i) => ({
98
+ ...i,
99
+ synched: true
100
+ }))
101
+ };
111
102
  });
112
- const undo = () => machine.enqueueActions(({ context, enqueue, system }) => {
113
- const lastHistoryItem = last(context.history);
114
- if (!lastHistoryItem) {
115
- return;
116
- }
117
- enqueue(cancelSync());
118
- enqueue(popHistory());
119
- enqueue(ensureHotKey());
120
- const diagramActor = diagramActorRef(system);
121
- enqueue.sendTo(diagramActor, {
122
- type: "update.view",
123
- view: lastHistoryItem.view,
124
- xyedges: lastHistoryItem.xyedges,
125
- xynodes: lastHistoryItem.xynodes,
126
- source: "editor"
127
- });
128
- enqueue.assign({
129
- pendingChanges: []
130
- });
131
- if (lastHistoryItem.synched) {
132
- enqueue.raise({ type: "change", change: lastHistoryItem.change }, { delay: 50 });
133
- } else {
134
- enqueue(raiseSync());
135
- }
103
+ var popHistory = () => machine.assign(({ context }) => {
104
+ if (context.history.length <= 1) return { history: [] };
105
+ return { history: context.history.slice(0, context.history.length - 1) };
136
106
  });
137
- const addSnapshotToPendingChanges = () => machine.assign(({ context, system }) => {
138
- const parentContext = getDiagramContext(system);
139
- const change = createViewChange(parentContext);
140
- return {
141
- pendingChanges: [
142
- // Remove all save-view-snapshot and reset-manual-layout changes
143
- ...withoutSnapshotChanges(context.pendingChanges),
144
- change
145
- ]
146
- };
107
+ var undo = () => machine.enqueueActions(({ context, enqueue, system }) => {
108
+ const lastHistoryItem = last(context.history);
109
+ if (!lastHistoryItem) return;
110
+ enqueue(cancelSync());
111
+ enqueue(popHistory());
112
+ enqueue(ensureHotKey());
113
+ const diagramActor = diagramActorRef(system);
114
+ enqueue.sendTo(diagramActor, {
115
+ type: "update.view",
116
+ view: lastHistoryItem.view,
117
+ xyedges: lastHistoryItem.xyedges,
118
+ xynodes: lastHistoryItem.xynodes,
119
+ source: "editor"
120
+ });
121
+ enqueue.assign({ pendingChanges: [] });
122
+ if (lastHistoryItem.synched) enqueue.raise({
123
+ type: "change",
124
+ change: lastHistoryItem.change
125
+ }, { delay: 50 });
126
+ else enqueue(raiseSync());
147
127
  });
148
-
149
- export { addSnapshotToPendingChanges, cancelSync, ensureHotKey, isLayoutChange, markHistoryAsSynched, popHistory, pushHistory, raiseSync, reschedule, saveStateBeforeEdit, startEditing, stopEditing, stopHotkey, undo, withoutSnapshotChanges };
128
+ var addSnapshotToPendingChanges = () => machine.assign(({ context, system }) => {
129
+ const change = createViewChange(getDiagramContext(system));
130
+ return { pendingChanges: [...withoutSnapshotChanges(context.pendingChanges), change] };
131
+ });
132
+ //#endregion
133
+ export { addSnapshotToPendingChanges, cancelSync, ensureHotKey, isLayoutChange, markHistoryAsSynched, pushHistory, reschedule, saveStateBeforeEdit, startEditing, stopEditing, stopHotkey, undo, withoutSnapshotChanges };