Files
cinny/src/app/plugins/pdfjs-dist.ts
T
Lotus BotandClaude Sonnet 4.6 266e47f240 chore: upgrade TypeScript 4.9 to 5.9, ESLint 8.29 to 8.57, @typescript-eslint 5 to 7
Resolves all TS2345/TS2347/TS7006 type errors introduced by stricter TypeScript 5.x.
Fix Icons.Settings to Icons.Setting, cast account data returns, fix implicit any.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 11:16:11 -04:00

52 lines
1.4 KiB
TypeScript

import { useCallback } from 'react';
import type * as PdfJsDist from 'pdfjs-dist';
import type { GetViewportParameters } from 'pdfjs-dist/types/src/display/api';
import { useAsyncCallback } from '../hooks/useAsyncCallback';
import { trimTrailingSlash } from '../utils/common';
export const usePdfJSLoader = () =>
useAsyncCallback(
useCallback(async () => {
const pdf = await import('pdfjs-dist');
pdf.GlobalWorkerOptions.workerSrc = `${trimTrailingSlash(
import.meta.env.BASE_URL,
)}/pdf.worker.min.js`;
return pdf;
}, []),
);
export const usePdfDocumentLoader = (pdfJS: typeof PdfJsDist | undefined, src: string) =>
useAsyncCallback(
useCallback(async () => {
if (!pdfJS) {
throw new Error('PdfJS is not loaded');
}
const doc = await pdfJS.getDocument(src).promise;
return doc;
}, [pdfJS, src]),
);
export const createPage = async (
doc: PdfJsDist.PDFDocumentProxy,
pNo: number,
opts: GetViewportParameters,
): Promise<HTMLCanvasElement> => {
const page = await doc.getPage(pNo);
const pageViewport = page.getViewport(opts);
const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');
if (!context) throw new Error('failed to render page.');
canvas.width = pageViewport.width;
canvas.height = pageViewport.height;
page.render({
canvas,
canvasContext: context,
viewport: pageViewport,
});
return canvas;
};