@rsdoctor/components 1.1.4 → 1.1.5
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/Charts/TreeMap.d.ts +21 -0
- package/dist/components/Charts/TreeMap.js +284 -0
- package/dist/components/Charts/TreeMap.js.map +1 -0
- package/dist/components/Charts/constants.d.ts +10 -0
- package/dist/components/Charts/constants.js +62 -0
- package/dist/components/Charts/constants.js.map +1 -1
- package/dist/pages/BundleSize/components/asset.js.map +1 -1
- package/dist/pages/BundleSize/components/index.js +26 -33
- package/dist/pages/BundleSize/components/index.js.map +1 -1
- package/dist/pages/BundleSize/components/index_module.css +4 -0
- package/dist/pages/BundleSize/components/search-modal.d.ts +7 -1
- package/dist/pages/BundleSize/components/search-modal.js +61 -30
- package/dist/pages/BundleSize/components/search-modal.js.map +1 -1
- package/dist/utils/file.d.ts +13 -1
- package/dist/utils/file.js +78 -0
- package/dist/utils/file.js.map +1 -1
- package/dist/utils/i18n/cn.js +3 -1
- package/dist/utils/i18n/cn.js.map +1 -1
- package/dist/utils/i18n/en.d.ts +2 -0
- package/dist/utils/i18n/en.js +3 -1
- package/dist/utils/i18n/en.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type TreeNode = {
|
|
3
|
+
name: string;
|
|
4
|
+
value?: number;
|
|
5
|
+
children?: TreeNode[];
|
|
6
|
+
path?: string;
|
|
7
|
+
sourceSize?: number;
|
|
8
|
+
bundledSize?: number;
|
|
9
|
+
};
|
|
10
|
+
interface TreeMapProps {
|
|
11
|
+
treeData: TreeNode[];
|
|
12
|
+
valueKey?: 'sourceSize' | 'bundledSize';
|
|
13
|
+
style?: React.CSSProperties;
|
|
14
|
+
onChartClick?: (params: any) => void;
|
|
15
|
+
}
|
|
16
|
+
export declare const TreeMap: React.ForwardRefExoticComponent<TreeMapProps & React.RefAttributes<any>>;
|
|
17
|
+
export declare const AssetTreemapWithFilter: React.FC<{
|
|
18
|
+
treeData: TreeNode[];
|
|
19
|
+
onChartClick?: (params: any) => void;
|
|
20
|
+
}>;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useEffect, useState, memo, useMemo } from "react";
|
|
3
|
+
import ReactEChartsCore from "echarts-for-react/lib/core";
|
|
4
|
+
import * as echarts from "echarts/core";
|
|
5
|
+
import { TreemapChart } from "echarts/charts";
|
|
6
|
+
import { TooltipComponent } from "echarts/components";
|
|
7
|
+
import { CanvasRenderer } from "echarts/renderers";
|
|
8
|
+
import { BUNDLE_ANALYZER_COLORS, COLOR_GROUPS } from "./constants";
|
|
9
|
+
import { Checkbox, Card, Typography, Space } from "antd";
|
|
10
|
+
import {
|
|
11
|
+
VerticalAlignBottomOutlined,
|
|
12
|
+
VerticalAlignTopOutlined
|
|
13
|
+
} from "@ant-design/icons";
|
|
14
|
+
import { formatSize, useI18n } from "../../utils";
|
|
15
|
+
import { SearchModal } from "../../pages/BundleSize/components/search-modal";
|
|
16
|
+
function hashString(str) {
|
|
17
|
+
let hash = 5381;
|
|
18
|
+
for (let i = 0; i < str.length; i++) {
|
|
19
|
+
hash = (hash << 5) + hash + str.charCodeAt(i);
|
|
20
|
+
}
|
|
21
|
+
return hash >>> 0;
|
|
22
|
+
}
|
|
23
|
+
function getLevelOption() {
|
|
24
|
+
return [
|
|
25
|
+
{
|
|
26
|
+
itemStyle: {
|
|
27
|
+
color: "white",
|
|
28
|
+
borderColor: "#eee",
|
|
29
|
+
borderWidth: 5,
|
|
30
|
+
gapWidth: 5
|
|
31
|
+
},
|
|
32
|
+
emphasis: {
|
|
33
|
+
itemStyle: {
|
|
34
|
+
borderColor: "#a29f9f"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
colorSaturation: [0.25, 0.5],
|
|
40
|
+
itemStyle: {
|
|
41
|
+
borderWidth: 5,
|
|
42
|
+
gapWidth: 5,
|
|
43
|
+
borderColorSaturation: 0.5,
|
|
44
|
+
borderColor: "#eee"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
];
|
|
48
|
+
}
|
|
49
|
+
const TreeMapInner = memo(
|
|
50
|
+
({
|
|
51
|
+
treeData,
|
|
52
|
+
valueKey = "sourceSize",
|
|
53
|
+
style,
|
|
54
|
+
onChartClick,
|
|
55
|
+
forwardedRef
|
|
56
|
+
}) => {
|
|
57
|
+
const [option, setOption] = useState(null);
|
|
58
|
+
const chartRef = React.useRef(null);
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
if (forwardedRef && chartRef.current) {
|
|
61
|
+
if (typeof forwardedRef === "function") {
|
|
62
|
+
forwardedRef(chartRef.current);
|
|
63
|
+
} else {
|
|
64
|
+
forwardedRef.current = chartRef.current;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}, [forwardedRef, chartRef.current]);
|
|
68
|
+
useEffect(() => {
|
|
69
|
+
echarts.use([TreemapChart, TooltipComponent, CanvasRenderer]);
|
|
70
|
+
}, []);
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
if (!treeData)
|
|
73
|
+
return;
|
|
74
|
+
function convert(node, colorGroup, level = 0) {
|
|
75
|
+
const groupColors = BUNDLE_ANALYZER_COLORS[colorGroup];
|
|
76
|
+
const children = node.children?.map(
|
|
77
|
+
(c, _i) => convert(c, colorGroup, level + 1)
|
|
78
|
+
);
|
|
79
|
+
return {
|
|
80
|
+
id: node.path ? hashString(node.path) : void 0,
|
|
81
|
+
name: node.name,
|
|
82
|
+
value: node[valueKey] ?? node.value ?? 0,
|
|
83
|
+
path: node.path,
|
|
84
|
+
sourceSize: node.sourceSize ?? node.value,
|
|
85
|
+
bundledSize: node.bundledSize,
|
|
86
|
+
children: children && children.length > 0 ? children : void 0,
|
|
87
|
+
itemStyle: {
|
|
88
|
+
borderWidth: 2,
|
|
89
|
+
gapWidth: 2,
|
|
90
|
+
borderColorSaturation: 0.2,
|
|
91
|
+
colorSaturation: 0.2,
|
|
92
|
+
color: groupColors[level % groupColors.length],
|
|
93
|
+
borderColor: groupColors[level % groupColors.length]
|
|
94
|
+
},
|
|
95
|
+
level
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
const data = treeData.map((item, index) => {
|
|
99
|
+
const group = COLOR_GROUPS[index % COLOR_GROUPS.length];
|
|
100
|
+
return convert(item, group, 0);
|
|
101
|
+
});
|
|
102
|
+
setOption({
|
|
103
|
+
title: {
|
|
104
|
+
text: "Bundle Tree Map",
|
|
105
|
+
left: "center"
|
|
106
|
+
},
|
|
107
|
+
tooltip: {
|
|
108
|
+
position: "top",
|
|
109
|
+
formatter: function(info) {
|
|
110
|
+
var treePathInfo = info.treePathInfo;
|
|
111
|
+
var treePath = [];
|
|
112
|
+
for (var i = 1; i < treePathInfo.length; i++) {
|
|
113
|
+
treePath.push(treePathInfo[i].name);
|
|
114
|
+
}
|
|
115
|
+
var node = info.data || {};
|
|
116
|
+
var path = node.path || treePath.join("/");
|
|
117
|
+
var sourceSize = node.sourceSize;
|
|
118
|
+
var bundledSize = node.bundledSize;
|
|
119
|
+
return [
|
|
120
|
+
'<div class="tooltip-title">' + echarts.format.encodeHTML(path) + "</div>",
|
|
121
|
+
"<div><b>Source Size:</b> <b>" + (sourceSize !== void 0 ? formatSize(sourceSize) : "-") + "</b></div>",
|
|
122
|
+
"<div><b>Bundled Size:</b> <b>" + (bundledSize !== void 0 ? formatSize(bundledSize) : "-") + "</b></div>"
|
|
123
|
+
].join("");
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
series: [
|
|
127
|
+
{
|
|
128
|
+
name: "Bundle Tree Map",
|
|
129
|
+
id: "bundle-treemap",
|
|
130
|
+
type: "treemap",
|
|
131
|
+
visibleMin: 300,
|
|
132
|
+
left: 10,
|
|
133
|
+
right: 10,
|
|
134
|
+
top: 10,
|
|
135
|
+
bottom: 10,
|
|
136
|
+
label: {
|
|
137
|
+
show: true,
|
|
138
|
+
formatter: "{b}",
|
|
139
|
+
color: "#000"
|
|
140
|
+
},
|
|
141
|
+
upperLabel: {
|
|
142
|
+
show: true,
|
|
143
|
+
height: 30
|
|
144
|
+
},
|
|
145
|
+
levels: getLevelOption(),
|
|
146
|
+
data
|
|
147
|
+
}
|
|
148
|
+
]
|
|
149
|
+
});
|
|
150
|
+
}, [treeData, valueKey]);
|
|
151
|
+
return option ? /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
152
|
+
ReactEChartsCore,
|
|
153
|
+
{
|
|
154
|
+
ref: chartRef,
|
|
155
|
+
option,
|
|
156
|
+
echarts,
|
|
157
|
+
onEvents: onChartClick ? { click: onChartClick } : void 0,
|
|
158
|
+
style: {
|
|
159
|
+
width: "100%",
|
|
160
|
+
minHeight: "500px",
|
|
161
|
+
maxHeight: "1000px",
|
|
162
|
+
border: "5px solid white",
|
|
163
|
+
borderRadius: "10px",
|
|
164
|
+
...style
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
) }) : null;
|
|
168
|
+
}
|
|
169
|
+
);
|
|
170
|
+
const TreeMap = React.forwardRef((props, ref) => /* @__PURE__ */ jsx(TreeMapInner, { ...props, forwardedRef: ref }));
|
|
171
|
+
const AssetTreemapWithFilter = ({ treeData, onChartClick }) => {
|
|
172
|
+
const assetNames = useMemo(
|
|
173
|
+
() => treeData.map((item) => item.name),
|
|
174
|
+
[treeData]
|
|
175
|
+
);
|
|
176
|
+
const [checkedAssets, setCheckedAssets] = useState(assetNames);
|
|
177
|
+
const [collapsed, setCollapsed] = useState(false);
|
|
178
|
+
const [searchModalOpen, setSearchModalOpen] = useState(false);
|
|
179
|
+
const chartRef = React.useRef(null);
|
|
180
|
+
const { t } = useI18n();
|
|
181
|
+
const filteredTreeData = useMemo(
|
|
182
|
+
() => treeData.filter((item) => checkedAssets.includes(item.name)),
|
|
183
|
+
[treeData, checkedAssets]
|
|
184
|
+
);
|
|
185
|
+
const handleModuleClick = (module) => {
|
|
186
|
+
if (!module?.path)
|
|
187
|
+
return;
|
|
188
|
+
const nodeId = hashString(module.path);
|
|
189
|
+
if (chartRef.current) {
|
|
190
|
+
const echartsInstance = chartRef.current.getEchartsInstance();
|
|
191
|
+
echartsInstance.dispatchAction({
|
|
192
|
+
type: "treemapZoomToNode",
|
|
193
|
+
seriesId: "bundle-treemap",
|
|
194
|
+
targetNodeId: nodeId.toString()
|
|
195
|
+
});
|
|
196
|
+
echartsInstance.dispatchAction({
|
|
197
|
+
type: "highlight",
|
|
198
|
+
seriesId: "bundle-treemap",
|
|
199
|
+
targetNodeId: nodeId.toString()
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
setSearchModalOpen(false);
|
|
203
|
+
};
|
|
204
|
+
return /* @__PURE__ */ jsx("div", { style: { display: "flex", flexDirection: "column", gap: 16 }, children: /* @__PURE__ */ jsxs(Space, { direction: "vertical", style: { width: "100%" }, children: [
|
|
205
|
+
/* @__PURE__ */ jsx(
|
|
206
|
+
Card,
|
|
207
|
+
{
|
|
208
|
+
title: /* @__PURE__ */ jsxs(Space, { children: [
|
|
209
|
+
/* @__PURE__ */ jsx(Typography.Text, { children: t("Output Assets List") }),
|
|
210
|
+
/* @__PURE__ */ jsx(
|
|
211
|
+
SearchModal,
|
|
212
|
+
{
|
|
213
|
+
onModuleClick: handleModuleClick,
|
|
214
|
+
open: searchModalOpen,
|
|
215
|
+
setOpen: setSearchModalOpen,
|
|
216
|
+
isIcon: true
|
|
217
|
+
}
|
|
218
|
+
)
|
|
219
|
+
] }),
|
|
220
|
+
extra: /* @__PURE__ */ jsx(
|
|
221
|
+
"span",
|
|
222
|
+
{
|
|
223
|
+
style: { cursor: "pointer", marginLeft: 8 },
|
|
224
|
+
onClick: () => setCollapsed((c) => !c),
|
|
225
|
+
"aria-label": collapsed ? t("Expand") : t("Collapse"),
|
|
226
|
+
children: collapsed ? /* @__PURE__ */ jsx(VerticalAlignBottomOutlined, {}) : /* @__PURE__ */ jsx(VerticalAlignTopOutlined, {})
|
|
227
|
+
}
|
|
228
|
+
),
|
|
229
|
+
size: "small",
|
|
230
|
+
bodyStyle: {
|
|
231
|
+
overflow: "hidden",
|
|
232
|
+
height: collapsed ? 0 : void 0,
|
|
233
|
+
padding: collapsed ? 0 : void 0,
|
|
234
|
+
transition: "height 0.3s cubic-bezier(.4,0,.2,1), padding 0.3s"
|
|
235
|
+
},
|
|
236
|
+
children: /* @__PURE__ */ jsxs(
|
|
237
|
+
"div",
|
|
238
|
+
{
|
|
239
|
+
style: {
|
|
240
|
+
opacity: collapsed ? 0 : 1,
|
|
241
|
+
transition: "opacity 0.3s",
|
|
242
|
+
gap: 8
|
|
243
|
+
},
|
|
244
|
+
children: [
|
|
245
|
+
/* @__PURE__ */ jsx(
|
|
246
|
+
Checkbox,
|
|
247
|
+
{
|
|
248
|
+
indeterminate: checkedAssets.length > 0 && checkedAssets.length < assetNames.length,
|
|
249
|
+
checked: checkedAssets.length === assetNames.length,
|
|
250
|
+
onChange: (e) => setCheckedAssets(e.target.checked ? assetNames : []),
|
|
251
|
+
style: { marginBottom: 4 },
|
|
252
|
+
children: "ALL / NONE"
|
|
253
|
+
}
|
|
254
|
+
),
|
|
255
|
+
/* @__PURE__ */ jsx(
|
|
256
|
+
Checkbox.Group,
|
|
257
|
+
{
|
|
258
|
+
options: assetNames,
|
|
259
|
+
value: checkedAssets,
|
|
260
|
+
onChange: setCheckedAssets,
|
|
261
|
+
style: { display: "flex", gap: 8, fontWeight: 500 }
|
|
262
|
+
}
|
|
263
|
+
)
|
|
264
|
+
]
|
|
265
|
+
}
|
|
266
|
+
)
|
|
267
|
+
}
|
|
268
|
+
),
|
|
269
|
+
/* @__PURE__ */ jsx("div", { style: { flex: 1 }, children: /* @__PURE__ */ jsx(
|
|
270
|
+
TreeMap,
|
|
271
|
+
{
|
|
272
|
+
ref: chartRef,
|
|
273
|
+
treeData: filteredTreeData,
|
|
274
|
+
onChartClick
|
|
275
|
+
}
|
|
276
|
+
) })
|
|
277
|
+
] }) });
|
|
278
|
+
};
|
|
279
|
+
export {
|
|
280
|
+
AssetTreemapWithFilter,
|
|
281
|
+
TreeMap
|
|
282
|
+
};
|
|
283
|
+
|
|
284
|
+
//# sourceMappingURL=TreeMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"mappings":"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","names":[],"ignoreList":[],"sources":["../../../src/components/Charts/TreeMap.tsx"],"sourcesContent":["import React, { useEffect, useState, memo, useMemo } from 'react';\nimport ReactEChartsCore from 'echarts-for-react/lib/core';\nimport * as echarts from 'echarts/core';\nimport { TreemapChart } from 'echarts/charts';\nimport { TooltipComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { BUNDLE_ANALYZER_COLORS, COLOR_GROUPS } from './constants';\nimport { Checkbox, Card, Typography, Space } from 'antd';\nimport {\n VerticalAlignBottomOutlined,\n VerticalAlignTopOutlined,\n} from '@ant-design/icons';\nimport { formatSize, useI18n } from '../../utils';\nimport { SearchModal } from '../../pages/BundleSize/components/search-modal';\n\n// TreeNode type should match the output of flattenTreemapData\nexport type TreeNode = {\n name: string;\n value?: number;\n children?: TreeNode[];\n path?: string;\n sourceSize?: number;\n bundledSize?: number;\n};\n\ninterface TreeMapProps {\n treeData: TreeNode[];\n valueKey?: 'sourceSize' | 'bundledSize'; // which value to show as area\n style?: React.CSSProperties;\n onChartClick?: (params: any) => void;\n}\n\n// Simple hash function for string (djb2)\nfunction hashString(str: string): number {\n let hash = 5381;\n for (let i = 0; i < str.length; i++) {\n hash = (hash << 5) + hash + str.charCodeAt(i); /* hash * 33 + c */\n }\n return hash >>> 0; // Ensure unsigned\n}\n\nfunction getLevelOption() {\n return [\n {\n itemStyle: {\n color: 'white',\n borderColor: '#eee',\n borderWidth: 5,\n gapWidth: 5,\n },\n emphasis: {\n itemStyle: {\n borderColor: '#a29f9f',\n },\n },\n },\n {\n colorSaturation: [0.25, 0.5],\n itemStyle: {\n borderWidth: 5,\n gapWidth: 5,\n borderColorSaturation: 0.5,\n borderColor: '#eee',\n },\n },\n ];\n}\n\nconst TreeMapInner: React.FC<TreeMapProps & { forwardedRef?: React.Ref<any> }> =\n memo(\n ({\n treeData,\n valueKey = 'sourceSize',\n style,\n onChartClick,\n forwardedRef,\n }) => {\n const [option, setOption] = useState<any>(null);\n const chartRef = React.useRef<any>(null);\n\n // Expose chartRef to parent if forwardedRef is provided\n useEffect(() => {\n if (forwardedRef && chartRef.current) {\n if (typeof forwardedRef === 'function') {\n forwardedRef(chartRef.current);\n } else {\n (forwardedRef as React.MutableRefObject<any>).current =\n chartRef.current;\n }\n }\n }, [forwardedRef, chartRef.current]);\n\n // Register ECharts components\n useEffect(() => {\n echarts.use([TreemapChart, TooltipComponent, CanvasRenderer]);\n }, []);\n\n useEffect(() => {\n if (!treeData) return;\n // Helper to recursively add value field for ECharts\n function convert(\n node: TreeNode,\n colorGroup: keyof typeof BUNDLE_ANALYZER_COLORS,\n level = 0,\n ): any {\n const groupColors = BUNDLE_ANALYZER_COLORS[colorGroup];\n const children = node.children?.map((c, _i) =>\n convert(c, colorGroup, level + 1),\n );\n\n return {\n id: node.path ? hashString(node.path) : undefined,\n name: node.name,\n value: node[valueKey] ?? node.value ?? 0,\n path: node.path,\n sourceSize: node.sourceSize ?? node.value,\n bundledSize: node.bundledSize,\n children: children && children.length > 0 ? children : undefined,\n itemStyle: {\n borderWidth: 2,\n gapWidth: 2,\n borderColorSaturation: 0.2,\n colorSaturation: 0.2,\n color: groupColors[level % groupColors.length],\n borderColor: groupColors[level % groupColors.length],\n },\n level,\n };\n }\n const data = treeData.map((item, index) => {\n const group = COLOR_GROUPS[index % COLOR_GROUPS.length];\n return convert(item, group, 0);\n });\n\n setOption({\n title: {\n text: 'Bundle Tree Map',\n left: 'center',\n },\n tooltip: {\n position: 'top',\n formatter: function (info: any) {\n var treePathInfo = info.treePathInfo;\n var treePath = [];\n for (var i = 1; i < treePathInfo.length; i++) {\n treePath.push(treePathInfo[i].name);\n }\n // Get extra info from node data\n var node = info.data || {};\n var path = node.path || treePath.join('/');\n var sourceSize = node.sourceSize;\n var bundledSize = node.bundledSize;\n return [\n '<div class=\"tooltip-title\">' +\n echarts.format.encodeHTML(path) +\n '</div>',\n '<div><b>Source Size:</b> <b>' +\n (sourceSize !== undefined ? formatSize(sourceSize) : '-') +\n '</b></div>',\n '<div><b>Bundled Size:</b> <b>' +\n (bundledSize !== undefined ? formatSize(bundledSize) : '-') +\n '</b></div>',\n ].join('');\n },\n },\n series: [\n {\n name: 'Bundle Tree Map',\n id: 'bundle-treemap',\n type: 'treemap',\n visibleMin: 300,\n left: 10,\n right: 10,\n top: 10,\n bottom: 10,\n label: {\n show: true,\n formatter: '{b}',\n color: '#000',\n },\n upperLabel: {\n show: true,\n height: 30,\n },\n\n levels: getLevelOption(),\n data: data,\n },\n ],\n });\n }, [treeData, valueKey]);\n\n return option ? (\n <div>\n <ReactEChartsCore\n ref={chartRef}\n option={option}\n echarts={echarts}\n onEvents={onChartClick ? { click: onChartClick } : undefined}\n style={{\n width: '100%',\n minHeight: '500px',\n maxHeight: '1000px',\n border: '5px solid white',\n borderRadius: '10px',\n ...style,\n }}\n />\n </div>\n ) : null;\n },\n );\n\nexport const TreeMap = React.forwardRef<any, TreeMapProps>((props, ref) => (\n <TreeMapInner {...props} forwardedRef={ref} />\n));\n\nexport const AssetTreemapWithFilter: React.FC<{\n treeData: TreeNode[];\n onChartClick?: (params: any) => void;\n}> = ({ treeData, onChartClick }) => {\n const assetNames = useMemo(\n () => treeData.map((item) => item.name),\n [treeData],\n );\n const [checkedAssets, setCheckedAssets] = useState<string[]>(assetNames);\n const [collapsed, setCollapsed] = useState(false);\n const [searchModalOpen, setSearchModalOpen] = useState(false);\n const chartRef = React.useRef<any>(null);\n const { t } = useI18n();\n\n const filteredTreeData = useMemo(\n () => treeData.filter((item) => checkedAssets.includes(item.name)),\n [treeData, checkedAssets],\n );\n\n // Handler for search modal click\n const handleModuleClick = (module: any) => {\n if (!module?.path) return;\n const nodeId = hashString(module.path);\n if (chartRef.current) {\n const echartsInstance = chartRef.current.getEchartsInstance();\n echartsInstance.dispatchAction({\n type: 'treemapZoomToNode',\n seriesId: 'bundle-treemap',\n targetNodeId: nodeId.toString(),\n });\n echartsInstance.dispatchAction({\n type: 'highlight',\n seriesId: 'bundle-treemap',\n targetNodeId: nodeId.toString(),\n });\n }\n setSearchModalOpen(false);\n };\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <Card\n title={\n <Space>\n <Typography.Text>{t('Output Assets List')}</Typography.Text>\n <SearchModal\n onModuleClick={handleModuleClick}\n open={searchModalOpen}\n setOpen={setSearchModalOpen}\n isIcon={true}\n />\n </Space>\n }\n extra={\n <span\n style={{ cursor: 'pointer', marginLeft: 8 }}\n onClick={() => setCollapsed((c) => !c)}\n aria-label={collapsed ? t('Expand') : t('Collapse')}\n >\n {collapsed ? (\n <VerticalAlignBottomOutlined />\n ) : (\n <VerticalAlignTopOutlined />\n )}\n </span>\n }\n size=\"small\"\n bodyStyle={{\n overflow: 'hidden',\n height: collapsed ? 0 : undefined,\n padding: collapsed ? 0 : undefined,\n transition: 'height 0.3s cubic-bezier(.4,0,.2,1), padding 0.3s',\n }}\n >\n <div\n style={{\n opacity: collapsed ? 0 : 1,\n transition: 'opacity 0.3s',\n gap: 8,\n }}\n >\n <Checkbox\n indeterminate={\n checkedAssets.length > 0 &&\n checkedAssets.length < assetNames.length\n }\n checked={checkedAssets.length === assetNames.length}\n onChange={(e) =>\n setCheckedAssets(e.target.checked ? assetNames : [])\n }\n style={{ marginBottom: 4 }}\n >\n {'ALL / NONE'}\n </Checkbox>\n <Checkbox.Group\n options={assetNames}\n value={checkedAssets}\n onChange={setCheckedAssets}\n style={{ display: 'flex', gap: 8, fontWeight: 500 }}\n />\n </div>\n </Card>\n <div style={{ flex: 1 }}>\n <TreeMap\n ref={chartRef}\n treeData={filteredTreeData}\n onChartClick={onChartClick}\n />\n </div>\n </Space>\n </div>\n );\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|
|
@@ -7,3 +7,13 @@ export declare enum ChartTypes {
|
|
|
7
7
|
Loader = 4,
|
|
8
8
|
Normal = 5
|
|
9
9
|
}
|
|
10
|
+
export declare const BUNDLE_ANALYZER_COLORS: {
|
|
11
|
+
readonly green: readonly [string, string, string, string, string, string, string];
|
|
12
|
+
readonly blue: readonly [string, string, string, string, string, string, string];
|
|
13
|
+
readonly purple: readonly [string, string, string, string, string, string, string];
|
|
14
|
+
readonly yellow: readonly [string, string, string, string, string, string, string];
|
|
15
|
+
readonly grey: readonly [string, string, string, string, string, string, string];
|
|
16
|
+
};
|
|
17
|
+
type ColorGroup = keyof typeof BUNDLE_ANALYZER_COLORS;
|
|
18
|
+
export declare const COLOR_GROUPS: ColorGroup[];
|
|
19
|
+
export {};
|
|
@@ -36,7 +36,69 @@ var ChartTypes = /* @__PURE__ */ ((ChartTypes2) => {
|
|
|
36
36
|
ChartTypes2[ChartTypes2["Normal"] = 5] = "Normal";
|
|
37
37
|
return ChartTypes2;
|
|
38
38
|
})(ChartTypes || {});
|
|
39
|
+
const BUNDLE_ANALYZER_COLORS = {
|
|
40
|
+
green: [
|
|
41
|
+
hexToRgba("#32b26a", 0.6),
|
|
42
|
+
hexToRgba("#5fcf92", 0.6),
|
|
43
|
+
hexToRgba("#8ee2b6", 0.8),
|
|
44
|
+
hexToRgba("#b7e1cd", 1),
|
|
45
|
+
hexToRgba("#cdeee0", 1),
|
|
46
|
+
hexToRgba("#e0f7ef", 1),
|
|
47
|
+
hexToRgba("#c8e6d6", 1)
|
|
48
|
+
],
|
|
49
|
+
blue: [
|
|
50
|
+
hexToRgba("#3498f7", 0.6),
|
|
51
|
+
hexToRgba("#5eb3fa", 0.6),
|
|
52
|
+
hexToRgba("#8ccafc", 0.8),
|
|
53
|
+
hexToRgba("#b3d8f8", 1),
|
|
54
|
+
hexToRgba("#cde6fa", 1),
|
|
55
|
+
hexToRgba("#e0f2fd", 1),
|
|
56
|
+
hexToRgba("#c8e0ef", 1)
|
|
57
|
+
],
|
|
58
|
+
purple: [
|
|
59
|
+
hexToRgba("#a04ddb", 0.6),
|
|
60
|
+
hexToRgba("#b26ef0", 0.6),
|
|
61
|
+
hexToRgba("#c49ff5", 0.8),
|
|
62
|
+
hexToRgba("#d1b3e6", 1),
|
|
63
|
+
hexToRgba("#e0c8f2", 1),
|
|
64
|
+
hexToRgba("#f0e6fa", 1),
|
|
65
|
+
hexToRgba("#d6c8e6", 1)
|
|
66
|
+
],
|
|
67
|
+
yellow: [
|
|
68
|
+
hexToRgba("#ffe066", 0.6),
|
|
69
|
+
hexToRgba("#ffec80", 0.6),
|
|
70
|
+
hexToRgba("#fff599", 0.8),
|
|
71
|
+
hexToRgba("#fff9c4", 1),
|
|
72
|
+
hexToRgba("#fffbe0", 1),
|
|
73
|
+
hexToRgba("#fffde7", 1),
|
|
74
|
+
hexToRgba("#f5f2c8", 1)
|
|
75
|
+
],
|
|
76
|
+
grey: [
|
|
77
|
+
hexToRgba("#7a7a7a", 0.7),
|
|
78
|
+
hexToRgba("#969696", 0.7),
|
|
79
|
+
hexToRgba("#b0b0b0", 0.8),
|
|
80
|
+
hexToRgba("#c8c8c8", 1),
|
|
81
|
+
hexToRgba("#dcdcdc", 1),
|
|
82
|
+
hexToRgba("#ededed", 1),
|
|
83
|
+
hexToRgba("#f7f7f7", 1)
|
|
84
|
+
]
|
|
85
|
+
};
|
|
86
|
+
function hexToRgba(hex, alpha = 1) {
|
|
87
|
+
const r = parseInt(hex.slice(1, 3), 16);
|
|
88
|
+
const g = parseInt(hex.slice(3, 5), 16);
|
|
89
|
+
const b = parseInt(hex.slice(5, 7), 16);
|
|
90
|
+
return `rgba(${r}, ${g}, ${b}, ${alpha})`;
|
|
91
|
+
}
|
|
92
|
+
const COLOR_GROUPS = [
|
|
93
|
+
"blue",
|
|
94
|
+
"purple",
|
|
95
|
+
"yellow",
|
|
96
|
+
"grey",
|
|
97
|
+
"green"
|
|
98
|
+
];
|
|
39
99
|
export {
|
|
100
|
+
BUNDLE_ANALYZER_COLORS,
|
|
101
|
+
COLOR_GROUPS,
|
|
40
102
|
ChartTypes,
|
|
41
103
|
PALETTE_COLORS
|
|
42
104
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"AAAO,MAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAK,aAAL,kBAAKA,gBAAL;AACL,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AANU,SAAAA;AAAA","names":["ChartTypes"],"ignoreList":[],"sources":["../../../src/components/Charts/constants.ts"],"sourcesContent":["export const PALETTE_COLORS = [\n '#F2793D',\n '#F28B24',\n '#F2A200',\n '#F5CC00',\n '#F5E000',\n '#A3D900',\n '#66CC00',\n '#0AC419',\n '#0AC496',\n '#0AC7D1',\n '#00A8E0',\n '#1471F5',\n '#4060FF',\n '#7559FF',\n '#884DFF',\n '#A526FF',\n '#BA39E5',\n '#C700D9',\n '#D900B5',\n '#E50099',\n '#E52E6B',\n '#F24957',\n '#30B2F2',\n '#00BF70',\n '#5959FF',\n '#9F40FF',\n '#528BFF',\n];\n\nexport enum ChartTypes {\n Bootstrap,\n Compile,\n Done,\n Minify,\n Loader,\n Normal,\n}\n"]}
|
|
1
|
+
{"version":3,"mappings":"AAAO,MAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAK,aAAL,kBAAKA,gBAAL;AACL,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AANU,SAAAA;AAAA;AASL,MAAM,yBAAyB;AAAA,EACpC,OAAO;AAAA,IACL,UAAU,WAAW,GAAG;AAAA,IACxB,UAAU,WAAW,GAAG;AAAA,IACxB,UAAU,WAAW,GAAG;AAAA,IACxB,UAAU,WAAW,CAAC;AAAA,IACtB,UAAU,WAAW,CAAC;AAAA,IACtB,UAAU,WAAW,CAAC;AAAA,IACtB,UAAU,WAAW,CAAC;AAAA,EACxB;AAAA,EACA,MAAM;AAAA,IACJ,UAAU,WAAW,GAAG;AAAA,IACxB,UAAU,WAAW,GAAG;AAAA,IACxB,UAAU,WAAW,GAAG;AAAA,IACxB,UAAU,WAAW,CAAC;AAAA,IACtB,UAAU,WAAW,CAAC;AAAA,IACtB,UAAU,WAAW,CAAC;AAAA,IACtB,UAAU,WAAW,CAAC;AAAA,EACxB;AAAA,EACA,QAAQ;AAAA,IACN,UAAU,WAAW,GAAG;AAAA,IACxB,UAAU,WAAW,GAAG;AAAA,IACxB,UAAU,WAAW,GAAG;AAAA,IACxB,UAAU,WAAW,CAAC;AAAA,IACtB,UAAU,WAAW,CAAC;AAAA,IACtB,UAAU,WAAW,CAAC;AAAA,IACtB,UAAU,WAAW,CAAC;AAAA,EACxB;AAAA,EACA,QAAQ;AAAA,IACN,UAAU,WAAW,GAAG;AAAA,IACxB,UAAU,WAAW,GAAG;AAAA,IACxB,UAAU,WAAW,GAAG;AAAA,IACxB,UAAU,WAAW,CAAC;AAAA,IACtB,UAAU,WAAW,CAAC;AAAA,IACtB,UAAU,WAAW,CAAC;AAAA,IACtB,UAAU,WAAW,CAAC;AAAA,EACxB;AAAA,EACA,MAAM;AAAA,IACJ,UAAU,WAAW,GAAG;AAAA,IACxB,UAAU,WAAW,GAAG;AAAA,IACxB,UAAU,WAAW,GAAG;AAAA,IACxB,UAAU,WAAW,CAAC;AAAA,IACtB,UAAU,WAAW,CAAC;AAAA,IACtB,UAAU,WAAW,CAAC;AAAA,IACtB,UAAU,WAAW,CAAC;AAAA,EACxB;AACF;AAEA,SAAS,UAAU,KAAa,QAAQ,GAAG;AACzC,QAAM,IAAI,SAAS,IAAI,MAAM,GAAG,CAAC,GAAG,EAAE;AACtC,QAAM,IAAI,SAAS,IAAI,MAAM,GAAG,CAAC,GAAG,EAAE;AACtC,QAAM,IAAI,SAAS,IAAI,MAAM,GAAG,CAAC,GAAG,EAAE;AACtC,SAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK;AACxC;AAGO,MAAM,eAA6B;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF","names":["ChartTypes"],"ignoreList":[],"sources":["../../../src/components/Charts/constants.ts"],"sourcesContent":["export const PALETTE_COLORS = [\n '#F2793D',\n '#F28B24',\n '#F2A200',\n '#F5CC00',\n '#F5E000',\n '#A3D900',\n '#66CC00',\n '#0AC419',\n '#0AC496',\n '#0AC7D1',\n '#00A8E0',\n '#1471F5',\n '#4060FF',\n '#7559FF',\n '#884DFF',\n '#A526FF',\n '#BA39E5',\n '#C700D9',\n '#D900B5',\n '#E50099',\n '#E52E6B',\n '#F24957',\n '#30B2F2',\n '#00BF70',\n '#5959FF',\n '#9F40FF',\n '#528BFF',\n];\n\nexport enum ChartTypes {\n Bootstrap,\n Compile,\n Done,\n Minify,\n Loader,\n Normal,\n}\n\nexport const BUNDLE_ANALYZER_COLORS = {\n green: [\n hexToRgba('#32b26a', 0.6),\n hexToRgba('#5fcf92', 0.6),\n hexToRgba('#8ee2b6', 0.8),\n hexToRgba('#b7e1cd', 1),\n hexToRgba('#cdeee0', 1),\n hexToRgba('#e0f7ef', 1),\n hexToRgba('#c8e6d6', 1),\n ],\n blue: [\n hexToRgba('#3498f7', 0.6),\n hexToRgba('#5eb3fa', 0.6),\n hexToRgba('#8ccafc', 0.8),\n hexToRgba('#b3d8f8', 1),\n hexToRgba('#cde6fa', 1),\n hexToRgba('#e0f2fd', 1),\n hexToRgba('#c8e0ef', 1),\n ],\n purple: [\n hexToRgba('#a04ddb', 0.6),\n hexToRgba('#b26ef0', 0.6),\n hexToRgba('#c49ff5', 0.8),\n hexToRgba('#d1b3e6', 1),\n hexToRgba('#e0c8f2', 1),\n hexToRgba('#f0e6fa', 1),\n hexToRgba('#d6c8e6', 1),\n ],\n yellow: [\n hexToRgba('#ffe066', 0.6),\n hexToRgba('#ffec80', 0.6),\n hexToRgba('#fff599', 0.8),\n hexToRgba('#fff9c4', 1),\n hexToRgba('#fffbe0', 1),\n hexToRgba('#fffde7', 1),\n hexToRgba('#f5f2c8', 1),\n ],\n grey: [\n hexToRgba('#7a7a7a', 0.7),\n hexToRgba('#969696', 0.7),\n hexToRgba('#b0b0b0', 0.8),\n hexToRgba('#c8c8c8', 1),\n hexToRgba('#dcdcdc', 1),\n hexToRgba('#ededed', 1),\n hexToRgba('#f7f7f7', 1),\n ],\n} as const;\n\nfunction hexToRgba(hex: string, alpha = 1) {\n const r = parseInt(hex.slice(1, 3), 16);\n const g = parseInt(hex.slice(3, 5), 16);\n const b = parseInt(hex.slice(5, 7), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\ntype ColorGroup = keyof typeof BUNDLE_ANALYZER_COLORS;\nexport const COLOR_GROUPS: ColorGroup[] = [\n 'blue',\n 'purple',\n 'yellow',\n 'grey',\n 'green',\n];\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"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","names":["mods"],"ignoreList":[],"sources":["../../../../src/pages/BundleSize/components/asset.tsx"],"sourcesContent":["import {\n CodepenCircleOutlined,\n ColumnHeightOutlined,\n InfoCircleOutlined,\n} from '@ant-design/icons';\nimport { SDK } from '@rsdoctor/types';\nimport {\n Button,\n Card,\n Col,\n Divider,\n Empty,\n Popover,\n Row,\n Space,\n Tag,\n Tooltip,\n Tree,\n Typography,\n} from 'antd';\nimport { DataNode as AntdDataNode } from 'antd/es/tree';\nimport { omitBy, sumBy } from 'lodash-es';\nimport { dirname, relative } from 'path';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { CodeViewer } from '../../../components/base';\nimport { Badge as Bdg } from '../../../components/Badge';\nimport { KeywordInput } from '../../../components/Form/keyword';\nimport { Keyword } from '../../../components/Keyword';\nimport { ServerAPIProvider } from '../../../components/Manifest';\nimport { TextDrawer } from '../../../components/TextDrawer';\nimport { Size } from '../../../constants';\nimport {\n DataNode,\n createFileStructures,\n formatSize,\n isJsDataUrl,\n useI18n,\n} from '../../../utils';\nimport { ModuleAnalyzeComponent } from '../../ModuleAnalyze';\nimport { ModuleGraphListContext } from '../config';\nimport styles from './index.module';\n\nconst { DirectoryTree } = Tree;\n\nlet expandedModulesKeys: React.Key[] = [];\nconst TAB_MAP = {\n source: 'source code',\n transformed: 'Transformed Code (After compile)',\n parsedSource: 'Bundled Code (After bundle and tree-shaking)',\n};\n\nconst tagStyle = {\n margin: 'none',\n marginInlineEnd: 0,\n};\n\nconst EmptyCodeItem = () => (\n <Empty\n description={`Do not have the module code.\n (1) If you use the brief mode, there will not have any codes to show.\n (2) If you use lite mode, there will not have source codes.`}\n />\n);\n\nexport const ModuleCodeViewer: React.FC<{ data: SDK.ModuleData }> = ({\n data,\n}) => {\n const [tab, setTab] = useState('');\n const { t } = useI18n();\n\n const TAB_LAB_MAP: Record<string, string> = {\n source: 'Source Code',\n transformed: `Transformed Code(${t('After Compile')})`,\n parsedSource: `Bundled Code(${t('After Bundled')})`,\n };\n if (!data) return null;\n\n const { path } = data;\n\n return (\n <TextDrawer\n text=\"\"\n buttonProps={{\n size: 'small',\n icon: (\n <Popover content=\"Open the Codes Box\">\n <CodepenCircleOutlined />\n </Popover>\n ),\n type: 'default',\n }}\n buttonStyle={{ padding: `0 4px` }}\n drawerProps={{\n destroyOnClose: true,\n title: `Code of \"${path}\"`,\n }}\n >\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetModuleCodeByModuleId}\n body={{ moduleId: data.id }}\n >\n {(source) => {\n return (\n <>\n {!source['source'] &&\n !source['parsedSource'] &&\n !source['transformed'] ? (\n <EmptyCodeItem />\n ) : (\n <Card\n className=\"code-size-card\"\n style={{ width: '100%' }}\n tabList={Object.keys(omitBy(source, (s) => !s))\n .map((k) => ({ tab: k }))\n .map((e) => ({\n ...e,\n tab: TAB_LAB_MAP[e.tab],\n key: e.tab,\n }))}\n defaultActiveTabKey={\n source['parsedSource'] ? 'parsedSource' : 'source'\n }\n onTabChange={(v) => setTab(v)}\n tabBarExtraContent={\n <Popover\n placement=\"bottom\"\n title={\n <Typography.Title level={5}>Explain</Typography.Title>\n }\n content={\n <>\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n marginBottom: 30,\n }}\n >\n <div>\n <Typography.Text strong>Source: </Typography.Text>\n <Typography.Text>\n {TAB_MAP.source}\n </Typography.Text>\n </div>\n <div>\n <Typography.Text strong>\n Transformed:\n </Typography.Text>\n <Typography.Text>\n {TAB_MAP.transformed}\n </Typography.Text>\n </div>\n <div>\n <Typography.Text strong>\n Bundled Source:\n </Typography.Text>\n <Typography.Text>\n {TAB_MAP.parsedSource}\n </Typography.Text>\n </div>\n <br />\n <Typography.Text strong>{'More'}</Typography.Text>\n <Typography.Text>\n {t('CodeModeExplain')}\n </Typography.Text>\n </div>\n </>\n }\n trigger={'hover'}\n >\n <a href=\"#\">Explain</a>\n </Popover>\n }\n styles={{ body: { padding: 0, overflow: 'hidden' } }}\n >\n {source['parsedSource'] ||\n source['source'] ||\n source['transformed'] ? (\n <CodeViewer\n isEmbed\n code={\n tab\n ? source[tab as keyof SDK.ModuleSource]\n : source['parsedSource']\n ? source['parsedSource']\n : source['source']\n }\n filePath={path}\n />\n ) : (\n <EmptyCodeItem />\n )}\n </Card>\n )}\n </>\n );\n }}\n </ServerAPIProvider>\n </TextDrawer>\n );\n};\n\nexport const ModuleGraphViewer: React.FC<{\n id: number | string;\n show: boolean;\n setShow: (_show: boolean) => void;\n cwd: string;\n}> = ({ id, show, setShow, cwd }) => {\n if (!id) return null;\n\n return (\n <ServerAPIProvider api={SDK.ServerAPI.API.GetAllModuleGraph} body={{}}>\n {(modules) => (\n <ModuleAnalyzeComponent\n cwd={cwd}\n moduleId={id}\n modules={modules}\n show={show}\n setShow={setShow}\n />\n )}\n </ServerAPIProvider>\n );\n};\n\nconst inlinedResourcePathKey = '__RESOURCEPATH__';\n\nexport function getChildrenModule(node: DataNode, mods: string[]) {\n node.children &&\n node.children.forEach((n: DataNode) => {\n if (n.isLeaf) {\n mods.push(n[inlinedResourcePathKey]);\n } else {\n getChildrenModule(n, mods);\n }\n });\n\n return mods;\n}\n\nexport const ModulesStatistics: React.FC<{\n modules: SDK.ModuleData[];\n chunks: SDK.ChunkData[];\n filteredModules: SDK.ModuleData[];\n}> = ({ modules, chunks, filteredModules }) => {\n const { sourceSize, parsedSize, filteredParsedSize, filteredSourceSize } =\n useMemo(() => {\n return {\n sourceSize: sumBy(modules, (e) => e.size.sourceSize),\n parsedSize: sumBy(modules, (e) => e.size.parsedSize),\n filteredSourceSize: sumBy(filteredModules, (e) => e.size.sourceSize),\n filteredParsedSize: sumBy(filteredModules, (e) => e.size.parsedSize),\n };\n }, [modules, filteredModules]);\n\n return (\n <Space>\n <Tooltip\n title={`total modules count is ${modules.length}, the filtered modules count is ${filteredModules.length}`}\n >\n <Space>\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 12, fontWeight: 400 }}\n >\n Modules: {filteredModules.length} / {modules.length}\n </Typography.Text>\n <InfoCircleOutlined />\n </Space>\n </Tooltip>\n <Divider type=\"vertical\" />\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n Total modules bundled size: {formatSize(parsedSize)}\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit' }}>\n Total modules source size: {formatSize(sourceSize)}\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit' }}>\n Filtered modules bundled size: {formatSize(filteredParsedSize)}\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit' }}>\n Filtered modules source size: {formatSize(filteredSourceSize)}\n </Typography.Text>\n </Space>\n }\n >\n <Space>\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 12, fontWeight: 400 }}\n >\n Modules Size:\n {filteredParsedSize === parsedSize\n ? formatSize(parsedSize)\n : `${formatSize(filteredParsedSize)} / ${formatSize(parsedSize)}`}\n </Typography.Text>\n <InfoCircleOutlined />\n </Space>\n </Tooltip>\n <Divider type=\"vertical\" />\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n this asset includes {chunks.length} chunks:\n </Typography.Text>\n {chunks.map((e) => (\n <Bdg label=\"chunk\" value={e.name} key={e.name} />\n ))}\n </Space>\n }\n >\n <Space>\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 12, fontWeight: 400 }}\n >\n Chunks: {chunks.length}\n </Typography.Text>\n <InfoCircleOutlined />\n </Space>\n </Tooltip>\n </Space>\n );\n};\n\nconst ConcatenatedTag = ({ moduleCount }: { moduleCount: number }) => {\n return (\n <Tooltip\n title={\n <Space>\n <Typography.Text style={{ color: 'inherit' }}>\n This is a concatenated container module that includes {moduleCount}{' '}\n modules\n </Typography.Text>\n </Space>\n }\n >\n <Tag color=\"blue\" style={tagStyle}>\n concatenated container\n </Tag>\n </Tooltip>\n );\n};\n\nconst TotalBundledSizeTag = ({ size }: { size: number }) => {\n return (\n <Tooltip\n title={\n <Space>\n <Typography.Text style={{ color: 'inherit' }}>\n The total output size of all the files in this folder. If you\n enabled minification, this value shows the minified size.\n </Typography.Text>\n </Space>\n }\n >\n <Tag style={tagStyle} color={'geekblue'}>\n {`bundled size: ${formatSize(size)}`}\n </Tag>\n </Tooltip>\n );\n};\n\nconst BundledSizeTag = ({ size }: { size: number }) => {\n return (\n <Tooltip\n title={\n <Space>\n <Typography.Text style={{ color: 'inherit' }}>\n The final output size of this file. If you enabled minification,\n this value shows the minified size.\n </Typography.Text>\n </Space>\n }\n >\n <Tag color={'geekblue'}>{`bundled size: ${formatSize(size)}`}</Tag>\n </Tooltip>\n );\n};\n\nconst TotalSourceSizeTag = ({ size }: { size: number }) => {\n return (\n <Tooltip\n title={\n <Space>\n <Typography.Text style={{ color: 'inherit' }}>\n The total original size of all the files in this folder, before any\n transformations and minification.\n </Typography.Text>\n </Space>\n }\n >\n <Tag\n style={tagStyle}\n color={'cyan'}\n >{`source size: ${formatSize(size)}`}</Tag>\n </Tooltip>\n );\n};\n\nconst SourceSizeTag = ({ size }: { size: number }) => {\n return (\n <Tooltip\n title={\n <Space>\n <Typography.Text style={{ color: 'inherit' }}>\n The original size of this file, before any transformations and\n minification.\n </Typography.Text>\n </Space>\n }\n >\n <Tag color={'cyan'}>{`source size: ${formatSize(size)}`}</Tag>\n </Tooltip>\n );\n};\n\nexport const AssetDetail: React.FC<{\n asset: SDK.AssetData;\n chunks: SDK.ChunkData[];\n modules: SDK.ModuleData[];\n moduleSizeLimit?: number;\n height?: number;\n root: string;\n}> = ({\n asset,\n chunks: includeChunks,\n modules: includeModules,\n moduleSizeLimit,\n height,\n root,\n}) => {\n const [moduleKeyword, setModuleKeyword] = useState('');\n const [defaultExpandAll, setDefaultExpandAll] = useState(false);\n const [moduleJumpList, setModuleJumpList] = useState([] as number[]);\n const [show, setShow] = useState(false);\n\n const filteredModules = useMemo(() => {\n let res = includeModules.slice();\n if (moduleKeyword) {\n const regexp = new RegExp(moduleKeyword, 'i');\n res = res.filter((e) => regexp.test(e.path));\n }\n\n if (moduleSizeLimit) {\n res = res.filter((e) => e.size.parsedSize >= moduleSizeLimit);\n }\n\n return res;\n }, [includeModules, moduleKeyword, moduleSizeLimit]);\n\n const fileStructures = useMemo(() => {\n const res = createFileStructures({\n files: filteredModules.map((e) => e.path).filter(Boolean),\n inlinedResourcePathKey,\n fileTitle(file, basename) {\n const mod = filteredModules.find((e) => e.path === file)!;\n\n if (!mod) return basename;\n\n const { parsedSize = 0, sourceSize = 0 } = mod.size;\n const isConcatenation = mod.kind === SDK.ModuleKind.Concatenation;\n\n const containedOtherModules =\n !isConcatenation &&\n parsedSize === 0 &&\n includeModules.filter(\n (e) => e !== mod && e.modules && e.modules.indexOf(mod.id) > -1,\n );\n\n return (\n <div className={styles['bundle-tree']}>\n <Popover\n content={`Open the ${basename}’s module reasons tree.`}\n placement=\"bottom\"\n >\n <div\n className={styles.box}\n onClick={() => {\n setModuleJumpList([mod.id]);\n setShow(true);\n }}\n >\n <div className={styles.keywords}>\n <Keyword ellipsis text={basename} keyword={''} />\n </div>\n <div className={styles.dividerDiv}>\n <Divider className={styles.divider} dashed />\n </div>\n </div>\n </Popover>\n <Space>\n {parsedSize !== 0 ? (\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <BundledSizeTag size={parsedSize} />\n <SourceSizeTag size={sourceSize} />\n </Space>\n }\n color={'white'}\n >\n <BundledSizeTag size={parsedSize} />\n </Tooltip>\n ) : sourceSize !== 0 ? (\n // fallback to display tag for source size\n <SourceSizeTag size={sourceSize} />\n ) : null}\n {isConcatenation ? (\n <ConcatenatedTag moduleCount={mod.modules?.length || 0} />\n ) : null}\n {containedOtherModules && containedOtherModules.length ? (\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n This module is concatenated into another container\n module:\n </Typography.Text>\n {containedOtherModules.map(({ id, path }) => {\n if (isJsDataUrl(path)) {\n return (\n <Typography.Paragraph\n ellipsis={{ rows: 4 }}\n key={id}\n style={{ color: 'inherit', maxWidth: '100%' }}\n code\n >\n {path}\n </Typography.Paragraph>\n );\n }\n\n const p = relative(dirname(mod.path), path);\n if (p.startsWith('javascript;charset=utf-8;base64,')) {\n return (\n <Typography.Text\n key={id}\n style={{ color: 'inherit', maxWidth: '100%' }}\n code\n >\n {p[0] === '.' ? p : `./${p}`}\n </Typography.Text>\n );\n }\n\n return (\n <Typography.Text\n key={id}\n style={{ color: 'inherit' }}\n code\n >\n {p[0] === '.' ? p : `./${p}`}\n </Typography.Text>\n );\n })}\n </Space>\n }\n >\n <Tag color=\"green\">concatenated</Tag>\n </Tooltip>\n ) : null}\n\n <ModuleCodeViewer data={mod} />\n </Space>\n </div>\n );\n },\n dirTitle(dir, defaultTitle) {\n const mods: string[] = [];\n const paths = getChildrenModule(dir, mods);\n if (paths.length) {\n const mods = paths.map(\n (e) => includeModules.find((m) => m.path === e)!,\n );\n\n const parsedSize = sumBy(mods, (e) => e.size?.parsedSize || 0);\n const sourceSize = sumBy(mods, (e) => e.size?.sourceSize || 0);\n return (\n <div className={styles['bundle-tree']}>\n <div className={styles.box}>\n <div className={styles.keywords}>\n <Keyword ellipsis text={defaultTitle} keyword={''} />\n </div>\n <div className={styles.dividerDiv}>\n <Divider className={styles.divider} dashed />\n </div>\n </div>\n <Space>\n {parsedSize > 0 ? (\n <>\n <TotalBundledSizeTag size={parsedSize} />\n <TotalSourceSizeTag size={sourceSize} />\n </>\n ) : (\n <TotalSourceSizeTag size={sourceSize} />\n )}\n </Space>\n </div>\n );\n }\n\n return defaultTitle;\n },\n page: 'bundle',\n });\n return res;\n }, [filteredModules]);\n\n const onSearch = (value: string) => setModuleKeyword(value);\n\n useEffect(() => {\n setModuleKeyword('');\n setDefaultExpandAll(false);\n }, [asset]);\n\n useEffect(() => {\n setDefaultExpandAll(false);\n }, [moduleKeyword]);\n\n return (\n <ModuleGraphListContext.Provider\n value={{ moduleJumpList, setModuleJumpList }}\n >\n <Card\n className={styles.bundle}\n title={`Modules of \"${asset.path}\"`}\n bodyStyle={{ minHeight: height }}\n size=\"small\"\n >\n {includeModules.length ? (\n <Row>\n <Col span={24}>\n <ModulesStatistics\n modules={includeModules}\n chunks={includeChunks}\n filteredModules={filteredModules}\n />\n </Col>\n <Col span={24}>\n <Space>\n <KeywordInput\n placeholder=\"search module by keyword\"\n onChange={onSearch}\n key={asset.path}\n />\n <Button\n onClick={() => setDefaultExpandAll(true)}\n size=\"small\"\n icon={<ColumnHeightOutlined />}\n />\n </Space>\n </Col>\n <Col span={24} style={{ marginTop: Size.BasePadding }}>\n {filteredModules.length ? (\n <DirectoryTree\n key={`tree_${moduleKeyword}_${defaultExpandAll}_${asset.path}`}\n selectable={false}\n defaultExpandAll={\n defaultExpandAll || filteredModules.length <= 20\n }\n onExpand={(expandedKeys) => {\n expandedModulesKeys = expandedKeys;\n }}\n defaultExpandParent\n defaultExpandedKeys={\n expandedModulesKeys?.length\n ? expandedModulesKeys\n : fileStructures.length === 1\n ? [fileStructures[0].key]\n : []\n }\n treeData={fileStructures as AntdDataNode[]}\n rootStyle={{\n maxHeight: '500px',\n overflow: 'auto',\n border: '1px solid rgba(235, 237, 241)',\n padding: '14px 20px',\n }}\n />\n ) : (\n <Empty\n description={\n <Typography.Text\n strong\n >{`\"${moduleKeyword}\" can't match any modules`}</Typography.Text>\n }\n />\n )}\n </Col>\n </Row>\n ) : (\n <Empty\n description={\n <Typography.Text\n strong\n >{`\"${asset.path}\" doesn't have any modules`}</Typography.Text>\n }\n />\n )}\n\n <ModuleGraphViewer\n id={\n moduleJumpList?.length\n ? moduleJumpList[moduleJumpList.length - 1]\n : ''\n }\n show={show}\n setShow={setShow}\n cwd={root}\n />\n </Card>\n </ModuleGraphListContext.Provider>\n );\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|
|
1
|
+
{"version":3,"mappings":"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","names":["mods"],"ignoreList":[],"sources":["../../../../src/pages/BundleSize/components/asset.tsx"],"sourcesContent":["import {\n CodepenCircleOutlined,\n ColumnHeightOutlined,\n InfoCircleOutlined,\n} from '@ant-design/icons';\nimport { SDK } from '@rsdoctor/types';\nimport {\n Button,\n Card,\n Col,\n Divider,\n Empty,\n Popover,\n Row,\n Space,\n Tag,\n Tooltip,\n Tree,\n Typography,\n} from 'antd';\nimport { DataNode as AntdDataNode } from 'antd/es/tree';\nimport { omitBy, sumBy } from 'lodash-es';\nimport { dirname, relative } from 'path';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { CodeViewer } from '../../../components/base';\nimport { Badge as Bdg } from '../../../components/Badge';\nimport { KeywordInput } from '../../../components/Form/keyword';\nimport { Keyword } from '../../../components/Keyword';\nimport { ServerAPIProvider } from '../../../components/Manifest';\nimport { TextDrawer } from '../../../components/TextDrawer';\nimport { Size } from '../../../constants';\nimport {\n DataNode,\n createFileStructures,\n formatSize,\n isJsDataUrl,\n useI18n,\n} from '../../../utils';\nimport { ModuleAnalyzeComponent } from '../../ModuleAnalyze';\nimport { ModuleGraphListContext } from '../config';\nimport styles from './index.module';\n\nconst { DirectoryTree } = Tree;\n\nlet expandedModulesKeys: React.Key[] = [];\nconst TAB_MAP = {\n source: 'source code',\n transformed: 'Transformed Code (After compile)',\n parsedSource: 'Bundled Code (After bundle and tree-shaking)',\n};\n\nconst tagStyle = {\n margin: 'none',\n marginInlineEnd: 0,\n};\n\nconst EmptyCodeItem = () => (\n <Empty\n description={`Do not have the module code.\n (1) If you use the brief mode, there will not have any codes to show.\n (2) If you use lite mode, there will not have source codes.`}\n />\n);\n\nexport const ModuleCodeViewer: React.FC<{ data: SDK.ModuleData }> = ({\n data,\n}) => {\n const [tab, setTab] = useState('');\n const { t } = useI18n();\n\n const TAB_LAB_MAP: Record<string, string> = {\n source: 'Source Code',\n transformed: `Transformed Code(${t('After Compile')})`,\n parsedSource: `Bundled Code(${t('After Bundled')})`,\n };\n if (!data) return null;\n\n const { path } = data;\n\n return (\n <TextDrawer\n text=\"\"\n buttonProps={{\n size: 'small',\n icon: (\n <Popover content=\"Open the Codes Box\">\n <CodepenCircleOutlined />\n </Popover>\n ),\n type: 'default',\n }}\n buttonStyle={{ padding: `0 4px` }}\n drawerProps={{\n destroyOnClose: true,\n title: `Code of \"${path}\"`,\n }}\n >\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetModuleCodeByModuleId}\n body={{ moduleId: data.id }}\n >\n {(source) => {\n return (\n <>\n {!source['source'] &&\n !source['parsedSource'] &&\n !source['transformed'] ? (\n <EmptyCodeItem />\n ) : (\n <Card\n className=\"code-size-card\"\n style={{ width: '100%' }}\n tabList={Object.keys(omitBy(source, (s) => !s))\n .map((k) => ({ tab: k }))\n .map((e) => ({\n ...e,\n tab: TAB_LAB_MAP[e.tab],\n key: e.tab,\n }))}\n defaultActiveTabKey={\n source['parsedSource'] ? 'parsedSource' : 'source'\n }\n onTabChange={(v) => setTab(v)}\n tabBarExtraContent={\n <Popover\n placement=\"bottom\"\n title={\n <Typography.Title level={5}>Explain</Typography.Title>\n }\n content={\n <>\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n marginBottom: 30,\n }}\n >\n <div>\n <Typography.Text strong>Source: </Typography.Text>\n <Typography.Text>\n {TAB_MAP.source}\n </Typography.Text>\n </div>\n <div>\n <Typography.Text strong>\n Transformed:\n </Typography.Text>\n <Typography.Text>\n {TAB_MAP.transformed}\n </Typography.Text>\n </div>\n <div>\n <Typography.Text strong>\n Bundled Source:\n </Typography.Text>\n <Typography.Text>\n {TAB_MAP.parsedSource}\n </Typography.Text>\n </div>\n <br />\n <Typography.Text strong>{'More'}</Typography.Text>\n <Typography.Text>\n {t('CodeModeExplain')}\n </Typography.Text>\n </div>\n </>\n }\n trigger={'hover'}\n >\n <a href=\"#\">Explain</a>\n </Popover>\n }\n styles={{ body: { padding: 0, overflow: 'hidden' } }}\n >\n {source['parsedSource'] ||\n source['source'] ||\n source['transformed'] ? (\n <CodeViewer\n isEmbed\n code={\n tab\n ? source[tab as keyof SDK.ModuleSource]\n : source['parsedSource']\n ? source['parsedSource']\n : source['source']\n }\n filePath={path}\n />\n ) : (\n <EmptyCodeItem />\n )}\n </Card>\n )}\n </>\n );\n }}\n </ServerAPIProvider>\n </TextDrawer>\n );\n};\n\nexport const ModuleGraphViewer: React.FC<{\n id: number | string;\n show: boolean;\n setShow: (_show: boolean) => void;\n cwd: string;\n}> = ({ id, show, setShow, cwd }) => {\n if (!id) return null;\n\n return (\n <ServerAPIProvider api={SDK.ServerAPI.API.GetAllModuleGraph} body={{}}>\n {(modules) => (\n <ModuleAnalyzeComponent\n cwd={cwd}\n moduleId={id}\n modules={modules}\n show={show}\n setShow={setShow}\n />\n )}\n </ServerAPIProvider>\n );\n};\n\nconst inlinedResourcePathKey = '__RESOURCEPATH__';\n\nexport function getChildrenModule(node: DataNode, mods: string[]) {\n node.children &&\n node.children.forEach((n: DataNode) => {\n if (n.isLeaf) {\n mods.push(n[inlinedResourcePathKey]);\n } else {\n getChildrenModule(n, mods);\n }\n });\n\n return mods;\n}\n\nexport const ModulesStatistics: React.FC<{\n modules: SDK.ModuleData[];\n chunks: SDK.ChunkData[];\n filteredModules: SDK.ModuleData[];\n}> = ({ modules, chunks, filteredModules }) => {\n const { sourceSize, parsedSize, filteredParsedSize, filteredSourceSize } =\n useMemo(() => {\n return {\n sourceSize: sumBy(modules, (e) => e.size.sourceSize),\n parsedSize: sumBy(modules, (e) => e.size.parsedSize),\n filteredSourceSize: sumBy(filteredModules, (e) => e.size.sourceSize),\n filteredParsedSize: sumBy(filteredModules, (e) => e.size.parsedSize),\n };\n }, [modules, filteredModules]);\n\n return (\n <Space>\n <Tooltip\n title={`total modules count is ${modules.length}, the filtered modules count is ${filteredModules.length}`}\n >\n <Space>\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 12, fontWeight: 400 }}\n >\n Modules: {filteredModules.length} / {modules.length}\n </Typography.Text>\n <InfoCircleOutlined />\n </Space>\n </Tooltip>\n <Divider type=\"vertical\" />\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n Total modules bundled size: {formatSize(parsedSize)}\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit' }}>\n Total modules source size: {formatSize(sourceSize)}\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit' }}>\n Filtered modules bundled size: {formatSize(filteredParsedSize)}\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit' }}>\n Filtered modules source size: {formatSize(filteredSourceSize)}\n </Typography.Text>\n </Space>\n }\n >\n <Space>\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 12, fontWeight: 400 }}\n >\n Modules Size:\n {filteredParsedSize === parsedSize\n ? formatSize(parsedSize)\n : `${formatSize(filteredParsedSize)} / ${formatSize(parsedSize)}`}\n </Typography.Text>\n <InfoCircleOutlined />\n </Space>\n </Tooltip>\n <Divider type=\"vertical\" />\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n this asset includes {chunks.length} chunks:\n </Typography.Text>\n {chunks.map((e) => (\n <Bdg label=\"chunk\" value={e.name} key={e.name} />\n ))}\n </Space>\n }\n >\n <Space>\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 12, fontWeight: 400 }}\n >\n Chunks: {chunks.length}\n </Typography.Text>\n <InfoCircleOutlined />\n </Space>\n </Tooltip>\n </Space>\n );\n};\n\nconst ConcatenatedTag = ({ moduleCount }: { moduleCount: number }) => {\n return (\n <Tooltip\n title={\n <Space>\n <Typography.Text style={{ color: 'inherit' }}>\n This is a concatenated container module that includes {moduleCount}{' '}\n modules\n </Typography.Text>\n </Space>\n }\n >\n <Tag color=\"blue\" style={tagStyle}>\n concatenated container\n </Tag>\n </Tooltip>\n );\n};\n\nconst TotalBundledSizeTag = ({ size }: { size: number }) => {\n return (\n <Tooltip\n title={\n <Space>\n <Typography.Text style={{ color: 'inherit' }}>\n The total output size of all the files in this folder. If you\n enabled minification, this value shows the minified size.\n </Typography.Text>\n </Space>\n }\n >\n <Tag style={tagStyle} color={'geekblue'}>\n {`bundled size: ${formatSize(size)}`}\n </Tag>\n </Tooltip>\n );\n};\n\nconst BundledSizeTag = ({ size }: { size: number }) => {\n return (\n <Tooltip\n title={\n <Space>\n <Typography.Text style={{ color: 'inherit' }}>\n The final output size of this file. If you enabled minification,\n this value shows the minified size.\n </Typography.Text>\n </Space>\n }\n >\n <Tag color={'geekblue'}>{`bundled size: ${formatSize(size)}`}</Tag>\n </Tooltip>\n );\n};\n\nconst TotalSourceSizeTag = ({ size }: { size: number }) => {\n return (\n <Tooltip\n title={\n <Space>\n <Typography.Text style={{ color: 'inherit' }}>\n The total original size of all the files in this folder, before any\n transformations and minification.\n </Typography.Text>\n </Space>\n }\n >\n <Tag\n style={tagStyle}\n color={'cyan'}\n >{`source size: ${formatSize(size)}`}</Tag>\n </Tooltip>\n );\n};\n\nconst SourceSizeTag = ({ size }: { size: number }) => {\n return (\n <Tooltip\n title={\n <Space>\n <Typography.Text style={{ color: 'inherit' }}>\n The original size of this file, before any transformations and\n minification.\n </Typography.Text>\n </Space>\n }\n >\n <Tag color={'cyan'}>{`source size: ${formatSize(size)}`}</Tag>\n </Tooltip>\n );\n};\n\nexport const AssetDetail: React.FC<{\n asset: SDK.AssetData;\n chunks: SDK.ChunkData[];\n modules: SDK.ModuleData[];\n moduleSizeLimit?: number;\n height?: number;\n root: string;\n}> = ({\n asset,\n chunks: includeChunks,\n modules: includeModules,\n moduleSizeLimit,\n height,\n root,\n}) => {\n const [moduleKeyword, setModuleKeyword] = useState('');\n const [defaultExpandAll, setDefaultExpandAll] = useState(false);\n const [moduleJumpList, setModuleJumpList] = useState([] as number[]);\n const [show, setShow] = useState(false);\n\n const filteredModules = useMemo(() => {\n let res = includeModules.slice();\n if (moduleKeyword) {\n const regexp = new RegExp(moduleKeyword, 'i');\n res = res.filter((e) => regexp.test(e.path));\n }\n\n if (moduleSizeLimit) {\n res = res.filter((e) => e.size.parsedSize >= moduleSizeLimit);\n }\n\n return res;\n }, [includeModules, moduleKeyword, moduleSizeLimit]);\n\n const fileStructures = useMemo(() => {\n const res = createFileStructures({\n files: filteredModules.map((e) => e.path).filter(Boolean),\n inlinedResourcePathKey,\n fileTitle(file, basename) {\n const mod = filteredModules.find((e) => e.path === file)!;\n\n if (!mod) return basename;\n\n const { parsedSize = 0, sourceSize = 0 } = mod.size;\n const isConcatenation = mod.kind === SDK.ModuleKind.Concatenation;\n\n const containedOtherModules =\n !isConcatenation &&\n parsedSize === 0 &&\n includeModules.filter(\n (e) => e !== mod && e.modules && e.modules.indexOf(mod.id) > -1,\n );\n\n return (\n <div className={styles['bundle-tree']}>\n <Popover\n content={`Open the ${basename}’s module reasons tree.`}\n placement=\"bottom\"\n >\n <div\n className={styles.box}\n onClick={() => {\n setModuleJumpList([mod.id]);\n setShow(true);\n }}\n >\n <div className={styles.keywords}>\n <Keyword ellipsis text={basename} keyword={''} />\n </div>\n <div className={styles.dividerDiv}>\n <Divider className={styles.divider} dashed />\n </div>\n </div>\n </Popover>\n <Space>\n {parsedSize !== 0 ? (\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <BundledSizeTag size={parsedSize} />\n <SourceSizeTag size={sourceSize} />\n </Space>\n }\n color={'white'}\n >\n <BundledSizeTag size={parsedSize} />\n </Tooltip>\n ) : sourceSize !== 0 ? (\n // fallback to display tag for source size\n <SourceSizeTag size={sourceSize} />\n ) : null}\n {isConcatenation ? (\n <ConcatenatedTag moduleCount={mod.modules?.length || 0} />\n ) : null}\n {containedOtherModules && containedOtherModules.length ? (\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n This module is concatenated into another container\n module:\n </Typography.Text>\n {containedOtherModules.map(({ id, path }) => {\n if (isJsDataUrl(path)) {\n return (\n <Typography.Paragraph\n ellipsis={{ rows: 4 }}\n key={id}\n style={{ color: 'inherit', maxWidth: '100%' }}\n code\n >\n {path}\n </Typography.Paragraph>\n );\n }\n\n const p = relative(dirname(mod.path), path);\n if (p.startsWith('javascript;charset=utf-8;base64,')) {\n return (\n <Typography.Text\n key={id}\n style={{ color: 'inherit', maxWidth: '100%' }}\n code\n >\n {p[0] === '.' ? p : `./${p}`}\n </Typography.Text>\n );\n }\n\n return (\n <Typography.Text\n key={id}\n style={{ color: 'inherit' }}\n code\n >\n {p[0] === '.' ? p : `./${p}`}\n </Typography.Text>\n );\n })}\n </Space>\n }\n >\n <Tag color=\"green\">concatenated</Tag>\n </Tooltip>\n ) : null}\n\n <ModuleCodeViewer data={mod} />\n </Space>\n </div>\n );\n },\n dirTitle(dir, defaultTitle) {\n const mods: string[] = [];\n const paths = getChildrenModule(dir, mods);\n if (paths.length) {\n const mods = paths.map(\n (e) => includeModules.find((m) => m.path === e)!,\n );\n\n const parsedSize = sumBy(mods, (e) => e.size?.parsedSize || 0);\n const sourceSize = sumBy(mods, (e) => e.size?.sourceSize || 0);\n return (\n <div className={styles['bundle-tree']}>\n <div className={styles.box}>\n <div className={styles.keywords}>\n <Keyword ellipsis text={defaultTitle} keyword={''} />\n </div>\n <div className={styles.dividerDiv}>\n <Divider className={styles.divider} dashed />\n </div>\n </div>\n <Space>\n {parsedSize > 0 ? (\n <>\n <TotalBundledSizeTag size={parsedSize} />\n <TotalSourceSizeTag size={sourceSize} />\n </>\n ) : (\n <TotalSourceSizeTag size={sourceSize} />\n )}\n </Space>\n </div>\n );\n }\n\n return defaultTitle;\n },\n page: 'bundle',\n });\n return res;\n }, [filteredModules]);\n\n const onSearch = (value: string) => setModuleKeyword(value);\n\n useEffect(() => {\n setModuleKeyword('');\n setDefaultExpandAll(false);\n }, [asset]);\n\n useEffect(() => {\n setDefaultExpandAll(false);\n }, [moduleKeyword]);\n\n return (\n <ModuleGraphListContext.Provider\n value={{ moduleJumpList, setModuleJumpList }}\n >\n <Card\n className={styles.bundle}\n title={`Modules of \"${asset.path}\"`}\n bodyStyle={{ minHeight: height }}\n size=\"small\"\n >\n {includeModules.length ? (\n <Row>\n <Col span={24}>\n <ModulesStatistics\n modules={includeModules}\n chunks={includeChunks}\n filteredModules={filteredModules}\n />\n </Col>\n <Col span={24}>\n <Space>\n <KeywordInput\n placeholder=\"search module by keyword\"\n onChange={onSearch}\n key={asset.path}\n />\n <Button\n onClick={() => setDefaultExpandAll(true)}\n size=\"small\"\n icon={<ColumnHeightOutlined />}\n />\n </Space>\n </Col>\n <Col span={24} style={{ marginTop: Size.BasePadding }}>\n {filteredModules.length ? (\n <DirectoryTree\n key={`tree_${moduleKeyword}_${defaultExpandAll}_${asset.path}`}\n selectable={false}\n defaultExpandAll={\n defaultExpandAll || filteredModules.length <= 20\n }\n onExpand={(expandedKeys) => {\n expandedModulesKeys = expandedKeys;\n }}\n defaultExpandParent\n // @ts-ignore\n defaultExpandedKeys={\n expandedModulesKeys?.length\n ? expandedModulesKeys\n : fileStructures.length === 1\n ? [fileStructures[0].key]\n : []\n }\n treeData={fileStructures as AntdDataNode[]}\n rootStyle={{\n maxHeight: '500px',\n overflow: 'auto',\n border: '1px solid rgba(235, 237, 241)',\n padding: '14px 20px',\n }}\n />\n ) : (\n <Empty\n description={\n <Typography.Text\n strong\n >{`\"${moduleKeyword}\" can't match any modules`}</Typography.Text>\n }\n />\n )}\n </Col>\n </Row>\n ) : (\n <Empty\n description={\n <Typography.Text\n strong\n >{`\"${asset.path}\" doesn't have any modules`}</Typography.Text>\n }\n />\n )}\n\n <ModuleGraphViewer\n id={\n moduleJumpList?.length\n ? moduleJumpList[moduleJumpList.length - 1]\n : ''\n }\n show={show}\n setShow={setShow}\n cwd={root}\n />\n </Card>\n </ModuleGraphListContext.Provider>\n );\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|