@rsdoctor/components 1.3.5-beta.0 → 1.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/components/Alert/ecma-version-check.mjs +2 -2
  2. package/dist/components/Alert/ecma-version-check.mjs.map +1 -1
  3. package/dist/components/Alert/package-relation.mjs +2 -4
  4. package/dist/components/Alert/package-relation.mjs.map +1 -1
  5. package/dist/components/Alert/view.mjs +2 -3
  6. package/dist/components/Alert/view.mjs.map +1 -1
  7. package/dist/components/Alerts/bundle-alert.mjs +2 -3
  8. package/dist/components/Alerts/bundle-alert.mjs.map +1 -1
  9. package/dist/components/Charts/TimelineCharts/index.mjs +3 -4
  10. package/dist/components/Charts/TimelineCharts/index.mjs.map +1 -1
  11. package/dist/components/Charts/TreeMap.mjs +2 -3
  12. package/dist/components/Charts/TreeMap.mjs.map +1 -1
  13. package/dist/components/Charts/index.mjs +1 -1
  14. package/dist/components/Charts/index.mjs.map +1 -1
  15. package/dist/components/Charts/loader.mjs +2 -2
  16. package/dist/components/Charts/loader.mjs.map +1 -1
  17. package/dist/components/FileTree/index.mjs +2 -2
  18. package/dist/components/FileTree/index.mjs.map +1 -1
  19. package/dist/components/Loader/Analysis/files.mjs +32 -36
  20. package/dist/components/Loader/Analysis/files.mjs.map +1 -1
  21. package/dist/components/Loader/executions.mjs +1 -2
  22. package/dist/components/Loader/executions.mjs.map +1 -1
  23. package/dist/components/Overall/bundle_module.css +1 -0
  24. package/dist/components/Overall/bundle_module.css.map +1 -1
  25. package/dist/components/Overall/compile.mjs +1 -2
  26. package/dist/components/Overall/compile.mjs.map +1 -1
  27. package/dist/components/Overall/help-center_module.css +2 -0
  28. package/dist/components/Overall/help-center_module.css.map +1 -1
  29. package/dist/components/Overall/list_module.css +2 -12
  30. package/dist/components/Overall/list_module.css.map +1 -1
  31. package/dist/components/Overall/project_module.css +1 -0
  32. package/dist/components/Overall/project_module.css.map +1 -1
  33. package/dist/components/Select/index.mjs +1 -1
  34. package/dist/components/Select/index.mjs.map +1 -1
  35. package/dist/components/base/CodeViewer/index.mjs +1 -2
  36. package/dist/components/base/CodeViewer/index.mjs.map +1 -1
  37. package/dist/components/base/CodeViewer/utils.mjs +1 -1
  38. package/dist/components/base/CodeViewer/utils.mjs.map +1 -1
  39. package/dist/components/base/DiffViewer/index.mjs +1 -2
  40. package/dist/components/base/DiffViewer/index.mjs.map +1 -1
  41. package/dist/pages/BundleSize/components/asset.mjs +5 -12
  42. package/dist/pages/BundleSize/components/asset.mjs.map +1 -1
  43. package/dist/pages/BundleSize/components/cards.mjs +2 -2
  44. package/dist/pages/BundleSize/components/cards.mjs.map +1 -1
  45. package/dist/pages/BundleSize/components/index_module.css +2 -6
  46. package/dist/pages/BundleSize/components/index_module.css.map +1 -1
  47. package/dist/pages/BundleSize/components/search-modal.mjs +5 -5
  48. package/dist/pages/BundleSize/components/search-modal.mjs.map +1 -1
  49. package/dist/pages/ModuleAnalyze/chunks.mjs +1 -1
  50. package/dist/pages/ModuleAnalyze/chunks.mjs.map +1 -1
  51. package/dist/pages/ModuleAnalyze/components/fileTreeCom.mjs +1 -2
  52. package/dist/pages/ModuleAnalyze/components/fileTreeCom.mjs.map +1 -1
  53. package/dist/pages/ModuleAnalyze/fileTree.mjs +1 -2
  54. package/dist/pages/ModuleAnalyze/fileTree.mjs.map +1 -1
  55. package/dist/pages/ModuleAnalyze/utils/hooks.mjs +5 -8
  56. package/dist/pages/ModuleAnalyze/utils/hooks.mjs.map +1 -1
  57. package/dist/pages/ModuleAnalyze/utils/index.mjs +2 -4
  58. package/dist/pages/ModuleAnalyze/utils/index.mjs.map +1 -1
  59. package/dist/pages/Resources/BundleDiff/DiffContainer/assets.mjs +4 -7
  60. package/dist/pages/Resources/BundleDiff/DiffContainer/assets.mjs.map +1 -1
  61. package/dist/pages/Resources/BundleDiff/DiffContainer/modules.mjs +13 -16
  62. package/dist/pages/Resources/BundleDiff/DiffContainer/modules.mjs.map +1 -1
  63. package/dist/pages/Resources/BundleDiff/DiffContainer/row.mjs +15 -35
  64. package/dist/pages/Resources/BundleDiff/DiffContainer/row.mjs.map +1 -1
  65. package/dist/pages/Resources/BundleDiff/DiffServerAPIProvider/index.mjs +3 -4
  66. package/dist/pages/Resources/BundleDiff/DiffServerAPIProvider/index.mjs.map +1 -1
  67. package/dist/pages/TreeShaking/editor.mjs +2 -4
  68. package/dist/pages/TreeShaking/editor.mjs.map +1 -1
  69. package/dist/pages/TreeShaking/index.css +4 -28
  70. package/dist/pages/TreeShaking/index.css.map +1 -1
  71. package/dist/pages/TreeShaking/index.mjs +1 -1
  72. package/dist/pages/TreeShaking/index.mjs.map +1 -1
  73. package/dist/pages/TreeShaking/table.mjs +3 -3
  74. package/dist/pages/TreeShaking/table.mjs.map +1 -1
  75. package/dist/utils/file.mjs +8 -9
  76. package/dist/utils/file.mjs.map +1 -1
  77. package/dist/utils/hooks.mjs +1 -5
  78. package/dist/utils/hooks.mjs.map +1 -1
  79. package/dist/utils/loader.mjs +1 -1
  80. package/dist/utils/loader.mjs.map +1 -1
  81. package/dist/utils/request.mjs +1 -2
  82. package/dist/utils/request.mjs.map +1 -1
  83. package/dist/utils/url.mjs +2 -2
  84. package/dist/utils/url.mjs.map +1 -1
  85. package/package.json +6 -6
@@ -10,8 +10,8 @@ const { Text } = Typography;
10
10
  const ECMAVersionCheck = ({ data })=>data.map((d)=>{
11
11
  const { code, link, error } = d;
12
12
  const { source, output } = error || {};
13
- const sourceMessage = (null == source ? void 0 : source.path) ? `${null == source ? void 0 : source.path}:${null == source ? void 0 : source.line}:${null == source ? void 0 : source.column}` : null;
14
- const outputMessage = (null == output ? void 0 : output.path) ? `${null == output ? void 0 : output.path}:${null == output ? void 0 : output.line}:${null == output ? void 0 : output.column}` : `There's no source map for this error. Possible reasons are as follows:
13
+ const sourceMessage = source?.path ? `${source?.path}:${source?.line}:${source?.column}` : null;
14
+ const outputMessage = output?.path ? `${output?.path}:${output?.line}:${output?.column}` : `There's no source map for this error. Possible reasons are as follows:
15
15
  1. It might come from a third-party library without source map.
16
16
  2. If this is your business source code, source map should be enabled in your build config.
17
17
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"components/Alert/ecma-version-check.mjs","sources":["webpack://@rsdoctor/components/./src/components/Alert/ecma-version-check.tsx"],"sourcesContent":["import { Button, Typography } from 'antd';\nimport Icon from '@ant-design/icons';\n\nimport SourceSvg from '../../common/svg/source.svg';\nimport OutputSvg from '../../common/svg/output.svg';\nimport ErrorSvg from '../../common/svg/error.svg';\nimport { useRuleIndexNavigate } from '../../utils';\n\nimport { LinkAlertProps } from './types';\n\nimport styles from './ecma-version-check.module.scss';\n\nconst { Text } = Typography;\n\nexport const ECMAVersionCheck: React.FC<LinkAlertProps> = ({ data }) => {\n return data.map((d) => {\n const { code, link, error } = d;\n const { source, output } = error || {};\n const sourceMessage = source?.path\n ? `${source?.path}:${source?.line}:${source?.column}`\n : null;\n const outputMessage = output?.path\n ? `${output?.path}:${output?.line}:${output?.column}`\n : `There's no source map for this error. Possible reasons are as follows:\n 1. It might come from a third-party library without source map.\n 2. If this is your business source code, source map should be enabled in your build config.\n `;\n\n const navigate = useRuleIndexNavigate(code, link);\n return (\n <div className={styles.container}>\n <div>\n <div className={styles.title}>Source</div>\n <div className={styles.box}>\n <Icon component={SourceSvg} />\n <Text\n ellipsis={{ tooltip: sourceMessage }}\n className={`${styles.content} e2e-ecma-source`}\n >\n {sourceMessage}\n </Text>\n </div>\n </div>\n <div>\n <div className={styles.title}>Output</div>\n <div className={styles.box}>\n <Icon component={OutputSvg} />\n <Text\n ellipsis={{ tooltip: outputMessage }}\n className={`${styles.content} e2e-ecma-output`}\n >\n {outputMessage}\n </Text>\n </div>\n </div>\n <div>\n <div className={styles.title}>Error</div>\n <div className={styles.box}>\n <Icon component={ErrorSvg} />\n <Text\n ellipsis={{ tooltip: d.description }}\n className={`${styles.content} e2e-ecma-error`}\n >\n {d.description}\n </Text>\n </div>\n </div>\n <Button onClick={navigate} type=\"link\">\n more\n </Button>\n </div>\n );\n });\n};\n"],"names":["Text","Typography","ECMAVersionCheck","data","d","code","link","error","source","output","sourceMessage","outputMessage","navigate","useRuleIndexNavigate","styles","Icon","SourceSvg","OutputSvg","ErrorSvg","Button"],"mappings":";;;;;;;;AAYA,MAAM,EAAEA,IAAI,EAAE,GAAGC;AAEV,MAAMC,mBAA6C,CAAC,EAAEC,IAAI,EAAE,GAC1DA,KAAK,GAAG,CAAC,CAACC;QACf,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAEC,KAAK,EAAE,GAAGH;QAC9B,MAAM,EAAEI,MAAM,EAAEC,MAAM,EAAE,GAAGF,SAAS,CAAC;QACrC,MAAMG,gBAAgBF,AAAAA,CAAAA,QAAAA,SAAAA,KAAAA,IAAAA,OAAQ,IAAI,AAAD,IAC7B,GAAGA,QAAAA,SAAAA,KAAAA,IAAAA,OAAQ,IAAI,CAAC,CAAC,EAAEA,QAAAA,SAAAA,KAAAA,IAAAA,OAAQ,IAAI,CAAC,CAAC,EAAEA,QAAAA,SAAAA,KAAAA,IAAAA,OAAQ,MAAM,EAAE,GACnD;QACJ,MAAMG,gBAAgBF,AAAAA,CAAAA,QAAAA,SAAAA,KAAAA,IAAAA,OAAQ,IAAI,AAAD,IAC7B,GAAGA,QAAAA,SAAAA,KAAAA,IAAAA,OAAQ,IAAI,CAAC,CAAC,EAAEA,QAAAA,SAAAA,KAAAA,IAAAA,OAAQ,IAAI,CAAC,CAAC,EAAEA,QAAAA,SAAAA,KAAAA,IAAAA,OAAQ,MAAM,EAAE,GACnD,CAAC;;;MAGH,CAAC;QAEH,MAAMG,WAAWC,qBAAqBR,MAAMC;QAC5C,OAAO,WAAP,GACE,KAAC;YAAI,WAAWQ,0BAAAA,SAAgB;;8BAC9B,KAAC;;sCACC,IAAC;4BAAI,WAAWA,0BAAAA,KAAY;sCAAE;;sCAC9B,KAAC;4BAAI,WAAWA,0BAAAA,GAAU;;8CACxB,IAACC,OAAIA;oCAAC,WAAWC;;8CACjB,IAAChB,MAAAA;oCACC,UAAU;wCAAE,SAASU;oCAAc;oCACnC,WAAW,GAAGI,0BAAAA,OAAc,CAAC,gBAAgB,CAAC;8CAE7CJ;;;;;;8BAIP,KAAC;;sCACC,IAAC;4BAAI,WAAWI,0BAAAA,KAAY;sCAAE;;sCAC9B,KAAC;4BAAI,WAAWA,0BAAAA,GAAU;;8CACxB,IAACC,OAAIA;oCAAC,WAAWE;;8CACjB,IAACjB,MAAAA;oCACC,UAAU;wCAAE,SAASW;oCAAc;oCACnC,WAAW,GAAGG,0BAAAA,OAAc,CAAC,gBAAgB,CAAC;8CAE7CH;;;;;;8BAIP,KAAC;;sCACC,IAAC;4BAAI,WAAWG,0BAAAA,KAAY;sCAAE;;sCAC9B,KAAC;4BAAI,WAAWA,0BAAAA,GAAU;;8CACxB,IAACC,OAAIA;oCAAC,WAAWG;;8CACjB,IAAClB,MAAAA;oCACC,UAAU;wCAAE,SAASI,EAAE,WAAW;oCAAC;oCACnC,WAAW,GAAGU,0BAAAA,OAAc,CAAC,eAAe,CAAC;8CAE5CV,EAAE,WAAW;;;;;;8BAIpB,IAACe,QAAMA;oBAAC,SAASP;oBAAU,MAAK;8BAAO;;;;IAK7C"}
1
+ {"version":3,"file":"components/Alert/ecma-version-check.mjs","sources":["webpack://@rsdoctor/components/./src/components/Alert/ecma-version-check.tsx"],"sourcesContent":["import { Button, Typography } from 'antd';\nimport Icon from '@ant-design/icons';\n\nimport SourceSvg from '../../common/svg/source.svg';\nimport OutputSvg from '../../common/svg/output.svg';\nimport ErrorSvg from '../../common/svg/error.svg';\nimport { useRuleIndexNavigate } from '../../utils';\n\nimport { LinkAlertProps } from './types';\n\nimport styles from './ecma-version-check.module.scss';\n\nconst { Text } = Typography;\n\nexport const ECMAVersionCheck: React.FC<LinkAlertProps> = ({ data }) => {\n return data.map((d) => {\n const { code, link, error } = d;\n const { source, output } = error || {};\n const sourceMessage = source?.path\n ? `${source?.path}:${source?.line}:${source?.column}`\n : null;\n const outputMessage = output?.path\n ? `${output?.path}:${output?.line}:${output?.column}`\n : `There's no source map for this error. Possible reasons are as follows:\n 1. It might come from a third-party library without source map.\n 2. If this is your business source code, source map should be enabled in your build config.\n `;\n\n const navigate = useRuleIndexNavigate(code, link);\n return (\n <div className={styles.container}>\n <div>\n <div className={styles.title}>Source</div>\n <div className={styles.box}>\n <Icon component={SourceSvg} />\n <Text\n ellipsis={{ tooltip: sourceMessage }}\n className={`${styles.content} e2e-ecma-source`}\n >\n {sourceMessage}\n </Text>\n </div>\n </div>\n <div>\n <div className={styles.title}>Output</div>\n <div className={styles.box}>\n <Icon component={OutputSvg} />\n <Text\n ellipsis={{ tooltip: outputMessage }}\n className={`${styles.content} e2e-ecma-output`}\n >\n {outputMessage}\n </Text>\n </div>\n </div>\n <div>\n <div className={styles.title}>Error</div>\n <div className={styles.box}>\n <Icon component={ErrorSvg} />\n <Text\n ellipsis={{ tooltip: d.description }}\n className={`${styles.content} e2e-ecma-error`}\n >\n {d.description}\n </Text>\n </div>\n </div>\n <Button onClick={navigate} type=\"link\">\n more\n </Button>\n </div>\n );\n });\n};\n"],"names":["Text","Typography","ECMAVersionCheck","data","d","code","link","error","source","output","sourceMessage","outputMessage","navigate","useRuleIndexNavigate","styles","Icon","SourceSvg","OutputSvg","ErrorSvg","Button"],"mappings":";;;;;;;;AAYA,MAAM,EAAEA,IAAI,EAAE,GAAGC;AAEV,MAAMC,mBAA6C,CAAC,EAAEC,IAAI,EAAE,GAC1DA,KAAK,GAAG,CAAC,CAACC;QACf,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAEC,KAAK,EAAE,GAAGH;QAC9B,MAAM,EAAEI,MAAM,EAAEC,MAAM,EAAE,GAAGF,SAAS,CAAC;QACrC,MAAMG,gBAAgBF,QAAQ,OAC1B,GAAGA,QAAQ,KAAK,CAAC,EAAEA,QAAQ,KAAK,CAAC,EAAEA,QAAQ,QAAQ,GACnD;QACJ,MAAMG,gBAAgBF,QAAQ,OAC1B,GAAGA,QAAQ,KAAK,CAAC,EAAEA,QAAQ,KAAK,CAAC,EAAEA,QAAQ,QAAQ,GACnD,CAAC;;;MAGH,CAAC;QAEH,MAAMG,WAAWC,qBAAqBR,MAAMC;QAC5C,OAAO,WAAP,GACE,KAAC;YAAI,WAAWQ,0BAAAA,SAAgB;;8BAC9B,KAAC;;sCACC,IAAC;4BAAI,WAAWA,0BAAAA,KAAY;sCAAE;;sCAC9B,KAAC;4BAAI,WAAWA,0BAAAA,GAAU;;8CACxB,IAACC,OAAIA;oCAAC,WAAWC;;8CACjB,IAAChB,MAAAA;oCACC,UAAU;wCAAE,SAASU;oCAAc;oCACnC,WAAW,GAAGI,0BAAAA,OAAc,CAAC,gBAAgB,CAAC;8CAE7CJ;;;;;;8BAIP,KAAC;;sCACC,IAAC;4BAAI,WAAWI,0BAAAA,KAAY;sCAAE;;sCAC9B,KAAC;4BAAI,WAAWA,0BAAAA,GAAU;;8CACxB,IAACC,OAAIA;oCAAC,WAAWE;;8CACjB,IAACjB,MAAAA;oCACC,UAAU;wCAAE,SAASW;oCAAc;oCACnC,WAAW,GAAGG,0BAAAA,OAAc,CAAC,gBAAgB,CAAC;8CAE7CH;;;;;;8BAIP,KAAC;;sCACC,IAAC;4BAAI,WAAWG,0BAAAA,KAAY;sCAAE;;sCAC9B,KAAC;4BAAI,WAAWA,0BAAAA,GAAU;;8CACxB,IAACC,OAAIA;oCAAC,WAAWG;;8CACjB,IAAClB,MAAAA;oCACC,UAAU;wCAAE,SAASI,EAAE,WAAW;oCAAC;oCACnC,WAAW,GAAGU,0BAAAA,OAAc,CAAC,eAAe,CAAC;8CAE5CV,EAAE,WAAW;;;;;;8BAIpB,IAACe,QAAMA;oBAAC,SAASP;oBAAU,MAAK;8BAAO;;;;IAK7C"}
@@ -26,10 +26,9 @@ const PackageRelationReasons = ({ data })=>/*#__PURE__*/ jsx(Row, {
26
26
  marginTop: '20px'
27
27
  },
28
28
  children: data.map((e, i)=>{
29
- var _statements_;
30
29
  const { dependency, module, relativePath } = e;
31
30
  const { statements } = dependency;
32
- const { start } = (null == statements ? void 0 : null == (_statements_ = statements[0]) ? void 0 : _statements_.position) ? module.isPreferSource ? statements[0].position.source : statements[0].position.transformed : {
31
+ const { start } = statements?.[0]?.position ? module.isPreferSource ? statements[0].position.source : statements[0].position.transformed : {
33
32
  start: {
34
33
  line: 0,
35
34
  column: 0
@@ -76,7 +75,6 @@ const PackageRelationReasonsWithServer = withServerAPI({
76
75
  responsePropName: 'data'
77
76
  });
78
77
  const PackageRelationAlert = ({ data, getPackageRelationContentComponent })=>{
79
- var _Rule_RuleErrorMap_code;
80
78
  const { level, code, packages } = data;
81
79
  const navigate = useRuleIndexNavigate(code, data.link);
82
80
  const totalSize = sumBy(packages, (e)=>e.targetSize.sourceSize);
@@ -109,7 +107,7 @@ const PackageRelationAlert = ({ data, getPackageRelationContentComponent })=>{
109
107
  }),
110
108
  /*#__PURE__*/ jsx(Typography.Text, {
111
109
  strong: true,
112
- children: (null == (_Rule_RuleErrorMap_code = Rule.RuleErrorMap[code]) ? void 0 : _Rule_RuleErrorMap_code.title) || data.title
110
+ children: Rule.RuleErrorMap[code]?.title || data.title
113
111
  })
114
112
  ]
115
113
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"components/Alert/package-relation.mjs","sources":["webpack://@rsdoctor/components/./src/components/Alert/package-relation.tsx"],"sourcesContent":["/* eslint-disable financial/no-float-calculation */\nimport {\n Space,\n Alert,\n Button,\n Typography,\n Divider,\n Tabs,\n Row,\n Col,\n Timeline,\n Tag,\n Empty,\n Grid,\n} from 'antd';\nimport { sumBy } from 'es-toolkit/compat';\nimport {\n ExpandAltOutlined,\n InfoCircleOutlined,\n DoubleRightOutlined,\n} from '@ant-design/icons';\n\nimport { useRuleIndexNavigate, formatSize } from '../../utils';\nimport { TextDrawer } from '../TextDrawer';\nimport { Title } from '../Title';\nimport { Size, Color } from '../../constants';\nimport { Badge as Bdg } from '../Badge';\nimport { withServerAPI } from '../Manifest';\n\nimport { Rule, SDK } from '@rsdoctor/types';\n\nimport { PackageRelationAlertProps } from './types';\n\nimport styles from './package-relation.module.scss';\n\nconst TextDrawerWidth = '60%';\n\nexport const PackageRelationReasons: React.FC<{\n data: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetPackageRelationAlertDetails>;\n cwd: string;\n}> = ({ data }) => {\n return (\n <Row gutter={Size.BasePadding} wrap={false} align=\"top\">\n <Col style={{ height: '100%', width: '100%' }}>\n {data.length ? (\n <>\n <Timeline style={{ marginTop: '20px' }}>\n {data.map((e, i) => {\n const { dependency, module, relativePath } = e!;\n const { statements } = dependency;\n const { start } = statements?.[0]?.position\n ? module.isPreferSource\n ? statements[0].position.source!\n : statements[0].position.transformed\n : { start: { line: 0, column: 0 } };\n const text = `${relativePath}:${start.line}:${\n start.column || 1\n }`;\n\n return (\n <Timeline.Item key={text} style={{ cursor: 'default' }}>\n <Typography.Text>\n <div className={styles.filePath}>\n {text}\n <Typography.Paragraph\n copyable={{ text: relativePath }}\n style={{ position: 'relative', top: '7px' }}\n />\n </div>\n {i !== data.length - 1 ? (\n <DoubleRightOutlined className={styles.arrow} />\n ) : null}\n </Typography.Text>\n </Timeline.Item>\n );\n })}\n </Timeline>\n </>\n ) : (\n <Empty description={'This package no dependencies'} />\n )}\n </Col>\n </Row>\n );\n};\n\nexport const PackageRelationReasonsWithServer = withServerAPI({\n Component: PackageRelationReasons,\n api: SDK.ServerAPI.API.GetPackageRelationAlertDetails,\n responsePropName: 'data',\n});\n\nexport const PackageRelationAlert: React.FC<PackageRelationAlertProps> = ({\n data,\n getPackageRelationContentComponent,\n}) => {\n const { level, code, packages } = data;\n\n const navigate = useRuleIndexNavigate(code, data.link);\n const totalSize = sumBy(packages, (e) => e.targetSize.sourceSize);\n const totalSizeStr = formatSize(totalSize);\n const { xs, lg, xxl } = Grid.useBreakpoint();\n const { name } = packages.find((e) => !!e.target.name)!.target;\n\n const versions = packages.map((item) => item.target.version);\n\n return (\n <Alert\n showIcon={!xs}\n message={\n <Space\n wrap\n split={xs ? null : <Divider type=\"vertical\" />}\n align=\"center\"\n >\n <Space wrap={false}>\n <Typography.Text\n code\n strong\n onClick={navigate}\n style={{ cursor: 'pointer' }}\n >\n <a>{code}</a>\n </Typography.Text>\n <Typography.Text strong>\n {Rule.RuleErrorMap[code as keyof Rule.RuleErrorCodes]?.title ||\n data.title}\n </Typography.Text>\n </Space>\n <Typography.Paragraph\n ellipsis={{ rows: 1 }}\n style={{ marginBottom: 0 }}\n >\n <Typography.Text strong code>\n {name}\n </Typography.Text>\n <Typography.Text strong> {data.packages.length}</Typography.Text>\n <Typography.Text> versions was found</Typography.Text>\n </Typography.Paragraph>\n <Bdg\n label={'total size'}\n value={totalSizeStr}\n type=\"error\"\n tooltip={`total size of ${data.packages.length} versions is ${totalSizeStr}`}\n />\n </Space>\n }\n description={\n <Space direction=\"vertical\" wrap={false}>\n {data.packages.map(({ target: el, targetSize: size }) => {\n const sizeStr = formatSize(size.sourceSize);\n const parsedSizeStr = size.parsedSize\n ? formatSize(size.parsedSize)\n : null;\n const name = `${el.name}@${el.version}`;\n return (\n <Space\n key={el.version}\n style={{ wordBreak: 'break-all' }}\n align=\"center\"\n split={xs ? null : <Divider type=\"vertical\" />}\n wrap\n >\n <Space wrap={false}>\n <Typography.Text style={{ marginLeft: 4 }}>└</Typography.Text>\n <Bdg\n label={el.name}\n value={`v${el.version}`}\n tooltip={name}\n />\n </Space>\n <Space>\n <Bdg\n label={\n <div color={'rgb(255, 255, 255)'}>\n Source Size <InfoCircleOutlined />\n </div>\n }\n value={sizeStr}\n tooltip={`The bundle size of \"${name}\" is ${sizeStr}, this is source size.`}\n type=\"error\"\n />\n <Bdg\n label=\"Bundled size\"\n value={parsedSizeStr || 'CONCATENATED'}\n tooltip={`The bundle size of \"${name}\" is ${sizeStr}, this is after bundled, concatenated module cannot get bundled size. `}\n type=\"error\"\n />\n </Space>\n\n <Typography.Paragraph\n style={{\n marginBottom: 0,\n width: xxl ? '40rem' : lg ? '30rem' : '20rem',\n }}\n copyable={{ text: el.root }}\n ellipsis={{\n rows: 1,\n expandable: true,\n symbol: <ExpandAltOutlined />,\n tooltip: el.root,\n }}\n code\n >\n {el.root}\n </Typography.Paragraph>\n </Space>\n );\n })}\n </Space>\n }\n type={level === 'warn' ? 'info' : level}\n action={\n <>\n {packages && packages.length > 0 ? (\n <TextDrawer\n text=\"Show Relations\"\n buttonProps={{ size: 'small' }}\n drawerProps={{ title: data.title, width: TextDrawerWidth }}\n >\n <Space direction=\"vertical\" className=\"alert-space\">\n <Space style={{ marginBottom: Size.BasePadding / 2 }}>\n <Title text={name} upperFirst={false} />\n <Typography.Text strong>{versions.length}</Typography.Text>\n <Typography.Text> versions was found: </Typography.Text>\n {versions.map((e) => (\n <Typography.Text strong code key={e}>\n {e}\n </Typography.Text>\n ))}\n </Space>\n <Tabs\n type=\"card\"\n size=\"middle\"\n className=\"tabs-space\"\n defaultActiveKey={versions[0]}\n items={\n packages.map((pkg) => {\n const { target, targetSize } = pkg;\n return {\n label: (\n <Space>\n <Typography.Text>{`${name}@${target.version}`}</Typography.Text>\n <Tag color={Color.Red}>\n {formatSize(targetSize.sourceSize)}\n </Tag>\n </Space>\n ),\n key: `${target.root}${target.name}${target.version}`,\n children: getPackageRelationContentComponent({\n data,\n package: pkg,\n }),\n };\n })!\n }\n />\n </Space>\n </TextDrawer>\n ) : null}\n <Divider type=\"vertical\" />\n <Button\n type=\"link\"\n onClick={navigate}\n size=\"small\"\n icon={<InfoCircleOutlined />}\n />\n </>\n }\n />\n );\n};\n"],"names":["TextDrawerWidth","PackageRelationReasons","data","Row","Size","Col","Timeline","e","i","_statements_","dependency","module","relativePath","statements","start","text","Typography","styles","DoubleRightOutlined","Empty","PackageRelationReasonsWithServer","withServerAPI","SDK","PackageRelationAlert","getPackageRelationContentComponent","_Rule_RuleErrorMap_code","level","code","packages","navigate","useRuleIndexNavigate","totalSize","sumBy","totalSizeStr","formatSize","xs","lg","xxl","Grid","name","versions","item","Alert","Space","Divider","Bdg","el","size","sizeStr","parsedSizeStr","InfoCircleOutlined","ExpandAltOutlined","TextDrawer","Title","Tabs","pkg","target","targetSize","Tag","Color","Button"],"mappings":"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"}
1
+ {"version":3,"file":"components/Alert/package-relation.mjs","sources":["webpack://@rsdoctor/components/./src/components/Alert/package-relation.tsx"],"sourcesContent":["/* eslint-disable financial/no-float-calculation */\nimport {\n Space,\n Alert,\n Button,\n Typography,\n Divider,\n Tabs,\n Row,\n Col,\n Timeline,\n Tag,\n Empty,\n Grid,\n} from 'antd';\nimport { sumBy } from 'es-toolkit/compat';\nimport {\n ExpandAltOutlined,\n InfoCircleOutlined,\n DoubleRightOutlined,\n} from '@ant-design/icons';\n\nimport { useRuleIndexNavigate, formatSize } from '../../utils';\nimport { TextDrawer } from '../TextDrawer';\nimport { Title } from '../Title';\nimport { Size, Color } from '../../constants';\nimport { Badge as Bdg } from '../Badge';\nimport { withServerAPI } from '../Manifest';\n\nimport { Rule, SDK } from '@rsdoctor/types';\n\nimport { PackageRelationAlertProps } from './types';\n\nimport styles from './package-relation.module.scss';\n\nconst TextDrawerWidth = '60%';\n\nexport const PackageRelationReasons: React.FC<{\n data: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetPackageRelationAlertDetails>;\n cwd: string;\n}> = ({ data }) => {\n return (\n <Row gutter={Size.BasePadding} wrap={false} align=\"top\">\n <Col style={{ height: '100%', width: '100%' }}>\n {data.length ? (\n <>\n <Timeline style={{ marginTop: '20px' }}>\n {data.map((e, i) => {\n const { dependency, module, relativePath } = e!;\n const { statements } = dependency;\n const { start } = statements?.[0]?.position\n ? module.isPreferSource\n ? statements[0].position.source!\n : statements[0].position.transformed\n : { start: { line: 0, column: 0 } };\n const text = `${relativePath}:${start.line}:${\n start.column || 1\n }`;\n\n return (\n <Timeline.Item key={text} style={{ cursor: 'default' }}>\n <Typography.Text>\n <div className={styles.filePath}>\n {text}\n <Typography.Paragraph\n copyable={{ text: relativePath }}\n style={{ position: 'relative', top: '7px' }}\n />\n </div>\n {i !== data.length - 1 ? (\n <DoubleRightOutlined className={styles.arrow} />\n ) : null}\n </Typography.Text>\n </Timeline.Item>\n );\n })}\n </Timeline>\n </>\n ) : (\n <Empty description={'This package no dependencies'} />\n )}\n </Col>\n </Row>\n );\n};\n\nexport const PackageRelationReasonsWithServer = withServerAPI({\n Component: PackageRelationReasons,\n api: SDK.ServerAPI.API.GetPackageRelationAlertDetails,\n responsePropName: 'data',\n});\n\nexport const PackageRelationAlert: React.FC<PackageRelationAlertProps> = ({\n data,\n getPackageRelationContentComponent,\n}) => {\n const { level, code, packages } = data;\n\n const navigate = useRuleIndexNavigate(code, data.link);\n const totalSize = sumBy(packages, (e) => e.targetSize.sourceSize);\n const totalSizeStr = formatSize(totalSize);\n const { xs, lg, xxl } = Grid.useBreakpoint();\n const { name } = packages.find((e) => !!e.target.name)!.target;\n\n const versions = packages.map((item) => item.target.version);\n\n return (\n <Alert\n showIcon={!xs}\n message={\n <Space\n wrap\n split={xs ? null : <Divider type=\"vertical\" />}\n align=\"center\"\n >\n <Space wrap={false}>\n <Typography.Text\n code\n strong\n onClick={navigate}\n style={{ cursor: 'pointer' }}\n >\n <a>{code}</a>\n </Typography.Text>\n <Typography.Text strong>\n {Rule.RuleErrorMap[code as keyof Rule.RuleErrorCodes]?.title ||\n data.title}\n </Typography.Text>\n </Space>\n <Typography.Paragraph\n ellipsis={{ rows: 1 }}\n style={{ marginBottom: 0 }}\n >\n <Typography.Text strong code>\n {name}\n </Typography.Text>\n <Typography.Text strong> {data.packages.length}</Typography.Text>\n <Typography.Text> versions was found</Typography.Text>\n </Typography.Paragraph>\n <Bdg\n label={'total size'}\n value={totalSizeStr}\n type=\"error\"\n tooltip={`total size of ${data.packages.length} versions is ${totalSizeStr}`}\n />\n </Space>\n }\n description={\n <Space direction=\"vertical\" wrap={false}>\n {data.packages.map(({ target: el, targetSize: size }) => {\n const sizeStr = formatSize(size.sourceSize);\n const parsedSizeStr = size.parsedSize\n ? formatSize(size.parsedSize)\n : null;\n const name = `${el.name}@${el.version}`;\n return (\n <Space\n key={el.version}\n style={{ wordBreak: 'break-all' }}\n align=\"center\"\n split={xs ? null : <Divider type=\"vertical\" />}\n wrap\n >\n <Space wrap={false}>\n <Typography.Text style={{ marginLeft: 4 }}>└</Typography.Text>\n <Bdg\n label={el.name}\n value={`v${el.version}`}\n tooltip={name}\n />\n </Space>\n <Space>\n <Bdg\n label={\n <div color={'rgb(255, 255, 255)'}>\n Source Size <InfoCircleOutlined />\n </div>\n }\n value={sizeStr}\n tooltip={`The bundle size of \"${name}\" is ${sizeStr}, this is source size.`}\n type=\"error\"\n />\n <Bdg\n label=\"Bundled size\"\n value={parsedSizeStr || 'CONCATENATED'}\n tooltip={`The bundle size of \"${name}\" is ${sizeStr}, this is after bundled, concatenated module cannot get bundled size. `}\n type=\"error\"\n />\n </Space>\n\n <Typography.Paragraph\n style={{\n marginBottom: 0,\n width: xxl ? '40rem' : lg ? '30rem' : '20rem',\n }}\n copyable={{ text: el.root }}\n ellipsis={{\n rows: 1,\n expandable: true,\n symbol: <ExpandAltOutlined />,\n tooltip: el.root,\n }}\n code\n >\n {el.root}\n </Typography.Paragraph>\n </Space>\n );\n })}\n </Space>\n }\n type={level === 'warn' ? 'info' : level}\n action={\n <>\n {packages && packages.length > 0 ? (\n <TextDrawer\n text=\"Show Relations\"\n buttonProps={{ size: 'small' }}\n drawerProps={{ title: data.title, width: TextDrawerWidth }}\n >\n <Space direction=\"vertical\" className=\"alert-space\">\n <Space style={{ marginBottom: Size.BasePadding / 2 }}>\n <Title text={name} upperFirst={false} />\n <Typography.Text strong>{versions.length}</Typography.Text>\n <Typography.Text> versions was found: </Typography.Text>\n {versions.map((e) => (\n <Typography.Text strong code key={e}>\n {e}\n </Typography.Text>\n ))}\n </Space>\n <Tabs\n type=\"card\"\n size=\"middle\"\n className=\"tabs-space\"\n defaultActiveKey={versions[0]}\n items={\n packages.map((pkg) => {\n const { target, targetSize } = pkg;\n return {\n label: (\n <Space>\n <Typography.Text>{`${name}@${target.version}`}</Typography.Text>\n <Tag color={Color.Red}>\n {formatSize(targetSize.sourceSize)}\n </Tag>\n </Space>\n ),\n key: `${target.root}${target.name}${target.version}`,\n children: getPackageRelationContentComponent({\n data,\n package: pkg,\n }),\n };\n })!\n }\n />\n </Space>\n </TextDrawer>\n ) : null}\n <Divider type=\"vertical\" />\n <Button\n type=\"link\"\n onClick={navigate}\n size=\"small\"\n icon={<InfoCircleOutlined />}\n />\n </>\n }\n />\n );\n};\n"],"names":["TextDrawerWidth","PackageRelationReasons","data","Row","Size","Col","Timeline","e","i","dependency","module","relativePath","statements","start","text","Typography","styles","DoubleRightOutlined","Empty","PackageRelationReasonsWithServer","withServerAPI","SDK","PackageRelationAlert","getPackageRelationContentComponent","level","code","packages","navigate","useRuleIndexNavigate","totalSize","sumBy","totalSizeStr","formatSize","xs","lg","xxl","Grid","name","versions","item","Alert","Space","Divider","Rule","Bdg","el","size","sizeStr","parsedSizeStr","InfoCircleOutlined","ExpandAltOutlined","TextDrawer","Title","Tabs","pkg","target","targetSize","Tag","Color","Button"],"mappings":"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"}
@@ -11,7 +11,7 @@ import { Title } from "../Title/index.mjs";
11
11
  const CodeViewDrawerContent = ({ data, cwd })=>{
12
12
  const { file } = data;
13
13
  const { path, ranges } = file;
14
- const line = null == ranges ? void 0 : ranges[0].start.line;
14
+ const line = ranges?.[0].start.line;
15
15
  return /*#__PURE__*/ jsxs(Space, {
16
16
  direction: "vertical",
17
17
  className: "alert-space",
@@ -36,10 +36,9 @@ const CodeViewDrawerContent = ({ data, cwd })=>{
36
36
  });
37
37
  };
38
38
  const CodeViewAlert = ({ data, cwd })=>{
39
- var _file_ranges;
40
39
  const { title, description = '', level, code, file } = data;
41
40
  const navigate = useRuleIndexNavigate(code, data.link);
42
- const startLine = null == (_file_ranges = file.ranges) ? void 0 : _file_ranges[0].start.line;
41
+ const startLine = file.ranges?.[0].start.line;
43
42
  const Description = /*#__PURE__*/ jsxs(Space, {
44
43
  direction: "vertical",
45
44
  children: [
@@ -1 +1 @@
1
- {"version":3,"file":"components/Alert/view.mjs","sources":["webpack://@rsdoctor/components/./src/components/Alert/view.tsx"],"sourcesContent":["import { InfoCircleOutlined } from '@ant-design/icons';\nimport { Alert, Button, Divider, Space, Typography } from 'antd';\nimport React from 'react';\nimport { Lodash } from '@rsdoctor/utils/common';\nimport { useRuleIndexNavigate } from '../../utils';\nimport { CodeViewer } from '../base';\nimport { CodeOpener } from '../Opener';\nimport { TextDrawer } from '../TextDrawer';\nimport { Title } from '../Title';\nimport { CodeViewAlertProps } from './types';\n\nexport const CodeViewDrawerContent: React.FC<CodeViewAlertProps> = ({\n data,\n cwd,\n}) => {\n const { file } = data;\n const { path, ranges } = file;\n const line = ranges?.[0].start.line;\n\n return (\n <Space direction=\"vertical\" className=\"alert-space\">\n <Title text=\"Code Viewer\" />\n <CodeOpener\n cwd={cwd}\n url={path}\n loc={Lodash.isNumber(line) ? String(line) : undefined}\n code\n disabled\n />\n <CodeViewer\n filePath={file.path}\n code={file.content}\n ranges={ranges}\n defaultLine={line}\n />\n </Space>\n );\n};\n\n///REVIEW - It's still useful? can't find usage\nexport const CodeViewAlert: React.FC<CodeViewAlertProps> = ({ data, cwd }) => {\n const { title, description = '', level, code, file } = data;\n const navigate = useRuleIndexNavigate(code, data.link);\n const startLine = file.ranges?.[0].start.line;\n\n const Description = (\n <Space direction=\"vertical\">\n <Typography.Text>{description}</Typography.Text>\n <Space>\n <Typography.Text>File:</Typography.Text>\n <Typography.Text strong code>\n {file.path}\n </Typography.Text>\n {Lodash.isNumber(startLine) ? (\n <>\n <Typography.Text>in line</Typography.Text>\n <Typography.Text strong code>\n {startLine}\n </Typography.Text>\n </>\n ) : (\n ''\n )}\n </Space>\n </Space>\n );\n\n return (\n <Alert\n showIcon\n message={\n <Space>\n <Typography.Text\n code\n strong\n onClick={navigate}\n style={{ cursor: 'pointer' }}\n >\n <a>{code}</a>\n </Typography.Text>\n <Typography.Text strong>{title}</Typography.Text>\n </Space>\n }\n description={Description}\n type={level === 'warn' ? 'info' : level}\n action={\n <Space>\n <TextDrawer text={'Show Source Code'} buttonProps={{ size: 'small' }}>\n <CodeViewDrawerContent data={data} cwd={cwd} />\n </TextDrawer>\n <>\n <Divider type=\"vertical\" />\n <Button\n type=\"link\"\n onClick={navigate}\n size=\"small\"\n icon={<InfoCircleOutlined />}\n />\n </>\n </Space>\n }\n />\n );\n};\n"],"names":["CodeViewDrawerContent","data","cwd","file","path","ranges","line","Space","Title","CodeOpener","Lodash","String","undefined","CodeViewer","CodeViewAlert","_file_ranges","title","description","level","code","navigate","useRuleIndexNavigate","startLine","Description","Typography","Alert","TextDrawer","Divider","Button","InfoCircleOutlined"],"mappings":";;;;;;;;;;AAWO,MAAMA,wBAAsD,CAAC,EAClEC,IAAI,EACJC,GAAG,EACJ;IACC,MAAM,EAAEC,IAAI,EAAE,GAAGF;IACjB,MAAM,EAAEG,IAAI,EAAEC,MAAM,EAAE,GAAGF;IACzB,MAAMG,OAAOD,QAAAA,SAAAA,KAAAA,IAAAA,MAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI;IAEnC,OAAO,WAAP,GACE,KAACE,OAAKA;QAAC,WAAU;QAAW,WAAU;;0BACpC,IAACC,OAAKA;gBAAC,MAAK;;0BACZ,IAACC,YAAUA;gBACT,KAAKP;gBACL,KAAKE;gBACL,KAAKM,OAAO,QAAQ,CAACJ,QAAQK,OAAOL,QAAQM;gBAC5C,MAAI;gBACJ,UAAQ;;0BAEV,IAACC,YAAUA;gBACT,UAAUV,KAAK,IAAI;gBACnB,MAAMA,KAAK,OAAO;gBAClB,QAAQE;gBACR,aAAaC;;;;AAIrB;AAGO,MAAMQ,gBAA8C,CAAC,EAAEb,IAAI,EAAEC,GAAG,EAAE;QAGrDa;IAFlB,MAAM,EAAEC,KAAK,EAAEC,cAAc,EAAE,EAAEC,KAAK,EAAEC,IAAI,EAAEhB,IAAI,EAAE,GAAGF;IACvD,MAAMmB,WAAWC,qBAAqBF,MAAMlB,KAAK,IAAI;IACrD,MAAMqB,YAAY,QAAAP,CAAAA,eAAAA,KAAK,MAAM,AAAD,IAAVA,KAAAA,IAAAA,YAAa,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI;IAE7C,MAAMQ,cAAc,WAAdA,GACJ,KAAChB,OAAKA;QAAC,WAAU;;0BACf,IAACiB,WAAW,IAAI;0BAAEP;;0BAClB,KAACV,OAAKA;;kCACJ,IAACiB,WAAW,IAAI;kCAAC;;kCACjB,IAACA,WAAW,IAAI;wBAAC,QAAM;wBAAC,MAAI;kCACzBrB,KAAK,IAAI;;oBAEXO,OAAO,QAAQ,CAACY,aAAa,WAAbA,GACf;;0CACE,IAACE,WAAW,IAAI;0CAAC;;0CACjB,IAACA,WAAW,IAAI;gCAAC,QAAM;gCAAC,MAAI;0CACzBF;;;yBAIL;;;;;IAMR,OAAO,WAAP,GACE,IAACG,OAAKA;QACJ,UAAQ;QACR,uBACE,KAAClB,OAAKA;;8BACJ,IAACiB,WAAW,IAAI;oBACd,MAAI;oBACJ,QAAM;oBACN,SAASJ;oBACT,OAAO;wBAAE,QAAQ;oBAAU;8BAE3B,kBAAC;kCAAGD;;;8BAEN,IAACK,WAAW,IAAI;oBAAC,QAAM;8BAAER;;;;QAG7B,aAAaO;QACb,MAAML,AAAU,WAAVA,QAAmB,SAASA;QAClC,sBACE,KAACX,OAAKA;;8BACJ,IAACmB,YAAUA;oBAAC,MAAM;oBAAoB,aAAa;wBAAE,MAAM;oBAAQ;8BACjE,kBAAC1B,uBAAAA;wBAAsB,MAAMC;wBAAM,KAAKC;;;8BAE1C;;sCACE,IAACyB,SAAOA;4BAAC,MAAK;;sCACd,IAACC,QAAMA;4BACL,MAAK;4BACL,SAASR;4BACT,MAAK;4BACL,oBAAM,IAACS,oBAAkBA,CAAAA;;;;;;;AAOvC"}
1
+ {"version":3,"file":"components/Alert/view.mjs","sources":["webpack://@rsdoctor/components/./src/components/Alert/view.tsx"],"sourcesContent":["import { InfoCircleOutlined } from '@ant-design/icons';\nimport { Alert, Button, Divider, Space, Typography } from 'antd';\nimport React from 'react';\nimport { Lodash } from '@rsdoctor/utils/common';\nimport { useRuleIndexNavigate } from '../../utils';\nimport { CodeViewer } from '../base';\nimport { CodeOpener } from '../Opener';\nimport { TextDrawer } from '../TextDrawer';\nimport { Title } from '../Title';\nimport { CodeViewAlertProps } from './types';\n\nexport const CodeViewDrawerContent: React.FC<CodeViewAlertProps> = ({\n data,\n cwd,\n}) => {\n const { file } = data;\n const { path, ranges } = file;\n const line = ranges?.[0].start.line;\n\n return (\n <Space direction=\"vertical\" className=\"alert-space\">\n <Title text=\"Code Viewer\" />\n <CodeOpener\n cwd={cwd}\n url={path}\n loc={Lodash.isNumber(line) ? String(line) : undefined}\n code\n disabled\n />\n <CodeViewer\n filePath={file.path}\n code={file.content}\n ranges={ranges}\n defaultLine={line}\n />\n </Space>\n );\n};\n\n///REVIEW - It's still useful? can't find usage\nexport const CodeViewAlert: React.FC<CodeViewAlertProps> = ({ data, cwd }) => {\n const { title, description = '', level, code, file } = data;\n const navigate = useRuleIndexNavigate(code, data.link);\n const startLine = file.ranges?.[0].start.line;\n\n const Description = (\n <Space direction=\"vertical\">\n <Typography.Text>{description}</Typography.Text>\n <Space>\n <Typography.Text>File:</Typography.Text>\n <Typography.Text strong code>\n {file.path}\n </Typography.Text>\n {Lodash.isNumber(startLine) ? (\n <>\n <Typography.Text>in line</Typography.Text>\n <Typography.Text strong code>\n {startLine}\n </Typography.Text>\n </>\n ) : (\n ''\n )}\n </Space>\n </Space>\n );\n\n return (\n <Alert\n showIcon\n message={\n <Space>\n <Typography.Text\n code\n strong\n onClick={navigate}\n style={{ cursor: 'pointer' }}\n >\n <a>{code}</a>\n </Typography.Text>\n <Typography.Text strong>{title}</Typography.Text>\n </Space>\n }\n description={Description}\n type={level === 'warn' ? 'info' : level}\n action={\n <Space>\n <TextDrawer text={'Show Source Code'} buttonProps={{ size: 'small' }}>\n <CodeViewDrawerContent data={data} cwd={cwd} />\n </TextDrawer>\n <>\n <Divider type=\"vertical\" />\n <Button\n type=\"link\"\n onClick={navigate}\n size=\"small\"\n icon={<InfoCircleOutlined />}\n />\n </>\n </Space>\n }\n />\n );\n};\n"],"names":["CodeViewDrawerContent","data","cwd","file","path","ranges","line","Space","Title","CodeOpener","Lodash","String","undefined","CodeViewer","CodeViewAlert","title","description","level","code","navigate","useRuleIndexNavigate","startLine","Description","Typography","Alert","TextDrawer","Divider","Button","InfoCircleOutlined"],"mappings":";;;;;;;;;;AAWO,MAAMA,wBAAsD,CAAC,EAClEC,IAAI,EACJC,GAAG,EACJ;IACC,MAAM,EAAEC,IAAI,EAAE,GAAGF;IACjB,MAAM,EAAEG,IAAI,EAAEC,MAAM,EAAE,GAAGF;IACzB,MAAMG,OAAOD,QAAQ,CAAC,EAAE,CAAC,MAAM;IAE/B,OAAO,WAAP,GACE,KAACE,OAAKA;QAAC,WAAU;QAAW,WAAU;;0BACpC,IAACC,OAAKA;gBAAC,MAAK;;0BACZ,IAACC,YAAUA;gBACT,KAAKP;gBACL,KAAKE;gBACL,KAAKM,OAAO,QAAQ,CAACJ,QAAQK,OAAOL,QAAQM;gBAC5C,MAAI;gBACJ,UAAQ;;0BAEV,IAACC,YAAUA;gBACT,UAAUV,KAAK,IAAI;gBACnB,MAAMA,KAAK,OAAO;gBAClB,QAAQE;gBACR,aAAaC;;;;AAIrB;AAGO,MAAMQ,gBAA8C,CAAC,EAAEb,IAAI,EAAEC,GAAG,EAAE;IACvE,MAAM,EAAEa,KAAK,EAAEC,cAAc,EAAE,EAAEC,KAAK,EAAEC,IAAI,EAAEf,IAAI,EAAE,GAAGF;IACvD,MAAMkB,WAAWC,qBAAqBF,MAAMjB,KAAK,IAAI;IACrD,MAAMoB,YAAYlB,KAAK,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM;IAEzC,MAAMmB,cAAc,WAAdA,GACJ,KAACf,OAAKA;QAAC,WAAU;;0BACf,IAACgB,WAAW,IAAI;0BAAEP;;0BAClB,KAACT,OAAKA;;kCACJ,IAACgB,WAAW,IAAI;kCAAC;;kCACjB,IAACA,WAAW,IAAI;wBAAC,QAAM;wBAAC,MAAI;kCACzBpB,KAAK,IAAI;;oBAEXO,OAAO,QAAQ,CAACW,aAAa,WAAbA,GACf;;0CACE,IAACE,WAAW,IAAI;0CAAC;;0CACjB,IAACA,WAAW,IAAI;gCAAC,QAAM;gCAAC,MAAI;0CACzBF;;;yBAIL;;;;;IAMR,OAAO,WAAP,GACE,IAACG,OAAKA;QACJ,UAAQ;QACR,uBACE,KAACjB,OAAKA;;8BACJ,IAACgB,WAAW,IAAI;oBACd,MAAI;oBACJ,QAAM;oBACN,SAASJ;oBACT,OAAO;wBAAE,QAAQ;oBAAU;8BAE3B,kBAAC;kCAAGD;;;8BAEN,IAACK,WAAW,IAAI;oBAAC,QAAM;8BAAER;;;;QAG7B,aAAaO;QACb,MAAML,AAAU,WAAVA,QAAmB,SAASA;QAClC,sBACE,KAACV,OAAKA;;8BACJ,IAACkB,YAAUA;oBAAC,MAAM;oBAAoB,aAAa;wBAAE,MAAM;oBAAQ;8BACjE,kBAACzB,uBAAAA;wBAAsB,MAAMC;wBAAM,KAAKC;;;8BAE1C;;sCACE,IAACwB,SAAOA;4BAAC,MAAK;;sCACd,IAACC,QAAMA;4BACL,MAAK;4BACL,SAASR;4BACT,MAAK;4BACL,oBAAM,IAACS,oBAAkBA,CAAAA;;;;;;;AAOvC"}
@@ -38,9 +38,8 @@ const BundleAlert = ({ title, dataSource, extraData })=>{
38
38
  }
39
39
  ];
40
40
  dataSource.forEach((data)=>{
41
- var _tabData_find;
42
- const target = null == (_tabData_find = tabData.find((td)=>td.key === data.code)) ? void 0 : _tabData_find.data;
43
- null == target || target.push(data);
41
+ const target = tabData.find((td)=>td.key === data.code)?.data;
42
+ target?.push(data);
44
43
  });
45
44
  const tabItems = tabData.map((td)=>{
46
45
  const tagStyle = activeKey === td.key ? {
@@ -1 +1 @@
1
- {"version":3,"file":"components/Alerts/bundle-alert.mjs","sources":["webpack://@rsdoctor/components/./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';\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?: JSX.Element | undefined;\n}\n\nexport const BundleAlert: React.FC<BundleAlertProps> = ({\n title,\n dataSource,\n extraData,\n}) => {\n const [activeKey, setActiveKey] = useState('E1001');\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\n dataSource.forEach((data) => {\n const target = tabData.find((td) => td.key === data.code)?.data;\n target?.push(data);\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 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 type=\"card\"\n defaultActiveKey=\"E1001\"\n items={tabItems}\n />\n )}\n </div>\n </Card>\n );\n};\n"],"names":["BundleAlert","title","dataSource","extraData","activeKey","setActiveKey","useState","tabData","data","_tabData_find","target","td","tabItems","tagStyle","tagTextStyle","LabelComponent","Overview","styles","Tag","children","description","AlertCollapse","CrossChunksAlertCollapse","CommonList","ECMAVersionCheck","Empty","Card","Tabs"],"mappings":"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"}
1
+ {"version":3,"file":"components/Alerts/bundle-alert.mjs","sources":["webpack://@rsdoctor/components/./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';\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?: JSX.Element | undefined;\n}\n\nexport const BundleAlert: React.FC<BundleAlertProps> = ({\n title,\n dataSource,\n extraData,\n}) => {\n const [activeKey, setActiveKey] = useState('E1001');\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\n dataSource.forEach((data) => {\n const target = tabData.find((td) => td.key === data.code)?.data;\n target?.push(data);\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 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 type=\"card\"\n defaultActiveKey=\"E1001\"\n items={tabItems}\n />\n )}\n </div>\n </Card>\n );\n};\n"],"names":["BundleAlert","title","dataSource","extraData","activeKey","setActiveKey","useState","tabData","data","target","td","tabItems","tagStyle","tagTextStyle","LabelComponent","Overview","styles","Tag","children","description","AlertCollapse","CrossChunksAlertCollapse","CommonList","ECMAVersionCheck","Empty","Card","Tabs"],"mappings":";;;;;;;;;;AA2BO,MAAMA,cAA0C,CAAC,EACtDC,KAAK,EACLC,UAAU,EACVC,SAAS,EACV;IACC,MAAM,CAACC,WAAWC,aAAa,GAAGC,SAAS;IAC3C,MAAMC,UAID;QACH;YACE,KAAK;YACL,OAAO;YACP,MAAM,EAAE;QACV;QACA;YACE,KAAK;YACL,OAAO;YACP,MAAM,EAAE;QACV;QACA;YACE,KAAK;YACL,OAAO;YACP,MAAM,EAAE;QACV;QACA;YACE,KAAK;YACL,OAAO;YACP,MAAM,EAAE;QACV;QACA;YACE,KAAK;YACL,OAAO;YACP,MAAM,EAAE;QACV;KACD;IAEDL,WAAW,OAAO,CAAC,CAACM;QAClB,MAAMC,SAASF,QAAQ,IAAI,CAAC,CAACG,KAAOA,GAAG,GAAG,KAAKF,KAAK,IAAI,GAAG;QAC3DC,QAAQ,KAAKD;IACf;IAEA,MAAMG,WAAWJ,QAAQ,GAAG,CAAC,CAACG;QAC5B,MAAME,WACJR,cAAcM,GAAG,GAAG,GACf;YACC,QAAQ;YACR,iBAAiB;QACnB,IACA,CAAC;QAEP,MAAMG,eACJT,cAAcM,GAAG,GAAG,GAChB;YACE,OAAO;QACT,IACA,CAAC;QAEP,MAAMI,iBAAiB,kBACrB,IAACC,UAAQA;gBACP,OAAO;oBACL,iBAAiB;oBACjB,aAAa;oBACb,cAAc;oBACd,OAAO;gBACT;gBACA,qBAAO,IAAC;oBAAK,WAAWC,oBAAAA,UAAiB;8BAAGN,GAAG,KAAK;;gBACpD,2BACE,KAAC;oBAAI,WAAWM,oBAAAA,gBAAuB;;sCACrC,IAAC;sCAAMN,GAAG,IAAI,CAAC,MAAM;;sCACrB,IAACO,KAAGA;4BACF,OAAO;gCAAE,YAAY;gCAAS,cAAc;gCAAO,GAAGL,QAAQ;4BAAC;sCAE/D,kBAAC;gCAAK,OAAO;oCAAE,GAAGC,YAAY;gCAAC;0CAAIH,GAAG,GAAG;;;;;;QAOnD,IAAIQ,UAAUC;QACd,OAAQT,GAAG,GAAG;YACZ,KAAK;gBACHQ,WAAW,WAAXA,GAAW,IAACE,eAAaA;oBAAC,MAAMV,GAAG,IAAI;oBAAE,WAAWP;;gBACpD;YACF,KAAK;gBACHe,WAAW,WAAXA,GACE,IAACG,0BAAwBA;oBAAC,MAAMX,GAAG,IAAI;oBAAE,WAAWP;;gBAEtD;YACF,KAAK;gBACHe,WAAW,WAAXA,GAAW,IAACI,YAAUA;oBAAC,MAAMZ,GAAG,IAAI;;gBACpC;YACF,KAAK;gBACHS,cAAc,WAAdA,GACE,IAAC;8BAAK;;gBAKRD,WAAW,WAAXA,GAAW,IAACK,kBAAgBA;oBAAC,MAAMb,GAAG,IAAI;;gBAC1C;YACF,KAAK;gBACHQ,WAAW,WAAXA,GAAW,IAACI,YAAUA;oBAAC,MAAMZ,GAAG,IAAI;;gBACpC;YACF;gBACEQ,WAAW;gBACX;QACJ;QAEA,IAAI,CAACR,GAAG,IAAI,CAAC,MAAM,EACjBQ,WAAW,WAAXA,GACE,IAACM,OAAKA;YAAC,aAAaL;YAAa,OAAOK,MAAM,sBAAsB;;QAIxE,OAAO;YACL,KAAKd,GAAG,GAAG;YACX,OAAO,WAAP,GAAO,IAACI,gBAAAA,CAAAA;YACR,UAAU,WAAV,GACE,IAACW,MAAIA;gBACH,WAAWT,oBAAAA,IAAW;gBACtB,MAAK;gBACL,qBACE;;sCACE,IAACC,KAAGA;4BACF,OAAO;gCACL,YAAY;gCACZ,YAAY;gCACZ,UAAU;gCACV,iBAAiB;gCACjB,cAAc;4BAChB;sCAECP,GAAG,GAAG;;sCAET,IAAC;sCAAMA,GAAG,KAAK;;;;0BAIlBQ;;QAGP;IACF;IAEA,OAAO,WAAP,GACE,IAACO,MAAIA;QAAC,OAAO;YAAE,OAAO;YAAQ,cAAc;QAAO;kBACjD,mBAAC;YAAI,WAAWT,oBAAAA,SAAgB;;8BAC9B,IAAC;oBAAI,WAAWA,oBAAAA,KAAY;8BAAGf;;gBAC7BC,WAAW,MAAM,G,cAejB,IAACwB,MAAIA;oBACH,UAAUrB;oBACV,MAAK;oBACL,kBAAiB;oBACjB,OAAOM;qBAnBW,WAAH,GACjB,IAAC;oBACC,OAAO;wBACL,WAAW;wBACX,SAAS;wBACT,gBAAgB;wBAChB,YAAY;oBACd;8BAEA,kBAACa,OAAKA;wBACJ,aAAa;wBACb,OAAOA,MAAM,sBAAsB;;;;;;AAcjD"}
@@ -28,7 +28,6 @@ const TimelineCom = /*#__PURE__*/ memo(({ loaderData, pluginsData, formatterFn,
28
28
  _categories.unshift(_l.n);
29
29
  });
30
30
  loaderData.forEach(function(_loaderData, _i) {
31
- var _loaderData_c;
32
31
  data.push({
33
32
  name: _loaderData.n + ' total',
34
33
  value: [
@@ -44,8 +43,8 @@ const TimelineCom = /*#__PURE__*/ memo(({ loaderData, pluginsData, formatterFn,
44
43
  }
45
44
  }
46
45
  });
47
- if (!(null == _loaderData ? void 0 : _loaderData.c)) return;
48
- for(let l = 0; l < (null == _loaderData ? void 0 : null == (_loaderData_c = _loaderData.c) ? void 0 : _loaderData_c.length); l++)data.push({
46
+ if (!_loaderData?.c) return;
47
+ for(let l = 0; l < _loaderData?.c?.length; l++)data.push({
49
48
  name: _loaderData.n,
50
49
  value: [
51
50
  _categories.indexOf(_loaderData.n),
@@ -162,7 +161,7 @@ const TimelineCom = /*#__PURE__*/ memo(({ loaderData, pluginsData, formatterFn,
162
161
  containLabel: true
163
162
  },
164
163
  xAxis: {
165
- interval: (null == exts ? void 0 : exts.endTimestamp) && (null == exts ? void 0 : exts.startTimestamp) ? Math.floor((exts.endTimestamp - exts.startTimestamp) / 8) : null,
164
+ interval: exts?.endTimestamp && exts?.startTimestamp ? Math.floor((exts.endTimestamp - exts.startTimestamp) / 8) : null,
166
165
  position: 'top',
167
166
  splitLine: {
168
167
  show: true
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/TimelineCharts/index.mjs","sources":["webpack://@rsdoctor/components/./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","_loaderData_c","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":["webpack://@rsdoctor/components/./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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"}
@@ -65,9 +65,8 @@ const TreeMapInner = /*#__PURE__*/ memo(({ treeData, valueKey = 'sourceSize', st
65
65
  useEffect(()=>{
66
66
  if (!treeData) return;
67
67
  function convert(node, colorGroup, level = 0) {
68
- var _node_children;
69
68
  const groupColors = BUNDLE_ANALYZER_COLORS[colorGroup];
70
- const children = null == (_node_children = node.children) ? void 0 : _node_children.map((c, _i)=>convert(c, colorGroup, level + 1));
69
+ const children = node.children?.map((c, _i)=>convert(c, colorGroup, level + 1));
71
70
  return {
72
71
  id: node.path ? hashString(node.path) : void 0,
73
72
  name: node.name,
@@ -186,7 +185,7 @@ const AssetTreemapWithFilter = ({ treeData, onChartClick, bundledSize = false })
186
185
  checkedAssets
187
186
  ]);
188
187
  const handleModuleClick = (module)=>{
189
- if (!(null == module ? void 0 : module.path)) return;
188
+ if (!module?.path) return;
190
189
  const nodeId = hashString(module.path);
191
190
  if (chartRef.current) {
192
191
  const echartsInstance = chartRef.current.getEchartsInstance();
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/TreeMap.mjs","sources":["webpack://@rsdoctor/components/./src/components/Charts/TreeMap.tsx"],"sourcesContent":["import React, { useEffect, useState, memo, useMemo } from 'react';\nimport EChartsReactCore from 'echarts-for-react/esm/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, Tooltip, Tag } from 'antd';\nimport {\n VerticalAlignBottomOutlined,\n VerticalAlignTopOutlined,\n InfoCircleOutlined,\n} from '@ant-design/icons';\nimport { formatSize, useI18n } from 'src/utils';\nimport { SearchModal } from 'src/pages/BundleSize/components/search-modal';\nimport Styles from './treemap.module.scss';\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 gzipSize?: 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 gzipSize: node.gzipSize,\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 var gzipSize = node.gzipSize;\n var level = node.level;\n\n function makeRow(\n label: string,\n value: string,\n valueColor?: string,\n ) {\n return (\n `<div class=\"${Styles['tooltip-row']}\">` +\n `<span class=\"${Styles['tooltip-label']}\">${label}</span>` +\n `<span${valueColor ? ` style=\"color: ${valueColor}\"` : ''}>${value}</span>` +\n '</div>'\n );\n }\n return [\n `<div class=\"${Styles['tooltip-path']}\">` +\n echarts.format.encodeHTML(path) +\n '</div>',\n makeRow(\n level === 0 ? 'Asset' : 'Source',\n sourceSize !== undefined ? formatSize(sourceSize) : '-',\n ),\n !bundledSize\n ? ''\n : makeRow('Bundled', formatSize(bundledSize), '#1890ff'),\n !gzipSize\n ? ''\n : makeRow('Gzipped', formatSize(gzipSize), '#52c41a'),\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 <EChartsReactCore\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 className={Styles['chart-container']}\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 bundledSize?: boolean;\n}> = ({ treeData, onChartClick, bundledSize = false }) => {\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\n style={{ display: 'flex', flexDirection: 'column', gap: 16 }}\n className={Styles.treemap}\n >\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 <Tooltip\n color={'white'}\n title={\n <span>\n ✨ In Rspack, TreeMap proportions are always based on\n Bundled Size by default.\n <br />\n ✨ In Webpack, TreeMap proportions are based on Bundled Size\n only when SourceMap is enabled.\n <br />✨ <b>Bundled Size</b>: The size of a module after\n bundling and minification.\n <br />✨ <b>Source Size</b>: The size of a module after\n compilation (e.g., TypeScript/JSX to JS), but before\n bundling and minification.\n <br />✨ <b>Gzipped Size</b>: The compressed file size that\n users actually download, as most web servers use gzip\n compression.\n <br />\n </span>\n }\n overlayInnerStyle={{ width: 620, color: 'black' }}\n >\n <InfoCircleOutlined\n style={{ color: '#1890ff', marginLeft: 8 }}\n />\n </Tooltip>\n <Tag color=\"blue\">\n TreeMap area based on{' '}\n {bundledSize ? 'Bundled Size' : 'Source Size'}\n </Tag>\n </Space>\n }\n extra={\n <span\n className={Styles['collapse-icon']}\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 className={`card-body ${collapsed ? 'collapsed' : ''}`}\n >\n <div className={`checkbox-container ${collapsed ? 'collapsed' : ''}`}>\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 className={Styles['all-none-checkbox']}\n >\n {'ALL / NONE'}\n </Checkbox>\n <Checkbox.Group\n key=\"asset-checkbox-group\"\n options={assetNames}\n value={checkedAssets}\n onChange={setCheckedAssets}\n className={`checkbox-container ${collapsed ? 'collapsed' : ''} ${Styles['asset-checkbox-group']}`}\n />\n </div>\n </Card>\n <div style={{ flex: 1 }}>\n <TreeMap\n ref={chartRef}\n treeData={filteredTreeData}\n valueKey={bundledSize ? 'bundledSize' : 'sourceSize'}\n onChartClick={onChartClick}\n />\n </div>\n </Space>\n </div>\n );\n};\n"],"names":["hashString","str","hash","i","getLevelOption","TreeMapInner","memo","treeData","valueKey","style","onChartClick","forwardedRef","option","setOption","useState","chartRef","React","useEffect","echarts","TreemapChart","TooltipComponent","CanvasRenderer","convert","node","colorGroup","level","_node_children","groupColors","BUNDLE_ANALYZER_COLORS","children","c","_i","undefined","data","item","index","group","COLOR_GROUPS","info","treePathInfo","treePath","path","sourceSize","bundledSize","gzipSize","makeRow","label","value","valueColor","Styles","formatSize","EChartsReactCore","TreeMap","props","ref","AssetTreemapWithFilter","assetNames","useMemo","checkedAssets","setCheckedAssets","collapsed","setCollapsed","searchModalOpen","setSearchModalOpen","t","useI18n","filteredTreeData","handleModuleClick","module","nodeId","echartsInstance","Space","Card","Typography","SearchModal","Tooltip","InfoCircleOutlined","Tag","VerticalAlignBottomOutlined","VerticalAlignTopOutlined","Checkbox","e"],"mappings":";;;;;;;;;;;;;AAoCA,SAASA,WAAWC,GAAW;IAC7B,IAAIC,OAAO;IACX,IAAK,IAAIC,IAAI,GAAGA,IAAIF,IAAI,MAAM,EAAEE,IAC9BD,OAAQA,AAAAA,CAAAA,QAAQ,KAAKA,OAAOD,IAAI,UAAU,CAACE;IAE7C,OAAOD,SAAS;AAClB;AAEA,SAASE;IACP,OAAO;QACL;YACE,WAAW;gBACT,OAAO;gBACP,aAAa;gBACb,aAAa;gBACb,UAAU;YACZ;YACA,UAAU;gBACR,WAAW;oBACT,aAAa;gBACf;YACF;QACF;QACA;YACE,iBAAiB;gBAAC;gBAAM;aAAI;YAC5B,WAAW;gBACT,aAAa;gBACb,UAAU;gBACV,uBAAuB;gBACvB,aAAa;YACf;QACF;KACD;AACH;AAEA,MAAMC,eAAAA,WAAAA,GACJC,KACE,CAAC,EACCC,QAAQ,EACRC,WAAW,YAAY,EACvBC,KAAK,EACLC,YAAY,EACZC,YAAY,EACb;IACC,MAAM,CAACC,QAAQC,UAAU,GAAGC,SAAc;IAC1C,MAAMC,WAAWC,MAAAA,MAAY,CAAM;IAGnCC,UAAU;QACR,IAAIN,gBAAgBI,SAAS,OAAO,EAClC,IAAI,AAAwB,cAAxB,OAAOJ,cACTA,aAAaI,SAAS,OAAO;aAE5BJ,aAA6C,OAAO,GACnDI,SAAS,OAAO;IAGxB,GAAG;QAACJ;QAAcI,SAAS,OAAO;KAAC;IAGnCE,UAAU;QACRC,kDAAAA,GAAW,CAAC;YAACC;YAAcC;YAAkBC;SAAe;IAC9D,GAAG,EAAE;IAELJ,UAAU;QACR,IAAI,CAACV,UAAU;QAEf,SAASe,QACPC,IAAc,EACdC,UAA+C,EAC/CC,QAAQ,CAAC;gBAGQC;YADjB,MAAMC,cAAcC,sBAAsB,CAACJ,WAAW;YACtD,MAAMK,WAAW,QAAAH,CAAAA,iBAAAA,KAAK,QAAQ,AAAD,IAAZA,KAAAA,IAAAA,eAAe,GAAG,CAAC,CAACI,GAAGC,KACtCT,QAAQQ,GAAGN,YAAYC,QAAQ;YAGjC,OAAO;gBACL,IAAIF,KAAK,IAAI,GAAGvB,WAAWuB,KAAK,IAAI,IAAIS;gBACxC,MAAMT,KAAK,IAAI;gBACf,OAAOA,IAAI,CAACf,SAAS,IAAIe,KAAK,KAAK,IAAI;gBACvC,MAAMA,KAAK,IAAI;gBACf,YAAYA,KAAK,UAAU,IAAIA,KAAK,KAAK;gBACzC,aAAaA,KAAK,WAAW;gBAC7B,UAAUA,KAAK,QAAQ;gBACvB,UAAUM,YAAYA,SAAS,MAAM,GAAG,IAAIA,WAAWG;gBACvD,WAAW;oBACT,aAAa;oBACb,UAAU;oBACV,uBAAuB;oBACvB,iBAAiB;oBACjB,OAAOL,WAAW,CAACF,QAAQE,YAAY,MAAM,CAAC;oBAC9C,aAAaA,WAAW,CAACF,QAAQE,YAAY,MAAM,CAAC;gBACtD;gBACAF;YACF;QACF;QACA,MAAMQ,OAAO1B,SAAS,GAAG,CAAC,CAAC2B,MAAMC;YAC/B,MAAMC,QAAQC,YAAY,CAACF,QAAQE,aAAa,MAAM,CAAC;YACvD,OAAOf,QAAQY,MAAME,OAAO;QAC9B;QAEAvB,UAAU;YACR,OAAO;gBACL,MAAM;gBACN,MAAM;YACR;YACA,SAAS;gBACP,UAAU;gBACV,WAAW,SAAUyB,IAAS;oBAC5B,IAAIC,eAAeD,KAAK,YAAY;oBACpC,IAAIE,WAAW,EAAE;oBACjB,IAAK,IAAIrC,IAAI,GAAGA,IAAIoC,aAAa,MAAM,EAAEpC,IACvCqC,SAAS,IAAI,CAACD,YAAY,CAACpC,EAAE,CAAC,IAAI;oBAGpC,IAAIoB,OAAOe,KAAK,IAAI,IAAI,CAAC;oBACzB,IAAIG,OAAOlB,KAAK,IAAI,IAAIiB,SAAS,IAAI,CAAC;oBACtC,IAAIE,aAAanB,KAAK,UAAU;oBAChC,IAAIoB,cAAcpB,KAAK,WAAW;oBAClC,IAAIqB,WAAWrB,KAAK,QAAQ;oBAC5B,IAAIE,QAAQF,KAAK,KAAK;oBAEtB,SAASsB,QACPC,KAAa,EACbC,KAAa,EACbC,UAAmB;wBAEnB,OACE,CAAC,YAAY,EAAEC,cAAAA,CAAAA,cAAqB,CACnC,eAAa,EAAEA,cAAAA,CAAAA,gBAAuB,CAAC,EAAE,EAAEH,MAC3C,YAAK,EAAEE,aAAa,CAAC,eAAe,EAAEA,WAAW,CAAC,CAAC,GAAG,GAAG,CAAC,EAAED,MAAM,aAAO,CAFlC;oBAK5C;oBACA,OAAO;wBACL,CAAC,YAAY,EAAEE,cAAAA,CAAAA,eAAsB,CAAC,EAAE,CAAC,GACvC/B,kDAAAA,MAAAA,CAAAA,UAAyB,CAACuB,QAC1B;wBACFI,QACEpB,AAAU,MAAVA,QAAc,UAAU,UACxBiB,AAAeV,WAAfU,aAA2BQ,WAAWR,cAAc;wBAEtD,CAACC,cACG,KACAE,QAAQ,WAAWK,WAAWP,cAAc;wBAChD,CAACC,WACG,KACAC,QAAQ,WAAWK,WAAWN,WAAW;qBAC9C,CAAC,IAAI,CAAC;gBACT;YACF;YACA,QAAQ;gBACN;oBACE,MAAM;oBACN,IAAI;oBACJ,MAAM;oBACN,YAAY;oBACZ,MAAM;oBACN,OAAO;oBACP,KAAK;oBACL,QAAQ;oBACR,OAAO;wBACL,MAAM;wBACN,WAAW;wBACX,OAAO;oBACT;oBACA,YAAY;wBACV,MAAM;wBACN,QAAQ;oBACV;oBAEA,QAAQxC;oBACR,MAAM6B;gBACR;aACD;QACH;IACF,GAAG;QAAC1B;QAAUC;KAAS;IAEvB,OAAOI,SAAS,WAATA,GACL,IAAC;kBACC,kBAACuC,MAAgBA;YACf,KAAKpC;YACL,QAAQH;YACR,SAASM;YACT,UAAUR,eAAe;gBAAE,OAAOA;YAAa,IAAIsB;YACnD,OAAO;gBACL,OAAO;gBACP,WAAW;gBACX,WAAW;gBACX,QAAQ;gBACR,cAAc;gBACd,GAAGvB,KAAK;YACV;YACA,WAAWwC,cAAAA,CAAAA,kBAAyB;;SAGtC;AACN;AAGG,MAAMG,UAAU,WAAVA,GAAUpC,MAAAA,UAAgB,CAAoB,CAACqC,OAAOC,MAAAA,WAAAA,GACjE,IAACjD,cAAAA;QAAc,GAAGgD,KAAK;QAAE,cAAcC;;AAGlC,MAAMC,yBAIR,CAAC,EAAEhD,QAAQ,EAAEG,YAAY,EAAEiC,cAAc,KAAK,EAAE;IACnD,MAAMa,aAAaC,QACjB,IAAMlD,SAAS,GAAG,CAAC,CAAC2B,OAASA,KAAK,IAAI,GACtC;QAAC3B;KAAS;IAEZ,MAAM,CAACmD,eAAeC,iBAAiB,GAAG7C,SAAmB0C;IAC7D,MAAM,CAACI,WAAWC,aAAa,GAAG/C,SAAS;IAC3C,MAAM,CAACgD,iBAAiBC,mBAAmB,GAAGjD,SAAS;IACvD,MAAMC,WAAWC,MAAAA,MAAY,CAAM;IACnC,MAAM,EAAEgD,CAAC,EAAE,GAAGC;IAEd,MAAMC,mBAAmBT,QACvB,IAAMlD,SAAS,MAAM,CAAC,CAAC2B,OAASwB,cAAc,QAAQ,CAACxB,KAAK,IAAI,IAChE;QAAC3B;QAAUmD;KAAc;IAI3B,MAAMS,oBAAoB,CAACC;QACzB,IAAI,CAACA,CAAAA,QAAAA,SAAAA,KAAAA,IAAAA,OAAQ,IAAI,AAAD,GAAG;QACnB,MAAMC,SAASrE,WAAWoE,OAAO,IAAI;QACrC,IAAIrD,SAAS,OAAO,EAAE;YACpB,MAAMuD,kBAAkBvD,SAAS,OAAO,CAAC,kBAAkB;YAC3DuD,gBAAgB,cAAc,CAAC;gBAC7B,MAAM;gBACN,UAAU;gBACV,cAAcD,OAAO,QAAQ;YAC/B;QACF;QACAN,mBAAmB;IACrB;IAEA,OAAO,WAAP,GACE,IAAC;QACC,OAAO;YAAE,SAAS;YAAQ,eAAe;YAAU,KAAK;QAAG;QAC3D,WAAWd,eAAAA,OAAc;kBAEzB,mBAACsB,OAAKA;YAAC,WAAU;YAAW,OAAO;gBAAE,OAAO;YAAO;;8BACjD,IAACC,MAAIA;oBACH,qBACE,KAACD,OAAKA;;0CACJ,IAACE,WAAW,IAAI;0CAAET,EAAE;;0CACpB,IAACU,aAAWA;gCACV,eAAeP;gCACf,MAAML;gCACN,SAASC;gCACT,QAAQ;;0CAEV,IAACY,SAAOA;gCACN,OAAO;gCACP,qBACE,KAAC;;wCAAK;sDAGJ,IAAC;wCAAK;sDAGN,IAAC;wCAAK;sDAAE,IAAC;sDAAE;;wCAAgB;sDAE3B,IAAC;wCAAK;sDAAE,IAAC;sDAAE;;wCAAe;sDAG1B,IAAC;wCAAK;sDAAE,IAAC;sDAAE;;wCAAgB;sDAG3B,IAAC;;;gCAGL,mBAAmB;oCAAE,OAAO;oCAAK,OAAO;gCAAQ;0CAEhD,kBAACC,oBAAkBA;oCACjB,OAAO;wCAAE,OAAO;wCAAW,YAAY;oCAAE;;;0CAG7C,KAACC,KAAGA;gCAAC,OAAM;;oCAAO;oCACM;oCACrBlC,cAAc,iBAAiB;;;;;oBAItC,qBACE,IAAC;wBACC,WAAWM,cAAAA,CAAAA,gBAAuB;wBAClC,SAAS,IAAMY,aAAa,CAAC/B,IAAM,CAACA;wBACpC,cAAY8B,YAAYI,EAAE,YAAYA,EAAE;kCAEvCJ,YAAY,WAAZA,GACC,IAACkB,6BAA2BA,CAAAA,KAAAA,WAAAA,GAE5B,IAACC,0BAAwBA,CAAAA;;oBAI/B,MAAK;oBACL,WAAW,CAAC,UAAU,EAAEnB,YAAY,cAAc,IAAI;8BAEtD,mBAAC;wBAAI,WAAW,CAAC,mBAAmB,EAAEA,YAAY,cAAc,IAAI;;0CAClE,IAACoB,UAAQA;gCAEP,eACEtB,cAAc,MAAM,GAAG,KACvBA,cAAc,MAAM,GAAGF,WAAW,MAAM;gCAE1C,SAASE,cAAc,MAAM,KAAKF,WAAW,MAAM;gCACnD,UAAU,CAACyB,IACTtB,iBAAiBsB,EAAE,MAAM,CAAC,OAAO,GAAGzB,aAAa,EAAE;gCAErD,WAAWP,cAAAA,CAAAA,oBAA2B;0CAErC;+BAXG;0CAaN,IAAC+B,SAAS,KAAK;gCAEb,SAASxB;gCACT,OAAOE;gCACP,UAAUC;gCACV,WAAW,CAAC,mBAAmB,EAAEC,YAAY,cAAc,GAAG,CAAC,EAAEX,cAAAA,CAAAA,uBAA8B,EAAE;+BAJ7F;;;;8BAQV,IAAC;oBAAI,OAAO;wBAAE,MAAM;oBAAE;8BACpB,kBAACG,SAAAA;wBACC,KAAKrC;wBACL,UAAUmD;wBACV,UAAUvB,cAAc,gBAAgB;wBACxC,cAAcjC;;;;;;AAM1B"}
1
+ {"version":3,"file":"components/Charts/TreeMap.mjs","sources":["webpack://@rsdoctor/components/./src/components/Charts/TreeMap.tsx"],"sourcesContent":["import React, { useEffect, useState, memo, useMemo } from 'react';\nimport EChartsReactCore from 'echarts-for-react/esm/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, Tooltip, Tag } from 'antd';\nimport {\n VerticalAlignBottomOutlined,\n VerticalAlignTopOutlined,\n InfoCircleOutlined,\n} from '@ant-design/icons';\nimport { formatSize, useI18n } from 'src/utils';\nimport { SearchModal } from 'src/pages/BundleSize/components/search-modal';\nimport Styles from './treemap.module.scss';\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 gzipSize?: 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 gzipSize: node.gzipSize,\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 var gzipSize = node.gzipSize;\n var level = node.level;\n\n function makeRow(\n label: string,\n value: string,\n valueColor?: string,\n ) {\n return (\n `<div class=\"${Styles['tooltip-row']}\">` +\n `<span class=\"${Styles['tooltip-label']}\">${label}</span>` +\n `<span${valueColor ? ` style=\"color: ${valueColor}\"` : ''}>${value}</span>` +\n '</div>'\n );\n }\n return [\n `<div class=\"${Styles['tooltip-path']}\">` +\n echarts.format.encodeHTML(path) +\n '</div>',\n makeRow(\n level === 0 ? 'Asset' : 'Source',\n sourceSize !== undefined ? formatSize(sourceSize) : '-',\n ),\n !bundledSize\n ? ''\n : makeRow('Bundled', formatSize(bundledSize), '#1890ff'),\n !gzipSize\n ? ''\n : makeRow('Gzipped', formatSize(gzipSize), '#52c41a'),\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 <EChartsReactCore\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 className={Styles['chart-container']}\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 bundledSize?: boolean;\n}> = ({ treeData, onChartClick, bundledSize = false }) => {\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\n style={{ display: 'flex', flexDirection: 'column', gap: 16 }}\n className={Styles.treemap}\n >\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 <Tooltip\n color={'white'}\n title={\n <span>\n ✨ In Rspack, TreeMap proportions are always based on\n Bundled Size by default.\n <br />\n ✨ In Webpack, TreeMap proportions are based on Bundled Size\n only when SourceMap is enabled.\n <br />✨ <b>Bundled Size</b>: The size of a module after\n bundling and minification.\n <br />✨ <b>Source Size</b>: The size of a module after\n compilation (e.g., TypeScript/JSX to JS), but before\n bundling and minification.\n <br />✨ <b>Gzipped Size</b>: The compressed file size that\n users actually download, as most web servers use gzip\n compression.\n <br />\n </span>\n }\n overlayInnerStyle={{ width: 620, color: 'black' }}\n >\n <InfoCircleOutlined\n style={{ color: '#1890ff', marginLeft: 8 }}\n />\n </Tooltip>\n <Tag color=\"blue\">\n TreeMap area based on{' '}\n {bundledSize ? 'Bundled Size' : 'Source Size'}\n </Tag>\n </Space>\n }\n extra={\n <span\n className={Styles['collapse-icon']}\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 className={`card-body ${collapsed ? 'collapsed' : ''}`}\n >\n <div className={`checkbox-container ${collapsed ? 'collapsed' : ''}`}>\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 className={Styles['all-none-checkbox']}\n >\n {'ALL / NONE'}\n </Checkbox>\n <Checkbox.Group\n key=\"asset-checkbox-group\"\n options={assetNames}\n value={checkedAssets}\n onChange={setCheckedAssets}\n className={`checkbox-container ${collapsed ? 'collapsed' : ''} ${Styles['asset-checkbox-group']}`}\n />\n </div>\n </Card>\n <div style={{ flex: 1 }}>\n <TreeMap\n ref={chartRef}\n treeData={filteredTreeData}\n valueKey={bundledSize ? 'bundledSize' : 'sourceSize'}\n onChartClick={onChartClick}\n />\n </div>\n </Space>\n </div>\n );\n};\n"],"names":["hashString","str","hash","i","getLevelOption","TreeMapInner","memo","treeData","valueKey","style","onChartClick","forwardedRef","option","setOption","useState","chartRef","React","useEffect","echarts","TreemapChart","TooltipComponent","CanvasRenderer","convert","node","colorGroup","level","groupColors","BUNDLE_ANALYZER_COLORS","children","c","_i","undefined","data","item","index","group","COLOR_GROUPS","info","treePathInfo","treePath","path","sourceSize","bundledSize","gzipSize","makeRow","label","value","valueColor","Styles","formatSize","EChartsReactCore","TreeMap","props","ref","AssetTreemapWithFilter","assetNames","useMemo","checkedAssets","setCheckedAssets","collapsed","setCollapsed","searchModalOpen","setSearchModalOpen","t","useI18n","filteredTreeData","handleModuleClick","module","nodeId","echartsInstance","Space","Card","Typography","SearchModal","Tooltip","InfoCircleOutlined","Tag","VerticalAlignBottomOutlined","VerticalAlignTopOutlined","Checkbox","e"],"mappings":"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"}
@@ -30,7 +30,7 @@ const LoaderChartBase = ({ project })=>{
30
30
  /*#__PURE__*/ jsx(ServerAPIProvider, {
31
31
  api: SDK.ServerAPI.API.GetLoaderChartData,
32
32
  children: (res)=>{
33
- const loaders = res.filter((el)=>filterLoader(el.resource, el.loader, store.filename, store.loaders, el.layer, null == store ? void 0 : store.layer));
33
+ const loaders = res.filter((el)=>filterLoader(el.resource, el.loader, store.filename, store.loaders, el.layer, store?.layer));
34
34
  return 0 === dimension ? /*#__PURE__*/ jsx(LoaderExecutionsChart, {
35
35
  loaders: loaders,
36
36
  cwd: cwd
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/index.mjs","sources":["webpack://@rsdoctor/components/./src/components/Charts/index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { SDK } from '@rsdoctor/types';\nimport { ISelectLoaderProps, LoaderCommonSelect } from '../Select';\nimport { ServerAPIProvider, withServerAPI } from '../Manifest';\nimport { LoaderExecutionsChart } from './loader';\nimport { filterLoader } from 'src/utils/loader';\nimport { Space } from 'antd';\n\nenum ChartDimension {\n Loader,\n Process,\n}\n\nexport const LoaderChartBase: React.FC<{\n project: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetProjectInfo>;\n}> = ({ project }) => {\n const { root: cwd } = project;\n const [store, setStore] = useState({\n filename: '',\n loaders: [] as string[],\n layer: '',\n } as ISelectLoaderProps);\n // @ts-ignore\n const [dimension, setDimension] = useState<ChartDimension>(\n ChartDimension.Loader,\n );\n\n return (\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <ServerAPIProvider api={SDK.ServerAPI.API.GetLoaderNames}>\n {(loaderNames) => (\n <LoaderCommonSelect onChange={setStore} loaderNames={loaderNames} />\n )}\n </ServerAPIProvider>\n <ServerAPIProvider api={SDK.ServerAPI.API.GetLoaderChartData}>\n {(res) => {\n const loaders = res.filter((el) =>\n filterLoader(\n el.resource,\n el.loader,\n store.filename,\n store.loaders,\n el.layer,\n store?.layer,\n ),\n );\n return dimension === ChartDimension.Loader ? (\n <LoaderExecutionsChart loaders={loaders} cwd={cwd} />\n ) : (\n // <ProcessExecutionsChart loaders={loaders} cwd={cwd} pid={pid} />\n <></>\n );\n }}\n </ServerAPIProvider>\n </Space>\n );\n};\n\nexport const LoaderChart = withServerAPI({\n api: SDK.ServerAPI.API.GetProjectInfo,\n responsePropName: 'project',\n Component: LoaderChartBase,\n});\n"],"names":["LoaderChartBase","project","cwd","store","setStore","useState","dimension","setDimension","Space","ServerAPIProvider","SDK","loaderNames","LoaderCommonSelect","res","loaders","el","filterLoader","LoaderExecutionsChart","LoaderChart","withServerAPI"],"mappings":";;;;;;;;AAaO,MAAMA,kBAER,CAAC,EAAEC,OAAO,EAAE;IACf,MAAM,EAAE,MAAMC,GAAG,EAAE,GAAGD;IACtB,MAAM,CAACE,OAAOC,SAAS,GAAGC,SAAS;QACjC,UAAU;QACV,SAAS,EAAE;QACX,OAAO;IACT;IAEA,MAAM,CAACC,WAAWC,aAAa,GAAGF,SAAQA;IAI1C,OAAO,WAAP,GACE,KAACG,OAAKA;QAAC,WAAU;QAAW,OAAO;YAAE,OAAO;QAAO;;0BACjD,IAACC,mBAAiBA;gBAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,cAAc;0BACrD,CAACC,cAAAA,WAAAA,GACA,IAACC,oBAAkBA;wBAAC,UAAUR;wBAAU,aAAaO;;;0BAGzD,IAACF,mBAAiBA;gBAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,kBAAkB;0BACzD,CAACG;oBACA,MAAMC,UAAUD,IAAI,MAAM,CAAC,CAACE,KAC1BC,aACED,GAAG,QAAQ,EACXA,GAAG,MAAM,EACTZ,MAAM,QAAQ,EACdA,MAAM,OAAO,EACbY,GAAG,KAAK,EACRZ,QAAAA,QAAAA,KAAAA,IAAAA,MAAO,KAAK;oBAGhB,OAAOG,AAAc,MAAdA,YAAAA,WAAAA,GACL,IAACW,uBAAqBA;wBAAC,SAASH;wBAAS,KAAKZ;uCAG9C;gBAEJ;;;;AAIR;AAEO,MAAMgB,cAAcC,cAAc;IACvC,KAAKT,IAAI,SAAS,CAAC,GAAG,CAAC,cAAc;IACrC,kBAAkB;IAClB,WAAWV;AACb"}
1
+ {"version":3,"file":"components/Charts/index.mjs","sources":["webpack://@rsdoctor/components/./src/components/Charts/index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { SDK } from '@rsdoctor/types';\nimport { ISelectLoaderProps, LoaderCommonSelect } from '../Select';\nimport { ServerAPIProvider, withServerAPI } from '../Manifest';\nimport { LoaderExecutionsChart } from './loader';\nimport { filterLoader } from 'src/utils/loader';\nimport { Space } from 'antd';\n\nenum ChartDimension {\n Loader,\n Process,\n}\n\nexport const LoaderChartBase: React.FC<{\n project: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetProjectInfo>;\n}> = ({ project }) => {\n const { root: cwd } = project;\n const [store, setStore] = useState({\n filename: '',\n loaders: [] as string[],\n layer: '',\n } as ISelectLoaderProps);\n // @ts-ignore\n const [dimension, setDimension] = useState<ChartDimension>(\n ChartDimension.Loader,\n );\n\n return (\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <ServerAPIProvider api={SDK.ServerAPI.API.GetLoaderNames}>\n {(loaderNames) => (\n <LoaderCommonSelect onChange={setStore} loaderNames={loaderNames} />\n )}\n </ServerAPIProvider>\n <ServerAPIProvider api={SDK.ServerAPI.API.GetLoaderChartData}>\n {(res) => {\n const loaders = res.filter((el) =>\n filterLoader(\n el.resource,\n el.loader,\n store.filename,\n store.loaders,\n el.layer,\n store?.layer,\n ),\n );\n return dimension === ChartDimension.Loader ? (\n <LoaderExecutionsChart loaders={loaders} cwd={cwd} />\n ) : (\n // <ProcessExecutionsChart loaders={loaders} cwd={cwd} pid={pid} />\n <></>\n );\n }}\n </ServerAPIProvider>\n </Space>\n );\n};\n\nexport const LoaderChart = withServerAPI({\n api: SDK.ServerAPI.API.GetProjectInfo,\n responsePropName: 'project',\n Component: LoaderChartBase,\n});\n"],"names":["LoaderChartBase","project","cwd","store","setStore","useState","dimension","setDimension","Space","ServerAPIProvider","SDK","loaderNames","LoaderCommonSelect","res","loaders","el","filterLoader","LoaderExecutionsChart","LoaderChart","withServerAPI"],"mappings":";;;;;;;;AAaO,MAAMA,kBAER,CAAC,EAAEC,OAAO,EAAE;IACf,MAAM,EAAE,MAAMC,GAAG,EAAE,GAAGD;IACtB,MAAM,CAACE,OAAOC,SAAS,GAAGC,SAAS;QACjC,UAAU;QACV,SAAS,EAAE;QACX,OAAO;IACT;IAEA,MAAM,CAACC,WAAWC,aAAa,GAAGF,SAAQA;IAI1C,OAAO,WAAP,GACE,KAACG,OAAKA;QAAC,WAAU;QAAW,OAAO;YAAE,OAAO;QAAO;;0BACjD,IAACC,mBAAiBA;gBAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,cAAc;0BACrD,CAACC,cAAAA,WAAAA,GACA,IAACC,oBAAkBA;wBAAC,UAAUR;wBAAU,aAAaO;;;0BAGzD,IAACF,mBAAiBA;gBAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,kBAAkB;0BACzD,CAACG;oBACA,MAAMC,UAAUD,IAAI,MAAM,CAAC,CAACE,KAC1BC,aACED,GAAG,QAAQ,EACXA,GAAG,MAAM,EACTZ,MAAM,QAAQ,EACdA,MAAM,OAAO,EACbY,GAAG,KAAK,EACRZ,OAAO;oBAGX,OAAOG,AAAc,MAAdA,YAAAA,WAAAA,GACL,IAACW,uBAAqBA;wBAAC,SAASH;wBAAS,KAAKZ;uCAG9C;gBAEJ;;;;AAIR;AAEO,MAAMgB,cAAcC,cAAc;IACvC,KAAKT,IAAI,SAAS,CAAC,GAAG,CAAC,cAAc;IACrC,kBAAkB;IAClB,WAAWV;AACb"}
@@ -22,7 +22,7 @@ const LoaderExecutionsChart = ({ loaders, cwd })=>{
22
22
  const formatterForLoader = useCallback((raw)=>{
23
23
  const { name, data } = raw;
24
24
  const loaderName = name.replace(' total', '');
25
- if (null == data ? void 0 : data.ext) return getTooltipHtmlForLoader(data.ext);
25
+ if (data?.ext) return getTooltipHtmlForLoader(data.ext);
26
26
  return renderTotalLoadersTooltip(loaderName, loaders, cwd);
27
27
  }, []);
28
28
  useEffect(()=>{
@@ -50,7 +50,7 @@ const LoaderExecutionsChart = ({ loaders, cwd })=>{
50
50
  groupByLoader
51
51
  ]);
52
52
  return /*#__PURE__*/ jsx(Fragment, {
53
- children: (null == data ? void 0 : data.length) ? /*#__PURE__*/ jsx("div", {
53
+ children: data?.length ? /*#__PURE__*/ jsx("div", {
54
54
  className: [
55
55
  'loader-chart-container',
56
56
  isDark ? 'loader-chart-container_dark' : ''
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/loader.mjs","sources":["webpack://@rsdoctor/components/./src/components/Charts/loader.tsx"],"sourcesContent":["import React, {\n useCallback,\n useMemo,\n useRef,\n useEffect,\n useState,\n} from 'react';\nimport { groupBy } from 'es-toolkit/compat';\nimport { Empty } from 'antd';\nimport './loader.scss';\nimport { useTheme } from 'src/utils/manifest';\nimport { findLoaderTotalTiming } from 'src/utils/loader';\nimport { beautifyPath } from 'src/utils/file';\nimport { TimelineCom } from './TimelineCharts';\nimport { ChartProps, DurationMetric } from './types';\nimport {\n renderTotalLoadersTooltip,\n getTooltipHtmlForLoader,\n useDebounceHook,\n} from './utils';\nimport { ChartTypes } from './constants';\nlet startTimestamp = 0;\nlet endTimestamp = 0;\n\nexport const LoaderExecutionsChart: React.FC<ChartProps> = ({\n loaders,\n cwd,\n}) => {\n const { isDark } = useTheme();\n const ref = useRef(null);\n const [data, setData] = useState([] as DurationMetric[]);\n const durationMetricData = useDebounceHook(data, 200);\n // const [endTimestamp, setEndTimestamp] = useState(0);\n\n const groupByLoader = useMemo(\n () => groupBy(loaders, (e) => e.loader),\n [loaders],\n );\n\n const formatterForLoader = useCallback((raw: any) => {\n const { name, data } = raw;\n const loaderName = name.replace(' total', '');\n if (data?.ext) {\n return getTooltipHtmlForLoader(data.ext as (typeof loaders)[0]);\n }\n\n return renderTotalLoadersTooltip(loaderName, loaders, cwd);\n }, []);\n\n useEffect(() => {\n const _data = Object.keys(groupByLoader).map<DurationMetric>(\n (loaderName) => {\n const list = groupByLoader[loaderName] || [];\n const { start, end } = findLoaderTotalTiming(list);\n\n if (start < startTimestamp || startTimestamp === 0) {\n startTimestamp = start;\n }\n\n if (end > endTimestamp || endTimestamp === 0) {\n endTimestamp = end;\n }\n\n return {\n p: loaderName,\n n: loaderName,\n s: start,\n e: end,\n c: list.map((e) => {\n return {\n p: loaderName,\n // n: loaderName,\n n: beautifyPath(e.resource, cwd),\n s: e.startAt,\n e: e.endAt,\n ext: e,\n };\n }),\n };\n },\n );\n setData(_data);\n }, [groupByLoader]);\n\n return (\n <>\n {data?.length ? (\n <div\n className={[\n 'loader-chart-container',\n isDark ? 'loader-chart-container_dark' : '',\n ]\n .join(' ')\n .trim()}\n ref={ref}\n style={{ width: '100%' }}\n >\n <TimelineCom\n loaderData={durationMetricData}\n formatterFn={formatterForLoader}\n chartType={ChartTypes.Loader}\n exts={{ startTimestamp, endTimestamp }}\n />\n </div>\n ) : (\n <Empty />\n )}\n </>\n );\n};\n"],"names":["startTimestamp","endTimestamp","LoaderExecutionsChart","loaders","cwd","isDark","useTheme","ref","useRef","data","setData","useState","durationMetricData","useDebounceHook","groupByLoader","useMemo","groupBy","e","formatterForLoader","useCallback","raw","name","loaderName","getTooltipHtmlForLoader","renderTotalLoadersTooltip","useEffect","_data","Object","list","start","end","findLoaderTotalTiming","beautifyPath","TimelineCom","ChartTypes","Empty"],"mappings":";;;;;;;;;;;AAqBA,IAAIA,iBAAiB;AACrB,IAAIC,eAAe;AAEZ,MAAMC,wBAA8C,CAAC,EAC1DC,OAAO,EACPC,GAAG,EACJ;IACC,MAAM,EAAEC,MAAM,EAAE,GAAGC;IACnB,MAAMC,MAAMC,OAAO;IACnB,MAAM,CAACC,MAAMC,QAAQ,GAAGC,SAAS,EAAE;IACnC,MAAMC,qBAAqBC,gBAAgBJ,MAAM;IAGjD,MAAMK,gBAAgBC,QACpB,IAAMC,QAAQb,SAAS,CAACc,IAAMA,EAAE,MAAM,GACtC;QAACd;KAAQ;IAGX,MAAMe,qBAAqBC,YAAY,CAACC;QACtC,MAAM,EAAEC,IAAI,EAAEZ,IAAI,EAAE,GAAGW;QACvB,MAAME,aAAaD,KAAK,OAAO,CAAC,UAAU;QAC1C,IAAIZ,QAAAA,OAAAA,KAAAA,IAAAA,KAAM,GAAG,EACX,OAAOc,wBAAwBd,KAAK,GAAG;QAGzC,OAAOe,0BAA0BF,YAAYnB,SAASC;IACxD,GAAG,EAAE;IAELqB,UAAU;QACR,MAAMC,QAAQC,OAAO,IAAI,CAACb,eAAe,GAAG,CAC1C,CAACQ;YACC,MAAMM,OAAOd,aAAa,CAACQ,WAAW,IAAI,EAAE;YAC5C,MAAM,EAAEO,KAAK,EAAEC,GAAG,EAAE,GAAGC,sBAAsBH;YAE7C,IAAIC,QAAQ7B,kBAAkBA,AAAmB,MAAnBA,gBAC5BA,iBAAiB6B;YAGnB,IAAIC,MAAM7B,gBAAgBA,AAAiB,MAAjBA,cACxBA,eAAe6B;YAGjB,OAAO;gBACL,GAAGR;gBACH,GAAGA;gBACH,GAAGO;gBACH,GAAGC;gBACH,GAAGF,KAAK,GAAG,CAAC,CAACX,IACJ;wBACL,GAAGK;wBAEH,GAAGU,aAAaf,EAAE,QAAQ,EAAEb;wBAC5B,GAAGa,EAAE,OAAO;wBACZ,GAAGA,EAAE,KAAK;wBACV,KAAKA;oBACP;YAEJ;QACF;QAEFP,QAAQgB;IACV,GAAG;QAACZ;KAAc;IAElB,OAAO,WAAP,GACE;kBACGL,AAAAA,CAAAA,QAAAA,OAAAA,KAAAA,IAAAA,KAAM,MAAM,AAAD,IAAC,cACX,IAAC;YACC,WAAW;gBACT;gBACAJ,SAAS,gCAAgC;aAC1C,CACE,IAAI,CAAC,KACL,IAAI;YACP,KAAKE;YACL,OAAO;gBAAE,OAAO;YAAO;sBAEvB,kBAAC0B,aAAWA;gBACV,YAAYrB;gBACZ,aAAaM;gBACb,WAAWgB,WAAW,MAAM;gBAC5B,MAAM;oBAAElC;oBAAgBC;gBAAa;;2BAIzC,IAACkC,OAAKA,CAAAA;;AAId"}
1
+ {"version":3,"file":"components/Charts/loader.mjs","sources":["webpack://@rsdoctor/components/./src/components/Charts/loader.tsx"],"sourcesContent":["import React, {\n useCallback,\n useMemo,\n useRef,\n useEffect,\n useState,\n} from 'react';\nimport { groupBy } from 'es-toolkit/compat';\nimport { Empty } from 'antd';\nimport './loader.scss';\nimport { useTheme } from 'src/utils/manifest';\nimport { findLoaderTotalTiming } from 'src/utils/loader';\nimport { beautifyPath } from 'src/utils/file';\nimport { TimelineCom } from './TimelineCharts';\nimport { ChartProps, DurationMetric } from './types';\nimport {\n renderTotalLoadersTooltip,\n getTooltipHtmlForLoader,\n useDebounceHook,\n} from './utils';\nimport { ChartTypes } from './constants';\nlet startTimestamp = 0;\nlet endTimestamp = 0;\n\nexport const LoaderExecutionsChart: React.FC<ChartProps> = ({\n loaders,\n cwd,\n}) => {\n const { isDark } = useTheme();\n const ref = useRef(null);\n const [data, setData] = useState([] as DurationMetric[]);\n const durationMetricData = useDebounceHook(data, 200);\n // const [endTimestamp, setEndTimestamp] = useState(0);\n\n const groupByLoader = useMemo(\n () => groupBy(loaders, (e) => e.loader),\n [loaders],\n );\n\n const formatterForLoader = useCallback((raw: any) => {\n const { name, data } = raw;\n const loaderName = name.replace(' total', '');\n if (data?.ext) {\n return getTooltipHtmlForLoader(data.ext as (typeof loaders)[0]);\n }\n\n return renderTotalLoadersTooltip(loaderName, loaders, cwd);\n }, []);\n\n useEffect(() => {\n const _data = Object.keys(groupByLoader).map<DurationMetric>(\n (loaderName) => {\n const list = groupByLoader[loaderName] || [];\n const { start, end } = findLoaderTotalTiming(list);\n\n if (start < startTimestamp || startTimestamp === 0) {\n startTimestamp = start;\n }\n\n if (end > endTimestamp || endTimestamp === 0) {\n endTimestamp = end;\n }\n\n return {\n p: loaderName,\n n: loaderName,\n s: start,\n e: end,\n c: list.map((e) => {\n return {\n p: loaderName,\n // n: loaderName,\n n: beautifyPath(e.resource, cwd),\n s: e.startAt,\n e: e.endAt,\n ext: e,\n };\n }),\n };\n },\n );\n setData(_data);\n }, [groupByLoader]);\n\n return (\n <>\n {data?.length ? (\n <div\n className={[\n 'loader-chart-container',\n isDark ? 'loader-chart-container_dark' : '',\n ]\n .join(' ')\n .trim()}\n ref={ref}\n style={{ width: '100%' }}\n >\n <TimelineCom\n loaderData={durationMetricData}\n formatterFn={formatterForLoader}\n chartType={ChartTypes.Loader}\n exts={{ startTimestamp, endTimestamp }}\n />\n </div>\n ) : (\n <Empty />\n )}\n </>\n );\n};\n"],"names":["startTimestamp","endTimestamp","LoaderExecutionsChart","loaders","cwd","isDark","useTheme","ref","useRef","data","setData","useState","durationMetricData","useDebounceHook","groupByLoader","useMemo","groupBy","e","formatterForLoader","useCallback","raw","name","loaderName","getTooltipHtmlForLoader","renderTotalLoadersTooltip","useEffect","_data","Object","list","start","end","findLoaderTotalTiming","beautifyPath","TimelineCom","ChartTypes","Empty"],"mappings":";;;;;;;;;;;AAqBA,IAAIA,iBAAiB;AACrB,IAAIC,eAAe;AAEZ,MAAMC,wBAA8C,CAAC,EAC1DC,OAAO,EACPC,GAAG,EACJ;IACC,MAAM,EAAEC,MAAM,EAAE,GAAGC;IACnB,MAAMC,MAAMC,OAAO;IACnB,MAAM,CAACC,MAAMC,QAAQ,GAAGC,SAAS,EAAE;IACnC,MAAMC,qBAAqBC,gBAAgBJ,MAAM;IAGjD,MAAMK,gBAAgBC,QACpB,IAAMC,QAAQb,SAAS,CAACc,IAAMA,EAAE,MAAM,GACtC;QAACd;KAAQ;IAGX,MAAMe,qBAAqBC,YAAY,CAACC;QACtC,MAAM,EAAEC,IAAI,EAAEZ,IAAI,EAAE,GAAGW;QACvB,MAAME,aAAaD,KAAK,OAAO,CAAC,UAAU;QAC1C,IAAIZ,MAAM,KACR,OAAOc,wBAAwBd,KAAK,GAAG;QAGzC,OAAOe,0BAA0BF,YAAYnB,SAASC;IACxD,GAAG,EAAE;IAELqB,UAAU;QACR,MAAMC,QAAQC,OAAO,IAAI,CAACb,eAAe,GAAG,CAC1C,CAACQ;YACC,MAAMM,OAAOd,aAAa,CAACQ,WAAW,IAAI,EAAE;YAC5C,MAAM,EAAEO,KAAK,EAAEC,GAAG,EAAE,GAAGC,sBAAsBH;YAE7C,IAAIC,QAAQ7B,kBAAkBA,AAAmB,MAAnBA,gBAC5BA,iBAAiB6B;YAGnB,IAAIC,MAAM7B,gBAAgBA,AAAiB,MAAjBA,cACxBA,eAAe6B;YAGjB,OAAO;gBACL,GAAGR;gBACH,GAAGA;gBACH,GAAGO;gBACH,GAAGC;gBACH,GAAGF,KAAK,GAAG,CAAC,CAACX,IACJ;wBACL,GAAGK;wBAEH,GAAGU,aAAaf,EAAE,QAAQ,EAAEb;wBAC5B,GAAGa,EAAE,OAAO;wBACZ,GAAGA,EAAE,KAAK;wBACV,KAAKA;oBACP;YAEJ;QACF;QAEFP,QAAQgB;IACV,GAAG;QAACZ;KAAc;IAElB,OAAO,WAAP,GACE;kBACGL,MAAM,SAAS,WAAT,GACL,IAAC;YACC,WAAW;gBACT;gBACAJ,SAAS,gCAAgC;aAC1C,CACE,IAAI,CAAC,KACL,IAAI;YACP,KAAKE;YACL,OAAO;gBAAE,OAAO;YAAO;sBAEvB,kBAAC0B,aAAWA;gBACV,YAAYrB;gBACZ,aAAaM;gBACb,WAAWgB,WAAW,MAAM;gBAC5B,MAAM;oBAAElC;oBAAgBC;gBAAa;;2BAIzC,IAACkC,OAAKA,CAAAA;;AAId"}
@@ -72,7 +72,7 @@ const FileTree = (props)=>{
72
72
  checkable: false,
73
73
  selectable: true,
74
74
  switcherIcon: ({ data, expanded })=>{
75
- if (null == data ? void 0 : data.children) return /*#__PURE__*/ jsxs(Space, {
75
+ if (data?.children) return /*#__PURE__*/ jsxs(Space, {
76
76
  style: {
77
77
  color
78
78
  },
@@ -85,7 +85,7 @@ const FileTree = (props)=>{
85
85
  expanded ? /*#__PURE__*/ jsx(FolderOpenTwoTone, {}) : /*#__PURE__*/ jsx(FolderTwoTone, {})
86
86
  ]
87
87
  });
88
- if ((null == data ? void 0 : data.key) && 'string' == typeof data.key) return getFileCom(data.key);
88
+ if (data?.key && 'string' == typeof data.key) return getFileCom(data.key);
89
89
  return /*#__PURE__*/ jsx(FileOutlined, {});
90
90
  },
91
91
  expandAction: "click",