{"version":3,"file":"pages/Resources/BundleDiff/DiffContainer/packages.mjs","sources":["../../../../../src/pages/Resources/BundleDiff/DiffContainer/packages.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport {\n  Col,\n  Divider,\n  Empty,\n  Row,\n  Select,\n  Space,\n  Table,\n  Tooltip,\n  Typography,\n} from 'antd';\nimport { sumBy, uniq } from 'es-toolkit/compat';\nimport { SDK } from '@rsdoctor/types';\nimport { BundleDiffTablePackagesData } from './types';\nimport { formatSize } from '../../../../utils';\nimport { Size } from '../../../../constants';\nimport { FileUpdateTypeTag } from './modules';\nimport { UpdateType } from './constants';\nimport { Badge as Bdg } from '../../../../components/Badge';\nimport { SizePercent } from '../../../../components/Card/diff';\n\nconst getChangedType = (data: BundleDiffTablePackagesData): UpdateType => {\n  if (data.baseline && data.current) {\n    const bvs = data.baseline\n      .map((e) => e.version)\n      .sort()\n      .join();\n    const dcs = data.current\n      .map((e) => e.version)\n      .sort()\n      .join();\n\n    return bvs === dcs ? UpdateType.NotChanged : UpdateType.Changed;\n  }\n\n  if (!data.baseline && !data.current) {\n    return UpdateType.NotChanged;\n  }\n\n  if (data.baseline && !data.current) {\n    return UpdateType.Deleted;\n  }\n\n  return UpdateType.New;\n};\n\nconst isChanged = (data: BundleDiffTablePackagesData) => {\n  return getChangedType(data) !== UpdateType.NotChanged;\n};\n\nexport const PackagesStatistic: React.FC<{\n  dataSource: ReturnType<typeof getPackagesTableDataSource>;\n}> = ({ dataSource }) => {\n  const { newCount, deleteCount, changedCount } = useMemo(() => {\n    return {\n      newCount: dataSource.filter((e) => e.updateType === UpdateType.New)\n        .length,\n      deleteCount: dataSource.filter((e) => e.updateType === UpdateType.Deleted)\n        .length,\n      changedCount: dataSource.filter(\n        (e) => e.updateType === UpdateType.Changed,\n      ).length,\n    };\n  }, [dataSource]);\n\n  return (\n    <Space>\n      <Bdg\n        label=\"New\"\n        value={newCount}\n        type={newCount > 0 ? 'error' : 'default'}\n        tooltip={`Current has ${newCount} packages which not found in Baseline`}\n      />\n      <Bdg\n        label=\"Deleted\"\n        value={deleteCount}\n        type={deleteCount > 0 ? 'error' : 'default'}\n        tooltip={`Current delete ${deleteCount} packages than Baseline`}\n      />\n      <Bdg\n        label=\"Changed\"\n        value={changedCount}\n        type={changedCount > 0 ? 'error' : 'default'}\n        tooltip={`Current has ${changedCount} changed packages than Baseline`}\n      />\n    </Space>\n  );\n};\n\nexport const getPackagesTableDataSource = ({\n  baseline,\n  current,\n}: {\n  baseline: SDK.PackageGraphData;\n  current: SDK.PackageGraphData;\n}) => {\n  const { packages: bPkgs = [] } = baseline || {};\n  const { packages: cPkgs = [] } = current || {};\n\n  const res: Record<string, BundleDiffTablePackagesData> = {};\n\n  const setter = (pkg: SDK.PackageData, type: 'baseline' | 'current') => {\n    if (!res[pkg.name]) {\n      res[pkg.name] = { name: pkg.name, updateType: UpdateType.NotChanged };\n    }\n    if (!res[pkg.name][type]) {\n      res[pkg.name][type] = [];\n    }\n\n    res[pkg.name][type]!.push(pkg);\n  };\n\n  bPkgs.forEach((e) => setter(e, 'baseline'));\n  cPkgs.forEach((e) => setter(e, 'current'));\n\n  const pre: BundleDiffTablePackagesData[] = [];\n  const post: BundleDiffTablePackagesData[] = [];\n\n  Object.values(res).forEach((a) => {\n    if (isChanged(a)) {\n      pre.push(a);\n    } else {\n      post.push(a);\n    }\n  });\n\n  return pre.concat(post).map((e) => {\n    return {\n      ...e,\n      updateType: getChangedType(e),\n    };\n  });\n};\n\nexport const Packages: React.FC<{\n  baseline: SDK.PackageGraphData;\n  current: SDK.PackageGraphData;\n}> = ({ baseline, current }) => {\n  const { packages: bPkgs = [] } = baseline || {};\n  const { packages: cPkgs = [] } = current || {};\n\n  if (!bPkgs.length && !cPkgs.length) {\n    return <Empty />;\n  }\n\n  const pkgNames = useMemo(() => {\n    return uniq(bPkgs.concat(cPkgs).map((e) => e.name));\n  }, [bPkgs, cPkgs]);\n\n  const [selectedPkgNames, setSelectedPkgNames] = useState<string[]>([]);\n  const [selectedUpdateTypes, setSelectedUpdateTypes] = useState<UpdateType[]>(\n    [],\n  );\n\n  const dataSource = useMemo(() => {\n    return getPackagesTableDataSource({ baseline, current });\n  }, [baseline, current]);\n\n  const filteredDataSource = useMemo(() => {\n    return dataSource.filter((e) => {\n      if (selectedUpdateTypes.length) {\n        return selectedUpdateTypes.indexOf(e.updateType) > -1;\n      }\n\n      if (selectedPkgNames.length) {\n        return selectedPkgNames.indexOf(e.name) > -1;\n      }\n\n      return true;\n    });\n  }, [dataSource, selectedPkgNames, selectedUpdateTypes]);\n\n  return (\n    <Row gutter={[Size.BasePadding, Size.BasePadding]}>\n      <Col span={24} style={{ marginTop: 16 }}>\n        <Space wrap>\n          <Select\n            mode=\"multiple\"\n            placeholder=\"Filter by package names\"\n            style={{ width: 400 }}\n            options={pkgNames.map((e) => {\n              const r = dataSource.find((el) => el.name === e);\n\n              if (r && isChanged(r)) {\n                return {\n                  label: (\n                    <Space>\n                      <Typography.Text>{e}</Typography.Text>\n                      <FileUpdateTypeTag type={getChangedType(r)} />\n                    </Space>\n                  ),\n                  value: e,\n                };\n              }\n\n              return {\n                label: e,\n                value: e,\n              };\n            })}\n            allowClear\n            onChange={(e) => {\n              setSelectedPkgNames(e);\n            }}\n          />\n          <Select\n            mode=\"multiple\"\n            placeholder=\"Filter by changed type\"\n            style={{ width: 200 }}\n            options={Object.values(UpdateType).map((e) => ({\n              label: e,\n              value: e,\n            }))}\n            allowClear\n            onChange={(e) => {\n              setSelectedUpdateTypes(e);\n            }}\n          />\n        </Space>\n      </Col>\n      <Col span={24}>\n        <Table\n          bordered\n          sticky={{ offsetHeader: 54 }}\n          pagination={{\n            pageSize: 20,\n            size: 'small',\n          }}\n          // scroll={{ x: 1700 }}\n          dataSource={filteredDataSource}\n          rowKey={(e) => e.name}\n          columns={[\n            {\n              title: () => (\n                <Space>\n                  <Typography.Text>Package Name</Typography.Text>\n                  <Divider type=\"vertical\" />\n                  <Tooltip\n                    title={`Filtered Package Count is ${filteredDataSource.length}, Total Package Count is ${dataSource.length}`}\n                  >\n                    <Typography.Text\n                      type=\"secondary\"\n                      style={{ fontSize: 10, fontWeight: 400 }}\n                    >\n                      {filteredDataSource.length} / {dataSource.length}\n                    </Typography.Text>\n                  </Tooltip>\n                </Space>\n              ),\n              render: (_v, r) => {\n                if (r.updateType !== UpdateType.NotChanged) {\n                  return (\n                    <Space>\n                      <Typography.Text>{r.name}</Typography.Text>\n                      <FileUpdateTypeTag type={r.updateType} />\n                    </Space>\n                  );\n                }\n                return r.name;\n              },\n            },\n            {\n              title: () => {\n                return (\n                  <Space>\n                    <Typography.Text>Current</Typography.Text>\n                    <Divider type=\"vertical\" />\n                    <PackagesStatistic dataSource={dataSource} />\n                  </Space>\n                );\n              },\n              children: [\n                {\n                  title: 'Version',\n                  render: (_v, r) => {\n                    if (r.current) {\n                      return (\n                        <Space direction=\"vertical\">\n                          {r.current.map((e) => (\n                            <Bdg\n                              label=\"version\"\n                              value={e.version}\n                              tooltip={e.root}\n                              key={e.version}\n                              type={\n                                r.updateType === UpdateType.Deleted\n                                  ? 'error'\n                                  : r.updateType === UpdateType.Changed\n                                    ? 'warn'\n                                    : 'default'\n                              }\n                            />\n                          ))}\n                        </Space>\n                      );\n                    }\n                    return null;\n                  },\n                },\n                {\n                  title: 'Parsed Size',\n                  render: (_v, r) => {\n                    const parsedSize = sumBy(\n                      r.current,\n                      (e) => e.size.parsedSize,\n                    );\n                    const DiffComponent = () => (\n                      <SizePercent\n                        baseline={sumBy(r.baseline, (e) => e.size.parsedSize)}\n                        current={parsedSize}\n                      />\n                    );\n\n                    if (r.current) {\n                      return (\n                        <Space>\n                          <Typography.Text\n                            strong={r.updateType !== UpdateType.NotChanged}\n                          >\n                            {formatSize(parsedSize)}\n                          </Typography.Text>\n                          <DiffComponent />\n                        </Space>\n                      );\n                    }\n                    return <DiffComponent />;\n                  },\n                },\n              ],\n            },\n            {\n              title: 'Baseline',\n              children: [\n                {\n                  title: 'Version',\n                  render: (_v, r) => {\n                    if (r.baseline) {\n                      return (\n                        <Space direction=\"vertical\">\n                          {r.baseline.map((e) => (\n                            <Bdg\n                              label=\"version\"\n                              value={e.version}\n                              tooltip={e.root}\n                              key={e.version}\n                              type={\n                                r.updateType === UpdateType.Deleted\n                                  ? 'error'\n                                  : r.updateType === UpdateType.Changed\n                                    ? 'warn'\n                                    : 'default'\n                              }\n                            />\n                          ))}\n                        </Space>\n                      );\n                    }\n                    return null;\n                  },\n                },\n                {\n                  title: 'Parsed Size',\n                  render: (_v, r) => {\n                    if (r.baseline) {\n                      const parsedSize = sumBy(\n                        r.baseline,\n                        (e) => e.size.parsedSize,\n                      );\n                      return (\n                        <Typography.Text>\n                          {formatSize(parsedSize)}\n                        </Typography.Text>\n                      );\n                    }\n                    return null;\n                  },\n                },\n              ],\n            },\n          ]}\n        />\n      </Col>\n    </Row>\n  );\n};\n"],"names":["getChangedType","data","bvs","e","dcs","UpdateType","isChanged","PackagesStatistic","dataSource","newCount","deleteCount","changedCount","useMemo","Space","Bdg","getPackagesTableDataSource","baseline","current","bPkgs","cPkgs","res","setter","pkg","type","pre","post","Object","a","Packages","Empty","pkgNames","uniq","selectedPkgNames","setSelectedPkgNames","useState","selectedUpdateTypes","setSelectedUpdateTypes","filteredDataSource","Row","Size","Col","Select","r","el","Typography","FileUpdateTypeTag","Table","Divider","Tooltip","_v","parsedSize","sumBy","DiffComponent","SizePercent","formatSize"],"mappings":"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"}