{"version":3,"file":"components/Alert/package-relation.mjs","sources":["../../../src/components/Alert/package-relation.tsx"],"sourcesContent":["/* rslint-disable financial/no-float-calculation */\nimport {\n  Space,\n  Alert,\n  Button,\n  Typography,\n  Divider,\n  Tabs,\n  Row,\n  Col,\n  Timeline,\n  Tag,\n  Empty,\n  Grid,\n} from 'antd';\nimport { sumBy } from 'es-toolkit/compat';\nimport {\n  ExpandAltOutlined,\n  InfoCircleOutlined,\n  DoubleRightOutlined,\n} from '@ant-design/icons';\n\nimport { useRuleIndexNavigate, formatSize } from '../../utils';\nimport { TextDrawer } from '../TextDrawer';\nimport { Title } from '../Title';\nimport { Size, Color } from '../../constants';\nimport { Badge as Bdg } from '../Badge';\nimport { withServerAPI } from '../Manifest';\n\nimport { Rule, SDK } from '@rsdoctor/types';\n\nimport { PackageRelationAlertProps } from './types';\n\nimport styles from './package-relation.module.scss';\n\nconst TextDrawerWidth = '60%';\n\nexport const PackageRelationReasons: React.FC<{\n  data: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetPackageRelationAlertDetails>;\n  cwd: string;\n}> = ({ data }) => {\n  return (\n    <Row gutter={Size.BasePadding} wrap={false} align=\"top\">\n      <Col style={{ height: '100%', width: '100%' }}>\n        {data.length ? (\n          <>\n            <Timeline style={{ marginTop: '20px' }}>\n              {data.map((e, i) => {\n                const { dependency, module, relativePath } = e!;\n                const { statements } = dependency;\n                const { start } = statements?.[0]?.position\n                  ? module.isPreferSource\n                    ? statements[0].position.source!\n                    : statements[0].position.transformed\n                  : { start: { line: 0, column: 0 } };\n                const text = `${relativePath}:${start.line}:${\n                  start.column || 1\n                }`;\n\n                return (\n                  <Timeline.Item key={text} style={{ cursor: 'default' }}>\n                    <Typography.Text>\n                      <div className={styles.filePath}>\n                        {text}\n                        <Typography.Paragraph\n                          copyable={{ text: relativePath }}\n                          style={{ position: 'relative', top: '7px' }}\n                        />\n                      </div>\n                      {i !== data.length - 1 ? (\n                        <DoubleRightOutlined className={styles.arrow} />\n                      ) : null}\n                    </Typography.Text>\n                  </Timeline.Item>\n                );\n              })}\n            </Timeline>\n          </>\n        ) : (\n          <Empty description={'This package no dependencies'} />\n        )}\n      </Col>\n    </Row>\n  );\n};\n\nexport const PackageRelationReasonsWithServer = withServerAPI({\n  Component: PackageRelationReasons,\n  api: SDK.ServerAPI.API.GetPackageRelationAlertDetails,\n  responsePropName: 'data',\n});\n\nexport const PackageRelationAlert: React.FC<PackageRelationAlertProps> = ({\n  data,\n  getPackageRelationContentComponent,\n}) => {\n  const { level, code, packages } = data;\n\n  const navigate = useRuleIndexNavigate(code, data.link);\n  const totalSize = sumBy(packages, (e) => e.targetSize.sourceSize);\n  const totalSizeStr = formatSize(totalSize);\n  const { xs, lg, xxl } = Grid.useBreakpoint();\n  const { name } = packages.find((e) => !!e.target.name)!.target;\n\n  const versions = packages.map((item) => item.target.version);\n\n  return (\n    <Alert\n      showIcon={!xs}\n      message={\n        <Space\n          wrap\n          split={xs ? null : <Divider type=\"vertical\" />}\n          align=\"center\"\n        >\n          <Space wrap={false}>\n            <Typography.Text\n              code\n              strong\n              onClick={navigate}\n              style={{ cursor: 'pointer' }}\n            >\n              <a>{code}</a>\n            </Typography.Text>\n            <Typography.Text strong>\n              {Rule.RuleErrorMap[code as keyof Rule.RuleErrorCodes]?.title ||\n                data.title}\n            </Typography.Text>\n          </Space>\n          <Typography.Paragraph\n            ellipsis={{ rows: 1 }}\n            style={{ marginBottom: 0 }}\n          >\n            <Typography.Text strong code>\n              {name}\n            </Typography.Text>\n            <Typography.Text strong> {data.packages.length}</Typography.Text>\n            <Typography.Text> versions was found</Typography.Text>\n          </Typography.Paragraph>\n          <Bdg\n            label={'total size'}\n            value={totalSizeStr}\n            type=\"error\"\n            tooltip={`total size of ${data.packages.length} versions is ${totalSizeStr}`}\n          />\n        </Space>\n      }\n      description={\n        <Space direction=\"vertical\" wrap={false}>\n          {data.packages.map(({ target: el, targetSize: size }) => {\n            const sizeStr = formatSize(size.sourceSize);\n            const parsedSizeStr = size.parsedSize\n              ? formatSize(size.parsedSize)\n              : null;\n            const name = `${el.name}@${el.version}`;\n            return (\n              <Space\n                key={el.version}\n                style={{ wordBreak: 'break-all' }}\n                align=\"center\"\n                split={xs ? null : <Divider type=\"vertical\" />}\n                wrap\n              >\n                <Space wrap={false}>\n                  <Typography.Text style={{ marginLeft: 4 }}>└</Typography.Text>\n                  <Bdg\n                    label={el.name}\n                    value={`v${el.version}`}\n                    tooltip={name}\n                  />\n                </Space>\n                <Space>\n                  <Bdg\n                    label={\n                      <div color={'rgb(255, 255, 255)'}>\n                        Source Size <InfoCircleOutlined />\n                      </div>\n                    }\n                    value={sizeStr}\n                    tooltip={`The bundle size of \"${name}\" is ${sizeStr}, this is source size.`}\n                    type=\"error\"\n                  />\n                  <Bdg\n                    label=\"Bundled size\"\n                    value={parsedSizeStr || 'CONCATENATED'}\n                    tooltip={`The bundle size of \"${name}\" is ${sizeStr}, this is after bundled, concatenated module cannot get bundled size. `}\n                    type=\"error\"\n                  />\n                </Space>\n\n                <Typography.Paragraph\n                  style={{\n                    marginBottom: 0,\n                    width: xxl ? '40rem' : lg ? '30rem' : '20rem',\n                  }}\n                  copyable={{ text: el.root }}\n                  ellipsis={{\n                    rows: 1,\n                    expandable: true,\n                    symbol: <ExpandAltOutlined />,\n                    tooltip: el.root,\n                  }}\n                  code\n                >\n                  {el.root}\n                </Typography.Paragraph>\n              </Space>\n            );\n          })}\n        </Space>\n      }\n      type={level === 'warn' ? 'info' : level}\n      action={\n        <>\n          {packages && packages.length > 0 ? (\n            <TextDrawer\n              text=\"Show Relations\"\n              buttonProps={{ size: 'small' }}\n              drawerProps={{ title: data.title, width: TextDrawerWidth }}\n            >\n              <Space direction=\"vertical\" className=\"alert-space\">\n                <Space style={{ marginBottom: Size.BasePadding / 2 }}>\n                  <Title text={name} upperFirst={false} />\n                  <Typography.Text strong>{versions.length}</Typography.Text>\n                  <Typography.Text> versions was found: </Typography.Text>\n                  {versions.map((e) => (\n                    <Typography.Text strong code key={e}>\n                      {e}\n                    </Typography.Text>\n                  ))}\n                </Space>\n                <Tabs\n                  type=\"card\"\n                  size=\"middle\"\n                  className=\"tabs-space\"\n                  defaultActiveKey={versions[0]}\n                  items={\n                    packages.map((pkg) => {\n                      const { target, targetSize } = pkg;\n                      return {\n                        label: (\n                          <Space>\n                            <Typography.Text>{`${name}@${target.version}`}</Typography.Text>\n                            <Tag color={Color.Red}>\n                              {formatSize(targetSize.sourceSize)}\n                            </Tag>\n                          </Space>\n                        ),\n                        key: `${target.root}${target.name}${target.version}`,\n                        children: getPackageRelationContentComponent({\n                          data,\n                          package: pkg,\n                        }),\n                      };\n                    })!\n                  }\n                />\n              </Space>\n            </TextDrawer>\n          ) : null}\n          <Divider type=\"vertical\" />\n          <Button\n            type=\"link\"\n            onClick={navigate}\n            size=\"small\"\n            icon={<InfoCircleOutlined />}\n          />\n        </>\n      }\n    />\n  );\n};\n"],"names":["TextDrawerWidth","PackageRelationReasons","data","Row","Size","Col","Timeline","e","i","dependency","module","relativePath","statements","start","text","Typography","styles","DoubleRightOutlined","Empty","PackageRelationReasonsWithServer","withServerAPI","SDK","PackageRelationAlert","getPackageRelationContentComponent","level","code","packages","navigate","useRuleIndexNavigate","totalSize","sumBy","totalSizeStr","formatSize","xs","lg","xxl","Grid","name","versions","item","Alert","Space","Divider","Rule","Bdg","el","size","sizeStr","parsedSizeStr","InfoCircleOutlined","ExpandAltOutlined","TextDrawer","Title","Tabs","pkg","target","targetSize","Tag","Color","Button"],"mappings":"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"}