@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,502 +1,390 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { VIEW_FOLDERS_SEPARATOR, normalizeViewPath } from '@likec4/core/model';
3
- import { ifilter, ifirst, toArray, compareNaturalHierarchically, nonexhaustive } from '@likec4/core/utils';
4
- import { css, cx } from '@likec4/styles/css';
5
- import { HStack, VStack, Box } from '@likec4/styles/jsx';
6
- import { vstack, hstack } from '@likec4/styles/patterns';
7
- import { PopoverDropdown, ScrollAreaAutosize, Input, Button, rem, Divider, createScopedKeydownHandler, Highlight, UnstyledButton, Breadcrumbs } from '@mantine/core';
8
- import { useThrottledCallback, useUncontrolled } from '@mantine/hooks';
9
- import { useMountEffect } from '@react-hookz/web';
10
- import { useSelector } from '@xstate/react';
11
- import { shallowEqual, deepEqual } from 'fast-equals';
12
- import { memo, useDeferredValue, useState, useEffect, useRef } from 'react';
13
- import { isEmpty, pipe, sort, isArray } from 'remeda';
14
- import { NavigationLink } from '../components/NavigationLink.js';
15
- import { useOnDiagramEvent } from '../hooks/useDiagram.js';
16
- import { useLikeC4Model } from '../hooks/useLikeC4Model.js';
17
- import { ProjectsMenu } from './dropdown/ProjectsMenu.js';
18
- import { useNavigationActor, useNavigationActorSnapshot, useNavigationActorContext, useNavigationActorRef } from './hooks.js';
19
- import { breadcrumbTitle } from './styles.css.js';
20
- import IconSearch from '../node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconSearch.js';
21
- import IconDirectionSignFilled from '../node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconDirectionSignFilled.js';
22
- import IconStack2 from '../node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconStack2.js';
23
- import IconZoomScan from '../node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconZoomScan.js';
24
- import IconStarFilled from '../node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconStarFilled.js';
25
- import IconFolderFilled from '../node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconFolderFilled.js';
26
- import IconChevronRight from '../node_modules/.pnpm/@tabler_icons-react@3.40.0_react@19.2.4/node_modules/@tabler/icons-react/dist/esm/icons/IconChevronRight.js';
27
-
28
- const scopedKeydownHandler = createScopedKeydownHandler({
29
- siblingSelector: "[data-likec4-focusable]",
30
- parentSelector: "[data-likec4-breadcrumbs-dropdown]",
31
- activateOnFocus: false,
32
- loop: true,
33
- orientation: "vertical"
1
+ import "../_virtual/_rolldown/runtime.js";
2
+ import { useOnDiagramEvent } from "../hooks/useDiagram.js";
3
+ import { useLikeC4Model } from "../hooks/useLikeC4Model.js";
4
+ import { useNavigationActor, useNavigationActorContext, useNavigationActorRef, useNavigationActorSnapshot } from "./hooks.js";
5
+ import { breadcrumbTitle } from "./styles.css.js";
6
+ import { NavigationLink } from "../components/NavigationLink.js";
7
+ import { ProjectsMenu } from "./dropdown/ProjectsMenu.js";
8
+ import { css, cx } from "@likec4/styles/css";
9
+ import { IconChevronRight, IconDirectionSignFilled, IconFolderFilled, IconSearch, IconStack2, IconStarFilled, IconZoomScan } from "@tabler/icons-react";
10
+ import { memo, useDeferredValue, useEffect, useRef, useState } from "react";
11
+ import { jsx, jsxs } from "react/jsx-runtime";
12
+ import { useMountEffect } from "@react-hookz/web";
13
+ import { deepEqual, shallowEqual } from "fast-equals";
14
+ import { isArray, isEmpty, pipe, sort } from "remeda";
15
+ import { Breadcrumbs, Button, Divider, Highlight, Input, PopoverDropdown, ScrollAreaAutosize, UnstyledButton, createScopedKeydownHandler, rem } from "@mantine/core";
16
+ import { compareNaturalHierarchically, ifilter, ifirst, nonexhaustive, toArray } from "@likec4/core/utils";
17
+ import { useSelector } from "@xstate/react";
18
+ import { useThrottledCallback, useUncontrolled } from "@mantine/hooks";
19
+ import { Box as Box$1, HStack, VStack } from "@likec4/styles/jsx";
20
+ import { hstack, vstack } from "@likec4/styles/patterns";
21
+ import { VIEW_FOLDERS_SEPARATOR, normalizeViewPath } from "@likec4/core/model";
22
+ //#region src/navigationpanel/NavigationPanelDropdown.tsx
23
+ var scopedKeydownHandler = createScopedKeydownHandler({
24
+ siblingSelector: "[data-likec4-focusable]",
25
+ parentSelector: "[data-likec4-breadcrumbs-dropdown]",
26
+ activateOnFocus: false,
27
+ loop: true,
28
+ orientation: "vertical"
34
29
  });
35
30
  function hasSearchQuerySelector(s) {
36
- return s.context.searchQuery.trim().length >= 2;
31
+ return s.context.searchQuery.trim().length >= 2;
37
32
  }
38
- const NavigationPanelDropdown = memo(() => {
39
- const actor = useNavigationActor();
40
- const hasSearchQuery = useNavigationActorSnapshot(hasSearchQuerySelector);
41
- useOnDiagramEvent("paneClick", () => {
42
- actor.closeDropdown();
43
- });
44
- useOnDiagramEvent("nodeClick", () => {
45
- actor.closeDropdown();
46
- });
47
- useOnDiagramEvent("edgeClick", () => {
48
- actor.closeDropdown();
49
- });
50
- const setSearchQuery = useThrottledCallback((value) => {
51
- actor.send({ type: "searchQuery.change", value });
52
- }, 250);
53
- return /* @__PURE__ */ jsxs(
54
- PopoverDropdown,
55
- {
56
- className: cx(
57
- "nowheel",
58
- vstack({
59
- layerStyle: "likec4.dropdown",
60
- gap: "xs",
61
- pointerEvents: "all"
62
- })
63
- ),
64
- "data-likec4-breadcrumbs-dropdown": true,
65
- onMouseLeave: () => actor.send({ type: "dropdown.mouseLeave" }),
66
- onMouseEnter: () => actor.send({ type: "dropdown.mouseEnter" }),
67
- children: [
68
- /* @__PURE__ */ jsx(ProjectsMenu, {}),
69
- /* @__PURE__ */ jsx(HStack, { gap: "xs", children: /* @__PURE__ */ jsx(
70
- SearchInput,
71
- {
72
- defaultValue: actor.actorRef.getSnapshot().context.searchQuery,
73
- onChange: setSearchQuery
74
- }
75
- ) }),
76
- /* @__PURE__ */ jsx(
77
- ScrollAreaAutosize,
78
- {
79
- scrollbars: "x",
80
- type: "auto",
81
- offsetScrollbars: "present",
82
- classNames: {
83
- root: css({
84
- maxWidth: [
85
- "calc(100vw - 50px)",
86
- "calc(100cqw - 50px)"
87
- ]
88
- })
89
- },
90
- styles: {
91
- viewport: {
92
- overscrollBehavior: "none"
93
- }
94
- },
95
- children: hasSearchQuery ? /* @__PURE__ */ jsx(SearchResults, {}) : /* @__PURE__ */ jsx(FolderColumns, {})
96
- }
97
- )
98
- ]
99
- }
100
- );
33
+ var NavigationPanelDropdown = memo(() => {
34
+ const actor = useNavigationActor();
35
+ const hasSearchQuery = useNavigationActorSnapshot(hasSearchQuerySelector);
36
+ useOnDiagramEvent("paneClick", () => {
37
+ actor.closeDropdown();
38
+ });
39
+ useOnDiagramEvent("nodeClick", () => {
40
+ actor.closeDropdown();
41
+ });
42
+ useOnDiagramEvent("edgeClick", () => {
43
+ actor.closeDropdown();
44
+ });
45
+ const setSearchQuery = useThrottledCallback((value) => {
46
+ actor.send({
47
+ type: "searchQuery.change",
48
+ value
49
+ });
50
+ }, 250);
51
+ return /* @__PURE__ */ jsxs(PopoverDropdown, {
52
+ className: cx("nowheel", vstack({
53
+ layerStyle: "likec4.dropdown",
54
+ gap: "xs",
55
+ pointerEvents: "all"
56
+ })),
57
+ "data-likec4-breadcrumbs-dropdown": true,
58
+ onMouseLeave: () => actor.send({ type: "dropdown.mouseLeave" }),
59
+ onMouseEnter: () => actor.send({ type: "dropdown.mouseEnter" }),
60
+ children: [
61
+ /* @__PURE__ */ jsx(ProjectsMenu, {}),
62
+ /* @__PURE__ */ jsx(HStack, {
63
+ gap: "xs",
64
+ children: /* @__PURE__ */ jsx(SearchInput, {
65
+ defaultValue: actor.actorRef.getSnapshot().context.searchQuery,
66
+ onChange: setSearchQuery
67
+ })
68
+ }),
69
+ /* @__PURE__ */ jsx(ScrollAreaAutosize, {
70
+ scrollbars: "x",
71
+ type: "auto",
72
+ offsetScrollbars: "present",
73
+ classNames: { root: css({ maxWidth: ["calc(100vw - 50px)", "calc(100cqw - 50px)"] }) },
74
+ styles: { viewport: { overscrollBehavior: "none" } },
75
+ children: hasSearchQuery ? /* @__PURE__ */ jsx(SearchResults, {}) : /* @__PURE__ */ jsx(FolderColumns, {})
76
+ })
77
+ ]
78
+ });
101
79
  });
102
80
  NavigationPanelDropdown.displayName = "NavigationPanelDropdown";
103
81
  function selectSearchQuery(s) {
104
- return normalizeViewPath(s.context.searchQuery);
82
+ return normalizeViewPath(s.context.searchQuery);
105
83
  }
106
- const compare = compareNaturalHierarchically(VIEW_FOLDERS_SEPARATOR);
107
- const SearchResults = memo(() => {
108
- const likec4model = useLikeC4Model();
109
- const actor = useNavigationActor();
110
- const searchQuery = useSelector(actor.actorRef, selectSearchQuery);
111
- const deferredSearchQuery = useDeferredValue(searchQuery);
112
- const isSearchByPath = deferredSearchQuery.includes(VIEW_FOLDERS_SEPARATOR);
113
- const highlight = isSearchByPath ? deferredSearchQuery.split(VIEW_FOLDERS_SEPARATOR) : deferredSearchQuery;
114
- const [found, setFound] = useState([]);
115
- useEffect(() => {
116
- setFound((current) => {
117
- const results = pipe(
118
- likec4model.views(),
119
- ifilter((v) => {
120
- if (isSearchByPath && v.$view.title) {
121
- return normalizeViewPath(v.$view.title).toLowerCase().includes(deferredSearchQuery);
122
- }
123
- return v.id.toLowerCase().includes(deferredSearchQuery) || !!v.title?.toLowerCase().includes(deferredSearchQuery);
124
- }),
125
- ifirst(20),
126
- toArray(),
127
- sort((a, b) => compare(a.folder.path, b.folder.path))
128
- );
129
- return shallowEqual(results, current) ? current : results;
130
- });
131
- }, [likec4model, deferredSearchQuery, isSearchByPath]);
132
- if (found.length === 0) return /* @__PURE__ */ jsx("div", { children: "no results" });
133
- return /* @__PURE__ */ jsx(
134
- ScrollAreaAutosize,
135
- {
136
- scrollbars: "xy",
137
- offsetScrollbars: false,
138
- className: css({
139
- width: "100%",
140
- maxWidth: [
141
- "calc(100vw - 250px)",
142
- "calc(100cqw - 250px)"
143
- ],
144
- maxHeight: [
145
- "calc(100vh - 200px)",
146
- "calc(100cqh - 200px)"
147
- ]
148
- }),
149
- children: /* @__PURE__ */ jsx(VStack, { gap: "0.5", children: found.map((v) => /* @__PURE__ */ jsx(
150
- FoundedView,
151
- {
152
- view: v,
153
- highlight,
154
- onClick: (e) => {
155
- e.stopPropagation();
156
- actor.selectView(v.id);
157
- },
158
- "data-likec4-focusable": true,
159
- onKeyDown: scopedKeydownHandler
160
- },
161
- v.id
162
- )) })
163
- }
164
- );
84
+ var compare = compareNaturalHierarchically(VIEW_FOLDERS_SEPARATOR);
85
+ var SearchResults = memo(() => {
86
+ const likec4model = useLikeC4Model();
87
+ const actor = useNavigationActor();
88
+ const deferredSearchQuery = useDeferredValue(useSelector(actor.actorRef, selectSearchQuery));
89
+ const isSearchByPath = deferredSearchQuery.includes(VIEW_FOLDERS_SEPARATOR);
90
+ const highlight = isSearchByPath ? deferredSearchQuery.split(VIEW_FOLDERS_SEPARATOR) : deferredSearchQuery;
91
+ const [found, setFound] = useState([]);
92
+ useEffect(() => {
93
+ setFound((current) => {
94
+ const results = pipe(likec4model.views(), ifilter((v) => {
95
+ if (isSearchByPath && v.$view.title) return normalizeViewPath(v.$view.title).toLowerCase().includes(deferredSearchQuery);
96
+ return v.id.toLowerCase().includes(deferredSearchQuery) || !!v.title?.toLowerCase().includes(deferredSearchQuery);
97
+ }), ifirst(20), toArray(), sort((a, b) => compare(a.folder.path, b.folder.path)));
98
+ return shallowEqual(results, current) ? current : results;
99
+ });
100
+ }, [
101
+ likec4model,
102
+ deferredSearchQuery,
103
+ isSearchByPath
104
+ ]);
105
+ if (found.length === 0) return /* @__PURE__ */ jsx("div", { children: "no results" });
106
+ return /* @__PURE__ */ jsx(ScrollAreaAutosize, {
107
+ scrollbars: "xy",
108
+ offsetScrollbars: false,
109
+ className: css({
110
+ width: "100%",
111
+ maxWidth: ["calc(100vw - 250px)", "calc(100cqw - 250px)"],
112
+ maxHeight: ["calc(100vh - 200px)", "calc(100cqh - 200px)"]
113
+ }),
114
+ children: /* @__PURE__ */ jsx(VStack, {
115
+ gap: "0.5",
116
+ children: found.map((v) => /* @__PURE__ */ jsx(FoundedView, {
117
+ view: v,
118
+ highlight,
119
+ onClick: (e) => {
120
+ e.stopPropagation();
121
+ actor.selectView(v.id);
122
+ },
123
+ "data-likec4-focusable": true,
124
+ onKeyDown: scopedKeydownHandler
125
+ }, v.id))
126
+ })
127
+ });
165
128
  });
166
- const foundedViewClass = hstack({
167
- gap: "xxs",
168
- rounded: "sm",
169
- px: "xs",
170
- py: "xxs",
171
- _hover: {
172
- backgroundColor: {
173
- base: "mantine.colors.gray[1]",
174
- _dark: "mantine.colors.dark[5]"
175
- }
176
- },
177
- _focus: {
178
- outline: "none",
179
- color: "mantine.colors.primary.lightColor!",
180
- backgroundColor: "mantine.colors.primary.lightHover!"
181
- }
182
- });
183
- const inheritColor = css({
184
- _groupFocus: {
185
- color: "[inherit!]",
186
- transition: "none"
187
- }
129
+ var foundedViewClass = hstack({
130
+ gap: "xxs",
131
+ rounded: "sm",
132
+ px: "xs",
133
+ py: "xxs",
134
+ _hover: { backgroundColor: {
135
+ base: "mantine.colors.gray[1]",
136
+ _dark: "mantine.colors.dark[5]"
137
+ } },
138
+ _focus: {
139
+ outline: "none",
140
+ color: "mantine.colors.primary.lightColor!",
141
+ backgroundColor: "mantine.colors.primary.lightHover!"
142
+ }
188
143
  });
144
+ var inheritColor = css({ _groupFocus: {
145
+ color: "[inherit!]",
146
+ transition: "none"
147
+ } });
189
148
  function FoundedView({ view, highlight, ...props }) {
190
- const folder = view.folder;
191
- const viewIcon = ViewTypeIcon[view.id === "index" ? "index" : view._type];
192
- const viewLabel = /* @__PURE__ */ jsx(
193
- Highlight,
194
- {
195
- component: "div",
196
- className: cx(
197
- inheritColor,
198
- breadcrumbTitle({ truncate: true }),
199
- css({
200
- "& > mark": {
201
- backgroundColor: {
202
- base: "mantine.colors.yellow[2]/90",
203
- _dark: "mantine.colors.yellow[5]/80",
204
- _groupFocus: "[transparent]"
205
- },
206
- color: {
207
- _groupFocus: "[inherit!]"
208
- }
209
- }
210
- })
211
- ),
212
- maw: 350,
213
- highlight,
214
- children: view.title ?? view.id
215
- },
216
- view.id
217
- );
218
- const className = cx(
219
- props.className,
220
- "group",
221
- foundedViewClass
222
- );
223
- if (folder.isRoot) {
224
- return /* @__PURE__ */ jsxs(
225
- UnstyledButton,
226
- {
227
- ...props,
228
- className,
229
- children: [
230
- viewIcon,
231
- viewLabel
232
- ]
233
- }
234
- );
235
- }
236
- const breadcrumbs = folder.breadcrumbs.map((b) => /* @__PURE__ */ jsx(
237
- Highlight,
238
- {
239
- component: "div",
240
- className: cx(
241
- css({
242
- _groupHover: {
243
- color: "text.dimmed"
244
- }
245
- }),
246
- inheritColor,
247
- breadcrumbTitle({ dimmed: true, truncate: true })
248
- ),
249
- maw: 170,
250
- highlight: isArray(highlight) ? highlight : [],
251
- children: b.title
252
- },
253
- b.path
254
- ));
255
- breadcrumbs.push(
256
- /* @__PURE__ */ jsxs(HStack, { gap: "[4px]", children: [
257
- viewIcon,
258
- viewLabel
259
- ] })
260
- );
261
- return /* @__PURE__ */ jsxs(
262
- UnstyledButton,
263
- {
264
- ...props,
265
- className,
266
- children: [
267
- folderIcon,
268
- /* @__PURE__ */ jsx(Breadcrumbs, { separator: btnRightSection, separatorMargin: 3, children: breadcrumbs })
269
- ]
270
- }
271
- );
149
+ const folder = view.folder;
150
+ const viewIcon = ViewTypeIcon[view.id === "index" ? "index" : view._type];
151
+ const viewLabel = /* @__PURE__ */ jsx(Highlight, {
152
+ component: "div",
153
+ className: cx(inheritColor, breadcrumbTitle({ truncate: true }), css({ "& > mark": {
154
+ backgroundColor: {
155
+ base: "mantine.colors.yellow[2]/90",
156
+ _dark: "mantine.colors.yellow[5]/80",
157
+ _groupFocus: "[transparent]"
158
+ },
159
+ color: { _groupFocus: "[inherit!]" }
160
+ } })),
161
+ maw: 350,
162
+ highlight,
163
+ children: view.title ?? view.id
164
+ }, view.id);
165
+ const className = cx(props.className, "group", foundedViewClass);
166
+ if (folder.isRoot) return /* @__PURE__ */ jsxs(UnstyledButton, {
167
+ ...props,
168
+ className,
169
+ children: [viewIcon, viewLabel]
170
+ });
171
+ const breadcrumbs = folder.breadcrumbs.map((b) => /* @__PURE__ */ jsx(Highlight, {
172
+ component: "div",
173
+ className: cx(css({ _groupHover: { color: "text.dimmed" } }), inheritColor, breadcrumbTitle({
174
+ dimmed: true,
175
+ truncate: true
176
+ })),
177
+ maw: 170,
178
+ highlight: isArray(highlight) ? highlight : [],
179
+ children: b.title
180
+ }, b.path));
181
+ breadcrumbs.push(/* @__PURE__ */ jsxs(HStack, {
182
+ gap: "[4px]",
183
+ children: [viewIcon, viewLabel]
184
+ }));
185
+ return /* @__PURE__ */ jsxs(UnstyledButton, {
186
+ ...props,
187
+ className,
188
+ children: [folderIcon, /* @__PURE__ */ jsx(Breadcrumbs, {
189
+ separator: btnRightSection,
190
+ separatorMargin: 3,
191
+ children: breadcrumbs
192
+ })]
193
+ });
272
194
  }
273
- const btnRightSection = /* @__PURE__ */ jsx(IconChevronRight, { size: 12, stroke: 1.5, className: "mantine-rotate-rtl" });
274
- const folderIcon = /* @__PURE__ */ jsx(
275
- IconFolderFilled,
276
- {
277
- size: 16,
278
- className: css({
279
- opacity: {
280
- base: 0.3,
281
- _groupHover: 0.5,
282
- _groupActive: 0.5,
283
- _groupFocus: 0.5
284
- }
285
- })
286
- }
287
- );
288
- const viewTypeIconCss = css({
289
- opacity: {
290
- base: 0.3,
291
- _dark: 0.5,
292
- _groupHover: 0.8,
293
- _groupActive: 0.8,
294
- _groupFocus: 0.8
295
- }
195
+ var btnRightSection = /* @__PURE__ */ jsx(IconChevronRight, {
196
+ size: 12,
197
+ stroke: 1.5,
198
+ className: "mantine-rotate-rtl"
199
+ });
200
+ var folderIcon = /* @__PURE__ */ jsx(IconFolderFilled, {
201
+ size: 16,
202
+ className: css({ opacity: {
203
+ base: .3,
204
+ _groupHover: .5,
205
+ _groupActive: .5,
206
+ _groupFocus: .5
207
+ } })
296
208
  });
297
- const ViewTypeIcon = {
298
- index: /* @__PURE__ */ jsx(IconStarFilled, { size: 16, className: viewTypeIconCss }),
299
- element: /* @__PURE__ */ jsx(
300
- IconZoomScan,
301
- {
302
- size: 18,
303
- stroke: 2,
304
- className: viewTypeIconCss
305
- }
306
- ),
307
- deployment: /* @__PURE__ */ jsx(IconStack2, { size: 16, stroke: 1.5, className: viewTypeIconCss }),
308
- dynamic: /* @__PURE__ */ jsx(IconDirectionSignFilled, { size: 18, className: viewTypeIconCss })
209
+ var viewTypeIconCss = css({ opacity: {
210
+ base: .3,
211
+ _dark: .5,
212
+ _groupHover: .8,
213
+ _groupActive: .8,
214
+ _groupFocus: .8
215
+ } });
216
+ var ViewTypeIcon = {
217
+ index: /* @__PURE__ */ jsx(IconStarFilled, {
218
+ size: 16,
219
+ className: viewTypeIconCss
220
+ }),
221
+ element: /* @__PURE__ */ jsx(IconZoomScan, {
222
+ size: 18,
223
+ stroke: 2,
224
+ className: viewTypeIconCss
225
+ }),
226
+ deployment: /* @__PURE__ */ jsx(IconStack2, {
227
+ size: 16,
228
+ stroke: 1.5,
229
+ className: viewTypeIconCss
230
+ }),
231
+ dynamic: /* @__PURE__ */ jsx(IconDirectionSignFilled, {
232
+ size: 18,
233
+ className: viewTypeIconCss
234
+ })
309
235
  };
310
- const ColumnScrollArea = ScrollAreaAutosize.withProps({
311
- scrollbars: "y",
312
- className: css({
313
- maxHeight: [
314
- "calc(100vh - 160px)",
315
- "calc(100cqh - 160px)"
316
- ]
317
- })
236
+ var ColumnScrollArea = ScrollAreaAutosize.withProps({
237
+ scrollbars: "y",
238
+ className: css({ maxHeight: ["calc(100vh - 160px)", "calc(100cqh - 160px)"] })
318
239
  });
319
240
  function folderColumn(folder, context) {
320
- return {
321
- folderPath: folder.path,
322
- items: [
323
- ...folder.folders.map((s) => ({
324
- type: "folder",
325
- folderPath: s.path,
326
- title: s.title,
327
- selected: context.selectedFolder.startsWith(s.path)
328
- })),
329
- ...folder.views.map((s) => ({
330
- type: "view",
331
- viewType: s.id === "index" ? "index" : s._type,
332
- viewId: s.id,
333
- title: s.title ?? s.id,
334
- description: s.description.nonEmpty && s.description.text || null,
335
- selected: s.id === context.viewModel?.id
336
- }))
337
- ]
338
- };
241
+ return {
242
+ folderPath: folder.path,
243
+ items: [...folder.folders.map((s) => ({
244
+ type: "folder",
245
+ folderPath: s.path,
246
+ title: s.title,
247
+ selected: context.selectedFolder.startsWith(s.path)
248
+ })), ...folder.views.map((s) => ({
249
+ type: "view",
250
+ viewType: s.id === "index" ? "index" : s._type,
251
+ viewId: s.id,
252
+ title: s.title ?? s.id,
253
+ description: s.description.nonEmpty && s.description.text || null,
254
+ selected: s.id === context.viewModel?.id
255
+ }))]
256
+ };
339
257
  }
340
- const selectColumns = (context) => {
341
- const viewModel = context.viewModel;
342
- if (!viewModel) {
343
- return [];
344
- }
345
- const likec4model = viewModel.$model;
346
- const columns = [
347
- folderColumn(likec4model.rootViewFolder, context)
348
- ];
349
- const folder = likec4model.viewFolder(context.selectedFolder);
350
- if (!folder.isRoot) {
351
- for (const b of folder.breadcrumbs) {
352
- columns.push(folderColumn(b, context));
353
- }
354
- }
355
- return columns;
258
+ var selectColumns = (context) => {
259
+ const viewModel = context.viewModel;
260
+ if (!viewModel) return [];
261
+ const likec4model = viewModel.$model;
262
+ const columns = [folderColumn(likec4model.rootViewFolder, context)];
263
+ const folder = likec4model.viewFolder(context.selectedFolder);
264
+ if (!folder.isRoot) for (const b of folder.breadcrumbs) columns.push(folderColumn(b, context));
265
+ return columns;
356
266
  };
357
- const FolderColumns = memo(() => {
358
- const columns = useNavigationActorContext(selectColumns, deepEqual);
359
- return /* @__PURE__ */ jsx(HStack, { gap: "xs", alignItems: "stretch", children: columns.flatMap((column, i) => [
360
- i > 0 && /* @__PURE__ */ jsx(Divider, { orientation: "vertical" }, "divider" + i),
361
- /* @__PURE__ */ jsx(
362
- FolderColumn,
363
- {
364
- data: column,
365
- isLast: i > 0 && i == columns.length - 1
366
- },
367
- column.folderPath
368
- )
369
- ]) });
267
+ var FolderColumns = memo(() => {
268
+ const columns = useNavigationActorContext(selectColumns, deepEqual);
269
+ return /* @__PURE__ */ jsx(HStack, {
270
+ gap: "xs",
271
+ alignItems: "stretch",
272
+ children: columns.flatMap((column, i) => [i > 0 && /* @__PURE__ */ jsx(Divider, { orientation: "vertical" }, "divider" + i), /* @__PURE__ */ jsx(FolderColumn, {
273
+ data: column,
274
+ isLast: i > 0 && i == columns.length - 1
275
+ }, column.folderPath)])
276
+ });
370
277
  });
371
278
  function FolderColumn({ data, isLast }) {
372
- const ref = useRef(null);
373
- const actor = useNavigationActorRef();
374
- const onItemClicked = (item) => (e) => {
375
- e.stopPropagation();
376
- if (item.type === "folder") {
377
- actor.send({ type: "select.folder", folderPath: item.folderPath });
378
- } else {
379
- actor.send({ type: "select.view", viewId: item.viewId });
380
- }
381
- };
382
- useMountEffect(() => {
383
- if (isLast && ref.current) {
384
- ref.current.scrollIntoView({
385
- block: "nearest",
386
- inline: "nearest",
387
- behavior: "smooth"
388
- });
389
- }
390
- });
391
- return /* @__PURE__ */ jsx(Box, { mb: "1", ref, children: /* @__PURE__ */ jsx(ColumnScrollArea, { children: /* @__PURE__ */ jsx(VStack, { gap: "0.5", children: data.items.map((item, i) => /* @__PURE__ */ jsx(
392
- FolderColumnItem,
393
- {
394
- columnItem: item,
395
- onClick: onItemClicked(item)
396
- },
397
- `${data.folderPath}/${item.type}/${i}`
398
- )) }) }) });
279
+ const ref = useRef(null);
280
+ const actor = useNavigationActorRef();
281
+ const onItemClicked = (item) => (e) => {
282
+ e.stopPropagation();
283
+ if (item.type === "folder") actor.send({
284
+ type: "select.folder",
285
+ folderPath: item.folderPath
286
+ });
287
+ else actor.send({
288
+ type: "select.view",
289
+ viewId: item.viewId
290
+ });
291
+ };
292
+ useMountEffect(() => {
293
+ if (isLast && ref.current) ref.current.scrollIntoView({
294
+ block: "nearest",
295
+ inline: "nearest",
296
+ behavior: "smooth"
297
+ });
298
+ });
299
+ return /* @__PURE__ */ jsx(Box$1, {
300
+ mb: "1",
301
+ ref,
302
+ children: /* @__PURE__ */ jsx(ColumnScrollArea, { children: /* @__PURE__ */ jsx(VStack, {
303
+ gap: "0.5",
304
+ children: data.items.map((item, i) => /* @__PURE__ */ jsx(FolderColumnItem, {
305
+ columnItem: item,
306
+ onClick: onItemClicked(item)
307
+ }, `${data.folderPath}/${item.type}/${i}`))
308
+ }) })
309
+ });
399
310
  }
400
311
  function FolderColumnItem({ columnItem, ...props }) {
401
- switch (columnItem.type) {
402
- case "folder":
403
- return /* @__PURE__ */ jsx(
404
- NavigationLink,
405
- {
406
- variant: "light",
407
- active: columnItem.selected,
408
- label: columnItem.title,
409
- leftSection: folderIcon,
410
- rightSection: btnRightSection,
411
- maw: "300px",
412
- miw: "200px",
413
- ...props
414
- },
415
- columnItem.folderPath
416
- );
417
- case "view":
418
- return /* @__PURE__ */ jsx(
419
- NavigationLink,
420
- {
421
- variant: "filled",
422
- active: columnItem.selected,
423
- label: columnItem.title,
424
- description: columnItem.description,
425
- leftSection: ViewTypeIcon[columnItem.viewType],
426
- maw: "300px",
427
- miw: "200px",
428
- ...props
429
- },
430
- columnItem.viewId
431
- );
432
- default:
433
- nonexhaustive(columnItem);
434
- }
312
+ switch (columnItem.type) {
313
+ case "folder": return /* @__PURE__ */ jsx(NavigationLink, {
314
+ variant: "light",
315
+ active: columnItem.selected,
316
+ label: columnItem.title,
317
+ leftSection: folderIcon,
318
+ rightSection: btnRightSection,
319
+ maw: "300px",
320
+ miw: "200px",
321
+ ...props
322
+ }, columnItem.folderPath);
323
+ case "view": return /* @__PURE__ */ jsx(NavigationLink, {
324
+ variant: "filled",
325
+ active: columnItem.selected,
326
+ label: columnItem.title,
327
+ description: columnItem.description,
328
+ leftSection: ViewTypeIcon[columnItem.viewType],
329
+ maw: "300px",
330
+ miw: "200px",
331
+ ...props
332
+ }, columnItem.viewId);
333
+ default: nonexhaustive(columnItem);
334
+ }
435
335
  }
436
336
  function SearchInput(props) {
437
- const [_value, handleChange] = useUncontrolled({
438
- ...props,
439
- finalValue: ""
440
- });
441
- return /* @__PURE__ */ jsx(
442
- Input,
443
- {
444
- size: "xs",
445
- placeholder: "Search by title or id",
446
- variant: "unstyled",
447
- height: rem(26),
448
- value: _value,
449
- onKeyDown: scopedKeydownHandler,
450
- onChange: (e) => handleChange(e.currentTarget.value),
451
- "data-likec4-focusable": true,
452
- classNames: {
453
- wrapper: css({
454
- flexGrow: 1,
455
- backgroundColor: {
456
- base: "mantine.colors.gray[1]",
457
- _dark: "mantine.colors.dark[5]/80",
458
- _hover: {
459
- base: "mantine.colors.gray[2]",
460
- _dark: "mantine.colors.dark[4]"
461
- },
462
- _focus: {
463
- base: "mantine.colors.gray[2]",
464
- _dark: "mantine.colors.dark[4]"
465
- }
466
- },
467
- rounded: "sm"
468
- }),
469
- input: css({
470
- _placeholder: {
471
- color: "text.dimmed"
472
- },
473
- _focus: {
474
- outline: "none"
475
- }
476
- })
477
- },
478
- style: {
479
- ["--input-fz"]: "var(--mantine-font-size-sm)"
480
- },
481
- leftSection: /* @__PURE__ */ jsx(IconSearch, { size: 14 }),
482
- rightSectionPointerEvents: "all",
483
- rightSectionWidth: "min-content",
484
- rightSection: !props.value || isEmpty(props.value) ? null : /* @__PURE__ */ jsx(
485
- Button,
486
- {
487
- variant: "subtle",
488
- h: "100%",
489
- size: "compact-xs",
490
- color: "gray",
491
- onClick: (e) => {
492
- e.stopPropagation();
493
- handleChange("");
494
- },
495
- children: "clear"
496
- }
497
- )
498
- }
499
- );
337
+ const [_value, handleChange] = useUncontrolled({
338
+ ...props,
339
+ finalValue: ""
340
+ });
341
+ return /* @__PURE__ */ jsx(Input, {
342
+ size: "xs",
343
+ placeholder: "Search by title or id",
344
+ variant: "unstyled",
345
+ height: rem(26),
346
+ value: _value,
347
+ onKeyDown: scopedKeydownHandler,
348
+ onChange: (e) => handleChange(e.currentTarget.value),
349
+ "data-likec4-focusable": true,
350
+ classNames: {
351
+ wrapper: css({
352
+ flexGrow: 1,
353
+ backgroundColor: {
354
+ base: "mantine.colors.gray[1]",
355
+ _dark: "mantine.colors.dark[5]/80",
356
+ _hover: {
357
+ base: "mantine.colors.gray[2]",
358
+ _dark: "mantine.colors.dark[4]"
359
+ },
360
+ _focus: {
361
+ base: "mantine.colors.gray[2]",
362
+ _dark: "mantine.colors.dark[4]"
363
+ }
364
+ },
365
+ rounded: "sm"
366
+ }),
367
+ input: css({
368
+ _placeholder: { color: "text.dimmed" },
369
+ _focus: { outline: "none" }
370
+ })
371
+ },
372
+ style: { ["--input-fz"]: "var(--mantine-font-size-sm)" },
373
+ leftSection: /* @__PURE__ */ jsx(IconSearch, { size: 14 }),
374
+ rightSectionPointerEvents: "all",
375
+ rightSectionWidth: "min-content",
376
+ rightSection: !props.value || isEmpty(props.value) ? null : /* @__PURE__ */ jsx(Button, {
377
+ variant: "subtle",
378
+ h: "100%",
379
+ size: "compact-xs",
380
+ color: "gray",
381
+ onClick: (e) => {
382
+ e.stopPropagation();
383
+ handleChange("");
384
+ },
385
+ children: "clear"
386
+ })
387
+ });
500
388
  }
501
-
389
+ //#endregion
502
390
  export { NavigationPanelDropdown };