vue-files-preview-inno
Version:
A tool for previewing files such as doc, excel, pdf, image, markdown, txt, audio, and video and so on.
1 lines • 4.67 kB
Source Map (JSON)
{"version":3,"file":"utils.mjs","sources":["../../../../../packages/preview/utils/utils.ts"],"sourcesContent":["import type {FileRenderType, PreviewType} from '../preview.interface'\nimport {\n arrayBufferPreviewTypeList,\n getPreviewTypeByFileType,\n imagePreviewTypeList,\n pdfPreviewTypeList,\n textFilePreviewTypeList,\n videoPreviewTypeList,\n} from '../preview.const'\n\n/**\n * Get file type\n * @param file\n */\nexport function getFileType(file: File): string {\n const fileName = file.name\n const idx = fileName.lastIndexOf('.')\n return fileName.substring(idx + 1)\n}\n\n/**\n * Get file name\n * @param file\n */\nexport function getFileName(file: File): string {\n const fileAllName = file.name\n const idx = fileAllName.lastIndexOf('.')\n return fileAllName.substring(0, idx)\n}\n\n/**\n * Get by file type\n */\nexport function getFileRenderByFile(file: File): Promise<ArrayBuffer | string> {\n const previewType = getPreviewTypeByFileType(getFileType(file))\n const renderType = getFileRenderType(previewType)\n return new Promise((resolve) => {\n const raw = file\n const fileReader = new FileReader()\n switch (renderType) {\n case 'text':\n fileReader.readAsText(raw)\n fileReader.onload = () => {\n resolve(fileReader.result)\n }\n break\n case 'arrayBuffer':\n fileReader.readAsArrayBuffer(raw)\n fileReader.onload = () => {\n resolve(fileReader.result)\n }\n break\n case 'image':\n resolve(window.URL.createObjectURL(raw))\n break\n case 'pdf': {\n const pdfBloBlob = new Blob([raw], {type: 'application/pdf'})\n const pdfBlobUrl = URL.createObjectURL(pdfBloBlob)\n resolve(pdfBlobUrl)\n break\n }\n case 'video': {\n const videoBlobUrl = URL.createObjectURL(new Blob([raw], {type: 'video/mp4'}))\n resolve(videoBlobUrl)\n break\n }\n default:\n resolve(window.URL.createObjectURL(raw))\n break\n }\n })\n}\n\n/**\n * Get the file rendering data type\n * @param previewType\n */\nexport function getFileRenderType(previewType: PreviewType): FileRenderType {\n const types: Record<FileRenderType, boolean> = {\n text: textFilePreviewTypeList.includes(previewType),\n arrayBuffer: arrayBufferPreviewTypeList.includes(previewType),\n image: imagePreviewTypeList.includes(previewType),\n pdf: pdfPreviewTypeList.includes(previewType),\n video: videoPreviewTypeList.includes(previewType),\n }\n return Object.keys(types)!.find(key => types[key]) as FileRenderType\n}\n"],"names":["getFileType","file","fileName","idx","getFileName","fileAllName","getFileRenderByFile","previewType","getPreviewTypeByFileType","renderType","getFileRenderType","resolve","raw","fileReader","pdfBloBlob","pdfBlobUrl","videoBlobUrl","types","textFilePreviewTypeList","arrayBufferPreviewTypeList","imagePreviewTypeList","pdfPreviewTypeList","videoPreviewTypeList","key"],"mappings":";AAcO,SAASA,EAAYC,GAAoB;AAC5C,QAAMC,IAAWD,EAAK,MAChBE,IAAMD,EAAS,YAAY,GAAG;AACpC,SAAOA,EAAS,UAAUC,IAAM,CAAC;AACrC;AAMO,SAASC,EAAYH,GAAoB;AAC5C,QAAMI,IAAcJ,EAAK,MACnBE,IAAME,EAAY,YAAY,GAAG;AACvC,SAAOA,EAAY,UAAU,GAAGF,CAAG;AACvC;AAKO,SAASG,EAAoBL,GAA2C;AAC3E,QAAMM,IAAcC,EAAyBR,EAAYC,CAAI,CAAC,GACxDQ,IAAaC,EAAkBH,CAAW;AAChD,SAAO,IAAI,QAAQ,CAACI,MAAY;AAC5B,UAAMC,IAAMX,GACNY,IAAa,IAAI,WAAA;AACvB,YAAQJ,GAAA;AAAA,MACJ,KAAK;AACD,QAAAI,EAAW,WAAWD,CAAG,GACzBC,EAAW,SAAS,MAAM;AACtB,UAAAF,EAAQE,EAAW,MAAM;AAAA,QAC7B;AACA;AAAA,MACJ,KAAK;AACD,QAAAA,EAAW,kBAAkBD,CAAG,GAChCC,EAAW,SAAS,MAAM;AACtB,UAAAF,EAAQE,EAAW,MAAM;AAAA,QAC7B;AACA;AAAA,MACJ,KAAK;AACD,QAAAF,EAAQ,OAAO,IAAI,gBAAgBC,CAAG,CAAC;AACvC;AAAA,MACJ,KAAK,OAAO;AACR,cAAME,IAAa,IAAI,KAAK,CAACF,CAAG,GAAG,EAAC,MAAM,mBAAkB,GACtDG,IAAa,IAAI,gBAAgBD,CAAU;AACjD,QAAAH,EAAQI,CAAU;AAClB;AAAA,MACJ;AAAA,MACA,KAAK,SAAS;AACV,cAAMC,IAAe,IAAI,gBAAgB,IAAI,KAAK,CAACJ,CAAG,GAAG,EAAC,MAAM,YAAA,CAAY,CAAC;AAC7E,QAAAD,EAAQK,CAAY;AACpB;AAAA,MACJ;AAAA,MACA;AACI,QAAAL,EAAQ,OAAO,IAAI,gBAAgBC,CAAG,CAAC;AACvC;AAAA,IAAA;AAAA,EAEZ,CAAC;AACL;AAMO,SAASF,EAAkBH,GAA0C;AACxE,QAAMU,IAAyC;AAAA,IAC3C,MAAMC,EAAwB,SAASX,CAAW;AAAA,IAClD,aAAaY,EAA2B,SAASZ,CAAW;AAAA,IAC5D,OAAOa,EAAqB,SAASb,CAAW;AAAA,IAChD,KAAKc,EAAmB,SAASd,CAAW;AAAA,IAC5C,OAAOe,EAAqB,SAASf,CAAW;AAAA,EAAA;AAEpD,SAAO,OAAO,KAAKU,CAAK,EAAG,KAAK,CAAAM,MAAON,EAAMM,CAAG,CAAC;AACrD;"}