{"version":3,"file":"pages/ModuleAnalyze/index.mjs","sources":["../../../src/pages/ModuleAnalyze/index.tsx"],"sourcesContent":["import { SDK } from '@rsdoctor/types';\nimport { Badge, Card, Drawer, Popover, Space, Tabs, Typography } from 'antd';\nimport React, { useState } from 'react';\nimport { ServerAPIProvider } from 'src/components/Manifest';\nimport { getShortPath } from 'src/utils';\nimport { ModuleGraphListContext } from '../BundleSize/config';\nimport { ModuleFilesTree, BailoutReasonCard } from './fileTree';\nimport './index.scss';\nimport { drawerWidth } from '../../constants';\nimport {\n  LeftSquareOutlined,\n  QuestionCircleOutlined,\n  RightSquareTwoTone,\n} from '@ant-design/icons';\n\nexport enum TabList {\n  Reasons,\n  Dependencies,\n}\n\nconst tabslist = [\n  {\n    key: TabList[TabList.Reasons],\n    label: TabList[TabList.Reasons],\n  },\n  {\n    key: TabList[TabList.Dependencies],\n    label: TabList[TabList.Dependencies],\n  },\n] as unknown as { key: string; label: string }[];\n\nexport const ModuleAnalyzeComponent: React.FC<{\n  modules: SDK.ModuleData[];\n  cwd: string;\n  moduleId: string | number;\n  show: boolean;\n  setShow: (arg: boolean) => void;\n}> = ({ modules, cwd, moduleId, show, setShow }) => {\n  const [selectedChunk, _setSelectedChunk] = useState('' as string);\n  const [activeTabKey, setActiveTabKey] = useState(TabList[TabList.Reasons]);\n\n  return (\n    <ServerAPIProvider\n      api={SDK.ServerAPI.API.GetModuleDetails}\n      body={{ moduleId: +moduleId }}\n    >\n      {({ module, dependencies, sideEffectCodes }) => {\n        return (\n          <Drawer\n            title={\n              <div className=\"module-analyze-box\">\n                <Typography.Text>{getShortPath(module.path)}</Typography.Text>\n                <Typography.Text type=\"secondary\" style={{ fontSize: 12 }}>\n                  {`Current Module: ${module.path}`}\n                </Typography.Text>\n              </div>\n            }\n            open={show}\n            maskClosable\n            width={drawerWidth * 0.8}\n            onClose={() => setShow(false)}\n          >\n            <ServerAPIProvider\n              api={SDK.ServerAPI.API.GetAllChunkGraph}\n              body={{}}\n            >\n              {(_chunks) => {\n                return (\n                  <ModuleGraphListContext.Consumer>\n                    {({ moduleJumpList, setModuleJumpList }) => {\n                      return (\n                        <Tabs\n                          defaultActiveKey=\"bailout\"\n                          items={[\n                            {\n                              key: 'moduleTree',\n                              label: 'Module Tree',\n                              children: (\n                                <Card\n                                  style={{ minHeight: 400 }}\n                                  tabList={tabslist}\n                                  activeTabKey={activeTabKey}\n                                  tabProps={{\n                                    size: 'small',\n                                    style: {\n                                      fontSize: 12,\n                                    },\n                                  }}\n                                  onTabChange={(k) => setActiveTabKey(k)}\n                                  styles={{\n                                    title: { paddingTop: 0 },\n                                  }}\n                                  title={\n                                    <Space style={{ padding: '10px 0px' }}>\n                                      <LeftSquareOutlined\n                                        onClick={() => {\n                                          const _list = [\n                                            ...moduleJumpList.slice(0, -1),\n                                          ];\n                                          setModuleJumpList(_list);\n                                        }}\n                                      />\n                                      <Typography.Text style={{ fontSize: 14 }}>\n                                        Current Module Imported Reasons Tree\n                                      </Typography.Text>\n                                      <Popover\n                                        content={\n                                          <div>\n                                            <div>\n                                              <Badge\n                                                status=\"success\"\n                                                text=\" \"\n                                              />\n                                              <RightSquareTwoTone />\n                                              <Typography.Text>\n                                                {\n                                                  ': Jump button, click to jump to the Module dependency analysis page of this module.'\n                                                }\n                                              </Typography.Text>\n                                            </div>\n                                          </div>\n                                        }\n                                        title=\"Usage\"\n                                      >\n                                        <QuestionCircleOutlined />\n                                      </Popover>\n                                    </Space>\n                                  }\n                                >\n                                  <ModuleFilesTree\n                                    curModule={module}\n                                    modules={modules}\n                                    dependencies={dependencies}\n                                    cwd={cwd}\n                                    selectedChunk={selectedChunk}\n                                    activeTabKey={activeTabKey}\n                                  />\n                                </Card>\n                              ),\n                            },\n                            {\n                              key: 'bailout',\n                              label: 'Bailout',\n                              children: (\n                                <div style={{ marginTop: 16 }}>\n                                  <BailoutReasonCard\n                                    reasons={module.bailoutReason}\n                                    sideEffectCodes={sideEffectCodes}\n                                    modulePath={module.path}\n                                  />\n                                </div>\n                              ),\n                            },\n                          ]}\n                        />\n                      );\n                    }}\n                  </ModuleGraphListContext.Consumer>\n                );\n              }}\n            </ServerAPIProvider>\n          </Drawer>\n        );\n      }}\n    </ServerAPIProvider>\n  );\n};\n"],"names":["TabList","tabslist","ModuleAnalyzeComponent","modules","cwd","moduleId","show","setShow","selectedChunk","_setSelectedChunk","useState","activeTabKey","setActiveTabKey","ServerAPIProvider","SDK","module","dependencies","sideEffectCodes","Drawer","Typography","getShortPath","drawerWidth","_chunks","ModuleGraphListContext","moduleJumpList","setModuleJumpList","Tabs","Card","k","Space","LeftSquareOutlined","_list","Popover","Badge","RightSquareTwoTone","QuestionCircleOutlined","ModuleFilesTree","BailoutReasonCard"],"mappings":"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"}