{"version":3,"file":"pages/ModuleAnalyze/components/fileTreeCom.mjs","sources":["../../../../src/pages/ModuleAnalyze/components/fileTreeCom.tsx"],"sourcesContent":["import {\n  MinusCircleOutlined,\n  PlusCircleOutlined,\n  RightSquareOutlined,\n} from '@ant-design/icons';\nimport { Popover, Space, Typography } from 'antd';\nimport React, { useCallback, useEffect, useRef } from 'react';\nimport Tree, { DefaultNodeProps, useTreeState } from 'react-hyper-tree';\n\nimport { ModuleGraphListContext } from '../../BundleSize/config';\nimport { NewTreeNodeType } from '../utils/hooks';\nimport './fileTreeCom.scss';\nimport { getFileCom } from 'src/components/FileTree';\n\nconst prefix = 'file-tree-com';\n\ntype FileTreeProps = {\n  treeData: NewTreeNodeType[];\n  needCode?: boolean;\n  needShowAllTree?: boolean;\n  needJumpto?: boolean;\n  defaultOpened?: boolean;\n  defaultOpenFather?: number;\n  cwd: string;\n  selectedChunk?: string;\n};\n\nexport const FileTree: React.FC<FileTreeProps> = (props) => {\n  const { treeData, needJumpto = false, defaultOpenFather = 0 } = props;\n\n  const { required, handlers } = useTreeState({\n    id: `${prefix}-tree`,\n    data: treeData || [],\n    defaultOpened: false,\n    multipleSelect: false,\n    refreshAsyncNodes: true,\n  });\n\n  const expandedNodes = useRef<Set<string | number>>(new Set());\n\n  useEffect(() => {\n    expandedNodes.current.clear();\n  }, [treeData]);\n\n  const renderNode = useCallback(\n    ({ node, onToggle }: DefaultNodeProps) => {\n      if (\n        typeof node.data !== 'object' ||\n        node.data === null ||\n        Array.isArray(node.data)\n      ) {\n        return null;\n      }\n\n      const hasChildren =\n        typeof node.data.getChildren === 'function' ||\n        (Array.isArray(node.data.children) && node.data.children.length > 0);\n\n      if (\n        defaultOpenFather > 0 &&\n        typeof node.data.level === 'number' &&\n        node.data.level < defaultOpenFather &&\n        hasChildren\n      ) {\n        const nodeId = node.id;\n        if (!expandedNodes.current.has(nodeId)) {\n          expandedNodes.current.add(nodeId);\n          requestAnimationFrame(() => {\n            handlers.setOpen(nodeId, true);\n          });\n        }\n      }\n\n      const Icon = getFileCom(node.data.name);\n\n      return (\n        <div className={`${prefix}-titles-box`} key={node.data.name}>\n          <div className={`${prefix}-titles`}>\n            <Space direction=\"vertical\">\n              <div className={`${prefix}-node-title`}>\n                <Space>\n                  <div onClick={onToggle}>\n                    <Space>\n                      {(() => {\n                        const hasChildren =\n                          typeof node.data.getChildren === 'function' ||\n                          (Array.isArray(node.data.children) &&\n                            node.data.children.length > 0);\n                        return !node.options.opened && hasChildren ? (\n                          <PlusCircleOutlined style={{ color: 'lightblue' }} />\n                        ) : (\n                          <MinusCircleOutlined style={{ color: 'lightblue' }} />\n                        );\n                      })()}\n                      {Icon}\n                      <Popover\n                        key={`${node.data.name}popover`}\n                        content={\n                          <>\n                            {node.data.__RESOURCEPATH__ ? (\n                              <Typography.Text\n                                key={`${node.data.name}-popover-path`}\n                                code\n                              >\n                                {node.data.__RESOURCEPATH__}\n                              </Typography.Text>\n                            ) : (\n                              <></>\n                            )}\n                          </>\n                        }\n                        title=\"INFO\"\n                        trigger=\"hover\"\n                      >\n                        <Typography.Text>{node.data.name}</Typography.Text>\n                      </Popover>\n                    </Space>\n                  </div>\n                  <Space>\n                    {needJumpto && (\n                      <ModuleGraphListContext.Consumer>\n                        {({ moduleJumpList, setModuleJumpList }) => {\n                          return (\n                            <RightSquareOutlined\n                              onClick={() => {\n                                const _list = [...moduleJumpList];\n                                _list.push(+node.id);\n                                setModuleJumpList(_list);\n                              }}\n                            />\n                          );\n                        }}\n                      </ModuleGraphListContext.Consumer>\n                    )}\n                  </Space>\n                </Space>\n              </div>\n            </Space>\n          </div>\n        </div>\n      );\n    },\n    [handlers, defaultOpenFather, needJumpto],\n  );\n\n  return (\n    <>\n      <Tree\n        {...required}\n        {...handlers}\n        horizontalLineStyles={{\n          stroke: '#c4c4c4',\n          strokeWidth: 2,\n          strokeDasharray: '1 1',\n        }}\n        verticalLineStyles={{\n          stroke: '#c4c4c4',\n          strokeWidth: 2,\n          strokeDasharray: '1 1',\n        }}\n        draggable={false}\n        depthGap={14}\n        gapMode={'padding'}\n        disableLines={false}\n        disableTransitions={true}\n        disableHorizontalLines={false}\n        disableVerticalLines={false}\n        verticalLineTopOffset={0}\n        verticalLineOffset={5}\n        renderNode={renderNode}\n      />\n    </>\n  );\n};\n"],"names":["prefix","FileTree","props","treeData","needJumpto","defaultOpenFather","required","handlers","useTreeState","expandedNodes","useRef","Set","useEffect","renderNode","useCallback","node","onToggle","Array","hasChildren","nodeId","requestAnimationFrame","Icon","getFileCom","Space","PlusCircleOutlined","MinusCircleOutlined","Popover","Typography","ModuleGraphListContext","moduleJumpList","setModuleJumpList","RightSquareOutlined","_list","Tree"],"mappings":"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"}