diff --git a/toolkit/components/pdfjs/content/build/pdf.js b/toolkit/components/pdfjs/content/build/pdf.js --- a/toolkit/components/pdfjs/content/build/pdf.js +++ b/toolkit/components/pdfjs/content/build/pdf.js @@ -1056,11 +1056,11 @@ source.contentDispositionFilename = pdfDataRangeTransport.contentDispositionFilename; } const transfers = source.data ? [source.data.buffer] : null; const workerId = await worker.messageHandler.sendWithPromise("GetDocRequest", { docId, - apiVersion: '3.3.97', + apiVersion: '3.3.107', data: source.data, password: source.password, disableAutoFetch: source.disableAutoFetch, rangeChunkSize: source.rangeChunkSize, length: source.length, @@ -2655,13 +2655,13 @@ this.callback(); } } } } -const version = '3.3.97'; +const version = '3.3.107'; exports.version = version; -const build = 'edfdb693e'; +const build = '075cc8d8d'; exports.build = build; /***/ }), /* 3 */ /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { @@ -13056,13 +13056,13 @@ var _tools = __w_pdfjs_require__(5); var _annotation_layer = __w_pdfjs_require__(26); var _worker_options = __w_pdfjs_require__(14); var _svg = __w_pdfjs_require__(29); var _xfa_layer = __w_pdfjs_require__(28); -const pdfjsVersion = '3.3.97'; -const pdfjsBuild = 'edfdb693e'; +const pdfjsVersion = '3.3.107'; +const pdfjsBuild = '075cc8d8d'; })(); /******/ return __webpack_exports__; /******/ })() ; }); \ No newline at end of file diff --git a/toolkit/components/pdfjs/content/build/pdf.scripting.js b/toolkit/components/pdfjs/content/build/pdf.scripting.js --- a/toolkit/components/pdfjs/content/build/pdf.scripting.js +++ b/toolkit/components/pdfjs/content/build/pdf.scripting.js @@ -580,24 +580,34 @@ if (value === "") { this._value = ""; } else if (typeof value === "string") { switch (this._fieldType) { case _common.FieldType.none: - this._value = !isNaN(value) ? parseFloat(value) : value; - break; + { + this._originalValue = value; + const _value = value.trim().replace(",", "."); + this._value = !isNaN(_value) ? parseFloat(_value) : value; + break; + } case _common.FieldType.number: case _common.FieldType.percent: - const number = parseFloat(value); - this._value = !isNaN(number) ? number : 0; - break; + { + const _value = value.trim().replace(",", "."); + const number = parseFloat(_value); + this._value = !isNaN(number) ? number : 0; + break; + } default: this._value = value; } } else { this._value = value; } } + _getValue() { + return this._originalValue ?? this.value; + } _setChoiceValue(value) { if (this.multipleSelection) { if (!Array.isArray(value)) { value = [value]; } @@ -2391,11 +2401,12 @@ runValidation(source, event) { const didValidateRun = this.runActions(source, source, event, "Validate"); if (event.rc) { source.obj.value = event.value; this.runCalculate(source, event); - const savedValue = event.value = source.obj.value; + const savedValue = source.obj._getValue(); + event.value = source.obj.value; let formattedValue = null; if (this.runActions(source, source, event, "Format")) { formattedValue = event.value?.toString?.(); } source.obj._send({ @@ -3655,11 +3666,11 @@ obj[prop] = value; if (!this.nosend.has(prop) && obj._send && obj._id !== null && typeof old !== "function") { const data = { id: obj._id }; - data[prop] = obj[prop]; + data[prop] = prop === "value" ? obj._getValue() : obj[prop]; if (!obj._siblings) { obj._send(data); } else { data.siblings = obj._siblings; obj._send(data); @@ -4245,13 +4256,13 @@ get: function () { return _initialization.initSandbox; } })); var _initialization = __w_pdfjs_require__(1); -const pdfjsVersion = '3.3.97'; -const pdfjsBuild = 'edfdb693e'; +const pdfjsVersion = '3.3.107'; +const pdfjsBuild = '075cc8d8d'; })(); /******/ return __webpack_exports__; /******/ })() ; }); \ No newline at end of file diff --git a/toolkit/components/pdfjs/content/build/pdf.worker.js b/toolkit/components/pdfjs/content/build/pdf.worker.js --- a/toolkit/components/pdfjs/content/build/pdf.worker.js +++ b/toolkit/components/pdfjs/content/build/pdf.worker.js @@ -99,11 +99,11 @@ const verbosity = (0, _util.getVerbosityLevel)(); const { docId, apiVersion } = docParams; - const workerVersion = '3.3.97'; + const workerVersion = '3.3.107'; if (apiVersion !== workerVersion) { throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version "${workerVersion}".`); } const workerHandlerName = docId + "_worker"; let handler = new _message_handler.MessageHandler(workerHandlerName, docId, port); @@ -52415,13 +52415,13 @@ get: function () { return _worker.WorkerMessageHandler; } })); var _worker = __w_pdfjs_require__(1); -const pdfjsVersion = '3.3.97'; -const pdfjsBuild = 'edfdb693e'; +const pdfjsVersion = '3.3.107'; +const pdfjsBuild = '075cc8d8d'; })(); /******/ return __webpack_exports__; /******/ })() ; }); \ No newline at end of file diff --git a/toolkit/components/pdfjs/content/web/viewer-geckoview.js b/toolkit/components/pdfjs/content/web/viewer-geckoview.js --- a/toolkit/components/pdfjs/content/web/viewer-geckoview.js +++ b/toolkit/components/pdfjs/content/web/viewer-geckoview.js @@ -396,18 +396,17 @@ delta = -delta; } return delta; } function normalizeWheelEventDelta(evt) { + const deltaMode = evt.deltaMode; let delta = normalizeWheelEventDirection(evt); - const MOUSE_DOM_DELTA_PIXEL_MODE = 0; - const MOUSE_DOM_DELTA_LINE_MODE = 1; const MOUSE_PIXELS_PER_LINE = 30; const MOUSE_LINES_PER_PAGE = 30; - if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) { + if (deltaMode === WheelEvent.DOM_DELTA_PIXEL) { delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE; - } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) { + } else if (deltaMode === WheelEvent.DOM_DELTA_LINE) { delta /= MOUSE_LINES_PER_PAGE; } return delta; } function isValidRotation(angle) { @@ -433,13 +432,15 @@ } class ProgressBar { #classList = null; #disableAutoFetchTimeout = null; #percent = 0; + #style = null; #visible = true; constructor(bar) { this.#classList = bar.classList; + this.#style = bar.style; } get percent() { return this.#percent; } set percent(val) { @@ -447,20 +448,20 @@ if (isNaN(val)) { this.#classList.add("indeterminate"); return; } this.#classList.remove("indeterminate"); - docStyle.setProperty("--progressBar-percent", `${this.#percent}%`); + this.#style.setProperty("--progressBar-percent", `${this.#percent}%`); } setWidth(viewer) { if (!viewer) { return; } const container = viewer.parentNode; const scrollbarWidth = container.offsetWidth - viewer.offsetWidth; if (scrollbarWidth > 0) { - docStyle.setProperty("--progressBar-end-offset", `${scrollbarWidth}px`); + this.#style.setProperty("--progressBar-end-offset", `${scrollbarWidth}px`); } } setDisableAutoFetch(delay = 5000) { if (isNaN(this.#percent)) { return; @@ -3016,29 +3017,29 @@ supportsPinchToZoom } = PDFViewerApplication; if (pdfViewer.isInPresentationMode) { return; } - const isPinchToZoom = evt.ctrlKey && !PDFViewerApplication._isCtrlKeyDown; + const deltaMode = evt.deltaMode; + let scaleFactor = Math.exp(-evt.deltaY / 100); + const isPinchToZoom = evt.ctrlKey && !PDFViewerApplication._isCtrlKeyDown && deltaMode === WheelEvent.DOM_DELTA_PIXEL && evt.deltaX === 0 && Math.abs(scaleFactor - 1) < 0.05 && evt.deltaZ === 0; if (isPinchToZoom || evt.ctrlKey && supportedMouseWheelZoomModifierKeys.ctrlKey || evt.metaKey && supportedMouseWheelZoomModifierKeys.metaKey) { evt.preventDefault(); if (zoomDisabledTimeout || document.visibilityState === "hidden") { return; } const previousScale = pdfViewer.currentScale; if (isPinchToZoom && supportsPinchToZoom) { - let scaleFactor = Math.exp(-evt.deltaY / 100); scaleFactor = PDFViewerApplication._accumulateFactor(previousScale, scaleFactor, "_wheelUnusedFactor"); if (scaleFactor < 1) { PDFViewerApplication.zoomOut(null, scaleFactor); } else if (scaleFactor > 1) { PDFViewerApplication.zoomIn(null, scaleFactor); } else { return; } } else { - const deltaMode = evt.deltaMode; const delta = (0, _ui_utils.normalizeWheelEventDirection)(evt); let ticks = 0; if (deltaMode === WheelEvent.DOM_DELTA_LINE || deltaMode === WheelEvent.DOM_DELTA_PAGE) { if (Math.abs(delta) >= 1) { ticks = Math.sign(delta); @@ -8178,11 +8179,11 @@ #resizeObserver = new ResizeObserver(this.#resizeObserverCallback.bind(this)); #scrollModePageState = null; #onVisibilityChange = null; #scaleTimeoutId = null; constructor(options) { - const viewerVersion = '3.3.97'; + const viewerVersion = '3.3.107'; if (_pdfjsLib.version !== viewerVersion) { throw new Error(`The API version "${_pdfjsLib.version}" does not match the Viewer version "${viewerVersion}".`); } this.container = options.container; this.viewer = options.viewer || options.container.firstElementChild; @@ -12613,12 +12614,12 @@ })); var _ui_utils = __webpack_require__(1); var _app_options = __webpack_require__(2); var _pdf_link_service = __webpack_require__(3); var _app = __webpack_require__(4); -const pdfjsVersion = '3.3.97'; -const pdfjsBuild = 'edfdb693e'; +const pdfjsVersion = '3.3.107'; +const pdfjsBuild = '075cc8d8d'; const AppConstants = null; exports.PDFViewerApplicationConstants = AppConstants; window.PDFViewerApplication = _app.PDFViewerApplication; window.PDFViewerApplicationConstants = AppConstants; window.PDFViewerApplicationOptions = _app_options.AppOptions; diff --git a/toolkit/components/pdfjs/content/web/viewer.css b/toolkit/components/pdfjs/content/web/viewer.css --- a/toolkit/components/pdfjs/content/web/viewer.css +++ b/toolkit/components/pdfjs/content/web/viewer.css @@ -1074,12 +1074,10 @@ --toolbar-icon-opacity: 0.7; --doorhanger-icon-opacity: 0.9; --main-color: rgba(12, 12, 13, 1); --body-bg-color: rgba(212, 212, 215, 1); - --progressBar-percent: 0%; - --progressBar-end-offset: 0; --progressBar-color: rgba(10, 132, 255, 1); --progressBar-bg-color: rgba(221, 221, 222, 1); --progressBar-blend-color: rgba(116, 177, 239, 1); --scrollbar-color: auto; --scrollbar-bg-color: auto; @@ -1414,10 +1412,15 @@ #toolbarViewer { height: 32px; } #loadingBar { + /* Define these variables here, and not in :root, to avoid reflowing the + entire viewer when updating progress (see issue 15958). */ + --progressBar-percent: 0%; + --progressBar-end-offset: 0; + position: absolute; inset-inline: 0 var(--progressBar-end-offset); height: 4px; background-color: var(--progressBar-bg-color); border-bottom: 1px solid var(--toolbar-border-color); diff --git a/toolkit/components/pdfjs/content/web/viewer.js b/toolkit/components/pdfjs/content/web/viewer.js --- a/toolkit/components/pdfjs/content/web/viewer.js +++ b/toolkit/components/pdfjs/content/web/viewer.js @@ -396,18 +396,17 @@ delta = -delta; } return delta; } function normalizeWheelEventDelta(evt) { + const deltaMode = evt.deltaMode; let delta = normalizeWheelEventDirection(evt); - const MOUSE_DOM_DELTA_PIXEL_MODE = 0; - const MOUSE_DOM_DELTA_LINE_MODE = 1; const MOUSE_PIXELS_PER_LINE = 30; const MOUSE_LINES_PER_PAGE = 30; - if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) { + if (deltaMode === WheelEvent.DOM_DELTA_PIXEL) { delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE; - } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) { + } else if (deltaMode === WheelEvent.DOM_DELTA_LINE) { delta /= MOUSE_LINES_PER_PAGE; } return delta; } function isValidRotation(angle) { @@ -433,13 +432,15 @@ } class ProgressBar { #classList = null; #disableAutoFetchTimeout = null; #percent = 0; + #style = null; #visible = true; constructor(bar) { this.#classList = bar.classList; + this.#style = bar.style; } get percent() { return this.#percent; } set percent(val) { @@ -447,20 +448,20 @@ if (isNaN(val)) { this.#classList.add("indeterminate"); return; } this.#classList.remove("indeterminate"); - docStyle.setProperty("--progressBar-percent", `${this.#percent}%`); + this.#style.setProperty("--progressBar-percent", `${this.#percent}%`); } setWidth(viewer) { if (!viewer) { return; } const container = viewer.parentNode; const scrollbarWidth = container.offsetWidth - viewer.offsetWidth; if (scrollbarWidth > 0) { - docStyle.setProperty("--progressBar-end-offset", `${scrollbarWidth}px`); + this.#style.setProperty("--progressBar-end-offset", `${scrollbarWidth}px`); } } setDisableAutoFetch(delay = 5000) { if (isNaN(this.#percent)) { return; @@ -3020,29 +3021,29 @@ supportsPinchToZoom } = PDFViewerApplication; if (pdfViewer.isInPresentationMode) { return; } - const isPinchToZoom = evt.ctrlKey && !PDFViewerApplication._isCtrlKeyDown; + const deltaMode = evt.deltaMode; + let scaleFactor = Math.exp(-evt.deltaY / 100); + const isPinchToZoom = evt.ctrlKey && !PDFViewerApplication._isCtrlKeyDown && deltaMode === WheelEvent.DOM_DELTA_PIXEL && evt.deltaX === 0 && Math.abs(scaleFactor - 1) < 0.05 && evt.deltaZ === 0; if (isPinchToZoom || evt.ctrlKey && supportedMouseWheelZoomModifierKeys.ctrlKey || evt.metaKey && supportedMouseWheelZoomModifierKeys.metaKey) { evt.preventDefault(); if (zoomDisabledTimeout || document.visibilityState === "hidden") { return; } const previousScale = pdfViewer.currentScale; if (isPinchToZoom && supportsPinchToZoom) { - let scaleFactor = Math.exp(-evt.deltaY / 100); scaleFactor = PDFViewerApplication._accumulateFactor(previousScale, scaleFactor, "_wheelUnusedFactor"); if (scaleFactor < 1) { PDFViewerApplication.zoomOut(null, scaleFactor); } else if (scaleFactor > 1) { PDFViewerApplication.zoomIn(null, scaleFactor); } else { return; } } else { - const deltaMode = evt.deltaMode; const delta = (0, _ui_utils.normalizeWheelEventDirection)(evt); let ticks = 0; if (deltaMode === WheelEvent.DOM_DELTA_LINE || deltaMode === WheelEvent.DOM_DELTA_PAGE) { if (Math.abs(delta) >= 1) { ticks = Math.sign(delta); @@ -8187,11 +8188,11 @@ #resizeObserver = new ResizeObserver(this.#resizeObserverCallback.bind(this)); #scrollModePageState = null; #onVisibilityChange = null; #scaleTimeoutId = null; constructor(options) { - const viewerVersion = '3.3.97'; + const viewerVersion = '3.3.107'; if (_pdfjsLib.version !== viewerVersion) { throw new Error(`The API version "${_pdfjsLib.version}" does not match the Viewer version "${viewerVersion}".`); } this.container = options.container; this.viewer = options.viewer || options.container.firstElementChild; @@ -12772,12 +12773,12 @@ })); var _ui_utils = __webpack_require__(1); var _app_options = __webpack_require__(2); var _pdf_link_service = __webpack_require__(3); var _app = __webpack_require__(4); -const pdfjsVersion = '3.3.97'; -const pdfjsBuild = 'edfdb693e'; +const pdfjsVersion = '3.3.107'; +const pdfjsBuild = '075cc8d8d'; const AppConstants = null; exports.PDFViewerApplicationConstants = AppConstants; window.PDFViewerApplication = _app.PDFViewerApplication; window.PDFViewerApplicationConstants = AppConstants; window.PDFViewerApplicationOptions = _app_options.AppOptions; diff --git a/toolkit/components/pdfjs/moz.yaml b/toolkit/components/pdfjs/moz.yaml --- a/toolkit/components/pdfjs/moz.yaml +++ b/toolkit/components/pdfjs/moz.yaml @@ -18,12 +18,12 @@ # Usually different from repository url url: https://github.com/mozilla/pdf.js # Human-readable identifier for this version/release # Generally "version NNN", "tag SSS", "bookmark SSS" - release: edfdb693e5b11057252f8cef9388d063678d95cd (2023-01-21T13:02:40Z). - revision: edfdb693e5b11057252f8cef9388d063678d95cd + release: 075cc8d8dfa182c9f9ab95273e9e1c90002c535b (2023-01-26T15:10:29Z). + revision: 075cc8d8dfa182c9f9ab95273e9e1c90002c535b # The package's license, where possible using the mnemonic from # https://spdx.org/licenses/ # Multiple licenses can be specified (as a YAML list) # A "LICENSE" file must exist containing the full license text