{"version":3,"file":"components/FileTree/index.mjs","sources":["../../../src/components/FileTree/index.tsx"],"sourcesContent":["import React from 'react';\nimport { Space } from 'antd';\nimport {\n  FileOutlined,\n  FolderOpenTwoTone,\n  FolderTwoTone,\n  RightOutlined,\n} from '@ant-design/icons';\nimport Tree, { TreeProps } from 'rc-tree';\nimport CSSIcon from 'src/common/svg/files/css.svg';\nimport HtmlIcon from 'src/common/svg/files/html.svg';\nimport IMGIcon from 'src/common/svg/files/image.svg';\nimport JSIcon from 'src/common/svg/files/js.svg';\nimport FileIcon from 'src/common/svg/files/unkown-file.svg';\n\nimport './index.sass';\nimport { useTheme, useThemeToken } from '../../utils';\nimport path from 'path';\n\nfunction getFileType(filename: string) {\n  const extension = path.extname(filename).slice(1).toLowerCase();\n\n  switch (extension) {\n    case 'js':\n    case 'jsx':\n    case 'ts':\n    case 'mjs':\n    case 'cjs':\n    case 'mts':\n    case 'cts':\n      return <JSIcon />;\n    case 'tsx':\n      return <FileIcon />;\n    case 'css':\n    case 'scss':\n    case 'sass':\n    case 'less':\n    case 'styl':\n    case 'stylus':\n      return <CSSIcon />;\n    case 'html':\n      return <HtmlIcon />;\n    case 'png':\n    case 'jpg':\n    case 'jpeg':\n    case 'gif':\n    case 'svg':\n    case 'bmp':\n    case 'webp':\n    case 'ico':\n    case 'apng':\n    case 'avif':\n    case 'tif':\n    case 'tiff':\n    case 'jfif':\n    case 'pjpeg':\n    case 'pjp':\n      return <IMGIcon />;\n    default:\n      return <FileIcon />;\n  }\n}\n\nexport function getFileCom(filename: string) {\n  const fileIcon = getFileType(filename);\n  return <div className=\"file-icon\">{fileIcon}</div>;\n}\n\nexport const FileTree: React.FC<Partial<TreeProps>> = (props) => {\n  const { isDark } = useTheme();\n\n  const token = useThemeToken();\n  const color = isDark ? token.colorWhite : token.colorText;\n  const style = { fontSize: token.fontSize };\n\n  return (\n    <Tree\n      checkable={false}\n      selectable={true}\n      switcherIcon={({ data, expanded }) => {\n        if (data?.children) {\n          return (\n            <Space style={{ color }}>\n              <RightOutlined\n                twoToneColor={color}\n                className={`file-tree-switcher-arrow ${expanded ? 'file-tree-switcher-arrow-expand' : ''}`}\n                style={style}\n              />\n              {expanded ? <FolderOpenTwoTone /> : <FolderTwoTone />}\n            </Space>\n          );\n        }\n        if (data?.key && typeof data.key === 'string') {\n          return getFileCom(data.key);\n        }\n        return <FileOutlined />;\n      }}\n      expandAction=\"click\"\n      {...props}\n    />\n  );\n};\n"],"names":["getFileType","filename","extension","path","JSIcon","FileIcon","CSSIcon","HtmlIcon","IMGIcon","getFileCom","fileIcon","FileTree","props","isDark","useTheme","token","useThemeToken","color","style","Tree","data","expanded","Space","RightOutlined","FolderOpenTwoTone","FolderTwoTone","FileOutlined"],"mappings":";;;;;;;;;;;;;AAmBA,SAASA,YAAYC,QAAgB;IACnC,MAAMC,YAAYC,KAAK,OAAO,CAACF,UAAU,KAAK,CAAC,GAAG,WAAW;IAE7D,OAAQC;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO,WAAP,GAAO,IAACE,IAAMA,CAAAA;QAChB,KAAK;YACH,OAAO,WAAP,GAAO,IAACC,aAAQA,CAAAA;QAClB,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO,WAAP,GAAO,IAACC,KAAOA,CAAAA;QACjB,KAAK;YACH,OAAO,WAAP,GAAO,IAACC,MAAQA,CAAAA;QAClB,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO,WAAP,GAAO,IAACC,aAAOA,CAAAA;QACjB;YACE,OAAO,WAAP,GAAO,IAACH,aAAQA,CAAAA;IACpB;AACF;AAEO,SAASI,WAAWR,QAAgB;IACzC,MAAMS,WAAWV,YAAYC;IAC7B,OAAO,WAAP,GAAO,IAAC;QAAI,WAAU;kBAAaS;;AACrC;AAEO,MAAMC,WAAyC,CAACC;IACrD,MAAM,EAAEC,MAAM,EAAE,GAAGC;IAEnB,MAAMC,QAAQC;IACd,MAAMC,QAAQJ,SAASE,MAAM,UAAU,GAAGA,MAAM,SAAS;IACzD,MAAMG,QAAQ;QAAE,UAAUH,MAAM,QAAQ;IAAC;IAEzC,OAAO,WAAP,GACE,IAACI,SAAIA;QACH,WAAW;QACX,YAAY;QACZ,cAAc,CAAC,EAAEC,IAAI,EAAEC,QAAQ,EAAE;YAC/B,IAAID,MAAM,UACR,OAAO,WAAP,GACE,KAACE,OAAKA;gBAAC,OAAO;oBAAEL;gBAAM;;kCACpB,IAACM,eAAaA;wBACZ,cAAcN;wBACd,WAAW,CAAC,yBAAyB,EAAEI,WAAW,oCAAoC,IAAI;wBAC1F,OAAOH;;oBAERG,WAAW,WAAXA,GAAW,IAACG,mBAAiBA,CAAAA,KAAAA,WAAAA,GAAM,IAACC,eAAaA,CAAAA;;;YAIxD,IAAIL,MAAM,OAAO,AAAoB,YAApB,OAAOA,KAAK,GAAG,EAC9B,OAAOX,WAAWW,KAAK,GAAG;YAE5B,OAAO,WAAP,GAAO,IAACM,cAAYA,CAAAA;QACtB;QACA,cAAa;QACZ,GAAGd,KAAK;;AAGf"}