@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,47 +1,35 @@
1
- import { useMemo } from 'react';
2
- import { fromPromise } from 'xstate';
3
- import { applyChangesToManualLayout } from './applyChangesToManualLayout.js';
4
- import { editorActorLogic } from './editorActor.states.js';
5
- import { useOptionalLikeC4Editor } from './LikeC4EditorProvider.js';
6
- import { useCallbackRef } from '../hooks/useCallbackRef.js';
7
-
8
- const promisify = (fn) => {
9
- return Promise.resolve().then(() => fn());
1
+ import "../_virtual/_rolldown/runtime.js";
2
+ import { useCallbackRef } from "../hooks/useCallbackRef.js";
3
+ import { useOptionalLikeC4Editor } from "./LikeC4EditorProvider.js";
4
+ import { editorActorLogic } from "./editorActor.states.js";
5
+ import { applyChangesToManualLayout } from "./applyChangesToManualLayout.js";
6
+ import { useMemo } from "react";
7
+ import { fromPromise } from "xstate";
8
+ //#region src/editor/useEditorActorLogic.ts
9
+ var promisify = (fn) => {
10
+ return Promise.resolve().then(() => fn());
10
11
  };
11
12
  function useEditorActorLogic() {
12
- const port = useOptionalLikeC4Editor();
13
- const applyLatest = useCallbackRef(
14
- async ({ input: { viewId, current } }) => {
15
- if (!port) {
16
- console.error("No editor port available for applying latest to manual layout");
17
- return Promise.reject(new Error("No editor port"));
18
- }
19
- const manual = await promisify(() => current ?? port.fetchView(viewId, "manual"));
20
- const latest = await promisify(() => port.fetchView(viewId, "auto"));
21
- const updated = applyChangesToManualLayout(manual, latest);
22
- return {
23
- updated
24
- };
25
- }
26
- );
27
- const executeChange = useCallbackRef(
28
- async ({ input }) => {
29
- if (!port) {
30
- console.error("No editor port available for executing change");
31
- return Promise.reject(new Error("No editor port"));
32
- }
33
- for (const change of input.changes) {
34
- await promisify(() => port.handleChange(input.viewId, change));
35
- }
36
- return {};
37
- }
38
- );
39
- return useMemo(() => editorActorLogic.provide({
40
- actors: {
41
- applyLatest: fromPromise(applyLatest),
42
- executeChange: fromPromise(executeChange)
43
- }
44
- }), [applyLatest, executeChange]);
13
+ const port = useOptionalLikeC4Editor();
14
+ const applyLatest = useCallbackRef(async ({ input: { viewId, current } }) => {
15
+ if (!port) {
16
+ console.error("No editor port available for applying latest to manual layout");
17
+ return Promise.reject(/* @__PURE__ */ new Error("No editor port"));
18
+ }
19
+ return { updated: applyChangesToManualLayout(await promisify(() => current ?? port.fetchView(viewId, "manual")), await promisify(() => port.fetchView(viewId, "auto"))) };
20
+ });
21
+ const executeChange = useCallbackRef(async ({ input }) => {
22
+ if (!port) {
23
+ console.error("No editor port available for executing change");
24
+ return Promise.reject(/* @__PURE__ */ new Error("No editor port"));
25
+ }
26
+ for (const change of input.changes) await promisify(() => port.handleChange(input.viewId, change));
27
+ return {};
28
+ });
29
+ return useMemo(() => editorActorLogic.provide({ actors: {
30
+ applyLatest: fromPromise(applyLatest),
31
+ executeChange: fromPromise(executeChange)
32
+ } }), [applyLatest, executeChange]);
45
33
  }
46
-
34
+ //#endregion
47
35
  export { useEditorActorLogic };
@@ -1,24 +1,24 @@
1
- import { useContext, createContext } from 'react';
2
-
3
- const DiagramActorSafeContext = createContext(null);
1
+ import "../_virtual/_rolldown/runtime.js";
2
+ import { createContext, useContext } from "react";
3
+ //#region src/hooks/safeContext.tsx
4
+ /**
5
+ * To improve experience with HMR, we move context to separate files and use as a boundary for hooks
6
+ */
7
+ var DiagramActorSafeContext = createContext(null);
4
8
  DiagramActorSafeContext.displayName = "DiagramActorSafeContext";
5
- const DiagramApiSafeContext = createContext(null);
9
+ var DiagramApiSafeContext = createContext(null);
6
10
  DiagramApiSafeContext.displayName = "DiagramApiSafeContext";
7
- const DiagramActorContextProvider = DiagramActorSafeContext.Provider;
8
- const DiagramApiContextProvider = DiagramApiSafeContext.Provider;
11
+ var DiagramActorContextProvider = DiagramActorSafeContext.Provider;
12
+ var DiagramApiContextProvider = DiagramApiSafeContext.Provider;
9
13
  function useDiagramActorRef() {
10
- const ctx = useContext(DiagramActorSafeContext);
11
- if (ctx === null) {
12
- throw new Error("DiagramActorRef is not provided");
13
- }
14
- return ctx;
14
+ const ctx = useContext(DiagramActorSafeContext);
15
+ if (ctx === null) throw new Error("DiagramActorRef is not provided");
16
+ return ctx;
15
17
  }
16
18
  function useDiagram() {
17
- const ctx = useContext(DiagramApiSafeContext);
18
- if (ctx === null) {
19
- throw new Error("DiagramApi is not provided");
20
- }
21
- return ctx;
19
+ const ctx = useContext(DiagramApiSafeContext);
20
+ if (ctx === null) throw new Error("DiagramApi is not provided");
21
+ return ctx;
22
22
  }
23
-
23
+ //#endregion
24
24
  export { DiagramActorContextProvider, DiagramApiContextProvider, useDiagram, useDiagramActorRef };
@@ -1,14 +1,21 @@
1
- import { useRef, useMemo } from 'react';
2
-
1
+ import "../_virtual/_rolldown/runtime.js";
2
+ import { useMemo, useRef } from "react";
3
+ //#region src/hooks/useCallbackRef.ts
4
+ /**
5
+ * Memoizes a callback function so that it will not be recreated on every render.
6
+ * The returned function is guaranteed to be the same reference across renders.
7
+ * @param callback the callback function to memoize
8
+ * @returns the memoized callback function
9
+ */
3
10
  function useCallbackRef(callback) {
4
- const ref = useRef(callback);
5
- ref.current = callback;
6
- return useMemo(() => {
7
- function callbackRef(...args) {
8
- return ref.current?.(...args);
9
- }
10
- return callbackRef;
11
- }, []);
11
+ const ref = useRef(callback);
12
+ ref.current = callback;
13
+ return useMemo(() => {
14
+ function callbackRef(...args) {
15
+ return ref.current?.(...args);
16
+ }
17
+ return callbackRef;
18
+ }, []);
12
19
  }
13
-
20
+ //#endregion
14
21
  export { useCallbackRef };
@@ -1,12 +1,21 @@
1
- import { useDiagramSnapshot, selectDiagramActor } from './useDiagram.js';
2
-
3
- const selectViewId = selectDiagramActor((s) => s.context.view.id);
1
+ import "../_virtual/_rolldown/runtime.js";
2
+ import { selectDiagramActor, useDiagramSnapshot } from "./useDiagram.js";
3
+ //#region src/hooks/useCurrentView.ts
4
+ var selectViewId = selectDiagramActor((s) => s.context.view.id);
5
+ /**
6
+ * Returns current view id
7
+ * Should be used only inside LikeC4Diagram
8
+ */
4
9
  function useCurrentViewId() {
5
- return useDiagramSnapshot(selectViewId);
10
+ return useDiagramSnapshot(selectViewId);
6
11
  }
7
- const selectView = selectDiagramActor((s) => s.context.view);
12
+ var selectView = selectDiagramActor((s) => s.context.view);
13
+ /**
14
+ * Returns current view
15
+ * Should be used only inside LikeC4Diagram
16
+ */
8
17
  function useCurrentView() {
9
- return useDiagramSnapshot(selectView);
18
+ return useDiagramSnapshot(selectView);
10
19
  }
11
-
20
+ //#endregion
12
21
  export { useCurrentView, useCurrentViewId };
@@ -1,11 +1,16 @@
1
- import { useOptionalCurrentViewModel } from '../context/LikeC4ModelContext.js';
2
-
1
+ import "../_virtual/_rolldown/runtime.js";
2
+ import { useOptionalCurrentViewModel } from "../context/LikeC4ModelContext.js";
3
+ //#region src/hooks/useCurrentViewModel.ts
4
+ /**
5
+ * Hook to get the current view model from the context.
6
+ * Throws an error if no view model is found in the context.
7
+ *
8
+ * @see useOptionalCurrentViewModel
9
+ */
3
10
  function useCurrentViewModel() {
4
- const vm = useOptionalCurrentViewModel();
5
- if (!vm) {
6
- throw new Error("No CurrentViewModelContext found");
7
- }
8
- return vm;
11
+ const vm = useOptionalCurrentViewModel();
12
+ if (!vm) throw new Error("No CurrentViewModelContext found");
13
+ return vm;
9
14
  }
10
-
11
- export { useCurrentViewModel, useOptionalCurrentViewModel };
15
+ //#endregion
16
+ export { useCurrentViewModel };
@@ -1,47 +1,65 @@
1
- import { useSelector } from '@xstate/react';
2
- import { shallowEqual } from 'fast-equals';
3
- import { useCallback, useRef, useEffect } from 'react';
4
- import { useDiagramActorRef } from './safeContext.js';
5
- export { useDiagram } from './safeContext.js';
6
- import { useCallbackRef } from './useCallbackRef.js';
7
-
1
+ import "../_virtual/_rolldown/runtime.js";
2
+ import { useCallbackRef } from "./useCallbackRef.js";
3
+ import { useDiagramActorRef } from "./safeContext.js";
4
+ import { useCallback, useEffect, useRef } from "react";
5
+ import { shallowEqual } from "fast-equals";
6
+ import { useSelector } from "@xstate/react";
7
+ //#region src/hooks/useDiagram.ts
8
+ /**
9
+ * Helper to create a selector for diagram actor snapshot
10
+ */
8
11
  function selectDiagramActor(selector) {
9
- return selector;
12
+ return selector;
10
13
  }
11
14
  function useDiagramSnapshot(selector, compare = shallowEqual) {
12
- const actorRef = useDiagramActorRef();
13
- return useSelector(actorRef, selector, compare);
15
+ return useSelector(useDiagramActorRef(), selector, compare);
14
16
  }
17
+ /**
18
+ * Helper to create a selector for diagram actor snapshot
19
+ */
15
20
  function selectDiagramActorContext(selector) {
16
- return (state) => selector(state.context);
21
+ return (state) => selector(state.context);
17
22
  }
23
+ /**
24
+ * Read diagram context
25
+ */
18
26
  function useDiagramContext(selector, compare = shallowEqual, deps = []) {
19
- const actorRef = useDiagramActorRef();
20
- const selectorRef = useCallbackRef(selector);
21
- const select = useCallback((s) => selectorRef(s.context), deps);
22
- return useSelector(actorRef, select, compare);
27
+ const actorRef = useDiagramActorRef();
28
+ const selectorRef = useCallbackRef(selector);
29
+ return useSelector(actorRef, useCallback((s) => selectorRef(s.context), deps), compare);
23
30
  }
31
+ /**
32
+ * Subscribe to diagram emitted events
33
+ * @example
34
+ * ```tsx
35
+ * useOnDiagramEvent('navigateTo', ({viewId}) => {
36
+ * console.log('Navigating to view', viewId)
37
+ * })
38
+ * ```
39
+ */
24
40
  function useOnDiagramEvent(event, callback, options) {
25
- const actorRef = useDiagramActorRef();
26
- const callbackRef = useCallbackRef(callback);
27
- const wasCalled = useRef(false);
28
- const once = options?.once ?? false;
29
- useEffect(() => {
30
- if (once && wasCalled.current) {
31
- return;
32
- }
33
- let subscription = actorRef.on(event, (payload) => {
34
- callbackRef(payload);
35
- wasCalled.current = true;
36
- if (once) {
37
- subscription?.unsubscribe();
38
- subscription = null;
39
- }
40
- });
41
- return () => {
42
- subscription?.unsubscribe();
43
- };
44
- }, [actorRef, event, once]);
41
+ const actorRef = useDiagramActorRef();
42
+ const callbackRef = useCallbackRef(callback);
43
+ const wasCalled = useRef(false);
44
+ const once = options?.once ?? false;
45
+ useEffect(() => {
46
+ if (once && wasCalled.current) return;
47
+ let subscription = actorRef.on(event, (payload) => {
48
+ callbackRef(payload);
49
+ wasCalled.current = true;
50
+ if (once) {
51
+ subscription?.unsubscribe();
52
+ subscription = null;
53
+ }
54
+ });
55
+ return () => {
56
+ subscription?.unsubscribe();
57
+ };
58
+ }, [
59
+ actorRef,
60
+ event,
61
+ once
62
+ ]);
45
63
  }
46
-
47
- export { selectDiagramActor, selectDiagramActorContext, useDiagramActorRef, useDiagramContext, useDiagramSnapshot, useOnDiagramEvent };
64
+ //#endregion
65
+ export { selectDiagramActor, selectDiagramActorContext, useDiagramContext, useDiagramSnapshot, useOnDiagramEvent };
@@ -1,85 +1,81 @@
1
- import { nonNullable } from '@likec4/core';
2
- import { useSelector } from '@xstate/react';
3
- import { shallowEqual } from 'fast-equals';
4
- import { deriveToggledFeatures } from '../likec4diagram/state/machine.setup.js';
5
- import { useDiagramActorRef } from './safeContext.js';
6
- import { useCallbackRef } from './useCallbackRef.js';
7
-
8
- const selectCompareLayoutState = ({ context }) => {
9
- const drifts = context.view.drifts ?? null;
10
- if (!context.features.enableCompareWithLatest || !drifts || drifts.length === 0) {
11
- return {
12
- hasEditor: false,
13
- isEnabled: false,
14
- isEditable: false,
15
- isActive: false,
16
- drifts: null,
17
- canApplyLatest: false,
18
- layout: context.view._layout ?? "auto"
19
- };
20
- }
21
- const {
22
- enableCompareWithLatest,
23
- enableReadOnly
24
- } = deriveToggledFeatures(context);
25
- return {
26
- hasEditor: context.features.enableEditor,
27
- isEnabled: true,
28
- isEditable: !enableReadOnly,
29
- isActive: enableCompareWithLatest === true,
30
- drifts,
31
- canApplyLatest: !drifts.includes("type-changed"),
32
- layout: context.view._layout ?? "auto"
33
- };
1
+ import "../_virtual/_rolldown/runtime.js";
2
+ import { useCallbackRef } from "./useCallbackRef.js";
3
+ import { useDiagramActorRef } from "./safeContext.js";
4
+ import { deriveToggledFeatures } from "../likec4diagram/state/machine.setup.js";
5
+ import { shallowEqual } from "fast-equals";
6
+ import { nonNullable } from "@likec4/core";
7
+ import { useSelector } from "@xstate/react";
8
+ //#region src/hooks/useDiagramCompareLayout.ts
9
+ var selectCompareLayoutState = ({ context }) => {
10
+ const drifts = context.view.drifts ?? null;
11
+ if (!context.features.enableCompareWithLatest || !drifts || drifts.length === 0) return {
12
+ hasEditor: false,
13
+ isEnabled: false,
14
+ isEditable: false,
15
+ isActive: false,
16
+ drifts: null,
17
+ canApplyLatest: false,
18
+ layout: context.view._layout ?? "auto"
19
+ };
20
+ const { enableCompareWithLatest, enableReadOnly } = deriveToggledFeatures(context);
21
+ return {
22
+ hasEditor: context.features.enableEditor,
23
+ isEnabled: true,
24
+ isEditable: !enableReadOnly,
25
+ isActive: enableCompareWithLatest === true,
26
+ drifts,
27
+ canApplyLatest: !drifts.includes("type-changed"),
28
+ layout: context.view._layout ?? "auto"
29
+ };
34
30
  };
35
31
  function useDiagramCompareLayout() {
36
- const actorRef = useDiagramActorRef();
37
- const state = useSelector(actorRef, selectCompareLayoutState, shallowEqual);
38
- const switchLayout = useCallbackRef((layoutType) => {
39
- if (!state.isEnabled) {
40
- console.warn("Compare with latest feature is not enabled");
41
- return;
42
- }
43
- actorRef.send({ type: "emit.onLayoutTypeChange", layoutType });
44
- });
45
- const toggleCompare = useCallbackRef((force) => {
46
- if (!state.isEnabled) {
47
- console.warn("Compare with latest feature is not enabled");
48
- return;
49
- }
50
- const nextIsActive = force ? force === "on" : !state.isActive;
51
- if (state.isActive && !nextIsActive && state.layout === "auto") {
52
- switchLayout("manual");
53
- }
54
- actorRef.send({
55
- type: "toggle.feature",
56
- feature: "CompareWithLatest",
57
- forceValue: nextIsActive
58
- });
59
- });
60
- const resetManualLayout = useCallbackRef(() => {
61
- if (!state.isEnabled) {
62
- console.warn("Compare with latest feature is not enabled");
63
- return;
64
- }
65
- actorRef.send({ type: "layout.resetManualLayout" });
66
- });
67
- const applyLatestToManual = useCallbackRef(() => {
68
- if (!state.isEnabled) {
69
- console.warn("Compare with latest feature is not enabled");
70
- return;
71
- }
72
- const editor = nonNullable(actorRef.system?.get("editor"), "editor actor not found");
73
- editor.send({ type: "applyLatestToManual" });
74
- if (state.isActive) {
75
- actorRef.send({
76
- type: "toggle.feature",
77
- feature: "CompareWithLatest",
78
- forceValue: false
79
- });
80
- }
81
- });
82
- return [state, { toggleCompare, switchLayout, resetManualLayout, applyLatestToManual }];
32
+ const actorRef = useDiagramActorRef();
33
+ const state = useSelector(actorRef, selectCompareLayoutState, shallowEqual);
34
+ const switchLayout = useCallbackRef((layoutType) => {
35
+ if (!state.isEnabled) {
36
+ console.warn("Compare with latest feature is not enabled");
37
+ return;
38
+ }
39
+ actorRef.send({
40
+ type: "emit.onLayoutTypeChange",
41
+ layoutType
42
+ });
43
+ });
44
+ return [state, {
45
+ toggleCompare: useCallbackRef((force) => {
46
+ if (!state.isEnabled) {
47
+ console.warn("Compare with latest feature is not enabled");
48
+ return;
49
+ }
50
+ const nextIsActive = force ? force === "on" : !state.isActive;
51
+ if (state.isActive && !nextIsActive && state.layout === "auto") switchLayout("manual");
52
+ actorRef.send({
53
+ type: "toggle.feature",
54
+ feature: "CompareWithLatest",
55
+ forceValue: nextIsActive
56
+ });
57
+ }),
58
+ switchLayout,
59
+ resetManualLayout: useCallbackRef(() => {
60
+ if (!state.isEnabled) {
61
+ console.warn("Compare with latest feature is not enabled");
62
+ return;
63
+ }
64
+ actorRef.send({ type: "layout.resetManualLayout" });
65
+ }),
66
+ applyLatestToManual: useCallbackRef(() => {
67
+ if (!state.isEnabled) {
68
+ console.warn("Compare with latest feature is not enabled");
69
+ return;
70
+ }
71
+ nonNullable(actorRef.system?.get("editor"), "editor actor not found").send({ type: "applyLatestToManual" });
72
+ if (state.isActive) actorRef.send({
73
+ type: "toggle.feature",
74
+ feature: "CompareWithLatest",
75
+ forceValue: false
76
+ });
77
+ })
78
+ }];
83
79
  }
84
-
80
+ //#endregion
85
81
  export { useDiagramCompareLayout };
@@ -1,7 +1,9 @@
1
- import { useId as useId$1 } from '@mantine/hooks';
2
-
3
- function useId() {
4
- return useId$1().replace("mantine-", "likec4-");
1
+ import { __name } from "../_virtual/_rolldown/runtime.js";
2
+ import { useId } from "@mantine/hooks";
3
+ //#region src/hooks/useId.ts
4
+ function useId$1() {
5
+ return useId().replace("mantine-", "likec4-");
5
6
  }
6
-
7
- export { useId };
7
+ __name(useId$1, "useId");
8
+ //#endregion
9
+ export { useId$1 as useId };
@@ -1,25 +1,26 @@
1
- import { compareNatural } from '@likec4/core/utils';
2
- import { useMemo } from 'react';
3
- import { useLikeC4Model } from './useLikeC4Model.js';
4
-
5
- const sortByLabel = (a, b) => compareNatural(a.label, b.label);
1
+ import "../_virtual/_rolldown/runtime.js";
2
+ import { useLikeC4Model } from "./useLikeC4Model.js";
3
+ import { useMemo } from "react";
4
+ import { compareNatural } from "@likec4/core/utils";
5
+ //#region src/hooks/useLikeC4ElementsTree.ts
6
+ var sortByLabel = (a, b) => compareNatural(a.label, b.label);
6
7
  function buildNode(element) {
7
- return {
8
- label: element.title || element.id,
9
- value: element.id,
10
- children: [...element.children()].map(buildNode).sort(sortByLabel)
11
- };
8
+ return {
9
+ label: element.title || element.id,
10
+ value: element.id,
11
+ children: [...element.children()].map(buildNode).sort(sortByLabel)
12
+ };
12
13
  }
14
+ /**
15
+ * Returns a tree of elements in the model.
16
+ * If `viewId` is provided, returns the tree of elements in the view.
17
+ */
13
18
  function useLikeC4ElementsTree(viewId) {
14
- const model = useLikeC4Model();
15
- return useMemo(() => {
16
- if (viewId) {
17
- const view = model.view(viewId);
18
- return [...view.roots()].map(buildNode).sort(sortByLabel);
19
- } else {
20
- return [...model.roots()].map(buildNode).sort(sortByLabel);
21
- }
22
- }, [model, viewId]);
19
+ const model = useLikeC4Model();
20
+ return useMemo(() => {
21
+ if (viewId) return [...model.view(viewId).roots()].map(buildNode).sort(sortByLabel);
22
+ else return [...model.roots()].map(buildNode).sort(sortByLabel);
23
+ }, [model, viewId]);
23
24
  }
24
-
25
- export { sortByLabel, useLikeC4ElementsTree };
25
+ //#endregion
26
+ export { useLikeC4ElementsTree };
@@ -1,26 +1,27 @@
1
- import { deepEqual } from 'fast-equals';
2
- import { useState, useEffect } from 'react';
3
- import { useOptionalLikeC4Model } from '../context/LikeC4ModelContext.js';
4
-
1
+ import "../_virtual/_rolldown/runtime.js";
2
+ import { useOptionalLikeC4Model } from "../context/LikeC4ModelContext.js";
3
+ import { useEffect, useState } from "react";
4
+ import { deepEqual } from "fast-equals";
5
+ //#region src/hooks/useLikeC4Model.ts
6
+ /**
7
+ * @returns The LikeC4Model from context.
8
+ * @throws If no LikeC4ModelProvider is found.
9
+ */
5
10
  function useLikeC4Model() {
6
- const model = useOptionalLikeC4Model();
7
- if (!model) {
8
- throw new Error("LikeC4Model not found. Make sure you have LikeC4ModelProvider.");
9
- }
10
- return model;
11
+ const model = useOptionalLikeC4Model();
12
+ if (!model) throw new Error("LikeC4Model not found. Make sure you have LikeC4ModelProvider.");
13
+ return model;
11
14
  }
12
15
  function useLikeC4ViewModel(viewId) {
13
- const model = useLikeC4Model();
14
- return model.view(viewId);
16
+ return useLikeC4Model().view(viewId);
15
17
  }
16
18
  function useLikeC4Specification() {
17
- const model = useLikeC4Model();
18
- const _specification = model.specification;
19
- const [specification, setSpecification] = useState(_specification);
20
- useEffect(() => {
21
- setSpecification((current) => deepEqual(current, _specification) ? current : _specification);
22
- }, [_specification]);
23
- return specification;
19
+ const _specification = useLikeC4Model().specification;
20
+ const [specification, setSpecification] = useState(_specification);
21
+ useEffect(() => {
22
+ setSpecification((current) => deepEqual(current, _specification) ? current : _specification);
23
+ }, [_specification]);
24
+ return specification;
24
25
  }
25
-
26
- export { useLikeC4Model, useLikeC4Specification, useLikeC4ViewModel, useOptionalLikeC4Model };
26
+ //#endregion
27
+ export { useLikeC4Model, useLikeC4Specification, useLikeC4ViewModel };