@likec4/diagram 1.55.1 → 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 (343) 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.js +35 -73
  43. package/dist/base-primitives/edge/EdgeMarkers.js +157 -215
  44. package/dist/base-primitives/edge/EdgePath.js +62 -115
  45. package/dist/base-primitives/element/ElementActionButtons.js +92 -81
  46. package/dist/base-primitives/element/ElementData.js +107 -126
  47. package/dist/base-primitives/element/ElementDetailsButton.js +78 -98
  48. package/dist/base-primitives/element/ElementNodeContainer.js +51 -82
  49. package/dist/base-primitives/element/ElementShape.js +331 -317
  50. package/dist/base-primitives/element/ElementTags.d.ts +1 -1
  51. package/dist/base-primitives/element/ElementTags.js +133 -193
  52. package/dist/base-primitives/memoEdge.js +11 -10
  53. package/dist/base-primitives/memoNode.js +16 -20
  54. package/dist/components/ErrorFallback.js +111 -75
  55. package/dist/components/GithubIcon.js +14 -16
  56. package/dist/components/Link.js +99 -113
  57. package/dist/components/Logo.js +38 -41
  58. package/dist/components/NavigationLink.js +15 -23
  59. package/dist/components/NavigationPanel.js +26 -47
  60. package/dist/components/PortalToContainer.js +16 -10
  61. package/dist/components/RootContainer.js +35 -31
  62. package/dist/components/SearchControl.css.js +65 -75
  63. package/dist/components/SearchControl.js +36 -14
  64. package/dist/components/ViewNotFound.js +22 -29
  65. package/dist/context/CurrentViewModelProvider.js +11 -9
  66. package/dist/context/DefaultMantineProvider.js +45 -72
  67. package/dist/context/DiagramEventHandlers.js +43 -48
  68. package/dist/context/DiagramFeatures.js +73 -69
  69. package/dist/context/EnsureMantine.js +13 -16
  70. package/dist/context/FramerMotionConfig.js +17 -11
  71. package/dist/context/IconRenderer.js +90 -106
  72. package/dist/context/LikeC4ModelContext.js +14 -10
  73. package/dist/context/LikeC4ProjectsContext.js +7 -6
  74. package/dist/context/RootContainerContext.d.ts +2 -5
  75. package/dist/context/RootContainerContext.js +24 -26
  76. package/dist/context/TagStylesContext.js +49 -57
  77. package/dist/custom/customNodes.js +224 -28
  78. package/dist/custom/index.js +41 -40
  79. package/dist/editor/LikeC4EditorCallbacks.js +4 -2
  80. package/dist/editor/LikeC4EditorProvider.js +32 -7
  81. package/dist/editor/applyChangesToManualLayout.js +144 -163
  82. package/dist/editor/editorActor.actions.js +122 -138
  83. package/dist/editor/editorActor.setup.js +30 -36
  84. package/dist/editor/editorActor.states.js +209 -263
  85. package/dist/editor/hotkeyActor.js +18 -17
  86. package/dist/editor/useEditorActorLogic.js +31 -43
  87. package/dist/hooks/safeContext.js +17 -17
  88. package/dist/hooks/useCallbackRef.js +18 -11
  89. package/dist/hooks/useCurrentView.js +16 -7
  90. package/dist/hooks/useCurrentViewModel.js +14 -9
  91. package/dist/hooks/useDiagram.js +55 -37
  92. package/dist/hooks/useDiagramCompareLayout.js +77 -81
  93. package/dist/hooks/useId.js +8 -6
  94. package/dist/hooks/useLikeC4ElementsTree.js +22 -21
  95. package/dist/hooks/useLikeC4Model.js +21 -20
  96. package/dist/hooks/useLikeC4Project.js +40 -29
  97. package/dist/hooks/useLikeC4Styles.js +6 -6
  98. package/dist/hooks/useMantinePortalProps.js +10 -6
  99. package/dist/hooks/useOverlaysActor.js +7 -6
  100. package/dist/hooks/useSearchActor.js +7 -6
  101. package/dist/hooks/useSetState.js +21 -19
  102. package/dist/hooks/useUpdateEffect.js +18 -29
  103. package/dist/hooks/useXYFlow.js +13 -15
  104. package/dist/index.js +24 -23
  105. package/dist/likec4diagram/DiagramUI.js +33 -37
  106. package/dist/likec4diagram/DiagramXYFlow.js +215 -224
  107. package/dist/likec4diagram/convert-to-xyflow.js +21 -22
  108. package/dist/likec4diagram/custom/edges/EdgeDrifts.js +22 -32
  109. package/dist/likec4diagram/custom/edges/RelationshipEdge.js +275 -372
  110. package/dist/likec4diagram/custom/edges/SequenceStepEdge.js +71 -75
  111. package/dist/likec4diagram/custom/edges/edges.css.js +41 -47
  112. package/dist/likec4diagram/custom/edges/useControlPoints.js +52 -56
  113. package/dist/likec4diagram/custom/edges/useRelationshipEdgePath.js +54 -76
  114. package/dist/likec4diagram/custom/index.js +17 -17
  115. package/dist/likec4diagram/custom/nodes/CompoundActions.js +19 -26
  116. package/dist/likec4diagram/custom/nodes/ElementActions.js +131 -82
  117. package/dist/likec4diagram/custom/nodes/NodeDrifts.js +20 -26
  118. package/dist/likec4diagram/custom/nodes/NodeNotes.js +215 -273
  119. package/dist/likec4diagram/custom/nodes/SequenceActorNode.js +131 -147
  120. package/dist/likec4diagram/custom/nodes/nodes.js +135 -146
  121. package/dist/likec4diagram/custom/nodes/toolbar/ColorButton.js +155 -159
  122. package/dist/likec4diagram/custom/nodes/toolbar/CompoundToolbar.js +58 -86
  123. package/dist/likec4diagram/custom/nodes/toolbar/ElementToolbar.js +108 -164
  124. package/dist/likec4diagram/custom/nodes/toolbar/Toolbar.js +56 -68
  125. package/dist/likec4diagram/custom/nodes/toolbar/_shared.d.ts +3 -6
  126. package/dist/likec4diagram/custom/nodes/toolbar/_shared.js +97 -102
  127. package/dist/likec4diagram/custom/nodes/toolbar/styles.css.js +13 -13
  128. package/dist/likec4diagram/custom/nodes/toolbar/types.js +6 -5
  129. package/dist/likec4diagram/custom/nodes/toolbar/useHandlers.js +36 -41
  130. package/dist/likec4diagram/relationship-popover/RelationshipPopover.js +510 -541
  131. package/dist/likec4diagram/relationship-popover/actor.js +113 -152
  132. package/dist/likec4diagram/relationship-popover/components.js +39 -43
  133. package/dist/likec4diagram/state/DiagramActorProvider.js +135 -136
  134. package/dist/likec4diagram/state/aligners.js +283 -360
  135. package/dist/likec4diagram/state/assign.js +84 -108
  136. package/dist/likec4diagram/state/createViewChange.js +72 -92
  137. package/dist/likec4diagram/state/diagram-api.js +224 -152
  138. package/dist/likec4diagram/state/hotkeyActor.js +54 -45
  139. package/dist/likec4diagram/state/machine.actions.js +709 -821
  140. package/dist/likec4diagram/state/machine.actions.layout.js +154 -183
  141. package/dist/likec4diagram/state/machine.js +113 -134
  142. package/dist/likec4diagram/state/machine.setup.js +104 -113
  143. package/dist/likec4diagram/state/machine.state.initializing.js +54 -54
  144. package/dist/likec4diagram/state/machine.state.navigating.js +192 -227
  145. package/dist/likec4diagram/state/machine.state.ready.focused.js +72 -88
  146. package/dist/likec4diagram/state/machine.state.ready.idle.js +79 -98
  147. package/dist/likec4diagram/state/machine.state.ready.js +126 -202
  148. package/dist/likec4diagram/state/machine.state.ready.printing.js +38 -39
  149. package/dist/likec4diagram/state/machine.state.ready.walkthrough.js +153 -193
  150. package/dist/likec4diagram/state/mediaPrintActor.js +20 -16
  151. package/dist/likec4diagram/state/persistence.js +20 -21
  152. package/dist/likec4diagram/state/utils.js +131 -162
  153. package/dist/likec4diagram/ui/LayoutDriftFrame.js +53 -64
  154. package/dist/likec4diagram/ui/notation/NotationPanel.css.js +58 -80
  155. package/dist/likec4diagram/ui/notation/NotationPanel.js +183 -214
  156. package/dist/likec4diagram/useLayoutConstraints.js +386 -433
  157. package/dist/likec4diagram/xyflow-diagram/diagram-view.js +216 -227
  158. package/dist/likec4diagram/xyflow-sequence/const.js +11 -7
  159. package/dist/likec4diagram/xyflow-sequence/sequence-layout.js +177 -180
  160. package/dist/navigationpanel/NavigationPanel.js +113 -123
  161. package/dist/navigationpanel/NavigationPanelControls.js +124 -150
  162. package/dist/navigationpanel/NavigationPanelDropdown.js +365 -477
  163. package/dist/navigationpanel/_common.d.ts +4 -10
  164. package/dist/navigationpanel/_common.js +57 -70
  165. package/dist/navigationpanel/actor.js +153 -236
  166. package/dist/navigationpanel/comparepanel/CompareActionsMenu.js +66 -83
  167. package/dist/navigationpanel/comparepanel/ComparePanel.js +135 -164
  168. package/dist/navigationpanel/comparepanel/ComparePanelControls.js +50 -58
  169. package/dist/navigationpanel/comparepanel/DriftsSummary.js +207 -254
  170. package/dist/navigationpanel/comparepanel/LayoutTypeSwitcher.js +33 -35
  171. package/dist/navigationpanel/controls/DetailsControls.js +219 -246
  172. package/dist/navigationpanel/controls/LayoutWarning.js +89 -100
  173. package/dist/navigationpanel/controls/LogoButton.js +46 -70
  174. package/dist/navigationpanel/controls/NavigationButtons.js +35 -52
  175. package/dist/navigationpanel/controls/OpenSource.js +27 -25
  176. package/dist/navigationpanel/controls/SearchControl.js +50 -61
  177. package/dist/navigationpanel/controls/ToggleReadonly.js +84 -81
  178. package/dist/navigationpanel/dropdown/ProjectsMenu.js +69 -87
  179. package/dist/navigationpanel/editorpanel/CenterCamera.js +17 -13
  180. package/dist/navigationpanel/editorpanel/ChangeAutoLayoutButton.js +182 -154
  181. package/dist/navigationpanel/editorpanel/EditorPanel.js +47 -45
  182. package/dist/navigationpanel/editorpanel/ManualLayoutToolsButton.js +122 -173
  183. package/dist/navigationpanel/editorpanel/ToggleReadonly.js +20 -13
  184. package/dist/navigationpanel/editorpanel/_common.d.ts +3 -6
  185. package/dist/navigationpanel/editorpanel/_common.js +13 -13
  186. package/dist/navigationpanel/editorpanel/styles.js +58 -75
  187. package/dist/navigationpanel/hooks.js +35 -29
  188. package/dist/navigationpanel/styles.css.js +20 -28
  189. package/dist/navigationpanel/walkthrough/ActiveWalkthroughControls.js +107 -134
  190. package/dist/navigationpanel/walkthrough/DynamicViewControls.d.ts +8 -8
  191. package/dist/navigationpanel/walkthrough/DynamicViewControls.js +105 -120
  192. package/dist/navigationpanel/walkthrough/WalkthroughPanel.js +75 -83
  193. package/dist/overlays/Overlays.js +94 -112
  194. package/dist/overlays/element-details/ElementDetails.js +22 -28
  195. package/dist/overlays/element-details/ElementDetailsCard.css.js +198 -221
  196. package/dist/overlays/element-details/ElementDetailsCard.js +517 -499
  197. package/dist/overlays/element-details/MetadataValue.js +210 -250
  198. package/dist/overlays/element-details/TabPanelDeployments.css.js +40 -60
  199. package/dist/overlays/element-details/TabPanelDeployments.js +185 -178
  200. package/dist/overlays/element-details/TabPanelRelationships.css.js +63 -71
  201. package/dist/overlays/element-details/TabPanelRelationships.js +155 -140
  202. package/dist/overlays/element-details/TabPanelStructure.css.js +29 -33
  203. package/dist/overlays/element-details/TabPanelStructure.js +93 -93
  204. package/dist/overlays/element-details/actor.js +45 -55
  205. package/dist/overlays/element-details/actorContext.js +12 -10
  206. package/dist/overlays/overlay/Overlay.js +104 -151
  207. package/dist/overlays/overlaysActor.js +213 -264
  208. package/dist/overlays/relationship-details/RelationshipDetails.js +270 -253
  209. package/dist/overlays/relationship-details/SelectEdge.css.js +62 -74
  210. package/dist/overlays/relationship-details/SelectEdge.js +146 -126
  211. package/dist/overlays/relationship-details/actor.js +242 -303
  212. package/dist/overlays/relationship-details/compute.js +109 -135
  213. package/dist/overlays/relationship-details/custom/ElementActions.js +43 -56
  214. package/dist/overlays/relationship-details/custom/edgeTypes.js +43 -49
  215. package/dist/overlays/relationship-details/custom/nodeTypes.js +93 -119
  216. package/dist/overlays/relationship-details/hooks.js +44 -38
  217. package/dist/overlays/relationship-details/layout-to-xyflow.js +119 -141
  218. package/dist/overlays/relationship-details/layout.js +275 -304
  219. package/dist/overlays/relationships-browser/RelationshipsBrowser.js +319 -321
  220. package/dist/overlays/relationships-browser/SelectElement.css.js +18 -21
  221. package/dist/overlays/relationships-browser/SelectElement.js +192 -218
  222. package/dist/overlays/relationships-browser/actor.js +364 -462
  223. package/dist/overlays/relationships-browser/const.js +7 -6
  224. package/dist/overlays/relationships-browser/custom/ElementActions.js +60 -63
  225. package/dist/overlays/relationships-browser/custom/EmptyNode.js +25 -29
  226. package/dist/overlays/relationships-browser/custom/edgeTypes.js +66 -99
  227. package/dist/overlays/relationships-browser/custom/nodeTypes.js +98 -123
  228. package/dist/overlays/relationships-browser/hooks.js +49 -51
  229. package/dist/overlays/relationships-browser/layout.js +413 -465
  230. package/dist/overlays/relationships-browser/useViewToNodesEdges.js +141 -157
  231. package/dist/projects-overview/ProjectsOverview.js +56 -55
  232. package/dist/projects-overview/ProjectsOverviewXY.js +105 -94
  233. package/dist/projects-overview/actor.js +252 -345
  234. package/dist/projects-overview/context.js +8 -7
  235. package/dist/projects-overview/custom/edgeTypes.js +22 -21
  236. package/dist/projects-overview/custom/nodeTypes.js +38 -42
  237. package/dist/projects-overview/hooks.js +9 -9
  238. package/dist/projects-overview/layouted-to-xyflow.js +46 -42
  239. package/dist/projects-overview/panel/ProjectsOverviewPanel.js +7 -9
  240. package/dist/projects-overview/persistence.js +22 -22
  241. package/dist/search/Search.js +199 -181
  242. package/dist/search/SearchContext.js +16 -15
  243. package/dist/search/XStateSearchAdapter.js +68 -62
  244. package/dist/search/components/ElementsColumn.css.js +50 -68
  245. package/dist/search/components/ElementsColumn.js +248 -290
  246. package/dist/search/components/PickView.js +116 -140
  247. package/dist/search/components/SearchByTags.js +76 -94
  248. package/dist/search/components/SearchInput.js +187 -209
  249. package/dist/search/components/ViewsColum.js +151 -141
  250. package/dist/search/components/ViewsColumn.css.js +12 -26
  251. package/dist/search/components/_shared.css.js +127 -153
  252. package/dist/search/components/styles.css.js +47 -53
  253. package/dist/search/components/utils.js +44 -47
  254. package/dist/search/hooks.js +10 -10
  255. package/dist/search/searchActor.js +93 -128
  256. package/dist/shadowroot/ShadowRoot.js +66 -78
  257. package/dist/shadowroot/styles.css.js +56 -66
  258. package/dist/styles-font2.js +4 -0
  259. package/dist/styles2.js +4 -0
  260. package/dist/utils/index.js +5 -0
  261. package/dist/utils/roundDpr.js +19 -15
  262. package/dist/utils/view-bounds.js +48 -55
  263. package/dist/utils/xyflow.js +143 -113
  264. package/package.json +12 -13
  265. package/styles-font.css +1 -1
  266. package/styles-min.css +1 -1
  267. package/styles-xyflow.css +1 -1
  268. package/styles.css +1 -1
  269. package/dist/_virtual/_commonjsHelpers.js +0 -3
  270. package/dist/_virtual/assign-f10db67b.cjs.js +0 -3
  271. package/dist/_virtual/log-30abbb83.cjs.js +0 -3
  272. package/dist/_virtual/raise-f051f097.cjs.js +0 -3
  273. package/dist/_virtual/store-cfe7da62.cjs.js +0 -3
  274. package/dist/_virtual/xstate-actions.cjs.js +0 -5
  275. package/dist/_virtual/xstate-actions.cjs2.js +0 -3
  276. package/dist/_virtual/xstate-dev.cjs.js +0 -3
  277. package/dist/_virtual/xstate-guards.cjs.js +0 -5
  278. package/dist/_virtual/xstate-guards.cjs2.js +0 -3
  279. package/dist/_virtual/xstate-store-react.cjs.js +0 -5
  280. package/dist/_virtual/xstate-store-react.cjs2.js +0 -3
  281. 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
  282. 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
  283. 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
  284. 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
  285. 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
  286. 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
  287. 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
  288. 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
  289. 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
  290. 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
  291. 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
  292. 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
  293. 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
  294. 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
  295. 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
  296. 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
  297. 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
  298. 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
  299. 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
  300. 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
  301. 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
  302. 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
  303. 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
  304. 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
  305. 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
  306. 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
  307. 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
  308. 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
  309. 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
  310. 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
  311. 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
  312. 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
  313. 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
  314. 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
  315. 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
  316. 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
  317. 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
  318. 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
  319. 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
  320. 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
  321. 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
  322. 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
  323. 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
  324. 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
  325. 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
  326. 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
  327. 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
  328. 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
  329. 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
  330. 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
  331. 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
  332. 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
  333. 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
  334. 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
  335. 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
  336. package/dist/node_modules/.pnpm/xstate@5.30.0/node_modules/xstate/actions/dist/xstate-actions.cjs.js +0 -37
  337. package/dist/node_modules/.pnpm/xstate@5.30.0/node_modules/xstate/dev/dist/xstate-dev.cjs.js +0 -59
  338. package/dist/node_modules/.pnpm/xstate@5.30.0/node_modules/xstate/dist/assign-f10db67b.cjs.js +0 -140
  339. package/dist/node_modules/.pnpm/xstate@5.30.0/node_modules/xstate/dist/log-30abbb83.cjs.js +0 -401
  340. package/dist/node_modules/.pnpm/xstate@5.30.0/node_modules/xstate/dist/raise-f051f097.cjs.js +0 -2830
  341. package/dist/node_modules/.pnpm/xstate@5.30.0/node_modules/xstate/guards/dist/xstate-guards.cjs.js +0 -26
  342. package/dist/styles-font.css2.js +0 -3
  343. 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 };