@@ -61,21 +61,24 @@ const Controls = memo(function Controls({documentId, toggleFullscreen, isFullscr
6161
6262 const { provides : zoomProv , state : zoomState } = useZoom ( documentId ) ;
6363 const { provides : scrollProv , state : scrollState } = useScroll ( documentId ) ;
64- const [ pageNo , setPageNo ] = useState ( "1 " ) ;
64+ const [ pageNo , setPageNo ] = useState ( "" ) ;
6565
6666 useEffect ( ( ) => {
6767 if ( ! scrollProv ) return ;
68- const unsub = scrollProv . onPageChange ( ( ) =>
69- setPageNo ( String ( scrollProv . getCurrentPage ( ) ) )
70- ) ;
68+ const unsub = scrollProv . onPageChange ( ( ) => {
69+ const current = scrollProv . getCurrentPage ( ) ;
70+ setPageNo ( String ( current ) ) ;
71+ } ) ;
72+ const current = scrollProv . getCurrentPage ( ) ;
73+ setPageNo ( String ( current ) ) ;
7174 return ( ) => unsub ( ) ;
7275 } , [ scrollProv ] ) ;
7376
7477 const pageChange = useCallback (
7578 ( e : React . KeyboardEvent < HTMLInputElement > ) => {
7679 if ( e . key !== "Enter" ) return ;
7780 const page = parseInt ( pageNo , 10 ) ;
78- if ( ! isNaN ( page ) && page >= 1 && page <= ( scrollState ? .totalPages ?? 1 ) ) {
81+ if ( ! isNaN ( page ) && scrollState ?. totalPages && page >= 1 && page <= scrollState . totalPages ) {
7982 scrollProv ?. scrollToPage ( { pageNumber : page , behavior : "smooth" } ) ;
8083 }
8184 } ,
@@ -99,13 +102,20 @@ const Controls = memo(function Controls({documentId, toggleFullscreen, isFullscr
99102 < div className = { ( ! isFullscreen && ! isMobile ) ? "flex flex-col items-center gap-2" : "flex flex-row items-center gap-2" } >
100103 < input
101104 type = "text"
102- value = { pageNo }
105+ value = { totalPages ? pageNo : "" }
103106 onChange = { ( e ) => setPageNo ( e . target . value ) }
104107 onKeyDown = { pageChange }
105- onFocus = { ( ) => setPageNo ( "" ) }
108+ onFocus = { ( ) => {
109+ if ( totalPages ) setPageNo ( "" ) ;
110+ } }
111+ onBlur = { ( ) => {
112+ if ( ! pageNo && scrollProv ) {
113+ setPageNo ( String ( scrollProv . getCurrentPage ( ) ) ) ;
114+ }
115+ } }
106116 className = "h-9 w-14 rounded border bg-[#e7e9ff] p-1 text-center text-sm [appearance:textfield] dark:bg-[#1f1f2a] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none"
107117 />
108- < span className = "text-xs font-medium text-white" > of { totalPages ?? 1 } </ span >
118+ < span className = "text-xs font-medium text-white" > of { totalPages ?? "..." } </ span >
109119 </ div >
110120 )
111121
0 commit comments