@@ -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,13 +38,16 @@ 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 } =
4045 useHighlights ( {
4146 backrefs,
4247 } ) ;
4348
49+ console . log ( "pageOverride " , pageOverride ) ;
50+
4451 useEffect ( ( ) => {
4552 try {
4653 //TODO: this is not throwing for invalid page object (one that doesn't follow schema)
@@ -78,6 +85,38 @@ export const RendererContainer: React.FC<RendererContainerProps> = ({
7885 ? ( page . children [ index + 1 ] ?. metadata as any ) ?. origin ?. page_num
7986 : null ;
8087
88+ console . log ( "pageOverride " , pageOverride ) ;
89+ console . log ( "currentPageNum " , currentPageNum ) ;
90+ console . log (
91+ "pageOverride && currentPageNum === pageOverride.pageNum " ,
92+ pageOverride && currentPageNum === pageOverride . pageNum
93+ ) ;
94+ console . log ( "\n" . repeat ( 5 ) ) ;
95+
96+ // Check if this page should be replaced with override component
97+ if ( pageOverride && currentPageNum === pageOverride . pageNum ) {
98+ // Skip rendering blocks for this page and show override instead
99+ const isLastBlockOfPage =
100+ nextPageNum !== currentPageNum ||
101+ index === page . children . length - 1 ;
102+ if ( isLastBlockOfPage ) {
103+ return (
104+ < React . Fragment key = { `page-override-${ currentPageNum } ` } >
105+ { pageOverride . component }
106+ { /* Still show page delimiter after override */ }
107+ { ! components ?. page_delimiter && (
108+ < PageDelimiter pageNumber = { currentPageNum } />
109+ ) }
110+ { components ?. page_delimiter && (
111+ < components . page_delimiter pageNumber = { currentPageNum } />
112+ ) }
113+ </ React . Fragment >
114+ ) ;
115+ }
116+ // Skip other blocks of the same page
117+ return null ;
118+ }
119+
81120 // Show delimiter after the last block of each page
82121 const showPageDelimiter =
83122 currentPageNum &&
0 commit comments