@rsdoctor/components 1.1.5 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Charts/TreeMap.js +4 -7
- package/dist/components/Charts/TreeMap.js.map +1 -1
- package/dist/components/Loader/executions.js +2 -2
- package/dist/components/Loader/executions.js.map +1 -1
- package/dist/components/Overall/help-center.js +2 -1
- package/dist/components/Overall/help-center.js.map +1 -1
- package/dist/pages/BundleSize/components/cards.js +8 -1
- package/dist/pages/BundleSize/components/cards.js.map +1 -1
- package/dist/pages/BundleSize/components/search-modal.js +23 -13
- package/dist/pages/BundleSize/components/search-modal.js.map +1 -1
- package/package.json +4 -4
|
@@ -193,11 +193,6 @@ const AssetTreemapWithFilter = ({ treeData, onChartClick }) => {
|
|
|
193
193
|
seriesId: "bundle-treemap",
|
|
194
194
|
targetNodeId: nodeId.toString()
|
|
195
195
|
});
|
|
196
|
-
echartsInstance.dispatchAction({
|
|
197
|
-
type: "highlight",
|
|
198
|
-
seriesId: "bundle-treemap",
|
|
199
|
-
targetNodeId: nodeId.toString()
|
|
200
|
-
});
|
|
201
196
|
}
|
|
202
197
|
setSearchModalOpen(false);
|
|
203
198
|
};
|
|
@@ -250,7 +245,8 @@ const AssetTreemapWithFilter = ({ treeData, onChartClick }) => {
|
|
|
250
245
|
onChange: (e) => setCheckedAssets(e.target.checked ? assetNames : []),
|
|
251
246
|
style: { marginBottom: 4 },
|
|
252
247
|
children: "ALL / NONE"
|
|
253
|
-
}
|
|
248
|
+
},
|
|
249
|
+
"all-none-checkbox"
|
|
254
250
|
),
|
|
255
251
|
/* @__PURE__ */ jsx(
|
|
256
252
|
Checkbox.Group,
|
|
@@ -259,7 +255,8 @@ const AssetTreemapWithFilter = ({ treeData, onChartClick }) => {
|
|
|
259
255
|
value: checkedAssets,
|
|
260
256
|
onChange: setCheckedAssets,
|
|
261
257
|
style: { display: "flex", gap: 8, fontWeight: 500 }
|
|
262
|
-
}
|
|
258
|
+
},
|
|
259
|
+
"asset-checkbox-group"
|
|
263
260
|
)
|
|
264
261
|
]
|
|
265
262
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"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","names":[],"ignoreList":[],"sources":["../../../src/components/Charts/TreeMap.tsx"],"sourcesContent":["import React, { useEffect, useState, memo, useMemo } from 'react';\nimport ReactEChartsCore from 'echarts-for-react/lib/core';\nimport * as echarts from 'echarts/core';\nimport { TreemapChart } from 'echarts/charts';\nimport { TooltipComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { BUNDLE_ANALYZER_COLORS, COLOR_GROUPS } from './constants';\nimport { Checkbox, Card, Typography, Space } from 'antd';\nimport {\n VerticalAlignBottomOutlined,\n VerticalAlignTopOutlined,\n} from '@ant-design/icons';\nimport { formatSize, useI18n } from '../../utils';\nimport { SearchModal } from '../../pages/BundleSize/components/search-modal';\n\n// TreeNode type should match the output of flattenTreemapData\nexport type TreeNode = {\n name: string;\n value?: number;\n children?: TreeNode[];\n path?: string;\n sourceSize?: number;\n bundledSize?: number;\n};\n\ninterface TreeMapProps {\n treeData: TreeNode[];\n valueKey?: 'sourceSize' | 'bundledSize'; // which value to show as area\n style?: React.CSSProperties;\n onChartClick?: (params: any) => void;\n}\n\n// Simple hash function for string (djb2)\nfunction hashString(str: string): number {\n let hash = 5381;\n for (let i = 0; i < str.length; i++) {\n hash = (hash << 5) + hash + str.charCodeAt(i); /* hash * 33 + c */\n }\n return hash >>> 0; // Ensure unsigned\n}\n\nfunction getLevelOption() {\n return [\n {\n itemStyle: {\n color: 'white',\n borderColor: '#eee',\n borderWidth: 5,\n gapWidth: 5,\n },\n emphasis: {\n itemStyle: {\n borderColor: '#a29f9f',\n },\n },\n },\n {\n colorSaturation: [0.25, 0.5],\n itemStyle: {\n borderWidth: 5,\n gapWidth: 5,\n borderColorSaturation: 0.5,\n borderColor: '#eee',\n },\n },\n ];\n}\n\nconst TreeMapInner: React.FC<TreeMapProps & { forwardedRef?: React.Ref<any> }> =\n memo(\n ({\n treeData,\n valueKey = 'sourceSize',\n style,\n onChartClick,\n forwardedRef,\n }) => {\n const [option, setOption] = useState<any>(null);\n const chartRef = React.useRef<any>(null);\n\n // Expose chartRef to parent if forwardedRef is provided\n useEffect(() => {\n if (forwardedRef && chartRef.current) {\n if (typeof forwardedRef === 'function') {\n forwardedRef(chartRef.current);\n } else {\n (forwardedRef as React.MutableRefObject<any>).current =\n chartRef.current;\n }\n }\n }, [forwardedRef, chartRef.current]);\n\n // Register ECharts components\n useEffect(() => {\n echarts.use([TreemapChart, TooltipComponent, CanvasRenderer]);\n }, []);\n\n useEffect(() => {\n if (!treeData) return;\n // Helper to recursively add value field for ECharts\n function convert(\n node: TreeNode,\n colorGroup: keyof typeof BUNDLE_ANALYZER_COLORS,\n level = 0,\n ): any {\n const groupColors = BUNDLE_ANALYZER_COLORS[colorGroup];\n const children = node.children?.map((c, _i) =>\n convert(c, colorGroup, level + 1),\n );\n\n return {\n id: node.path ? hashString(node.path) : undefined,\n name: node.name,\n value: node[valueKey] ?? node.value ?? 0,\n path: node.path,\n sourceSize: node.sourceSize ?? node.value,\n bundledSize: node.bundledSize,\n children: children && children.length > 0 ? children : undefined,\n itemStyle: {\n borderWidth: 2,\n gapWidth: 2,\n borderColorSaturation: 0.2,\n colorSaturation: 0.2,\n color: groupColors[level % groupColors.length],\n borderColor: groupColors[level % groupColors.length],\n },\n level,\n };\n }\n const data = treeData.map((item, index) => {\n const group = COLOR_GROUPS[index % COLOR_GROUPS.length];\n return convert(item, group, 0);\n });\n\n setOption({\n title: {\n text: 'Bundle Tree Map',\n left: 'center',\n },\n tooltip: {\n position: 'top',\n formatter: function (info: any) {\n var treePathInfo = info.treePathInfo;\n var treePath = [];\n for (var i = 1; i < treePathInfo.length; i++) {\n treePath.push(treePathInfo[i].name);\n }\n // Get extra info from node data\n var node = info.data || {};\n var path = node.path || treePath.join('/');\n var sourceSize = node.sourceSize;\n var bundledSize = node.bundledSize;\n return [\n '<div class=\"tooltip-title\">' +\n echarts.format.encodeHTML(path) +\n '</div>',\n '<div><b>Source Size:</b> <b>' +\n (sourceSize !== undefined ? formatSize(sourceSize) : '-') +\n '</b></div>',\n '<div><b>Bundled Size:</b> <b>' +\n (bundledSize !== undefined ? formatSize(bundledSize) : '-') +\n '</b></div>',\n ].join('');\n },\n },\n series: [\n {\n name: 'Bundle Tree Map',\n id: 'bundle-treemap',\n type: 'treemap',\n visibleMin: 300,\n left: 10,\n right: 10,\n top: 10,\n bottom: 10,\n label: {\n show: true,\n formatter: '{b}',\n color: '#000',\n },\n upperLabel: {\n show: true,\n height: 30,\n },\n\n levels: getLevelOption(),\n data: data,\n },\n ],\n });\n }, [treeData, valueKey]);\n\n return option ? (\n <div>\n <ReactEChartsCore\n ref={chartRef}\n option={option}\n echarts={echarts}\n onEvents={onChartClick ? { click: onChartClick } : undefined}\n style={{\n width: '100%',\n minHeight: '500px',\n maxHeight: '1000px',\n border: '5px solid white',\n borderRadius: '10px',\n ...style,\n }}\n />\n </div>\n ) : null;\n },\n );\n\nexport const TreeMap = React.forwardRef<any, TreeMapProps>((props, ref) => (\n <TreeMapInner {...props} forwardedRef={ref} />\n));\n\nexport const AssetTreemapWithFilter: React.FC<{\n treeData: TreeNode[];\n onChartClick?: (params: any) => void;\n}> = ({ treeData, onChartClick }) => {\n const assetNames = useMemo(\n () => treeData.map((item) => item.name),\n [treeData],\n );\n const [checkedAssets, setCheckedAssets] = useState<string[]>(assetNames);\n const [collapsed, setCollapsed] = useState(false);\n const [searchModalOpen, setSearchModalOpen] = useState(false);\n const chartRef = React.useRef<any>(null);\n const { t } = useI18n();\n\n const filteredTreeData = useMemo(\n () => treeData.filter((item) => checkedAssets.includes(item.name)),\n [treeData, checkedAssets],\n );\n\n // Handler for search modal click\n const handleModuleClick = (module: any) => {\n if (!module?.path) return;\n const nodeId = hashString(module.path);\n if (chartRef.current) {\n const echartsInstance = chartRef.current.getEchartsInstance();\n echartsInstance.dispatchAction({\n type: 'treemapZoomToNode',\n seriesId: 'bundle-treemap',\n targetNodeId: nodeId.toString(),\n });\n echartsInstance.dispatchAction({\n type: 'highlight',\n seriesId: 'bundle-treemap',\n targetNodeId: nodeId.toString(),\n });\n }\n setSearchModalOpen(false);\n };\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <Card\n title={\n <Space>\n <Typography.Text>{t('Output Assets List')}</Typography.Text>\n <SearchModal\n onModuleClick={handleModuleClick}\n open={searchModalOpen}\n setOpen={setSearchModalOpen}\n isIcon={true}\n />\n </Space>\n }\n extra={\n <span\n style={{ cursor: 'pointer', marginLeft: 8 }}\n onClick={() => setCollapsed((c) => !c)}\n aria-label={collapsed ? t('Expand') : t('Collapse')}\n >\n {collapsed ? (\n <VerticalAlignBottomOutlined />\n ) : (\n <VerticalAlignTopOutlined />\n )}\n </span>\n }\n size=\"small\"\n bodyStyle={{\n overflow: 'hidden',\n height: collapsed ? 0 : undefined,\n padding: collapsed ? 0 : undefined,\n transition: 'height 0.3s cubic-bezier(.4,0,.2,1), padding 0.3s',\n }}\n >\n <div\n style={{\n opacity: collapsed ? 0 : 1,\n transition: 'opacity 0.3s',\n gap: 8,\n }}\n >\n <Checkbox\n indeterminate={\n checkedAssets.length > 0 &&\n checkedAssets.length < assetNames.length\n }\n checked={checkedAssets.length === assetNames.length}\n onChange={(e) =>\n setCheckedAssets(e.target.checked ? assetNames : [])\n }\n style={{ marginBottom: 4 }}\n >\n {'ALL / NONE'}\n </Checkbox>\n <Checkbox.Group\n options={assetNames}\n value={checkedAssets}\n onChange={setCheckedAssets}\n style={{ display: 'flex', gap: 8, fontWeight: 500 }}\n />\n </div>\n </Card>\n <div style={{ flex: 1 }}>\n <TreeMap\n ref={chartRef}\n treeData={filteredTreeData}\n onChartClick={onChartClick}\n />\n </div>\n </Space>\n </div>\n );\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|
|
1
|
+
{"version":3,"mappings":"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","names":[],"ignoreList":[],"sources":["../../../src/components/Charts/TreeMap.tsx"],"sourcesContent":["import React, { useEffect, useState, memo, useMemo } from 'react';\nimport ReactEChartsCore from 'echarts-for-react/lib/core';\nimport * as echarts from 'echarts/core';\nimport { TreemapChart } from 'echarts/charts';\nimport { TooltipComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { BUNDLE_ANALYZER_COLORS, COLOR_GROUPS } from './constants';\nimport { Checkbox, Card, Typography, Space } from 'antd';\nimport {\n VerticalAlignBottomOutlined,\n VerticalAlignTopOutlined,\n} from '@ant-design/icons';\nimport { formatSize, useI18n } from '../../utils';\nimport { SearchModal } from '../../pages/BundleSize/components/search-modal';\n\n// TreeNode type should match the output of flattenTreemapData\nexport type TreeNode = {\n name: string;\n value?: number;\n children?: TreeNode[];\n path?: string;\n sourceSize?: number;\n bundledSize?: number;\n};\n\ninterface TreeMapProps {\n treeData: TreeNode[];\n valueKey?: 'sourceSize' | 'bundledSize'; // which value to show as area\n style?: React.CSSProperties;\n onChartClick?: (params: any) => void;\n}\n\n// Simple hash function for string (djb2)\nfunction hashString(str: string): number {\n let hash = 5381;\n for (let i = 0; i < str.length; i++) {\n hash = (hash << 5) + hash + str.charCodeAt(i); /* hash * 33 + c */\n }\n return hash >>> 0; // Ensure unsigned\n}\n\nfunction getLevelOption() {\n return [\n {\n itemStyle: {\n color: 'white',\n borderColor: '#eee',\n borderWidth: 5,\n gapWidth: 5,\n },\n emphasis: {\n itemStyle: {\n borderColor: '#a29f9f',\n },\n },\n },\n {\n colorSaturation: [0.25, 0.5],\n itemStyle: {\n borderWidth: 5,\n gapWidth: 5,\n borderColorSaturation: 0.5,\n borderColor: '#eee',\n },\n },\n ];\n}\n\nconst TreeMapInner: React.FC<TreeMapProps & { forwardedRef?: React.Ref<any> }> =\n memo(\n ({\n treeData,\n valueKey = 'sourceSize',\n style,\n onChartClick,\n forwardedRef,\n }) => {\n const [option, setOption] = useState<any>(null);\n const chartRef = React.useRef<any>(null);\n\n // Expose chartRef to parent if forwardedRef is provided\n useEffect(() => {\n if (forwardedRef && chartRef.current) {\n if (typeof forwardedRef === 'function') {\n forwardedRef(chartRef.current);\n } else {\n (forwardedRef as React.MutableRefObject<any>).current =\n chartRef.current;\n }\n }\n }, [forwardedRef, chartRef.current]);\n\n // Register ECharts components\n useEffect(() => {\n echarts.use([TreemapChart, TooltipComponent, CanvasRenderer]);\n }, []);\n\n useEffect(() => {\n if (!treeData) return;\n // Helper to recursively add value field for ECharts\n function convert(\n node: TreeNode,\n colorGroup: keyof typeof BUNDLE_ANALYZER_COLORS,\n level = 0,\n ): any {\n const groupColors = BUNDLE_ANALYZER_COLORS[colorGroup];\n const children = node.children?.map((c, _i) =>\n convert(c, colorGroup, level + 1),\n );\n\n return {\n id: node.path ? hashString(node.path) : undefined,\n name: node.name,\n value: node[valueKey] ?? node.value ?? 0,\n path: node.path,\n sourceSize: node.sourceSize ?? node.value,\n bundledSize: node.bundledSize,\n children: children && children.length > 0 ? children : undefined,\n itemStyle: {\n borderWidth: 2,\n gapWidth: 2,\n borderColorSaturation: 0.2,\n colorSaturation: 0.2,\n color: groupColors[level % groupColors.length],\n borderColor: groupColors[level % groupColors.length],\n },\n level,\n };\n }\n const data = treeData.map((item, index) => {\n const group = COLOR_GROUPS[index % COLOR_GROUPS.length];\n return convert(item, group, 0);\n });\n\n setOption({\n title: {\n text: 'Bundle Tree Map',\n left: 'center',\n },\n tooltip: {\n position: 'top',\n formatter: function (info: any) {\n var treePathInfo = info.treePathInfo;\n var treePath = [];\n for (var i = 1; i < treePathInfo.length; i++) {\n treePath.push(treePathInfo[i].name);\n }\n // Get extra info from node data\n var node = info.data || {};\n var path = node.path || treePath.join('/');\n var sourceSize = node.sourceSize;\n var bundledSize = node.bundledSize;\n return [\n '<div class=\"tooltip-title\">' +\n echarts.format.encodeHTML(path) +\n '</div>',\n '<div><b>Source Size:</b> <b>' +\n (sourceSize !== undefined ? formatSize(sourceSize) : '-') +\n '</b></div>',\n '<div><b>Bundled Size:</b> <b>' +\n (bundledSize !== undefined ? formatSize(bundledSize) : '-') +\n '</b></div>',\n ].join('');\n },\n },\n series: [\n {\n name: 'Bundle Tree Map',\n id: 'bundle-treemap',\n type: 'treemap',\n visibleMin: 300,\n left: 10,\n right: 10,\n top: 10,\n bottom: 10,\n label: {\n show: true,\n formatter: '{b}',\n color: '#000',\n },\n upperLabel: {\n show: true,\n height: 30,\n },\n\n levels: getLevelOption(),\n data: data,\n },\n ],\n });\n }, [treeData, valueKey]);\n\n return option ? (\n <div>\n <ReactEChartsCore\n ref={chartRef}\n option={option}\n echarts={echarts}\n onEvents={onChartClick ? { click: onChartClick } : undefined}\n style={{\n width: '100%',\n minHeight: '500px',\n maxHeight: '1000px',\n border: '5px solid white',\n borderRadius: '10px',\n ...style,\n }}\n />\n </div>\n ) : null;\n },\n );\n\nexport const TreeMap = React.forwardRef<any, TreeMapProps>((props, ref) => (\n <TreeMapInner {...props} forwardedRef={ref} />\n));\n\nexport const AssetTreemapWithFilter: React.FC<{\n treeData: TreeNode[];\n onChartClick?: (params: any) => void;\n}> = ({ treeData, onChartClick }) => {\n const assetNames = useMemo(\n () => treeData.map((item) => item.name),\n [treeData],\n );\n const [checkedAssets, setCheckedAssets] = useState<string[]>(assetNames);\n const [collapsed, setCollapsed] = useState(false);\n const [searchModalOpen, setSearchModalOpen] = useState(false);\n const chartRef = React.useRef<any>(null);\n const { t } = useI18n();\n\n const filteredTreeData = useMemo(\n () => treeData.filter((item) => checkedAssets.includes(item.name)),\n [treeData, checkedAssets],\n );\n\n // Handler for search modal click\n const handleModuleClick = (module: any) => {\n if (!module?.path) return;\n const nodeId = hashString(module.path);\n if (chartRef.current) {\n const echartsInstance = chartRef.current.getEchartsInstance();\n echartsInstance.dispatchAction({\n type: 'treemapZoomToNode',\n seriesId: 'bundle-treemap',\n targetNodeId: nodeId.toString(),\n });\n }\n setSearchModalOpen(false);\n };\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <Card\n title={\n <Space>\n <Typography.Text>{t('Output Assets List')}</Typography.Text>\n <SearchModal\n onModuleClick={handleModuleClick}\n open={searchModalOpen}\n setOpen={setSearchModalOpen}\n isIcon={true}\n />\n </Space>\n }\n extra={\n <span\n style={{ cursor: 'pointer', marginLeft: 8 }}\n onClick={() => setCollapsed((c) => !c)}\n aria-label={collapsed ? t('Expand') : t('Collapse')}\n >\n {collapsed ? (\n <VerticalAlignBottomOutlined />\n ) : (\n <VerticalAlignTopOutlined />\n )}\n </span>\n }\n size=\"small\"\n bodyStyle={{\n overflow: 'hidden',\n height: collapsed ? 0 : undefined,\n padding: collapsed ? 0 : undefined,\n transition: 'height 0.3s cubic-bezier(.4,0,.2,1), padding 0.3s',\n }}\n >\n <div\n style={{\n opacity: collapsed ? 0 : 1,\n transition: 'opacity 0.3s',\n gap: 8,\n }}\n >\n <Checkbox\n key=\"all-none-checkbox\"\n indeterminate={\n checkedAssets.length > 0 &&\n checkedAssets.length < assetNames.length\n }\n checked={checkedAssets.length === assetNames.length}\n onChange={(e) =>\n setCheckedAssets(e.target.checked ? assetNames : [])\n }\n style={{ marginBottom: 4 }}\n >\n {'ALL / NONE'}\n </Checkbox>\n <Checkbox.Group\n key=\"asset-checkbox-group\"\n options={assetNames}\n value={checkedAssets}\n onChange={setCheckedAssets}\n style={{ display: 'flex', gap: 8, fontWeight: 500 }}\n />\n </div>\n </Card>\n <div style={{ flex: 1 }}>\n <TreeMap\n ref={chartRef}\n treeData={filteredTreeData}\n onChartClick={onChartClick}\n />\n </div>\n </Space>\n </div>\n );\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|
|
@@ -135,8 +135,8 @@ const LoaderExecutions = ({
|
|
|
135
135
|
style: { textAlign: "left" },
|
|
136
136
|
children: [
|
|
137
137
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
138
|
-
/* @__PURE__ */ jsx(Typography.Text, { style: { color: "#000" }, children: costs.match(/[0-9]+/g) }),
|
|
139
|
-
|
|
138
|
+
/* @__PURE__ */ jsx(Typography.Text, { style: { color: "#000" }, children: costs.match(/[0-9]*\.?[0-9]+/g)?.[0] }),
|
|
139
|
+
` `,
|
|
140
140
|
/* @__PURE__ */ jsx(
|
|
141
141
|
Typography.Text,
|
|
142
142
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"AAkDmB,SA0MS,UA1MT,KAQT,YARS;AAlDnB,SAAS,0BAA0B;AAEnC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,OAAO,WAAW;AAClB,SAA4B,aAAa,gBAAgB;AACzD,OAAO,eAAe;AACtB,OAAO,gBAAgB;AACvB,OAAO,cAAc;AACrB,SAAS,YAAY;AACrB,SAAS,cAAc,aAAa,gBAAgB;AACpD,SAAS,YAAY,kBAAkB;AACvC,SAAS,YAAY;AACrB,SAAS,kBAAkB;AAC3B,SAAS,aAAa;AACtB,OAAO,YAAY;AAQnB,MAAM,kBAAkB,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AACF,MAMmB;AACjB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,OAAO,EAAE,QAAQ,OAAO;AAAA,MACxB,OACE,oBAAC,OAAI,MAAM,oBAAC,sBAAmB,GAAI,OAAM,WACtC,gBAAM,OAAO,OAAO,EAAE,OAAO,qBAAqB,GACrD;AAAA,MAGF,+BAAC,SAAM,WAAU,YAAW,OAAO,EAAE,OAAO,OAAO,GAChD;AAAA,eAAO,UAAU,oBAAC,WAAW,MAAX,EAAgB,MAAI,MAAC,mBAAK,IAAqB;AAAA,QAClE,qBAAC,QAAK,MAAK,SAAQ,UAAQ,MACzB;AAAA,+BAAC,KAAK,MAAL,EACC;AAAA,gCAAC,WAAW,MAAX,EAAgB,QAAM,MAAE,uBAAY;AAAA,YACrC,oBAAC,SAAK,uBAAa,SAAS,MAAM,GAAG,GAAE;AAAA,aACzC;AAAA,UACA,qBAAC,KAAK,MAAL,EACC;AAAA,gCAAC,WAAW,MAAX,EAAgB,QAAM,MAAE,2BAAgB;AAAA,YACzC,oBAAC,cAAW,KAAU,KAAK,SAAS,MAAM,KAAI,IAAG,UAAQ,MAAC;AAAA,aAC5D;AAAA,UACA,qBAAC,KAAK,MAAL,EACC;AAAA,gCAAC,WAAW,MAAX,EAAgB,QAAM,MAAE,4BAAiB;AAAA,YAC1C,oBAAC,SAAK,mBAAS,YAAY,KAAI;AAAA,aACjC;AAAA,UACA,qBAAC,KAAK,MAAL,EACC;AAAA,gCAAC,WAAW,MAAX,EAAgB,QAAM,MAAE,sBAAW;AAAA,YACpC,oBAAC,SAAK,sBAAY,OAAO,KAAK,GAAE;AAAA,aAClC;AAAA,UACA,qBAAC,KAAK,MAAL,EACC;AAAA,gCAAC,WAAW,MAAX,EAAgB,QAAM,MAAE,oBAAS;AAAA,YAClC,oBAAC,SACC,8BAAC,WAAW,MAAX,EAAgB,MAAI,MAAE,iBAAO,QAAO,GACvC;AAAA,aACF;AAAA,UACA,qBAAC,KAAK,MAAL,EACC;AAAA,gCAAC,WAAW,MAAX,EAAgB,QAAM,MAAE,0BAAe;AAAA,YACxC,oBAAC,SAAK,aAAG,OAAO,WAAW,IAAG;AAAA,aAChC;AAAA,UACA,qBAAC,KAAK,MAAL,EACC;AAAA,gCAAC,WAAW,MAAX,EAAgB,QAAM,MAAE,yBAAc;AAAA,YACvC,oBAAC,cAAW,KAAU,KAAK,OAAO,MAAM,KAAI,IAAG,UAAQ,MAAC;AAAA,aAC1D;AAAA,UACA,qBAAC,KAAK,MAAL,EACC;AAAA,gCAAC,SAAI,OAAO,EAAE,OAAO,IAAI,GACvB,8BAAC,WAAW,MAAX,EAAgB,QAAM,MAAE,qBAAU,GACrC;AAAA,YACA,oBAAC,WAAQ,MAAK,YAAW;AAAA,YACzB;AAAA,cAAC,WAAW;AAAA,cAAX;AAAA,gBACC,UAAU;AAAA,kBACR,MAAM;AAAA,kBACN,YAAY;AAAA,kBACZ,QAAQ;AAAA,gBACV;AAAA,gBACA,UAAQ;AAAA,gBAEP,eAAK,UAAU,OAAO,WAAW,GAAG;AAAA;AAAA,YACvC;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAAA;AAAA,EACF;AAEJ;AAEO,MAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AACF,MAA6D;AAC3D,QAAM,EAAE,SAAS,SAAS,IAAI;AAC9B,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,SAAS,CAAC;AAC3D,QAAM,EAAE,MAAM,IAAI,SAAS;AAC3B,QAAM,UAAU,UAAU;AAC1B,QAAM,SAAS,QAAQ,YAAY;AACnC,QAAM,SAAS,OAAO,SAAS;AAC/B,QAAM,WAAW;AACjB,QAAM,WAAW,OAAO,UAAU,OAAO,OAAO;AAChD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,eAAe;AAC1D,QAAM,WAAW,YAAY,CAAC,QAAgB;AAC5C,iBAAa,GAAG;AAAA,EAClB,GAAG,CAAC,CAAC;AAEL,SACE,qBAAC,OAAI,WAAW,OAAO,YAAY,OAAO,EAAE,QAAQ,OAAO,GACzD;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,UACL,aAAa,UAAU,sBAAsB;AAAA,UAC7C,SAAS,KAAK;AAAA,QAChB;AAAA,QAEA,+BAAC,SAAM,WAAU,YAAW,OAAO,EAAE,OAAO,OAAO,GACjD;AAAA,8BAAC,SAAM,MAAK,cAAa;AAAA,UACzB,oBAAC,YAAS,MAAK,QAAO,OAAO,EAAE,WAAW,KAAK,YAAY,GACxD,kBAAQ,IAAI,CAAC,GAAG,GAAG,QAAQ;AAC1B,kBAAM,EAAE,QAAAA,SAAQ,QAAQ,IAAI;AAC5B,kBAAM,QAAQ,YAAY,EAAE,KAAK;AACjC,mBACE;AAAA,cAAC,SAAS;AAAA,cAAT;AAAA,gBACC,KACE,UACE,oBAAC,OAAI,OAAO,EAAE,YAAY,GAAG,YAAY,IAAI,GAAG,mBAEhD,IAEA,oBAAC,sBAAmB;AAAA,gBAGxB,OAAO,EAAE,eAAe,IAAI,WAAW,SAAS;AAAA,gBAGhD;AAAA,sCAAC,OAAI,OAAM,UAAS,SAAQ,iBAAgB,QAAQ,CAAC,GAAG,EAAE,GACxD,8BAAC,OAAI,MAAM,IAAI,WAAW,OAAO,UAC/B,8BAAC,WAAQ,OAAOA,SAAQ,SAAQ,SAC9B;AAAA,oBAAC;AAAA;AAAA,sBACC,WAAW,GAAG,OAAO,GAAG,IAAI,iBAAiB,IAAI,OAAO,WAAW,EAAE;AAAA,sBACrE,SAAS,MAAM;AACb,wCAAgB,CAAC;AAAA,sBACnB;AAAA,sBACA,OAAO,EAAE,WAAW,OAAO;AAAA,sBAE3B;AAAA,6CAAC,SACC;AAAA,8CAAC,WAAW,MAAX,EAAgB,OAAO,EAAE,OAAO,OAAO,GACrC,gBAAM,MAAM,SAAS,GACxB;AAAA,0BAAmB;AAAA,0BACnB;AAAA,4BAAC,WAAW;AAAA,4BAAX;AAAA,8BACC,OAAO,EAAE,OAAO,mBAAmB;AAAA,8BAElC,gBAAM,MAAM,YAAY;AAAA;AAAA,0BAC3B;AAAA,2BACF;AAAA,wBACA;AAAA,0BAAC,WAAW;AAAA,0BAAX;AAAA,4BACC,OAAO,EAAE,OAAO,mBAAmB;AAAA,4BACnC,WAAW,OAAO;AAAA,4BAEjB,UAAAA;AAAA;AAAA,wBACH;AAAA;AAAA;AAAA,kBACF,GACF,GACF,GACF;AAAA,kBACC,MAAM,IAAI,SAAS,IAAI,OACtB,oBAAC,SAAI,OAAO,EAAE,YAAY,GAAG,GAC3B,8BAAC,YAAS,GACZ;AAAA;AAAA;AAAA,cAnCG;AAAA,YAqCP;AAAA,UAEJ,CAAC,GACH;AAAA,WACF;AAAA;AAAA,IACF;AAAA,IACA,oBAAC,OAAI,MAAM,KAAK,UAAU,OAAO,EAAE,QAAQ,OAAO,GAChD;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,kBAAiB;AAAA,QACjB;AAAA,QACA,OAAO;AAAA,UACL;AAAA,YACE,OAAO;AAAA,YACP,KAAK;AAAA,YACL,UACE;AAAA,cAAC;AAAA;AAAA,gBACC;AAAA,gBACA;AAAA,gBACA;AAAA;AAAA,YACF;AAAA,UAEJ;AAAA,UACA;AAAA,YACE,OAAO;AAAA,YACP,KAAK;AAAA,YACL,UACE,oBAAC,SAAI,OAAO,EAAE,QAAQ,OAAO,GAC1B,qBACC,qBAAC,OAAI,MAAM,IAAI,OAAO,EAAE,QAAQ,OAAO,WAAW,IAAI,GACpD;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,SAAS,KAAK;AAAA,oBACd,WAAW,aAAa,UAAU,YAAY,2BAA2B;AAAA,oBACzE,cAAc,aAAa,UAAU,YAAY,2BAA2B;AAAA,kBAC9E;AAAA,kBAEA;AAAA,oBAAC;AAAA;AAAA,sBACC,MAAM,uBAAuB,OAAO,MAAM,KAAK,OAAO,UAAU,UAAU,EAAE;AAAA;AAAA,kBAC9E;AAAA;AAAA,cACF;AAAA,cACA,oBAAC,SAAI,OAAO,EAAE,QAAQ,MAAM,GAC1B;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAM,OAAO,OAAO,CAAC,EAAE;AAAA,kBACvB,MAAK;AAAA;AAAA,cACP,GACF;AAAA,eACF,IAEA,qBAAC,OAAI,MAAM,IAAI,OAAO,EAAE,QAAQ,OAAO,WAAW,IAAI,GACpD;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,oBACL,SAAS;AAAA,oBACT,YAAY;AAAA,oBACZ,SAAS,KAAK;AAAA,oBACd,cAAc,aAAa,UAAU,YAAY,2BAA2B;AAAA,kBAC9E;AAAA,kBAEA;AAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,MACE,iCACG;AAAA,4CAAkB,OAAO,MAAM,KAAK,OAAO,UAAU,UAAU,EAAE;AAAA,0BACjE,CAAC,OAAO,WACP,qBAAC,UAAK,OAAO,EAAE,YAAY,IAAI,GAAG;AAAA;AAAA,4BAEhC;AAAA,8BAAC;AAAA;AAAA,gCACC,OAAO;AAAA,kCACL,eAAe;AAAA,kCACf,QAAQ;AAAA,gCACV;AAAA;AAAA,4BACF;AAAA,4BAAE;AAAA,4BAEF;AAAA,8BAAC;AAAA;AAAA,gCACC,OAAO;AAAA,kCACL,eAAe;AAAA,kCACf,UAAU;AAAA,kCACV,KAAK;AAAA,gCACP;AAAA;AAAA,4BACF;AAAA,4BAAE;AAAA,6BAEJ;AAAA,2BAEJ;AAAA;AAAA,oBAEJ;AAAA,oBACA,oBAAC,SAAI,OAAO,EAAE,MAAM,EAAE,GAAG;AAAA;AAAA;AAAA,cAC3B;AAAA,cACC,OAAO,UACN,OAAO,SACL,oBAAC,SAAI,OAAO,EAAE,QAAQ,MAAM,GAC1B;AAAA,gBAAC;AAAA;AAAA,kBACC,SAAO;AAAA,kBACP,MAAM,OAAO;AAAA,kBACb,UAAU,SAAS;AAAA;AAAA,cACrB,GACF,IAEA;AAAA,gBAAC;AAAA;AAAA,kBACC,aACE;AAAA;AAAA,cAEJ,IAGF,oBAAC,SAAI,OAAO,EAAE,WAAW,QAAQ,GAC/B,8BAAC,SAAI,OAAO,EAAE,QAAQ,SAAS,UAAU,SAAS,GAC/C,WAAC,OAAO,UAAU,CAAC,SAClB;AAAA,gBAAC;AAAA;AAAA,kBACC,aACE;AAAA;AAAA,cAEJ,IAEA;AAAA,gBAAC;AAAA;AAAA,kBACC,SAAO;AAAA,kBACP,UAAU;AAAA,kBACV,UAAU,OAAO,UAAU;AAAA,kBAC3B,kBAAkB,SAAS;AAAA,kBAC3B,kBAAkB,SAAS;AAAA;AAAA,cAC7B,GAEJ,GACF;AAAA,eAEJ,GAEJ;AAAA,UAEJ;AAAA,QACF;AAAA,QACA;AAAA;AAAA,IACF,GACF;AAAA,KACF;AAEJ","names":["loader"],"ignoreList":[],"sources":["../../../src/components/Loader/executions.tsx"],"sourcesContent":["import { ClockCircleTwoTone } from '@ant-design/icons';\nimport { SDK } from '@rsdoctor/types';\nimport {\n Col,\n Divider,\n Empty,\n List,\n Row,\n Space,\n Tabs,\n Tag,\n Timeline,\n Tooltip,\n Typography,\n} from 'antd';\nimport dayjs from 'dayjs';\nimport { PropsWithChildren, useCallback, useState } from 'react';\nimport InputIcon from '../../common/svg/loader/input.js';\nimport OutputIcon from '../../common/svg/loader/output.js';\nimport StepIcon from '../../common/svg/loader/step.js';\nimport { Size } from '../../constants';\nimport { beautifyPath, formatCosts, useTheme } from '../../utils';\nimport { CodeViewer, DiffViewer } from '../base';\nimport { Card } from '../Card';\nimport { CodeOpener } from '../Opener';\nimport { Title } from '../Title';\nimport styles from './Analysis/style.module';\n\ninterface LoaderExecutionsProps {\n cwd: string;\n data: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetLoaderFileDetails>;\n index?: number;\n}\n\nconst LoaderPropsItem = ({\n loader,\n resource,\n cwd,\n}: {\n loader: SDK.LoaderTransformData & {\n costs: number;\n };\n resource: SDK.ResourceData;\n cwd: string;\n}): JSX.Element => {\n return (\n <Card\n title={'Loader Details'}\n style={{ border: 'none' }}\n extra={\n <Tag icon={<ClockCircleTwoTone />} color=\"default\">\n {dayjs(loader.startAt).format('YYYY-MM-DD HH:mm:ss')}\n </Tag>\n }\n >\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n {loader.isPitch ? <Typography.Text code>pitch</Typography.Text> : null}\n <List size=\"large\" bordered>\n <List.Item>\n <Typography.Text strong>{'File Path'}</Typography.Text>\n <div>{beautifyPath(resource.path, cwd)}</div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Resource Path'}</Typography.Text>\n <CodeOpener cwd={cwd} url={resource.path} loc=\"\" disabled />\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Resource Query'}</Typography.Text>\n <div>{resource.queryRaw || '-'}</div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Duration'}</Typography.Text>\n <div>{formatCosts(loader.costs)}</div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Loader'}</Typography.Text>\n <div>\n <Typography.Text code>{loader.loader}</Typography.Text>\n </div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Loader Index'}</Typography.Text>\n <div>{`${loader.loaderIndex}`}</div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Loader Path'}</Typography.Text>\n <CodeOpener cwd={cwd} url={loader.path} loc=\"\" disabled />\n </List.Item>\n <List.Item>\n <div style={{ width: 180 }}>\n <Typography.Text strong>{'Options'}</Typography.Text>\n </div>\n <Divider type=\"vertical\" />\n <Typography.Paragraph\n ellipsis={{\n rows: 2,\n expandable: true,\n symbol: 'more',\n }}\n copyable\n >\n {JSON.stringify(loader.options || '-')}\n </Typography.Paragraph>\n </List.Item>\n </List>\n </Space>\n </Card>\n );\n};\n\nexport const LoaderExecutions = ({\n data,\n cwd,\n index,\n}: PropsWithChildren<LoaderExecutionsProps>): JSX.Element => {\n const { loaders, resource } = data;\n const [currentIndex, setCurrentIndex] = useState(index || 0);\n const { theme } = useTheme();\n const isLight = theme === 'light';\n const loader = loaders[currentIndex];\n const before = loader.input || '';\n const leftSpan = 5;\n const hasError = loader.errors && loader.errors.length;\n const [activeKey, setActiveKey] = useState('loaderDetails');\n const onChange = useCallback((key: string) => {\n setActiveKey(key);\n }, []);\n\n return (\n <Row className={styles.executions} style={{ height: '100%' }}>\n <Col\n span={leftSpan}\n style={{\n borderRight: isLight ? `1px solid #f0f0f0` : undefined,\n padding: Size.BasePadding,\n }}\n >\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <Title text=\"Executions\" />\n <Timeline mode=\"left\" style={{ marginTop: Size.BasePadding }}>\n {loaders.map((e, i, arr) => {\n const { loader, isPitch } = e;\n const costs = formatCosts(e.costs);\n return (\n <Timeline.Item\n dot={\n isPitch ? (\n <Tag style={{ marginLeft: 1, fontWeight: 500 }}>\n pitch\n </Tag>\n ) : (\n <ClockCircleTwoTone />\n )\n }\n style={{ paddingBottom: 10, textAlign: 'center' }}\n key={i}\n >\n <Row align=\"middle\" justify=\"space-between\" gutter={[0, 10]}>\n <Col span={24} className={styles.timeline}>\n <Tooltip title={loader} trigger=\"hover\">\n <div\n className={`${styles.box} ${currentIndex === i ? styles.selected : ''}`}\n onClick={() => {\n setCurrentIndex(i);\n }}\n style={{ textAlign: 'left' }}\n >\n <div>\n <Typography.Text style={{ color: '#000' }}>\n {costs.match(/[0-9]+/g)}\n </Typography.Text>{' '}\n <Typography.Text\n style={{ color: 'rgba(0,0,0,0.45)' }}\n >\n {costs.match(/[a-zA-Z]+/g)}\n </Typography.Text>\n </div>\n <Typography.Text\n style={{ color: 'rgba(0,0,0,0.65)' }}\n className={styles.loader}\n >\n {loader}\n </Typography.Text>\n </div>\n </Tooltip>\n </Col>\n </Row>\n {i === arr.length - 1 ? null : (\n <div style={{ paddingTop: 10 }}>\n <StepIcon />\n </div>\n )}\n </Timeline.Item>\n );\n })}\n </Timeline>\n </Space>\n </Col>\n <Col span={24 - leftSpan} style={{ height: '100%' }}>\n <Tabs\n type=\"card\"\n defaultActiveKey=\"loaderDetails\"\n activeKey={activeKey}\n items={[\n {\n label: 'Loader Props',\n key: 'loaderProps',\n children: (\n <LoaderPropsItem\n loader={loader}\n resource={resource}\n cwd={cwd}\n />\n ),\n },\n {\n label: 'Loader Details',\n key: 'loaderDetails',\n children: (\n <div style={{ height: '100%' }}>\n {hasError ? (\n <Col span={24} style={{ height: '53%', minHeight: 400 }}>\n <div\n style={{\n padding: Size.BasePadding,\n borderTop: `1px solid ${isLight ? '#f0f0f0' : 'rgba(253, 253, 253, 0.12)'}`,\n borderBottom: `1px solid ${isLight ? '#f0f0f0' : 'rgba(253, 253, 253, 0.12)'}`,\n }}\n >\n <Title\n text={`the error stack of [${loader.loader}] ${loader.isPitch ? 'pitch' : ''}`}\n />\n </div>\n <div style={{ height: '90%' }}>\n <CodeViewer\n code={loader.errors[0].message}\n lang=\"javascript\"\n />\n </div>\n </Col>\n ) : (\n <Col span={24} style={{ height: '53%', minHeight: 400 }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n padding: Size.BasePadding,\n borderBottom: `1px solid ${isLight ? '#f0f0f0' : 'rgba(253, 253, 253, 0.12)'}`,\n }}\n >\n <Title\n text={\n <>\n {`the result of [${loader.loader}] ${loader.isPitch ? 'pitch' : ''}`}\n {!loader.isPitch && (\n <span style={{ fontWeight: 400 }}>\n (\n <InputIcon\n style={{\n verticalAlign: 'middle',\n margin: '0 2px',\n }}\n />\n Input ⟷\n <OutputIcon\n style={{\n verticalAlign: 'middle',\n position: 'relative',\n top: -2,\n }}\n />\n Output)\n </span>\n )}\n </>\n }\n />\n <div style={{ flex: 1 }} />\n </div>\n {loader.isPitch ? (\n loader.result ? (\n <div style={{ height: '90%' }}>\n <CodeViewer\n isEmbed\n code={loader.result}\n filePath={resource.path}\n />\n </div>\n ) : (\n <Empty\n description={\n 'No loader result. If you use the Brief Mode, there will not have loader results.'\n }\n />\n )\n ) : (\n <div style={{ minHeight: '700px' }}>\n <div style={{ height: '40rem', overflow: 'hidden' }}>\n {!loader.result && !before ? (\n <Empty\n description={\n 'No loader result. If you use the Brief Mode, there will not have loader results.'\n }\n />\n ) : (\n <DiffViewer\n isEmbed\n original={before}\n modified={loader.result || ''}\n originalFilePath={resource.path}\n modifiedFilePath={resource.path}\n />\n )}\n </div>\n </div>\n )}\n </Col>\n )}\n </div>\n ),\n },\n ]}\n onChange={onChange}\n />\n </Col>\n </Row>\n );\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|
|
1
|
+
{"version":3,"mappings":"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","names":["loader"],"ignoreList":[],"sources":["../../../src/components/Loader/executions.tsx"],"sourcesContent":["import { ClockCircleTwoTone } from '@ant-design/icons';\nimport { SDK } from '@rsdoctor/types';\nimport {\n Col,\n Divider,\n Empty,\n List,\n Row,\n Space,\n Tabs,\n Tag,\n Timeline,\n Tooltip,\n Typography,\n} from 'antd';\nimport dayjs from 'dayjs';\nimport { PropsWithChildren, useCallback, useState } from 'react';\nimport InputIcon from '../../common/svg/loader/input.js';\nimport OutputIcon from '../../common/svg/loader/output.js';\nimport StepIcon from '../../common/svg/loader/step.js';\nimport { Size } from '../../constants';\nimport { beautifyPath, formatCosts, useTheme } from '../../utils';\nimport { CodeViewer, DiffViewer } from '../base';\nimport { Card } from '../Card';\nimport { CodeOpener } from '../Opener';\nimport { Title } from '../Title';\nimport styles from './Analysis/style.module';\n\ninterface LoaderExecutionsProps {\n cwd: string;\n data: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetLoaderFileDetails>;\n index?: number;\n}\n\nconst LoaderPropsItem = ({\n loader,\n resource,\n cwd,\n}: {\n loader: SDK.LoaderTransformData & {\n costs: number;\n };\n resource: SDK.ResourceData;\n cwd: string;\n}): JSX.Element => {\n return (\n <Card\n title={'Loader Details'}\n style={{ border: 'none' }}\n extra={\n <Tag icon={<ClockCircleTwoTone />} color=\"default\">\n {dayjs(loader.startAt).format('YYYY-MM-DD HH:mm:ss')}\n </Tag>\n }\n >\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n {loader.isPitch ? <Typography.Text code>pitch</Typography.Text> : null}\n <List size=\"large\" bordered>\n <List.Item>\n <Typography.Text strong>{'File Path'}</Typography.Text>\n <div>{beautifyPath(resource.path, cwd)}</div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Resource Path'}</Typography.Text>\n <CodeOpener cwd={cwd} url={resource.path} loc=\"\" disabled />\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Resource Query'}</Typography.Text>\n <div>{resource.queryRaw || '-'}</div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Duration'}</Typography.Text>\n <div>{formatCosts(loader.costs)}</div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Loader'}</Typography.Text>\n <div>\n <Typography.Text code>{loader.loader}</Typography.Text>\n </div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Loader Index'}</Typography.Text>\n <div>{`${loader.loaderIndex}`}</div>\n </List.Item>\n <List.Item>\n <Typography.Text strong>{'Loader Path'}</Typography.Text>\n <CodeOpener cwd={cwd} url={loader.path} loc=\"\" disabled />\n </List.Item>\n <List.Item>\n <div style={{ width: 180 }}>\n <Typography.Text strong>{'Options'}</Typography.Text>\n </div>\n <Divider type=\"vertical\" />\n <Typography.Paragraph\n ellipsis={{\n rows: 2,\n expandable: true,\n symbol: 'more',\n }}\n copyable\n >\n {JSON.stringify(loader.options || '-')}\n </Typography.Paragraph>\n </List.Item>\n </List>\n </Space>\n </Card>\n );\n};\n\nexport const LoaderExecutions = ({\n data,\n cwd,\n index,\n}: PropsWithChildren<LoaderExecutionsProps>): JSX.Element => {\n const { loaders, resource } = data;\n const [currentIndex, setCurrentIndex] = useState(index || 0);\n const { theme } = useTheme();\n const isLight = theme === 'light';\n const loader = loaders[currentIndex];\n const before = loader.input || '';\n const leftSpan = 5;\n const hasError = loader.errors && loader.errors.length;\n const [activeKey, setActiveKey] = useState('loaderDetails');\n const onChange = useCallback((key: string) => {\n setActiveKey(key);\n }, []);\n\n return (\n <Row className={styles.executions} style={{ height: '100%' }}>\n <Col\n span={leftSpan}\n style={{\n borderRight: isLight ? `1px solid #f0f0f0` : undefined,\n padding: Size.BasePadding,\n }}\n >\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <Title text=\"Executions\" />\n <Timeline mode=\"left\" style={{ marginTop: Size.BasePadding }}>\n {loaders.map((e, i, arr) => {\n const { loader, isPitch } = e;\n const costs = formatCosts(e.costs);\n return (\n <Timeline.Item\n dot={\n isPitch ? (\n <Tag style={{ marginLeft: 1, fontWeight: 500 }}>\n pitch\n </Tag>\n ) : (\n <ClockCircleTwoTone />\n )\n }\n style={{ paddingBottom: 10, textAlign: 'center' }}\n key={i}\n >\n <Row align=\"middle\" justify=\"space-between\" gutter={[0, 10]}>\n <Col span={24} className={styles.timeline}>\n <Tooltip title={loader} trigger=\"hover\">\n <div\n className={`${styles.box} ${currentIndex === i ? styles.selected : ''}`}\n onClick={() => {\n setCurrentIndex(i);\n }}\n style={{ textAlign: 'left' }}\n >\n <div>\n <Typography.Text style={{ color: '#000' }}>\n {costs.match(/[0-9]*\\.?[0-9]+/g)?.[0]}\n </Typography.Text>\n {` `}\n <Typography.Text\n style={{ color: 'rgba(0,0,0,0.45)' }}\n >\n {costs.match(/[a-zA-Z]+/g)}\n </Typography.Text>\n </div>\n <Typography.Text\n style={{ color: 'rgba(0,0,0,0.65)' }}\n className={styles.loader}\n >\n {loader}\n </Typography.Text>\n </div>\n </Tooltip>\n </Col>\n </Row>\n {i === arr.length - 1 ? null : (\n <div style={{ paddingTop: 10 }}>\n <StepIcon />\n </div>\n )}\n </Timeline.Item>\n );\n })}\n </Timeline>\n </Space>\n </Col>\n <Col span={24 - leftSpan} style={{ height: '100%' }}>\n <Tabs\n type=\"card\"\n defaultActiveKey=\"loaderDetails\"\n activeKey={activeKey}\n items={[\n {\n label: 'Loader Props',\n key: 'loaderProps',\n children: (\n <LoaderPropsItem\n loader={loader}\n resource={resource}\n cwd={cwd}\n />\n ),\n },\n {\n label: 'Loader Details',\n key: 'loaderDetails',\n children: (\n <div style={{ height: '100%' }}>\n {hasError ? (\n <Col span={24} style={{ height: '53%', minHeight: 400 }}>\n <div\n style={{\n padding: Size.BasePadding,\n borderTop: `1px solid ${isLight ? '#f0f0f0' : 'rgba(253, 253, 253, 0.12)'}`,\n borderBottom: `1px solid ${isLight ? '#f0f0f0' : 'rgba(253, 253, 253, 0.12)'}`,\n }}\n >\n <Title\n text={`the error stack of [${loader.loader}] ${loader.isPitch ? 'pitch' : ''}`}\n />\n </div>\n <div style={{ height: '90%' }}>\n <CodeViewer\n code={loader.errors[0].message}\n lang=\"javascript\"\n />\n </div>\n </Col>\n ) : (\n <Col span={24} style={{ height: '53%', minHeight: 400 }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n padding: Size.BasePadding,\n borderBottom: `1px solid ${isLight ? '#f0f0f0' : 'rgba(253, 253, 253, 0.12)'}`,\n }}\n >\n <Title\n text={\n <>\n {`the result of [${loader.loader}] ${loader.isPitch ? 'pitch' : ''}`}\n {!loader.isPitch && (\n <span style={{ fontWeight: 400 }}>\n (\n <InputIcon\n style={{\n verticalAlign: 'middle',\n margin: '0 2px',\n }}\n />\n Input ⟷\n <OutputIcon\n style={{\n verticalAlign: 'middle',\n position: 'relative',\n top: -2,\n }}\n />\n Output)\n </span>\n )}\n </>\n }\n />\n <div style={{ flex: 1 }} />\n </div>\n {loader.isPitch ? (\n loader.result ? (\n <div style={{ height: '90%' }}>\n <CodeViewer\n isEmbed\n code={loader.result}\n filePath={resource.path}\n />\n </div>\n ) : (\n <Empty\n description={\n 'No loader result. If you use the Brief Mode, there will not have loader results.'\n }\n />\n )\n ) : (\n <div style={{ minHeight: '700px' }}>\n <div style={{ height: '40rem', overflow: 'hidden' }}>\n {!loader.result && !before ? (\n <Empty\n description={\n 'No loader result. If you use the Brief Mode, there will not have loader results.'\n }\n />\n ) : (\n <DiffViewer\n isEmbed\n original={before}\n modified={loader.result || ''}\n originalFilePath={resource.path}\n modifiedFilePath={resource.path}\n />\n )}\n </div>\n </div>\n )}\n </Col>\n )}\n </div>\n ),\n },\n ]}\n onChange={onChange}\n />\n </Col>\n </Row>\n );\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"AA0DU,cACA,YADA;AA1DV,SAAS,cAAc;AACvB,SAAS,qBAAqB;AAE9B,SAAS,YAAY;AACrB,SAAS,eAAe;AAExB,OAAO,YAAY;AAEnB,MAAM,OAAO;AAAA,EACX;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AACF;AAEO,MAAM,aAAa,MAAM;AAC9B,QAAM,EAAE,EAAE,IAAI,QAAQ;AAEtB,SACE,oBAAC,QAAK,OAAO,EAAE,OAAO,QAAQ,cAAc,OAAO,GACjD,+BAAC,SACC;AAAA,yBAAC,SAAI,WAAW,OAAO,OACrB;AAAA,0BAAC,UAAM,YAAE,aAAa,GAAE;AAAA,MACxB;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,SAAS,EAAE;AAAA,UAC3D,MAAK;AAAA,UACL,SAAS,MAAM;AACb,mBAAO,KAAK,6BAA6B,QAAQ;AAAA,UACnD;AAAA,UAEA;AAAA,gCAAC,UAAK,OAAO,EAAE,aAAa,MAAM,GAAG,kBAAI;AAAA,YACzC,oBAAC,iBAAc,OAAO,EAAE,UAAU,OAAO,GAAG;AAAA;AAAA;AAAA,MAC9C;AAAA,OACF;AAAA,IACA,oBAAC,SAAI,WAAW,OAAO,WACpB,eAAK,IAAI,CAAC,EAAE,OAAO,KAAK,GAAG,QAAQ;AAClC,aACE;AAAA,QAAC;AAAA;AAAA,
|
|
1
|
+
{"version":3,"mappings":"AA0DU,cACA,YADA;AA1DV,SAAS,cAAc;AACvB,SAAS,qBAAqB;AAE9B,SAAS,YAAY;AACrB,SAAS,eAAe;AAExB,OAAO,YAAY;AAEnB,MAAM,OAAO;AAAA,EACX;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AACF;AAEO,MAAM,aAAa,MAAM;AAC9B,QAAM,EAAE,EAAE,IAAI,QAAQ;AAEtB,SACE,oBAAC,QAAK,OAAO,EAAE,OAAO,QAAQ,cAAc,OAAO,GACjD,+BAAC,SACC;AAAA,yBAAC,SAAI,WAAW,OAAO,OACrB;AAAA,0BAAC,UAAM,YAAE,aAAa,GAAE;AAAA,MACxB;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,SAAS,EAAE;AAAA,UAC3D,MAAK;AAAA,UACL,SAAS,MAAM;AACb,mBAAO,KAAK,6BAA6B,QAAQ;AAAA,UACnD;AAAA,UAEA;AAAA,gCAAC,UAAK,OAAO,EAAE,aAAa,MAAM,GAAG,kBAAI;AAAA,YACzC,oBAAC,iBAAc,OAAO,EAAE,UAAU,OAAO,GAAG;AAAA;AAAA;AAAA,MAC9C;AAAA,OACF;AAAA,IACA,oBAAC,SAAI,WAAW,OAAO,WACpB,eAAK,IAAI,CAAC,EAAE,OAAO,KAAK,GAAG,QAAQ;AAClC,aACE;AAAA,QAAC;AAAA;AAAA,UAEC,WAAW,OAAO;AAAA,UAClB,OAAO;AAAA,YACL,cAAc,MAAM,KAAK,SAAS,IAAI,SAAS;AAAA,UACjD;AAAA,UACA,SAAS,MAAM,OAAO,KAAK,MAAM,QAAQ;AAAA,UAExC,YAAE,KAAK;AAAA;AAAA,QAPH;AAAA,MAQP;AAAA,IAEJ,CAAC,GACH;AAAA,KACF,GACF;AAEJ","names":[],"ignoreList":[],"sources":["../../../src/components/Overall/help-center.tsx"],"sourcesContent":["import { Button } from 'antd';\nimport { RightOutlined } from '@ant-design/icons';\n\nimport { Card } from '../Card';\nimport { useI18n } from '../../utils';\n\nimport styles from './help-center.module';\n\nconst data = [\n {\n title: 'FAQ',\n link: 'https://rsdoctor.rs/guide/more/faq',\n },\n {\n title: 'Introduction',\n link: 'https://rsdoctor.rs/guide/start/intro',\n },\n {\n title: 'Bundle Alerts',\n link: 'https://rsdoctor.rs/guide/usage/bundle-alerts',\n },\n {\n title: 'Bundle Overall',\n link: 'https://rsdoctor.rs/guide/usage/bundle-overall',\n },\n {\n title: 'Bundle Analysis',\n link: 'https://rsdoctor.rs/guide/usage/bundle-size',\n },\n {\n title: 'Compilation Alerts',\n link: 'https://rsdoctor.rs/guide/usage/compile-alerts',\n },\n {\n title: 'Compile Overall',\n link: 'https://rsdoctor.rs/guide/usage/compile-overall',\n },\n {\n title: 'Loaders Analysis',\n link: 'https://rsdoctor.rs/guide/usage/loaders-analysis',\n },\n {\n title: 'Loaders Timeline',\n link: 'https://rsdoctor.rs/guide/usage/loaders-timeline',\n },\n {\n title: 'Plugin Analysis',\n link: 'https://rsdoctor.rs/guide/usage/plugins-analysis',\n },\n];\n\nexport const HelpCenter = () => {\n const { t } = useI18n();\n\n return (\n <Card style={{ width: '100%', borderRadius: '12px' }}>\n <div>\n <div className={styles.title}>\n <span>{t('Help Center')}</span>\n <Button\n style={{ display: 'flex', alignItems: 'center', padding: 0 }}\n type=\"link\"\n onClick={() => {\n window.open('https://rsdoctor.rs/index', '_blank');\n }}\n >\n <span style={{ marginRight: '3px' }}>More</span>\n <RightOutlined style={{ fontSize: '10px' }} />\n </Button>\n </div>\n <div className={styles.container}>\n {data.map(({ title, link }, idx) => {\n return (\n <div\n key={idx}\n className={styles.content}\n style={{\n marginBottom: idx < data.length - 2 ? '16px' : 0,\n }}\n onClick={() => window.open(link, '_blank')}\n >\n {t(title)}\n </div>\n );\n })}\n </div>\n </div>\n </Card>\n );\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|
|
@@ -241,7 +241,14 @@ const BundleCards = ({ errors, summary }) => {
|
|
|
241
241
|
/* @__PURE__ */ jsx(Divider, { style: { height: "200px" }, type: "vertical" }),
|
|
242
242
|
/* @__PURE__ */ jsx("div", { className: styles.chartsContainer, children: arr.map((e, idx) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
243
243
|
/* @__PURE__ */ jsx("div", { className: styles.chart, children: e }, idx),
|
|
244
|
-
idx !== arr.length - 1 ? /* @__PURE__ */ jsx(
|
|
244
|
+
idx !== arr.length - 1 ? /* @__PURE__ */ jsx(
|
|
245
|
+
Divider,
|
|
246
|
+
{
|
|
247
|
+
style: { height: "200px" },
|
|
248
|
+
type: "vertical"
|
|
249
|
+
},
|
|
250
|
+
`${idx}-divider`
|
|
251
|
+
) : null
|
|
245
252
|
] })) })
|
|
246
253
|
] });
|
|
247
254
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"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","names":[],"ignoreList":[],"sources":["../../../../src/pages/BundleSize/components/cards.tsx"],"sourcesContent":["/* eslint-disable react/jsx-key */\nimport React, { useState } from 'react';\nimport { Divider, Segmented, theme, Avatar, Tree } from 'antd';\nimport { Client, SDK } from '@rsdoctor/types';\nimport { RightOutlined, FileFilled, GoldenFilled } from '@ant-design/icons';\n\nimport { formatSize, useDuplicatePackagesByErrors } from '../../../utils';\nimport { StatisticCard } from '../../../components/Card/statistic';\nimport { SizeCard, bgColorType } from '../../../components/Card/size';\nimport Overview from '../../../components/Overall/overview';\nimport { ServerAPIProvider } from '../../../components/Manifest';\nimport { getFiles } from '../../..//components/Overall';\nimport { TextDrawer } from '../../..//components/TextDrawer';\n\nimport styles from './card.module';\n\nconst { DirectoryTree } = Tree;\nconst { useToken } = theme;\nconst { innerWidth } = window;\n\ninterface CardProps {\n showProgress?: boolean;\n data: Client.RsdoctorClientAssetsSummary['all']['total'];\n total: number;\n tagBgColor?: string;\n type?: string;\n}\n\nconst AssetCard: React.FC<CardProps> = ({\n showProgress = false,\n data,\n total,\n tagBgColor,\n type,\n}) => {\n const { token } = useToken();\n const _tagBgColor = tagBgColor || token.colorPrimaryBorderHover;\n return (\n <SizeCard\n type={type!}\n files={data.files}\n total={total}\n showProgress={showProgress}\n tagBgColor={_tagBgColor}\n />\n );\n};\n\nconst AssetCardContainer: React.FC<{\n type?: string;\n titles: string[];\n datas: CardProps[];\n bgColor?: bgColorType;\n}> = ({ titles, datas, bgColor, type }) => {\n const [idx, setIdx] = useState(0);\n const fileType = type || titles[idx] || titles[0];\n\n return (\n <StatisticCard\n title={\n <div className={styles.cardTitle}>\n <div className={styles.title}>{fileType}</div>\n {titles.length > 1 ? (\n <Segmented\n defaultValue={titles[idx]}\n options={titles}\n onChange={(e) => {\n setIdx(titles.indexOf(e as string));\n }}\n size=\"small\"\n style={{ transition: 'transform 0.3s ease' }}\n value={titles[idx] || titles[0]}\n />\n ) : null}\n </div>\n }\n value={\n datas.map((e, i) => (\n <AssetCard\n type={fileType}\n {...e}\n key={i}\n tagBgColor={bgColor?.tagBgColor}\n />\n ))[idx]\n }\n boxProps={{\n style: {\n background: bgColor?.bgColor,\n width: innerWidth > 1300 ? '80%' : '95%',\n },\n }}\n />\n );\n};\n\nexport const BundleCards: React.FC<{\n cwd: string;\n errors: SDK.ErrorsData;\n summary: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetAssetsSummary>;\n}> = ({ errors, summary }) => {\n const duplicatePackages = useDuplicatePackagesByErrors(errors);\n const [totalSize, totalSizeUnit] = formatSize(summary.all.total.size).split(\n ' ',\n );\n\n const arr = [\n <AssetCardContainer\n type={'JS'}\n titles={['Total', 'Initial']}\n datas={[\n {\n data: summary.js.total,\n total: summary.all.total.size,\n showProgress: true,\n },\n {\n data: summary.js.initial,\n total: summary.all.total.size,\n showProgress: true,\n },\n ]}\n />,\n <AssetCardContainer\n type={'CSS'}\n titles={['Total', 'Initial']}\n datas={[\n {\n data: summary.css.total,\n total: summary.all.total.size,\n showProgress: true,\n },\n {\n data: summary.css.initial,\n total: summary.all.total.size,\n showProgress: true,\n },\n ]}\n />,\n <AssetCardContainer\n titles={['Images', 'Fonts', 'Media']}\n datas={[\n {\n data: summary.imgs.total,\n total: summary.all.total.size,\n showProgress: true,\n },\n {\n data: summary.fonts.total,\n total: summary.all.total.size,\n showProgress: true,\n },\n {\n data: summary.media.total,\n total: summary.all.total.size,\n showProgress: true,\n },\n ]}\n />,\n <AssetCardContainer\n type={'HTML'}\n titles={['HTML Files']}\n datas={[\n {\n data: summary.html.total,\n total: summary.all.total.size,\n showProgress: true,\n },\n ]}\n />,\n ];\n\n return (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetAssetsSummary}\n body={{ withFileContent: false }}\n >\n {(res) => {\n const { treeData } = getFiles(res['all'].total);\n return (\n <div className={styles.container}>\n <div className={styles.summary}>\n <Overview\n title={\n <TextDrawer\n buttonProps={{\n size: 'small',\n }}\n buttonStyle={{\n fontSize: 'inherit',\n }}\n drawerProps={{\n title: 'Files',\n }}\n text={\n <div style={{ color: '#000000a6' }}>\n <span style={{ marginRight: '5px' }}>Total Files</span>\n <RightOutlined />\n </div>\n }\n >\n <DirectoryTree\n defaultExpandAll\n selectable={false}\n treeData={treeData}\n rootStyle={{\n minHeight: '800px',\n border: '1px solid rgba(235, 237, 241)',\n }}\n />\n </TextDrawer>\n }\n description={\n <>\n <span className={styles.description}>{totalSize}</span>\n <span className={styles.unit}>{totalSizeUnit}</span>\n <div className={styles.totalNumber}>\n <span style={{ marginRight: '7px' }}>\n Number of files\n </span>\n <span style={{ fontWeight: 500 }}>\n {summary.all.total.count}\n </span>\n </div>\n </>\n }\n icon={\n <Avatar\n style={{ background: '#3874F6' }}\n shape=\"circle\"\n icon={<FileFilled style={{ fontSize: '18px' }} />}\n />\n }\n style={{\n marginBottom: '12px',\n minWidth: '210px',\n }}\n />\n <Overview\n style={{ minWidth: '210px' }}\n title={\n <div style={{ margin: '4px 0' }}>\n <span style={{ marginRight: '5px' }}>\n Duplicate Packages\n </span>\n </div>\n }\n description={duplicatePackages.length}\n icon={\n <Avatar\n style={{ background: '#13C2C2' }}\n shape=\"circle\"\n icon={<GoldenFilled style={{ fontSize: '18px' }} />}\n />\n }\n />\n </div>\n <Divider style={{ height: '200px' }} type=\"vertical\" />\n <div className={styles.chartsContainer}>\n {arr.map((e, idx) => (\n <>\n <div key={idx} className={styles.chart}>\n {e}\n </div>\n {idx !== arr.length - 1 ? (\n <Divider style={{ height: '200px' }} type=\"vertical\" />\n ) : null}\n </>\n ))}\n </div>\n </div>\n );\n }}\n </ServerAPIProvider>\n );\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|
|
1
|
+
{"version":3,"mappings":"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","names":[],"ignoreList":[],"sources":["../../../../src/pages/BundleSize/components/cards.tsx"],"sourcesContent":["/* eslint-disable react/jsx-key */\nimport React, { useState } from 'react';\nimport { Divider, Segmented, theme, Avatar, Tree } from 'antd';\nimport { Client, SDK } from '@rsdoctor/types';\nimport { RightOutlined, FileFilled, GoldenFilled } from '@ant-design/icons';\n\nimport { formatSize, useDuplicatePackagesByErrors } from '../../../utils';\nimport { StatisticCard } from '../../../components/Card/statistic';\nimport { SizeCard, bgColorType } from '../../../components/Card/size';\nimport Overview from '../../../components/Overall/overview';\nimport { ServerAPIProvider } from '../../../components/Manifest';\nimport { getFiles } from '../../..//components/Overall';\nimport { TextDrawer } from '../../..//components/TextDrawer';\n\nimport styles from './card.module';\n\nconst { DirectoryTree } = Tree;\nconst { useToken } = theme;\nconst { innerWidth } = window;\n\ninterface CardProps {\n showProgress?: boolean;\n data: Client.RsdoctorClientAssetsSummary['all']['total'];\n total: number;\n tagBgColor?: string;\n type?: string;\n}\n\nconst AssetCard: React.FC<CardProps> = ({\n showProgress = false,\n data,\n total,\n tagBgColor,\n type,\n}) => {\n const { token } = useToken();\n const _tagBgColor = tagBgColor || token.colorPrimaryBorderHover;\n return (\n <SizeCard\n type={type!}\n files={data.files}\n total={total}\n showProgress={showProgress}\n tagBgColor={_tagBgColor}\n />\n );\n};\n\nconst AssetCardContainer: React.FC<{\n type?: string;\n titles: string[];\n datas: CardProps[];\n bgColor?: bgColorType;\n}> = ({ titles, datas, bgColor, type }) => {\n const [idx, setIdx] = useState(0);\n const fileType = type || titles[idx] || titles[0];\n\n return (\n <StatisticCard\n title={\n <div className={styles.cardTitle}>\n <div className={styles.title}>{fileType}</div>\n {titles.length > 1 ? (\n <Segmented\n defaultValue={titles[idx]}\n options={titles}\n onChange={(e) => {\n setIdx(titles.indexOf(e as string));\n }}\n size=\"small\"\n style={{ transition: 'transform 0.3s ease' }}\n value={titles[idx] || titles[0]}\n />\n ) : null}\n </div>\n }\n value={\n datas.map((e, i) => (\n <AssetCard\n type={fileType}\n {...e}\n key={i}\n tagBgColor={bgColor?.tagBgColor}\n />\n ))[idx]\n }\n boxProps={{\n style: {\n background: bgColor?.bgColor,\n width: innerWidth > 1300 ? '80%' : '95%',\n },\n }}\n />\n );\n};\n\nexport const BundleCards: React.FC<{\n cwd: string;\n errors: SDK.ErrorsData;\n summary: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetAssetsSummary>;\n}> = ({ errors, summary }) => {\n const duplicatePackages = useDuplicatePackagesByErrors(errors);\n const [totalSize, totalSizeUnit] = formatSize(summary.all.total.size).split(\n ' ',\n );\n\n const arr = [\n <AssetCardContainer\n type={'JS'}\n titles={['Total', 'Initial']}\n datas={[\n {\n data: summary.js.total,\n total: summary.all.total.size,\n showProgress: true,\n },\n {\n data: summary.js.initial,\n total: summary.all.total.size,\n showProgress: true,\n },\n ]}\n />,\n <AssetCardContainer\n type={'CSS'}\n titles={['Total', 'Initial']}\n datas={[\n {\n data: summary.css.total,\n total: summary.all.total.size,\n showProgress: true,\n },\n {\n data: summary.css.initial,\n total: summary.all.total.size,\n showProgress: true,\n },\n ]}\n />,\n <AssetCardContainer\n titles={['Images', 'Fonts', 'Media']}\n datas={[\n {\n data: summary.imgs.total,\n total: summary.all.total.size,\n showProgress: true,\n },\n {\n data: summary.fonts.total,\n total: summary.all.total.size,\n showProgress: true,\n },\n {\n data: summary.media.total,\n total: summary.all.total.size,\n showProgress: true,\n },\n ]}\n />,\n <AssetCardContainer\n type={'HTML'}\n titles={['HTML Files']}\n datas={[\n {\n data: summary.html.total,\n total: summary.all.total.size,\n showProgress: true,\n },\n ]}\n />,\n ];\n\n return (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetAssetsSummary}\n body={{ withFileContent: false }}\n >\n {(res) => {\n const { treeData } = getFiles(res['all'].total);\n return (\n <div className={styles.container}>\n <div className={styles.summary}>\n <Overview\n title={\n <TextDrawer\n buttonProps={{\n size: 'small',\n }}\n buttonStyle={{\n fontSize: 'inherit',\n }}\n drawerProps={{\n title: 'Files',\n }}\n text={\n <div style={{ color: '#000000a6' }}>\n <span style={{ marginRight: '5px' }}>Total Files</span>\n <RightOutlined />\n </div>\n }\n >\n <DirectoryTree\n defaultExpandAll\n selectable={false}\n treeData={treeData}\n rootStyle={{\n minHeight: '800px',\n border: '1px solid rgba(235, 237, 241)',\n }}\n />\n </TextDrawer>\n }\n description={\n <>\n <span className={styles.description}>{totalSize}</span>\n <span className={styles.unit}>{totalSizeUnit}</span>\n <div className={styles.totalNumber}>\n <span style={{ marginRight: '7px' }}>\n Number of files\n </span>\n <span style={{ fontWeight: 500 }}>\n {summary.all.total.count}\n </span>\n </div>\n </>\n }\n icon={\n <Avatar\n style={{ background: '#3874F6' }}\n shape=\"circle\"\n icon={<FileFilled style={{ fontSize: '18px' }} />}\n />\n }\n style={{\n marginBottom: '12px',\n minWidth: '210px',\n }}\n />\n <Overview\n style={{ minWidth: '210px' }}\n title={\n <div style={{ margin: '4px 0' }}>\n <span style={{ marginRight: '5px' }}>\n Duplicate Packages\n </span>\n </div>\n }\n description={duplicatePackages.length}\n icon={\n <Avatar\n style={{ background: '#13C2C2' }}\n shape=\"circle\"\n icon={<GoldenFilled style={{ fontSize: '18px' }} />}\n />\n }\n />\n </div>\n <Divider style={{ height: '200px' }} type=\"vertical\" />\n <div className={styles.chartsContainer}>\n {arr.map((e, idx) => (\n <>\n <div key={idx} className={styles.chart}>\n {e}\n </div>\n {idx !== arr.length - 1 ? (\n <Divider\n key={`${idx}-divider`}\n style={{ height: '200px' }}\n type=\"vertical\"\n />\n ) : null}\n </>\n ))}\n </div>\n </div>\n );\n }}\n </ServerAPIProvider>\n );\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|
|
@@ -142,24 +142,34 @@ const ModulesModal = (searchModule, chunk, onModuleClick) => {
|
|
|
142
142
|
/* @__PURE__ */ jsx(Typography.Text, { code: true, children: "Module:" }),
|
|
143
143
|
itemPathArr.map((cur, index) => {
|
|
144
144
|
if (index < itemPathArr.length - 1) {
|
|
145
|
-
return /* @__PURE__ */ jsxs(
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
145
|
+
return /* @__PURE__ */ jsxs(
|
|
146
|
+
Typography.Text,
|
|
147
|
+
{
|
|
148
|
+
style: { fontWeight: 200 },
|
|
149
|
+
children: [
|
|
150
|
+
cur,
|
|
151
|
+
/* @__PURE__ */ jsx(
|
|
152
|
+
Typography.Text,
|
|
153
|
+
{
|
|
154
|
+
strong: true,
|
|
155
|
+
style: { fontWeight: 600 },
|
|
156
|
+
children: searchModule
|
|
157
|
+
},
|
|
158
|
+
`${cur}-${index}-strong`
|
|
159
|
+
)
|
|
160
|
+
]
|
|
161
|
+
},
|
|
162
|
+
`${cur}-${index}`
|
|
163
|
+
);
|
|
156
164
|
}
|
|
157
165
|
return /* @__PURE__ */ jsx(Typography.Text, { style: { fontWeight: 200 }, children: cur });
|
|
158
166
|
})
|
|
159
167
|
] })
|
|
160
|
-
}
|
|
168
|
+
},
|
|
169
|
+
`${item.path}-${item.relativePath}-meta`
|
|
161
170
|
) })
|
|
162
|
-
}
|
|
171
|
+
},
|
|
172
|
+
`${item.path}-${item.relativePath}`
|
|
163
173
|
);
|
|
164
174
|
}
|
|
165
175
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"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","names":[],"ignoreList":[],"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 '../../../components';\nimport { SDK } from '@rsdoctor/types';\nimport styles from './index.module';\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 onClick={\n onModuleClick ? () => onModuleClick(item) : undefined\n }\n >\n <Skeleton avatar title={false} loading={!item.path} active>\n <List.Item.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 style={{ fontWeight: 200 }}>\n {cur}\n <Typography.Text\n 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//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|
|
1
|
+
{"version":3,"mappings":"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","names":[],"ignoreList":[],"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 '../../../components';\nimport { SDK } from '@rsdoctor/types';\nimport styles from './index.module';\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//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rsdoctor/components",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.7",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -74,9 +74,9 @@
|
|
|
74
74
|
"react-router-dom": "6.4.3",
|
|
75
75
|
"socket.io-client": "4.6.1",
|
|
76
76
|
"url-parse": "1.5.10",
|
|
77
|
-
"@rsdoctor/graph": "1.1.
|
|
78
|
-
"@rsdoctor/
|
|
79
|
-
"@rsdoctor/
|
|
77
|
+
"@rsdoctor/graph": "1.1.7",
|
|
78
|
+
"@rsdoctor/utils": "1.1.7",
|
|
79
|
+
"@rsdoctor/types": "1.1.7"
|
|
80
80
|
},
|
|
81
81
|
"publishConfig": {
|
|
82
82
|
"access": "public",
|