Refactor and enhance type safety across various modules

- Updated function parameters and return types in `page-preview.ts`, `pdf-decrypt.ts`, and `pymupdf-loader.ts` for improved type safety.
- Introduced type definitions for `CpdfInstance`, `PyMuPDFInstance`, and other related types to ensure better type checking.
- Enhanced error handling in `sanitize.ts` by creating a utility function for error messages.
- Removed unnecessary type assertions and improved type inference in `editor.ts`, `serialization.ts`, and `tools.test.ts`.
- Added type definitions for markdown-it plugins to improve compatibility and type safety.
- Enforced stricter TypeScript settings by enabling `noImplicitAny` in `tsconfig.json`.
- Cleaned up test files by refining type assertions and ensuring consistency in type usage.
This commit is contained in:
alam00000 committed 2026-03-31 17:59:49 +05:30
1 parent a1fc2fc3c6
commit 9d0b68e18c
114 files changed
+2576 -1867

No files matched your search

+29 -22
View File
@@ -11,8 +11,11 @@ const embedPdfWasmUrl = new URL(
import.meta.url
).href;
let viewerInstance: any = null;
let docManagerPlugin: any = null;
import type { EmbedPdfContainer } from 'embedpdf-snippet';
import type { DocManagerPlugin } from '@/types';
let viewerInstance: EmbedPdfContainer | null = null;
let docManagerPlugin: DocManagerPlugin | null = null;
let isViewerInitialized = false;
const fileEntryMap = new Map<string, HTMLElement>();
@@ -148,33 +151,37 @@ async function handleFiles(files: FileList) {
});
const registry = await viewerInstance.registry;
docManagerPlugin = registry.getPlugin('document-manager').provides();
docManagerPlugin = registry
.getPlugin('document-manager')
.provides() as unknown as DocManagerPlugin;
docManagerPlugin.onDocumentClosed((data: any) => {
const docId = data?.id || data;
docManagerPlugin.onDocumentClosed((data: { id?: string }) => {
const docId = data?.id || '';
removeFileEntry(docId);
});
docManagerPlugin.onDocumentOpened((data: any) => {
const docId = data?.id;
const docKey = data?.name;
if (!docId) return;
const pendingEntry = fileDisplayArea.querySelector(
`[data-pending-name="${CSS.escape(docKey)}"]`
) as HTMLElement;
if (pendingEntry) {
pendingEntry.removeAttribute('data-pending-name');
fileEntryMap.set(docId, pendingEntry);
const removeBtn = pendingEntry.querySelector(
'[data-remove-btn]'
docManagerPlugin.onDocumentOpened(
(data: { id?: string; name?: string }) => {
const docId = data?.id;
const docKey = data?.name;
if (!docId) return;
const pendingEntry = fileDisplayArea.querySelector(
`[data-pending-name="${CSS.escape(docKey)}"]`
) as HTMLElement;
if (removeBtn) {
removeBtn.onclick = () => {
docManagerPlugin.closeDocument(docId);
};
if (pendingEntry) {
pendingEntry.removeAttribute('data-pending-name');
fileEntryMap.set(docId, pendingEntry);
const removeBtn = pendingEntry.querySelector(
'[data-remove-btn]'
) as HTMLElement;
if (removeBtn) {
removeBtn.onclick = () => {
docManagerPlugin.closeDocument(docId);
};
}
}
}
});
);
addFileEntries(fileDisplayArea, decryptedFiles);