Feature/v2/embed pdf (#4437)

Switched to Embed pdf for viewer

---------

Co-authored-by: Copilot <[email protected]>
Co-authored-by: James Brunton <[email protected]>
This commit is contained in:
Reece Browne
2025-09-19 15:35:51 +01:00
committed by GitHub
co-authored by Copilot James Brunton
parent f29bbfd15b
commit 065bb46c1e
27 changed files with 2730 additions and 728 deletions
@@ -0,0 +1,44 @@
import { useEffect, useRef } from 'react';
import { useZoom } from '@embedpdf/plugin-zoom/react';
import { useViewer } from '../../contexts/ViewerContext';
/**
* Component that runs inside EmbedPDF context and manages zoom state locally
*/
export function ZoomAPIBridge() {
const { provides: zoom, state: zoomState } = useZoom();
const { registerBridge, triggerImmediateZoomUpdate } = useViewer();
const hasSetInitialZoom = useRef(false);
// Set initial zoom once when plugin is ready
useEffect(() => {
if (zoom && !hasSetInitialZoom.current) {
hasSetInitialZoom.current = true;
setTimeout(() => {
zoom.requestZoom(1.4);
}, 50);
}
}, [zoom]);
useEffect(() => {
if (zoom && zoomState) {
// Update local state
const currentZoomLevel = zoomState.currentZoomLevel || 1.4;
const newState = {
currentZoom: currentZoomLevel,
zoomPercent: Math.round(currentZoomLevel * 100),
};
// Trigger immediate update for responsive UI
triggerImmediateZoomUpdate(newState.zoomPercent);
// Register this bridge with ViewerContext
registerBridge('zoom', {
state: newState,
api: zoom
});
}
}, [zoom, zoomState]);
return null;
}