UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 11.5 kB
{"version":3,"file":"utils.mjs","sources":["../../../../src/_common/js/upload/utils.ts"],"sourcesContent":["import { SizeUnit } from './types';\nimport log from '../log/log';\n\nexport const IMAGE_REGEXP = /(.png|.jpg|.jpeg|.jpe|.webp|.avif|.svg|.gif|.bmp)/i;\nexport const IMAGE_ALL_REGEXP = /(.png|.jpg|.jpeg|.jpe|.webp|.avif|.svg|.gif|.bmp|.dwg|.dxf|.svf|.tif|.tiff|.arw)/i;\nexport const FILE_PDF_REGEXP = /(.pdf)/i;\nexport const FILE_EXCEL_REGEXP = /(.xlsx|.xls|.csv|.xlc|.xlm|.xlt|.xlw)/i;\nexport const FILE_WORD_REGEXP = /(.dox|docx|.document|.wps|.wdb|.msword)/i;\nexport const FILE_PPT_REGEXP = /(.ppt|.pptx|.key)/i;\nexport const VIDEO_REGEXP = /(.avi|.mp4|.wmv|.mpg|.mpeg|.mov|.rm|.ram|.swf|.flv|.rmvb|.flash|.mid|.3gp)/i;\nexport const AUDIO_REGEXP = /(.mp2|.mp3|.mp4|.ogg|.3gpp|.ac3|.au)/i;\n\nconst INPUT_FILE_MAP = {\n 'audio/*': AUDIO_REGEXP,\n 'video/*': VIDEO_REGEXP,\n 'image/*': IMAGE_ALL_REGEXP,\n '.doc': /(.doc|.msword)/,\n};\n\n/**\n * 各个单位和 KB 的关系\n *\n * [*] 表示方法采用这种方式\n * [x] 表示方法不采用这种方式\n *\n * [x] bit 位 b 0 or 1\n * [*] byte 字节 B 8 bits\n * [x] kilobit 千位 kb 1000 bites\n * [*] kilobyte 千字节(二进制) KB 1024 bytes\n * [x] kilobyte 千字节(十进制) KB 1000 bytes\n * [x] Megabite 百万位 Mb 1000 kilobits\n * [*] Megabyte 兆字节(二进制) KB 1024 kilobytes\n * [*] Megabyte 兆字节(十进制) KB 1000 kilobytes\n * [x] Gigabit 万亿位 Gb 1000 Megabite\n * [*] Gigabyte 吉字节(二进制) GB 1024 Megabytes\n * [x] Gigabyte 吉字节(十进制) GB 1000 Megabytes\n */\nexport const SIZE_MAP = {\n B: 1,\n KB: 1024,\n MB: 1048576, // 1024 * 1024\n GB: 1073741824, // 1024 * 1024 * 1024\n};\n\nexport function returnFileSize(number: number) {\n if (number < SIZE_MAP.KB) {\n return `${number} Bytes`;\n }\n if (number >= SIZE_MAP.KB && number < SIZE_MAP.MB) {\n return `${(number / SIZE_MAP.KB).toFixed(1)} KB`;\n }\n if (number >= SIZE_MAP.MB && number < SIZE_MAP.GB) {\n return `${(number / SIZE_MAP.MB).toFixed(1)} MB`;\n }\n\n if (number >= SIZE_MAP.GB) {\n return `${(number / SIZE_MAP.GB).toFixed(1)} GB`;\n }\n return '';\n}\n\nexport function getCurrentDate(needTime = false) {\n const d = new Date();\n let month: string | number = d.getMonth() + 1;\n month = month < 10 ? `0${month}` : month;\n const date = `${d.getFullYear()}-${month}-${d.getDate()}`;\n const time = `${d.getHours()}:${d.getMinutes()}:${d.getSeconds()}`;\n if (needTime) return [date, time].join(' ');\n return date;\n}\n\n/**\n * 缩略文件名 ABCDEFG => ABC...FG\n * @param inputName 文件名\n * @param leftCount 左边长度\n * @param rightCount 右边长度\n * @returns 缩略后的文件名\n */\nexport function abridgeName(\n inputName: string,\n leftCount = 5,\n rightCount = 7\n): string {\n const name = inputName;\n let leftLength = 0;\n let rightLength = 0;\n if (!name) return '';\n for (let i = 0; i < name.length; i++) {\n const w = name[i];\n const isCn = escape(w).indexOf('%u') === 0;\n if (i < leftCount * 2 && leftLength < leftCount) {\n // eslint-disable-next-line no-unused-expressions\n isCn ? (leftLength += 1) : (leftLength += 2);\n } else if (i > i - rightCount && rightLength < rightCount) {\n // eslint-disable-next-line no-unused-expressions\n isCn ? (rightLength += 1) : (rightLength += 2);\n }\n }\n return name.replace(\n new RegExp(`^(.{${leftLength}})(.+)(.{${rightLength}})$`),\n '$1…$3'\n );\n}\n\nexport function getFileSizeText(number: number) {\n if (number < 1024) {\n return `${number} Bytes`;\n }\n if (number >= 1024 && number < 1048576) {\n return `${(number / 1024).toFixed(1)} KB`;\n }\n if (number >= 1048576) {\n return `${(number / 1048576).toFixed(1)} MB`;\n }\n return '';\n}\n\n/**\n * 大小比较\n * @param size 文件大小,单位:B\n * @param unit 计算机计量单位\n */\nexport function isOverSizeLimit(\n fileSize: number,\n sizeLimit: number,\n unit: SizeUnit\n) {\n const units = ['B', 'KB', 'MB', 'GB'];\n const KBIndex = 1;\n let index = units.indexOf(unit);\n if (index === -1) {\n log.warn('Upload', `\\`sizeLimit.unit\\` can only be one of ${units.join()}`);\n index = KBIndex;\n }\n const num = SIZE_MAP[unit];\n return fileSize > sizeLimit * num;\n}\n\n// vue2临时使用的 sizeLimit 计算\nexport function isOverSizeLimit1(\n fileSize: number,\n sizeLimit: number,\n unit: SizeUnit\n) {\n // 以 KB 为单位进行比较\n const units = ['B', 'KB', 'MB', 'GB'];\n // 各个单位和 KB 的关系\n\n const KBIndex = 1;\n let index = units.indexOf(unit);\n if (index === -1) {\n // eslint-disable-next-line no-console\n console.warn(\n `TDesign Upload Warn: \\`sizeLimit.unit\\` can only be one of ${units.join()}`\n );\n index = KBIndex;\n }\n const num = SIZE_MAP[unit];\n const limit = index < KBIndex ? sizeLimit / num : sizeLimit * num;\n return fileSize <= limit;\n}\n\nexport const urlCreator = () => window.webkitURL || window.URL;\n\nexport function getFileUrlByFileRaw(fileRaw: File): Promise<string> {\n return new Promise((resolve) => {\n if (!fileRaw) {\n resolve('');\n return;\n }\n const reader = new FileReader();\n reader.readAsDataURL(fileRaw);\n reader.onload = (event: ProgressEvent<FileReader>) => {\n resolve(event.target?.result as string);\n };\n });\n}\n\nexport function validateFileType(accept: string, fileType: string, fileName?: string) {\n const tmpFileType = fileType || fileName;\n if (!accept) return true;\n\n if (!tmpFileType) return false;\n\n const acceptList = accept.split(',').map((v) => v.trim());\n for (let i = 0, len = acceptList.length; i < len; i++) {\n const oneRule = acceptList[i];\n if (INPUT_FILE_MAP[oneRule] && INPUT_FILE_MAP[oneRule].test(tmpFileType)) {\n return true;\n }\n const regExp = new RegExp(oneRule, 'i');\n if (regExp.test(tmpFileType)) {\n return true;\n }\n }\n return false;\n}\n\nexport function getFileList(files: FileList, accept: string = '') {\n const fileList: File[] = [];\n for (let i = 0; i < files.length; i++) {\n if (validateFileType(accept, files[i].type, files[i].name)) {\n fileList.push(files[i]);\n }\n }\n return fileList;\n}\n"],"names":["B","KB","MB","GB","isCn","log","index","reader","resolve","fileList"],"mappings":"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"}