@@ -24,6 +24,10 @@ interface RendererContainerProps {
2424 resolveImageUrl ?: ( url : string ) => Promise < string > ;
2525 viewJson ?: boolean ;
2626 backrefs ?: Backref [ ] ;
27+ pageOverride ?: {
28+ pageNum : number ;
29+ component : React . ReactNode ;
30+ } ;
2731}
2832
2933export const RendererContainer : React . FC < RendererContainerProps > = ( {
@@ -34,6 +38,7 @@ export const RendererContainer: React.FC<RendererContainerProps> = ({
3438 resolveImageUrl,
3539 viewJson = false ,
3640 backrefs = [ ] ,
41+ pageOverride,
3742} ) => {
3843 // Use the modular hooks for highlight management
3944 const { highlightCount, currentActiveIndex, navigateToHighlight } =
@@ -78,6 +83,30 @@ export const RendererContainer: React.FC<RendererContainerProps> = ({
7883 ? ( page . children [ index + 1 ] ?. metadata as any ) ?. origin ?. page_num
7984 : null ;
8085
86+ // Check if this page should be replaced with override component
87+ if ( pageOverride && currentPageNum === pageOverride . pageNum ) {
88+ // Skip rendering blocks for this page and show override instead
89+ const isLastBlockOfPage =
90+ nextPageNum !== currentPageNum ||
91+ index === page . children . length - 1 ;
92+ if ( isLastBlockOfPage ) {
93+ return (
94+ < React . Fragment key = { `page-override-${ currentPageNum } ` } >
95+ { pageOverride . component }
96+ { /* Still show page delimiter after override */ }
97+ { ! components ?. page_delimiter && (
98+ < PageDelimiter pageNumber = { currentPageNum } />
99+ ) }
100+ { components ?. page_delimiter && (
101+ < components . page_delimiter pageNumber = { currentPageNum } />
102+ ) }
103+ </ React . Fragment >
104+ ) ;
105+ }
106+ // Skip other blocks of the same page
107+ return null ;
108+ }
109+
81110 // Show delimiter after the last block of each page
82111 const showPageDelimiter =
83112 currentPageNum &&
0 commit comments