@rsdoctor/components 1.1.4 → 1.1.6
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 +281 -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/components/Overall/help-center.js +2 -1
- package/dist/components/Overall/help-center.js.map +1 -1
- package/dist/pages/BundleSize/components/asset.js.map +1 -1
- package/dist/pages/BundleSize/components/cards.js +8 -1
- package/dist/pages/BundleSize/components/cards.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 +72 -31
- 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,281 @@
|
|
|
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
|
+
}
|
|
197
|
+
setSearchModalOpen(false);
|
|
198
|
+
};
|
|
199
|
+
return /* @__PURE__ */ jsx("div", { style: { display: "flex", flexDirection: "column", gap: 16 }, children: /* @__PURE__ */ jsxs(Space, { direction: "vertical", style: { width: "100%" }, children: [
|
|
200
|
+
/* @__PURE__ */ jsx(
|
|
201
|
+
Card,
|
|
202
|
+
{
|
|
203
|
+
title: /* @__PURE__ */ jsxs(Space, { children: [
|
|
204
|
+
/* @__PURE__ */ jsx(Typography.Text, { children: t("Output Assets List") }),
|
|
205
|
+
/* @__PURE__ */ jsx(
|
|
206
|
+
SearchModal,
|
|
207
|
+
{
|
|
208
|
+
onModuleClick: handleModuleClick,
|
|
209
|
+
open: searchModalOpen,
|
|
210
|
+
setOpen: setSearchModalOpen,
|
|
211
|
+
isIcon: true
|
|
212
|
+
}
|
|
213
|
+
)
|
|
214
|
+
] }),
|
|
215
|
+
extra: /* @__PURE__ */ jsx(
|
|
216
|
+
"span",
|
|
217
|
+
{
|
|
218
|
+
style: { cursor: "pointer", marginLeft: 8 },
|
|
219
|
+
onClick: () => setCollapsed((c) => !c),
|
|
220
|
+
"aria-label": collapsed ? t("Expand") : t("Collapse"),
|
|
221
|
+
children: collapsed ? /* @__PURE__ */ jsx(VerticalAlignBottomOutlined, {}) : /* @__PURE__ */ jsx(VerticalAlignTopOutlined, {})
|
|
222
|
+
}
|
|
223
|
+
),
|
|
224
|
+
size: "small",
|
|
225
|
+
bodyStyle: {
|
|
226
|
+
overflow: "hidden",
|
|
227
|
+
height: collapsed ? 0 : void 0,
|
|
228
|
+
padding: collapsed ? 0 : void 0,
|
|
229
|
+
transition: "height 0.3s cubic-bezier(.4,0,.2,1), padding 0.3s"
|
|
230
|
+
},
|
|
231
|
+
children: /* @__PURE__ */ jsxs(
|
|
232
|
+
"div",
|
|
233
|
+
{
|
|
234
|
+
style: {
|
|
235
|
+
opacity: collapsed ? 0 : 1,
|
|
236
|
+
transition: "opacity 0.3s",
|
|
237
|
+
gap: 8
|
|
238
|
+
},
|
|
239
|
+
children: [
|
|
240
|
+
/* @__PURE__ */ jsx(
|
|
241
|
+
Checkbox,
|
|
242
|
+
{
|
|
243
|
+
indeterminate: checkedAssets.length > 0 && checkedAssets.length < assetNames.length,
|
|
244
|
+
checked: checkedAssets.length === assetNames.length,
|
|
245
|
+
onChange: (e) => setCheckedAssets(e.target.checked ? assetNames : []),
|
|
246
|
+
style: { marginBottom: 4 },
|
|
247
|
+
children: "ALL / NONE"
|
|
248
|
+
},
|
|
249
|
+
"all-none-checkbox"
|
|
250
|
+
),
|
|
251
|
+
/* @__PURE__ */ jsx(
|
|
252
|
+
Checkbox.Group,
|
|
253
|
+
{
|
|
254
|
+
options: assetNames,
|
|
255
|
+
value: checkedAssets,
|
|
256
|
+
onChange: setCheckedAssets,
|
|
257
|
+
style: { display: "flex", gap: 8, fontWeight: 500 }
|
|
258
|
+
},
|
|
259
|
+
"asset-checkbox-group"
|
|
260
|
+
)
|
|
261
|
+
]
|
|
262
|
+
}
|
|
263
|
+
)
|
|
264
|
+
}
|
|
265
|
+
),
|
|
266
|
+
/* @__PURE__ */ jsx("div", { style: { flex: 1 }, children: /* @__PURE__ */ jsx(
|
|
267
|
+
TreeMap,
|
|
268
|
+
{
|
|
269
|
+
ref: chartRef,
|
|
270
|
+
treeData: filteredTreeData,
|
|
271
|
+
onChartClick
|
|
272
|
+
}
|
|
273
|
+
) })
|
|
274
|
+
] }) });
|
|
275
|
+
};
|
|
276
|
+
export {
|
|
277
|
+
AssetTreemapWithFilter,
|
|
278
|
+
TreeMap
|
|
279
|
+
};
|
|
280
|
+
|
|
281
|
+
//# 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 }\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 key=\"all-none-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 key=\"asset-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":"AA0DU,cACA,YADA;AA1DV,SAAS,cAAc;AACvB,SAAS,qBAAqB;AAE9B,SAAS,YAAY;AACrB,SAAS,eAAe;AAExB,OAAO,YAAY;AAEnB,MAAM,OAAO;AAAA,EACX;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AACF;AAEO,MAAM,aAAa,MAAM;AAC9B,QAAM,EAAE,EAAE,IAAI,QAAQ;AAEtB,SACE,oBAAC,QAAK,OAAO,EAAE,OAAO,QAAQ,cAAc,OAAO,GACjD,+BAAC,SACC;AAAA,yBAAC,SAAI,WAAW,OAAO,OACrB;AAAA,0BAAC,UAAM,YAAE,aAAa,GAAE;AAAA,MACxB;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,SAAS,EAAE;AAAA,UAC3D,MAAK;AAAA,UACL,SAAS,MAAM;AACb,mBAAO,KAAK,6BAA6B,QAAQ;AAAA,UACnD;AAAA,UAEA;AAAA,gCAAC,UAAK,OAAO,EAAE,aAAa,MAAM,GAAG,kBAAI;AAAA,YACzC,oBAAC,iBAAc,OAAO,EAAE,UAAU,OAAO,GAAG;AAAA;AAAA;AAAA,MAC9C;AAAA,OACF;AAAA,IACA,oBAAC,SAAI,WAAW,OAAO,WACpB,eAAK,IAAI,CAAC,EAAE,OAAO,KAAK,GAAG,QAAQ;AAClC,aACE;AAAA,QAAC;AAAA;AAAA,
|
|
1
|
+
{"version":3,"mappings":"AA0DU,cACA,YADA;AA1DV,SAAS,cAAc;AACvB,SAAS,qBAAqB;AAE9B,SAAS,YAAY;AACrB,SAAS,eAAe;AAExB,OAAO,YAAY;AAEnB,MAAM,OAAO;AAAA,EACX;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AACF;AAEO,MAAM,aAAa,MAAM;AAC9B,QAAM,EAAE,EAAE,IAAI,QAAQ;AAEtB,SACE,oBAAC,QAAK,OAAO,EAAE,OAAO,QAAQ,cAAc,OAAO,GACjD,+BAAC,SACC;AAAA,yBAAC,SAAI,WAAW,OAAO,OACrB;AAAA,0BAAC,UAAM,YAAE,aAAa,GAAE;AAAA,MACxB;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,SAAS,EAAE;AAAA,UAC3D,MAAK;AAAA,UACL,SAAS,MAAM;AACb,mBAAO,KAAK,6BAA6B,QAAQ;AAAA,UACnD;AAAA,UAEA;AAAA,gCAAC,UAAK,OAAO,EAAE,aAAa,MAAM,GAAG,kBAAI;AAAA,YACzC,oBAAC,iBAAc,OAAO,EAAE,UAAU,OAAO,GAAG;AAAA;AAAA;AAAA,MAC9C;AAAA,OACF;AAAA,IACA,oBAAC,SAAI,WAAW,OAAO,WACpB,eAAK,IAAI,CAAC,EAAE,OAAO,KAAK,GAAG,QAAQ;AAClC,aACE;AAAA,QAAC;AAAA;AAAA,UAEC,WAAW,OAAO;AAAA,UAClB,OAAO;AAAA,YACL,cAAc,MAAM,KAAK,SAAS,IAAI,SAAS;AAAA,UACjD;AAAA,UACA,SAAS,MAAM,OAAO,KAAK,MAAM,QAAQ;AAAA,UAExC,YAAE,KAAK;AAAA;AAAA,QAPH;AAAA,MAQP;AAAA,IAEJ,CAAC,GACH;AAAA,KACF,GACF;AAEJ","names":[],"ignoreList":[],"sources":["../../../src/components/Overall/help-center.tsx"],"sourcesContent":["import { Button } from 'antd';\nimport { RightOutlined } from '@ant-design/icons';\n\nimport { Card } from '../Card';\nimport { useI18n } from '../../utils';\n\nimport styles from './help-center.module';\n\nconst data = [\n {\n title: 'FAQ',\n link: 'https://rsdoctor.rs/guide/more/faq',\n },\n {\n title: 'Introduction',\n link: 'https://rsdoctor.rs/guide/start/intro',\n },\n {\n title: 'Bundle Alerts',\n link: 'https://rsdoctor.rs/guide/usage/bundle-alerts',\n },\n {\n title: 'Bundle Overall',\n link: 'https://rsdoctor.rs/guide/usage/bundle-overall',\n },\n {\n title: 'Bundle Analysis',\n link: 'https://rsdoctor.rs/guide/usage/bundle-size',\n },\n {\n title: 'Compilation Alerts',\n link: 'https://rsdoctor.rs/guide/usage/compile-alerts',\n },\n {\n title: 'Compile Overall',\n link: 'https://rsdoctor.rs/guide/usage/compile-overall',\n },\n {\n title: 'Loaders Analysis',\n link: 'https://rsdoctor.rs/guide/usage/loaders-analysis',\n },\n {\n title: 'Loaders Timeline',\n link: 'https://rsdoctor.rs/guide/usage/loaders-timeline',\n },\n {\n title: 'Plugin Analysis',\n link: 'https://rsdoctor.rs/guide/usage/plugins-analysis',\n },\n];\n\nexport const HelpCenter = () => {\n const { t } = useI18n();\n\n return (\n <Card style={{ width: '100%', borderRadius: '12px' }}>\n <div>\n <div className={styles.title}>\n <span>{t('Help Center')}</span>\n <Button\n style={{ display: 'flex', alignItems: 'center', padding: 0 }}\n type=\"link\"\n onClick={() => {\n window.open('https://rsdoctor.rs/index', '_blank');\n }}\n >\n <span style={{ marginRight: '3px' }}>More</span>\n <RightOutlined style={{ fontSize: '10px' }} />\n </Button>\n </div>\n <div className={styles.container}>\n {data.map(({ title, link }, idx) => {\n return (\n <div\n key={idx}\n className={styles.content}\n style={{\n marginBottom: idx < data.length - 2 ? '16px' : 0,\n }}\n onClick={() => window.open(link, '_blank')}\n >\n {t(title)}\n </div>\n );\n })}\n </div>\n </div>\n </Card>\n );\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|