mirror of
https://github.com/arsvendg/Stirling-PDF.git
synced 2026-07-15 11:00:47 +02:00
Updated embed PDF Added Autozoom Added file page size to metadata for use in calculations for autozoom, will come in handy elsewhere. --------- Co-authored-by: James Brunton <[email protected]>
43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import { useEffect } from 'react';
|
|
import { useSpread, SpreadMode } from '@embedpdf/plugin-spread/react';
|
|
import { useViewer } from '@app/contexts/ViewerContext';
|
|
|
|
/**
|
|
* Component that runs inside EmbedPDF context and updates spread state in ViewerContext
|
|
*/
|
|
export function SpreadAPIBridge() {
|
|
const { provides: spread, spreadMode } = useSpread();
|
|
const { registerBridge, triggerImmediateSpreadUpdate } = useViewer();
|
|
|
|
useEffect(() => {
|
|
if (!spread) {
|
|
return;
|
|
}
|
|
|
|
const newState = {
|
|
spreadMode,
|
|
isDualPage: spreadMode !== SpreadMode.None,
|
|
};
|
|
|
|
registerBridge('spread', {
|
|
state: newState,
|
|
api: {
|
|
setSpreadMode: (mode: SpreadMode) => {
|
|
spread.setSpreadMode(mode);
|
|
},
|
|
getSpreadMode: () => spread.getSpreadMode(),
|
|
toggleSpreadMode: () => {
|
|
const current = spread.getSpreadMode();
|
|
const nextMode = current === SpreadMode.None ? SpreadMode.Odd : SpreadMode.None;
|
|
spread.setSpreadMode(nextMode);
|
|
},
|
|
SpreadMode,
|
|
},
|
|
});
|
|
|
|
triggerImmediateSpreadUpdate(spreadMode);
|
|
}, [spread, spreadMode, registerBridge, triggerImmediateSpreadUpdate]);
|
|
|
|
return null;
|
|
}
|