Stirling-PDF/frontend/src/components/viewer/SpreadControlsExporter.tsx

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

42 lines
1.6 KiB
TypeScript
Raw Normal View History

2025-09-11 23:52:38 +01:00
import { useEffect } from 'react';
import { useSpread, SpreadMode } from '@embedpdf/plugin-spread/react';
/**
* Component that runs inside EmbedPDF context and exports spread controls globally
*/
export function SpreadControlsExporter() {
const { provides: spread, spreadMode } = useSpread();
useEffect(() => {
if (spread) {
// Export spread controls to global window for toolbar access
(window as any).embedPdfSpread = {
setSpreadMode: (mode: SpreadMode) => {
console.log('EmbedPDF: Setting spread mode to:', mode);
spread.setSpreadMode(mode);
},
getSpreadMode: () => spread.getSpreadMode(),
toggleSpreadMode: () => {
// Toggle between None and Odd (most common dual-page mode)
const newMode = spreadMode === SpreadMode.None ? SpreadMode.Odd : SpreadMode.None;
console.log('EmbedPDF: Toggling spread mode from', spreadMode, 'to', newMode);
spread.setSpreadMode(newMode);
},
currentSpreadMode: spreadMode,
isDualPage: spreadMode !== SpreadMode.None,
SpreadMode: SpreadMode, // Export enum for reference
};
console.log('EmbedPDF spread controls exported to window.embedPdfSpread', {
currentSpreadMode: spreadMode,
isDualPage: spreadMode !== SpreadMode.None,
spreadAPI: spread,
availableMethods: Object.keys(spread)
});
} else {
console.warn('EmbedPDF spread API not available yet');
}
}, [spread, spreadMode]);
return null; // This component doesn't render anything
}