@@ -4,18 +4,20 @@ import { subtractBorder } from "../../../utils/subtractBorder";
44import { type IPdfContext , PdfContext } from "../../PdfProvider/PdfProvider" ;
55import { type ISelectionContext , SelectionContext } from "../../SelectionProvider/SelectionProvider" ;
66import { Highlighter , type IHighlighterColor } from "../Highlighter/Highlighter" ;
7+ import { useIsCurrentPageRendered } from "./useIsCurrentPageRendered" ;
78
89const SELECTION_COLOR : IHighlighterColor = { r : 0 , g : 100 , b : 200 } ;
910const SELECTION_OPACITY = 0.3 ;
1011const SCROLL_TO_OFFSET_PX : number = 200 ;
1112
1213export function SelectionRenderer ( ) {
13- const { viewer, textLayerRenderedRef } = useContext ( PdfContext ) as IPdfContext ;
14+ const { viewer } = useContext ( PdfContext ) as IPdfContext ;
1415 const { selectedBlocks, pageNumber, lastScrolledTo, setSelectionString } = useContext (
1516 SelectionContext ,
1617 ) as ISelectionContext ;
1718 const { pageOffsets } = useContext ( PdfContext ) as IPdfContext ;
1819 const [ retryScrolling , setRetryScrolling ] = useState ( 0 ) ;
20+ const { isCurrentPageTextLayerRendered } = useIsCurrentPageRendered ( ) ;
1921
2022 useEffect ( ( ) => {
2123 // not ready yet
@@ -59,8 +61,9 @@ export function SelectionRenderer() {
5961 } , [ selectedBlocks , setSelectionString ] ) ;
6062
6163 useEffect ( ( ) => {
62- if ( ! viewer || ! selectedBlocks . length || pageNumber === null || ! textLayerRenderedRef . current . includes ( pageNumber ) )
64+ if ( ! viewer || ! selectedBlocks . length || pageNumber === null || ! isCurrentPageTextLayerRendered ) {
6365 return ;
66+ }
6467
6568 const pageElement = viewer . getPageView ( pageNumber - 1 ) ?. div ;
6669 const textLayerElement = viewer . getPageView ( pageNumber - 1 ) ?. textLayer ?. div ;
@@ -105,7 +108,7 @@ export function SelectionRenderer() {
105108 }
106109
107110 setSelectionString ( document . getSelection ( ) ?. toString ( ) || "" ) ;
108- } , [ selectedBlocks , pageNumber , viewer , textLayerRenderedRef , setSelectionString ] ) ;
111+ } , [ selectedBlocks , pageNumber , viewer , isCurrentPageTextLayerRendered , setSelectionString ] ) ;
109112
110113 const pageOffset = pageNumber ? pageOffsets . current [ pageNumber ] : null ;
111114
0 commit comments