@rsdoctor/components 1.5.11 → 2.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/components/Alert/types.d.ts +2 -2
  2. package/dist/components/Alerts/bundle-alert.d.ts +1 -1
  3. package/dist/components/Alerts/bundle-alert.mjs.map +1 -1
  4. package/dist/components/Alerts/overlay.mjs.map +1 -1
  5. package/dist/components/Charts/done.mjs +2 -2
  6. package/dist/components/Charts/done.mjs.map +1 -1
  7. package/dist/components/Charts/minify.mjs +2 -2
  8. package/dist/components/Charts/minify.mjs.map +1 -1
  9. package/dist/components/Configuration/builder.d.ts +1 -5
  10. package/dist/components/Configuration/builder.mjs.map +1 -1
  11. package/dist/components/Layout/index.d.ts +2 -2
  12. package/dist/components/Layout/index.mjs.map +1 -1
  13. package/dist/components/Layout/menus.mjs +7 -7
  14. package/dist/components/Layout/menus.mjs.map +1 -1
  15. package/dist/components/Loader/Analysis/files.mjs.map +1 -1
  16. package/dist/components/Loader/Analysis/index.d.ts +1 -7
  17. package/dist/components/Loader/Analysis/index.mjs.map +1 -1
  18. package/dist/components/Loader/executions.d.ts +1 -1
  19. package/dist/components/Loader/executions.mjs.map +1 -1
  20. package/dist/components/Manifest/api.d.ts +2 -2
  21. package/dist/components/Manifest/api.mjs +2 -2
  22. package/dist/components/Manifest/api.mjs.map +1 -1
  23. package/dist/components/Opener/code.d.ts +1 -1
  24. package/dist/components/Opener/code.mjs.map +1 -1
  25. package/dist/components/Opener/ide.d.ts +1 -1
  26. package/dist/components/Opener/ide.mjs.map +1 -1
  27. package/dist/components/Overall/bundle.d.ts +1 -1
  28. package/dist/components/Overall/bundle.mjs.map +1 -1
  29. package/dist/components/Plugins/plugins.d.ts +18 -0
  30. package/dist/components/Plugins/{webpack.mjs → plugins.mjs} +4 -4
  31. package/dist/components/Plugins/plugins.mjs.map +1 -0
  32. package/dist/components/TextDrawer/index.d.ts +1 -1
  33. package/dist/components/TextDrawer/index.mjs.map +1 -1
  34. package/dist/components/base/CodeViewer/index.mjs +2 -2
  35. package/dist/components/base/CodeViewer/index.mjs.map +1 -1
  36. package/dist/components/base/DiffViewer/index.mjs +1 -1
  37. package/dist/components/base/DiffViewer/index.mjs.map +1 -1
  38. package/dist/pages/{WebpackLoaders → Loaders}/Analysis/constants.d.ts +1 -1
  39. package/dist/pages/{WebpackLoaders → Loaders}/Analysis/constants.mjs +1 -1
  40. package/dist/pages/Loaders/Analysis/constants.mjs.map +1 -0
  41. package/dist/pages/Loaders/Analysis/index.mjs.map +1 -0
  42. package/dist/pages/{WebpackLoaders → Loaders}/Overall/constants.d.ts +1 -1
  43. package/dist/pages/{WebpackLoaders → Loaders}/Overall/constants.mjs +1 -1
  44. package/dist/pages/Loaders/Overall/constants.mjs.map +1 -0
  45. package/dist/pages/Loaders/Overall/index.mjs.map +1 -0
  46. package/dist/pages/Loaders/constants.d.ts +2 -0
  47. package/dist/pages/{WebpackLoaders → Loaders}/constants.mjs +1 -1
  48. package/dist/pages/Loaders/constants.mjs.map +1 -0
  49. package/dist/pages/ModuleAnalyze/chunks.mjs.map +1 -1
  50. package/dist/pages/{WebpackPlugins → Plugins}/constants.d.ts +1 -1
  51. package/dist/pages/{WebpackPlugins → Plugins}/constants.mjs +1 -1
  52. package/dist/pages/Plugins/constants.mjs.map +1 -0
  53. package/dist/pages/Plugins/index.css.map +1 -0
  54. package/dist/pages/{WebpackPlugins → Plugins}/index.mjs +2 -2
  55. package/dist/pages/Plugins/index.mjs.map +1 -0
  56. package/dist/pages/Resources/BundleDiff/DiffContainer/modules.mjs +2 -2
  57. package/dist/pages/Resources/BundleDiff/DiffContainer/modules.mjs.map +1 -1
  58. package/dist/pages/Resources/BundleDiff/DiffContainer/row.mjs +1 -1
  59. package/dist/pages/Resources/BundleDiff/DiffContainer/row.mjs.map +1 -1
  60. package/dist/pages/Resources/BundleDiff/DiffContainer/types.d.ts +1 -1
  61. package/dist/pages/Resources/BundleDiff/DiffServerAPIProvider/index.d.ts +1 -1
  62. package/dist/pages/Resources/BundleDiff/DiffServerAPIProvider/index.mjs.map +1 -1
  63. package/dist/pages/TreeShaking/editor.mjs +2 -2
  64. package/dist/pages/TreeShaking/editor.mjs.map +1 -1
  65. package/dist/pages/index.d.ts +3 -3
  66. package/dist/pages/index.mjs +4 -4
  67. package/dist/utils/data/base.d.ts +2 -2
  68. package/dist/utils/data/base.mjs.map +1 -1
  69. package/dist/utils/data/local.d.ts +10 -3
  70. package/dist/utils/data/local.mjs +37 -24
  71. package/dist/utils/data/local.mjs.map +1 -1
  72. package/dist/utils/data/local.test.d.ts +1 -0
  73. package/dist/utils/data/local.test.mjs +89 -0
  74. package/dist/utils/data/local.test.mjs.map +1 -0
  75. package/dist/utils/file.d.ts +3 -3
  76. package/dist/utils/file.mjs.map +1 -1
  77. package/dist/utils/hooks.d.ts +1 -1
  78. package/dist/utils/request.mjs +4 -3
  79. package/dist/utils/request.mjs.map +1 -1
  80. package/dist/utils/request.test.mjs +23 -0
  81. package/dist/utils/request.test.mjs.map +1 -1
  82. package/dist/utils/routes.mjs +1 -1
  83. package/dist/utils/routes.mjs.map +1 -1
  84. package/dist/utils/socket.d.ts +12 -2
  85. package/dist/utils/socket.mjs +155 -23
  86. package/dist/utils/socket.mjs.map +1 -1
  87. package/dist/utils/socket.test.d.ts +1 -0
  88. package/dist/utils/socket.test.mjs +167 -0
  89. package/dist/utils/socket.test.mjs.map +1 -0
  90. package/package.json +11 -12
  91. package/dist/components/Plugins/webpack.d.ts +0 -18
  92. package/dist/components/Plugins/webpack.mjs.map +0 -1
  93. package/dist/pages/WebpackLoaders/Analysis/constants.mjs.map +0 -1
  94. package/dist/pages/WebpackLoaders/Analysis/index.mjs.map +0 -1
  95. package/dist/pages/WebpackLoaders/Overall/constants.mjs.map +0 -1
  96. package/dist/pages/WebpackLoaders/Overall/index.mjs.map +0 -1
  97. package/dist/pages/WebpackLoaders/constants.d.ts +0 -2
  98. package/dist/pages/WebpackLoaders/constants.mjs.map +0 -1
  99. package/dist/pages/WebpackPlugins/constants.mjs.map +0 -1
  100. package/dist/pages/WebpackPlugins/index.css.map +0 -1
  101. package/dist/pages/WebpackPlugins/index.mjs.map +0 -1
  102. /package/dist/pages/{WebpackLoaders → Loaders}/Analysis/index.d.ts +0 -0
  103. /package/dist/pages/{WebpackLoaders → Loaders}/Analysis/index.mjs +0 -0
  104. /package/dist/pages/{WebpackLoaders → Loaders}/Overall/index.d.ts +0 -0
  105. /package/dist/pages/{WebpackLoaders → Loaders}/Overall/index.mjs +0 -0
  106. /package/dist/pages/{WebpackPlugins → Plugins}/index.css +0 -0
  107. /package/dist/pages/{WebpackPlugins → Plugins}/index.d.ts +0 -0
@@ -7,10 +7,10 @@ export interface AlertProps extends Omit<PackageRelationAlertProps, 'data'> {
7
7
  }
8
8
  export interface PackageRelationAlertProps {
9
9
  data: Rule.PackageRelationDiffRuleStoreData;
10
- getPackageRelationContentComponent: React.FC<{
10
+ getPackageRelationContentComponent(props: {
11
11
  data: Rule.PackageRelationDiffRuleStoreData;
12
12
  package: Rule.PackageRelationData;
13
- }>;
13
+ }): React.JSX.Element;
14
14
  cwd: string;
15
15
  }
16
16
  export interface FileRelationAlertProps {
@@ -8,7 +8,7 @@ interface BundleAlertProps {
8
8
  extraData: Omit<AlertProps, 'data'>;
9
9
  viewMode: ViewMode;
10
10
  setViewMode(mode: ViewMode): void;
11
- extraCom?: JSX.Element | undefined;
11
+ extraCom?: React.JSX.Element | undefined;
12
12
  }
13
13
  export declare const BundleAlert: React.FC<BundleAlertProps>;
14
14
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"components/Alerts/bundle-alert.mjs","sources":["../../../src/components/Alerts/bundle-alert.tsx"],"sourcesContent":["import { Tabs, Empty, Tag } from 'antd';\n\nimport { Card } from '../Card';\nimport { ECMAVersionCheck } from '../Alert/ecma-version-check';\nimport { Overview } from '../Overall/overview';\nimport { AlertCollapse } from './collapse';\nimport { CommonList } from './list';\nimport { ViewMode } from '../../constants';\n\nimport { AlertProps } from '../Alert/types';\n\nimport type { Rule } from '@rsdoctor/types';\n\nimport styles from './bundle-alert.module.scss';\nimport { CSSProperties, useState } from 'react';\nimport { CrossChunksAlertCollapse } from './collapse-cross-chunks';\nimport { ModuleMixedChunksAlertCollapse } from './collapse-module-mixed-chunks';\nimport { SideEffectsOnlyImportsAlertCollapse } from './collapse-side-effects-only-imports';\nimport { CjsRequireAlertCollapse } from './collapse-cjs-require';\nimport { EsmResolvedToCjsAlertCollapse } from './collapse-esm-cjs';\n\ninterface BundleAlertProps {\n title: string;\n cwd: string;\n dataSource: Rule.RuleStoreDataItem[];\n extraData: Omit<AlertProps, 'data'>;\n viewMode: ViewMode;\n setViewMode(mode: ViewMode): void;\n extraCom?: JSX.Element | undefined;\n}\n\nexport const BundleAlert: React.FC<BundleAlertProps> = ({\n title,\n dataSource,\n extraData,\n}) => {\n const firstKeyWithData =\n [\n 'E1001',\n 'E1002',\n 'E1003',\n 'E1004',\n 'E1005',\n 'E1006',\n 'E1007',\n 'E1008',\n 'E1009',\n ].find((code) => dataSource.some((d) => d.code === code)) ?? 'E1001';\n const [activeKey, setActiveKey] = useState(firstKeyWithData);\n const tabData: Array<{\n key: string;\n label: string;\n data: Array<Rule.RuleStoreDataItem>;\n }> = [\n {\n key: 'E1001',\n label: 'Duplicate Packages',\n data: [],\n },\n {\n key: 'E1002',\n label: 'Cross Chunks Package',\n data: [],\n },\n {\n key: 'E1003',\n label: 'Loader Performance Optimization',\n data: [],\n },\n {\n key: 'E1004',\n label: 'ECMA Version Check',\n data: [],\n },\n {\n key: 'E1005',\n label: 'Default Import Check',\n data: [],\n },\n {\n key: 'E1006',\n label: 'Module Mixed Chunks',\n data: [],\n },\n {\n key: 'E1007',\n label: 'Tree Shaking Side Effects Only',\n data: [],\n },\n {\n key: 'E1008',\n label: 'CJS Require Cannot Tree-Shake',\n data: [],\n },\n {\n key: 'E1009',\n label: 'ESM Import Resolved to CJS',\n data: [],\n },\n ];\n\n dataSource.forEach((data) => {\n const target = tabData.find((td) => td.key === data.code)?.data;\n target?.push(data);\n });\n\n tabData.sort(\n (a, b) => (b.data.length > 0 ? 1 : 0) - (a.data.length > 0 ? 1 : 0),\n );\n\n const tabItems = tabData.map((td) => {\n const tagStyle =\n activeKey === td.key\n ? ({\n border: '1px solid #91D5FF',\n backgroundColor: '#E6F7FF',\n } as CSSProperties)\n : {};\n\n const tagTextStyle =\n activeKey === td.key\n ? {\n color: '#1890FF',\n }\n : {};\n\n const LabelComponent = () => (\n <Overview\n style={{\n backgroundColor: 'transparent',\n paddingLeft: 0,\n paddingRight: 0,\n width: '100%',\n }}\n title={<span className={styles.labelTitle}>{td.label}</span>}\n description={\n <div className={styles.labelDescription}>\n <span>{td.data.length}</span>\n <Tag\n style={{ fontFamily: 'Menlo', borderRadius: '2px', ...tagStyle }}\n >\n <span style={{ ...tagTextStyle }}>{td.key}</span>\n </Tag>\n </div>\n }\n />\n );\n\n let children, description;\n switch (td.key) {\n case 'E1001':\n children = <AlertCollapse data={td.data} extraData={extraData} />;\n break;\n case 'E1002':\n children = (\n <CrossChunksAlertCollapse data={td.data} extraData={extraData} />\n );\n break;\n case 'E1003':\n children = <CommonList data={td.data} />;\n break;\n case 'E1004':\n description = (\n <span>\n No ECMA Version Check Rules were found. Please refer to\n 「https://rsdoctor.rs/guide/usage/rule-config」.\n </span>\n );\n children = <ECMAVersionCheck data={td.data} />;\n break;\n case 'E1005':\n children = <CommonList data={td.data} />;\n break;\n case 'E1006':\n children = (\n <ModuleMixedChunksAlertCollapse\n data={td.data}\n extraData={extraData}\n />\n );\n break;\n case 'E1007':\n children = (\n <SideEffectsOnlyImportsAlertCollapse\n data={td.data}\n extraData={extraData}\n />\n );\n break;\n case 'E1008':\n children = (\n <CjsRequireAlertCollapse data={td.data} extraData={extraData} />\n );\n break;\n case 'E1009':\n children = (\n <EsmResolvedToCjsAlertCollapse data={td.data} extraData={extraData} />\n );\n break;\n default:\n children = null;\n break;\n }\n\n if (!td.data.length) {\n children = (\n <Empty description={description} image={Empty.PRESENTED_IMAGE_SIMPLE} />\n );\n }\n\n return {\n key: td.key,\n label: <LabelComponent />,\n children: (\n <Card\n className={styles.card}\n type=\"inner\"\n title={\n <>\n <Tag\n style={{\n fontFamily: 'Menlo',\n fontWeight: '700',\n fontSize: '13px',\n backgroundColor: '#EAEDF1',\n borderRadius: '2px',\n }}\n >\n {td.key}\n </Tag>\n <span>{td.label}</span>\n </>\n }\n >\n {children}\n </Card>\n ),\n };\n });\n\n return (\n <Card style={{ width: '100%', borderRadius: '12px' }}>\n <div className={styles.container}>\n <div className={styles.title}>{title}</div>\n {!dataSource.length ? (\n <div\n style={{\n minHeight: '480px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Empty\n description={'No Bundle Alerts Data'}\n image={Empty.PRESENTED_IMAGE_SIMPLE}\n />\n </div>\n ) : (\n <Tabs\n onChange={setActiveKey}\n tabBarGutter={10}\n type=\"card\"\n defaultActiveKey={tabData[0]?.key ?? 'E1001'}\n items={tabItems}\n />\n )}\n </div>\n </Card>\n );\n};\n"],"names":["BundleAlert","title","dataSource","extraData","firstKeyWithData","code","d","activeKey","setActiveKey","useState","tabData","data","target","td","a","b","tabItems","tagStyle","tagTextStyle","LabelComponent","Overview","styles","Tag","children","description","AlertCollapse","CrossChunksAlertCollapse","CommonList","ECMAVersionCheck","ModuleMixedChunksAlertCollapse","SideEffectsOnlyImportsAlertCollapse","CjsRequireAlertCollapse","EsmResolvedToCjsAlertCollapse","Empty","Card","Tabs"],"mappings":"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"}
1
+ {"version":3,"file":"components/Alerts/bundle-alert.mjs","sources":["../../../src/components/Alerts/bundle-alert.tsx"],"sourcesContent":["import { Tabs, Empty, Tag } from 'antd';\n\nimport { Card } from '../Card';\nimport { ECMAVersionCheck } from '../Alert/ecma-version-check';\nimport { Overview } from '../Overall/overview';\nimport { AlertCollapse } from './collapse';\nimport { CommonList } from './list';\nimport { ViewMode } from '../../constants';\n\nimport { AlertProps } from '../Alert/types';\n\nimport type { Rule } from '@rsdoctor/types';\n\nimport styles from './bundle-alert.module.scss';\nimport { CSSProperties, useState } from 'react';\nimport { CrossChunksAlertCollapse } from './collapse-cross-chunks';\nimport { ModuleMixedChunksAlertCollapse } from './collapse-module-mixed-chunks';\nimport { SideEffectsOnlyImportsAlertCollapse } from './collapse-side-effects-only-imports';\nimport { CjsRequireAlertCollapse } from './collapse-cjs-require';\nimport { EsmResolvedToCjsAlertCollapse } from './collapse-esm-cjs';\n\ninterface BundleAlertProps {\n title: string;\n cwd: string;\n dataSource: Rule.RuleStoreDataItem[];\n extraData: Omit<AlertProps, 'data'>;\n viewMode: ViewMode;\n setViewMode(mode: ViewMode): void;\n extraCom?: React.JSX.Element | undefined;\n}\n\nexport const BundleAlert: React.FC<BundleAlertProps> = ({\n title,\n dataSource,\n extraData,\n}) => {\n const firstKeyWithData =\n [\n 'E1001',\n 'E1002',\n 'E1003',\n 'E1004',\n 'E1005',\n 'E1006',\n 'E1007',\n 'E1008',\n 'E1009',\n ].find((code) => dataSource.some((d) => d.code === code)) ?? 'E1001';\n const [activeKey, setActiveKey] = useState(firstKeyWithData);\n const tabData: Array<{\n key: string;\n label: string;\n data: Array<Rule.RuleStoreDataItem>;\n }> = [\n {\n key: 'E1001',\n label: 'Duplicate Packages',\n data: [],\n },\n {\n key: 'E1002',\n label: 'Cross Chunks Package',\n data: [],\n },\n {\n key: 'E1003',\n label: 'Loader Performance Optimization',\n data: [],\n },\n {\n key: 'E1004',\n label: 'ECMA Version Check',\n data: [],\n },\n {\n key: 'E1005',\n label: 'Default Import Check',\n data: [],\n },\n {\n key: 'E1006',\n label: 'Module Mixed Chunks',\n data: [],\n },\n {\n key: 'E1007',\n label: 'Tree Shaking Side Effects Only',\n data: [],\n },\n {\n key: 'E1008',\n label: 'CJS Require Cannot Tree-Shake',\n data: [],\n },\n {\n key: 'E1009',\n label: 'ESM Import Resolved to CJS',\n data: [],\n },\n ];\n\n dataSource.forEach((data) => {\n const target = tabData.find((td) => td.key === data.code)?.data;\n target?.push(data);\n });\n\n tabData.sort(\n (a, b) => (b.data.length > 0 ? 1 : 0) - (a.data.length > 0 ? 1 : 0),\n );\n\n const tabItems = tabData.map((td) => {\n const tagStyle =\n activeKey === td.key\n ? ({\n border: '1px solid #91D5FF',\n backgroundColor: '#E6F7FF',\n } as CSSProperties)\n : {};\n\n const tagTextStyle =\n activeKey === td.key\n ? {\n color: '#1890FF',\n }\n : {};\n\n const LabelComponent = () => (\n <Overview\n style={{\n backgroundColor: 'transparent',\n paddingLeft: 0,\n paddingRight: 0,\n width: '100%',\n }}\n title={<span className={styles.labelTitle}>{td.label}</span>}\n description={\n <div className={styles.labelDescription}>\n <span>{td.data.length}</span>\n <Tag\n style={{ fontFamily: 'Menlo', borderRadius: '2px', ...tagStyle }}\n >\n <span style={{ ...tagTextStyle }}>{td.key}</span>\n </Tag>\n </div>\n }\n />\n );\n\n let children, description;\n switch (td.key) {\n case 'E1001':\n children = <AlertCollapse data={td.data} extraData={extraData} />;\n break;\n case 'E1002':\n children = (\n <CrossChunksAlertCollapse data={td.data} extraData={extraData} />\n );\n break;\n case 'E1003':\n children = <CommonList data={td.data} />;\n break;\n case 'E1004':\n description = (\n <span>\n No ECMA Version Check Rules were found. Please refer to\n 「https://rsdoctor.rs/guide/usage/rule-config」.\n </span>\n );\n children = <ECMAVersionCheck data={td.data} />;\n break;\n case 'E1005':\n children = <CommonList data={td.data} />;\n break;\n case 'E1006':\n children = (\n <ModuleMixedChunksAlertCollapse\n data={td.data}\n extraData={extraData}\n />\n );\n break;\n case 'E1007':\n children = (\n <SideEffectsOnlyImportsAlertCollapse\n data={td.data}\n extraData={extraData}\n />\n );\n break;\n case 'E1008':\n children = (\n <CjsRequireAlertCollapse data={td.data} extraData={extraData} />\n );\n break;\n case 'E1009':\n children = (\n <EsmResolvedToCjsAlertCollapse data={td.data} extraData={extraData} />\n );\n break;\n default:\n children = null;\n break;\n }\n\n if (!td.data.length) {\n children = (\n <Empty description={description} image={Empty.PRESENTED_IMAGE_SIMPLE} />\n );\n }\n\n return {\n key: td.key,\n label: <LabelComponent />,\n children: (\n <Card\n className={styles.card}\n type=\"inner\"\n title={\n <>\n <Tag\n style={{\n fontFamily: 'Menlo',\n fontWeight: '700',\n fontSize: '13px',\n backgroundColor: '#EAEDF1',\n borderRadius: '2px',\n }}\n >\n {td.key}\n </Tag>\n <span>{td.label}</span>\n </>\n }\n >\n {children}\n </Card>\n ),\n };\n });\n\n return (\n <Card style={{ width: '100%', borderRadius: '12px' }}>\n <div className={styles.container}>\n <div className={styles.title}>{title}</div>\n {!dataSource.length ? (\n <div\n style={{\n minHeight: '480px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Empty\n description={'No Bundle Alerts Data'}\n image={Empty.PRESENTED_IMAGE_SIMPLE}\n />\n </div>\n ) : (\n <Tabs\n onChange={setActiveKey}\n tabBarGutter={10}\n type=\"card\"\n defaultActiveKey={tabData[0]?.key ?? 'E1001'}\n items={tabItems}\n />\n )}\n </div>\n </Card>\n );\n};\n"],"names":["BundleAlert","title","dataSource","extraData","firstKeyWithData","code","d","activeKey","setActiveKey","useState","tabData","data","target","td","a","b","tabItems","tagStyle","tagTextStyle","LabelComponent","Overview","styles","Tag","children","description","AlertCollapse","CrossChunksAlertCollapse","CommonList","ECMAVersionCheck","ModuleMixedChunksAlertCollapse","SideEffectsOnlyImportsAlertCollapse","CjsRequireAlertCollapse","EsmResolvedToCjsAlertCollapse","Empty","Card","Tabs"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"components/Alerts/overlay.mjs","sources":["../../../src/components/Alerts/overlay.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { SDK } from '@rsdoctor/types';\nimport {\n Alert,\n Button,\n Col,\n Collapse,\n Row,\n Tag,\n Typography,\n Badge,\n} from 'antd';\nimport {\n BugOutlined,\n CloseCircleOutlined,\n DownOutlined,\n RightOutlined,\n} from '@ant-design/icons';\nimport Dialog from 'rc-dialog';\nimport Ansi from 'ansi-to-react';\n\nimport { withServerAPI } from '../Manifest';\nimport { Size, Color } from '../../constants';\n\nimport styles from './overlay.module.scss';\n\nimport 'rc-dialog/assets/index.css';\n\nfunction getOverlayAlertsMessage(\n alerts: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetOverlayAlerts>,\n) {\n let warns = 0;\n let errors = 0;\n\n alerts.forEach((item) => {\n if (item.level === 'warn') {\n warns++;\n } else {\n errors++;\n }\n });\n\n const suffixText =\n warns !== 0 && errors !== 0 ? 'problems' : warns === 0 ? 'errors' : 'warns';\n\n const fontSize = 16;\n\n return {\n title: `${alerts.length} compiled ${suffixText}`,\n detail: (\n <Typography.Text strong style={{ color: '#fff', marginBottom: 0 }}>\n <Typography.Text style={{ color: 'inherit', fontSize }}>\n Compiled with\n </Typography.Text>\n <Typography.Text strong style={{ color: Color.Red, fontSize }}>\n {' '}\n {errors} {errors === 1 ? 'error' : 'errors'}{' '}\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit', fontSize }}>\n and\n </Typography.Text>\n <Typography.Text strong style={{ color: Color.Yellow, fontSize }}>\n {' '}\n {warns} {warns === 1 ? 'warning' : 'warnings'}\n </Typography.Text>\n </Typography.Text>\n ),\n warns,\n errors,\n };\n}\n\nexport const OverlayAlertsModal: React.FC<{\n alerts: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetOverlayAlerts>;\n open: boolean;\n onClose(): void;\n}> = ({ alerts = [], open, onClose }) => {\n if (!alerts.length) return null;\n\n return (\n <Dialog\n visible={open}\n onClose={() => onClose()}\n style={{ width: '100%', height: '100%', margin: 0, zIndex: 1000 }}\n closable={false}\n modalRender={(e) => {\n return React.cloneElement(e as React.ReactElement, {\n style: {\n background: 'rgba(0, 0, 0, 0.7)',\n color: '#fff',\n height: '100%',\n overflow: 'scroll',\n borderRadius: 0,\n },\n });\n }}\n >\n <Row justify=\"space-between\" align=\"middle\">\n {getOverlayAlertsMessage(alerts).detail}\n <Button\n onClick={() => onClose()}\n type=\"text\"\n style={{ color: '#fff' }}\n size=\"large\"\n icon={<CloseCircleOutlined />}\n ></Button>\n </Row>\n <Row gutter={[0, Size.BasePadding]}>\n {alerts.map((e) => {\n return (\n <Col\n span={24}\n key={e.id}\n style={{\n whiteSpace: 'pre-wrap',\n lineHeight: `16px`,\n fontSize: 14,\n }}\n >\n <Collapse\n ghost\n style={{ background: '#000' }}\n defaultActiveKey={[e.id]}\n expandIcon={(e) => {\n return e.isActive ? (\n <DownOutlined style={{ color: '#fff' }} />\n ) : (\n <RightOutlined style={{ color: '#fff' }} />\n );\n }}\n >\n <Collapse.Panel\n header={\n <div style={{ color: '#fff' }}>\n {e.level === 'warn' ? (\n <Tag color={Color.Yellow}>WARNING</Tag>\n ) : (\n <Tag color={Color.Red}>ERROR</Tag>\n )}\n <Ansi>{e.description || e.title}</Ansi>\n </div>\n }\n key={e.id}\n >\n <div style={{ color: '#fff' }}>\n <Ansi>{e.stack}</Ansi>\n </div>\n </Collapse.Panel>\n </Collapse>\n </Col>\n );\n })}\n </Row>\n </Dialog>\n );\n};\n\nexport const OverlayAlertsTips: React.FC<{\n alerts: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetOverlayAlerts>;\n defaultOpen?: boolean;\n}> = ({ alerts = [], defaultOpen = alerts.length > 0 }) => {\n if (!alerts.length) return null;\n\n const [open, setOpen] = useState(defaultOpen);\n\n return (\n <React.Fragment>\n <Alert\n banner\n message={React.cloneElement(getOverlayAlertsMessage(alerts).detail, {\n style: {\n color: '#000',\n },\n })}\n icon={<BugOutlined />}\n action={\n <Button onClick={() => setOpen(true)} size=\"small\">\n More\n </Button>\n }\n ></Alert>\n <OverlayAlertsModal\n alerts={alerts}\n open={open}\n onClose={() => setOpen(false)}\n />\n </React.Fragment>\n );\n};\n\nexport const OverlayAlertsButton: React.FC<{\n alerts: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetOverlayAlerts>;\n}> = ({ alerts = [] }) => {\n if (!alerts.length) return null;\n\n const [open, setOpen] = useState(false);\n\n return (\n <div className={styles.container}>\n <div onClick={() => setOpen(!open)} className={styles.badgeContainer}>\n <Badge count={alerts.length} size=\"small\">\n <BugOutlined style={{ fontSize: 15 }} />\n </Badge>\n </div>\n <OverlayAlertsModal\n alerts={alerts}\n open={open}\n onClose={() => setOpen(false)}\n />\n </div>\n );\n};\n\nexport const OverlayAlertsWithButton = withServerAPI({\n api: SDK.ServerAPI.API.GetOverlayAlerts,\n Component: OverlayAlertsButton,\n responsePropName: 'alerts',\n fallbackComponent: () => null,\n});\n\nexport const OverlayAlertsWithTips = withServerAPI({\n api: SDK.ServerAPI.API.GetOverlayAlerts,\n Component: OverlayAlertsTips,\n responsePropName: 'alerts',\n fallbackComponent: () => null,\n});\n"],"names":["getOverlayAlertsMessage","alerts","warns","errors","item","suffixText","fontSize","Typography","Color","OverlayAlertsModal","open","onClose","Dialog","e","React","Row","Button","CloseCircleOutlined","Size","Col","Collapse","DownOutlined","RightOutlined","Tag","Ansi","OverlayAlertsTips","defaultOpen","setOpen","useState","Alert","BugOutlined","OverlayAlertsButton","styles","Badge","OverlayAlertsWithButton","withServerAPI","SDK","OverlayAlertsWithTips"],"mappings":"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"}
1
+ {"version":3,"file":"components/Alerts/overlay.mjs","sources":["../../../src/components/Alerts/overlay.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { SDK } from '@rsdoctor/types';\nimport {\n Alert,\n Button,\n Col,\n Collapse,\n Row,\n Tag,\n Typography,\n Badge,\n} from 'antd';\nimport {\n BugOutlined,\n CloseCircleOutlined,\n DownOutlined,\n RightOutlined,\n} from '@ant-design/icons';\nimport Dialog from 'rc-dialog';\nimport Ansi from 'ansi-to-react';\n\nimport { withServerAPI } from '../Manifest';\nimport { Size, Color } from '../../constants';\n\nimport styles from './overlay.module.scss';\n\nimport 'rc-dialog/assets/index.css';\n\nfunction getOverlayAlertsMessage(\n alerts: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetOverlayAlerts>,\n) {\n let warns = 0;\n let errors = 0;\n\n alerts.forEach((item) => {\n if (item.level === 'warn') {\n warns++;\n } else {\n errors++;\n }\n });\n\n const suffixText =\n warns !== 0 && errors !== 0 ? 'problems' : warns === 0 ? 'errors' : 'warns';\n\n const fontSize = 16;\n\n return {\n title: `${alerts.length} compiled ${suffixText}`,\n detail: (\n <Typography.Text strong style={{ color: '#fff', marginBottom: 0 }}>\n <Typography.Text style={{ color: 'inherit', fontSize }}>\n Compiled with\n </Typography.Text>\n <Typography.Text strong style={{ color: Color.Red, fontSize }}>\n {' '}\n {errors} {errors === 1 ? 'error' : 'errors'}{' '}\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit', fontSize }}>\n and\n </Typography.Text>\n <Typography.Text strong style={{ color: Color.Yellow, fontSize }}>\n {' '}\n {warns} {warns === 1 ? 'warning' : 'warnings'}\n </Typography.Text>\n </Typography.Text>\n ),\n warns,\n errors,\n };\n}\n\nexport const OverlayAlertsModal: React.FC<{\n alerts: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetOverlayAlerts>;\n open: boolean;\n onClose(): void;\n}> = ({ alerts = [], open, onClose }) => {\n if (!alerts.length) return null;\n\n return (\n <Dialog\n visible={open}\n onClose={() => onClose()}\n style={{ width: '100%', height: '100%', margin: 0, zIndex: 1000 }}\n closable={false}\n modalRender={(e) => {\n return React.cloneElement(\n e as React.ReactElement<{ style?: React.CSSProperties }>,\n {\n style: {\n background: 'rgba(0, 0, 0, 0.7)',\n color: '#fff',\n height: '100%',\n overflow: 'scroll',\n borderRadius: 0,\n },\n },\n );\n }}\n >\n <Row justify=\"space-between\" align=\"middle\">\n {getOverlayAlertsMessage(alerts).detail}\n <Button\n onClick={() => onClose()}\n type=\"text\"\n style={{ color: '#fff' }}\n size=\"large\"\n icon={<CloseCircleOutlined />}\n ></Button>\n </Row>\n <Row gutter={[0, Size.BasePadding]}>\n {alerts.map((e) => {\n return (\n <Col\n span={24}\n key={e.id}\n style={{\n whiteSpace: 'pre-wrap',\n lineHeight: `16px`,\n fontSize: 14,\n }}\n >\n <Collapse\n ghost\n style={{ background: '#000' }}\n defaultActiveKey={[e.id]}\n expandIcon={(e) => {\n return e.isActive ? (\n <DownOutlined style={{ color: '#fff' }} />\n ) : (\n <RightOutlined style={{ color: '#fff' }} />\n );\n }}\n >\n <Collapse.Panel\n header={\n <div style={{ color: '#fff' }}>\n {e.level === 'warn' ? (\n <Tag color={Color.Yellow}>WARNING</Tag>\n ) : (\n <Tag color={Color.Red}>ERROR</Tag>\n )}\n <Ansi>{e.description || e.title}</Ansi>\n </div>\n }\n key={e.id}\n >\n <div style={{ color: '#fff' }}>\n <Ansi>{e.stack}</Ansi>\n </div>\n </Collapse.Panel>\n </Collapse>\n </Col>\n );\n })}\n </Row>\n </Dialog>\n );\n};\n\nexport const OverlayAlertsTips: React.FC<{\n alerts: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetOverlayAlerts>;\n defaultOpen?: boolean;\n}> = ({ alerts = [], defaultOpen = alerts.length > 0 }) => {\n if (!alerts.length) return null;\n\n const [open, setOpen] = useState(defaultOpen);\n\n return (\n <React.Fragment>\n <Alert\n banner\n message={React.cloneElement(\n getOverlayAlertsMessage(alerts).detail as React.ReactElement<{\n style?: React.CSSProperties;\n }>,\n {\n style: {\n color: '#000',\n },\n },\n )}\n icon={<BugOutlined />}\n action={\n <Button onClick={() => setOpen(true)} size=\"small\">\n More\n </Button>\n }\n ></Alert>\n <OverlayAlertsModal\n alerts={alerts}\n open={open}\n onClose={() => setOpen(false)}\n />\n </React.Fragment>\n );\n};\n\nexport const OverlayAlertsButton: React.FC<{\n alerts: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetOverlayAlerts>;\n}> = ({ alerts = [] }) => {\n if (!alerts.length) return null;\n\n const [open, setOpen] = useState(false);\n\n return (\n <div className={styles.container}>\n <div onClick={() => setOpen(!open)} className={styles.badgeContainer}>\n <Badge count={alerts.length} size=\"small\">\n <BugOutlined style={{ fontSize: 15 }} />\n </Badge>\n </div>\n <OverlayAlertsModal\n alerts={alerts}\n open={open}\n onClose={() => setOpen(false)}\n />\n </div>\n );\n};\n\nexport const OverlayAlertsWithButton = withServerAPI({\n api: SDK.ServerAPI.API.GetOverlayAlerts,\n Component: OverlayAlertsButton,\n responsePropName: 'alerts',\n fallbackComponent: () => null,\n});\n\nexport const OverlayAlertsWithTips = withServerAPI({\n api: SDK.ServerAPI.API.GetOverlayAlerts,\n Component: OverlayAlertsTips,\n responsePropName: 'alerts',\n fallbackComponent: () => null,\n});\n"],"names":["getOverlayAlertsMessage","alerts","warns","errors","item","suffixText","fontSize","Typography","Color","OverlayAlertsModal","open","onClose","Dialog","e","React","Row","Button","CloseCircleOutlined","Size","Col","Collapse","DownOutlined","RightOutlined","Tag","Ansi","OverlayAlertsTips","defaultOpen","setOpen","useState","Alert","BugOutlined","OverlayAlertsButton","styles","Badge","OverlayAlertsWithButton","withServerAPI","SDK","OverlayAlertsWithTips"],"mappings":"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"}
@@ -6,7 +6,7 @@ import { Summary } from "@rsdoctor/utils/common";
6
6
  import { TextDrawer } from "../TextDrawer/index.mjs";
7
7
  import { Card } from "../Card/index.mjs";
8
8
  import { CommonExecutionEmptyTips, CommonExecutionsChart } from "./common.mjs";
9
- import { WebpackPluginsDataTable } from "../Plugins/webpack.mjs";
9
+ import { PluginsDataTable } from "../Plugins/plugins.mjs";
10
10
  import { ServerAPIProvider } from "../Manifest/index.mjs";
11
11
  import "./loader.css";
12
12
  import "./tooltips.css";
@@ -50,7 +50,7 @@ const DoneChartContainer = ({ summary })=>{
50
50
  /*#__PURE__*/ jsx(Card, {
51
51
  title: `Plugin DataSource of ${suffix}`,
52
52
  collapsable: true,
53
- children: /*#__PURE__*/ jsx(WebpackPluginsDataTable, {
53
+ children: /*#__PURE__*/ jsx(PluginsDataTable, {
54
54
  dataSource: res
55
55
  })
56
56
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/done.mjs","sources":["../../../src/components/Charts/done.tsx"],"sourcesContent":["import React from 'react';\nimport { Divider, Space } from 'antd';\nimport { SDK } from '@rsdoctor/types';\nimport { Summary } from '@rsdoctor/utils/common';\nimport { TextDrawer } from '../TextDrawer';\nimport { Card } from '../Card';\nimport {\n CommonChartProps,\n CommonExecutionsChart,\n CommonExecutionEmptyTips,\n} from './common';\nimport { WebpackPluginsDataTable } from '../Plugins/webpack';\nimport { ServerAPIProvider } from '../Manifest';\n\nimport './loader.scss';\nimport './tooltips.scss';\nimport { ChartTypes } from './constants';\n\nexport const DoneChartContainer: React.FC<CommonChartProps> = ({\n summary,\n}): JSX.Element | null => {\n const { costs = [] } = summary || {};\n const target = costs.find(\n (e) => e.name === Summary.SummaryCostsDataName.Done,\n );\n\n const hooks: Array<string> = [\n 'afterCompile',\n 'shouldEmit',\n 'emit',\n 'afterEmit',\n 'assetEmitted',\n 'done',\n ];\n\n const suffix = 'of the \"AfterCompile -> Done\" stage';\n\n if (!target) return null;\n\n return (\n <TextDrawer\n containerProps={{ style: { display: 'inline' } }}\n drawerProps={{ title: `Details ${suffix}` }}\n text={<Space>detail</Space>}\n >\n <ServerAPIProvider api={SDK.ServerAPI.API.GetPluginData} body={{ hooks }}>\n {(res) =>\n res && res.length ? (\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <Card title={`Plugin DataSource of ${suffix}`} collapsable>\n <WebpackPluginsDataTable dataSource={res} />\n </Card>\n <Divider />\n <Card title={`Chart ${suffix}`}>\n <CommonExecutionsChart plugins={res} type={ChartTypes.Done} />\n </Card>\n </Space>\n ) : (\n <CommonExecutionEmptyTips />\n )\n }\n </ServerAPIProvider>\n </TextDrawer>\n );\n};\n"],"names":["DoneChartContainer","summary","costs","target","e","Summary","hooks","suffix","TextDrawer","Space","ServerAPIProvider","SDK","res","Card","WebpackPluginsDataTable","Divider","CommonExecutionsChart","ChartTypes","CommonExecutionEmptyTips"],"mappings":";;;;;;;;;;;;;AAkBO,MAAMA,qBAAiD,CAAC,EAC7DC,OAAO,EACR;IACC,MAAM,EAAEC,QAAQ,EAAE,EAAE,GAAGD,WAAW,CAAC;IACnC,MAAME,SAASD,MAAM,IAAI,CACvB,CAACE,IAAMA,EAAE,IAAI,KAAKC,QAAQ,oBAAoB,CAAC,IAAI;IAGrD,MAAMC,QAAuB;QAC3B;QACA;QACA;QACA;QACA;QACA;KACD;IAED,MAAMC,SAAS;IAEf,IAAI,CAACJ,QAAQ,OAAO;IAEpB,OAAO,WAAP,GACE,IAACK,YAAUA;QACT,gBAAgB;YAAE,OAAO;gBAAE,SAAS;YAAS;QAAE;QAC/C,aAAa;YAAE,OAAO,CAAC,QAAQ,EAAED,QAAQ;QAAC;QAC1C,oBAAM,IAACE,OAAKA;sBAAC;;kBAEb,kBAACC,mBAAiBA;YAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa;YAAE,MAAM;gBAAEL;YAAM;sBACpE,CAACM,MACAA,OAAOA,IAAI,MAAM,GAAG,WAAH,GACf,KAACH,OAAKA;oBAAC,WAAU;oBAAW,OAAO;wBAAE,OAAO;oBAAO;;sCACjD,IAACI,MAAIA;4BAAC,OAAO,CAAC,qBAAqB,EAAEN,QAAQ;4BAAE,aAAW;sCACxD,kBAACO,yBAAuBA;gCAAC,YAAYF;;;sCAEvC,IAACG,SAAOA,CAAAA;sCACR,IAACF,MAAIA;4BAAC,OAAO,CAAC,MAAM,EAAEN,QAAQ;sCAC5B,kBAACS,uBAAqBA;gCAAC,SAASJ;gCAAK,MAAMK,WAAW,IAAI;;;;mCAI9D,IAACC,0BAAwBA,CAAAA;;;AAMrC"}
1
+ {"version":3,"file":"components/Charts/done.mjs","sources":["../../../src/components/Charts/done.tsx"],"sourcesContent":["import React from 'react';\nimport { Divider, Space } from 'antd';\nimport { SDK } from '@rsdoctor/types';\nimport { Summary } from '@rsdoctor/utils/common';\nimport { TextDrawer } from '../TextDrawer';\nimport { Card } from '../Card';\nimport {\n CommonChartProps,\n CommonExecutionsChart,\n CommonExecutionEmptyTips,\n} from './common';\nimport { PluginsDataTable } from '../Plugins/plugins';\nimport { ServerAPIProvider } from '../Manifest';\n\nimport './loader.scss';\nimport './tooltips.scss';\nimport { ChartTypes } from './constants';\n\nexport const DoneChartContainer: React.FC<CommonChartProps> = ({\n summary,\n}): React.JSX.Element | null => {\n const { costs = [] } = summary || {};\n const target = costs.find(\n (e) => e.name === Summary.SummaryCostsDataName.Done,\n );\n\n const hooks: Array<string> = [\n 'afterCompile',\n 'shouldEmit',\n 'emit',\n 'afterEmit',\n 'assetEmitted',\n 'done',\n ];\n\n const suffix = 'of the \"AfterCompile -> Done\" stage';\n\n if (!target) return null;\n\n return (\n <TextDrawer\n containerProps={{ style: { display: 'inline' } }}\n drawerProps={{ title: `Details ${suffix}` }}\n text={<Space>detail</Space>}\n >\n <ServerAPIProvider api={SDK.ServerAPI.API.GetPluginData} body={{ hooks }}>\n {(res) =>\n res && res.length ? (\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <Card title={`Plugin DataSource of ${suffix}`} collapsable>\n <PluginsDataTable dataSource={res} />\n </Card>\n <Divider />\n <Card title={`Chart ${suffix}`}>\n <CommonExecutionsChart plugins={res} type={ChartTypes.Done} />\n </Card>\n </Space>\n ) : (\n <CommonExecutionEmptyTips />\n )\n }\n </ServerAPIProvider>\n </TextDrawer>\n );\n};\n"],"names":["DoneChartContainer","summary","costs","target","e","Summary","hooks","suffix","TextDrawer","Space","ServerAPIProvider","SDK","res","Card","PluginsDataTable","Divider","CommonExecutionsChart","ChartTypes","CommonExecutionEmptyTips"],"mappings":";;;;;;;;;;;;;AAkBO,MAAMA,qBAAiD,CAAC,EAC7DC,OAAO,EACR;IACC,MAAM,EAAEC,QAAQ,EAAE,EAAE,GAAGD,WAAW,CAAC;IACnC,MAAME,SAASD,MAAM,IAAI,CACvB,CAACE,IAAMA,EAAE,IAAI,KAAKC,QAAQ,oBAAoB,CAAC,IAAI;IAGrD,MAAMC,QAAuB;QAC3B;QACA;QACA;QACA;QACA;QACA;KACD;IAED,MAAMC,SAAS;IAEf,IAAI,CAACJ,QAAQ,OAAO;IAEpB,OAAO,WAAP,GACE,IAACK,YAAUA;QACT,gBAAgB;YAAE,OAAO;gBAAE,SAAS;YAAS;QAAE;QAC/C,aAAa;YAAE,OAAO,CAAC,QAAQ,EAAED,QAAQ;QAAC;QAC1C,oBAAM,IAACE,OAAKA;sBAAC;;kBAEb,kBAACC,mBAAiBA;YAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa;YAAE,MAAM;gBAAEL;YAAM;sBACpE,CAACM,MACAA,OAAOA,IAAI,MAAM,GAAG,WAAH,GACf,KAACH,OAAKA;oBAAC,WAAU;oBAAW,OAAO;wBAAE,OAAO;oBAAO;;sCACjD,IAACI,MAAIA;4BAAC,OAAO,CAAC,qBAAqB,EAAEN,QAAQ;4BAAE,aAAW;sCACxD,kBAACO,kBAAgBA;gCAAC,YAAYF;;;sCAEhC,IAACG,SAAOA,CAAAA;sCACR,IAACF,MAAIA;4BAAC,OAAO,CAAC,MAAM,EAAEN,QAAQ;sCAC5B,kBAACS,uBAAqBA;gCAAC,SAASJ;gCAAK,MAAMK,WAAW,IAAI;;;;mCAI9D,IAACC,0BAAwBA,CAAAA;;;AAMrC"}
@@ -6,7 +6,7 @@ import { TextDrawer } from "../TextDrawer/index.mjs";
6
6
  import { Summary } from "@rsdoctor/utils/common";
7
7
  import { Card } from "../Card/index.mjs";
8
8
  import { ServerAPIProvider } from "../Manifest/index.mjs";
9
- import { WebpackPluginsDataTable } from "../Plugins/webpack.mjs";
9
+ import { PluginsDataTable } from "../Plugins/plugins.mjs";
10
10
  import { CommonExecutionEmptyTips, CommonExecutionsChart } from "./common.mjs";
11
11
  import { ChartTypes } from "./constants.mjs";
12
12
  import "./loader.css";
@@ -45,7 +45,7 @@ const MinifyChartContainer = ({ summary })=>{
45
45
  /*#__PURE__*/ jsx(Card, {
46
46
  title: 'Plugin DataSource of the "Minify"',
47
47
  collapsable: true,
48
- children: /*#__PURE__*/ jsx(WebpackPluginsDataTable, {
48
+ children: /*#__PURE__*/ jsx(PluginsDataTable, {
49
49
  dataSource: res
50
50
  })
51
51
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/minify.mjs","sources":["../../../src/components/Charts/minify.tsx"],"sourcesContent":["import { SDK } from '@rsdoctor/types';\nimport { Divider, Space } from 'antd';\nimport React from 'react';\nimport { TextDrawer } from '../TextDrawer';\nimport { Summary } from '@rsdoctor/utils/common';\nimport { Card } from '../Card';\nimport { ServerAPIProvider } from '../Manifest';\nimport { WebpackPluginsDataTable } from '../Plugins/webpack';\nimport {\n CommonChartProps,\n CommonExecutionEmptyTips,\n CommonExecutionsChart,\n} from './common';\nimport { ChartTypes } from './constants';\n\nimport './loader.scss';\nimport './tooltips.scss';\n\nexport const MinifyChartContainer: React.FC<CommonChartProps> = ({\n summary,\n}) => {\n const hooks: Array<string> = ['processAssets', 'optimizeChunkAssets'];\n const { costs = [] } = summary || {};\n const target = costs.find(\n (e) => e.name === Summary.SummaryCostsDataName.Minify,\n );\n\n if (!target) return null;\n return (\n <TextDrawer\n containerProps={{ style: { display: 'inline' } }}\n drawerProps={{ title: 'Details of the \"Minify\" stage' }}\n text={<Space>detail</Space>}\n >\n <ServerAPIProvider api={SDK.ServerAPI.API.GetPluginData} body={{ hooks }}>\n {(res) =>\n res && res.length ? (\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <Card title='Plugin DataSource of the \"Minify\"' collapsable>\n <WebpackPluginsDataTable dataSource={res} />\n </Card>\n <Divider />\n <Card title='Chart of the \"Minify\"'>\n <CommonExecutionsChart plugins={res} type={ChartTypes.Minify} />\n </Card>\n </Space>\n ) : (\n <CommonExecutionEmptyTips />\n )\n }\n </ServerAPIProvider>\n </TextDrawer>\n );\n};\n"],"names":["MinifyChartContainer","summary","hooks","costs","target","e","Summary","TextDrawer","Space","ServerAPIProvider","SDK","res","Card","WebpackPluginsDataTable","Divider","CommonExecutionsChart","ChartTypes","CommonExecutionEmptyTips"],"mappings":";;;;;;;;;;;;;AAkBO,MAAMA,uBAAmD,CAAC,EAC/DC,OAAO,EACR;IACC,MAAMC,QAAuB;QAAC;QAAiB;KAAsB;IACrE,MAAM,EAAEC,QAAQ,EAAE,EAAE,GAAGF,WAAW,CAAC;IACnC,MAAMG,SAASD,MAAM,IAAI,CACvB,CAACE,IAAMA,EAAE,IAAI,KAAKC,QAAQ,oBAAoB,CAAC,MAAM;IAGvD,IAAI,CAACF,QAAQ,OAAO;IACpB,OAAO,WAAP,GACE,IAACG,YAAUA;QACT,gBAAgB;YAAE,OAAO;gBAAE,SAAS;YAAS;QAAE;QAC/C,aAAa;YAAE,OAAO;QAAgC;QACtD,oBAAM,IAACC,OAAKA;sBAAC;;kBAEb,kBAACC,mBAAiBA;YAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa;YAAE,MAAM;gBAAER;YAAM;sBACpE,CAACS,MACAA,OAAOA,IAAI,MAAM,GAAG,WAAH,GACf,KAACH,OAAKA;oBAAC,WAAU;oBAAW,OAAO;wBAAE,OAAO;oBAAO;;sCACjD,IAACI,MAAIA;4BAAC,OAAM;4BAAoC,aAAW;sCACzD,kBAACC,yBAAuBA;gCAAC,YAAYF;;;sCAEvC,IAACG,SAAOA,CAAAA;sCACR,IAACF,MAAIA;4BAAC,OAAM;sCACV,kBAACG,uBAAqBA;gCAAC,SAASJ;gCAAK,MAAMK,WAAW,MAAM;;;;mCAIhE,IAACC,0BAAwBA,CAAAA;;;AAMrC"}
1
+ {"version":3,"file":"components/Charts/minify.mjs","sources":["../../../src/components/Charts/minify.tsx"],"sourcesContent":["import { SDK } from '@rsdoctor/types';\nimport { Divider, Space } from 'antd';\nimport React from 'react';\nimport { TextDrawer } from '../TextDrawer';\nimport { Summary } from '@rsdoctor/utils/common';\nimport { Card } from '../Card';\nimport { ServerAPIProvider } from '../Manifest';\nimport { PluginsDataTable } from '../Plugins/plugins';\nimport {\n CommonChartProps,\n CommonExecutionEmptyTips,\n CommonExecutionsChart,\n} from './common';\nimport { ChartTypes } from './constants';\n\nimport './loader.scss';\nimport './tooltips.scss';\n\nexport const MinifyChartContainer: React.FC<CommonChartProps> = ({\n summary,\n}) => {\n const hooks: Array<string> = ['processAssets', 'optimizeChunkAssets'];\n const { costs = [] } = summary || {};\n const target = costs.find(\n (e) => e.name === Summary.SummaryCostsDataName.Minify,\n );\n\n if (!target) return null;\n return (\n <TextDrawer\n containerProps={{ style: { display: 'inline' } }}\n drawerProps={{ title: 'Details of the \"Minify\" stage' }}\n text={<Space>detail</Space>}\n >\n <ServerAPIProvider api={SDK.ServerAPI.API.GetPluginData} body={{ hooks }}>\n {(res) =>\n res && res.length ? (\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <Card title='Plugin DataSource of the \"Minify\"' collapsable>\n <PluginsDataTable dataSource={res} />\n </Card>\n <Divider />\n <Card title='Chart of the \"Minify\"'>\n <CommonExecutionsChart plugins={res} type={ChartTypes.Minify} />\n </Card>\n </Space>\n ) : (\n <CommonExecutionEmptyTips />\n )\n }\n </ServerAPIProvider>\n </TextDrawer>\n );\n};\n"],"names":["MinifyChartContainer","summary","hooks","costs","target","e","Summary","TextDrawer","Space","ServerAPIProvider","SDK","res","Card","PluginsDataTable","Divider","CommonExecutionsChart","ChartTypes","CommonExecutionEmptyTips"],"mappings":";;;;;;;;;;;;;AAkBO,MAAMA,uBAAmD,CAAC,EAC/DC,OAAO,EACR;IACC,MAAMC,QAAuB;QAAC;QAAiB;KAAsB;IACrE,MAAM,EAAEC,QAAQ,EAAE,EAAE,GAAGF,WAAW,CAAC;IACnC,MAAMG,SAASD,MAAM,IAAI,CACvB,CAACE,IAAMA,EAAE,IAAI,KAAKC,QAAQ,oBAAoB,CAAC,MAAM;IAGvD,IAAI,CAACF,QAAQ,OAAO;IACpB,OAAO,WAAP,GACE,IAACG,YAAUA;QACT,gBAAgB;YAAE,OAAO;gBAAE,SAAS;YAAS;QAAE;QAC/C,aAAa;YAAE,OAAO;QAAgC;QACtD,oBAAM,IAACC,OAAKA;sBAAC;;kBAEb,kBAACC,mBAAiBA;YAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa;YAAE,MAAM;gBAAER;YAAM;sBACpE,CAACS,MACAA,OAAOA,IAAI,MAAM,GAAG,WAAH,GACf,KAACH,OAAKA;oBAAC,WAAU;oBAAW,OAAO;wBAAE,OAAO;oBAAO;;sCACjD,IAACI,MAAIA;4BAAC,OAAM;4BAAoC,aAAW;sCACzD,kBAACC,kBAAgBA;gCAAC,YAAYF;;;sCAEhC,IAACG,SAAOA,CAAAA;sCACR,IAACF,MAAIA;4BAAC,OAAM;sCACV,kBAACG,uBAAqBA;gCAAC,SAASJ;gCAAK,MAAMK,WAAW,MAAM;;;;mCAIhE,IAACC,0BAAwBA,CAAAA;;;AAMrC"}
@@ -5,9 +5,5 @@ interface WebpackConfigurationViewerBaseProps {
5
5
  configs: SDK.ConfigData;
6
6
  }
7
7
  export declare const WebpackConfigurationViewerBase: React.FC<WebpackConfigurationViewerBaseProps>;
8
- export declare const WebpackConfigurationViewer: React.FC<Omit<WebpackConfigurationViewerBaseProps, "configs"> & Partial<{
9
- body: {
10
- key: import("node_modules/@rsdoctor/types/dist/manifest").RsdoctorManifestMappingKeys;
11
- };
12
- }>>;
8
+ export declare const WebpackConfigurationViewer: React.FC<Omit<WebpackConfigurationViewerBaseProps, 'configs'>>;
13
9
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"components/Configuration/builder.mjs","sources":["../../../src/components/Configuration/builder.tsx"],"sourcesContent":["import { SDK } from '@rsdoctor/types';\nimport { Divider, Row, Select, Space, Typography } from 'antd';\nimport { RightOutlined } from '@ant-design/icons';\nimport React, { useState } from 'react';\nimport ReactJson from 'react-json-view';\nimport { useWebpackConfigurationByConfigs } from '../../utils';\nimport { withServerAPI } from '../Manifest';\nimport { TextDrawer } from '../TextDrawer';\nimport { Title } from '../Title';\n\nimport styles from './builder.module.scss';\nimport { Lodash } from '@rsdoctor/utils/common';\n\ninterface WebpackConfigurationViewerBaseProps {\n defaultKeys?: string[];\n configs: SDK.ConfigData;\n}\n\nexport const WebpackConfigurationViewerBase: React.FC<\n WebpackConfigurationViewerBaseProps\n> = ({ defaultKeys, configs }) => {\n const builderConfigData = useWebpackConfigurationByConfigs(configs || []);\n\n if (!builderConfigData) return null;\n\n const { config, version, name } = builderConfigData;\n const keys = Object.keys(config);\n const [selectKeys, setSelectKeys] = useState<string[]>(defaultKeys || keys);\n\n return (\n <TextDrawer\n text={\n <div className={styles.title}>\n <span style={{ marginRight: '8px', fontSize: '13px' }}>\n View Bundler Config\n </span>\n <RightOutlined style={{ fontSize: '10px' }} />\n </div>\n }\n >\n <Row>\n <Title text={`Bundler Config Viewer`} />\n <Divider />\n <Space>\n <Typography.Text>Properties: </Typography.Text>\n <Select\n dropdownStyle={{ zIndex: 999 }}\n mode=\"multiple\"\n allowClear\n value={selectKeys.length === keys.length ? [] : selectKeys}\n style={{ width: 350 }}\n popupMatchSelectWidth\n placeholder={'Show Selected Properties Only.'}\n onChange={(e) => {\n setSelectKeys(e);\n }}\n >\n {keys.map((e) => {\n return (\n <Select.Option key={e} label={e} value={e}>\n {e}\n </Select.Option>\n );\n })}\n </Select>\n </Space>\n <Divider />\n </Row>\n <ReactJson\n name={\n version && version !== 'unknown'\n ? `${name}@${version}`\n : `webpack.config`\n }\n theme=\"monokai\"\n src={\n selectKeys.length === 0\n ? config\n : Lodash.pick(config, selectKeys as (keyof typeof config)[])\n }\n displayDataTypes={false}\n displayObjectSize={false}\n style={{ overflowX: 'auto' }}\n />\n </TextDrawer>\n );\n};\n\nexport const WebpackConfigurationViewer = withServerAPI({\n Component: WebpackConfigurationViewerBase,\n api: SDK.ServerAPI.API.LoadDataByKey,\n responsePropName: 'configs',\n body: {\n key: 'configs',\n },\n showSkeleton: false,\n});\n"],"names":["WebpackConfigurationViewerBase","defaultKeys","configs","builderConfigData","useWebpackConfigurationByConfigs","config","version","name","keys","Object","selectKeys","setSelectKeys","useState","TextDrawer","styles","RightOutlined","Row","Title","Divider","Space","Typography","Select","e","ReactJson","Lodash","WebpackConfigurationViewer","withServerAPI","SDK"],"mappings":";;;;;;;;;;;;AAkBO,MAAMA,iCAET,CAAC,EAAEC,WAAW,EAAEC,OAAO,EAAE;IAC3B,MAAMC,oBAAoBC,iCAAiCF,WAAW,EAAE;IAExE,IAAI,CAACC,mBAAmB,OAAO;IAE/B,MAAM,EAAEE,MAAM,EAAEC,OAAO,EAAEC,IAAI,EAAE,GAAGJ;IAClC,MAAMK,OAAOC,OAAO,IAAI,CAACJ;IACzB,MAAM,CAACK,YAAYC,cAAc,GAAGC,SAAmBX,eAAeO;IAEtE,OAAO,WAAP,GACE,KAACK,YAAUA;QACT,oBACE,KAAC;YAAI,WAAWC,eAAAA,KAAY;;8BAC1B,IAAC;oBAAK,OAAO;wBAAE,aAAa;wBAAO,UAAU;oBAAO;8BAAG;;8BAGvD,IAACC,eAAaA;oBAAC,OAAO;wBAAE,UAAU;oBAAO;;;;;0BAI7C,KAACC,KAAGA;;kCACF,IAACC,OAAKA;wBAAC,MAAM;;kCACb,IAACC,SAAOA,CAAAA;kCACR,KAACC,OAAKA;;0CACJ,IAACC,WAAW,IAAI;0CAAC;;0CACjB,IAACC,QAAMA;gCACL,eAAe;oCAAE,QAAQ;gCAAI;gCAC7B,MAAK;gCACL,YAAU;gCACV,OAAOX,WAAW,MAAM,KAAKF,KAAK,MAAM,GAAG,EAAE,GAAGE;gCAChD,OAAO;oCAAE,OAAO;gCAAI;gCACpB,uBAAqB;gCACrB,aAAa;gCACb,UAAU,CAACY;oCACTX,cAAcW;gCAChB;0CAECd,KAAK,GAAG,CAAC,CAACc,IACF,WAAP,GACE,IAACD,OAAO,MAAM;wCAAS,OAAOC;wCAAG,OAAOA;kDACrCA;uCADiBA;;;;kCAO5B,IAACJ,SAAOA,CAAAA;;;0BAEV,IAACK,iBAASA;gBACR,MACEjB,WAAWA,AAAY,cAAZA,UACP,GAAGC,KAAK,CAAC,EAAED,SAAS,GACpB;gBAEN,OAAM;gBACN,KACEI,AAAsB,MAAtBA,WAAW,MAAM,GACbL,SACAmB,OAAO,IAAI,CAACnB,QAAQK;gBAE1B,kBAAkB;gBAClB,mBAAmB;gBACnB,OAAO;oBAAE,WAAW;gBAAO;;;;AAInC;AAEO,MAAMe,6BAA6BC,cAAc;IACtD,WAAW1B;IACX,KAAK2B,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa;IACpC,kBAAkB;IAClB,MAAM;QACJ,KAAK;IACP;IACA,cAAc;AAChB"}
1
+ {"version":3,"file":"components/Configuration/builder.mjs","sources":["../../../src/components/Configuration/builder.tsx"],"sourcesContent":["import { SDK } from '@rsdoctor/types';\nimport { Divider, Row, Select, Space, Typography } from 'antd';\nimport { RightOutlined } from '@ant-design/icons';\nimport React, { useState } from 'react';\nimport ReactJson from 'react-json-view';\nimport { useWebpackConfigurationByConfigs } from '../../utils';\nimport { withServerAPI } from '../Manifest';\nimport { TextDrawer } from '../TextDrawer';\nimport { Title } from '../Title';\n\nimport styles from './builder.module.scss';\nimport { Lodash } from '@rsdoctor/utils/common';\n\ninterface WebpackConfigurationViewerBaseProps {\n defaultKeys?: string[];\n configs: SDK.ConfigData;\n}\n\nexport const WebpackConfigurationViewerBase: React.FC<\n WebpackConfigurationViewerBaseProps\n> = ({ defaultKeys, configs }) => {\n const builderConfigData = useWebpackConfigurationByConfigs(configs || []);\n\n if (!builderConfigData) return null;\n\n const { config, version, name } = builderConfigData;\n const keys = Object.keys(config);\n const [selectKeys, setSelectKeys] = useState<string[]>(defaultKeys || keys);\n\n return (\n <TextDrawer\n text={\n <div className={styles.title}>\n <span style={{ marginRight: '8px', fontSize: '13px' }}>\n View Bundler Config\n </span>\n <RightOutlined style={{ fontSize: '10px' }} />\n </div>\n }\n >\n <Row>\n <Title text={`Bundler Config Viewer`} />\n <Divider />\n <Space>\n <Typography.Text>Properties: </Typography.Text>\n <Select\n dropdownStyle={{ zIndex: 999 }}\n mode=\"multiple\"\n allowClear\n value={selectKeys.length === keys.length ? [] : selectKeys}\n style={{ width: 350 }}\n popupMatchSelectWidth\n placeholder={'Show Selected Properties Only.'}\n onChange={(e) => {\n setSelectKeys(e);\n }}\n >\n {keys.map((e) => {\n return (\n <Select.Option key={e} label={e} value={e}>\n {e}\n </Select.Option>\n );\n })}\n </Select>\n </Space>\n <Divider />\n </Row>\n <ReactJson\n name={\n version && version !== 'unknown'\n ? `${name}@${version}`\n : `webpack.config`\n }\n theme=\"monokai\"\n src={\n selectKeys.length === 0\n ? config\n : Lodash.pick(config, selectKeys as (keyof typeof config)[])\n }\n displayDataTypes={false}\n displayObjectSize={false}\n style={{ overflowX: 'auto' }}\n />\n </TextDrawer>\n );\n};\n\nexport const WebpackConfigurationViewer: React.FC<\n Omit<WebpackConfigurationViewerBaseProps, 'configs'>\n> = withServerAPI({\n Component: WebpackConfigurationViewerBase,\n api: SDK.ServerAPI.API.LoadDataByKey,\n responsePropName: 'configs',\n body: {\n key: 'configs',\n },\n showSkeleton: false,\n});\n"],"names":["WebpackConfigurationViewerBase","defaultKeys","configs","builderConfigData","useWebpackConfigurationByConfigs","config","version","name","keys","Object","selectKeys","setSelectKeys","useState","TextDrawer","styles","RightOutlined","Row","Title","Divider","Space","Typography","Select","e","ReactJson","Lodash","WebpackConfigurationViewer","withServerAPI","SDK"],"mappings":";;;;;;;;;;;;AAkBO,MAAMA,iCAET,CAAC,EAAEC,WAAW,EAAEC,OAAO,EAAE;IAC3B,MAAMC,oBAAoBC,iCAAiCF,WAAW,EAAE;IAExE,IAAI,CAACC,mBAAmB,OAAO;IAE/B,MAAM,EAAEE,MAAM,EAAEC,OAAO,EAAEC,IAAI,EAAE,GAAGJ;IAClC,MAAMK,OAAOC,OAAO,IAAI,CAACJ;IACzB,MAAM,CAACK,YAAYC,cAAc,GAAGC,SAAmBX,eAAeO;IAEtE,OAAO,WAAP,GACE,KAACK,YAAUA;QACT,oBACE,KAAC;YAAI,WAAWC,eAAAA,KAAY;;8BAC1B,IAAC;oBAAK,OAAO;wBAAE,aAAa;wBAAO,UAAU;oBAAO;8BAAG;;8BAGvD,IAACC,eAAaA;oBAAC,OAAO;wBAAE,UAAU;oBAAO;;;;;0BAI7C,KAACC,KAAGA;;kCACF,IAACC,OAAKA;wBAAC,MAAM;;kCACb,IAACC,SAAOA,CAAAA;kCACR,KAACC,OAAKA;;0CACJ,IAACC,WAAW,IAAI;0CAAC;;0CACjB,IAACC,QAAMA;gCACL,eAAe;oCAAE,QAAQ;gCAAI;gCAC7B,MAAK;gCACL,YAAU;gCACV,OAAOX,WAAW,MAAM,KAAKF,KAAK,MAAM,GAAG,EAAE,GAAGE;gCAChD,OAAO;oCAAE,OAAO;gCAAI;gCACpB,uBAAqB;gCACrB,aAAa;gCACb,UAAU,CAACY;oCACTX,cAAcW;gCAChB;0CAECd,KAAK,GAAG,CAAC,CAACc,IACF,WAAP,GACE,IAACD,OAAO,MAAM;wCAAS,OAAOC;wCAAG,OAAOA;kDACrCA;uCADiBA;;;;kCAO5B,IAACJ,SAAOA,CAAAA;;;0BAEV,IAACK,iBAASA;gBACR,MACEjB,WAAWA,AAAY,cAAZA,UACP,GAAGC,KAAK,CAAC,EAAED,SAAS,GACpB;gBAEN,OAAM;gBACN,KACEI,AAAsB,MAAtBA,WAAW,MAAM,GACbL,SACAmB,OAAO,IAAI,CAACnB,QAAQK;gBAE1B,kBAAkB;gBAClB,mBAAmB;gBACnB,OAAO;oBAAE,WAAW;gBAAO;;;;AAInC;AAEO,MAAMe,6BAETC,cAAc;IAChB,WAAW1B;IACX,KAAK2B,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa;IACpC,kBAAkB;IAClB,MAAM;QACJ,KAAK;IACP;IACA,cAAc;AAChB"}
@@ -1,5 +1,5 @@
1
1
  import { PropsWithChildren } from 'react';
2
2
  export interface LayoutProps {
3
- children: JSX.Element;
3
+ children: React.JSX.Element;
4
4
  }
5
- export declare const Layout: (props: PropsWithChildren<LayoutProps>) => JSX.Element;
5
+ export declare const Layout: (props: PropsWithChildren<LayoutProps>) => React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"components/Layout/index.mjs","sources":["../../../src/components/Layout/index.tsx"],"sourcesContent":["import { PropsWithChildren, useContext, useEffect, useState } from 'react';\nimport { FloatButton, Layout as L } from 'antd';\nimport { Language, MAIN_BG, Size } from '../../constants';\nimport { Header } from './header';\nimport {\n useLocale,\n useI18n,\n getFirstVisitFromStorage,\n setFirstVisitToStorage,\n getLanguage,\n useUrlQuery,\n getEnableRoutesFromUrlQuery,\n} from '../../utils';\nimport { Progress } from './progress';\nimport { ConfigContext } from '../../config';\nimport { SDK } from '@rsdoctor/types';\nimport { ServerAPIProvider } from '../Manifest';\nimport { ProjectInfoContext } from './project-info-context';\n\nexport interface LayoutProps {\n children: JSX.Element;\n}\n\nconst TitleUpdater: React.FC<{\n name?: string;\n}> = ({ name }) => {\n useEffect(() => {\n if (name) {\n document.title = `Rsdoctor - ${name}`;\n } else {\n document.title = 'Rsdoctor';\n }\n }, [name]);\n\n return null;\n};\n\nexport const Layout = (props: PropsWithChildren<LayoutProps>): JSX.Element => {\n const locale = useLocale();\n const { i18n } = useI18n();\n const { children } = props;\n const query = useUrlQuery();\n const [enableRoutes, setEnableRoutes] = useState<string[] | undefined>(\n () => getEnableRoutesFromUrlQuery() || undefined,\n );\n\n useEffect(() => {\n let currentLocale = locale;\n // Check if the user is visiting the site for the first time\n const visited = getFirstVisitFromStorage();\n if (!visited) {\n setFirstVisitToStorage('1');\n const targetLang = window.navigator.language.split('-')[0];\n const userLang = getLanguage(targetLang);\n\n if (Object.values(Language).includes(userLang)) {\n currentLocale = userLang;\n }\n }\n\n if (i18n.language !== currentLocale) {\n i18n.changeLanguage(currentLocale);\n }\n }, [locale]);\n\n // Listen for enableRoutes changes in URL query parameters\n useEffect(() => {\n const newEnableRoutes = getEnableRoutesFromUrlQuery();\n setEnableRoutes(newEnableRoutes || undefined);\n }, [query]);\n\n const ctx = useContext(ConfigContext);\n\n return (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetProjectInfo}\n showSkeleton={false}\n >\n {(project) => (\n <ProjectInfoContext.Provider value={{ project }}>\n <L>\n <TitleUpdater name={project?.name} />\n {!ctx.embedded ? <Header enableRoutes={enableRoutes} /> : null}\n <Progress />\n <L.Content\n style={{\n height: '100%',\n minHeight: '100vh',\n padding: Size.BasePadding,\n marginTop: !ctx.embedded ? Size.NavBarHeight : 0,\n background: MAIN_BG,\n }}\n >\n {children}\n <FloatButton.BackTop />\n </L.Content>\n </L>\n </ProjectInfoContext.Provider>\n )}\n </ServerAPIProvider>\n );\n};\n"],"names":["TitleUpdater","name","useEffect","document","Layout","props","locale","useLocale","i18n","useI18n","children","query","useUrlQuery","enableRoutes","setEnableRoutes","useState","getEnableRoutesFromUrlQuery","undefined","currentLocale","visited","getFirstVisitFromStorage","setFirstVisitToStorage","targetLang","window","userLang","getLanguage","Object","Language","newEnableRoutes","ctx","useContext","ConfigContext","ServerAPIProvider","SDK","project","ProjectInfoContext","L","Header","Progress","Size","MAIN_BG","FloatButton"],"mappings":";;;;;;;;;;;AAuBA,MAAMA,eAED,CAAC,EAAEC,IAAI,EAAE;IACZC,UAAU;QACR,IAAID,MACFE,SAAS,KAAK,GAAG,CAAC,WAAW,EAAEF,MAAM;aAErCE,SAAS,KAAK,GAAG;IAErB,GAAG;QAACF;KAAK;IAET,OAAO;AACT;AAEO,MAAMG,gBAAS,CAACC;IACrB,MAAMC,SAASC;IACf,MAAM,EAAEC,IAAI,EAAE,GAAGC;IACjB,MAAM,EAAEC,QAAQ,EAAE,GAAGL;IACrB,MAAMM,QAAQC;IACd,MAAM,CAACC,cAAcC,gBAAgB,GAAGC,SACtC,IAAMC,iCAAiCC;IAGzCf,UAAU;QACR,IAAIgB,gBAAgBZ;QAEpB,MAAMa,UAAUC;QAChB,IAAI,CAACD,SAAS;YACZE,uBAAuB;YACvB,MAAMC,aAAaC,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAC1D,MAAMC,WAAWC,YAAYH;YAE7B,IAAII,OAAO,MAAM,CAACC,UAAU,QAAQ,CAACH,WACnCN,gBAAgBM;QAEpB;QAEA,IAAIhB,KAAK,QAAQ,KAAKU,eACpBV,KAAK,cAAc,CAACU;IAExB,GAAG;QAACZ;KAAO;IAGXJ,UAAU;QACR,MAAM0B,kBAAkBZ;QACxBF,gBAAgBc,mBAAmBX;IACrC,GAAG;QAACN;KAAM;IAEV,MAAMkB,MAAMC,WAAWC;IAEvB,OAAO,WAAP,GACE,IAACC,mBAAiBA;QAChB,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,cAAc;QACrC,cAAc;kBAEb,CAACC,UAAAA,WAAAA,GACA,IAACC,mBAAmB,QAAQ;gBAAC,OAAO;oBAAED;gBAAQ;0BAC5C,mBAACE,QAACA;;sCACA,IAACpC,cAAYA;4BAAC,MAAMkC,SAAS;;wBAC3BL,IAAI,QAAQ,GAA4C,OAAzC,WAAH,GAAG,IAACQ,QAAMA;4BAAC,cAAcxB;;sCACvC,IAACyB,UAAQA,CAAAA;sCACT,KAACF,OAAAA,OAAS;4BACR,OAAO;gCACL,QAAQ;gCACR,WAAW;gCACX,SAASG,KAAK,WAAW;gCACzB,WAAW,AAACV,IAAI,QAAQ,GAAuB,IAApBU,KAAK,YAAY;gCAC5C,YAAYC;4BACd;;gCAEC9B;8CACD,IAAC+B,YAAY,OAAO;;;;;;;AAOlC"}
1
+ {"version":3,"file":"components/Layout/index.mjs","sources":["../../../src/components/Layout/index.tsx"],"sourcesContent":["import { PropsWithChildren, useContext, useEffect, useState } from 'react';\nimport { FloatButton, Layout as L } from 'antd';\nimport { Language, MAIN_BG, Size } from '../../constants';\nimport { Header } from './header';\nimport {\n useLocale,\n useI18n,\n getFirstVisitFromStorage,\n setFirstVisitToStorage,\n getLanguage,\n useUrlQuery,\n getEnableRoutesFromUrlQuery,\n} from '../../utils';\nimport { Progress } from './progress';\nimport { ConfigContext } from '../../config';\nimport { SDK } from '@rsdoctor/types';\nimport { ServerAPIProvider } from '../Manifest';\nimport { ProjectInfoContext } from './project-info-context';\n\nexport interface LayoutProps {\n children: React.JSX.Element;\n}\n\nconst TitleUpdater: React.FC<{\n name?: string;\n}> = ({ name }) => {\n useEffect(() => {\n if (name) {\n document.title = `Rsdoctor - ${name}`;\n } else {\n document.title = 'Rsdoctor';\n }\n }, [name]);\n\n return null;\n};\n\nexport const Layout = (\n props: PropsWithChildren<LayoutProps>,\n): React.JSX.Element => {\n const locale = useLocale();\n const { i18n } = useI18n();\n const { children } = props;\n const query = useUrlQuery();\n const [enableRoutes, setEnableRoutes] = useState<string[] | undefined>(\n () => getEnableRoutesFromUrlQuery() || undefined,\n );\n\n useEffect(() => {\n let currentLocale = locale;\n // Check if the user is visiting the site for the first time\n const visited = getFirstVisitFromStorage();\n if (!visited) {\n setFirstVisitToStorage('1');\n const targetLang = window.navigator.language.split('-')[0];\n const userLang = getLanguage(targetLang);\n\n if (Object.values(Language).includes(userLang)) {\n currentLocale = userLang;\n }\n }\n\n if (i18n.language !== currentLocale) {\n i18n.changeLanguage(currentLocale);\n }\n }, [locale]);\n\n // Listen for enableRoutes changes in URL query parameters\n useEffect(() => {\n const newEnableRoutes = getEnableRoutesFromUrlQuery();\n setEnableRoutes(newEnableRoutes || undefined);\n }, [query]);\n\n const ctx = useContext(ConfigContext);\n\n return (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetProjectInfo}\n showSkeleton={false}\n >\n {(project) => (\n <ProjectInfoContext.Provider value={{ project }}>\n <L>\n <TitleUpdater name={project?.name} />\n {!ctx.embedded ? <Header enableRoutes={enableRoutes} /> : null}\n <Progress />\n <L.Content\n style={{\n height: '100%',\n minHeight: '100vh',\n padding: Size.BasePadding,\n marginTop: !ctx.embedded ? Size.NavBarHeight : 0,\n background: MAIN_BG,\n }}\n >\n {children}\n <FloatButton.BackTop />\n </L.Content>\n </L>\n </ProjectInfoContext.Provider>\n )}\n </ServerAPIProvider>\n );\n};\n"],"names":["TitleUpdater","name","useEffect","document","Layout","props","locale","useLocale","i18n","useI18n","children","query","useUrlQuery","enableRoutes","setEnableRoutes","useState","getEnableRoutesFromUrlQuery","undefined","currentLocale","visited","getFirstVisitFromStorage","setFirstVisitToStorage","targetLang","window","userLang","getLanguage","Object","Language","newEnableRoutes","ctx","useContext","ConfigContext","ServerAPIProvider","SDK","project","ProjectInfoContext","L","Header","Progress","Size","MAIN_BG","FloatButton"],"mappings":";;;;;;;;;;;AAuBA,MAAMA,eAED,CAAC,EAAEC,IAAI,EAAE;IACZC,UAAU;QACR,IAAID,MACFE,SAAS,KAAK,GAAG,CAAC,WAAW,EAAEF,MAAM;aAErCE,SAAS,KAAK,GAAG;IAErB,GAAG;QAACF;KAAK;IAET,OAAO;AACT;AAEO,MAAMG,gBAAS,CACpBC;IAEA,MAAMC,SAASC;IACf,MAAM,EAAEC,IAAI,EAAE,GAAGC;IACjB,MAAM,EAAEC,QAAQ,EAAE,GAAGL;IACrB,MAAMM,QAAQC;IACd,MAAM,CAACC,cAAcC,gBAAgB,GAAGC,SACtC,IAAMC,iCAAiCC;IAGzCf,UAAU;QACR,IAAIgB,gBAAgBZ;QAEpB,MAAMa,UAAUC;QAChB,IAAI,CAACD,SAAS;YACZE,uBAAuB;YACvB,MAAMC,aAAaC,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAC1D,MAAMC,WAAWC,YAAYH;YAE7B,IAAII,OAAO,MAAM,CAACC,UAAU,QAAQ,CAACH,WACnCN,gBAAgBM;QAEpB;QAEA,IAAIhB,KAAK,QAAQ,KAAKU,eACpBV,KAAK,cAAc,CAACU;IAExB,GAAG;QAACZ;KAAO;IAGXJ,UAAU;QACR,MAAM0B,kBAAkBZ;QACxBF,gBAAgBc,mBAAmBX;IACrC,GAAG;QAACN;KAAM;IAEV,MAAMkB,MAAMC,WAAWC;IAEvB,OAAO,WAAP,GACE,IAACC,mBAAiBA;QAChB,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,cAAc;QACrC,cAAc;kBAEb,CAACC,UAAAA,WAAAA,GACA,IAACC,mBAAmB,QAAQ;gBAAC,OAAO;oBAAED;gBAAQ;0BAC5C,mBAACE,QAACA;;sCACA,IAACpC,cAAYA;4BAAC,MAAMkC,SAAS;;wBAC3BL,IAAI,QAAQ,GAA4C,OAAzC,WAAH,GAAG,IAACQ,QAAMA;4BAAC,cAAcxB;;sCACvC,IAACyB,UAAQA,CAAAA;sCACT,KAACF,OAAAA,OAAS;4BACR,OAAO;gCACL,QAAQ;gCACR,WAAW;gCACX,SAASG,KAAK,WAAW;gCACzB,WAAW,AAACV,IAAI,QAAQ,GAAuB,IAApBU,KAAK,YAAY;gCAC5C,YAAYC;4BACd;;gCAEC9B;8CACD,IAAC+B,YAAY,OAAO;;;;;;;AAOlC"}
@@ -19,7 +19,7 @@ import * as __rspack_external__pages_Overall_constants_mjs_39667e8e from "../../
19
19
  const BuilderSwitchName = 'builder-switcher';
20
20
  const defaultInActive = {
21
21
  overall: /*#__PURE__*/ jsx(overall_inactive, {}),
22
- webpack: /*#__PURE__*/ jsx(compile_analysis_inactive, {}),
22
+ compile: /*#__PURE__*/ jsx(compile_analysis_inactive, {}),
23
23
  bundle: /*#__PURE__*/ jsx(bundle_size_inactive, {})
24
24
  };
25
25
  const MenusBase = (props)=>{
@@ -31,9 +31,9 @@ const MenusBase = (props)=>{
31
31
  const urlEnableRoutes = getEnableRoutesFromUrlQuery();
32
32
  const enableRoutes = apiRoutes && apiRoutes.length > 0 ? apiRoutes : urlEnableRoutes || [];
33
33
  useEffect(()=>{
34
- if (pathname.includes('webpack')) setNavIcon({
34
+ if (pathname.includes('loaders') || pathname.includes('plugins') || pathname.includes('/module/resolve')) setNavIcon({
35
35
  ...defaultInActive,
36
- webpack: /*#__PURE__*/ jsx(compile_analysis_active, {})
36
+ compile: /*#__PURE__*/ jsx(compile_analysis_active, {})
37
37
  });
38
38
  else if (pathname.includes('overall') || '/' === pathname) setNavIcon({
39
39
  ...defaultInActive,
@@ -62,16 +62,16 @@ const MenusBase = (props)=>{
62
62
  if (hasCompile(enableRoutes)) items.push({
63
63
  label: t(CompileName),
64
64
  key: CompileName,
65
- icon: navIcon.webpack,
65
+ icon: navIcon.compile,
66
66
  children: [
67
- enableRoutes.includes(Manifest.RsdoctorManifestClientRoutes.WebpackLoaders) && {
67
+ enableRoutes.includes(Manifest.RsdoctorManifestClientRoutes.Loaders) && {
68
68
  label: t(LoaderTimeline.name),
69
69
  key: LoaderTimeline.route,
70
70
  icon: /*#__PURE__*/ jsx(BoxPlotFilled, {
71
71
  style: iconStyle
72
72
  })
73
73
  },
74
- enableRoutes.includes(Manifest.RsdoctorManifestClientRoutes.WebpackLoaders) && {
74
+ enableRoutes.includes(Manifest.RsdoctorManifestClientRoutes.Loaders) && {
75
75
  label: t(LoaderFiles.name),
76
76
  key: LoaderFiles.route,
77
77
  icon: /*#__PURE__*/ jsx(FundFilled, {
@@ -85,7 +85,7 @@ const MenusBase = (props)=>{
85
85
  style: iconStyle
86
86
  })
87
87
  },
88
- enableRoutes.includes(Manifest.RsdoctorManifestClientRoutes.WebpackPlugins) && {
88
+ enableRoutes.includes(Manifest.RsdoctorManifestClientRoutes.Plugins) && {
89
89
  label: t(PluginsAnalyze.name),
90
90
  key: PluginsAnalyze.route,
91
91
  icon: /*#__PURE__*/ jsx(ApiFilled, {
@@ -1 +1 @@
1
- {"version":3,"file":"components/Layout/menus.mjs","sources":["../../../src/components/Layout/menus.tsx"],"sourcesContent":["import {\n BoxPlotFilled,\n MenuOutlined,\n FundFilled,\n ApiFilled,\n NodeIndexOutlined,\n} from '@ant-design/icons';\nimport { Manifest, SDK } from '@rsdoctor/types';\nimport { Menu, MenuProps } from 'antd';\nimport React, { useEffect, useState } from 'react';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { Size } from '../../constants';\nimport * as OverallConstants from '../../pages/Overall/constants';\nimport {\n useI18n,\n hasBundle,\n hasCompile,\n getEnableRoutesFromUrlQuery,\n} from '../../utils';\nimport { withServerAPI } from '../Manifest';\nimport OverallActive from 'src/common/svg/navbar/overall-active.svg';\nimport OverallInActive from 'src/common/svg/navbar/overall-inactive.svg';\nimport CompileAnalysisActive from 'src/common/svg/navbar/compile-analysis-active.svg';\nimport CompileAnalysisInActive from 'src/common/svg/navbar/compile-analysis-inactive.svg';\nimport BundleSizeActive from 'src/common/svg/navbar/bundle-size-active.svg';\nimport BundleSizeInActive from 'src/common/svg/navbar/bundle-size-inactive.svg';\nimport {\n BundleSize,\n LoaderFiles,\n PluginsAnalyze,\n ModuleResolve,\n LoaderTimeline,\n} from 'src/pages';\nimport { CompileName } from './constants';\n\nconst BuilderSwitchName = 'builder-switcher';\n\nconst defaultInActive = {\n overall: <OverallInActive />,\n webpack: <CompileAnalysisInActive />,\n bundle: <BundleSizeInActive />,\n};\nconst MenusBase: React.FC<{\n style?: React.CSSProperties;\n routes: Manifest.RsdoctorManifestClientRoutes[];\n}> = (props) => {\n const { t } = useI18n();\n const { pathname } = useLocation();\n const navigate = useNavigate();\n const [navIcon, setNavIcon] = useState(defaultInActive);\n const { routes: apiRoutes } = props;\n\n // Get enableRoutes from URL query as fallback\n const urlEnableRoutes = getEnableRoutesFromUrlQuery();\n const enableRoutes =\n apiRoutes && apiRoutes.length > 0\n ? apiRoutes\n : (urlEnableRoutes as Manifest.RsdoctorManifestClientRoutes[]) || [];\n\n useEffect(() => {\n if (pathname.includes('webpack')) {\n setNavIcon({\n ...defaultInActive,\n webpack: <CompileAnalysisActive />,\n });\n } else if (pathname.includes('overall') || pathname === '/') {\n setNavIcon({\n ...defaultInActive,\n overall: <OverallActive />,\n });\n } else if (pathname.includes('bundle')) {\n setNavIcon({\n ...defaultInActive,\n bundle: <BundleSizeActive />,\n });\n }\n }, [pathname]);\n\n const iconStyle: React.CSSProperties = {\n color: 'rgba(96, 102, 114)',\n };\n const items: MenuProps['items'] = [];\n\n if (enableRoutes.includes(Manifest.RsdoctorManifestClientRoutes.Overall)) {\n items.push({\n label: t(OverallConstants.name),\n key: OverallConstants.route,\n icon: navIcon.overall,\n children: [],\n onTitleClick(e) {\n navigate(e.key);\n },\n });\n }\n\n if (hasCompile(enableRoutes)) {\n items.push({\n label: t(CompileName),\n key: CompileName,\n icon: navIcon.webpack,\n children: [\n enableRoutes.includes(\n Manifest.RsdoctorManifestClientRoutes.WebpackLoaders,\n ) && {\n label: t(LoaderTimeline.name),\n key: LoaderTimeline.route,\n icon: <BoxPlotFilled style={iconStyle} />,\n },\n enableRoutes.includes(\n Manifest.RsdoctorManifestClientRoutes.WebpackLoaders,\n ) && {\n label: t(LoaderFiles.name),\n key: LoaderFiles.route,\n icon: <FundFilled style={iconStyle} />,\n },\n enableRoutes.includes(\n Manifest.RsdoctorManifestClientRoutes.ModuleResolve,\n ) && {\n label: t(ModuleResolve.name),\n key: ModuleResolve.route,\n icon: <NodeIndexOutlined style={iconStyle} />,\n },\n enableRoutes.includes(\n Manifest.RsdoctorManifestClientRoutes.WebpackPlugins,\n ) && {\n label: t(PluginsAnalyze.name),\n key: PluginsAnalyze.route,\n icon: <ApiFilled style={iconStyle} />,\n },\n ].filter((e) => Boolean(e)) as MenuProps['items'],\n });\n }\n\n if (hasBundle(enableRoutes)) {\n items.push({\n label: t(BundleSize.name),\n key: BundleSize.name,\n icon: navIcon.bundle,\n children: [],\n onTitleClick() {\n navigate(BundleSize.route);\n },\n });\n }\n\n const MenuComponent = (\n <Menu\n items={items}\n mode=\"horizontal\"\n key={enableRoutes.join('')}\n onClick={(e) => {\n if (!e.keyPath.includes(BuilderSwitchName)) {\n navigate(e.key);\n }\n }}\n disabledOverflow\n overflowedIndicator={<MenuOutlined />}\n style={{\n height: Size.NavBarHeight,\n lineHeight: `${Size.NavBarHeight}px`,\n minWidth: 0,\n justifyContent: 'flex-end',\n ...props.style,\n }}\n selectedKeys={[pathname === '/' ? OverallConstants.route : pathname]}\n />\n );\n\n return <div style={{ marginLeft: '30px' }}>{MenuComponent}</div>;\n};\n\nexport const Menus = withServerAPI({\n api: SDK.ServerAPI.API.GetClientRoutes,\n responsePropName: 'routes',\n Component: MenusBase,\n fallbackComponent: () => null,\n showSkeleton: false,\n});\n"],"names":["BuilderSwitchName","defaultInActive","OverallInActive","CompileAnalysisInActive","BundleSizeInActive","MenusBase","props","t","useI18n","pathname","useLocation","navigate","useNavigate","navIcon","setNavIcon","useState","apiRoutes","urlEnableRoutes","getEnableRoutesFromUrlQuery","enableRoutes","useEffect","CompileAnalysisActive","OverallActive","BundleSizeActive","iconStyle","items","Manifest","OverallConstants","e","hasCompile","CompileName","LoaderTimeline","BoxPlotFilled","LoaderFiles","FundFilled","ModuleResolve","NodeIndexOutlined","PluginsAnalyze","ApiFilled","Boolean","hasBundle","BundleSize","MenuComponent","Menu","MenuOutlined","Size","Menus","withServerAPI","SDK"],"mappings":"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"}
1
+ {"version":3,"file":"components/Layout/menus.mjs","sources":["../../../src/components/Layout/menus.tsx"],"sourcesContent":["import {\n BoxPlotFilled,\n MenuOutlined,\n FundFilled,\n ApiFilled,\n NodeIndexOutlined,\n} from '@ant-design/icons';\nimport { Manifest, SDK } from '@rsdoctor/types';\nimport { Menu, MenuProps } from 'antd';\nimport React, { useEffect, useState } from 'react';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { Size } from '../../constants';\nimport * as OverallConstants from '../../pages/Overall/constants';\nimport {\n useI18n,\n hasBundle,\n hasCompile,\n getEnableRoutesFromUrlQuery,\n} from '../../utils';\nimport { withServerAPI } from '../Manifest';\nimport OverallActive from 'src/common/svg/navbar/overall-active.svg';\nimport OverallInActive from 'src/common/svg/navbar/overall-inactive.svg';\nimport CompileAnalysisActive from 'src/common/svg/navbar/compile-analysis-active.svg';\nimport CompileAnalysisInActive from 'src/common/svg/navbar/compile-analysis-inactive.svg';\nimport BundleSizeActive from 'src/common/svg/navbar/bundle-size-active.svg';\nimport BundleSizeInActive from 'src/common/svg/navbar/bundle-size-inactive.svg';\nimport {\n BundleSize,\n LoaderFiles,\n PluginsAnalyze,\n ModuleResolve,\n LoaderTimeline,\n} from 'src/pages';\nimport { CompileName } from './constants';\n\nconst BuilderSwitchName = 'builder-switcher';\n\nconst defaultInActive = {\n overall: <OverallInActive />,\n compile: <CompileAnalysisInActive />,\n bundle: <BundleSizeInActive />,\n};\nconst MenusBase: React.FC<{\n style?: React.CSSProperties;\n routes: Manifest.RsdoctorManifestClientRoutes[];\n}> = (props) => {\n const { t } = useI18n();\n const { pathname } = useLocation();\n const navigate = useNavigate();\n const [navIcon, setNavIcon] = useState(defaultInActive);\n const { routes: apiRoutes } = props;\n\n // Get enableRoutes from URL query as fallback\n const urlEnableRoutes = getEnableRoutesFromUrlQuery();\n const enableRoutes =\n apiRoutes && apiRoutes.length > 0\n ? apiRoutes\n : (urlEnableRoutes as Manifest.RsdoctorManifestClientRoutes[]) || [];\n\n useEffect(() => {\n if (\n pathname.includes('loaders') ||\n pathname.includes('plugins') ||\n pathname.includes('/module/resolve')\n ) {\n setNavIcon({\n ...defaultInActive,\n compile: <CompileAnalysisActive />,\n });\n } else if (pathname.includes('overall') || pathname === '/') {\n setNavIcon({\n ...defaultInActive,\n overall: <OverallActive />,\n });\n } else if (pathname.includes('bundle')) {\n setNavIcon({\n ...defaultInActive,\n bundle: <BundleSizeActive />,\n });\n }\n }, [pathname]);\n\n const iconStyle: React.CSSProperties = {\n color: 'rgba(96, 102, 114)',\n };\n const items: MenuProps['items'] = [];\n\n if (enableRoutes.includes(Manifest.RsdoctorManifestClientRoutes.Overall)) {\n items.push({\n label: t(OverallConstants.name),\n key: OverallConstants.route,\n icon: navIcon.overall,\n children: [],\n onTitleClick(e) {\n navigate(e.key);\n },\n });\n }\n\n if (hasCompile(enableRoutes)) {\n items.push({\n label: t(CompileName),\n key: CompileName,\n icon: navIcon.compile,\n children: [\n enableRoutes.includes(\n Manifest.RsdoctorManifestClientRoutes.Loaders,\n ) && {\n label: t(LoaderTimeline.name),\n key: LoaderTimeline.route,\n icon: <BoxPlotFilled style={iconStyle} />,\n },\n enableRoutes.includes(\n Manifest.RsdoctorManifestClientRoutes.Loaders,\n ) && {\n label: t(LoaderFiles.name),\n key: LoaderFiles.route,\n icon: <FundFilled style={iconStyle} />,\n },\n enableRoutes.includes(\n Manifest.RsdoctorManifestClientRoutes.ModuleResolve,\n ) && {\n label: t(ModuleResolve.name),\n key: ModuleResolve.route,\n icon: <NodeIndexOutlined style={iconStyle} />,\n },\n enableRoutes.includes(\n Manifest.RsdoctorManifestClientRoutes.Plugins,\n ) && {\n label: t(PluginsAnalyze.name),\n key: PluginsAnalyze.route,\n icon: <ApiFilled style={iconStyle} />,\n },\n ].filter((e) => Boolean(e)) as MenuProps['items'],\n });\n }\n\n if (hasBundle(enableRoutes)) {\n items.push({\n label: t(BundleSize.name),\n key: BundleSize.name,\n icon: navIcon.bundle,\n children: [],\n onTitleClick() {\n navigate(BundleSize.route);\n },\n });\n }\n\n const MenuComponent = (\n <Menu\n items={items}\n mode=\"horizontal\"\n key={enableRoutes.join('')}\n onClick={(e) => {\n if (!e.keyPath.includes(BuilderSwitchName)) {\n navigate(e.key);\n }\n }}\n disabledOverflow\n overflowedIndicator={<MenuOutlined />}\n style={{\n height: Size.NavBarHeight,\n lineHeight: `${Size.NavBarHeight}px`,\n minWidth: 0,\n justifyContent: 'flex-end',\n ...props.style,\n }}\n selectedKeys={[pathname === '/' ? OverallConstants.route : pathname]}\n />\n );\n\n return <div style={{ marginLeft: '30px' }}>{MenuComponent}</div>;\n};\n\nexport const Menus = withServerAPI({\n api: SDK.ServerAPI.API.GetClientRoutes,\n responsePropName: 'routes',\n Component: MenusBase,\n fallbackComponent: () => null,\n showSkeleton: false,\n});\n"],"names":["BuilderSwitchName","defaultInActive","OverallInActive","CompileAnalysisInActive","BundleSizeInActive","MenusBase","props","t","useI18n","pathname","useLocation","navigate","useNavigate","navIcon","setNavIcon","useState","apiRoutes","urlEnableRoutes","getEnableRoutesFromUrlQuery","enableRoutes","useEffect","CompileAnalysisActive","OverallActive","BundleSizeActive","iconStyle","items","Manifest","OverallConstants","e","hasCompile","CompileName","LoaderTimeline","BoxPlotFilled","LoaderFiles","FundFilled","ModuleResolve","NodeIndexOutlined","PluginsAnalyze","ApiFilled","Boolean","hasBundle","BundleSize","MenuComponent","Menu","MenuOutlined","Size","Menus","withServerAPI","SDK"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"components/Loader/Analysis/files.mjs","sources":["../../../../src/components/Loader/Analysis/files.tsx"],"sourcesContent":["import { CloseCircleOutlined } from '@ant-design/icons';\nimport { SDK } from '@rsdoctor/types';\nimport {\n Card,\n Col,\n Divider,\n Drawer,\n List,\n Popover,\n Row,\n Space,\n Table,\n Tag,\n Tooltip,\n Typography,\n} from 'antd';\nimport { get } from 'es-toolkit/compat';\nimport React, { useMemo, useState } from 'react';\nimport { drawerWidth, Size } from '../../../constants';\nimport {\n createFileStructures,\n DataNode,\n filterLoader,\n formatCosts,\n mapFileKey,\n} from '../../../utils';\nimport { FileTree } from '../../FileTree';\nimport { Keyword } from '../../Keyword';\nimport { ServerAPIProvider } from '../../Manifest';\nimport { LoaderExecutions } from '../executions';\nimport styles from './style.module.scss';\n\nconst ADDITION_LOADER_NUMBER = 3;\n\nexport const LoaderFiles: React.FC<{\n filetree: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetLoaderFileTree>;\n cwd: string;\n loaders: string[];\n filename: string;\n layer?: string;\n}> = (props) => {\n const { cwd, filetree } = props;\n const [drawerVisible, setDrawerVisible] = useState(false);\n const [resourcePath, setResourcePath] = useState('');\n const [loaderIndex, setLoaderIndex] = useState(0);\n const [selectedNode, setSelectedNode] = useState<DataNode | null>(null);\n\n const maxHeight = 800;\n\n const filteredFiles = useMemo(\n () =>\n filetree.filter((e) =>\n e.loaders.some((l) =>\n filterLoader(\n e.path,\n l.loader,\n props.filename,\n props.loaders,\n e.layer,\n props?.layer,\n ),\n ),\n ),\n [props.filename, props.loaders, props.layer],\n );\n\n const inlinedResourcePathKey = '__RESOURCEPATH__';\n\n const files = useMemo(() => {\n return createFileStructures({\n files: filteredFiles.map((e) => e.path),\n cwd,\n fileTitle(file, basename) {\n const { loaders, layer } = filetree.find((e) => e.path === file)!;\n\n const additionalLoaders: (Pick<\n SDK.LoaderTransformData,\n 'path' | 'loader' | 'errors'\n > & { costs: number })[] = [];\n\n loaders.forEach(\n (l, i) => i > ADDITION_LOADER_NUMBER && additionalLoaders.push(l),\n );\n\n return (\n <div\n style={{\n wordBreak: 'break-all',\n display: 'flex',\n cursor: 'pointer',\n }}\n onClick={() => {\n setLoaderIndex(0);\n setResourcePath(file);\n setDrawerVisible(true);\n }}\n >\n <div className={styles.box}>\n <div className={styles.keywords}>\n <Keyword text={basename.replace(/\\[.*?\\]/g, '')} keyword={''} />\n </div>\n </div>\n <div className={styles.dividerDiv} style={{ flex: 1 }}>\n <Divider className={styles.divider} dashed />\n </div>\n\n {layer && (\n <Tag color=\"cyan\" bordered={false}>\n {layer}\n </Tag>\n )}\n <Space>\n {loaders.slice(0, ADDITION_LOADER_NUMBER).map((e, i) => {\n const isError = e.errors && e.errors.length;\n const key = `${file}_${e.loader}_${i}`;\n if (i <= ADDITION_LOADER_NUMBER) {\n return (\n <Tooltip title={e.path} key={key}>\n <Typography.Text\n className={styles.textBox}\n style={{ color: isError ? '#f50' : 'inherit' }}\n onClick={(ev) => {\n ev.stopPropagation();\n setResourcePath(file);\n setLoaderIndex(i);\n setDrawerVisible(true);\n }}\n >\n <Typography.Text className={styles.text} ellipsis>\n {e.loader.match(/([^/]+-loader)/g)?.[0] || e.loader}\n </Typography.Text>\n <Divider type=\"vertical\" />\n {isError ? (\n <CloseCircleOutlined />\n ) : (\n <Typography.Text className={styles.text}>\n {formatCosts(e.costs)}\n </Typography.Text>\n )}\n </Typography.Text>\n </Tooltip>\n );\n }\n })}\n {additionalLoaders?.length ? (\n <Popover\n content={\n <List\n dataSource={additionalLoaders}\n renderItem={(e, i) => {\n const isError = e.errors && e.errors.length;\n const key = `${file}_${e.loader}_${i + ADDITION_LOADER_NUMBER}`;\n\n return (\n <List.Item>\n <Tooltip title={e.path} key={key}>\n <div style={{ paddingBottom: 5 }}>\n <Typography.Text\n className={styles.textBox}\n style={{\n color: isError ? '#f50' : 'inherit',\n }}\n onClick={(ev) => {\n ev.stopPropagation();\n setResourcePath(file);\n setLoaderIndex(i);\n setDrawerVisible(true);\n }}\n >\n <Typography.Text\n className={styles.text}\n ellipsis\n >\n {e.loader.match(/([^/]+-loader)/g)?.[0] ||\n e.loader}\n </Typography.Text>\n <Divider type=\"vertical\" />\n <Typography.Text className={styles.text}>\n {formatCosts(e.costs)}\n </Typography.Text>\n </Typography.Text>\n </div>\n </Tooltip>\n </List.Item>\n );\n }}\n />\n }\n >\n <div className={styles.textBox}>\n <Typography.Text>···</Typography.Text>\n </div>\n </Popover>\n ) : (\n <></>\n )}\n </Space>\n </div>\n );\n },\n dirTitle(_dir, defaultTitle) {\n return (\n <div style={{ display: 'flex', cursor: 'pointer' }}>\n <Keyword text={defaultTitle} keyword={''} />\n </div>\n );\n },\n });\n }, [filteredFiles]);\n\n return (\n <Row style={{ width: '100%', marginLeft: 0 }} gutter={Size.BasePadding}>\n <Col span={24}>\n <Card\n title={\n <Space>\n <Typography.Text strong>Files</Typography.Text>\n <Typography.Text\n style={{\n fontSize: 12,\n fontWeight: 400,\n color: '#1C1F2399',\n opacity: 0.6,\n }}\n >\n Total Files: {filteredFiles.length}\n </Typography.Text>\n </Space>\n }\n bodyStyle={{\n overflow: 'auto',\n maxHeight,\n minHeight: '40rem',\n padding: 14,\n }}\n >\n <FileTree\n defaultExpandedKeys={mapFileKey(\n files,\n filteredFiles.length >= 100 ? 3 : 4,\n (node) => {\n const resourcePath: string = get(node, inlinedResourcePathKey)!;\n const isNodeModules =\n resourcePath.indexOf('/node_modules/') > -1;\n\n return !isNodeModules;\n },\n )}\n treeData={files}\n key={`${props.loaders.join('|')}_${props.filename}`}\n onSelect={(_e, info) => {\n if (!info.node.isLeaf) {\n setSelectedNode(info.node);\n }\n }}\n selectedKeys={selectedNode ? [selectedNode.key] : undefined}\n expandAction=\"click\"\n />\n <Drawer\n open={drawerVisible}\n onClose={() => setDrawerVisible(false)}\n maskClosable\n width={drawerWidth}\n zIndex={999}\n bodyStyle={{ padding: 0 }}\n >\n {drawerVisible ? (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetLoaderFileDetails}\n body={{ path: resourcePath }}\n >\n {(data) => (\n <LoaderExecutions data={data} cwd={cwd} index={loaderIndex} />\n )}\n </ServerAPIProvider>\n ) : null}\n </Drawer>\n </Card>\n </Col>\n\n <Drawer\n open={!!selectedNode}\n onClose={() => setSelectedNode(null)}\n maskClosable\n width={drawerWidth}\n zIndex={999}\n bodyStyle={{ padding: 0 }}\n >\n {selectedNode && (\n <Row>\n <Col span={24}>\n <Card\n title={\n <Tooltip\n title={React.cloneElement(\n selectedNode.title as React.ReactElement,\n { style: { color: '#fff' } },\n )}\n >\n <Typography.Text>\n {`Statistics of`}\n {selectedNode.title as React.ReactNode}\n </Typography.Text>\n </Tooltip>\n }\n >\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetLoaderFolderStatistics}\n body={{ folder: selectedNode[inlinedResourcePathKey] }}\n >\n {(tableData) => (\n <Table\n style={{\n width: '100%',\n maxHeight,\n height: '40rem',\n overflowY: 'scroll',\n wordBreak: 'break-all',\n }}\n pagination={false}\n bordered\n rowKey={(e) => e.loader}\n columns={[\n {\n title: 'Loader Name',\n dataIndex: 'loader',\n },\n {\n title: 'Files',\n dataIndex: 'files',\n },\n {\n title: 'Total Duration',\n dataIndex: 'costs',\n render: (v) => (\n <Typography.Text strong>\n {formatCosts(v)}\n </Typography.Text>\n ),\n sorter: (a, b) => a.costs - b.costs,\n defaultSortOrder: 'descend',\n sortDirections: ['descend', 'ascend'],\n },\n ]}\n dataSource={tableData!}\n />\n )}\n </ServerAPIProvider>\n </Card>\n </Col>\n </Row>\n )}\n </Drawer>\n </Row>\n );\n};\n"],"names":["ADDITION_LOADER_NUMBER","LoaderFiles","props","cwd","filetree","drawerVisible","setDrawerVisible","useState","resourcePath","setResourcePath","loaderIndex","setLoaderIndex","selectedNode","setSelectedNode","maxHeight","filteredFiles","useMemo","e","l","filterLoader","inlinedResourcePathKey","files","createFileStructures","file","basename","loaders","layer","additionalLoaders","i","styles","Keyword","Divider","Tag","Space","isError","key","Tooltip","Typography","ev","CloseCircleOutlined","formatCosts","Popover","List","_dir","defaultTitle","Row","Size","Col","Card","FileTree","mapFileKey","node","get","isNodeModules","_e","info","undefined","Drawer","drawerWidth","ServerAPIProvider","SDK","data","LoaderExecutions","React","tableData","Table","v","a","b"],"mappings":"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"}
1
+ {"version":3,"file":"components/Loader/Analysis/files.mjs","sources":["../../../../src/components/Loader/Analysis/files.tsx"],"sourcesContent":["import { CloseCircleOutlined } from '@ant-design/icons';\nimport { SDK } from '@rsdoctor/types';\nimport {\n Card,\n Col,\n Divider,\n Drawer,\n List,\n Popover,\n Row,\n Space,\n Table,\n Tag,\n Tooltip,\n Typography,\n} from 'antd';\nimport { get } from 'es-toolkit/compat';\nimport React, { useMemo, useState } from 'react';\nimport { drawerWidth, Size } from '../../../constants';\nimport {\n createFileStructures,\n DataNode,\n filterLoader,\n formatCosts,\n mapFileKey,\n} from '../../../utils';\nimport { FileTree } from '../../FileTree';\nimport { Keyword } from '../../Keyword';\nimport { ServerAPIProvider } from '../../Manifest';\nimport { LoaderExecutions } from '../executions';\nimport styles from './style.module.scss';\n\nconst ADDITION_LOADER_NUMBER = 3;\n\nexport const LoaderFiles: React.FC<{\n filetree: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetLoaderFileTree>;\n cwd: string;\n loaders: string[];\n filename: string;\n layer?: string;\n}> = (props) => {\n const { cwd, filetree } = props;\n const [drawerVisible, setDrawerVisible] = useState(false);\n const [resourcePath, setResourcePath] = useState('');\n const [loaderIndex, setLoaderIndex] = useState(0);\n const [selectedNode, setSelectedNode] = useState<DataNode | null>(null);\n\n const maxHeight = 800;\n\n const filteredFiles = useMemo(\n () =>\n filetree.filter((e) =>\n e.loaders.some((l) =>\n filterLoader(\n e.path,\n l.loader,\n props.filename,\n props.loaders,\n e.layer,\n props?.layer,\n ),\n ),\n ),\n [props.filename, props.loaders, props.layer],\n );\n\n const inlinedResourcePathKey = '__RESOURCEPATH__';\n\n const files = useMemo(() => {\n return createFileStructures({\n files: filteredFiles.map((e) => e.path),\n cwd,\n fileTitle(file, basename) {\n const { loaders, layer } = filetree.find((e) => e.path === file)!;\n\n const additionalLoaders: (Pick<\n SDK.LoaderTransformData,\n 'path' | 'loader' | 'errors'\n > & { costs: number })[] = [];\n\n loaders.forEach(\n (l, i) => i > ADDITION_LOADER_NUMBER && additionalLoaders.push(l),\n );\n\n return (\n <div\n style={{\n wordBreak: 'break-all',\n display: 'flex',\n cursor: 'pointer',\n }}\n onClick={() => {\n setLoaderIndex(0);\n setResourcePath(file);\n setDrawerVisible(true);\n }}\n >\n <div className={styles.box}>\n <div className={styles.keywords}>\n <Keyword text={basename.replace(/\\[.*?\\]/g, '')} keyword={''} />\n </div>\n </div>\n <div className={styles.dividerDiv} style={{ flex: 1 }}>\n <Divider className={styles.divider} dashed />\n </div>\n\n {layer && (\n <Tag color=\"cyan\" bordered={false}>\n {layer}\n </Tag>\n )}\n <Space>\n {loaders.slice(0, ADDITION_LOADER_NUMBER).map((e, i) => {\n const isError = e.errors && e.errors.length;\n const key = `${file}_${e.loader}_${i}`;\n if (i <= ADDITION_LOADER_NUMBER) {\n return (\n <Tooltip title={e.path} key={key}>\n <Typography.Text\n className={styles.textBox}\n style={{ color: isError ? '#f50' : 'inherit' }}\n onClick={(ev) => {\n ev.stopPropagation();\n setResourcePath(file);\n setLoaderIndex(i);\n setDrawerVisible(true);\n }}\n >\n <Typography.Text className={styles.text} ellipsis>\n {e.loader.match(/([^/]+-loader)/g)?.[0] || e.loader}\n </Typography.Text>\n <Divider type=\"vertical\" />\n {isError ? (\n <CloseCircleOutlined />\n ) : (\n <Typography.Text className={styles.text}>\n {formatCosts(e.costs)}\n </Typography.Text>\n )}\n </Typography.Text>\n </Tooltip>\n );\n }\n })}\n {additionalLoaders?.length ? (\n <Popover\n content={\n <List\n dataSource={additionalLoaders}\n renderItem={(e, i) => {\n const isError = e.errors && e.errors.length;\n const key = `${file}_${e.loader}_${i + ADDITION_LOADER_NUMBER}`;\n\n return (\n <List.Item>\n <Tooltip title={e.path} key={key}>\n <div style={{ paddingBottom: 5 }}>\n <Typography.Text\n className={styles.textBox}\n style={{\n color: isError ? '#f50' : 'inherit',\n }}\n onClick={(ev) => {\n ev.stopPropagation();\n setResourcePath(file);\n setLoaderIndex(i);\n setDrawerVisible(true);\n }}\n >\n <Typography.Text\n className={styles.text}\n ellipsis\n >\n {e.loader.match(/([^/]+-loader)/g)?.[0] ||\n e.loader}\n </Typography.Text>\n <Divider type=\"vertical\" />\n <Typography.Text className={styles.text}>\n {formatCosts(e.costs)}\n </Typography.Text>\n </Typography.Text>\n </div>\n </Tooltip>\n </List.Item>\n );\n }}\n />\n }\n >\n <div className={styles.textBox}>\n <Typography.Text>···</Typography.Text>\n </div>\n </Popover>\n ) : (\n <></>\n )}\n </Space>\n </div>\n );\n },\n dirTitle(_dir, defaultTitle) {\n return (\n <div style={{ display: 'flex', cursor: 'pointer' }}>\n <Keyword text={defaultTitle} keyword={''} />\n </div>\n );\n },\n });\n }, [filteredFiles]);\n\n return (\n <Row style={{ width: '100%', marginLeft: 0 }} gutter={Size.BasePadding}>\n <Col span={24}>\n <Card\n title={\n <Space>\n <Typography.Text strong>Files</Typography.Text>\n <Typography.Text\n style={{\n fontSize: 12,\n fontWeight: 400,\n color: '#1C1F2399',\n opacity: 0.6,\n }}\n >\n Total Files: {filteredFiles.length}\n </Typography.Text>\n </Space>\n }\n bodyStyle={{\n overflow: 'auto',\n maxHeight,\n minHeight: '40rem',\n padding: 14,\n }}\n >\n <FileTree\n defaultExpandedKeys={mapFileKey(\n files,\n filteredFiles.length >= 100 ? 3 : 4,\n (node) => {\n const resourcePath: string = get(node, inlinedResourcePathKey)!;\n const isNodeModules =\n resourcePath.indexOf('/node_modules/') > -1;\n\n return !isNodeModules;\n },\n )}\n treeData={files}\n key={`${props.loaders.join('|')}_${props.filename}`}\n onSelect={(_e, info) => {\n if (!info.node.isLeaf) {\n setSelectedNode(info.node);\n }\n }}\n selectedKeys={selectedNode ? [selectedNode.key] : undefined}\n expandAction=\"click\"\n />\n <Drawer\n open={drawerVisible}\n onClose={() => setDrawerVisible(false)}\n maskClosable\n width={drawerWidth}\n zIndex={999}\n bodyStyle={{ padding: 0 }}\n >\n {drawerVisible ? (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetLoaderFileDetails}\n body={{ path: resourcePath }}\n >\n {(data) => (\n <LoaderExecutions data={data} cwd={cwd} index={loaderIndex} />\n )}\n </ServerAPIProvider>\n ) : null}\n </Drawer>\n </Card>\n </Col>\n\n <Drawer\n open={!!selectedNode}\n onClose={() => setSelectedNode(null)}\n maskClosable\n width={drawerWidth}\n zIndex={999}\n bodyStyle={{ padding: 0 }}\n >\n {selectedNode && (\n <Row>\n <Col span={24}>\n <Card\n title={\n <Tooltip\n title={React.cloneElement(\n selectedNode.title as React.ReactElement<{\n style?: React.CSSProperties;\n }>,\n { style: { color: '#fff' } },\n )}\n >\n <Typography.Text>\n {`Statistics of`}\n {selectedNode.title as React.ReactNode}\n </Typography.Text>\n </Tooltip>\n }\n >\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetLoaderFolderStatistics}\n body={{ folder: selectedNode[inlinedResourcePathKey] }}\n >\n {(tableData) => (\n <Table\n style={{\n width: '100%',\n maxHeight,\n height: '40rem',\n overflowY: 'scroll',\n wordBreak: 'break-all',\n }}\n pagination={false}\n bordered\n rowKey={(e) => e.loader}\n columns={[\n {\n title: 'Loader Name',\n dataIndex: 'loader',\n },\n {\n title: 'Files',\n dataIndex: 'files',\n },\n {\n title: 'Total Duration',\n dataIndex: 'costs',\n render: (v) => (\n <Typography.Text strong>\n {formatCosts(v)}\n </Typography.Text>\n ),\n sorter: (a, b) => a.costs - b.costs,\n defaultSortOrder: 'descend',\n sortDirections: ['descend', 'ascend'],\n },\n ]}\n dataSource={tableData!}\n />\n )}\n </ServerAPIProvider>\n </Card>\n </Col>\n </Row>\n )}\n </Drawer>\n </Row>\n );\n};\n"],"names":["ADDITION_LOADER_NUMBER","LoaderFiles","props","cwd","filetree","drawerVisible","setDrawerVisible","useState","resourcePath","setResourcePath","loaderIndex","setLoaderIndex","selectedNode","setSelectedNode","maxHeight","filteredFiles","useMemo","e","l","filterLoader","inlinedResourcePathKey","files","createFileStructures","file","basename","loaders","layer","additionalLoaders","i","styles","Keyword","Divider","Tag","Space","isError","key","Tooltip","Typography","ev","CloseCircleOutlined","formatCosts","Popover","List","_dir","defaultTitle","Row","Size","Col","Card","FileTree","mapFileKey","node","get","isNodeModules","_e","info","undefined","Drawer","drawerWidth","ServerAPIProvider","SDK","data","LoaderExecutions","React","tableData","Table","v","a","b"],"mappings":"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"}
@@ -2,10 +2,4 @@ import React from 'react';
2
2
  export declare const LoaderAnalysisBase: React.FC<{
3
3
  cwd: string;
4
4
  }>;
5
- export declare const LoaderAnalysis: React.FC<Omit<{
6
- cwd: string;
7
- }, "cwd"> & Partial<{
8
- body: {
9
- key: import("node_modules/@rsdoctor/types/dist/manifest").RsdoctorManifestMappingKeys;
10
- };
11
- }>>;
5
+ export declare const LoaderAnalysis: React.FC;
@@ -1 +1 @@
1
- {"version":3,"file":"components/Loader/Analysis/index.mjs","sources":["../../../../src/components/Loader/Analysis/index.tsx"],"sourcesContent":["import { SDK } from '@rsdoctor/types';\nimport { ConfigProvider } from 'antd';\nimport React, { useState } from 'react';\nimport { ConfigContext } from 'src/config';\nimport { getLocale } from 'src/utils';\nimport { ServerAPIProvider, withServerAPI } from '../../Manifest';\nimport { ISelectLoaderProps, LoaderCommonSelect } from '../../Select';\nimport { LoaderFiles } from './files';\nimport styles from './style.module.scss';\n\nexport const LoaderAnalysisBase: React.FC<{\n cwd: string;\n}> = ({ cwd }) => {\n const [store, setStore] = useState({\n filename: '',\n loaders: [] as string[],\n layer: '',\n } as ISelectLoaderProps);\n\n return (\n <ConfigContext.Consumer>\n {(v) => {\n return (\n <ConfigProvider\n locale={getLocale(v.locale)}\n theme={{\n token: {\n padding: 16,\n fontSize: 14,\n },\n }}\n >\n <div className={styles.loaderAnalysis}>\n <ServerAPIProvider api={SDK.ServerAPI.API.GetLoaderNames}>\n {(loaderNames) => (\n <LoaderCommonSelect\n onChange={(e) => setStore(e)}\n loaderNames={loaderNames}\n />\n )}\n </ServerAPIProvider>\n <ServerAPIProvider api={SDK.ServerAPI.API.GetLoaderFileTree}>\n {(filetree) => (\n <LoaderFiles\n filename={store.filename}\n filetree={filetree}\n loaders={store.loaders}\n layer={store.layer}\n cwd={cwd}\n />\n )}\n </ServerAPIProvider>\n </div>\n </ConfigProvider>\n );\n }}\n </ConfigContext.Consumer>\n );\n};\n\nexport const LoaderAnalysis = withServerAPI({\n api: SDK.ServerAPI.API.LoadDataByKey,\n body: { key: 'root' },\n responsePropName: 'cwd',\n Component: LoaderAnalysisBase,\n});\n"],"names":["LoaderAnalysisBase","cwd","store","setStore","useState","ConfigContext","v","ConfigProvider","getLocale","styles","ServerAPIProvider","SDK","loaderNames","LoaderCommonSelect","e","filetree","LoaderFiles","LoaderAnalysis","withServerAPI"],"mappings":";;;;;;;;;;AAUO,MAAMA,qBAER,CAAC,EAAEC,GAAG,EAAE;IACX,MAAM,CAACC,OAAOC,SAAS,GAAGC,SAAS;QACjC,UAAU;QACV,SAAS,EAAE;QACX,OAAO;IACT;IAEA,OAAO,WAAP,GACE,IAACC,cAAc,QAAQ;kBACpB,CAACC,IACO,WAAP,GACE,IAACC,gBAAcA;gBACb,QAAQC,UAAUF,EAAE,MAAM;gBAC1B,OAAO;oBACL,OAAO;wBACL,SAAS;wBACT,UAAU;oBACZ;gBACF;0BAEA,mBAAC;oBAAI,WAAWG,aAAAA,cAAqB;;sCACnC,IAACC,mBAAiBA;4BAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,cAAc;sCACrD,CAACC,cAAAA,WAAAA,GACA,IAACC,oBAAkBA;oCACjB,UAAU,CAACC,IAAMX,SAASW;oCAC1B,aAAaF;;;sCAInB,IAACF,mBAAiBA;4BAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,iBAAiB;sCACxD,CAACI,WAAAA,WAAAA,GACA,IAACC,aAAWA;oCACV,UAAUd,MAAM,QAAQ;oCACxB,UAAUa;oCACV,SAASb,MAAM,OAAO;oCACtB,OAAOA,MAAM,KAAK;oCAClB,KAAKD;;;;;;;AAUzB;AAEO,MAAMgB,iBAAiBC,cAAc;IAC1C,KAAKP,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa;IACpC,MAAM;QAAE,KAAK;IAAO;IACpB,kBAAkB;IAClB,WAAWX;AACb"}
1
+ {"version":3,"file":"components/Loader/Analysis/index.mjs","sources":["../../../../src/components/Loader/Analysis/index.tsx"],"sourcesContent":["import { SDK } from '@rsdoctor/types';\nimport { ConfigProvider } from 'antd';\nimport React, { useState } from 'react';\nimport { ConfigContext } from 'src/config';\nimport { getLocale } from 'src/utils';\nimport { ServerAPIProvider, withServerAPI } from '../../Manifest';\nimport { ISelectLoaderProps, LoaderCommonSelect } from '../../Select';\nimport { LoaderFiles } from './files';\nimport styles from './style.module.scss';\n\nexport const LoaderAnalysisBase: React.FC<{\n cwd: string;\n}> = ({ cwd }) => {\n const [store, setStore] = useState({\n filename: '',\n loaders: [] as string[],\n layer: '',\n } as ISelectLoaderProps);\n\n return (\n <ConfigContext.Consumer>\n {(v) => {\n return (\n <ConfigProvider\n locale={getLocale(v.locale)}\n theme={{\n token: {\n padding: 16,\n fontSize: 14,\n },\n }}\n >\n <div className={styles.loaderAnalysis}>\n <ServerAPIProvider api={SDK.ServerAPI.API.GetLoaderNames}>\n {(loaderNames) => (\n <LoaderCommonSelect\n onChange={(e) => setStore(e)}\n loaderNames={loaderNames}\n />\n )}\n </ServerAPIProvider>\n <ServerAPIProvider api={SDK.ServerAPI.API.GetLoaderFileTree}>\n {(filetree) => (\n <LoaderFiles\n filename={store.filename}\n filetree={filetree}\n loaders={store.loaders}\n layer={store.layer}\n cwd={cwd}\n />\n )}\n </ServerAPIProvider>\n </div>\n </ConfigProvider>\n );\n }}\n </ConfigContext.Consumer>\n );\n};\n\nexport const LoaderAnalysis: React.FC = withServerAPI({\n api: SDK.ServerAPI.API.LoadDataByKey,\n body: { key: 'root' },\n responsePropName: 'cwd',\n Component: LoaderAnalysisBase,\n});\n"],"names":["LoaderAnalysisBase","cwd","store","setStore","useState","ConfigContext","v","ConfigProvider","getLocale","styles","ServerAPIProvider","SDK","loaderNames","LoaderCommonSelect","e","filetree","LoaderFiles","LoaderAnalysis","withServerAPI"],"mappings":";;;;;;;;;;AAUO,MAAMA,qBAER,CAAC,EAAEC,GAAG,EAAE;IACX,MAAM,CAACC,OAAOC,SAAS,GAAGC,SAAS;QACjC,UAAU;QACV,SAAS,EAAE;QACX,OAAO;IACT;IAEA,OAAO,WAAP,GACE,IAACC,cAAc,QAAQ;kBACpB,CAACC,IACO,WAAP,GACE,IAACC,gBAAcA;gBACb,QAAQC,UAAUF,EAAE,MAAM;gBAC1B,OAAO;oBACL,OAAO;wBACL,SAAS;wBACT,UAAU;oBACZ;gBACF;0BAEA,mBAAC;oBAAI,WAAWG,aAAAA,cAAqB;;sCACnC,IAACC,mBAAiBA;4BAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,cAAc;sCACrD,CAACC,cAAAA,WAAAA,GACA,IAACC,oBAAkBA;oCACjB,UAAU,CAACC,IAAMX,SAASW;oCAC1B,aAAaF;;;sCAInB,IAACF,mBAAiBA;4BAAC,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,iBAAiB;sCACxD,CAACI,WAAAA,WAAAA,GACA,IAACC,aAAWA;oCACV,UAAUd,MAAM,QAAQ;oCACxB,UAAUa;oCACV,SAASb,MAAM,OAAO;oCACtB,OAAOA,MAAM,KAAK;oCAClB,KAAKD;;;;;;;AAUzB;AAEO,MAAMgB,iBAA2BC,cAAc;IACpD,KAAKP,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa;IACpC,MAAM;QAAE,KAAK;IAAO;IACpB,kBAAkB;IAClB,WAAWX;AACb"}
@@ -5,5 +5,5 @@ interface LoaderExecutionsProps {
5
5
  data: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetLoaderFileDetails>;
6
6
  index?: number;
7
7
  }
8
- export declare const LoaderExecutions: ({ data, cwd, index, }: PropsWithChildren<LoaderExecutionsProps>) => JSX.Element;
8
+ export declare const LoaderExecutions: ({ data, cwd, index, }: PropsWithChildren<LoaderExecutionsProps>) => React.JSX.Element;
9
9
  export {};