diff --git a/examples/vite_basic/src/App.tsx b/examples/vite_basic/src/App.tsx index 4b460b7..c1bc0bd 100644 --- a/examples/vite_basic/src/App.tsx +++ b/examples/vite_basic/src/App.tsx @@ -18,11 +18,10 @@ const App = () => { handleFileChange, } = useFileLoader(AVAILABLE_FILES[0]); - console.log("test page ", testPage); - - if (testPage) { - testPage.children = [undefined]; - } + // uncomment to trigger error in renderer + // if (testPage) { + // testPage.children = [undefined]; + // } // Get backrefs for the currently selected file const currentBackrefs = selectedFile?.backrefs || []; @@ -64,8 +63,6 @@ const App = () => { ); } - console.log("showBackrefs ", currentBackrefs); - return (
{ return ; }, }} + pageOverride={{ + pageNum: 1, + component:

hehe

, + }} /> )}
diff --git a/typescript/src/renderer/JsonDocRenderer.tsx b/typescript/src/renderer/JsonDocRenderer.tsx index e4c4238..723861a 100644 --- a/typescript/src/renderer/JsonDocRenderer.tsx +++ b/typescript/src/renderer/JsonDocRenderer.tsx @@ -22,6 +22,10 @@ interface JsonDocRendererProps { viewJson?: boolean; backrefs?: Backref[]; onError?: (error: Error, errorInfo: React.ErrorInfo) => void; + pageOverride?: { + pageNum: number; + component: React.ReactNode; + }; } export const JsonDocRenderer = ({ @@ -34,8 +38,8 @@ export const JsonDocRenderer = ({ viewJson = false, backrefs = [], onError, + pageOverride, }: JsonDocRendererProps) => { - console.log("theme: ", theme); return (
diff --git a/typescript/src/renderer/components/RendererContainer.tsx b/typescript/src/renderer/components/RendererContainer.tsx index cd5e654..e42bc46 100644 --- a/typescript/src/renderer/components/RendererContainer.tsx +++ b/typescript/src/renderer/components/RendererContainer.tsx @@ -24,6 +24,10 @@ interface RendererContainerProps { resolveImageUrl?: (url: string) => Promise; viewJson?: boolean; backrefs?: Backref[]; + pageOverride?: { + pageNum: number; + component: React.ReactNode; + }; } export const RendererContainer: React.FC = ({ @@ -34,6 +38,7 @@ export const RendererContainer: React.FC = ({ resolveImageUrl, viewJson = false, backrefs = [], + pageOverride, }) => { // Use the modular hooks for highlight management const { highlightCount, currentActiveIndex, navigateToHighlight } = @@ -78,6 +83,30 @@ export const RendererContainer: React.FC = ({ ? (page.children[index + 1]?.metadata as any)?.origin?.page_num : null; + // Check if this page should be replaced with override component + if (pageOverride && currentPageNum === pageOverride.pageNum) { + // Skip rendering blocks for this page and show override instead + const isLastBlockOfPage = + nextPageNum !== currentPageNum || + index === page.children.length - 1; + if (isLastBlockOfPage) { + return ( + + {pageOverride.component} + {/* Still show page delimiter after override */} + {!components?.page_delimiter && ( + + )} + {components?.page_delimiter && ( + + )} + + ); + } + // Skip other blocks of the same page + return null; + } + // Show delimiter after the last block of each page const showPageDelimiter = currentPageNum &&