Skip to content

Commit 1f867a6

Browse files
authored
Merge pull request #37 from LibreSign/fix/pdfjs-cjs-esm-interop
fix: pdfjs cjs esm interop
2 parents e50c6ef + aa39f83 commit 1f867a6

2 files changed

Lines changed: 20 additions & 5 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@libresign/pdf-elements",
33
"description": "PDF viewer with draggable and resizable element overlays for Vue 3",
4-
"version": "1.0.1",
4+
"version": "1.0.2",
55
"author": "LibreCode <contact@librecode.coop>",
66
"private": false,
77
"main": "dist/index.js",

src/utils/asyncReader.ts

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,16 @@ let pdfjsPromise: Promise<typeof import('pdfjs-dist')> | null = null
88
let workerUrlPromise: Promise<string> | null = null
99
let workerSrcOverride: string | null = null
1010

11+
type PdfjsModule = typeof import('pdfjs-dist')
12+
13+
function normalizePdfjs(mod: PdfjsModule): PdfjsModule {
14+
const m = mod as PdfjsModule & { default?: PdfjsModule }
15+
return (m.default?.PDFWorker ? m.default : m) as PdfjsModule
16+
}
17+
1118
function loadPdfjs() {
1219
if (!pdfjsPromise) {
13-
pdfjsPromise = import('pdfjs-dist')
20+
pdfjsPromise = import('pdfjs-dist').then(normalizePdfjs)
1421
}
1522
return pdfjsPromise
1623
}
@@ -24,7 +31,10 @@ function loadWorkerUrl() {
2431
return workerUrlPromise
2532
}
2633

27-
async function ensureWorkerSrc(pdfjs: typeof import('pdfjs-dist')) {
34+
async function ensureWorkerSrc(pdfjs: PdfjsModule) {
35+
if (!pdfjs?.GlobalWorkerOptions) {
36+
return
37+
}
2838
if (workerSrcOverride) {
2939
pdfjs.GlobalWorkerOptions.workerSrc = workerSrcOverride
3040
return
@@ -34,7 +44,7 @@ async function ensureWorkerSrc(pdfjs: typeof import('pdfjs-dist')) {
3444
}
3545
}
3646

37-
async function getSharedWorker(pdfjs: typeof import('pdfjs-dist')): Promise<PDFWorker> {
47+
async function getSharedWorker(pdfjs: PdfjsModule): Promise<PDFWorker> {
3848
if (!sharedWorker) {
3949
await ensureWorkerSrc(pdfjs)
4050
sharedWorker = new pdfjs.PDFWorker({}) as PDFWorker
@@ -44,9 +54,14 @@ async function getSharedWorker(pdfjs: typeof import('pdfjs-dist')): Promise<PDFW
4454

4555
export function setWorkerPath(path: string) {
4656
workerSrcOverride = path
57+
sharedWorker = null
4758
if (pdfjsPromise) {
4859
pdfjsPromise.then((pdfjs) => {
49-
pdfjs.GlobalWorkerOptions.workerSrc = path
60+
if (pdfjs?.GlobalWorkerOptions) {
61+
pdfjs.GlobalWorkerOptions.workerSrc = path
62+
}
63+
}).catch((error) => {
64+
console.warn('setWorkerPath: failed to update pdfjs workerSrc immediately', error)
5065
})
5166
}
5267
}

0 commit comments

Comments
 (0)