@rsdoctor/components 1.5.17 → 1.5.18
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/Alerts/bundle-alert.d.ts +1 -1
- package/dist/components/Alerts/bundle-alert.mjs +74 -67
- package/dist/components/Alerts/bundle-alert.mjs.map +1 -1
- package/dist/components/Alerts/list.d.ts +1 -0
- package/dist/components/Alerts/list.mjs +13 -5
- package/dist/components/Alerts/list.mjs.map +1 -1
- package/dist/components/Alerts/list.module.mjs +2 -1
- package/dist/components/Alerts/list.module.mjs.map +1 -1
- package/dist/components/Alerts/list_module.css +8 -0
- package/dist/components/Alerts/list_module.css.map +1 -1
- package/dist/components/Charts/TreeMap.mjs +36 -6
- package/dist/components/Charts/TreeMap.mjs.map +1 -1
- package/dist/components/Opener/ide.mjs +36 -2
- package/dist/components/Opener/ide.mjs.map +1 -1
- package/dist/pages/BundleSize/components/asset-path.d.ts +7 -0
- package/dist/pages/BundleSize/components/asset-path.mjs +9 -0
- package/dist/pages/BundleSize/components/asset-path.mjs.map +1 -0
- package/dist/pages/BundleSize/components/asset-path.test.d.ts +1 -0
- package/dist/pages/BundleSize/components/asset-path.test.mjs +27 -0
- package/dist/pages/BundleSize/components/asset-path.test.mjs.map +1 -0
- package/dist/pages/BundleSize/components/index.mjs +4 -3
- package/dist/pages/BundleSize/components/index.mjs.map +1 -1
- package/dist/pages/BundleSize/components/tree-graph.mjs +30 -13
- package/dist/pages/BundleSize/components/tree-graph.mjs.map +1 -1
- package/dist/utils/assets.d.ts +1 -0
- package/dist/utils/assets.mjs +17 -0
- package/dist/utils/assets.mjs.map +1 -0
- package/dist/utils/assets.test.d.ts +1 -0
- package/dist/utils/assets.test.mjs +22 -0
- package/dist/utils/assets.test.mjs.map +1 -0
- package/package.json +8 -8
|
@@ -1,88 +1,89 @@
|
|
|
1
1
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Empty, Tabs, Tag } from "antd";
|
|
3
|
+
import { useEffect, useState } from "react";
|
|
3
4
|
import { Card } from "../Card/index.mjs";
|
|
4
5
|
import { ECMAVersionCheck } from "../Alert/ecma-version-check.mjs";
|
|
5
6
|
import { Overview } from "../Overall/overview.mjs";
|
|
6
7
|
import { AlertCollapse } from "./collapse.mjs";
|
|
7
8
|
import { CommonList } from "./list.mjs";
|
|
8
9
|
import bundle_alert_module from "./bundle-alert.module.mjs";
|
|
9
|
-
import { useState } from "react";
|
|
10
10
|
import { CrossChunksAlertCollapse } from "./collapse-cross-chunks.mjs";
|
|
11
11
|
import { ModuleMixedChunksAlertCollapse } from "./collapse-module-mixed-chunks.mjs";
|
|
12
12
|
import { SideEffectsOnlyImportsAlertCollapse } from "./collapse-side-effects-only-imports.mjs";
|
|
13
13
|
import { CjsRequireAlertCollapse } from "./collapse-cjs-require.mjs";
|
|
14
14
|
import { EsmResolvedToCjsAlertCollapse } from "./collapse-esm-cjs.mjs";
|
|
15
|
+
const BUILTIN_RULE_TABS = [
|
|
16
|
+
{
|
|
17
|
+
key: 'E1001',
|
|
18
|
+
label: 'Duplicate Packages'
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
key: 'E1002',
|
|
22
|
+
label: 'Cross Chunks Package'
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
key: 'E1003',
|
|
26
|
+
label: 'Loader Performance Optimization'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
key: 'E1004',
|
|
30
|
+
label: 'ECMA Version Check'
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
key: 'E1005',
|
|
34
|
+
label: 'Default Import Check'
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
key: 'E1006',
|
|
38
|
+
label: 'Module Mixed Chunks'
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
key: 'E1007',
|
|
42
|
+
label: 'Tree Shaking Side Effects Only'
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
key: 'E1008',
|
|
46
|
+
label: 'CJS Require Cannot Tree-Shake'
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
key: 'E1009',
|
|
50
|
+
label: 'ESM Import Resolved to CJS'
|
|
51
|
+
}
|
|
52
|
+
];
|
|
15
53
|
const BundleAlert = ({ title, dataSource, extraData })=>{
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
'E1006',
|
|
23
|
-
'E1007',
|
|
24
|
-
'E1008',
|
|
25
|
-
'E1009'
|
|
26
|
-
].find((code)=>dataSource.some((d)=>d.code === code)) ?? 'E1001';
|
|
27
|
-
const [activeKey, setActiveKey] = useState(firstKeyWithData);
|
|
28
|
-
const tabData = [
|
|
29
|
-
{
|
|
30
|
-
key: 'E1001',
|
|
31
|
-
label: 'Duplicate Packages',
|
|
32
|
-
data: []
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
key: 'E1002',
|
|
36
|
-
label: 'Cross Chunks Package',
|
|
37
|
-
data: []
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
key: 'E1003',
|
|
41
|
-
label: 'Loader Performance Optimization',
|
|
42
|
-
data: []
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
key: 'E1004',
|
|
46
|
-
label: 'ECMA Version Check',
|
|
47
|
-
data: []
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
key: 'E1005',
|
|
51
|
-
label: 'Default Import Check',
|
|
52
|
-
data: []
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
key: 'E1006',
|
|
56
|
-
label: 'Module Mixed Chunks',
|
|
57
|
-
data: []
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
key: 'E1007',
|
|
61
|
-
label: 'Tree Shaking Side Effects Only',
|
|
62
|
-
data: []
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
key: 'E1008',
|
|
66
|
-
label: 'CJS Require Cannot Tree-Shake',
|
|
67
|
-
data: []
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
key: 'E1009',
|
|
71
|
-
label: 'ESM Import Resolved to CJS',
|
|
72
|
-
data: []
|
|
73
|
-
}
|
|
74
|
-
];
|
|
54
|
+
const tabData = BUILTIN_RULE_TABS.map((tab)=>({
|
|
55
|
+
...tab,
|
|
56
|
+
data: [],
|
|
57
|
+
tag: tab.key
|
|
58
|
+
}));
|
|
59
|
+
const customRulesData = [];
|
|
75
60
|
dataSource.forEach((data)=>{
|
|
76
|
-
const target = tabData.find((td)=>td.key === data.code)
|
|
77
|
-
target
|
|
61
|
+
const target = tabData.find((td)=>td.key === data.code);
|
|
62
|
+
if (target) target.data.push(data);
|
|
63
|
+
else customRulesData.push(data);
|
|
64
|
+
});
|
|
65
|
+
if (customRulesData.length) tabData.push({
|
|
66
|
+
key: 'CUSTOM_RULES',
|
|
67
|
+
label: 'Custom Rules',
|
|
68
|
+
data: customRulesData,
|
|
69
|
+
tag: 'Custom'
|
|
78
70
|
});
|
|
79
71
|
tabData.sort((a, b)=>(b.data.length > 0 ? 1 : 0) - (a.data.length > 0 ? 1 : 0));
|
|
72
|
+
const defaultActiveKey = tabData[0]?.key ?? 'E1001';
|
|
73
|
+
const [activeKey, setActiveKey] = useState(defaultActiveKey);
|
|
74
|
+
const activeTab = tabData.find((tab)=>tab.key === activeKey);
|
|
75
|
+
const resolvedActiveKey = activeTab && (activeTab.data.length > 0 || 0 === dataSource.length) ? activeKey : defaultActiveKey;
|
|
76
|
+
useEffect(()=>{
|
|
77
|
+
setActiveKey(defaultActiveKey);
|
|
78
|
+
}, [
|
|
79
|
+
defaultActiveKey
|
|
80
|
+
]);
|
|
80
81
|
const tabItems = tabData.map((td)=>{
|
|
81
|
-
const tagStyle =
|
|
82
|
+
const tagStyle = resolvedActiveKey === td.key ? {
|
|
82
83
|
border: '1px solid #91D5FF',
|
|
83
84
|
backgroundColor: '#E6F7FF'
|
|
84
85
|
} : {};
|
|
85
|
-
const tagTextStyle =
|
|
86
|
+
const tagTextStyle = resolvedActiveKey === td.key ? {
|
|
86
87
|
color: '#1890FF'
|
|
87
88
|
} : {};
|
|
88
89
|
const LabelComponent = ()=>/*#__PURE__*/ jsx(Overview, {
|
|
@@ -112,7 +113,7 @@ const BundleAlert = ({ title, dataSource, extraData })=>{
|
|
|
112
113
|
style: {
|
|
113
114
|
...tagTextStyle
|
|
114
115
|
},
|
|
115
|
-
children: td.
|
|
116
|
+
children: td.tag
|
|
116
117
|
})
|
|
117
118
|
})
|
|
118
119
|
]
|
|
@@ -174,6 +175,12 @@ const BundleAlert = ({ title, dataSource, extraData })=>{
|
|
|
174
175
|
extraData: extraData
|
|
175
176
|
});
|
|
176
177
|
break;
|
|
178
|
+
case 'CUSTOM_RULES':
|
|
179
|
+
children = /*#__PURE__*/ jsx(CommonList, {
|
|
180
|
+
data: td.data,
|
|
181
|
+
showCode: true
|
|
182
|
+
});
|
|
183
|
+
break;
|
|
177
184
|
default:
|
|
178
185
|
children = null;
|
|
179
186
|
break;
|
|
@@ -198,7 +205,7 @@ const BundleAlert = ({ title, dataSource, extraData })=>{
|
|
|
198
205
|
backgroundColor: '#EAEDF1',
|
|
199
206
|
borderRadius: '2px'
|
|
200
207
|
},
|
|
201
|
-
children: td.
|
|
208
|
+
children: td.tag
|
|
202
209
|
}),
|
|
203
210
|
/*#__PURE__*/ jsx("span", {
|
|
204
211
|
children: td.label
|
|
@@ -225,7 +232,7 @@ const BundleAlert = ({ title, dataSource, extraData })=>{
|
|
|
225
232
|
onChange: setActiveKey,
|
|
226
233
|
tabBarGutter: 10,
|
|
227
234
|
type: "card",
|
|
228
|
-
|
|
235
|
+
activeKey: resolvedActiveKey,
|
|
229
236
|
items: tabItems
|
|
230
237
|
}) : /*#__PURE__*/ jsx("div", {
|
|
231
238
|
style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components/Alerts/bundle-alert.mjs","sources":["../../../src/components/Alerts/bundle-alert.tsx"],"sourcesContent":["import { Tabs, Empty, Tag } from 'antd';\n\nimport { Card } from '../Card';\nimport { ECMAVersionCheck } from '../Alert/ecma-version-check';\nimport { Overview } from '../Overall/overview';\nimport { AlertCollapse } from './collapse';\nimport { CommonList } from './list';\nimport { ViewMode } from '../../constants';\n\nimport { AlertProps } from '../Alert/types';\n\nimport type { Rule } from '@rsdoctor/types';\n\nimport styles from './bundle-alert.module.scss';\nimport { CSSProperties, useState } from 'react';\nimport { CrossChunksAlertCollapse } from './collapse-cross-chunks';\nimport { ModuleMixedChunksAlertCollapse } from './collapse-module-mixed-chunks';\nimport { SideEffectsOnlyImportsAlertCollapse } from './collapse-side-effects-only-imports';\nimport { CjsRequireAlertCollapse } from './collapse-cjs-require';\nimport { EsmResolvedToCjsAlertCollapse } from './collapse-esm-cjs';\n\ninterface BundleAlertProps {\n title: string;\n cwd: string;\n dataSource: Rule.RuleStoreDataItem[];\n extraData: Omit<AlertProps, 'data'>;\n viewMode: ViewMode;\n setViewMode(mode: ViewMode): void;\n extraCom?: React.JSX.Element | undefined;\n}\n\nexport const BundleAlert: React.FC<BundleAlertProps> = ({\n title,\n dataSource,\n extraData,\n}) => {\n const firstKeyWithData =\n [\n 'E1001',\n 'E1002',\n 'E1003',\n 'E1004',\n 'E1005',\n 'E1006',\n 'E1007',\n 'E1008',\n 'E1009',\n ].find((code) => dataSource.some((d) => d.code === code)) ?? 'E1001';\n const [activeKey, setActiveKey] = useState(firstKeyWithData);\n const tabData: Array<{\n key: string;\n label: string;\n data: Array<Rule.RuleStoreDataItem>;\n }> = [\n {\n key: 'E1001',\n label: 'Duplicate Packages',\n data: [],\n },\n {\n key: 'E1002',\n label: 'Cross Chunks Package',\n data: [],\n },\n {\n key: 'E1003',\n label: 'Loader Performance Optimization',\n data: [],\n },\n {\n key: 'E1004',\n label: 'ECMA Version Check',\n data: [],\n },\n {\n key: 'E1005',\n label: 'Default Import Check',\n data: [],\n },\n {\n key: 'E1006',\n label: 'Module Mixed Chunks',\n data: [],\n },\n {\n key: 'E1007',\n label: 'Tree Shaking Side Effects Only',\n data: [],\n },\n {\n key: 'E1008',\n label: 'CJS Require Cannot Tree-Shake',\n data: [],\n },\n {\n key: 'E1009',\n label: 'ESM Import Resolved to CJS',\n data: [],\n },\n ];\n\n dataSource.forEach((data) => {\n const target = tabData.find((td) => td.key === data.code)?.data;\n target?.push(data);\n });\n\n tabData.sort(\n (a, b) => (b.data.length > 0 ? 1 : 0) - (a.data.length > 0 ? 1 : 0),\n );\n\n const tabItems = tabData.map((td) => {\n const tagStyle =\n activeKey === td.key\n ? ({\n border: '1px solid #91D5FF',\n backgroundColor: '#E6F7FF',\n } as CSSProperties)\n : {};\n\n const tagTextStyle =\n activeKey === td.key\n ? {\n color: '#1890FF',\n }\n : {};\n\n const LabelComponent = () => (\n <Overview\n style={{\n backgroundColor: 'transparent',\n paddingLeft: 0,\n paddingRight: 0,\n width: '100%',\n }}\n title={<span className={styles.labelTitle}>{td.label}</span>}\n description={\n <div className={styles.labelDescription}>\n <span>{td.data.length}</span>\n <Tag\n style={{ fontFamily: 'Menlo', borderRadius: '2px', ...tagStyle }}\n >\n <span style={{ ...tagTextStyle }}>{td.key}</span>\n </Tag>\n </div>\n }\n />\n );\n\n let children, description;\n switch (td.key) {\n case 'E1001':\n children = <AlertCollapse data={td.data} extraData={extraData} />;\n break;\n case 'E1002':\n children = (\n <CrossChunksAlertCollapse data={td.data} extraData={extraData} />\n );\n break;\n case 'E1003':\n children = <CommonList data={td.data} />;\n break;\n case 'E1004':\n description = (\n <span>\n No ECMA Version Check Rules were found. Please refer to\n 「https://rsdoctor.rs/guide/usage/rule-config」.\n </span>\n );\n children = <ECMAVersionCheck data={td.data} />;\n break;\n case 'E1005':\n children = <CommonList data={td.data} />;\n break;\n case 'E1006':\n children = (\n <ModuleMixedChunksAlertCollapse\n data={td.data}\n extraData={extraData}\n />\n );\n break;\n case 'E1007':\n children = (\n <SideEffectsOnlyImportsAlertCollapse\n data={td.data}\n extraData={extraData}\n />\n );\n break;\n case 'E1008':\n children = (\n <CjsRequireAlertCollapse data={td.data} extraData={extraData} />\n );\n break;\n case 'E1009':\n children = (\n <EsmResolvedToCjsAlertCollapse data={td.data} extraData={extraData} />\n );\n break;\n default:\n children = null;\n break;\n }\n\n if (!td.data.length) {\n children = (\n <Empty description={description} image={Empty.PRESENTED_IMAGE_SIMPLE} />\n );\n }\n\n return {\n key: td.key,\n label: <LabelComponent />,\n children: (\n <Card\n className={styles.card}\n type=\"inner\"\n title={\n <>\n <Tag\n style={{\n fontFamily: 'Menlo',\n fontWeight: '700',\n fontSize: '13px',\n backgroundColor: '#EAEDF1',\n borderRadius: '2px',\n }}\n >\n {td.key}\n </Tag>\n <span>{td.label}</span>\n </>\n }\n >\n {children}\n </Card>\n ),\n };\n });\n\n return (\n <Card style={{ width: '100%', borderRadius: '12px' }}>\n <div className={styles.container}>\n <div className={styles.title}>{title}</div>\n {!dataSource.length ? (\n <div\n style={{\n minHeight: '480px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Empty\n description={'No Bundle Alerts Data'}\n image={Empty.PRESENTED_IMAGE_SIMPLE}\n />\n </div>\n ) : (\n <Tabs\n onChange={setActiveKey}\n tabBarGutter={10}\n type=\"card\"\n defaultActiveKey={tabData[0]?.key ?? 'E1001'}\n items={tabItems}\n />\n )}\n </div>\n </Card>\n );\n};\n"],"names":["BundleAlert","title","dataSource","extraData","firstKeyWithData","code","d","activeKey","setActiveKey","useState","tabData","data","target","td","a","b","tabItems","tagStyle","tagTextStyle","LabelComponent","Overview","styles","Tag","children","description","AlertCollapse","CrossChunksAlertCollapse","CommonList","ECMAVersionCheck","ModuleMixedChunksAlertCollapse","SideEffectsOnlyImportsAlertCollapse","CjsRequireAlertCollapse","EsmResolvedToCjsAlertCollapse","Empty","Card","Tabs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components/Alerts/bundle-alert.mjs","sources":["../../../src/components/Alerts/bundle-alert.tsx"],"sourcesContent":["import { Tabs, Empty, Tag } from 'antd';\nimport { useEffect, useState } from 'react';\n\nimport { Card } from '../Card';\nimport { ECMAVersionCheck } from '../Alert/ecma-version-check';\nimport { Overview } from '../Overall/overview';\nimport { AlertCollapse } from './collapse';\nimport { CommonList } from './list';\nimport { ViewMode } from '../../constants';\n\nimport type { AlertProps } from '../Alert/types';\nimport type { CSSProperties } from 'react';\nimport type { Rule } from '@rsdoctor/types';\n\nimport styles from './bundle-alert.module.scss';\nimport { CrossChunksAlertCollapse } from './collapse-cross-chunks';\nimport { ModuleMixedChunksAlertCollapse } from './collapse-module-mixed-chunks';\nimport { SideEffectsOnlyImportsAlertCollapse } from './collapse-side-effects-only-imports';\nimport { CjsRequireAlertCollapse } from './collapse-cjs-require';\nimport { EsmResolvedToCjsAlertCollapse } from './collapse-esm-cjs';\n\ninterface BundleAlertProps {\n title: string;\n cwd: string;\n dataSource: Rule.RuleStoreDataItem[];\n extraData: Omit<AlertProps, 'data'>;\n viewMode: ViewMode;\n setViewMode(mode: ViewMode): void;\n extraCom?: React.JSX.Element | undefined;\n}\n\nconst BUILTIN_RULE_TABS = [\n {\n key: 'E1001',\n label: 'Duplicate Packages',\n },\n {\n key: 'E1002',\n label: 'Cross Chunks Package',\n },\n {\n key: 'E1003',\n label: 'Loader Performance Optimization',\n },\n {\n key: 'E1004',\n label: 'ECMA Version Check',\n },\n {\n key: 'E1005',\n label: 'Default Import Check',\n },\n {\n key: 'E1006',\n label: 'Module Mixed Chunks',\n },\n {\n key: 'E1007',\n label: 'Tree Shaking Side Effects Only',\n },\n {\n key: 'E1008',\n label: 'CJS Require Cannot Tree-Shake',\n },\n {\n key: 'E1009',\n label: 'ESM Import Resolved to CJS',\n },\n];\n\nexport const BundleAlert: React.FC<BundleAlertProps> = ({\n title,\n dataSource,\n extraData,\n}) => {\n const tabData: Array<{\n key: string;\n label: string;\n data: Array<Rule.RuleStoreDataItem>;\n tag: string;\n }> = BUILTIN_RULE_TABS.map((tab) => ({ ...tab, data: [], tag: tab.key }));\n const customRulesData: Array<Rule.RuleStoreDataItem> = [];\n\n dataSource.forEach((data) => {\n const target = tabData.find((td) => td.key === data.code);\n if (target) {\n target.data.push(data);\n } else {\n customRulesData.push(data);\n }\n });\n\n if (customRulesData.length) {\n tabData.push({\n key: 'CUSTOM_RULES',\n label: 'Custom Rules',\n data: customRulesData,\n tag: 'Custom',\n });\n }\n\n tabData.sort(\n (a, b) => (b.data.length > 0 ? 1 : 0) - (a.data.length > 0 ? 1 : 0),\n );\n\n const defaultActiveKey = tabData[0]?.key ?? 'E1001';\n const [activeKey, setActiveKey] = useState(defaultActiveKey);\n const activeTab = tabData.find((tab) => tab.key === activeKey);\n const resolvedActiveKey =\n activeTab && (activeTab.data.length > 0 || dataSource.length === 0)\n ? activeKey\n : defaultActiveKey;\n\n useEffect(() => {\n setActiveKey(defaultActiveKey);\n }, [defaultActiveKey]);\n\n const tabItems = tabData.map((td) => {\n const tagStyle =\n resolvedActiveKey === td.key\n ? ({\n border: '1px solid #91D5FF',\n backgroundColor: '#E6F7FF',\n } as CSSProperties)\n : {};\n\n const tagTextStyle =\n resolvedActiveKey === td.key\n ? {\n color: '#1890FF',\n }\n : {};\n\n const LabelComponent = () => (\n <Overview\n style={{\n backgroundColor: 'transparent',\n paddingLeft: 0,\n paddingRight: 0,\n width: '100%',\n }}\n title={<span className={styles.labelTitle}>{td.label}</span>}\n description={\n <div className={styles.labelDescription}>\n <span>{td.data.length}</span>\n <Tag\n style={{ fontFamily: 'Menlo', borderRadius: '2px', ...tagStyle }}\n >\n <span style={{ ...tagTextStyle }}>{td.tag}</span>\n </Tag>\n </div>\n }\n />\n );\n\n let children, description;\n switch (td.key) {\n case 'E1001':\n children = <AlertCollapse data={td.data} extraData={extraData} />;\n break;\n case 'E1002':\n children = (\n <CrossChunksAlertCollapse data={td.data} extraData={extraData} />\n );\n break;\n case 'E1003':\n children = <CommonList data={td.data} />;\n break;\n case 'E1004':\n description = (\n <span>\n No ECMA Version Check Rules were found. Please refer to\n 「https://rsdoctor.rs/guide/usage/rule-config」.\n </span>\n );\n children = <ECMAVersionCheck data={td.data} />;\n break;\n case 'E1005':\n children = <CommonList data={td.data} />;\n break;\n case 'E1006':\n children = (\n <ModuleMixedChunksAlertCollapse\n data={td.data}\n extraData={extraData}\n />\n );\n break;\n case 'E1007':\n children = (\n <SideEffectsOnlyImportsAlertCollapse\n data={td.data}\n extraData={extraData}\n />\n );\n break;\n case 'E1008':\n children = (\n <CjsRequireAlertCollapse data={td.data} extraData={extraData} />\n );\n break;\n case 'E1009':\n children = (\n <EsmResolvedToCjsAlertCollapse data={td.data} extraData={extraData} />\n );\n break;\n case 'CUSTOM_RULES':\n children = <CommonList data={td.data} showCode />;\n break;\n default:\n children = null;\n break;\n }\n\n if (!td.data.length) {\n children = (\n <Empty description={description} image={Empty.PRESENTED_IMAGE_SIMPLE} />\n );\n }\n\n return {\n key: td.key,\n label: <LabelComponent />,\n children: (\n <Card\n className={styles.card}\n type=\"inner\"\n title={\n <>\n <Tag\n style={{\n fontFamily: 'Menlo',\n fontWeight: '700',\n fontSize: '13px',\n backgroundColor: '#EAEDF1',\n borderRadius: '2px',\n }}\n >\n {td.tag}\n </Tag>\n <span>{td.label}</span>\n </>\n }\n >\n {children}\n </Card>\n ),\n };\n });\n\n return (\n <Card style={{ width: '100%', borderRadius: '12px' }}>\n <div className={styles.container}>\n <div className={styles.title}>{title}</div>\n {!dataSource.length ? (\n <div\n style={{\n minHeight: '480px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Empty\n description={'No Bundle Alerts Data'}\n image={Empty.PRESENTED_IMAGE_SIMPLE}\n />\n </div>\n ) : (\n <Tabs\n onChange={setActiveKey}\n tabBarGutter={10}\n type=\"card\"\n activeKey={resolvedActiveKey}\n items={tabItems}\n />\n )}\n </div>\n </Card>\n );\n};\n"],"names":["BUILTIN_RULE_TABS","BundleAlert","title","dataSource","extraData","tabData","tab","customRulesData","data","target","td","a","b","defaultActiveKey","activeKey","setActiveKey","useState","activeTab","resolvedActiveKey","useEffect","tabItems","tagStyle","tagTextStyle","LabelComponent","Overview","styles","Tag","children","description","AlertCollapse","CrossChunksAlertCollapse","CommonList","ECMAVersionCheck","ModuleMixedChunksAlertCollapse","SideEffectsOnlyImportsAlertCollapse","CjsRequireAlertCollapse","EsmResolvedToCjsAlertCollapse","Empty","Card","Tabs"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Button } from "antd";
|
|
3
3
|
import { Overview } from "../Overall/overview.mjs";
|
|
4
4
|
import { useRuleIndexNavigate } from "../../utils/index.mjs";
|
|
5
5
|
import list_module from "./list.module.mjs";
|
|
6
6
|
const CommonList = (props)=>{
|
|
7
|
-
const { data } = props;
|
|
7
|
+
const { data, showCode } = props;
|
|
8
8
|
return data.map((d)=>{
|
|
9
9
|
const { code, link, description } = d;
|
|
10
10
|
const navigate = useRuleIndexNavigate(code, link);
|
|
@@ -12,12 +12,20 @@ const CommonList = (props)=>{
|
|
|
12
12
|
style: {
|
|
13
13
|
background: '#fff'
|
|
14
14
|
},
|
|
15
|
-
description: /*#__PURE__*/
|
|
15
|
+
description: /*#__PURE__*/ jsxs("div", {
|
|
16
16
|
className: list_module.description,
|
|
17
|
-
children:
|
|
17
|
+
children: [
|
|
18
|
+
showCode ? /*#__PURE__*/ jsx("div", {
|
|
19
|
+
className: list_module.code,
|
|
20
|
+
children: code
|
|
21
|
+
}) : null,
|
|
22
|
+
/*#__PURE__*/ jsx("div", {
|
|
23
|
+
children: description || ''
|
|
24
|
+
})
|
|
25
|
+
]
|
|
18
26
|
}),
|
|
19
27
|
icon: /*#__PURE__*/ jsx(Button, {
|
|
20
|
-
onClick:
|
|
28
|
+
onClick: navigate,
|
|
21
29
|
type: "link",
|
|
22
30
|
children: "more"
|
|
23
31
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components/Alerts/list.mjs","sources":["../../../src/components/Alerts/list.tsx"],"sourcesContent":["import { Button } from 'antd';\n\nimport { Overview } from '../Overall/overview';\nimport { useRuleIndexNavigate } from '../../utils';\n\nimport type { Rule } from '@rsdoctor/types';\n\nimport styles from './list.module.scss';\n\nexport const CommonList = (props: {
|
|
1
|
+
{"version":3,"file":"components/Alerts/list.mjs","sources":["../../../src/components/Alerts/list.tsx"],"sourcesContent":["import { Button } from 'antd';\n\nimport { Overview } from '../Overall/overview';\nimport { useRuleIndexNavigate } from '../../utils';\n\nimport type { Rule } from '@rsdoctor/types';\n\nimport styles from './list.module.scss';\n\nexport const CommonList = (props: {\n data: Array<Rule.RuleStoreDataItem>;\n showCode?: boolean;\n}) => {\n const { data, showCode } = props;\n return data.map((d) => {\n const { code, link, description } = d;\n const navigate = useRuleIndexNavigate(code, link);\n\n return (\n <Overview\n style={{\n background: '#fff',\n }}\n description={\n <div className={styles.description}>\n {showCode ? <div className={styles.code}>{code}</div> : null}\n <div>{description || ''}</div>\n </div>\n }\n icon={\n <Button onClick={navigate} type=\"link\">\n more\n </Button>\n }\n />\n );\n });\n};\n"],"names":["CommonList","props","data","showCode","d","code","link","description","navigate","useRuleIndexNavigate","Overview","styles","Button"],"mappings":";;;;;AASO,MAAMA,aAAa,CAACC;IAIzB,MAAM,EAAEC,IAAI,EAAEC,QAAQ,EAAE,GAAGF;IAC3B,OAAOC,KAAK,GAAG,CAAC,CAACE;QACf,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAEC,WAAW,EAAE,GAAGH;QACpC,MAAMI,WAAWC,qBAAqBJ,MAAMC;QAE5C,OAAO,WAAP,GACE,IAACI,UAAQA;YACP,OAAO;gBACL,YAAY;YACd;YACA,2BACE,KAAC;gBAAI,WAAWC,YAAAA,WAAkB;;oBAC/BR,WAAW,WAAXA,GAAW,IAAC;wBAAI,WAAWQ,YAAAA,IAAW;kCAAGN;yBAAc;kCACxD,IAAC;kCAAKE,eAAe;;;;YAGzB,oBACE,IAACK,QAAMA;gBAAC,SAASJ;gBAAU,MAAK;0BAAO;;;IAM/C;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components/Alerts/list.module.mjs","sources":["../../../src/components/Alerts/list.module.scss"],"sourcesContent":["// extracted by LIB_CSS_EXTRACT_LOADER\nimport \"./list_module.css\"\nexport default {\"description\":\"description-h4sYv3\"};"],"names":[],"mappings":";AAEA,oBAAe;IAAC,aAAc;
|
|
1
|
+
{"version":3,"file":"components/Alerts/list.module.mjs","sources":["../../../src/components/Alerts/list.module.scss"],"sourcesContent":["// extracted by LIB_CSS_EXTRACT_LOADER\nimport \"./list_module.css\"\nexport default {\"description\":\"description-h4sYv3\",\"code\":\"code-ocfe7Q\"};"],"names":[],"mappings":";AAEA,oBAAe;IAAC,aAAc;IAAqB,MAAO;AAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://./src/components/Alerts/list.module.scss"],"names":[],"mappings":"AAAA;EACE,qBAAqB;EACrB,sBAAsB;EACtB,eAAe;EACf,gBAAgB;EAChB,iBAAiB;AACnB","sourcesContent":[".description{font-size:14px;font-weight:400;line-height:16px;white-space:pre-wrap;word-break:break-word}"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack://./src/components/Alerts/list.module.scss"],"names":[],"mappings":"AAAA;EACE,qBAAqB;EACrB,sBAAsB;EACtB,eAAe;EACf,gBAAgB;EAChB,iBAAiB;AACnB;;AANwG;EAStG,cAAc;EACd,kBAAkB;EAClB,4DAA4D;EAC5D,eAAe;EACf,gBAAgB;AAClB","sourcesContent":[".description{font-size:14px;font-weight:400;line-height:16px;white-space:pre-wrap;word-break:break-word}.code{margin-bottom:4px;color:#1890ff;font-family:Menlo,Monaco,Consolas,\"Courier New\",monospace;font-size:13px;font-weight:600}"],"sourceRoot":""}
|
|
@@ -13,6 +13,7 @@ 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
|
+
import { isJavaScriptAsset } from "../../utils/assets.mjs";
|
|
16
17
|
__rspack_external_echarts_core_d2845954.use([
|
|
17
18
|
TreemapChart,
|
|
18
19
|
TooltipComponent,
|
|
@@ -426,7 +427,27 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
|
|
|
426
427
|
const [moduleId, setModuleId] = useState('');
|
|
427
428
|
const [showAnalyze, setShowAnalyze] = useState(false);
|
|
428
429
|
const [chunkSearchQuery, setChunkSearchQuery] = useState('');
|
|
430
|
+
const [showOnlyJavaScriptAssets, setShowOnlyJavaScriptAssets] = useState(false);
|
|
429
431
|
const containerRef = react.useRef(null);
|
|
432
|
+
const visibleAssetNames = useMemo(()=>{
|
|
433
|
+
if (!showOnlyJavaScriptAssets) return assetNames;
|
|
434
|
+
return assetNames.filter(isJavaScriptAsset);
|
|
435
|
+
}, [
|
|
436
|
+
assetNames,
|
|
437
|
+
showOnlyJavaScriptAssets
|
|
438
|
+
]);
|
|
439
|
+
const visibleAssetNamesKey = useMemo(()=>visibleAssetNames.join('\0'), [
|
|
440
|
+
visibleAssetNames
|
|
441
|
+
]);
|
|
442
|
+
const previousVisibleAssetNamesKeyRef = react.useRef(void 0);
|
|
443
|
+
useEffect(()=>{
|
|
444
|
+
if (previousVisibleAssetNamesKeyRef.current === visibleAssetNamesKey) return;
|
|
445
|
+
previousVisibleAssetNamesKeyRef.current = visibleAssetNamesKey;
|
|
446
|
+
setCheckedAssets(visibleAssetNames);
|
|
447
|
+
}, [
|
|
448
|
+
visibleAssetNames,
|
|
449
|
+
visibleAssetNamesKey
|
|
450
|
+
]);
|
|
430
451
|
const handleChartClick = useCallback((params)=>{
|
|
431
452
|
onChartClick?.(params);
|
|
432
453
|
const data = params.data;
|
|
@@ -484,7 +505,7 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
|
|
|
484
505
|
};
|
|
485
506
|
}, []);
|
|
486
507
|
const filteredTreeData = useMemo(()=>{
|
|
487
|
-
let filtered = treeData.filter((item)=>checkedAssets.includes(item.name));
|
|
508
|
+
let filtered = treeData.filter((item)=>visibleAssetNames.includes(item.name) && checkedAssets.includes(item.name));
|
|
488
509
|
if (chunkSearchQuery.trim()) {
|
|
489
510
|
const searchLower = chunkSearchQuery.toLowerCase();
|
|
490
511
|
filtered = filtered.filter((item)=>item.name.toLowerCase().includes(searchLower));
|
|
@@ -493,7 +514,8 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
|
|
|
493
514
|
}, [
|
|
494
515
|
treeData,
|
|
495
516
|
checkedAssets,
|
|
496
|
-
chunkSearchQuery
|
|
517
|
+
chunkSearchQuery,
|
|
518
|
+
visibleAssetNames
|
|
497
519
|
]);
|
|
498
520
|
const searchResults = useMemo(()=>{
|
|
499
521
|
if (!searchQuery.trim()) return [];
|
|
@@ -629,19 +651,27 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
|
|
|
629
651
|
}
|
|
630
652
|
}),
|
|
631
653
|
/*#__PURE__*/ jsx(Checkbox, {
|
|
632
|
-
indeterminate: checkedAssets.length > 0 && checkedAssets.length <
|
|
633
|
-
checked: checkedAssets.length ===
|
|
634
|
-
onChange: (e)=>setCheckedAssets(e.target.checked ?
|
|
654
|
+
indeterminate: checkedAssets.length > 0 && checkedAssets.length < visibleAssetNames.length,
|
|
655
|
+
checked: visibleAssetNames.length > 0 && checkedAssets.length === visibleAssetNames.length,
|
|
656
|
+
onChange: (e)=>setCheckedAssets(e.target.checked ? visibleAssetNames : []),
|
|
635
657
|
className: treemap_module["all-none-checkbox"],
|
|
636
658
|
children: "All"
|
|
637
659
|
}),
|
|
660
|
+
/*#__PURE__*/ jsx(Checkbox, {
|
|
661
|
+
checked: showOnlyJavaScriptAssets,
|
|
662
|
+
onChange: (e)=>{
|
|
663
|
+
setShowOnlyJavaScriptAssets(e.target.checked);
|
|
664
|
+
},
|
|
665
|
+
className: treemap_module["all-none-checkbox"],
|
|
666
|
+
children: "JS only"
|
|
667
|
+
}),
|
|
638
668
|
/*#__PURE__*/ jsx("div", {
|
|
639
669
|
className: treemap_module["chunk-list"],
|
|
640
670
|
style: {
|
|
641
671
|
maxHeight: 180,
|
|
642
672
|
overflowY: 'auto'
|
|
643
673
|
},
|
|
644
|
-
children:
|
|
674
|
+
children: visibleAssetNames.filter((name)=>name.toLowerCase().includes(chunkSearchQuery.toLowerCase())).map((name)=>/*#__PURE__*/ jsxs("div", {
|
|
645
675
|
className: treemap_module["chunk-item"],
|
|
646
676
|
style: {
|
|
647
677
|
height: 15,
|