diff --git a/src/main.ts b/src/main.ts index 23ffc95..13378e6 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,6 +1,7 @@ import './meta' -import { waitForDocumentLoaded, saveAs, console } from './utils' +import FileSaver from 'file-saver' +import { waitForDocumentLoaded, console } from './utils' import { downloadPDF } from './pdf' import { downloadMscz } from './mscz' import { getFileUrl } from './file' @@ -9,6 +10,8 @@ import { BtnList, BtnAction, BtnListMode } from './btn' import { ScoreInfoInPage, SheetInfoInPage } from './scoreinfo' import i18n from './i18n' +const { saveAs } = FileSaver + const main = (): void => { const btnList = new BtnList() const scoreinfo = new ScoreInfoInPage(document) @@ -22,7 +25,7 @@ const main = (): void => { btnList.add({ name: i18n('DOWNLOAD')('MSCZ'), - action: BtnAction.process(() => downloadMscz(scoreinfo)), + action: BtnAction.process(() => downloadMscz(scoreinfo, saveAs)), }) btnList.add({ diff --git a/src/mscz.ts b/src/mscz.ts index cec07c2..8b64d79 100644 --- a/src/mscz.ts +++ b/src/mscz.ts @@ -1,5 +1,5 @@ -import { saveAs, assertRes, getFetch } from './utils' +import { assertRes, getFetch } from './utils' import { ScoreInfo } from './scoreinfo' const MSCZ_BUF_SYM = Symbol('msczBufferP') @@ -29,7 +29,7 @@ export const fetchMscz = async (scoreinfo: ScoreInfo, _fetch = getFetch()): Prom return msczBufferP } -export const downloadMscz = async (scoreinfo: ScoreInfo): Promise => { +export const downloadMscz = async (scoreinfo: ScoreInfo, saveAs: typeof import('file-saver').saveAs): Promise => { const data = new Blob([await fetchMscz(scoreinfo)]) const filename = scoreinfo.fileName saveAs(data, `${filename}.mscz`) diff --git a/src/pdf.ts b/src/pdf.ts index c9da3a8..ade9a25 100644 --- a/src/pdf.ts +++ b/src/pdf.ts @@ -1,14 +1,14 @@ import { PDFWorkerHelper } from './worker-helper' import { getFileUrl } from './file' -import { saveAs } from './utils' +import FileSaver from 'file-saver' import { ScoreInfo, SheetInfo } from './scoreinfo' let pdfBlob: Blob const _downloadPDF = async (imgURLs: string[], imgType: 'svg' | 'png', name = ''): Promise => { if (pdfBlob) { - return saveAs(pdfBlob, `${name}.pdf`) + return FileSaver.saveAs(pdfBlob, `${name}.pdf`) } const cachedImg = document.querySelector('img[src*=score_]') as HTMLImageElement @@ -20,7 +20,7 @@ const _downloadPDF = async (imgURLs: string[], imgType: 'svg' | 'png', name = '' pdfBlob = new Blob([pdfArrayBuffer]) - saveAs(pdfBlob, `${name}.pdf`) + FileSaver.saveAs(pdfBlob, `${name}.pdf`) } export const downloadPDF = async (scoreinfo: ScoreInfo, sheet: SheetInfo): Promise => { diff --git a/src/utils.ts b/src/utils.ts index d1e71f5..b89ec2a 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,9 +1,6 @@ -import FileSaver from 'file-saver/dist/FileSaver.js' import isNodeJs from 'detect-node' -export const saveAs: typeof import('file-saver').saveAs = FileSaver.saveAs - export const getIndexPath = (id: number): string => { const idStr = String(id) // 获取最后三位,倒序排列