@rsdoctor/components 1.3.12 → 1.3.13-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/TreeMap.mjs","sources":["../../../src/components/Charts/TreeMap.tsx"],"sourcesContent":["import React, { useEffect, useState, memo, useMemo } from 'react';\nimport EChartsReactCore from 'echarts-for-react/esm/core';\nimport * as echarts from 'echarts/core';\nimport { TreemapChart } from 'echarts/charts';\nimport { TooltipComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { BUNDLE_ANALYZER_COLORS, COLOR_GROUPS } from './constants';\nimport { Checkbox, Card, Typography, Space, Tooltip, Tag } from 'antd';\nimport {\n VerticalAlignBottomOutlined,\n VerticalAlignTopOutlined,\n InfoCircleOutlined,\n} from '@ant-design/icons';\nimport { formatSize, useI18n } from 'src/utils';\nimport { SearchModal } from 'src/pages/BundleSize/components/search-modal';\nimport Styles from './treemap.module.scss';\n\n// TreeNode type should match the output of flattenTreemapData\nexport type TreeNode = {\n name: string;\n value?: number;\n children?: TreeNode[];\n path?: string;\n sourceSize?: number;\n bundledSize?: number;\n gzipSize?: number;\n};\n\ninterface TreeMapProps {\n treeData: TreeNode[];\n valueKey?: 'sourceSize' | 'bundledSize'; // which value to show as area\n style?: React.CSSProperties;\n onChartClick?: (params: any) => void;\n}\n\n// Simple hash function for string (djb2)\nfunction hashString(str: string): number {\n let hash = 5381;\n for (let i = 0; i < str.length; i++) {\n hash = (hash << 5) + hash + str.charCodeAt(i); /* hash * 33 + c */\n }\n return hash >>> 0; // Ensure unsigned\n}\n\nfunction getLevelOption() {\n return [\n {\n itemStyle: {\n color: 'white',\n borderColor: '#eee',\n borderWidth: 5,\n gapWidth: 5,\n },\n emphasis: {\n itemStyle: {\n borderColor: '#a29f9f',\n },\n },\n },\n {\n colorSaturation: [0.25, 0.5],\n itemStyle: {\n borderWidth: 5,\n gapWidth: 5,\n borderColorSaturation: 0.5,\n borderColor: '#eee',\n },\n },\n ];\n}\n\nconst TreeMapInner: React.FC<TreeMapProps & { forwardedRef?: React.Ref<any> }> =\n memo(\n ({\n treeData,\n valueKey = 'sourceSize',\n style,\n onChartClick,\n forwardedRef,\n }) => {\n const [option, setOption] = useState<any>(null);\n const chartRef = React.useRef<any>(null);\n\n // Expose chartRef to parent if forwardedRef is provided\n useEffect(() => {\n if (forwardedRef && chartRef.current) {\n if (typeof forwardedRef === 'function') {\n forwardedRef(chartRef.current);\n } else {\n (forwardedRef as React.MutableRefObject<any>).current =\n chartRef.current;\n }\n }\n }, [forwardedRef, chartRef.current]);\n\n // Register ECharts components\n useEffect(() => {\n echarts.use([TreemapChart, TooltipComponent, CanvasRenderer]);\n }, []);\n\n useEffect(() => {\n if (!treeData) return;\n // Helper to recursively add value field for ECharts\n function convert(\n node: TreeNode,\n colorGroup: keyof typeof BUNDLE_ANALYZER_COLORS,\n level = 0,\n ): any {\n const groupColors = BUNDLE_ANALYZER_COLORS[colorGroup];\n const children = node.children?.map((c, _i) =>\n convert(c, colorGroup, level + 1),\n );\n\n return {\n id: node.path ? hashString(node.path) : undefined,\n name: node.name,\n value: node[valueKey] || node.value || node['sourceSize'] || 0,\n path: node.path,\n sourceSize: node.sourceSize ?? node.value,\n bundledSize: node.bundledSize,\n gzipSize: node.gzipSize,\n children: children && children.length > 0 ? children : undefined,\n itemStyle: {\n borderWidth: 2,\n gapWidth: 2,\n borderColorSaturation: 0.2,\n colorSaturation: 0.2,\n color: groupColors[level % groupColors.length],\n borderColor: groupColors[level % groupColors.length],\n },\n level,\n };\n }\n const data = treeData.map((item, index) => {\n const group = COLOR_GROUPS[index % COLOR_GROUPS.length];\n return convert(item, group, 0);\n });\n\n setOption({\n title: {\n text: 'Bundle Tree Map',\n left: 'center',\n },\n tooltip: {\n position: 'top',\n formatter: function (info: any) {\n var treePathInfo = info.treePathInfo;\n var treePath = [];\n for (var i = 1; i < treePathInfo.length; i++) {\n treePath.push(treePathInfo[i].name);\n }\n // Get extra info from node data\n var node = info.data || {};\n var path = node.path || treePath.join('/');\n var sourceSize = node.sourceSize;\n var bundledSize = node.bundledSize;\n var gzipSize = node.gzipSize;\n var level = node.level;\n\n function makeRow(\n label: string,\n value: string,\n valueColor?: string,\n ) {\n return (\n `<div class=\"${Styles['tooltip-row']}\">` +\n `<span class=\"${Styles['tooltip-label']}\">${label}</span>` +\n `<span${valueColor ? ` style=\"color: ${valueColor}\"` : ''}>${value}</span>` +\n '</div>'\n );\n }\n return [\n `<div class=\"${Styles['tooltip-path']}\">` +\n echarts.format.encodeHTML(path) +\n '</div>',\n makeRow(\n level === 0 ? 'Asset' : 'Source',\n sourceSize !== undefined ? formatSize(sourceSize) : '-',\n ),\n !bundledSize\n ? ''\n : makeRow('Bundled', formatSize(bundledSize), '#1890ff'),\n !gzipSize\n ? ''\n : makeRow('Gzipped', formatSize(gzipSize), '#52c41a'),\n ].join('');\n },\n },\n series: [\n {\n name: 'Bundle Tree Map',\n id: 'bundle-treemap',\n type: 'treemap',\n visibleMin: 300,\n left: 10,\n right: 10,\n top: 10,\n bottom: 10,\n label: {\n show: true,\n formatter: '{b}',\n color: '#000',\n },\n upperLabel: {\n show: true,\n height: 30,\n },\n\n levels: getLevelOption(),\n data: data,\n },\n ],\n });\n }, [treeData, valueKey]);\n\n return option ? (\n <div>\n <EChartsReactCore\n ref={chartRef}\n option={option}\n echarts={echarts}\n onEvents={onChartClick ? { click: onChartClick } : undefined}\n style={{\n width: '100%',\n minHeight: '500px',\n maxHeight: '1000px',\n border: '5px solid white',\n borderRadius: '10px',\n ...style,\n }}\n className={Styles['chart-container']}\n />\n </div>\n ) : null;\n },\n );\n\nexport const TreeMap = React.forwardRef<any, TreeMapProps>((props, ref) => (\n <TreeMapInner {...props} forwardedRef={ref} />\n));\n\nexport const AssetTreemapWithFilter: React.FC<{\n treeData: TreeNode[];\n onChartClick?: (params: any) => void;\n bundledSize?: boolean;\n}> = ({ treeData, onChartClick, bundledSize = false }) => {\n const assetNames = useMemo(\n () => treeData.map((item) => item.name),\n [treeData],\n );\n const [checkedAssets, setCheckedAssets] = useState<string[]>(assetNames);\n const [collapsed, setCollapsed] = useState(false);\n const [searchModalOpen, setSearchModalOpen] = useState(false);\n const chartRef = React.useRef<any>(null);\n const { t } = useI18n();\n\n const filteredTreeData = useMemo(\n () => treeData.filter((item) => checkedAssets.includes(item.name)),\n [treeData, checkedAssets],\n );\n\n // Handler for search modal click\n const handleModuleClick = (module: any) => {\n if (!module?.path) return;\n const nodeId = hashString(module.path);\n if (chartRef.current) {\n const echartsInstance = chartRef.current.getEchartsInstance();\n echartsInstance.dispatchAction({\n type: 'treemapZoomToNode',\n seriesId: 'bundle-treemap',\n targetNodeId: nodeId.toString(),\n });\n }\n setSearchModalOpen(false);\n };\n\n return (\n <div\n style={{ display: 'flex', flexDirection: 'column', gap: 16 }}\n className={Styles.treemap}\n >\n <Space direction=\"vertical\" style={{ width: '100%' }}>\n <Card\n title={\n <Space>\n <Typography.Text>{t('Output Assets List')}</Typography.Text>\n <SearchModal\n onModuleClick={handleModuleClick}\n open={searchModalOpen}\n setOpen={setSearchModalOpen}\n isIcon={true}\n />\n <Tooltip\n color={'white'}\n title={\n <span>\n ✨ In Rspack, TreeMap proportions are always based on\n Bundled Size by default.\n <br />\n ✨ In Webpack, TreeMap proportions are based on Bundled Size\n only when SourceMap is enabled.\n <br />✨ <b>Bundled Size</b>: The size of a module after\n bundling and minification.\n <br />✨ <b>Source Size</b>: The size of a module after\n compilation (e.g., TypeScript/JSX to JS), but before\n bundling and minification.\n <br />✨ <b>Gzipped Size</b>: The compressed file size that\n users actually download, as most web servers use gzip\n compression.\n <br />\n </span>\n }\n overlayInnerStyle={{ width: 620, color: 'black' }}\n >\n <InfoCircleOutlined\n style={{ color: '#1890ff', marginLeft: 8 }}\n />\n </Tooltip>\n <Tag color=\"blue\">\n TreeMap area based on{' '}\n {bundledSize ? 'Bundled Size' : 'Source Size'}\n </Tag>\n </Space>\n }\n extra={\n <span\n className={Styles['collapse-icon']}\n onClick={() => setCollapsed((c) => !c)}\n aria-label={collapsed ? t('Expand') : t('Collapse')}\n >\n {collapsed ? (\n <VerticalAlignBottomOutlined />\n ) : (\n <VerticalAlignTopOutlined />\n )}\n </span>\n }\n size=\"small\"\n className={`card-body ${collapsed ? 'collapsed' : ''}`}\n >\n <div className={`checkbox-container ${collapsed ? 'collapsed' : ''}`}>\n <Checkbox\n key=\"all-none-checkbox\"\n indeterminate={\n checkedAssets.length > 0 &&\n checkedAssets.length < assetNames.length\n }\n checked={checkedAssets.length === assetNames.length}\n onChange={(e) =>\n setCheckedAssets(e.target.checked ? assetNames : [])\n }\n className={Styles['all-none-checkbox']}\n >\n {'ALL / NONE'}\n </Checkbox>\n <Checkbox.Group\n key=\"asset-checkbox-group\"\n options={assetNames}\n value={checkedAssets}\n onChange={setCheckedAssets}\n className={`checkbox-container ${collapsed ? 'collapsed' : ''} ${Styles['asset-checkbox-group']}`}\n />\n </div>\n </Card>\n <div style={{ flex: 1 }}>\n <TreeMap\n ref={chartRef}\n treeData={filteredTreeData}\n valueKey={bundledSize ? 'bundledSize' : 'sourceSize'}\n onChartClick={onChartClick}\n />\n </div>\n </Space>\n </div>\n );\n};\n"],"names":["hashString","str","hash","i","getLevelOption","TreeMapInner","memo","treeData","valueKey","style","onChartClick","forwardedRef","option","setOption","useState","chartRef","React","useEffect","echarts","TreemapChart","TooltipComponent","CanvasRenderer","convert","node","colorGroup","level","groupColors","BUNDLE_ANALYZER_COLORS","children","c","_i","undefined","data","item","index","group","COLOR_GROUPS","info","treePathInfo","treePath","path","sourceSize","bundledSize","gzipSize","makeRow","label","value","valueColor","Styles","formatSize","EChartsReactCore","TreeMap","props","ref","AssetTreemapWithFilter","assetNames","useMemo","checkedAssets","setCheckedAssets","collapsed","setCollapsed","searchModalOpen","setSearchModalOpen","t","useI18n","filteredTreeData","handleModuleClick","module","nodeId","echartsInstance","Space","Card","Typography","SearchModal","Tooltip","InfoCircleOutlined","Tag","VerticalAlignBottomOutlined","VerticalAlignTopOutlined","Checkbox","e"],"mappings":"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"}
1
+ {"version":3,"file":"components/Charts/TreeMap.mjs","sources":["../../../src/components/Charts/TreeMap.tsx"],"sourcesContent":["import React, { useEffect, useState, memo, useMemo, useCallback } from 'react';\nimport EChartsReactCore from 'echarts-for-react/esm/core';\nimport * as echarts from 'echarts/core';\nimport { TreemapChart } from 'echarts/charts';\nimport { TooltipComponent } from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { BUNDLE_ANALYZER_COLORS, COLOR_GROUPS } from './constants';\nimport { Checkbox, Radio, Input } from 'antd';\nimport {\n LeftOutlined,\n RightOutlined,\n SearchOutlined,\n FullscreenOutlined,\n FullscreenExitOutlined,\n} from '@ant-design/icons';\nimport { formatSize } from 'src/utils';\nimport { SDK } from '@rsdoctor/types';\nimport { ServerAPIProvider } from 'src/components/Manifest';\nimport Styles from './treemap.module.scss';\n\necharts.use([TreemapChart, TooltipComponent, CanvasRenderer]);\n\nexport type TreeNode = {\n name: string;\n value?: number;\n children?: TreeNode[];\n path?: string;\n sourceSize?: number;\n bundledSize?: number;\n gzipSize?: number;\n};\n\nexport type SizeType = 'stat' | 'parsed' | 'gzip' | 'value';\n\ninterface TreeMapProps {\n treeData: TreeNode[];\n sizeType: SizeType;\n style?: React.CSSProperties;\n onChartClick?: (params: any) => void;\n highlightNodeId?: number;\n centerNodeId?: number;\n rootPath?: string;\n}\n\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);\n }\n return hash >>> 0;\n}\n\nfunction getLevelOption() {\n return [\n {\n itemStyle: {\n gapWidth: 3,\n borderColor: '#eee',\n },\n upperLabel: {\n show: false,\n },\n },\n {\n itemStyle: {\n borderWidth: 5,\n gapWidth: 2,\n },\n },\n {\n colorSaturation: [0.3, 0.9],\n itemStyle: {\n borderWidth: 5,\n gapWidth: 2,\n borderColorSaturation: 0.6,\n borderColor: '#eee',\n },\n },\n ];\n}\n\nconst TreeMapInner: React.FC<TreeMapProps & { forwardedRef?: React.Ref<any> }> =\n memo(\n ({\n treeData,\n sizeType,\n style,\n onChartClick,\n forwardedRef,\n highlightNodeId,\n centerNodeId,\n rootPath,\n }) => {\n const [option, setOption] = useState<any>(null);\n const chartRef = React.useRef<any>(null);\n const chartDataRef = React.useRef<any[]>([]);\n\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 useEffect(() => {\n if (!treeData) return;\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 _level = level;\n const children = node.children?.map((c) =>\n convert(c, colorGroup, _level + 1),\n );\n\n let val = 0;\n if (sizeType === 'stat') val = node.sourceSize || 0;\n else if (sizeType === 'parsed') val = node.bundledSize || 0;\n else if (sizeType === 'gzip') val = node.gzipSize || 0;\n else if (sizeType === 'value') val = node.value || 0;\n\n if (!val && node.value) val = node.value;\n\n const nodeId = node.path\n ? hashString(node.path)\n : hashString(node.name || '');\n const isHighlighted = highlightNodeId === nodeId;\n console.log(\n (level % groupColors.length) - 1,\n groupColors,\n colorGroup,\n );\n const result: any = {\n id: nodeId,\n name: node.name,\n value: val,\n path: node.path || node.name,\n sourceSize: node.sourceSize ?? (sizeType === 'stat' ? val : 0),\n bundledSize: node.bundledSize ?? (sizeType === 'parsed' ? val : 0),\n gzipSize: node.gzipSize ?? (sizeType === 'gzip' ? val : 0),\n itemStyle: {\n borderWidth: isHighlighted ? 4 : 1,\n gapWidth: 2,\n color: isHighlighted\n ? '#fff5f5'\n : groupColors[(level % groupColors.length) - 1],\n borderColor: isHighlighted\n ? '#ff4d4f'\n : groupColors[(level % groupColors.length) - 1],\n borderColorSaturation: isHighlighted ? 1 : 0.5,\n },\n };\n\n if (children && children.length > 0) {\n result.children = children;\n }\n\n if (isHighlighted) {\n result.emphasis = {\n itemStyle: {\n borderColor: '#ff4d4f',\n borderWidth: 4,\n color: '#fff5f5',\n },\n };\n }\n\n return result;\n }\n\n const data = treeData\n .map((item, index) => {\n const group = COLOR_GROUPS[index % COLOR_GROUPS.length];\n return convert(item, group, 1);\n })\n .filter(\n (item) =>\n item.value > 0 || (item.children && item.children.length > 0),\n );\n\n chartDataRef.current = data;\n\n setOption({\n title: {\n text: 'Rsdoctor TreeMap',\n left: 'center',\n top: 10,\n textStyle: {\n fontSize: 16,\n fontWeight: 'bold',\n color: 'rgba(0, 0, 0, 0.8)',\n },\n },\n tooltip: {\n padding: 10,\n backgroundColor: '#fff',\n borderColor: '#eee',\n borderWidth: 1,\n textStyle: {\n color: 'rgba(0, 0, 0, 0.8)',\n },\n confine: true,\n extraCssText: 'max-width: 450px; word-wrap: break-word;',\n position: function (\n pos: any,\n _params: any,\n _dom: any,\n _rect: any,\n size: any,\n ) {\n var obj = { top: pos[1] + 10 };\n if (pos[0] < size.viewSize[0] / 2) {\n (obj as any).left = pos[0] + 10;\n } else {\n (obj as any).right = size.viewSize[0] - pos[0] + 10;\n }\n return obj;\n },\n formatter: function (info: any) {\n const node = info.data || {};\n const name = node.name;\n let path = node.path || name;\n\n // Remove root path prefix if rootPath is provided\n if (rootPath && path) {\n const normalizedRoot = rootPath\n .replace(/\\\\/g, '/')\n .replace(/\\/$/, '');\n const normalizedPath = path.replace(/\\\\/g, '/');\n if (normalizedPath.startsWith(normalizedRoot + '/')) {\n path = normalizedPath.slice(normalizedRoot.length + 1);\n } else if (normalizedPath === normalizedRoot) {\n path = '';\n }\n }\n\n const sourceSize = node.sourceSize || node.value;\n const bundledSize = node.bundledSize;\n const gzipSize = node.gzipSize;\n\n function makeRow(label: string, value: string, color: string) {\n return `<div class=\"${Styles['tooltip-row']}\">\n <span class=\"${Styles['tooltip-label']}\" style=\"color: ${color};\">${label}</span>\n <span style=\"color: ${color};\">${value}</span>\n </div>`;\n }\n\n const rows = [];\n if (sourceSize !== undefined) {\n rows.push(\n makeRow('Stat size', formatSize(sourceSize), '#52c41a'),\n ); // Green\n }\n if (bundledSize !== undefined) {\n rows.push(\n makeRow('Parsed size', formatSize(bundledSize), '#fadb14'),\n ); // Yellow\n }\n if (gzipSize !== undefined) {\n rows.push(\n makeRow('Gzipped size', formatSize(gzipSize), '#1677ff'),\n ); // Blue\n }\n\n return `\n <div style=\"font-family: sans-serif; font-size: 12px; line-height: 1.5;\">\n <div style=\"margin-bottom: 6px; max-width: 400px; word-wrap: break-word; overflow-wrap: break-word; word-break: break-all; white-space: normal; color: rgba(0, 0, 0, 0.8);\">${echarts.format.encodeHTML(path)}</div>\n ${rows.join('')}\n </div>\n `;\n },\n },\n series: [\n {\n type: 'treemap',\n label: {\n show: true,\n formatter: '{b}',\n fontSize: 12,\n color: '#000',\n position: 'inside',\n fontWeight: 'normal',\n textBorderColor: '#fff',\n textBorderWidth: 2,\n padding: [4, 8, 4, 8],\n },\n upperLabel: {\n show: true,\n height: 30,\n color: '#000',\n fontSize: 12,\n fontWeight: 'normal',\n padding: [0, 0, 0, 4],\n },\n itemStyle: {\n borderColor: '#fff',\n },\n levels: getLevelOption(),\n data: data,\n breadcrumb: {\n show: true,\n left: 'center',\n top: 'bottom',\n height: 22,\n emptyItemWidth: 25,\n itemStyle: {\n color: '#999',\n borderColor: 'transparent',\n borderWidth: 0,\n borderRadius: 0,\n },\n emphasis: {\n itemStyle: {\n color: '#333',\n },\n },\n textStyle: {\n fontFamily: 'sans-serif',\n fontSize: 12,\n color: '#666',\n },\n },\n roam: true,\n nodeClick: false,\n zoomToNodeRatio: 0.5,\n animationDurationUpdate: 500,\n width: '100%',\n height: '100%',\n top: 40,\n bottom: 30,\n left: 0,\n right: 0,\n },\n ],\n });\n }, [treeData, sizeType, highlightNodeId, rootPath]);\n\n useEffect(() => {\n if (centerNodeId && chartRef.current && option) {\n const chartInstance = chartRef.current.getEchartsInstance();\n if (chartInstance) {\n const findNodeInfo = (\n data: any[],\n targetId: number,\n path: string[] = [],\n ): { name: string; path: string[] } | null => {\n for (const item of data) {\n const currentPath = [...path, item.name];\n if (item.id === targetId) {\n return { name: item.name, path: currentPath };\n }\n if (item.children) {\n const found = findNodeInfo(\n item.children,\n targetId,\n currentPath,\n );\n if (found) return found;\n }\n }\n return null;\n };\n\n setTimeout(() => {\n const nodeInfo = findNodeInfo(chartDataRef.current, centerNodeId);\n if (!nodeInfo) return;\n\n try {\n chartInstance.dispatchAction({\n type: 'highlight',\n seriesIndex: 0,\n name: nodeInfo.name,\n });\n } catch (e) {}\n\n const zoomStrategies: Array<() => void> = [\n () =>\n chartInstance.dispatchAction({\n type: 'treemapZoomToNode',\n seriesIndex: 0,\n targetNodeId: String(centerNodeId),\n }),\n () =>\n chartInstance.dispatchAction({\n type: 'treemapZoomToNode',\n seriesIndex: 0,\n name: nodeInfo.name,\n }),\n () =>\n chartInstance.dispatchAction({\n type: 'treemapZoomToNode',\n seriesIndex: 0,\n name: nodeInfo.path.join('/'),\n }),\n () =>\n nodeInfo.path.length > 0 &&\n chartInstance.dispatchAction({\n type: 'treemapZoomToNode',\n seriesIndex: 0,\n name: nodeInfo.path[nodeInfo.path.length - 1],\n }),\n ];\n\n for (const strategy of zoomStrategies) {\n try {\n strategy();\n return;\n } catch (e) {\n console.error(\n 'Failed to zoom to node with id:',\n centerNodeId,\n e,\n );\n }\n }\n\n console.warn('Failed to zoom to node with id:', centerNodeId);\n }, 200);\n }\n }\n }, [centerNodeId, option]);\n\n return option ? (\n <div className={Styles['chart-container']} style={style}>\n <EChartsReactCore\n ref={chartRef}\n option={option}\n echarts={echarts}\n onEvents={{\n click: (params: any) => {\n if (chartRef.current) {\n const instance = chartRef.current.getEchartsInstance();\n if (instance && params?.data?.id) {\n instance.dispatchAction({\n type: 'treemapZoomToNode',\n seriesIndex: 0,\n targetNodeId: String(params.data.id),\n });\n }\n }\n onChartClick?.(params);\n },\n }}\n style={{\n width: '100%',\n height: '100%',\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 bundledSize?: boolean;\n}> = ({ treeData, onChartClick, bundledSize = true }) => {\n return (\n <ServerAPIProvider api={SDK.ServerAPI.API.GetProjectInfo}>\n {(projectInfo) => {\n return (\n <AssetTreemapWithFilterInner\n treeData={treeData}\n onChartClick={onChartClick}\n bundledSize={bundledSize}\n rootPath={projectInfo.root}\n />\n );\n }}\n </ServerAPIProvider>\n );\n};\n\nconst AssetTreemapWithFilterInner: React.FC<{\n treeData: TreeNode[];\n onChartClick?: (params: any) => void;\n bundledSize?: boolean;\n rootPath: string;\n}> = ({ treeData, onChartClick, bundledSize = true, rootPath }) => {\n const assetNames = useMemo(\n () => treeData.map((item) => item.name),\n [treeData],\n );\n\n const [checkedAssets, setCheckedAssets] = useState<string[]>(assetNames);\n const [collapsed, setCollapsed] = useState(false);\n const [sizeType, setSizeType] = useState<SizeType>(\n bundledSize ? 'parsed' : 'stat',\n );\n const [searchQuery, setSearchQuery] = useState('');\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [highlightNodeId, setHighlightNodeId] = useState<number | undefined>();\n const [centerNodeId, setCenterNodeId] = useState<number | undefined>();\n\n const chartRef = React.useRef<any>(null);\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n const enterFullscreen = useCallback(() => {\n if (containerRef.current) {\n containerRef.current\n .requestFullscreen()\n .then(() => setIsFullscreen(true))\n .catch((err) => console.error('Failed to enter fullscreen:', err));\n }\n }, []);\n\n const exitFullscreen = useCallback(() => {\n document\n .exitFullscreen()\n .then(() => setIsFullscreen(false))\n .catch((err) => console.error('Failed to exit fullscreen:', err));\n }, []);\n\n const toggleFullscreen = useCallback(() => {\n if (isFullscreen) {\n exitFullscreen();\n } else {\n enterFullscreen();\n }\n }, [isFullscreen, enterFullscreen, exitFullscreen]);\n\n useEffect(() => {\n const handleFullscreenChange = () => {\n setIsFullscreen(!!document.fullscreenElement);\n };\n document.addEventListener('fullscreenchange', handleFullscreenChange);\n return () => {\n document.removeEventListener('fullscreenchange', handleFullscreenChange);\n };\n }, []);\n\n const searchResults = useMemo(() => {\n if (!searchQuery.trim()) return [];\n\n const regex = new RegExp(searchQuery, 'i');\n const results: Array<{ path: string; nodeId: number }> = [];\n\n const collectMatchingPaths = (node: TreeNode) => {\n if (node.path && regex.test(node.path)) {\n const nodeId = hashString(node.path);\n results.push({ path: node.path, nodeId });\n }\n if (node.children) {\n node.children.forEach(collectMatchingPaths);\n }\n };\n\n treeData.forEach(collectMatchingPaths);\n return results;\n }, [treeData, searchQuery]);\n\n const filteredTreeData = useMemo(() => {\n let filtered = treeData.filter((item) => checkedAssets.includes(item.name));\n\n return filtered;\n }, [treeData, checkedAssets]);\n\n const handleSearchResultClick = useCallback((nodeId: number) => {\n setHighlightNodeId(nodeId);\n setCenterNodeId(nodeId);\n }, []);\n\n const removeRootPath = useCallback(\n (filepath: string): string => {\n if (!rootPath || !filepath) return filepath;\n const normalizedRoot = rootPath.replace(/\\\\/g, '/').replace(/\\/$/, '');\n const normalizedPath = filepath.replace(/\\\\/g, '/');\n\n if (normalizedPath.startsWith(normalizedRoot + '/')) {\n return normalizedPath.slice(normalizedRoot.length + 1);\n } else if (normalizedPath === normalizedRoot) {\n return '';\n }\n return filepath;\n },\n [rootPath],\n );\n\n const getSize = useCallback((node: TreeNode, type?: SizeType) => {\n if (type === 'stat') return node.sourceSize || 0;\n if (type === 'parsed') return node.bundledSize || 0;\n if (type === 'gzip') return node.gzipSize || 0;\n if (type === 'value') return node.value || 0;\n if (node.value) return node.value;\n return 0;\n }, []);\n\n const calculateNodeTotalSize = useCallback(\n (node: TreeNode, type: SizeType): number => {\n let size = getSize(node, type);\n\n if (node.children && node.children.length > 0) {\n const childrenSize = node.children.reduce(\n (sum, child) => sum + calculateNodeTotalSize(child, type),\n 0,\n );\n if (size === 0 || (!node.path && childrenSize > 0)) {\n size = childrenSize;\n }\n }\n\n return size;\n },\n [getSize],\n );\n\n const getChunkSize = useCallback(\n (name: string, type?: SizeType) => {\n const node = treeData.find((n) => n.name === name);\n if (!node) return 0;\n const sizeTypeToUse = type || sizeType;\n return calculateNodeTotalSize(node, sizeTypeToUse);\n },\n [treeData, sizeType, calculateNodeTotalSize],\n );\n\n return (\n <div className={Styles.treemap} ref={containerRef}>\n <button\n className={Styles['fullscreen-button']}\n onClick={toggleFullscreen}\n title={isFullscreen ? 'Exit fullscreen' : 'Enter fullscreen'}\n aria-label={isFullscreen ? 'Exit fullscreen' : 'Enter fullscreen'}\n >\n {isFullscreen ? <FullscreenExitOutlined /> : <FullscreenOutlined />}\n </button>\n\n <div className={`${Styles.sidebar} ${collapsed ? Styles.collapsed : ''}`}>\n <div\n className={`${Styles['sidebar-toggle']} ${collapsed ? Styles.collapsed : ''}`}\n onClick={() => setCollapsed(!collapsed)}\n >\n {collapsed ? <RightOutlined /> : <LeftOutlined />}\n </div>\n <div className={Styles['sidebar-content']}>\n <div>\n <h4>Treemap sizes</h4>\n <Radio.Group\n value={sizeType}\n onChange={(e) => setSizeType(e.target.value)}\n size=\"small\"\n buttonStyle=\"solid\"\n >\n <Radio.Button value=\"stat\">Stat</Radio.Button>\n <Radio.Button value=\"parsed\">Parsed</Radio.Button>\n <Radio.Button value=\"gzip\">Gzipped</Radio.Button>\n </Radio.Group>\n </div>\n\n <div>\n <h4>Search modules</h4>\n <Input\n placeholder=\"Enter regexp\"\n value={searchQuery}\n onChange={(e) => {\n setSearchQuery(e.target.value);\n setHighlightNodeId(undefined);\n setCenterNodeId(undefined);\n }}\n suffix={<SearchOutlined style={{ color: '#ccc' }} />}\n allowClear\n size=\"small\"\n />\n {searchQuery.trim() && searchResults.length > 0 && (\n <div className={Styles['search-results']}>\n <div className={Styles['search-results-header']}>\n Found {searchResults.length} file\n {searchResults.length > 1 ? 's' : ''}\n </div>\n <div className={Styles['search-results-list']}>\n {searchResults.map((result, index) => {\n const displayPath = removeRootPath(result.path);\n return (\n <div\n key={index}\n className={Styles['search-result-item']}\n onClick={() => handleSearchResultClick(result.nodeId)}\n title={result.path}\n >\n {displayPath || result.path}\n </div>\n );\n })}\n </div>\n </div>\n )}\n {searchQuery.trim() && searchResults.length === 0 && (\n <div className={Styles['search-results-empty']}>\n No files found matching \"{searchQuery}\"\n </div>\n )}\n </div>\n\n <div>\n <h4>Show chunks</h4>\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 className={Styles['all-none-checkbox']}\n >\n All\n </Checkbox>\n <div className={Styles['chunk-list']}>\n {assetNames.map((name) => (\n <div key={name} className={Styles['chunk-item']}>\n <Checkbox\n checked={checkedAssets.includes(name)}\n onChange={(e) => {\n if (e.target.checked) {\n setCheckedAssets([...checkedAssets, name]);\n } else {\n setCheckedAssets(\n checkedAssets.filter((a) => a !== name),\n );\n }\n }}\n >\n <span title={name}>{name}</span>\n </Checkbox>\n <span className={Styles['size-tag']}>\n {formatSize(getChunkSize(name, 'value'))}\n </span>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n\n <div className={Styles['chart-wrapper']}>\n <TreeMap\n ref={chartRef}\n treeData={filteredTreeData}\n sizeType={sizeType}\n onChartClick={onChartClick}\n highlightNodeId={highlightNodeId}\n centerNodeId={centerNodeId}\n rootPath={rootPath}\n style={{ width: '100%', height: '100%' }}\n />\n </div>\n </div>\n );\n};\n"],"names":["echarts","TreemapChart","TooltipComponent","CanvasRenderer","hashString","str","hash","i","getLevelOption","TreeMapInner","memo","treeData","sizeType","style","onChartClick","forwardedRef","highlightNodeId","centerNodeId","rootPath","option","setOption","useState","chartRef","React","chartDataRef","useEffect","convert","node","colorGroup","level","groupColors","BUNDLE_ANALYZER_COLORS","_level","children","c","val","nodeId","isHighlighted","console","result","data","item","index","group","COLOR_GROUPS","pos","_params","_dom","_rect","size","obj","info","name","path","normalizedRoot","normalizedPath","sourceSize","bundledSize","gzipSize","makeRow","label","value","color","Styles","rows","undefined","formatSize","chartInstance","findNodeInfo","targetId","currentPath","found","setTimeout","nodeInfo","e","zoomStrategies","String","strategy","EChartsReactCore","params","instance","TreeMap","props","ref","AssetTreemapWithFilter","ServerAPIProvider","SDK","projectInfo","AssetTreemapWithFilterInner","assetNames","useMemo","checkedAssets","setCheckedAssets","collapsed","setCollapsed","setSizeType","searchQuery","setSearchQuery","isFullscreen","setIsFullscreen","setHighlightNodeId","setCenterNodeId","containerRef","enterFullscreen","useCallback","err","exitFullscreen","document","toggleFullscreen","handleFullscreenChange","searchResults","regex","RegExp","results","collectMatchingPaths","filteredTreeData","filtered","handleSearchResultClick","removeRootPath","filepath","getSize","type","calculateNodeTotalSize","childrenSize","sum","child","getChunkSize","n","sizeTypeToUse","FullscreenExitOutlined","FullscreenOutlined","RightOutlined","LeftOutlined","Radio","Input","SearchOutlined","displayPath","Checkbox","a"],"mappings":"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"}
@@ -8,11 +8,12 @@ export declare enum ChartTypes {
8
8
  Normal = 5
9
9
  }
10
10
  export declare const BUNDLE_ANALYZER_COLORS: {
11
- readonly green: readonly [string, string, string, string, string, string, string];
12
- readonly blue: readonly [string, string, string, string, string, string, string];
13
- readonly purple: readonly [string, string, string, string, string, string, string];
14
- readonly yellow: readonly [string, string, string, string, string, string, string];
15
- readonly grey: readonly [string, string, string, string, string, string, string];
11
+ readonly orange: readonly [string, string, string, string, string, string];
12
+ readonly purple: readonly [string, string, string, string, string, string];
13
+ readonly cyan: readonly [string, string, string, string, string, string];
14
+ readonly green: readonly [string, string, string, string, string, string];
15
+ readonly blue: readonly [string, string, string, string, string, string];
16
+ readonly yellow: readonly [string, string, string, string, string, string];
16
17
  };
17
18
  type ColorGroup = keyof typeof BUNDLE_ANALYZER_COLORS;
18
19
  export declare const COLOR_GROUPS: ColorGroup[];
@@ -37,64 +37,68 @@ var constants_ChartTypes = /*#__PURE__*/ function(ChartTypes) {
37
37
  return ChartTypes;
38
38
  }({});
39
39
  const BUNDLE_ANALYZER_COLORS = {
40
+ orange: [
41
+ hexToRgba('#faad14', 0.85),
42
+ hexToRgba('#ffc53d', 0.6),
43
+ hexToRgba('#ffd666', 0.55),
44
+ hexToRgba('#ffe58f', 0.55),
45
+ hexToRgba('#fff1b8', 0.55),
46
+ hexToRgba('#fffbe6', 0.5)
47
+ ],
48
+ purple: [
49
+ hexToRgba('#722ed1', 0.85),
50
+ hexToRgba('#9254de', 0.7),
51
+ hexToRgba('#b37feb', 0.65),
52
+ hexToRgba('#d3adf7', 0.65),
53
+ hexToRgba('#efdbff', 0.65),
54
+ hexToRgba('#f9f0ff', 0.65)
55
+ ],
56
+ cyan: [
57
+ hexToRgba('#36cfc9', 0.85),
58
+ hexToRgba('#5cdbd3', 0.7),
59
+ hexToRgba('#87e8de', 0.65),
60
+ hexToRgba('#b5f5ec', 0.65),
61
+ hexToRgba('#e6fffb', 0.65),
62
+ hexToRgba('#e6fffb', 0.5)
63
+ ],
40
64
  green: [
41
- hexToRgba('#32b26a', 0.6),
42
- hexToRgba('#5fcf92', 0.6),
43
- hexToRgba('#8ee2b6', 0.8),
44
- hexToRgba('#b7e1cd', 1),
45
- hexToRgba('#cdeee0', 1),
46
- hexToRgba('#e0f7ef', 1),
47
- hexToRgba('#c8e6d6', 1)
65
+ hexToRgba('#a0d911', 0.85),
66
+ hexToRgba('#bae637', 0.7),
67
+ hexToRgba('#d3f261', 0.65),
68
+ hexToRgba('#eaff8f', 0.65),
69
+ hexToRgba('#f4ffb8', 0.65),
70
+ hexToRgba('#fcffe6', 0.5)
48
71
  ],
49
72
  blue: [
50
- hexToRgba('#3498f7', 0.6),
51
- hexToRgba('#5eb3fa', 0.6),
52
- hexToRgba('#8ccafc', 0.8),
53
- hexToRgba('#b3d8f8', 1),
54
- hexToRgba('#cde6fa', 1),
55
- hexToRgba('#e0f2fd', 1),
56
- hexToRgba('#c8e0ef', 1)
57
- ],
58
- purple: [
59
- hexToRgba('#a04ddb', 0.6),
60
- hexToRgba('#b26ef0', 0.6),
61
- hexToRgba('#c49ff5', 0.8),
62
- hexToRgba('#d1b3e6', 1),
63
- hexToRgba('#e0c8f2', 1),
64
- hexToRgba('#f0e6fa', 1),
65
- hexToRgba('#d6c8e6', 1)
73
+ hexToRgba('#2f54eb', 0.85),
74
+ hexToRgba('#597ef7', 0.7),
75
+ hexToRgba('#85a5ff', 0.65),
76
+ hexToRgba('#adc6ff', 0.65),
77
+ hexToRgba('#d6e4ff', 0.65),
78
+ hexToRgba('#f0f5ff', 0.5)
66
79
  ],
67
80
  yellow: [
68
- hexToRgba('#ffe066', 0.6),
69
- hexToRgba('#ffec80', 0.6),
70
- hexToRgba('#fff599', 0.8),
71
- hexToRgba('#fff9c4', 1),
72
- hexToRgba('#fffbe0', 1),
73
- hexToRgba('#fffde7', 1),
74
- hexToRgba('#f5f2c8', 1)
75
- ],
76
- grey: [
77
- hexToRgba('#7a7a7a', 0.7),
78
- hexToRgba('#969696', 0.7),
79
- hexToRgba('#b0b0b0', 0.8),
80
- hexToRgba('#c8c8c8', 1),
81
- hexToRgba('#dcdcdc', 1),
82
- hexToRgba('#ededed', 1),
83
- hexToRgba('#f7f7f7', 1)
81
+ hexToRgba('#fadb14', 0.85),
82
+ hexToRgba('#ffec3d', 0.7),
83
+ hexToRgba('#fff566', 0.65),
84
+ hexToRgba('#fffb8f', 0.65),
85
+ hexToRgba('#ffffb8', 0.65),
86
+ hexToRgba('#feffe6', 0.65)
84
87
  ]
85
88
  };
86
- function hexToRgba(hex, alpha = 1) {
89
+ function hexToRgba(hex, alpha = 0.65) {
87
90
  const r = parseInt(hex.slice(1, 3), 16);
88
91
  const g = parseInt(hex.slice(3, 5), 16);
89
92
  const b = parseInt(hex.slice(5, 7), 16);
90
93
  return `rgba(${r}, ${g}, ${b}, ${alpha})`;
91
94
  }
92
95
  const COLOR_GROUPS = [
96
+ 'cyan',
93
97
  'blue',
94
- 'purple',
98
+ 'orange',
99
+ 'green',
95
100
  'yellow',
96
- 'grey',
97
- 'green'
101
+ 'purple'
98
102
  ];
99
103
  export { BUNDLE_ANALYZER_COLORS, COLOR_GROUPS, constants_ChartTypes as ChartTypes, PALETTE_COLORS };
100
104
 
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/constants.mjs","sources":["../../../src/components/Charts/constants.ts"],"sourcesContent":["export const PALETTE_COLORS = [\n '#F2793D',\n '#F28B24',\n '#F2A200',\n '#F5CC00',\n '#F5E000',\n '#A3D900',\n '#66CC00',\n '#0AC419',\n '#0AC496',\n '#0AC7D1',\n '#00A8E0',\n '#1471F5',\n '#4060FF',\n '#7559FF',\n '#884DFF',\n '#A526FF',\n '#BA39E5',\n '#C700D9',\n '#D900B5',\n '#E50099',\n '#E52E6B',\n '#F24957',\n '#30B2F2',\n '#00BF70',\n '#5959FF',\n '#9F40FF',\n '#528BFF',\n];\n\nexport enum ChartTypes {\n Bootstrap,\n Compile,\n Done,\n Minify,\n Loader,\n Normal,\n}\n\nexport const BUNDLE_ANALYZER_COLORS = {\n green: [\n hexToRgba('#32b26a', 0.6),\n hexToRgba('#5fcf92', 0.6),\n hexToRgba('#8ee2b6', 0.8),\n hexToRgba('#b7e1cd', 1),\n hexToRgba('#cdeee0', 1),\n hexToRgba('#e0f7ef', 1),\n hexToRgba('#c8e6d6', 1),\n ],\n blue: [\n hexToRgba('#3498f7', 0.6),\n hexToRgba('#5eb3fa', 0.6),\n hexToRgba('#8ccafc', 0.8),\n hexToRgba('#b3d8f8', 1),\n hexToRgba('#cde6fa', 1),\n hexToRgba('#e0f2fd', 1),\n hexToRgba('#c8e0ef', 1),\n ],\n purple: [\n hexToRgba('#a04ddb', 0.6),\n hexToRgba('#b26ef0', 0.6),\n hexToRgba('#c49ff5', 0.8),\n hexToRgba('#d1b3e6', 1),\n hexToRgba('#e0c8f2', 1),\n hexToRgba('#f0e6fa', 1),\n hexToRgba('#d6c8e6', 1),\n ],\n yellow: [\n hexToRgba('#ffe066', 0.6),\n hexToRgba('#ffec80', 0.6),\n hexToRgba('#fff599', 0.8),\n hexToRgba('#fff9c4', 1),\n hexToRgba('#fffbe0', 1),\n hexToRgba('#fffde7', 1),\n hexToRgba('#f5f2c8', 1),\n ],\n grey: [\n hexToRgba('#7a7a7a', 0.7),\n hexToRgba('#969696', 0.7),\n hexToRgba('#b0b0b0', 0.8),\n hexToRgba('#c8c8c8', 1),\n hexToRgba('#dcdcdc', 1),\n hexToRgba('#ededed', 1),\n hexToRgba('#f7f7f7', 1),\n ],\n} as const;\n\nfunction hexToRgba(hex: string, alpha = 1) {\n const r = parseInt(hex.slice(1, 3), 16);\n const g = parseInt(hex.slice(3, 5), 16);\n const b = parseInt(hex.slice(5, 7), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\ntype ColorGroup = keyof typeof BUNDLE_ANALYZER_COLORS;\nexport const COLOR_GROUPS: ColorGroup[] = [\n 'blue',\n 'purple',\n 'yellow',\n 'grey',\n 'green',\n];\n"],"names":["PALETTE_COLORS","ChartTypes","BUNDLE_ANALYZER_COLORS","hexToRgba","hex","alpha","r","parseInt","g","b","COLOR_GROUPS"],"mappings":"AAAO,MAAMA,iBAAiB;IAC5B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAEM,IAAKC,uBAAUA,WAAAA,GAAAA,SAAVA,UAAU;;;;;;;WAAVA;;AASL,MAAMC,yBAAyB;IACpC,OAAO;QACLC,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;IACD,MAAM;QACJA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;IACD,QAAQ;QACNA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;IACD,QAAQ;QACNA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;IACD,MAAM;QACJA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;AACH;AAEA,SAASA,UAAUC,GAAW,EAAEC,QAAQ,CAAC;IACvC,MAAMC,IAAIC,SAASH,IAAI,KAAK,CAAC,GAAG,IAAI;IACpC,MAAMI,IAAID,SAASH,IAAI,KAAK,CAAC,GAAG,IAAI;IACpC,MAAMK,IAAIF,SAASH,IAAI,KAAK,CAAC,GAAG,IAAI;IACpC,OAAO,CAAC,KAAK,EAAEE,EAAE,EAAE,EAAEE,EAAE,EAAE,EAAEC,EAAE,EAAE,EAAEJ,MAAM,CAAC,CAAC;AAC3C;AAGO,MAAMK,eAA6B;IACxC;IACA;IACA;IACA;IACA;CACD"}
1
+ {"version":3,"file":"components/Charts/constants.mjs","sources":["../../../src/components/Charts/constants.ts"],"sourcesContent":["export const PALETTE_COLORS = [\n '#F2793D',\n '#F28B24',\n '#F2A200',\n '#F5CC00',\n '#F5E000',\n '#A3D900',\n '#66CC00',\n '#0AC419',\n '#0AC496',\n '#0AC7D1',\n '#00A8E0',\n '#1471F5',\n '#4060FF',\n '#7559FF',\n '#884DFF',\n '#A526FF',\n '#BA39E5',\n '#C700D9',\n '#D900B5',\n '#E50099',\n '#E52E6B',\n '#F24957',\n '#30B2F2',\n '#00BF70',\n '#5959FF',\n '#9F40FF',\n '#528BFF',\n];\n\nexport enum ChartTypes {\n Bootstrap,\n Compile,\n Done,\n Minify,\n Loader,\n Normal,\n}\n\nexport const BUNDLE_ANALYZER_COLORS = {\n orange: [\n hexToRgba('#faad14', 0.85), // gold-6\n hexToRgba('#ffc53d', 0.6), // gold-5\n hexToRgba('#ffd666', 0.55), // gold-4\n hexToRgba('#ffe58f', 0.55), // gold-3\n hexToRgba('#fff1b8', 0.55), // gold-2\n hexToRgba('#fffbe6', 0.5), // gold-1\n ],\n purple: [\n hexToRgba('#722ed1', 0.85), // purple-6\n hexToRgba('#9254de', 0.7), // purple-5\n hexToRgba('#b37feb', 0.65), // purple-4\n hexToRgba('#d3adf7', 0.65), // purple-3\n hexToRgba('#efdbff', 0.65), // purple-2\n hexToRgba('#f9f0ff', 0.65), // purple-1\n ],\n cyan: [\n hexToRgba('#36cfc9', 0.85), // cyan-5\n hexToRgba('#5cdbd3', 0.7), // cyan-4\n hexToRgba('#87e8de', 0.65), // cyan-3\n hexToRgba('#b5f5ec', 0.65), // cyan-2\n hexToRgba('#e6fffb', 0.65), // cyan-1\n hexToRgba('#e6fffb', 0.5), // cyan-0\n ],\n green: [\n hexToRgba('#a0d911', 0.85), // lime-6\n hexToRgba('#bae637', 0.7), // lime-5\n hexToRgba('#d3f261', 0.65), // lime-4\n hexToRgba('#eaff8f', 0.65), // lime-3\n hexToRgba('#f4ffb8', 0.65), // lime-2\n hexToRgba('#fcffe6', 0.5), // lime-1\n ],\n blue: [\n hexToRgba('#2f54eb', 0.85), // geekblue-6\n hexToRgba('#597ef7', 0.7), // geekblue-5\n hexToRgba('#85a5ff', 0.65), // geekblue-4\n hexToRgba('#adc6ff', 0.65), // geekblue-3\n hexToRgba('#d6e4ff', 0.65), // geekblue-2\n hexToRgba('#f0f5ff', 0.5), // geekblue-1\n ],\n yellow: [\n hexToRgba('#fadb14', 0.85), // yellow-6\n hexToRgba('#ffec3d', 0.7), // yellow-5\n hexToRgba('#fff566', 0.65), // yellow-4\n hexToRgba('#fffb8f', 0.65), // yellow-3\n hexToRgba('#ffffb8', 0.65), // yellow-2\n hexToRgba('#feffe6', 0.65), // yellow-1\n ],\n} as const;\n\nfunction hexToRgba(hex: string, alpha = 0.65) {\n const r = parseInt(hex.slice(1, 3), 16);\n const g = parseInt(hex.slice(3, 5), 16);\n const b = parseInt(hex.slice(5, 7), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\ntype ColorGroup = keyof typeof BUNDLE_ANALYZER_COLORS;\nexport const COLOR_GROUPS: ColorGroup[] = [\n 'cyan',\n 'blue',\n 'orange',\n 'green',\n 'yellow',\n 'purple',\n];\n"],"names":["PALETTE_COLORS","ChartTypes","BUNDLE_ANALYZER_COLORS","hexToRgba","hex","alpha","r","parseInt","g","b","COLOR_GROUPS"],"mappings":"AAAO,MAAMA,iBAAiB;IAC5B;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAEM,IAAKC,uBAAUA,WAAAA,GAAAA,SAAVA,UAAU;;;;;;;WAAVA;;AASL,MAAMC,yBAAyB;IACpC,QAAQ;QACNC,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;IACD,QAAQ;QACNA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;IACD,MAAM;QACJA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;IACD,OAAO;QACLA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;IACD,MAAM;QACJA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;IACD,QAAQ;QACNA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;QACrBA,UAAU,WAAW;KACtB;AACH;AAEA,SAASA,UAAUC,GAAW,EAAEC,QAAQ,IAAI;IAC1C,MAAMC,IAAIC,SAASH,IAAI,KAAK,CAAC,GAAG,IAAI;IACpC,MAAMI,IAAID,SAASH,IAAI,KAAK,CAAC,GAAG,IAAI;IACpC,MAAMK,IAAIF,SAASH,IAAI,KAAK,CAAC,GAAG,IAAI;IACpC,OAAO,CAAC,KAAK,EAAEE,EAAE,EAAE,EAAEE,EAAE,EAAE,EAAEC,EAAE,EAAE,EAAEJ,MAAM,CAAC,CAAC;AAC3C;AAGO,MAAMK,eAA6B;IACxC;IACA;IACA;IACA;IACA;IACA;CACD"}
@@ -1,14 +1,42 @@
1
1
  import "./treemap_module.css";
2
2
  const treemap_module = {
3
3
  treemap: "treemap-DOrYiA",
4
+ sidebar: "sidebar-Pww0Wm",
5
+ collapsed: "collapsed-hxz3Bf",
6
+ "sidebar-content": "sidebar-content-WuURH8",
7
+ sidebarContent: "sidebar-content-WuURH8",
8
+ "sidebar-toggle": "sidebar-toggle-NaGZQP",
9
+ sidebarToggle: "sidebar-toggle-NaGZQP",
10
+ "chart-wrapper": "chart-wrapper-w7fJr6",
11
+ chartWrapper: "chart-wrapper-w7fJr6",
12
+ "chart-container": "chart-container-gPlZC7",
13
+ chartContainer: "chart-container-gPlZC7",
14
+ "fullscreen-button": "fullscreen-button-jVdrxO",
15
+ fullscreenButton: "fullscreen-button-jVdrxO",
16
+ "chunk-list": "chunk-list-TUqr7U",
17
+ chunkList: "chunk-list-TUqr7U",
18
+ "chunk-item": "chunk-item-dQ0XI7",
19
+ chunkItem: "chunk-item-dQ0XI7",
20
+ "size-tag": "size-tag-EM4AKE",
21
+ sizeTag: "size-tag-EM4AKE",
22
+ "search-box": "search-box-RXJSAo",
23
+ searchBox: "search-box-RXJSAo",
4
24
  "tooltip-row": "tooltip-row-sZbl0R",
5
25
  tooltipRow: "tooltip-row-sZbl0R",
6
26
  "tooltip-label": "tooltip-label-INs_JK",
7
27
  tooltipLabel: "tooltip-label-INs_JK",
8
- "tooltip-path": "tooltip-path-djJmWx",
9
- tooltipPath: "tooltip-path-djJmWx",
10
- "collapse-icon": "collapse-icon-wzQxAS",
11
- collapseIcon: "collapse-icon-wzQxAS"
28
+ "search-results": "search-results-emVgaj",
29
+ searchResults: "search-results-emVgaj",
30
+ "search-results-header": "search-results-header-oyQ0jw",
31
+ searchResultsHeader: "search-results-header-oyQ0jw",
32
+ "search-results-list": "search-results-list-FSMG6d",
33
+ searchResultsList: "search-results-list-FSMG6d",
34
+ "search-result-item": "search-result-item-IZR6nt",
35
+ searchResultItem: "search-result-item-IZR6nt",
36
+ "search-results-empty": "search-results-empty-_khCd5",
37
+ searchResultsEmpty: "search-results-empty-_khCd5",
38
+ "all-none-checkbox": "all-none-checkbox-kw3p6X",
39
+ allNoneCheckbox: "all-none-checkbox-kw3p6X"
12
40
  };
13
41
  export { treemap_module as default };
14
42
 
@@ -1 +1 @@
1
- {"version":3,"file":"components/Charts/treemap.module.mjs","sources":["../../../src/components/Charts/treemap.module.scss"],"sourcesContent":["// extracted by LIB_CSS_EXTRACT_LOADER\nimport \"./treemap_module.css\"\nexport default {\"treemap\":\"treemap-DOrYiA\",\"tooltip-row\":\"tooltip-row-sZbl0R\",\"tooltipRow\":\"tooltip-row-sZbl0R\",\"tooltip-label\":\"tooltip-label-INs_JK\",\"tooltipLabel\":\"tooltip-label-INs_JK\",\"tooltip-path\":\"tooltip-path-djJmWx\",\"tooltipPath\":\"tooltip-path-djJmWx\",\"collapse-icon\":\"collapse-icon-wzQxAS\",\"collapseIcon\":\"collapse-icon-wzQxAS\"};"],"names":[],"mappings":";AAEA,uBAAe;IAAC,SAAU;IAAiB,eAAc;IAAqB,YAAa;IAAqB,iBAAgB;IAAuB,cAAe;IAAuB,gBAAe;IAAsB,aAAc;IAAsB,iBAAgB;IAAuB,cAAe;AAAsB"}
1
+ {"version":3,"file":"components/Charts/treemap.module.mjs","sources":["../../../src/components/Charts/treemap.module.scss"],"sourcesContent":["// extracted by LIB_CSS_EXTRACT_LOADER\nimport \"./treemap_module.css\"\nexport default {\"treemap\":\"treemap-DOrYiA\",\"sidebar\":\"sidebar-Pww0Wm\",\"collapsed\":\"collapsed-hxz3Bf\",\"sidebar-content\":\"sidebar-content-WuURH8\",\"sidebarContent\":\"sidebar-content-WuURH8\",\"sidebar-toggle\":\"sidebar-toggle-NaGZQP\",\"sidebarToggle\":\"sidebar-toggle-NaGZQP\",\"chart-wrapper\":\"chart-wrapper-w7fJr6\",\"chartWrapper\":\"chart-wrapper-w7fJr6\",\"chart-container\":\"chart-container-gPlZC7\",\"chartContainer\":\"chart-container-gPlZC7\",\"fullscreen-button\":\"fullscreen-button-jVdrxO\",\"fullscreenButton\":\"fullscreen-button-jVdrxO\",\"chunk-list\":\"chunk-list-TUqr7U\",\"chunkList\":\"chunk-list-TUqr7U\",\"chunk-item\":\"chunk-item-dQ0XI7\",\"chunkItem\":\"chunk-item-dQ0XI7\",\"size-tag\":\"size-tag-EM4AKE\",\"sizeTag\":\"size-tag-EM4AKE\",\"search-box\":\"search-box-RXJSAo\",\"searchBox\":\"search-box-RXJSAo\",\"tooltip-row\":\"tooltip-row-sZbl0R\",\"tooltipRow\":\"tooltip-row-sZbl0R\",\"tooltip-label\":\"tooltip-label-INs_JK\",\"tooltipLabel\":\"tooltip-label-INs_JK\",\"search-results\":\"search-results-emVgaj\",\"searchResults\":\"search-results-emVgaj\",\"search-results-header\":\"search-results-header-oyQ0jw\",\"searchResultsHeader\":\"search-results-header-oyQ0jw\",\"search-results-list\":\"search-results-list-FSMG6d\",\"searchResultsList\":\"search-results-list-FSMG6d\",\"search-result-item\":\"search-result-item-IZR6nt\",\"searchResultItem\":\"search-result-item-IZR6nt\",\"search-results-empty\":\"search-results-empty-_khCd5\",\"searchResultsEmpty\":\"search-results-empty-_khCd5\",\"all-none-checkbox\":\"all-none-checkbox-kw3p6X\",\"allNoneCheckbox\":\"all-none-checkbox-kw3p6X\"};"],"names":[],"mappings":";AAEA,uBAAe;IAAC,SAAU;IAAiB,SAAU;IAAiB,WAAY;IAAmB,mBAAkB;IAAyB,gBAAiB;IAAyB,kBAAiB;IAAwB,eAAgB;IAAwB,iBAAgB;IAAuB,cAAe;IAAuB,mBAAkB;IAAyB,gBAAiB;IAAyB,qBAAoB;IAA2B,kBAAmB;IAA2B,cAAa;IAAoB,WAAY;IAAoB,cAAa;IAAoB,WAAY;IAAoB,YAAW;IAAkB,SAAU;IAAkB,cAAa;IAAoB,WAAY;IAAoB,eAAc;IAAqB,YAAa;IAAqB,iBAAgB;IAAuB,cAAe;IAAuB,kBAAiB;IAAwB,eAAgB;IAAwB,yBAAwB;IAA+B,qBAAsB;IAA+B,uBAAsB;IAA6B,mBAAoB;IAA6B,sBAAqB;IAA4B,kBAAmB;IAA4B,wBAAuB;IAA8B,oBAAqB;IAA8B,qBAAoB;IAA2B,iBAAkB;AAA0B"}
@@ -1,82 +1,236 @@
1
1
  .treemap-DOrYiA {
2
- flex-direction: column;
3
- gap: 16px;
2
+ background-color: #fff;
3
+ border: 2px solid #e8e8e8;
4
+ flex-direction: row;
5
+ height: calc(100vh - 100px);
4
6
  display: flex;
7
+ position: relative;
8
+ overflow: hidden;
5
9
  }
6
10
 
7
11
  .treemap-DOrYiA .ant-checkbox-wrapper {
12
+ -webkit-user-select: none;
13
+ user-select: none;
8
14
  font-size: 12px;
9
- font-weight: 200;
15
+ font-weight: 400;
10
16
  }
11
17
 
12
- .treemap-DOrYiA .all-none-checkbox {
13
- margin-bottom: 4px;
14
- font-size: 12px;
15
- font-weight: 500;
18
+ :-webkit-any(.treemap-DOrYiA:-webkit-full-screen, .treemap-DOrYiA:-webkit-full-screen, .treemap-DOrYiA:fullscreen, .treemap-DOrYiA:fullscreen) {
19
+ border: none;
20
+ width: 100vw;
21
+ height: 100vh;
22
+ }
23
+
24
+ :-moz-any(.treemap-DOrYiA:fullscreen, .treemap-DOrYiA:fullscreen, .treemap-DOrYiA:-moz-full-screen, .treemap-DOrYiA:fullscreen) {
25
+ border: none;
26
+ width: 100vw;
27
+ height: 100vh;
28
+ }
29
+
30
+ :is(.treemap-DOrYiA:fullscreen, .treemap-DOrYiA:fullscreen, .treemap-DOrYiA:fullscreen, .treemap-DOrYiA:-ms-fullscreen) {
31
+ border: none;
32
+ width: 100vw;
33
+ height: 100vh;
34
+ }
35
+
36
+ :is(.treemap-DOrYiA:fullscreen, .treemap-DOrYiA:fullscreen, .treemap-DOrYiA:fullscreen, .treemap-DOrYiA:fullscreen) {
37
+ border: none;
38
+ width: 100vw;
39
+ height: 100vh;
16
40
  }
17
41
 
18
- .treemap-DOrYiA .asset-checkbox-group {
19
- gap: 8px;
20
- font-weight: 200;
42
+ .sidebar-Pww0Wm {
43
+ z-index: 10;
44
+ background-color: #f6f6f6;
45
+ border-right: 1px solid #e8e8e8;
46
+ flex-direction: column;
47
+ width: 300px;
48
+ min-width: 300px;
49
+ height: 100%;
50
+ transition: transform .3s;
21
51
  display: flex;
52
+ position: relative;
53
+ overflow: visible;
22
54
  }
23
55
 
24
- .treemap-DOrYiA .chart-container {
25
- border: 5px solid #fff;
26
- border-radius: 10px;
27
- width: 100%;
28
- min-height: 500px;
29
- max-height: 1000px;
56
+ .sidebar-Pww0Wm.collapsed-hxz3Bf {
57
+ position: absolute;
58
+ left: 0;
59
+ transform: translateX(-100%);
60
+ }
61
+
62
+ .sidebar-content-WuURH8 {
63
+ flex-direction: column;
64
+ flex: 1;
65
+ gap: 20px;
66
+ padding: 15px;
67
+ display: flex;
68
+ overflow-y: auto;
69
+ }
70
+
71
+ .sidebar-content-WuURH8 h4 {
72
+ color: #333;
73
+ margin: 0 0 10px;
74
+ font-size: 14px;
75
+ font-weight: bold;
76
+ }
77
+
78
+ .sidebar-toggle-NaGZQP {
79
+ z-index: 20;
80
+ cursor: pointer;
81
+ background: #fff;
82
+ border: 1px solid #ccc;
83
+ border-radius: 4px;
84
+ padding: 5px;
85
+ transition: right .3s;
86
+ position: absolute;
87
+ top: 10px;
88
+ right: 10px;
30
89
  }
31
90
 
32
- .treemap-DOrYiA .card-body {
33
- transition: height .3s cubic-bezier(.4, 0, .2, 1), padding .3s;
91
+ .sidebar-toggle-NaGZQP.collapsed-hxz3Bf {
92
+ right: -40px;
93
+ }
94
+
95
+ .chart-wrapper-w7fJr6 {
96
+ flex: 1;
97
+ width: 100%;
98
+ height: 100%;
99
+ position: relative;
34
100
  overflow: hidden;
35
101
  }
36
102
 
37
- .treemap-DOrYiA .card-body.collapsed .ant-card-body {
38
- height: 0;
39
- padding: 0;
103
+ .chart-container-gPlZC7 {
104
+ width: 100%;
105
+ height: 100%;
106
+ position: relative;
107
+ }
108
+
109
+ .fullscreen-button-jVdrxO {
110
+ z-index: 100;
111
+ cursor: pointer;
112
+ color: #333;
113
+ background: #ffffffe6;
114
+ border: 1px solid #d9d9d9;
115
+ border-radius: 4px;
116
+ justify-content: center;
117
+ align-items: center;
118
+ padding: 8px 12px;
119
+ font-size: 16px;
120
+ transition: all .3s;
121
+ display: flex;
122
+ position: absolute;
123
+ top: 10px;
124
+ right: 10px;
125
+ box-shadow: 0 2px 8px #00000026;
126
+ }
127
+
128
+ .fullscreen-button-jVdrxO:hover {
129
+ color: #40a9ff;
130
+ background: #fff;
131
+ border-color: #40a9ff;
132
+ box-shadow: 0 4px 12px #0003;
40
133
  }
41
134
 
42
- .treemap-DOrYiA .checkbox-container {
43
- opacity: 1;
44
- gap: 8px;
45
- transition: opacity .3s;
135
+ .fullscreen-button-jVdrxO:active {
136
+ transform: scale(.95);
46
137
  }
47
138
 
48
- .treemap-DOrYiA .checkbox-container.collapsed {
49
- opacity: 0;
139
+ .chunk-list-TUqr7U {
140
+ flex-direction: column;
141
+ gap: 6px;
142
+ display: flex;
50
143
  }
51
144
 
52
- .treemap-DOrYiA .statistics-space {
145
+ .chunk-item-dQ0XI7 {
146
+ justify-content: space-between;
147
+ align-items: center;
148
+ font-size: 12px;
149
+ display: flex;
150
+ }
151
+
152
+ .chunk-item-dQ0XI7 .ant-checkbox-wrapper {
153
+ text-overflow: ellipsis;
154
+ white-space: nowrap;
53
155
  width: 100%;
156
+ overflow: hidden;
157
+ }
158
+
159
+ .size-tag-EM4AKE {
160
+ color: #999;
161
+ white-space: nowrap;
162
+ margin-left: 8px;
163
+ font-size: 11px;
164
+ }
165
+
166
+ .search-box-RXJSAo {
167
+ margin-bottom: 10px;
54
168
  }
55
169
 
56
170
  .tooltip-row-sZbl0R {
57
171
  justify-content: space-between;
172
+ margin-top: 4px;
58
173
  font-size: 12px;
59
174
  display: flex;
60
175
  }
61
176
 
62
177
  .tooltip-label-INs_JK {
63
- color: #999;
178
+ color: #333;
179
+ margin-right: 10px;
180
+ font-weight: bold;
64
181
  }
65
182
 
66
- .tooltip-path-djJmWx {
67
- word-wrap: break-word;
68
- white-space: normal;
69
- word-break: break-all;
70
- overflow-wrap: break-word;
71
- width: 280px;
72
- margin-bottom: 8px;
183
+ .search-results-emVgaj {
184
+ background-color: #fff;
185
+ border: 1px solid #e8e8e8;
186
+ border-radius: 4px;
187
+ max-height: 300px;
188
+ margin-top: 10px;
189
+ overflow-y: auto;
190
+ }
191
+
192
+ .search-results-header-oyQ0jw {
193
+ color: #666;
194
+ background-color: #f5f5f5;
195
+ border-bottom: 1px solid #e8e8e8;
196
+ padding: 8px 12px;
73
197
  font-size: 12px;
74
- line-height: 1.4;
198
+ font-weight: bold;
75
199
  }
76
200
 
77
- .collapse-icon-wzQxAS {
201
+ .search-results-list-FSMG6d {
202
+ max-height: 250px;
203
+ overflow-y: auto;
204
+ }
205
+
206
+ .search-result-item-IZR6nt {
207
+ color: #333;
78
208
  cursor: pointer;
79
- margin-left: 8px;
209
+ word-break: break-all;
210
+ border-bottom: 1px solid #f0f0f0;
211
+ padding: 8px 12px;
212
+ font-size: 12px;
213
+ transition: background-color .2s;
214
+ }
215
+
216
+ .search-result-item-IZR6nt:hover {
217
+ background-color: #e6f7ff;
218
+ }
219
+
220
+ .search-result-item-IZR6nt:last-child {
221
+ border-bottom: none;
222
+ }
223
+
224
+ .search-results-empty-_khCd5 {
225
+ color: #999;
226
+ text-align: center;
227
+ margin-top: 10px;
228
+ padding: 8px 12px;
229
+ font-size: 12px;
230
+ }
231
+
232
+ .all-none-checkbox-kw3p6X {
233
+ margin-bottom: 6px;
80
234
  }
81
235
 
82
236