@rsdoctor/components 1.5.3 → 1.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/imgs/connection-point.mjs +1 -1
- package/dist/common/imgs/rsdoctor-navbar.mjs +1 -1
- package/dist/common/imgs/webpack.mjs +1 -1
- package/dist/common/svg/bundle-size.mjs +1 -1
- package/dist/common/svg/cursor.mjs +1 -1
- package/dist/common/svg/error.mjs +1 -1
- package/dist/common/svg/file-css.mjs +1 -1
- package/dist/common/svg/file-html.mjs +1 -1
- package/dist/common/svg/file-image.mjs +1 -1
- package/dist/common/svg/file-js.mjs +1 -1
- package/dist/common/svg/file-unknown.mjs +1 -1
- package/dist/common/svg/file.mjs +1 -1
- package/dist/common/svg/files/css.mjs +1 -1
- package/dist/common/svg/files/html.mjs +1 -1
- package/dist/common/svg/files/image.mjs +1 -1
- package/dist/common/svg/files/js.mjs +1 -1
- package/dist/common/svg/files/unkown-file.mjs +1 -1
- package/dist/common/svg/loader/input.mjs +1 -1
- package/dist/common/svg/loader/output.mjs +1 -1
- package/dist/common/svg/loader/step.mjs +1 -1
- package/dist/common/svg/navbar/bundle-size-active.mjs +1 -1
- package/dist/common/svg/navbar/bundle-size-inactive.mjs +1 -1
- package/dist/common/svg/navbar/compile-analysis-active.mjs +1 -1
- package/dist/common/svg/navbar/compile-analysis-inactive.mjs +1 -1
- package/dist/common/svg/navbar/overall-active.mjs +1 -1
- package/dist/common/svg/navbar/overall-inactive.mjs +1 -1
- package/dist/common/svg/output.mjs +1 -1
- package/dist/common/svg/source-size.mjs +1 -1
- package/dist/common/svg/source.mjs +1 -1
- package/dist/common/svg/total-size.mjs +1 -1
- package/dist/common/svg/trae.mjs +1 -1
- package/dist/common/svg/version.mjs +1 -1
- package/dist/common/svg/vscode.mjs +1 -1
- package/dist/components/Alert/change.mjs.map +1 -1
- package/dist/components/Alert/ecma-version-check.mjs +1 -1
- package/dist/components/Alert/ecma-version-check.mjs.map +1 -1
- package/dist/components/Alert/ecma-version-check.module.mjs +1 -1
- package/dist/components/Alert/package-relation.module.mjs +1 -1
- package/dist/components/Alert/view.mjs.map +1 -1
- package/dist/components/Alerts/bundle-alert.mjs +37 -2
- package/dist/components/Alerts/bundle-alert.mjs.map +1 -1
- package/dist/components/Alerts/bundle-alert.module.mjs +1 -1
- package/dist/components/Alerts/collapse-cjs-require.d.ts +6 -0
- package/dist/components/Alerts/collapse-cjs-require.mjs +142 -0
- package/dist/components/Alerts/collapse-cjs-require.mjs.map +1 -0
- package/dist/components/Alerts/collapse-cross-chunks.mjs +2 -23
- package/dist/components/Alerts/collapse-cross-chunks.mjs.map +1 -1
- package/dist/components/Alerts/collapse-module-mixed-chunks.mjs +2 -23
- package/dist/components/Alerts/collapse-module-mixed-chunks.mjs.map +1 -1
- package/dist/components/Alerts/collapse-shared.d.ts +9 -0
- package/dist/components/Alerts/collapse-shared.mjs +90 -0
- package/dist/components/Alerts/collapse-shared.mjs.map +1 -0
- package/dist/components/Alerts/collapse-side-effects-only-imports.d.ts +6 -0
- package/dist/components/Alerts/collapse-side-effects-only-imports.mjs +131 -0
- package/dist/components/Alerts/collapse-side-effects-only-imports.mjs.map +1 -0
- package/dist/components/Alerts/collapse.mjs +2 -23
- package/dist/components/Alerts/collapse.mjs.map +1 -1
- package/dist/components/Alerts/collapse.module.mjs +1 -1
- package/dist/components/Alerts/list.module.mjs +1 -1
- package/dist/components/Alerts/overlay.mjs.map +1 -1
- package/dist/components/Alerts/overlay.module.mjs +1 -1
- package/dist/components/Card/diff.mjs.map +1 -1
- package/dist/components/Card/index.mjs +1 -1
- package/dist/components/Card/size.mjs +2 -2
- package/dist/components/Card/size.mjs.map +1 -1
- package/dist/components/Card/size.module.mjs +1 -1
- package/dist/components/Charts/TimelineCharts/index.mjs +1 -1
- package/dist/components/Charts/TimelineCharts/index.mjs.map +1 -1
- package/dist/components/Charts/TreeMap.mjs +1 -1
- package/dist/components/Charts/TreeMap.mjs.map +1 -1
- package/dist/components/Charts/constants.mjs +1 -1
- package/dist/components/Charts/loader.mjs +2 -2
- package/dist/components/Charts/loader.mjs.map +1 -1
- package/dist/components/Charts/treemap.module.mjs +1 -1
- package/dist/components/Configuration/builder.module.mjs +1 -1
- package/dist/components/FileTree/css.mjs +1 -1
- package/dist/components/FileTree/html.mjs +1 -1
- package/dist/components/FileTree/image.mjs +1 -1
- package/dist/components/FileTree/index.mjs +1 -1
- package/dist/components/FileTree/index.mjs.map +1 -1
- package/dist/components/FileTree/js.mjs +1 -1
- package/dist/components/FileTree/unkown-file.mjs +1 -1
- package/dist/components/Keyword/style.module.mjs +1 -1
- package/dist/components/Layout/bundle-size-icon.mjs +1 -1
- package/dist/components/Layout/compile-icon.mjs +1 -1
- package/dist/components/Layout/index.mjs.map +1 -1
- package/dist/components/Layout/overall-icon.mjs +1 -1
- package/dist/components/Layout/project-info-context.mjs.map +1 -1
- package/dist/components/Loader/Analysis/input.mjs +1 -1
- package/dist/components/Loader/Analysis/output.mjs +1 -1
- package/dist/components/Loader/Analysis/style.module.mjs +1 -1
- package/dist/components/Loader/executions.mjs.map +1 -1
- package/dist/components/Loader/step.mjs +1 -1
- package/dist/components/Manifest/api.mjs.map +1 -1
- package/dist/components/Overall/DataSummary.module.mjs +1 -1
- package/dist/components/Overall/bundle.mjs +1 -1
- package/dist/components/Overall/bundle.mjs.map +1 -1
- package/dist/components/Overall/bundle.module.mjs +1 -1
- package/dist/components/Overall/card.module.mjs +1 -1
- package/dist/components/Overall/compile.mjs.map +1 -1
- package/dist/components/Overall/compile.module.mjs +1 -1
- package/dist/components/Overall/help-center.module.mjs +1 -1
- package/dist/components/Overall/list.module.mjs +1 -1
- package/dist/components/Overall/overview.mjs +2 -1
- package/dist/components/Overall/overview.module.mjs +1 -1
- package/dist/components/Overall/project.module.mjs +1 -1
- package/dist/components/Resolver/analysis.mjs +2 -2
- package/dist/components/Resolver/analysis.mjs.map +1 -1
- package/dist/components/Select/index.mjs.map +1 -1
- package/dist/components/Status/failed.mjs.map +1 -1
- package/dist/components/TextDrawer/duplicate.mjs.map +1 -1
- package/dist/components/TextDrawer/index.mjs +1 -1
- package/dist/components/base/CodeViewer/index.mjs +2 -2
- package/dist/components/base/CodeViewer/index.mjs.map +1 -1
- package/dist/components/base/CodeViewer/index.module.mjs +1 -1
- package/dist/components/base/DiffViewer/index.mjs +2 -2
- package/dist/components/base/DiffViewer/index.mjs.map +1 -1
- package/dist/components/base/DiffViewer/index.module.mjs +1 -1
- package/dist/components/index.mjs +1 -2
- package/dist/config.mjs.map +1 -1
- package/dist/constants.mjs +1 -1
- package/dist/pages/BundleSize/components/asset.mjs +2 -2
- package/dist/pages/BundleSize/components/asset.mjs.map +1 -1
- package/dist/pages/BundleSize/components/card.module.mjs +1 -1
- package/dist/pages/BundleSize/components/cards.mjs +2 -2
- package/dist/pages/BundleSize/components/cards.mjs.map +1 -1
- package/dist/pages/BundleSize/components/index.mjs +1 -1
- package/dist/pages/BundleSize/components/index.mjs.map +1 -1
- package/dist/pages/BundleSize/components/index.module.mjs +1 -1
- package/dist/pages/BundleSize/components/search-modal.mjs +1 -1
- package/dist/pages/BundleSize/components/search-modal.mjs.map +1 -1
- package/dist/pages/BundleSize/config.mjs.map +1 -1
- package/dist/pages/BundleSize/constants.mjs +1 -1
- package/dist/pages/BundleSize/index.mjs +1 -1
- package/dist/pages/ModuleAnalyze/constants.mjs +1 -1
- package/dist/pages/ModuleAnalyze/dependency.mjs +1 -1
- package/dist/pages/ModuleResolve/index.mjs +1 -1
- package/dist/pages/Overall/index.mjs +1 -1
- package/dist/pages/Overall/index.module.mjs +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/assets.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/changes.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/modules.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/packages.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/constants.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/index.mjs +2 -2
- package/dist/pages/Resources/RuleIndex/index.mjs +1 -1
- package/dist/pages/TreeShaking/index.mjs +1 -1
- package/dist/pages/TreeShaking/open-tag.mjs +1 -1
- package/dist/pages/TreeShaking/table.mjs.map +1 -1
- package/dist/pages/Uploader/index.mjs +1 -1
- package/dist/pages/WebpackLoaders/Analysis/index.mjs +2 -2
- package/dist/pages/WebpackLoaders/Analysis/index.mjs.map +1 -1
- package/dist/pages/WebpackLoaders/Overall/index.mjs +1 -1
- package/dist/pages/WebpackPlugins/index.mjs +1 -1
- package/dist/pages/index.mjs +1 -1
- package/dist/utils/i18n/cn.mjs +1 -1
- package/dist/utils/i18n/en.mjs +1 -1
- package/dist/utils/i18n/index.mjs +1 -1
- package/dist/utils/loader.mjs +1 -1
- package/dist/utils/loader.mjs.map +1 -1
- package/dist/utils/time.mjs +1 -1
- package/dist/utils/time.mjs.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages/BundleSize/components/index.mjs","sources":["../../../../src/pages/BundleSize/components/index.tsx"],"sourcesContent":["import {\n CodeOutlined,\n CodepenCircleOutlined,\n DeploymentUnitOutlined,\n InfoCircleOutlined,\n} from '@ant-design/icons';\nimport { Client, SDK } from '@rsdoctor/types';\nimport {\n Button,\n Card,\n Col,\n Divider,\n Empty,\n InputNumber,\n Row,\n Select,\n Space,\n Tag,\n Tooltip,\n Typography,\n Tabs,\n} from 'antd';\nimport { debounce, sumBy } from 'es-toolkit/compat';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useCodeDrawer } from 'src/components/base/CodeViewer/useCodeDrawer';\nimport { Badge as Bdg } from '../../../components/Badge';\nimport { FileTree } from '../../../components/FileTree';\nimport { KeywordInput } from '../../../components/Form/keyword';\nimport { Keyword } from '../../../components/Keyword';\nimport { ServerAPIProvider } from '../../../components/Manifest';\nimport { Size } from '../../../constants';\nimport { useProjectInfo } from '../../../components/Layout/project-info-context';\nimport {\n createFileStructures,\n flattenTreemapData,\n formatSize,\n useI18n,\n} from '../../../utils';\nimport { AssetDetail } from './asset';\nimport { BundleCards } from './cards';\nimport styles from './index.module.scss';\nimport './index.sass';\nimport { SearchModal } from './search-modal';\nimport {\n AssetTreemapWithFilter,\n TreeNode,\n} from 'src/components/Charts/TreeMap';\nimport { Rspack } from '@rsdoctor/utils/common';\n\nconst { Option } = Select;\n\nconst cardBodyHeight = 600;\n\ninterface WebpackModulesOverallProps {\n cwd: string;\n errors: SDK.ErrorsData;\n summary: Client.RsdoctorClientAssetsSummary;\n entryPoints: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetEntryPoints>;\n}\n\nexport const WebpackModulesOverallBase: React.FC<\n WebpackModulesOverallProps\n> = ({ errors, cwd, summary, entryPoints }) => {\n const [selectedEntryPoints, setEntryPoints] = useState<SDK.EntryPointData[]>(\n [],\n );\n const [inputModule, setModuleValue] = useState(0);\n const [inputAssetName, setAssetName] = useState('');\n const [inputAssetSize, setAssetSize] = useState(0);\n const [defaultExpandAll, setDefaultExpandAll] = useState(false);\n const [inputModuleUnit, setModuleUnit] = useState('');\n const [inputChunkUnit, setChunkUnit] = useState('');\n const [assetPath, setAssetPath] = useState<string | null>(null);\n const { showCode, codeDrawerComponent } = useCodeDrawer(\n 'Do not have the codes of assets. If you use the lite or brief mode, there will have codes.',\n );\n\n const { t } = useI18n();\n\n const assets = summary.all.total.files;\n\n const handleChange = useCallback(\n (type: string) => (value: string) => {\n if (type === 'module') {\n setModuleUnit(value);\n } else if (type === 'chunk') {\n setChunkUnit(value);\n }\n },\n [],\n );\n\n const selectAfter = (type: string) => (\n <Select defaultValue=\"kb\" onChange={handleChange(type)}>\n <Option value=\"kb\">KB</Option>\n <Option value=\"mb\">MB</Option>\n </Select>\n );\n const onChangeModule = useCallback(\n debounce((newValue: number) => {\n const count =\n inputModuleUnit === 'mb' ? newValue * 1024 * 1024 : newValue * 1024;\n setModuleValue(count);\n }, 300),\n [],\n );\n\n const onChangeAsset = useCallback(\n debounce((newValue: number) => {\n const count =\n inputChunkUnit === 'mb' ? newValue * 1024 * 1024 : newValue * 1024;\n setAssetSize(count);\n }, 300),\n [],\n );\n\n const filteredAssets = useMemo(() => {\n let res = assets.slice();\n\n if (inputAssetName) {\n res = res.filter((e) => e.path.indexOf(inputAssetName) > -1);\n }\n\n if (inputAssetSize > 0) {\n res = res.filter((e) => e.size >= inputAssetSize);\n }\n\n if (selectedEntryPoints.length) {\n res = res.filter((e) => {\n if (selectedEntryPoints.some((ep) => ep.assets.includes(e.path))) {\n return true;\n }\n return false;\n });\n }\n\n return res.sort((a, b) => {\n const _a = a.path.indexOf('/') > -1 ? 1 : 0;\n const _b = b.path.indexOf('/') > -1 ? 1 : 0;\n // return _a - _b;\n return _b - _a;\n });\n }, [assets, selectedEntryPoints, inputAssetName, inputAssetSize]);\n\n useEffect(() => {\n function getFileExtension(filePath: string) {\n const parts = filePath.split('.');\n return parts.length > 1 ? parts.pop() : '';\n }\n\n summary.all.total.files.forEach((f) => {\n const ext = getFileExtension(f.path);\n if (ext === 'js') {\n setAssetPath(f.path);\n }\n });\n }, [summary.all.total.files]);\n\n const assetsStructures = useMemo(() => {\n const res = createFileStructures({\n files: filteredAssets.map((e) => e.path).filter(Boolean),\n fileTitle(file, basename) {\n const target = filteredAssets.find((e) => e.path === file)!;\n const { size, initial, path, content } = target;\n\n return (\n <div\n className={styles.assetBox}\n onClick={() => {\n setAssetPath(path);\n }}\n >\n <Keyword text={basename} keyword={''} className={styles.fileText} />\n <Space size=\"small\" className={styles.assetsTag}>\n <Divider type=\"vertical\" />\n <Typography.Text style={{ color: '#4FD233' }}>\n {formatSize(size)}\n </Typography.Text>\n <Divider type=\"vertical\" />\n {initial ? (\n <Typography.Text style={{ color: '#009A9E' }}>\n initial\n </Typography.Text>\n ) : null}\n <CodeOutlined\n style={{ fontSize: 14, padding: 0 }}\n onClick={() => showCode({ code: content!, filePath: path })}\n />\n </Space>\n </div>\n );\n },\n });\n return res;\n }, [filteredAssets]);\n\n const onSearch = (value: string) => {\n setAssetName(value);\n setDefaultExpandAll(false);\n };\n return (\n <>\n <div>\n <BundleCards cwd={cwd} errors={errors} summary={summary} />\n <Card styles={{ body: { paddingTop: 0 } }}>\n <Tabs\n size=\"middle\"\n items={[\n {\n key: 'tree',\n label: (\n <Space>\n <Typography.Text>Tree Graph</Typography.Text>\n <Tooltip\n overlayStyle={{ maxWidth: 380 }}\n overlayInnerStyle={{ marginLeft: 16, padding: 10 }}\n color=\"white\"\n title={\n <Space direction=\"vertical\" color=\"white\" size=\"middle\">\n <Row>\n <Col>\n <Tag color=\"cyan\" style={{ margin: 0 }}>\n initial\n </Tag>\n <Typography.Text style={{ marginLeft: 4 }}>\n Identify whether the chunk is an initial chunk.\n </Typography.Text>\n </Col>\n </Row>\n <Row>\n <Col>\n <Tag color=\"green\" style={{ margin: 0 }}>\n concatenated\n </Tag>\n <Typography.Text style={{ marginLeft: 4 }}>\n Identify whether the module is a concatenated\n module\n </Typography.Text>\n <Tooltip\n overlayStyle={{ maxWidth: 408 }}\n placement=\"bottom\"\n color=\"white\"\n title={\n <Space direction=\"vertical\" color=\"white\">\n <Row>\n <Col>\n <Typography.Text strong>\n Concatenated Module\n </Typography.Text>\n <Typography.Text>\n : A performance optimization where\n multiple modules are merged (or\n \"hoisted\") into a single scope instead\n of wrapping each module in separate\n function closures. This reduces the\n bundle size and improves runtime\n performance by minimizing function\n call overhead.\n </Typography.Text>\n </Col>\n </Row>\n </Space>\n }\n >\n <InfoCircleOutlined\n style={{\n color: 'rgba(0,0,0,.45)',\n marginLeft: 4,\n }}\n />\n </Tooltip>\n <Typography.Text>.</Typography.Text>\n </Col>\n </Row>\n <Row>\n <Col>\n <Button\n size=\"small\"\n icon={<CodepenCircleOutlined />}\n />\n <Typography.Text style={{ marginLeft: 4 }}>\n Open the code.\n </Typography.Text>\n </Col>\n </Row>\n <Row>\n <Col>\n <Button\n size=\"small\"\n icon={<DeploymentUnitOutlined />}\n />\n <Typography.Text style={{ marginLeft: 4 }}>\n View the module dependency, that is, module\n reasons in stats.json.\n </Typography.Text>\n </Col>\n </Row>\n <Row>\n <Col>\n <Tag color={'purple'}>{'Bundled: 15.77 KB'}</Tag>\n <Typography.Text>\n The final size of the output files after\n processing, bundling, and optimization. This is\n what is delivered to the browser.\n </Typography.Text>\n </Col>\n </Row>\n <Row>\n <Col>\n <Tag color={'orange'}>{'Source: 60.46 KB'}</Tag>\n <Typography.Text>\n The original size of your source code files\n before any processing or transformations. This\n is the raw size of your code as you wrote it.\n </Typography.Text>\n </Col>\n </Row>\n </Space>\n }\n >\n <InfoCircleOutlined\n style={{ color: 'rgba(0,0,0,.45)' }}\n />\n </Tooltip>\n </Space>\n ),\n children: (\n <Space direction=\"vertical\">\n <Row\n align=\"middle\"\n gutter={[Size.BasePadding, Size.BasePadding]}\n >\n {entryPoints && entryPoints.length ? (\n <Col>\n <Select\n mode=\"multiple\"\n value={selectedEntryPoints.map((e) => e.name)}\n style={{\n minWidth: 230,\n width: 'auto',\n maxWidth: 300,\n }}\n placeholder={'filter assets by entry point'}\n onChange={(name: string[]) => {\n setEntryPoints(\n name\n .map(\n (e) =>\n entryPoints.find((ep) => ep.name === e)!,\n )\n .filter(Boolean),\n );\n }}\n allowClear\n onClear={() => {\n setEntryPoints([]);\n }}\n >\n {entryPoints.map((e) => {\n return (\n <Select.Option key={e.name} value={e.name}>\n <Space>\n <Bdg\n label={e.name}\n value={formatSize(e.size)}\n tooltip={e.name}\n />\n </Space>\n </Select.Option>\n );\n })}\n </Select>\n </Col>\n ) : null}\n <Col>\n <KeywordInput\n placeholder=\"search asset by keyword\"\n onChange={onSearch}\n />\n </Col>\n <Col span={6}>\n <InputNumber\n min={0}\n style={{ width: '95%' }}\n addonBefore={\n <Space>\n <Typography.Text\n style={{ fontSize: 14, color: 'inherit' }}\n >\n Asset Size\n </Typography.Text>\n <Tooltip\n title={t(\n 'filter the output assets which size is greater than the input value',\n )}\n style={{ marginLeft: 3 }}\n >\n <InfoCircleOutlined\n style={{ color: 'rgba(0,0,0,.45)' }}\n />\n </Tooltip>\n </Space>\n }\n onChange={(value) => onChangeAsset(Number(value))}\n addonAfter={selectAfter('chunk')}\n />\n </Col>\n <Col span={6}>\n <InputNumber\n min={0}\n style={{ width: '95%' }}\n addonBefore={\n <Space>\n <Typography.Text\n style={{ fontSize: 14, color: 'inherit' }}\n >\n Module Size\n </Typography.Text>\n <Tooltip\n title={t(\n 'filter the modules which size is greater than the input value',\n )}\n style={{ marginLeft: 3 }}\n >\n <InfoCircleOutlined\n style={{ color: 'rgba(0,0,0,.45)' }}\n />\n </Tooltip>\n </Space>\n }\n onChange={(value) => {\n onChangeModule(Number(value));\n }}\n addonAfter={selectAfter('module')}\n />\n </Col>\n </Row>\n <Row>\n <SearchModal />\n </Row>\n <Row\n align=\"middle\"\n gutter={[Size.BasePadding, Size.BasePadding]}\n >\n <Col span={24}>\n {filteredAssets.length ? (\n <Row gutter={Size.BasePadding}>\n <Col span={6}>\n <Card\n title={\n <Space>\n <Typography.Text>\n {t('Output Assets List')}\n </Typography.Text>\n <Divider type=\"vertical\" />\n <Tooltip\n title={`total assets count is ${assets.length}, the filtered assets count is ${filteredAssets.length}`}\n >\n <Typography.Text\n type=\"secondary\"\n style={{\n fontSize: 12,\n fontWeight: 400,\n }}\n >\n {filteredAssets.length} /{' '}\n {assets.length}\n </Typography.Text>\n </Tooltip>\n <Divider type=\"vertical\" />\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 12, fontWeight: 400 }}\n >\n {formatSize(\n sumBy(filteredAssets, (e) => e.size),\n )}\n </Typography.Text>\n </Space>\n }\n size=\"small\"\n bodyStyle={{\n overflow: 'scroll',\n height: cardBodyHeight,\n }}\n >\n <FileTree\n className={styles.assets}\n treeData={assetsStructures}\n autoExpandParent\n defaultExpandAll={\n defaultExpandAll ||\n filteredAssets.length <= 20\n }\n key={`tree_${inputAssetName}_${defaultExpandAll}`}\n />\n </Card>\n </Col>\n <Col span={18}>\n {assetPath ? (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetAssetDetails}\n body={{ assetPath }}\n >\n {(details) => (\n <AssetDetail\n asset={details.asset}\n chunks={details.chunks}\n modules={details.modules}\n height={cardBodyHeight}\n moduleSizeLimit={inputModule}\n root={cwd}\n />\n )}\n </ServerAPIProvider>\n ) : (\n <Card\n bodyStyle={{\n height: cardBodyHeight,\n }}\n >\n <Empty\n description={\n <Typography.Text strong>\n Click the file path on the left to show\n the modules of the asset\n </Typography.Text>\n }\n />\n </Card>\n )}\n </Col>\n </Row>\n ) : (\n <Empty />\n )}\n </Col>\n </Row>\n </Space>\n ),\n },\n {\n key: 'treemap',\n label: 'Treemap',\n children: (\n <ServerAPIProvider api={SDK.ServerAPI.API.GetProjectInfo}>\n {(data) => {\n const { isRspack, hasSourceMap } =\n Rspack.checkSourceMapSupport(data.configs);\n return (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetSummaryBundles}\n >\n {(data) => {\n // Filter assets to only show JS (js, cjs, mjs), .bundle, CSS, and HTML files\n const isTargetFileType = (\n filePath: string,\n ): boolean => {\n const ext =\n filePath.toLowerCase().split('.').pop() || '';\n return (\n ext === 'js' ||\n ext === 'cjs' ||\n ext === 'mjs' ||\n ext === 'bundle' ||\n ext === 'css' ||\n ext === 'html'\n );\n };\n\n const computedTreeData: TreeNode[] = data\n .filter((item) =>\n isTargetFileType(item.asset.path),\n )\n .map((item) => ({\n name: item.asset.path,\n value: item.asset.size,\n children: flattenTreemapData(item.modules)\n .children,\n }));\n return (\n <AssetTreemapWithFilter\n treeData={computedTreeData}\n bundledSize={hasSourceMap || isRspack}\n />\n );\n }}\n </ServerAPIProvider>\n );\n }}\n </ServerAPIProvider>\n ),\n },\n ]}\n defaultActiveKey=\"tree\"\n />\n </Card>\n </div>\n {codeDrawerComponent}\n </>\n );\n};\n\nexport const WebpackModulesOverall: React.FC = () => {\n const { project } = useProjectInfo();\n\n if (!project) {\n return null;\n }\n\n const { root, errors } = project;\n return (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetAssetsSummary}\n body={{ withFileContent: true }}\n >\n {(summary) => {\n return (\n <ServerAPIProvider api={SDK.ServerAPI.API.GetEntryPoints}>\n {(entryPoints) => (\n <WebpackModulesOverallBase\n cwd={root}\n errors={errors}\n summary={summary}\n entryPoints={entryPoints}\n />\n )}\n </ServerAPIProvider>\n );\n }}\n </ServerAPIProvider>\n );\n};\n"],"names":["Option","Select","cardBodyHeight","WebpackModulesOverallBase","errors","cwd","summary","entryPoints","selectedEntryPoints","setEntryPoints","useState","inputModule","setModuleValue","inputAssetName","setAssetName","inputAssetSize","setAssetSize","defaultExpandAll","setDefaultExpandAll","inputModuleUnit","setModuleUnit","inputChunkUnit","setChunkUnit","assetPath","setAssetPath","showCode","codeDrawerComponent","useCodeDrawer","t","useI18n","assets","handleChange","useCallback","type","value","selectAfter","onChangeModule","debounce","newValue","count","onChangeAsset","filteredAssets","useMemo","res","e","ep","a","b","_a","_b","useEffect","getFileExtension","filePath","parts","f","ext","assetsStructures","createFileStructures","Boolean","file","basename","target","size","initial","path","content","styles","Keyword","Space","Divider","Typography","formatSize","CodeOutlined","onSearch","BundleCards","Card","Tabs","Tooltip","Row","Col","Tag","InfoCircleOutlined","Button","CodepenCircleOutlined","DeploymentUnitOutlined","Size","name","Bdg","KeywordInput","InputNumber","Number","SearchModal","sumBy","FileTree","ServerAPIProvider","SDK","details","AssetDetail","Empty","data","isRspack","hasSourceMap","Rspack","isTargetFileType","computedTreeData","item","flattenTreemapData","AssetTreemapWithFilter","WebpackModulesOverall","project","useProjectInfo","root"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pages/BundleSize/components/index.mjs","sources":["../../../../src/pages/BundleSize/components/index.tsx"],"sourcesContent":["import {\n CodeOutlined,\n CodepenCircleOutlined,\n DeploymentUnitOutlined,\n InfoCircleOutlined,\n} from '@ant-design/icons';\nimport { Client, SDK } from '@rsdoctor/types';\nimport {\n Button,\n Card,\n Col,\n Divider,\n Empty,\n InputNumber,\n Row,\n Select,\n Space,\n Tag,\n Tooltip,\n Typography,\n Tabs,\n} from 'antd';\nimport { debounce, sumBy } from 'es-toolkit/compat';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useCodeDrawer } from 'src/components/base/CodeViewer/useCodeDrawer';\nimport { Badge as Bdg } from '../../../components/Badge';\nimport { FileTree } from '../../../components/FileTree';\nimport { KeywordInput } from '../../../components/Form/keyword';\nimport { Keyword } from '../../../components/Keyword';\nimport { ServerAPIProvider } from '../../../components/Manifest';\nimport { Size } from '../../../constants';\nimport { useProjectInfo } from '../../../components/Layout/project-info-context';\nimport {\n createFileStructures,\n flattenTreemapData,\n formatSize,\n useI18n,\n} from '../../../utils';\nimport { AssetDetail } from './asset';\nimport { BundleCards } from './cards';\nimport styles from './index.module.scss';\nimport './index.sass';\nimport { SearchModal } from './search-modal';\nimport {\n AssetTreemapWithFilter,\n TreeNode,\n} from 'src/components/Charts/TreeMap';\nimport { Rspack } from '@rsdoctor/utils/common';\n\nconst { Option } = Select;\n\nconst cardBodyHeight = 600;\n\ninterface WebpackModulesOverallProps {\n cwd: string;\n errors: SDK.ErrorsData;\n summary: Client.RsdoctorClientAssetsSummary;\n entryPoints: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetEntryPoints>;\n}\n\nexport const WebpackModulesOverallBase: React.FC<\n WebpackModulesOverallProps\n> = ({ errors, cwd, summary, entryPoints }) => {\n const [selectedEntryPoints, setEntryPoints] = useState<SDK.EntryPointData[]>(\n [],\n );\n const [inputModule, setModuleValue] = useState(0);\n const [inputAssetName, setAssetName] = useState('');\n const [inputAssetSize, setAssetSize] = useState(0);\n const [defaultExpandAll, setDefaultExpandAll] = useState(false);\n const [inputModuleUnit, setModuleUnit] = useState('');\n const [inputChunkUnit, setChunkUnit] = useState('');\n const [assetPath, setAssetPath] = useState<string | null>(null);\n const { showCode, codeDrawerComponent } = useCodeDrawer(\n 'Do not have the codes of assets. If you use the lite or brief mode, there will have codes.',\n );\n\n const { t } = useI18n();\n\n const assets = summary.all.total.files;\n\n const handleChange = useCallback(\n (type: string) => (value: string) => {\n if (type === 'module') {\n setModuleUnit(value);\n } else if (type === 'chunk') {\n setChunkUnit(value);\n }\n },\n [],\n );\n\n const selectAfter = (type: string) => (\n <Select defaultValue=\"kb\" onChange={handleChange(type)}>\n <Option value=\"kb\">KB</Option>\n <Option value=\"mb\">MB</Option>\n </Select>\n );\n const onChangeModule = useCallback(\n debounce((newValue: number) => {\n const count =\n inputModuleUnit === 'mb' ? newValue * 1024 * 1024 : newValue * 1024;\n setModuleValue(count);\n }, 300),\n [],\n );\n\n const onChangeAsset = useCallback(\n debounce((newValue: number) => {\n const count =\n inputChunkUnit === 'mb' ? newValue * 1024 * 1024 : newValue * 1024;\n setAssetSize(count);\n }, 300),\n [],\n );\n\n const filteredAssets = useMemo(() => {\n let res = assets.slice();\n\n if (inputAssetName) {\n res = res.filter((e) => e.path.indexOf(inputAssetName) > -1);\n }\n\n if (inputAssetSize > 0) {\n res = res.filter((e) => e.size >= inputAssetSize);\n }\n\n if (selectedEntryPoints.length) {\n res = res.filter((e) => {\n if (selectedEntryPoints.some((ep) => ep.assets.includes(e.path))) {\n return true;\n }\n return false;\n });\n }\n\n return res.sort((a, b) => {\n const _a = a.path.indexOf('/') > -1 ? 1 : 0;\n const _b = b.path.indexOf('/') > -1 ? 1 : 0;\n // return _a - _b;\n return _b - _a;\n });\n }, [assets, selectedEntryPoints, inputAssetName, inputAssetSize]);\n\n useEffect(() => {\n function getFileExtension(filePath: string) {\n const parts = filePath.split('.');\n return parts.length > 1 ? parts.pop() : '';\n }\n\n summary.all.total.files.forEach((f) => {\n const ext = getFileExtension(f.path);\n if (ext === 'js') {\n setAssetPath(f.path);\n }\n });\n }, [summary.all.total.files]);\n\n const assetsStructures = useMemo(() => {\n const res = createFileStructures({\n files: filteredAssets.map((e) => e.path).filter(Boolean),\n fileTitle(file, basename) {\n const target = filteredAssets.find((e) => e.path === file)!;\n const { size, initial, path, content } = target;\n\n return (\n <div\n className={styles.assetBox}\n onClick={() => {\n setAssetPath(path);\n }}\n >\n <Keyword text={basename} keyword={''} className={styles.fileText} />\n <Space size=\"small\" className={styles.assetsTag}>\n <Divider type=\"vertical\" />\n <Typography.Text style={{ color: '#4FD233' }}>\n {formatSize(size)}\n </Typography.Text>\n <Divider type=\"vertical\" />\n {initial ? (\n <Typography.Text style={{ color: '#009A9E' }}>\n initial\n </Typography.Text>\n ) : null}\n <CodeOutlined\n style={{ fontSize: 14, padding: 0 }}\n onClick={() => showCode({ code: content!, filePath: path })}\n />\n </Space>\n </div>\n );\n },\n });\n return res;\n }, [filteredAssets]);\n\n const onSearch = (value: string) => {\n setAssetName(value);\n setDefaultExpandAll(false);\n };\n return (\n <>\n <div>\n <BundleCards cwd={cwd} errors={errors} summary={summary} />\n <Card styles={{ body: { paddingTop: 0 } }}>\n <Tabs\n size=\"middle\"\n items={[\n {\n key: 'tree',\n label: (\n <Space>\n <Typography.Text>Tree Graph</Typography.Text>\n <Tooltip\n overlayStyle={{ maxWidth: 380 }}\n overlayInnerStyle={{ marginLeft: 16, padding: 10 }}\n color=\"white\"\n title={\n <Space direction=\"vertical\" color=\"white\" size=\"middle\">\n <Row>\n <Col>\n <Tag color=\"cyan\" style={{ margin: 0 }}>\n initial\n </Tag>\n <Typography.Text style={{ marginLeft: 4 }}>\n Identify whether the chunk is an initial chunk.\n </Typography.Text>\n </Col>\n </Row>\n <Row>\n <Col>\n <Tag color=\"green\" style={{ margin: 0 }}>\n concatenated\n </Tag>\n <Typography.Text style={{ marginLeft: 4 }}>\n Identify whether the module is a concatenated\n module\n </Typography.Text>\n <Tooltip\n overlayStyle={{ maxWidth: 408 }}\n placement=\"bottom\"\n color=\"white\"\n title={\n <Space direction=\"vertical\" color=\"white\">\n <Row>\n <Col>\n <Typography.Text strong>\n Concatenated Module\n </Typography.Text>\n <Typography.Text>\n : A performance optimization where\n multiple modules are merged (or\n \"hoisted\") into a single scope instead\n of wrapping each module in separate\n function closures. This reduces the\n bundle size and improves runtime\n performance by minimizing function\n call overhead.\n </Typography.Text>\n </Col>\n </Row>\n </Space>\n }\n >\n <InfoCircleOutlined\n style={{\n color: 'rgba(0,0,0,.45)',\n marginLeft: 4,\n }}\n />\n </Tooltip>\n <Typography.Text>.</Typography.Text>\n </Col>\n </Row>\n <Row>\n <Col>\n <Button\n size=\"small\"\n icon={<CodepenCircleOutlined />}\n />\n <Typography.Text style={{ marginLeft: 4 }}>\n Open the code.\n </Typography.Text>\n </Col>\n </Row>\n <Row>\n <Col>\n <Button\n size=\"small\"\n icon={<DeploymentUnitOutlined />}\n />\n <Typography.Text style={{ marginLeft: 4 }}>\n View the module dependency, that is, module\n reasons in stats.json.\n </Typography.Text>\n </Col>\n </Row>\n <Row>\n <Col>\n <Tag color={'purple'}>{'Bundled: 15.77 KB'}</Tag>\n <Typography.Text>\n The final size of the output files after\n processing, bundling, and optimization. This is\n what is delivered to the browser.\n </Typography.Text>\n </Col>\n </Row>\n <Row>\n <Col>\n <Tag color={'orange'}>{'Source: 60.46 KB'}</Tag>\n <Typography.Text>\n The original size of your source code files\n before any processing or transformations. This\n is the raw size of your code as you wrote it.\n </Typography.Text>\n </Col>\n </Row>\n </Space>\n }\n >\n <InfoCircleOutlined\n style={{ color: 'rgba(0,0,0,.45)' }}\n />\n </Tooltip>\n </Space>\n ),\n children: (\n <Space direction=\"vertical\">\n <Row\n align=\"middle\"\n gutter={[Size.BasePadding, Size.BasePadding]}\n >\n {entryPoints && entryPoints.length ? (\n <Col>\n <Select\n mode=\"multiple\"\n value={selectedEntryPoints.map((e) => e.name)}\n style={{\n minWidth: 230,\n width: 'auto',\n maxWidth: 300,\n }}\n placeholder={'filter assets by entry point'}\n onChange={(name: string[]) => {\n setEntryPoints(\n name\n .map(\n (e) =>\n entryPoints.find((ep) => ep.name === e)!,\n )\n .filter(Boolean),\n );\n }}\n allowClear\n onClear={() => {\n setEntryPoints([]);\n }}\n >\n {entryPoints.map((e) => {\n return (\n <Select.Option key={e.name} value={e.name}>\n <Space>\n <Bdg\n label={e.name}\n value={formatSize(e.size)}\n tooltip={e.name}\n />\n </Space>\n </Select.Option>\n );\n })}\n </Select>\n </Col>\n ) : null}\n <Col>\n <KeywordInput\n placeholder=\"search asset by keyword\"\n onChange={onSearch}\n />\n </Col>\n <Col span={6}>\n <InputNumber\n min={0}\n style={{ width: '95%' }}\n addonBefore={\n <Space>\n <Typography.Text\n style={{ fontSize: 14, color: 'inherit' }}\n >\n Asset Size\n </Typography.Text>\n <Tooltip\n title={t(\n 'filter the output assets which size is greater than the input value',\n )}\n style={{ marginLeft: 3 }}\n >\n <InfoCircleOutlined\n style={{ color: 'rgba(0,0,0,.45)' }}\n />\n </Tooltip>\n </Space>\n }\n onChange={(value) => onChangeAsset(Number(value))}\n addonAfter={selectAfter('chunk')}\n />\n </Col>\n <Col span={6}>\n <InputNumber\n min={0}\n style={{ width: '95%' }}\n addonBefore={\n <Space>\n <Typography.Text\n style={{ fontSize: 14, color: 'inherit' }}\n >\n Module Size\n </Typography.Text>\n <Tooltip\n title={t(\n 'filter the modules which size is greater than the input value',\n )}\n style={{ marginLeft: 3 }}\n >\n <InfoCircleOutlined\n style={{ color: 'rgba(0,0,0,.45)' }}\n />\n </Tooltip>\n </Space>\n }\n onChange={(value) => {\n onChangeModule(Number(value));\n }}\n addonAfter={selectAfter('module')}\n />\n </Col>\n </Row>\n <Row>\n <SearchModal />\n </Row>\n <Row\n align=\"middle\"\n gutter={[Size.BasePadding, Size.BasePadding]}\n >\n <Col span={24}>\n {filteredAssets.length ? (\n <Row gutter={Size.BasePadding}>\n <Col span={6}>\n <Card\n title={\n <Space>\n <Typography.Text>\n {t('Output Assets List')}\n </Typography.Text>\n <Divider type=\"vertical\" />\n <Tooltip\n title={`total assets count is ${assets.length}, the filtered assets count is ${filteredAssets.length}`}\n >\n <Typography.Text\n type=\"secondary\"\n style={{\n fontSize: 12,\n fontWeight: 400,\n }}\n >\n {filteredAssets.length} /{' '}\n {assets.length}\n </Typography.Text>\n </Tooltip>\n <Divider type=\"vertical\" />\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 12, fontWeight: 400 }}\n >\n {formatSize(\n sumBy(filteredAssets, (e) => e.size),\n )}\n </Typography.Text>\n </Space>\n }\n size=\"small\"\n bodyStyle={{\n overflow: 'scroll',\n height: cardBodyHeight,\n }}\n >\n <FileTree\n className={styles.assets}\n treeData={assetsStructures}\n autoExpandParent\n defaultExpandAll={\n defaultExpandAll ||\n filteredAssets.length <= 20\n }\n key={`tree_${inputAssetName}_${defaultExpandAll}`}\n />\n </Card>\n </Col>\n <Col span={18}>\n {assetPath ? (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetAssetDetails}\n body={{ assetPath }}\n >\n {(details) => (\n <AssetDetail\n asset={details.asset}\n chunks={details.chunks}\n modules={details.modules}\n height={cardBodyHeight}\n moduleSizeLimit={inputModule}\n root={cwd}\n />\n )}\n </ServerAPIProvider>\n ) : (\n <Card\n bodyStyle={{\n height: cardBodyHeight,\n }}\n >\n <Empty\n description={\n <Typography.Text strong>\n Click the file path on the left to show\n the modules of the asset\n </Typography.Text>\n }\n />\n </Card>\n )}\n </Col>\n </Row>\n ) : (\n <Empty />\n )}\n </Col>\n </Row>\n </Space>\n ),\n },\n {\n key: 'treemap',\n label: 'Treemap',\n children: (\n <ServerAPIProvider api={SDK.ServerAPI.API.GetProjectInfo}>\n {(data) => {\n const { isRspack, hasSourceMap } =\n Rspack.checkSourceMapSupport(data.configs);\n return (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetSummaryBundles}\n >\n {(data) => {\n // Filter assets to only show JS (js, cjs, mjs), .bundle, CSS, and HTML files\n const isTargetFileType = (\n filePath: string,\n ): boolean => {\n const ext =\n filePath.toLowerCase().split('.').pop() || '';\n return (\n ext === 'js' ||\n ext === 'cjs' ||\n ext === 'mjs' ||\n ext === 'bundle' ||\n ext === 'css' ||\n ext === 'html'\n );\n };\n\n const computedTreeData: TreeNode[] = data\n .filter((item) =>\n isTargetFileType(item.asset.path),\n )\n .map((item) => ({\n name: item.asset.path,\n value: item.asset.size,\n children: flattenTreemapData(item.modules)\n .children,\n }));\n return (\n <AssetTreemapWithFilter\n treeData={computedTreeData}\n bundledSize={hasSourceMap || isRspack}\n />\n );\n }}\n </ServerAPIProvider>\n );\n }}\n </ServerAPIProvider>\n ),\n },\n ]}\n defaultActiveKey=\"tree\"\n />\n </Card>\n </div>\n {codeDrawerComponent}\n </>\n );\n};\n\nexport const WebpackModulesOverall: React.FC = () => {\n const { project } = useProjectInfo();\n\n if (!project) {\n return null;\n }\n\n const { root, errors } = project;\n return (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetAssetsSummary}\n body={{ withFileContent: true }}\n >\n {(summary) => {\n return (\n <ServerAPIProvider api={SDK.ServerAPI.API.GetEntryPoints}>\n {(entryPoints) => (\n <WebpackModulesOverallBase\n cwd={root}\n errors={errors}\n summary={summary}\n entryPoints={entryPoints}\n />\n )}\n </ServerAPIProvider>\n );\n }}\n </ServerAPIProvider>\n );\n};\n"],"names":["Option","Select","cardBodyHeight","WebpackModulesOverallBase","errors","cwd","summary","entryPoints","selectedEntryPoints","setEntryPoints","useState","inputModule","setModuleValue","inputAssetName","setAssetName","inputAssetSize","setAssetSize","defaultExpandAll","setDefaultExpandAll","inputModuleUnit","setModuleUnit","inputChunkUnit","setChunkUnit","assetPath","setAssetPath","showCode","codeDrawerComponent","useCodeDrawer","t","useI18n","assets","handleChange","useCallback","type","value","selectAfter","onChangeModule","debounce","newValue","count","onChangeAsset","filteredAssets","useMemo","res","e","ep","a","b","_a","_b","useEffect","getFileExtension","filePath","parts","f","ext","assetsStructures","createFileStructures","Boolean","file","basename","target","size","initial","path","content","styles","Keyword","Space","Divider","Typography","formatSize","CodeOutlined","onSearch","BundleCards","Card","Tabs","Tooltip","Row","Col","Tag","InfoCircleOutlined","Button","CodepenCircleOutlined","DeploymentUnitOutlined","Size","name","Bdg","KeywordInput","InputNumber","Number","SearchModal","sumBy","FileTree","ServerAPIProvider","SDK","details","AssetDetail","Empty","data","isRspack","hasSourceMap","Rspack","isTargetFileType","computedTreeData","item","flattenTreemapData","AssetTreemapWithFilter","WebpackModulesOverall","project","useProjectInfo","root"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { ServerAPIProvider } from "../../../components/index.mjs";
|
|
|
5
5
|
import { SDK } from "@rsdoctor/types";
|
|
6
6
|
import index_module from "./index.module.mjs";
|
|
7
7
|
import { SearchOutlined } from "@ant-design/icons";
|
|
8
|
-
const { Search } = Input;
|
|
8
|
+
const { Search: Search } = Input;
|
|
9
9
|
const SearchModal = ({ onModuleClick, onClose, open, setOpen, isIcon = false })=>{
|
|
10
10
|
const [isModalOpen, setIsModalOpen] = useState(false);
|
|
11
11
|
const [searchModule, setSearchModule] = useState('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages/BundleSize/components/search-modal.mjs","sources":["../../../../src/pages/BundleSize/components/search-modal.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport {\n Button,\n Modal,\n Input,\n Tabs,\n List,\n Skeleton,\n Typography,\n Empty,\n} from 'antd';\nimport { SearchProps } from 'antd/es/input';\nimport { ServerAPIProvider } from 'src/components';\nimport { SDK } from '@rsdoctor/types';\nimport styles from './index.module.scss';\nimport { SearchOutlined } from '@ant-design/icons';\n\nconst { Search } = Input;\n\ntype OnSearchParams = Parameters<NonNullable<SearchProps['onSearch']>>;\n\nexport const SearchModal: React.FC<{\n onModuleClick?: (module: any) => void;\n onClose?: () => void;\n open?: boolean;\n setOpen?: (open: boolean) => void;\n isIcon?: boolean;\n}> = ({\n onModuleClick = undefined,\n onClose,\n open,\n setOpen,\n isIcon = false,\n}) => {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [searchModule, setSearchModule] = useState('');\n const [searchChunk, setSearchChunk] = useState('');\n\n const modalOpen = open !== undefined ? open : isModalOpen;\n const setModalOpen = setOpen || setIsModalOpen;\n\n const onSearch: SearchProps['onSearch'] = useCallback(\n (...args: OnSearchParams) => {\n const [value, _event] = args;\n setSearchModule(value);\n },\n [],\n );\n\n const showModal = () => {\n setModalOpen(true);\n };\n\n const handleOk = () => {\n setModalOpen(false);\n onClose?.();\n };\n\n const handleCancel = () => {\n setModalOpen(false);\n onClose?.();\n };\n\n return (\n <>\n {isIcon ? (\n <SearchOutlined onClick={showModal} />\n ) : (\n <Button\n className={styles['search-btn']}\n color=\"cyan\"\n onClick={showModal}\n >\n Search Module\n </Button>\n )}\n\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetSearchModules}\n body={{ moduleName: String(searchModule) }}\n >\n {(assetsChunksList) => {\n const defaultChunkId = Object.keys(assetsChunksList)[0];\n return (\n <>\n <Modal\n className={styles.modal}\n title=\"Search Modules\"\n onOk={handleOk}\n onCancel={handleCancel}\n open={modalOpen}\n width={'65rem'}\n footer=\"\"\n >\n <Search\n placeholder=\"input search module name\"\n allowClear\n onSearch={onSearch}\n style={{ width: 500 }}\n />\n {defaultChunkId ? (\n <Tabs\n defaultActiveKey={defaultChunkId}\n tabPosition={'top'}\n onChange={(value) => setSearchChunk(value)}\n items={Object.keys(assetsChunksList).map((chunk, _i) => {\n const id = chunk;\n return {\n label: assetsChunksList[chunk],\n key: id,\n children: ModulesModal(\n searchModule,\n searchChunk || defaultChunkId,\n (item) => {\n onModuleClick?.(item);\n setModalOpen(false);\n onClose?.();\n },\n ),\n };\n })}\n />\n ) : (\n <Empty description={'No modules found.'} />\n )}\n </Modal>\n </>\n );\n }}\n </ServerAPIProvider>\n </>\n );\n};\n\nconst ModulesModal = (\n searchModule: string,\n chunk: string,\n onModuleClick?: (module: any) => void | undefined,\n) => {\n return (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetSearchModuleInChunk}\n body={{ moduleName: String(searchModule), chunk }}\n >\n {(modules) => (\n <>\n {modules?.length !== 0 ? (\n <List\n className={styles['search-modal-list']}\n loading={!modules.length}\n itemLayout=\"horizontal\"\n pagination={{ position: 'bottom', align: 'center' }}\n dataSource={modules}\n renderItem={(item) => {\n const itemPathArr = item.relativePath.split(searchModule);\n return (\n <List.Item\n className={\n onModuleClick\n ? 'search-list-item clickable'\n : 'search-list-item'\n }\n key={`${item.path}-${item.relativePath}`}\n onClick={\n onModuleClick ? () => onModuleClick(item) : undefined\n }\n >\n <Skeleton avatar title={false} loading={!item.path} active>\n <List.Item.Meta\n key={`${item.path}-${item.relativePath}-meta`}\n description={\n <>\n <Typography.Text code>{'Module:'}</Typography.Text>\n {itemPathArr.map((cur, index) => {\n if (index < itemPathArr.length - 1) {\n return (\n <Typography.Text\n key={`${cur}-${index}`}\n style={{ fontWeight: 200 }}\n >\n {cur}\n <Typography.Text\n strong\n key={`${cur}-${index}-strong`}\n style={{ fontWeight: 600 }}\n >\n {searchModule}\n </Typography.Text>\n </Typography.Text>\n );\n }\n return (\n <Typography.Text style={{ fontWeight: 200 }}>\n {cur}\n </Typography.Text>\n );\n })}\n </>\n }\n />\n </Skeleton>\n </List.Item>\n );\n }}\n />\n ) : (\n <Empty />\n )}\n </>\n )}\n </ServerAPIProvider>\n );\n};\n"],"names":["Search","Input","SearchModal","onModuleClick","onClose","open","setOpen","isIcon","isModalOpen","setIsModalOpen","useState","searchModule","setSearchModule","searchChunk","setSearchChunk","modalOpen","undefined","setModalOpen","onSearch","useCallback","args","value","_event","showModal","handleOk","handleCancel","SearchOutlined","Button","styles","ServerAPIProvider","SDK","String","assetsChunksList","defaultChunkId","Object","Modal","Tabs","chunk","_i","id","ModulesModal","item","Empty","modules","List","itemPathArr","Skeleton","Typography","cur","index"],"mappings":";;;;;;;AAiBA,MAAM,EAAEA,MAAM,EAAE,GAAGC;AAIZ,MAAMC,cAMR,CAAC,EACJC,aAAyB,EACzBC,OAAO,EACPC,IAAI,EACJC,OAAO,EACPC,SAAS,KAAK,EACf;IACC,MAAM,CAACC,aAAaC,eAAe,GAAGC,SAAS;IAC/C,MAAM,CAACC,cAAcC,gBAAgB,GAAGF,SAAS;IACjD,MAAM,CAACG,aAAaC,eAAe,GAAGJ,SAAS;IAE/C,MAAMK,YAAYV,AAASW,WAATX,OAAqBA,OAAOG;IAC9C,MAAMS,eAAeX,WAAWG;IAEhC,MAAMS,WAAoCC,YACxC,CAAC,GAAGC;QACF,MAAM,CAACC,OAAOC,OAAO,GAAGF;QACxBR,gBAAgBS;IAClB,GACA,EAAE;IAGJ,MAAME,YAAY;QAChBN,aAAa;IACf;IAEA,MAAMO,WAAW;QACfP,aAAa;QACbb;IACF;IAEA,MAAMqB,eAAe;QACnBR,aAAa;QACbb;IACF;IAEA,OAAO,WAAP,GACE;;YACGG,SAAS,WAATA,GACC,IAACmB,gBAAcA;gBAAC,SAASH;+BAEzB,IAACI,QAAMA;gBACL,WAAWC,YAAAA,CAAAA,aAAoB;gBAC/B,OAAM;gBACN,SAASL;0BACV;;0BAKH,IAACM,mBAAiBA;gBAChB,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,gBAAgB;gBACvC,MAAM;oBAAE,YAAYC,OAAOpB;gBAAc;0BAExC,CAACqB;oBACA,MAAMC,iBAAiBC,OAAO,IAAI,CAACF,iBAAiB,CAAC,EAAE;oBACvD,OAAO,WAAP,GACE;kCACE,mBAACG,OAAKA;4BACJ,WAAWP,aAAAA,KAAY;4BACvB,OAAM;4BACN,MAAMJ;4BACN,UAAUC;4BACV,MAAMV;4BACN,OAAO;4BACP,QAAO;;8CAEP,IAACf,QAAAA;oCACC,aAAY;oCACZ,YAAU;oCACV,UAAUkB;oCACV,OAAO;wCAAE,OAAO;oCAAI;;gCAErBe,iBAAiB,WAAjBA,GACC,IAACG,MAAIA;oCACH,kBAAkBH;oCAClB,aAAa;oCACb,UAAU,CAACZ,QAAUP,eAAeO;oCACpC,OAAOa,OAAO,IAAI,CAACF,kBAAkB,GAAG,CAAC,CAACK,OAAOC;wCAC/C,MAAMC,KAAKF;wCACX,OAAO;4CACL,OAAOL,gBAAgB,CAACK,MAAM;4CAC9B,KAAKE;4CACL,UAAUC,aACR7B,cACAE,eAAeoB,gBACf,CAACQ;gDACCtC,gBAAgBsC;gDAChBxB,aAAa;gDACbb;4CACF;wCAEJ;oCACF;mDAGF,IAACsC,OAAKA;oCAAC,aAAa;;;;;gBAK9B;;;;AAIR;AAEA,MAAMF,eAAe,CACnB7B,cACA0B,OACAlC,gBAEO,WAAP,GACE,IAAC0B,mBAAiBA;QAChB,KAAKC,IAAI,SAAS,CAAC,GAAG,CAAC,sBAAsB;QAC7C,MAAM;YAAE,YAAYC,OAAOpB;YAAe0B;QAAM;kBAE/C,CAACM,UAAAA,WAAAA,GACA;0BACGA,SAAS,WAAW,IAAI,WAAJ,GACnB,IAACC,MAAIA;oBACH,WAAWhB,YAAAA,CAAAA,oBAA2B;oBACtC,SAAS,CAACe,QAAQ,MAAM;oBACxB,YAAW;oBACX,YAAY;wBAAE,UAAU;wBAAU,OAAO;oBAAS;oBAClD,YAAYA;oBACZ,YAAY,CAACF;wBACX,MAAMI,cAAcJ,KAAK,YAAY,CAAC,KAAK,CAAC9B;wBAC5C,OAAO,WAAP,GACE,IAACiC,KAAK,IAAI;4BACR,WACEzC,gBACI,+BACA;4BAGN,SACEA,gBAAgB,IAAMA,cAAcsC,QAAQzB;sCAG9C,kBAAC8B,UAAQA;gCAAC,QAAM;gCAAC,OAAO;gCAAO,SAAS,CAACL,KAAK,IAAI;gCAAE,QAAM;0CACxD,kBAACG,KAAK,IAAI,CAAC,IAAI;oCAEb,2BACE;;0DACE,IAACG,WAAW,IAAI;gDAAC,MAAI;0DAAE;;4CACtBF,YAAY,GAAG,CAAC,CAACG,KAAKC;gDACrB,IAAIA,QAAQJ,YAAY,MAAM,GAAG,GAC/B,OAAO,WAAP,GACE,KAACE,WAAW,IAAI;oDAEd,OAAO;wDAAE,YAAY;oDAAI;;wDAExBC;sEACD,IAACD,WAAW,IAAI;4DACd,QAAM;4DAEN,OAAO;gEAAE,YAAY;4DAAI;sEAExBpC;2DAHI,GAAGqC,IAAI,CAAC,EAAEC,MAAM,OAAO,CAAC;;mDAN1B,GAAGD,IAAI,CAAC,EAAEC,OAAO;gDAc5B,OAAO,WAAP,GACE,IAACF,WAAW,IAAI;oDAAC,OAAO;wDAAE,YAAY;oDAAI;8DACvCC;;4CAGP;;;mCA3BC,GAAGP,KAAK,IAAI,CAAC,CAAC,EAAEA,KAAK,YAAY,CAAC,KAAK,CAAC;;2BAP5C,GAAGA,KAAK,IAAI,CAAC,CAAC,EAAEA,KAAK,YAAY,EAAE;oBAyC9C;mCAGF,IAACC,OAAKA,CAAAA"}
|
|
1
|
+
{"version":3,"file":"pages/BundleSize/components/search-modal.mjs","sources":["../../../../src/pages/BundleSize/components/search-modal.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport {\n Button,\n Modal,\n Input,\n Tabs,\n List,\n Skeleton,\n Typography,\n Empty,\n} from 'antd';\nimport { SearchProps } from 'antd/es/input';\nimport { ServerAPIProvider } from 'src/components';\nimport { SDK } from '@rsdoctor/types';\nimport styles from './index.module.scss';\nimport { SearchOutlined } from '@ant-design/icons';\n\nconst { Search } = Input;\n\ntype OnSearchParams = Parameters<NonNullable<SearchProps['onSearch']>>;\n\nexport const SearchModal: React.FC<{\n onModuleClick?: (module: any) => void;\n onClose?: () => void;\n open?: boolean;\n setOpen?: (open: boolean) => void;\n isIcon?: boolean;\n}> = ({\n onModuleClick = undefined,\n onClose,\n open,\n setOpen,\n isIcon = false,\n}) => {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [searchModule, setSearchModule] = useState('');\n const [searchChunk, setSearchChunk] = useState('');\n\n const modalOpen = open !== undefined ? open : isModalOpen;\n const setModalOpen = setOpen || setIsModalOpen;\n\n const onSearch: SearchProps['onSearch'] = useCallback(\n (...args: OnSearchParams) => {\n const [value, _event] = args;\n setSearchModule(value);\n },\n [],\n );\n\n const showModal = () => {\n setModalOpen(true);\n };\n\n const handleOk = () => {\n setModalOpen(false);\n onClose?.();\n };\n\n const handleCancel = () => {\n setModalOpen(false);\n onClose?.();\n };\n\n return (\n <>\n {isIcon ? (\n <SearchOutlined onClick={showModal} />\n ) : (\n <Button\n className={styles['search-btn']}\n color=\"cyan\"\n onClick={showModal}\n >\n Search Module\n </Button>\n )}\n\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetSearchModules}\n body={{ moduleName: String(searchModule) }}\n >\n {(assetsChunksList) => {\n const defaultChunkId = Object.keys(assetsChunksList)[0];\n return (\n <>\n <Modal\n className={styles.modal}\n title=\"Search Modules\"\n onOk={handleOk}\n onCancel={handleCancel}\n open={modalOpen}\n width={'65rem'}\n footer=\"\"\n >\n <Search\n placeholder=\"input search module name\"\n allowClear\n onSearch={onSearch}\n style={{ width: 500 }}\n />\n {defaultChunkId ? (\n <Tabs\n defaultActiveKey={defaultChunkId}\n tabPosition={'top'}\n onChange={(value) => setSearchChunk(value)}\n items={Object.keys(assetsChunksList).map((chunk, _i) => {\n const id = chunk;\n return {\n label: assetsChunksList[chunk],\n key: id,\n children: ModulesModal(\n searchModule,\n searchChunk || defaultChunkId,\n (item) => {\n onModuleClick?.(item);\n setModalOpen(false);\n onClose?.();\n },\n ),\n };\n })}\n />\n ) : (\n <Empty description={'No modules found.'} />\n )}\n </Modal>\n </>\n );\n }}\n </ServerAPIProvider>\n </>\n );\n};\n\nconst ModulesModal = (\n searchModule: string,\n chunk: string,\n onModuleClick?: (module: any) => void | undefined,\n) => {\n return (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetSearchModuleInChunk}\n body={{ moduleName: String(searchModule), chunk }}\n >\n {(modules) => (\n <>\n {modules?.length !== 0 ? (\n <List\n className={styles['search-modal-list']}\n loading={!modules.length}\n itemLayout=\"horizontal\"\n pagination={{ position: 'bottom', align: 'center' }}\n dataSource={modules}\n renderItem={(item) => {\n const itemPathArr = item.relativePath.split(searchModule);\n return (\n <List.Item\n className={\n onModuleClick\n ? 'search-list-item clickable'\n : 'search-list-item'\n }\n key={`${item.path}-${item.relativePath}`}\n onClick={\n onModuleClick ? () => onModuleClick(item) : undefined\n }\n >\n <Skeleton avatar title={false} loading={!item.path} active>\n <List.Item.Meta\n key={`${item.path}-${item.relativePath}-meta`}\n description={\n <>\n <Typography.Text code>{'Module:'}</Typography.Text>\n {itemPathArr.map((cur, index) => {\n if (index < itemPathArr.length - 1) {\n return (\n <Typography.Text\n key={`${cur}-${index}`}\n style={{ fontWeight: 200 }}\n >\n {cur}\n <Typography.Text\n strong\n key={`${cur}-${index}-strong`}\n style={{ fontWeight: 600 }}\n >\n {searchModule}\n </Typography.Text>\n </Typography.Text>\n );\n }\n return (\n <Typography.Text style={{ fontWeight: 200 }}>\n {cur}\n </Typography.Text>\n );\n })}\n </>\n }\n />\n </Skeleton>\n </List.Item>\n );\n }}\n />\n ) : (\n <Empty />\n )}\n </>\n )}\n </ServerAPIProvider>\n );\n};\n"],"names":["Search","Input","SearchModal","onModuleClick","onClose","open","setOpen","isIcon","isModalOpen","setIsModalOpen","useState","searchModule","setSearchModule","searchChunk","setSearchChunk","modalOpen","undefined","setModalOpen","onSearch","useCallback","args","value","_event","showModal","handleOk","handleCancel","SearchOutlined","Button","styles","ServerAPIProvider","SDK","String","assetsChunksList","defaultChunkId","Object","Modal","Tabs","chunk","_i","id","ModulesModal","item","Empty","modules","List","itemPathArr","Skeleton","Typography","cur","index"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages/BundleSize/config.mjs","sources":["../../../src/pages/BundleSize/config.tsx"],"sourcesContent":["import { createContext } from 'react';\n\ninterface config {\n setModuleJumpList(ids: number[]): void;\n moduleJumpList: number[];\n}\n\nexport const ModuleGraphListContext = createContext<config>({\n setModuleJumpList(_ids: number[]): void {},\n moduleJumpList: [] as number[],\n});\n"],"names":["ModuleGraphListContext","createContext","_ids"],"mappings":";AAOO,MAAMA,yBAAyB,
|
|
1
|
+
{"version":3,"file":"pages/BundleSize/config.mjs","sources":["../../../src/pages/BundleSize/config.tsx"],"sourcesContent":["import { createContext } from 'react';\n\ninterface config {\n setModuleJumpList(ids: number[]): void;\n moduleJumpList: number[];\n}\n\nexport const ModuleGraphListContext = createContext<config>({\n setModuleJumpList(_ids: number[]): void {},\n moduleJumpList: [] as number[],\n});\n"],"names":["ModuleGraphListContext","createContext","_ids"],"mappings":";AAOO,MAAMA,yBAAyB,WAAHA,GAAGC,cAAsB;IAC1D,mBAAkBC,IAAc,GAAS;IACzC,gBAAgB,EAAE;AACpB"}
|
|
@@ -2,6 +2,6 @@ import { Client } from "@rsdoctor/types";
|
|
|
2
2
|
const maxModuleSize = 5000;
|
|
3
3
|
const constants_name = 'BundleSize';
|
|
4
4
|
const route = Client.RsdoctorClientRoutes.BundleSize;
|
|
5
|
-
export {
|
|
5
|
+
export { constants_name as name, maxModuleSize, route };
|
|
6
6
|
|
|
7
7
|
//# sourceMappingURL=constants.mjs.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
export * from "./constants.mjs";
|
|
1
2
|
import { jsx } from "react/jsx-runtime";
|
|
2
3
|
import { Col, Row } from "antd";
|
|
3
4
|
import "react";
|
|
4
5
|
import { Size } from "../../constants.mjs";
|
|
5
6
|
import { WebpackModulesOverall } from "./components/index.mjs";
|
|
6
|
-
export * from "./constants.mjs";
|
|
7
7
|
const Page = ()=>/*#__PURE__*/ jsx(Row, {
|
|
8
8
|
children: /*#__PURE__*/ jsx(Col, {
|
|
9
9
|
span: 24,
|
|
@@ -6,6 +6,6 @@ var constants_DevtoolsRuleClientConstant = /*#__PURE__*/ function(DevtoolsRuleCl
|
|
|
6
6
|
return DevtoolsRuleClientConstant;
|
|
7
7
|
}({});
|
|
8
8
|
const clsNamePrefix = 'module-analyze';
|
|
9
|
-
export { constants_DevtoolsRuleClientConstant as DevtoolsRuleClientConstant,
|
|
9
|
+
export { clsNamePrefix, constants_DevtoolsRuleClientConstant as DevtoolsRuleClientConstant, constants_name as name, route };
|
|
10
10
|
|
|
11
11
|
//# sourceMappingURL=constants.mjs.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
export * from "./constants.mjs";
|
|
1
2
|
import { jsx } from "react/jsx-runtime";
|
|
2
3
|
import "react";
|
|
3
4
|
import { Card } from "antd";
|
|
4
5
|
import { ResolverAnalysis } from "../../components/Resolver/analysis.mjs";
|
|
5
6
|
import { WebpackConfigurationViewer } from "../../components/Configuration/index.mjs";
|
|
6
|
-
export * from "./constants.mjs";
|
|
7
7
|
const Page = ()=>/*#__PURE__*/ jsx("div", {
|
|
8
8
|
children: /*#__PURE__*/ jsx(Card, {
|
|
9
9
|
title: "Webpack Resolver Analysis",
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export * from "./constants.mjs";
|
|
1
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
3
|
import "react";
|
|
3
4
|
import { Flex } from "antd";
|
|
@@ -7,7 +8,6 @@ import { BundleOverall, CompileOverall, ProjectOverall } from "../../components/
|
|
|
7
8
|
import { ResponsiveLayout } from "./responsiveLayout.mjs";
|
|
8
9
|
import { useProjectInfo } from "../../components/Layout/project-info-context.mjs";
|
|
9
10
|
import index_module from "./index.module.mjs";
|
|
10
|
-
export * from "./constants.mjs";
|
|
11
11
|
const Component = ()=>{
|
|
12
12
|
const { project } = useProjectInfo();
|
|
13
13
|
if (!project) return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages/Resources/BundleDiff/DiffContainer/assets.mjs","sources":["../../../../../src/pages/Resources/BundleDiff/DiffContainer/assets.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport {\n Button,\n Col,\n Divider,\n Row,\n Select,\n Space,\n Table,\n Tag,\n Tooltip,\n Typography,\n} from 'antd';\nimport { sumBy } from 'es-toolkit/compat';\nimport {\n CheckSquareOutlined,\n InfoCircleOutlined,\n MinusSquareOutlined,\n PlusSquareOutlined,\n SortAscendingOutlined,\n FileSearchOutlined,\n AppstoreAddOutlined,\n} from '@ant-design/icons';\nimport { Constants, SDK, Client } from '@rsdoctor/types';\nimport { BundleDiffTableAssetsData } from './types';\nimport { formatPercent, formatSize } from '../../../../utils';\nimport { Color, Size } from '../../../../constants';\nimport { Percent, SizePercent } from '../../../../components/Card/diff';\nimport { KeywordInput } from '../../../../components/Form/keyword';\nimport { ModuleRowForAsset } from './row';\nimport { ViewChanges } from './changes';\nimport { UpdateType, SortType } from './constants';\nimport { formatDiffSize } from './utils';\nimport { Graph } from '@rsdoctor/utils/common';\n\nconst fileTypes = {\n JS: Constants.JSExtensions,\n CSS: [Constants.CSSExtension],\n HTML: [Constants.HtmlExtension],\n Imgs: Constants.ImgExtensions,\n Fonts: Constants.FontExtensions,\n Media: Constants.MediaExtensions,\n Others: [],\n};\n\nconst definedExtensions = Object.values(fileTypes).flat();\n\nconst Name: React.FC<{ data: BundleDiffTableAssetsData }> = ({ data: r }) => {\n const name = (\n <Space>\n <Typography.Text strong>{r.alias}</Typography.Text>\n <Tooltip\n title={\n <Space style={{ color: 'inherit' }} direction=\"vertical\">\n {r.current ? (\n <Typography.Text style={{ color: 'inherit' }}>\n Current realpath: {r.current.path}\n </Typography.Text>\n ) : null}\n {r.baseline ? (\n <Typography.Text style={{ color: 'inherit' }}>\n Baseline realpath: {r.baseline.path}\n </Typography.Text>\n ) : null}\n </Space>\n }\n >\n <InfoCircleOutlined />\n </Tooltip>\n </Space>\n );\n\n if (r.baseline && !r.current) {\n // deleted\n return (\n <Space>\n <MinusSquareOutlined style={{ color: Color.Red }} />\n {name}\n </Space>\n );\n }\n\n if (!r.baseline && r.current) {\n // new\n return (\n <Space>\n <PlusSquareOutlined style={{ color: Color.Green }} />\n {name}\n </Space>\n );\n }\n\n if (r.baseline && r.current) {\n // update\n return (\n <Space>\n <CheckSquareOutlined style={{ color: Color.Yellow }} />\n {name}\n </Space>\n );\n }\n\n return name;\n};\n\nexport const Assets: React.FC<{\n outputFilename: string;\n baseline: SDK.ServerAPI.ResponseTypes[SDK.ServerAPI.API.GetBundleDiffSummary];\n current: SDK.ServerAPI.ResponseTypes[SDK.ServerAPI.API.GetBundleDiffSummary];\n}> = ({ baseline, current, outputFilename }) => {\n const bOutPutFileName = outputFilename;\n\n const [keyword, setKeyword] = useState<string>();\n const [selectedFileTypes, setSelectedFileTypes] = useState<string[]>([]);\n const [selectedUpdateTypes, setSelectedUpdateTypes] = useState<UpdateType[]>(\n [],\n );\n const [selectedSortType, setSelectedSortType] = useState<SortType>(\n SortType.Size,\n );\n const [selectedBAsset, setSelectedBAsset] = useState(null);\n const [selectedCAsset, setSelectedCAsset] = useState(null);\n\n const { assets: bAssets } = baseline.chunkGraph;\n const { assets: cAssets } = current.chunkGraph;\n\n const dataSource = useMemo(() => {\n const res: Record<string, BundleDiffTableAssetsData> = {};\n if (selectedBAsset && selectedCAsset) {\n res.choose = {\n alias: `${selectedBAsset} \\n ${selectedCAsset}`,\n current: cAssets.find((c: SDK.AssetData) => c.path === selectedCAsset),\n baseline: bAssets.find((b: SDK.AssetData) => b.path === selectedBAsset),\n };\n return Object.values(res);\n }\n\n bAssets.forEach((asset: SDK.AssetData) => {\n const alias = Graph.formatAssetName(asset.path, bOutPutFileName);\n if (!res[alias]) {\n res[alias] = {\n alias,\n baseline: asset,\n };\n } else {\n console.warn('[Baseline Asset Exists]: ', asset, res);\n }\n });\n\n cAssets.forEach((asset: SDK.AssetData) => {\n const alias = Graph.formatAssetName(asset.path, bOutPutFileName);\n if (!res[alias]) {\n res[alias] = { alias };\n }\n res[alias].current = asset;\n });\n\n return Object.values(res);\n }, [bAssets, cAssets, selectedBAsset, selectedCAsset]);\n\n const filteredDataSource = useMemo(() => {\n let list = dataSource.slice();\n\n if (keyword) {\n list = list.filter((e) => e.alias.indexOf(keyword) > -1);\n }\n\n if (selectedFileTypes.length) {\n const exts = selectedFileTypes\n .map((e) => fileTypes[e as keyof typeof fileTypes])\n .flat();\n\n const hasOthers = selectedFileTypes.indexOf('Others') > -1;\n\n list = list.filter((e) => {\n const asset = e.baseline! || e.current!;\n if (Graph.isAssetMatchExtensions(asset, exts)) {\n return true;\n }\n\n if (hasOthers) {\n return !Graph.isAssetMatchExtensions(asset, definedExtensions);\n }\n\n return false;\n });\n }\n\n if (selectedUpdateTypes.length) {\n list = list.filter((e) => {\n if (e.baseline && !e.current) {\n // deleted\n return selectedUpdateTypes.includes(UpdateType.Deleted);\n }\n\n if (!e.baseline && e.current) {\n // new\n return selectedUpdateTypes.includes(UpdateType.New);\n }\n\n if (e.baseline && e.current) {\n if (e.baseline.size === e.current.size) {\n // not changed\n return selectedUpdateTypes.includes(UpdateType.NotChanged);\n }\n // changed\n return selectedUpdateTypes.includes(UpdateType.Changed);\n }\n\n return false;\n });\n }\n\n if (selectedSortType) {\n if (selectedSortType === SortType.Name) {\n list.sort((a, b) => {\n return a.alias.localeCompare(b.alias);\n });\n } else {\n const { prev, others } = list.reduce(\n (t, c) => {\n if (c.current) {\n if (c.baseline) {\n t.prev.unshift(c);\n } else {\n t.prev.push(c);\n }\n } else {\n t.others.push(c);\n }\n return t;\n },\n {\n prev: [] as BundleDiffTableAssetsData[],\n others: [] as BundleDiffTableAssetsData[],\n },\n );\n\n list = [\n ...prev.sort((a, b) => {\n if (b.current && a.current) {\n if (selectedSortType === SortType.Delta) {\n const { percent: percentA } = Graph.diffAssetsByExtensions(\n baseline.chunkGraph,\n current.chunkGraph,\n (asset) =>\n Graph.formatAssetName(asset.path, bOutPutFileName) ===\n a.alias,\n );\n const { percent: percentB } = Graph.diffAssetsByExtensions(\n baseline.chunkGraph,\n current.chunkGraph,\n (asset) =>\n Graph.formatAssetName(asset.path, bOutPutFileName) ===\n b.alias,\n );\n return percentB - percentA;\n }\n return b.current!.size - a.current!.size;\n }\n return -1;\n }),\n ...others,\n ];\n }\n }\n\n return list;\n }, [\n dataSource,\n keyword,\n selectedFileTypes,\n selectedUpdateTypes,\n selectedSortType,\n ]);\n\n const cSize = useMemo(\n () =>\n sumBy(filteredDataSource, (e) => (e.current ? e.current.size : 0)) || 0,\n [filteredDataSource],\n );\n const bSize = useMemo(\n () =>\n sumBy(filteredDataSource, (e) => (e.baseline ? e.baseline.size : 0)) || 0,\n [filteredDataSource],\n );\n\n return (\n <Row gutter={[Size.BasePadding, Size.BasePadding]}>\n <Col span={24}>\n <Space wrap>\n <KeywordInput\n icon={<FileSearchOutlined />}\n label=\"\"\n labelStyle={{ width: 45 }}\n placeholder=\"Search by file name\"\n onChange={(e) => {\n setKeyword(e);\n }}\n />\n <Select\n mode=\"multiple\"\n placeholder=\"Filter by file type\"\n style={{ width: 250 }}\n options={Object.keys(fileTypes).map((e) => ({\n label: e,\n value: e,\n }))}\n allowClear\n onChange={(e) => {\n setSelectedFileTypes(e);\n }}\n />\n <Select\n mode=\"multiple\"\n placeholder=\"Filter by file changed type\"\n style={{ width: 200 }}\n options={Object.values(UpdateType).map((e) => ({\n label: e,\n value: e,\n }))}\n allowClear\n onChange={(e) => {\n setSelectedUpdateTypes(e);\n }}\n />\n <Select\n suffixIcon={<SortAscendingOutlined />}\n // style={{ width: 150 }}\n options={Object.values(SortType).map((e) => ({\n label: e,\n value: e,\n }))}\n value={selectedSortType}\n onChange={(e) => {\n setSelectedSortType(e);\n }}\n />\n </Space>\n <Row style={{ marginTop: 10 }} gutter={[6, 6]}>\n <Col>\n <Button>Select Baseline Asset and Current Asset to Diff </Button>\n </Col>\n <Col>\n <Select\n allowClear\n placeholder=\"select baseline assets\"\n showSearch\n style={{ width: 300 }}\n options={Object.values(baseline.chunkGraph.assets).map((e) => ({\n label: e.path,\n value: e.path,\n }))}\n onChange={(e) => setSelectedBAsset(e)}\n />\n </Col>\n <Col>\n <Select\n allowClear\n placeholder=\"select current assets\"\n showSearch\n style={{ width: 300 }}\n options={Object.values(current.chunkGraph.assets).map((e) => ({\n label: e.path,\n value: e.path,\n }))}\n onChange={(e) => setSelectedCAsset(e)}\n />\n </Col>\n </Row>\n </Col>\n <Col span={24}>\n <Table\n bordered\n sticky={{ offsetHeader: 54 }}\n pagination={{\n pageSize: 20,\n size: 'small',\n }}\n dataSource={filteredDataSource}\n rowKey={(e) => e.alias}\n expandable={{\n expandedRowRender: (r) => {\n return (\n <div style={{ margin: Size.BasePadding / 3 }}>\n <ModuleRowForAsset\n data={r}\n baseline={baseline}\n current={current}\n />\n </div>\n );\n },\n columnTitle: (\n <Tooltip\n title=\"Click to expand row to see the modules which the chunk contains\"\n placement=\"left\"\n >\n <AppstoreAddOutlined style={{ cursor: 'pointer' }} />\n </Tooltip>\n ),\n }}\n columns={[\n {\n title: (\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n filtered assets is {filteredDataSource.length}\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit' }}>\n total assets is {dataSource.length}\n </Typography.Text>\n </Space>\n }\n >\n <Typography.Text strong>Assets</Typography.Text>\n <Divider type=\"vertical\" />\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 10, fontWeight: 400, marginRight: 4 }}\n >\n {filteredDataSource.length}/{dataSource.length}\n </Typography.Text>\n <InfoCircleOutlined />\n </Tooltip>\n ),\n render: (_v, r) => <Name data={r} />,\n },\n {\n title: () => {\n const cs = formatSize(cSize);\n const diff = Graph.diffSize(bSize, cSize);\n return (\n <Tooltip\n title={`Current size is ${cs}, Delta is ${formatPercent(diff.percent)}`}\n >\n <Typography.Text strong>Current</Typography.Text>\n <Divider type=\"vertical\" />\n <Typography.Text\n style={{ fontSize: 10, fontWeight: 400, marginRight: 4 }}\n >\n <Typography.Text\n style={{ fontSize: 'inherit', marginRight: 8 }}\n >\n {cs}\n </Typography.Text>\n <SizePercent\n fontSize={'inherit'}\n baseline={bSize}\n current={cSize}\n />\n {formatDiffSize(\n bSize,\n cSize,\n bSize > cSize\n ? Client.RsdoctorClientDiffState.Down\n : Client.RsdoctorClientDiffState.Up,\n { fontSize: 10, fontWeight: 400, marginLeft: 4 },\n )}\n </Typography.Text>\n <InfoCircleOutlined />\n </Tooltip>\n );\n },\n render: (_v, r) => {\n if (r.current) {\n const { percent, state } = Graph.diffAssetsByExtensions(\n baseline.chunkGraph,\n current.chunkGraph,\n (asset) =>\n Graph.formatAssetName(asset.path, bOutPutFileName) ===\n r.alias,\n );\n const isInitial = Graph.isInitialAsset(\n r.current,\n current.chunkGraph.chunks,\n );\n return (\n <Space>\n <Typography.Text>\n {formatSize(r.current.size)}\n </Typography.Text>\n <Percent percent={percent} state={state} />\n {isInitial ? <Tag color={Color.Blue}>initial</Tag> : null}\n </Space>\n );\n }\n return '-';\n },\n },\n {\n title: () => {\n const bs = formatSize(bSize);\n return (\n <Tooltip title={`Baseline size is ${bs}`}>\n <Typography.Text strong>Baseline</Typography.Text>\n <Divider type=\"vertical\" />\n <Typography.Text\n style={{ fontSize: 10, fontWeight: 400, marginRight: 4 }}\n >\n {bs}\n </Typography.Text>\n <InfoCircleOutlined />\n </Tooltip>\n );\n },\n render: (_v, r) => {\n if (r.baseline) {\n const isInitial = Graph.isInitialAsset(\n r.baseline,\n baseline.chunkGraph.chunks,\n );\n return (\n <Space>\n <Typography.Text>\n {formatSize(r.baseline.size)}\n </Typography.Text>\n {isInitial ? <Tag color={Color.Blue}>initial</Tag> : null}\n </Space>\n );\n }\n return '-';\n },\n },\n {\n title: 'Actions',\n key: 'actions',\n render: (_v, r) => {\n return (\n <ViewChanges\n file={r.alias}\n data={[\n {\n baseline: r.baseline?.content,\n current: r.current?.content,\n group: 'assets',\n },\n ]}\n />\n );\n },\n },\n ]}\n />\n </Col>\n </Row>\n );\n};\n"],"names":["fileTypes","Constants","definedExtensions","Object","Name","r","name","Space","Typography","Tooltip","InfoCircleOutlined","MinusSquareOutlined","Color","PlusSquareOutlined","CheckSquareOutlined","Assets","baseline","current","outputFilename","bOutPutFileName","keyword","setKeyword","useState","selectedFileTypes","setSelectedFileTypes","selectedUpdateTypes","setSelectedUpdateTypes","selectedSortType","setSelectedSortType","SortType","selectedBAsset","setSelectedBAsset","selectedCAsset","setSelectedCAsset","bAssets","cAssets","dataSource","useMemo","res","c","b","asset","alias","Graph","console","filteredDataSource","list","e","exts","hasOthers","UpdateType","a","prev","others","t","percentA","percentB","cSize","sumBy","bSize","Row","Size","Col","KeywordInput","FileSearchOutlined","Select","SortAscendingOutlined","Button","Table","ModuleRowForAsset","AppstoreAddOutlined","Divider","_v","cs","formatSize","diff","formatPercent","SizePercent","formatDiffSize","Client","percent","state","isInitial","Percent","Tag","bs","ViewChanges"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pages/Resources/BundleDiff/DiffContainer/assets.mjs","sources":["../../../../../src/pages/Resources/BundleDiff/DiffContainer/assets.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport {\n Button,\n Col,\n Divider,\n Row,\n Select,\n Space,\n Table,\n Tag,\n Tooltip,\n Typography,\n} from 'antd';\nimport { sumBy } from 'es-toolkit/compat';\nimport {\n CheckSquareOutlined,\n InfoCircleOutlined,\n MinusSquareOutlined,\n PlusSquareOutlined,\n SortAscendingOutlined,\n FileSearchOutlined,\n AppstoreAddOutlined,\n} from '@ant-design/icons';\nimport { Constants, SDK, Client } from '@rsdoctor/types';\nimport { BundleDiffTableAssetsData } from './types';\nimport { formatPercent, formatSize } from '../../../../utils';\nimport { Color, Size } from '../../../../constants';\nimport { Percent, SizePercent } from '../../../../components/Card/diff';\nimport { KeywordInput } from '../../../../components/Form/keyword';\nimport { ModuleRowForAsset } from './row';\nimport { ViewChanges } from './changes';\nimport { UpdateType, SortType } from './constants';\nimport { formatDiffSize } from './utils';\nimport { Graph } from '@rsdoctor/utils/common';\n\nconst fileTypes = {\n JS: Constants.JSExtensions,\n CSS: [Constants.CSSExtension],\n HTML: [Constants.HtmlExtension],\n Imgs: Constants.ImgExtensions,\n Fonts: Constants.FontExtensions,\n Media: Constants.MediaExtensions,\n Others: [],\n};\n\nconst definedExtensions = Object.values(fileTypes).flat();\n\nconst Name: React.FC<{ data: BundleDiffTableAssetsData }> = ({ data: r }) => {\n const name = (\n <Space>\n <Typography.Text strong>{r.alias}</Typography.Text>\n <Tooltip\n title={\n <Space style={{ color: 'inherit' }} direction=\"vertical\">\n {r.current ? (\n <Typography.Text style={{ color: 'inherit' }}>\n Current realpath: {r.current.path}\n </Typography.Text>\n ) : null}\n {r.baseline ? (\n <Typography.Text style={{ color: 'inherit' }}>\n Baseline realpath: {r.baseline.path}\n </Typography.Text>\n ) : null}\n </Space>\n }\n >\n <InfoCircleOutlined />\n </Tooltip>\n </Space>\n );\n\n if (r.baseline && !r.current) {\n // deleted\n return (\n <Space>\n <MinusSquareOutlined style={{ color: Color.Red }} />\n {name}\n </Space>\n );\n }\n\n if (!r.baseline && r.current) {\n // new\n return (\n <Space>\n <PlusSquareOutlined style={{ color: Color.Green }} />\n {name}\n </Space>\n );\n }\n\n if (r.baseline && r.current) {\n // update\n return (\n <Space>\n <CheckSquareOutlined style={{ color: Color.Yellow }} />\n {name}\n </Space>\n );\n }\n\n return name;\n};\n\nexport const Assets: React.FC<{\n outputFilename: string;\n baseline: SDK.ServerAPI.ResponseTypes[SDK.ServerAPI.API.GetBundleDiffSummary];\n current: SDK.ServerAPI.ResponseTypes[SDK.ServerAPI.API.GetBundleDiffSummary];\n}> = ({ baseline, current, outputFilename }) => {\n const bOutPutFileName = outputFilename;\n\n const [keyword, setKeyword] = useState<string>();\n const [selectedFileTypes, setSelectedFileTypes] = useState<string[]>([]);\n const [selectedUpdateTypes, setSelectedUpdateTypes] = useState<UpdateType[]>(\n [],\n );\n const [selectedSortType, setSelectedSortType] = useState<SortType>(\n SortType.Size,\n );\n const [selectedBAsset, setSelectedBAsset] = useState(null);\n const [selectedCAsset, setSelectedCAsset] = useState(null);\n\n const { assets: bAssets } = baseline.chunkGraph;\n const { assets: cAssets } = current.chunkGraph;\n\n const dataSource = useMemo(() => {\n const res: Record<string, BundleDiffTableAssetsData> = {};\n if (selectedBAsset && selectedCAsset) {\n res.choose = {\n alias: `${selectedBAsset} \\n ${selectedCAsset}`,\n current: cAssets.find((c: SDK.AssetData) => c.path === selectedCAsset),\n baseline: bAssets.find((b: SDK.AssetData) => b.path === selectedBAsset),\n };\n return Object.values(res);\n }\n\n bAssets.forEach((asset: SDK.AssetData) => {\n const alias = Graph.formatAssetName(asset.path, bOutPutFileName);\n if (!res[alias]) {\n res[alias] = {\n alias,\n baseline: asset,\n };\n } else {\n console.warn('[Baseline Asset Exists]: ', asset, res);\n }\n });\n\n cAssets.forEach((asset: SDK.AssetData) => {\n const alias = Graph.formatAssetName(asset.path, bOutPutFileName);\n if (!res[alias]) {\n res[alias] = { alias };\n }\n res[alias].current = asset;\n });\n\n return Object.values(res);\n }, [bAssets, cAssets, selectedBAsset, selectedCAsset]);\n\n const filteredDataSource = useMemo(() => {\n let list = dataSource.slice();\n\n if (keyword) {\n list = list.filter((e) => e.alias.indexOf(keyword) > -1);\n }\n\n if (selectedFileTypes.length) {\n const exts = selectedFileTypes\n .map((e) => fileTypes[e as keyof typeof fileTypes])\n .flat();\n\n const hasOthers = selectedFileTypes.indexOf('Others') > -1;\n\n list = list.filter((e) => {\n const asset = e.baseline! || e.current!;\n if (Graph.isAssetMatchExtensions(asset, exts)) {\n return true;\n }\n\n if (hasOthers) {\n return !Graph.isAssetMatchExtensions(asset, definedExtensions);\n }\n\n return false;\n });\n }\n\n if (selectedUpdateTypes.length) {\n list = list.filter((e) => {\n if (e.baseline && !e.current) {\n // deleted\n return selectedUpdateTypes.includes(UpdateType.Deleted);\n }\n\n if (!e.baseline && e.current) {\n // new\n return selectedUpdateTypes.includes(UpdateType.New);\n }\n\n if (e.baseline && e.current) {\n if (e.baseline.size === e.current.size) {\n // not changed\n return selectedUpdateTypes.includes(UpdateType.NotChanged);\n }\n // changed\n return selectedUpdateTypes.includes(UpdateType.Changed);\n }\n\n return false;\n });\n }\n\n if (selectedSortType) {\n if (selectedSortType === SortType.Name) {\n list.sort((a, b) => {\n return a.alias.localeCompare(b.alias);\n });\n } else {\n const { prev, others } = list.reduce(\n (t, c) => {\n if (c.current) {\n if (c.baseline) {\n t.prev.unshift(c);\n } else {\n t.prev.push(c);\n }\n } else {\n t.others.push(c);\n }\n return t;\n },\n {\n prev: [] as BundleDiffTableAssetsData[],\n others: [] as BundleDiffTableAssetsData[],\n },\n );\n\n list = [\n ...prev.sort((a, b) => {\n if (b.current && a.current) {\n if (selectedSortType === SortType.Delta) {\n const { percent: percentA } = Graph.diffAssetsByExtensions(\n baseline.chunkGraph,\n current.chunkGraph,\n (asset) =>\n Graph.formatAssetName(asset.path, bOutPutFileName) ===\n a.alias,\n );\n const { percent: percentB } = Graph.diffAssetsByExtensions(\n baseline.chunkGraph,\n current.chunkGraph,\n (asset) =>\n Graph.formatAssetName(asset.path, bOutPutFileName) ===\n b.alias,\n );\n return percentB - percentA;\n }\n return b.current!.size - a.current!.size;\n }\n return -1;\n }),\n ...others,\n ];\n }\n }\n\n return list;\n }, [\n dataSource,\n keyword,\n selectedFileTypes,\n selectedUpdateTypes,\n selectedSortType,\n ]);\n\n const cSize = useMemo(\n () =>\n sumBy(filteredDataSource, (e) => (e.current ? e.current.size : 0)) || 0,\n [filteredDataSource],\n );\n const bSize = useMemo(\n () =>\n sumBy(filteredDataSource, (e) => (e.baseline ? e.baseline.size : 0)) || 0,\n [filteredDataSource],\n );\n\n return (\n <Row gutter={[Size.BasePadding, Size.BasePadding]}>\n <Col span={24}>\n <Space wrap>\n <KeywordInput\n icon={<FileSearchOutlined />}\n label=\"\"\n labelStyle={{ width: 45 }}\n placeholder=\"Search by file name\"\n onChange={(e) => {\n setKeyword(e);\n }}\n />\n <Select\n mode=\"multiple\"\n placeholder=\"Filter by file type\"\n style={{ width: 250 }}\n options={Object.keys(fileTypes).map((e) => ({\n label: e,\n value: e,\n }))}\n allowClear\n onChange={(e) => {\n setSelectedFileTypes(e);\n }}\n />\n <Select\n mode=\"multiple\"\n placeholder=\"Filter by file changed type\"\n style={{ width: 200 }}\n options={Object.values(UpdateType).map((e) => ({\n label: e,\n value: e,\n }))}\n allowClear\n onChange={(e) => {\n setSelectedUpdateTypes(e);\n }}\n />\n <Select\n suffixIcon={<SortAscendingOutlined />}\n // style={{ width: 150 }}\n options={Object.values(SortType).map((e) => ({\n label: e,\n value: e,\n }))}\n value={selectedSortType}\n onChange={(e) => {\n setSelectedSortType(e);\n }}\n />\n </Space>\n <Row style={{ marginTop: 10 }} gutter={[6, 6]}>\n <Col>\n <Button>Select Baseline Asset and Current Asset to Diff </Button>\n </Col>\n <Col>\n <Select\n allowClear\n placeholder=\"select baseline assets\"\n showSearch\n style={{ width: 300 }}\n options={Object.values(baseline.chunkGraph.assets).map((e) => ({\n label: e.path,\n value: e.path,\n }))}\n onChange={(e) => setSelectedBAsset(e)}\n />\n </Col>\n <Col>\n <Select\n allowClear\n placeholder=\"select current assets\"\n showSearch\n style={{ width: 300 }}\n options={Object.values(current.chunkGraph.assets).map((e) => ({\n label: e.path,\n value: e.path,\n }))}\n onChange={(e) => setSelectedCAsset(e)}\n />\n </Col>\n </Row>\n </Col>\n <Col span={24}>\n <Table\n bordered\n sticky={{ offsetHeader: 54 }}\n pagination={{\n pageSize: 20,\n size: 'small',\n }}\n dataSource={filteredDataSource}\n rowKey={(e) => e.alias}\n expandable={{\n expandedRowRender: (r) => {\n return (\n <div style={{ margin: Size.BasePadding / 3 }}>\n <ModuleRowForAsset\n data={r}\n baseline={baseline}\n current={current}\n />\n </div>\n );\n },\n columnTitle: (\n <Tooltip\n title=\"Click to expand row to see the modules which the chunk contains\"\n placement=\"left\"\n >\n <AppstoreAddOutlined style={{ cursor: 'pointer' }} />\n </Tooltip>\n ),\n }}\n columns={[\n {\n title: (\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n filtered assets is {filteredDataSource.length}\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit' }}>\n total assets is {dataSource.length}\n </Typography.Text>\n </Space>\n }\n >\n <Typography.Text strong>Assets</Typography.Text>\n <Divider type=\"vertical\" />\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 10, fontWeight: 400, marginRight: 4 }}\n >\n {filteredDataSource.length}/{dataSource.length}\n </Typography.Text>\n <InfoCircleOutlined />\n </Tooltip>\n ),\n render: (_v, r) => <Name data={r} />,\n },\n {\n title: () => {\n const cs = formatSize(cSize);\n const diff = Graph.diffSize(bSize, cSize);\n return (\n <Tooltip\n title={`Current size is ${cs}, Delta is ${formatPercent(diff.percent)}`}\n >\n <Typography.Text strong>Current</Typography.Text>\n <Divider type=\"vertical\" />\n <Typography.Text\n style={{ fontSize: 10, fontWeight: 400, marginRight: 4 }}\n >\n <Typography.Text\n style={{ fontSize: 'inherit', marginRight: 8 }}\n >\n {cs}\n </Typography.Text>\n <SizePercent\n fontSize={'inherit'}\n baseline={bSize}\n current={cSize}\n />\n {formatDiffSize(\n bSize,\n cSize,\n bSize > cSize\n ? Client.RsdoctorClientDiffState.Down\n : Client.RsdoctorClientDiffState.Up,\n { fontSize: 10, fontWeight: 400, marginLeft: 4 },\n )}\n </Typography.Text>\n <InfoCircleOutlined />\n </Tooltip>\n );\n },\n render: (_v, r) => {\n if (r.current) {\n const { percent, state } = Graph.diffAssetsByExtensions(\n baseline.chunkGraph,\n current.chunkGraph,\n (asset) =>\n Graph.formatAssetName(asset.path, bOutPutFileName) ===\n r.alias,\n );\n const isInitial = Graph.isInitialAsset(\n r.current,\n current.chunkGraph.chunks,\n );\n return (\n <Space>\n <Typography.Text>\n {formatSize(r.current.size)}\n </Typography.Text>\n <Percent percent={percent} state={state} />\n {isInitial ? <Tag color={Color.Blue}>initial</Tag> : null}\n </Space>\n );\n }\n return '-';\n },\n },\n {\n title: () => {\n const bs = formatSize(bSize);\n return (\n <Tooltip title={`Baseline size is ${bs}`}>\n <Typography.Text strong>Baseline</Typography.Text>\n <Divider type=\"vertical\" />\n <Typography.Text\n style={{ fontSize: 10, fontWeight: 400, marginRight: 4 }}\n >\n {bs}\n </Typography.Text>\n <InfoCircleOutlined />\n </Tooltip>\n );\n },\n render: (_v, r) => {\n if (r.baseline) {\n const isInitial = Graph.isInitialAsset(\n r.baseline,\n baseline.chunkGraph.chunks,\n );\n return (\n <Space>\n <Typography.Text>\n {formatSize(r.baseline.size)}\n </Typography.Text>\n {isInitial ? <Tag color={Color.Blue}>initial</Tag> : null}\n </Space>\n );\n }\n return '-';\n },\n },\n {\n title: 'Actions',\n key: 'actions',\n render: (_v, r) => {\n return (\n <ViewChanges\n file={r.alias}\n data={[\n {\n baseline: r.baseline?.content,\n current: r.current?.content,\n group: 'assets',\n },\n ]}\n />\n );\n },\n },\n ]}\n />\n </Col>\n </Row>\n );\n};\n"],"names":["fileTypes","Constants","definedExtensions","Object","Name","r","name","Space","Typography","Tooltip","InfoCircleOutlined","MinusSquareOutlined","Color","PlusSquareOutlined","CheckSquareOutlined","Assets","baseline","current","outputFilename","bOutPutFileName","keyword","setKeyword","useState","selectedFileTypes","setSelectedFileTypes","selectedUpdateTypes","setSelectedUpdateTypes","selectedSortType","setSelectedSortType","SortType","selectedBAsset","setSelectedBAsset","selectedCAsset","setSelectedCAsset","bAssets","cAssets","dataSource","useMemo","res","c","b","asset","alias","Graph","console","filteredDataSource","list","e","exts","hasOthers","UpdateType","a","prev","others","t","percentA","percentB","cSize","sumBy","bSize","Row","Size","Col","KeywordInput","FileSearchOutlined","Select","SortAscendingOutlined","Button","Table","ModuleRowForAsset","AppstoreAddOutlined","Divider","_v","cs","formatSize","diff","formatPercent","SizePercent","formatDiffSize","Client","percent","state","isInitial","Percent","Tag","bs","ViewChanges"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages/Resources/BundleDiff/DiffContainer/changes.mjs","sources":["../../../../../src/pages/Resources/BundleDiff/DiffContainer/changes.tsx"],"sourcesContent":["import { DiffOutlined } from '@ant-design/icons';\nimport { Col, Row, Segmented, Typography } from 'antd';\nimport React, { useState } from 'react';\nimport { DiffViewer } from 'src/components/base';\nimport { TextDrawer } from '../../../../components/TextDrawer';\nimport { Size } from '../../../../constants';\n\ninterface ViewChangesContentProps {\n file: string;\n data: {\n baseline?: string | void;\n current: string | void;\n baselineTitle?: string;\n currentTitle?: string;\n group: string;\n }[];\n}\n\nconst ViewChangesContent: React.FC<ViewChangesContentProps> = ({\n file,\n data,\n}) => {\n const [group, setGroup] = useState(data[0].group);\n\n const match = data.find((e) => e.group === group);\n\n return (\n <Row\n wrap\n gutter={[Size.BasePadding, Size.BasePadding]}\n style={{ height: '100%', alignContent: 'flex-start' }}\n >\n {data.length > 1 ? (\n <Col span={24}>\n <Segmented\n value={group}\n options={data.map((e) => e.group)}\n onChange={(e) => setGroup(e as string)}\n />\n </Col>\n ) : null}\n {match ? (\n <React.Fragment key={group}>\n <Col span={24}>\n <Typography.Text strong>\n {match.baselineTitle || 'Baseline'} ⟷{' '}\n {match.currentTitle || 'Current'}\n </Typography.Text>\n </Col>\n <Col span={24}>\n <DiffViewer\n originalFilePath={file}\n modifiedFilePath={file}\n original={match.baseline || ''}\n modified={match.current || ''}\n />\n </Col>\n </React.Fragment>\n ) : null}\n </Row>\n );\n};\n\nexport const ViewChanges: React.FC<\n ViewChangesContentProps & { text?: string }\n> = ({ text = 'View Changes', ...props }) => {\n return (\n <TextDrawer\n text={text}\n buttonProps={{\n size: 'small',\n icon: <DiffOutlined />,\n }}\n drawerProps={{\n destroyOnClose: true,\n title: `Content diff for \"${props.file}\"`,\n }}\n >\n <ViewChangesContent {...props} />\n </TextDrawer>\n );\n};\n"],"names":["ViewChangesContent","file","data","group","setGroup","useState","match","e","Row","Size","Col","Segmented","React","Typography","DiffViewer","ViewChanges","text","props","TextDrawer","DiffOutlined"],"mappings":";;;;;;;AAkBA,MAAMA,qBAAwD,CAAC,EAC7DC,IAAI,EACJC,IAAI,EACL;IACC,MAAM,CAACC,OAAOC,SAAS,GAAGC,SAASH,IAAI,CAAC,EAAE,CAAC,KAAK;IAEhD,MAAMI,QAAQJ,KAAK,IAAI,CAAC,CAACK,IAAMA,EAAE,KAAK,KAAKJ;IAE3C,OAAO,WAAP,GACE,KAACK,KAAGA;QACF,MAAI;QACJ,QAAQ;YAACC,KAAK,WAAW;YAAEA,KAAK,WAAW;SAAC;QAC5C,OAAO;YAAE,QAAQ;YAAQ,cAAc;QAAa;;YAEnDP,KAAK,MAAM,GAAG,IAAI,WAAJ,GACb,IAACQ,KAAGA;gBAAC,MAAM;0BACT,kBAACC,WAASA;oBACR,OAAOR;oBACP,SAASD,KAAK,GAAG,CAAC,CAACK,IAAMA,EAAE,KAAK;oBAChC,UAAU,CAACA,IAAMH,SAASG;;iBAG5B;YACHD,QAAQ,WAARA,GACC,KAACM,MAAAA,QAAc;;kCACb,IAACF,KAAGA;wBAAC,MAAM;kCACT,mBAACG,WAAW,IAAI;4BAAC,QAAM;;gCACpBP,MAAM,aAAa,IAAI;gCAAW;gCAAG;gCACrCA,MAAM,YAAY,IAAI;;;;kCAG3B,IAACI,KAAGA;wBAAC,MAAM;kCACT,kBAACI,YAAUA;4BACT,kBAAkBb;4BAClB,kBAAkBA;4BAClB,UAAUK,MAAM,QAAQ,IAAI;4BAC5B,UAAUA,MAAM,OAAO,IAAI;;;;eAZZH,SAgBnB;;;AAGV;AAEO,MAAMY,cAET,CAAC,EAAEC,OAAO,cAAc,EAAE,GAAGC,OAAO,GAC/B,WAAP,GACE,IAACC,YAAUA;QACT,MAAMF;QACN,aAAa;YACX,MAAM;YACN,MAAM,WAAN,GAAM,IAACG,cAAYA,CAAAA;QACrB;QACA,aAAa;YACX,gBAAgB;YAChB,OAAO,CAAC,kBAAkB,EAAEF,MAAM,IAAI,CAAC,CAAC,CAAC;QAC3C;kBAEA,kBAACjB,
|
|
1
|
+
{"version":3,"file":"pages/Resources/BundleDiff/DiffContainer/changes.mjs","sources":["../../../../../src/pages/Resources/BundleDiff/DiffContainer/changes.tsx"],"sourcesContent":["import { DiffOutlined } from '@ant-design/icons';\nimport { Col, Row, Segmented, Typography } from 'antd';\nimport React, { useState } from 'react';\nimport { DiffViewer } from 'src/components/base';\nimport { TextDrawer } from '../../../../components/TextDrawer';\nimport { Size } from '../../../../constants';\n\ninterface ViewChangesContentProps {\n file: string;\n data: {\n baseline?: string | void;\n current: string | void;\n baselineTitle?: string;\n currentTitle?: string;\n group: string;\n }[];\n}\n\nconst ViewChangesContent: React.FC<ViewChangesContentProps> = ({\n file,\n data,\n}) => {\n const [group, setGroup] = useState(data[0].group);\n\n const match = data.find((e) => e.group === group);\n\n return (\n <Row\n wrap\n gutter={[Size.BasePadding, Size.BasePadding]}\n style={{ height: '100%', alignContent: 'flex-start' }}\n >\n {data.length > 1 ? (\n <Col span={24}>\n <Segmented\n value={group}\n options={data.map((e) => e.group)}\n onChange={(e) => setGroup(e as string)}\n />\n </Col>\n ) : null}\n {match ? (\n <React.Fragment key={group}>\n <Col span={24}>\n <Typography.Text strong>\n {match.baselineTitle || 'Baseline'} ⟷{' '}\n {match.currentTitle || 'Current'}\n </Typography.Text>\n </Col>\n <Col span={24}>\n <DiffViewer\n originalFilePath={file}\n modifiedFilePath={file}\n original={match.baseline || ''}\n modified={match.current || ''}\n />\n </Col>\n </React.Fragment>\n ) : null}\n </Row>\n );\n};\n\nexport const ViewChanges: React.FC<\n ViewChangesContentProps & { text?: string }\n> = ({ text = 'View Changes', ...props }) => {\n return (\n <TextDrawer\n text={text}\n buttonProps={{\n size: 'small',\n icon: <DiffOutlined />,\n }}\n drawerProps={{\n destroyOnClose: true,\n title: `Content diff for \"${props.file}\"`,\n }}\n >\n <ViewChangesContent {...props} />\n </TextDrawer>\n );\n};\n"],"names":["ViewChangesContent","file","data","group","setGroup","useState","match","e","Row","Size","Col","Segmented","React","Typography","DiffViewer","ViewChanges","text","props","TextDrawer","DiffOutlined"],"mappings":";;;;;;;AAkBA,MAAMA,qBAAwD,CAAC,EAC7DC,IAAI,EACJC,IAAI,EACL;IACC,MAAM,CAACC,OAAOC,SAAS,GAAGC,SAASH,IAAI,CAAC,EAAE,CAAC,KAAK;IAEhD,MAAMI,QAAQJ,KAAK,IAAI,CAAC,CAACK,IAAMA,EAAE,KAAK,KAAKJ;IAE3C,OAAO,WAAP,GACE,KAACK,KAAGA;QACF,MAAI;QACJ,QAAQ;YAACC,KAAK,WAAW;YAAEA,KAAK,WAAW;SAAC;QAC5C,OAAO;YAAE,QAAQ;YAAQ,cAAc;QAAa;;YAEnDP,KAAK,MAAM,GAAG,IAAI,WAAJ,GACb,IAACQ,KAAGA;gBAAC,MAAM;0BACT,kBAACC,WAASA;oBACR,OAAOR;oBACP,SAASD,KAAK,GAAG,CAAC,CAACK,IAAMA,EAAE,KAAK;oBAChC,UAAU,CAACA,IAAMH,SAASG;;iBAG5B;YACHD,QAAQ,WAARA,GACC,KAACM,MAAAA,QAAc;;kCACb,IAACF,KAAGA;wBAAC,MAAM;kCACT,mBAACG,WAAW,IAAI;4BAAC,QAAM;;gCACpBP,MAAM,aAAa,IAAI;gCAAW;gCAAG;gCACrCA,MAAM,YAAY,IAAI;;;;kCAG3B,IAACI,KAAGA;wBAAC,MAAM;kCACT,kBAACI,YAAUA;4BACT,kBAAkBb;4BAClB,kBAAkBA;4BAClB,UAAUK,MAAM,QAAQ,IAAI;4BAC5B,UAAUA,MAAM,OAAO,IAAI;;;;eAZZH,SAgBnB;;;AAGV;AAEO,MAAMY,cAET,CAAC,EAAEC,OAAO,cAAc,EAAE,GAAGC,OAAO,GAC/B,WAAP,GACE,IAACC,YAAUA;QACT,MAAMF;QACN,aAAa;YACX,MAAM;YACN,MAAM,WAAN,GAAM,IAACG,cAAYA,CAAAA;QACrB;QACA,aAAa;YACX,gBAAgB;YAChB,OAAO,CAAC,kBAAkB,EAAEF,MAAM,IAAI,CAAC,CAAC,CAAC;QAC3C;kBAEA,kBAACjB,oBAAkBA;YAAE,GAAGiB,KAAK"}
|