diff --git a/package.json b/package.json index fc9e7ce..de85f3d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@libresign/pdf-elements", "description": "PDF viewer with draggable and resizable element overlays for Vue 3", - "version": "1.0.1", + "version": "1.0.2", "author": "LibreCode ", "private": false, "main": "dist/index.js", diff --git a/src/utils/asyncReader.ts b/src/utils/asyncReader.ts index 7da94db..a8770f4 100644 --- a/src/utils/asyncReader.ts +++ b/src/utils/asyncReader.ts @@ -8,9 +8,16 @@ let pdfjsPromise: Promise | null = null let workerUrlPromise: Promise | null = null let workerSrcOverride: string | null = null +type PdfjsModule = typeof import('pdfjs-dist') + +function normalizePdfjs(mod: PdfjsModule): PdfjsModule { + const m = mod as PdfjsModule & { default?: PdfjsModule } + return (m.default?.PDFWorker ? m.default : m) as PdfjsModule +} + function loadPdfjs() { if (!pdfjsPromise) { - pdfjsPromise = import('pdfjs-dist') + pdfjsPromise = import('pdfjs-dist').then(normalizePdfjs) } return pdfjsPromise } @@ -24,7 +31,10 @@ function loadWorkerUrl() { return workerUrlPromise } -async function ensureWorkerSrc(pdfjs: typeof import('pdfjs-dist')) { +async function ensureWorkerSrc(pdfjs: PdfjsModule) { + if (!pdfjs?.GlobalWorkerOptions) { + return + } if (workerSrcOverride) { pdfjs.GlobalWorkerOptions.workerSrc = workerSrcOverride return @@ -34,7 +44,7 @@ async function ensureWorkerSrc(pdfjs: typeof import('pdfjs-dist')) { } } -async function getSharedWorker(pdfjs: typeof import('pdfjs-dist')): Promise { +async function getSharedWorker(pdfjs: PdfjsModule): Promise { if (!sharedWorker) { await ensureWorkerSrc(pdfjs) sharedWorker = new pdfjs.PDFWorker({}) as PDFWorker @@ -44,9 +54,14 @@ async function getSharedWorker(pdfjs: typeof import('pdfjs-dist')): Promise { - pdfjs.GlobalWorkerOptions.workerSrc = path + if (pdfjs?.GlobalWorkerOptions) { + pdfjs.GlobalWorkerOptions.workerSrc = path + } + }).catch((error) => { + console.warn('setWorkerPath: failed to update pdfjs workerSrc immediately', error) }) } }