{"version":3,"file":"components/Overall/project.mjs","sources":["../../../src/components/Overall/project.tsx"],"sourcesContent":["import { Descriptions, DescriptionsProps, Avatar } from 'antd';\nimport {\n  CloseCircleFilled,\n  WarningFilled,\n  FileFilled,\n  ExperimentFilled,\n} from '@ant-design/icons';\n\nimport { ServerAPIProvider } from '../Manifest';\nimport { useI18n, formatSize } from '../../utils';\nimport { WebpackConfigurationViewer } from '../Configuration';\nimport { Card } from '../Card';\nimport { Overview } from './overview';\nimport styles from './project.module.scss';\n\nimport listStyles from './list.module.scss';\nimport cardStyles from './card.module.scss';\nimport projectStyles from './project.module.scss';\n\nimport { SDK } from '@rsdoctor/types';\n\nexport const ProjectOverall: React.FC<{\n  configs: SDK.ConfigData;\n  cwd: string;\n  envinfo: SDK.EnvInfo;\n  alerts: SDK.ErrorsData;\n  name?: string;\n}> = ({ configs = [], cwd, envinfo, alerts = [], name }) => {\n  const { t } = useI18n();\n\n  const warns = alerts.filter((e) => e.level === 'warn').length;\n\n  const errors = alerts.length - warns;\n\n  const items: DescriptionsProps['items'] = [\n    ...(name\n      ? [\n          {\n            key: 'name',\n            label: 'Builder',\n            children: name,\n          },\n        ]\n      : []),\n    ...Object.keys(envinfo || {}).map((key) => {\n      const regexp = /Version$/;\n      const isVersion = regexp.test(key);\n      return {\n        key,\n        label: isVersion ? key.replace(regexp, '') : key,\n        children: envinfo ? envinfo[key] : undefined,\n      };\n    }),\n    ...configs\n      .filter((item) => !!item.version)\n      .map((config) => {\n        const { name: configName, version } = config;\n        return {\n          key: configName,\n          label: configName,\n          children: version,\n        };\n      }),\n    {\n      key: 'cwd',\n      label: 'cwd',\n      children: cwd,\n    },\n  ];\n\n  return (\n    <ServerAPIProvider\n      api={SDK.ServerAPI.API.GetAssetsSummary}\n      body={{ withFileContent: false }}\n    >\n      {(res) => {\n        const totalSizeStr = formatSize(res.all.total.size);\n        const totalFiles = res.all.total.count;\n        const [size, unit] = totalSizeStr.split(' ');\n        const overViewData = [\n          {\n            title: 'Errors',\n            description: <span style={{ color: '#FF4D4F' }}>{errors}</span>,\n            icon: (\n              <Avatar\n                style={{ background: '#FF4D4F' }}\n                shape=\"circle\"\n                icon={<CloseCircleFilled style={{ fontSize: '18px' }} />}\n              />\n            ),\n          },\n          {\n            title: 'Warnings',\n            description: <span style={{ color: '#FAAD14' }}>{warns}</span>,\n            icon: (\n              <Avatar\n                style={{ background: '#FAAD14' }}\n                shape=\"circle\"\n                icon={<WarningFilled style={{ fontSize: '18px' }} />}\n              />\n            ),\n          },\n          {\n            title: 'Total Files',\n            description: <span>{totalFiles}</span>,\n            icon: (\n              <Avatar\n                style={{ background: '#3874F6' }}\n                shape=\"circle\"\n                icon={<FileFilled style={{ fontSize: '18px' }} />}\n              />\n            ),\n          },\n          {\n            title: 'Total Size',\n            description: (\n              <>\n                <span style={{ fontSize: '20px' }}>{size}</span>\n                <span style={{ fontSize: '13px', marginLeft: '5px' }}>\n                  {unit}\n                </span>\n              </>\n            ),\n            icon: (\n              <Avatar\n                style={{ background: '#5B8FF9' }}\n                shape=\"circle\"\n                icon={<ExperimentFilled style={{ fontSize: '18px' }} />}\n              />\n            ),\n          },\n        ];\n\n        return (\n          <Card className={cardStyles.card}>\n            <div>\n              <div className={styles.title}>\n                <span className={styles.left}>{t('Project Overall')}</span>\n                <WebpackConfigurationViewer />\n              </div>\n              <div className={projectStyles.overview}>\n                {overViewData.map((data, idx) => (\n                  <Overview\n                    key={idx}\n                    title={data.title}\n                    description={<span>{data.description}</span>}\n                    icon={data.icon}\n                  />\n                ))}\n              </div>\n              <Descriptions\n                className={listStyles.projectOverall}\n                items={items}\n              />\n            </div>\n          </Card>\n        );\n      }}\n    </ServerAPIProvider>\n  );\n};\n"],"names":["ProjectOverall","configs","cwd","envinfo","alerts","name","t","useI18n","warns","e","errors","items","Object","key","regexp","isVersion","undefined","item","config","configName","version","ServerAPIProvider","SDK","res","totalSizeStr","formatSize","totalFiles","size","unit","overViewData","Avatar","CloseCircleFilled","WarningFilled","FileFilled","ExperimentFilled","Card","cardStyles","styles","WebpackConfigurationViewer","projectStyles","data","idx","Overview","Descriptions","listStyles"],"mappings":"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"}