{"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 * 获取文件类型\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 * 获取文件名\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 * 通过文件类型获取fileRender\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 * 获取文件渲染数据类型\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;"}