likec4 1.60.0 → 1.61.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 (157) hide show
  1. package/README.md +2 -0
  2. package/__app__/codegen/react.mjs +4 -10
  3. package/__app__/codegen/webcomponent.mjs +5 -208
  4. package/__app__/index.html +15 -15
  5. package/__app__/src/aichat/index.mjs +1 -2
  6. package/__app__/src/chunks/AIChat.mjs +292 -117
  7. package/__app__/src/chunks/ErrorComponent.mjs +444 -0
  8. package/__app__/src/chunks/Header.mjs +269 -0
  9. package/__app__/src/chunks/ViewReact.mjs +438 -0
  10. package/__app__/src/chunks/find.mjs +38 -0
  11. package/__app__/src/chunks/hooks.mjs +18 -541
  12. package/__app__/src/chunks/libs/@tabler/icons-react.mjs +340 -0
  13. package/__app__/src/chunks/libs/@tanstack-ai.mjs +11101 -1797
  14. package/__app__/src/chunks/libs/@tanstack.mjs +4563 -3083
  15. package/__app__/src/chunks/libs/fast-equals.mjs +140 -71
  16. package/__app__/src/chunks/{es.mjs → libs/html-to-image.mjs} +16 -22
  17. package/__app__/src/chunks/libs/nanostores.mjs +4 -8
  18. package/__app__/src/chunks/libs/react-resizable-panels.mjs +2792 -0
  19. package/__app__/src/chunks/react.mjs +22 -0
  20. package/__app__/src/chunks/rolldown-runtime.mjs +3 -32
  21. package/__app__/src/chunks/router.mjs +106 -0
  22. package/__app__/src/chunks/scope.mjs +106 -0
  23. package/__app__/src/chunks/searchParams.mjs +29 -0
  24. package/__app__/src/chunks/single-index.mjs +465 -0
  25. package/__app__/src/chunks/styled-system.mjs +1916 -2946
  26. package/__app__/src/chunks/useAsync.mjs +69 -0
  27. package/__app__/src/chunks/useSyncedRef.mjs +16 -0
  28. package/__app__/src/components/ColorSchemeToggle.mjs +124 -0
  29. package/__app__/src/components/CopyToClipboard.mjs +53 -0
  30. package/__app__/src/components/ErrorComponent.mjs +1 -0
  31. package/__app__/src/components/NavigationPanel.mjs +63 -0
  32. package/__app__/src/components/NotFound.mjs +155 -0
  33. package/__app__/src/components/ViewOutlet.mjs +9 -0
  34. package/__app__/src/components/model-diff/CompareModelProvider.mjs +44 -0
  35. package/__app__/src/components/model-diff/ModelDiffPanel.mjs +179 -0
  36. package/__app__/src/components/model-diff/compare-model.mjs +76 -0
  37. package/__app__/src/components/model-diff/state.mjs +45 -0
  38. package/__app__/src/components/search/OverviewSearch.mjs +92 -0
  39. package/__app__/src/components/search/OverviewSearchAdapter.mjs +94 -0
  40. package/__app__/src/components/sidebar/DiagramTree.css.mjs +48 -0
  41. package/__app__/src/components/sidebar/DiagramsTree.mjs +304 -0
  42. package/__app__/src/components/sidebar/Drawer.mjs +178 -0
  43. package/__app__/src/components/sidebar/SidebarBurger.mjs +28 -0
  44. package/__app__/src/components/sidebar/data.mjs +94 -0
  45. package/__app__/src/components/sidebar/state.mjs +16 -0
  46. package/__app__/src/components/view-page/Header.mjs +1 -0
  47. package/__app__/src/components/view-page/SelectProject.mjs +258 -0
  48. package/__app__/src/components/view-page/ShareModal.mjs +111 -0
  49. package/__app__/src/components/view-page/share-modal/AlertLocalhost.mjs +31 -0
  50. package/__app__/src/components/view-page/share-modal/CopyButtonChild.mjs +36 -0
  51. package/__app__/src/components/view-page/share-modal/EmbedPanel.mjs +100 -0
  52. package/__app__/src/components/view-page/share-modal/WebcomponentsPanel.mjs +264 -0
  53. package/__app__/src/components/view-page/state.mjs +17 -0
  54. package/__app__/src/context/LikeC4CustomizationContext.mjs +26 -0
  55. package/__app__/src/context/LikeC4IconRendererContext.mjs +29 -0
  56. package/__app__/src/context/LikeC4ModelContext.mjs +34 -0
  57. package/__app__/src/context/LikeC4ProjectsContext.mjs +40 -0
  58. package/__app__/src/context/ModelDiffsContext.mjs +33 -0
  59. package/__app__/src/context/safeCtx.mjs +14 -0
  60. package/__app__/src/hooks.mjs +1 -0
  61. package/__app__/src/main.mjs +4 -48126
  62. package/__app__/src/pages/EmbedPage.mjs +93 -0
  63. package/__app__/src/pages/ExportPage.mjs +691 -0
  64. package/__app__/src/pages/ProjectsOverview.mjs +23 -0
  65. package/__app__/src/pages/ViewAsD2.mjs +105 -0
  66. package/__app__/src/pages/ViewAsDot.mjs +65 -0
  67. package/__app__/src/pages/ViewAsMmd.mjs +109 -0
  68. package/__app__/src/pages/ViewAsPuml.mjs +105 -0
  69. package/__app__/src/pages/ViewEditor.mjs +220 -0
  70. package/__app__/src/pages/ViewReact.mjs +1 -0
  71. package/__app__/src/pages/export-layout.mjs +95 -0
  72. package/__app__/src/pages/export-page-params.mjs +9 -0
  73. package/__app__/src/pages/styles.css.mjs +23 -0
  74. package/__app__/src/routeTree.gen.mjs +105 -0
  75. package/__app__/src/router.mjs +1 -0
  76. package/__app__/src/routes/__root.mjs +65 -0
  77. package/__app__/src/routes/index.css.mjs +29 -0
  78. package/__app__/src/routes/index.mjs +32 -0
  79. package/__app__/src/routes/project._projectId/-components.mjs +100 -0
  80. package/__app__/src/routes/project._projectId/embed._viewId.mjs +5 -0
  81. package/__app__/src/routes/project._projectId/export._viewId.mjs +24 -0
  82. package/__app__/src/routes/project._projectId/index.mjs +14 -0
  83. package/__app__/src/routes/project._projectId/route.mjs +93 -0
  84. package/__app__/src/routes/project._projectId/view._viewId.d2.mjs +34 -0
  85. package/__app__/src/routes/project._projectId/view._viewId.dot.mjs +41 -0
  86. package/__app__/src/routes/project._projectId/view._viewId.index.mjs +7 -0
  87. package/__app__/src/routes/project._projectId/view._viewId.mjs +23 -0
  88. package/__app__/src/routes/project._projectId/view._viewId.mmd.mjs +39 -0
  89. package/__app__/src/routes/project._projectId/view._viewId.puml.mjs +34 -0
  90. package/__app__/src/routes/projects.mjs +36 -0
  91. package/__app__/src/routes/single-index.mjs +1 -0
  92. package/__app__/src/routes/webcomponent._.mjs +94 -0
  93. package/__app__/src/style.css +1156 -1147
  94. package/config/schema.json +26 -2
  95. package/dist/app/render-view-client.css +1 -1
  96. package/dist/app/render-view-client.js +375 -393
  97. package/dist/chunks/filenames.mjs +26 -20
  98. package/dist/chunks/generate-likec4.mjs +4 -4
  99. package/dist/chunks/index.d.mts +16 -15
  100. package/dist/chunks/index2.d.mts +7041 -3293
  101. package/dist/chunks/libs/@chenglou/pretext.mjs +9 -0
  102. package/dist/chunks/libs/@logtape/logtape.mjs +5 -5
  103. package/dist/chunks/libs/@ts-graphviz/common.d.mts +2 -4
  104. package/dist/chunks/libs/chevrotain.mjs +19 -19
  105. package/dist/chunks/libs/clone.mjs +1 -0
  106. package/dist/chunks/libs/eventemitter3.mjs +1 -1
  107. package/dist/chunks/libs/fast-equals.mjs +1 -0
  108. package/dist/chunks/libs/fontkit.mjs +1 -0
  109. package/dist/chunks/libs/langium.d.mts +80 -2933
  110. package/dist/chunks/libs/langium.mjs +6 -6
  111. package/dist/chunks/libs/pako.mjs +1 -1
  112. package/dist/chunks/libs/pathe.mjs +1 -1
  113. package/dist/chunks/libs/remeda.mjs +1 -1
  114. package/dist/chunks/node.mjs +110 -77
  115. package/dist/chunks/rolldown-runtime.mjs +1 -1
  116. package/dist/chunks/sequence-view.mjs +1 -1
  117. package/dist/chunks/vite-plugin.mjs +183 -164
  118. package/dist/cli/index.mjs +157 -101
  119. package/dist/config/index.d.mts +65 -4
  120. package/dist/config/index.mjs +1 -1
  121. package/dist/generators/likec4.d.mts +16 -64
  122. package/dist/index.d.mts +2 -4
  123. package/dist/model/index.d.mts +0 -10
  124. package/dist/vite-plugin/index.d.mts +83 -61
  125. package/dist/vite-plugin/internal/chunks/rolldown-runtime.mjs +1 -2
  126. package/dist/vite-plugin/internal/index.d.mts +91 -17
  127. package/dist/vite-plugin/internal/index.mjs +156 -110
  128. package/package.json +60 -55
  129. package/react/index.d.mts +3010 -4014
  130. package/react/index.mjs +170 -171
  131. package/react/rolldown-runtime-CfRud99p.js +1 -0
  132. package/skills/likec4-dsl/SKILL.md +71 -25
  133. package/skills/likec4-dsl/evals/evals-public.json +5 -0
  134. package/skills/likec4-dsl/evals/grading-spec.json +15 -1
  135. package/skills/likec4-dsl/references/cli.md +39 -10
  136. package/skills/likec4-dsl/references/configuration.md +5 -5
  137. package/skills/likec4-dsl/references/diffs.md +52 -0
  138. package/skills/likec4-dsl/references/examples.md +2 -2
  139. package/skills/likec4-dsl/references/identifier-validity.md +31 -31
  140. package/skills/likec4-dsl/references/include-predicates-wildcards.md +16 -15
  141. package/skills/likec4-dsl/references/model.md +42 -11
  142. package/skills/likec4-dsl/references/specification.md +11 -7
  143. package/skills/likec4-dsl/references/troubleshooting.md +47 -42
  144. package/skills/likec4-dsl/references/views.md +2 -2
  145. package/vite-plugin-modules.d.ts +126 -51
  146. package/__app__/src/chunks/LikeC4Styles.mjs +0 -4522
  147. package/__app__/src/chunks/ProjectsOverview.mjs +0 -827
  148. package/__app__/src/chunks/libs/@floating-ui.mjs +0 -3286
  149. package/__app__/src/chunks/libs/@mantine.mjs +0 -17731
  150. package/__app__/src/chunks/libs/@xstate/react.mjs +0 -3471
  151. package/__app__/src/chunks/libs/@xyflow/react.mjs +0 -7927
  152. package/__app__/src/chunks/libs/bezier-js.mjs +0 -1593
  153. package/__app__/src/chunks/libs/d3.mjs +0 -4531
  154. package/__app__/src/chunks/libs/framer.mjs +0 -11331
  155. package/__app__/src/chunks/libs/zod.mjs +0 -5404
  156. package/dist/chunks/libs/@chevrotain/types.d.mts +0 -111
  157. package/react/rolldown-runtime-DnkiqaRY.js +0 -1
@@ -0,0 +1,179 @@
1
+ import "../../chunks/rolldown-runtime.mjs";
2
+ import { t as token } from "../../chunks/styled-system.mjs";
3
+ import { useModelDiffs } from "../../context/ModelDiffsContext.mjs";
4
+ import { selectCompareMode, selectDiff, useModelDiffState } from "./state.mjs";
5
+ import { c } from "react/compiler-runtime";
6
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
+ import { Box, Group, Paper, SegmentedControl, Select, Stack, Text } from "@mantine/core";
8
+ import { filterCompareView } from "@likec4/core/compute-view";
9
+ // src/components/model-diff/ModelDiffPanel.tsx
10
+ var NoDiff = "__as-is__";
11
+ var compareModes = [
12
+ {
13
+ value: "as-is",
14
+ label: "As-is"
15
+ },
16
+ {
17
+ value: "changes",
18
+ label: "Changes"
19
+ },
20
+ {
21
+ value: "to-be",
22
+ label: "To-be"
23
+ }
24
+ ];
25
+ var legend = [
26
+ {
27
+ label: "added",
28
+ color: token.var("colors.likec4.diff.added"),
29
+ style: "solid"
30
+ },
31
+ {
32
+ label: "removed",
33
+ color: token.var("colors.likec4.diff.removed"),
34
+ style: "dashed"
35
+ },
36
+ {
37
+ label: "modified",
38
+ color: token.var("colors.likec4.diff.modified"),
39
+ style: "dashed"
40
+ }
41
+ ];
42
+ /**
43
+ * Compare view of the selected diff, to show instead of the view.
44
+ * `null` for the model as is, or if the diff does not change the view.
45
+ */
46
+ function useCompareView(viewId) {
47
+ const $ = c(3);
48
+ const { views } = useModelDiffs();
49
+ const { diffId, mode } = useModelDiffState();
50
+ const view = diffId && viewId ? views[diffId]?.[viewId] : void 0;
51
+ let t0;
52
+ if ($[0] !== mode || $[1] !== view) {
53
+ t0 = view ? filterCompareView(view, mode) : null;
54
+ $[0] = mode;
55
+ $[1] = view;
56
+ $[2] = t0;
57
+ } else t0 = $[2];
58
+ return t0;
59
+ }
60
+ /**
61
+ * Model state selector (as-is or a diff) and compare mode.
62
+ * Renders nothing if the project has no diffs.
63
+ */
64
+ function ModelDiffPanel(t0) {
65
+ const $ = c(15);
66
+ const { viewId } = t0;
67
+ const { diffs, views } = useModelDiffs();
68
+ const { diffId, mode } = useModelDiffState();
69
+ if (diffs.length === 0) return null;
70
+ let t1;
71
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
72
+ t1 = { zIndex: 20 };
73
+ $[0] = t1;
74
+ } else t1 = $[0];
75
+ let t2;
76
+ if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
77
+ t2 = {
78
+ value: NoDiff,
79
+ label: "As-is (no diff)"
80
+ };
81
+ $[1] = t2;
82
+ } else t2 = $[1];
83
+ let t3;
84
+ if ($[2] !== diffs) {
85
+ t3 = [t2, ...diffs.map(_temp)];
86
+ $[2] = diffs;
87
+ $[3] = t3;
88
+ } else t3 = $[3];
89
+ const t4 = diffId ?? NoDiff;
90
+ let t5;
91
+ if ($[4] !== t3 || $[5] !== t4) {
92
+ t5 = /* @__PURE__ */ jsx(Select, {
93
+ size: "xs",
94
+ "aria-label": "Model state",
95
+ data: t3,
96
+ value: t4,
97
+ allowDeselect: false,
98
+ onChange: _temp2
99
+ });
100
+ $[4] = t3;
101
+ $[5] = t4;
102
+ $[6] = t5;
103
+ } else t5 = $[6];
104
+ let t6;
105
+ if ($[7] !== diffId || $[8] !== mode || $[9] !== viewId || $[10] !== views) {
106
+ t6 = diffId && /* @__PURE__ */ jsxs(Fragment, { children: [
107
+ /* @__PURE__ */ jsx(SegmentedControl, {
108
+ size: "xs",
109
+ fullWidth: true,
110
+ value: mode,
111
+ onChange: selectCompareMode,
112
+ data: compareModes
113
+ }),
114
+ mode === "changes" && /* @__PURE__ */ jsx(Group, {
115
+ gap: "sm",
116
+ children: legend.map(_temp3)
117
+ }),
118
+ /* @__PURE__ */ jsx(Text, {
119
+ size: "xs",
120
+ c: "dimmed",
121
+ children: views[diffId]?.[viewId] ? "This view is changed by the diff" : "This view is not changed by the diff"
122
+ })
123
+ ] });
124
+ $[7] = diffId;
125
+ $[8] = mode;
126
+ $[9] = viewId;
127
+ $[10] = views;
128
+ $[11] = t6;
129
+ } else t6 = $[11];
130
+ let t7;
131
+ if ($[12] !== t5 || $[13] !== t6) {
132
+ t7 = /* @__PURE__ */ jsx(Paper, {
133
+ shadow: "md",
134
+ p: "xs",
135
+ withBorder: true,
136
+ pos: "absolute",
137
+ top: 56,
138
+ right: 12,
139
+ w: 280,
140
+ style: t1,
141
+ children: /* @__PURE__ */ jsxs(Stack, {
142
+ gap: "xs",
143
+ children: [t5, t6]
144
+ })
145
+ });
146
+ $[12] = t5;
147
+ $[13] = t6;
148
+ $[14] = t7;
149
+ } else t7 = $[14];
150
+ return t7;
151
+ }
152
+ function _temp3(item) {
153
+ return /* @__PURE__ */ jsxs(Group, {
154
+ gap: 4,
155
+ wrap: "nowrap",
156
+ children: [/* @__PURE__ */ jsx(Box, {
157
+ w: 12,
158
+ h: 12,
159
+ style: {
160
+ border: `2px ${item.style} ${item.color}`,
161
+ borderRadius: 3
162
+ }
163
+ }), /* @__PURE__ */ jsx(Text, {
164
+ size: "xs",
165
+ c: "dimmed",
166
+ children: item.label
167
+ })]
168
+ }, item.label);
169
+ }
170
+ function _temp2(value) {
171
+ return selectDiff(value && value !== NoDiff ? value : null);
172
+ }
173
+ function _temp(d) {
174
+ return {
175
+ value: d.id,
176
+ label: d.title ?? d.id
177
+ };
178
+ }
179
+ export { ModelDiffPanel, useCompareView };
@@ -0,0 +1,76 @@
1
+ import "../../chunks/rolldown-runtime.mjs";
2
+ import { applyModelDiff } from "@likec4/core/compute-view";
3
+ import { ElementModel, LikeC4Model, LikeC4ViewModel } from "@likec4/core/model";
4
+ // src/components/model-diff/compare-model.ts
5
+ function idOf(value) {
6
+ return typeof value === "string" ? value : value.id;
7
+ }
8
+ /**
9
+ * Model the detail popups read while a compare view is on screen.
10
+ *
11
+ * Added and modified elements come from the model after the diff.
12
+ * Removed elements come from the model before the diff.
13
+ * `as-is` reads only the model before the diff.
14
+ * The open compare view replaces the view of the same id, so node lookup matches the diagram.
15
+ */
16
+ function compareLookupModel(before, input) {
17
+ const diff = before.$data.diffs?.[input.diffId];
18
+ if (!diff) return before;
19
+ const after = input.mode === "as-is" ? before : LikeC4Model.create(applyModelDiff(before.$data, diff));
20
+ const useAfter = input.mode !== "as-is";
21
+ let compareViewModel;
22
+ const proxy = new Proxy(before, { get(target, prop, receiver) {
23
+ switch (prop) {
24
+ case "element": return (el) => {
25
+ if (el instanceof ElementModel) return el;
26
+ return (useAfter ? after.findElement(idOf(el)) : null) ?? target.element(el);
27
+ };
28
+ case "findElement": return (el) => {
29
+ return (useAfter ? after.findElement(idOf(el)) : null) ?? target.findElement(el);
30
+ };
31
+ case "relationship": return (rel, type) => {
32
+ if (!useAfter || type === "deployment") return target.relationship(rel, type);
33
+ return after.findRelationship(idOf(rel), type) ?? target.relationship(rel, type);
34
+ };
35
+ case "findRelationship": return (id, type) => {
36
+ if (!useAfter || type === "deployment") return target.findRelationship(id, type);
37
+ return after.findRelationship(id, type) ?? target.findRelationship(id, type);
38
+ };
39
+ case "elements": return function* () {
40
+ const seen = /* @__PURE__ */ new Set();
41
+ if (useAfter) for (const element of after.elements()) {
42
+ seen.add(element.id);
43
+ yield element;
44
+ }
45
+ for (const element of target.elements()) if (!seen.has(element.id)) yield element;
46
+ };
47
+ case "roots": return function* () {
48
+ const seen = /* @__PURE__ */ new Set();
49
+ if (useAfter) for (const element of after.roots()) {
50
+ seen.add(element.id);
51
+ yield element;
52
+ }
53
+ for (const element of target.roots()) if (!seen.has(element.id)) yield element;
54
+ };
55
+ case "findView": return (viewId) => viewModel(viewId) ?? target.findView(viewId);
56
+ case "view": return (viewId) => {
57
+ return viewModel(idOf(viewId)) ?? target.view(viewId);
58
+ };
59
+ default: {
60
+ const value = Reflect.get(target, prop, receiver);
61
+ return typeof value === "function" ? value.bind(target) : value;
62
+ }
63
+ }
64
+ } });
65
+ function viewModel(viewId) {
66
+ if (viewId !== input.view.id) return null;
67
+ if (!compareViewModel) {
68
+ const existing = before.findView(input.view.id);
69
+ if (!existing) return null;
70
+ compareViewModel = new LikeC4ViewModel(proxy, existing.folder, input.view);
71
+ }
72
+ return compareViewModel;
73
+ }
74
+ return proxy;
75
+ }
76
+ export { compareLookupModel };
@@ -0,0 +1,45 @@
1
+ import "../../chunks/rolldown-runtime.mjs";
2
+ import { t as useStore } from "../../chunks/react.mjs";
3
+ import { r as atom } from "../../chunks/libs/nanostores.mjs";
4
+ import { useModelDiffs } from "../../context/ModelDiffsContext.mjs";
5
+ import { c } from "react/compiler-runtime";
6
+ // src/components/model-diff/state.ts
7
+ /**
8
+ * Selected diff (`null` shows the model as is) and compare mode, kept across views
9
+ */
10
+ var $modelDiff = /* @__PURE__ */ atom({
11
+ diffId: null,
12
+ mode: "changes"
13
+ });
14
+ /**
15
+ * Selected diff (`null` if the project no longer has it) and compare mode
16
+ */
17
+ function useModelDiffState() {
18
+ const $ = c(3);
19
+ const { diffs } = useModelDiffs();
20
+ const state = useStore($modelDiff);
21
+ let t0;
22
+ if ($[0] !== diffs || $[1] !== state) {
23
+ t0 = diffs.some((d) => d.id === state.diffId) ? state : {
24
+ ...state,
25
+ diffId: null
26
+ };
27
+ $[0] = diffs;
28
+ $[1] = state;
29
+ $[2] = t0;
30
+ } else t0 = $[2];
31
+ return t0;
32
+ }
33
+ function selectDiff(diffId) {
34
+ $modelDiff.set({
35
+ ...$modelDiff.get(),
36
+ diffId
37
+ });
38
+ }
39
+ function selectCompareMode(mode) {
40
+ $modelDiff.set({
41
+ ...$modelDiff.get(),
42
+ mode
43
+ });
44
+ }
45
+ export { selectCompareMode, selectDiff, useModelDiffState };
@@ -0,0 +1,92 @@
1
+ import "../../chunks/rolldown-runtime.mjs";
2
+ import { OverviewSearchAdapter } from "./OverviewSearchAdapter.mjs";
3
+ import { memo, useRef, useState } from "react";
4
+ import { c } from "react/compiler-runtime";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ import { FramerMotionConfig, Overlay, SearchControl, SearchPanelContent, searchBodyCss, searchDialogCss } from "likec4/react";
7
+ import { useHotkeys } from "@mantine/hooks";
8
+ import { AnimatePresence } from "motion/react";
9
+ // src/components/search/OverviewSearch.tsx
10
+ var OverviewSearch = memo(() => {
11
+ const $ = c(10);
12
+ const [isOpened, setIsOpened] = useState(false);
13
+ const dialogElRef = useRef(null);
14
+ let t0;
15
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
16
+ t0 = () => setIsOpened(true);
17
+ $[0] = t0;
18
+ } else t0 = $[0];
19
+ const open = t0;
20
+ let t1;
21
+ if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
22
+ t1 = () => setIsOpened(false);
23
+ $[1] = t1;
24
+ } else t1 = $[1];
25
+ const close = t1;
26
+ let t2;
27
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
28
+ t2 = (node) => {
29
+ if (node) dialogElRef.current = node;
30
+ };
31
+ $[2] = t2;
32
+ } else t2 = $[2];
33
+ const captureDialogRef = t2;
34
+ let t3;
35
+ if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
36
+ t3 = () => {
37
+ if (dialogElRef.current?.open) dialogElRef.current.close();
38
+ dialogElRef.current = null;
39
+ };
40
+ $[3] = t3;
41
+ } else t3 = $[3];
42
+ const handleExitComplete = t3;
43
+ let t4;
44
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
45
+ t4 = [[
46
+ "mod+k",
47
+ open,
48
+ { preventDefault: true }
49
+ ]];
50
+ $[4] = t4;
51
+ } else t4 = $[4];
52
+ useHotkeys(t4);
53
+ let t5;
54
+ if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
55
+ t5 = /* @__PURE__ */ jsx(SearchControl, { onClick: open });
56
+ $[5] = t5;
57
+ } else t5 = $[5];
58
+ let t6;
59
+ if ($[6] !== isOpened) {
60
+ t6 = isOpened && /* @__PURE__ */ jsx(Overlay, {
61
+ ref: captureDialogRef,
62
+ fullscreen: true,
63
+ withBackdrop: false,
64
+ backdrop: { opacity: .9 },
65
+ classes: {
66
+ dialog: searchDialogCss,
67
+ body: searchBodyCss
68
+ },
69
+ openDelay: 0,
70
+ onClose: close,
71
+ "data-likec4-search": "true",
72
+ children: /* @__PURE__ */ jsx(OverviewSearchAdapter, {
73
+ onClose: close,
74
+ children: /* @__PURE__ */ jsx(SearchPanelContent, {})
75
+ })
76
+ });
77
+ $[6] = isOpened;
78
+ $[7] = t6;
79
+ } else t6 = $[7];
80
+ let t7;
81
+ if ($[8] !== t6) {
82
+ t7 = /* @__PURE__ */ jsxs(Fragment, { children: [t5, /* @__PURE__ */ jsx(FramerMotionConfig, { children: /* @__PURE__ */ jsx(AnimatePresence, {
83
+ onExitComplete: handleExitComplete,
84
+ children: t6
85
+ }) })] });
86
+ $[8] = t6;
87
+ $[9] = t7;
88
+ } else t7 = $[9];
89
+ return t7;
90
+ });
91
+ OverviewSearch.displayName = "OverviewSearch";
92
+ export { OverviewSearch };
@@ -0,0 +1,94 @@
1
+ import "../../chunks/rolldown-runtime.mjs";
2
+ import { c as useNavigate } from "../../chunks/libs/@tanstack.mjs";
3
+ import { t as useCurrentProject } from "../../chunks/hooks.mjs";
4
+ import { useState } from "react";
5
+ import { c } from "react/compiler-runtime";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import { SearchContext, normalizeSearch } from "likec4/react";
8
+ // src/components/search/OverviewSearchAdapter.tsx
9
+ function OverviewSearchAdapter(t0) {
10
+ const $ = c(17);
11
+ const { onClose, children } = t0;
12
+ const [searchValue, setSearchValue] = useState("");
13
+ const [pickViewFor, setPickViewFor] = useState(null);
14
+ const navigate = useNavigate();
15
+ const { id: projectId } = useCurrentProject();
16
+ let t1;
17
+ if ($[0] !== navigate || $[1] !== onClose || $[2] !== projectId) {
18
+ t1 = (viewId, focusOnElement) => {
19
+ onClose();
20
+ navigate({
21
+ to: "/project/$projectId/view/$viewId/",
22
+ params: {
23
+ projectId,
24
+ viewId
25
+ },
26
+ search: (prev) => ({
27
+ ...prev,
28
+ ...focusOnElement && { focusOnElement }
29
+ })
30
+ });
31
+ };
32
+ $[0] = navigate;
33
+ $[1] = onClose;
34
+ $[2] = projectId;
35
+ $[3] = t1;
36
+ } else t1 = $[3];
37
+ const navigateTo = t1;
38
+ let t2;
39
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
40
+ t2 = (elementFqn) => {
41
+ setPickViewFor(elementFqn);
42
+ };
43
+ $[4] = t2;
44
+ } else t2 = $[4];
45
+ const openPickView = t2;
46
+ let t3;
47
+ if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
48
+ t3 = () => {
49
+ setPickViewFor(null);
50
+ };
51
+ $[5] = t3;
52
+ } else t3 = $[5];
53
+ const closePickView = t3;
54
+ let t4;
55
+ if ($[6] !== searchValue) {
56
+ t4 = normalizeSearch(searchValue);
57
+ $[6] = searchValue;
58
+ $[7] = t4;
59
+ } else t4 = $[7];
60
+ let t5;
61
+ if ($[8] !== navigateTo || $[9] !== onClose || $[10] !== pickViewFor || $[11] !== searchValue || $[12] !== t4) {
62
+ t5 = {
63
+ searchValue,
64
+ setSearchValue,
65
+ normalizedSearch: t4,
66
+ navigateTo,
67
+ openPickView,
68
+ closePickView,
69
+ pickViewFor,
70
+ close: onClose,
71
+ currentViewId: null,
72
+ openedWithSearch: null
73
+ };
74
+ $[8] = navigateTo;
75
+ $[9] = onClose;
76
+ $[10] = pickViewFor;
77
+ $[11] = searchValue;
78
+ $[12] = t4;
79
+ $[13] = t5;
80
+ } else t5 = $[13];
81
+ const value = t5;
82
+ let t6;
83
+ if ($[14] !== children || $[15] !== value) {
84
+ t6 = /* @__PURE__ */ jsx(SearchContext.Provider, {
85
+ value,
86
+ children
87
+ });
88
+ $[14] = children;
89
+ $[15] = value;
90
+ $[16] = t6;
91
+ } else t6 = $[16];
92
+ return t6;
93
+ }
94
+ export { OverviewSearchAdapter };
@@ -0,0 +1,48 @@
1
+ import { f as css } from "../../chunks/styled-system.mjs";
2
+ // src/components/sidebar/DiagramTree.css.ts
3
+ var navsidebar = css({
4
+ backdropFilter: "[blur(6px)]",
5
+ transitionProperty: "common",
6
+ transition: "slow",
7
+ transform: "translateX(-100%)",
8
+ _before: {
9
+ transitionProperty: "common",
10
+ transition: "slow",
11
+ position: "absolute",
12
+ content: "\" \"",
13
+ inset: "0",
14
+ background: "mantine.gray[7]",
15
+ opacity: "0.7",
16
+ zIndex: "[1]"
17
+ },
18
+ "& > div": {
19
+ position: "relative",
20
+ zIndex: "[2]"
21
+ },
22
+ "&[data-opened='true']": { transform: "translateX(0)" }
23
+ });
24
+ var trigger = css({
25
+ cursor: "pointer",
26
+ _before: {
27
+ transitionProperty: "common",
28
+ transitionTimingFunction: "[cubic-bezier(0,0.31,0,1.03)]",
29
+ transitionDuration: "fast",
30
+ position: "absolute",
31
+ content: "",
32
+ inset: "0",
33
+ background: "mantine.gray[7]",
34
+ opacity: "0",
35
+ zIndex: "[1]"
36
+ },
37
+ "& > *": {
38
+ position: "relative",
39
+ zIndex: "[2]"
40
+ },
41
+ "&:hover::before": {
42
+ visibility: "visible",
43
+ opacity: "0.7"
44
+ },
45
+ "&[data-opened='true']": { visibility: "hidden" }
46
+ });
47
+ var diagramPreview = css({ pointerEvents: "none" });
48
+ export { diagramPreview, navsidebar, trigger };