{"version":3,"file":"helper.mjs","sources":["../../../../../../packages/components/preview-file/src/helper.ts"],"sourcesContent":["import * as IconsVue from '@element-plus/components/icons-vue/index'\nimport type { Component } from 'vue'\n\nconst {\n  ImageFile,\n  MarkdownFile,\n  PdfFile,\n  PptFile,\n  WordFile,\n  ZipFile,\n  VideoFile,\n  AudioFile,\n  ExcelFile,\n  UnknownFile,\n} = IconsVue\n\nconst DEFAULT_ICON_COLOR = '#8c8c8c'\nconst DEFAULT_ICON_SIZE = 32\n\nconst IMG_EXTS = ['png', 'jpg', 'jpeg', 'gif', 'bmp', 'webp', 'svg']\n\nexport const EXCEL_TYPE = 'excel'\nexport const IMAGE_TYPE = 'image'\nexport const MARKDOWN_TYPE = 'markdown'\nexport const PDF_TYPE = 'pdf'\nexport const PPT_TYPE = 'ppt'\nexport const WORD_TYPE = 'word'\nexport const ZIP_TYPE = 'zip'\nexport const VIDEO_TYPE = 'video'\nexport const AUDIO_TYPE = 'audio'\nexport const UNKNOWN_TYPE = 'unknown'\n\nexport const PRESET_FILE_ICONS: {\n  ext: string[]\n  iconColor: string\n  iconSize: number\n  type: string\n  icon: Component\n}[] = [\n  {\n    type: EXCEL_TYPE,\n    icon: ExcelFile,\n    iconSize: DEFAULT_ICON_SIZE,\n    iconColor: '#22b35e',\n    ext: ['xlsx', 'xls'],\n  },\n  {\n    type: IMAGE_TYPE,\n    icon: ImageFile,\n    iconSize: DEFAULT_ICON_SIZE,\n    iconColor: DEFAULT_ICON_COLOR,\n    ext: IMG_EXTS,\n  },\n  {\n    type: MARKDOWN_TYPE,\n    icon: MarkdownFile,\n    iconSize: DEFAULT_ICON_SIZE,\n    iconColor: '#393f4d',\n    ext: ['md', 'mdx'],\n  },\n  {\n    type: PDF_TYPE,\n    icon: PdfFile,\n    iconSize: DEFAULT_ICON_SIZE,\n    iconColor: '#ff4d4f',\n    ext: ['pdf'],\n  },\n  {\n    type: PPT_TYPE,\n    icon: PptFile,\n    iconSize: DEFAULT_ICON_SIZE,\n    iconColor: '#ff6e31',\n    ext: ['ppt', 'pptx'],\n  },\n  {\n    type: WORD_TYPE,\n    icon: WordFile,\n    iconSize: DEFAULT_ICON_SIZE,\n    iconColor: '#1677ff',\n    ext: ['doc', 'docx'],\n  },\n  {\n    type: ZIP_TYPE,\n    icon: ZipFile,\n    iconSize: DEFAULT_ICON_SIZE,\n    iconColor: '#fab714',\n    ext: ['zip', 'rar', '7z', 'tar', 'gz'],\n  },\n  {\n    type: VIDEO_TYPE,\n    icon: VideoFile,\n    iconSize: 28,\n    iconColor: '#ff4d4f',\n    ext: ['mp4', 'avi', 'mov', 'wmv', 'flv', 'mkv'],\n  },\n  {\n    type: AUDIO_TYPE,\n    icon: AudioFile,\n    iconSize: 28,\n    iconColor: '#ffdc04',\n    ext: ['mp3', 'wav', 'flac', 'ape', 'aac', 'ogg'],\n  },\n]\n\nexport const parseSize = (size: number = 0) => {\n  let retSize = size\n  const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB']\n  let unitIndex = 0\n\n  while (retSize >= 1024 && unitIndex < units.length - 1) {\n    retSize /= 1024\n    unitIndex++\n  }\n\n  return `${retSize.toFixed(0)} ${units[unitIndex]}`\n}\n\nexport const parseFileName = (str: string = '') => {\n  const match = str.match(/^(.*)\\.[^.]+$/)\n  return {\n    fileName: match ? match[1] : str,\n    fileNameSuffix: match ? str.slice(match[1].length) : '',\n  }\n}\n\nexport const matchExt = (suffix: string, ext: string[]) => {\n  return ext.some((e) => suffix.toLowerCase() === `.${e}`)\n}\n\nexport const getIconState = (fileNameSuffix: string) => {\n  const presetIconState = PRESET_FILE_ICONS.find((icon) =>\n    matchExt(fileNameSuffix, icon.ext)\n  )\n\n  return {\n    type: presetIconState?.type ?? UNKNOWN_TYPE,\n    icon: presetIconState?.icon ?? UnknownFile,\n    iconColor: presetIconState?.iconColor ?? DEFAULT_ICON_COLOR,\n    iconSize: presetIconState?.iconSize ?? DEFAULT_ICON_SIZE,\n  }\n}\n"],"names":["IconsVue"],"mappings":"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"}