@rsdoctor/components 1.5.17 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/dist/components/Alert/ecma-version-check_module.css +1 -1
  2. package/dist/components/Alert/ecma-version-check_module.css.map +1 -1
  3. package/dist/components/Alerts/bundle-alert.d.ts +1 -1
  4. package/dist/components/Alerts/bundle-alert.mjs +82 -73
  5. package/dist/components/Alerts/bundle-alert.mjs.map +1 -1
  6. package/dist/components/Alerts/bundle.mjs +1 -2
  7. package/dist/components/Alerts/bundle.mjs.map +1 -1
  8. package/dist/components/Alerts/collapse-cjs-require.mjs +6 -14
  9. package/dist/components/Alerts/collapse-cjs-require.mjs.map +1 -1
  10. package/dist/components/Alerts/collapse-cross-chunks.mjs +3 -8
  11. package/dist/components/Alerts/collapse-cross-chunks.mjs.map +1 -1
  12. package/dist/components/Alerts/collapse-esm-cjs.mjs +6 -10
  13. package/dist/components/Alerts/collapse-esm-cjs.mjs.map +1 -1
  14. package/dist/components/Alerts/collapse-module-mixed-chunks.mjs +5 -12
  15. package/dist/components/Alerts/collapse-module-mixed-chunks.mjs.map +1 -1
  16. package/dist/components/Alerts/collapse-side-effects-only-imports.mjs +5 -12
  17. package/dist/components/Alerts/collapse-side-effects-only-imports.mjs.map +1 -1
  18. package/dist/components/Alerts/collapse.mjs +3 -10
  19. package/dist/components/Alerts/collapse.mjs.map +1 -1
  20. package/dist/components/Alerts/collapse_module.css +1 -1
  21. package/dist/components/Alerts/collapse_module.css.map +1 -1
  22. package/dist/components/Alerts/index.module.mjs +7 -0
  23. package/dist/components/Alerts/index.module.mjs.map +1 -0
  24. package/dist/components/Alerts/index_module.css +9 -0
  25. package/dist/components/Alerts/index_module.css.map +1 -0
  26. package/dist/components/Alerts/list.d.ts +1 -0
  27. package/dist/components/Alerts/list.mjs +13 -8
  28. package/dist/components/Alerts/list.mjs.map +1 -1
  29. package/dist/components/Alerts/list.module.mjs +2 -1
  30. package/dist/components/Alerts/list.module.mjs.map +1 -1
  31. package/dist/components/Alerts/list_module.css +8 -0
  32. package/dist/components/Alerts/list_module.css.map +1 -1
  33. package/dist/components/Card/size_module.css +0 -2
  34. package/dist/components/Card/size_module.css.map +1 -1
  35. package/dist/components/Charts/TimelineCharts/index.mjs +63 -39
  36. package/dist/components/Charts/TimelineCharts/index.mjs.map +1 -1
  37. package/dist/components/Charts/TreeMap.mjs +124 -107
  38. package/dist/components/Charts/TreeMap.mjs.map +1 -1
  39. package/dist/components/Charts/index.mjs +3 -1
  40. package/dist/components/Charts/index.mjs.map +1 -1
  41. package/dist/components/Charts/treemap_module.css +6 -5
  42. package/dist/components/Charts/treemap_module.css.map +1 -1
  43. package/dist/components/FileTree/index.css +0 -1
  44. package/dist/components/FileTree/index.css.map +1 -1
  45. package/dist/components/FileTree/index.mjs +3 -4
  46. package/dist/components/FileTree/index.mjs.map +1 -1
  47. package/dist/components/Keyword/style_module.css +0 -1
  48. package/dist/components/Keyword/style_module.css.map +1 -1
  49. package/dist/components/Layout/header.mjs +22 -6
  50. package/dist/components/Layout/header.mjs.map +1 -1
  51. package/dist/components/Layout/header.module.mjs +0 -1
  52. package/dist/components/Layout/header.module.mjs.map +1 -1
  53. package/dist/components/Layout/header_module.css +0 -6
  54. package/dist/components/Layout/header_module.css.map +1 -1
  55. package/dist/components/Layout/index.mjs +27 -8
  56. package/dist/components/Layout/index.mjs.map +1 -1
  57. package/dist/components/Layout/menus.mjs +3 -1
  58. package/dist/components/Layout/menus.mjs.map +1 -1
  59. package/dist/components/Layout/rsdoctor-title-logo-dark.mjs +2 -0
  60. package/dist/components/Loader/Analysis/files.mjs +16 -17
  61. package/dist/components/Loader/Analysis/files.mjs.map +1 -1
  62. package/dist/components/Loader/Analysis/style_module.css +13 -14
  63. package/dist/components/Loader/Analysis/style_module.css.map +1 -1
  64. package/dist/components/Loader/executions.mjs +5 -13
  65. package/dist/components/Loader/executions.mjs.map +1 -1
  66. package/dist/components/Opener/ide.mjs +36 -2
  67. package/dist/components/Opener/ide.mjs.map +1 -1
  68. package/dist/components/Overall/DataSummary.mjs +21 -20
  69. package/dist/components/Overall/DataSummary.mjs.map +1 -1
  70. package/dist/components/Overall/DataSummary.module.mjs +1 -12
  71. package/dist/components/Overall/DataSummary.module.mjs.map +1 -1
  72. package/dist/components/Overall/DataSummary_module.css +7 -72
  73. package/dist/components/Overall/DataSummary_module.css.map +1 -1
  74. package/dist/components/Overall/bundle_module.css +1 -4
  75. package/dist/components/Overall/bundle_module.css.map +1 -1
  76. package/dist/components/Overall/list_module.css +0 -2
  77. package/dist/components/Overall/list_module.css.map +1 -1
  78. package/dist/components/Overall/overview_module.css +1 -2
  79. package/dist/components/Overall/overview_module.css.map +1 -1
  80. package/dist/components/base/CodeViewer/index.d.ts +1 -1
  81. package/dist/components/base/CodeViewer/index.mjs +5 -3
  82. package/dist/components/base/CodeViewer/index.mjs.map +1 -1
  83. package/dist/components/base/CodeViewer/interface.d.ts +1 -2
  84. package/dist/components/base/DiffViewer/index.d.ts +1 -1
  85. package/dist/components/base/DiffViewer/index.mjs +4 -1
  86. package/dist/components/base/DiffViewer/index.mjs.map +1 -1
  87. package/dist/components/base/DiffViewer/interface.d.ts +1 -2
  88. package/dist/pages/BundleSize/components/asset-path.d.ts +7 -0
  89. package/dist/pages/BundleSize/components/asset-path.mjs +9 -0
  90. package/dist/pages/BundleSize/components/asset-path.mjs.map +1 -0
  91. package/dist/pages/BundleSize/components/asset-path.test.d.ts +1 -0
  92. package/dist/pages/BundleSize/components/asset-path.test.mjs +27 -0
  93. package/dist/pages/BundleSize/components/asset-path.test.mjs.map +1 -0
  94. package/dist/pages/BundleSize/components/asset_module.css +7 -5
  95. package/dist/pages/BundleSize/components/asset_module.css.map +1 -1
  96. package/dist/pages/BundleSize/components/card_module.css +2 -2
  97. package/dist/pages/BundleSize/components/card_module.css.map +1 -1
  98. package/dist/pages/BundleSize/components/cards.mjs +5 -6
  99. package/dist/pages/BundleSize/components/cards.mjs.map +1 -1
  100. package/dist/pages/BundleSize/components/index.mjs +15 -11
  101. package/dist/pages/BundleSize/components/index.mjs.map +1 -1
  102. package/dist/pages/BundleSize/components/index.module.mjs +1 -6
  103. package/dist/pages/BundleSize/components/index.module.mjs.map +1 -1
  104. package/dist/pages/BundleSize/components/index_module.css +0 -37
  105. package/dist/pages/BundleSize/components/index_module.css.map +1 -1
  106. package/dist/pages/BundleSize/components/search-modal.mjs +5 -5
  107. package/dist/pages/BundleSize/components/search-modal.mjs.map +1 -1
  108. package/dist/pages/BundleSize/components/search-modal.module.mjs +10 -0
  109. package/dist/pages/BundleSize/components/search-modal.module.mjs.map +1 -0
  110. package/dist/pages/BundleSize/components/search-modal_module.css +39 -0
  111. package/dist/pages/BundleSize/components/search-modal_module.css.map +1 -0
  112. package/dist/pages/BundleSize/components/tree-graph.mjs +32 -15
  113. package/dist/pages/BundleSize/components/tree-graph.mjs.map +1 -1
  114. package/dist/pages/ModuleAnalyze/components/fileTreeCom.css +6 -2
  115. package/dist/pages/ModuleAnalyze/components/fileTreeCom.css.map +1 -1
  116. package/dist/pages/ModuleAnalyze/index.css +4 -6
  117. package/dist/pages/ModuleAnalyze/index.css.map +1 -1
  118. package/dist/pages/ModuleAnalyze/index.mjs +3 -4
  119. package/dist/pages/ModuleAnalyze/index.mjs.map +1 -1
  120. package/dist/pages/WebpackLoaders/Analysis/index.mjs +3 -3
  121. package/dist/pages/WebpackLoaders/Analysis/index.mjs.map +1 -1
  122. package/dist/pages/WebpackLoaders/Overall/index.mjs +1 -1
  123. package/dist/pages/WebpackLoaders/Overall/index.mjs.map +1 -1
  124. package/dist/static/image/rsdoctor-title-logo-dark.png +0 -0
  125. package/dist/utils/assets.d.ts +1 -0
  126. package/dist/utils/assets.mjs +17 -0
  127. package/dist/utils/assets.mjs.map +1 -0
  128. package/dist/utils/assets.test.d.ts +1 -0
  129. package/dist/utils/assets.test.mjs +22 -0
  130. package/dist/utils/assets.test.mjs.map +1 -0
  131. package/dist/utils/hooks.d.ts +1 -0
  132. package/dist/utils/hooks.mjs +6 -1
  133. package/dist/utils/hooks.mjs.map +1 -1
  134. package/package.json +8 -8
@@ -1,5 +1,5 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
- import { memo, useEffect, useState } from "react";
2
+ import { memo, useEffect, useMemo, useState } from "react";
3
3
  import core from "echarts-for-react/esm/core";
4
4
  import * as __rspack_external_echarts_core_d2845954 from "echarts/core";
5
5
  import { CustomChart } from "echarts/charts";
@@ -8,30 +8,23 @@ import { CanvasRenderer } from "echarts/renderers";
8
8
  import dayjs from "dayjs";
9
9
  import { groupBy } from "es-toolkit/compat";
10
10
  import { ChartTypes, PALETTE_COLORS } from "../constants.mjs";
11
+ import { useTheme, useThemeToken } from "../../../utils/index.mjs";
11
12
  const LINE_HEIGHT = 60;
12
- const TimelineCom = /*#__PURE__*/ memo(({ loaderData, pluginsData, formatterFn, chartType = ChartTypes.Normal, exts = null })=>{
13
+ const DARK_MODE_LOADER_BAR_OPACITY = 0.6;
14
+ function buildTimelineData(loaderData, pluginsData) {
13
15
  const data = [];
14
- let categories = [];
15
- const [optionsData, setOptionsData] = useState({});
16
- __rspack_external_echarts_core_d2845954.use([
17
- CustomChart,
18
- TooltipComponent,
19
- GridComponent,
20
- DataZoomComponent,
21
- CanvasRenderer
22
- ]);
23
- useEffect(()=>{
24
- if (!loaderData) return;
25
- const _categories = [];
16
+ const categories = [];
17
+ if (loaderData) {
18
+ const loaderCategories = [];
26
19
  loaderData.forEach((_l)=>{
27
- _categories.unshift(_l.n + ' total');
28
- _categories.unshift(_l.n);
20
+ loaderCategories.unshift(_l.n + ' total');
21
+ loaderCategories.unshift(_l.n);
29
22
  });
30
- loaderData.forEach(function(_loaderData, _i) {
23
+ loaderData.forEach((_loaderData)=>{
31
24
  data.push({
32
25
  name: _loaderData.n + ' total',
33
26
  value: [
34
- _categories.indexOf(_loaderData.n + ' total'),
27
+ loaderCategories.indexOf(_loaderData.n + ' total'),
35
28
  _loaderData.s,
36
29
  _loaderData.e,
37
30
  _loaderData.e - _loaderData.s
@@ -44,10 +37,10 @@ const TimelineCom = /*#__PURE__*/ memo(({ loaderData, pluginsData, formatterFn,
44
37
  }
45
38
  });
46
39
  if (!_loaderData?.c) return;
47
- for(let l = 0; l < _loaderData?.c?.length; l++)data.push({
40
+ for(let l = 0; l < _loaderData.c.length; l++)data.push({
48
41
  name: _loaderData.n,
49
42
  value: [
50
- _categories.indexOf(_loaderData.n),
43
+ loaderCategories.indexOf(_loaderData.n),
51
44
  _loaderData.c[l].s,
52
45
  _loaderData.c[l].e,
53
46
  _loaderData.c[l].e - _loaderData.c[l].s
@@ -61,18 +54,12 @@ const TimelineCom = /*#__PURE__*/ memo(({ loaderData, pluginsData, formatterFn,
61
54
  ext: _loaderData.c[l].ext
62
55
  });
63
56
  });
64
- categories = _categories.map((val, i)=>{
65
- if (i % 2 !== 0) return val.replace(' total', '');
66
- return '';
67
- });
68
- }, [
69
- loaderData
70
- ]);
71
- useEffect(()=>{
72
- if (!pluginsData) return;
73
- const _pluginsData = groupBy(pluginsData, (e)=>e.pid);
74
- Object.keys(_pluginsData).reverse().forEach(function(key, i) {
75
- _pluginsData[key].forEach((_plugin, _i)=>{
57
+ categories.push(...loaderCategories.map((val, i)=>i % 2 !== 0 ? val.replace(' total', '') : ''));
58
+ }
59
+ if (pluginsData) {
60
+ const plugins = groupBy(pluginsData, (e)=>e.pid);
61
+ Object.keys(plugins).reverse().forEach((key, i)=>{
62
+ plugins[key].forEach((_plugin)=>{
76
63
  data.push({
77
64
  name: String(_plugin.pid),
78
65
  value: [
@@ -92,9 +79,43 @@ const TimelineCom = /*#__PURE__*/ memo(({ loaderData, pluginsData, formatterFn,
92
79
  });
93
80
  categories.push(String(key.charAt(0).toUpperCase() + key.slice(1)));
94
81
  });
95
- }, [
82
+ }
83
+ return {
84
+ data,
85
+ categories
86
+ };
87
+ }
88
+ const TimelineCom = /*#__PURE__*/ memo(({ loaderData, pluginsData, formatterFn, chartType = ChartTypes.Normal, exts = null })=>{
89
+ const [optionsData, setOptionsData] = useState({});
90
+ const { isDark } = useTheme();
91
+ const themeToken = useThemeToken();
92
+ const { data, categories } = useMemo(()=>buildTimelineData(loaderData, pluginsData), [
93
+ loaderData,
96
94
  pluginsData
97
95
  ]);
96
+ const themedData = useMemo(()=>{
97
+ if (!isDark || chartType !== ChartTypes.Loader) return data;
98
+ return data.map((item)=>({
99
+ ...item,
100
+ itemStyle: {
101
+ normal: {
102
+ ...item.itemStyle.normal,
103
+ opacity: DARK_MODE_LOADER_BAR_OPACITY
104
+ }
105
+ }
106
+ }));
107
+ }, [
108
+ chartType,
109
+ data,
110
+ isDark
111
+ ]);
112
+ __rspack_external_echarts_core_d2845954.use([
113
+ CustomChart,
114
+ TooltipComponent,
115
+ GridComponent,
116
+ DataZoomComponent,
117
+ CanvasRenderer
118
+ ]);
98
119
  useEffect(()=>{
99
120
  function renderItem(params, api) {
100
121
  const categoryIndex = api.value(0);
@@ -186,7 +207,7 @@ const TimelineCom = /*#__PURE__*/ memo(({ loaderData, pluginsData, formatterFn,
186
207
  lineHeight: 20,
187
208
  width: 100,
188
209
  fontSize: 12,
189
- color: '#000',
210
+ color: themeToken.colorText,
190
211
  verticalAlign: 'bottom'
191
212
  },
192
213
  axisLine: {
@@ -211,15 +232,18 @@ const TimelineCom = /*#__PURE__*/ memo(({ loaderData, pluginsData, formatterFn,
211
232
  ],
212
233
  y: 0
213
234
  },
214
- data
235
+ data: themedData
215
236
  }
216
237
  ]
217
238
  };
218
239
  setOptionsData(option);
219
240
  }, [
220
- loaderData,
221
- pluginsData,
222
- exts
241
+ chartType,
242
+ exts,
243
+ formatterFn,
244
+ themeToken,
245
+ categories,
246
+ themedData
223
247
  ]);
224
248
  return /*#__PURE__*/ jsx(core, {
225
249
  option: optionsData,
@@ -228,7 +252,7 @@ const TimelineCom = /*#__PURE__*/ memo(({ loaderData, pluginsData, formatterFn,
228
252
  width: '100%',
229
253
  minHeight: chartType === ChartTypes.Loader ? '500px' : chartType === ChartTypes.Minify ? '100px' : '200px',
230
254
  maxHeight: chartType === ChartTypes.Minify ? '100px' : '1000px',
231
- border: '1px solid #eee',
255
+ border: '1px solid var(--color-border)',
232
256
  borderRadius: '10px'
233
257
  }
234
258
  });
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/TimelineCharts/index.mjs","sources":["../../../../src/components/Charts/TimelineCharts/index.tsx"],"sourcesContent":["import React, { useState, useEffect, memo } from 'react';\nimport ReactEChartsCore from 'echarts-for-react/esm/core';\nimport * as echarts from 'echarts/core';\nimport { CustomChart } from 'echarts/charts';\nimport {\n TooltipComponent,\n GridComponent,\n DataZoomComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\n\nimport dayjs from 'dayjs';\nimport { ChartProps, DurationMetric, ITraceEventData } from '../types';\nimport { groupBy } from 'es-toolkit/compat';\nimport { ChartTypes, PALETTE_COLORS } from '../constants';\n\ninterface CoordSysType {\n x: number;\n y: number;\n width: number;\n height: number;\n}\ntype LoaderType = {\n name: string;\n value: number[];\n itemStyle: { normal: { color: string; opacity?: number } };\n ext?: Record<string, any>;\n};\n\nconst LINE_HEIGHT = 60;\n\nexport const TimelineCom: React.FC<{\n loaderData?: DurationMetric[];\n pluginsData?: ITraceEventData[];\n formatterFn: Function;\n chartType?: ChartTypes;\n exts?: { endTimestamp: number; startTimestamp: number };\n}> = memo(\n ({\n loaderData,\n pluginsData,\n formatterFn,\n chartType = ChartTypes.Normal,\n exts = null,\n }) => {\n const data: LoaderType[] = [];\n let categories: string[] = [];\n const [optionsData, setOptionsData] = useState({});\n\n // Register the required components\n echarts.use([\n CustomChart,\n TooltipComponent,\n GridComponent,\n DataZoomComponent,\n CanvasRenderer,\n ]);\n\n useEffect(() => {\n if (!loaderData) return;\n const _categories: string[] = [];\n loaderData.forEach((_l) => {\n _categories.unshift(_l.n + ' total');\n _categories.unshift(_l.n);\n });\n\n // Generate mock data\n loaderData.forEach(function (_loaderData, _i) {\n data.push({\n name: _loaderData.n + ' total',\n value: [\n _categories.indexOf(_loaderData.n + ' total'),\n _loaderData.s,\n _loaderData.e,\n _loaderData.e - _loaderData.s,\n ],\n itemStyle: {\n normal: {\n color: PALETTE_COLORS[Math.floor(Math.random() * 27)],\n opacity: 0.25,\n },\n },\n });\n\n if (!_loaderData?.c) return;\n for (let l = 0; l < _loaderData?.c?.length; l++) {\n data.push({\n name: _loaderData.n,\n value: [\n _categories.indexOf(_loaderData.n),\n _loaderData.c[l].s,\n _loaderData.c[l].e,\n _loaderData.c[l].e - _loaderData.c[l].s,\n ],\n itemStyle: {\n normal: {\n color: PALETTE_COLORS[Math.floor(Math.random() * 27)],\n opacity: 0.25,\n },\n },\n ext: _loaderData.c[l].ext as ChartProps['loaders'][0],\n });\n }\n });\n\n categories = _categories.map((val, i) => {\n if (i % 2 !== 0) {\n return val.replace(' total', '');\n } else {\n return '';\n }\n });\n }, [loaderData]);\n\n useEffect(() => {\n if (!pluginsData) return;\n\n const _pluginsData = groupBy(pluginsData, (e: ITraceEventData) => e.pid);\n\n Object.keys(_pluginsData)\n .reverse()\n .forEach(function (key, i) {\n _pluginsData[key].forEach((_plugin, _i) => {\n data.push({\n name: String(_plugin.pid),\n value: [\n i,\n _plugin.args.s,\n _plugin.args.e,\n _plugin.args.e - _plugin.args.s,\n ],\n itemStyle: {\n normal: {\n color: PALETTE_COLORS[Math.floor(Math.random() * 27)],\n opacity: 0.25,\n },\n },\n ext: _plugin,\n });\n });\n categories.push(String(key.charAt(0).toUpperCase() + key.slice(1)));\n });\n }, [pluginsData]);\n\n useEffect(() => {\n function renderItem(\n params: { coordSys: CoordSysType },\n api: {\n value: (arg0: number) => number;\n coord: (arg0: number[]) => any;\n size: (arg0: number[]) => number[];\n style: () => string;\n },\n ) {\n const categoryIndex = api.value(0);\n const start = api.coord([api.value(1), categoryIndex]);\n const end = api.coord([api.value(2), categoryIndex]);\n const height = api.size([0, 1])[1] * 0.3;\n\n const rectShape = echarts.graphic.clipRectByRect(\n {\n x: start[0],\n y:\n chartType === ChartTypes.Loader\n ? start[1] - (categoryIndex % 2 !== 0 ? 0 : height * 2)\n : start[1],\n width: end[0] - start[0] || 5,\n height: height,\n },\n {\n x: params.coordSys.x,\n y: params.coordSys.y,\n width: params.coordSys.width,\n height: params.coordSys.height,\n },\n );\n return (\n rectShape && {\n type: 'rect',\n transition: ['shape'],\n shape: rectShape,\n style: api.style(),\n enterFrom: {\n style: { opacity: 0 },\n x: 0,\n },\n }\n );\n }\n\n const option = {\n tooltip: {\n formatter: (raw: any) => {\n return formatterFn(raw);\n },\n },\n dataZoom: [\n {\n type: 'slider',\n filterMode: 'weakFilter',\n showDataShadow: false,\n top: -10,\n },\n {\n type: 'inside',\n filterMode: 'weakFilter',\n },\n ],\n grid: {\n top: 10,\n left: 0,\n bottom: 10,\n right: 0,\n height:\n categories.length > (chartType === ChartTypes.Loader ? 6 : 3)\n ? 'auto'\n : categories.length * LINE_HEIGHT,\n containLabel: true,\n },\n xAxis: {\n interval:\n exts?.endTimestamp && exts?.startTimestamp\n ? Math.floor((exts.endTimestamp - exts.startTimestamp) / 8)\n : null,\n position: 'top',\n splitLine: {\n show: true,\n },\n scale: true,\n axisLine: {\n show: false,\n },\n axisLabel: {\n formatter(val: number) {\n return dayjs(val as number).format('HH:mm:ss:SSS');\n },\n },\n },\n yAxis: {\n type: 'category',\n splitLine: {\n show: false,\n },\n axisLabel: {\n inside: true,\n lineHeight: 20,\n width: 100,\n fontSize: 12,\n color: '#000',\n verticalAlign: 'bottom',\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n data: categories,\n },\n series: [\n {\n type: 'custom',\n renderItem,\n itemStyle: {\n opacity: 0.8,\n },\n encode: {\n x: [1, 2],\n y: 0,\n },\n data,\n },\n ],\n };\n setOptionsData(option);\n }, [loaderData, pluginsData, exts]);\n\n return (\n <ReactEChartsCore\n option={optionsData}\n echarts={echarts}\n style={{\n width: '100%',\n minHeight:\n chartType === ChartTypes.Loader\n ? '500px'\n : chartType === ChartTypes.Minify\n ? '100px'\n : '200px',\n maxHeight: chartType === ChartTypes.Minify ? '100px' : '1000px',\n border: '1px solid #eee',\n borderRadius: '10px',\n }}\n />\n );\n },\n);\n"],"names":["LINE_HEIGHT","TimelineCom","memo","loaderData","pluginsData","formatterFn","chartType","ChartTypes","exts","data","categories","optionsData","setOptionsData","useState","echarts","CustomChart","TooltipComponent","GridComponent","DataZoomComponent","CanvasRenderer","useEffect","_categories","_l","_loaderData","_i","PALETTE_COLORS","Math","l","val","i","_pluginsData","groupBy","e","Object","key","_plugin","String","renderItem","params","api","categoryIndex","start","end","height","rectShape","option","raw","dayjs","ReactEChartsCore"],"mappings":"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"}
1
+ {"version":3,"file":"components/Charts/TimelineCharts/index.mjs","sources":["../../../../src/components/Charts/TimelineCharts/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useMemo, memo } from 'react';\nimport ReactEChartsCore from 'echarts-for-react/esm/core';\nimport * as echarts from 'echarts/core';\nimport { CustomChart } from 'echarts/charts';\nimport {\n TooltipComponent,\n GridComponent,\n DataZoomComponent,\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\n\nimport dayjs from 'dayjs';\nimport { ChartProps, DurationMetric, ITraceEventData } from '../types';\nimport { groupBy } from 'es-toolkit/compat';\nimport { ChartTypes, PALETTE_COLORS } from '../constants';\nimport { useTheme, useThemeToken } from 'src/utils';\n\ninterface CoordSysType {\n x: number;\n y: number;\n width: number;\n height: number;\n}\ntype LoaderType = {\n name: string;\n value: number[];\n itemStyle: { normal: { color: string; opacity?: number } };\n ext?: Record<string, any>;\n};\n\nconst LINE_HEIGHT = 60;\nconst DARK_MODE_LOADER_BAR_OPACITY = 0.6;\n\nfunction buildTimelineData(\n loaderData?: DurationMetric[],\n pluginsData?: ITraceEventData[],\n) {\n const data: LoaderType[] = [];\n const categories: string[] = [];\n\n if (loaderData) {\n const loaderCategories: string[] = [];\n loaderData.forEach((_l) => {\n loaderCategories.unshift(_l.n + ' total');\n loaderCategories.unshift(_l.n);\n });\n\n loaderData.forEach((_loaderData) => {\n data.push({\n name: _loaderData.n + ' total',\n value: [\n loaderCategories.indexOf(_loaderData.n + ' total'),\n _loaderData.s,\n _loaderData.e,\n _loaderData.e - _loaderData.s,\n ],\n itemStyle: {\n normal: {\n color: PALETTE_COLORS[Math.floor(Math.random() * 27)],\n opacity: 0.25,\n },\n },\n });\n\n if (!_loaderData?.c) return;\n for (let l = 0; l < _loaderData.c.length; l++) {\n data.push({\n name: _loaderData.n,\n value: [\n loaderCategories.indexOf(_loaderData.n),\n _loaderData.c[l].s,\n _loaderData.c[l].e,\n _loaderData.c[l].e - _loaderData.c[l].s,\n ],\n itemStyle: {\n normal: {\n color: PALETTE_COLORS[Math.floor(Math.random() * 27)],\n opacity: 0.25,\n },\n },\n ext: _loaderData.c[l].ext as ChartProps['loaders'][0],\n });\n }\n });\n\n categories.push(\n ...loaderCategories.map((val, i) =>\n i % 2 !== 0 ? val.replace(' total', '') : '',\n ),\n );\n }\n\n if (pluginsData) {\n const plugins = groupBy(pluginsData, (e: ITraceEventData) => e.pid);\n\n Object.keys(plugins)\n .reverse()\n .forEach((key, i) => {\n plugins[key].forEach((_plugin) => {\n data.push({\n name: String(_plugin.pid),\n value: [\n i,\n _plugin.args.s,\n _plugin.args.e,\n _plugin.args.e - _plugin.args.s,\n ],\n itemStyle: {\n normal: {\n color: PALETTE_COLORS[Math.floor(Math.random() * 27)],\n opacity: 0.25,\n },\n },\n ext: _plugin,\n });\n });\n categories.push(String(key.charAt(0).toUpperCase() + key.slice(1)));\n });\n }\n\n return { data, categories };\n}\n\nexport const TimelineCom: React.FC<{\n loaderData?: DurationMetric[];\n pluginsData?: ITraceEventData[];\n formatterFn: Function;\n chartType?: ChartTypes;\n exts?: { endTimestamp: number; startTimestamp: number };\n}> = memo(\n ({\n loaderData,\n pluginsData,\n formatterFn,\n chartType = ChartTypes.Normal,\n exts = null,\n }) => {\n const [optionsData, setOptionsData] = useState({});\n const { isDark } = useTheme();\n const themeToken = useThemeToken();\n const { data, categories } = useMemo(\n () => buildTimelineData(loaderData, pluginsData),\n [loaderData, pluginsData],\n );\n const themedData = useMemo(() => {\n if (!isDark || chartType !== ChartTypes.Loader) {\n return data;\n }\n\n return data.map((item) => ({\n ...item,\n itemStyle: {\n normal: {\n ...item.itemStyle.normal,\n opacity: DARK_MODE_LOADER_BAR_OPACITY,\n },\n },\n }));\n }, [chartType, data, isDark]);\n\n // Register the required components\n echarts.use([\n CustomChart,\n TooltipComponent,\n GridComponent,\n DataZoomComponent,\n CanvasRenderer,\n ]);\n\n useEffect(() => {\n function renderItem(\n params: { coordSys: CoordSysType },\n api: {\n value: (arg0: number) => number;\n coord: (arg0: number[]) => any;\n size: (arg0: number[]) => number[];\n style: () => string;\n },\n ) {\n const categoryIndex = api.value(0);\n const start = api.coord([api.value(1), categoryIndex]);\n const end = api.coord([api.value(2), categoryIndex]);\n const height = api.size([0, 1])[1] * 0.3;\n\n const rectShape = echarts.graphic.clipRectByRect(\n {\n x: start[0],\n y:\n chartType === ChartTypes.Loader\n ? start[1] - (categoryIndex % 2 !== 0 ? 0 : height * 2)\n : start[1],\n width: end[0] - start[0] || 5,\n height: height,\n },\n {\n x: params.coordSys.x,\n y: params.coordSys.y,\n width: params.coordSys.width,\n height: params.coordSys.height,\n },\n );\n return (\n rectShape && {\n type: 'rect',\n transition: ['shape'],\n shape: rectShape,\n style: api.style(),\n enterFrom: {\n style: { opacity: 0 },\n x: 0,\n },\n }\n );\n }\n\n const option = {\n tooltip: {\n formatter: (raw: any) => {\n return formatterFn(raw);\n },\n },\n dataZoom: [\n {\n type: 'slider',\n filterMode: 'weakFilter',\n showDataShadow: false,\n top: -10,\n },\n {\n type: 'inside',\n filterMode: 'weakFilter',\n },\n ],\n grid: {\n top: 10,\n left: 0,\n bottom: 10,\n right: 0,\n height:\n categories.length > (chartType === ChartTypes.Loader ? 6 : 3)\n ? 'auto'\n : categories.length * LINE_HEIGHT,\n containLabel: true,\n },\n xAxis: {\n interval:\n exts?.endTimestamp && exts?.startTimestamp\n ? Math.floor((exts.endTimestamp - exts.startTimestamp) / 8)\n : null,\n position: 'top',\n splitLine: {\n show: true,\n },\n scale: true,\n axisLine: {\n show: false,\n },\n axisLabel: {\n formatter(val: number) {\n return dayjs(val as number).format('HH:mm:ss:SSS');\n },\n },\n },\n yAxis: {\n type: 'category',\n splitLine: {\n show: false,\n },\n axisLabel: {\n inside: true,\n lineHeight: 20,\n width: 100,\n fontSize: 12,\n color: themeToken.colorText,\n verticalAlign: 'bottom',\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n data: categories,\n },\n series: [\n {\n type: 'custom',\n renderItem,\n itemStyle: {\n opacity: 0.8,\n },\n encode: {\n x: [1, 2],\n y: 0,\n },\n data: themedData,\n },\n ],\n };\n setOptionsData(option);\n }, [chartType, exts, formatterFn, themeToken, categories, themedData]);\n\n return (\n <ReactEChartsCore\n option={optionsData}\n echarts={echarts}\n style={{\n width: '100%',\n minHeight:\n chartType === ChartTypes.Loader\n ? '500px'\n : chartType === ChartTypes.Minify\n ? '100px'\n : '200px',\n maxHeight: chartType === ChartTypes.Minify ? '100px' : '1000px',\n border: '1px solid var(--color-border)',\n borderRadius: '10px',\n }}\n />\n );\n },\n);\n"],"names":["LINE_HEIGHT","DARK_MODE_LOADER_BAR_OPACITY","buildTimelineData","loaderData","pluginsData","data","categories","loaderCategories","_l","_loaderData","PALETTE_COLORS","Math","l","val","i","plugins","groupBy","e","Object","key","_plugin","String","TimelineCom","memo","formatterFn","chartType","ChartTypes","exts","optionsData","setOptionsData","useState","isDark","useTheme","themeToken","useThemeToken","useMemo","themedData","item","echarts","CustomChart","TooltipComponent","GridComponent","DataZoomComponent","CanvasRenderer","useEffect","renderItem","params","api","categoryIndex","start","end","height","rectShape","option","raw","dayjs","ReactEChartsCore"],"mappings":"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"}
@@ -7,12 +7,13 @@ import { TitleComponent, TooltipComponent } from "echarts/components";
7
7
  import { CanvasRenderer } from "echarts/renderers";
8
8
  import { Alert, Checkbox, Input, Radio } from "antd";
9
9
  import { FullscreenExitOutlined, FullscreenOutlined, LeftOutlined, RightOutlined, SearchOutlined } from "@ant-design/icons";
10
- import { formatSize } from "../../utils/index.mjs";
10
+ import { formatSize, useThemeToken } from "../../utils/index.mjs";
11
11
  import { SDK } from "@rsdoctor/types";
12
12
  import { ServerAPIProvider } from "../Manifest/index.mjs";
13
13
  import { ModuleAnalyzeComponent } from "../../pages/ModuleAnalyze/index.mjs";
14
14
  import treemap_module from "./treemap.module.mjs";
15
15
  import { TREE_COLORS } from "./constants.mjs";
16
+ import { isJavaScriptAsset } from "../../utils/assets.mjs";
16
17
  __rspack_external_echarts_core_d2845954.use([
17
18
  TreemapChart,
18
19
  TooltipComponent,
@@ -75,11 +76,12 @@ function getLevelOption() {
75
76
  }
76
77
  ];
77
78
  }
78
- const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, style, onChartClick, highlightNodeId, centerNodeId, rootPath })=>{
79
+ const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, onChartClick, highlightNodeId, centerNodeId, rootPath })=>{
79
80
  const [option, setOption] = useState(null);
80
81
  const chartRef = react.useRef(null);
81
82
  const chartDataRef = react.useRef([]);
82
83
  const clickTimeoutRef = react.useRef(null);
84
+ const themeToken = useThemeToken();
83
85
  useEffect(()=>{
84
86
  if (!treeData) return;
85
87
  function convert(node, index = 0, level = 0, parentColor, siblingIndex = 0, siblingCount = 1, chunkPath) {
@@ -152,15 +154,16 @@ const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, style, onChartClick, h
152
154
  }
153
155
  const data = treeData.map((item, index)=>convert(item, index, 0, void 0, index, treeData.length, void 0)).filter((item)=>('number' == typeof item.value ? item.value > 0 : false) || item.children && item.children.length > 0);
154
156
  chartDataRef.current = data;
157
+ const textColor = themeToken.colorText;
155
158
  setOption({
156
159
  color: TREE_COLORS,
157
160
  tooltip: {
158
161
  padding: 10,
159
- backgroundColor: '#fff',
160
- borderColor: '#eee',
162
+ backgroundColor: themeToken.colorBgElevated,
163
+ borderColor: themeToken.colorBorder,
161
164
  borderWidth: 1,
162
165
  textStyle: {
163
- color: 'rgba(0, 0, 0, 0.8)'
166
+ color: textColor
164
167
  },
165
168
  confine: true,
166
169
  extraCssText: 'max-width: 450px; word-wrap: break-word;',
@@ -196,7 +199,7 @@ const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, style, onChartClick, h
196
199
  if (void 0 !== gzipSize && gzipSize > 0) rows.push(makeRow('Gzipped size', formatSize(gzipSize), '#1677ff'));
197
200
  return `
198
201
  <div style="font-family: sans-serif; font-size: 12px; line-height: 1.5;">
199
- <div style="margin-bottom: 6px; max-width: 400px; word-wrap: break-word; overflow-wrap: break-word; word-break: break-all; white-space: normal; color: rgba(0, 0, 0, 0.8);">${__rspack_external_echarts_core_d2845954.format.encodeHTML(path)}</div>
202
+ <div style="margin-bottom: 6px; max-width: 400px; word-wrap: break-word; overflow-wrap: break-word; word-break: break-all; white-space: normal; color: ${textColor};">${__rspack_external_echarts_core_d2845954.format.encodeHTML(path)}</div>
200
203
  ${rows.join('')}
201
204
  </div>
202
205
  `;
@@ -205,9 +208,6 @@ const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, style, onChartClick, h
205
208
  series: [
206
209
  {
207
210
  type: 'treemap',
208
- itemStyle: {
209
- gapColor: '#ffffff'
210
- },
211
211
  label: {
212
212
  show: true,
213
213
  formatter: '{b}',
@@ -246,17 +246,17 @@ const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, style, onChartClick, h
246
246
  color: '#999',
247
247
  borderColor: 'transparent',
248
248
  borderWidth: 0,
249
- borderRadius: 0
249
+ borderRadius: 0,
250
+ textStyle: {
251
+ fontFamily: 'sans-serif',
252
+ fontSize: 12,
253
+ color: 'white'
254
+ }
250
255
  },
251
256
  emphasis: {
252
257
  itemStyle: {
253
258
  color: '#333'
254
259
  }
255
- },
256
- textStyle: {
257
- fontFamily: 'sans-serif',
258
- fontSize: 12,
259
- color: '#666'
260
260
  }
261
261
  },
262
262
  roam: true,
@@ -269,7 +269,7 @@ const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, style, onChartClick, h
269
269
  bottom: 30,
270
270
  left: 0,
271
271
  right: 0,
272
- zoomLimit: {
272
+ scaleLimit: {
273
273
  min: 0.5,
274
274
  max: 5
275
275
  }
@@ -280,7 +280,8 @@ const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, style, onChartClick, h
280
280
  treeData,
281
281
  sizeType,
282
282
  highlightNodeId,
283
- rootPath
283
+ rootPath,
284
+ themeToken
284
285
  ]);
285
286
  useEffect(()=>{
286
287
  if (centerNodeId && chartRef.current && option) {
@@ -358,7 +359,6 @@ const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, style, onChartClick, h
358
359
  }, []);
359
360
  return option ? /*#__PURE__*/ jsxs("div", {
360
361
  className: treemap_module["chart-container"],
361
- style: style,
362
362
  children: [
363
363
  /*#__PURE__*/ jsx(Alert, {
364
364
  message: "If parsed size lacks detailed module information, you can enable sourceMap when RSDOCTOR = true. This is because Rsdoctor relies on SourceMap to obtain Parsed Size. Rspack provides SourceMap information to Rsdoctor by default without affecting the build output.",
@@ -368,37 +368,42 @@ const TreeMap = /*#__PURE__*/ memo(({ treeData, sizeType, style, onChartClick, h
368
368
  marginBottom: 0
369
369
  }
370
370
  }),
371
- /*#__PURE__*/ jsx(core, {
372
- ref: chartRef,
373
- option: option,
374
- echarts: __rspack_external_echarts_core_d2845954,
375
- onEvents: {
376
- click: (params)=>{
377
- if (clickTimeoutRef.current) window.clearTimeout(clickTimeoutRef.current);
378
- clickTimeoutRef.current = window.setTimeout(()=>{
379
- if (chartRef.current) {
380
- const instance = chartRef.current.getEchartsInstance();
381
- const data = params?.data;
382
- if (instance && data?.id !== void 0) instance.dispatchAction({
383
- type: 'treemapZoomToNode',
384
- seriesIndex: 0,
385
- targetNodeId: String(data.id)
386
- });
371
+ /*#__PURE__*/ jsx("div", {
372
+ style: {
373
+ flex: 1
374
+ },
375
+ children: /*#__PURE__*/ jsx(core, {
376
+ ref: chartRef,
377
+ option: option,
378
+ echarts: __rspack_external_echarts_core_d2845954,
379
+ onEvents: {
380
+ click: (params)=>{
381
+ if (clickTimeoutRef.current) window.clearTimeout(clickTimeoutRef.current);
382
+ clickTimeoutRef.current = window.setTimeout(()=>{
383
+ if (chartRef.current) {
384
+ const instance = chartRef.current.getEchartsInstance();
385
+ const data = params?.data;
386
+ if (instance && data?.id !== void 0) instance.dispatchAction({
387
+ type: 'treemapZoomToNode',
388
+ seriesIndex: 0,
389
+ targetNodeId: String(data.id)
390
+ });
391
+ }
392
+ }, 180);
393
+ },
394
+ dblclick: (params)=>{
395
+ if (clickTimeoutRef.current) {
396
+ window.clearTimeout(clickTimeoutRef.current);
397
+ clickTimeoutRef.current = null;
387
398
  }
388
- }, 180);
389
- },
390
- dblclick: (params)=>{
391
- if (clickTimeoutRef.current) {
392
- window.clearTimeout(clickTimeoutRef.current);
393
- clickTimeoutRef.current = null;
399
+ onChartClick?.(params);
394
400
  }
395
- onChartClick?.(params);
401
+ },
402
+ style: {
403
+ width: '100%',
404
+ height: '100%'
396
405
  }
397
- },
398
- style: {
399
- width: '100%',
400
- height: '100%'
401
- }
406
+ })
402
407
  })
403
408
  ]
404
409
  }) : null;
@@ -426,7 +431,27 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
426
431
  const [moduleId, setModuleId] = useState('');
427
432
  const [showAnalyze, setShowAnalyze] = useState(false);
428
433
  const [chunkSearchQuery, setChunkSearchQuery] = useState('');
434
+ const [showOnlyJavaScriptAssets, setShowOnlyJavaScriptAssets] = useState(false);
429
435
  const containerRef = react.useRef(null);
436
+ const visibleAssetNames = useMemo(()=>{
437
+ if (!showOnlyJavaScriptAssets) return assetNames;
438
+ return assetNames.filter(isJavaScriptAsset);
439
+ }, [
440
+ assetNames,
441
+ showOnlyJavaScriptAssets
442
+ ]);
443
+ const visibleAssetNamesKey = useMemo(()=>visibleAssetNames.join('\0'), [
444
+ visibleAssetNames
445
+ ]);
446
+ const previousVisibleAssetNamesKeyRef = react.useRef(void 0);
447
+ useEffect(()=>{
448
+ if (previousVisibleAssetNamesKeyRef.current === visibleAssetNamesKey) return;
449
+ previousVisibleAssetNamesKeyRef.current = visibleAssetNamesKey;
450
+ setCheckedAssets(visibleAssetNames);
451
+ }, [
452
+ visibleAssetNames,
453
+ visibleAssetNamesKey
454
+ ]);
430
455
  const handleChartClick = useCallback((params)=>{
431
456
  onChartClick?.(params);
432
457
  const data = params.data;
@@ -438,42 +463,37 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
438
463
  }, [
439
464
  onChartClick
440
465
  ]);
441
- const enterFullscreen = useCallback(()=>{
442
- if (containerRef.current) {
443
- const el = containerRef.current;
444
- if (el.requestFullscreen) el.requestFullscreen().then(()=>setIsFullscreen(true)).catch((err)=>console.error('Failed to enter fullscreen:', err));
445
- else if (el.webkitRequestFullscreen) try {
446
- el.webkitRequestFullscreen();
447
- setIsFullscreen(true);
448
- } catch (err) {
449
- console.error('Failed to enter fullscreen (webkit):', err);
450
- }
451
- else if (el.mozRequestFullScreen) try {
452
- el.mozRequestFullScreen();
453
- setIsFullscreen(true);
454
- } catch (err) {
455
- console.error('Failed to enter fullscreen (moz):', err);
456
- }
457
- else if (el.msRequestFullscreen) try {
458
- el.msRequestFullscreen();
459
- setIsFullscreen(true);
460
- } catch (err) {
461
- console.error('Failed to enter fullscreen (ms):', err);
462
- }
463
- else console.error('Fullscreen API is not supported in this browser.');
466
+ const enterFullscreen = ()=>{
467
+ if (!containerRef.current) return;
468
+ const el = containerRef.current;
469
+ if (el.requestFullscreen) el.requestFullscreen().then(()=>setIsFullscreen(true)).catch((err)=>console.error('Failed to enter fullscreen:', err));
470
+ else if (el.webkitRequestFullscreen) try {
471
+ el.webkitRequestFullscreen();
472
+ setIsFullscreen(true);
473
+ } catch (err) {
474
+ console.error('Failed to enter fullscreen (webkit):', err);
464
475
  }
465
- }, []);
466
- const exitFullscreen = useCallback(()=>{
476
+ else if (el.mozRequestFullScreen) try {
477
+ el.mozRequestFullScreen();
478
+ setIsFullscreen(true);
479
+ } catch (err) {
480
+ console.error('Failed to enter fullscreen (moz):', err);
481
+ }
482
+ else if (el.msRequestFullscreen) try {
483
+ el.msRequestFullscreen();
484
+ setIsFullscreen(true);
485
+ } catch (err) {
486
+ console.error('Failed to enter fullscreen (ms):', err);
487
+ }
488
+ else console.error('Fullscreen API is not supported in this browser.');
489
+ };
490
+ const exitFullscreen = ()=>{
467
491
  document.exitFullscreen().then(()=>setIsFullscreen(false)).catch((err)=>console.error('Failed to exit fullscreen:', err));
468
- }, []);
469
- const toggleFullscreen = useCallback(()=>{
492
+ };
493
+ const toggleFullscreen = ()=>{
470
494
  if (isFullscreen) exitFullscreen();
471
495
  else enterFullscreen();
472
- }, [
473
- isFullscreen,
474
- enterFullscreen,
475
- exitFullscreen
476
- ]);
496
+ };
477
497
  useEffect(()=>{
478
498
  const handleFullscreenChange = ()=>{
479
499
  setIsFullscreen(!!document.fullscreenElement);
@@ -484,7 +504,7 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
484
504
  };
485
505
  }, []);
486
506
  const filteredTreeData = useMemo(()=>{
487
- let filtered = treeData.filter((item)=>checkedAssets.includes(item.name));
507
+ let filtered = treeData.filter((item)=>visibleAssetNames.includes(item.name) && checkedAssets.includes(item.name));
488
508
  if (chunkSearchQuery.trim()) {
489
509
  const searchLower = chunkSearchQuery.toLowerCase();
490
510
  filtered = filtered.filter((item)=>item.name.toLowerCase().includes(searchLower));
@@ -493,7 +513,8 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
493
513
  }, [
494
514
  treeData,
495
515
  checkedAssets,
496
- chunkSearchQuery
516
+ chunkSearchQuery,
517
+ visibleAssetNames
497
518
  ]);
498
519
  const searchResults = useMemo(()=>{
499
520
  if (!searchQuery.trim()) return [];
@@ -517,48 +538,40 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
517
538
  filteredTreeData,
518
539
  searchQuery
519
540
  ]);
520
- const handleSearchResultClick = useCallback((nodeId)=>{
541
+ const handleSearchResultClick = (nodeId)=>{
521
542
  setHighlightNodeId(nodeId);
522
543
  setCenterNodeId(nodeId);
523
- }, []);
524
- const removeRootPath = useCallback((filepath)=>{
544
+ };
545
+ const removeRootPath = (filepath)=>{
525
546
  if (!rootPath || !filepath) return filepath;
526
547
  const normalizedRoot = rootPath.replace(/\\/g, '/').replace(/\/$/, '');
527
548
  const normalizedPath = filepath.replace(/\\/g, '/');
528
549
  if (normalizedPath.startsWith(normalizedRoot + '/')) return normalizedPath.slice(normalizedRoot.length + 1);
529
550
  if (normalizedPath === normalizedRoot) return '';
530
551
  return filepath;
531
- }, [
532
- rootPath
533
- ]);
534
- const getSize = useCallback((node, type)=>{
552
+ };
553
+ const getSize = (node, type)=>{
535
554
  if ('stat' === type) return node.sourceSize || 0;
536
555
  if ('parsed' === type) return node.bundledSize || 0;
537
556
  if ('gzip' === type) return node.gzipSize || 0;
538
557
  if ('value' === type) return node.value || 0;
539
558
  if (node.value) return node.value;
540
559
  return 0;
541
- }, []);
542
- const calculateNodeTotalSize = useCallback((node, type)=>{
560
+ };
561
+ const calculateNodeTotalSize = (node, type)=>{
543
562
  let size = getSize(node, type);
544
563
  if (node.children && node.children.length > 0) {
545
564
  const childrenSize = node.children.reduce((sum, child)=>sum + calculateNodeTotalSize(child, type), 0);
546
565
  if (0 === size || !node.path && childrenSize > 0) size = childrenSize;
547
566
  }
548
567
  return size;
549
- }, [
550
- getSize
551
- ]);
552
- const getChunkSize = useCallback((name, type)=>{
568
+ };
569
+ const getChunkSize = (name, type)=>{
553
570
  const node = treeData.find((n)=>n.name === name);
554
571
  if (!node) return 0;
555
572
  const sizeTypeToUse = type || sizeType;
556
573
  return calculateNodeTotalSize(node, sizeTypeToUse);
557
- }, [
558
- treeData,
559
- sizeType,
560
- calculateNodeTotalSize
561
- ]);
574
+ };
562
575
  return /*#__PURE__*/ jsxs("div", {
563
576
  className: treemap_module.treemap,
564
577
  ref: containerRef,
@@ -629,19 +642,27 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
629
642
  }
630
643
  }),
631
644
  /*#__PURE__*/ jsx(Checkbox, {
632
- indeterminate: checkedAssets.length > 0 && checkedAssets.length < assetNames.length,
633
- checked: checkedAssets.length === assetNames.length,
634
- onChange: (e)=>setCheckedAssets(e.target.checked ? assetNames : []),
645
+ indeterminate: checkedAssets.length > 0 && checkedAssets.length < visibleAssetNames.length,
646
+ checked: visibleAssetNames.length > 0 && checkedAssets.length === visibleAssetNames.length,
647
+ onChange: (e)=>setCheckedAssets(e.target.checked ? visibleAssetNames : []),
635
648
  className: treemap_module["all-none-checkbox"],
636
649
  children: "All"
637
650
  }),
651
+ /*#__PURE__*/ jsx(Checkbox, {
652
+ checked: showOnlyJavaScriptAssets,
653
+ onChange: (e)=>{
654
+ setShowOnlyJavaScriptAssets(e.target.checked);
655
+ },
656
+ className: treemap_module["all-none-checkbox"],
657
+ children: "JS only"
658
+ }),
638
659
  /*#__PURE__*/ jsx("div", {
639
660
  className: treemap_module["chunk-list"],
640
661
  style: {
641
662
  maxHeight: 180,
642
663
  overflowY: 'auto'
643
664
  },
644
- children: assetNames.filter((name)=>name.toLowerCase().includes(chunkSearchQuery.toLowerCase())).map((name)=>/*#__PURE__*/ jsxs("div", {
665
+ children: visibleAssetNames.filter((name)=>name.toLowerCase().includes(chunkSearchQuery.toLowerCase())).map((name)=>/*#__PURE__*/ jsxs("div", {
645
666
  className: treemap_module["chunk-item"],
646
667
  style: {
647
668
  height: 15,
@@ -740,11 +761,7 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
740
761
  onChartClick: handleChartClick,
741
762
  highlightNodeId: highlightNodeId,
742
763
  centerNodeId: centerNodeId,
743
- rootPath: rootPath,
744
- style: {
745
- width: '100%',
746
- height: '100%'
747
- }
764
+ rootPath: rootPath
748
765
  }),
749
766
  moduleId ? /*#__PURE__*/ jsx(ServerAPIProvider, {
750
767
  api: SDK.ServerAPI.API.GetAllModuleGraph,