@@ -362,27 +362,25 @@ class LateXWorkshopPdfViewer implements ILatexWorkshopPdfViewer {
362
362
this . addLogMessage ( 'Auto reload temporarily disabled.' )
363
363
return
364
364
}
365
- let pack = {
366
- scale : PDFViewerApplication . pdfViewer . currentScaleValue ,
367
- scrollMode : PDFViewerApplication . pdfViewer . scrollMode ,
368
- sidebarView : PDFViewerApplication . pdfSidebar . visibleView ,
369
- spreadMode : PDFViewerApplication . pdfViewer . spreadMode ,
370
- scrollTop : ( document . getElementById ( 'viewerContainer' ) as HTMLElement ) . scrollTop ,
371
- scrollLeft : ( document . getElementById ( 'viewerContainer' ) as HTMLElement ) . scrollLeft
372
- }
373
365
// Fail-safe. For unknown reasons, the pack may have null values #4076
374
- if ( pack . scale === null && this . prevPack ) {
375
- pack = this . prevPack
376
- } else {
377
- this . prevPack = pack
366
+ const pack = {
367
+ scale : PDFViewerApplication . pdfViewer . currentScaleValue ?? this . prevPack ?. scale ,
368
+ scrollMode : PDFViewerApplication . pdfViewer . scrollMode ?? this . prevPack ?. scrollMode ,
369
+ sidebarView : PDFViewerApplication . pdfSidebar . visibleView ?? this . prevPack ?. sidebarView ,
370
+ spreadMode : PDFViewerApplication . pdfViewer . spreadMode ?? this . prevPack ?. spreadMode ,
371
+ scrollTop : ( document . getElementById ( 'viewerContainer' ) as HTMLElement ) . scrollTop ?? this . prevPack ?. scrollTop ,
372
+ scrollLeft : ( document . getElementById ( 'viewerContainer' ) as HTMLElement ) . scrollLeft ?? this . prevPack ?. scrollLeft
378
373
}
374
+ this . prevPack = pack
379
375
380
376
// Note: without showPreviousViewOnLoad = false restoring the position after the refresh will fail if
381
377
// the user has clicked on any link in the past (pdf.js will automatically navigate to that link).
382
378
PDFViewerApplicationOptions . set ( 'showPreviousViewOnLoad' , false )
383
379
// Override the spread mode specified in PDF documents with the current one.
384
380
// https://github.com/James-Yu/LaTeX-Workshop/issues/1871
385
- PDFViewerApplicationOptions . set ( 'spreadModeOnLoad' , pack . spreadMode )
381
+ if ( pack . spreadMode ) {
382
+ PDFViewerApplicationOptions . set ( 'spreadModeOnLoad' , pack . spreadMode )
383
+ }
386
384
387
385
void PDFViewerApplication . open ( {
388
386
url : `${ utils . pdfFilePrefix } ${ this . encodedPdfFilePath } `
@@ -391,18 +389,26 @@ class LateXWorkshopPdfViewer implements ILatexWorkshopPdfViewer {
391
389
document . title = this . documentTitle
392
390
} )
393
391
this . onPagesInit ( ( ) => {
394
- PDFViewerApplication . pdfSidebar . switchView ( pack . sidebarView )
395
- PDFViewerApplication . pdfViewer . currentScaleValue = pack . scale
396
- PDFViewerApplication . pdfViewer . scrollMode = pack . scrollMode
397
- PDFViewerApplication . pdfViewer . spreadMode = pack . spreadMode ;
398
- ( document . getElementById ( 'viewerContainer' ) as HTMLElement ) . scrollTop = pack . scrollTop ;
399
- ( document . getElementById ( 'viewerContainer' ) as HTMLElement ) . scrollLeft = pack . scrollLeft
392
+ if ( pack . sidebarView ) {
393
+ PDFViewerApplication . pdfSidebar . switchView ( pack . sidebarView )
394
+ }
395
+ PDFViewerApplication . pdfViewer . currentScaleValue = pack . scale ?? PDFViewerApplication . pdfViewer . currentScaleValue
396
+ PDFViewerApplication . pdfViewer . scrollMode = pack . scrollMode ?? PDFViewerApplication . pdfViewer . scrollMode
397
+ PDFViewerApplication . pdfViewer . spreadMode = pack . spreadMode ?? PDFViewerApplication . pdfViewer . spreadMode
398
+ const viewerContainer : HTMLElement | null = document . getElementById ( 'viewerContainer' )
399
+ if ( viewerContainer ) {
400
+ viewerContainer . scrollTop = pack . scrollTop ?? viewerContainer . scrollTop ?? 0
401
+ viewerContainer . scrollLeft = pack . scrollLeft ?? viewerContainer . scrollLeft ?? 0
402
+ }
400
403
} , { once : true } )
401
404
// The height of each page can change after a `pagesinit` event.
402
405
// We have to set scrollTop on a `pagesloaded` event for that case.
403
406
this . onPagesLoaded ( ( ) => {
404
- ( document . getElementById ( 'viewerContainer' ) as HTMLElement ) . scrollTop = pack . scrollTop ;
405
- ( document . getElementById ( 'viewerContainer' ) as HTMLElement ) . scrollLeft = pack . scrollLeft
407
+ const viewerContainer : HTMLElement | null = document . getElementById ( 'viewerContainer' )
408
+ if ( viewerContainer ) {
409
+ viewerContainer . scrollTop = pack . scrollTop ?? viewerContainer . scrollTop ?? 0
410
+ viewerContainer . scrollLeft = pack . scrollLeft ?? viewerContainer . scrollLeft ?? 0
411
+ }
406
412
} , { once : true } )
407
413
this . onPagesLoaded ( ( ) => {
408
414
this . send ( { type :'loaded' , pdfFileUri : this . pdfFileUri } )
@@ -422,12 +428,12 @@ class LateXWorkshopPdfViewer implements ILatexWorkshopPdfViewer {
422
428
const { brightness, grayscale, hueRotate, invert, sepia } = params . invertMode
423
429
const filter = `invert(${ invert * 100 } %) hue-rotate(${ hueRotate } deg) grayscale(${ grayscale } ) sepia(${ sepia } ) brightness(${ brightness } )`
424
430
if ( this . isPrefersColorSchemeDark ( params . codeColorTheme ) ) {
425
- ( document . querySelector ( '#viewerContainer' ) as HTMLHtmlElement ) . style . filter = filter ;
426
- ( document . querySelector ( '#thumbnailView' ) as HTMLHtmlElement ) . style . filter = filter ;
427
- ( document . querySelector ( '#sidebarContent' ) as HTMLHtmlElement ) . style . background = 'var(--body-bg-color)'
431
+ ( document . querySelector ( '#viewerContainer' ) as HTMLHtmlElement ) . style . filter = filter
432
+ ; ( document . querySelector ( '#thumbnailView' ) as HTMLHtmlElement ) . style . filter = filter
433
+ ; ( document . querySelector ( '#sidebarContent' ) as HTMLHtmlElement ) . style . background = 'var(--body-bg-color)'
428
434
} else {
429
- ( document . querySelector ( 'html' ) as HTMLHtmlElement ) . style . filter = filter ;
430
- ( document . querySelector ( 'html' ) as HTMLHtmlElement ) . style . background = 'white'
435
+ ( document . querySelector ( 'html' ) as HTMLHtmlElement ) . style . filter = filter
436
+ ; ( document . querySelector ( 'html' ) as HTMLHtmlElement ) . style . background = 'white'
431
437
}
432
438
}
433
439
const css = document . styleSheets [ document . styleSheets . length - 1 ]
@@ -627,9 +633,9 @@ class LateXWorkshopPdfViewer implements ILatexWorkshopPdfViewer {
627
633
if ( evt . key === 'Backspace' && evt . shiftKey && ( evt . target as HTMLElement ) . nodeName !== 'INPUT' ) {
628
634
this . viewerHistory . forward ( )
629
635
}
630
- } ) ;
636
+ } )
631
637
632
- ( document . getElementById ( 'outerContainer' ) as HTMLElement ) . onmousemove = ( e ) => {
638
+ ; ( document . getElementById ( 'outerContainer' ) as HTMLElement ) . onmousemove = ( e ) => {
633
639
if ( e . clientY <= 64 ) {
634
640
this . showToolbar ( true )
635
641
}
0 commit comments