@likec4/diagram 1.55.1 → 1.57.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 (384) hide show
  1. package/dist/LikeC4Diagram.js +150 -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 +148 -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 +109 -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 +36 -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.d.ts +1 -1
  69. package/dist/context/DiagramFeatures.js +78 -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 +9 -19
  76. package/dist/context/RootContainerContext.js +14 -28
  77. package/dist/context/TagStylesContext.js +49 -57
  78. package/dist/custom/customNodes.js +224 -28
  79. package/dist/custom/index.d.ts +1 -1
  80. package/dist/custom/index.js +40 -40
  81. package/dist/editor/LikeC4EditorCallbacks.d.ts +5 -0
  82. package/dist/editor/LikeC4EditorCallbacks.js +4 -2
  83. package/dist/editor/LikeC4EditorProvider.js +32 -7
  84. package/dist/editor/actor/actions.d.ts +115 -0
  85. package/dist/editor/actor/actions.js +122 -0
  86. package/dist/editor/{hotkeyActor.d.ts → actor/hotkey.d.ts} +1 -1
  87. package/dist/editor/actor/hotkey.js +20 -0
  88. package/dist/editor/actor/machine.d.ts +11 -0
  89. package/dist/editor/actor/machine.js +22 -0
  90. package/dist/editor/{editorActor.setup.d.ts → actor/setup.d.ts} +13 -49
  91. package/dist/editor/actor/setup.js +35 -0
  92. package/dist/editor/actor/state.editor.d.ts +97 -0
  93. package/dist/editor/actor/state.editor.js +55 -0
  94. package/dist/editor/actor/state.sync-queue.d.ts +420 -0
  95. package/dist/editor/actor/state.sync-queue.js +235 -0
  96. package/dist/editor/actor/types.d.ts +59 -0
  97. package/dist/editor/actor/types.js +5 -0
  98. package/dist/editor/applyChangesToManualLayout.js +144 -163
  99. package/dist/editor/index.d.ts +2 -1
  100. package/dist/editor/useEditorActorLogic.d.ts +8 -2
  101. package/dist/editor/useEditorActorLogic.js +51 -43
  102. package/dist/hooks/safeContext.js +17 -17
  103. package/dist/hooks/useCallbackRef.js +18 -11
  104. package/dist/hooks/useCurrentView.js +16 -7
  105. package/dist/hooks/useCurrentViewModel.js +14 -9
  106. package/dist/hooks/useDiagram.js +60 -37
  107. package/dist/hooks/useDiagramCompareLayout.js +77 -81
  108. package/dist/hooks/useEditorActor.d.ts +4 -0
  109. package/dist/hooks/useEditorActor.js +26 -0
  110. package/dist/hooks/useId.js +8 -6
  111. package/dist/hooks/useLikeC4ElementsTree.d.ts +3 -2
  112. package/dist/hooks/useLikeC4ElementsTree.js +24 -21
  113. package/dist/hooks/useLikeC4Model.js +21 -20
  114. package/dist/hooks/useLikeC4Project.js +40 -29
  115. package/dist/hooks/useLikeC4Styles.js +6 -6
  116. package/dist/hooks/useMantinePortalProps.js +10 -6
  117. package/dist/hooks/useSetState.js +21 -19
  118. package/dist/hooks/useUpdateEffect.js +18 -29
  119. package/dist/hooks/useXYFlow.js +13 -15
  120. package/dist/index.js +24 -23
  121. package/dist/likec4diagram/DiagramUI.js +37 -37
  122. package/dist/likec4diagram/DiagramXYFlow.js +215 -224
  123. package/dist/likec4diagram/convert-to-xyflow.js +21 -22
  124. package/dist/likec4diagram/custom/edges/EdgeDrifts.js +22 -32
  125. package/dist/likec4diagram/custom/edges/RelationshipEdge.js +275 -372
  126. package/dist/likec4diagram/custom/edges/SequenceStepEdge.js +71 -75
  127. package/dist/likec4diagram/custom/edges/edges.css.js +41 -47
  128. package/dist/likec4diagram/custom/edges/useControlPoints.js +52 -56
  129. package/dist/likec4diagram/custom/edges/useRelationshipEdgePath.js +54 -76
  130. package/dist/likec4diagram/custom/index.js +17 -17
  131. package/dist/likec4diagram/custom/nodes/CompoundActions.js +19 -26
  132. package/dist/likec4diagram/custom/nodes/ElementActions.js +131 -82
  133. package/dist/likec4diagram/custom/nodes/NodeDrifts.js +20 -26
  134. package/dist/likec4diagram/custom/nodes/NodeNotes.js +215 -273
  135. package/dist/likec4diagram/custom/nodes/SequenceActorNode.js +131 -147
  136. package/dist/likec4diagram/custom/nodes/nodes.js +135 -146
  137. package/dist/likec4diagram/custom/nodes/toolbar/ColorButton.js +155 -159
  138. package/dist/likec4diagram/custom/nodes/toolbar/CompoundToolbar.js +58 -86
  139. package/dist/likec4diagram/custom/nodes/toolbar/ElementToolbar.js +108 -164
  140. package/dist/likec4diagram/custom/nodes/toolbar/Toolbar.js +56 -68
  141. package/dist/likec4diagram/custom/nodes/toolbar/_shared.d.ts +3 -6
  142. package/dist/likec4diagram/custom/nodes/toolbar/_shared.js +97 -102
  143. package/dist/likec4diagram/custom/nodes/toolbar/styles.css.js +13 -13
  144. package/dist/likec4diagram/custom/nodes/toolbar/types.js +6 -5
  145. package/dist/likec4diagram/custom/nodes/toolbar/useHandlers.js +36 -41
  146. package/dist/likec4diagram/relationship-popover/RelationshipPopover.js +510 -541
  147. package/dist/likec4diagram/relationship-popover/actor.js +113 -152
  148. package/dist/likec4diagram/relationship-popover/components.js +39 -43
  149. package/dist/likec4diagram/state/DiagramActorProvider.js +135 -136
  150. package/dist/likec4diagram/state/aligners.js +286 -360
  151. package/dist/likec4diagram/state/assign.js +84 -108
  152. package/dist/likec4diagram/state/createViewChange.js +72 -92
  153. package/dist/likec4diagram/state/diagram-api.d.ts +16 -0
  154. package/dist/likec4diagram/state/diagram-api.js +230 -152
  155. package/dist/likec4diagram/state/hotkeyActor.js +54 -45
  156. package/dist/likec4diagram/state/machine.actions.js +708 -821
  157. package/dist/likec4diagram/state/machine.actions.layout.js +154 -183
  158. package/dist/likec4diagram/state/machine.d.ts +1 -1
  159. package/dist/likec4diagram/state/machine.js +113 -134
  160. package/dist/likec4diagram/state/machine.setup.js +104 -113
  161. package/dist/likec4diagram/state/machine.state.initializing.js +54 -54
  162. package/dist/likec4diagram/state/machine.state.navigating.js +192 -227
  163. package/dist/likec4diagram/state/machine.state.ready.focused.js +72 -88
  164. package/dist/likec4diagram/state/machine.state.ready.idle.js +79 -98
  165. package/dist/likec4diagram/state/machine.state.ready.js +126 -202
  166. package/dist/likec4diagram/state/machine.state.ready.printing.js +38 -39
  167. package/dist/likec4diagram/state/machine.state.ready.walkthrough.js +153 -193
  168. package/dist/likec4diagram/state/mediaPrintActor.js +20 -16
  169. package/dist/likec4diagram/state/persistence.js +20 -21
  170. package/dist/likec4diagram/state/types.d.ts +1 -1
  171. package/dist/likec4diagram/state/utils.d.ts +1 -1
  172. package/dist/likec4diagram/state/utils.js +131 -162
  173. package/dist/likec4diagram/ui/LayoutDriftFrame.js +53 -64
  174. package/dist/likec4diagram/ui/notation/NotationPanel.css.js +58 -80
  175. package/dist/likec4diagram/ui/notation/NotationPanel.js +183 -214
  176. package/dist/likec4diagram/useLayoutConstraints.js +388 -433
  177. package/dist/likec4diagram/xyflow-diagram/diagram-view.js +216 -227
  178. package/dist/likec4diagram/xyflow-sequence/const.js +11 -7
  179. package/dist/likec4diagram/xyflow-sequence/sequence-layout.js +177 -180
  180. package/dist/navigationpanel/NavigationPanel.js +113 -123
  181. package/dist/navigationpanel/NavigationPanelControls.js +124 -150
  182. package/dist/navigationpanel/NavigationPanelDropdown.js +365 -477
  183. package/dist/navigationpanel/_common.d.ts +4 -10
  184. package/dist/navigationpanel/_common.js +57 -70
  185. package/dist/navigationpanel/actor.js +153 -236
  186. package/dist/navigationpanel/comparepanel/CompareActionsMenu.js +66 -83
  187. package/dist/navigationpanel/comparepanel/ComparePanel.js +135 -164
  188. package/dist/navigationpanel/comparepanel/ComparePanelControls.js +50 -58
  189. package/dist/navigationpanel/comparepanel/DriftsSummary.js +207 -254
  190. package/dist/navigationpanel/comparepanel/LayoutTypeSwitcher.js +33 -35
  191. package/dist/navigationpanel/controls/DetailsControls.js +219 -246
  192. package/dist/navigationpanel/controls/LayoutWarning.js +89 -100
  193. package/dist/navigationpanel/controls/LogoButton.js +46 -70
  194. package/dist/navigationpanel/controls/NavigationButtons.js +35 -52
  195. package/dist/navigationpanel/controls/OpenSource.js +27 -25
  196. package/dist/navigationpanel/controls/SearchControl.js +50 -61
  197. package/dist/navigationpanel/controls/ToggleReadonly.js +86 -81
  198. package/dist/navigationpanel/dropdown/ProjectsMenu.js +69 -87
  199. package/dist/navigationpanel/editorpanel/ApplySemanticLayout.d.ts +4 -0
  200. package/dist/navigationpanel/editorpanel/ApplySemanticLayout.js +36 -0
  201. package/dist/navigationpanel/editorpanel/CenterCamera.js +17 -13
  202. package/dist/navigationpanel/editorpanel/ChangeAutoLayoutButton.js +182 -154
  203. package/dist/navigationpanel/editorpanel/EditorPanel.js +59 -45
  204. package/dist/navigationpanel/editorpanel/ManualLayoutToolsButton.js +122 -173
  205. package/dist/navigationpanel/editorpanel/ToggleReadonly.js +20 -13
  206. package/dist/navigationpanel/editorpanel/_common.d.ts +3 -6
  207. package/dist/navigationpanel/editorpanel/_common.js +13 -13
  208. package/dist/navigationpanel/editorpanel/styles.js +58 -75
  209. package/dist/navigationpanel/hooks.js +35 -29
  210. package/dist/navigationpanel/styles.css.js +20 -28
  211. package/dist/navigationpanel/walkthrough/ActiveWalkthroughControls.js +107 -134
  212. package/dist/navigationpanel/walkthrough/DynamicViewControls.d.ts +65 -65
  213. package/dist/navigationpanel/walkthrough/DynamicViewControls.js +105 -120
  214. package/dist/navigationpanel/walkthrough/WalkthroughPanel.js +75 -83
  215. package/dist/overlays/Overlays.js +94 -112
  216. package/dist/overlays/element-details/ElementDetails.js +22 -28
  217. package/dist/overlays/element-details/ElementDetailsCard.css.js +198 -221
  218. package/dist/overlays/element-details/ElementDetailsCard.js +517 -499
  219. package/dist/overlays/element-details/MetadataValue.js +210 -250
  220. package/dist/overlays/element-details/TabPanelDeployments.css.js +40 -60
  221. package/dist/overlays/element-details/TabPanelDeployments.js +185 -178
  222. package/dist/overlays/element-details/TabPanelRelationships.css.js +63 -71
  223. package/dist/overlays/element-details/TabPanelRelationships.js +155 -140
  224. package/dist/overlays/element-details/TabPanelStructure.css.js +29 -33
  225. package/dist/overlays/element-details/TabPanelStructure.js +93 -93
  226. package/dist/overlays/element-details/actor.js +45 -55
  227. package/dist/overlays/element-details/actorContext.js +12 -10
  228. package/dist/overlays/overlay/Overlay.d.ts +16 -0
  229. package/dist/overlays/overlay/Overlay.js +102 -151
  230. package/dist/overlays/overlaysActor.js +215 -265
  231. package/dist/overlays/relationship-details/RelationshipDetails.js +270 -253
  232. package/dist/overlays/relationship-details/SelectEdge.css.js +62 -74
  233. package/dist/overlays/relationship-details/SelectEdge.js +146 -126
  234. package/dist/overlays/relationship-details/actor.js +242 -303
  235. package/dist/overlays/relationship-details/compute.js +109 -135
  236. package/dist/overlays/relationship-details/custom/ElementActions.js +43 -56
  237. package/dist/overlays/relationship-details/custom/edgeTypes.js +43 -49
  238. package/dist/overlays/relationship-details/custom/nodeTypes.d.ts +4 -5
  239. package/dist/overlays/relationship-details/custom/nodeTypes.js +96 -121
  240. package/dist/overlays/relationship-details/hooks.js +44 -38
  241. package/dist/overlays/relationship-details/layout-to-xyflow.js +119 -141
  242. package/dist/overlays/relationship-details/layout.js +275 -304
  243. package/dist/overlays/relationships-browser/RelationshipsBrowser.js +319 -321
  244. package/dist/overlays/relationships-browser/SelectElement.css.js +18 -21
  245. package/dist/overlays/relationships-browser/SelectElement.js +192 -218
  246. package/dist/overlays/relationships-browser/actor.js +364 -462
  247. package/dist/overlays/relationships-browser/const.js +7 -6
  248. package/dist/overlays/relationships-browser/custom/ElementActions.js +60 -63
  249. package/dist/overlays/relationships-browser/custom/EmptyNode.js +25 -29
  250. package/dist/overlays/relationships-browser/custom/edgeTypes.js +66 -99
  251. package/dist/overlays/relationships-browser/custom/nodeTypes.js +98 -123
  252. package/dist/overlays/relationships-browser/hooks.js +49 -51
  253. package/dist/overlays/relationships-browser/layout.js +413 -465
  254. package/dist/overlays/relationships-browser/useViewToNodesEdges.js +141 -157
  255. package/dist/projects-overview/ProjectsOverview.js +56 -55
  256. package/dist/projects-overview/ProjectsOverviewXY.js +105 -94
  257. package/dist/projects-overview/actor.js +252 -345
  258. package/dist/projects-overview/context.js +8 -7
  259. package/dist/projects-overview/custom/edgeTypes.js +22 -21
  260. package/dist/projects-overview/custom/nodeTypes.js +38 -42
  261. package/dist/projects-overview/hooks.js +9 -9
  262. package/dist/projects-overview/layouted-to-xyflow.js +46 -42
  263. package/dist/projects-overview/panel/ProjectsOverviewPanel.js +7 -9
  264. package/dist/projects-overview/persistence.js +22 -22
  265. package/dist/search/Search.d.ts +6 -3
  266. package/dist/search/Search.js +189 -182
  267. package/dist/search/SearchContext.js +16 -15
  268. package/dist/search/XStateSearchAdapter.js +68 -62
  269. package/dist/search/components/ElementsColumn.css.js +50 -68
  270. package/dist/search/components/ElementsColumn.js +253 -291
  271. package/dist/search/components/PickView.js +116 -140
  272. package/dist/search/components/SearchByTags.js +76 -94
  273. package/dist/search/components/SearchInput.js +187 -209
  274. package/dist/search/components/ViewsColum.js +151 -141
  275. package/dist/search/components/ViewsColumn.css.js +12 -26
  276. package/dist/search/components/_shared.css.js +127 -153
  277. package/dist/search/components/styles.css.js +47 -53
  278. package/dist/search/components/utils.js +44 -47
  279. package/dist/search/hooks.js +10 -10
  280. package/dist/search/searchActor.js +97 -128
  281. package/dist/shadowroot/ShadowRoot.d.ts +7 -6
  282. package/dist/shadowroot/ShadowRoot.js +106 -79
  283. package/dist/shadowroot/styles.css.d.ts +10 -2
  284. package/dist/shadowroot/styles.css.js +56 -69
  285. package/dist/styles-font2.js +4 -0
  286. package/dist/styles2.js +4 -0
  287. package/dist/utils/index.js +5 -0
  288. package/dist/utils/roundDpr.js +19 -15
  289. package/dist/utils/view-bounds.js +48 -55
  290. package/dist/utils/xyflow.js +143 -113
  291. package/package.json +18 -25
  292. package/panda.buildinfo.json +15 -15
  293. package/src/styles-font.css +114 -0
  294. package/src/styles-min.css +2 -0
  295. package/src/styles-xyflow.css +1 -0
  296. package/src/styles.css +3 -0
  297. package/styles-font.css +1 -1
  298. package/styles-min.css +1 -1
  299. package/styles-xyflow.css +1 -1
  300. package/styles.css +1 -1
  301. package/dist/_virtual/_commonjsHelpers.js +0 -3
  302. package/dist/_virtual/assign-f10db67b.cjs.js +0 -3
  303. package/dist/_virtual/log-30abbb83.cjs.js +0 -3
  304. package/dist/_virtual/raise-f051f097.cjs.js +0 -3
  305. package/dist/_virtual/store-cfe7da62.cjs.js +0 -3
  306. package/dist/_virtual/xstate-actions.cjs.js +0 -5
  307. package/dist/_virtual/xstate-actions.cjs2.js +0 -3
  308. package/dist/_virtual/xstate-dev.cjs.js +0 -3
  309. package/dist/_virtual/xstate-guards.cjs.js +0 -5
  310. package/dist/_virtual/xstate-guards.cjs2.js +0 -3
  311. package/dist/_virtual/xstate-store-react.cjs.js +0 -5
  312. package/dist/_virtual/xstate-store-react.cjs2.js +0 -3
  313. package/dist/bundle/index.d.ts +0 -1
  314. package/dist/editor/editorActor.actions.d.ts +0 -153
  315. package/dist/editor/editorActor.actions.js +0 -149
  316. package/dist/editor/editorActor.setup.js +0 -38
  317. package/dist/editor/editorActor.states.d.ts +0 -9
  318. package/dist/editor/editorActor.states.js +0 -273
  319. package/dist/editor/hotkeyActor.js +0 -19
  320. package/dist/hooks/useOverlaysActor.js +0 -10
  321. package/dist/hooks/useSearchActor.js +0 -10
  322. 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
  323. 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
  324. 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
  325. 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
  326. 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
  327. 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
  328. 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
  329. 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
  330. 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
  331. 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
  332. 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
  333. 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
  334. 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
  335. 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
  336. 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
  337. 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
  338. 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
  339. 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
  340. 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
  341. 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
  342. 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
  343. 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
  344. 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
  345. 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
  346. 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
  347. 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
  348. 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
  349. 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
  350. 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
  351. 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
  352. 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
  353. 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
  354. 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
  355. 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
  356. 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
  357. 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
  358. 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
  359. 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
  360. 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
  361. 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
  362. 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
  363. 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
  364. 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
  365. 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
  366. 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
  367. 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
  368. 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
  369. 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
  370. 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
  371. 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
  372. 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
  373. 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
  374. 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
  375. 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
  376. 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
  377. package/dist/node_modules/.pnpm/xstate@5.30.0/node_modules/xstate/actions/dist/xstate-actions.cjs.js +0 -37
  378. package/dist/node_modules/.pnpm/xstate@5.30.0/node_modules/xstate/dev/dist/xstate-dev.cjs.js +0 -59
  379. package/dist/node_modules/.pnpm/xstate@5.30.0/node_modules/xstate/dist/assign-f10db67b.cjs.js +0 -140
  380. package/dist/node_modules/.pnpm/xstate@5.30.0/node_modules/xstate/dist/log-30abbb83.cjs.js +0 -401
  381. package/dist/node_modules/.pnpm/xstate@5.30.0/node_modules/xstate/dist/raise-f051f097.cjs.js +0 -2830
  382. package/dist/node_modules/.pnpm/xstate@5.30.0/node_modules/xstate/guards/dist/xstate-guards.cjs.js +0 -26
  383. package/dist/styles-font.css2.js +0 -3
  384. package/dist/styles.css2.js +0 -3
@@ -1,47 +1,70 @@
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
+ if (!once || !wasCalled.current) try {
49
+ callbackRef(payload);
50
+ } catch (error) {
51
+ console.error(error);
52
+ }
53
+ wasCalled.current = true;
54
+ if (once) {
55
+ subscription?.unsubscribe();
56
+ subscription = null;
57
+ }
58
+ });
59
+ return () => {
60
+ subscription?.unsubscribe();
61
+ };
62
+ }, [
63
+ callbackRef,
64
+ actorRef,
65
+ event,
66
+ once
67
+ ]);
45
68
  }
46
-
47
- export { selectDiagramActor, selectDiagramActorContext, useDiagramActorRef, useDiagramContext, useDiagramSnapshot, useOnDiagramEvent };
69
+ //#endregion
70
+ 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: "change.latest-to-manual" });
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 };
@@ -0,0 +1,4 @@
1
+ import { EditorActorRef } from '../editor/actor/machine';
2
+ import { EditorActorStateTag } from '../editor/actor/types';
3
+ export declare function useEditorActorRef(): EditorActorRef | null;
4
+ export declare function useEditorActorStateHasTag(tag: EditorActorStateTag): boolean;
@@ -0,0 +1,26 @@
1
+ import "../_virtual/_rolldown/runtime.js";
2
+ import { selectDiagramActor, useDiagramSnapshot } from "./useDiagram.js";
3
+ import { useEffect, useState } from "react";
4
+ //#region src/hooks/useEditorActor.ts
5
+ var select = selectDiagramActor((s) => {
6
+ return s.children.editor ?? null;
7
+ });
8
+ function useEditorActorRef() {
9
+ return useDiagramSnapshot(select, Object.is);
10
+ }
11
+ function useEditorActorStateHasTag(tag) {
12
+ const editorActor = useEditorActorRef();
13
+ const [hasTag, setHasTag] = useState(() => editorActor?.getSnapshot().hasTag(tag) ?? false);
14
+ useEffect(() => {
15
+ const subscription = editorActor?.subscribe((snapshot) => {
16
+ setHasTag(snapshot.hasTag(tag));
17
+ });
18
+ return () => {
19
+ subscription?.unsubscribe();
20
+ setHasTag(false);
21
+ };
22
+ }, [editorActor, tag]);
23
+ return hasTag;
24
+ }
25
+ //#endregion
26
+ export { useEditorActorStateHasTag };
@@ -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,8 +1,10 @@
1
1
  import { Fqn, ViewId } from '@likec4/core/types';
2
- interface LikeC4ModelTreeNodeData {
2
+ import { TreeNodeData } from '@mantine/core';
3
+ export interface LikeC4ModelTreeNodeData extends TreeNodeData {
3
4
  label: string;
4
5
  value: Fqn;
5
6
  children: LikeC4ModelTreeNodeData[];
7
+ hasChildren: boolean;
6
8
  }
7
9
  export declare const sortByLabel: (a: LikeC4ModelTreeNodeData, b: LikeC4ModelTreeNodeData) => number;
8
10
  /**
@@ -10,4 +12,3 @@ export declare const sortByLabel: (a: LikeC4ModelTreeNodeData, b: LikeC4ModelTre
10
12
  * If `viewId` is provided, returns the tree of elements in the view.
11
13
  */
12
14
  export declare function useLikeC4ElementsTree(viewId?: ViewId): LikeC4ModelTreeNodeData[];
13
- export {};
@@ -1,25 +1,28 @@
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
+ const children = [...element.children()].map(buildNode).sort(sortByLabel);
9
+ return {
10
+ label: element.title || element.id,
11
+ value: element.id,
12
+ children,
13
+ hasChildren: children.length > 0
14
+ };
12
15
  }
16
+ /**
17
+ * Returns a tree of elements in the model.
18
+ * If `viewId` is provided, returns the tree of elements in the view.
19
+ */
13
20
  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]);
21
+ const model = useLikeC4Model();
22
+ return useMemo(() => {
23
+ if (viewId) return [...model.view(viewId).roots()].map(buildNode).sort(sortByLabel);
24
+ else return [...model.roots()].map(buildNode).sort(sortByLabel);
25
+ }, [model, viewId]);
23
26
  }
24
-
25
- export { sortByLabel, useLikeC4ElementsTree };
27
+ //#endregion
28
+ 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 };
@@ -1,45 +1,56 @@
1
- import { useOptionalLikeC4Model } from '../context/LikeC4ModelContext.js';
2
- import { useOptionalProjectsContext } from '../context/LikeC4ProjectsContext.js';
3
-
4
- const emptyProjects = [];
1
+ import "../_virtual/_rolldown/runtime.js";
2
+ import { useOptionalLikeC4Model } from "../context/LikeC4ModelContext.js";
3
+ import { useOptionalProjectsContext } from "../context/LikeC4ProjectsContext.js";
4
+ //#region src/hooks/useLikeC4Project.ts
5
+ var emptyProjects = [];
5
6
  function onProjectChange(id) {
6
- console.warn(`Triggered callback to change project to ${id}, but no <LikeC4ProjectsProvider/> found`);
7
+ console.warn(`Triggered callback to change project to ${id}, but no <LikeC4ProjectsProvider/> found`);
7
8
  }
8
- const emptyContext = {
9
- projects: emptyProjects,
10
- onProjectChange
9
+ var emptyContext = {
10
+ projects: emptyProjects,
11
+ onProjectChange
11
12
  };
12
13
  function useLikeC4ProjectsContext() {
13
- return useOptionalProjectsContext() ?? emptyContext;
14
+ return useOptionalProjectsContext() ?? emptyContext;
14
15
  }
16
+ /**
17
+ * @returns The list of available projects, or empty array if no projects are available.
18
+ */
15
19
  function useLikeC4Projects() {
16
- return useLikeC4ProjectsContext().projects;
20
+ return useLikeC4ProjectsContext().projects;
17
21
  }
22
+ /**
23
+ * @returns The callback to change current project, or a no-op if no LikeC4ProjectsProvider is found.
24
+ */
18
25
  function useChangeLikeC4Project() {
19
- return useLikeC4ProjectsContext().onProjectChange;
26
+ return useLikeC4ProjectsContext().onProjectChange;
20
27
  }
28
+ /**
29
+ * @returns True if there are more than one project available in the context.
30
+ */
21
31
  function useHasProjects() {
22
- const ctx = useOptionalProjectsContext();
23
- if (!ctx) {
24
- return false;
25
- }
26
- return ctx.projects.length > 1;
32
+ const ctx = useOptionalProjectsContext();
33
+ if (!ctx) return false;
34
+ return ctx.projects.length > 1;
27
35
  }
36
+ /**
37
+ * @returns Current project id, as provided by LikeC4Model
38
+ */
28
39
  function useLikeC4ProjectId() {
29
- const ctx = useOptionalLikeC4Model();
30
- if (!ctx) {
31
- throw new Error("No LikeC4ModelProvider found");
32
- }
33
- return ctx.projectId;
40
+ const ctx = useOptionalLikeC4Model();
41
+ if (!ctx) throw new Error("No LikeC4ModelProvider found");
42
+ return ctx.projectId;
34
43
  }
44
+ /**
45
+ * Returns current LikeC4 project.
46
+ * Requires LikeC4ModelProvider in the tree.
47
+ * Falls back to model's project if LikeC4ProjectsProvider is not available.
48
+ */
35
49
  function useLikeC4Project() {
36
- const modelCtx = useOptionalLikeC4Model();
37
- const projectsCtx = useOptionalProjectsContext();
38
- if (!modelCtx) {
39
- throw new Error("No LikeC4ModelProvider found");
40
- }
41
- const project = projectsCtx?.projects.find((p) => p.id === modelCtx.projectId);
42
- return project ?? modelCtx.project;
50
+ const modelCtx = useOptionalLikeC4Model();
51
+ const projectsCtx = useOptionalProjectsContext();
52
+ if (!modelCtx) throw new Error("No LikeC4ModelProvider found");
53
+ return projectsCtx?.projects.find((p) => p.id === modelCtx.projectId) ?? modelCtx.project;
43
54
  }
44
-
55
+ //#endregion
45
56
  export { useChangeLikeC4Project, useHasProjects, useLikeC4Project, useLikeC4ProjectId, useLikeC4Projects, useLikeC4ProjectsContext };
@@ -1,9 +1,9 @@
1
- import { LikeC4Styles } from '@likec4/core/styles';
2
- import { useOptionalLikeC4Model } from '../context/LikeC4ModelContext.js';
3
-
1
+ import "../_virtual/_rolldown/runtime.js";
2
+ import { useOptionalLikeC4Model } from "../context/LikeC4ModelContext.js";
3
+ import { LikeC4Styles } from "@likec4/core/styles";
4
+ //#region src/hooks/useLikeC4Styles.ts
4
5
  function useLikeC4Styles() {
5
- const model = useOptionalLikeC4Model();
6
- return model?.$styles ?? LikeC4Styles.DEFAULT;
6
+ return useOptionalLikeC4Model()?.$styles ?? LikeC4Styles.DEFAULT;
7
7
  }
8
-
8
+ //#endregion
9
9
  export { useLikeC4Styles };
@@ -1,9 +1,13 @@
1
- import { useMemo } from 'react';
2
- import { useRootContainerElement } from '../context/RootContainerContext.js';
3
-
1
+ import "../_virtual/_rolldown/runtime.js";
2
+ import { useRootContainerElement } from "../context/RootContainerContext.js";
3
+ import { useMemo } from "react";
4
+ //#region src/hooks/useMantinePortalProps.ts
4
5
  function useMantinePortalProps() {
5
- const target = useRootContainerElement();
6
- return useMemo(() => target ? { portalProps: { target }, withinPortal: true } : { withinPortal: false }, [target]);
6
+ const target = useRootContainerElement();
7
+ return useMemo(() => target ? {
8
+ portalProps: { target },
9
+ withinPortal: true
10
+ } : { withinPortal: false }, [target]);
7
11
  }
8
-
12
+ //#endregion
9
13
  export { useMantinePortalProps };
@@ -1,22 +1,24 @@
1
- import { shallowEqual } from 'fast-equals';
2
- import { useState, useRef, useCallback } from 'react';
3
-
1
+ import "../_virtual/_rolldown/runtime.js";
2
+ import { useCallback, useRef, useState } from "react";
3
+ import { shallowEqual } from "fast-equals";
4
+ //#region src/hooks/useSetState.ts
5
+ /**
6
+ * Differs from useState in that:
7
+ * - it uses custom equal function (shallowEqual by default) to determine whether the state has changed.
8
+ * - allows partial updates to the state
9
+ */
4
10
  function useSetState(initialState, equal) {
5
- const [state, _setState] = useState(initialState);
6
- const equalFn = equal ?? shallowEqual;
7
- const equalFnRef = useRef(equalFn);
8
- equalFnRef.current = equalFn;
9
- const setState = useCallback(
10
- (statePartial) => _setState((current) => {
11
- const next = {
12
- ...current,
13
- ...typeof statePartial === "function" ? statePartial(current) : statePartial
14
- };
15
- return equalFnRef.current(current, next) ? current : next;
16
- }),
17
- [_setState]
18
- );
19
- return [state, setState];
11
+ const [state, _setState] = useState(initialState);
12
+ const equalFn = equal ?? shallowEqual;
13
+ const equalFnRef = useRef(equalFn);
14
+ equalFnRef.current = equalFn;
15
+ return [state, useCallback((statePartial) => _setState((current) => {
16
+ const next = {
17
+ ...current,
18
+ ...typeof statePartial === "function" ? statePartial(current) : statePartial
19
+ };
20
+ return equalFnRef.current(current, next) ? current : next;
21
+ }), [_setState])];
20
22
  }
21
-
23
+ //#endregion
22
24
  export { useSetState };