@rsdoctor/components 1.5.18 → 1.6.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.
- package/dist/components/Alert/ecma-version-check_module.css +1 -1
- package/dist/components/Alert/ecma-version-check_module.css.map +1 -1
- package/dist/components/Alerts/bundle-alert.mjs +12 -8
- package/dist/components/Alerts/bundle-alert.mjs.map +1 -1
- package/dist/components/Alerts/bundle.mjs +3 -4
- package/dist/components/Alerts/bundle.mjs.map +1 -1
- package/dist/components/Alerts/collapse-cjs-require.mjs +6 -14
- package/dist/components/Alerts/collapse-cjs-require.mjs.map +1 -1
- package/dist/components/Alerts/collapse-cross-chunks.mjs +3 -8
- package/dist/components/Alerts/collapse-cross-chunks.mjs.map +1 -1
- package/dist/components/Alerts/collapse-esm-cjs.mjs +6 -10
- package/dist/components/Alerts/collapse-esm-cjs.mjs.map +1 -1
- package/dist/components/Alerts/collapse-module-mixed-chunks.mjs +5 -12
- package/dist/components/Alerts/collapse-module-mixed-chunks.mjs.map +1 -1
- package/dist/components/Alerts/collapse-side-effects-only-imports.mjs +5 -12
- package/dist/components/Alerts/collapse-side-effects-only-imports.mjs.map +1 -1
- package/dist/components/Alerts/collapse.mjs +3 -10
- package/dist/components/Alerts/collapse.mjs.map +1 -1
- package/dist/components/Alerts/collapse_module.css +1 -1
- package/dist/components/Alerts/collapse_module.css.map +1 -1
- package/dist/components/Alerts/index.module.mjs +7 -0
- package/dist/components/Alerts/index.module.mjs.map +1 -0
- package/dist/components/Alerts/index_module.css +9 -0
- package/dist/components/Alerts/index_module.css.map +1 -0
- package/dist/components/Alerts/list.mjs +0 -3
- package/dist/components/Alerts/list.mjs.map +1 -1
- package/dist/components/Card/size.d.ts +1 -0
- package/dist/components/Card/size.mjs +29 -7
- package/dist/components/Card/size.mjs.map +1 -1
- package/dist/components/Card/size.module.mjs +1 -0
- package/dist/components/Card/size.module.mjs.map +1 -1
- package/dist/components/Card/size_module.css +5 -2
- package/dist/components/Card/size_module.css.map +1 -1
- package/dist/components/Charts/TimelineCharts/index.mjs +118 -94
- package/dist/components/Charts/TimelineCharts/index.mjs.map +1 -1
- package/dist/components/Charts/TreeMap.d.ts +2 -1
- package/dist/components/Charts/TreeMap.mjs +111 -126
- package/dist/components/Charts/TreeMap.mjs.map +1 -1
- package/dist/components/Charts/constants.d.ts +1 -0
- package/dist/components/Charts/constants.mjs +11 -1
- package/dist/components/Charts/constants.mjs.map +1 -1
- package/dist/components/Charts/index.mjs +3 -1
- package/dist/components/Charts/index.mjs.map +1 -1
- package/dist/components/Charts/loader.css +1 -1
- package/dist/components/Charts/loader.css.map +1 -1
- package/dist/components/Charts/treeMapSize.d.ts +10 -0
- package/dist/components/Charts/treeMapSize.mjs +17 -0
- package/dist/components/Charts/treeMapSize.mjs.map +1 -0
- package/dist/components/Charts/treeMapSize.test.d.ts +1 -0
- package/dist/components/Charts/treeMapSize.test.mjs +44 -0
- package/dist/components/Charts/treeMapSize.test.mjs.map +1 -0
- package/dist/components/Charts/treemap_module.css +6 -5
- package/dist/components/Charts/treemap_module.css.map +1 -1
- package/dist/components/FileTree/index.css +0 -1
- package/dist/components/FileTree/index.css.map +1 -1
- package/dist/components/FileTree/index.mjs +3 -4
- package/dist/components/FileTree/index.mjs.map +1 -1
- package/dist/components/Keyword/style_module.css +0 -1
- package/dist/components/Keyword/style_module.css.map +1 -1
- package/dist/components/Layout/header.mjs +38 -16
- package/dist/components/Layout/header.mjs.map +1 -1
- package/dist/components/Layout/header.module.mjs +5 -2
- package/dist/components/Layout/header.module.mjs.map +1 -1
- package/dist/components/Layout/header_module.css +69 -21
- package/dist/components/Layout/header_module.css.map +1 -1
- package/dist/components/Layout/index.mjs +34 -8
- package/dist/components/Layout/index.mjs.map +1 -1
- package/dist/components/Layout/menus.mjs +9 -6
- package/dist/components/Layout/menus.mjs.map +1 -1
- package/dist/components/Layout/rsdoctor-title-logo-dark.mjs +2 -0
- package/dist/components/Loader/Analysis/files.mjs +16 -17
- package/dist/components/Loader/Analysis/files.mjs.map +1 -1
- package/dist/components/Loader/Analysis/style_module.css +13 -14
- package/dist/components/Loader/Analysis/style_module.css.map +1 -1
- package/dist/components/Loader/executions.mjs +5 -13
- package/dist/components/Loader/executions.mjs.map +1 -1
- package/dist/components/Overall/DataSummary.d.ts +1 -1
- package/dist/components/Overall/DataSummary.mjs +21 -20
- package/dist/components/Overall/DataSummary.mjs.map +1 -1
- package/dist/components/Overall/DataSummary.module.mjs +1 -12
- package/dist/components/Overall/DataSummary.module.mjs.map +1 -1
- package/dist/components/Overall/DataSummary_module.css +13 -73
- package/dist/components/Overall/DataSummary_module.css.map +1 -1
- package/dist/components/Overall/bundle.mjs +2 -3
- package/dist/components/Overall/bundle.mjs.map +1 -1
- package/dist/components/Overall/bundle.module.mjs +1 -0
- package/dist/components/Overall/bundle.module.mjs.map +1 -1
- package/dist/components/Overall/bundle_module.css +12 -4
- package/dist/components/Overall/bundle_module.css.map +1 -1
- package/dist/components/Overall/list_module.css +18 -2
- package/dist/components/Overall/list_module.css.map +1 -1
- package/dist/components/Overall/overview_module.css +13 -6
- package/dist/components/Overall/overview_module.css.map +1 -1
- package/dist/components/Overall/project.mjs +1 -1
- package/dist/components/Overall/project.mjs.map +1 -1
- package/dist/components/Overall/project_module.css +8 -0
- package/dist/components/Overall/project_module.css.map +1 -1
- package/dist/components/base/CodeViewer/index.d.ts +1 -1
- package/dist/components/base/CodeViewer/index.mjs +5 -3
- package/dist/components/base/CodeViewer/index.mjs.map +1 -1
- package/dist/components/base/CodeViewer/interface.d.ts +1 -2
- package/dist/components/base/DiffViewer/index.d.ts +1 -1
- package/dist/components/base/DiffViewer/index.mjs +4 -1
- package/dist/components/base/DiffViewer/index.mjs.map +1 -1
- package/dist/components/base/DiffViewer/interface.d.ts +1 -2
- package/dist/pages/BundleSize/components/asset_module.css +7 -5
- package/dist/pages/BundleSize/components/asset_module.css.map +1 -1
- package/dist/pages/BundleSize/components/card_module.css +9 -3
- package/dist/pages/BundleSize/components/card_module.css.map +1 -1
- package/dist/pages/BundleSize/components/cards.mjs +5 -6
- package/dist/pages/BundleSize/components/cards.mjs.map +1 -1
- package/dist/pages/BundleSize/components/index.mjs +11 -8
- package/dist/pages/BundleSize/components/index.mjs.map +1 -1
- package/dist/pages/BundleSize/components/index.module.mjs +1 -6
- package/dist/pages/BundleSize/components/index.module.mjs.map +1 -1
- package/dist/pages/BundleSize/components/index_module.css +0 -37
- package/dist/pages/BundleSize/components/index_module.css.map +1 -1
- package/dist/pages/BundleSize/components/search-modal.mjs +5 -5
- package/dist/pages/BundleSize/components/search-modal.mjs.map +1 -1
- package/dist/pages/BundleSize/components/search-modal.module.mjs +10 -0
- package/dist/pages/BundleSize/components/search-modal.module.mjs.map +1 -0
- package/dist/pages/BundleSize/components/search-modal_module.css +39 -0
- package/dist/pages/BundleSize/components/search-modal_module.css.map +1 -0
- package/dist/pages/BundleSize/components/tree-graph.mjs +4 -4
- package/dist/pages/BundleSize/components/tree-graph.mjs.map +1 -1
- package/dist/pages/ModuleAnalyze/components/fileTreeCom.css +6 -2
- package/dist/pages/ModuleAnalyze/components/fileTreeCom.css.map +1 -1
- package/dist/pages/ModuleAnalyze/index.css +4 -6
- package/dist/pages/ModuleAnalyze/index.css.map +1 -1
- package/dist/pages/ModuleAnalyze/index.mjs +3 -4
- package/dist/pages/ModuleAnalyze/index.mjs.map +1 -1
- package/dist/pages/Overall/index.mjs +5 -13
- package/dist/pages/Overall/index.mjs.map +1 -1
- package/dist/pages/Overall/index.module.mjs +3 -0
- package/dist/pages/Overall/index.module.mjs.map +1 -1
- package/dist/pages/Overall/index_module.css +35 -2
- package/dist/pages/Overall/index_module.css.map +1 -1
- package/dist/pages/Overall/responsiveLayout.mjs +3 -3
- package/dist/pages/Overall/responsiveLayout.mjs.map +1 -1
- package/dist/pages/WebpackLoaders/Analysis/index.mjs +3 -3
- package/dist/pages/WebpackLoaders/Analysis/index.mjs.map +1 -1
- package/dist/pages/WebpackLoaders/Overall/index.mjs +1 -1
- package/dist/pages/WebpackLoaders/Overall/index.mjs.map +1 -1
- package/dist/static/image/rsdoctor-title-logo-dark.png +0 -0
- package/dist/utils/hooks.d.ts +1 -0
- package/dist/utils/hooks.mjs +6 -1
- package/dist/utils/hooks.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -7,13 +7,14 @@ import { TitleComponent, TooltipComponent } from "echarts/components";
|
|
|
7
7
|
import { CanvasRenderer } from "echarts/renderers";
|
|
8
8
|
import { Alert, Checkbox, Input, Radio } from "antd";
|
|
9
9
|
import { FullscreenExitOutlined, FullscreenOutlined, LeftOutlined, RightOutlined, SearchOutlined } from "@ant-design/icons";
|
|
10
|
-
import { formatSize } from "../../utils/index.mjs";
|
|
10
|
+
import { formatSize, useThemeToken } from "../../utils/index.mjs";
|
|
11
11
|
import { SDK } from "@rsdoctor/types";
|
|
12
12
|
import { ServerAPIProvider } from "../Manifest/index.mjs";
|
|
13
13
|
import { ModuleAnalyzeComponent } from "../../pages/ModuleAnalyze/index.mjs";
|
|
14
14
|
import treemap_module from "./treemap.module.mjs";
|
|
15
15
|
import { TREE_COLORS } from "./constants.mjs";
|
|
16
16
|
import { isJavaScriptAsset } from "../../utils/assets.mjs";
|
|
17
|
+
import { calculateTreeNodeTotalSize, calculateTreeNodesTotalSize } from "./treeMapSize.mjs";
|
|
17
18
|
__rspack_external_echarts_core_d2845954.use([
|
|
18
19
|
TreemapChart,
|
|
19
20
|
TooltipComponent,
|
|
@@ -48,13 +49,13 @@ function getLuminance(hex) {
|
|
|
48
49
|
function isDarkColor(hex) {
|
|
49
50
|
return getLuminance(hex) < 0.4;
|
|
50
51
|
}
|
|
51
|
-
function getLevelOption() {
|
|
52
|
+
function getLevelOption(gapColor) {
|
|
52
53
|
return [
|
|
53
54
|
{
|
|
54
55
|
itemStyle: {
|
|
55
56
|
borderWidth: 0,
|
|
56
57
|
gapWidth: 4,
|
|
57
|
-
gapColor
|
|
58
|
+
gapColor
|
|
58
59
|
}
|
|
59
60
|
},
|
|
60
61
|
{
|
|
@@ -65,7 +66,7 @@ function getLevelOption() {
|
|
|
65
66
|
],
|
|
66
67
|
borderWidth: 5,
|
|
67
68
|
gapWidth: 4,
|
|
68
|
-
gapColor
|
|
69
|
+
gapColor
|
|
69
70
|
},
|
|
70
71
|
upperLabel: {
|
|
71
72
|
show: true,
|
|
@@ -76,11 +77,12 @@ function getLevelOption() {
|
|
|
76
77
|
}
|
|
77
78
|
];
|
|
78
79
|
}
|
|
79
|
-
const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType,
|
|
80
|
+
const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, onChartClick, highlightNodeId, centerNodeId, rootPath })=>{
|
|
80
81
|
const [option, setOption] = useState(null);
|
|
81
82
|
const chartRef = react.useRef(null);
|
|
82
83
|
const chartDataRef = react.useRef([]);
|
|
83
84
|
const clickTimeoutRef = react.useRef(null);
|
|
85
|
+
const themeToken = useThemeToken();
|
|
84
86
|
useEffect(()=>{
|
|
85
87
|
if (!treeData) return;
|
|
86
88
|
function convert(node, index = 0, level = 0, parentColor, siblingIndex = 0, siblingCount = 1, chunkPath) {
|
|
@@ -153,15 +155,16 @@ const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, style, onChartClick, h
|
|
|
153
155
|
}
|
|
154
156
|
const data = treeData.map((item, index)=>convert(item, index, 0, void 0, index, treeData.length, void 0)).filter((item)=>('number' == typeof item.value ? item.value > 0 : false) || item.children && item.children.length > 0);
|
|
155
157
|
chartDataRef.current = data;
|
|
158
|
+
const textColor = themeToken.colorText;
|
|
156
159
|
setOption({
|
|
157
160
|
color: TREE_COLORS,
|
|
158
161
|
tooltip: {
|
|
159
162
|
padding: 10,
|
|
160
|
-
backgroundColor:
|
|
161
|
-
borderColor:
|
|
163
|
+
backgroundColor: themeToken.colorBgElevated,
|
|
164
|
+
borderColor: themeToken.colorBorder,
|
|
162
165
|
borderWidth: 1,
|
|
163
166
|
textStyle: {
|
|
164
|
-
color:
|
|
167
|
+
color: textColor
|
|
165
168
|
},
|
|
166
169
|
confine: true,
|
|
167
170
|
extraCssText: 'max-width: 450px; word-wrap: break-word;',
|
|
@@ -192,12 +195,12 @@ const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, style, onChartClick, h
|
|
|
192
195
|
</div>`;
|
|
193
196
|
}
|
|
194
197
|
const rows = [];
|
|
195
|
-
if (void 0 !== sourceSize && sourceSize > 0) rows.push(makeRow('Stat size', formatSize(sourceSize), '#
|
|
196
|
-
if (void 0 !== bundledSize && bundledSize > 0) rows.push(makeRow('Parsed size', formatSize(bundledSize), '#
|
|
197
|
-
if (void 0 !== gzipSize && gzipSize > 0) rows.push(makeRow('Gzipped size', formatSize(gzipSize), '#
|
|
198
|
+
if (void 0 !== sourceSize && sourceSize > 0) rows.push(makeRow('Stat size', formatSize(sourceSize), '#43c6d9'));
|
|
199
|
+
if (void 0 !== bundledSize && bundledSize > 0) rows.push(makeRow('Parsed size', formatSize(bundledSize), '#5b8ff9'));
|
|
200
|
+
if (void 0 !== gzipSize && gzipSize > 0) rows.push(makeRow('Gzipped size', formatSize(gzipSize), '#f2b84b'));
|
|
198
201
|
return `
|
|
199
202
|
<div style="font-family: sans-serif; font-size: 12px; line-height: 1.5;">
|
|
200
|
-
<div style="margin-bottom: 6px; max-width: 400px; word-wrap: break-word; overflow-wrap: break-word; word-break: break-all; white-space: normal; color:
|
|
203
|
+
<div style="margin-bottom: 6px; max-width: 400px; word-wrap: break-word; overflow-wrap: break-word; word-break: break-all; white-space: normal; color: ${textColor};">${__rspack_external_echarts_core_d2845954.format.encodeHTML(path)}</div>
|
|
201
204
|
${rows.join('')}
|
|
202
205
|
</div>
|
|
203
206
|
`;
|
|
@@ -206,9 +209,6 @@ const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, style, onChartClick, h
|
|
|
206
209
|
series: [
|
|
207
210
|
{
|
|
208
211
|
type: 'treemap',
|
|
209
|
-
itemStyle: {
|
|
210
|
-
gapColor: '#ffffff'
|
|
211
|
-
},
|
|
212
212
|
label: {
|
|
213
213
|
show: true,
|
|
214
214
|
formatter: '{b}',
|
|
@@ -235,7 +235,7 @@ const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, style, onChartClick, h
|
|
|
235
235
|
4
|
|
236
236
|
]
|
|
237
237
|
},
|
|
238
|
-
levels: getLevelOption(),
|
|
238
|
+
levels: getLevelOption(themeToken.colorBgContainer),
|
|
239
239
|
data: data,
|
|
240
240
|
breadcrumb: {
|
|
241
241
|
show: true,
|
|
@@ -247,17 +247,17 @@ const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, style, onChartClick, h
|
|
|
247
247
|
color: '#999',
|
|
248
248
|
borderColor: 'transparent',
|
|
249
249
|
borderWidth: 0,
|
|
250
|
-
borderRadius: 0
|
|
250
|
+
borderRadius: 0,
|
|
251
|
+
textStyle: {
|
|
252
|
+
fontFamily: 'sans-serif',
|
|
253
|
+
fontSize: 12,
|
|
254
|
+
color: 'white'
|
|
255
|
+
}
|
|
251
256
|
},
|
|
252
257
|
emphasis: {
|
|
253
258
|
itemStyle: {
|
|
254
259
|
color: '#333'
|
|
255
260
|
}
|
|
256
|
-
},
|
|
257
|
-
textStyle: {
|
|
258
|
-
fontFamily: 'sans-serif',
|
|
259
|
-
fontSize: 12,
|
|
260
|
-
color: '#666'
|
|
261
261
|
}
|
|
262
262
|
},
|
|
263
263
|
roam: true,
|
|
@@ -270,7 +270,7 @@ const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, style, onChartClick, h
|
|
|
270
270
|
bottom: 30,
|
|
271
271
|
left: 0,
|
|
272
272
|
right: 0,
|
|
273
|
-
|
|
273
|
+
scaleLimit: {
|
|
274
274
|
min: 0.5,
|
|
275
275
|
max: 5
|
|
276
276
|
}
|
|
@@ -281,7 +281,8 @@ const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, style, onChartClick, h
|
|
|
281
281
|
treeData,
|
|
282
282
|
sizeType,
|
|
283
283
|
highlightNodeId,
|
|
284
|
-
rootPath
|
|
284
|
+
rootPath,
|
|
285
|
+
themeToken
|
|
285
286
|
]);
|
|
286
287
|
useEffect(()=>{
|
|
287
288
|
if (centerNodeId && chartRef.current && option) {
|
|
@@ -359,7 +360,6 @@ const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, style, onChartClick, h
|
|
|
359
360
|
}, []);
|
|
360
361
|
return option ? /*#__PURE__*/ jsxs("div", {
|
|
361
362
|
className: treemap_module["chart-container"],
|
|
362
|
-
style: style,
|
|
363
363
|
children: [
|
|
364
364
|
/*#__PURE__*/ jsx(Alert, {
|
|
365
365
|
message: "If parsed size lacks detailed module information, you can enable sourceMap when RSDOCTOR = true. This is because Rsdoctor relies on SourceMap to obtain Parsed Size. Rspack provides SourceMap information to Rsdoctor by default without affecting the build output.",
|
|
@@ -369,37 +369,42 @@ const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, style, onChartClick, h
|
|
|
369
369
|
marginBottom: 0
|
|
370
370
|
}
|
|
371
371
|
}),
|
|
372
|
-
/*#__PURE__*/ jsx(
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
372
|
+
/*#__PURE__*/ jsx("div", {
|
|
373
|
+
style: {
|
|
374
|
+
flex: 1
|
|
375
|
+
},
|
|
376
|
+
children: /*#__PURE__*/ jsx(core, {
|
|
377
|
+
ref: chartRef,
|
|
378
|
+
option: option,
|
|
379
|
+
echarts: __rspack_external_echarts_core_d2845954,
|
|
380
|
+
onEvents: {
|
|
381
|
+
click: (params)=>{
|
|
382
|
+
if (clickTimeoutRef.current) window.clearTimeout(clickTimeoutRef.current);
|
|
383
|
+
clickTimeoutRef.current = window.setTimeout(()=>{
|
|
384
|
+
if (chartRef.current) {
|
|
385
|
+
const instance = chartRef.current.getEchartsInstance();
|
|
386
|
+
const data = params?.data;
|
|
387
|
+
if (instance && data?.id !== void 0) instance.dispatchAction({
|
|
388
|
+
type: 'treemapZoomToNode',
|
|
389
|
+
seriesIndex: 0,
|
|
390
|
+
targetNodeId: String(data.id)
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
}, 180);
|
|
394
|
+
},
|
|
395
|
+
dblclick: (params)=>{
|
|
396
|
+
if (clickTimeoutRef.current) {
|
|
397
|
+
window.clearTimeout(clickTimeoutRef.current);
|
|
398
|
+
clickTimeoutRef.current = null;
|
|
388
399
|
}
|
|
389
|
-
|
|
390
|
-
},
|
|
391
|
-
dblclick: (params)=>{
|
|
392
|
-
if (clickTimeoutRef.current) {
|
|
393
|
-
window.clearTimeout(clickTimeoutRef.current);
|
|
394
|
-
clickTimeoutRef.current = null;
|
|
400
|
+
onChartClick?.(params);
|
|
395
401
|
}
|
|
396
|
-
|
|
402
|
+
},
|
|
403
|
+
style: {
|
|
404
|
+
width: '100%',
|
|
405
|
+
height: '100%'
|
|
397
406
|
}
|
|
398
|
-
}
|
|
399
|
-
style: {
|
|
400
|
-
width: '100%',
|
|
401
|
-
height: '100%'
|
|
402
|
-
}
|
|
407
|
+
})
|
|
403
408
|
})
|
|
404
409
|
]
|
|
405
410
|
}) : null;
|
|
@@ -459,42 +464,37 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
|
|
|
459
464
|
}, [
|
|
460
465
|
onChartClick
|
|
461
466
|
]);
|
|
462
|
-
const enterFullscreen =
|
|
463
|
-
if (containerRef.current)
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
}
|
|
472
|
-
else if (el.mozRequestFullScreen) try {
|
|
473
|
-
el.mozRequestFullScreen();
|
|
474
|
-
setIsFullscreen(true);
|
|
475
|
-
} catch (err) {
|
|
476
|
-
console.error('Failed to enter fullscreen (moz):', err);
|
|
477
|
-
}
|
|
478
|
-
else if (el.msRequestFullscreen) try {
|
|
479
|
-
el.msRequestFullscreen();
|
|
480
|
-
setIsFullscreen(true);
|
|
481
|
-
} catch (err) {
|
|
482
|
-
console.error('Failed to enter fullscreen (ms):', err);
|
|
483
|
-
}
|
|
484
|
-
else console.error('Fullscreen API is not supported in this browser.');
|
|
467
|
+
const enterFullscreen = ()=>{
|
|
468
|
+
if (!containerRef.current) return;
|
|
469
|
+
const el = containerRef.current;
|
|
470
|
+
if (el.requestFullscreen) el.requestFullscreen().then(()=>setIsFullscreen(true)).catch((err)=>console.error('Failed to enter fullscreen:', err));
|
|
471
|
+
else if (el.webkitRequestFullscreen) try {
|
|
472
|
+
el.webkitRequestFullscreen();
|
|
473
|
+
setIsFullscreen(true);
|
|
474
|
+
} catch (err) {
|
|
475
|
+
console.error('Failed to enter fullscreen (webkit):', err);
|
|
485
476
|
}
|
|
486
|
-
|
|
487
|
-
|
|
477
|
+
else if (el.mozRequestFullScreen) try {
|
|
478
|
+
el.mozRequestFullScreen();
|
|
479
|
+
setIsFullscreen(true);
|
|
480
|
+
} catch (err) {
|
|
481
|
+
console.error('Failed to enter fullscreen (moz):', err);
|
|
482
|
+
}
|
|
483
|
+
else if (el.msRequestFullscreen) try {
|
|
484
|
+
el.msRequestFullscreen();
|
|
485
|
+
setIsFullscreen(true);
|
|
486
|
+
} catch (err) {
|
|
487
|
+
console.error('Failed to enter fullscreen (ms):', err);
|
|
488
|
+
}
|
|
489
|
+
else console.error('Fullscreen API is not supported in this browser.');
|
|
490
|
+
};
|
|
491
|
+
const exitFullscreen = ()=>{
|
|
488
492
|
document.exitFullscreen().then(()=>setIsFullscreen(false)).catch((err)=>console.error('Failed to exit fullscreen:', err));
|
|
489
|
-
}
|
|
490
|
-
const toggleFullscreen =
|
|
493
|
+
};
|
|
494
|
+
const toggleFullscreen = ()=>{
|
|
491
495
|
if (isFullscreen) exitFullscreen();
|
|
492
496
|
else enterFullscreen();
|
|
493
|
-
}
|
|
494
|
-
isFullscreen,
|
|
495
|
-
enterFullscreen,
|
|
496
|
-
exitFullscreen
|
|
497
|
-
]);
|
|
497
|
+
};
|
|
498
498
|
useEffect(()=>{
|
|
499
499
|
const handleFullscreenChange = ()=>{
|
|
500
500
|
setIsFullscreen(!!document.fullscreenElement);
|
|
@@ -539,47 +539,27 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
|
|
|
539
539
|
filteredTreeData,
|
|
540
540
|
searchQuery
|
|
541
541
|
]);
|
|
542
|
-
const handleSearchResultClick =
|
|
542
|
+
const handleSearchResultClick = (nodeId)=>{
|
|
543
543
|
setHighlightNodeId(nodeId);
|
|
544
544
|
setCenterNodeId(nodeId);
|
|
545
|
-
}
|
|
546
|
-
const removeRootPath =
|
|
545
|
+
};
|
|
546
|
+
const removeRootPath = (filepath)=>{
|
|
547
547
|
if (!rootPath || !filepath) return filepath;
|
|
548
548
|
const normalizedRoot = rootPath.replace(/\\/g, '/').replace(/\/$/, '');
|
|
549
549
|
const normalizedPath = filepath.replace(/\\/g, '/');
|
|
550
550
|
if (normalizedPath.startsWith(normalizedRoot + '/')) return normalizedPath.slice(normalizedRoot.length + 1);
|
|
551
551
|
if (normalizedPath === normalizedRoot) return '';
|
|
552
552
|
return filepath;
|
|
553
|
-
}
|
|
554
|
-
|
|
555
|
-
]);
|
|
556
|
-
const getSize = useCallback((node, type)=>{
|
|
557
|
-
if ('stat' === type) return node.sourceSize || 0;
|
|
558
|
-
if ('parsed' === type) return node.bundledSize || 0;
|
|
559
|
-
if ('gzip' === type) return node.gzipSize || 0;
|
|
560
|
-
if ('value' === type) return node.value || 0;
|
|
561
|
-
if (node.value) return node.value;
|
|
562
|
-
return 0;
|
|
563
|
-
}, []);
|
|
564
|
-
const calculateNodeTotalSize = useCallback((node, type)=>{
|
|
565
|
-
let size = getSize(node, type);
|
|
566
|
-
if (node.children && node.children.length > 0) {
|
|
567
|
-
const childrenSize = node.children.reduce((sum, child)=>sum + calculateNodeTotalSize(child, type), 0);
|
|
568
|
-
if (0 === size || !node.path && childrenSize > 0) size = childrenSize;
|
|
569
|
-
}
|
|
570
|
-
return size;
|
|
571
|
-
}, [
|
|
572
|
-
getSize
|
|
573
|
-
]);
|
|
574
|
-
const getChunkSize = useCallback((name, type)=>{
|
|
553
|
+
};
|
|
554
|
+
const getChunkSize = (name, type)=>{
|
|
575
555
|
const node = treeData.find((n)=>n.name === name);
|
|
576
556
|
if (!node) return 0;
|
|
577
557
|
const sizeTypeToUse = type || sizeType;
|
|
578
|
-
return
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
558
|
+
return calculateTreeNodeTotalSize(node, sizeTypeToUse);
|
|
559
|
+
};
|
|
560
|
+
const allAssetsSize = useMemo(()=>calculateTreeNodesTotalSize(filteredTreeData, sizeType), [
|
|
561
|
+
filteredTreeData,
|
|
562
|
+
sizeType
|
|
583
563
|
]);
|
|
584
564
|
return /*#__PURE__*/ jsxs("div", {
|
|
585
565
|
className: treemap_module.treemap,
|
|
@@ -650,12 +630,21 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
|
|
|
650
630
|
marginBottom: 8
|
|
651
631
|
}
|
|
652
632
|
}),
|
|
653
|
-
/*#__PURE__*/
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
633
|
+
/*#__PURE__*/ jsxs("div", {
|
|
634
|
+
className: treemap_module["chunk-item"],
|
|
635
|
+
children: [
|
|
636
|
+
/*#__PURE__*/ jsx(Checkbox, {
|
|
637
|
+
indeterminate: checkedAssets.length > 0 && checkedAssets.length < visibleAssetNames.length,
|
|
638
|
+
checked: visibleAssetNames.length > 0 && checkedAssets.length === visibleAssetNames.length,
|
|
639
|
+
onChange: (e)=>setCheckedAssets(e.target.checked ? visibleAssetNames : []),
|
|
640
|
+
className: treemap_module["all-none-checkbox"],
|
|
641
|
+
children: "All"
|
|
642
|
+
}),
|
|
643
|
+
/*#__PURE__*/ jsx("span", {
|
|
644
|
+
className: treemap_module["size-tag"],
|
|
645
|
+
children: formatSize(allAssetsSize)
|
|
646
|
+
})
|
|
647
|
+
]
|
|
659
648
|
}),
|
|
660
649
|
/*#__PURE__*/ jsx(Checkbox, {
|
|
661
650
|
checked: showOnlyJavaScriptAssets,
|
|
@@ -770,11 +759,7 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
|
|
|
770
759
|
onChartClick: handleChartClick,
|
|
771
760
|
highlightNodeId: highlightNodeId,
|
|
772
761
|
centerNodeId: centerNodeId,
|
|
773
|
-
rootPath: rootPath
|
|
774
|
-
style: {
|
|
775
|
-
width: '100%',
|
|
776
|
-
height: '100%'
|
|
777
|
-
}
|
|
762
|
+
rootPath: rootPath
|
|
778
763
|
}),
|
|
779
764
|
moduleId ? /*#__PURE__*/ jsx(ServerAPIProvider, {
|
|
780
765
|
api: SDK.ServerAPI.API.GetAllModuleGraph,
|