From 9f50b0af372bf41d70f1a6b5ce3c9b09d4facc79 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 2 Jan 2023 14:00:16 +0100 Subject: [PATCH 1/3] Enable the `defaultZoomDelay` option/preference unconditionally (PR 15812 follow-up) This option/preference was disabled in GENERIC builds, see PR 15812, to avoid landing it *just before* a new release. Hence it should be fine to enable this now. --- web/app_options.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/web/app_options.js b/web/app_options.js index 4d0a479d1..d0cafe242 100644 --- a/web/app_options.js +++ b/web/app_options.js @@ -70,8 +70,7 @@ const defaultOptions = { }, defaultZoomDelay: { /** @type {number} */ - value: - typeof PDFJSDev === "undefined" || !PDFJSDev.test("GENERIC") ? 400 : -1, + value: 400, kind: OptionKind.VIEWER + OptionKind.PREFERENCE, }, defaultZoomValue: { From 0860a5b16858775774019487ca29f42cac7f5f92 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 2 Jan 2023 14:05:33 +0100 Subject: [PATCH 2/3] Ensure that a document is loaded in `PDFViewer.{increaseScale, decreaseScale}` (PR 14053 follow-up) This was always "wrong", since these methods (just like all the zoom-related ones) don't make sense unless there's an active document. --- web/pdf_viewer.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index fc54bc847..01544850e 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -2001,6 +2001,9 @@ class PDFViewer { * @param {Object|null} [options] */ increaseScale(steps = 1, options = null) { + if (!this.pdfDocument) { + return; + } let newScale = this._currentScale; do { newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2); @@ -2019,6 +2022,9 @@ class PDFViewer { * @param {Object|null} [options] */ decreaseScale(steps = 1, options = null) { + if (!this.pdfDocument) { + return; + } let newScale = this._currentScale; do { newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2); From 9089e75cce1ed4c3cc6e9d661096e4ee52141ba8 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 2 Jan 2023 14:10:36 +0100 Subject: [PATCH 3/3] Validate the options before adding the `ResizeObserver` in the `PDFViewer` constructor (PR 15830 follow-up) In the GENERIC viewer, it doesn't make sense to register the `ResizeObserver` if the `container`/`viewer` options are not valid. --- web/pdf_viewer.js | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index 01544850e..788b78dd4 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -230,20 +230,13 @@ class PDFViewer { ); } this.container = options.container; - this.#resizeObserver.observe(this.container); - this.viewer = options.viewer || options.container.firstElementChild; if ( typeof PDFJSDev === "undefined" || PDFJSDev.test("!PRODUCTION || GENERIC") ) { - if ( - !( - this.container?.tagName.toUpperCase() === "DIV" && - this.viewer?.tagName.toUpperCase() === "DIV" - ) - ) { + if (this.container?.tagName !== "DIV" || this.viewer?.tagName !== "DIV") { throw new Error("Invalid `container` and/or `viewer` option."); } @@ -254,6 +247,8 @@ class PDFViewer { throw new Error("The `container` must be absolutely positioned."); } } + this.#resizeObserver.observe(this.container); + this.eventBus = options.eventBus; this.linkService = options.linkService || new SimpleLinkService(); this.downloadManager = options.downloadManager || null;