@module-federation/devtools 0.21.6 → 0.22.1

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 (100) hide show
  1. package/dist/es/App.css +12 -0
  2. package/dist/es/App.js +330 -22
  3. package/dist/es/App.module.js +1 -1
  4. package/dist/es/App_module.css +291 -5
  5. package/dist/es/component/DependencyGraph/index.js +205 -0
  6. package/dist/es/component/DependencyGraph/index.module.js +5 -0
  7. package/dist/es/component/DependencyGraph/index_module.css +97 -0
  8. package/dist/es/component/{GraphItem → DependencyGraphItem}/index.js +15 -6
  9. package/dist/es/component/DependencyGraphItem/index.module.js +5 -0
  10. package/dist/es/component/DependencyGraphItem/index_module.css +95 -0
  11. package/dist/es/component/Form/index.js +191 -109
  12. package/dist/es/component/Form/index.module.js +1 -1
  13. package/dist/es/component/Form/index_module.css +179 -25
  14. package/dist/es/component/Layout/index.js +300 -49
  15. package/dist/es/component/Layout/index.module.js +1 -1
  16. package/dist/es/component/Layout/index_module.css +52 -32
  17. package/dist/es/component/ModuleInfo/index.js +289 -0
  18. package/dist/es/component/ModuleInfo/index.module.js +5 -0
  19. package/dist/es/component/ModuleInfo/index_module.css +183 -0
  20. package/dist/es/component/SharedDepsExplorer/FocusResultDisplay.js +33 -0
  21. package/dist/es/component/SharedDepsExplorer/FocusResultDisplay.module.js +5 -0
  22. package/dist/es/component/SharedDepsExplorer/FocusResultDisplay_module.css +45 -0
  23. package/dist/es/component/SharedDepsExplorer/index.js +506 -0
  24. package/dist/es/component/SharedDepsExplorer/index.module.js +5 -0
  25. package/dist/es/component/SharedDepsExplorer/index_module.css +457 -0
  26. package/dist/es/component/SharedDepsExplorer/share-utils.js +206 -0
  27. package/dist/es/template/constant.js +3 -19
  28. package/dist/es/utils/chrome/index.js +91 -38
  29. package/dist/es/utils/chrome/messages.js +6 -0
  30. package/dist/es/utils/chrome/override-remote.js +42 -0
  31. package/dist/es/utils/chrome/post-message-listener.js +2 -1
  32. package/dist/es/utils/chrome/post-message-start.js +10 -2
  33. package/dist/es/utils/chrome/storage.js +6 -1
  34. package/dist/es/utils/sdk/graph.js +25 -4
  35. package/dist/es/utils/sdk/index.js +9 -0
  36. package/dist/es/worker/index.js +168 -1
  37. package/dist/lib/App.css +12 -0
  38. package/dist/lib/App.js +321 -18
  39. package/dist/lib/App.module.js +1 -1
  40. package/dist/lib/App_module.css +291 -5
  41. package/dist/lib/component/DependencyGraph/index.js +227 -0
  42. package/dist/lib/component/{GraphItem → DependencyGraph}/index.module.js +1 -1
  43. package/dist/lib/component/DependencyGraph/index_module.css +97 -0
  44. package/dist/lib/component/{GraphItem → DependencyGraphItem}/index.js +18 -9
  45. package/dist/lib/component/{Graph → DependencyGraphItem}/index.module.js +1 -1
  46. package/dist/lib/component/DependencyGraphItem/index_module.css +95 -0
  47. package/dist/lib/component/Form/index.js +188 -107
  48. package/dist/lib/component/Form/index.module.js +1 -1
  49. package/dist/lib/component/Form/index_module.css +179 -25
  50. package/dist/lib/component/Layout/index.js +294 -47
  51. package/dist/lib/component/Layout/index.module.js +1 -1
  52. package/dist/lib/component/Layout/index_module.css +52 -32
  53. package/dist/lib/component/ModuleInfo/index.js +319 -0
  54. package/dist/lib/component/ModuleInfo/index.module.js +25 -0
  55. package/dist/lib/component/ModuleInfo/index_module.css +183 -0
  56. package/dist/lib/component/SharedDepsExplorer/FocusResultDisplay.js +63 -0
  57. package/dist/lib/component/SharedDepsExplorer/FocusResultDisplay.module.js +25 -0
  58. package/dist/lib/component/SharedDepsExplorer/FocusResultDisplay_module.css +45 -0
  59. package/dist/lib/component/SharedDepsExplorer/index.js +513 -0
  60. package/dist/lib/component/SharedDepsExplorer/index.module.js +25 -0
  61. package/dist/lib/component/SharedDepsExplorer/index_module.css +457 -0
  62. package/dist/lib/component/SharedDepsExplorer/share-utils.js +237 -0
  63. package/dist/lib/template/constant.js +4 -17
  64. package/dist/lib/utils/chrome/index.js +94 -38
  65. package/dist/lib/utils/chrome/messages.js +31 -0
  66. package/dist/lib/utils/chrome/override-remote.js +65 -0
  67. package/dist/lib/utils/chrome/post-message-listener.js +2 -1
  68. package/dist/lib/utils/chrome/post-message-start.js +10 -2
  69. package/dist/lib/utils/chrome/storage.js +5 -0
  70. package/dist/lib/utils/sdk/graph.js +25 -4
  71. package/dist/lib/utils/sdk/index.js +10 -0
  72. package/dist/lib/worker/index.js +156 -1
  73. package/dist/types/src/App.d.ts +2 -1
  74. package/dist/types/src/component/{Graph → DependencyGraph}/index.d.ts +0 -1
  75. package/dist/types/src/component/{GraphItem → DependencyGraphItem}/index.d.ts +0 -1
  76. package/dist/types/src/component/Form/index.d.ts +2 -0
  77. package/dist/types/src/component/Layout/index.d.ts +0 -1
  78. package/dist/types/src/component/ModuleInfo/index.d.ts +8 -0
  79. package/dist/types/src/component/SharedDepsExplorer/FocusResultDisplay.d.ts +15 -0
  80. package/dist/types/src/component/SharedDepsExplorer/index.d.ts +6 -0
  81. package/dist/types/src/component/SharedDepsExplorer/share-utils.d.ts +44 -0
  82. package/dist/types/src/init.d.ts +0 -1
  83. package/dist/types/src/template/constant.d.ts +2 -5
  84. package/dist/types/src/utils/chrome/index.d.ts +5 -3
  85. package/dist/types/src/utils/chrome/messages.d.ts +2 -0
  86. package/dist/types/src/utils/chrome/override-remote.d.ts +1 -0
  87. package/dist/types/src/utils/chrome/storage.d.ts +5 -4
  88. package/dist/types/src/utils/sdk/graph.d.ts +2 -1
  89. package/dist/types/src/utils/sdk/index.d.ts +1 -0
  90. package/dist/types/src/utils/types/common.d.ts +4 -0
  91. package/dist/types/src/worker/index.d.ts +1 -0
  92. package/package.json +16 -14
  93. package/dist/es/component/Graph/index.js +0 -127
  94. package/dist/es/component/Graph/index.module.js +0 -5
  95. package/dist/es/component/Graph/index_module.css +0 -12
  96. package/dist/es/component/GraphItem/index.module.js +0 -5
  97. package/dist/es/component/GraphItem/index_module.css +0 -61
  98. package/dist/lib/component/Graph/index.js +0 -149
  99. package/dist/lib/component/Graph/index_module.css +0 -12
  100. package/dist/lib/component/GraphItem/index_module.css +0 -61
@@ -0,0 +1,506 @@
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+ import { jsx, jsxs } from "react/jsx-runtime";
22
+ import { useEffect, useMemo, useState } from "react";
23
+ import {
24
+ Box,
25
+ Layers,
26
+ Network,
27
+ Package2,
28
+ Repeat,
29
+ Search,
30
+ Server
31
+ } from "lucide-react";
32
+ import {
33
+ Card,
34
+ Tag,
35
+ Table,
36
+ Input,
37
+ Select,
38
+ Collapse,
39
+ Popover,
40
+ Button
41
+ } from "@arco-design/web-react";
42
+ import {
43
+ normalizeShareData,
44
+ computeShareStats,
45
+ getFilterOptions,
46
+ groupByProviderScopePackage,
47
+ findPackageProvider
48
+ } from "./share-utils";
49
+ import FocusResultDisplay from "./FocusResultDisplay";
50
+ import styles from "./index.module";
51
+ const ALL_VALUE = "__all__";
52
+ function loadedStatusLabel(status) {
53
+ if (status === "loaded") {
54
+ return "Loaded";
55
+ }
56
+ if (status === "loading") {
57
+ return "Loading";
58
+ }
59
+ return "Not Loaded";
60
+ }
61
+ function SharedDepsExplorer({
62
+ shareData: shareDataProp
63
+ }) {
64
+ const [normalized, setNormalized] = useState([]);
65
+ const [loadingState, setLoadingState] = useState("idle");
66
+ const [errorMessage, setErrorMessage] = useState(null);
67
+ const [selectedProvider, setSelectedProvider] = useState("");
68
+ const [selectedPackage, setSelectedPackage] = useState("");
69
+ const [selectedVersion, setSelectedVersion] = useState("");
70
+ const [searchText, setSearchText] = useState("");
71
+ const [chartScope, setChartScope] = useState("default");
72
+ const [focusPackage, setFocusPackage] = useState("react");
73
+ const [focusVersion, setFocusVersion] = useState("");
74
+ useEffect(() => {
75
+ let cancelled = false;
76
+ function bootstrap() {
77
+ return __async(this, null, function* () {
78
+ if (shareDataProp && Object.keys(shareDataProp).length > 0) {
79
+ const versions = normalizeShareData(shareDataProp);
80
+ if (!cancelled) {
81
+ setNormalized(versions);
82
+ setLoadingState("idle");
83
+ setErrorMessage(null);
84
+ }
85
+ return;
86
+ }
87
+ if (!cancelled) {
88
+ setLoadingState("idle");
89
+ setErrorMessage(null);
90
+ }
91
+ });
92
+ }
93
+ bootstrap();
94
+ return () => {
95
+ cancelled = true;
96
+ };
97
+ }, [shareDataProp]);
98
+ const stats = useMemo(() => computeShareStats(normalized), [normalized]);
99
+ const filterOptions = useMemo(
100
+ () => getFilterOptions(normalized),
101
+ [normalized]
102
+ );
103
+ useEffect(() => {
104
+ const { scopes } = filterOptions;
105
+ if (!scopes.length) {
106
+ return;
107
+ }
108
+ if (!scopes.includes(chartScope)) {
109
+ if (scopes.includes("default")) {
110
+ setChartScope("default");
111
+ } else {
112
+ setChartScope(scopes[0]);
113
+ }
114
+ }
115
+ }, [filterOptions.scopes, chartScope]);
116
+ const filteredVersions = useMemo(() => {
117
+ const keyword = searchText.trim().toLowerCase();
118
+ return normalized.filter((v) => {
119
+ if (selectedProvider && v.from !== selectedProvider) {
120
+ return false;
121
+ }
122
+ if (selectedPackage && v.packageName !== selectedPackage) {
123
+ return false;
124
+ }
125
+ if (selectedVersion && v.version !== selectedVersion) {
126
+ return false;
127
+ }
128
+ if (keyword && !v.packageName.toLowerCase().includes(keyword)) {
129
+ return false;
130
+ }
131
+ return true;
132
+ });
133
+ }, [
134
+ normalized,
135
+ selectedProvider,
136
+ selectedPackage,
137
+ selectedVersion,
138
+ searchText
139
+ ]);
140
+ const tree = useMemo(
141
+ () => groupByProviderScopePackage(filteredVersions),
142
+ [filteredVersions]
143
+ );
144
+ const versionsForSelectedPackage = useMemo(() => {
145
+ if (!selectedPackage) {
146
+ return [];
147
+ }
148
+ const set = /* @__PURE__ */ new Set();
149
+ normalized.forEach((v) => {
150
+ if (v.packageName === selectedPackage) {
151
+ set.add(v.version);
152
+ }
153
+ });
154
+ return Array.from(set).sort();
155
+ }, [normalized, selectedPackage]);
156
+ const focusVersionsForPackage = useMemo(() => {
157
+ if (!focusPackage) {
158
+ return [];
159
+ }
160
+ const set = /* @__PURE__ */ new Set();
161
+ normalized.forEach((v) => {
162
+ if (v.packageName === focusPackage) {
163
+ set.add(v.version);
164
+ }
165
+ });
166
+ return Array.from(set).sort();
167
+ }, [normalized, focusPackage]);
168
+ const focusResult = useMemo(() => {
169
+ if (!focusPackage) {
170
+ return null;
171
+ }
172
+ return findPackageProvider(
173
+ normalized,
174
+ focusPackage,
175
+ focusVersion || void 0
176
+ );
177
+ }, [normalized, focusPackage, focusVersion]);
178
+ const hasData = normalized.length > 0;
179
+ const columns = [
180
+ {
181
+ title: "Package / Version",
182
+ width: "28%",
183
+ render: (_, item) => /* @__PURE__ */ jsxs("div", { className: styles.cellCol, children: [
184
+ /* @__PURE__ */ jsx("div", { className: styles.packageName, children: item.packageName }),
185
+ /* @__PURE__ */ jsxs("div", { className: styles.version, children: [
186
+ "v",
187
+ item.version
188
+ ] })
189
+ ] })
190
+ },
191
+ {
192
+ title: "Provider / Scope",
193
+ width: "20%",
194
+ render: (_, item) => /* @__PURE__ */ jsxs("div", { className: styles.cellColGap, children: [
195
+ /* @__PURE__ */ jsxs("span", { className: styles.truncate, title: item.from, children: [
196
+ "Provider: ",
197
+ item.from
198
+ ] }),
199
+ /* @__PURE__ */ jsxs("span", { className: styles.scopeText, children: [
200
+ "scope: ",
201
+ item.scope
202
+ ] })
203
+ ] })
204
+ },
205
+ {
206
+ title: "Status",
207
+ width: "22%",
208
+ render: (_, item) => /* @__PURE__ */ jsxs("div", { className: styles.cellColGap, children: [
209
+ ["loaded", "loading"].includes(item.loadedStatus) ? /* @__PURE__ */ jsx(
210
+ Tag,
211
+ {
212
+ size: "small",
213
+ className: `${styles.tagContainer} loaded-status-tag`,
214
+ children: loadedStatusLabel(item.loadedStatus)
215
+ }
216
+ ) : null,
217
+ /* @__PURE__ */ jsxs("div", { className: styles.configTags, children: [
218
+ item.shareConfig.singleton && /* @__PURE__ */ jsx(Tag, { size: "small", className: styles.scale90, children: "singleton" }),
219
+ item.shareConfig.eager && /* @__PURE__ */ jsx(Tag, { size: "small", className: styles.scale90, children: "eager" }),
220
+ item.shareConfig.strictVersion && /* @__PURE__ */ jsx(Tag, { size: "small", className: styles.scale90, children: "strictVersion" }),
221
+ item.shareConfig.requiredVersion && /* @__PURE__ */ jsxs(Tag, { size: "small", className: styles.scale90, children: [
222
+ "req: ",
223
+ item.shareConfig.requiredVersion
224
+ ] })
225
+ ] })
226
+ ] })
227
+ },
228
+ {
229
+ title: "Consumers",
230
+ width: "18%",
231
+ render: (_, item) => /* @__PURE__ */ jsx(
232
+ Popover,
233
+ {
234
+ trigger: "click",
235
+ position: "right",
236
+ content: /* @__PURE__ */ jsxs("div", { className: styles.popoverContent, children: [
237
+ /* @__PURE__ */ jsx("div", { className: styles.popoverTitle, children: "Consumer List" }),
238
+ item.useIn.length === 0 ? /* @__PURE__ */ jsx("p", { className: styles.scopeText, children: "No applications are consuming this shared dependency version." }) : /* @__PURE__ */ jsx("ul", { className: styles.consumerList, children: item.useIn.map((c) => /* @__PURE__ */ jsxs("li", { className: styles.consumerItem, children: [
239
+ /* @__PURE__ */ jsx("span", { className: styles.dot }),
240
+ /* @__PURE__ */ jsx("span", { className: styles.packageName, children: c })
241
+ ] }, c)) })
242
+ ] }),
243
+ children: /* @__PURE__ */ jsx(Button, { size: "mini", type: "secondary", children: /* @__PURE__ */ jsxs("div", { className: styles.btnContent, children: [
244
+ /* @__PURE__ */ jsx(Network, { className: styles.mr1, size: 12 }),
245
+ /* @__PURE__ */ jsxs("span", { children: [
246
+ item.useIn.length || 0,
247
+ " Apps"
248
+ ] })
249
+ ] }) })
250
+ }
251
+ )
252
+ },
253
+ {
254
+ title: "Strategy",
255
+ width: "12%",
256
+ render: (_, item) => {
257
+ var _a;
258
+ return /* @__PURE__ */ jsx(Tag, { size: "small", color: "gray", children: (_a = item.strategy) != null ? _a : "-" });
259
+ }
260
+ }
261
+ ];
262
+ return /* @__PURE__ */ jsxs("div", { className: styles.container, children: [
263
+ /* @__PURE__ */ jsxs("section", { className: styles.heroSection, children: [
264
+ /* @__PURE__ */ jsx("p", { className: styles.heroSubtitle, children: "Module Federation · Shared Dependencies" }),
265
+ /* @__PURE__ */ jsx("h1", { className: styles.heroTitle, children: "Overview of Shared Dependencies Usage" })
266
+ ] }),
267
+ /* @__PURE__ */ jsx("section", { children: /* @__PURE__ */ jsxs("div", { className: styles.statsGrid, children: [
268
+ /* @__PURE__ */ jsxs(Card, { className: styles.cardWithPadding, children: [
269
+ /* @__PURE__ */ jsx("div", { className: styles.cardHeader, children: /* @__PURE__ */ jsxs("div", { className: styles.statSpace, children: [
270
+ /* @__PURE__ */ jsx("div", { className: styles.statLabel, children: "Number of Providers" }),
271
+ /* @__PURE__ */ jsxs("div", { className: styles.statValue, children: [
272
+ /* @__PURE__ */ jsx(Server, { className: styles.icon }),
273
+ /* @__PURE__ */ jsx("span", { children: stats.totalProviders })
274
+ ] })
275
+ ] }) }),
276
+ /* @__PURE__ */ jsx("p", { className: styles.statDescription, children: "Number of applications/build versions exposing shared dependencies." })
277
+ ] }),
278
+ /* @__PURE__ */ jsxs(Card, { className: styles.cardWithPadding, children: [
279
+ /* @__PURE__ */ jsx("div", { className: styles.cardHeader, children: /* @__PURE__ */ jsxs("div", { className: styles.statSpace, children: [
280
+ /* @__PURE__ */ jsx("div", { className: styles.statLabel, children: "Share Scope / Package" }),
281
+ /* @__PURE__ */ jsxs("div", { className: styles.statValue, children: [
282
+ /* @__PURE__ */ jsx(Layers, { className: styles.icon }),
283
+ /* @__PURE__ */ jsx("span", { children: stats.totalScopes }),
284
+ /* @__PURE__ */ jsx("span", { className: styles.statSubtext, children: "scope" })
285
+ ] })
286
+ ] }) }),
287
+ /* @__PURE__ */ jsxs("div", { className: styles.cardFooter, children: [
288
+ /* @__PURE__ */ jsx("span", { className: `${styles.truncate} ${styles.mr2}`, children: "Shared spaces under Scope dimension." }),
289
+ /* @__PURE__ */ jsxs("span", { className: styles.badgeGroup, children: [
290
+ /* @__PURE__ */ jsx(Box, { className: styles.iconSmall }),
291
+ /* @__PURE__ */ jsxs("span", { children: [
292
+ stats.totalPackages,
293
+ " packages"
294
+ ] })
295
+ ] })
296
+ ] })
297
+ ] }),
298
+ /* @__PURE__ */ jsxs(Card, { className: styles.cardWithPadding, children: [
299
+ /* @__PURE__ */ jsx("div", { className: styles.cardHeader, children: /* @__PURE__ */ jsxs("div", { className: styles.statSpace, children: [
300
+ /* @__PURE__ */ jsx("div", { className: styles.statLabel, children: "Version Loading & Reuse" }),
301
+ /* @__PURE__ */ jsxs("div", { className: styles.statValue, children: [
302
+ /* @__PURE__ */ jsx(Package2, { className: styles.icon }),
303
+ /* @__PURE__ */ jsx("span", { children: stats.totalVersions })
304
+ ] })
305
+ ] }) }),
306
+ /* @__PURE__ */ jsx("div", { className: styles.statusTags, children: /* @__PURE__ */ jsxs("div", { className: styles.tagRow, children: [
307
+ /* @__PURE__ */ jsx(Tag, { className: `${styles.tagContent} loaded-status-tag`, children: /* @__PURE__ */ jsxs("div", { className: styles.tagContent, children: [
308
+ /* @__PURE__ */ jsx(Network, { className: `${styles.iconSmall} ${styles.mr1}` }),
309
+ /* @__PURE__ */ jsx("span", { children: "Loaded" }),
310
+ /* @__PURE__ */ jsx("span", { className: styles.tagValue, children: stats.loadedCount })
311
+ ] }) }),
312
+ /* @__PURE__ */ jsx(Tag, { className: `${styles.tagContent} reused-status-tag`, children: /* @__PURE__ */ jsxs("div", { className: styles.tagContent, children: [
313
+ /* @__PURE__ */ jsx(Repeat, { className: `${styles.iconSmall} ${styles.mr1}` }),
314
+ /* @__PURE__ */ jsx("span", { children: "Reused" }),
315
+ /* @__PURE__ */ jsx("span", { className: styles.tagValue, children: stats.reusedCount })
316
+ ] }) })
317
+ ] }) })
318
+ ] })
319
+ ] }) }),
320
+ /* @__PURE__ */ jsx("section", { className: styles.rightPanels, children: /* @__PURE__ */ jsx("div", { className: styles.panelStack, children: /* @__PURE__ */ jsxs(
321
+ Card,
322
+ {
323
+ className: styles.card,
324
+ title: /* @__PURE__ */ jsxs("div", { className: styles.cardTitle, children: [
325
+ /* @__PURE__ */ jsx(Box, { className: styles.iconMedium }),
326
+ "Who provides the current shared: '",
327
+ focusPackage,
328
+ "'?"
329
+ ] }),
330
+ children: [
331
+ /* @__PURE__ */ jsxs("div", { className: styles.controlsGrid, children: [
332
+ /* @__PURE__ */ jsxs("div", { className: styles.inputGroup, children: [
333
+ /* @__PURE__ */ jsx("div", { className: styles.inputLabel, children: "Package Name" }),
334
+ /* @__PURE__ */ jsx(
335
+ Select,
336
+ {
337
+ showSearch: true,
338
+ value: focusPackage,
339
+ onChange: (value) => {
340
+ setFocusPackage(value);
341
+ setFocusVersion("");
342
+ },
343
+ placeholder: "Select Shared Dependency Package Name",
344
+ className: styles.fullWidth,
345
+ children: filterOptions.packages.map((name) => /* @__PURE__ */ jsx(Select.Option, { value: name, children: name }, name))
346
+ }
347
+ )
348
+ ] }),
349
+ /* @__PURE__ */ jsxs("div", { className: styles.inputGroup, children: [
350
+ /* @__PURE__ */ jsx("div", { className: styles.inputLabel, children: "Version (Optional, inferred if empty)" }),
351
+ /* @__PURE__ */ jsxs(
352
+ Select,
353
+ {
354
+ showSearch: true,
355
+ value: focusVersion || ALL_VALUE,
356
+ onChange: (value) => setFocusVersion(value === ALL_VALUE ? "" : value),
357
+ placeholder: "All Versions",
358
+ className: styles.fullWidth,
359
+ children: [
360
+ /* @__PURE__ */ jsx(Select.Option, { value: ALL_VALUE, children: "All Versions" }),
361
+ focusVersionsForPackage.map((v) => /* @__PURE__ */ jsx(Select.Option, { value: v, children: v }, v))
362
+ ]
363
+ }
364
+ )
365
+ ] })
366
+ ] }),
367
+ /* @__PURE__ */ jsx("div", { className: styles.resultBox, children: /* @__PURE__ */ jsx(
368
+ FocusResultDisplay,
369
+ {
370
+ focusResult,
371
+ hasData,
372
+ loadedStatusLabel
373
+ }
374
+ ) })
375
+ ]
376
+ }
377
+ ) }) }),
378
+ /* @__PURE__ */ jsx("section", { children: /* @__PURE__ */ jsxs(
379
+ Card,
380
+ {
381
+ className: styles.card,
382
+ title: /* @__PURE__ */ jsxs("div", { className: styles.cardTitle, children: [
383
+ /* @__PURE__ */ jsx(Search, { className: styles.iconMedium }),
384
+ "Filter / Search"
385
+ ] }),
386
+ children: [
387
+ /* @__PURE__ */ jsxs("div", { className: styles.filterGrid, children: [
388
+ /* @__PURE__ */ jsxs("div", { className: `${styles.inputGroup} ${styles.padding2}`, children: [
389
+ /* @__PURE__ */ jsx("div", { className: styles.inputLabel, children: "Provider" }),
390
+ /* @__PURE__ */ jsx(
391
+ Select,
392
+ {
393
+ value: selectedProvider || void 0,
394
+ onChange: (value) => setSelectedProvider(value === ALL_VALUE ? "" : value),
395
+ placeholder: "All Providers",
396
+ className: styles.fullWidth,
397
+ allowClear: true,
398
+ children: filterOptions.providers.map((p) => /* @__PURE__ */ jsx(Select.Option, { value: p, children: p }, p))
399
+ }
400
+ )
401
+ ] }),
402
+ /* @__PURE__ */ jsxs("div", { className: `${styles.inputGroup} ${styles.padding2}`, children: [
403
+ /* @__PURE__ */ jsx("div", { className: styles.inputLabel, children: "Package Name" }),
404
+ /* @__PURE__ */ jsx(
405
+ Select,
406
+ {
407
+ value: selectedPackage || void 0,
408
+ onChange: (value) => setSelectedPackage(value === ALL_VALUE ? "" : value),
409
+ placeholder: "All Packages",
410
+ className: styles.fullWidth,
411
+ allowClear: true,
412
+ children: filterOptions.packages.map((name) => /* @__PURE__ */ jsx(Select.Option, { value: name, children: name }, name))
413
+ }
414
+ )
415
+ ] }),
416
+ /* @__PURE__ */ jsxs("div", { className: `${styles.inputGroup} ${styles.padding2}`, children: [
417
+ /* @__PURE__ */ jsx("div", { className: styles.inputLabel, children: "Version" }),
418
+ /* @__PURE__ */ jsx(
419
+ Select,
420
+ {
421
+ value: selectedVersion || void 0,
422
+ onChange: (value) => setSelectedVersion(value === ALL_VALUE ? "" : value),
423
+ placeholder: "All Versions",
424
+ className: styles.fullWidth,
425
+ disabled: !selectedPackage,
426
+ allowClear: true,
427
+ children: versionsForSelectedPackage.map((v) => /* @__PURE__ */ jsx(Select.Option, { value: v, children: v }, v))
428
+ }
429
+ )
430
+ ] })
431
+ ] }),
432
+ /* @__PURE__ */ jsxs("div", { className: styles.searchGrid, children: [
433
+ /* @__PURE__ */ jsxs("div", { className: styles.inputGroup, children: [
434
+ /* @__PURE__ */ jsx("div", { className: styles.inputLabel, children: "Package Name Keyword (Fuzzy Match)" }),
435
+ /* @__PURE__ */ jsx(
436
+ Input,
437
+ {
438
+ prefix: /* @__PURE__ */ jsx(Search, { className: styles.iconMedium }),
439
+ className: styles.searchInput,
440
+ placeholder: "e.g., react / axios",
441
+ value: searchText,
442
+ onChange: (val) => setSearchText(val)
443
+ }
444
+ )
445
+ ] }),
446
+ /* @__PURE__ */ jsx("div", { className: styles.matchCount, children: /* @__PURE__ */ jsxs("span", { children: [
447
+ "Currently Matched Versions:",
448
+ /* @__PURE__ */ jsx("span", { className: styles.matchValue, children: filteredVersions.length })
449
+ ] }) })
450
+ ] }),
451
+ !hasData && loadingState === "loading" && /* @__PURE__ */ jsx("div", { className: styles.loadingText, children: "Parsing shared dependency data..." }),
452
+ loadingState === "error" && /* @__PURE__ */ jsxs("div", { className: styles.errorText, children: [
453
+ "Failed to load shared dependency data:",
454
+ " ",
455
+ errorMessage != null ? errorMessage : "Unknown Error"
456
+ ] }),
457
+ hasData && Object.keys(tree).length === 0 && /* @__PURE__ */ jsx("div", { className: styles.noMatchText, children: "No matching shared dependency versions under current filter conditions, try relaxing the filter conditions." }),
458
+ hasData && Object.keys(tree).length > 0 && /* @__PURE__ */ jsx("div", { className: styles.treeContainer, children: /* @__PURE__ */ jsx("div", { className: styles.collapseWrapper, children: /* @__PURE__ */ jsx(Collapse, { children: Object.entries(tree).map(([provider, scopes]) => /* @__PURE__ */ jsx(
459
+ Collapse.Item,
460
+ {
461
+ name: provider,
462
+ header: /* @__PURE__ */ jsxs("div", { className: styles.providerHeader, children: [
463
+ /* @__PURE__ */ jsxs("div", { className: styles.providerTitle, children: [
464
+ /* @__PURE__ */ jsx(Server, { className: styles.iconMedium }),
465
+ /* @__PURE__ */ jsx("span", { children: provider })
466
+ ] }),
467
+ /* @__PURE__ */ jsx("div", { className: styles.providerMeta, children: /* @__PURE__ */ jsxs("span", { children: [
468
+ "Scope Count: ",
469
+ Object.keys(scopes).length
470
+ ] }) })
471
+ ] }),
472
+ children: /* @__PURE__ */ jsx("div", { className: styles.scopeList, children: Object.entries(scopes).map(([scopeName, packages]) => {
473
+ const list = Object.values(packages).flat();
474
+ return /* @__PURE__ */ jsxs("div", { className: styles.scopeItem, children: [
475
+ /* @__PURE__ */ jsxs("div", { className: styles.scopeHeader, children: [
476
+ /* @__PURE__ */ jsx(Layers, { className: styles.iconSmall }),
477
+ /* @__PURE__ */ jsxs("span", { children: [
478
+ "Scope: ",
479
+ scopeName
480
+ ] })
481
+ ] }),
482
+ /* @__PURE__ */ jsx("div", { className: styles.tableContainer, children: /* @__PURE__ */ jsx(
483
+ Table,
484
+ {
485
+ columns,
486
+ data: list,
487
+ pagination: false,
488
+ rowKey: "id",
489
+ border: false,
490
+ size: "small"
491
+ }
492
+ ) })
493
+ ] }, scopeName);
494
+ }) })
495
+ },
496
+ provider
497
+ )) }) }) })
498
+ ]
499
+ }
500
+ ) })
501
+ ] });
502
+ }
503
+ var SharedDepsExplorer_default = SharedDepsExplorer;
504
+ export {
505
+ SharedDepsExplorer_default as default
506
+ };
@@ -0,0 +1,5 @@
1
+ import "./index_module.css";
2
+ var index_module_default = { "container": "container_967de", "heroSection": "heroSection_967de", "heroSubtitle": "heroSubtitle_967de", "heroTitle": "heroTitle_967de", "statsGrid": "statsGrid_967de", "card": "card_967de", "cardWithPadding": "cardWithPadding_967de", "cardHeader": "cardHeader_967de", "statSpace": "statSpace_967de", "statLabel": "statLabel_967de", "statValue": "statValue_967de", "icon": "icon_967de", "iconSmall": "iconSmall_967de", "iconMedium": "iconMedium_967de", "statDescription": "statDescription_967de", "statSubtext": "statSubtext_967de", "cardFooter": "cardFooter_967de", "truncate": "truncate_967de", "mr2": "mr2_967de", "badgeGroup": "badgeGroup_967de", "statusTags": "statusTags_967de", "tagRow": "tagRow_967de", "tagContent": "tagContent_967de", "tagValue": "tagValue_967de", "mr1": "mr1_967de", "rightPanels": "rightPanels_967de", "panelStack": "panelStack_967de", "cardTitle": "cardTitle_967de", "controlsGrid": "controlsGrid_967de", "inputGroup": "inputGroup_967de", "inputLabel": "inputLabel_967de", "fullWidth": "fullWidth_967de", "resultBox": "resultBox_967de", "filterGrid": "filterGrid_967de", "padding2": "padding2_967de", "searchGrid": "searchGrid_967de", "searchInput": "searchInput_967de", "matchCount": "matchCount_967de", "matchValue": "matchValue_967de", "loadingText": "loadingText_967de", "errorText": "errorText_967de", "noMatchText": "noMatchText_967de", "treeContainer": "treeContainer_967de", "collapseWrapper": "collapseWrapper_967de", "providerHeader": "providerHeader_967de", "providerTitle": "providerTitle_967de", "providerMeta": "providerMeta_967de", "scopeList": "scopeList_967de", "scopeItem": "scopeItem_967de", "scopeHeader": "scopeHeader_967de", "tableContainer": "tableContainer_967de", "cellCol": "cellCol_967de", "packageName": "packageName_967de", "version": "version_967de", "cellColGap": "cellColGap_967de", "scopeText": "scopeText_967de", "tagContainer": "tagContainer_967de", "configTags": "configTags_967de", "scale90": "scale90_967de", "popoverContent": "popoverContent_967de", "popoverTitle": "popoverTitle_967de", "consumerList": "consumerList_967de", "consumerItem": "consumerItem_967de", "dot": "dot_967de", "btnContent": "btnContent_967de" };
3
+ export {
4
+ index_module_default as default
5
+ };