{"version":3,"file":"components/Alerts/collapse-side-effects-only-imports.mjs","sources":["../../../src/components/Alerts/collapse-side-effects-only-imports.tsx"],"sourcesContent":["import Icon from '@ant-design/icons';\nimport { Collapse, Space, Tag, Typography } from 'antd';\n\nimport Overview from '../Overall/overview';\nimport styles from './collapse.module.scss';\nimport utilStyles from './index.module.scss';\nimport TotalSizeSvg from '../../common/svg/total-size.svg';\nimport { beautifyPath } from '../../utils/file';\nimport { LabelComponent, IdeIcons } from './collapse-shared';\n\nimport type { Rule } from '@rsdoctor/types';\nimport type { AlertProps } from '../Alert/types';\n\nconst { Text } = Typography;\nconst { innerWidth } = window;\n\nexport const SideEffectsOnlyImportsAlertCollapse = (props: {\n  data: Array<Rule.RuleStoreDataItem>;\n  extraData: Omit<AlertProps, 'data'>;\n}) => {\n  const { data, extraData } = props;\n  const { cwd } = extraData;\n\n  const items = data.map((d) => {\n    const { module, connections } =\n      d as Rule.ConnectionsOnlyImportsRuleStoreData;\n\n    const modulePath = beautifyPath(module.path, cwd);\n\n    const ChildComponent = () => {\n      return (\n        <div className={styles.collapseContainer}>\n          <Overview\n            title={\n              <Space align=\"center\">\n                <Icon style={{ fontSize: '18px' }} component={TotalSizeSvg} />\n                <Text style={{ width: innerWidth > 1500 ? 900 : 700 }}>\n                  Module:{' '}\n                  <Text\n                    type=\"secondary\"\n                    style={{\n                      fontSize: 12,\n                      fontWeight: 300,\n                    }}\n                  >\n                    {modulePath}\n                  </Text>\n                </Text>\n                <IdeIcons file={module.path} />\n              </Space>\n            }\n            description={\n              <div className={styles.collapseChild}>\n                <div\n                  style={{\n                    marginBottom: 8,\n                    fontWeight: 500,\n                  }}\n                >\n                  Side-Effects-Only Importers:\n                </div>\n                {connections.map((conn, idx) => (\n                  <div key={idx} style={{ display: 'flex', marginBottom: 4 }}>\n                    <div className={styles.attribute}>Import</div>\n                    <div className={styles.iconContainer}>\n                      <span className={styles.data}>{conn.userRequest}</span>\n                      <Tag\n                        className={utilStyles.tag}\n                        style={{\n                          marginLeft: 8,\n                          fontSize: 11,\n                        }}\n                      >\n                        {conn.dependencyType}\n                      </Tag>\n                    </div>\n                  </div>\n                ))}\n              </div>\n            }\n          />\n        </div>\n      );\n    };\n\n    return {\n      key: modulePath,\n      label: (\n        <LabelComponent\n          title={\n            <Space size={4} align=\"center\">\n              <Tag className={utilStyles.tag}>\n                <span className={styles.pkgName}>{modulePath}</span>\n              </Tag>\n            </Space>\n          }\n          description={`is only imported for its side effects by ${new Set(connections.map((c) => c.originModule)).size} importer(s).`}\n        />\n      ),\n      children: <ChildComponent />,\n    };\n  });\n\n  return (\n    <Collapse\n      style={{ width: '100%' }}\n      defaultActiveKey={items.map((item) => item.key)}\n      items={items}\n    />\n  );\n};\n"],"names":["Text","Typography","innerWidth","window","SideEffectsOnlyImportsAlertCollapse","props","data","extraData","cwd","items","d","module","connections","modulePath","beautifyPath","ChildComponent","styles","Overview","Space","Icon","TotalSizeSvg","IdeIcons","conn","idx","Tag","utilStyles","LabelComponent","Set","c","Collapse","item"],"mappings":";;;;;;;;;AAaA,MAAM,EAAEA,MAAAA,IAAI,EAAE,GAAGC;AACjB,MAAM,EAAEC,YAAAA,6CAAU,EAAE,GAAGC;AAEhB,MAAMC,sCAAsC,CAACC;IAIlD,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAE,GAAGF;IAC5B,MAAM,EAAEG,GAAG,EAAE,GAAGD;IAEhB,MAAME,QAAQH,KAAK,GAAG,CAAC,CAACI;QACtB,MAAM,EAAEC,MAAM,EAAEC,WAAW,EAAE,GAC3BF;QAEF,MAAMG,aAAaC,aAAaH,OAAO,IAAI,EAAEH;QAE7C,MAAMO,iBAAiB,IACd,WAAP,GACE,IAAC;gBAAI,WAAWC,gBAAAA,iBAAwB;0BACtC,kBAACC,UAAQA;oBACP,qBACE,KAACC,OAAKA;wBAAC,OAAM;;0CACX,IAACC,OAAIA;gCAAC,OAAO;oCAAE,UAAU;gCAAO;gCAAG,WAAWC;;0CAC9C,KAACpB,MAAIA;gCAAC,OAAO;oCAAE,OAAOE,gDAAa,OAAO,MAAM;gCAAI;;oCAAG;oCAC7C;kDACR,IAACF,MAAIA;wCACH,MAAK;wCACL,OAAO;4CACL,UAAU;4CACV,YAAY;wCACd;kDAECa;;;;0CAGL,IAACQ,UAAQA;gCAAC,MAAMV,OAAO,IAAI;;;;oBAG/B,2BACE,KAAC;wBAAI,WAAWK,gBAAAA,aAAoB;;0CAClC,IAAC;gCACC,OAAO;oCACL,cAAc;oCACd,YAAY;gCACd;0CACD;;4BAGAJ,YAAY,GAAG,CAAC,CAACU,MAAMC,MAAAA,WAAAA,GACtB,KAAC;oCAAc,OAAO;wCAAE,SAAS;wCAAQ,cAAc;oCAAE;;sDACvD,IAAC;4CAAI,WAAWP,gBAAAA,SAAgB;sDAAE;;sDAClC,KAAC;4CAAI,WAAWA,gBAAAA,aAAoB;;8DAClC,IAAC;oDAAK,WAAWA,gBAAAA,IAAW;8DAAGM,KAAK,WAAW;;8DAC/C,IAACE,KAAGA;oDACF,WAAWC,aAAAA,GAAc;oDACzB,OAAO;wDACL,YAAY;wDACZ,UAAU;oDACZ;8DAECH,KAAK,cAAc;;;;;mCAXhBC;;;;;QAuBxB,OAAO;YACL,KAAKV;YACL,OAAO,WAAP,GACE,IAACa,gBAAcA;gBACb,qBACE,IAACR,OAAKA;oBAAC,MAAM;oBAAG,OAAM;8BACpB,kBAACM,KAAGA;wBAAC,WAAWC,aAAAA,GAAc;kCAC5B,kBAAC;4BAAK,WAAWT,gBAAAA,OAAc;sCAAGH;;;;gBAIxC,aAAa,CAAC,yCAAyC,EAAE,IAAIc,IAAIf,YAAY,GAAG,CAAC,CAACgB,IAAMA,EAAE,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;;YAGhI,UAAU,WAAV,GAAU,IAACb,gBAAAA,CAAAA;QACb;IACF;IAEA,OAAO,WAAP,GACE,IAACc,UAAQA;QACP,OAAO;YAAE,OAAO;QAAO;QACvB,kBAAkBpB,MAAM,GAAG,CAAC,CAACqB,OAASA,KAAK,GAAG;QAC9C,OAAOrB;;AAGb"}