{"version":3,"file":"components/Alerts/collapse.mjs","sources":["../../../src/components/Alerts/collapse.tsx"],"sourcesContent":["import { Collapse, Typography, Divider, Space, Tabs, Tag, Tooltip } from 'antd';\nimport Icon from '@ant-design/icons';\nimport { sumBy } from 'es-toolkit/compat';\n\nimport Overview from '../Overall/overview';\nimport { TextDrawer } from '../TextDrawer';\nimport { Title } from '../Title';\nimport { Size } from '../../constants';\nimport { formatSize } from '../../utils';\nimport BundleSizeSvg from '../../common/svg/bundle-size.svg';\nimport SourceSizeSvg from '../../common/svg/source-size.svg';\nimport TotalSizeSvg from '../../common/svg/total-size.svg';\nimport VersionSvg from '../../common/svg/version.svg';\n\nimport type { Rule } from '@rsdoctor/types';\n\nimport type { AlertProps } from '../Alert/types';\n\nimport styles from './collapse.module.scss';\nimport utilStyles from './index.module.scss';\nimport { LabelComponent } from './collapse-shared';\n\nconst { Paragraph, Text } = Typography;\nconst { innerWidth } = window;\n\nexport const AlertCollapse = (props: {\n  data: Array<Rule.RuleStoreDataItem>;\n  extraData: Omit<AlertProps, 'data'>;\n}) => {\n  const { data, extraData } = props;\n\n  const items = data\n    .map((d) => {\n      const data = d as Rule.PackageRelationDiffRuleStoreData;\n      const { packages } = data;\n      const totalSize = sumBy(packages, (e) => e.targetSize.sourceSize);\n\n      return {\n        totalSize,\n        data,\n      };\n    })\n    .sort((a, b) => {\n      return b.totalSize - a.totalSize;\n    })\n    .map(({ data, totalSize }) => {\n      const { packages } = data;\n      const totalSizeStr = formatSize(totalSize);\n      const { name } = packages.find((e) => !!e.target.name)!.target;\n      const versions = packages.map((item) => item.target.version);\n\n      const ChildComponent = () => {\n        return packages.map((pkg, idx) => {\n          const version = pkg.target.version;\n          const root = pkg.target.root;\n          const sizeStr = formatSize(pkg.targetSize.sourceSize);\n          const parsedSizeStr = pkg.targetSize.parsedSize\n            ? formatSize(pkg.targetSize.parsedSize)\n            : null;\n\n          return (\n            <div className={styles.collapseContainer}>\n              <Overview\n                title={\n                  <Text\n                    style={{ width: innerWidth > 1500 ? 900 : 700 }}\n                    ellipsis={{\n                      tooltip: root,\n                    }}\n                  >\n                    {root}\n                  </Text>\n                }\n                description={\n                  <div className={styles.collapseChild}>\n                    <div>\n                      <div className={styles.attribute}>Version</div>\n                      <div className={styles.iconContainer}>\n                        <Icon\n                          style={{ fontSize: '18px' }}\n                          component={VersionSvg}\n                        />\n                        <span className={styles.data}>v{version}</span>\n                      </div>\n                    </div>\n                    <div>\n                      <div className={styles.attribute}>Source size</div>\n                      <div className={styles.iconContainer}>\n                        <Icon\n                          style={{ fontSize: '18px' }}\n                          component={SourceSizeSvg}\n                        />\n                        <span className={styles.data}>{sizeStr}</span>\n                      </div>\n                    </div>\n                    <div>\n                      <div className={styles.attribute}>Bundle size</div>\n                      <div className={styles.iconContainer}>\n                        <Icon\n                          style={{ fontSize: '18px' }}\n                          component={BundleSizeSvg}\n                        />\n                        <Tooltip\n                          title={`The bundle size of \"${name}\" is ${sizeStr}, this is after bundled, concatenated module cannot get bundled size. `}\n                        >\n                          <span className={styles.data}>\n                            {parsedSizeStr || 'CONCATENATED'}\n                          </span>\n                        </Tooltip>\n                      </div>\n                    </div>\n                  </div>\n                }\n                icon={\n                  <Paragraph\n                    style={{ position: 'relative', top: '-10px' }}\n                    copyable={{ text: root }}\n                  />\n                }\n              />\n              {idx !== packages.length - 1 ? (\n                <Divider style={{ margin: '10px 0' }} />\n              ) : null}\n            </div>\n          );\n        });\n      };\n\n      return {\n        key: name,\n        label: (\n          <LabelComponent\n            title={\n              <Tag className={utilStyles.tag}>\n                <span className={styles.pkgName}>{name}</span>\n              </Tag>\n            }\n            description={`${packages.length} versions was found`}\n            extra={\n              <div className={styles.extraContainer}>\n                <div className={styles.iconContainer}>\n                  <Icon style={{ fontSize: '18px' }} component={TotalSizeSvg} />\n                  <span className={styles.data}>{totalSizeStr}</span>\n                </div>\n                {packages && packages.length > 0 ? (\n                  <TextDrawer\n                    text=\"Show Relations\"\n                    buttonProps={{ size: 'small' }}\n                    drawerProps={{ title: data.title, width: '60%' }}\n                  >\n                    <Space\n                      direction=\"vertical\"\n                      className=\"alert-space\"\n                      style={{ width: '100%' }}\n                    >\n                      <Space\n                        style={{\n                          marginBottom: Size.BasePadding / 2,\n                          width: '100%',\n                        }}\n                      >\n                        <Title\n                          text={<Tag className={utilStyles.tag}>{name}</Tag>}\n                          upperFirst={false}\n                        />\n                        <Typography.Text strong>\n                          {versions.length}\n                        </Typography.Text>\n                        <Typography.Text> versions found</Typography.Text>\n                      </Space>\n                      <Tabs\n                        size=\"middle\"\n                        items={packages.map((pkg) => {\n                          const { target, targetSize } = pkg;\n                          return {\n                            label: (\n                              <Space className={styles.drawerLabelTitle}>\n                                <div>v{target.version}</div>\n                                <Tag className={styles.drawerLabelSize}>\n                                  {formatSize(targetSize.sourceSize)}\n                                </Tag>\n                              </Space>\n                            ),\n                            key: `${target.root}${target.name}${target.version}`,\n                            children:\n                              extraData.getPackageRelationContentComponent({\n                                data,\n                                package: pkg,\n                              }),\n                          };\n                        })!}\n                      />\n                    </Space>\n                  </TextDrawer>\n                ) : null}\n              </div>\n            }\n          />\n        ),\n        children: <ChildComponent />,\n      };\n    });\n\n  return (\n    <Collapse\n      style={{ width: '100%' }}\n      defaultActiveKey={['E1001']}\n      items={items}\n    />\n  );\n};\n"],"names":["Paragraph","Text","Typography","innerWidth","window","AlertCollapse","props","data","extraData","items","d","packages","totalSize","sumBy","e","a","b","totalSizeStr","formatSize","name","versions","item","ChildComponent","pkg","idx","version","root","sizeStr","parsedSizeStr","styles","Overview","Icon","VersionSvg","SourceSizeSvg","BundleSizeSvg","Tooltip","Divider","LabelComponent","Tag","utilStyles","TotalSizeSvg","TextDrawer","Space","Size","Title","Tabs","target","targetSize","Collapse"],"mappings":"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"}