Files
HiveGrid-Wireframes/03 Quellen und Referenzen/hivegrid-cloud/apps/web/app/components/ui/pdf/PdfJsLoader.client.ts
T

19 lines
830 B
TypeScript

import pdfWorkerUrl from "pdfjs-dist/build/pdf.worker.min.mjs?url";
export type PdfJs = typeof import("pdfjs-dist");
let pdfJsLoadPromise: Promise<PdfJs> | undefined;
export function loadPdfJs(): Promise<PdfJs> {
pdfJsLoadPromise ??= import("pdfjs-dist").then((pdfJs) => {
const emittedUrl = new URL(pdfWorkerUrl, globalThis.location.href);
const sameOriginWorkerUrl = new URL(`${emittedUrl.pathname}${emittedUrl.search}${emittedUrl.hash}`, globalThis.location.origin);
// Worker constructors require a same-origin URL, including builds whose
// regular assets use a first-party CDN. Keeping API and worker on one
// package version also avoids PDF.js's fail-closed version mismatch.
pdfJs.GlobalWorkerOptions.workerSrc = sameOriginWorkerUrl.href;
return pdfJs;
});
return pdfJsLoadPromise;
}