@@ -272,8 +272,6 @@ class PDFViewer {
272272
273273 #hiddenCopyElement = null ;
274274
275- #interruptCopyCondition = false ;
276-
277275 #previousContainerHeight = 0 ;
278276
279277 #resizeObserver = new ResizeObserver ( this . #resizeObserverCallback. bind ( this ) ) ;
@@ -771,15 +769,15 @@ class PDFViewer {
771769 ac . abort ( ) ; // Remove the "visibilitychange" listener immediately.
772770 }
773771
774- async getAllText ( ) {
772+ async getAllText ( interruptSignal = null ) {
775773 const texts = [ ] ;
776774 const buffer = [ ] ;
777775 for (
778776 let pageNum = 1 , pagesCount = this . pdfDocument . numPages ;
779777 pageNum <= pagesCount ;
780778 ++ pageNum
781779 ) {
782- if ( this . #interruptCopyCondition ) {
780+ if ( interruptSignal ?. aborted ) {
783781 return null ;
784782 }
785783 buffer . length = 0 ;
@@ -833,14 +831,19 @@ class PDFViewer {
833831 const { classList } = this . viewer ;
834832 classList . add ( "copyAll" ) ;
835833
836- const ac = new AbortController ( ) ;
834+ const keydownAC = new AbortController ( ) ,
835+ interruptAC = new AbortController ( ) ;
837836 window . addEventListener (
838837 "keydown" ,
839- ev => ( this . #interruptCopyCondition = ev . key === "Escape" ) ,
840- { signal : ac . signal }
838+ ev => {
839+ if ( ev . key === "Escape" ) {
840+ interruptAC . abort ( ) ;
841+ }
842+ } ,
843+ { signal : keydownAC . signal }
841844 ) ;
842845
843- this . getAllText ( )
846+ this . getAllText ( interruptAC . signal )
844847 . then ( async text => {
845848 if ( text !== null ) {
846849 await navigator . clipboard . writeText ( text ) ;
@@ -853,8 +856,7 @@ class PDFViewer {
853856 } )
854857 . finally ( ( ) => {
855858 this . #getAllTextInProgress = false ;
856- this . #interruptCopyCondition = false ;
857- ac . abort ( ) ;
859+ keydownAC . abort ( ) ;
858860 classList . remove ( "copyAll" ) ;
859861 } ) ;
860862
0 commit comments