diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 3ba0d732e..947c4c8bc 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -17,6 +17,7 @@ "@embedpdf/plugin-render": "^1.1.1", "@embedpdf/plugin-scroll": "^1.1.1", "@embedpdf/plugin-selection": "^1.1.1", + "@embedpdf/plugin-tiling": "^1.1.1", "@embedpdf/plugin-viewport": "^1.1.1", "@embedpdf/plugin-zoom": "^1.1.1", "@emotion/react": "^11.14.0", @@ -726,6 +727,24 @@ "vue": ">=3.2.0" } }, + "node_modules/@embedpdf/plugin-tiling": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@embedpdf/plugin-tiling/-/plugin-tiling-1.1.1.tgz", + "integrity": "sha512-KxpouPRsDZ1rnxsxnusywlI92L0l9+WilMAa+RzLDDuesOrtDWL2ry/MAhT0A/lhZP6NdPZNjlqqZGBWcFZhHA==", + "dependencies": { + "@embedpdf/models": "1.1.1" + }, + "peerDependencies": { + "@embedpdf/core": "1.1.1", + "@embedpdf/plugin-render": "1.1.1", + "@embedpdf/plugin-scroll": "1.1.1", + "@embedpdf/plugin-viewport": "1.1.1", + "preact": "^10.26.4", + "react": ">=16.8.0", + "react-dom": ">=16.8.0", + "vue": ">=3.2.0" + } + }, "node_modules/@embedpdf/plugin-viewport": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@embedpdf/plugin-viewport/-/plugin-viewport-1.1.1.tgz", diff --git a/frontend/package.json b/frontend/package.json index 16bae6f9e..5aea80510 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,6 +13,7 @@ "@embedpdf/plugin-render": "^1.1.1", "@embedpdf/plugin-scroll": "^1.1.1", "@embedpdf/plugin-selection": "^1.1.1", + "@embedpdf/plugin-tiling": "^1.1.1", "@embedpdf/plugin-viewport": "^1.1.1", "@embedpdf/plugin-zoom": "^1.1.1", "@emotion/react": "^11.14.0", diff --git a/frontend/src/components/viewer/EmbedPdfViewer.tsx b/frontend/src/components/viewer/EmbedPdfViewer.tsx index 3dcd5cad4..1d26b5830 100644 --- a/frontend/src/components/viewer/EmbedPdfViewer.tsx +++ b/frontend/src/components/viewer/EmbedPdfViewer.tsx @@ -57,7 +57,14 @@ const EmbedPdfViewer = ({ }, [previewFile, fileWithUrl]); return ( - + {/* Close Button - Only show in preview mode */} {onClose && previewFile && ( + provider return ( -
+
@@ -147,13 +163,26 @@ export function LocalEmbedPDF({ file, url, colorScheme }: LocalEmbedPDFProps) { backgroundColor: actualColorScheme === 'dark' ? '#1a1b1e' : '#f1f3f5', height: '100%', width: '100%', + maxHeight: '100%', + maxWidth: '100%', overflow: 'auto', + position: 'relative', + flex: 1, + minHeight: 0, + minWidth: 0, + contain: 'strict', }} > ( - - + + {/* 1. Low-resolution base layer for immediate feedback */} + + + {/* 2. High-resolution tile layer on top */} + + + {/* 3. Selection layer for text interaction */} )}