diff --git a/layouts/shortcodes/embed-pdf.html b/layouts/shortcodes/embed-pdf.html new file mode 100755 index 0000000..8a44695 --- /dev/null +++ b/layouts/shortcodes/embed-pdf.html @@ -0,0 +1,221 @@ + + + + + + +
+ + +     + Page: / +
+ + +
+
+
+
+ +
+ + + + + + diff --git a/static/js/pdf-js/LICENSE b/static/js/pdf-js/LICENSE new file mode 100644 index 0000000..f433b1a --- /dev/null +++ b/static/js/pdf-js/LICENSE @@ -0,0 +1,177 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/static/js/pdf-js/build/pdf.js b/static/js/pdf-js/build/pdf.js new file mode 100644 index 0000000..63248c5 --- /dev/null +++ b/static/js/pdf-js/build/pdf.js @@ -0,0 +1,19773 @@ +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * Copyright 2022 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @licend The above is the entire license notice for the + * JavaScript code in this page + */ + +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define("pdfjs-dist/build/pdf", [], factory); + else if(typeof exports === 'object') + exports["pdfjs-dist/build/pdf"] = factory(); + else + root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory(); +})(globalThis, () => { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.LINE_FACTOR = exports.LINE_DESCENT_FACTOR = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FeatureTest = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationEditorType = exports.AnnotationEditorPrefix = exports.AnnotationEditorParamsType = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0; +exports.arrayByteLength = arrayByteLength; +exports.arraysToBytes = arraysToBytes; +exports.assert = assert; +exports.bytesToString = bytesToString; +exports.createPromiseCapability = createPromiseCapability; +exports.createValidAbsoluteUrl = createValidAbsoluteUrl; +exports.escapeString = escapeString; +exports.getModificationDate = getModificationDate; +exports.getVerbosityLevel = getVerbosityLevel; +exports.info = info; +exports.isArrayBuffer = isArrayBuffer; +exports.isArrayEqual = isArrayEqual; +exports.isAscii = isAscii; +exports.objectFromMap = objectFromMap; +exports.objectSize = objectSize; +exports.setVerbosityLevel = setVerbosityLevel; +exports.shadow = shadow; +exports.string32 = string32; +exports.stringToBytes = stringToBytes; +exports.stringToPDFString = stringToPDFString; +exports.stringToUTF16BEString = stringToUTF16BEString; +exports.stringToUTF8String = stringToUTF8String; +exports.unreachable = unreachable; +exports.utf8StringToString = utf8StringToString; +exports.warn = warn; + +__w_pdfjs_require__(2); + +const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; +exports.IDENTITY_MATRIX = IDENTITY_MATRIX; +const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; +exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX; +const LINE_FACTOR = 1.35; +exports.LINE_FACTOR = LINE_FACTOR; +const LINE_DESCENT_FACTOR = 0.35; +exports.LINE_DESCENT_FACTOR = LINE_DESCENT_FACTOR; +const RenderingIntentFlag = { + ANY: 0x01, + DISPLAY: 0x02, + PRINT: 0x04, + ANNOTATIONS_FORMS: 0x10, + ANNOTATIONS_STORAGE: 0x20, + ANNOTATIONS_DISABLE: 0x40, + OPLIST: 0x100 +}; +exports.RenderingIntentFlag = RenderingIntentFlag; +const AnnotationMode = { + DISABLE: 0, + ENABLE: 1, + ENABLE_FORMS: 2, + ENABLE_STORAGE: 3 +}; +exports.AnnotationMode = AnnotationMode; +const AnnotationEditorPrefix = "pdfjs_internal_editor_"; +exports.AnnotationEditorPrefix = AnnotationEditorPrefix; +const AnnotationEditorType = { + DISABLE: -1, + NONE: 0, + FREETEXT: 3, + INK: 15 +}; +exports.AnnotationEditorType = AnnotationEditorType; +const AnnotationEditorParamsType = { + FREETEXT_SIZE: 1, + FREETEXT_COLOR: 2, + FREETEXT_OPACITY: 3, + INK_COLOR: 11, + INK_THICKNESS: 12, + INK_OPACITY: 13 +}; +exports.AnnotationEditorParamsType = AnnotationEditorParamsType; +const PermissionFlag = { + PRINT: 0x04, + MODIFY_CONTENTS: 0x08, + COPY: 0x10, + MODIFY_ANNOTATIONS: 0x20, + FILL_INTERACTIVE_FORMS: 0x100, + COPY_FOR_ACCESSIBILITY: 0x200, + ASSEMBLE: 0x400, + PRINT_HIGH_QUALITY: 0x800 +}; +exports.PermissionFlag = PermissionFlag; +const TextRenderingMode = { + FILL: 0, + STROKE: 1, + FILL_STROKE: 2, + INVISIBLE: 3, + FILL_ADD_TO_PATH: 4, + STROKE_ADD_TO_PATH: 5, + FILL_STROKE_ADD_TO_PATH: 6, + ADD_TO_PATH: 7, + FILL_STROKE_MASK: 3, + ADD_TO_PATH_FLAG: 4 +}; +exports.TextRenderingMode = TextRenderingMode; +const ImageKind = { + GRAYSCALE_1BPP: 1, + RGB_24BPP: 2, + RGBA_32BPP: 3 +}; +exports.ImageKind = ImageKind; +const AnnotationType = { + TEXT: 1, + LINK: 2, + FREETEXT: 3, + LINE: 4, + SQUARE: 5, + CIRCLE: 6, + POLYGON: 7, + POLYLINE: 8, + HIGHLIGHT: 9, + UNDERLINE: 10, + SQUIGGLY: 11, + STRIKEOUT: 12, + STAMP: 13, + CARET: 14, + INK: 15, + POPUP: 16, + FILEATTACHMENT: 17, + SOUND: 18, + MOVIE: 19, + WIDGET: 20, + SCREEN: 21, + PRINTERMARK: 22, + TRAPNET: 23, + WATERMARK: 24, + THREED: 25, + REDACT: 26 +}; +exports.AnnotationType = AnnotationType; +const AnnotationStateModelType = { + MARKED: "Marked", + REVIEW: "Review" +}; +exports.AnnotationStateModelType = AnnotationStateModelType; +const AnnotationMarkedState = { + MARKED: "Marked", + UNMARKED: "Unmarked" +}; +exports.AnnotationMarkedState = AnnotationMarkedState; +const AnnotationReviewState = { + ACCEPTED: "Accepted", + REJECTED: "Rejected", + CANCELLED: "Cancelled", + COMPLETED: "Completed", + NONE: "None" +}; +exports.AnnotationReviewState = AnnotationReviewState; +const AnnotationReplyType = { + GROUP: "Group", + REPLY: "R" +}; +exports.AnnotationReplyType = AnnotationReplyType; +const AnnotationFlag = { + INVISIBLE: 0x01, + HIDDEN: 0x02, + PRINT: 0x04, + NOZOOM: 0x08, + NOROTATE: 0x10, + NOVIEW: 0x20, + READONLY: 0x40, + LOCKED: 0x80, + TOGGLENOVIEW: 0x100, + LOCKEDCONTENTS: 0x200 +}; +exports.AnnotationFlag = AnnotationFlag; +const AnnotationFieldFlag = { + READONLY: 0x0000001, + REQUIRED: 0x0000002, + NOEXPORT: 0x0000004, + MULTILINE: 0x0001000, + PASSWORD: 0x0002000, + NOTOGGLETOOFF: 0x0004000, + RADIO: 0x0008000, + PUSHBUTTON: 0x0010000, + COMBO: 0x0020000, + EDIT: 0x0040000, + SORT: 0x0080000, + FILESELECT: 0x0100000, + MULTISELECT: 0x0200000, + DONOTSPELLCHECK: 0x0400000, + DONOTSCROLL: 0x0800000, + COMB: 0x1000000, + RICHTEXT: 0x2000000, + RADIOSINUNISON: 0x2000000, + COMMITONSELCHANGE: 0x4000000 +}; +exports.AnnotationFieldFlag = AnnotationFieldFlag; +const AnnotationBorderStyleType = { + SOLID: 1, + DASHED: 2, + BEVELED: 3, + INSET: 4, + UNDERLINE: 5 +}; +exports.AnnotationBorderStyleType = AnnotationBorderStyleType; +const AnnotationActionEventType = { + E: "Mouse Enter", + X: "Mouse Exit", + D: "Mouse Down", + U: "Mouse Up", + Fo: "Focus", + Bl: "Blur", + PO: "PageOpen", + PC: "PageClose", + PV: "PageVisible", + PI: "PageInvisible", + K: "Keystroke", + F: "Format", + V: "Validate", + C: "Calculate" +}; +exports.AnnotationActionEventType = AnnotationActionEventType; +const DocumentActionEventType = { + WC: "WillClose", + WS: "WillSave", + DS: "DidSave", + WP: "WillPrint", + DP: "DidPrint" +}; +exports.DocumentActionEventType = DocumentActionEventType; +const PageActionEventType = { + O: "PageOpen", + C: "PageClose" +}; +exports.PageActionEventType = PageActionEventType; +const StreamType = { + UNKNOWN: "UNKNOWN", + FLATE: "FLATE", + LZW: "LZW", + DCT: "DCT", + JPX: "JPX", + JBIG: "JBIG", + A85: "A85", + AHX: "AHX", + CCF: "CCF", + RLX: "RLX" +}; +exports.StreamType = StreamType; +const FontType = { + UNKNOWN: "UNKNOWN", + TYPE1: "TYPE1", + TYPE1STANDARD: "TYPE1STANDARD", + TYPE1C: "TYPE1C", + CIDFONTTYPE0: "CIDFONTTYPE0", + CIDFONTTYPE0C: "CIDFONTTYPE0C", + TRUETYPE: "TRUETYPE", + CIDFONTTYPE2: "CIDFONTTYPE2", + TYPE3: "TYPE3", + OPENTYPE: "OPENTYPE", + TYPE0: "TYPE0", + MMTYPE1: "MMTYPE1" +}; +exports.FontType = FontType; +const VerbosityLevel = { + ERRORS: 0, + WARNINGS: 1, + INFOS: 5 +}; +exports.VerbosityLevel = VerbosityLevel; +const CMapCompressionType = { + NONE: 0, + BINARY: 1, + STREAM: 2 +}; +exports.CMapCompressionType = CMapCompressionType; +const OPS = { + dependency: 1, + setLineWidth: 2, + setLineCap: 3, + setLineJoin: 4, + setMiterLimit: 5, + setDash: 6, + setRenderingIntent: 7, + setFlatness: 8, + setGState: 9, + save: 10, + restore: 11, + transform: 12, + moveTo: 13, + lineTo: 14, + curveTo: 15, + curveTo2: 16, + curveTo3: 17, + closePath: 18, + rectangle: 19, + stroke: 20, + closeStroke: 21, + fill: 22, + eoFill: 23, + fillStroke: 24, + eoFillStroke: 25, + closeFillStroke: 26, + closeEOFillStroke: 27, + endPath: 28, + clip: 29, + eoClip: 30, + beginText: 31, + endText: 32, + setCharSpacing: 33, + setWordSpacing: 34, + setHScale: 35, + setLeading: 36, + setFont: 37, + setTextRenderingMode: 38, + setTextRise: 39, + moveText: 40, + setLeadingMoveText: 41, + setTextMatrix: 42, + nextLine: 43, + showText: 44, + showSpacedText: 45, + nextLineShowText: 46, + nextLineSetSpacingShowText: 47, + setCharWidth: 48, + setCharWidthAndBounds: 49, + setStrokeColorSpace: 50, + setFillColorSpace: 51, + setStrokeColor: 52, + setStrokeColorN: 53, + setFillColor: 54, + setFillColorN: 55, + setStrokeGray: 56, + setFillGray: 57, + setStrokeRGBColor: 58, + setFillRGBColor: 59, + setStrokeCMYKColor: 60, + setFillCMYKColor: 61, + shadingFill: 62, + beginInlineImage: 63, + beginImageData: 64, + endInlineImage: 65, + paintXObject: 66, + markPoint: 67, + markPointProps: 68, + beginMarkedContent: 69, + beginMarkedContentProps: 70, + endMarkedContent: 71, + beginCompat: 72, + endCompat: 73, + paintFormXObjectBegin: 74, + paintFormXObjectEnd: 75, + beginGroup: 76, + endGroup: 77, + beginAnnotations: 78, + endAnnotations: 79, + beginAnnotation: 80, + endAnnotation: 81, + paintJpegXObject: 82, + paintImageMaskXObject: 83, + paintImageMaskXObjectGroup: 84, + paintImageXObject: 85, + paintInlineImageXObject: 86, + paintInlineImageXObjectGroup: 87, + paintImageXObjectRepeat: 88, + paintImageMaskXObjectRepeat: 89, + paintSolidColorImageMask: 90, + constructPath: 91 +}; +exports.OPS = OPS; +const UNSUPPORTED_FEATURES = { + unknown: "unknown", + forms: "forms", + javaScript: "javaScript", + signatures: "signatures", + smask: "smask", + shadingPattern: "shadingPattern", + font: "font", + errorTilingPattern: "errorTilingPattern", + errorExtGState: "errorExtGState", + errorXObject: "errorXObject", + errorFontLoadType3: "errorFontLoadType3", + errorFontState: "errorFontState", + errorFontMissing: "errorFontMissing", + errorFontTranslate: "errorFontTranslate", + errorColorSpace: "errorColorSpace", + errorOperatorList: "errorOperatorList", + errorFontToUnicode: "errorFontToUnicode", + errorFontLoadNative: "errorFontLoadNative", + errorFontBuildPath: "errorFontBuildPath", + errorFontGetPath: "errorFontGetPath", + errorMarkedContent: "errorMarkedContent", + errorContentSubStream: "errorContentSubStream" +}; +exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES; +const PasswordResponses = { + NEED_PASSWORD: 1, + INCORRECT_PASSWORD: 2 +}; +exports.PasswordResponses = PasswordResponses; +let verbosity = VerbosityLevel.WARNINGS; + +function setVerbosityLevel(level) { + if (Number.isInteger(level)) { + verbosity = level; + } +} + +function getVerbosityLevel() { + return verbosity; +} + +function info(msg) { + if (verbosity >= VerbosityLevel.INFOS) { + console.log(`Info: ${msg}`); + } +} + +function warn(msg) { + if (verbosity >= VerbosityLevel.WARNINGS) { + console.log(`Warning: ${msg}`); + } +} + +function unreachable(msg) { + throw new Error(msg); +} + +function assert(cond, msg) { + if (!cond) { + unreachable(msg); + } +} + +function _isValidProtocol(url) { + if (!url) { + return false; + } + + switch (url.protocol) { + case "http:": + case "https:": + case "ftp:": + case "mailto:": + case "tel:": + return true; + + default: + return false; + } +} + +function createValidAbsoluteUrl(url, baseUrl = null, options = null) { + if (!url) { + return null; + } + + try { + if (options && typeof url === "string") { + if (options.addDefaultProtocol && url.startsWith("www.")) { + const dots = url.match(/\./g); + + if (dots && dots.length >= 2) { + url = `http://${url}`; + } + } + + if (options.tryConvertEncoding) { + try { + url = stringToUTF8String(url); + } catch (ex) {} + } + } + + const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url); + + if (_isValidProtocol(absoluteUrl)) { + return absoluteUrl; + } + } catch (ex) {} + + return null; +} + +function shadow(obj, prop, value) { + Object.defineProperty(obj, prop, { + value, + enumerable: true, + configurable: true, + writable: false + }); + return value; +} + +const BaseException = function BaseExceptionClosure() { + function BaseException(message, name) { + if (this.constructor === BaseException) { + unreachable("Cannot initialize BaseException."); + } + + this.message = message; + this.name = name; + } + + BaseException.prototype = new Error(); + BaseException.constructor = BaseException; + return BaseException; +}(); + +exports.BaseException = BaseException; + +class PasswordException extends BaseException { + constructor(msg, code) { + super(msg, "PasswordException"); + this.code = code; + } + +} + +exports.PasswordException = PasswordException; + +class UnknownErrorException extends BaseException { + constructor(msg, details) { + super(msg, "UnknownErrorException"); + this.details = details; + } + +} + +exports.UnknownErrorException = UnknownErrorException; + +class InvalidPDFException extends BaseException { + constructor(msg) { + super(msg, "InvalidPDFException"); + } + +} + +exports.InvalidPDFException = InvalidPDFException; + +class MissingPDFException extends BaseException { + constructor(msg) { + super(msg, "MissingPDFException"); + } + +} + +exports.MissingPDFException = MissingPDFException; + +class UnexpectedResponseException extends BaseException { + constructor(msg, status) { + super(msg, "UnexpectedResponseException"); + this.status = status; + } + +} + +exports.UnexpectedResponseException = UnexpectedResponseException; + +class FormatError extends BaseException { + constructor(msg) { + super(msg, "FormatError"); + } + +} + +exports.FormatError = FormatError; + +class AbortException extends BaseException { + constructor(msg) { + super(msg, "AbortException"); + } + +} + +exports.AbortException = AbortException; + +function bytesToString(bytes) { + if (typeof bytes !== "object" || bytes === null || bytes.length === undefined) { + unreachable("Invalid argument for bytesToString"); + } + + const length = bytes.length; + const MAX_ARGUMENT_COUNT = 8192; + + if (length < MAX_ARGUMENT_COUNT) { + return String.fromCharCode.apply(null, bytes); + } + + const strBuf = []; + + for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) { + const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); + const chunk = bytes.subarray(i, chunkEnd); + strBuf.push(String.fromCharCode.apply(null, chunk)); + } + + return strBuf.join(""); +} + +function stringToBytes(str) { + if (typeof str !== "string") { + unreachable("Invalid argument for stringToBytes"); + } + + const length = str.length; + const bytes = new Uint8Array(length); + + for (let i = 0; i < length; ++i) { + bytes[i] = str.charCodeAt(i) & 0xff; + } + + return bytes; +} + +function arrayByteLength(arr) { + if (arr.length !== undefined) { + return arr.length; + } + + if (arr.byteLength !== undefined) { + return arr.byteLength; + } + + unreachable("Invalid argument for arrayByteLength"); +} + +function arraysToBytes(arr) { + const length = arr.length; + + if (length === 1 && arr[0] instanceof Uint8Array) { + return arr[0]; + } + + let resultLength = 0; + + for (let i = 0; i < length; i++) { + resultLength += arrayByteLength(arr[i]); + } + + let pos = 0; + const data = new Uint8Array(resultLength); + + for (let i = 0; i < length; i++) { + let item = arr[i]; + + if (!(item instanceof Uint8Array)) { + if (typeof item === "string") { + item = stringToBytes(item); + } else { + item = new Uint8Array(item); + } + } + + const itemLength = item.byteLength; + data.set(item, pos); + pos += itemLength; + } + + return data; +} + +function string32(value) { + return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff); +} + +function objectSize(obj) { + return Object.keys(obj).length; +} + +function objectFromMap(map) { + const obj = Object.create(null); + + for (const [key, value] of map) { + obj[key] = value; + } + + return obj; +} + +function isLittleEndian() { + const buffer8 = new Uint8Array(4); + buffer8[0] = 1; + const view32 = new Uint32Array(buffer8.buffer, 0, 1); + return view32[0] === 1; +} + +function isEvalSupported() { + try { + new Function(""); + return true; + } catch (e) { + return false; + } +} + +class FeatureTest { + static get isLittleEndian() { + return shadow(this, "isLittleEndian", isLittleEndian()); + } + + static get isEvalSupported() { + return shadow(this, "isEvalSupported", isEvalSupported()); + } + + static get isOffscreenCanvasSupported() { + return shadow(this, "isOffscreenCanvasSupported", typeof OffscreenCanvas !== "undefined"); + } + +} + +exports.FeatureTest = FeatureTest; +const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0")); + +class Util { + static makeHexColor(r, g, b) { + return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`; + } + + static scaleMinMax(transform, minMax) { + let temp; + + if (transform[0]) { + if (transform[0] < 0) { + temp = minMax[0]; + minMax[0] = minMax[1]; + minMax[1] = temp; + } + + minMax[0] *= transform[0]; + minMax[1] *= transform[0]; + + if (transform[3] < 0) { + temp = minMax[2]; + minMax[2] = minMax[3]; + minMax[3] = temp; + } + + minMax[2] *= transform[3]; + minMax[3] *= transform[3]; + } else { + temp = minMax[0]; + minMax[0] = minMax[2]; + minMax[2] = temp; + temp = minMax[1]; + minMax[1] = minMax[3]; + minMax[3] = temp; + + if (transform[1] < 0) { + temp = minMax[2]; + minMax[2] = minMax[3]; + minMax[3] = temp; + } + + minMax[2] *= transform[1]; + minMax[3] *= transform[1]; + + if (transform[2] < 0) { + temp = minMax[0]; + minMax[0] = minMax[1]; + minMax[1] = temp; + } + + minMax[0] *= transform[2]; + minMax[1] *= transform[2]; + } + + minMax[0] += transform[4]; + minMax[1] += transform[4]; + minMax[2] += transform[5]; + minMax[3] += transform[5]; + } + + static transform(m1, m2) { + return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]]; + } + + static applyTransform(p, m) { + const xt = p[0] * m[0] + p[1] * m[2] + m[4]; + const yt = p[0] * m[1] + p[1] * m[3] + m[5]; + return [xt, yt]; + } + + static applyInverseTransform(p, m) { + const d = m[0] * m[3] - m[1] * m[2]; + const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; + const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; + return [xt, yt]; + } + + static getAxialAlignedBoundingBox(r, m) { + const p1 = Util.applyTransform(r, m); + const p2 = Util.applyTransform(r.slice(2, 4), m); + const p3 = Util.applyTransform([r[0], r[3]], m); + const p4 = Util.applyTransform([r[2], r[1]], m); + return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])]; + } + + static inverseTransform(m) { + const d = m[0] * m[3] - m[1] * m[2]; + return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d]; + } + + static apply3dTransform(m, v) { + return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]]; + } + + static singularValueDecompose2dScale(m) { + const transpose = [m[0], m[2], m[1], m[3]]; + const a = m[0] * transpose[0] + m[1] * transpose[2]; + const b = m[0] * transpose[1] + m[1] * transpose[3]; + const c = m[2] * transpose[0] + m[3] * transpose[2]; + const d = m[2] * transpose[1] + m[3] * transpose[3]; + const first = (a + d) / 2; + const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2; + const sx = first + second || 1; + const sy = first - second || 1; + return [Math.sqrt(sx), Math.sqrt(sy)]; + } + + static normalizeRect(rect) { + const r = rect.slice(0); + + if (rect[0] > rect[2]) { + r[0] = rect[2]; + r[2] = rect[0]; + } + + if (rect[1] > rect[3]) { + r[1] = rect[3]; + r[3] = rect[1]; + } + + return r; + } + + static intersect(rect1, rect2) { + const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2])); + const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2])); + + if (xLow > xHigh) { + return null; + } + + const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3])); + const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3])); + + if (yLow > yHigh) { + return null; + } + + return [xLow, yLow, xHigh, yHigh]; + } + + static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) { + const tvalues = [], + bounds = [[], []]; + let a, b, c, t, t1, t2, b2ac, sqrtb2ac; + + for (let i = 0; i < 2; ++i) { + if (i === 0) { + b = 6 * x0 - 12 * x1 + 6 * x2; + a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3; + c = 3 * x1 - 3 * x0; + } else { + b = 6 * y0 - 12 * y1 + 6 * y2; + a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3; + c = 3 * y1 - 3 * y0; + } + + if (Math.abs(a) < 1e-12) { + if (Math.abs(b) < 1e-12) { + continue; + } + + t = -c / b; + + if (0 < t && t < 1) { + tvalues.push(t); + } + + continue; + } + + b2ac = b * b - 4 * c * a; + sqrtb2ac = Math.sqrt(b2ac); + + if (b2ac < 0) { + continue; + } + + t1 = (-b + sqrtb2ac) / (2 * a); + + if (0 < t1 && t1 < 1) { + tvalues.push(t1); + } + + t2 = (-b - sqrtb2ac) / (2 * a); + + if (0 < t2 && t2 < 1) { + tvalues.push(t2); + } + } + + let j = tvalues.length, + mt; + const jlen = j; + + while (j--) { + t = tvalues[j]; + mt = 1 - t; + bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3; + bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3; + } + + bounds[0][jlen] = x0; + bounds[1][jlen] = y0; + bounds[0][jlen + 1] = x3; + bounds[1][jlen + 1] = y3; + bounds[0].length = bounds[1].length = jlen + 2; + return [Math.min(...bounds[0]), Math.min(...bounds[1]), Math.max(...bounds[0]), Math.max(...bounds[1])]; + } + +} + +exports.Util = Util; +const PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]; + +function stringToPDFString(str) { + if (str[0] >= "\xEF") { + let encoding; + + if (str[0] === "\xFE" && str[1] === "\xFF") { + encoding = "utf-16be"; + } else if (str[0] === "\xFF" && str[1] === "\xFE") { + encoding = "utf-16le"; + } else if (str[0] === "\xEF" && str[1] === "\xBB" && str[2] === "\xBF") { + encoding = "utf-8"; + } + + if (encoding) { + try { + const decoder = new TextDecoder(encoding, { + fatal: true + }); + const buffer = stringToBytes(str); + return decoder.decode(buffer); + } catch (ex) { + warn(`stringToPDFString: "${ex}".`); + } + } + } + + const strBuf = []; + + for (let i = 0, ii = str.length; i < ii; i++) { + const code = PDFStringTranslateTable[str.charCodeAt(i)]; + strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); + } + + return strBuf.join(""); +} + +function escapeString(str) { + return str.replace(/([()\\\n\r])/g, match => { + if (match === "\n") { + return "\\n"; + } else if (match === "\r") { + return "\\r"; + } + + return `\\${match}`; + }); +} + +function isAscii(str) { + return /^[\x00-\x7F]*$/.test(str); +} + +function stringToUTF16BEString(str) { + const buf = ["\xFE\xFF"]; + + for (let i = 0, ii = str.length; i < ii; i++) { + const char = str.charCodeAt(i); + buf.push(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff)); + } + + return buf.join(""); +} + +function stringToUTF8String(str) { + return decodeURIComponent(escape(str)); +} + +function utf8StringToString(str) { + return unescape(encodeURIComponent(str)); +} + +function isArrayBuffer(v) { + return typeof v === "object" && v !== null && v.byteLength !== undefined; +} + +function isArrayEqual(arr1, arr2) { + if (arr1.length !== arr2.length) { + return false; + } + + for (let i = 0, ii = arr1.length; i < ii; i++) { + if (arr1[i] !== arr2[i]) { + return false; + } + } + + return true; +} + +function getModificationDate(date = new Date()) { + const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), date.getUTCDate().toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")]; + return buffer.join(""); +} + +function createPromiseCapability() { + const capability = Object.create(null); + let isSettled = false; + Object.defineProperty(capability, "settled", { + get() { + return isSettled; + } + + }); + capability.promise = new Promise(function (resolve, reject) { + capability.resolve = function (data) { + isSettled = true; + resolve(data); + }; + + capability.reject = function (reason) { + isSettled = true; + reject(reason); + }; + }); + return capability; +} + +/***/ }), +/* 2 */ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => { + + + +var _is_node = __w_pdfjs_require__(3); + +; + +/***/ }), +/* 3 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.isNodeJS = void 0; +const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser"); +exports.isNodeJS = isNodeJS; + +/***/ }), +/* 4 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.build = exports.RenderTask = exports.PDFWorkerUtil = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0; +exports.getDocument = getDocument; +exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory; +exports.version = void 0; + +var _util = __w_pdfjs_require__(1); + +var _annotation_storage = __w_pdfjs_require__(5); + +var _display_utils = __w_pdfjs_require__(8); + +var _font_loader = __w_pdfjs_require__(11); + +var _canvas = __w_pdfjs_require__(12); + +var _worker_options = __w_pdfjs_require__(15); + +var _is_node = __w_pdfjs_require__(3); + +var _message_handler = __w_pdfjs_require__(16); + +var _metadata = __w_pdfjs_require__(17); + +var _optional_content_config = __w_pdfjs_require__(18); + +var _transport_stream = __w_pdfjs_require__(19); + +var _xfa_text = __w_pdfjs_require__(20); + +const DEFAULT_RANGE_CHUNK_SIZE = 65536; +const RENDERING_CANCELLED_TIMEOUT = 100; +let DefaultCanvasFactory = _display_utils.DOMCanvasFactory; +exports.DefaultCanvasFactory = DefaultCanvasFactory; +let DefaultCMapReaderFactory = _display_utils.DOMCMapReaderFactory; +exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory; +let DefaultStandardFontDataFactory = _display_utils.DOMStandardFontDataFactory; +exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory; + +if (_is_node.isNodeJS) { + const { + NodeCanvasFactory, + NodeCMapReaderFactory, + NodeStandardFontDataFactory + } = __w_pdfjs_require__(21); + + exports.DefaultCanvasFactory = DefaultCanvasFactory = NodeCanvasFactory; + exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory = NodeCMapReaderFactory; + exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory = NodeStandardFontDataFactory; +} + +let createPDFNetworkStream; + +function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) { + createPDFNetworkStream = pdfNetworkStreamFactory; +} + +function getDocument(src) { + const task = new PDFDocumentLoadingTask(); + let source; + + if (typeof src === "string" || src instanceof URL) { + source = { + url: src + }; + } else if ((0, _util.isArrayBuffer)(src)) { + source = { + data: src + }; + } else if (src instanceof PDFDataRangeTransport) { + source = { + range: src + }; + } else { + if (typeof src !== "object") { + throw new Error("Invalid parameter in getDocument, " + "need either string, URL, TypedArray, or parameter object."); + } + + if (!src.url && !src.data && !src.range) { + throw new Error("Invalid parameter object: need either .data, .range or .url"); + } + + source = src; + } + + const params = Object.create(null); + let rangeTransport = null, + worker = null; + + for (const key in source) { + const value = source[key]; + + switch (key) { + case "url": + if (typeof window !== "undefined") { + try { + params[key] = new URL(value, window.location).href; + continue; + } catch (ex) { + (0, _util.warn)(`Cannot create valid URL: "${ex}".`); + } + } else if (typeof value === "string" || value instanceof URL) { + params[key] = value.toString(); + continue; + } + + throw new Error("Invalid PDF url data: " + "either string or URL-object is expected in the url property."); + + case "range": + rangeTransport = value; + continue; + + case "worker": + worker = value; + continue; + + case "data": + if (_is_node.isNodeJS && typeof Buffer !== "undefined" && value instanceof Buffer) { + params[key] = new Uint8Array(value); + } else if (value instanceof Uint8Array) { + break; + } else if (typeof value === "string") { + params[key] = (0, _util.stringToBytes)(value); + } else if (typeof value === "object" && value !== null && !isNaN(value.length)) { + params[key] = new Uint8Array(value); + } else if ((0, _util.isArrayBuffer)(value)) { + params[key] = new Uint8Array(value); + } else { + throw new Error("Invalid PDF binary data: either TypedArray, " + "string, or array-like object is expected in the data property."); + } + + continue; + } + + params[key] = value; + } + + params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory; + params.StandardFontDataFactory = params.StandardFontDataFactory || DefaultStandardFontDataFactory; + params.ignoreErrors = params.stopAtErrors !== true; + params.fontExtraProperties = params.fontExtraProperties === true; + params.pdfBug = params.pdfBug === true; + params.enableXfa = params.enableXfa === true; + + if (!Number.isInteger(params.rangeChunkSize) || params.rangeChunkSize < 1) { + params.rangeChunkSize = DEFAULT_RANGE_CHUNK_SIZE; + } + + if (typeof params.docBaseUrl !== "string" || (0, _display_utils.isDataScheme)(params.docBaseUrl)) { + params.docBaseUrl = null; + } + + if (!Number.isInteger(params.maxImageSize) || params.maxImageSize < -1) { + params.maxImageSize = -1; + } + + if (typeof params.cMapUrl !== "string") { + params.cMapUrl = null; + } + + if (typeof params.standardFontDataUrl !== "string") { + params.standardFontDataUrl = null; + } + + if (typeof params.useWorkerFetch !== "boolean") { + params.useWorkerFetch = params.CMapReaderFactory === _display_utils.DOMCMapReaderFactory && params.StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory; + } + + if (typeof params.isEvalSupported !== "boolean") { + params.isEvalSupported = true; + } + + if (typeof params.disableFontFace !== "boolean") { + params.disableFontFace = _is_node.isNodeJS; + } + + if (typeof params.useSystemFonts !== "boolean") { + params.useSystemFonts = !_is_node.isNodeJS && !params.disableFontFace; + } + + if (typeof params.ownerDocument !== "object" || params.ownerDocument === null) { + params.ownerDocument = globalThis.document; + } + + if (typeof params.disableRange !== "boolean") { + params.disableRange = false; + } + + if (typeof params.disableStream !== "boolean") { + params.disableStream = false; + } + + if (typeof params.disableAutoFetch !== "boolean") { + params.disableAutoFetch = false; + } + + (0, _util.setVerbosityLevel)(params.verbosity); + + if (!worker) { + const workerParams = { + verbosity: params.verbosity, + port: _worker_options.GlobalWorkerOptions.workerPort + }; + worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams); + task._worker = worker; + } + + const docId = task.docId; + worker.promise.then(function () { + if (task.destroyed) { + throw new Error("Loading aborted"); + } + + const workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId); + + const networkStreamPromise = new Promise(function (resolve) { + let networkStream; + + if (rangeTransport) { + networkStream = new _transport_stream.PDFDataTransportStream({ + length: params.length, + initialData: params.initialData, + progressiveDone: params.progressiveDone, + contentDispositionFilename: params.contentDispositionFilename, + disableRange: params.disableRange, + disableStream: params.disableStream + }, rangeTransport); + } else if (!params.data) { + networkStream = createPDFNetworkStream({ + url: params.url, + length: params.length, + httpHeaders: params.httpHeaders, + withCredentials: params.withCredentials, + rangeChunkSize: params.rangeChunkSize, + disableRange: params.disableRange, + disableStream: params.disableStream + }); + } + + resolve(networkStream); + }); + return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) { + if (task.destroyed) { + throw new Error("Loading aborted"); + } + + const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port); + const transport = new WorkerTransport(messageHandler, task, networkStream, params); + task._transport = transport; + messageHandler.send("Ready", null); + }); + }).catch(task._capability.reject); + return task; +} + +async function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { + if (worker.destroyed) { + throw new Error("Worker was destroyed"); + } + + if (pdfDataRangeTransport) { + source.length = pdfDataRangeTransport.length; + source.initialData = pdfDataRangeTransport.initialData; + source.progressiveDone = pdfDataRangeTransport.progressiveDone; + source.contentDispositionFilename = pdfDataRangeTransport.contentDispositionFilename; + } + + const workerId = await worker.messageHandler.sendWithPromise("GetDocRequest", { + docId, + apiVersion: '2.16.105', + source: { + data: source.data, + url: source.url, + password: source.password, + disableAutoFetch: source.disableAutoFetch, + rangeChunkSize: source.rangeChunkSize, + length: source.length + }, + maxImageSize: source.maxImageSize, + disableFontFace: source.disableFontFace, + docBaseUrl: source.docBaseUrl, + ignoreErrors: source.ignoreErrors, + isEvalSupported: source.isEvalSupported, + fontExtraProperties: source.fontExtraProperties, + enableXfa: source.enableXfa, + useSystemFonts: source.useSystemFonts, + cMapUrl: source.useWorkerFetch ? source.cMapUrl : null, + standardFontDataUrl: source.useWorkerFetch ? source.standardFontDataUrl : null + }); + + if (source.data) { + source.data = null; + } + + if (worker.destroyed) { + throw new Error("Worker was destroyed"); + } + + return workerId; +} + +class PDFDocumentLoadingTask { + static #docId = 0; + + constructor() { + this._capability = (0, _util.createPromiseCapability)(); + this._transport = null; + this._worker = null; + this.docId = `d${PDFDocumentLoadingTask.#docId++}`; + this.destroyed = false; + this.onPassword = null; + this.onProgress = null; + this.onUnsupportedFeature = null; + } + + get promise() { + return this._capability.promise; + } + + async destroy() { + this.destroyed = true; + await this._transport?.destroy(); + this._transport = null; + + if (this._worker) { + this._worker.destroy(); + + this._worker = null; + } + } + +} + +exports.PDFDocumentLoadingTask = PDFDocumentLoadingTask; + +class PDFDataRangeTransport { + constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) { + this.length = length; + this.initialData = initialData; + this.progressiveDone = progressiveDone; + this.contentDispositionFilename = contentDispositionFilename; + this._rangeListeners = []; + this._progressListeners = []; + this._progressiveReadListeners = []; + this._progressiveDoneListeners = []; + this._readyCapability = (0, _util.createPromiseCapability)(); + } + + addRangeListener(listener) { + this._rangeListeners.push(listener); + } + + addProgressListener(listener) { + this._progressListeners.push(listener); + } + + addProgressiveReadListener(listener) { + this._progressiveReadListeners.push(listener); + } + + addProgressiveDoneListener(listener) { + this._progressiveDoneListeners.push(listener); + } + + onDataRange(begin, chunk) { + for (const listener of this._rangeListeners) { + listener(begin, chunk); + } + } + + onDataProgress(loaded, total) { + this._readyCapability.promise.then(() => { + for (const listener of this._progressListeners) { + listener(loaded, total); + } + }); + } + + onDataProgressiveRead(chunk) { + this._readyCapability.promise.then(() => { + for (const listener of this._progressiveReadListeners) { + listener(chunk); + } + }); + } + + onDataProgressiveDone() { + this._readyCapability.promise.then(() => { + for (const listener of this._progressiveDoneListeners) { + listener(); + } + }); + } + + transportReady() { + this._readyCapability.resolve(); + } + + requestDataRange(begin, end) { + (0, _util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange"); + } + + abort() {} + +} + +exports.PDFDataRangeTransport = PDFDataRangeTransport; + +class PDFDocumentProxy { + constructor(pdfInfo, transport) { + this._pdfInfo = pdfInfo; + this._transport = transport; + Object.defineProperty(this, "fingerprint", { + get() { + (0, _display_utils.deprecated)("`PDFDocumentProxy.fingerprint`, " + "please use `PDFDocumentProxy.fingerprints` instead."); + return this.fingerprints[0]; + } + + }); + Object.defineProperty(this, "getStats", { + value: async () => { + (0, _display_utils.deprecated)("`PDFDocumentProxy.getStats`, " + "please use the `PDFDocumentProxy.stats`-getter instead."); + return this.stats || { + streamTypes: {}, + fontTypes: {} + }; + } + }); + } + + get annotationStorage() { + return this._transport.annotationStorage; + } + + get numPages() { + return this._pdfInfo.numPages; + } + + get fingerprints() { + return this._pdfInfo.fingerprints; + } + + get stats() { + return this._transport.stats; + } + + get isPureXfa() { + return !!this._transport._htmlForXfa; + } + + get allXfaHtml() { + return this._transport._htmlForXfa; + } + + getPage(pageNumber) { + return this._transport.getPage(pageNumber); + } + + getPageIndex(ref) { + return this._transport.getPageIndex(ref); + } + + getDestinations() { + return this._transport.getDestinations(); + } + + getDestination(id) { + return this._transport.getDestination(id); + } + + getPageLabels() { + return this._transport.getPageLabels(); + } + + getPageLayout() { + return this._transport.getPageLayout(); + } + + getPageMode() { + return this._transport.getPageMode(); + } + + getViewerPreferences() { + return this._transport.getViewerPreferences(); + } + + getOpenAction() { + return this._transport.getOpenAction(); + } + + getAttachments() { + return this._transport.getAttachments(); + } + + getJavaScript() { + return this._transport.getJavaScript(); + } + + getJSActions() { + return this._transport.getDocJSActions(); + } + + getOutline() { + return this._transport.getOutline(); + } + + getOptionalContentConfig() { + return this._transport.getOptionalContentConfig(); + } + + getPermissions() { + return this._transport.getPermissions(); + } + + getMetadata() { + return this._transport.getMetadata(); + } + + getMarkInfo() { + return this._transport.getMarkInfo(); + } + + getData() { + return this._transport.getData(); + } + + getDownloadInfo() { + return this._transport.downloadInfoCapability.promise; + } + + cleanup(keepLoadedFonts = false) { + return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa); + } + + destroy() { + return this.loadingTask.destroy(); + } + + get loadingParams() { + return this._transport.loadingParams; + } + + get loadingTask() { + return this._transport.loadingTask; + } + + saveDocument() { + if (this._transport.annotationStorage.size <= 0) { + (0, _display_utils.deprecated)("saveDocument called while `annotationStorage` is empty, " + "please use the getData-method instead."); + } + + return this._transport.saveDocument(); + } + + getFieldObjects() { + return this._transport.getFieldObjects(); + } + + hasJSActions() { + return this._transport.hasJSActions(); + } + + getCalculationOrderIds() { + return this._transport.getCalculationOrderIds(); + } + +} + +exports.PDFDocumentProxy = PDFDocumentProxy; + +class PDFPageProxy { + constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) { + this._pageIndex = pageIndex; + this._pageInfo = pageInfo; + this._ownerDocument = ownerDocument; + this._transport = transport; + this._stats = pdfBug ? new _display_utils.StatTimer() : null; + this._pdfBug = pdfBug; + this.commonObjs = transport.commonObjs; + this.objs = new PDFObjects(); + this._bitmaps = new Set(); + this.cleanupAfterRender = false; + this.pendingCleanup = false; + this._intentStates = new Map(); + this._annotationPromises = new Map(); + this.destroyed = false; + } + + get pageNumber() { + return this._pageIndex + 1; + } + + get rotate() { + return this._pageInfo.rotate; + } + + get ref() { + return this._pageInfo.ref; + } + + get userUnit() { + return this._pageInfo.userUnit; + } + + get view() { + return this._pageInfo.view; + } + + getViewport({ + scale, + rotation = this.rotate, + offsetX = 0, + offsetY = 0, + dontFlip = false + } = {}) { + return new _display_utils.PageViewport({ + viewBox: this.view, + scale, + rotation, + offsetX, + offsetY, + dontFlip + }); + } + + getAnnotations({ + intent = "display" + } = {}) { + const intentArgs = this._transport.getRenderingIntent(intent); + + let promise = this._annotationPromises.get(intentArgs.cacheKey); + + if (!promise) { + promise = this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent); + + this._annotationPromises.set(intentArgs.cacheKey, promise); + + promise = promise.then(annotations => { + for (const annotation of annotations) { + if (annotation.titleObj !== undefined) { + Object.defineProperty(annotation, "title", { + get() { + (0, _display_utils.deprecated)("`title`-property on annotation, please use `titleObj` instead."); + return annotation.titleObj.str; + } + + }); + } + + if (annotation.contentsObj !== undefined) { + Object.defineProperty(annotation, "contents", { + get() { + (0, _display_utils.deprecated)("`contents`-property on annotation, please use `contentsObj` instead."); + return annotation.contentsObj.str; + } + + }); + } + } + + return annotations; + }); + } + + return promise; + } + + getJSActions() { + return this._jsActionsPromise ||= this._transport.getPageJSActions(this._pageIndex); + } + + async getXfa() { + return this._transport._htmlForXfa?.children[this._pageIndex] || null; + } + + render({ + canvasContext, + viewport, + intent = "display", + annotationMode = _util.AnnotationMode.ENABLE, + transform = null, + imageLayer = null, + canvasFactory = null, + background = null, + optionalContentConfigPromise = null, + annotationCanvasMap = null, + pageColors = null, + printAnnotationStorage = null + }) { + if (arguments[0]?.renderInteractiveForms !== undefined) { + (0, _display_utils.deprecated)("render no longer accepts the `renderInteractiveForms`-option, " + "please use the `annotationMode`-option instead."); + + if (arguments[0].renderInteractiveForms === true && annotationMode === _util.AnnotationMode.ENABLE) { + annotationMode = _util.AnnotationMode.ENABLE_FORMS; + } + } + + if (arguments[0]?.includeAnnotationStorage !== undefined) { + (0, _display_utils.deprecated)("render no longer accepts the `includeAnnotationStorage`-option, " + "please use the `annotationMode`-option instead."); + + if (arguments[0].includeAnnotationStorage === true && annotationMode === _util.AnnotationMode.ENABLE) { + annotationMode = _util.AnnotationMode.ENABLE_STORAGE; + } + } + + if (this._stats) { + this._stats.time("Overall"); + } + + const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage); + + this.pendingCleanup = false; + + if (!optionalContentConfigPromise) { + optionalContentConfigPromise = this._transport.getOptionalContentConfig(); + } + + let intentState = this._intentStates.get(intentArgs.cacheKey); + + if (!intentState) { + intentState = Object.create(null); + + this._intentStates.set(intentArgs.cacheKey, intentState); + } + + if (intentState.streamReaderCancelTimeout) { + clearTimeout(intentState.streamReaderCancelTimeout); + intentState.streamReaderCancelTimeout = null; + } + + const canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({ + ownerDocument: this._ownerDocument + }); + const intentPrint = !!(intentArgs.renderingIntent & _util.RenderingIntentFlag.PRINT); + + if (!intentState.displayReadyCapability) { + intentState.displayReadyCapability = (0, _util.createPromiseCapability)(); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false, + separateAnnots: null + }; + + if (this._stats) { + this._stats.time("Page Request"); + } + + this._pumpOperatorList(intentArgs); + } + + const complete = error => { + intentState.renderTasks.delete(internalRenderTask); + + if (this.cleanupAfterRender || intentPrint) { + this.pendingCleanup = true; + } + + this._tryCleanup(); + + if (error) { + internalRenderTask.capability.reject(error); + + this._abortOperatorList({ + intentState, + reason: error instanceof Error ? error : new Error(error) + }); + } else { + internalRenderTask.capability.resolve(); + } + + if (this._stats) { + this._stats.timeEnd("Rendering"); + + this._stats.timeEnd("Overall"); + } + }; + + const internalRenderTask = new InternalRenderTask({ + callback: complete, + params: { + canvasContext, + viewport, + transform, + imageLayer, + background + }, + objs: this.objs, + commonObjs: this.commonObjs, + annotationCanvasMap, + operatorList: intentState.operatorList, + pageIndex: this._pageIndex, + canvasFactory: canvasFactoryInstance, + useRequestAnimationFrame: !intentPrint, + pdfBug: this._pdfBug, + pageColors + }); + (intentState.renderTasks ||= new Set()).add(internalRenderTask); + const renderTask = internalRenderTask.task; + Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => { + if (this.pendingCleanup) { + complete(); + return; + } + + if (this._stats) { + this._stats.time("Rendering"); + } + + internalRenderTask.initializeGraphics({ + transparency, + optionalContentConfig + }); + internalRenderTask.operatorListChanged(); + }).catch(complete); + return renderTask; + } + + getOperatorList({ + intent = "display", + annotationMode = _util.AnnotationMode.ENABLE, + printAnnotationStorage = null + } = {}) { + function operatorListChanged() { + if (intentState.operatorList.lastChunk) { + intentState.opListReadCapability.resolve(intentState.operatorList); + intentState.renderTasks.delete(opListTask); + } + } + + const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, true); + + let intentState = this._intentStates.get(intentArgs.cacheKey); + + if (!intentState) { + intentState = Object.create(null); + + this._intentStates.set(intentArgs.cacheKey, intentState); + } + + let opListTask; + + if (!intentState.opListReadCapability) { + opListTask = Object.create(null); + opListTask.operatorListChanged = operatorListChanged; + intentState.opListReadCapability = (0, _util.createPromiseCapability)(); + (intentState.renderTasks ||= new Set()).add(opListTask); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false, + separateAnnots: null + }; + + if (this._stats) { + this._stats.time("Page Request"); + } + + this._pumpOperatorList(intentArgs); + } + + return intentState.opListReadCapability.promise; + } + + streamTextContent({ + disableCombineTextItems = false, + includeMarkedContent = false + } = {}) { + const TEXT_CONTENT_CHUNK_SIZE = 100; + return this._transport.messageHandler.sendWithStream("GetTextContent", { + pageIndex: this._pageIndex, + combineTextItems: disableCombineTextItems !== true, + includeMarkedContent: includeMarkedContent === true + }, { + highWaterMark: TEXT_CONTENT_CHUNK_SIZE, + + size(textContent) { + return textContent.items.length; + } + + }); + } + + getTextContent(params = {}) { + if (this._transport._htmlForXfa) { + return this.getXfa().then(xfa => { + return _xfa_text.XfaText.textContent(xfa); + }); + } + + const readableStream = this.streamTextContent(params); + return new Promise(function (resolve, reject) { + function pump() { + reader.read().then(function ({ + value, + done + }) { + if (done) { + resolve(textContent); + return; + } + + Object.assign(textContent.styles, value.styles); + textContent.items.push(...value.items); + pump(); + }, reject); + } + + const reader = readableStream.getReader(); + const textContent = { + items: [], + styles: Object.create(null) + }; + pump(); + }); + } + + getStructTree() { + return this._structTreePromise ||= this._transport.getStructTree(this._pageIndex); + } + + _destroy() { + this.destroyed = true; + const waitOn = []; + + for (const intentState of this._intentStates.values()) { + this._abortOperatorList({ + intentState, + reason: new Error("Page was destroyed."), + force: true + }); + + if (intentState.opListReadCapability) { + continue; + } + + for (const internalRenderTask of intentState.renderTasks) { + waitOn.push(internalRenderTask.completed); + internalRenderTask.cancel(); + } + } + + this.objs.clear(); + + for (const bitmap of this._bitmaps) { + bitmap.close(); + } + + this._bitmaps.clear(); + + this._annotationPromises.clear(); + + this._jsActionsPromise = null; + this._structTreePromise = null; + this.pendingCleanup = false; + return Promise.all(waitOn); + } + + cleanup(resetStats = false) { + this.pendingCleanup = true; + return this._tryCleanup(resetStats); + } + + _tryCleanup(resetStats = false) { + if (!this.pendingCleanup) { + return false; + } + + for (const { + renderTasks, + operatorList + } of this._intentStates.values()) { + if (renderTasks.size > 0 || !operatorList.lastChunk) { + return false; + } + } + + this._intentStates.clear(); + + this.objs.clear(); + + this._annotationPromises.clear(); + + this._jsActionsPromise = null; + this._structTreePromise = null; + + if (resetStats && this._stats) { + this._stats = new _display_utils.StatTimer(); + } + + for (const bitmap of this._bitmaps) { + bitmap.close(); + } + + this._bitmaps.clear(); + + this.pendingCleanup = false; + return true; + } + + _startRenderPage(transparency, cacheKey) { + const intentState = this._intentStates.get(cacheKey); + + if (!intentState) { + return; + } + + if (this._stats) { + this._stats.timeEnd("Page Request"); + } + + if (intentState.displayReadyCapability) { + intentState.displayReadyCapability.resolve(transparency); + } + } + + _renderPageChunk(operatorListChunk, intentState) { + for (let i = 0, ii = operatorListChunk.length; i < ii; i++) { + intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]); + intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]); + } + + intentState.operatorList.lastChunk = operatorListChunk.lastChunk; + intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots; + + for (const internalRenderTask of intentState.renderTasks) { + internalRenderTask.operatorListChanged(); + } + + if (operatorListChunk.lastChunk) { + this._tryCleanup(); + } + } + + _pumpOperatorList({ + renderingIntent, + cacheKey, + annotationStorageMap + }) { + const readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", { + pageIndex: this._pageIndex, + intent: renderingIntent, + cacheKey, + annotationStorage: annotationStorageMap + }); + + const reader = readableStream.getReader(); + + const intentState = this._intentStates.get(cacheKey); + + intentState.streamReader = reader; + + const pump = () => { + reader.read().then(({ + value, + done + }) => { + if (done) { + intentState.streamReader = null; + return; + } + + if (this._transport.destroyed) { + return; + } + + this._renderPageChunk(value, intentState); + + pump(); + }, reason => { + intentState.streamReader = null; + + if (this._transport.destroyed) { + return; + } + + if (intentState.operatorList) { + intentState.operatorList.lastChunk = true; + + for (const internalRenderTask of intentState.renderTasks) { + internalRenderTask.operatorListChanged(); + } + + this._tryCleanup(); + } + + if (intentState.displayReadyCapability) { + intentState.displayReadyCapability.reject(reason); + } else if (intentState.opListReadCapability) { + intentState.opListReadCapability.reject(reason); + } else { + throw reason; + } + }); + }; + + pump(); + } + + _abortOperatorList({ + intentState, + reason, + force = false + }) { + if (!intentState.streamReader) { + return; + } + + if (!force) { + if (intentState.renderTasks.size > 0) { + return; + } + + if (reason instanceof _display_utils.RenderingCancelledException) { + intentState.streamReaderCancelTimeout = setTimeout(() => { + this._abortOperatorList({ + intentState, + reason, + force: true + }); + + intentState.streamReaderCancelTimeout = null; + }, RENDERING_CANCELLED_TIMEOUT); + return; + } + } + + intentState.streamReader.cancel(new _util.AbortException(reason.message)).catch(() => {}); + intentState.streamReader = null; + + if (this._transport.destroyed) { + return; + } + + for (const [curCacheKey, curIntentState] of this._intentStates) { + if (curIntentState === intentState) { + this._intentStates.delete(curCacheKey); + + break; + } + } + + this.cleanup(); + } + + get stats() { + return this._stats; + } + +} + +exports.PDFPageProxy = PDFPageProxy; + +class LoopbackPort { + constructor() { + this._listeners = []; + this._deferred = Promise.resolve(); + } + + postMessage(obj, transfers) { + const event = { + data: structuredClone(obj, transfers) + }; + + this._deferred.then(() => { + for (const listener of this._listeners) { + listener.call(this, event); + } + }); + } + + addEventListener(name, listener) { + this._listeners.push(listener); + } + + removeEventListener(name, listener) { + const i = this._listeners.indexOf(listener); + + this._listeners.splice(i, 1); + } + + terminate() { + this._listeners.length = 0; + } + +} + +exports.LoopbackPort = LoopbackPort; +const PDFWorkerUtil = { + isWorkerDisabled: false, + fallbackWorkerSrc: null, + fakeWorkerId: 0 +}; +exports.PDFWorkerUtil = PDFWorkerUtil; +{ + if (_is_node.isNodeJS && typeof require === "function") { + PDFWorkerUtil.isWorkerDisabled = true; + PDFWorkerUtil.fallbackWorkerSrc = "./pdf.worker.js"; + } else if (typeof document === "object") { + const pdfjsFilePath = document?.currentScript?.src; + + if (pdfjsFilePath) { + PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2"); + } + } + + PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) { + let base; + + try { + base = new URL(baseUrl); + + if (!base.origin || base.origin === "null") { + return false; + } + } catch (e) { + return false; + } + + const other = new URL(otherUrl, base); + return base.origin === other.origin; + }; + + PDFWorkerUtil.createCDNWrapper = function (url) { + const wrapper = `importScripts("${url}");`; + return URL.createObjectURL(new Blob([wrapper])); + }; +} + +class PDFWorker { + static #workerPorts = new WeakMap(); + + constructor({ + name = null, + port = null, + verbosity = (0, _util.getVerbosityLevel)() + } = {}) { + if (port && PDFWorker.#workerPorts.has(port)) { + throw new Error("Cannot use more than one PDFWorker per port."); + } + + this.name = name; + this.destroyed = false; + this.verbosity = verbosity; + this._readyCapability = (0, _util.createPromiseCapability)(); + this._port = null; + this._webWorker = null; + this._messageHandler = null; + + if (port) { + PDFWorker.#workerPorts.set(port, this); + + this._initializeFromPort(port); + + return; + } + + this._initialize(); + } + + get promise() { + return this._readyCapability.promise; + } + + get port() { + return this._port; + } + + get messageHandler() { + return this._messageHandler; + } + + _initializeFromPort(port) { + this._port = port; + this._messageHandler = new _message_handler.MessageHandler("main", "worker", port); + + this._messageHandler.on("ready", function () {}); + + this._readyCapability.resolve(); + } + + _initialize() { + if (!PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) { + let { + workerSrc + } = PDFWorker; + + try { + if (!PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)) { + workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href); + } + + const worker = new Worker(workerSrc); + const messageHandler = new _message_handler.MessageHandler("main", "worker", worker); + + const terminateEarly = () => { + worker.removeEventListener("error", onWorkerError); + messageHandler.destroy(); + worker.terminate(); + + if (this.destroyed) { + this._readyCapability.reject(new Error("Worker was destroyed")); + } else { + this._setupFakeWorker(); + } + }; + + const onWorkerError = () => { + if (!this._webWorker) { + terminateEarly(); + } + }; + + worker.addEventListener("error", onWorkerError); + messageHandler.on("test", data => { + worker.removeEventListener("error", onWorkerError); + + if (this.destroyed) { + terminateEarly(); + return; + } + + if (data) { + this._messageHandler = messageHandler; + this._port = worker; + this._webWorker = worker; + + this._readyCapability.resolve(); + + messageHandler.send("configure", { + verbosity: this.verbosity + }); + } else { + this._setupFakeWorker(); + + messageHandler.destroy(); + worker.terminate(); + } + }); + messageHandler.on("ready", data => { + worker.removeEventListener("error", onWorkerError); + + if (this.destroyed) { + terminateEarly(); + return; + } + + try { + sendTest(); + } catch (e) { + this._setupFakeWorker(); + } + }); + + const sendTest = () => { + const testObj = new Uint8Array(); + messageHandler.send("test", testObj, [testObj.buffer]); + }; + + sendTest(); + return; + } catch (e) { + (0, _util.info)("The worker has been disabled."); + } + } + + this._setupFakeWorker(); + } + + _setupFakeWorker() { + if (!PDFWorkerUtil.isWorkerDisabled) { + (0, _util.warn)("Setting up fake worker."); + PDFWorkerUtil.isWorkerDisabled = true; + } + + PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => { + if (this.destroyed) { + this._readyCapability.reject(new Error("Worker was destroyed")); + + return; + } + + const port = new LoopbackPort(); + this._port = port; + const id = `fake${PDFWorkerUtil.fakeWorkerId++}`; + const workerHandler = new _message_handler.MessageHandler(id + "_worker", id, port); + WorkerMessageHandler.setup(workerHandler, port); + const messageHandler = new _message_handler.MessageHandler(id, id + "_worker", port); + this._messageHandler = messageHandler; + + this._readyCapability.resolve(); + + messageHandler.send("configure", { + verbosity: this.verbosity + }); + }).catch(reason => { + this._readyCapability.reject(new Error(`Setting up fake worker failed: "${reason.message}".`)); + }); + } + + destroy() { + this.destroyed = true; + + if (this._webWorker) { + this._webWorker.terminate(); + + this._webWorker = null; + } + + PDFWorker.#workerPorts.delete(this._port); + this._port = null; + + if (this._messageHandler) { + this._messageHandler.destroy(); + + this._messageHandler = null; + } + } + + static fromPort(params) { + if (!params?.port) { + throw new Error("PDFWorker.fromPort - invalid method signature."); + } + + if (this.#workerPorts.has(params.port)) { + return this.#workerPorts.get(params.port); + } + + return new PDFWorker(params); + } + + static get workerSrc() { + if (_worker_options.GlobalWorkerOptions.workerSrc) { + return _worker_options.GlobalWorkerOptions.workerSrc; + } + + if (PDFWorkerUtil.fallbackWorkerSrc !== null) { + if (!_is_node.isNodeJS) { + (0, _display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.'); + } + + return PDFWorkerUtil.fallbackWorkerSrc; + } + + throw new Error('No "GlobalWorkerOptions.workerSrc" specified.'); + } + + static get _mainThreadWorkerMessageHandler() { + try { + return globalThis.pdfjsWorker?.WorkerMessageHandler || null; + } catch (ex) { + return null; + } + } + + static get _setupFakeWorkerGlobal() { + const loader = async () => { + const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler; + + if (mainWorkerMessageHandler) { + return mainWorkerMessageHandler; + } + + if (_is_node.isNodeJS && typeof require === "function") { + const worker = eval("require")(this.workerSrc); + return worker.WorkerMessageHandler; + } + + await (0, _display_utils.loadScript)(this.workerSrc); + return window.pdfjsWorker.WorkerMessageHandler; + }; + + return (0, _util.shadow)(this, "_setupFakeWorkerGlobal", loader()); + } + +} + +exports.PDFWorker = PDFWorker; +{ + PDFWorker.getWorkerSrc = function () { + (0, _display_utils.deprecated)("`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead."); + return this.workerSrc; + }; +} + +class WorkerTransport { + #docStats = null; + #pageCache = new Map(); + #pagePromises = new Map(); + #metadataPromise = null; + + constructor(messageHandler, loadingTask, networkStream, params) { + this.messageHandler = messageHandler; + this.loadingTask = loadingTask; + this.commonObjs = new PDFObjects(); + this.fontLoader = new _font_loader.FontLoader({ + docId: loadingTask.docId, + onUnsupportedFeature: this._onUnsupportedFeature.bind(this), + ownerDocument: params.ownerDocument, + styleElement: params.styleElement + }); + this._params = params; + + if (!params.useWorkerFetch) { + this.CMapReaderFactory = new params.CMapReaderFactory({ + baseUrl: params.cMapUrl, + isCompressed: params.cMapPacked + }); + this.StandardFontDataFactory = new params.StandardFontDataFactory({ + baseUrl: params.standardFontDataUrl + }); + } + + this.destroyed = false; + this.destroyCapability = null; + this._passwordCapability = null; + this._networkStream = networkStream; + this._fullReader = null; + this._lastProgress = null; + this.downloadInfoCapability = (0, _util.createPromiseCapability)(); + this.setupMessageHandler(); + } + + get annotationStorage() { + return (0, _util.shadow)(this, "annotationStorage", new _annotation_storage.AnnotationStorage()); + } + + get stats() { + return this.#docStats; + } + + getRenderingIntent(intent, annotationMode = _util.AnnotationMode.ENABLE, printAnnotationStorage = null, isOpList = false) { + let renderingIntent = _util.RenderingIntentFlag.DISPLAY; + let annotationMap = null; + + switch (intent) { + case "any": + renderingIntent = _util.RenderingIntentFlag.ANY; + break; + + case "display": + break; + + case "print": + renderingIntent = _util.RenderingIntentFlag.PRINT; + break; + + default: + (0, _util.warn)(`getRenderingIntent - invalid intent: ${intent}`); + } + + switch (annotationMode) { + case _util.AnnotationMode.DISABLE: + renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE; + break; + + case _util.AnnotationMode.ENABLE: + break; + + case _util.AnnotationMode.ENABLE_FORMS: + renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_FORMS; + break; + + case _util.AnnotationMode.ENABLE_STORAGE: + renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE; + const annotationStorage = renderingIntent & _util.RenderingIntentFlag.PRINT && printAnnotationStorage instanceof _annotation_storage.PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage; + annotationMap = annotationStorage.serializable; + break; + + default: + (0, _util.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`); + } + + if (isOpList) { + renderingIntent += _util.RenderingIntentFlag.OPLIST; + } + + return { + renderingIntent, + cacheKey: `${renderingIntent}_${_annotation_storage.AnnotationStorage.getHash(annotationMap)}`, + annotationStorageMap: annotationMap + }; + } + + destroy() { + if (this.destroyCapability) { + return this.destroyCapability.promise; + } + + this.destroyed = true; + this.destroyCapability = (0, _util.createPromiseCapability)(); + + if (this._passwordCapability) { + this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback")); + } + + const waitOn = []; + + for (const page of this.#pageCache.values()) { + waitOn.push(page._destroy()); + } + + this.#pageCache.clear(); + this.#pagePromises.clear(); + + if (this.hasOwnProperty("annotationStorage")) { + this.annotationStorage.resetModified(); + } + + const terminated = this.messageHandler.sendWithPromise("Terminate", null); + waitOn.push(terminated); + Promise.all(waitOn).then(() => { + this.commonObjs.clear(); + this.fontLoader.clear(); + this.#metadataPromise = null; + this._getFieldObjectsPromise = null; + this._hasJSActionsPromise = null; + + if (this._networkStream) { + this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated.")); + } + + if (this.messageHandler) { + this.messageHandler.destroy(); + this.messageHandler = null; + } + + this.destroyCapability.resolve(); + }, this.destroyCapability.reject); + return this.destroyCapability.promise; + } + + setupMessageHandler() { + const { + messageHandler, + loadingTask + } = this; + messageHandler.on("GetReader", (data, sink) => { + (0, _util.assert)(this._networkStream, "GetReader - no `IPDFStream` instance available."); + this._fullReader = this._networkStream.getFullReader(); + + this._fullReader.onProgress = evt => { + this._lastProgress = { + loaded: evt.loaded, + total: evt.total + }; + }; + + sink.onPull = () => { + this._fullReader.read().then(function ({ + value, + done + }) { + if (done) { + sink.close(); + return; + } + + (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetReader - expected an ArrayBuffer."); + sink.enqueue(new Uint8Array(value), 1, [value]); + }).catch(reason => { + sink.error(reason); + }); + }; + + sink.onCancel = reason => { + this._fullReader.cancel(reason); + + sink.ready.catch(readyReason => { + if (this.destroyed) { + return; + } + + throw readyReason; + }); + }; + }); + messageHandler.on("ReaderHeadersReady", data => { + const headersCapability = (0, _util.createPromiseCapability)(); + const fullReader = this._fullReader; + fullReader.headersReady.then(() => { + if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) { + if (this._lastProgress) { + loadingTask.onProgress?.(this._lastProgress); + } + + fullReader.onProgress = evt => { + loadingTask.onProgress?.({ + loaded: evt.loaded, + total: evt.total + }); + }; + } + + headersCapability.resolve({ + isStreamingSupported: fullReader.isStreamingSupported, + isRangeSupported: fullReader.isRangeSupported, + contentLength: fullReader.contentLength + }); + }, headersCapability.reject); + return headersCapability.promise; + }); + messageHandler.on("GetRangeReader", (data, sink) => { + (0, _util.assert)(this._networkStream, "GetRangeReader - no `IPDFStream` instance available."); + + const rangeReader = this._networkStream.getRangeReader(data.begin, data.end); + + if (!rangeReader) { + sink.close(); + return; + } + + sink.onPull = () => { + rangeReader.read().then(function ({ + value, + done + }) { + if (done) { + sink.close(); + return; + } + + (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetRangeReader - expected an ArrayBuffer."); + sink.enqueue(new Uint8Array(value), 1, [value]); + }).catch(reason => { + sink.error(reason); + }); + }; + + sink.onCancel = reason => { + rangeReader.cancel(reason); + sink.ready.catch(readyReason => { + if (this.destroyed) { + return; + } + + throw readyReason; + }); + }; + }); + messageHandler.on("GetDoc", ({ + pdfInfo + }) => { + this._numPages = pdfInfo.numPages; + this._htmlForXfa = pdfInfo.htmlForXfa; + delete pdfInfo.htmlForXfa; + + loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this)); + }); + messageHandler.on("DocException", function (ex) { + let reason; + + switch (ex.name) { + case "PasswordException": + reason = new _util.PasswordException(ex.message, ex.code); + break; + + case "InvalidPDFException": + reason = new _util.InvalidPDFException(ex.message); + break; + + case "MissingPDFException": + reason = new _util.MissingPDFException(ex.message); + break; + + case "UnexpectedResponseException": + reason = new _util.UnexpectedResponseException(ex.message, ex.status); + break; + + case "UnknownErrorException": + reason = new _util.UnknownErrorException(ex.message, ex.details); + break; + + default: + (0, _util.unreachable)("DocException - expected a valid Error."); + } + + loadingTask._capability.reject(reason); + }); + messageHandler.on("PasswordRequest", exception => { + this._passwordCapability = (0, _util.createPromiseCapability)(); + + if (loadingTask.onPassword) { + const updatePassword = password => { + if (password instanceof Error) { + this._passwordCapability.reject(password); + } else { + this._passwordCapability.resolve({ + password + }); + } + }; + + try { + loadingTask.onPassword(updatePassword, exception.code); + } catch (ex) { + this._passwordCapability.reject(ex); + } + } else { + this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code)); + } + + return this._passwordCapability.promise; + }); + messageHandler.on("DataLoaded", data => { + loadingTask.onProgress?.({ + loaded: data.length, + total: data.length + }); + this.downloadInfoCapability.resolve(data); + }); + messageHandler.on("StartRenderPage", data => { + if (this.destroyed) { + return; + } + + const page = this.#pageCache.get(data.pageIndex); + + page._startRenderPage(data.transparency, data.cacheKey); + }); + messageHandler.on("commonobj", ([id, type, exportedData]) => { + if (this.destroyed) { + return; + } + + if (this.commonObjs.has(id)) { + return; + } + + switch (type) { + case "Font": + const params = this._params; + + if ("error" in exportedData) { + const exportedError = exportedData.error; + (0, _util.warn)(`Error during font loading: ${exportedError}`); + this.commonObjs.resolve(id, exportedError); + break; + } + + let fontRegistry = null; + + if (params.pdfBug && globalThis.FontInspector?.enabled) { + fontRegistry = { + registerFont(font, url) { + globalThis.FontInspector.fontAdded(font, url); + } + + }; + } + + const font = new _font_loader.FontFaceObject(exportedData, { + isEvalSupported: params.isEvalSupported, + disableFontFace: params.disableFontFace, + ignoreErrors: params.ignoreErrors, + onUnsupportedFeature: this._onUnsupportedFeature.bind(this), + fontRegistry + }); + this.fontLoader.bind(font).catch(reason => { + return messageHandler.sendWithPromise("FontFallback", { + id + }); + }).finally(() => { + if (!params.fontExtraProperties && font.data) { + font.data = null; + } + + this.commonObjs.resolve(id, font); + }); + break; + + case "FontPath": + case "Image": + this.commonObjs.resolve(id, exportedData); + break; + + default: + throw new Error(`Got unknown common object type ${type}`); + } + }); + messageHandler.on("obj", ([id, pageIndex, type, imageData]) => { + if (this.destroyed) { + return; + } + + const pageProxy = this.#pageCache.get(pageIndex); + + if (pageProxy.objs.has(id)) { + return; + } + + switch (type) { + case "Image": + pageProxy.objs.resolve(id, imageData); + const MAX_IMAGE_SIZE_TO_STORE = 8000000; + + if (imageData) { + let length; + + if (imageData.bitmap) { + const { + bitmap, + width, + height + } = imageData; + length = width * height * 4; + + pageProxy._bitmaps.add(bitmap); + } else { + length = imageData.data?.length || 0; + } + + if (length > MAX_IMAGE_SIZE_TO_STORE) { + pageProxy.cleanupAfterRender = true; + } + } + + break; + + case "Pattern": + pageProxy.objs.resolve(id, imageData); + break; + + default: + throw new Error(`Got unknown object type ${type}`); + } + }); + messageHandler.on("DocProgress", data => { + if (this.destroyed) { + return; + } + + loadingTask.onProgress?.({ + loaded: data.loaded, + total: data.total + }); + }); + messageHandler.on("DocStats", data => { + if (this.destroyed) { + return; + } + + this.#docStats = Object.freeze({ + streamTypes: Object.freeze(data.streamTypes), + fontTypes: Object.freeze(data.fontTypes) + }); + }); + messageHandler.on("UnsupportedFeature", this._onUnsupportedFeature.bind(this)); + messageHandler.on("FetchBuiltInCMap", data => { + if (this.destroyed) { + return Promise.reject(new Error("Worker was destroyed.")); + } + + if (!this.CMapReaderFactory) { + return Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.")); + } + + return this.CMapReaderFactory.fetch(data); + }); + messageHandler.on("FetchStandardFontData", data => { + if (this.destroyed) { + return Promise.reject(new Error("Worker was destroyed.")); + } + + if (!this.StandardFontDataFactory) { + return Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.")); + } + + return this.StandardFontDataFactory.fetch(data); + }); + } + + _onUnsupportedFeature({ + featureId + }) { + if (this.destroyed) { + return; + } + + this.loadingTask.onUnsupportedFeature?.(featureId); + } + + getData() { + return this.messageHandler.sendWithPromise("GetData", null); + } + + getPage(pageNumber) { + if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) { + return Promise.reject(new Error("Invalid page request.")); + } + + const pageIndex = pageNumber - 1, + cachedPromise = this.#pagePromises.get(pageIndex); + + if (cachedPromise) { + return cachedPromise; + } + + const promise = this.messageHandler.sendWithPromise("GetPage", { + pageIndex + }).then(pageInfo => { + if (this.destroyed) { + throw new Error("Transport destroyed"); + } + + const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.ownerDocument, this._params.pdfBug); + this.#pageCache.set(pageIndex, page); + return page; + }); + this.#pagePromises.set(pageIndex, promise); + return promise; + } + + getPageIndex(ref) { + if (typeof ref !== "object" || ref === null || !Number.isInteger(ref.num) || ref.num < 0 || !Number.isInteger(ref.gen) || ref.gen < 0) { + return Promise.reject(new Error("Invalid pageIndex request.")); + } + + return this.messageHandler.sendWithPromise("GetPageIndex", { + num: ref.num, + gen: ref.gen + }); + } + + getAnnotations(pageIndex, intent) { + return this.messageHandler.sendWithPromise("GetAnnotations", { + pageIndex, + intent + }); + } + + saveDocument() { + return this.messageHandler.sendWithPromise("SaveDocument", { + isPureXfa: !!this._htmlForXfa, + numPages: this._numPages, + annotationStorage: this.annotationStorage.serializable, + filename: this._fullReader?.filename ?? null + }).finally(() => { + this.annotationStorage.resetModified(); + }); + } + + getFieldObjects() { + return this._getFieldObjectsPromise ||= this.messageHandler.sendWithPromise("GetFieldObjects", null); + } + + hasJSActions() { + return this._hasJSActionsPromise ||= this.messageHandler.sendWithPromise("HasJSActions", null); + } + + getCalculationOrderIds() { + return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null); + } + + getDestinations() { + return this.messageHandler.sendWithPromise("GetDestinations", null); + } + + getDestination(id) { + if (typeof id !== "string") { + return Promise.reject(new Error("Invalid destination request.")); + } + + return this.messageHandler.sendWithPromise("GetDestination", { + id + }); + } + + getPageLabels() { + return this.messageHandler.sendWithPromise("GetPageLabels", null); + } + + getPageLayout() { + return this.messageHandler.sendWithPromise("GetPageLayout", null); + } + + getPageMode() { + return this.messageHandler.sendWithPromise("GetPageMode", null); + } + + getViewerPreferences() { + return this.messageHandler.sendWithPromise("GetViewerPreferences", null); + } + + getOpenAction() { + return this.messageHandler.sendWithPromise("GetOpenAction", null); + } + + getAttachments() { + return this.messageHandler.sendWithPromise("GetAttachments", null); + } + + getJavaScript() { + return this.messageHandler.sendWithPromise("GetJavaScript", null); + } + + getDocJSActions() { + return this.messageHandler.sendWithPromise("GetDocJSActions", null); + } + + getPageJSActions(pageIndex) { + return this.messageHandler.sendWithPromise("GetPageJSActions", { + pageIndex + }); + } + + getStructTree(pageIndex) { + return this.messageHandler.sendWithPromise("GetStructTree", { + pageIndex + }); + } + + getOutline() { + return this.messageHandler.sendWithPromise("GetOutline", null); + } + + getOptionalContentConfig() { + return this.messageHandler.sendWithPromise("GetOptionalContentConfig", null).then(results => { + return new _optional_content_config.OptionalContentConfig(results); + }); + } + + getPermissions() { + return this.messageHandler.sendWithPromise("GetPermissions", null); + } + + getMetadata() { + return this.#metadataPromise ||= this.messageHandler.sendWithPromise("GetMetadata", null).then(results => { + return { + info: results[0], + metadata: results[1] ? new _metadata.Metadata(results[1]) : null, + contentDispositionFilename: this._fullReader?.filename ?? null, + contentLength: this._fullReader?.contentLength ?? null + }; + }); + } + + getMarkInfo() { + return this.messageHandler.sendWithPromise("GetMarkInfo", null); + } + + async startCleanup(keepLoadedFonts = false) { + await this.messageHandler.sendWithPromise("Cleanup", null); + + if (this.destroyed) { + return; + } + + for (const page of this.#pageCache.values()) { + const cleanupSuccessful = page.cleanup(); + + if (!cleanupSuccessful) { + throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`); + } + } + + this.commonObjs.clear(); + + if (!keepLoadedFonts) { + this.fontLoader.clear(); + } + + this.#metadataPromise = null; + this._getFieldObjectsPromise = null; + this._hasJSActionsPromise = null; + } + + get loadingParams() { + const params = this._params; + return (0, _util.shadow)(this, "loadingParams", { + disableAutoFetch: params.disableAutoFetch, + enableXfa: params.enableXfa + }); + } + +} + +class PDFObjects { + #objs = Object.create(null); + + #ensureObj(objId) { + const obj = this.#objs[objId]; + + if (obj) { + return obj; + } + + return this.#objs[objId] = { + capability: (0, _util.createPromiseCapability)(), + data: null + }; + } + + get(objId, callback = null) { + if (callback) { + const obj = this.#ensureObj(objId); + obj.capability.promise.then(() => callback(obj.data)); + return null; + } + + const obj = this.#objs[objId]; + + if (!obj?.capability.settled) { + throw new Error(`Requesting object that isn't resolved yet ${objId}.`); + } + + return obj.data; + } + + has(objId) { + const obj = this.#objs[objId]; + return obj?.capability.settled || false; + } + + resolve(objId, data = null) { + const obj = this.#ensureObj(objId); + obj.data = data; + obj.capability.resolve(); + } + + clear() { + this.#objs = Object.create(null); + } + +} + +class RenderTask { + #internalRenderTask = null; + + constructor(internalRenderTask) { + this.#internalRenderTask = internalRenderTask; + this.onContinue = null; + } + + get promise() { + return this.#internalRenderTask.capability.promise; + } + + cancel() { + this.#internalRenderTask.cancel(); + } + + get separateAnnots() { + const { + separateAnnots + } = this.#internalRenderTask.operatorList; + + if (!separateAnnots) { + return false; + } + + const { + annotationCanvasMap + } = this.#internalRenderTask; + return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0; + } + +} + +exports.RenderTask = RenderTask; + +class InternalRenderTask { + static #canvasInUse = new WeakSet(); + + constructor({ + callback, + params, + objs, + commonObjs, + annotationCanvasMap, + operatorList, + pageIndex, + canvasFactory, + useRequestAnimationFrame = false, + pdfBug = false, + pageColors = null + }) { + this.callback = callback; + this.params = params; + this.objs = objs; + this.commonObjs = commonObjs; + this.annotationCanvasMap = annotationCanvasMap; + this.operatorListIdx = null; + this.operatorList = operatorList; + this._pageIndex = pageIndex; + this.canvasFactory = canvasFactory; + this._pdfBug = pdfBug; + this.pageColors = pageColors; + this.running = false; + this.graphicsReadyCallback = null; + this.graphicsReady = false; + this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== "undefined"; + this.cancelled = false; + this.capability = (0, _util.createPromiseCapability)(); + this.task = new RenderTask(this); + this._cancelBound = this.cancel.bind(this); + this._continueBound = this._continue.bind(this); + this._scheduleNextBound = this._scheduleNext.bind(this); + this._nextBound = this._next.bind(this); + this._canvas = params.canvasContext.canvas; + } + + get completed() { + return this.capability.promise.catch(function () {}); + } + + initializeGraphics({ + transparency = false, + optionalContentConfig + }) { + if (this.cancelled) { + return; + } + + if (this._canvas) { + if (InternalRenderTask.#canvasInUse.has(this._canvas)) { + throw new Error("Cannot use the same canvas during multiple render() operations. " + "Use different canvas or ensure previous operations were " + "cancelled or completed."); + } + + InternalRenderTask.#canvasInUse.add(this._canvas); + } + + if (this._pdfBug && globalThis.StepperManager?.enabled) { + this.stepper = globalThis.StepperManager.create(this._pageIndex); + this.stepper.init(this.operatorList); + this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); + } + + const { + canvasContext, + viewport, + transform, + imageLayer, + background + } = this.params; + this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, imageLayer, optionalContentConfig, this.annotationCanvasMap, this.pageColors); + this.gfx.beginDrawing({ + transform, + viewport, + transparency, + background + }); + this.operatorListIdx = 0; + this.graphicsReady = true; + + if (this.graphicsReadyCallback) { + this.graphicsReadyCallback(); + } + } + + cancel(error = null) { + this.running = false; + this.cancelled = true; + + if (this.gfx) { + this.gfx.endDrawing(); + } + + if (this._canvas) { + InternalRenderTask.#canvasInUse.delete(this._canvas); + } + + this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, "canvas")); + } + + operatorListChanged() { + if (!this.graphicsReady) { + if (!this.graphicsReadyCallback) { + this.graphicsReadyCallback = this._continueBound; + } + + return; + } + + if (this.stepper) { + this.stepper.updateOperatorList(this.operatorList); + } + + if (this.running) { + return; + } + + this._continue(); + } + + _continue() { + this.running = true; + + if (this.cancelled) { + return; + } + + if (this.task.onContinue) { + this.task.onContinue(this._scheduleNextBound); + } else { + this._scheduleNext(); + } + } + + _scheduleNext() { + if (this._useRequestAnimationFrame) { + window.requestAnimationFrame(() => { + this._nextBound().catch(this._cancelBound); + }); + } else { + Promise.resolve().then(this._nextBound).catch(this._cancelBound); + } + } + + async _next() { + if (this.cancelled) { + return; + } + + this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper); + + if (this.operatorListIdx === this.operatorList.argsArray.length) { + this.running = false; + + if (this.operatorList.lastChunk) { + this.gfx.endDrawing(); + + if (this._canvas) { + InternalRenderTask.#canvasInUse.delete(this._canvas); + } + + this.callback(); + } + } + } + +} + +const version = '2.16.105'; +exports.version = version; +const build = '172ccdbe5'; +exports.build = build; + +/***/ }), +/* 5 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PrintAnnotationStorage = exports.AnnotationStorage = void 0; + +var _util = __w_pdfjs_require__(1); + +var _editor = __w_pdfjs_require__(6); + +var _murmurhash = __w_pdfjs_require__(10); + +class AnnotationStorage { + constructor() { + this._storage = new Map(); + this._modified = false; + this.onSetModified = null; + this.onResetModified = null; + this.onAnnotationEditor = null; + } + + getValue(key, defaultValue) { + const value = this._storage.get(key); + + if (value === undefined) { + return defaultValue; + } + + return Object.assign(defaultValue, value); + } + + getRawValue(key) { + return this._storage.get(key); + } + + remove(key) { + this._storage.delete(key); + + if (this._storage.size === 0) { + this.resetModified(); + } + + if (typeof this.onAnnotationEditor === "function") { + for (const value of this._storage.values()) { + if (value instanceof _editor.AnnotationEditor) { + return; + } + } + + this.onAnnotationEditor(null); + } + } + + setValue(key, value) { + const obj = this._storage.get(key); + + let modified = false; + + if (obj !== undefined) { + for (const [entry, val] of Object.entries(value)) { + if (obj[entry] !== val) { + modified = true; + obj[entry] = val; + } + } + } else { + modified = true; + + this._storage.set(key, value); + } + + if (modified) { + this.#setModified(); + } + + if (value instanceof _editor.AnnotationEditor && typeof this.onAnnotationEditor === "function") { + this.onAnnotationEditor(value.constructor._type); + } + } + + has(key) { + return this._storage.has(key); + } + + getAll() { + return this._storage.size > 0 ? (0, _util.objectFromMap)(this._storage) : null; + } + + get size() { + return this._storage.size; + } + + #setModified() { + if (!this._modified) { + this._modified = true; + + if (typeof this.onSetModified === "function") { + this.onSetModified(); + } + } + } + + resetModified() { + if (this._modified) { + this._modified = false; + + if (typeof this.onResetModified === "function") { + this.onResetModified(); + } + } + } + + get print() { + return new PrintAnnotationStorage(this); + } + + get serializable() { + if (this._storage.size === 0) { + return null; + } + + const clone = new Map(); + + for (const [key, val] of this._storage) { + const serialized = val instanceof _editor.AnnotationEditor ? val.serialize() : val; + + if (serialized) { + clone.set(key, serialized); + } + } + + return clone; + } + + static getHash(map) { + if (!map) { + return ""; + } + + const hash = new _murmurhash.MurmurHash3_64(); + + for (const [key, val] of map) { + hash.update(`${key}:${JSON.stringify(val)}`); + } + + return hash.hexdigest(); + } + +} + +exports.AnnotationStorage = AnnotationStorage; + +class PrintAnnotationStorage extends AnnotationStorage { + #serializable = null; + + constructor(parent) { + super(); + this.#serializable = structuredClone(parent.serializable); + } + + get print() { + (0, _util.unreachable)("Should not call PrintAnnotationStorage.print"); + } + + get serializable() { + return this.#serializable; + } + +} + +exports.PrintAnnotationStorage = PrintAnnotationStorage; + +/***/ }), +/* 6 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationEditor = void 0; + +var _tools = __w_pdfjs_require__(7); + +var _util = __w_pdfjs_require__(1); + +class AnnotationEditor { + #boundFocusin = this.focusin.bind(this); + #boundFocusout = this.focusout.bind(this); + #hasBeenSelected = false; + #isEditing = false; + #isInEditMode = false; + #zIndex = AnnotationEditor._zIndex++; + static _colorManager = new _tools.ColorManager(); + static _zIndex = 1; + + constructor(parameters) { + if (this.constructor === AnnotationEditor) { + (0, _util.unreachable)("Cannot initialize AnnotationEditor."); + } + + this.parent = parameters.parent; + this.id = parameters.id; + this.width = this.height = null; + this.pageIndex = parameters.parent.pageIndex; + this.name = parameters.name; + this.div = null; + const [width, height] = this.parent.viewportBaseDimensions; + this.x = parameters.x / width; + this.y = parameters.y / height; + this.rotation = this.parent.viewport.rotation; + this.isAttachedToDOM = false; + } + + static get _defaultLineColor() { + return (0, _util.shadow)(this, "_defaultLineColor", this._colorManager.getHexCode("CanvasText")); + } + + setInBackground() { + this.div.style.zIndex = 0; + } + + setInForeground() { + this.div.style.zIndex = this.#zIndex; + } + + focusin(event) { + if (!this.#hasBeenSelected) { + this.parent.setSelected(this); + } else { + this.#hasBeenSelected = false; + } + } + + focusout(event) { + if (!this.isAttachedToDOM) { + return; + } + + const target = event.relatedTarget; + + if (target?.closest(`#${this.id}`)) { + return; + } + + event.preventDefault(); + + if (!this.parent.isMultipleSelection) { + this.commitOrRemove(); + } + } + + commitOrRemove() { + if (this.isEmpty()) { + this.remove(); + } else { + this.commit(); + } + } + + commit() { + this.parent.addToAnnotationStorage(this); + } + + dragstart(event) { + const rect = this.parent.div.getBoundingClientRect(); + this.startX = event.clientX - rect.x; + this.startY = event.clientY - rect.y; + event.dataTransfer.setData("text/plain", this.id); + event.dataTransfer.effectAllowed = "move"; + } + + setAt(x, y, tx, ty) { + const [width, height] = this.parent.viewportBaseDimensions; + [tx, ty] = this.screenToPageTranslation(tx, ty); + this.x = (x + tx) / width; + this.y = (y + ty) / height; + this.div.style.left = `${100 * this.x}%`; + this.div.style.top = `${100 * this.y}%`; + } + + translate(x, y) { + const [width, height] = this.parent.viewportBaseDimensions; + [x, y] = this.screenToPageTranslation(x, y); + this.x += x / width; + this.y += y / height; + this.div.style.left = `${100 * this.x}%`; + this.div.style.top = `${100 * this.y}%`; + } + + screenToPageTranslation(x, y) { + const { + rotation + } = this.parent.viewport; + + switch (rotation) { + case 90: + return [y, -x]; + + case 180: + return [-x, -y]; + + case 270: + return [-y, x]; + + default: + return [x, y]; + } + } + + setDims(width, height) { + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + this.div.style.width = `${100 * width / parentWidth}%`; + this.div.style.height = `${100 * height / parentHeight}%`; + } + + getInitialTranslation() { + return [0, 0]; + } + + render() { + this.div = document.createElement("div"); + this.div.setAttribute("data-editor-rotation", (360 - this.rotation) % 360); + this.div.className = this.name; + this.div.setAttribute("id", this.id); + this.div.setAttribute("tabIndex", 0); + this.setInForeground(); + this.div.addEventListener("focusin", this.#boundFocusin); + this.div.addEventListener("focusout", this.#boundFocusout); + const [tx, ty] = this.getInitialTranslation(); + this.translate(tx, ty); + (0, _tools.bindEvents)(this, this.div, ["dragstart", "pointerdown"]); + return this.div; + } + + pointerdown(event) { + const isMac = _tools.KeyboardManager.platform.isMac; + + if (event.button !== 0 || event.ctrlKey && isMac) { + event.preventDefault(); + return; + } + + if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) { + this.parent.toggleSelected(this); + } else { + this.parent.setSelected(this); + } + + this.#hasBeenSelected = true; + } + + getRect(tx, ty) { + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + const [pageWidth, pageHeight] = this.parent.pageDimensions; + const shiftX = pageWidth * tx / parentWidth; + const shiftY = pageHeight * ty / parentHeight; + const x = this.x * pageWidth; + const y = this.y * pageHeight; + const width = this.width * pageWidth; + const height = this.height * pageHeight; + + switch (this.rotation) { + case 0: + return [x + shiftX, pageHeight - y - shiftY - height, x + shiftX + width, pageHeight - y - shiftY]; + + case 90: + return [x + shiftY, pageHeight - y + shiftX, x + shiftY + height, pageHeight - y + shiftX + width]; + + case 180: + return [x - shiftX - width, pageHeight - y + shiftY, x - shiftX, pageHeight - y + shiftY + height]; + + case 270: + return [x - shiftY - height, pageHeight - y - shiftX - width, x - shiftY, pageHeight - y - shiftX]; + + default: + throw new Error("Invalid rotation"); + } + } + + getRectInCurrentCoords(rect, pageHeight) { + const [x1, y1, x2, y2] = rect; + const width = x2 - x1; + const height = y2 - y1; + + switch (this.rotation) { + case 0: + return [x1, pageHeight - y2, width, height]; + + case 90: + return [x1, pageHeight - y1, height, width]; + + case 180: + return [x2, pageHeight - y1, width, height]; + + case 270: + return [x2, pageHeight - y2, height, width]; + + default: + throw new Error("Invalid rotation"); + } + } + + onceAdded() {} + + isEmpty() { + return false; + } + + enableEditMode() { + this.#isInEditMode = true; + } + + disableEditMode() { + this.#isInEditMode = false; + } + + isInEditMode() { + return this.#isInEditMode; + } + + shouldGetKeyboardEvents() { + return false; + } + + needsToBeRebuilt() { + return this.div && !this.isAttachedToDOM; + } + + rebuild() { + this.div?.addEventListener("focusin", this.#boundFocusin); + } + + serialize() { + (0, _util.unreachable)("An editor must be serializable"); + } + + static deserialize(data, parent) { + const editor = new this.prototype.constructor({ + parent, + id: parent.getNextId() + }); + editor.rotation = data.rotation; + const [pageWidth, pageHeight] = parent.pageDimensions; + const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight); + editor.x = x / pageWidth; + editor.y = y / pageHeight; + editor.width = width / pageWidth; + editor.height = height / pageHeight; + return editor; + } + + remove() { + this.div.removeEventListener("focusin", this.#boundFocusin); + this.div.removeEventListener("focusout", this.#boundFocusout); + + if (!this.isEmpty()) { + this.commit(); + } + + this.parent.remove(this); + } + + select() { + this.div?.classList.add("selectedEditor"); + } + + unselect() { + this.div?.classList.remove("selectedEditor"); + } + + updateParams(type, value) {} + + disableEditing() {} + + enableEditing() {} + + get propertiesToUpdate() { + return {}; + } + + get contentDiv() { + return this.div; + } + + get isEditing() { + return this.#isEditing; + } + + set isEditing(value) { + this.#isEditing = value; + + if (value) { + this.parent.setSelected(this); + this.parent.setActiveEditor(this); + } else { + this.parent.setActiveEditor(null); + } + } + +} + +exports.AnnotationEditor = AnnotationEditor; + +/***/ }), +/* 7 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.KeyboardManager = exports.CommandManager = exports.ColorManager = exports.AnnotationEditorUIManager = void 0; +exports.bindEvents = bindEvents; +exports.opacityToHex = opacityToHex; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(8); + +function bindEvents(obj, element, names) { + for (const name of names) { + element.addEventListener(name, obj[name].bind(obj)); + } +} + +function opacityToHex(opacity) { + return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, "0"); +} + +class IdManager { + #id = 0; + + getId() { + return `${_util.AnnotationEditorPrefix}${this.#id++}`; + } + +} + +class CommandManager { + #commands = []; + #locked = false; + #maxSize; + #position = -1; + + constructor(maxSize = 128) { + this.#maxSize = maxSize; + } + + add({ + cmd, + undo, + mustExec, + type = NaN, + overwriteIfSameType = false, + keepUndo = false + }) { + if (mustExec) { + cmd(); + } + + if (this.#locked) { + return; + } + + const save = { + cmd, + undo, + type + }; + + if (this.#position === -1) { + if (this.#commands.length > 0) { + this.#commands.length = 0; + } + + this.#position = 0; + this.#commands.push(save); + return; + } + + if (overwriteIfSameType && this.#commands[this.#position].type === type) { + if (keepUndo) { + save.undo = this.#commands[this.#position].undo; + } + + this.#commands[this.#position] = save; + return; + } + + const next = this.#position + 1; + + if (next === this.#maxSize) { + this.#commands.splice(0, 1); + } else { + this.#position = next; + + if (next < this.#commands.length) { + this.#commands.splice(next); + } + } + + this.#commands.push(save); + } + + undo() { + if (this.#position === -1) { + return; + } + + this.#locked = true; + this.#commands[this.#position].undo(); + this.#locked = false; + this.#position -= 1; + } + + redo() { + if (this.#position < this.#commands.length - 1) { + this.#position += 1; + this.#locked = true; + this.#commands[this.#position].cmd(); + this.#locked = false; + } + } + + hasSomethingToUndo() { + return this.#position !== -1; + } + + hasSomethingToRedo() { + return this.#position < this.#commands.length - 1; + } + + destroy() { + this.#commands = null; + } + +} + +exports.CommandManager = CommandManager; + +class KeyboardManager { + constructor(callbacks) { + this.buffer = []; + this.callbacks = new Map(); + this.allKeys = new Set(); + const isMac = KeyboardManager.platform.isMac; + + for (const [keys, callback] of callbacks) { + for (const key of keys) { + const isMacKey = key.startsWith("mac+"); + + if (isMac && isMacKey) { + this.callbacks.set(key.slice(4), callback); + this.allKeys.add(key.split("+").at(-1)); + } else if (!isMac && !isMacKey) { + this.callbacks.set(key, callback); + this.allKeys.add(key.split("+").at(-1)); + } + } + } + } + + static get platform() { + const platform = typeof navigator !== "undefined" ? navigator.platform : ""; + return (0, _util.shadow)(this, "platform", { + isWin: platform.includes("Win"), + isMac: platform.includes("Mac") + }); + } + + #serialize(event) { + if (event.altKey) { + this.buffer.push("alt"); + } + + if (event.ctrlKey) { + this.buffer.push("ctrl"); + } + + if (event.metaKey) { + this.buffer.push("meta"); + } + + if (event.shiftKey) { + this.buffer.push("shift"); + } + + this.buffer.push(event.key); + const str = this.buffer.join("+"); + this.buffer.length = 0; + return str; + } + + exec(self, event) { + if (!this.allKeys.has(event.key)) { + return; + } + + const callback = this.callbacks.get(this.#serialize(event)); + + if (!callback) { + return; + } + + callback.bind(self)(); + event.stopPropagation(); + event.preventDefault(); + } + +} + +exports.KeyboardManager = KeyboardManager; + +class ClipboardManager { + #elements = null; + + copy(element) { + if (!element) { + return; + } + + if (Array.isArray(element)) { + this.#elements = element.map(el => el.serialize()); + } else { + this.#elements = [element.serialize()]; + } + + this.#elements = this.#elements.filter(el => !!el); + + if (this.#elements.length === 0) { + this.#elements = null; + } + } + + paste() { + return this.#elements; + } + + isEmpty() { + return this.#elements === null; + } + + destroy() { + this.#elements = null; + } + +} + +class ColorManager { + static _colorsMapping = new Map([["CanvasText", [0, 0, 0]], ["Canvas", [255, 255, 255]]]); + + get _colors() { + const colors = new Map([["CanvasText", null], ["Canvas", null]]); + (0, _display_utils.getColorValues)(colors); + return (0, _util.shadow)(this, "_colors", colors); + } + + convert(color) { + const rgb = (0, _display_utils.getRGB)(color); + + if (!window.matchMedia("(forced-colors: active)").matches) { + return rgb; + } + + for (const [name, RGB] of this._colors) { + if (RGB.every((x, i) => x === rgb[i])) { + return ColorManager._colorsMapping.get(name); + } + } + + return rgb; + } + + getHexCode(name) { + const rgb = this._colors.get(name); + + if (!rgb) { + return name; + } + + return _util.Util.makeHexColor(...rgb); + } + +} + +exports.ColorManager = ColorManager; + +class AnnotationEditorUIManager { + #activeEditor = null; + #allEditors = new Map(); + #allLayers = new Map(); + #clipboardManager = new ClipboardManager(); + #commandManager = new CommandManager(); + #currentPageIndex = 0; + #editorTypes = null; + #eventBus = null; + #idManager = new IdManager(); + #isEnabled = false; + #mode = _util.AnnotationEditorType.NONE; + #selectedEditors = new Set(); + #boundKeydown = this.keydown.bind(this); + #boundOnEditingAction = this.onEditingAction.bind(this); + #boundOnPageChanging = this.onPageChanging.bind(this); + #previousStates = { + isEditing: false, + isEmpty: true, + hasEmptyClipboard: true, + hasSomethingToUndo: false, + hasSomethingToRedo: false, + hasSelectedEditor: false + }; + #container = null; + static _keyboardManager = new KeyboardManager([[["ctrl+a", "mac+meta+a"], AnnotationEditorUIManager.prototype.selectAll], [["ctrl+c", "mac+meta+c"], AnnotationEditorUIManager.prototype.copy], [["ctrl+v", "mac+meta+v"], AnnotationEditorUIManager.prototype.paste], [["ctrl+x", "mac+meta+x"], AnnotationEditorUIManager.prototype.cut], [["ctrl+z", "mac+meta+z"], AnnotationEditorUIManager.prototype.undo], [["ctrl+y", "ctrl+shift+Z", "mac+meta+shift+Z"], AnnotationEditorUIManager.prototype.redo], [["Backspace", "alt+Backspace", "ctrl+Backspace", "shift+Backspace", "mac+Backspace", "mac+alt+Backspace", "mac+ctrl+Backspace", "Delete", "ctrl+Delete", "shift+Delete"], AnnotationEditorUIManager.prototype.delete], [["Escape", "mac+Escape"], AnnotationEditorUIManager.prototype.unselectAll]]); + + constructor(container, eventBus) { + this.#container = container; + this.#eventBus = eventBus; + + this.#eventBus._on("editingaction", this.#boundOnEditingAction); + + this.#eventBus._on("pagechanging", this.#boundOnPageChanging); + } + + destroy() { + this.#removeKeyboardManager(); + + this.#eventBus._off("editingaction", this.#boundOnEditingAction); + + this.#eventBus._off("pagechanging", this.#boundOnPageChanging); + + for (const layer of this.#allLayers.values()) { + layer.destroy(); + } + + this.#allLayers.clear(); + this.#allEditors.clear(); + this.#activeEditor = null; + this.#selectedEditors.clear(); + this.#clipboardManager.destroy(); + this.#commandManager.destroy(); + } + + onPageChanging({ + pageNumber + }) { + this.#currentPageIndex = pageNumber - 1; + } + + focusMainContainer() { + this.#container.focus(); + } + + #addKeyboardManager() { + this.#container.addEventListener("keydown", this.#boundKeydown); + } + + #removeKeyboardManager() { + this.#container.removeEventListener("keydown", this.#boundKeydown); + } + + keydown(event) { + if (!this.getActive()?.shouldGetKeyboardEvents()) { + AnnotationEditorUIManager._keyboardManager.exec(this, event); + } + } + + onEditingAction(details) { + if (["undo", "redo", "cut", "copy", "paste", "delete", "selectAll"].includes(details.name)) { + this[details.name](); + } + } + + #dispatchUpdateStates(details) { + const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value); + + if (hasChanged) { + this.#eventBus.dispatch("annotationeditorstateschanged", { + source: this, + details: Object.assign(this.#previousStates, details) + }); + } + } + + #dispatchUpdateUI(details) { + this.#eventBus.dispatch("annotationeditorparamschanged", { + source: this, + details + }); + } + + setEditingState(isEditing) { + if (isEditing) { + this.#addKeyboardManager(); + this.#dispatchUpdateStates({ + isEditing: this.#mode !== _util.AnnotationEditorType.NONE, + isEmpty: this.#isEmpty(), + hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(), + hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(), + hasSelectedEditor: false, + hasEmptyClipboard: this.#clipboardManager.isEmpty() + }); + } else { + this.#removeKeyboardManager(); + this.#dispatchUpdateStates({ + isEditing: false + }); + } + } + + registerEditorTypes(types) { + this.#editorTypes = types; + + for (const editorType of this.#editorTypes) { + this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate); + } + } + + getId() { + return this.#idManager.getId(); + } + + addLayer(layer) { + this.#allLayers.set(layer.pageIndex, layer); + + if (this.#isEnabled) { + layer.enable(); + } else { + layer.disable(); + } + } + + removeLayer(layer) { + this.#allLayers.delete(layer.pageIndex); + } + + updateMode(mode) { + this.#mode = mode; + + if (mode === _util.AnnotationEditorType.NONE) { + this.setEditingState(false); + this.#disableAll(); + } else { + this.setEditingState(true); + this.#enableAll(); + + for (const layer of this.#allLayers.values()) { + layer.updateMode(mode); + } + } + } + + updateToolbar(mode) { + if (mode === this.#mode) { + return; + } + + this.#eventBus.dispatch("switchannotationeditormode", { + source: this, + mode + }); + } + + updateParams(type, value) { + for (const editor of this.#selectedEditors) { + editor.updateParams(type, value); + } + + for (const editorType of this.#editorTypes) { + editorType.updateDefaultParams(type, value); + } + } + + #enableAll() { + if (!this.#isEnabled) { + this.#isEnabled = true; + + for (const layer of this.#allLayers.values()) { + layer.enable(); + } + } + } + + #disableAll() { + this.unselectAll(); + + if (this.#isEnabled) { + this.#isEnabled = false; + + for (const layer of this.#allLayers.values()) { + layer.disable(); + } + } + } + + getEditors(pageIndex) { + const editors = []; + + for (const editor of this.#allEditors.values()) { + if (editor.pageIndex === pageIndex) { + editors.push(editor); + } + } + + return editors; + } + + getEditor(id) { + return this.#allEditors.get(id); + } + + addEditor(editor) { + this.#allEditors.set(editor.id, editor); + } + + removeEditor(editor) { + this.#allEditors.delete(editor.id); + this.unselect(editor); + } + + #addEditorToLayer(editor) { + const layer = this.#allLayers.get(editor.pageIndex); + + if (layer) { + layer.addOrRebuild(editor); + } else { + this.addEditor(editor); + } + } + + setActiveEditor(editor) { + if (this.#activeEditor === editor) { + return; + } + + this.#activeEditor = editor; + + if (editor) { + this.#dispatchUpdateUI(editor.propertiesToUpdate); + } + } + + toggleSelected(editor) { + if (this.#selectedEditors.has(editor)) { + this.#selectedEditors.delete(editor); + editor.unselect(); + this.#dispatchUpdateStates({ + hasSelectedEditor: this.hasSelection + }); + return; + } + + this.#selectedEditors.add(editor); + editor.select(); + this.#dispatchUpdateUI(editor.propertiesToUpdate); + this.#dispatchUpdateStates({ + hasSelectedEditor: true + }); + } + + setSelected(editor) { + for (const ed of this.#selectedEditors) { + if (ed !== editor) { + ed.unselect(); + } + } + + this.#selectedEditors.clear(); + this.#selectedEditors.add(editor); + editor.select(); + this.#dispatchUpdateUI(editor.propertiesToUpdate); + this.#dispatchUpdateStates({ + hasSelectedEditor: true + }); + } + + isSelected(editor) { + return this.#selectedEditors.has(editor); + } + + unselect(editor) { + editor.unselect(); + this.#selectedEditors.delete(editor); + this.#dispatchUpdateStates({ + hasSelectedEditor: this.hasSelection + }); + } + + get hasSelection() { + return this.#selectedEditors.size !== 0; + } + + undo() { + this.#commandManager.undo(); + this.#dispatchUpdateStates({ + hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(), + hasSomethingToRedo: true, + isEmpty: this.#isEmpty() + }); + } + + redo() { + this.#commandManager.redo(); + this.#dispatchUpdateStates({ + hasSomethingToUndo: true, + hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(), + isEmpty: this.#isEmpty() + }); + } + + addCommands(params) { + this.#commandManager.add(params); + this.#dispatchUpdateStates({ + hasSomethingToUndo: true, + hasSomethingToRedo: false, + isEmpty: this.#isEmpty() + }); + } + + #isEmpty() { + if (this.#allEditors.size === 0) { + return true; + } + + if (this.#allEditors.size === 1) { + for (const editor of this.#allEditors.values()) { + return editor.isEmpty(); + } + } + + return false; + } + + delete() { + if (this.#activeEditor) { + this.#activeEditor.commitOrRemove(); + } + + if (!this.hasSelection) { + return; + } + + const editors = [...this.#selectedEditors]; + + const cmd = () => { + for (const editor of editors) { + editor.remove(); + } + }; + + const undo = () => { + for (const editor of editors) { + this.#addEditorToLayer(editor); + } + }; + + this.addCommands({ + cmd, + undo, + mustExec: true + }); + } + + copy() { + if (this.#activeEditor) { + this.#activeEditor.commitOrRemove(); + } + + if (this.hasSelection) { + const editors = []; + + for (const editor of this.#selectedEditors) { + if (!editor.isEmpty()) { + editors.push(editor); + } + } + + if (editors.length === 0) { + return; + } + + this.#clipboardManager.copy(editors); + this.#dispatchUpdateStates({ + hasEmptyClipboard: false + }); + } + } + + cut() { + this.copy(); + this.delete(); + } + + paste() { + if (this.#clipboardManager.isEmpty()) { + return; + } + + this.unselectAll(); + const layer = this.#allLayers.get(this.#currentPageIndex); + const newEditors = this.#clipboardManager.paste().map(data => layer.deserialize(data)); + + const cmd = () => { + for (const editor of newEditors) { + this.#addEditorToLayer(editor); + } + + this.#selectEditors(newEditors); + }; + + const undo = () => { + for (const editor of newEditors) { + editor.remove(); + } + }; + + this.addCommands({ + cmd, + undo, + mustExec: true + }); + } + + #selectEditors(editors) { + this.#selectedEditors.clear(); + + for (const editor of editors) { + if (editor.isEmpty()) { + continue; + } + + this.#selectedEditors.add(editor); + editor.select(); + } + + this.#dispatchUpdateStates({ + hasSelectedEditor: true + }); + } + + selectAll() { + for (const editor of this.#selectedEditors) { + editor.commit(); + } + + this.#selectEditors(this.#allEditors.values()); + } + + unselectAll() { + if (this.#activeEditor) { + this.#activeEditor.commitOrRemove(); + return; + } + + if (this.#selectEditors.size === 0) { + return; + } + + for (const editor of this.#selectedEditors) { + editor.unselect(); + } + + this.#selectedEditors.clear(); + this.#dispatchUpdateStates({ + hasSelectedEditor: false + }); + } + + isActive(editor) { + return this.#activeEditor === editor; + } + + getActive() { + return this.#activeEditor; + } + + getMode() { + return this.#mode; + } + +} + +exports.AnnotationEditorUIManager = AnnotationEditorUIManager; + +/***/ }), +/* 8 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.StatTimer = exports.RenderingCancelledException = exports.PixelsPerInch = exports.PageViewport = exports.PDFDateString = exports.DOMStandardFontDataFactory = exports.DOMSVGFactory = exports.DOMCanvasFactory = exports.DOMCMapReaderFactory = exports.AnnotationPrefix = void 0; +exports.deprecated = deprecated; +exports.getColorValues = getColorValues; +exports.getCurrentTransform = getCurrentTransform; +exports.getCurrentTransformInverse = getCurrentTransformInverse; +exports.getFilenameFromUrl = getFilenameFromUrl; +exports.getPdfFilenameFromUrl = getPdfFilenameFromUrl; +exports.getRGB = getRGB; +exports.getXfaPageViewport = getXfaPageViewport; +exports.isDataScheme = isDataScheme; +exports.isPdfFile = isPdfFile; +exports.isValidFetchUrl = isValidFetchUrl; +exports.loadScript = loadScript; + +var _base_factory = __w_pdfjs_require__(9); + +var _util = __w_pdfjs_require__(1); + +const SVG_NS = "http://www.w3.org/2000/svg"; +const AnnotationPrefix = "pdfjs_internal_id_"; +exports.AnnotationPrefix = AnnotationPrefix; + +class PixelsPerInch { + static CSS = 96.0; + static PDF = 72.0; + static PDF_TO_CSS_UNITS = this.CSS / this.PDF; +} + +exports.PixelsPerInch = PixelsPerInch; + +class DOMCanvasFactory extends _base_factory.BaseCanvasFactory { + constructor({ + ownerDocument = globalThis.document + } = {}) { + super(); + this._document = ownerDocument; + } + + _createCanvas(width, height) { + const canvas = this._document.createElement("canvas"); + + canvas.width = width; + canvas.height = height; + return canvas; + } + +} + +exports.DOMCanvasFactory = DOMCanvasFactory; + +async function fetchData(url, asTypedArray = false) { + if (isValidFetchUrl(url, document.baseURI)) { + const response = await fetch(url); + + if (!response.ok) { + throw new Error(response.statusText); + } + + return asTypedArray ? new Uint8Array(await response.arrayBuffer()) : (0, _util.stringToBytes)(await response.text()); + } + + return new Promise((resolve, reject) => { + const request = new XMLHttpRequest(); + request.open("GET", url, true); + + if (asTypedArray) { + request.responseType = "arraybuffer"; + } + + request.onreadystatechange = () => { + if (request.readyState !== XMLHttpRequest.DONE) { + return; + } + + if (request.status === 200 || request.status === 0) { + let data; + + if (asTypedArray && request.response) { + data = new Uint8Array(request.response); + } else if (!asTypedArray && request.responseText) { + data = (0, _util.stringToBytes)(request.responseText); + } + + if (data) { + resolve(data); + return; + } + } + + reject(new Error(request.statusText)); + }; + + request.send(null); + }); +} + +class DOMCMapReaderFactory extends _base_factory.BaseCMapReaderFactory { + _fetchData(url, compressionType) { + return fetchData(url, this.isCompressed).then(data => { + return { + cMapData: data, + compressionType + }; + }); + } + +} + +exports.DOMCMapReaderFactory = DOMCMapReaderFactory; + +class DOMStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory { + _fetchData(url) { + return fetchData(url, true); + } + +} + +exports.DOMStandardFontDataFactory = DOMStandardFontDataFactory; + +class DOMSVGFactory extends _base_factory.BaseSVGFactory { + _createSVG(type) { + return document.createElementNS(SVG_NS, type); + } + +} + +exports.DOMSVGFactory = DOMSVGFactory; + +class PageViewport { + constructor({ + viewBox, + scale, + rotation, + offsetX = 0, + offsetY = 0, + dontFlip = false + }) { + this.viewBox = viewBox; + this.scale = scale; + this.rotation = rotation; + this.offsetX = offsetX; + this.offsetY = offsetY; + const centerX = (viewBox[2] + viewBox[0]) / 2; + const centerY = (viewBox[3] + viewBox[1]) / 2; + let rotateA, rotateB, rotateC, rotateD; + rotation %= 360; + + if (rotation < 0) { + rotation += 360; + } + + switch (rotation) { + case 180: + rotateA = -1; + rotateB = 0; + rotateC = 0; + rotateD = 1; + break; + + case 90: + rotateA = 0; + rotateB = 1; + rotateC = 1; + rotateD = 0; + break; + + case 270: + rotateA = 0; + rotateB = -1; + rotateC = -1; + rotateD = 0; + break; + + case 0: + rotateA = 1; + rotateB = 0; + rotateC = 0; + rotateD = -1; + break; + + default: + throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees."); + } + + if (dontFlip) { + rotateC = -rotateC; + rotateD = -rotateD; + } + + let offsetCanvasX, offsetCanvasY; + let width, height; + + if (rotateA === 0) { + offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX; + offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY; + width = Math.abs(viewBox[3] - viewBox[1]) * scale; + height = Math.abs(viewBox[2] - viewBox[0]) * scale; + } else { + offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX; + offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY; + width = Math.abs(viewBox[2] - viewBox[0]) * scale; + height = Math.abs(viewBox[3] - viewBox[1]) * scale; + } + + this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY]; + this.width = width; + this.height = height; + } + + clone({ + scale = this.scale, + rotation = this.rotation, + offsetX = this.offsetX, + offsetY = this.offsetY, + dontFlip = false + } = {}) { + return new PageViewport({ + viewBox: this.viewBox.slice(), + scale, + rotation, + offsetX, + offsetY, + dontFlip + }); + } + + convertToViewportPoint(x, y) { + return _util.Util.applyTransform([x, y], this.transform); + } + + convertToViewportRectangle(rect) { + const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform); + + const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform); + + return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]]; + } + + convertToPdfPoint(x, y) { + return _util.Util.applyInverseTransform([x, y], this.transform); + } + +} + +exports.PageViewport = PageViewport; + +class RenderingCancelledException extends _util.BaseException { + constructor(msg, type) { + super(msg, "RenderingCancelledException"); + this.type = type; + } + +} + +exports.RenderingCancelledException = RenderingCancelledException; + +function isDataScheme(url) { + const ii = url.length; + let i = 0; + + while (i < ii && url[i].trim() === "") { + i++; + } + + return url.substring(i, i + 5).toLowerCase() === "data:"; +} + +function isPdfFile(filename) { + return typeof filename === "string" && /\.pdf$/i.test(filename); +} + +function getFilenameFromUrl(url) { + const anchor = url.indexOf("#"); + const query = url.indexOf("?"); + const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length); + return url.substring(url.lastIndexOf("/", end) + 1, end); +} + +function getPdfFilenameFromUrl(url, defaultFilename = "document.pdf") { + if (typeof url !== "string") { + return defaultFilename; + } + + if (isDataScheme(url)) { + (0, _util.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'); + return defaultFilename; + } + + const reURI = /^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/; + const reFilename = /[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i; + const splitURI = reURI.exec(url); + let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]); + + if (suggestedFilename) { + suggestedFilename = suggestedFilename[0]; + + if (suggestedFilename.includes("%")) { + try { + suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0]; + } catch (ex) {} + } + } + + return suggestedFilename || defaultFilename; +} + +class StatTimer { + constructor() { + this.started = Object.create(null); + this.times = []; + } + + time(name) { + if (name in this.started) { + (0, _util.warn)(`Timer is already running for ${name}`); + } + + this.started[name] = Date.now(); + } + + timeEnd(name) { + if (!(name in this.started)) { + (0, _util.warn)(`Timer has not been started for ${name}`); + } + + this.times.push({ + name, + start: this.started[name], + end: Date.now() + }); + delete this.started[name]; + } + + toString() { + const outBuf = []; + let longest = 0; + + for (const time of this.times) { + const name = time.name; + + if (name.length > longest) { + longest = name.length; + } + } + + for (const time of this.times) { + const duration = time.end - time.start; + outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\n`); + } + + return outBuf.join(""); + } + +} + +exports.StatTimer = StatTimer; + +function isValidFetchUrl(url, baseUrl) { + try { + const { + protocol + } = baseUrl ? new URL(url, baseUrl) : new URL(url); + return protocol === "http:" || protocol === "https:"; + } catch (ex) { + return false; + } +} + +function loadScript(src, removeScriptElement = false) { + return new Promise((resolve, reject) => { + const script = document.createElement("script"); + script.src = src; + + script.onload = function (evt) { + if (removeScriptElement) { + script.remove(); + } + + resolve(evt); + }; + + script.onerror = function () { + reject(new Error(`Cannot load script at: ${script.src}`)); + }; + + (document.head || document.documentElement).append(script); + }); +} + +function deprecated(details) { + console.log("Deprecated API usage: " + details); +} + +let pdfDateStringRegex; + +class PDFDateString { + static toDateObject(input) { + if (!input || typeof input !== "string") { + return null; + } + + if (!pdfDateStringRegex) { + pdfDateStringRegex = new RegExp("^D:" + "(\\d{4})" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "([Z|+|-])?" + "(\\d{2})?" + "'?" + "(\\d{2})?" + "'?"); + } + + const matches = pdfDateStringRegex.exec(input); + + if (!matches) { + return null; + } + + const year = parseInt(matches[1], 10); + let month = parseInt(matches[2], 10); + month = month >= 1 && month <= 12 ? month - 1 : 0; + let day = parseInt(matches[3], 10); + day = day >= 1 && day <= 31 ? day : 1; + let hour = parseInt(matches[4], 10); + hour = hour >= 0 && hour <= 23 ? hour : 0; + let minute = parseInt(matches[5], 10); + minute = minute >= 0 && minute <= 59 ? minute : 0; + let second = parseInt(matches[6], 10); + second = second >= 0 && second <= 59 ? second : 0; + const universalTimeRelation = matches[7] || "Z"; + let offsetHour = parseInt(matches[8], 10); + offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0; + let offsetMinute = parseInt(matches[9], 10) || 0; + offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0; + + if (universalTimeRelation === "-") { + hour += offsetHour; + minute += offsetMinute; + } else if (universalTimeRelation === "+") { + hour -= offsetHour; + minute -= offsetMinute; + } + + return new Date(Date.UTC(year, month, day, hour, minute, second)); + } + +} + +exports.PDFDateString = PDFDateString; + +function getXfaPageViewport(xfaPage, { + scale = 1, + rotation = 0 +}) { + const { + width, + height + } = xfaPage.attributes.style; + const viewBox = [0, 0, parseInt(width), parseInt(height)]; + return new PageViewport({ + viewBox, + scale, + rotation + }); +} + +function getRGB(color) { + if (color.startsWith("#")) { + const colorRGB = parseInt(color.slice(1), 16); + return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff]; + } + + if (color.startsWith("rgb(")) { + return color.slice(4, -1).split(",").map(x => parseInt(x)); + } + + if (color.startsWith("rgba(")) { + return color.slice(5, -1).split(",").map(x => parseInt(x)).slice(0, 3); + } + + (0, _util.warn)(`Not a valid color format: "${color}"`); + return [0, 0, 0]; +} + +function getColorValues(colors) { + const span = document.createElement("span"); + span.style.visibility = "hidden"; + document.body.append(span); + + for (const name of colors.keys()) { + span.style.color = name; + const computedColor = window.getComputedStyle(span).color; + colors.set(name, getRGB(computedColor)); + } + + span.remove(); +} + +function getCurrentTransform(ctx) { + const { + a, + b, + c, + d, + e, + f + } = ctx.getTransform(); + return [a, b, c, d, e, f]; +} + +function getCurrentTransformInverse(ctx) { + const { + a, + b, + c, + d, + e, + f + } = ctx.getTransform().invertSelf(); + return [a, b, c, d, e, f]; +} + +/***/ }), +/* 9 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BaseStandardFontDataFactory = exports.BaseSVGFactory = exports.BaseCanvasFactory = exports.BaseCMapReaderFactory = void 0; + +var _util = __w_pdfjs_require__(1); + +class BaseCanvasFactory { + constructor() { + if (this.constructor === BaseCanvasFactory) { + (0, _util.unreachable)("Cannot initialize BaseCanvasFactory."); + } + } + + create(width, height) { + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); + } + + const canvas = this._createCanvas(width, height); + + return { + canvas, + context: canvas.getContext("2d") + }; + } + + reset(canvasAndContext, width, height) { + if (!canvasAndContext.canvas) { + throw new Error("Canvas is not specified"); + } + + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); + } + + canvasAndContext.canvas.width = width; + canvasAndContext.canvas.height = height; + } + + destroy(canvasAndContext) { + if (!canvasAndContext.canvas) { + throw new Error("Canvas is not specified"); + } + + canvasAndContext.canvas.width = 0; + canvasAndContext.canvas.height = 0; + canvasAndContext.canvas = null; + canvasAndContext.context = null; + } + + _createCanvas(width, height) { + (0, _util.unreachable)("Abstract method `_createCanvas` called."); + } + +} + +exports.BaseCanvasFactory = BaseCanvasFactory; + +class BaseCMapReaderFactory { + constructor({ + baseUrl = null, + isCompressed = false + }) { + if (this.constructor === BaseCMapReaderFactory) { + (0, _util.unreachable)("Cannot initialize BaseCMapReaderFactory."); + } + + this.baseUrl = baseUrl; + this.isCompressed = isCompressed; + } + + async fetch({ + name + }) { + if (!this.baseUrl) { + throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.'); + } + + if (!name) { + throw new Error("CMap name must be specified."); + } + + const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : ""); + const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE; + return this._fetchData(url, compressionType).catch(reason => { + throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}`); + }); + } + + _fetchData(url, compressionType) { + (0, _util.unreachable)("Abstract method `_fetchData` called."); + } + +} + +exports.BaseCMapReaderFactory = BaseCMapReaderFactory; + +class BaseStandardFontDataFactory { + constructor({ + baseUrl = null + }) { + if (this.constructor === BaseStandardFontDataFactory) { + (0, _util.unreachable)("Cannot initialize BaseStandardFontDataFactory."); + } + + this.baseUrl = baseUrl; + } + + async fetch({ + filename + }) { + if (!this.baseUrl) { + throw new Error('The standard font "baseUrl" parameter must be specified, ensure that ' + 'the "standardFontDataUrl" API parameter is provided.'); + } + + if (!filename) { + throw new Error("Font filename must be specified."); + } + + const url = `${this.baseUrl}${filename}`; + return this._fetchData(url).catch(reason => { + throw new Error(`Unable to load font data at: ${url}`); + }); + } + + _fetchData(url) { + (0, _util.unreachable)("Abstract method `_fetchData` called."); + } + +} + +exports.BaseStandardFontDataFactory = BaseStandardFontDataFactory; + +class BaseSVGFactory { + constructor() { + if (this.constructor === BaseSVGFactory) { + (0, _util.unreachable)("Cannot initialize BaseSVGFactory."); + } + } + + create(width, height, skipDimensions = false) { + if (width <= 0 || height <= 0) { + throw new Error("Invalid SVG dimensions"); + } + + const svg = this._createSVG("svg:svg"); + + svg.setAttribute("version", "1.1"); + + if (!skipDimensions) { + svg.setAttribute("width", `${width}px`); + svg.setAttribute("height", `${height}px`); + } + + svg.setAttribute("preserveAspectRatio", "none"); + svg.setAttribute("viewBox", `0 0 ${width} ${height}`); + return svg; + } + + createElement(type) { + if (typeof type !== "string") { + throw new Error("Invalid SVG element type"); + } + + return this._createSVG(type); + } + + _createSVG(type) { + (0, _util.unreachable)("Abstract method `_createSVG` called."); + } + +} + +exports.BaseSVGFactory = BaseSVGFactory; + +/***/ }), +/* 10 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MurmurHash3_64 = void 0; + +var _util = __w_pdfjs_require__(1); + +const SEED = 0xc3d2e1f0; +const MASK_HIGH = 0xffff0000; +const MASK_LOW = 0xffff; + +class MurmurHash3_64 { + constructor(seed) { + this.h1 = seed ? seed & 0xffffffff : SEED; + this.h2 = seed ? seed & 0xffffffff : SEED; + } + + update(input) { + let data, length; + + if (typeof input === "string") { + data = new Uint8Array(input.length * 2); + length = 0; + + for (let i = 0, ii = input.length; i < ii; i++) { + const code = input.charCodeAt(i); + + if (code <= 0xff) { + data[length++] = code; + } else { + data[length++] = code >>> 8; + data[length++] = code & 0xff; + } + } + } else if ((0, _util.isArrayBuffer)(input)) { + data = input.slice(); + length = data.byteLength; + } else { + throw new Error("Wrong data format in MurmurHash3_64_update. " + "Input must be a string or array."); + } + + const blockCounts = length >> 2; + const tailLength = length - blockCounts * 4; + const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts); + let k1 = 0, + k2 = 0; + let h1 = this.h1, + h2 = this.h2; + const C1 = 0xcc9e2d51, + C2 = 0x1b873593; + const C1_LOW = C1 & MASK_LOW, + C2_LOW = C2 & MASK_LOW; + + for (let i = 0; i < blockCounts; i++) { + if (i & 1) { + k1 = dataUint32[i]; + k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; + k1 = k1 << 15 | k1 >>> 17; + k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + h1 ^= k1; + h1 = h1 << 13 | h1 >>> 19; + h1 = h1 * 5 + 0xe6546b64; + } else { + k2 = dataUint32[i]; + k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW; + k2 = k2 << 15 | k2 >>> 17; + k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW; + h2 ^= k2; + h2 = h2 << 13 | h2 >>> 19; + h2 = h2 * 5 + 0xe6546b64; + } + } + + k1 = 0; + + switch (tailLength) { + case 3: + k1 ^= data[blockCounts * 4 + 2] << 16; + + case 2: + k1 ^= data[blockCounts * 4 + 1] << 8; + + case 1: + k1 ^= data[blockCounts * 4]; + k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; + k1 = k1 << 15 | k1 >>> 17; + k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + + if (blockCounts & 1) { + h1 ^= k1; + } else { + h2 ^= k1; + } + + } + + this.h1 = h1; + this.h2 = h2; + } + + hexdigest() { + let h1 = this.h1, + h2 = this.h2; + h1 ^= h2 >>> 1; + h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW; + h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16; + h1 ^= h2 >>> 1; + h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW; + h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16; + h1 ^= h2 >>> 1; + const hex1 = (h1 >>> 0).toString(16), + hex2 = (h2 >>> 0).toString(16); + return hex1.padStart(8, "0") + hex2.padStart(8, "0"); + } + +} + +exports.MurmurHash3_64 = MurmurHash3_64; + +/***/ }), +/* 11 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FontLoader = exports.FontFaceObject = void 0; + +var _util = __w_pdfjs_require__(1); + +class BaseFontLoader { + constructor({ + docId, + onUnsupportedFeature, + ownerDocument = globalThis.document, + styleElement = null + }) { + if (this.constructor === BaseFontLoader) { + (0, _util.unreachable)("Cannot initialize BaseFontLoader."); + } + + this.docId = docId; + this._onUnsupportedFeature = onUnsupportedFeature; + this._document = ownerDocument; + this.nativeFontFaces = []; + this.styleElement = null; + } + + addNativeFontFace(nativeFontFace) { + this.nativeFontFaces.push(nativeFontFace); + + this._document.fonts.add(nativeFontFace); + } + + insertRule(rule) { + let styleElement = this.styleElement; + + if (!styleElement) { + styleElement = this.styleElement = this._document.createElement("style"); + styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`; + + this._document.documentElement.getElementsByTagName("head")[0].append(styleElement); + } + + const styleSheet = styleElement.sheet; + styleSheet.insertRule(rule, styleSheet.cssRules.length); + } + + clear() { + for (const nativeFontFace of this.nativeFontFaces) { + this._document.fonts.delete(nativeFontFace); + } + + this.nativeFontFaces.length = 0; + + if (this.styleElement) { + this.styleElement.remove(); + this.styleElement = null; + } + } + + async bind(font) { + if (font.attached || font.missingFile) { + return; + } + + font.attached = true; + + if (this.isFontLoadingAPISupported) { + const nativeFontFace = font.createNativeFontFace(); + + if (nativeFontFace) { + this.addNativeFontFace(nativeFontFace); + + try { + await nativeFontFace.loaded; + } catch (ex) { + this._onUnsupportedFeature({ + featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadNative + }); + + (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`); + font.disableFontFace = true; + throw ex; + } + } + + return; + } + + const rule = font.createFontFaceRule(); + + if (rule) { + this.insertRule(rule); + + if (this.isSyncFontLoadingSupported) { + return; + } + + await new Promise(resolve => { + const request = this._queueLoadingCallback(resolve); + + this._prepareFontLoadEvent([rule], [font], request); + }); + } + } + + _queueLoadingCallback(callback) { + (0, _util.unreachable)("Abstract method `_queueLoadingCallback`."); + } + + get isFontLoadingAPISupported() { + const hasFonts = !!this._document?.fonts; + return (0, _util.shadow)(this, "isFontLoadingAPISupported", hasFonts); + } + + get isSyncFontLoadingSupported() { + (0, _util.unreachable)("Abstract method `isSyncFontLoadingSupported`."); + } + + get _loadTestFont() { + (0, _util.unreachable)("Abstract method `_loadTestFont`."); + } + + _prepareFontLoadEvent(rules, fontsToLoad, request) { + (0, _util.unreachable)("Abstract method `_prepareFontLoadEvent`."); + } + +} + +let FontLoader; +exports.FontLoader = FontLoader; +{ + exports.FontLoader = FontLoader = class GenericFontLoader extends BaseFontLoader { + constructor(params) { + super(params); + this.loadingContext = { + requests: [], + nextRequestId: 0 + }; + this.loadTestFontId = 0; + } + + get isSyncFontLoadingSupported() { + let supported = false; + + if (typeof navigator === "undefined") { + supported = true; + } else { + const m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); + + if (m?.[1] >= 14) { + supported = true; + } + } + + return (0, _util.shadow)(this, "isSyncFontLoadingSupported", supported); + } + + _queueLoadingCallback(callback) { + function completeRequest() { + (0, _util.assert)(!request.done, "completeRequest() cannot be called twice."); + request.done = true; + + while (context.requests.length > 0 && context.requests[0].done) { + const otherRequest = context.requests.shift(); + setTimeout(otherRequest.callback, 0); + } + } + + const context = this.loadingContext; + const request = { + id: `pdfjs-font-loading-${context.nextRequestId++}`, + done: false, + complete: completeRequest, + callback + }; + context.requests.push(request); + return request; + } + + get _loadTestFont() { + const getLoadTestFont = function () { + return atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA" + "FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA" + "ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA" + "AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1" + "AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD" + "6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM" + "AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D" + "IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA" + "AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA" + "AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB" + "AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY" + "AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA" + "AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA" + "AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC" + "AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3" + "Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj" + "FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA=="); + }; + + return (0, _util.shadow)(this, "_loadTestFont", getLoadTestFont()); + } + + _prepareFontLoadEvent(rules, fonts, request) { + function int32(data, offset) { + return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff; + } + + function spliceString(s, offset, remove, insert) { + const chunk1 = s.substring(0, offset); + const chunk2 = s.substring(offset + remove); + return chunk1 + insert + chunk2; + } + + let i, ii; + + const canvas = this._document.createElement("canvas"); + + canvas.width = 1; + canvas.height = 1; + const ctx = canvas.getContext("2d"); + let called = 0; + + function isFontReady(name, callback) { + called++; + + if (called > 30) { + (0, _util.warn)("Load test font never loaded."); + callback(); + return; + } + + ctx.font = "30px " + name; + ctx.fillText(".", 0, 20); + const imageData = ctx.getImageData(0, 0, 1, 1); + + if (imageData.data[3] > 0) { + callback(); + return; + } + + setTimeout(isFontReady.bind(null, name, callback)); + } + + const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`; + let data = this._loadTestFont; + const COMMENT_OFFSET = 976; + data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); + const CFF_CHECKSUM_OFFSET = 16; + const XXXX_VALUE = 0x58585858; + let checksum = int32(data, CFF_CHECKSUM_OFFSET); + + for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0; + } + + if (i < loadTestFontId.length) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId + "XXX", i) | 0; + } + + data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum)); + const url = `url(data:font/opentype;base64,${btoa(data)});`; + const rule = `@font-face {font-family:"${loadTestFontId}";src:${url}}`; + this.insertRule(rule); + const names = []; + + for (const font of fonts) { + names.push(font.loadedName); + } + + names.push(loadTestFontId); + + const div = this._document.createElement("div"); + + div.style.visibility = "hidden"; + div.style.width = div.style.height = "10px"; + div.style.position = "absolute"; + div.style.top = div.style.left = "0px"; + + for (const name of names) { + const span = this._document.createElement("span"); + + span.textContent = "Hi"; + span.style.fontFamily = name; + div.append(span); + } + + this._document.body.append(div); + + isFontReady(loadTestFontId, () => { + div.remove(); + request.complete(); + }); + } + + }; +} + +class FontFaceObject { + constructor(translatedData, { + isEvalSupported = true, + disableFontFace = false, + ignoreErrors = false, + onUnsupportedFeature, + fontRegistry = null + }) { + this.compiledGlyphs = Object.create(null); + + for (const i in translatedData) { + this[i] = translatedData[i]; + } + + this.isEvalSupported = isEvalSupported !== false; + this.disableFontFace = disableFontFace === true; + this.ignoreErrors = ignoreErrors === true; + this._onUnsupportedFeature = onUnsupportedFeature; + this.fontRegistry = fontRegistry; + } + + createNativeFontFace() { + if (!this.data || this.disableFontFace) { + return null; + } + + let nativeFontFace; + + if (!this.cssFontInfo) { + nativeFontFace = new FontFace(this.loadedName, this.data, {}); + } else { + const css = { + weight: this.cssFontInfo.fontWeight + }; + + if (this.cssFontInfo.italicAngle) { + css.style = `oblique ${this.cssFontInfo.italicAngle}deg`; + } + + nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css); + } + + if (this.fontRegistry) { + this.fontRegistry.registerFont(this); + } + + return nativeFontFace; + } + + createFontFaceRule() { + if (!this.data || this.disableFontFace) { + return null; + } + + const data = (0, _util.bytesToString)(this.data); + const url = `url(data:${this.mimetype};base64,${btoa(data)});`; + let rule; + + if (!this.cssFontInfo) { + rule = `@font-face {font-family:"${this.loadedName}";src:${url}}`; + } else { + let css = `font-weight: ${this.cssFontInfo.fontWeight};`; + + if (this.cssFontInfo.italicAngle) { + css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`; + } + + rule = `@font-face {font-family:"${this.cssFontInfo.fontFamily}";${css}src:${url}}`; + } + + if (this.fontRegistry) { + this.fontRegistry.registerFont(this, url); + } + + return rule; + } + + getPathGenerator(objs, character) { + if (this.compiledGlyphs[character] !== undefined) { + return this.compiledGlyphs[character]; + } + + let cmds; + + try { + cmds = objs.get(this.loadedName + "_path_" + character); + } catch (ex) { + if (!this.ignoreErrors) { + throw ex; + } + + this._onUnsupportedFeature({ + featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath + }); + + (0, _util.warn)(`getPathGenerator - ignoring character: "${ex}".`); + return this.compiledGlyphs[character] = function (c, size) {}; + } + + if (this.isEvalSupported && _util.FeatureTest.isEvalSupported) { + const jsBuf = []; + + for (const current of cmds) { + const args = current.args !== undefined ? current.args.join(",") : ""; + jsBuf.push("c.", current.cmd, "(", args, ");\n"); + } + + return this.compiledGlyphs[character] = new Function("c", "size", jsBuf.join("")); + } + + return this.compiledGlyphs[character] = function (c, size) { + for (const current of cmds) { + if (current.cmd === "scale") { + current.args = [size, -size]; + } + + c[current.cmd].apply(c, current.args); + } + }; + } + +} + +exports.FontFaceObject = FontFaceObject; + +/***/ }), +/* 12 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.CanvasGraphics = void 0; + +var _display_utils = __w_pdfjs_require__(8); + +var _util = __w_pdfjs_require__(1); + +var _pattern_helper = __w_pdfjs_require__(13); + +var _image_utils = __w_pdfjs_require__(14); + +var _is_node = __w_pdfjs_require__(3); + +const MIN_FONT_SIZE = 16; +const MAX_FONT_SIZE = 100; +const MAX_GROUP_SIZE = 4096; +const EXECUTION_TIME = 15; +const EXECUTION_STEPS = 10; +const MAX_SIZE_TO_COMPILE = _is_node.isNodeJS && typeof Path2D === "undefined" ? -1 : 1000; +const FULL_CHUNK_HEIGHT = 16; + +function mirrorContextOperations(ctx, destCtx) { + if (ctx._removeMirroring) { + throw new Error("Context is already forwarding operations."); + } + + ctx.__originalSave = ctx.save; + ctx.__originalRestore = ctx.restore; + ctx.__originalRotate = ctx.rotate; + ctx.__originalScale = ctx.scale; + ctx.__originalTranslate = ctx.translate; + ctx.__originalTransform = ctx.transform; + ctx.__originalSetTransform = ctx.setTransform; + ctx.__originalResetTransform = ctx.resetTransform; + ctx.__originalClip = ctx.clip; + ctx.__originalMoveTo = ctx.moveTo; + ctx.__originalLineTo = ctx.lineTo; + ctx.__originalBezierCurveTo = ctx.bezierCurveTo; + ctx.__originalRect = ctx.rect; + ctx.__originalClosePath = ctx.closePath; + ctx.__originalBeginPath = ctx.beginPath; + + ctx._removeMirroring = () => { + ctx.save = ctx.__originalSave; + ctx.restore = ctx.__originalRestore; + ctx.rotate = ctx.__originalRotate; + ctx.scale = ctx.__originalScale; + ctx.translate = ctx.__originalTranslate; + ctx.transform = ctx.__originalTransform; + ctx.setTransform = ctx.__originalSetTransform; + ctx.resetTransform = ctx.__originalResetTransform; + ctx.clip = ctx.__originalClip; + ctx.moveTo = ctx.__originalMoveTo; + ctx.lineTo = ctx.__originalLineTo; + ctx.bezierCurveTo = ctx.__originalBezierCurveTo; + ctx.rect = ctx.__originalRect; + ctx.closePath = ctx.__originalClosePath; + ctx.beginPath = ctx.__originalBeginPath; + delete ctx._removeMirroring; + }; + + ctx.save = function ctxSave() { + destCtx.save(); + + this.__originalSave(); + }; + + ctx.restore = function ctxRestore() { + destCtx.restore(); + + this.__originalRestore(); + }; + + ctx.translate = function ctxTranslate(x, y) { + destCtx.translate(x, y); + + this.__originalTranslate(x, y); + }; + + ctx.scale = function ctxScale(x, y) { + destCtx.scale(x, y); + + this.__originalScale(x, y); + }; + + ctx.transform = function ctxTransform(a, b, c, d, e, f) { + destCtx.transform(a, b, c, d, e, f); + + this.__originalTransform(a, b, c, d, e, f); + }; + + ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) { + destCtx.setTransform(a, b, c, d, e, f); + + this.__originalSetTransform(a, b, c, d, e, f); + }; + + ctx.resetTransform = function ctxResetTransform() { + destCtx.resetTransform(); + + this.__originalResetTransform(); + }; + + ctx.rotate = function ctxRotate(angle) { + destCtx.rotate(angle); + + this.__originalRotate(angle); + }; + + ctx.clip = function ctxRotate(rule) { + destCtx.clip(rule); + + this.__originalClip(rule); + }; + + ctx.moveTo = function (x, y) { + destCtx.moveTo(x, y); + + this.__originalMoveTo(x, y); + }; + + ctx.lineTo = function (x, y) { + destCtx.lineTo(x, y); + + this.__originalLineTo(x, y); + }; + + ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) { + destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); + + this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y); + }; + + ctx.rect = function (x, y, width, height) { + destCtx.rect(x, y, width, height); + + this.__originalRect(x, y, width, height); + }; + + ctx.closePath = function () { + destCtx.closePath(); + + this.__originalClosePath(); + }; + + ctx.beginPath = function () { + destCtx.beginPath(); + + this.__originalBeginPath(); + }; +} + +class CachedCanvases { + constructor(canvasFactory) { + this.canvasFactory = canvasFactory; + this.cache = Object.create(null); + } + + getCanvas(id, width, height) { + let canvasEntry; + + if (this.cache[id] !== undefined) { + canvasEntry = this.cache[id]; + this.canvasFactory.reset(canvasEntry, width, height); + } else { + canvasEntry = this.canvasFactory.create(width, height); + this.cache[id] = canvasEntry; + } + + return canvasEntry; + } + + delete(id) { + delete this.cache[id]; + } + + clear() { + for (const id in this.cache) { + const canvasEntry = this.cache[id]; + this.canvasFactory.destroy(canvasEntry); + delete this.cache[id]; + } + } + +} + +function drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) { + const [a, b, c, d, tx, ty] = (0, _display_utils.getCurrentTransform)(ctx); + + if (b === 0 && c === 0) { + const tlX = destX * a + tx; + const rTlX = Math.round(tlX); + const tlY = destY * d + ty; + const rTlY = Math.round(tlY); + const brX = (destX + destW) * a + tx; + const rWidth = Math.abs(Math.round(brX) - rTlX) || 1; + const brY = (destY + destH) * d + ty; + const rHeight = Math.abs(Math.round(brY) - rTlY) || 1; + ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY); + ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight); + ctx.setTransform(a, b, c, d, tx, ty); + return [rWidth, rHeight]; + } + + if (a === 0 && d === 0) { + const tlX = destY * c + tx; + const rTlX = Math.round(tlX); + const tlY = destX * b + ty; + const rTlY = Math.round(tlY); + const brX = (destY + destH) * c + tx; + const rWidth = Math.abs(Math.round(brX) - rTlX) || 1; + const brY = (destX + destW) * b + ty; + const rHeight = Math.abs(Math.round(brY) - rTlY) || 1; + ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY); + ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth); + ctx.setTransform(a, b, c, d, tx, ty); + return [rHeight, rWidth]; + } + + ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH); + const scaleX = Math.hypot(a, b); + const scaleY = Math.hypot(c, d); + return [scaleX * destW, scaleY * destH]; +} + +function compileType3Glyph(imgData) { + const { + width, + height + } = imgData; + + if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) { + return null; + } + + const POINT_TO_PROCESS_LIMIT = 1000; + const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]); + const width1 = width + 1; + let points = new Uint8Array(width1 * (height + 1)); + let i, j, j0; + const lineSize = width + 7 & ~7; + let data = new Uint8Array(lineSize * height), + pos = 0; + + for (const elem of imgData.data) { + let mask = 128; + + while (mask > 0) { + data[pos++] = elem & mask ? 0 : 255; + mask >>= 1; + } + } + + let count = 0; + pos = 0; + + if (data[pos] !== 0) { + points[0] = 1; + ++count; + } + + for (j = 1; j < width; j++) { + if (data[pos] !== data[pos + 1]) { + points[j] = data[pos] ? 2 : 1; + ++count; + } + + pos++; + } + + if (data[pos] !== 0) { + points[j] = 2; + ++count; + } + + for (i = 1; i < height; i++) { + pos = i * lineSize; + j0 = i * width1; + + if (data[pos - lineSize] !== data[pos]) { + points[j0] = data[pos] ? 1 : 8; + ++count; + } + + let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0); + + for (j = 1; j < width; j++) { + sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0); + + if (POINT_TYPES[sum]) { + points[j0 + j] = POINT_TYPES[sum]; + ++count; + } + + pos++; + } + + if (data[pos - lineSize] !== data[pos]) { + points[j0 + j] = data[pos] ? 2 : 4; + ++count; + } + + if (count > POINT_TO_PROCESS_LIMIT) { + return null; + } + } + + pos = lineSize * (height - 1); + j0 = i * width1; + + if (data[pos] !== 0) { + points[j0] = 8; + ++count; + } + + for (j = 1; j < width; j++) { + if (data[pos] !== data[pos + 1]) { + points[j0 + j] = data[pos] ? 4 : 8; + ++count; + } + + pos++; + } + + if (data[pos] !== 0) { + points[j0 + j] = 4; + ++count; + } + + if (count > POINT_TO_PROCESS_LIMIT) { + return null; + } + + const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]); + const path = new Path2D(); + + for (i = 0; count && i <= height; i++) { + let p = i * width1; + const end = p + width; + + while (p < end && !points[p]) { + p++; + } + + if (p === end) { + continue; + } + + path.moveTo(p % width1, i); + const p0 = p; + let type = points[p]; + + do { + const step = steps[type]; + + do { + p += step; + } while (!points[p]); + + const pp = points[p]; + + if (pp !== 5 && pp !== 10) { + type = pp; + points[p] = 0; + } else { + type = pp & 0x33 * type >> 4; + points[p] &= type >> 2 | type << 2; + } + + path.lineTo(p % width1, p / width1 | 0); + + if (!points[p]) { + --count; + } + } while (p0 !== p); + + --i; + } + + data = null; + points = null; + + const drawOutline = function (c) { + c.save(); + c.scale(1 / width, -1 / height); + c.translate(0, -height); + c.fill(path); + c.beginPath(); + c.restore(); + }; + + return drawOutline; +} + +class CanvasExtraState { + constructor(width, height) { + this.alphaIsShape = false; + this.fontSize = 0; + this.fontSizeScale = 1; + this.textMatrix = _util.IDENTITY_MATRIX; + this.textMatrixScale = 1; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; + this.leading = 0; + this.x = 0; + this.y = 0; + this.lineX = 0; + this.lineY = 0; + this.charSpacing = 0; + this.wordSpacing = 0; + this.textHScale = 1; + this.textRenderingMode = _util.TextRenderingMode.FILL; + this.textRise = 0; + this.fillColor = "#000000"; + this.strokeColor = "#000000"; + this.patternFill = false; + this.fillAlpha = 1; + this.strokeAlpha = 1; + this.lineWidth = 1; + this.activeSMask = null; + this.transferMaps = null; + this.startNewPathAndClipBox([0, 0, width, height]); + } + + clone() { + const clone = Object.create(this); + clone.clipBox = this.clipBox.slice(); + return clone; + } + + setCurrentPoint(x, y) { + this.x = x; + this.y = y; + } + + updatePathMinMax(transform, x, y) { + [x, y] = _util.Util.applyTransform([x, y], transform); + this.minX = Math.min(this.minX, x); + this.minY = Math.min(this.minY, y); + this.maxX = Math.max(this.maxX, x); + this.maxY = Math.max(this.maxY, y); + } + + updateRectMinMax(transform, rect) { + const p1 = _util.Util.applyTransform(rect, transform); + + const p2 = _util.Util.applyTransform(rect.slice(2), transform); + + this.minX = Math.min(this.minX, p1[0], p2[0]); + this.minY = Math.min(this.minY, p1[1], p2[1]); + this.maxX = Math.max(this.maxX, p1[0], p2[0]); + this.maxY = Math.max(this.maxY, p1[1], p2[1]); + } + + updateScalingPathMinMax(transform, minMax) { + _util.Util.scaleMinMax(transform, minMax); + + this.minX = Math.min(this.minX, minMax[0]); + this.maxX = Math.max(this.maxX, minMax[1]); + this.minY = Math.min(this.minY, minMax[2]); + this.maxY = Math.max(this.maxY, minMax[3]); + } + + updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) { + const box = _util.Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3); + + if (minMax) { + minMax[0] = Math.min(minMax[0], box[0], box[2]); + minMax[1] = Math.max(minMax[1], box[0], box[2]); + minMax[2] = Math.min(minMax[2], box[1], box[3]); + minMax[3] = Math.max(minMax[3], box[1], box[3]); + return; + } + + this.updateRectMinMax(transform, box); + } + + getPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) { + const box = [this.minX, this.minY, this.maxX, this.maxY]; + + if (pathType === _pattern_helper.PathType.STROKE) { + if (!transform) { + (0, _util.unreachable)("Stroke bounding box must include transform."); + } + + const scale = _util.Util.singularValueDecompose2dScale(transform); + + const xStrokePad = scale[0] * this.lineWidth / 2; + const yStrokePad = scale[1] * this.lineWidth / 2; + box[0] -= xStrokePad; + box[1] -= yStrokePad; + box[2] += xStrokePad; + box[3] += yStrokePad; + } + + return box; + } + + updateClipFromPath() { + const intersect = _util.Util.intersect(this.clipBox, this.getPathBoundingBox()); + + this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]); + } + + isEmptyClip() { + return this.minX === Infinity; + } + + startNewPathAndClipBox(box) { + this.clipBox = box; + this.minX = Infinity; + this.minY = Infinity; + this.maxX = 0; + this.maxY = 0; + } + + getClippedPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) { + return _util.Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform)); + } + +} + +function putBinaryImageData(ctx, imgData, transferMaps = null) { + if (typeof ImageData !== "undefined" && imgData instanceof ImageData) { + ctx.putImageData(imgData, 0, 0); + return; + } + + const height = imgData.height, + width = imgData.width; + const partialChunkHeight = height % FULL_CHUNK_HEIGHT; + const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; + const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; + const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); + let srcPos = 0, + destPos; + const src = imgData.data; + const dest = chunkImgData.data; + let i, j, thisChunkHeight, elemsInThisChunk; + let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray; + + if (transferMaps) { + switch (transferMaps.length) { + case 1: + transferMapRed = transferMaps[0]; + transferMapGreen = transferMaps[0]; + transferMapBlue = transferMaps[0]; + transferMapGray = transferMaps[0]; + break; + + case 4: + transferMapRed = transferMaps[0]; + transferMapGreen = transferMaps[1]; + transferMapBlue = transferMaps[2]; + transferMapGray = transferMaps[3]; + break; + } + } + + if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) { + const srcLength = src.byteLength; + const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2); + const dest32DataLength = dest32.length; + const fullSrcDiff = width + 7 >> 3; + let white = 0xffffffff; + let black = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + + if (transferMapGray) { + if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) { + [white, black] = [black, white]; + } + } + + for (i = 0; i < totalChunks; i++) { + thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; + destPos = 0; + + for (j = 0; j < thisChunkHeight; j++) { + const srcDiff = srcLength - srcPos; + let k = 0; + const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7; + const kEndUnrolled = kEnd & ~7; + let mask = 0; + let srcByte = 0; + + for (; k < kEndUnrolled; k += 8) { + srcByte = src[srcPos++]; + dest32[destPos++] = srcByte & 128 ? white : black; + dest32[destPos++] = srcByte & 64 ? white : black; + dest32[destPos++] = srcByte & 32 ? white : black; + dest32[destPos++] = srcByte & 16 ? white : black; + dest32[destPos++] = srcByte & 8 ? white : black; + dest32[destPos++] = srcByte & 4 ? white : black; + dest32[destPos++] = srcByte & 2 ? white : black; + dest32[destPos++] = srcByte & 1 ? white : black; + } + + for (; k < kEnd; k++) { + if (mask === 0) { + srcByte = src[srcPos++]; + mask = 128; + } + + dest32[destPos++] = srcByte & mask ? white : black; + mask >>= 1; + } + } + + while (destPos < dest32DataLength) { + dest32[destPos++] = 0; + } + + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } + } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) { + const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue); + j = 0; + elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4; + + for (i = 0; i < fullChunks; i++) { + dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); + srcPos += elemsInThisChunk; + + if (hasTransferMaps) { + for (let k = 0; k < elemsInThisChunk; k += 4) { + if (transferMapRed) { + dest[k + 0] = transferMapRed[dest[k + 0]]; + } + + if (transferMapGreen) { + dest[k + 1] = transferMapGreen[dest[k + 1]]; + } + + if (transferMapBlue) { + dest[k + 2] = transferMapBlue[dest[k + 2]]; + } + } + } + + ctx.putImageData(chunkImgData, 0, j); + j += FULL_CHUNK_HEIGHT; + } + + if (i < totalChunks) { + elemsInThisChunk = width * partialChunkHeight * 4; + dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); + + if (hasTransferMaps) { + for (let k = 0; k < elemsInThisChunk; k += 4) { + if (transferMapRed) { + dest[k + 0] = transferMapRed[dest[k + 0]]; + } + + if (transferMapGreen) { + dest[k + 1] = transferMapGreen[dest[k + 1]]; + } + + if (transferMapBlue) { + dest[k + 2] = transferMapBlue[dest[k + 2]]; + } + } + } + + ctx.putImageData(chunkImgData, 0, j); + } + } else if (imgData.kind === _util.ImageKind.RGB_24BPP) { + const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue); + thisChunkHeight = FULL_CHUNK_HEIGHT; + elemsInThisChunk = width * thisChunkHeight; + + for (i = 0; i < totalChunks; i++) { + if (i >= fullChunks) { + thisChunkHeight = partialChunkHeight; + elemsInThisChunk = width * thisChunkHeight; + } + + destPos = 0; + + for (j = elemsInThisChunk; j--;) { + dest[destPos++] = src[srcPos++]; + dest[destPos++] = src[srcPos++]; + dest[destPos++] = src[srcPos++]; + dest[destPos++] = 255; + } + + if (hasTransferMaps) { + for (let k = 0; k < destPos; k += 4) { + if (transferMapRed) { + dest[k + 0] = transferMapRed[dest[k + 0]]; + } + + if (transferMapGreen) { + dest[k + 1] = transferMapGreen[dest[k + 1]]; + } + + if (transferMapBlue) { + dest[k + 2] = transferMapBlue[dest[k + 2]]; + } + } + } + + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } + } else { + throw new Error(`bad image kind: ${imgData.kind}`); + } +} + +function putBinaryImageMask(ctx, imgData) { + if (imgData.bitmap) { + ctx.drawImage(imgData.bitmap, 0, 0); + return; + } + + const height = imgData.height, + width = imgData.width; + const partialChunkHeight = height % FULL_CHUNK_HEIGHT; + const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; + const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; + const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); + let srcPos = 0; + const src = imgData.data; + const dest = chunkImgData.data; + + for (let i = 0; i < totalChunks; i++) { + const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; + ({ + srcPos + } = (0, _image_utils.applyMaskImageData)({ + src, + srcPos, + dest, + width, + height: thisChunkHeight + })); + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } +} + +function copyCtxState(sourceCtx, destCtx) { + const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font"]; + + for (let i = 0, ii = properties.length; i < ii; i++) { + const property = properties[i]; + + if (sourceCtx[property] !== undefined) { + destCtx[property] = sourceCtx[property]; + } + } + + if (sourceCtx.setLineDash !== undefined) { + destCtx.setLineDash(sourceCtx.getLineDash()); + destCtx.lineDashOffset = sourceCtx.lineDashOffset; + } +} + +function resetCtxToDefault(ctx, foregroundColor) { + ctx.strokeStyle = ctx.fillStyle = foregroundColor || "#000000"; + ctx.fillRule = "nonzero"; + ctx.globalAlpha = 1; + ctx.lineWidth = 1; + ctx.lineCap = "butt"; + ctx.lineJoin = "miter"; + ctx.miterLimit = 10; + ctx.globalCompositeOperation = "source-over"; + ctx.font = "10px sans-serif"; + + if (ctx.setLineDash !== undefined) { + ctx.setLineDash([]); + ctx.lineDashOffset = 0; + } +} + +function composeSMaskBackdrop(bytes, r0, g0, b0) { + const length = bytes.length; + + for (let i = 3; i < length; i += 4) { + const alpha = bytes[i]; + + if (alpha === 0) { + bytes[i - 3] = r0; + bytes[i - 2] = g0; + bytes[i - 1] = b0; + } else if (alpha < 255) { + const alpha_ = 255 - alpha; + bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8; + bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8; + bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8; + } + } +} + +function composeSMaskAlpha(maskData, layerData, transferMap) { + const length = maskData.length; + const scale = 1 / 255; + + for (let i = 3; i < length; i += 4) { + const alpha = transferMap ? transferMap[maskData[i]] : maskData[i]; + layerData[i] = layerData[i] * alpha * scale | 0; + } +} + +function composeSMaskLuminosity(maskData, layerData, transferMap) { + const length = maskData.length; + + for (let i = 3; i < length; i += 4) { + const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28; + layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16; + } +} + +function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) { + const hasBackdrop = !!backdrop; + const r0 = hasBackdrop ? backdrop[0] : 0; + const g0 = hasBackdrop ? backdrop[1] : 0; + const b0 = hasBackdrop ? backdrop[2] : 0; + let composeFn; + + if (subtype === "Luminosity") { + composeFn = composeSMaskLuminosity; + } else { + composeFn = composeSMaskAlpha; + } + + const PIXELS_TO_PROCESS = 1048576; + const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width)); + + for (let row = 0; row < height; row += chunkSize) { + const chunkHeight = Math.min(chunkSize, height - row); + const maskData = maskCtx.getImageData(layerOffsetX - maskOffsetX, row + (layerOffsetY - maskOffsetY), width, chunkHeight); + const layerData = layerCtx.getImageData(layerOffsetX, row + layerOffsetY, width, chunkHeight); + + if (hasBackdrop) { + composeSMaskBackdrop(maskData.data, r0, g0, b0); + } + + composeFn(maskData.data, layerData.data, transferMap); + layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY); + } +} + +function composeSMask(ctx, smask, layerCtx, layerBox) { + const layerOffsetX = layerBox[0]; + const layerOffsetY = layerBox[1]; + const layerWidth = layerBox[2] - layerOffsetX; + const layerHeight = layerBox[3] - layerOffsetY; + + if (layerWidth === 0 || layerHeight === 0) { + return; + } + + genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY); + ctx.save(); + ctx.globalAlpha = 1; + ctx.globalCompositeOperation = "source-over"; + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.drawImage(layerCtx.canvas, 0, 0); + ctx.restore(); +} + +function getImageSmoothingEnabled(transform, interpolate) { + const scale = _util.Util.singularValueDecompose2dScale(transform); + + scale[0] = Math.fround(scale[0]); + scale[1] = Math.fround(scale[1]); + const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS); + + if (interpolate !== undefined) { + return interpolate; + } else if (scale[0] <= actualScale || scale[1] <= actualScale) { + return true; + } + + return false; +} + +const LINE_CAP_STYLES = ["butt", "round", "square"]; +const LINE_JOIN_STYLES = ["miter", "round", "bevel"]; +const NORMAL_CLIP = {}; +const EO_CLIP = {}; + +class CanvasGraphics { + constructor(canvasCtx, commonObjs, objs, canvasFactory, imageLayer, optionalContentConfig, annotationCanvasMap, pageColors) { + this.ctx = canvasCtx; + this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height); + this.stateStack = []; + this.pendingClip = null; + this.pendingEOFill = false; + this.res = null; + this.xobjs = null; + this.commonObjs = commonObjs; + this.objs = objs; + this.canvasFactory = canvasFactory; + this.imageLayer = imageLayer; + this.groupStack = []; + this.processingType3 = null; + this.baseTransform = null; + this.baseTransformStack = []; + this.groupLevel = 0; + this.smaskStack = []; + this.smaskCounter = 0; + this.tempSMask = null; + this.suspendedCtx = null; + this.contentVisible = true; + this.markedContentStack = []; + this.optionalContentConfig = optionalContentConfig; + this.cachedCanvases = new CachedCanvases(this.canvasFactory); + this.cachedPatterns = new Map(); + this.annotationCanvasMap = annotationCanvasMap; + this.viewportScale = 1; + this.outputScaleX = 1; + this.outputScaleY = 1; + this.backgroundColor = pageColors?.background || null; + this.foregroundColor = pageColors?.foreground || null; + this._cachedScaleForStroking = null; + this._cachedGetSinglePixelWidth = null; + this._cachedBitmapsMap = new Map(); + } + + getObject(data, fallback = null) { + if (typeof data === "string") { + return data.startsWith("g_") ? this.commonObjs.get(data) : this.objs.get(data); + } + + return fallback; + } + + beginDrawing({ + transform, + viewport, + transparency = false, + background = null + }) { + const width = this.ctx.canvas.width; + const height = this.ctx.canvas.height; + const defaultBackgroundColor = background || "#ffffff"; + this.ctx.save(); + + if (this.foregroundColor && this.backgroundColor) { + this.ctx.fillStyle = this.foregroundColor; + const fg = this.foregroundColor = this.ctx.fillStyle; + this.ctx.fillStyle = this.backgroundColor; + const bg = this.backgroundColor = this.ctx.fillStyle; + let isValidDefaultBg = true; + let defaultBg = defaultBackgroundColor; + this.ctx.fillStyle = defaultBackgroundColor; + defaultBg = this.ctx.fillStyle; + isValidDefaultBg = typeof defaultBg === "string" && /^#[0-9A-Fa-f]{6}$/.test(defaultBg); + + if (fg === "#000000" && bg === "#ffffff" || fg === bg || !isValidDefaultBg) { + this.foregroundColor = this.backgroundColor = null; + } else { + const [rB, gB, bB] = (0, _display_utils.getRGB)(defaultBg); + + const newComp = x => { + x /= 255; + return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4; + }; + + const lumB = Math.round(0.2126 * newComp(rB) + 0.7152 * newComp(gB) + 0.0722 * newComp(bB)); + + this.selectColor = (r, g, b) => { + const lumC = 0.2126 * newComp(r) + 0.7152 * newComp(g) + 0.0722 * newComp(b); + return Math.round(lumC) === lumB ? bg : fg; + }; + } + } + + this.ctx.fillStyle = this.backgroundColor || defaultBackgroundColor; + this.ctx.fillRect(0, 0, width, height); + this.ctx.restore(); + + if (transparency) { + const transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height); + this.compositeCtx = this.ctx; + this.transparentCanvas = transparentCanvas.canvas; + this.ctx = transparentCanvas.context; + this.ctx.save(); + this.ctx.transform(...(0, _display_utils.getCurrentTransform)(this.compositeCtx)); + } + + this.ctx.save(); + resetCtxToDefault(this.ctx, this.foregroundColor); + + if (transform) { + this.ctx.transform(...transform); + this.outputScaleX = transform[0]; + this.outputScaleY = transform[0]; + } + + this.ctx.transform(...viewport.transform); + this.viewportScale = viewport.scale; + this.baseTransform = (0, _display_utils.getCurrentTransform)(this.ctx); + + if (this.imageLayer) { + (0, _display_utils.deprecated)("The `imageLayer` functionality will be removed in the future."); + this.imageLayer.beginLayout(); + } + } + + executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) { + const argsArray = operatorList.argsArray; + const fnArray = operatorList.fnArray; + let i = executionStartIdx || 0; + const argsArrayLen = argsArray.length; + + if (argsArrayLen === i) { + return i; + } + + const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function"; + const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0; + let steps = 0; + const commonObjs = this.commonObjs; + const objs = this.objs; + let fnId; + + while (true) { + if (stepper !== undefined && i === stepper.nextBreakPoint) { + stepper.breakIt(i, continueCallback); + return i; + } + + fnId = fnArray[i]; + + if (fnId !== _util.OPS.dependency) { + this[fnId].apply(this, argsArray[i]); + } else { + for (const depObjId of argsArray[i]) { + const objsPool = depObjId.startsWith("g_") ? commonObjs : objs; + + if (!objsPool.has(depObjId)) { + objsPool.get(depObjId, continueCallback); + return i; + } + } + } + + i++; + + if (i === argsArrayLen) { + return i; + } + + if (chunkOperations && ++steps > EXECUTION_STEPS) { + if (Date.now() > endTime) { + continueCallback(); + return i; + } + + steps = 0; + } + } + } + + #restoreInitialState() { + while (this.stateStack.length || this.inSMaskMode) { + this.restore(); + } + + this.ctx.restore(); + + if (this.transparentCanvas) { + this.ctx = this.compositeCtx; + this.ctx.save(); + this.ctx.setTransform(1, 0, 0, 1, 0, 0); + this.ctx.drawImage(this.transparentCanvas, 0, 0); + this.ctx.restore(); + this.transparentCanvas = null; + } + } + + endDrawing() { + this.#restoreInitialState(); + this.cachedCanvases.clear(); + this.cachedPatterns.clear(); + + for (const cache of this._cachedBitmapsMap.values()) { + for (const canvas of cache.values()) { + if (typeof HTMLCanvasElement !== "undefined" && canvas instanceof HTMLCanvasElement) { + canvas.width = canvas.height = 0; + } + } + + cache.clear(); + } + + this._cachedBitmapsMap.clear(); + + if (this.imageLayer) { + this.imageLayer.endLayout(); + } + } + + _scaleImage(img, inverseTransform) { + const width = img.width; + const height = img.height; + let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1); + let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1); + let paintWidth = width, + paintHeight = height; + let tmpCanvasId = "prescale1"; + let tmpCanvas, tmpCtx; + + while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) { + let newWidth = paintWidth, + newHeight = paintHeight; + + if (widthScale > 2 && paintWidth > 1) { + newWidth = Math.ceil(paintWidth / 2); + widthScale /= paintWidth / newWidth; + } + + if (heightScale > 2 && paintHeight > 1) { + newHeight = Math.ceil(paintHeight / 2); + heightScale /= paintHeight / newHeight; + } + + tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight); + tmpCtx = tmpCanvas.context; + tmpCtx.clearRect(0, 0, newWidth, newHeight); + tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight); + img = tmpCanvas.canvas; + paintWidth = newWidth; + paintHeight = newHeight; + tmpCanvasId = tmpCanvasId === "prescale1" ? "prescale2" : "prescale1"; + } + + return { + img, + paintWidth, + paintHeight + }; + } + + _createMaskCanvas(img) { + const ctx = this.ctx; + const { + width, + height + } = img; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + const currentTransform = (0, _display_utils.getCurrentTransform)(ctx); + let cache, cacheKey, scaled, maskCanvas; + + if ((img.bitmap || img.data) && img.count > 1) { + const mainKey = img.bitmap || img.data.buffer; + const withoutTranslation = currentTransform.slice(0, 4); + cacheKey = JSON.stringify(isPatternFill ? withoutTranslation : [withoutTranslation, fillColor]); + cache = this._cachedBitmapsMap.get(mainKey); + + if (!cache) { + cache = new Map(); + + this._cachedBitmapsMap.set(mainKey, cache); + } + + const cachedImage = cache.get(cacheKey); + + if (cachedImage && !isPatternFill) { + const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]); + const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]); + return { + canvas: cachedImage, + offsetX, + offsetY + }; + } + + scaled = cachedImage; + } + + if (!scaled) { + maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); + putBinaryImageMask(maskCanvas.context, img); + } + + let maskToCanvas = _util.Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]); + + maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]); + + const cord1 = _util.Util.applyTransform([0, 0], maskToCanvas); + + const cord2 = _util.Util.applyTransform([width, height], maskToCanvas); + + const rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]); + + const drawnWidth = Math.round(rect[2] - rect[0]) || 1; + const drawnHeight = Math.round(rect[3] - rect[1]) || 1; + const fillCanvas = this.cachedCanvases.getCanvas("fillCanvas", drawnWidth, drawnHeight); + const fillCtx = fillCanvas.context; + const offsetX = Math.min(cord1[0], cord2[0]); + const offsetY = Math.min(cord1[1], cord2[1]); + fillCtx.translate(-offsetX, -offsetY); + fillCtx.transform(...maskToCanvas); + + if (!scaled) { + scaled = this._scaleImage(maskCanvas.canvas, (0, _display_utils.getCurrentTransformInverse)(fillCtx)); + scaled = scaled.img; + + if (cache && isPatternFill) { + cache.set(cacheKey, scaled); + } + } + + fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled((0, _display_utils.getCurrentTransform)(fillCtx), img.interpolate); + drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height); + fillCtx.globalCompositeOperation = "source-in"; + + const inverse = _util.Util.transform((0, _display_utils.getCurrentTransformInverse)(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]); + + fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, _pattern_helper.PathType.FILL) : fillColor; + fillCtx.fillRect(0, 0, width, height); + + if (cache && !isPatternFill) { + this.cachedCanvases.delete("fillCanvas"); + cache.set(cacheKey, fillCanvas.canvas); + } + + return { + canvas: fillCanvas.canvas, + offsetX: Math.round(offsetX), + offsetY: Math.round(offsetY) + }; + } + + setLineWidth(width) { + if (width !== this.current.lineWidth) { + this._cachedScaleForStroking = null; + } + + this.current.lineWidth = width; + this.ctx.lineWidth = width; + } + + setLineCap(style) { + this.ctx.lineCap = LINE_CAP_STYLES[style]; + } + + setLineJoin(style) { + this.ctx.lineJoin = LINE_JOIN_STYLES[style]; + } + + setMiterLimit(limit) { + this.ctx.miterLimit = limit; + } + + setDash(dashArray, dashPhase) { + const ctx = this.ctx; + + if (ctx.setLineDash !== undefined) { + ctx.setLineDash(dashArray); + ctx.lineDashOffset = dashPhase; + } + } + + setRenderingIntent(intent) {} + + setFlatness(flatness) {} + + setGState(states) { + for (let i = 0, ii = states.length; i < ii; i++) { + const state = states[i]; + const key = state[0]; + const value = state[1]; + + switch (key) { + case "LW": + this.setLineWidth(value); + break; + + case "LC": + this.setLineCap(value); + break; + + case "LJ": + this.setLineJoin(value); + break; + + case "ML": + this.setMiterLimit(value); + break; + + case "D": + this.setDash(value[0], value[1]); + break; + + case "RI": + this.setRenderingIntent(value); + break; + + case "FL": + this.setFlatness(value); + break; + + case "Font": + this.setFont(value[0], value[1]); + break; + + case "CA": + this.current.strokeAlpha = state[1]; + break; + + case "ca": + this.current.fillAlpha = state[1]; + this.ctx.globalAlpha = state[1]; + break; + + case "BM": + this.ctx.globalCompositeOperation = value; + break; + + case "SMask": + this.current.activeSMask = value ? this.tempSMask : null; + this.tempSMask = null; + this.checkSMaskState(); + break; + + case "TR": + this.current.transferMaps = value; + } + } + } + + get inSMaskMode() { + return !!this.suspendedCtx; + } + + checkSMaskState() { + const inSMaskMode = this.inSMaskMode; + + if (this.current.activeSMask && !inSMaskMode) { + this.beginSMaskMode(); + } else if (!this.current.activeSMask && inSMaskMode) { + this.endSMaskMode(); + } + } + + beginSMaskMode() { + if (this.inSMaskMode) { + throw new Error("beginSMaskMode called while already in smask mode"); + } + + const drawnWidth = this.ctx.canvas.width; + const drawnHeight = this.ctx.canvas.height; + const cacheId = "smaskGroupAt" + this.groupLevel; + const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight); + this.suspendedCtx = this.ctx; + this.ctx = scratchCanvas.context; + const ctx = this.ctx; + ctx.setTransform(...(0, _display_utils.getCurrentTransform)(this.suspendedCtx)); + copyCtxState(this.suspendedCtx, ctx); + mirrorContextOperations(ctx, this.suspendedCtx); + this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]); + } + + endSMaskMode() { + if (!this.inSMaskMode) { + throw new Error("endSMaskMode called while not in smask mode"); + } + + this.ctx._removeMirroring(); + + copyCtxState(this.ctx, this.suspendedCtx); + this.ctx = this.suspendedCtx; + this.suspendedCtx = null; + } + + compose(dirtyBox) { + if (!this.current.activeSMask) { + return; + } + + if (!dirtyBox) { + dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height]; + } else { + dirtyBox[0] = Math.floor(dirtyBox[0]); + dirtyBox[1] = Math.floor(dirtyBox[1]); + dirtyBox[2] = Math.ceil(dirtyBox[2]); + dirtyBox[3] = Math.ceil(dirtyBox[3]); + } + + const smask = this.current.activeSMask; + const suspendedCtx = this.suspendedCtx; + composeSMask(suspendedCtx, smask, this.ctx, dirtyBox); + this.ctx.save(); + this.ctx.setTransform(1, 0, 0, 1, 0, 0); + this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height); + this.ctx.restore(); + } + + save() { + if (this.inSMaskMode) { + copyCtxState(this.ctx, this.suspendedCtx); + this.suspendedCtx.save(); + } else { + this.ctx.save(); + } + + const old = this.current; + this.stateStack.push(old); + this.current = old.clone(); + } + + restore() { + if (this.stateStack.length === 0 && this.inSMaskMode) { + this.endSMaskMode(); + } + + if (this.stateStack.length !== 0) { + this.current = this.stateStack.pop(); + + if (this.inSMaskMode) { + this.suspendedCtx.restore(); + copyCtxState(this.suspendedCtx, this.ctx); + } else { + this.ctx.restore(); + } + + this.checkSMaskState(); + this.pendingClip = null; + this._cachedScaleForStroking = null; + this._cachedGetSinglePixelWidth = null; + } + } + + transform(a, b, c, d, e, f) { + this.ctx.transform(a, b, c, d, e, f); + this._cachedScaleForStroking = null; + this._cachedGetSinglePixelWidth = null; + } + + constructPath(ops, args, minMax) { + const ctx = this.ctx; + const current = this.current; + let x = current.x, + y = current.y; + let startX, startY; + const currentTransform = (0, _display_utils.getCurrentTransform)(ctx); + const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0; + const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null; + + for (let i = 0, j = 0, ii = ops.length; i < ii; i++) { + switch (ops[i] | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + const width = args[j++]; + const height = args[j++]; + const xw = x + width; + const yh = y + height; + ctx.moveTo(x, y); + + if (width === 0 || height === 0) { + ctx.lineTo(xw, yh); + } else { + ctx.lineTo(xw, y); + ctx.lineTo(xw, yh); + ctx.lineTo(x, yh); + } + + if (!isScalingMatrix) { + current.updateRectMinMax(currentTransform, [x, y, xw, yh]); + } + + ctx.closePath(); + break; + + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + ctx.moveTo(x, y); + + if (!isScalingMatrix) { + current.updatePathMinMax(currentTransform, x, y); + } + + break; + + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + ctx.lineTo(x, y); + + if (!isScalingMatrix) { + current.updatePathMinMax(currentTransform, x, y); + } + + break; + + case _util.OPS.curveTo: + startX = x; + startY = y; + x = args[j + 4]; + y = args[j + 5]; + ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y); + current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier); + j += 6; + break; + + case _util.OPS.curveTo2: + startX = x; + startY = y; + ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]); + current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier); + x = args[j + 2]; + y = args[j + 3]; + j += 4; + break; + + case _util.OPS.curveTo3: + startX = x; + startY = y; + x = args[j + 2]; + y = args[j + 3]; + ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y); + current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier); + j += 4; + break; + + case _util.OPS.closePath: + ctx.closePath(); + break; + } + } + + if (isScalingMatrix) { + current.updateScalingPathMinMax(currentTransform, minMaxForBezier); + } + + current.setCurrentPoint(x, y); + } + + closePath() { + this.ctx.closePath(); + } + + stroke(consumePath) { + consumePath = typeof consumePath !== "undefined" ? consumePath : true; + const ctx = this.ctx; + const strokeColor = this.current.strokeColor; + ctx.globalAlpha = this.current.strokeAlpha; + + if (this.contentVisible) { + if (typeof strokeColor === "object" && strokeColor?.getPattern) { + ctx.save(); + ctx.strokeStyle = strokeColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.STROKE); + this.rescaleAndStroke(false); + ctx.restore(); + } else { + this.rescaleAndStroke(true); + } + } + + if (consumePath) { + this.consumePath(this.current.getClippedPathBoundingBox()); + } + + ctx.globalAlpha = this.current.fillAlpha; + } + + closeStroke() { + this.closePath(); + this.stroke(); + } + + fill(consumePath) { + consumePath = typeof consumePath !== "undefined" ? consumePath : true; + const ctx = this.ctx; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + let needRestore = false; + + if (isPatternFill) { + ctx.save(); + ctx.fillStyle = fillColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL); + needRestore = true; + } + + const intersect = this.current.getClippedPathBoundingBox(); + + if (this.contentVisible && intersect !== null) { + if (this.pendingEOFill) { + ctx.fill("evenodd"); + this.pendingEOFill = false; + } else { + ctx.fill(); + } + } + + if (needRestore) { + ctx.restore(); + } + + if (consumePath) { + this.consumePath(intersect); + } + } + + eoFill() { + this.pendingEOFill = true; + this.fill(); + } + + fillStroke() { + this.fill(false); + this.stroke(false); + this.consumePath(); + } + + eoFillStroke() { + this.pendingEOFill = true; + this.fillStroke(); + } + + closeFillStroke() { + this.closePath(); + this.fillStroke(); + } + + closeEOFillStroke() { + this.pendingEOFill = true; + this.closePath(); + this.fillStroke(); + } + + endPath() { + this.consumePath(); + } + + clip() { + this.pendingClip = NORMAL_CLIP; + } + + eoClip() { + this.pendingClip = EO_CLIP; + } + + beginText() { + this.current.textMatrix = _util.IDENTITY_MATRIX; + this.current.textMatrixScale = 1; + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + } + + endText() { + const paths = this.pendingTextPaths; + const ctx = this.ctx; + + if (paths === undefined) { + ctx.beginPath(); + return; + } + + ctx.save(); + ctx.beginPath(); + + for (const path of paths) { + ctx.setTransform(...path.transform); + ctx.translate(path.x, path.y); + path.addToPath(ctx, path.fontSize); + } + + ctx.restore(); + ctx.clip(); + ctx.beginPath(); + delete this.pendingTextPaths; + } + + setCharSpacing(spacing) { + this.current.charSpacing = spacing; + } + + setWordSpacing(spacing) { + this.current.wordSpacing = spacing; + } + + setHScale(scale) { + this.current.textHScale = scale / 100; + } + + setLeading(leading) { + this.current.leading = -leading; + } + + setFont(fontRefName, size) { + const fontObj = this.commonObjs.get(fontRefName); + const current = this.current; + + if (!fontObj) { + throw new Error(`Can't find font for ${fontRefName}`); + } + + current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; + + if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) { + (0, _util.warn)("Invalid font matrix for font " + fontRefName); + } + + if (size < 0) { + size = -size; + current.fontDirection = -1; + } else { + current.fontDirection = 1; + } + + this.current.font = fontObj; + this.current.fontSize = size; + + if (fontObj.isType3Font) { + return; + } + + const name = fontObj.loadedName || "sans-serif"; + let bold = "normal"; + + if (fontObj.black) { + bold = "900"; + } else if (fontObj.bold) { + bold = "bold"; + } + + const italic = fontObj.italic ? "italic" : "normal"; + const typeface = `"${name}", ${fontObj.fallbackName}`; + let browserFontSize = size; + + if (size < MIN_FONT_SIZE) { + browserFontSize = MIN_FONT_SIZE; + } else if (size > MAX_FONT_SIZE) { + browserFontSize = MAX_FONT_SIZE; + } + + this.current.fontSizeScale = size / browserFontSize; + this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`; + } + + setTextRenderingMode(mode) { + this.current.textRenderingMode = mode; + } + + setTextRise(rise) { + this.current.textRise = rise; + } + + moveText(x, y) { + this.current.x = this.current.lineX += x; + this.current.y = this.current.lineY += y; + } + + setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + } + + setTextMatrix(a, b, c, d, e, f) { + this.current.textMatrix = [a, b, c, d, e, f]; + this.current.textMatrixScale = Math.hypot(a, b); + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + } + + nextLine() { + this.moveText(0, this.current.leading); + } + + paintChar(character, x, y, patternTransform) { + const ctx = this.ctx; + const current = this.current; + const font = current.font; + const textRenderingMode = current.textRenderingMode; + const fontSize = current.fontSize / current.fontSizeScale; + const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); + const patternFill = current.patternFill && !font.missingFile; + let addToPath; + + if (font.disableFontFace || isAddToPathSet || patternFill) { + addToPath = font.getPathGenerator(this.commonObjs, character); + } + + if (font.disableFontFace || patternFill) { + ctx.save(); + ctx.translate(x, y); + ctx.beginPath(); + addToPath(ctx, fontSize); + + if (patternTransform) { + ctx.setTransform(...patternTransform); + } + + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.fill(); + } + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.stroke(); + } + + ctx.restore(); + } else { + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.fillText(character, x, y); + } + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.strokeText(character, x, y); + } + } + + if (isAddToPathSet) { + const paths = this.pendingTextPaths || (this.pendingTextPaths = []); + paths.push({ + transform: (0, _display_utils.getCurrentTransform)(ctx), + x, + y, + fontSize, + addToPath + }); + } + } + + get isFontSubpixelAAEnabled() { + const { + context: ctx + } = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10); + ctx.scale(1.5, 1); + ctx.fillText("I", 0, 10); + const data = ctx.getImageData(0, 0, 10, 10).data; + let enabled = false; + + for (let i = 3; i < data.length; i += 4) { + if (data[i] > 0 && data[i] < 255) { + enabled = true; + break; + } + } + + return (0, _util.shadow)(this, "isFontSubpixelAAEnabled", enabled); + } + + showText(glyphs) { + const current = this.current; + const font = current.font; + + if (font.isType3Font) { + return this.showType3Text(glyphs); + } + + const fontSize = current.fontSize; + + if (fontSize === 0) { + return undefined; + } + + const ctx = this.ctx; + const fontSizeScale = current.fontSizeScale; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const fontDirection = current.fontDirection; + const textHScale = current.textHScale * fontDirection; + const glyphsLength = glyphs.length; + const vertical = font.vertical; + const spacingDir = vertical ? 1 : -1; + const defaultVMetrics = font.defaultVMetrics; + const widthAdvanceScale = fontSize * current.fontMatrix[0]; + const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill; + ctx.save(); + ctx.transform(...current.textMatrix); + ctx.translate(current.x, current.y + current.textRise); + + if (fontDirection > 0) { + ctx.scale(textHScale, -1); + } else { + ctx.scale(textHScale, 1); + } + + let patternTransform; + + if (current.patternFill) { + ctx.save(); + const pattern = current.fillColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL); + patternTransform = (0, _display_utils.getCurrentTransform)(ctx); + ctx.restore(); + ctx.fillStyle = pattern; + } + + let lineWidth = current.lineWidth; + const scale = current.textMatrixScale; + + if (scale === 0 || lineWidth === 0) { + const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + lineWidth = this.getSinglePixelWidth(); + } + } else { + lineWidth /= scale; + } + + if (fontSizeScale !== 1.0) { + ctx.scale(fontSizeScale, fontSizeScale); + lineWidth /= fontSizeScale; + } + + ctx.lineWidth = lineWidth; + let x = 0, + i; + + for (i = 0; i < glyphsLength; ++i) { + const glyph = glyphs[i]; + + if (typeof glyph === "number") { + x += spacingDir * glyph * fontSize / 1000; + continue; + } + + let restoreNeeded = false; + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const character = glyph.fontChar; + const accent = glyph.accent; + let scaledX, scaledY; + let width = glyph.width; + + if (vertical) { + const vmetric = glyph.vmetric || defaultVMetrics; + const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale; + const vy = vmetric[2] * widthAdvanceScale; + width = vmetric ? -vmetric[0] : width; + scaledX = vx / fontSizeScale; + scaledY = (x + vy) / fontSizeScale; + } else { + scaledX = x / fontSizeScale; + scaledY = 0; + } + + if (font.remeasure && width > 0) { + const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale; + + if (width < measuredWidth && this.isFontSubpixelAAEnabled) { + const characterScaleX = width / measuredWidth; + restoreNeeded = true; + ctx.save(); + ctx.scale(characterScaleX, 1); + scaledX /= characterScaleX; + } else if (width !== measuredWidth) { + scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale; + } + } + + if (this.contentVisible && (glyph.isInFont || font.missingFile)) { + if (simpleFillText && !accent) { + ctx.fillText(character, scaledX, scaledY); + } else { + this.paintChar(character, scaledX, scaledY, patternTransform); + + if (accent) { + const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale; + const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale; + this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform); + } + } + } + + let charWidth; + + if (vertical) { + charWidth = width * widthAdvanceScale - spacing * fontDirection; + } else { + charWidth = width * widthAdvanceScale + spacing * fontDirection; + } + + x += charWidth; + + if (restoreNeeded) { + ctx.restore(); + } + } + + if (vertical) { + current.y -= x; + } else { + current.x += x * textHScale; + } + + ctx.restore(); + this.compose(); + return undefined; + } + + showType3Text(glyphs) { + const ctx = this.ctx; + const current = this.current; + const font = current.font; + const fontSize = current.fontSize; + const fontDirection = current.fontDirection; + const spacingDir = font.vertical ? 1 : -1; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const textHScale = current.textHScale * fontDirection; + const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX; + const glyphsLength = glyphs.length; + const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE; + let i, glyph, width, spacingLength; + + if (isTextInvisible || fontSize === 0) { + return; + } + + this._cachedScaleForStroking = null; + this._cachedGetSinglePixelWidth = null; + ctx.save(); + ctx.transform(...current.textMatrix); + ctx.translate(current.x, current.y); + ctx.scale(textHScale, fontDirection); + + for (i = 0; i < glyphsLength; ++i) { + glyph = glyphs[i]; + + if (typeof glyph === "number") { + spacingLength = spacingDir * glyph * fontSize / 1000; + this.ctx.translate(spacingLength, 0); + current.x += spacingLength * textHScale; + continue; + } + + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const operatorList = font.charProcOperatorList[glyph.operatorListId]; + + if (!operatorList) { + (0, _util.warn)(`Type3 character "${glyph.operatorListId}" is not available.`); + continue; + } + + if (this.contentVisible) { + this.processingType3 = glyph; + this.save(); + ctx.scale(fontSize, fontSize); + ctx.transform(...fontMatrix); + this.executeOperatorList(operatorList); + this.restore(); + } + + const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix); + + width = transformed[0] * fontSize + spacing; + ctx.translate(width, 0); + current.x += width * textHScale; + } + + ctx.restore(); + this.processingType3 = null; + } + + setCharWidth(xWidth, yWidth) {} + + setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) { + this.ctx.rect(llx, lly, urx - llx, ury - lly); + this.ctx.clip(); + this.endPath(); + } + + getColorN_Pattern(IR) { + let pattern; + + if (IR[0] === "TilingPattern") { + const color = IR[1]; + const baseTransform = this.baseTransform || (0, _display_utils.getCurrentTransform)(this.ctx); + const canvasGraphicsFactory = { + createCanvasGraphics: ctx => { + return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory); + } + }; + pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform); + } else { + pattern = this._getPattern(IR[1], IR[2]); + } + + return pattern; + } + + setStrokeColorN() { + this.current.strokeColor = this.getColorN_Pattern(arguments); + } + + setFillColorN() { + this.current.fillColor = this.getColorN_Pattern(arguments); + this.current.patternFill = true; + } + + setStrokeRGBColor(r, g, b) { + const color = this.selectColor?.(r, g, b) || _util.Util.makeHexColor(r, g, b); + + this.ctx.strokeStyle = color; + this.current.strokeColor = color; + } + + setFillRGBColor(r, g, b) { + const color = this.selectColor?.(r, g, b) || _util.Util.makeHexColor(r, g, b); + + this.ctx.fillStyle = color; + this.current.fillColor = color; + this.current.patternFill = false; + } + + _getPattern(objId, matrix = null) { + let pattern; + + if (this.cachedPatterns.has(objId)) { + pattern = this.cachedPatterns.get(objId); + } else { + pattern = (0, _pattern_helper.getShadingPattern)(this.objs.get(objId)); + this.cachedPatterns.set(objId, pattern); + } + + if (matrix) { + pattern.matrix = matrix; + } + + return pattern; + } + + shadingFill(objId) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + this.save(); + + const pattern = this._getPattern(objId); + + ctx.fillStyle = pattern.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.SHADING); + const inv = (0, _display_utils.getCurrentTransformInverse)(ctx); + + if (inv) { + const canvas = ctx.canvas; + const width = canvas.width; + const height = canvas.height; + + const bl = _util.Util.applyTransform([0, 0], inv); + + const br = _util.Util.applyTransform([0, height], inv); + + const ul = _util.Util.applyTransform([width, 0], inv); + + const ur = _util.Util.applyTransform([width, height], inv); + + const x0 = Math.min(bl[0], br[0], ul[0], ur[0]); + const y0 = Math.min(bl[1], br[1], ul[1], ur[1]); + const x1 = Math.max(bl[0], br[0], ul[0], ur[0]); + const y1 = Math.max(bl[1], br[1], ul[1], ur[1]); + this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0); + } else { + this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10); + } + + this.compose(this.current.getClippedPathBoundingBox()); + this.restore(); + } + + beginInlineImage() { + (0, _util.unreachable)("Should not call beginInlineImage"); + } + + beginImageData() { + (0, _util.unreachable)("Should not call beginImageData"); + } + + paintFormXObjectBegin(matrix, bbox) { + if (!this.contentVisible) { + return; + } + + this.save(); + this.baseTransformStack.push(this.baseTransform); + + if (Array.isArray(matrix) && matrix.length === 6) { + this.transform(...matrix); + } + + this.baseTransform = (0, _display_utils.getCurrentTransform)(this.ctx); + + if (bbox) { + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + this.ctx.rect(bbox[0], bbox[1], width, height); + this.current.updateRectMinMax((0, _display_utils.getCurrentTransform)(this.ctx), bbox); + this.clip(); + this.endPath(); + } + } + + paintFormXObjectEnd() { + if (!this.contentVisible) { + return; + } + + this.restore(); + this.baseTransform = this.baseTransformStack.pop(); + } + + beginGroup(group) { + if (!this.contentVisible) { + return; + } + + this.save(); + + if (this.inSMaskMode) { + this.endSMaskMode(); + this.current.activeSMask = null; + } + + const currentCtx = this.ctx; + + if (!group.isolated) { + (0, _util.info)("TODO: Support non-isolated groups."); + } + + if (group.knockout) { + (0, _util.warn)("Knockout groups not supported."); + } + + const currentTransform = (0, _display_utils.getCurrentTransform)(currentCtx); + + if (group.matrix) { + currentCtx.transform(...group.matrix); + } + + if (!group.bbox) { + throw new Error("Bounding box is required."); + } + + let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, (0, _display_utils.getCurrentTransform)(currentCtx)); + + const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height]; + bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; + const offsetX = Math.floor(bounds[0]); + const offsetY = Math.floor(bounds[1]); + let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1); + let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1); + let scaleX = 1, + scaleY = 1; + + if (drawnWidth > MAX_GROUP_SIZE) { + scaleX = drawnWidth / MAX_GROUP_SIZE; + drawnWidth = MAX_GROUP_SIZE; + } + + if (drawnHeight > MAX_GROUP_SIZE) { + scaleY = drawnHeight / MAX_GROUP_SIZE; + drawnHeight = MAX_GROUP_SIZE; + } + + this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]); + let cacheId = "groupAt" + this.groupLevel; + + if (group.smask) { + cacheId += "_smask_" + this.smaskCounter++ % 2; + } + + const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight); + const groupCtx = scratchCanvas.context; + groupCtx.scale(1 / scaleX, 1 / scaleY); + groupCtx.translate(-offsetX, -offsetY); + groupCtx.transform(...currentTransform); + + if (group.smask) { + this.smaskStack.push({ + canvas: scratchCanvas.canvas, + context: groupCtx, + offsetX, + offsetY, + scaleX, + scaleY, + subtype: group.smask.subtype, + backdrop: group.smask.backdrop, + transferMap: group.smask.transferMap || null, + startTransformInverse: null + }); + } else { + currentCtx.setTransform(1, 0, 0, 1, 0, 0); + currentCtx.translate(offsetX, offsetY); + currentCtx.scale(scaleX, scaleY); + currentCtx.save(); + } + + copyCtxState(currentCtx, groupCtx); + this.ctx = groupCtx; + this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]); + this.groupStack.push(currentCtx); + this.groupLevel++; + } + + endGroup(group) { + if (!this.contentVisible) { + return; + } + + this.groupLevel--; + const groupCtx = this.ctx; + const ctx = this.groupStack.pop(); + this.ctx = ctx; + this.ctx.imageSmoothingEnabled = false; + + if (group.smask) { + this.tempSMask = this.smaskStack.pop(); + this.restore(); + } else { + this.ctx.restore(); + const currentMtx = (0, _display_utils.getCurrentTransform)(this.ctx); + this.restore(); + this.ctx.save(); + this.ctx.setTransform(...currentMtx); + + const dirtyBox = _util.Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx); + + this.ctx.drawImage(groupCtx.canvas, 0, 0); + this.ctx.restore(); + this.compose(dirtyBox); + } + } + + beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) { + this.#restoreInitialState(); + resetCtxToDefault(this.ctx, this.foregroundColor); + this.ctx.save(); + this.save(); + + if (this.baseTransform) { + this.ctx.setTransform(...this.baseTransform); + } + + if (Array.isArray(rect) && rect.length === 4) { + const width = rect[2] - rect[0]; + const height = rect[3] - rect[1]; + + if (hasOwnCanvas && this.annotationCanvasMap) { + transform = transform.slice(); + transform[4] -= rect[0]; + transform[5] -= rect[1]; + rect = rect.slice(); + rect[0] = rect[1] = 0; + rect[2] = width; + rect[3] = height; + + const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale((0, _display_utils.getCurrentTransform)(this.ctx)); + + const { + viewportScale + } = this; + const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale); + const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale); + this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight); + const { + canvas, + context + } = this.annotationCanvas; + this.annotationCanvasMap.set(id, canvas); + this.annotationCanvas.savedCtx = this.ctx; + this.ctx = context; + this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY); + resetCtxToDefault(this.ctx, this.foregroundColor); + } else { + resetCtxToDefault(this.ctx, this.foregroundColor); + this.ctx.rect(rect[0], rect[1], width, height); + this.ctx.clip(); + this.endPath(); + } + } + + this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height); + this.transform(...transform); + this.transform(...matrix); + } + + endAnnotation() { + if (this.annotationCanvas) { + this.ctx = this.annotationCanvas.savedCtx; + delete this.annotationCanvas.savedCtx; + delete this.annotationCanvas; + } + } + + paintImageMaskXObject(img) { + if (!this.contentVisible) { + return; + } + + const count = img.count; + img = this.getObject(img.data, img); + img.count = count; + const ctx = this.ctx; + const glyph = this.processingType3; + + if (glyph) { + if (glyph.compiled === undefined) { + glyph.compiled = compileType3Glyph(img); + } + + if (glyph.compiled) { + glyph.compiled(ctx); + return; + } + } + + const mask = this._createMaskCanvas(img); + + const maskCanvas = mask.canvas; + ctx.save(); + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY); + ctx.restore(); + this.compose(); + } + + paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) { + if (!this.contentVisible) { + return; + } + + img = this.getObject(img.data, img); + const ctx = this.ctx; + ctx.save(); + const currentTransform = (0, _display_utils.getCurrentTransform)(ctx); + ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0); + + const mask = this._createMaskCanvas(img); + + ctx.setTransform(1, 0, 0, 1, 0, 0); + + for (let i = 0, ii = positions.length; i < ii; i += 2) { + const trans = _util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]); + + const [x, y] = _util.Util.applyTransform([0, 0], trans); + + ctx.drawImage(mask.canvas, x, y); + } + + ctx.restore(); + this.compose(); + } + + paintImageMaskXObjectGroup(images) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + const fillColor = this.current.fillColor; + const isPatternFill = this.current.patternFill; + + for (const image of images) { + const { + data, + width, + height, + transform + } = image; + const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height); + const maskCtx = maskCanvas.context; + maskCtx.save(); + const img = this.getObject(data, image); + putBinaryImageMask(maskCtx, img); + maskCtx.globalCompositeOperation = "source-in"; + maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL) : fillColor; + maskCtx.fillRect(0, 0, width, height); + maskCtx.restore(); + ctx.save(); + ctx.transform(...transform); + ctx.scale(1, -1); + drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1); + ctx.restore(); + } + + this.compose(); + } + + paintImageXObject(objId) { + if (!this.contentVisible) { + return; + } + + const imgData = this.getObject(objId); + + if (!imgData) { + (0, _util.warn)("Dependent image isn't ready yet"); + return; + } + + this.paintInlineImageXObject(imgData); + } + + paintImageXObjectRepeat(objId, scaleX, scaleY, positions) { + if (!this.contentVisible) { + return; + } + + const imgData = this.getObject(objId); + + if (!imgData) { + (0, _util.warn)("Dependent image isn't ready yet"); + return; + } + + const width = imgData.width; + const height = imgData.height; + const map = []; + + for (let i = 0, ii = positions.length; i < ii; i += 2) { + map.push({ + transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]], + x: 0, + y: 0, + w: width, + h: height + }); + } + + this.paintInlineImageXObjectGroup(imgData, map); + } + + paintInlineImageXObject(imgData) { + if (!this.contentVisible) { + return; + } + + const width = imgData.width; + const height = imgData.height; + const ctx = this.ctx; + this.save(); + ctx.scale(1 / width, -1 / height); + let imgToPaint; + + if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) { + imgToPaint = imgData; + } else { + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height); + const tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData, this.current.transferMaps); + imgToPaint = tmpCanvas.canvas; + } + + const scaled = this._scaleImage(imgToPaint, (0, _display_utils.getCurrentTransformInverse)(ctx)); + + ctx.imageSmoothingEnabled = getImageSmoothingEnabled((0, _display_utils.getCurrentTransform)(ctx), imgData.interpolate); + const [rWidth, rHeight] = drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height); + + if (this.imageLayer) { + const [left, top] = _util.Util.applyTransform([0, -height], (0, _display_utils.getCurrentTransform)(this.ctx)); + + this.imageLayer.appendImage({ + imgData, + left, + top, + width: rWidth, + height: rHeight + }); + } + + this.compose(); + this.restore(); + } + + paintInlineImageXObjectGroup(imgData, map) { + if (!this.contentVisible) { + return; + } + + const ctx = this.ctx; + const w = imgData.width; + const h = imgData.height; + const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h); + const tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData, this.current.transferMaps); + + for (const entry of map) { + ctx.save(); + ctx.transform(...entry.transform); + ctx.scale(1, -1); + drawImageAtIntegerCoords(ctx, tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1); + + if (this.imageLayer) { + const [left, top] = _util.Util.applyTransform([entry.x, entry.y], (0, _display_utils.getCurrentTransform)(this.ctx)); + + this.imageLayer.appendImage({ + imgData, + left, + top, + width: w, + height: h + }); + } + + ctx.restore(); + } + + this.compose(); + } + + paintSolidColorImageMask() { + if (!this.contentVisible) { + return; + } + + this.ctx.fillRect(0, 0, 1, 1); + this.compose(); + } + + markPoint(tag) {} + + markPointProps(tag, properties) {} + + beginMarkedContent(tag) { + this.markedContentStack.push({ + visible: true + }); + } + + beginMarkedContentProps(tag, properties) { + if (tag === "OC") { + this.markedContentStack.push({ + visible: this.optionalContentConfig.isVisible(properties) + }); + } else { + this.markedContentStack.push({ + visible: true + }); + } + + this.contentVisible = this.isContentVisible(); + } + + endMarkedContent() { + this.markedContentStack.pop(); + this.contentVisible = this.isContentVisible(); + } + + beginCompat() {} + + endCompat() {} + + consumePath(clipBox) { + const isEmpty = this.current.isEmptyClip(); + + if (this.pendingClip) { + this.current.updateClipFromPath(); + } + + if (!this.pendingClip) { + this.compose(clipBox); + } + + const ctx = this.ctx; + + if (this.pendingClip) { + if (!isEmpty) { + if (this.pendingClip === EO_CLIP) { + ctx.clip("evenodd"); + } else { + ctx.clip(); + } + } + + this.pendingClip = null; + } + + this.current.startNewPathAndClipBox(this.current.clipBox); + ctx.beginPath(); + } + + getSinglePixelWidth() { + if (!this._cachedGetSinglePixelWidth) { + const m = (0, _display_utils.getCurrentTransform)(this.ctx); + + if (m[1] === 0 && m[2] === 0) { + this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3])); + } else { + const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]); + const normX = Math.hypot(m[0], m[2]); + const normY = Math.hypot(m[1], m[3]); + this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet; + } + } + + return this._cachedGetSinglePixelWidth; + } + + getScaleForStroking() { + if (!this._cachedScaleForStroking) { + const { + lineWidth + } = this.current; + const m = (0, _display_utils.getCurrentTransform)(this.ctx); + let scaleX, scaleY; + + if (m[1] === 0 && m[2] === 0) { + const normX = Math.abs(m[0]); + const normY = Math.abs(m[3]); + + if (lineWidth === 0) { + scaleX = 1 / normX; + scaleY = 1 / normY; + } else { + const scaledXLineWidth = normX * lineWidth; + const scaledYLineWidth = normY * lineWidth; + scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1; + scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1; + } + } else { + const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]); + const normX = Math.hypot(m[0], m[1]); + const normY = Math.hypot(m[2], m[3]); + + if (lineWidth === 0) { + scaleX = normY / absDet; + scaleY = normX / absDet; + } else { + const baseArea = lineWidth * absDet; + scaleX = normY > baseArea ? normY / baseArea : 1; + scaleY = normX > baseArea ? normX / baseArea : 1; + } + } + + this._cachedScaleForStroking = [scaleX, scaleY]; + } + + return this._cachedScaleForStroking; + } + + rescaleAndStroke(saveRestore) { + const { + ctx + } = this; + const { + lineWidth + } = this.current; + const [scaleX, scaleY] = this.getScaleForStroking(); + ctx.lineWidth = lineWidth || 1; + + if (scaleX === 1 && scaleY === 1) { + ctx.stroke(); + return; + } + + let savedMatrix, savedDashes, savedDashOffset; + + if (saveRestore) { + savedMatrix = (0, _display_utils.getCurrentTransform)(ctx); + savedDashes = ctx.getLineDash().slice(); + savedDashOffset = ctx.lineDashOffset; + } + + ctx.scale(scaleX, scaleY); + const scale = Math.max(scaleX, scaleY); + ctx.setLineDash(ctx.getLineDash().map(x => x / scale)); + ctx.lineDashOffset /= scale; + ctx.stroke(); + + if (saveRestore) { + ctx.setTransform(...savedMatrix); + ctx.setLineDash(savedDashes); + ctx.lineDashOffset = savedDashOffset; + } + } + + isContentVisible() { + for (let i = this.markedContentStack.length - 1; i >= 0; i--) { + if (!this.markedContentStack[i].visible) { + return false; + } + } + + return true; + } + +} + +exports.CanvasGraphics = CanvasGraphics; + +for (const op in _util.OPS) { + if (CanvasGraphics.prototype[op] !== undefined) { + CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op]; + } +} + +/***/ }), +/* 13 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TilingPattern = exports.PathType = void 0; +exports.getShadingPattern = getShadingPattern; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(8); + +var _is_node = __w_pdfjs_require__(3); + +const PathType = { + FILL: "Fill", + STROKE: "Stroke", + SHADING: "Shading" +}; +exports.PathType = PathType; + +function applyBoundingBox(ctx, bbox) { + if (!bbox || _is_node.isNodeJS) { + return; + } + + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + const region = new Path2D(); + region.rect(bbox[0], bbox[1], width, height); + ctx.clip(region); +} + +class BaseShadingPattern { + constructor() { + if (this.constructor === BaseShadingPattern) { + (0, _util.unreachable)("Cannot initialize BaseShadingPattern."); + } + } + + getPattern() { + (0, _util.unreachable)("Abstract method `getPattern` called."); + } + +} + +class RadialAxialShadingPattern extends BaseShadingPattern { + constructor(IR) { + super(); + this._type = IR[1]; + this._bbox = IR[2]; + this._colorStops = IR[3]; + this._p0 = IR[4]; + this._p1 = IR[5]; + this._r0 = IR[6]; + this._r1 = IR[7]; + this.matrix = null; + } + + _createGradient(ctx) { + let grad; + + if (this._type === "axial") { + grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]); + } else if (this._type === "radial") { + grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1); + } + + for (const colorStop of this._colorStops) { + grad.addColorStop(colorStop[0], colorStop[1]); + } + + return grad; + } + + getPattern(ctx, owner, inverse, pathType) { + let pattern; + + if (pathType === PathType.STROKE || pathType === PathType.FILL) { + const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, (0, _display_utils.getCurrentTransform)(ctx)) || [0, 0, 0, 0]; + const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1; + const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1; + const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", width, height, true); + const tmpCtx = tmpCanvas.context; + tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height); + tmpCtx.beginPath(); + tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height); + tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]); + inverse = _util.Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]); + tmpCtx.transform(...owner.baseTransform); + + if (this.matrix) { + tmpCtx.transform(...this.matrix); + } + + applyBoundingBox(tmpCtx, this._bbox); + tmpCtx.fillStyle = this._createGradient(tmpCtx); + tmpCtx.fill(); + pattern = ctx.createPattern(tmpCanvas.canvas, "no-repeat"); + const domMatrix = new DOMMatrix(inverse); + + try { + pattern.setTransform(domMatrix); + } catch (ex) { + (0, _util.warn)(`RadialAxialShadingPattern.getPattern: "${ex?.message}".`); + } + } else { + applyBoundingBox(ctx, this._bbox); + pattern = this._createGradient(ctx); + } + + return pattern; + } + +} + +function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) { + const coords = context.coords, + colors = context.colors; + const bytes = data.data, + rowSize = data.width * 4; + let tmp; + + if (coords[p1 + 1] > coords[p2 + 1]) { + tmp = p1; + p1 = p2; + p2 = tmp; + tmp = c1; + c1 = c2; + c2 = tmp; + } + + if (coords[p2 + 1] > coords[p3 + 1]) { + tmp = p2; + p2 = p3; + p3 = tmp; + tmp = c2; + c2 = c3; + c3 = tmp; + } + + if (coords[p1 + 1] > coords[p2 + 1]) { + tmp = p1; + p1 = p2; + p2 = tmp; + tmp = c1; + c1 = c2; + c2 = tmp; + } + + const x1 = (coords[p1] + context.offsetX) * context.scaleX; + const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY; + const x2 = (coords[p2] + context.offsetX) * context.scaleX; + const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY; + const x3 = (coords[p3] + context.offsetX) * context.scaleX; + const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY; + + if (y1 >= y3) { + return; + } + + const c1r = colors[c1], + c1g = colors[c1 + 1], + c1b = colors[c1 + 2]; + const c2r = colors[c2], + c2g = colors[c2 + 1], + c2b = colors[c2 + 2]; + const c3r = colors[c3], + c3g = colors[c3 + 1], + c3b = colors[c3 + 2]; + const minY = Math.round(y1), + maxY = Math.round(y3); + let xa, car, cag, cab; + let xb, cbr, cbg, cbb; + + for (let y = minY; y <= maxY; y++) { + if (y < y2) { + let k; + + if (y < y1) { + k = 0; + } else { + k = (y1 - y) / (y1 - y2); + } + + xa = x1 - (x1 - x2) * k; + car = c1r - (c1r - c2r) * k; + cag = c1g - (c1g - c2g) * k; + cab = c1b - (c1b - c2b) * k; + } else { + let k; + + if (y > y3) { + k = 1; + } else if (y2 === y3) { + k = 0; + } else { + k = (y2 - y) / (y2 - y3); + } + + xa = x2 - (x2 - x3) * k; + car = c2r - (c2r - c3r) * k; + cag = c2g - (c2g - c3g) * k; + cab = c2b - (c2b - c3b) * k; + } + + let k; + + if (y < y1) { + k = 0; + } else if (y > y3) { + k = 1; + } else { + k = (y1 - y) / (y1 - y3); + } + + xb = x1 - (x1 - x3) * k; + cbr = c1r - (c1r - c3r) * k; + cbg = c1g - (c1g - c3g) * k; + cbb = c1b - (c1b - c3b) * k; + const x1_ = Math.round(Math.min(xa, xb)); + const x2_ = Math.round(Math.max(xa, xb)); + let j = rowSize * y + x1_ * 4; + + for (let x = x1_; x <= x2_; x++) { + k = (xa - x) / (xa - xb); + + if (k < 0) { + k = 0; + } else if (k > 1) { + k = 1; + } + + bytes[j++] = car - (car - cbr) * k | 0; + bytes[j++] = cag - (cag - cbg) * k | 0; + bytes[j++] = cab - (cab - cbb) * k | 0; + bytes[j++] = 255; + } + } +} + +function drawFigure(data, figure, context) { + const ps = figure.coords; + const cs = figure.colors; + let i, ii; + + switch (figure.type) { + case "lattice": + const verticesPerRow = figure.verticesPerRow; + const rows = Math.floor(ps.length / verticesPerRow) - 1; + const cols = verticesPerRow - 1; + + for (i = 0; i < rows; i++) { + let q = i * verticesPerRow; + + for (let j = 0; j < cols; j++, q++) { + drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]); + drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]); + } + } + + break; + + case "triangles": + for (i = 0, ii = ps.length; i < ii; i += 3) { + drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]); + } + + break; + + default: + throw new Error("illegal figure"); + } +} + +class MeshShadingPattern extends BaseShadingPattern { + constructor(IR) { + super(); + this._coords = IR[2]; + this._colors = IR[3]; + this._figures = IR[4]; + this._bounds = IR[5]; + this._bbox = IR[7]; + this._background = IR[8]; + this.matrix = null; + } + + _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) { + const EXPECTED_SCALE = 1.1; + const MAX_PATTERN_SIZE = 3000; + const BORDER_SIZE = 2; + const offsetX = Math.floor(this._bounds[0]); + const offsetY = Math.floor(this._bounds[1]); + const boundsWidth = Math.ceil(this._bounds[2]) - offsetX; + const boundsHeight = Math.ceil(this._bounds[3]) - offsetY; + const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); + const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); + const scaleX = boundsWidth / width; + const scaleY = boundsHeight / height; + const context = { + coords: this._coords, + colors: this._colors, + offsetX: -offsetX, + offsetY: -offsetY, + scaleX: 1 / scaleX, + scaleY: 1 / scaleY + }; + const paddedWidth = width + BORDER_SIZE * 2; + const paddedHeight = height + BORDER_SIZE * 2; + const tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false); + const tmpCtx = tmpCanvas.context; + const data = tmpCtx.createImageData(width, height); + + if (backgroundColor) { + const bytes = data.data; + + for (let i = 0, ii = bytes.length; i < ii; i += 4) { + bytes[i] = backgroundColor[0]; + bytes[i + 1] = backgroundColor[1]; + bytes[i + 2] = backgroundColor[2]; + bytes[i + 3] = 255; + } + } + + for (const figure of this._figures) { + drawFigure(data, figure, context); + } + + tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE); + const canvas = tmpCanvas.canvas; + return { + canvas, + offsetX: offsetX - BORDER_SIZE * scaleX, + offsetY: offsetY - BORDER_SIZE * scaleY, + scaleX, + scaleY + }; + } + + getPattern(ctx, owner, inverse, pathType) { + applyBoundingBox(ctx, this._bbox); + let scale; + + if (pathType === PathType.SHADING) { + scale = _util.Util.singularValueDecompose2dScale((0, _display_utils.getCurrentTransform)(ctx)); + } else { + scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform); + + if (this.matrix) { + const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); + + scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]]; + } + } + + const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases); + + if (pathType !== PathType.SHADING) { + ctx.setTransform(...owner.baseTransform); + + if (this.matrix) { + ctx.transform(...this.matrix); + } + } + + ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); + ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY); + return ctx.createPattern(temporaryPatternCanvas.canvas, "no-repeat"); + } + +} + +class DummyShadingPattern extends BaseShadingPattern { + getPattern() { + return "hotpink"; + } + +} + +function getShadingPattern(IR) { + switch (IR[0]) { + case "RadialAxial": + return new RadialAxialShadingPattern(IR); + + case "Mesh": + return new MeshShadingPattern(IR); + + case "Dummy": + return new DummyShadingPattern(); + } + + throw new Error(`Unknown IR type: ${IR[0]}`); +} + +const PaintType = { + COLORED: 1, + UNCOLORED: 2 +}; + +class TilingPattern { + static get MAX_PATTERN_SIZE() { + return (0, _util.shadow)(this, "MAX_PATTERN_SIZE", 3000); + } + + constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) { + this.operatorList = IR[2]; + this.matrix = IR[3] || [1, 0, 0, 1, 0, 0]; + this.bbox = IR[4]; + this.xstep = IR[5]; + this.ystep = IR[6]; + this.paintType = IR[7]; + this.tilingType = IR[8]; + this.color = color; + this.ctx = ctx; + this.canvasGraphicsFactory = canvasGraphicsFactory; + this.baseTransform = baseTransform; + } + + createPatternCanvas(owner) { + const operatorList = this.operatorList; + const bbox = this.bbox; + const xstep = this.xstep; + const ystep = this.ystep; + const paintType = this.paintType; + const tilingType = this.tilingType; + const color = this.color; + const canvasGraphicsFactory = this.canvasGraphicsFactory; + (0, _util.info)("TilingType: " + tilingType); + const x0 = bbox[0], + y0 = bbox[1], + x1 = bbox[2], + y1 = bbox[3]; + + const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); + + const curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform); + + const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]]; + const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]); + const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]); + const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true); + const tmpCtx = tmpCanvas.context; + const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx); + graphics.groupLevel = owner.groupLevel; + this.setFillAndStrokeStyleToContext(graphics, paintType, color); + let adjustedX0 = x0; + let adjustedY0 = y0; + let adjustedX1 = x1; + let adjustedY1 = y1; + + if (x0 < 0) { + adjustedX0 = 0; + adjustedX1 += Math.abs(x0); + } + + if (y0 < 0) { + adjustedY0 = 0; + adjustedY1 += Math.abs(y0); + } + + tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0)); + graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0); + tmpCtx.save(); + this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1); + graphics.baseTransform = (0, _display_utils.getCurrentTransform)(graphics.ctx); + graphics.executeOperatorList(operatorList); + graphics.endDrawing(); + return { + canvas: tmpCanvas.canvas, + scaleX: dimx.scale, + scaleY: dimy.scale, + offsetX: adjustedX0, + offsetY: adjustedY0 + }; + } + + getSizeAndScale(step, realOutputSize, scale) { + step = Math.abs(step); + const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize); + let size = Math.ceil(step * scale); + + if (size >= maxSize) { + size = maxSize; + } else { + scale = size / step; + } + + return { + scale, + size + }; + } + + clipBbox(graphics, x0, y0, x1, y1) { + const bboxWidth = x1 - x0; + const bboxHeight = y1 - y0; + graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight); + graphics.current.updateRectMinMax((0, _display_utils.getCurrentTransform)(graphics.ctx), [x0, y0, x1, y1]); + graphics.clip(); + graphics.endPath(); + } + + setFillAndStrokeStyleToContext(graphics, paintType, color) { + const context = graphics.ctx, + current = graphics.current; + + switch (paintType) { + case PaintType.COLORED: + const ctx = this.ctx; + context.fillStyle = ctx.fillStyle; + context.strokeStyle = ctx.strokeStyle; + current.fillColor = ctx.fillStyle; + current.strokeColor = ctx.strokeStyle; + break; + + case PaintType.UNCOLORED: + const cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]); + + context.fillStyle = cssColor; + context.strokeStyle = cssColor; + current.fillColor = cssColor; + current.strokeColor = cssColor; + break; + + default: + throw new _util.FormatError(`Unsupported paint type: ${paintType}`); + } + } + + getPattern(ctx, owner, inverse, pathType) { + let matrix = inverse; + + if (pathType !== PathType.SHADING) { + matrix = _util.Util.transform(matrix, owner.baseTransform); + + if (this.matrix) { + matrix = _util.Util.transform(matrix, this.matrix); + } + } + + const temporaryPatternCanvas = this.createPatternCanvas(owner); + let domMatrix = new DOMMatrix(matrix); + domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); + domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY); + const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, "repeat"); + + try { + pattern.setTransform(domMatrix); + } catch (ex) { + (0, _util.warn)(`TilingPattern.getPattern: "${ex?.message}".`); + } + + return pattern; + } + +} + +exports.TilingPattern = TilingPattern; + +/***/ }), +/* 14 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.applyMaskImageData = applyMaskImageData; + +var _util = __w_pdfjs_require__(1); + +function applyMaskImageData({ + src, + srcPos = 0, + dest, + destPos = 0, + width, + height, + inverseDecode = false +}) { + const opaque = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff; + const [zeroMapping, oneMapping] = !inverseDecode ? [opaque, 0] : [0, opaque]; + const widthInSource = width >> 3; + const widthRemainder = width & 7; + const srcLength = src.length; + dest = new Uint32Array(dest.buffer); + + for (let i = 0; i < height; i++) { + for (const max = srcPos + widthInSource; srcPos < max; srcPos++) { + const elem = srcPos < srcLength ? src[srcPos] : 255; + dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping; + dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping; + } + + if (widthRemainder === 0) { + continue; + } + + const elem = srcPos < srcLength ? src[srcPos++] : 255; + + for (let j = 0; j < widthRemainder; j++) { + dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping; + } + } + + return { + srcPos, + destPos + }; +} + +/***/ }), +/* 15 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GlobalWorkerOptions = void 0; +const GlobalWorkerOptions = Object.create(null); +exports.GlobalWorkerOptions = GlobalWorkerOptions; +GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort; +GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? "" : GlobalWorkerOptions.workerSrc; + +/***/ }), +/* 16 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.MessageHandler = void 0; + +var _util = __w_pdfjs_require__(1); + +const CallbackKind = { + UNKNOWN: 0, + DATA: 1, + ERROR: 2 +}; +const StreamKind = { + UNKNOWN: 0, + CANCEL: 1, + CANCEL_COMPLETE: 2, + CLOSE: 3, + ENQUEUE: 4, + ERROR: 5, + PULL: 6, + PULL_COMPLETE: 7, + START_COMPLETE: 8 +}; + +function wrapReason(reason) { + if (!(reason instanceof Error || typeof reason === "object" && reason !== null)) { + (0, _util.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.'); + } + + switch (reason.name) { + case "AbortException": + return new _util.AbortException(reason.message); + + case "MissingPDFException": + return new _util.MissingPDFException(reason.message); + + case "PasswordException": + return new _util.PasswordException(reason.message, reason.code); + + case "UnexpectedResponseException": + return new _util.UnexpectedResponseException(reason.message, reason.status); + + case "UnknownErrorException": + return new _util.UnknownErrorException(reason.message, reason.details); + + default: + return new _util.UnknownErrorException(reason.message, reason.toString()); + } +} + +class MessageHandler { + constructor(sourceName, targetName, comObj) { + this.sourceName = sourceName; + this.targetName = targetName; + this.comObj = comObj; + this.callbackId = 1; + this.streamId = 1; + this.streamSinks = Object.create(null); + this.streamControllers = Object.create(null); + this.callbackCapabilities = Object.create(null); + this.actionHandler = Object.create(null); + + this._onComObjOnMessage = event => { + const data = event.data; + + if (data.targetName !== this.sourceName) { + return; + } + + if (data.stream) { + this._processStreamMessage(data); + + return; + } + + if (data.callback) { + const callbackId = data.callbackId; + const capability = this.callbackCapabilities[callbackId]; + + if (!capability) { + throw new Error(`Cannot resolve callback ${callbackId}`); + } + + delete this.callbackCapabilities[callbackId]; + + if (data.callback === CallbackKind.DATA) { + capability.resolve(data.data); + } else if (data.callback === CallbackKind.ERROR) { + capability.reject(wrapReason(data.reason)); + } else { + throw new Error("Unexpected callback case"); + } + + return; + } + + const action = this.actionHandler[data.action]; + + if (!action) { + throw new Error(`Unknown action from worker: ${data.action}`); + } + + if (data.callbackId) { + const cbSourceName = this.sourceName; + const cbTargetName = data.sourceName; + new Promise(function (resolve) { + resolve(action(data.data)); + }).then(function (result) { + comObj.postMessage({ + sourceName: cbSourceName, + targetName: cbTargetName, + callback: CallbackKind.DATA, + callbackId: data.callbackId, + data: result + }); + }, function (reason) { + comObj.postMessage({ + sourceName: cbSourceName, + targetName: cbTargetName, + callback: CallbackKind.ERROR, + callbackId: data.callbackId, + reason: wrapReason(reason) + }); + }); + return; + } + + if (data.streamId) { + this._createStreamSink(data); + + return; + } + + action(data.data); + }; + + comObj.addEventListener("message", this._onComObjOnMessage); + } + + on(actionName, handler) { + const ah = this.actionHandler; + + if (ah[actionName]) { + throw new Error(`There is already an actionName called "${actionName}"`); + } + + ah[actionName] = handler; + } + + send(actionName, data, transfers) { + this.comObj.postMessage({ + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + data + }, transfers); + } + + sendWithPromise(actionName, data, transfers) { + const callbackId = this.callbackId++; + const capability = (0, _util.createPromiseCapability)(); + this.callbackCapabilities[callbackId] = capability; + + try { + this.comObj.postMessage({ + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + callbackId, + data + }, transfers); + } catch (ex) { + capability.reject(ex); + } + + return capability.promise; + } + + sendWithStream(actionName, data, queueingStrategy, transfers) { + const streamId = this.streamId++, + sourceName = this.sourceName, + targetName = this.targetName, + comObj = this.comObj; + return new ReadableStream({ + start: controller => { + const startCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId] = { + controller, + startCall: startCapability, + pullCall: null, + cancelCall: null, + isClosed: false + }; + comObj.postMessage({ + sourceName, + targetName, + action: actionName, + streamId, + data, + desiredSize: controller.desiredSize + }, transfers); + return startCapability.promise; + }, + pull: controller => { + const pullCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId].pullCall = pullCapability; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL, + streamId, + desiredSize: controller.desiredSize + }); + return pullCapability.promise; + }, + cancel: reason => { + (0, _util.assert)(reason instanceof Error, "cancel must have a valid reason"); + const cancelCapability = (0, _util.createPromiseCapability)(); + this.streamControllers[streamId].cancelCall = cancelCapability; + this.streamControllers[streamId].isClosed = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL, + streamId, + reason: wrapReason(reason) + }); + return cancelCapability.promise; + } + }, queueingStrategy); + } + + _createStreamSink(data) { + const streamId = data.streamId, + sourceName = this.sourceName, + targetName = data.sourceName, + comObj = this.comObj; + const self = this, + action = this.actionHandler[data.action]; + const streamSink = { + enqueue(chunk, size = 1, transfers) { + if (this.isCancelled) { + return; + } + + const lastDesiredSize = this.desiredSize; + this.desiredSize -= size; + + if (lastDesiredSize > 0 && this.desiredSize <= 0) { + this.sinkCapability = (0, _util.createPromiseCapability)(); + this.ready = this.sinkCapability.promise; + } + + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.ENQUEUE, + streamId, + chunk + }, transfers); + }, + + close() { + if (this.isCancelled) { + return; + } + + this.isCancelled = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CLOSE, + streamId + }); + delete self.streamSinks[streamId]; + }, + + error(reason) { + (0, _util.assert)(reason instanceof Error, "error must have a valid reason"); + + if (this.isCancelled) { + return; + } + + this.isCancelled = true; + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.ERROR, + streamId, + reason: wrapReason(reason) + }); + }, + + sinkCapability: (0, _util.createPromiseCapability)(), + onPull: null, + onCancel: null, + isCancelled: false, + desiredSize: data.desiredSize, + ready: null + }; + streamSink.sinkCapability.resolve(); + streamSink.ready = streamSink.sinkCapability.promise; + this.streamSinks[streamId] = streamSink; + new Promise(function (resolve) { + resolve(action(data.data, streamSink)); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.START_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.START_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + } + + _processStreamMessage(data) { + const streamId = data.streamId, + sourceName = this.sourceName, + targetName = data.sourceName, + comObj = this.comObj; + const streamController = this.streamControllers[streamId], + streamSink = this.streamSinks[streamId]; + + switch (data.stream) { + case StreamKind.START_COMPLETE: + if (data.success) { + streamController.startCall.resolve(); + } else { + streamController.startCall.reject(wrapReason(data.reason)); + } + + break; + + case StreamKind.PULL_COMPLETE: + if (data.success) { + streamController.pullCall.resolve(); + } else { + streamController.pullCall.reject(wrapReason(data.reason)); + } + + break; + + case StreamKind.PULL: + if (!streamSink) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + success: true + }); + break; + } + + if (streamSink.desiredSize <= 0 && data.desiredSize > 0) { + streamSink.sinkCapability.resolve(); + } + + streamSink.desiredSize = data.desiredSize; + new Promise(function (resolve) { + resolve(streamSink.onPull && streamSink.onPull()); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.PULL_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + break; + + case StreamKind.ENQUEUE: + (0, _util.assert)(streamController, "enqueue should have stream controller"); + + if (streamController.isClosed) { + break; + } + + streamController.controller.enqueue(data.chunk); + break; + + case StreamKind.CLOSE: + (0, _util.assert)(streamController, "close should have stream controller"); + + if (streamController.isClosed) { + break; + } + + streamController.isClosed = true; + streamController.controller.close(); + + this._deleteStreamController(streamController, streamId); + + break; + + case StreamKind.ERROR: + (0, _util.assert)(streamController, "error should have stream controller"); + streamController.controller.error(wrapReason(data.reason)); + + this._deleteStreamController(streamController, streamId); + + break; + + case StreamKind.CANCEL_COMPLETE: + if (data.success) { + streamController.cancelCall.resolve(); + } else { + streamController.cancelCall.reject(wrapReason(data.reason)); + } + + this._deleteStreamController(streamController, streamId); + + break; + + case StreamKind.CANCEL: + if (!streamSink) { + break; + } + + new Promise(function (resolve) { + resolve(streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))); + }).then(function () { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL_COMPLETE, + streamId, + success: true + }); + }, function (reason) { + comObj.postMessage({ + sourceName, + targetName, + stream: StreamKind.CANCEL_COMPLETE, + streamId, + reason: wrapReason(reason) + }); + }); + streamSink.sinkCapability.reject(wrapReason(data.reason)); + streamSink.isCancelled = true; + delete this.streamSinks[streamId]; + break; + + default: + throw new Error("Unexpected stream case"); + } + } + + async _deleteStreamController(streamController, streamId) { + await Promise.allSettled([streamController.startCall && streamController.startCall.promise, streamController.pullCall && streamController.pullCall.promise, streamController.cancelCall && streamController.cancelCall.promise]); + delete this.streamControllers[streamId]; + } + + destroy() { + this.comObj.removeEventListener("message", this._onComObjOnMessage); + } + +} + +exports.MessageHandler = MessageHandler; + +/***/ }), +/* 17 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Metadata = void 0; + +var _util = __w_pdfjs_require__(1); + +class Metadata { + #metadataMap; + #data; + + constructor({ + parsedData, + rawData + }) { + this.#metadataMap = parsedData; + this.#data = rawData; + } + + getRaw() { + return this.#data; + } + + get(name) { + return this.#metadataMap.get(name) ?? null; + } + + getAll() { + return (0, _util.objectFromMap)(this.#metadataMap); + } + + has(name) { + return this.#metadataMap.has(name); + } + +} + +exports.Metadata = Metadata; + +/***/ }), +/* 18 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OptionalContentConfig = void 0; + +var _util = __w_pdfjs_require__(1); + +const INTERNAL = Symbol("INTERNAL"); + +class OptionalContentGroup { + #visible = true; + + constructor(name, intent) { + this.name = name; + this.intent = intent; + } + + get visible() { + return this.#visible; + } + + _setVisible(internal, visible) { + if (internal !== INTERNAL) { + (0, _util.unreachable)("Internal method `_setVisible` called."); + } + + this.#visible = visible; + } + +} + +class OptionalContentConfig { + #cachedHasInitialVisibility = true; + #groups = new Map(); + #initialVisibility = null; + #order = null; + + constructor(data) { + this.name = null; + this.creator = null; + + if (data === null) { + return; + } + + this.name = data.name; + this.creator = data.creator; + this.#order = data.order; + + for (const group of data.groups) { + this.#groups.set(group.id, new OptionalContentGroup(group.name, group.intent)); + } + + if (data.baseState === "OFF") { + for (const group of this.#groups.values()) { + group._setVisible(INTERNAL, false); + } + } + + for (const on of data.on) { + this.#groups.get(on)._setVisible(INTERNAL, true); + } + + for (const off of data.off) { + this.#groups.get(off)._setVisible(INTERNAL, false); + } + + this.#initialVisibility = new Map(); + + for (const [id, group] of this.#groups) { + this.#initialVisibility.set(id, group.visible); + } + } + + #evaluateVisibilityExpression(array) { + const length = array.length; + + if (length < 2) { + return true; + } + + const operator = array[0]; + + for (let i = 1; i < length; i++) { + const element = array[i]; + let state; + + if (Array.isArray(element)) { + state = this.#evaluateVisibilityExpression(element); + } else if (this.#groups.has(element)) { + state = this.#groups.get(element).visible; + } else { + (0, _util.warn)(`Optional content group not found: ${element}`); + return true; + } + + switch (operator) { + case "And": + if (!state) { + return false; + } + + break; + + case "Or": + if (state) { + return true; + } + + break; + + case "Not": + return !state; + + default: + return true; + } + } + + return operator === "And"; + } + + isVisible(group) { + if (this.#groups.size === 0) { + return true; + } + + if (!group) { + (0, _util.warn)("Optional content group not defined."); + return true; + } + + if (group.type === "OCG") { + if (!this.#groups.has(group.id)) { + (0, _util.warn)(`Optional content group not found: ${group.id}`); + return true; + } + + return this.#groups.get(group.id).visible; + } else if (group.type === "OCMD") { + if (group.expression) { + return this.#evaluateVisibilityExpression(group.expression); + } + + if (!group.policy || group.policy === "AnyOn") { + for (const id of group.ids) { + if (!this.#groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (this.#groups.get(id).visible) { + return true; + } + } + + return false; + } else if (group.policy === "AllOn") { + for (const id of group.ids) { + if (!this.#groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (!this.#groups.get(id).visible) { + return false; + } + } + + return true; + } else if (group.policy === "AnyOff") { + for (const id of group.ids) { + if (!this.#groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (!this.#groups.get(id).visible) { + return true; + } + } + + return false; + } else if (group.policy === "AllOff") { + for (const id of group.ids) { + if (!this.#groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return true; + } + + if (this.#groups.get(id).visible) { + return false; + } + } + + return true; + } + + (0, _util.warn)(`Unknown optional content policy ${group.policy}.`); + return true; + } + + (0, _util.warn)(`Unknown group type ${group.type}.`); + return true; + } + + setVisibility(id, visible = true) { + if (!this.#groups.has(id)) { + (0, _util.warn)(`Optional content group not found: ${id}`); + return; + } + + this.#groups.get(id)._setVisible(INTERNAL, !!visible); + + this.#cachedHasInitialVisibility = null; + } + + get hasInitialVisibility() { + if (this.#cachedHasInitialVisibility !== null) { + return this.#cachedHasInitialVisibility; + } + + for (const [id, group] of this.#groups) { + const visible = this.#initialVisibility.get(id); + + if (group.visible !== visible) { + return this.#cachedHasInitialVisibility = false; + } + } + + return this.#cachedHasInitialVisibility = true; + } + + getOrder() { + if (!this.#groups.size) { + return null; + } + + if (this.#order) { + return this.#order.slice(); + } + + return [...this.#groups.keys()]; + } + + getGroups() { + return this.#groups.size > 0 ? (0, _util.objectFromMap)(this.#groups) : null; + } + + getGroup(id) { + return this.#groups.get(id) || null; + } + +} + +exports.OptionalContentConfig = OptionalContentConfig; + +/***/ }), +/* 19 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFDataTransportStream = void 0; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(8); + +class PDFDataTransportStream { + constructor(params, pdfDataRangeTransport) { + (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.'); + this._queuedChunks = []; + this._progressiveDone = params.progressiveDone || false; + this._contentDispositionFilename = params.contentDispositionFilename || null; + const initialData = params.initialData; + + if (initialData?.length > 0) { + const buffer = new Uint8Array(initialData).buffer; + + this._queuedChunks.push(buffer); + } + + this._pdfDataRangeTransport = pdfDataRangeTransport; + this._isStreamingSupported = !params.disableStream; + this._isRangeSupported = !params.disableRange; + this._contentLength = params.length; + this._fullRequestReader = null; + this._rangeReaders = []; + + this._pdfDataRangeTransport.addRangeListener((begin, chunk) => { + this._onReceiveData({ + begin, + chunk + }); + }); + + this._pdfDataRangeTransport.addProgressListener((loaded, total) => { + this._onProgress({ + loaded, + total + }); + }); + + this._pdfDataRangeTransport.addProgressiveReadListener(chunk => { + this._onReceiveData({ + chunk + }); + }); + + this._pdfDataRangeTransport.addProgressiveDoneListener(() => { + this._onProgressiveDone(); + }); + + this._pdfDataRangeTransport.transportReady(); + } + + _onReceiveData(args) { + const buffer = new Uint8Array(args.chunk).buffer; + + if (args.begin === undefined) { + if (this._fullRequestReader) { + this._fullRequestReader._enqueue(buffer); + } else { + this._queuedChunks.push(buffer); + } + } else { + const found = this._rangeReaders.some(function (rangeReader) { + if (rangeReader._begin !== args.begin) { + return false; + } + + rangeReader._enqueue(buffer); + + return true; + }); + + (0, _util.assert)(found, "_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found."); + } + } + + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + + _onProgress(evt) { + if (evt.total === undefined) { + const firstReader = this._rangeReaders[0]; + + if (firstReader?.onProgress) { + firstReader.onProgress({ + loaded: evt.loaded + }); + } + } else { + const fullReader = this._fullRequestReader; + + if (fullReader?.onProgress) { + fullReader.onProgress({ + loaded: evt.loaded, + total: evt.total + }); + } + } + } + + _onProgressiveDone() { + if (this._fullRequestReader) { + this._fullRequestReader.progressiveDone(); + } + + this._progressiveDone = true; + } + + _removeRangeReader(reader) { + const i = this._rangeReaders.indexOf(reader); + + if (i >= 0) { + this._rangeReaders.splice(i, 1); + } + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFDataTransportStream.getFullReader can only be called once."); + const queuedChunks = this._queuedChunks; + this._queuedChunks = null; + return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename); + } + + getRangeReader(begin, end) { + if (end <= this._progressiveDataLength) { + return null; + } + + const reader = new PDFDataTransportStreamRangeReader(this, begin, end); + + this._pdfDataRangeTransport.requestDataRange(begin, end); + + this._rangeReaders.push(reader); + + return reader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + + for (const reader of this._rangeReaders.slice(0)) { + reader.cancel(reason); + } + + this._pdfDataRangeTransport.abort(); + } + +} + +exports.PDFDataTransportStream = PDFDataTransportStream; + +class PDFDataTransportStreamReader { + constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) { + this._stream = stream; + this._done = progressiveDone || false; + this._filename = (0, _display_utils.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null; + this._queuedChunks = queuedChunks || []; + this._loaded = 0; + + for (const chunk of this._queuedChunks) { + this._loaded += chunk.byteLength; + } + + this._requests = []; + this._headersReady = Promise.resolve(); + stream._fullRequestReader = this; + this.onProgress = null; + } + + _enqueue(chunk) { + if (this._done) { + return; + } + + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + + requestCapability.resolve({ + value: chunk, + done: false + }); + } else { + this._queuedChunks.push(chunk); + } + + this._loaded += chunk.byteLength; + } + + get headersReady() { + return this._headersReady; + } + + get filename() { + return this._filename; + } + + get isRangeSupported() { + return this._stream._isRangeSupported; + } + + get isStreamingSupported() { + return this._stream._isStreamingSupported; + } + + get contentLength() { + return this._stream._contentLength; + } + + async read() { + if (this._queuedChunks.length > 0) { + const chunk = this._queuedChunks.shift(); + + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + } + + progressiveDone() { + if (this._done) { + return; + } + + this._done = true; + } + +} + +class PDFDataTransportStreamRangeReader { + constructor(stream, begin, end) { + this._stream = stream; + this._begin = begin; + this._end = end; + this._queuedChunk = null; + this._requests = []; + this._done = false; + this.onProgress = null; + } + + _enqueue(chunk) { + if (this._done) { + return; + } + + if (this._requests.length === 0) { + this._queuedChunk = chunk; + } else { + const requestsCapability = this._requests.shift(); + + requestsCapability.resolve({ + value: chunk, + done: false + }); + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + } + + this._done = true; + + this._stream._removeRangeReader(this); + } + + get isStreamingSupported() { + return false; + } + + async read() { + if (this._queuedChunk) { + const chunk = this._queuedChunk; + this._queuedChunk = null; + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + this._stream._removeRangeReader(this); + } + +} + +/***/ }), +/* 20 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaText = void 0; + +class XfaText { + static textContent(xfa) { + const items = []; + const output = { + items, + styles: Object.create(null) + }; + + function walk(node) { + if (!node) { + return; + } + + let str = null; + const name = node.name; + + if (name === "#text") { + str = node.value; + } else if (!XfaText.shouldBuildText(name)) { + return; + } else if (node?.attributes?.textContent) { + str = node.attributes.textContent; + } else if (node.value) { + str = node.value; + } + + if (str !== null) { + items.push({ + str + }); + } + + if (!node.children) { + return; + } + + for (const child of node.children) { + walk(child); + } + } + + walk(xfa); + return output; + } + + static shouldBuildText(name) { + return !(name === "textarea" || name === "input" || name === "option" || name === "select"); + } + +} + +exports.XfaText = XfaText; + +/***/ }), +/* 21 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NodeStandardFontDataFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0; + +var _base_factory = __w_pdfjs_require__(9); + +; + +const fetchData = function (url) { + return new Promise((resolve, reject) => { + const fs = require("fs"); + + fs.readFile(url, (error, data) => { + if (error || !data) { + reject(new Error(error)); + return; + } + + resolve(new Uint8Array(data)); + }); + }); +}; + +class NodeCanvasFactory extends _base_factory.BaseCanvasFactory { + _createCanvas(width, height) { + const Canvas = require("canvas"); + + return Canvas.createCanvas(width, height); + } + +} + +exports.NodeCanvasFactory = NodeCanvasFactory; + +class NodeCMapReaderFactory extends _base_factory.BaseCMapReaderFactory { + _fetchData(url, compressionType) { + return fetchData(url).then(data => { + return { + cMapData: data, + compressionType + }; + }); + } + +} + +exports.NodeCMapReaderFactory = NodeCMapReaderFactory; + +class NodeStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory { + _fetchData(url) { + return fetchData(url); + } + +} + +exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory; + +/***/ }), +/* 22 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationEditorLayer = void 0; + +var _tools = __w_pdfjs_require__(7); + +var _util = __w_pdfjs_require__(1); + +var _freetext = __w_pdfjs_require__(23); + +var _ink = __w_pdfjs_require__(24); + +class AnnotationEditorLayer { + #accessibilityManager; + #allowClick = false; + #boundPointerup = this.pointerup.bind(this); + #boundPointerdown = this.pointerdown.bind(this); + #editors = new Map(); + #hadPointerDown = false; + #isCleaningUp = false; + #uiManager; + static _initialized = false; + + constructor(options) { + if (!AnnotationEditorLayer._initialized) { + AnnotationEditorLayer._initialized = true; + + _freetext.FreeTextEditor.initialize(options.l10n); + + _ink.InkEditor.initialize(options.l10n); + + options.uiManager.registerEditorTypes([_freetext.FreeTextEditor, _ink.InkEditor]); + } + + this.#uiManager = options.uiManager; + this.annotationStorage = options.annotationStorage; + this.pageIndex = options.pageIndex; + this.div = options.div; + this.#accessibilityManager = options.accessibilityManager; + this.#uiManager.addLayer(this); + } + + updateToolbar(mode) { + this.#uiManager.updateToolbar(mode); + } + + updateMode(mode = this.#uiManager.getMode()) { + this.#cleanup(); + + if (mode === _util.AnnotationEditorType.INK) { + this.addInkEditorIfNeeded(false); + this.disableClick(); + } else { + this.enableClick(); + } + + this.#uiManager.unselectAll(); + } + + addInkEditorIfNeeded(isCommitting) { + if (!isCommitting && this.#uiManager.getMode() !== _util.AnnotationEditorType.INK) { + return; + } + + if (!isCommitting) { + for (const editor of this.#editors.values()) { + if (editor.isEmpty()) { + editor.setInBackground(); + return; + } + } + } + + const editor = this.#createAndAddNewEditor({ + offsetX: 0, + offsetY: 0 + }); + editor.setInBackground(); + } + + setEditingState(isEditing) { + this.#uiManager.setEditingState(isEditing); + } + + addCommands(params) { + this.#uiManager.addCommands(params); + } + + enable() { + this.div.style.pointerEvents = "auto"; + + for (const editor of this.#editors.values()) { + editor.enableEditing(); + } + } + + disable() { + this.div.style.pointerEvents = "none"; + + for (const editor of this.#editors.values()) { + editor.disableEditing(); + } + } + + setActiveEditor(editor) { + const currentActive = this.#uiManager.getActive(); + + if (currentActive === editor) { + return; + } + + this.#uiManager.setActiveEditor(editor); + } + + enableClick() { + this.div.addEventListener("pointerdown", this.#boundPointerdown); + this.div.addEventListener("pointerup", this.#boundPointerup); + } + + disableClick() { + this.div.removeEventListener("pointerdown", this.#boundPointerdown); + this.div.removeEventListener("pointerup", this.#boundPointerup); + } + + attach(editor) { + this.#editors.set(editor.id, editor); + } + + detach(editor) { + this.#editors.delete(editor.id); + this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv); + } + + remove(editor) { + this.#uiManager.removeEditor(editor); + this.detach(editor); + this.annotationStorage.remove(editor.id); + editor.div.style.display = "none"; + setTimeout(() => { + editor.div.style.display = ""; + editor.div.remove(); + editor.isAttachedToDOM = false; + + if (document.activeElement === document.body) { + this.#uiManager.focusMainContainer(); + } + }, 0); + + if (!this.#isCleaningUp) { + this.addInkEditorIfNeeded(false); + } + } + + #changeParent(editor) { + if (editor.parent === this) { + return; + } + + this.attach(editor); + editor.pageIndex = this.pageIndex; + editor.parent?.detach(editor); + editor.parent = this; + + if (editor.div && editor.isAttachedToDOM) { + editor.div.remove(); + this.div.append(editor.div); + } + } + + add(editor) { + this.#changeParent(editor); + this.#uiManager.addEditor(editor); + this.attach(editor); + + if (!editor.isAttachedToDOM) { + const div = editor.render(); + this.div.append(div); + editor.isAttachedToDOM = true; + } + + this.moveEditorInDOM(editor); + editor.onceAdded(); + this.addToAnnotationStorage(editor); + } + + moveEditorInDOM(editor) { + this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true); + } + + addToAnnotationStorage(editor) { + if (!editor.isEmpty() && !this.annotationStorage.has(editor.id)) { + this.annotationStorage.setValue(editor.id, editor); + } + } + + addOrRebuild(editor) { + if (editor.needsToBeRebuilt()) { + editor.rebuild(); + } else { + this.add(editor); + } + } + + addANewEditor(editor) { + const cmd = () => { + this.addOrRebuild(editor); + }; + + const undo = () => { + editor.remove(); + }; + + this.addCommands({ + cmd, + undo, + mustExec: true + }); + } + + addUndoableEditor(editor) { + const cmd = () => { + this.addOrRebuild(editor); + }; + + const undo = () => { + editor.remove(); + }; + + this.addCommands({ + cmd, + undo, + mustExec: false + }); + } + + getNextId() { + return this.#uiManager.getId(); + } + + #createNewEditor(params) { + switch (this.#uiManager.getMode()) { + case _util.AnnotationEditorType.FREETEXT: + return new _freetext.FreeTextEditor(params); + + case _util.AnnotationEditorType.INK: + return new _ink.InkEditor(params); + } + + return null; + } + + deserialize(data) { + switch (data.annotationType) { + case _util.AnnotationEditorType.FREETEXT: + return _freetext.FreeTextEditor.deserialize(data, this); + + case _util.AnnotationEditorType.INK: + return _ink.InkEditor.deserialize(data, this); + } + + return null; + } + + #createAndAddNewEditor(event) { + const id = this.getNextId(); + const editor = this.#createNewEditor({ + parent: this, + id, + x: event.offsetX, + y: event.offsetY + }); + + if (editor) { + this.add(editor); + } + + return editor; + } + + setSelected(editor) { + this.#uiManager.setSelected(editor); + } + + toggleSelected(editor) { + this.#uiManager.toggleSelected(editor); + } + + isSelected(editor) { + return this.#uiManager.isSelected(editor); + } + + unselect(editor) { + this.#uiManager.unselect(editor); + } + + pointerup(event) { + const isMac = _tools.KeyboardManager.platform.isMac; + + if (event.button !== 0 || event.ctrlKey && isMac) { + return; + } + + if (event.target !== this.div) { + return; + } + + if (!this.#hadPointerDown) { + return; + } + + this.#hadPointerDown = false; + + if (!this.#allowClick) { + this.#allowClick = true; + return; + } + + this.#createAndAddNewEditor(event); + } + + pointerdown(event) { + const isMac = _tools.KeyboardManager.platform.isMac; + + if (event.button !== 0 || event.ctrlKey && isMac) { + return; + } + + if (event.target !== this.div) { + return; + } + + this.#hadPointerDown = true; + const editor = this.#uiManager.getActive(); + this.#allowClick = !editor || editor.isEmpty(); + } + + drop(event) { + const id = event.dataTransfer.getData("text/plain"); + const editor = this.#uiManager.getEditor(id); + + if (!editor) { + return; + } + + event.preventDefault(); + event.dataTransfer.dropEffect = "move"; + this.#changeParent(editor); + const rect = this.div.getBoundingClientRect(); + const endX = event.clientX - rect.x; + const endY = event.clientY - rect.y; + editor.translate(endX - editor.startX, endY - editor.startY); + this.moveEditorInDOM(editor); + editor.div.focus(); + } + + dragover(event) { + event.preventDefault(); + } + + destroy() { + if (this.#uiManager.getActive()?.parent === this) { + this.#uiManager.setActiveEditor(null); + } + + for (const editor of this.#editors.values()) { + this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv); + editor.isAttachedToDOM = false; + editor.div.remove(); + editor.parent = null; + } + + this.div = null; + this.#editors.clear(); + this.#uiManager.removeLayer(this); + } + + #cleanup() { + this.#isCleaningUp = true; + + for (const editor of this.#editors.values()) { + if (editor.isEmpty()) { + editor.remove(); + } + } + + this.#isCleaningUp = false; + } + + render(parameters) { + this.viewport = parameters.viewport; + (0, _tools.bindEvents)(this, this.div, ["dragover", "drop"]); + this.setDimensions(); + + for (const editor of this.#uiManager.getEditors(this.pageIndex)) { + this.add(editor); + } + + this.updateMode(); + } + + update(parameters) { + this.viewport = parameters.viewport; + this.setDimensions(); + this.updateMode(); + } + + get scaleFactor() { + return this.viewport.scale; + } + + get pageDimensions() { + const [pageLLx, pageLLy, pageURx, pageURy] = this.viewport.viewBox; + const width = pageURx - pageLLx; + const height = pageURy - pageLLy; + return [width, height]; + } + + get viewportBaseDimensions() { + const { + width, + height, + rotation + } = this.viewport; + return rotation % 180 === 0 ? [width, height] : [height, width]; + } + + setDimensions() { + const { + width, + height, + rotation + } = this.viewport; + const flipOrientation = rotation % 180 !== 0, + widthStr = Math.floor(width) + "px", + heightStr = Math.floor(height) + "px"; + this.div.style.width = flipOrientation ? heightStr : widthStr; + this.div.style.height = flipOrientation ? widthStr : heightStr; + this.div.setAttribute("data-main-rotation", rotation); + } + +} + +exports.AnnotationEditorLayer = AnnotationEditorLayer; + +/***/ }), +/* 23 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.FreeTextEditor = void 0; + +var _util = __w_pdfjs_require__(1); + +var _tools = __w_pdfjs_require__(7); + +var _editor = __w_pdfjs_require__(6); + +class FreeTextEditor extends _editor.AnnotationEditor { + #boundEditorDivBlur = this.editorDivBlur.bind(this); + #boundEditorDivFocus = this.editorDivFocus.bind(this); + #boundEditorDivKeydown = this.editorDivKeydown.bind(this); + #color; + #content = ""; + #hasAlreadyBeenCommitted = false; + #fontSize; + static _freeTextDefaultContent = ""; + static _l10nPromise; + static _internalPadding = 0; + static _defaultColor = null; + static _defaultFontSize = 10; + static _keyboardManager = new _tools.KeyboardManager([[["ctrl+Enter", "mac+meta+Enter", "Escape", "mac+Escape"], FreeTextEditor.prototype.commitOrRemove]]); + static _type = "freetext"; + + constructor(params) { + super({ ...params, + name: "freeTextEditor" + }); + this.#color = params.color || FreeTextEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor; + this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize; + } + + static initialize(l10n) { + this._l10nPromise = new Map(["free_text_default_content", "editor_free_text_aria_label"].map(str => [str, l10n.get(str)])); + const style = getComputedStyle(document.documentElement); + this._internalPadding = parseFloat(style.getPropertyValue("--freetext-padding")); + } + + static updateDefaultParams(type, value) { + switch (type) { + case _util.AnnotationEditorParamsType.FREETEXT_SIZE: + FreeTextEditor._defaultFontSize = value; + break; + + case _util.AnnotationEditorParamsType.FREETEXT_COLOR: + FreeTextEditor._defaultColor = value; + break; + } + } + + updateParams(type, value) { + switch (type) { + case _util.AnnotationEditorParamsType.FREETEXT_SIZE: + this.#updateFontSize(value); + break; + + case _util.AnnotationEditorParamsType.FREETEXT_COLOR: + this.#updateColor(value); + break; + } + } + + static get defaultPropertiesToUpdate() { + return [[_util.AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [_util.AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor]]; + } + + get propertiesToUpdate() { + return [[_util.AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [_util.AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]]; + } + + #updateFontSize(fontSize) { + const setFontsize = size => { + this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`; + this.translate(0, -(size - this.#fontSize) * this.parent.scaleFactor); + this.#fontSize = size; + this.#setEditorDimensions(); + }; + + const savedFontsize = this.#fontSize; + this.parent.addCommands({ + cmd: () => { + setFontsize(fontSize); + }, + undo: () => { + setFontsize(savedFontsize); + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.FREETEXT_SIZE, + overwriteIfSameType: true, + keepUndo: true + }); + } + + #updateColor(color) { + const savedColor = this.#color; + this.parent.addCommands({ + cmd: () => { + this.#color = color; + this.editorDiv.style.color = color; + }, + undo: () => { + this.#color = savedColor; + this.editorDiv.style.color = savedColor; + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.FREETEXT_COLOR, + overwriteIfSameType: true, + keepUndo: true + }); + } + + getInitialTranslation() { + return [-FreeTextEditor._internalPadding * this.parent.scaleFactor, -(FreeTextEditor._internalPadding + this.#fontSize) * this.parent.scaleFactor]; + } + + rebuild() { + super.rebuild(); + + if (this.div === null) { + return; + } + + if (!this.isAttachedToDOM) { + this.parent.add(this); + } + } + + enableEditMode() { + if (this.isInEditMode()) { + return; + } + + this.parent.setEditingState(false); + this.parent.updateToolbar(_util.AnnotationEditorType.FREETEXT); + super.enableEditMode(); + this.enableEditing(); + this.overlayDiv.classList.remove("enabled"); + this.editorDiv.contentEditable = true; + this.div.draggable = false; + this.editorDiv.addEventListener("keydown", this.#boundEditorDivKeydown); + this.editorDiv.addEventListener("focus", this.#boundEditorDivFocus); + this.editorDiv.addEventListener("blur", this.#boundEditorDivBlur); + } + + disableEditMode() { + if (!this.isInEditMode()) { + return; + } + + this.parent.setEditingState(true); + super.disableEditMode(); + this.disableEditing(); + this.overlayDiv.classList.add("enabled"); + this.editorDiv.contentEditable = false; + this.div.draggable = true; + this.editorDiv.removeEventListener("keydown", this.#boundEditorDivKeydown); + this.editorDiv.removeEventListener("focus", this.#boundEditorDivFocus); + this.editorDiv.removeEventListener("blur", this.#boundEditorDivBlur); + this.div.focus(); + this.isEditing = false; + } + + focusin(event) { + super.focusin(event); + + if (event.target !== this.editorDiv) { + this.editorDiv.focus(); + } + } + + onceAdded() { + if (this.width) { + return; + } + + this.enableEditMode(); + this.editorDiv.focus(); + } + + isEmpty() { + return !this.editorDiv || this.editorDiv.innerText.trim() === ""; + } + + remove() { + this.isEditing = false; + this.parent.setEditingState(true); + super.remove(); + } + + #extractText() { + const divs = this.editorDiv.getElementsByTagName("div"); + + if (divs.length === 0) { + return this.editorDiv.innerText; + } + + const buffer = []; + + for (let i = 0, ii = divs.length; i < ii; i++) { + const div = divs[i]; + const first = div.firstChild; + + if (first?.nodeName === "#text") { + buffer.push(first.data); + } else { + buffer.push(""); + } + } + + return buffer.join("\n"); + } + + #setEditorDimensions() { + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + const rect = this.div.getBoundingClientRect(); + this.width = rect.width / parentWidth; + this.height = rect.height / parentHeight; + } + + commit() { + super.commit(); + + if (!this.#hasAlreadyBeenCommitted) { + this.#hasAlreadyBeenCommitted = true; + this.parent.addUndoableEditor(this); + } + + this.disableEditMode(); + this.#content = this.#extractText().trimEnd(); + this.#setEditorDimensions(); + } + + shouldGetKeyboardEvents() { + return this.isInEditMode(); + } + + dblclick(event) { + this.enableEditMode(); + this.editorDiv.focus(); + } + + keydown(event) { + if (event.target === this.div && event.key === "Enter") { + this.enableEditMode(); + this.editorDiv.focus(); + } + } + + editorDivKeydown(event) { + FreeTextEditor._keyboardManager.exec(this, event); + } + + editorDivFocus(event) { + this.isEditing = true; + } + + editorDivBlur(event) { + this.isEditing = false; + } + + disableEditing() { + this.editorDiv.setAttribute("role", "comment"); + this.editorDiv.removeAttribute("aria-multiline"); + } + + enableEditing() { + this.editorDiv.setAttribute("role", "textbox"); + this.editorDiv.setAttribute("aria-multiline", true); + } + + render() { + if (this.div) { + return this.div; + } + + let baseX, baseY; + + if (this.width) { + baseX = this.x; + baseY = this.y; + } + + super.render(); + this.editorDiv = document.createElement("div"); + this.editorDiv.className = "internal"; + this.editorDiv.setAttribute("id", `${this.id}-editor`); + this.enableEditing(); + + FreeTextEditor._l10nPromise.get("editor_free_text_aria_label").then(msg => this.editorDiv?.setAttribute("aria-label", msg)); + + FreeTextEditor._l10nPromise.get("free_text_default_content").then(msg => this.editorDiv?.setAttribute("default-content", msg)); + + this.editorDiv.contentEditable = true; + const { + style + } = this.editorDiv; + style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`; + style.color = this.#color; + this.div.append(this.editorDiv); + this.overlayDiv = document.createElement("div"); + this.overlayDiv.classList.add("overlay", "enabled"); + this.div.append(this.overlayDiv); + (0, _tools.bindEvents)(this, this.div, ["dblclick", "keydown"]); + + if (this.width) { + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight); + + for (const line of this.#content.split("\n")) { + const div = document.createElement("div"); + div.append(line ? document.createTextNode(line) : document.createElement("br")); + this.editorDiv.append(div); + } + + this.div.draggable = true; + this.editorDiv.contentEditable = false; + } else { + this.div.draggable = false; + this.editorDiv.contentEditable = true; + } + + return this.div; + } + + get contentDiv() { + return this.editorDiv; + } + + static deserialize(data, parent) { + const editor = super.deserialize(data, parent); + editor.#fontSize = data.fontSize; + editor.#color = _util.Util.makeHexColor(...data.color); + editor.#content = data.value; + return editor; + } + + serialize() { + if (this.isEmpty()) { + return null; + } + + const padding = FreeTextEditor._internalPadding * this.parent.scaleFactor; + const rect = this.getRect(padding, padding); + + const color = _editor.AnnotationEditor._colorManager.convert(getComputedStyle(this.editorDiv).color); + + return { + annotationType: _util.AnnotationEditorType.FREETEXT, + color, + fontSize: this.#fontSize, + value: this.#content, + pageIndex: this.parent.pageIndex, + rect, + rotation: this.rotation + }; + } + +} + +exports.FreeTextEditor = FreeTextEditor; + +/***/ }), +/* 24 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.InkEditor = void 0; +Object.defineProperty(exports, "fitCurve", ({ + enumerable: true, + get: function () { + return _pdfjsFitCurve.fitCurve; + } +})); + +var _util = __w_pdfjs_require__(1); + +var _editor = __w_pdfjs_require__(6); + +var _pdfjsFitCurve = __w_pdfjs_require__(25); + +var _tools = __w_pdfjs_require__(7); + +const RESIZER_SIZE = 16; + +class InkEditor extends _editor.AnnotationEditor { + #aspectRatio = 0; + #baseHeight = 0; + #baseWidth = 0; + #boundCanvasPointermove = this.canvasPointermove.bind(this); + #boundCanvasPointerleave = this.canvasPointerleave.bind(this); + #boundCanvasPointerup = this.canvasPointerup.bind(this); + #boundCanvasPointerdown = this.canvasPointerdown.bind(this); + #disableEditing = false; + #isCanvasInitialized = false; + #lastPoint = null; + #observer = null; + #realWidth = 0; + #realHeight = 0; + #requestFrameCallback = null; + static _defaultColor = null; + static _defaultOpacity = 1; + static _defaultThickness = 1; + static _l10nPromise; + static _type = "ink"; + + constructor(params) { + super({ ...params, + name: "inkEditor" + }); + this.color = params.color || null; + this.thickness = params.thickness || null; + this.opacity = params.opacity || null; + this.paths = []; + this.bezierPath2D = []; + this.currentPath = []; + this.scaleFactor = 1; + this.translationX = this.translationY = 0; + this.x = 0; + this.y = 0; + } + + static initialize(l10n) { + this._l10nPromise = new Map(["editor_ink_canvas_aria_label", "editor_ink_aria_label"].map(str => [str, l10n.get(str)])); + } + + static updateDefaultParams(type, value) { + switch (type) { + case _util.AnnotationEditorParamsType.INK_THICKNESS: + InkEditor._defaultThickness = value; + break; + + case _util.AnnotationEditorParamsType.INK_COLOR: + InkEditor._defaultColor = value; + break; + + case _util.AnnotationEditorParamsType.INK_OPACITY: + InkEditor._defaultOpacity = value / 100; + break; + } + } + + updateParams(type, value) { + switch (type) { + case _util.AnnotationEditorParamsType.INK_THICKNESS: + this.#updateThickness(value); + break; + + case _util.AnnotationEditorParamsType.INK_COLOR: + this.#updateColor(value); + break; + + case _util.AnnotationEditorParamsType.INK_OPACITY: + this.#updateOpacity(value); + break; + } + } + + static get defaultPropertiesToUpdate() { + return [[_util.AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [_util.AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor], [_util.AnnotationEditorParamsType.INK_OPACITY, Math.round(InkEditor._defaultOpacity * 100)]]; + } + + get propertiesToUpdate() { + return [[_util.AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [_util.AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor], [_util.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity))]]; + } + + #updateThickness(thickness) { + const savedThickness = this.thickness; + this.parent.addCommands({ + cmd: () => { + this.thickness = thickness; + this.#fitToContent(); + }, + undo: () => { + this.thickness = savedThickness; + this.#fitToContent(); + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.INK_THICKNESS, + overwriteIfSameType: true, + keepUndo: true + }); + } + + #updateColor(color) { + const savedColor = this.color; + this.parent.addCommands({ + cmd: () => { + this.color = color; + this.#redraw(); + }, + undo: () => { + this.color = savedColor; + this.#redraw(); + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.INK_COLOR, + overwriteIfSameType: true, + keepUndo: true + }); + } + + #updateOpacity(opacity) { + opacity /= 100; + const savedOpacity = this.opacity; + this.parent.addCommands({ + cmd: () => { + this.opacity = opacity; + this.#redraw(); + }, + undo: () => { + this.opacity = savedOpacity; + this.#redraw(); + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.INK_OPACITY, + overwriteIfSameType: true, + keepUndo: true + }); + } + + rebuild() { + super.rebuild(); + + if (this.div === null) { + return; + } + + if (!this.canvas) { + this.#createCanvas(); + this.#createObserver(); + } + + if (!this.isAttachedToDOM) { + this.parent.add(this); + this.#setCanvasDims(); + } + + this.#fitToContent(); + } + + remove() { + if (this.canvas === null) { + return; + } + + if (!this.isEmpty()) { + this.commit(); + } + + this.canvas.width = this.canvas.height = 0; + this.canvas.remove(); + this.canvas = null; + this.#observer.disconnect(); + this.#observer = null; + super.remove(); + } + + enableEditMode() { + if (this.#disableEditing || this.canvas === null) { + return; + } + + super.enableEditMode(); + this.div.draggable = false; + this.canvas.addEventListener("pointerdown", this.#boundCanvasPointerdown); + this.canvas.addEventListener("pointerup", this.#boundCanvasPointerup); + } + + disableEditMode() { + if (!this.isInEditMode() || this.canvas === null) { + return; + } + + super.disableEditMode(); + this.div.draggable = !this.isEmpty(); + this.div.classList.remove("editing"); + this.canvas.removeEventListener("pointerdown", this.#boundCanvasPointerdown); + this.canvas.removeEventListener("pointerup", this.#boundCanvasPointerup); + } + + onceAdded() { + this.div.draggable = !this.isEmpty(); + } + + isEmpty() { + return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0; + } + + #getInitialBBox() { + const { + width, + height, + rotation + } = this.parent.viewport; + + switch (rotation) { + case 90: + return [0, width, width, height]; + + case 180: + return [width, height, width, height]; + + case 270: + return [height, 0, width, height]; + + default: + return [0, 0, width, height]; + } + } + + #setStroke() { + this.ctx.lineWidth = this.thickness * this.parent.scaleFactor / this.scaleFactor; + this.ctx.lineCap = "round"; + this.ctx.lineJoin = "round"; + this.ctx.miterLimit = 10; + this.ctx.strokeStyle = `${this.color}${(0, _tools.opacityToHex)(this.opacity)}`; + } + + #startDrawing(x, y) { + this.isEditing = true; + + if (!this.#isCanvasInitialized) { + this.#isCanvasInitialized = true; + this.#setCanvasDims(); + this.thickness ||= InkEditor._defaultThickness; + this.color ||= InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor; + this.opacity ??= InkEditor._defaultOpacity; + } + + this.currentPath.push([x, y]); + this.#lastPoint = null; + this.#setStroke(); + this.ctx.beginPath(); + this.ctx.moveTo(x, y); + + this.#requestFrameCallback = () => { + if (!this.#requestFrameCallback) { + return; + } + + if (this.#lastPoint) { + if (this.isEmpty()) { + this.ctx.setTransform(1, 0, 0, 1, 0, 0); + this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + } else { + this.#redraw(); + } + + this.ctx.lineTo(...this.#lastPoint); + this.#lastPoint = null; + this.ctx.stroke(); + } + + window.requestAnimationFrame(this.#requestFrameCallback); + }; + + window.requestAnimationFrame(this.#requestFrameCallback); + } + + #draw(x, y) { + const [lastX, lastY] = this.currentPath.at(-1); + + if (x === lastX && y === lastY) { + return; + } + + this.currentPath.push([x, y]); + this.#lastPoint = [x, y]; + } + + #stopDrawing(x, y) { + this.ctx.closePath(); + this.#requestFrameCallback = null; + x = Math.min(Math.max(x, 0), this.canvas.width); + y = Math.min(Math.max(y, 0), this.canvas.height); + const [lastX, lastY] = this.currentPath.at(-1); + + if (x !== lastX || y !== lastY) { + this.currentPath.push([x, y]); + } + + let bezier; + + if (this.currentPath.length !== 1) { + bezier = (0, _pdfjsFitCurve.fitCurve)(this.currentPath, 30, null); + } else { + const xy = [x, y]; + bezier = [[xy, xy.slice(), xy.slice(), xy]]; + } + + const path2D = InkEditor.#buildPath2D(bezier); + this.currentPath.length = 0; + + const cmd = () => { + this.paths.push(bezier); + this.bezierPath2D.push(path2D); + this.rebuild(); + }; + + const undo = () => { + this.paths.pop(); + this.bezierPath2D.pop(); + + if (this.paths.length === 0) { + this.remove(); + } else { + if (!this.canvas) { + this.#createCanvas(); + this.#createObserver(); + } + + this.#fitToContent(); + } + }; + + this.parent.addCommands({ + cmd, + undo, + mustExec: true + }); + } + + #redraw() { + if (this.isEmpty()) { + this.#updateTransform(); + return; + } + + this.#setStroke(); + const { + canvas, + ctx + } = this; + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.clearRect(0, 0, canvas.width, canvas.height); + this.#updateTransform(); + + for (const path of this.bezierPath2D) { + ctx.stroke(path); + } + } + + commit() { + if (this.#disableEditing) { + return; + } + + super.commit(); + this.isEditing = false; + this.disableEditMode(); + this.setInForeground(); + this.#disableEditing = true; + this.div.classList.add("disabled"); + this.#fitToContent(true); + this.parent.addInkEditorIfNeeded(true); + this.parent.moveEditorInDOM(this); + this.div.focus(); + } + + focusin(event) { + super.focusin(event); + this.enableEditMode(); + } + + canvasPointerdown(event) { + if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) { + return; + } + + this.setInForeground(); + + if (event.type !== "mouse") { + this.div.focus(); + } + + event.stopPropagation(); + this.canvas.addEventListener("pointerleave", this.#boundCanvasPointerleave); + this.canvas.addEventListener("pointermove", this.#boundCanvasPointermove); + this.#startDrawing(event.offsetX, event.offsetY); + } + + canvasPointermove(event) { + event.stopPropagation(); + this.#draw(event.offsetX, event.offsetY); + } + + canvasPointerup(event) { + if (event.button !== 0) { + return; + } + + if (this.isInEditMode() && this.currentPath.length !== 0) { + event.stopPropagation(); + this.#endDrawing(event); + this.setInBackground(); + } + } + + canvasPointerleave(event) { + this.#endDrawing(event); + this.setInBackground(); + } + + #endDrawing(event) { + this.#stopDrawing(event.offsetX, event.offsetY); + this.canvas.removeEventListener("pointerleave", this.#boundCanvasPointerleave); + this.canvas.removeEventListener("pointermove", this.#boundCanvasPointermove); + this.parent.addToAnnotationStorage(this); + } + + #createCanvas() { + this.canvas = document.createElement("canvas"); + this.canvas.width = this.canvas.height = 0; + this.canvas.className = "inkEditorCanvas"; + + InkEditor._l10nPromise.get("editor_ink_canvas_aria_label").then(msg => this.canvas?.setAttribute("aria-label", msg)); + + this.div.append(this.canvas); + this.ctx = this.canvas.getContext("2d"); + } + + #createObserver() { + this.#observer = new ResizeObserver(entries => { + const rect = entries[0].contentRect; + + if (rect.width && rect.height) { + this.setDimensions(rect.width, rect.height); + } + }); + this.#observer.observe(this.div); + } + + render() { + if (this.div) { + return this.div; + } + + let baseX, baseY; + + if (this.width) { + baseX = this.x; + baseY = this.y; + } + + super.render(); + + InkEditor._l10nPromise.get("editor_ink_aria_label").then(msg => this.div?.setAttribute("aria-label", msg)); + + const [x, y, w, h] = this.#getInitialBBox(); + this.setAt(x, y, 0, 0); + this.setDims(w, h); + this.#createCanvas(); + + if (this.width) { + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight); + this.#isCanvasInitialized = true; + this.#setCanvasDims(); + this.setDims(this.width * parentWidth, this.height * parentHeight); + this.#redraw(); + this.#setMinDims(); + this.div.classList.add("disabled"); + } else { + this.div.classList.add("editing"); + this.enableEditMode(); + } + + this.#createObserver(); + return this.div; + } + + #setCanvasDims() { + if (!this.#isCanvasInitialized) { + return; + } + + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + this.canvas.width = Math.ceil(this.width * parentWidth); + this.canvas.height = Math.ceil(this.height * parentHeight); + this.#updateTransform(); + } + + setDimensions(width, height) { + const roundedWidth = Math.round(width); + const roundedHeight = Math.round(height); + + if (this.#realWidth === roundedWidth && this.#realHeight === roundedHeight) { + return; + } + + this.#realWidth = roundedWidth; + this.#realHeight = roundedHeight; + this.canvas.style.visibility = "hidden"; + + if (this.#aspectRatio && Math.abs(this.#aspectRatio - width / height) > 1e-2) { + height = Math.ceil(width / this.#aspectRatio); + this.setDims(width, height); + } + + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + this.width = width / parentWidth; + this.height = height / parentHeight; + + if (this.#disableEditing) { + this.#setScaleFactor(width, height); + } + + this.#setCanvasDims(); + this.#redraw(); + this.canvas.style.visibility = "visible"; + } + + #setScaleFactor(width, height) { + const padding = this.#getPadding(); + const scaleFactorW = (width - padding) / this.#baseWidth; + const scaleFactorH = (height - padding) / this.#baseHeight; + this.scaleFactor = Math.min(scaleFactorW, scaleFactorH); + } + + #updateTransform() { + const padding = this.#getPadding() / 2; + this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding); + } + + static #buildPath2D(bezier) { + const path2D = new Path2D(); + + for (let i = 0, ii = bezier.length; i < ii; i++) { + const [first, control1, control2, second] = bezier[i]; + + if (i === 0) { + path2D.moveTo(...first); + } + + path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]); + } + + return path2D; + } + + #serializePaths(s, tx, ty, h) { + const NUMBER_OF_POINTS_ON_BEZIER_CURVE = 4; + const paths = []; + const padding = this.thickness / 2; + let buffer, points; + + for (const bezier of this.paths) { + buffer = []; + points = []; + + for (let i = 0, ii = bezier.length; i < ii; i++) { + const [first, control1, control2, second] = bezier[i]; + const p10 = s * (first[0] + tx) + padding; + const p11 = h - s * (first[1] + ty) - padding; + const p20 = s * (control1[0] + tx) + padding; + const p21 = h - s * (control1[1] + ty) - padding; + const p30 = s * (control2[0] + tx) + padding; + const p31 = h - s * (control2[1] + ty) - padding; + const p40 = s * (second[0] + tx) + padding; + const p41 = h - s * (second[1] + ty) - padding; + + if (i === 0) { + buffer.push(p10, p11); + points.push(p10, p11); + } + + buffer.push(p20, p21, p30, p31, p40, p41); + this.#extractPointsOnBezier(p10, p11, p20, p21, p30, p31, p40, p41, NUMBER_OF_POINTS_ON_BEZIER_CURVE, points); + } + + paths.push({ + bezier: buffer, + points + }); + } + + return paths; + } + + #extractPointsOnBezier(p10, p11, p20, p21, p30, p31, p40, p41, n, points) { + if (this.#isAlmostFlat(p10, p11, p20, p21, p30, p31, p40, p41)) { + points.push(p40, p41); + return; + } + + for (let i = 1; i < n - 1; i++) { + const t = i / n; + const mt = 1 - t; + let q10 = t * p10 + mt * p20; + let q11 = t * p11 + mt * p21; + let q20 = t * p20 + mt * p30; + let q21 = t * p21 + mt * p31; + const q30 = t * p30 + mt * p40; + const q31 = t * p31 + mt * p41; + q10 = t * q10 + mt * q20; + q11 = t * q11 + mt * q21; + q20 = t * q20 + mt * q30; + q21 = t * q21 + mt * q31; + q10 = t * q10 + mt * q20; + q11 = t * q11 + mt * q21; + points.push(q10, q11); + } + + points.push(p40, p41); + } + + #isAlmostFlat(p10, p11, p20, p21, p30, p31, p40, p41) { + const tol = 10; + const ax = (3 * p20 - 2 * p10 - p40) ** 2; + const ay = (3 * p21 - 2 * p11 - p41) ** 2; + const bx = (3 * p30 - p10 - 2 * p40) ** 2; + const by = (3 * p31 - p11 - 2 * p41) ** 2; + return Math.max(ax, bx) + Math.max(ay, by) <= tol; + } + + #getBbox() { + let xMin = Infinity; + let xMax = -Infinity; + let yMin = Infinity; + let yMax = -Infinity; + + for (const path of this.paths) { + for (const [first, control1, control2, second] of path) { + const bbox = _util.Util.bezierBoundingBox(...first, ...control1, ...control2, ...second); + + xMin = Math.min(xMin, bbox[0]); + yMin = Math.min(yMin, bbox[1]); + xMax = Math.max(xMax, bbox[2]); + yMax = Math.max(yMax, bbox[3]); + } + } + + return [xMin, yMin, xMax, yMax]; + } + + #getPadding() { + return this.#disableEditing ? Math.ceil(this.thickness * this.parent.scaleFactor) : 0; + } + + #fitToContent(firstTime = false) { + if (this.isEmpty()) { + return; + } + + if (!this.#disableEditing) { + this.#redraw(); + return; + } + + const bbox = this.#getBbox(); + const padding = this.#getPadding(); + this.#baseWidth = Math.max(RESIZER_SIZE, bbox[2] - bbox[0]); + this.#baseHeight = Math.max(RESIZER_SIZE, bbox[3] - bbox[1]); + const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor); + const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor); + const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; + this.width = width / parentWidth; + this.height = height / parentHeight; + this.#aspectRatio = width / height; + this.#setMinDims(); + const prevTranslationX = this.translationX; + const prevTranslationY = this.translationY; + this.translationX = -bbox[0]; + this.translationY = -bbox[1]; + this.#setCanvasDims(); + this.#redraw(); + this.#realWidth = width; + this.#realHeight = height; + this.setDims(width, height); + const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0; + this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding); + } + + #setMinDims() { + const { + style + } = this.div; + + if (this.#aspectRatio >= 1) { + style.minHeight = `${RESIZER_SIZE}px`; + style.minWidth = `${Math.round(this.#aspectRatio * RESIZER_SIZE)}px`; + } else { + style.minWidth = `${RESIZER_SIZE}px`; + style.minHeight = `${Math.round(RESIZER_SIZE / this.#aspectRatio)}px`; + } + } + + static deserialize(data, parent) { + const editor = super.deserialize(data, parent); + editor.thickness = data.thickness; + editor.color = _util.Util.makeHexColor(...data.color); + editor.opacity = data.opacity; + const [pageWidth, pageHeight] = parent.pageDimensions; + const width = editor.width * pageWidth; + const height = editor.height * pageHeight; + const scaleFactor = parent.scaleFactor; + const padding = data.thickness / 2; + editor.#aspectRatio = width / height; + editor.#disableEditing = true; + editor.#realWidth = Math.round(width); + editor.#realHeight = Math.round(height); + + for (const { + bezier + } of data.paths) { + const path = []; + editor.paths.push(path); + let p0 = scaleFactor * (bezier[0] - padding); + let p1 = scaleFactor * (height - bezier[1] - padding); + + for (let i = 2, ii = bezier.length; i < ii; i += 6) { + const p10 = scaleFactor * (bezier[i] - padding); + const p11 = scaleFactor * (height - bezier[i + 1] - padding); + const p20 = scaleFactor * (bezier[i + 2] - padding); + const p21 = scaleFactor * (height - bezier[i + 3] - padding); + const p30 = scaleFactor * (bezier[i + 4] - padding); + const p31 = scaleFactor * (height - bezier[i + 5] - padding); + path.push([[p0, p1], [p10, p11], [p20, p21], [p30, p31]]); + p0 = p30; + p1 = p31; + } + + const path2D = this.#buildPath2D(path); + editor.bezierPath2D.push(path2D); + } + + const bbox = editor.#getBbox(); + editor.#baseWidth = Math.max(RESIZER_SIZE, bbox[2] - bbox[0]); + editor.#baseHeight = Math.max(RESIZER_SIZE, bbox[3] - bbox[1]); + editor.#setScaleFactor(width, height); + return editor; + } + + serialize() { + if (this.isEmpty()) { + return null; + } + + const rect = this.getRect(0, 0); + const height = this.rotation % 180 === 0 ? rect[3] - rect[1] : rect[2] - rect[0]; + + const color = _editor.AnnotationEditor._colorManager.convert(this.ctx.strokeStyle); + + return { + annotationType: _util.AnnotationEditorType.INK, + color, + thickness: this.thickness, + opacity: this.opacity, + paths: this.#serializePaths(this.scaleFactor / this.parent.scaleFactor, this.translationX, this.translationY, height), + pageIndex: this.parent.pageIndex, + rect, + rotation: this.rotation + }; + } + +} + +exports.InkEditor = InkEditor; + +/***/ }), +/* 25 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.fitCurve = void 0; + +const fitCurve = __w_pdfjs_require__(26); + +exports.fitCurve = fitCurve; + +/***/ }), +/* 26 */ +/***/ ((module) => { + + + +function fitCurve(points, maxError, progressCallback) { + if (!Array.isArray(points)) { + throw new TypeError("First argument should be an array"); + } + + points.forEach(point => { + if (!Array.isArray(point) || point.some(item => typeof item !== 'number') || point.length !== points[0].length) { + throw Error("Each point should be an array of numbers. Each point should have the same amount of numbers."); + } + }); + points = points.filter((point, i) => i === 0 || !point.every((val, j) => val === points[i - 1][j])); + + if (points.length < 2) { + return []; + } + + const len = points.length; + const leftTangent = createTangent(points[1], points[0]); + const rightTangent = createTangent(points[len - 2], points[len - 1]); + return fitCubic(points, leftTangent, rightTangent, maxError, progressCallback); +} + +function fitCubic(points, leftTangent, rightTangent, error, progressCallback) { + const MaxIterations = 20; + var bezCurve, u, uPrime, maxError, prevErr, splitPoint, prevSplit, centerVector, toCenterTangent, fromCenterTangent, beziers, dist, i; + + if (points.length === 2) { + dist = maths.vectorLen(maths.subtract(points[0], points[1])) / 3.0; + bezCurve = [points[0], maths.addArrays(points[0], maths.mulItems(leftTangent, dist)), maths.addArrays(points[1], maths.mulItems(rightTangent, dist)), points[1]]; + return [bezCurve]; + } + + u = chordLengthParameterize(points); + [bezCurve, maxError, splitPoint] = generateAndReport(points, u, u, leftTangent, rightTangent, progressCallback); + + if (maxError === 0 || maxError < error) { + return [bezCurve]; + } + + if (maxError < error * error) { + uPrime = u; + prevErr = maxError; + prevSplit = splitPoint; + + for (i = 0; i < MaxIterations; i++) { + uPrime = reparameterize(bezCurve, points, uPrime); + [bezCurve, maxError, splitPoint] = generateAndReport(points, u, uPrime, leftTangent, rightTangent, progressCallback); + + if (maxError < error) { + return [bezCurve]; + } else if (splitPoint === prevSplit) { + let errChange = maxError / prevErr; + + if (errChange > .9999 && errChange < 1.0001) { + break; + } + } + + prevErr = maxError; + prevSplit = splitPoint; + } + } + + beziers = []; + centerVector = maths.subtract(points[splitPoint - 1], points[splitPoint + 1]); + + if (centerVector.every(val => val === 0)) { + centerVector = maths.subtract(points[splitPoint - 1], points[splitPoint]); + [centerVector[0], centerVector[1]] = [-centerVector[1], centerVector[0]]; + } + + toCenterTangent = maths.normalize(centerVector); + fromCenterTangent = maths.mulItems(toCenterTangent, -1); + beziers = beziers.concat(fitCubic(points.slice(0, splitPoint + 1), leftTangent, toCenterTangent, error, progressCallback)); + beziers = beziers.concat(fitCubic(points.slice(splitPoint), fromCenterTangent, rightTangent, error, progressCallback)); + return beziers; +} + +; + +function generateAndReport(points, paramsOrig, paramsPrime, leftTangent, rightTangent, progressCallback) { + var bezCurve, maxError, splitPoint; + bezCurve = generateBezier(points, paramsPrime, leftTangent, rightTangent, progressCallback); + [maxError, splitPoint] = computeMaxError(points, bezCurve, paramsOrig); + + if (progressCallback) { + progressCallback({ + bez: bezCurve, + points: points, + params: paramsOrig, + maxErr: maxError, + maxPoint: splitPoint + }); + } + + return [bezCurve, maxError, splitPoint]; +} + +function generateBezier(points, parameters, leftTangent, rightTangent) { + var bezCurve, + A, + a, + C, + X, + det_C0_C1, + det_C0_X, + det_X_C1, + alpha_l, + alpha_r, + epsilon, + segLength, + i, + len, + tmp, + u, + ux, + firstPoint = points[0], + lastPoint = points[points.length - 1]; + bezCurve = [firstPoint, null, null, lastPoint]; + A = maths.zeros_Xx2x2(parameters.length); + + for (i = 0, len = parameters.length; i < len; i++) { + u = parameters[i]; + ux = 1 - u; + a = A[i]; + a[0] = maths.mulItems(leftTangent, 3 * u * (ux * ux)); + a[1] = maths.mulItems(rightTangent, 3 * ux * (u * u)); + } + + C = [[0, 0], [0, 0]]; + X = [0, 0]; + + for (i = 0, len = points.length; i < len; i++) { + u = parameters[i]; + a = A[i]; + C[0][0] += maths.dot(a[0], a[0]); + C[0][1] += maths.dot(a[0], a[1]); + C[1][0] += maths.dot(a[0], a[1]); + C[1][1] += maths.dot(a[1], a[1]); + tmp = maths.subtract(points[i], bezier.q([firstPoint, firstPoint, lastPoint, lastPoint], u)); + X[0] += maths.dot(a[0], tmp); + X[1] += maths.dot(a[1], tmp); + } + + det_C0_C1 = C[0][0] * C[1][1] - C[1][0] * C[0][1]; + det_C0_X = C[0][0] * X[1] - C[1][0] * X[0]; + det_X_C1 = X[0] * C[1][1] - X[1] * C[0][1]; + alpha_l = det_C0_C1 === 0 ? 0 : det_X_C1 / det_C0_C1; + alpha_r = det_C0_C1 === 0 ? 0 : det_C0_X / det_C0_C1; + segLength = maths.vectorLen(maths.subtract(firstPoint, lastPoint)); + epsilon = 1.0e-6 * segLength; + + if (alpha_l < epsilon || alpha_r < epsilon) { + bezCurve[1] = maths.addArrays(firstPoint, maths.mulItems(leftTangent, segLength / 3.0)); + bezCurve[2] = maths.addArrays(lastPoint, maths.mulItems(rightTangent, segLength / 3.0)); + } else { + bezCurve[1] = maths.addArrays(firstPoint, maths.mulItems(leftTangent, alpha_l)); + bezCurve[2] = maths.addArrays(lastPoint, maths.mulItems(rightTangent, alpha_r)); + } + + return bezCurve; +} + +; + +function reparameterize(bezier, points, parameters) { + return parameters.map((p, i) => newtonRaphsonRootFind(bezier, points[i], p)); +} + +; + +function newtonRaphsonRootFind(bez, point, u) { + var d = maths.subtract(bezier.q(bez, u), point), + qprime = bezier.qprime(bez, u), + numerator = maths.mulMatrix(d, qprime), + denominator = maths.sum(maths.squareItems(qprime)) + 2 * maths.mulMatrix(d, bezier.qprimeprime(bez, u)); + + if (denominator === 0) { + return u; + } else { + return u - numerator / denominator; + } +} + +; + +function chordLengthParameterize(points) { + var u = [], + currU, + prevU, + prevP; + points.forEach((p, i) => { + currU = i ? prevU + maths.vectorLen(maths.subtract(p, prevP)) : 0; + u.push(currU); + prevU = currU; + prevP = p; + }); + u = u.map(x => x / prevU); + return u; +} + +; + +function computeMaxError(points, bez, parameters) { + var dist, maxDist, splitPoint, v, i, count, point, t; + maxDist = 0; + splitPoint = Math.floor(points.length / 2); + const t_distMap = mapTtoRelativeDistances(bez, 10); + + for (i = 0, count = points.length; i < count; i++) { + point = points[i]; + t = find_t(bez, parameters[i], t_distMap, 10); + v = maths.subtract(bezier.q(bez, t), point); + dist = v[0] * v[0] + v[1] * v[1]; + + if (dist > maxDist) { + maxDist = dist; + splitPoint = i; + } + } + + return [maxDist, splitPoint]; +} + +; + +var mapTtoRelativeDistances = function (bez, B_parts) { + var B_t_curr; + var B_t_dist = [0]; + var B_t_prev = bez[0]; + var sumLen = 0; + + for (var i = 1; i <= B_parts; i++) { + B_t_curr = bezier.q(bez, i / B_parts); + sumLen += maths.vectorLen(maths.subtract(B_t_curr, B_t_prev)); + B_t_dist.push(sumLen); + B_t_prev = B_t_curr; + } + + B_t_dist = B_t_dist.map(x => x / sumLen); + return B_t_dist; +}; + +function find_t(bez, param, t_distMap, B_parts) { + if (param < 0) { + return 0; + } + + if (param > 1) { + return 1; + } + + var lenMax, lenMin, tMax, tMin, t; + + for (var i = 1; i <= B_parts; i++) { + if (param <= t_distMap[i]) { + tMin = (i - 1) / B_parts; + tMax = i / B_parts; + lenMin = t_distMap[i - 1]; + lenMax = t_distMap[i]; + t = (param - lenMin) / (lenMax - lenMin) * (tMax - tMin) + tMin; + break; + } + } + + return t; +} + +function createTangent(pointA, pointB) { + return maths.normalize(maths.subtract(pointA, pointB)); +} + +class maths { + static zeros_Xx2x2(x) { + var zs = []; + + while (x--) { + zs.push([0, 0]); + } + + return zs; + } + + static mulItems(items, multiplier) { + return items.map(x => x * multiplier); + } + + static mulMatrix(m1, m2) { + return m1.reduce((sum, x1, i) => sum + x1 * m2[i], 0); + } + + static subtract(arr1, arr2) { + return arr1.map((x1, i) => x1 - arr2[i]); + } + + static addArrays(arr1, arr2) { + return arr1.map((x1, i) => x1 + arr2[i]); + } + + static addItems(items, addition) { + return items.map(x => x + addition); + } + + static sum(items) { + return items.reduce((sum, x) => sum + x); + } + + static dot(m1, m2) { + return maths.mulMatrix(m1, m2); + } + + static vectorLen(v) { + return Math.hypot(...v); + } + + static divItems(items, divisor) { + return items.map(x => x / divisor); + } + + static squareItems(items) { + return items.map(x => x * x); + } + + static normalize(v) { + return this.divItems(v, this.vectorLen(v)); + } + +} + +class bezier { + static q(ctrlPoly, t) { + var tx = 1.0 - t; + var pA = maths.mulItems(ctrlPoly[0], tx * tx * tx), + pB = maths.mulItems(ctrlPoly[1], 3 * tx * tx * t), + pC = maths.mulItems(ctrlPoly[2], 3 * tx * t * t), + pD = maths.mulItems(ctrlPoly[3], t * t * t); + return maths.addArrays(maths.addArrays(pA, pB), maths.addArrays(pC, pD)); + } + + static qprime(ctrlPoly, t) { + var tx = 1.0 - t; + var pA = maths.mulItems(maths.subtract(ctrlPoly[1], ctrlPoly[0]), 3 * tx * tx), + pB = maths.mulItems(maths.subtract(ctrlPoly[2], ctrlPoly[1]), 6 * tx * t), + pC = maths.mulItems(maths.subtract(ctrlPoly[3], ctrlPoly[2]), 3 * t * t); + return maths.addArrays(maths.addArrays(pA, pB), pC); + } + + static qprimeprime(ctrlPoly, t) { + return maths.addArrays(maths.mulItems(maths.addArrays(maths.subtract(ctrlPoly[2], maths.mulItems(ctrlPoly[1], 2)), ctrlPoly[0]), 6 * (1.0 - t)), maths.mulItems(maths.addArrays(maths.subtract(ctrlPoly[3], maths.mulItems(ctrlPoly[2], 2)), ctrlPoly[1]), 6 * t)); + } + +} + +module.exports = fitCurve; +module.exports.fitCubic = fitCubic; +module.exports.createTangent = createTangent; + +/***/ }), +/* 27 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationLayer = void 0; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(8); + +var _annotation_storage = __w_pdfjs_require__(5); + +var _scripting_utils = __w_pdfjs_require__(28); + +var _xfa_layer = __w_pdfjs_require__(29); + +const DEFAULT_TAB_INDEX = 1000; +const DEFAULT_FONT_SIZE = 9; +const GetElementsByNameSet = new WeakSet(); + +function getRectDims(rect) { + return { + width: rect[2] - rect[0], + height: rect[3] - rect[1] + }; +} + +class AnnotationElementFactory { + static create(parameters) { + const subtype = parameters.data.annotationType; + + switch (subtype) { + case _util.AnnotationType.LINK: + return new LinkAnnotationElement(parameters); + + case _util.AnnotationType.TEXT: + return new TextAnnotationElement(parameters); + + case _util.AnnotationType.WIDGET: + const fieldType = parameters.data.fieldType; + + switch (fieldType) { + case "Tx": + return new TextWidgetAnnotationElement(parameters); + + case "Btn": + if (parameters.data.radioButton) { + return new RadioButtonWidgetAnnotationElement(parameters); + } else if (parameters.data.checkBox) { + return new CheckboxWidgetAnnotationElement(parameters); + } + + return new PushButtonWidgetAnnotationElement(parameters); + + case "Ch": + return new ChoiceWidgetAnnotationElement(parameters); + } + + return new WidgetAnnotationElement(parameters); + + case _util.AnnotationType.POPUP: + return new PopupAnnotationElement(parameters); + + case _util.AnnotationType.FREETEXT: + return new FreeTextAnnotationElement(parameters); + + case _util.AnnotationType.LINE: + return new LineAnnotationElement(parameters); + + case _util.AnnotationType.SQUARE: + return new SquareAnnotationElement(parameters); + + case _util.AnnotationType.CIRCLE: + return new CircleAnnotationElement(parameters); + + case _util.AnnotationType.POLYLINE: + return new PolylineAnnotationElement(parameters); + + case _util.AnnotationType.CARET: + return new CaretAnnotationElement(parameters); + + case _util.AnnotationType.INK: + return new InkAnnotationElement(parameters); + + case _util.AnnotationType.POLYGON: + return new PolygonAnnotationElement(parameters); + + case _util.AnnotationType.HIGHLIGHT: + return new HighlightAnnotationElement(parameters); + + case _util.AnnotationType.UNDERLINE: + return new UnderlineAnnotationElement(parameters); + + case _util.AnnotationType.SQUIGGLY: + return new SquigglyAnnotationElement(parameters); + + case _util.AnnotationType.STRIKEOUT: + return new StrikeOutAnnotationElement(parameters); + + case _util.AnnotationType.STAMP: + return new StampAnnotationElement(parameters); + + case _util.AnnotationType.FILEATTACHMENT: + return new FileAttachmentAnnotationElement(parameters); + + default: + return new AnnotationElement(parameters); + } + } + +} + +class AnnotationElement { + constructor(parameters, { + isRenderable = false, + ignoreBorder = false, + createQuadrilaterals = false + } = {}) { + this.isRenderable = isRenderable; + this.data = parameters.data; + this.layer = parameters.layer; + this.page = parameters.page; + this.viewport = parameters.viewport; + this.linkService = parameters.linkService; + this.downloadManager = parameters.downloadManager; + this.imageResourcesPath = parameters.imageResourcesPath; + this.renderForms = parameters.renderForms; + this.svgFactory = parameters.svgFactory; + this.annotationStorage = parameters.annotationStorage; + this.enableScripting = parameters.enableScripting; + this.hasJSActions = parameters.hasJSActions; + this._fieldObjects = parameters.fieldObjects; + this._mouseState = parameters.mouseState; + + if (isRenderable) { + this.container = this._createContainer(ignoreBorder); + } + + if (createQuadrilaterals) { + this.quadrilaterals = this._createQuadrilaterals(ignoreBorder); + } + } + + _createContainer(ignoreBorder = false) { + const data = this.data, + page = this.page, + viewport = this.viewport; + const container = document.createElement("section"); + const { + width, + height + } = getRectDims(data.rect); + const [pageLLx, pageLLy, pageURx, pageURy] = viewport.viewBox; + const pageWidth = pageURx - pageLLx; + const pageHeight = pageURy - pageLLy; + container.setAttribute("data-annotation-id", data.id); + + const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]); + + if (!ignoreBorder && data.borderStyle.width > 0) { + container.style.borderWidth = `${data.borderStyle.width}px`; + const horizontalRadius = data.borderStyle.horizontalCornerRadius; + const verticalRadius = data.borderStyle.verticalCornerRadius; + + if (horizontalRadius > 0 || verticalRadius > 0) { + const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`; + container.style.borderRadius = radius; + } else if (this instanceof RadioButtonWidgetAnnotationElement) { + const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`; + container.style.borderRadius = radius; + } + + switch (data.borderStyle.style) { + case _util.AnnotationBorderStyleType.SOLID: + container.style.borderStyle = "solid"; + break; + + case _util.AnnotationBorderStyleType.DASHED: + container.style.borderStyle = "dashed"; + break; + + case _util.AnnotationBorderStyleType.BEVELED: + (0, _util.warn)("Unimplemented border style: beveled"); + break; + + case _util.AnnotationBorderStyleType.INSET: + (0, _util.warn)("Unimplemented border style: inset"); + break; + + case _util.AnnotationBorderStyleType.UNDERLINE: + container.style.borderBottomStyle = "solid"; + break; + + default: + break; + } + + const borderColor = data.borderColor || null; + + if (borderColor) { + container.style.borderColor = _util.Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0); + } else { + container.style.borderWidth = 0; + } + } + + container.style.left = `${100 * (rect[0] - pageLLx) / pageWidth}%`; + container.style.top = `${100 * (rect[1] - pageLLy) / pageHeight}%`; + const { + rotation + } = data; + + if (data.hasOwnCanvas || rotation === 0) { + container.style.width = `${100 * width / pageWidth}%`; + container.style.height = `${100 * height / pageHeight}%`; + } else { + this.setRotation(rotation, container); + } + + return container; + } + + setRotation(angle, container = this.container) { + const [pageLLx, pageLLy, pageURx, pageURy] = this.viewport.viewBox; + const pageWidth = pageURx - pageLLx; + const pageHeight = pageURy - pageLLy; + const { + width, + height + } = getRectDims(this.data.rect); + let elementWidth, elementHeight; + + if (angle % 180 === 0) { + elementWidth = 100 * width / pageWidth; + elementHeight = 100 * height / pageHeight; + } else { + elementWidth = 100 * height / pageWidth; + elementHeight = 100 * width / pageHeight; + } + + container.style.width = `${elementWidth}%`; + container.style.height = `${elementHeight}%`; + container.setAttribute("data-main-rotation", (360 - angle) % 360); + } + + get _commonActions() { + const setColor = (jsName, styleName, event) => { + const color = event.detail[jsName]; + event.target.style[styleName] = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1)); + }; + + return (0, _util.shadow)(this, "_commonActions", { + display: event => { + const hidden = event.detail.display % 2 === 1; + this.container.style.visibility = hidden ? "hidden" : "visible"; + this.annotationStorage.setValue(this.data.id, { + hidden, + print: event.detail.display === 0 || event.detail.display === 3 + }); + }, + print: event => { + this.annotationStorage.setValue(this.data.id, { + print: event.detail.print + }); + }, + hidden: event => { + this.container.style.visibility = event.detail.hidden ? "hidden" : "visible"; + this.annotationStorage.setValue(this.data.id, { + hidden: event.detail.hidden + }); + }, + focus: event => { + setTimeout(() => event.target.focus({ + preventScroll: false + }), 0); + }, + userName: event => { + event.target.title = event.detail.userName; + }, + readonly: event => { + if (event.detail.readonly) { + event.target.setAttribute("readonly", ""); + } else { + event.target.removeAttribute("readonly"); + } + }, + required: event => { + this._setRequired(event.target, event.detail.required); + }, + bgColor: event => { + setColor("bgColor", "backgroundColor", event); + }, + fillColor: event => { + setColor("fillColor", "backgroundColor", event); + }, + fgColor: event => { + setColor("fgColor", "color", event); + }, + textColor: event => { + setColor("textColor", "color", event); + }, + borderColor: event => { + setColor("borderColor", "borderColor", event); + }, + strokeColor: event => { + setColor("strokeColor", "borderColor", event); + }, + rotation: event => { + const angle = event.detail.rotation; + this.setRotation(angle); + this.annotationStorage.setValue(this.data.id, { + rotation: angle + }); + } + }); + } + + _dispatchEventFromSandbox(actions, jsEvent) { + const commonActions = this._commonActions; + + for (const name of Object.keys(jsEvent.detail)) { + const action = actions[name] || commonActions[name]; + + if (action) { + action(jsEvent); + } + } + } + + _setDefaultPropertiesFromJS(element) { + if (!this.enableScripting) { + return; + } + + const storedData = this.annotationStorage.getRawValue(this.data.id); + + if (!storedData) { + return; + } + + const commonActions = this._commonActions; + + for (const [actionName, detail] of Object.entries(storedData)) { + const action = commonActions[actionName]; + + if (action) { + const eventProxy = { + detail: { + [actionName]: detail + }, + target: element + }; + action(eventProxy); + delete storedData[actionName]; + } + } + } + + _createQuadrilaterals(ignoreBorder = false) { + if (!this.data.quadPoints) { + return null; + } + + const quadrilaterals = []; + const savedRect = this.data.rect; + + for (const quadPoint of this.data.quadPoints) { + this.data.rect = [quadPoint[2].x, quadPoint[2].y, quadPoint[1].x, quadPoint[1].y]; + quadrilaterals.push(this._createContainer(ignoreBorder)); + } + + this.data.rect = savedRect; + return quadrilaterals; + } + + _createPopup(trigger, data) { + let container = this.container; + + if (this.quadrilaterals) { + trigger = trigger || this.quadrilaterals; + container = this.quadrilaterals[0]; + } + + if (!trigger) { + trigger = document.createElement("div"); + trigger.className = "popupTriggerArea"; + container.append(trigger); + } + + const popupElement = new PopupElement({ + container, + trigger, + color: data.color, + titleObj: data.titleObj, + modificationDate: data.modificationDate, + contentsObj: data.contentsObj, + richText: data.richText, + hideWrapper: true + }); + const popup = popupElement.render(); + popup.style.left = "100%"; + container.append(popup); + } + + _renderQuadrilaterals(className) { + for (const quadrilateral of this.quadrilaterals) { + quadrilateral.className = className; + } + + return this.quadrilaterals; + } + + render() { + (0, _util.unreachable)("Abstract method `AnnotationElement.render` called"); + } + + _getElementsByName(name, skipId = null) { + const fields = []; + + if (this._fieldObjects) { + const fieldObj = this._fieldObjects[name]; + + if (fieldObj) { + for (const { + page, + id, + exportValues + } of fieldObj) { + if (page === -1) { + continue; + } + + if (id === skipId) { + continue; + } + + const exportValue = typeof exportValues === "string" ? exportValues : null; + const domElement = document.querySelector(`[data-element-id="${id}"]`); + + if (domElement && !GetElementsByNameSet.has(domElement)) { + (0, _util.warn)(`_getElementsByName - element not allowed: ${id}`); + continue; + } + + fields.push({ + id, + exportValue, + domElement + }); + } + } + + return fields; + } + + for (const domElement of document.getElementsByName(name)) { + const { + id, + exportValue + } = domElement; + + if (id === skipId) { + continue; + } + + if (!GetElementsByNameSet.has(domElement)) { + continue; + } + + fields.push({ + id, + exportValue, + domElement + }); + } + + return fields; + } + + static get platform() { + const platform = typeof navigator !== "undefined" ? navigator.platform : ""; + return (0, _util.shadow)(this, "platform", { + isWin: platform.includes("Win"), + isMac: platform.includes("Mac") + }); + } + +} + +class LinkAnnotationElement extends AnnotationElement { + constructor(parameters, options = null) { + super(parameters, { + isRenderable: true, + ignoreBorder: !!options?.ignoreBorder, + createQuadrilaterals: true + }); + this.isTooltipOnly = parameters.data.isTooltipOnly; + } + + render() { + const { + data, + linkService + } = this; + const link = document.createElement("a"); + link.setAttribute("data-element-id", data.id); + let isBound = false; + + if (data.url) { + linkService.addLinkAttributes(link, data.url, data.newWindow); + isBound = true; + } else if (data.action) { + this._bindNamedAction(link, data.action); + + isBound = true; + } else if (data.dest) { + this._bindLink(link, data.dest); + + isBound = true; + } else { + if (data.actions && (data.actions.Action || data.actions["Mouse Up"] || data.actions["Mouse Down"]) && this.enableScripting && this.hasJSActions) { + this._bindJSAction(link, data); + + isBound = true; + } + + if (data.resetForm) { + this._bindResetFormAction(link, data.resetForm); + + isBound = true; + } else if (this.isTooltipOnly && !isBound) { + this._bindLink(link, ""); + + isBound = true; + } + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("linkAnnotation").map((quadrilateral, index) => { + const linkElement = index === 0 ? link : link.cloneNode(); + quadrilateral.append(linkElement); + return quadrilateral; + }); + } + + this.container.className = "linkAnnotation"; + + if (isBound) { + this.container.append(link); + } + + return this.container; + } + + _bindLink(link, destination) { + link.href = this.linkService.getDestinationHash(destination); + + link.onclick = () => { + if (destination) { + this.linkService.goToDestination(destination); + } + + return false; + }; + + if (destination || destination === "") { + link.className = "internalLink"; + } + } + + _bindNamedAction(link, action) { + link.href = this.linkService.getAnchorUrl(""); + + link.onclick = () => { + this.linkService.executeNamedAction(action); + return false; + }; + + link.className = "internalLink"; + } + + _bindJSAction(link, data) { + link.href = this.linkService.getAnchorUrl(""); + const map = new Map([["Action", "onclick"], ["Mouse Up", "onmouseup"], ["Mouse Down", "onmousedown"]]); + + for (const name of Object.keys(data.actions)) { + const jsName = map.get(name); + + if (!jsName) { + continue; + } + + link[jsName] = () => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: data.id, + name + } + }); + return false; + }; + } + + if (!link.onclick) { + link.onclick = () => false; + } + + link.className = "internalLink"; + } + + _bindResetFormAction(link, resetForm) { + const otherClickAction = link.onclick; + + if (!otherClickAction) { + link.href = this.linkService.getAnchorUrl(""); + } + + link.className = "internalLink"; + + if (!this._fieldObjects) { + (0, _util.warn)(`_bindResetFormAction - "resetForm" action not supported, ` + "ensure that the `fieldObjects` parameter is provided."); + + if (!otherClickAction) { + link.onclick = () => false; + } + + return; + } + + link.onclick = () => { + if (otherClickAction) { + otherClickAction(); + } + + const { + fields: resetFormFields, + refs: resetFormRefs, + include + } = resetForm; + const allFields = []; + + if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) { + const fieldIds = new Set(resetFormRefs); + + for (const fieldName of resetFormFields) { + const fields = this._fieldObjects[fieldName] || []; + + for (const { + id + } of fields) { + fieldIds.add(id); + } + } + + for (const fields of Object.values(this._fieldObjects)) { + for (const field of fields) { + if (fieldIds.has(field.id) === include) { + allFields.push(field); + } + } + } + } else { + for (const fields of Object.values(this._fieldObjects)) { + allFields.push(...fields); + } + } + + const storage = this.annotationStorage; + const allIds = []; + + for (const field of allFields) { + const { + id + } = field; + allIds.push(id); + + switch (field.type) { + case "text": + { + const value = field.defaultValue || ""; + storage.setValue(id, { + value + }); + break; + } + + case "checkbox": + case "radiobutton": + { + const value = field.defaultValue === field.exportValues; + storage.setValue(id, { + value + }); + break; + } + + case "combobox": + case "listbox": + { + const value = field.defaultValue || ""; + storage.setValue(id, { + value + }); + break; + } + + default: + continue; + } + + const domElement = document.querySelector(`[data-element-id="${id}"]`); + + if (!domElement) { + continue; + } else if (!GetElementsByNameSet.has(domElement)) { + (0, _util.warn)(`_bindResetFormAction - element not allowed: ${id}`); + continue; + } + + domElement.dispatchEvent(new Event("resetform")); + } + + if (this.enableScripting) { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: "app", + ids: allIds, + name: "ResetForm" + } + }); + } + + return false; + }; + } + +} + +class TextAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable + }); + } + + render() { + this.container.className = "textAnnotation"; + const image = document.createElement("img"); + image.src = this.imageResourcesPath + "annotation-" + this.data.name.toLowerCase() + ".svg"; + image.alt = "[{{type}} Annotation]"; + image.dataset.l10nId = "text_annotation_type"; + image.dataset.l10nArgs = JSON.stringify({ + type: this.data.name + }); + + if (!this.data.hasPopup) { + this._createPopup(image, this.data); + } + + this.container.append(image); + return this.container; + } + +} + +class WidgetAnnotationElement extends AnnotationElement { + render() { + if (this.data.alternativeText) { + this.container.title = this.data.alternativeText; + } + + return this.container; + } + + _getKeyModifier(event) { + const { + isWin, + isMac + } = AnnotationElement.platform; + return isWin && event.ctrlKey || isMac && event.metaKey; + } + + _setEventListener(element, baseName, eventName, valueGetter) { + if (baseName.includes("mouse")) { + element.addEventListener(baseName, event => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: this.data.id, + name: eventName, + value: valueGetter(event), + shift: event.shiftKey, + modifier: this._getKeyModifier(event) + } + }); + }); + } else { + element.addEventListener(baseName, event => { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id: this.data.id, + name: eventName, + value: valueGetter(event) + } + }); + }); + } + } + + _setEventListeners(element, names, getter) { + for (const [baseName, eventName] of names) { + if (eventName === "Action" || this.data.actions?.[eventName]) { + this._setEventListener(element, baseName, eventName, getter); + } + } + } + + _setBackgroundColor(element) { + const color = this.data.backgroundColor || null; + element.style.backgroundColor = color === null ? "transparent" : _util.Util.makeHexColor(color[0], color[1], color[2]); + } + + _setTextStyle(element) { + const TEXT_ALIGNMENT = ["left", "center", "right"]; + const { + fontColor + } = this.data.defaultAppearanceData; + const fontSize = this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE; + const style = element.style; + let computedFontSize; + + if (this.data.multiLine) { + const height = Math.abs(this.data.rect[3] - this.data.rect[1]); + const numberOfLines = Math.round(height / (_util.LINE_FACTOR * fontSize)) || 1; + const lineHeight = height / numberOfLines; + computedFontSize = Math.min(fontSize, Math.round(lineHeight / _util.LINE_FACTOR)); + } else { + const height = Math.abs(this.data.rect[3] - this.data.rect[1]); + computedFontSize = Math.min(fontSize, Math.round(height / _util.LINE_FACTOR)); + } + + style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`; + style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]); + + if (this.data.textAlignment !== null) { + style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment]; + } + } + + _setRequired(element, isRequired) { + if (isRequired) { + element.setAttribute("required", true); + } else { + element.removeAttribute("required"); + } + + element.setAttribute("aria-required", isRequired); + } + +} + +class TextWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + const isRenderable = parameters.renderForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue; + super(parameters, { + isRenderable + }); + } + + setPropertyOnSiblings(base, key, value, keyInStorage) { + const storage = this.annotationStorage; + + for (const element of this._getElementsByName(base.name, base.id)) { + if (element.domElement) { + element.domElement[key] = value; + } + + storage.setValue(element.id, { + [keyInStorage]: value + }); + } + } + + render() { + const storage = this.annotationStorage; + const id = this.data.id; + this.container.className = "textWidgetAnnotation"; + let element = null; + + if (this.renderForms) { + const storedData = storage.getValue(id, { + value: this.data.fieldValue + }); + let textContent = storedData.formattedValue || storedData.value || ""; + const maxLen = storage.getValue(id, { + charLimit: this.data.maxLen + }).charLimit; + + if (maxLen && textContent.length > maxLen) { + textContent = textContent.slice(0, maxLen); + } + + const elementData = { + userValue: textContent, + formattedValue: null, + valueOnFocus: "" + }; + + if (this.data.multiLine) { + element = document.createElement("textarea"); + element.textContent = textContent; + + if (this.data.doNotScroll) { + element.style.overflowY = "hidden"; + } + } else { + element = document.createElement("input"); + element.type = "text"; + element.setAttribute("value", textContent); + + if (this.data.doNotScroll) { + element.style.overflowX = "hidden"; + } + } + + GetElementsByNameSet.add(element); + element.setAttribute("data-element-id", id); + element.disabled = this.data.readOnly; + element.name = this.data.fieldName; + element.tabIndex = DEFAULT_TAB_INDEX; + + this._setRequired(element, this.data.required); + + if (maxLen) { + element.maxLength = maxLen; + } + + element.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + this.setPropertyOnSiblings(element, "value", event.target.value, "value"); + }); + element.addEventListener("resetform", event => { + const defaultValue = this.data.defaultFieldValue ?? ""; + element.value = elementData.userValue = defaultValue; + elementData.formattedValue = null; + }); + + let blurListener = event => { + const { + formattedValue + } = elementData; + + if (formattedValue !== null && formattedValue !== undefined) { + event.target.value = formattedValue; + } + + event.target.scrollLeft = 0; + }; + + if (this.enableScripting && this.hasJSActions) { + element.addEventListener("focus", event => { + if (elementData.userValue) { + event.target.value = elementData.userValue; + } + + elementData.valueOnFocus = event.target.value; + }); + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + elementData.userValue = event.detail.value ?? ""; + storage.setValue(id, { + value: elementData.userValue.toString() + }); + event.target.value = elementData.userValue; + }, + + formattedValue(event) { + const { + formattedValue + } = event.detail; + elementData.formattedValue = formattedValue; + + if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) { + event.target.value = formattedValue; + } + + storage.setValue(id, { + formattedValue + }); + }, + + selRange(event) { + event.target.setSelectionRange(...event.detail.selRange); + }, + + charLimit: event => { + const { + charLimit + } = event.detail; + const { + target + } = event; + + if (charLimit === 0) { + target.removeAttribute("maxLength"); + return; + } + + target.setAttribute("maxLength", charLimit); + let value = elementData.userValue; + + if (!value || value.length <= charLimit) { + return; + } + + value = value.slice(0, charLimit); + target.value = elementData.userValue = value; + storage.setValue(id, { + value + }); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey: 1, + selStart: target.selectionStart, + selEnd: target.selectionEnd + } + }); + } + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + element.addEventListener("keydown", event => { + let commitKey = -1; + + if (event.key === "Escape") { + commitKey = 0; + } else if (event.key === "Enter") { + commitKey = 2; + } else if (event.key === "Tab") { + commitKey = 3; + } + + if (commitKey === -1) { + return; + } + + const { + value + } = event.target; + + if (elementData.valueOnFocus === value) { + return; + } + + elementData.userValue = value; + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + }); + const _blurListener = blurListener; + blurListener = null; + element.addEventListener("blur", event => { + const { + value + } = event.target; + elementData.userValue = value; + + if (this._mouseState.isDown && elementData.valueOnFocus !== value) { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey: 1, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + } + + _blurListener(event); + }); + + if (this.data.actions?.Keystroke) { + element.addEventListener("beforeinput", event => { + const { + data, + target + } = event; + const { + value, + selectionStart, + selectionEnd + } = target; + let selStart = selectionStart, + selEnd = selectionEnd; + + switch (event.inputType) { + case "deleteWordBackward": + { + const match = value.substring(0, selectionStart).match(/\w*[^\w]*$/); + + if (match) { + selStart -= match[0].length; + } + + break; + } + + case "deleteWordForward": + { + const match = value.substring(selectionStart).match(/^[^\w]*\w*/); + + if (match) { + selEnd += match[0].length; + } + + break; + } + + case "deleteContentBackward": + if (selectionStart === selectionEnd) { + selStart -= 1; + } + + break; + + case "deleteContentForward": + if (selectionStart === selectionEnd) { + selEnd += 1; + } + + break; + } + + event.preventDefault(); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + change: data || "", + willCommit: false, + selStart, + selEnd + } + }); + }); + } + + this._setEventListeners(element, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.value); + } + + if (blurListener) { + element.addEventListener("blur", blurListener); + } + + if (this.data.comb) { + const fieldWidth = this.data.rect[2] - this.data.rect[0]; + const combWidth = fieldWidth / maxLen; + element.classList.add("comb"); + element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`; + } + } else { + element = document.createElement("div"); + element.textContent = this.data.fieldValue; + element.style.verticalAlign = "middle"; + element.style.display = "table-cell"; + } + + this._setTextStyle(element); + + this._setBackgroundColor(element); + + this._setDefaultPropertiesFromJS(element); + + this.container.append(element); + return this.container; + } + +} + +class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + + render() { + const storage = this.annotationStorage; + const data = this.data; + const id = data.id; + let value = storage.getValue(id, { + value: data.exportValue === data.fieldValue + }).value; + + if (typeof value === "string") { + value = value !== "Off"; + storage.setValue(id, { + value + }); + } + + this.container.className = "buttonWidgetAnnotation checkBox"; + const element = document.createElement("input"); + GetElementsByNameSet.add(element); + element.setAttribute("data-element-id", id); + element.disabled = data.readOnly; + + this._setRequired(element, this.data.required); + + element.type = "checkbox"; + element.name = data.fieldName; + + if (value) { + element.setAttribute("checked", true); + } + + element.setAttribute("exportValue", data.exportValue); + element.tabIndex = DEFAULT_TAB_INDEX; + element.addEventListener("change", event => { + const { + name, + checked + } = event.target; + + for (const checkbox of this._getElementsByName(name, id)) { + const curChecked = checked && checkbox.exportValue === data.exportValue; + + if (checkbox.domElement) { + checkbox.domElement.checked = curChecked; + } + + storage.setValue(checkbox.id, { + value: curChecked + }); + } + + storage.setValue(id, { + value: checked + }); + }); + element.addEventListener("resetform", event => { + const defaultValue = data.defaultFieldValue || "Off"; + event.target.checked = defaultValue === data.exportValue; + }); + + if (this.enableScripting && this.hasJSActions) { + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + event.target.checked = event.detail.value !== "Off"; + storage.setValue(id, { + value: event.target.checked + }); + } + + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + + this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked); + } + + this._setBackgroundColor(element); + + this._setDefaultPropertiesFromJS(element); + + this.container.append(element); + return this.container; + } + +} + +class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + + render() { + this.container.className = "buttonWidgetAnnotation radioButton"; + const storage = this.annotationStorage; + const data = this.data; + const id = data.id; + let value = storage.getValue(id, { + value: data.fieldValue === data.buttonValue + }).value; + + if (typeof value === "string") { + value = value !== data.buttonValue; + storage.setValue(id, { + value + }); + } + + const element = document.createElement("input"); + GetElementsByNameSet.add(element); + element.setAttribute("data-element-id", id); + element.disabled = data.readOnly; + + this._setRequired(element, this.data.required); + + element.type = "radio"; + element.name = data.fieldName; + + if (value) { + element.setAttribute("checked", true); + } + + element.tabIndex = DEFAULT_TAB_INDEX; + element.addEventListener("change", event => { + const { + name, + checked + } = event.target; + + for (const radio of this._getElementsByName(name, id)) { + storage.setValue(radio.id, { + value: false + }); + } + + storage.setValue(id, { + value: checked + }); + }); + element.addEventListener("resetform", event => { + const defaultValue = data.defaultFieldValue; + event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue; + }); + + if (this.enableScripting && this.hasJSActions) { + const pdfButtonValue = data.buttonValue; + element.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value: event => { + const checked = pdfButtonValue === event.detail.value; + + for (const radio of this._getElementsByName(event.target.name)) { + const curChecked = checked && radio.id === id; + + if (radio.domElement) { + radio.domElement.checked = curChecked; + } + + storage.setValue(radio.id, { + value: curChecked + }); + } + } + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + + this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked); + } + + this._setBackgroundColor(element); + + this._setDefaultPropertiesFromJS(element); + + this.container.append(element); + return this.container; + } + +} + +class PushButtonWidgetAnnotationElement extends LinkAnnotationElement { + constructor(parameters) { + super(parameters, { + ignoreBorder: parameters.data.hasAppearance + }); + } + + render() { + const container = super.render(); + container.className = "buttonWidgetAnnotation pushButton"; + + if (this.data.alternativeText) { + container.title = this.data.alternativeText; + } + + const linkElement = container.lastChild; + + if (this.enableScripting && this.hasJSActions && linkElement) { + this._setDefaultPropertiesFromJS(linkElement); + + linkElement.addEventListener("updatefromsandbox", jsEvent => { + this._dispatchEventFromSandbox({}, jsEvent); + }); + } + + return container; + } + +} + +class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: parameters.renderForms + }); + } + + render() { + this.container.className = "choiceWidgetAnnotation"; + const storage = this.annotationStorage; + const id = this.data.id; + const storedData = storage.getValue(id, { + value: this.data.fieldValue + }); + const selectElement = document.createElement("select"); + GetElementsByNameSet.add(selectElement); + selectElement.setAttribute("data-element-id", id); + selectElement.disabled = this.data.readOnly; + + this._setRequired(selectElement, this.data.required); + + selectElement.name = this.data.fieldName; + selectElement.tabIndex = DEFAULT_TAB_INDEX; + let addAnEmptyEntry = this.data.combo && this.data.options.length > 0; + + if (!this.data.combo) { + selectElement.size = this.data.options.length; + + if (this.data.multiSelect) { + selectElement.multiple = true; + } + } + + selectElement.addEventListener("resetform", event => { + const defaultValue = this.data.defaultFieldValue; + + for (const option of selectElement.options) { + option.selected = option.value === defaultValue; + } + }); + + for (const option of this.data.options) { + const optionElement = document.createElement("option"); + optionElement.textContent = option.displayValue; + optionElement.value = option.exportValue; + + if (storedData.value.includes(option.exportValue)) { + optionElement.setAttribute("selected", true); + addAnEmptyEntry = false; + } + + selectElement.append(optionElement); + } + + let removeEmptyEntry = null; + + if (addAnEmptyEntry) { + const noneOptionElement = document.createElement("option"); + noneOptionElement.value = " "; + noneOptionElement.setAttribute("hidden", true); + noneOptionElement.setAttribute("selected", true); + selectElement.prepend(noneOptionElement); + + removeEmptyEntry = () => { + noneOptionElement.remove(); + selectElement.removeEventListener("input", removeEmptyEntry); + removeEmptyEntry = null; + }; + + selectElement.addEventListener("input", removeEmptyEntry); + } + + const getValue = (event, isExport) => { + const name = isExport ? "value" : "textContent"; + const options = event.target.options; + + if (!event.target.multiple) { + return options.selectedIndex === -1 ? null : options[options.selectedIndex][name]; + } + + return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]); + }; + + const getItems = event => { + const options = event.target.options; + return Array.prototype.map.call(options, option => { + return { + displayValue: option.textContent, + exportValue: option.value + }; + }); + }; + + if (this.enableScripting && this.hasJSActions) { + selectElement.addEventListener("updatefromsandbox", jsEvent => { + const actions = { + value(event) { + removeEmptyEntry?.(); + const value = event.detail.value; + const values = new Set(Array.isArray(value) ? value : [value]); + + for (const option of selectElement.options) { + option.selected = values.has(option.value); + } + + storage.setValue(id, { + value: getValue(event, true) + }); + }, + + multipleSelection(event) { + selectElement.multiple = true; + }, + + remove(event) { + const options = selectElement.options; + const index = event.detail.remove; + options[index].selected = false; + selectElement.remove(index); + + if (options.length > 0) { + const i = Array.prototype.findIndex.call(options, option => option.selected); + + if (i === -1) { + options[0].selected = true; + } + } + + storage.setValue(id, { + value: getValue(event, true), + items: getItems(event) + }); + }, + + clear(event) { + while (selectElement.length !== 0) { + selectElement.remove(0); + } + + storage.setValue(id, { + value: null, + items: [] + }); + }, + + insert(event) { + const { + index, + displayValue, + exportValue + } = event.detail.insert; + const selectChild = selectElement.children[index]; + const optionElement = document.createElement("option"); + optionElement.textContent = displayValue; + optionElement.value = exportValue; + + if (selectChild) { + selectChild.before(optionElement); + } else { + selectElement.append(optionElement); + } + + storage.setValue(id, { + value: getValue(event, true), + items: getItems(event) + }); + }, + + items(event) { + const { + items + } = event.detail; + + while (selectElement.length !== 0) { + selectElement.remove(0); + } + + for (const item of items) { + const { + displayValue, + exportValue + } = item; + const optionElement = document.createElement("option"); + optionElement.textContent = displayValue; + optionElement.value = exportValue; + selectElement.append(optionElement); + } + + if (selectElement.options.length > 0) { + selectElement.options[0].selected = true; + } + + storage.setValue(id, { + value: getValue(event, true), + items: getItems(event) + }); + }, + + indices(event) { + const indices = new Set(event.detail.indices); + + for (const option of event.target.options) { + option.selected = indices.has(option.index); + } + + storage.setValue(id, { + value: getValue(event, true) + }); + }, + + editable(event) { + event.target.disabled = !event.detail.editable; + } + + }; + + this._dispatchEventFromSandbox(actions, jsEvent); + }); + selectElement.addEventListener("input", event => { + const exportValue = getValue(event, true); + const value = getValue(event, false); + storage.setValue(id, { + value: exportValue + }); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + changeEx: exportValue, + willCommit: true, + commitKey: 1, + keyDown: false + } + }); + }); + + this._setEventListeners(selectElement, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"], ["input", "Action"]], event => event.target.checked); + } else { + selectElement.addEventListener("input", function (event) { + storage.setValue(id, { + value: getValue(event, true) + }); + }); + } + + if (this.data.combo) { + this._setTextStyle(selectElement); + } else {} + + this._setBackgroundColor(selectElement); + + this._setDefaultPropertiesFromJS(selectElement); + + this.container.append(selectElement); + return this.container; + } + +} + +class PopupAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable + }); + } + + render() { + const IGNORE_TYPES = ["Line", "Square", "Circle", "PolyLine", "Polygon", "Ink"]; + this.container.className = "popupAnnotation"; + + if (IGNORE_TYPES.includes(this.data.parentType)) { + return this.container; + } + + const selector = `[data-annotation-id="${this.data.parentId}"]`; + const parentElements = this.layer.querySelectorAll(selector); + + if (parentElements.length === 0) { + return this.container; + } + + const popup = new PopupElement({ + container: this.container, + trigger: Array.from(parentElements), + color: this.data.color, + titleObj: this.data.titleObj, + modificationDate: this.data.modificationDate, + contentsObj: this.data.contentsObj, + richText: this.data.richText + }); + const page = this.page; + + const rect = _util.Util.normalizeRect([this.data.parentRect[0], page.view[3] - this.data.parentRect[1] + page.view[1], this.data.parentRect[2], page.view[3] - this.data.parentRect[3] + page.view[1]]); + + const popupLeft = rect[0] + this.data.parentRect[2] - this.data.parentRect[0]; + const popupTop = rect[1]; + const [pageLLx, pageLLy, pageURx, pageURy] = this.viewport.viewBox; + const pageWidth = pageURx - pageLLx; + const pageHeight = pageURy - pageLLy; + this.container.style.left = `${100 * (popupLeft - pageLLx) / pageWidth}%`; + this.container.style.top = `${100 * (popupTop - pageLLy) / pageHeight}%`; + this.container.append(popup.render()); + return this.container; + } + +} + +class PopupElement { + constructor(parameters) { + this.container = parameters.container; + this.trigger = parameters.trigger; + this.color = parameters.color; + this.titleObj = parameters.titleObj; + this.modificationDate = parameters.modificationDate; + this.contentsObj = parameters.contentsObj; + this.richText = parameters.richText; + this.hideWrapper = parameters.hideWrapper || false; + this.pinned = false; + } + + render() { + const BACKGROUND_ENLIGHT = 0.7; + const wrapper = document.createElement("div"); + wrapper.className = "popupWrapper"; + this.hideElement = this.hideWrapper ? wrapper : this.container; + this.hideElement.hidden = true; + const popup = document.createElement("div"); + popup.className = "popup"; + const color = this.color; + + if (color) { + const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0]; + const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1]; + const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2]; + popup.style.backgroundColor = _util.Util.makeHexColor(r | 0, g | 0, b | 0); + } + + const title = document.createElement("h1"); + title.dir = this.titleObj.dir; + title.textContent = this.titleObj.str; + popup.append(title); + + const dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate); + + if (dateObject) { + const modificationDate = document.createElement("span"); + modificationDate.className = "popupDate"; + modificationDate.textContent = "{{date}}, {{time}}"; + modificationDate.dataset.l10nId = "annotation_date_string"; + modificationDate.dataset.l10nArgs = JSON.stringify({ + date: dateObject.toLocaleDateString(), + time: dateObject.toLocaleTimeString() + }); + popup.append(modificationDate); + } + + if (this.richText?.str && (!this.contentsObj?.str || this.contentsObj.str === this.richText.str)) { + _xfa_layer.XfaLayer.render({ + xfaHtml: this.richText.html, + intent: "richText", + div: popup + }); + + popup.lastChild.className = "richText popupContent"; + } else { + const contents = this._formatContents(this.contentsObj); + + popup.append(contents); + } + + if (!Array.isArray(this.trigger)) { + this.trigger = [this.trigger]; + } + + for (const element of this.trigger) { + element.addEventListener("click", this._toggle.bind(this)); + element.addEventListener("mouseover", this._show.bind(this, false)); + element.addEventListener("mouseout", this._hide.bind(this, false)); + } + + popup.addEventListener("click", this._hide.bind(this, true)); + wrapper.append(popup); + return wrapper; + } + + _formatContents({ + str, + dir + }) { + const p = document.createElement("p"); + p.className = "popupContent"; + p.dir = dir; + const lines = str.split(/(?:\r\n?|\n)/); + + for (let i = 0, ii = lines.length; i < ii; ++i) { + const line = lines[i]; + p.append(document.createTextNode(line)); + + if (i < ii - 1) { + p.append(document.createElement("br")); + } + } + + return p; + } + + _toggle() { + if (this.pinned) { + this._hide(true); + } else { + this._show(true); + } + } + + _show(pin = false) { + if (pin) { + this.pinned = true; + } + + if (this.hideElement.hidden) { + this.hideElement.hidden = false; + this.container.style.zIndex = parseInt(this.container.style.zIndex) + 1000; + } + } + + _hide(unpin = true) { + if (unpin) { + this.pinned = false; + } + + if (!this.hideElement.hidden && !this.pinned) { + this.hideElement.hidden = true; + this.container.style.zIndex = parseInt(this.container.style.zIndex) - 1000; + } + } + +} + +class FreeTextAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.textContent = parameters.data.textContent; + } + + render() { + this.container.className = "freeTextAnnotation"; + + if (this.textContent) { + const content = document.createElement("div"); + content.className = "annotationTextContent"; + content.setAttribute("role", "comment"); + + for (const line of this.textContent) { + const lineSpan = document.createElement("span"); + lineSpan.textContent = line; + content.append(lineSpan); + } + + this.container.append(content); + } + + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + return this.container; + } + +} + +class LineAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "lineAnnotation"; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + const line = this.svgFactory.createElement("svg:line"); + line.setAttribute("x1", data.rect[2] - data.lineCoordinates[0]); + line.setAttribute("y1", data.rect[3] - data.lineCoordinates[1]); + line.setAttribute("x2", data.rect[2] - data.lineCoordinates[2]); + line.setAttribute("y2", data.rect[3] - data.lineCoordinates[3]); + line.setAttribute("stroke-width", data.borderStyle.width || 1); + line.setAttribute("stroke", "transparent"); + line.setAttribute("fill", "transparent"); + svg.append(line); + this.container.append(svg); + + this._createPopup(line, data); + + return this.container; + } + +} + +class SquareAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "squareAnnotation"; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + const borderWidth = data.borderStyle.width; + const square = this.svgFactory.createElement("svg:rect"); + square.setAttribute("x", borderWidth / 2); + square.setAttribute("y", borderWidth / 2); + square.setAttribute("width", width - borderWidth); + square.setAttribute("height", height - borderWidth); + square.setAttribute("stroke-width", borderWidth || 1); + square.setAttribute("stroke", "transparent"); + square.setAttribute("fill", "transparent"); + svg.append(square); + this.container.append(svg); + + this._createPopup(square, data); + + return this.container; + } + +} + +class CircleAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "circleAnnotation"; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + const borderWidth = data.borderStyle.width; + const circle = this.svgFactory.createElement("svg:ellipse"); + circle.setAttribute("cx", width / 2); + circle.setAttribute("cy", height / 2); + circle.setAttribute("rx", width / 2 - borderWidth / 2); + circle.setAttribute("ry", height / 2 - borderWidth / 2); + circle.setAttribute("stroke-width", borderWidth || 1); + circle.setAttribute("stroke", "transparent"); + circle.setAttribute("fill", "transparent"); + svg.append(circle); + this.container.append(svg); + + this._createPopup(circle, data); + + return this.container; + } + +} + +class PolylineAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.containerClassName = "polylineAnnotation"; + this.svgElementName = "svg:polyline"; + } + + render() { + this.container.className = this.containerClassName; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + let points = []; + + for (const coordinate of data.vertices) { + const x = coordinate.x - data.rect[0]; + const y = data.rect[3] - coordinate.y; + points.push(x + "," + y); + } + + points = points.join(" "); + const polyline = this.svgFactory.createElement(this.svgElementName); + polyline.setAttribute("points", points); + polyline.setAttribute("stroke-width", data.borderStyle.width || 1); + polyline.setAttribute("stroke", "transparent"); + polyline.setAttribute("fill", "transparent"); + svg.append(polyline); + this.container.append(svg); + + this._createPopup(polyline, data); + + return this.container; + } + +} + +class PolygonAnnotationElement extends PolylineAnnotationElement { + constructor(parameters) { + super(parameters); + this.containerClassName = "polygonAnnotation"; + this.svgElementName = "svg:polygon"; + } + +} + +class CaretAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "caretAnnotation"; + + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + return this.container; + } + +} + +class InkAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + this.containerClassName = "inkAnnotation"; + this.svgElementName = "svg:polyline"; + } + + render() { + this.container.className = this.containerClassName; + const data = this.data; + const { + width, + height + } = getRectDims(data.rect); + const svg = this.svgFactory.create(width, height, true); + + for (const inkList of data.inkLists) { + let points = []; + + for (const coordinate of inkList) { + const x = coordinate.x - data.rect[0]; + const y = data.rect[3] - coordinate.y; + points.push(`${x},${y}`); + } + + points = points.join(" "); + const polyline = this.svgFactory.createElement(this.svgElementName); + polyline.setAttribute("points", points); + polyline.setAttribute("stroke-width", data.borderStyle.width || 1); + polyline.setAttribute("stroke", "transparent"); + polyline.setAttribute("fill", "transparent"); + + this._createPopup(polyline, data); + + svg.append(polyline); + } + + this.container.append(svg); + return this.container; + } + +} + +class HighlightAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("highlightAnnotation"); + } + + this.container.className = "highlightAnnotation"; + return this.container; + } + +} + +class UnderlineAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("underlineAnnotation"); + } + + this.container.className = "underlineAnnotation"; + return this.container; + } + +} + +class SquigglyAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("squigglyAnnotation"); + } + + this.container.className = "squigglyAnnotation"; + return this.container; + } + +} + +class StrikeOutAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true, + createQuadrilaterals: true + }); + } + + render() { + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + if (this.quadrilaterals) { + return this._renderQuadrilaterals("strikeoutAnnotation"); + } + + this.container.className = "strikeoutAnnotation"; + return this.container; + } + +} + +class StampAnnotationElement extends AnnotationElement { + constructor(parameters) { + const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str); + super(parameters, { + isRenderable, + ignoreBorder: true + }); + } + + render() { + this.container.className = "stampAnnotation"; + + if (!this.data.hasPopup) { + this._createPopup(null, this.data); + } + + return this.container; + } + +} + +class FileAttachmentAnnotationElement extends AnnotationElement { + constructor(parameters) { + super(parameters, { + isRenderable: true + }); + const { + filename, + content + } = this.data.file; + this.filename = (0, _display_utils.getFilenameFromUrl)(filename); + this.content = content; + this.linkService.eventBus?.dispatch("fileattachmentannotation", { + source: this, + filename, + content + }); + } + + render() { + this.container.className = "fileAttachmentAnnotation"; + const trigger = document.createElement("div"); + trigger.className = "popupTriggerArea"; + trigger.addEventListener("dblclick", this._download.bind(this)); + + if (!this.data.hasPopup && (this.data.titleObj?.str || this.data.contentsObj?.str || this.data.richText)) { + this._createPopup(trigger, this.data); + } + + this.container.append(trigger); + return this.container; + } + + _download() { + this.downloadManager?.openOrDownloadData(this.container, this.content, this.filename); + } + +} + +class AnnotationLayer { + static #appendElement(element, id, div, accessibilityManager) { + const contentElement = element.firstChild || element; + contentElement.id = `${_display_utils.AnnotationPrefix}${id}`; + div.append(element); + accessibilityManager?.moveElementInDOM(div, element, contentElement, false); + } + + static render(parameters) { + const { + annotations, + div, + viewport, + accessibilityManager + } = parameters; + this.#setDimensions(div, viewport); + let zIndex = 0; + + for (const data of annotations) { + if (data.annotationType !== _util.AnnotationType.POPUP) { + const { + width, + height + } = getRectDims(data.rect); + + if (width <= 0 || height <= 0) { + continue; + } + } + + const element = AnnotationElementFactory.create({ + data, + layer: div, + page: parameters.page, + viewport, + linkService: parameters.linkService, + downloadManager: parameters.downloadManager, + imageResourcesPath: parameters.imageResourcesPath || "", + renderForms: parameters.renderForms !== false, + svgFactory: new _display_utils.DOMSVGFactory(), + annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(), + enableScripting: parameters.enableScripting, + hasJSActions: parameters.hasJSActions, + fieldObjects: parameters.fieldObjects, + mouseState: parameters.mouseState || { + isDown: false + } + }); + + if (element.isRenderable) { + const rendered = element.render(); + + if (data.hidden) { + rendered.style.visibility = "hidden"; + } + + if (Array.isArray(rendered)) { + for (const renderedElement of rendered) { + renderedElement.style.zIndex = zIndex++; + AnnotationLayer.#appendElement(renderedElement, data.id, div, accessibilityManager); + } + } else { + rendered.style.zIndex = zIndex++; + + if (element instanceof PopupAnnotationElement) { + div.prepend(rendered); + } else { + AnnotationLayer.#appendElement(rendered, data.id, div, accessibilityManager); + } + } + } + } + + this.#setAnnotationCanvasMap(div, parameters.annotationCanvasMap); + } + + static update(parameters) { + const { + annotationCanvasMap, + div, + viewport + } = parameters; + this.#setDimensions(div, viewport); + this.#setAnnotationCanvasMap(div, annotationCanvasMap); + div.hidden = false; + } + + static #setDimensions(div, { + width, + height, + rotation + }) { + const { + style + } = div; + const flipOrientation = rotation % 180 !== 0, + widthStr = Math.floor(width) + "px", + heightStr = Math.floor(height) + "px"; + style.width = flipOrientation ? heightStr : widthStr; + style.height = flipOrientation ? widthStr : heightStr; + div.setAttribute("data-main-rotation", rotation); + } + + static #setAnnotationCanvasMap(div, annotationCanvasMap) { + if (!annotationCanvasMap) { + return; + } + + for (const [id, canvas] of annotationCanvasMap) { + const element = div.querySelector(`[data-annotation-id="${id}"]`); + + if (!element) { + continue; + } + + const { + firstChild + } = element; + + if (!firstChild) { + element.append(canvas); + } else if (firstChild.nodeName === "CANVAS") { + firstChild.replaceWith(canvas); + } else { + firstChild.before(canvas); + } + } + + annotationCanvasMap.clear(); + } + +} + +exports.AnnotationLayer = AnnotationLayer; + +/***/ }), +/* 28 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ColorConverters = void 0; + +function makeColorComp(n) { + return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0"); +} + +class ColorConverters { + static CMYK_G([c, y, m, k]) { + return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)]; + } + + static G_CMYK([g]) { + return ["CMYK", 0, 0, 0, 1 - g]; + } + + static G_RGB([g]) { + return ["RGB", g, g, g]; + } + + static G_HTML([g]) { + const G = makeColorComp(g); + return `#${G}${G}${G}`; + } + + static RGB_G([r, g, b]) { + return ["G", 0.3 * r + 0.59 * g + 0.11 * b]; + } + + static RGB_HTML([r, g, b]) { + const R = makeColorComp(r); + const G = makeColorComp(g); + const B = makeColorComp(b); + return `#${R}${G}${B}`; + } + + static T_HTML() { + return "#00000000"; + } + + static CMYK_RGB([c, y, m, k]) { + return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)]; + } + + static CMYK_HTML(components) { + const rgb = this.CMYK_RGB(components).slice(1); + return this.RGB_HTML(rgb); + } + + static RGB_CMYK([r, g, b]) { + const c = 1 - r; + const m = 1 - g; + const y = 1 - b; + const k = Math.min(c, m, y); + return ["CMYK", c, m, y, k]; + } + +} + +exports.ColorConverters = ColorConverters; + +/***/ }), +/* 29 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaLayer = void 0; + +var _xfa_text = __w_pdfjs_require__(20); + +class XfaLayer { + static setupStorage(html, id, element, storage, intent) { + const storedData = storage.getValue(id, { + value: null + }); + + switch (element.name) { + case "textarea": + if (storedData.value !== null) { + html.textContent = storedData.value; + } + + if (intent === "print") { + break; + } + + html.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + }); + break; + + case "input": + if (element.attributes.type === "radio" || element.attributes.type === "checkbox") { + if (storedData.value === element.attributes.xfaOn) { + html.setAttribute("checked", true); + } else if (storedData.value === element.attributes.xfaOff) { + html.removeAttribute("checked"); + } + + if (intent === "print") { + break; + } + + html.addEventListener("change", event => { + storage.setValue(id, { + value: event.target.checked ? event.target.getAttribute("xfaOn") : event.target.getAttribute("xfaOff") + }); + }); + } else { + if (storedData.value !== null) { + html.setAttribute("value", storedData.value); + } + + if (intent === "print") { + break; + } + + html.addEventListener("input", event => { + storage.setValue(id, { + value: event.target.value + }); + }); + } + + break; + + case "select": + if (storedData.value !== null) { + for (const option of element.children) { + if (option.attributes.value === storedData.value) { + option.attributes.selected = true; + } + } + } + + html.addEventListener("input", event => { + const options = event.target.options; + const value = options.selectedIndex === -1 ? "" : options[options.selectedIndex].value; + storage.setValue(id, { + value + }); + }); + break; + } + } + + static setAttributes({ + html, + element, + storage = null, + intent, + linkService + }) { + const { + attributes + } = element; + const isHTMLAnchorElement = html instanceof HTMLAnchorElement; + + if (attributes.type === "radio") { + attributes.name = `${attributes.name}-${intent}`; + } + + for (const [key, value] of Object.entries(attributes)) { + if (value === null || value === undefined) { + continue; + } + + switch (key) { + case "class": + if (value.length) { + html.setAttribute(key, value.join(" ")); + } + + break; + + case "dataId": + break; + + case "id": + html.setAttribute("data-element-id", value); + break; + + case "style": + Object.assign(html.style, value); + break; + + case "textContent": + html.textContent = value; + break; + + default: + if (!isHTMLAnchorElement || key !== "href" && key !== "newWindow") { + html.setAttribute(key, value); + } + + } + } + + if (isHTMLAnchorElement) { + linkService.addLinkAttributes(html, attributes.href, attributes.newWindow); + } + + if (storage && attributes.dataId) { + this.setupStorage(html, attributes.dataId, element, storage); + } + } + + static render(parameters) { + const storage = parameters.annotationStorage; + const linkService = parameters.linkService; + const root = parameters.xfaHtml; + const intent = parameters.intent || "display"; + const rootHtml = document.createElement(root.name); + + if (root.attributes) { + this.setAttributes({ + html: rootHtml, + element: root, + intent, + linkService + }); + } + + const stack = [[root, -1, rootHtml]]; + const rootDiv = parameters.div; + rootDiv.append(rootHtml); + + if (parameters.viewport) { + const transform = `matrix(${parameters.viewport.transform.join(",")})`; + rootDiv.style.transform = transform; + } + + if (intent !== "richText") { + rootDiv.setAttribute("class", "xfaLayer xfaFont"); + } + + const textDivs = []; + + while (stack.length > 0) { + const [parent, i, html] = stack.at(-1); + + if (i + 1 === parent.children.length) { + stack.pop(); + continue; + } + + const child = parent.children[++stack.at(-1)[1]]; + + if (child === null) { + continue; + } + + const { + name + } = child; + + if (name === "#text") { + const node = document.createTextNode(child.value); + textDivs.push(node); + html.append(node); + continue; + } + + let childHtml; + + if (child?.attributes?.xmlns) { + childHtml = document.createElementNS(child.attributes.xmlns, name); + } else { + childHtml = document.createElement(name); + } + + html.append(childHtml); + + if (child.attributes) { + this.setAttributes({ + html: childHtml, + element: child, + storage, + intent, + linkService + }); + } + + if (child.children && child.children.length > 0) { + stack.push([child, -1, childHtml]); + } else if (child.value) { + const node = document.createTextNode(child.value); + + if (_xfa_text.XfaText.shouldBuildText(name)) { + textDivs.push(node); + } + + childHtml.append(node); + } + } + + for (const el of rootDiv.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea")) { + el.setAttribute("readOnly", true); + } + + return { + textDivs + }; + } + + static update(parameters) { + const transform = `matrix(${parameters.viewport.transform.join(",")})`; + parameters.div.style.transform = transform; + parameters.div.hidden = false; + } + +} + +exports.XfaLayer = XfaLayer; + +/***/ }), +/* 30 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextLayerRenderTask = void 0; +exports.renderTextLayer = renderTextLayer; + +var _util = __w_pdfjs_require__(1); + +var _display_utils = __w_pdfjs_require__(8); + +const MAX_TEXT_DIVS_TO_RENDER = 100000; +const DEFAULT_FONT_SIZE = 30; +const DEFAULT_FONT_ASCENT = 0.8; +const ascentCache = new Map(); +const AllWhitespaceRegexp = /^\s+$/g; + +function getAscent(fontFamily, ctx) { + const cachedAscent = ascentCache.get(fontFamily); + + if (cachedAscent) { + return cachedAscent; + } + + ctx.save(); + ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`; + const metrics = ctx.measureText(""); + let ascent = metrics.fontBoundingBoxAscent; + let descent = Math.abs(metrics.fontBoundingBoxDescent); + + if (ascent) { + ctx.restore(); + const ratio = ascent / (ascent + descent); + ascentCache.set(fontFamily, ratio); + return ratio; + } + + ctx.strokeStyle = "red"; + ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); + ctx.strokeText("g", 0, 0); + let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; + descent = 0; + + for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) { + if (pixels[i] > 0) { + descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE); + break; + } + } + + ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); + ctx.strokeText("A", 0, DEFAULT_FONT_SIZE); + pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; + ascent = 0; + + for (let i = 0, ii = pixels.length; i < ii; i += 4) { + if (pixels[i] > 0) { + ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE); + break; + } + } + + ctx.restore(); + + if (ascent) { + const ratio = ascent / (ascent + descent); + ascentCache.set(fontFamily, ratio); + return ratio; + } + + ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT); + return DEFAULT_FONT_ASCENT; +} + +function appendText(task, geom, styles, ctx) { + const textDiv = document.createElement("span"); + const textDivProperties = task._enhanceTextSelection ? { + angle: 0, + canvasWidth: 0, + hasText: geom.str !== "", + hasEOL: geom.hasEOL, + originalTransform: null, + paddingBottom: 0, + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + scale: 1, + fontSize: 0 + } : { + angle: 0, + canvasWidth: 0, + hasText: geom.str !== "", + hasEOL: geom.hasEOL, + fontSize: 0 + }; + + task._textDivs.push(textDiv); + + const tx = _util.Util.transform(task._viewport.transform, geom.transform); + + let angle = Math.atan2(tx[1], tx[0]); + const style = styles[geom.fontName]; + + if (style.vertical) { + angle += Math.PI / 2; + } + + const fontHeight = Math.hypot(tx[2], tx[3]); + const fontAscent = fontHeight * getAscent(style.fontFamily, ctx); + let left, top; + + if (angle === 0) { + left = tx[4]; + top = tx[5] - fontAscent; + } else { + left = tx[4] + fontAscent * Math.sin(angle); + top = tx[5] - fontAscent * Math.cos(angle); + } + + textDiv.style.left = `${left}px`; + textDiv.style.top = `${top}px`; + textDiv.style.fontSize = `${fontHeight}px`; + textDiv.style.fontFamily = style.fontFamily; + textDivProperties.fontSize = fontHeight; + textDiv.setAttribute("role", "presentation"); + textDiv.textContent = geom.str; + textDiv.dir = geom.dir; + + if (task._fontInspectorEnabled) { + textDiv.dataset.fontName = geom.fontName; + } + + if (angle !== 0) { + textDivProperties.angle = angle * (180 / Math.PI); + } + + let shouldScaleText = false; + + if (geom.str.length > 1 || task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str)) { + shouldScaleText = true; + } else if (geom.str !== " " && geom.transform[0] !== geom.transform[3]) { + const absScaleX = Math.abs(geom.transform[0]), + absScaleY = Math.abs(geom.transform[3]); + + if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) { + shouldScaleText = true; + } + } + + if (shouldScaleText) { + if (style.vertical) { + textDivProperties.canvasWidth = geom.height * task._viewport.scale; + } else { + textDivProperties.canvasWidth = geom.width * task._viewport.scale; + } + } + + task._textDivProperties.set(textDiv, textDivProperties); + + if (task._textContentStream) { + task._layoutText(textDiv); + } + + if (task._enhanceTextSelection && textDivProperties.hasText) { + let angleCos = 1, + angleSin = 0; + + if (angle !== 0) { + angleCos = Math.cos(angle); + angleSin = Math.sin(angle); + } + + const divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale; + const divHeight = fontHeight; + let m, b; + + if (angle !== 0) { + m = [angleCos, angleSin, -angleSin, angleCos, left, top]; + b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m); + } else { + b = [left, top, left + divWidth, top + divHeight]; + } + + task._bounds.push({ + left: b[0], + top: b[1], + right: b[2], + bottom: b[3], + div: textDiv, + size: [divWidth, divHeight], + m + }); + } +} + +function render(task) { + if (task._canceled) { + return; + } + + const textDivs = task._textDivs; + const capability = task._capability; + const textDivsLength = textDivs.length; + + if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) { + task._renderingDone = true; + capability.resolve(); + return; + } + + if (!task._textContentStream) { + for (let i = 0; i < textDivsLength; i++) { + task._layoutText(textDivs[i]); + } + } + + task._renderingDone = true; + capability.resolve(); +} + +function findPositiveMin(ts, offset, count) { + let result = 0; + + for (let i = 0; i < count; i++) { + const t = ts[offset++]; + + if (t > 0) { + result = result ? Math.min(t, result) : t; + } + } + + return result; +} + +function expand(task) { + const bounds = task._bounds; + const viewport = task._viewport; + const expanded = expandBounds(viewport.width, viewport.height, bounds); + + for (let i = 0; i < expanded.length; i++) { + const div = bounds[i].div; + + const divProperties = task._textDivProperties.get(div); + + if (divProperties.angle === 0) { + divProperties.paddingLeft = bounds[i].left - expanded[i].left; + divProperties.paddingTop = bounds[i].top - expanded[i].top; + divProperties.paddingRight = expanded[i].right - bounds[i].right; + divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom; + + task._textDivProperties.set(div, divProperties); + + continue; + } + + const e = expanded[i], + b = bounds[i]; + const m = b.m, + c = m[0], + s = m[1]; + const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size]; + const ts = new Float64Array(64); + + for (let j = 0, jj = points.length; j < jj; j++) { + const t = _util.Util.applyTransform(points[j], m); + + ts[j + 0] = c && (e.left - t[0]) / c; + ts[j + 4] = s && (e.top - t[1]) / s; + ts[j + 8] = c && (e.right - t[0]) / c; + ts[j + 12] = s && (e.bottom - t[1]) / s; + ts[j + 16] = s && (e.left - t[0]) / -s; + ts[j + 20] = c && (e.top - t[1]) / c; + ts[j + 24] = s && (e.right - t[0]) / -s; + ts[j + 28] = c && (e.bottom - t[1]) / c; + ts[j + 32] = c && (e.left - t[0]) / -c; + ts[j + 36] = s && (e.top - t[1]) / -s; + ts[j + 40] = c && (e.right - t[0]) / -c; + ts[j + 44] = s && (e.bottom - t[1]) / -s; + ts[j + 48] = s && (e.left - t[0]) / s; + ts[j + 52] = c && (e.top - t[1]) / -c; + ts[j + 56] = s && (e.right - t[0]) / s; + ts[j + 60] = c && (e.bottom - t[1]) / -c; + } + + const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s)); + divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale; + divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale; + divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale; + divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale; + + task._textDivProperties.set(div, divProperties); + } +} + +function expandBounds(width, height, boxes) { + const bounds = boxes.map(function (box, i) { + return { + x1: box.left, + y1: box.top, + x2: box.right, + y2: box.bottom, + index: i, + x1New: undefined, + x2New: undefined + }; + }); + expandBoundsLTR(width, bounds); + const expanded = new Array(boxes.length); + + for (const b of bounds) { + const i = b.index; + expanded[i] = { + left: b.x1New, + top: 0, + right: b.x2New, + bottom: 0 + }; + } + + boxes.map(function (box, i) { + const e = expanded[i], + b = bounds[i]; + b.x1 = box.top; + b.y1 = width - e.right; + b.x2 = box.bottom; + b.y2 = width - e.left; + b.index = i; + b.x1New = undefined; + b.x2New = undefined; + }); + expandBoundsLTR(height, bounds); + + for (const b of bounds) { + const i = b.index; + expanded[i].top = b.x1New; + expanded[i].bottom = b.x2New; + } + + return expanded; +} + +function expandBoundsLTR(width, bounds) { + bounds.sort(function (a, b) { + return a.x1 - b.x1 || a.index - b.index; + }); + const fakeBoundary = { + x1: -Infinity, + y1: -Infinity, + x2: 0, + y2: Infinity, + index: -1, + x1New: 0, + x2New: 0 + }; + const horizon = [{ + start: -Infinity, + end: Infinity, + boundary: fakeBoundary + }]; + + for (const boundary of bounds) { + let i = 0; + + while (i < horizon.length && horizon[i].end <= boundary.y1) { + i++; + } + + let j = horizon.length - 1; + + while (j >= 0 && horizon[j].start >= boundary.y2) { + j--; + } + + let horizonPart, affectedBoundary; + let q, + k, + maxXNew = -Infinity; + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + let xNew; + + if (affectedBoundary.x2 > boundary.x1) { + xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1; + } else if (affectedBoundary.x2New === undefined) { + xNew = (affectedBoundary.x2 + boundary.x1) / 2; + } else { + xNew = affectedBoundary.x2New; + } + + if (xNew > maxXNew) { + maxXNew = xNew; + } + } + + boundary.x1New = maxXNew; + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + + if (affectedBoundary.x2New === undefined) { + if (affectedBoundary.x2 > boundary.x1) { + if (affectedBoundary.index > boundary.index) { + affectedBoundary.x2New = affectedBoundary.x2; + } + } else { + affectedBoundary.x2New = maxXNew; + } + } else if (affectedBoundary.x2New > maxXNew) { + affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2); + } + } + + const changedHorizon = []; + let lastBoundary = null; + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + const useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary; + + if (lastBoundary === useBoundary) { + changedHorizon.at(-1).end = horizonPart.end; + } else { + changedHorizon.push({ + start: horizonPart.start, + end: horizonPart.end, + boundary: useBoundary + }); + lastBoundary = useBoundary; + } + } + + if (horizon[i].start < boundary.y1) { + changedHorizon[0].start = boundary.y1; + changedHorizon.unshift({ + start: horizon[i].start, + end: boundary.y1, + boundary: horizon[i].boundary + }); + } + + if (boundary.y2 < horizon[j].end) { + changedHorizon.at(-1).end = boundary.y2; + changedHorizon.push({ + start: boundary.y2, + end: horizon[j].end, + boundary: horizon[j].boundary + }); + } + + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + + if (affectedBoundary.x2New !== undefined) { + continue; + } + + let used = false; + + for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) { + used = horizon[k].boundary === affectedBoundary; + } + + for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) { + used = horizon[k].boundary === affectedBoundary; + } + + for (k = 0; !used && k < changedHorizon.length; k++) { + used = changedHorizon[k].boundary === affectedBoundary; + } + + if (!used) { + affectedBoundary.x2New = maxXNew; + } + } + + Array.prototype.splice.apply(horizon, [i, j - i + 1, ...changedHorizon]); + } + + for (const horizonPart of horizon) { + const affectedBoundary = horizonPart.boundary; + + if (affectedBoundary.x2New === undefined) { + affectedBoundary.x2New = Math.max(width, affectedBoundary.x2); + } + } +} + +class TextLayerRenderTask { + constructor({ + textContent, + textContentStream, + container, + viewport, + textDivs, + textContentItemsStr, + enhanceTextSelection + }) { + if (enhanceTextSelection) { + (0, _display_utils.deprecated)("The `enhanceTextSelection` functionality will be removed in the future."); + } + + this._textContent = textContent; + this._textContentStream = textContentStream; + this._container = container; + this._document = container.ownerDocument; + this._viewport = viewport; + this._textDivs = textDivs || []; + this._textContentItemsStr = textContentItemsStr || []; + this._enhanceTextSelection = !!enhanceTextSelection; + this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled; + this._reader = null; + this._layoutTextLastFontSize = null; + this._layoutTextLastFontFamily = null; + this._layoutTextCtx = null; + this._textDivProperties = new WeakMap(); + this._renderingDone = false; + this._canceled = false; + this._capability = (0, _util.createPromiseCapability)(); + this._renderTimer = null; + this._bounds = []; + this._devicePixelRatio = globalThis.devicePixelRatio || 1; + + this._capability.promise.finally(() => { + if (!this._enhanceTextSelection) { + this._textDivProperties = null; + } + + if (this._layoutTextCtx) { + this._layoutTextCtx.canvas.width = 0; + this._layoutTextCtx.canvas.height = 0; + this._layoutTextCtx = null; + } + }).catch(() => {}); + } + + get promise() { + return this._capability.promise; + } + + cancel() { + this._canceled = true; + + if (this._reader) { + this._reader.cancel(new _util.AbortException("TextLayer task cancelled.")).catch(() => {}); + + this._reader = null; + } + + if (this._renderTimer !== null) { + clearTimeout(this._renderTimer); + this._renderTimer = null; + } + + this._capability.reject(new Error("TextLayer task cancelled.")); + } + + _processItems(items, styleCache) { + for (let i = 0, len = items.length; i < len; i++) { + if (items[i].str === undefined) { + if (items[i].type === "beginMarkedContentProps" || items[i].type === "beginMarkedContent") { + const parent = this._container; + this._container = document.createElement("span"); + + this._container.classList.add("markedContent"); + + if (items[i].id !== null) { + this._container.setAttribute("id", `${items[i].id}`); + } + + parent.append(this._container); + } else if (items[i].type === "endMarkedContent") { + this._container = this._container.parentNode; + } + + continue; + } + + this._textContentItemsStr.push(items[i].str); + + appendText(this, items[i], styleCache, this._layoutTextCtx); + } + } + + _layoutText(textDiv) { + const textDivProperties = this._textDivProperties.get(textDiv); + + let transform = ""; + + if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) { + const { + fontFamily + } = textDiv.style; + const { + fontSize + } = textDivProperties; + + if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) { + this._layoutTextCtx.font = `${fontSize * this._devicePixelRatio}px ${fontFamily}`; + this._layoutTextLastFontSize = fontSize; + this._layoutTextLastFontFamily = fontFamily; + } + + const { + width + } = this._layoutTextCtx.measureText(textDiv.textContent); + + if (width > 0) { + const scale = this._devicePixelRatio * textDivProperties.canvasWidth / width; + + if (this._enhanceTextSelection) { + textDivProperties.scale = scale; + } + + transform = `scaleX(${scale})`; + } + } + + if (textDivProperties.angle !== 0) { + transform = `rotate(${textDivProperties.angle}deg) ${transform}`; + } + + if (transform.length > 0) { + if (this._enhanceTextSelection) { + textDivProperties.originalTransform = transform; + } + + textDiv.style.transform = transform; + } + + if (textDivProperties.hasText) { + this._container.append(textDiv); + } + + if (textDivProperties.hasEOL) { + const br = document.createElement("br"); + br.setAttribute("role", "presentation"); + + this._container.append(br); + } + } + + _render(timeout = 0) { + const capability = (0, _util.createPromiseCapability)(); + let styleCache = Object.create(null); + + const canvas = this._document.createElement("canvas"); + + canvas.height = canvas.width = DEFAULT_FONT_SIZE; + this._layoutTextCtx = canvas.getContext("2d", { + alpha: false + }); + + if (this._textContent) { + const textItems = this._textContent.items; + const textStyles = this._textContent.styles; + + this._processItems(textItems, textStyles); + + capability.resolve(); + } else if (this._textContentStream) { + const pump = () => { + this._reader.read().then(({ + value, + done + }) => { + if (done) { + capability.resolve(); + return; + } + + Object.assign(styleCache, value.styles); + + this._processItems(value.items, styleCache); + + pump(); + }, capability.reject); + }; + + this._reader = this._textContentStream.getReader(); + pump(); + } else { + throw new Error('Neither "textContent" nor "textContentStream" parameters specified.'); + } + + capability.promise.then(() => { + styleCache = null; + + if (!timeout) { + render(this); + } else { + this._renderTimer = setTimeout(() => { + render(this); + this._renderTimer = null; + }, timeout); + } + }, this._capability.reject); + } + + expandTextDivs(expandDivs = false) { + if (!this._enhanceTextSelection || !this._renderingDone) { + return; + } + + if (this._bounds !== null) { + expand(this); + this._bounds = null; + } + + const transformBuf = [], + paddingBuf = []; + + for (let i = 0, ii = this._textDivs.length; i < ii; i++) { + const div = this._textDivs[i]; + + const divProps = this._textDivProperties.get(div); + + if (!divProps.hasText) { + continue; + } + + if (expandDivs) { + transformBuf.length = 0; + paddingBuf.length = 0; + + if (divProps.originalTransform) { + transformBuf.push(divProps.originalTransform); + } + + if (divProps.paddingTop > 0) { + paddingBuf.push(`${divProps.paddingTop}px`); + transformBuf.push(`translateY(${-divProps.paddingTop}px)`); + } else { + paddingBuf.push(0); + } + + if (divProps.paddingRight > 0) { + paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`); + } else { + paddingBuf.push(0); + } + + if (divProps.paddingBottom > 0) { + paddingBuf.push(`${divProps.paddingBottom}px`); + } else { + paddingBuf.push(0); + } + + if (divProps.paddingLeft > 0) { + paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`); + transformBuf.push(`translateX(${-divProps.paddingLeft / divProps.scale}px)`); + } else { + paddingBuf.push(0); + } + + div.style.padding = paddingBuf.join(" "); + + if (transformBuf.length) { + div.style.transform = transformBuf.join(" "); + } + } else { + div.style.padding = null; + div.style.transform = divProps.originalTransform; + } + } + } + +} + +exports.TextLayerRenderTask = TextLayerRenderTask; + +function renderTextLayer(renderParameters) { + const task = new TextLayerRenderTask({ + textContent: renderParameters.textContent, + textContentStream: renderParameters.textContentStream, + container: renderParameters.container, + viewport: renderParameters.viewport, + textDivs: renderParameters.textDivs, + textContentItemsStr: renderParameters.textContentItemsStr, + enhanceTextSelection: renderParameters.enhanceTextSelection + }); + + task._render(renderParameters.timeout); + + return task; +} + +/***/ }), +/* 31 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SVGGraphics = void 0; + +var _display_utils = __w_pdfjs_require__(8); + +var _util = __w_pdfjs_require__(1); + +var _is_node = __w_pdfjs_require__(3); + +let SVGGraphics = class { + constructor() { + (0, _util.unreachable)("Not implemented: SVGGraphics"); + } + +}; +exports.SVGGraphics = SVGGraphics; +{ + const SVG_DEFAULTS = { + fontStyle: "normal", + fontWeight: "normal", + fillColor: "#000000" + }; + const XML_NS = "http://www.w3.org/XML/1998/namespace"; + const XLINK_NS = "http://www.w3.org/1999/xlink"; + const LINE_CAP_STYLES = ["butt", "round", "square"]; + const LINE_JOIN_STYLES = ["miter", "round", "bevel"]; + + const createObjectURL = function (data, contentType = "", forceDataSchema = false) { + if (URL.createObjectURL && typeof Blob !== "undefined" && !forceDataSchema) { + return URL.createObjectURL(new Blob([data], { + type: contentType + })); + } + + const digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + let buffer = `data:${contentType};base64,`; + + for (let i = 0, ii = data.length; i < ii; i += 3) { + const b1 = data[i] & 0xff; + const b2 = data[i + 1] & 0xff; + const b3 = data[i + 2] & 0xff; + const d1 = b1 >> 2, + d2 = (b1 & 3) << 4 | b2 >> 4; + const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64; + const d4 = i + 2 < ii ? b3 & 0x3f : 64; + buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4]; + } + + return buffer; + }; + + const convertImgDataToPng = function () { + const PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); + const CHUNK_WRAPPER_SIZE = 12; + const crcTable = new Int32Array(256); + + for (let i = 0; i < 256; i++) { + let c = i; + + for (let h = 0; h < 8; h++) { + if (c & 1) { + c = 0xedb88320 ^ c >> 1 & 0x7fffffff; + } else { + c = c >> 1 & 0x7fffffff; + } + } + + crcTable[i] = c; + } + + function crc32(data, start, end) { + let crc = -1; + + for (let i = start; i < end; i++) { + const a = (crc ^ data[i]) & 0xff; + const b = crcTable[a]; + crc = crc >>> 8 ^ b; + } + + return crc ^ -1; + } + + function writePngChunk(type, body, data, offset) { + let p = offset; + const len = body.length; + data[p] = len >> 24 & 0xff; + data[p + 1] = len >> 16 & 0xff; + data[p + 2] = len >> 8 & 0xff; + data[p + 3] = len & 0xff; + p += 4; + data[p] = type.charCodeAt(0) & 0xff; + data[p + 1] = type.charCodeAt(1) & 0xff; + data[p + 2] = type.charCodeAt(2) & 0xff; + data[p + 3] = type.charCodeAt(3) & 0xff; + p += 4; + data.set(body, p); + p += body.length; + const crc = crc32(data, offset + 4, p); + data[p] = crc >> 24 & 0xff; + data[p + 1] = crc >> 16 & 0xff; + data[p + 2] = crc >> 8 & 0xff; + data[p + 3] = crc & 0xff; + } + + function adler32(data, start, end) { + let a = 1; + let b = 0; + + for (let i = start; i < end; ++i) { + a = (a + (data[i] & 0xff)) % 65521; + b = (b + a) % 65521; + } + + return b << 16 | a; + } + + function deflateSync(literals) { + if (!_is_node.isNodeJS) { + return deflateSyncUncompressed(literals); + } + + try { + let input; + + if (parseInt(process.versions.node) >= 8) { + input = literals; + } else { + input = Buffer.from(literals); + } + + const output = require("zlib").deflateSync(input, { + level: 9 + }); + + return output instanceof Uint8Array ? output : new Uint8Array(output); + } catch (e) { + (0, _util.warn)("Not compressing PNG because zlib.deflateSync is unavailable: " + e); + } + + return deflateSyncUncompressed(literals); + } + + function deflateSyncUncompressed(literals) { + let len = literals.length; + const maxBlockLength = 0xffff; + const deflateBlocks = Math.ceil(len / maxBlockLength); + const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); + let pi = 0; + idat[pi++] = 0x78; + idat[pi++] = 0x9c; + let pos = 0; + + while (len > maxBlockLength) { + idat[pi++] = 0x00; + idat[pi++] = 0xff; + idat[pi++] = 0xff; + idat[pi++] = 0x00; + idat[pi++] = 0x00; + idat.set(literals.subarray(pos, pos + maxBlockLength), pi); + pi += maxBlockLength; + pos += maxBlockLength; + len -= maxBlockLength; + } + + idat[pi++] = 0x01; + idat[pi++] = len & 0xff; + idat[pi++] = len >> 8 & 0xff; + idat[pi++] = ~len & 0xffff & 0xff; + idat[pi++] = (~len & 0xffff) >> 8 & 0xff; + idat.set(literals.subarray(pos), pi); + pi += literals.length - pos; + const adler = adler32(literals, 0, literals.length); + idat[pi++] = adler >> 24 & 0xff; + idat[pi++] = adler >> 16 & 0xff; + idat[pi++] = adler >> 8 & 0xff; + idat[pi++] = adler & 0xff; + return idat; + } + + function encode(imgData, kind, forceDataSchema, isMask) { + const width = imgData.width; + const height = imgData.height; + let bitDepth, colorType, lineSize; + const bytes = imgData.data; + + switch (kind) { + case _util.ImageKind.GRAYSCALE_1BPP: + colorType = 0; + bitDepth = 1; + lineSize = width + 7 >> 3; + break; + + case _util.ImageKind.RGB_24BPP: + colorType = 2; + bitDepth = 8; + lineSize = width * 3; + break; + + case _util.ImageKind.RGBA_32BPP: + colorType = 6; + bitDepth = 8; + lineSize = width * 4; + break; + + default: + throw new Error("invalid format"); + } + + const literals = new Uint8Array((1 + lineSize) * height); + let offsetLiterals = 0, + offsetBytes = 0; + + for (let y = 0; y < height; ++y) { + literals[offsetLiterals++] = 0; + literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals); + offsetBytes += lineSize; + offsetLiterals += lineSize; + } + + if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) { + offsetLiterals = 0; + + for (let y = 0; y < height; y++) { + offsetLiterals++; + + for (let i = 0; i < lineSize; i++) { + literals[offsetLiterals++] ^= 0xff; + } + } + } + + const ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); + const idat = deflateSync(literals); + const pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; + const data = new Uint8Array(pngLength); + let offset = 0; + data.set(PNG_HEADER, offset); + offset += PNG_HEADER.length; + writePngChunk("IHDR", ihdr, data, offset); + offset += CHUNK_WRAPPER_SIZE + ihdr.length; + writePngChunk("IDATA", idat, data, offset); + offset += CHUNK_WRAPPER_SIZE + idat.length; + writePngChunk("IEND", new Uint8Array(0), data, offset); + return createObjectURL(data, "image/png", forceDataSchema); + } + + return function convertImgDataToPng(imgData, forceDataSchema, isMask) { + const kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind; + return encode(imgData, kind, forceDataSchema, isMask); + }; + }(); + + class SVGExtraState { + constructor() { + this.fontSizeScale = 1; + this.fontWeight = SVG_DEFAULTS.fontWeight; + this.fontSize = 0; + this.textMatrix = _util.IDENTITY_MATRIX; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; + this.leading = 0; + this.textRenderingMode = _util.TextRenderingMode.FILL; + this.textMatrixScale = 1; + this.x = 0; + this.y = 0; + this.lineX = 0; + this.lineY = 0; + this.charSpacing = 0; + this.wordSpacing = 0; + this.textHScale = 1; + this.textRise = 0; + this.fillColor = SVG_DEFAULTS.fillColor; + this.strokeColor = "#000000"; + this.fillAlpha = 1; + this.strokeAlpha = 1; + this.lineWidth = 1; + this.lineJoin = ""; + this.lineCap = ""; + this.miterLimit = 0; + this.dashArray = []; + this.dashPhase = 0; + this.dependencies = []; + this.activeClipUrl = null; + this.clipGroup = null; + this.maskId = ""; + } + + clone() { + return Object.create(this); + } + + setCurrentPoint(x, y) { + this.x = x; + this.y = y; + } + + } + + function opListToTree(opList) { + let opTree = []; + const tmp = []; + + for (const opListElement of opList) { + if (opListElement.fn === "save") { + opTree.push({ + fnId: 92, + fn: "group", + items: [] + }); + tmp.push(opTree); + opTree = opTree.at(-1).items; + continue; + } + + if (opListElement.fn === "restore") { + opTree = tmp.pop(); + } else { + opTree.push(opListElement); + } + } + + return opTree; + } + + function pf(value) { + if (Number.isInteger(value)) { + return value.toString(); + } + + const s = value.toFixed(10); + let i = s.length - 1; + + if (s[i] !== "0") { + return s; + } + + do { + i--; + } while (s[i] === "0"); + + return s.substring(0, s[i] === "." ? i : i + 1); + } + + function pm(m) { + if (m[4] === 0 && m[5] === 0) { + if (m[1] === 0 && m[2] === 0) { + if (m[0] === 1 && m[3] === 1) { + return ""; + } + + return `scale(${pf(m[0])} ${pf(m[3])})`; + } + + if (m[0] === m[3] && m[1] === -m[2]) { + const a = Math.acos(m[0]) * 180 / Math.PI; + return `rotate(${pf(a)})`; + } + } else { + if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { + return `translate(${pf(m[4])} ${pf(m[5])})`; + } + } + + return `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` + `${pf(m[5])})`; + } + + let clipCount = 0; + let maskCount = 0; + let shadingCount = 0; + exports.SVGGraphics = SVGGraphics = class { + constructor(commonObjs, objs, forceDataSchema = false) { + (0, _display_utils.deprecated)("The SVG back-end is no longer maintained and *may* be removed in the future."); + this.svgFactory = new _display_utils.DOMSVGFactory(); + this.current = new SVGExtraState(); + this.transformMatrix = _util.IDENTITY_MATRIX; + this.transformStack = []; + this.extraStack = []; + this.commonObjs = commonObjs; + this.objs = objs; + this.pendingClip = null; + this.pendingEOFill = false; + this.embedFonts = false; + this.embeddedFonts = Object.create(null); + this.cssStyle = null; + this.forceDataSchema = !!forceDataSchema; + this._operatorIdMapping = []; + + for (const op in _util.OPS) { + this._operatorIdMapping[_util.OPS[op]] = op; + } + } + + save() { + this.transformStack.push(this.transformMatrix); + const old = this.current; + this.extraStack.push(old); + this.current = old.clone(); + } + + restore() { + this.transformMatrix = this.transformStack.pop(); + this.current = this.extraStack.pop(); + this.pendingClip = null; + this.tgrp = null; + } + + group(items) { + this.save(); + this.executeOpTree(items); + this.restore(); + } + + loadDependencies(operatorList) { + const fnArray = operatorList.fnArray; + const argsArray = operatorList.argsArray; + + for (let i = 0, ii = fnArray.length; i < ii; i++) { + if (fnArray[i] !== _util.OPS.dependency) { + continue; + } + + for (const obj of argsArray[i]) { + const objsPool = obj.startsWith("g_") ? this.commonObjs : this.objs; + const promise = new Promise(resolve => { + objsPool.get(obj, resolve); + }); + this.current.dependencies.push(promise); + } + } + + return Promise.all(this.current.dependencies); + } + + transform(a, b, c, d, e, f) { + const transformMatrix = [a, b, c, d, e, f]; + this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix); + this.tgrp = null; + } + + getSVG(operatorList, viewport) { + this.viewport = viewport; + + const svgElement = this._initialize(viewport); + + return this.loadDependencies(operatorList).then(() => { + this.transformMatrix = _util.IDENTITY_MATRIX; + this.executeOpTree(this.convertOpList(operatorList)); + return svgElement; + }); + } + + convertOpList(operatorList) { + const operatorIdMapping = this._operatorIdMapping; + const argsArray = operatorList.argsArray; + const fnArray = operatorList.fnArray; + const opList = []; + + for (let i = 0, ii = fnArray.length; i < ii; i++) { + const fnId = fnArray[i]; + opList.push({ + fnId, + fn: operatorIdMapping[fnId], + args: argsArray[i] + }); + } + + return opListToTree(opList); + } + + executeOpTree(opTree) { + for (const opTreeElement of opTree) { + const fn = opTreeElement.fn; + const fnId = opTreeElement.fnId; + const args = opTreeElement.args; + + switch (fnId | 0) { + case _util.OPS.beginText: + this.beginText(); + break; + + case _util.OPS.dependency: + break; + + case _util.OPS.setLeading: + this.setLeading(args); + break; + + case _util.OPS.setLeadingMoveText: + this.setLeadingMoveText(args[0], args[1]); + break; + + case _util.OPS.setFont: + this.setFont(args); + break; + + case _util.OPS.showText: + this.showText(args[0]); + break; + + case _util.OPS.showSpacedText: + this.showText(args[0]); + break; + + case _util.OPS.endText: + this.endText(); + break; + + case _util.OPS.moveText: + this.moveText(args[0], args[1]); + break; + + case _util.OPS.setCharSpacing: + this.setCharSpacing(args[0]); + break; + + case _util.OPS.setWordSpacing: + this.setWordSpacing(args[0]); + break; + + case _util.OPS.setHScale: + this.setHScale(args[0]); + break; + + case _util.OPS.setTextMatrix: + this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + + case _util.OPS.setTextRise: + this.setTextRise(args[0]); + break; + + case _util.OPS.setTextRenderingMode: + this.setTextRenderingMode(args[0]); + break; + + case _util.OPS.setLineWidth: + this.setLineWidth(args[0]); + break; + + case _util.OPS.setLineJoin: + this.setLineJoin(args[0]); + break; + + case _util.OPS.setLineCap: + this.setLineCap(args[0]); + break; + + case _util.OPS.setMiterLimit: + this.setMiterLimit(args[0]); + break; + + case _util.OPS.setFillRGBColor: + this.setFillRGBColor(args[0], args[1], args[2]); + break; + + case _util.OPS.setStrokeRGBColor: + this.setStrokeRGBColor(args[0], args[1], args[2]); + break; + + case _util.OPS.setStrokeColorN: + this.setStrokeColorN(args); + break; + + case _util.OPS.setFillColorN: + this.setFillColorN(args); + break; + + case _util.OPS.shadingFill: + this.shadingFill(args[0]); + break; + + case _util.OPS.setDash: + this.setDash(args[0], args[1]); + break; + + case _util.OPS.setRenderingIntent: + this.setRenderingIntent(args[0]); + break; + + case _util.OPS.setFlatness: + this.setFlatness(args[0]); + break; + + case _util.OPS.setGState: + this.setGState(args[0]); + break; + + case _util.OPS.fill: + this.fill(); + break; + + case _util.OPS.eoFill: + this.eoFill(); + break; + + case _util.OPS.stroke: + this.stroke(); + break; + + case _util.OPS.fillStroke: + this.fillStroke(); + break; + + case _util.OPS.eoFillStroke: + this.eoFillStroke(); + break; + + case _util.OPS.clip: + this.clip("nonzero"); + break; + + case _util.OPS.eoClip: + this.clip("evenodd"); + break; + + case _util.OPS.paintSolidColorImageMask: + this.paintSolidColorImageMask(); + break; + + case _util.OPS.paintImageXObject: + this.paintImageXObject(args[0]); + break; + + case _util.OPS.paintInlineImageXObject: + this.paintInlineImageXObject(args[0]); + break; + + case _util.OPS.paintImageMaskXObject: + this.paintImageMaskXObject(args[0]); + break; + + case _util.OPS.paintFormXObjectBegin: + this.paintFormXObjectBegin(args[0], args[1]); + break; + + case _util.OPS.paintFormXObjectEnd: + this.paintFormXObjectEnd(); + break; + + case _util.OPS.closePath: + this.closePath(); + break; + + case _util.OPS.closeStroke: + this.closeStroke(); + break; + + case _util.OPS.closeFillStroke: + this.closeFillStroke(); + break; + + case _util.OPS.closeEOFillStroke: + this.closeEOFillStroke(); + break; + + case _util.OPS.nextLine: + this.nextLine(); + break; + + case _util.OPS.transform: + this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + + case _util.OPS.constructPath: + this.constructPath(args[0], args[1]); + break; + + case _util.OPS.endPath: + this.endPath(); + break; + + case 92: + this.group(opTreeElement.items); + break; + + default: + (0, _util.warn)(`Unimplemented operator ${fn}`); + break; + } + } + } + + setWordSpacing(wordSpacing) { + this.current.wordSpacing = wordSpacing; + } + + setCharSpacing(charSpacing) { + this.current.charSpacing = charSpacing; + } + + nextLine() { + this.moveText(0, this.current.leading); + } + + setTextMatrix(a, b, c, d, e, f) { + const current = this.current; + current.textMatrix = current.lineMatrix = [a, b, c, d, e, f]; + current.textMatrixScale = Math.hypot(a, b); + current.x = current.lineX = 0; + current.y = current.lineY = 0; + current.xcoords = []; + current.ycoords = []; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + current.txtElement = this.svgFactory.createElement("svg:text"); + current.txtElement.append(current.tspan); + } + + beginText() { + const current = this.current; + current.x = current.lineX = 0; + current.y = current.lineY = 0; + current.textMatrix = _util.IDENTITY_MATRIX; + current.lineMatrix = _util.IDENTITY_MATRIX; + current.textMatrixScale = 1; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.txtElement = this.svgFactory.createElement("svg:text"); + current.txtgrp = this.svgFactory.createElement("svg:g"); + current.xcoords = []; + current.ycoords = []; + } + + moveText(x, y) { + const current = this.current; + current.x = current.lineX += x; + current.y = current.lineY += y; + current.xcoords = []; + current.ycoords = []; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + } + + showText(glyphs) { + const current = this.current; + const font = current.font; + const fontSize = current.fontSize; + + if (fontSize === 0) { + return; + } + + const fontSizeScale = current.fontSizeScale; + const charSpacing = current.charSpacing; + const wordSpacing = current.wordSpacing; + const fontDirection = current.fontDirection; + const textHScale = current.textHScale * fontDirection; + const vertical = font.vertical; + const spacingDir = vertical ? 1 : -1; + const defaultVMetrics = font.defaultVMetrics; + const widthAdvanceScale = fontSize * current.fontMatrix[0]; + let x = 0; + + for (const glyph of glyphs) { + if (glyph === null) { + x += fontDirection * wordSpacing; + continue; + } else if (typeof glyph === "number") { + x += spacingDir * glyph * fontSize / 1000; + continue; + } + + const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + const character = glyph.fontChar; + let scaledX, scaledY; + let width = glyph.width; + + if (vertical) { + let vx; + const vmetric = glyph.vmetric || defaultVMetrics; + vx = glyph.vmetric ? vmetric[1] : width * 0.5; + vx = -vx * widthAdvanceScale; + const vy = vmetric[2] * widthAdvanceScale; + width = vmetric ? -vmetric[0] : width; + scaledX = vx / fontSizeScale; + scaledY = (x + vy) / fontSizeScale; + } else { + scaledX = x / fontSizeScale; + scaledY = 0; + } + + if (glyph.isInFont || font.missingFile) { + current.xcoords.push(current.x + scaledX); + + if (vertical) { + current.ycoords.push(-current.y + scaledY); + } + + current.tspan.textContent += character; + } else {} + + let charWidth; + + if (vertical) { + charWidth = width * widthAdvanceScale - spacing * fontDirection; + } else { + charWidth = width * widthAdvanceScale + spacing * fontDirection; + } + + x += charWidth; + } + + current.tspan.setAttributeNS(null, "x", current.xcoords.map(pf).join(" ")); + + if (vertical) { + current.tspan.setAttributeNS(null, "y", current.ycoords.map(pf).join(" ")); + } else { + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + } + + if (vertical) { + current.y -= x; + } else { + current.x += x * textHScale; + } + + current.tspan.setAttributeNS(null, "font-family", current.fontFamily); + current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`); + + if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { + current.tspan.setAttributeNS(null, "font-style", current.fontStyle); + } + + if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { + current.tspan.setAttributeNS(null, "font-weight", current.fontWeight); + } + + const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + if (current.fillColor !== SVG_DEFAULTS.fillColor) { + current.tspan.setAttributeNS(null, "fill", current.fillColor); + } + + if (current.fillAlpha < 1) { + current.tspan.setAttributeNS(null, "fill-opacity", current.fillAlpha); + } + } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) { + current.tspan.setAttributeNS(null, "fill", "transparent"); + } else { + current.tspan.setAttributeNS(null, "fill", "none"); + } + + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + const lineWidthScale = 1 / (current.textMatrixScale || 1); + + this._setStrokeAttributes(current.tspan, lineWidthScale); + } + + let textMatrix = current.textMatrix; + + if (current.textRise !== 0) { + textMatrix = textMatrix.slice(); + textMatrix[5] += current.textRise; + } + + current.txtElement.setAttributeNS(null, "transform", `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`); + current.txtElement.setAttributeNS(XML_NS, "xml:space", "preserve"); + current.txtElement.append(current.tspan); + current.txtgrp.append(current.txtElement); + + this._ensureTransformGroup().append(current.txtElement); + } + + setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + } + + addFontStyle(fontObj) { + if (!fontObj.data) { + throw new Error("addFontStyle: No font data available, " + 'ensure that the "fontExtraProperties" API parameter is set.'); + } + + if (!this.cssStyle) { + this.cssStyle = this.svgFactory.createElement("svg:style"); + this.cssStyle.setAttributeNS(null, "type", "text/css"); + this.defs.append(this.cssStyle); + } + + const url = createObjectURL(fontObj.data, fontObj.mimetype, this.forceDataSchema); + this.cssStyle.textContent += `@font-face { font-family: "${fontObj.loadedName}";` + ` src: url(${url}); }\n`; + } + + setFont(details) { + const current = this.current; + const fontObj = this.commonObjs.get(details[0]); + let size = details[1]; + current.font = fontObj; + + if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) { + this.addFontStyle(fontObj); + this.embeddedFonts[fontObj.loadedName] = fontObj; + } + + current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX; + let bold = "normal"; + + if (fontObj.black) { + bold = "900"; + } else if (fontObj.bold) { + bold = "bold"; + } + + const italic = fontObj.italic ? "italic" : "normal"; + + if (size < 0) { + size = -size; + current.fontDirection = -1; + } else { + current.fontDirection = 1; + } + + current.fontSize = size; + current.fontFamily = fontObj.loadedName; + current.fontWeight = bold; + current.fontStyle = italic; + current.tspan = this.svgFactory.createElement("svg:tspan"); + current.tspan.setAttributeNS(null, "y", pf(-current.y)); + current.xcoords = []; + current.ycoords = []; + } + + endText() { + const current = this.current; + + if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement?.hasChildNodes()) { + current.element = current.txtElement; + this.clip("nonzero"); + this.endPath(); + } + } + + setLineWidth(width) { + if (width > 0) { + this.current.lineWidth = width; + } + } + + setLineCap(style) { + this.current.lineCap = LINE_CAP_STYLES[style]; + } + + setLineJoin(style) { + this.current.lineJoin = LINE_JOIN_STYLES[style]; + } + + setMiterLimit(limit) { + this.current.miterLimit = limit; + } + + setStrokeAlpha(strokeAlpha) { + this.current.strokeAlpha = strokeAlpha; + } + + setStrokeRGBColor(r, g, b) { + this.current.strokeColor = _util.Util.makeHexColor(r, g, b); + } + + setFillAlpha(fillAlpha) { + this.current.fillAlpha = fillAlpha; + } + + setFillRGBColor(r, g, b) { + this.current.fillColor = _util.Util.makeHexColor(r, g, b); + this.current.tspan = this.svgFactory.createElement("svg:tspan"); + this.current.xcoords = []; + this.current.ycoords = []; + } + + setStrokeColorN(args) { + this.current.strokeColor = this._makeColorN_Pattern(args); + } + + setFillColorN(args) { + this.current.fillColor = this._makeColorN_Pattern(args); + } + + shadingFill(args) { + const width = this.viewport.width; + const height = this.viewport.height; + + const inv = _util.Util.inverseTransform(this.transformMatrix); + + const bl = _util.Util.applyTransform([0, 0], inv); + + const br = _util.Util.applyTransform([0, height], inv); + + const ul = _util.Util.applyTransform([width, 0], inv); + + const ur = _util.Util.applyTransform([width, height], inv); + + const x0 = Math.min(bl[0], br[0], ul[0], ur[0]); + const y0 = Math.min(bl[1], br[1], ul[1], ur[1]); + const x1 = Math.max(bl[0], br[0], ul[0], ur[0]); + const y1 = Math.max(bl[1], br[1], ul[1], ur[1]); + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", x0); + rect.setAttributeNS(null, "y", y0); + rect.setAttributeNS(null, "width", x1 - x0); + rect.setAttributeNS(null, "height", y1 - y0); + rect.setAttributeNS(null, "fill", this._makeShadingPattern(args)); + + if (this.current.fillAlpha < 1) { + rect.setAttributeNS(null, "fill-opacity", this.current.fillAlpha); + } + + this._ensureTransformGroup().append(rect); + } + + _makeColorN_Pattern(args) { + if (args[0] === "TilingPattern") { + return this._makeTilingPattern(args); + } + + return this._makeShadingPattern(args); + } + + _makeTilingPattern(args) { + const color = args[1]; + const operatorList = args[2]; + const matrix = args[3] || _util.IDENTITY_MATRIX; + const [x0, y0, x1, y1] = args[4]; + const xstep = args[5]; + const ystep = args[6]; + const paintType = args[7]; + const tilingId = `shading${shadingCount++}`; + + const [tx0, ty0, tx1, ty1] = _util.Util.normalizeRect([..._util.Util.applyTransform([x0, y0], matrix), ..._util.Util.applyTransform([x1, y1], matrix)]); + + const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix); + + const txstep = xstep * xscale; + const tystep = ystep * yscale; + const tiling = this.svgFactory.createElement("svg:pattern"); + tiling.setAttributeNS(null, "id", tilingId); + tiling.setAttributeNS(null, "patternUnits", "userSpaceOnUse"); + tiling.setAttributeNS(null, "width", txstep); + tiling.setAttributeNS(null, "height", tystep); + tiling.setAttributeNS(null, "x", `${tx0}`); + tiling.setAttributeNS(null, "y", `${ty0}`); + const svg = this.svg; + const transformMatrix = this.transformMatrix; + const fillColor = this.current.fillColor; + const strokeColor = this.current.strokeColor; + const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0); + this.svg = bbox; + this.transformMatrix = matrix; + + if (paintType === 2) { + const cssColor = _util.Util.makeHexColor(...color); + + this.current.fillColor = cssColor; + this.current.strokeColor = cssColor; + } + + this.executeOpTree(this.convertOpList(operatorList)); + this.svg = svg; + this.transformMatrix = transformMatrix; + this.current.fillColor = fillColor; + this.current.strokeColor = strokeColor; + tiling.append(bbox.childNodes[0]); + this.defs.append(tiling); + return `url(#${tilingId})`; + } + + _makeShadingPattern(args) { + if (typeof args === "string") { + args = this.objs.get(args); + } + + switch (args[0]) { + case "RadialAxial": + const shadingId = `shading${shadingCount++}`; + const colorStops = args[3]; + let gradient; + + switch (args[1]) { + case "axial": + const point0 = args[4]; + const point1 = args[5]; + gradient = this.svgFactory.createElement("svg:linearGradient"); + gradient.setAttributeNS(null, "id", shadingId); + gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse"); + gradient.setAttributeNS(null, "x1", point0[0]); + gradient.setAttributeNS(null, "y1", point0[1]); + gradient.setAttributeNS(null, "x2", point1[0]); + gradient.setAttributeNS(null, "y2", point1[1]); + break; + + case "radial": + const focalPoint = args[4]; + const circlePoint = args[5]; + const focalRadius = args[6]; + const circleRadius = args[7]; + gradient = this.svgFactory.createElement("svg:radialGradient"); + gradient.setAttributeNS(null, "id", shadingId); + gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse"); + gradient.setAttributeNS(null, "cx", circlePoint[0]); + gradient.setAttributeNS(null, "cy", circlePoint[1]); + gradient.setAttributeNS(null, "r", circleRadius); + gradient.setAttributeNS(null, "fx", focalPoint[0]); + gradient.setAttributeNS(null, "fy", focalPoint[1]); + gradient.setAttributeNS(null, "fr", focalRadius); + break; + + default: + throw new Error(`Unknown RadialAxial type: ${args[1]}`); + } + + for (const colorStop of colorStops) { + const stop = this.svgFactory.createElement("svg:stop"); + stop.setAttributeNS(null, "offset", colorStop[0]); + stop.setAttributeNS(null, "stop-color", colorStop[1]); + gradient.append(stop); + } + + this.defs.append(gradient); + return `url(#${shadingId})`; + + case "Mesh": + (0, _util.warn)("Unimplemented pattern Mesh"); + return null; + + case "Dummy": + return "hotpink"; + + default: + throw new Error(`Unknown IR type: ${args[0]}`); + } + } + + setDash(dashArray, dashPhase) { + this.current.dashArray = dashArray; + this.current.dashPhase = dashPhase; + } + + constructPath(ops, args) { + const current = this.current; + let x = current.x, + y = current.y; + let d = []; + let j = 0; + + for (const op of ops) { + switch (op | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + const width = args[j++]; + const height = args[j++]; + const xw = x + width; + const yh = y + height; + d.push("M", pf(x), pf(y), "L", pf(xw), pf(y), "L", pf(xw), pf(yh), "L", pf(x), pf(yh), "Z"); + break; + + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + d.push("M", pf(x), pf(y)); + break; + + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + d.push("L", pf(x), pf(y)); + break; + + case _util.OPS.curveTo: + x = args[j + 4]; + y = args[j + 5]; + d.push("C", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); + j += 6; + break; + + case _util.OPS.curveTo2: + d.push("C", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); + x = args[j + 2]; + y = args[j + 3]; + j += 4; + break; + + case _util.OPS.curveTo3: + x = args[j + 2]; + y = args[j + 3]; + d.push("C", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); + j += 4; + break; + + case _util.OPS.closePath: + d.push("Z"); + break; + } + } + + d = d.join(" "); + + if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) { + d = current.path.getAttributeNS(null, "d") + d; + } else { + current.path = this.svgFactory.createElement("svg:path"); + + this._ensureTransformGroup().append(current.path); + } + + current.path.setAttributeNS(null, "d", d); + current.path.setAttributeNS(null, "fill", "none"); + current.element = current.path; + current.setCurrentPoint(x, y); + } + + endPath() { + const current = this.current; + current.path = null; + + if (!this.pendingClip) { + return; + } + + if (!current.element) { + this.pendingClip = null; + return; + } + + const clipId = `clippath${clipCount++}`; + const clipPath = this.svgFactory.createElement("svg:clipPath"); + clipPath.setAttributeNS(null, "id", clipId); + clipPath.setAttributeNS(null, "transform", pm(this.transformMatrix)); + const clipElement = current.element.cloneNode(true); + + if (this.pendingClip === "evenodd") { + clipElement.setAttributeNS(null, "clip-rule", "evenodd"); + } else { + clipElement.setAttributeNS(null, "clip-rule", "nonzero"); + } + + this.pendingClip = null; + clipPath.append(clipElement); + this.defs.append(clipPath); + + if (current.activeClipUrl) { + current.clipGroup = null; + + for (const prev of this.extraStack) { + prev.clipGroup = null; + } + + clipPath.setAttributeNS(null, "clip-path", current.activeClipUrl); + } + + current.activeClipUrl = `url(#${clipId})`; + this.tgrp = null; + } + + clip(type) { + this.pendingClip = type; + } + + closePath() { + const current = this.current; + + if (current.path) { + const d = `${current.path.getAttributeNS(null, "d")}Z`; + current.path.setAttributeNS(null, "d", d); + } + } + + setLeading(leading) { + this.current.leading = -leading; + } + + setTextRise(textRise) { + this.current.textRise = textRise; + } + + setTextRenderingMode(textRenderingMode) { + this.current.textRenderingMode = textRenderingMode; + } + + setHScale(scale) { + this.current.textHScale = scale / 100; + } + + setRenderingIntent(intent) {} + + setFlatness(flatness) {} + + setGState(states) { + for (const [key, value] of states) { + switch (key) { + case "LW": + this.setLineWidth(value); + break; + + case "LC": + this.setLineCap(value); + break; + + case "LJ": + this.setLineJoin(value); + break; + + case "ML": + this.setMiterLimit(value); + break; + + case "D": + this.setDash(value[0], value[1]); + break; + + case "RI": + this.setRenderingIntent(value); + break; + + case "FL": + this.setFlatness(value); + break; + + case "Font": + this.setFont(value); + break; + + case "CA": + this.setStrokeAlpha(value); + break; + + case "ca": + this.setFillAlpha(value); + break; + + default: + (0, _util.warn)(`Unimplemented graphic state operator ${key}`); + break; + } + } + } + + fill() { + const current = this.current; + + if (current.element) { + current.element.setAttributeNS(null, "fill", current.fillColor); + current.element.setAttributeNS(null, "fill-opacity", current.fillAlpha); + this.endPath(); + } + } + + stroke() { + const current = this.current; + + if (current.element) { + this._setStrokeAttributes(current.element); + + current.element.setAttributeNS(null, "fill", "none"); + this.endPath(); + } + } + + _setStrokeAttributes(element, lineWidthScale = 1) { + const current = this.current; + let dashArray = current.dashArray; + + if (lineWidthScale !== 1 && dashArray.length > 0) { + dashArray = dashArray.map(function (value) { + return lineWidthScale * value; + }); + } + + element.setAttributeNS(null, "stroke", current.strokeColor); + element.setAttributeNS(null, "stroke-opacity", current.strokeAlpha); + element.setAttributeNS(null, "stroke-miterlimit", pf(current.miterLimit)); + element.setAttributeNS(null, "stroke-linecap", current.lineCap); + element.setAttributeNS(null, "stroke-linejoin", current.lineJoin); + element.setAttributeNS(null, "stroke-width", pf(lineWidthScale * current.lineWidth) + "px"); + element.setAttributeNS(null, "stroke-dasharray", dashArray.map(pf).join(" ")); + element.setAttributeNS(null, "stroke-dashoffset", pf(lineWidthScale * current.dashPhase) + "px"); + } + + eoFill() { + if (this.current.element) { + this.current.element.setAttributeNS(null, "fill-rule", "evenodd"); + } + + this.fill(); + } + + fillStroke() { + this.stroke(); + this.fill(); + } + + eoFillStroke() { + if (this.current.element) { + this.current.element.setAttributeNS(null, "fill-rule", "evenodd"); + } + + this.fillStroke(); + } + + closeStroke() { + this.closePath(); + this.stroke(); + } + + closeFillStroke() { + this.closePath(); + this.fillStroke(); + } + + closeEOFillStroke() { + this.closePath(); + this.eoFillStroke(); + } + + paintSolidColorImageMask() { + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", "0"); + rect.setAttributeNS(null, "y", "0"); + rect.setAttributeNS(null, "width", "1px"); + rect.setAttributeNS(null, "height", "1px"); + rect.setAttributeNS(null, "fill", this.current.fillColor); + + this._ensureTransformGroup().append(rect); + } + + paintImageXObject(objId) { + const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId); + + if (!imgData) { + (0, _util.warn)(`Dependent image with object ID ${objId} is not ready yet`); + return; + } + + this.paintInlineImageXObject(imgData); + } + + paintInlineImageXObject(imgData, mask) { + const width = imgData.width; + const height = imgData.height; + const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask); + const cliprect = this.svgFactory.createElement("svg:rect"); + cliprect.setAttributeNS(null, "x", "0"); + cliprect.setAttributeNS(null, "y", "0"); + cliprect.setAttributeNS(null, "width", pf(width)); + cliprect.setAttributeNS(null, "height", pf(height)); + this.current.element = cliprect; + this.clip("nonzero"); + const imgEl = this.svgFactory.createElement("svg:image"); + imgEl.setAttributeNS(XLINK_NS, "xlink:href", imgSrc); + imgEl.setAttributeNS(null, "x", "0"); + imgEl.setAttributeNS(null, "y", pf(-height)); + imgEl.setAttributeNS(null, "width", pf(width) + "px"); + imgEl.setAttributeNS(null, "height", pf(height) + "px"); + imgEl.setAttributeNS(null, "transform", `scale(${pf(1 / width)} ${pf(-1 / height)})`); + + if (mask) { + mask.append(imgEl); + } else { + this._ensureTransformGroup().append(imgEl); + } + } + + paintImageMaskXObject(imgData) { + const current = this.current; + const width = imgData.width; + const height = imgData.height; + const fillColor = current.fillColor; + current.maskId = `mask${maskCount++}`; + const mask = this.svgFactory.createElement("svg:mask"); + mask.setAttributeNS(null, "id", current.maskId); + const rect = this.svgFactory.createElement("svg:rect"); + rect.setAttributeNS(null, "x", "0"); + rect.setAttributeNS(null, "y", "0"); + rect.setAttributeNS(null, "width", pf(width)); + rect.setAttributeNS(null, "height", pf(height)); + rect.setAttributeNS(null, "fill", fillColor); + rect.setAttributeNS(null, "mask", `url(#${current.maskId})`); + this.defs.append(mask); + + this._ensureTransformGroup().append(rect); + + this.paintInlineImageXObject(imgData, mask); + } + + paintFormXObjectBegin(matrix, bbox) { + if (Array.isArray(matrix) && matrix.length === 6) { + this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); + } + + if (bbox) { + const width = bbox[2] - bbox[0]; + const height = bbox[3] - bbox[1]; + const cliprect = this.svgFactory.createElement("svg:rect"); + cliprect.setAttributeNS(null, "x", bbox[0]); + cliprect.setAttributeNS(null, "y", bbox[1]); + cliprect.setAttributeNS(null, "width", pf(width)); + cliprect.setAttributeNS(null, "height", pf(height)); + this.current.element = cliprect; + this.clip("nonzero"); + this.endPath(); + } + } + + paintFormXObjectEnd() {} + + _initialize(viewport) { + const svg = this.svgFactory.create(viewport.width, viewport.height); + const definitions = this.svgFactory.createElement("svg:defs"); + svg.append(definitions); + this.defs = definitions; + const rootGroup = this.svgFactory.createElement("svg:g"); + rootGroup.setAttributeNS(null, "transform", pm(viewport.transform)); + svg.append(rootGroup); + this.svg = rootGroup; + return svg; + } + + _ensureClipGroup() { + if (!this.current.clipGroup) { + const clipGroup = this.svgFactory.createElement("svg:g"); + clipGroup.setAttributeNS(null, "clip-path", this.current.activeClipUrl); + this.svg.append(clipGroup); + this.current.clipGroup = clipGroup; + } + + return this.current.clipGroup; + } + + _ensureTransformGroup() { + if (!this.tgrp) { + this.tgrp = this.svgFactory.createElement("svg:g"); + this.tgrp.setAttributeNS(null, "transform", pm(this.transformMatrix)); + + if (this.current.activeClipUrl) { + this._ensureClipGroup().append(this.tgrp); + } else { + this.svg.append(this.tgrp); + } + } + + return this.tgrp; + } + + }; +} + +/***/ }), +/* 32 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFNodeStream = void 0; + +var _util = __w_pdfjs_require__(1); + +var _network_utils = __w_pdfjs_require__(33); + +; + +const fs = require("fs"); + +const http = require("http"); + +const https = require("https"); + +const url = require("url"); + +const fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//; + +function parseUrl(sourceUrl) { + const parsedUrl = url.parse(sourceUrl); + + if (parsedUrl.protocol === "file:" || parsedUrl.host) { + return parsedUrl; + } + + if (/^[a-z]:[/\\]/i.test(sourceUrl)) { + return url.parse(`file:///${sourceUrl}`); + } + + if (!parsedUrl.host) { + parsedUrl.protocol = "file:"; + } + + return parsedUrl; +} + +class PDFNodeStream { + constructor(source) { + this.source = source; + this.url = parseUrl(source.url); + this.isHttp = this.url.protocol === "http:" || this.url.protocol === "https:"; + this.isFsUrl = this.url.protocol === "file:"; + this.httpHeaders = this.isHttp && source.httpHeaders || {}; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFNodeStream.getFullReader can only be called once."); + this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this); + return this._fullRequestReader; + } + + getRangeReader(start, end) { + if (end <= this._progressiveDataLength) { + return null; + } + + const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end); + + this._rangeRequestReaders.push(rangeReader); + + return rangeReader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } + +} + +exports.PDFNodeStream = PDFNodeStream; + +class BaseFullReader { + constructor(stream) { + this._url = stream.url; + this._done = false; + this._storedError = null; + this.onProgress = null; + const source = stream.source; + this._contentLength = source.length; + this._loaded = 0; + this._filename = null; + this._disableRange = source.disableRange || false; + this._rangeChunkSize = source.rangeChunkSize; + + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + + this._isStreamingSupported = !source.disableStream; + this._isRangeSupported = !source.disableRange; + this._readableStream = null; + this._readCapability = (0, _util.createPromiseCapability)(); + this._headersCapability = (0, _util.createPromiseCapability)(); + } + + get headersReady() { + return this._headersCapability.promise; + } + + get filename() { + return this._filename; + } + + get contentLength() { + return this._contentLength; + } + + get isRangeSupported() { + return this._isRangeSupported; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._readCapability.promise; + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + if (this._storedError) { + throw this._storedError; + } + + const chunk = this._readableStream.read(); + + if (chunk === null) { + this._readCapability = (0, _util.createPromiseCapability)(); + return this.read(); + } + + this._loaded += chunk.length; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded, + total: this._contentLength + }); + } + + const buffer = new Uint8Array(chunk).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (!this._readableStream) { + this._error(reason); + + return; + } + + this._readableStream.destroy(reason); + } + + _error(reason) { + this._storedError = reason; + + this._readCapability.resolve(); + } + + _setReadableStream(readableStream) { + this._readableStream = readableStream; + readableStream.on("readable", () => { + this._readCapability.resolve(); + }); + readableStream.on("end", () => { + readableStream.destroy(); + this._done = true; + + this._readCapability.resolve(); + }); + readableStream.on("error", reason => { + this._error(reason); + }); + + if (!this._isStreamingSupported && this._isRangeSupported) { + this._error(new _util.AbortException("streaming is disabled")); + } + + if (this._storedError) { + this._readableStream.destroy(this._storedError); + } + } + +} + +class BaseRangeReader { + constructor(stream) { + this._url = stream.url; + this._done = false; + this._storedError = null; + this.onProgress = null; + this._loaded = 0; + this._readableStream = null; + this._readCapability = (0, _util.createPromiseCapability)(); + const source = stream.source; + this._isStreamingSupported = !source.disableStream; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._readCapability.promise; + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + if (this._storedError) { + throw this._storedError; + } + + const chunk = this._readableStream.read(); + + if (chunk === null) { + this._readCapability = (0, _util.createPromiseCapability)(); + return this.read(); + } + + this._loaded += chunk.length; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded + }); + } + + const buffer = new Uint8Array(chunk).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (!this._readableStream) { + this._error(reason); + + return; + } + + this._readableStream.destroy(reason); + } + + _error(reason) { + this._storedError = reason; + + this._readCapability.resolve(); + } + + _setReadableStream(readableStream) { + this._readableStream = readableStream; + readableStream.on("readable", () => { + this._readCapability.resolve(); + }); + readableStream.on("end", () => { + readableStream.destroy(); + this._done = true; + + this._readCapability.resolve(); + }); + readableStream.on("error", reason => { + this._error(reason); + }); + + if (this._storedError) { + this._readableStream.destroy(this._storedError); + } + } + +} + +function createRequestOptions(parsedUrl, headers) { + return { + protocol: parsedUrl.protocol, + auth: parsedUrl.auth, + host: parsedUrl.hostname, + port: parsedUrl.port, + path: parsedUrl.path, + method: "GET", + headers + }; +} + +class PDFNodeStreamFullReader extends BaseFullReader { + constructor(stream) { + super(stream); + + const handleResponse = response => { + if (response.statusCode === 404) { + const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`); + this._storedError = error; + + this._headersCapability.reject(error); + + return; + } + + this._headersCapability.resolve(); + + this._setReadableStream(response); + + const getResponseHeader = name => { + return this._readableStream.headers[name.toLowerCase()]; + }; + + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: stream.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + this._isRangeSupported = allowRangeRequests; + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + }; + + this._request = null; + + if (this._url.protocol === "http:") { + this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse); + } else { + this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse); + } + + this._request.on("error", reason => { + this._storedError = reason; + + this._headersCapability.reject(reason); + }); + + this._request.end(); + } + +} + +class PDFNodeStreamRangeReader extends BaseRangeReader { + constructor(stream, start, end) { + super(stream); + this._httpHeaders = {}; + + for (const property in stream.httpHeaders) { + const value = stream.httpHeaders[property]; + + if (typeof value === "undefined") { + continue; + } + + this._httpHeaders[property] = value; + } + + this._httpHeaders.Range = `bytes=${start}-${end - 1}`; + + const handleResponse = response => { + if (response.statusCode === 404) { + const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`); + this._storedError = error; + return; + } + + this._setReadableStream(response); + }; + + this._request = null; + + if (this._url.protocol === "http:") { + this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse); + } else { + this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse); + } + + this._request.on("error", reason => { + this._storedError = reason; + }); + + this._request.end(); + } + +} + +class PDFNodeStreamFsFullReader extends BaseFullReader { + constructor(stream) { + super(stream); + let path = decodeURIComponent(this._url.path); + + if (fileUriRegex.test(this._url.href)) { + path = path.replace(/^\//, ""); + } + + fs.lstat(path, (error, stat) => { + if (error) { + if (error.code === "ENOENT") { + error = new _util.MissingPDFException(`Missing PDF "${path}".`); + } + + this._storedError = error; + + this._headersCapability.reject(error); + + return; + } + + this._contentLength = stat.size; + + this._setReadableStream(fs.createReadStream(path)); + + this._headersCapability.resolve(); + }); + } + +} + +class PDFNodeStreamFsRangeReader extends BaseRangeReader { + constructor(stream, start, end) { + super(stream); + let path = decodeURIComponent(this._url.path); + + if (fileUriRegex.test(this._url.href)) { + path = path.replace(/^\//, ""); + } + + this._setReadableStream(fs.createReadStream(path, { + start, + end: end - 1 + })); + } + +} + +/***/ }), +/* 33 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.createResponseStatusError = createResponseStatusError; +exports.extractFilenameFromHeader = extractFilenameFromHeader; +exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities; +exports.validateResponseStatus = validateResponseStatus; + +var _util = __w_pdfjs_require__(1); + +var _content_disposition = __w_pdfjs_require__(34); + +var _display_utils = __w_pdfjs_require__(8); + +function validateRangeRequestCapabilities({ + getResponseHeader, + isHttp, + rangeChunkSize, + disableRange +}) { + const returnValues = { + allowRangeRequests: false, + suggestedLength: undefined + }; + const length = parseInt(getResponseHeader("Content-Length"), 10); + + if (!Number.isInteger(length)) { + return returnValues; + } + + returnValues.suggestedLength = length; + + if (length <= 2 * rangeChunkSize) { + return returnValues; + } + + if (disableRange || !isHttp) { + return returnValues; + } + + if (getResponseHeader("Accept-Ranges") !== "bytes") { + return returnValues; + } + + const contentEncoding = getResponseHeader("Content-Encoding") || "identity"; + + if (contentEncoding !== "identity") { + return returnValues; + } + + returnValues.allowRangeRequests = true; + return returnValues; +} + +function extractFilenameFromHeader(getResponseHeader) { + const contentDisposition = getResponseHeader("Content-Disposition"); + + if (contentDisposition) { + let filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition); + + if (filename.includes("%")) { + try { + filename = decodeURIComponent(filename); + } catch (ex) {} + } + + if ((0, _display_utils.isPdfFile)(filename)) { + return filename; + } + } + + return null; +} + +function createResponseStatusError(status, url) { + if (status === 404 || status === 0 && url.startsWith("file:")) { + return new _util.MissingPDFException('Missing PDF "' + url + '".'); + } + + return new _util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF "${url}".`, status); +} + +function validateResponseStatus(status) { + return status === 200 || status === 206; +} + +/***/ }), +/* 34 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader; + +var _util = __w_pdfjs_require__(1); + +function getFilenameFromContentDispositionHeader(contentDisposition) { + let needsEncodingFixup = true; + let tmp = toParamRegExp("filename\\*", "i").exec(contentDisposition); + + if (tmp) { + tmp = tmp[1]; + let filename = rfc2616unquote(tmp); + filename = unescape(filename); + filename = rfc5987decode(filename); + filename = rfc2047decode(filename); + return fixupEncoding(filename); + } + + tmp = rfc2231getparam(contentDisposition); + + if (tmp) { + const filename = rfc2047decode(tmp); + return fixupEncoding(filename); + } + + tmp = toParamRegExp("filename", "i").exec(contentDisposition); + + if (tmp) { + tmp = tmp[1]; + let filename = rfc2616unquote(tmp); + filename = rfc2047decode(filename); + return fixupEncoding(filename); + } + + function toParamRegExp(attributePattern, flags) { + return new RegExp("(?:^|;)\\s*" + attributePattern + "\\s*=\\s*" + "(" + '[^";\\s][^;\\s]*' + "|" + '"(?:[^"\\\\]|\\\\"?)+"?' + ")", flags); + } + + function textdecode(encoding, value) { + if (encoding) { + if (!/^[\x00-\xFF]+$/.test(value)) { + return value; + } + + try { + const decoder = new TextDecoder(encoding, { + fatal: true + }); + const buffer = (0, _util.stringToBytes)(value); + value = decoder.decode(buffer); + needsEncodingFixup = false; + } catch (e) {} + } + + return value; + } + + function fixupEncoding(value) { + if (needsEncodingFixup && /[\x80-\xff]/.test(value)) { + value = textdecode("utf-8", value); + + if (needsEncodingFixup) { + value = textdecode("iso-8859-1", value); + } + } + + return value; + } + + function rfc2231getparam(contentDispositionStr) { + const matches = []; + let match; + const iter = toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)", "ig"); + + while ((match = iter.exec(contentDispositionStr)) !== null) { + let [, n, quot, part] = match; + n = parseInt(n, 10); + + if (n in matches) { + if (n === 0) { + break; + } + + continue; + } + + matches[n] = [quot, part]; + } + + const parts = []; + + for (let n = 0; n < matches.length; ++n) { + if (!(n in matches)) { + break; + } + + let [quot, part] = matches[n]; + part = rfc2616unquote(part); + + if (quot) { + part = unescape(part); + + if (n === 0) { + part = rfc5987decode(part); + } + } + + parts.push(part); + } + + return parts.join(""); + } + + function rfc2616unquote(value) { + if (value.startsWith('"')) { + const parts = value.slice(1).split('\\"'); + + for (let i = 0; i < parts.length; ++i) { + const quotindex = parts[i].indexOf('"'); + + if (quotindex !== -1) { + parts[i] = parts[i].slice(0, quotindex); + parts.length = i + 1; + } + + parts[i] = parts[i].replace(/\\(.)/g, "$1"); + } + + value = parts.join('"'); + } + + return value; + } + + function rfc5987decode(extvalue) { + const encodingend = extvalue.indexOf("'"); + + if (encodingend === -1) { + return extvalue; + } + + const encoding = extvalue.slice(0, encodingend); + const langvalue = extvalue.slice(encodingend + 1); + const value = langvalue.replace(/^[^']*'/, ""); + return textdecode(encoding, value); + } + + function rfc2047decode(value) { + if (!value.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(value)) { + return value; + } + + return value.replace(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (matches, charset, encoding, text) { + if (encoding === "q" || encoding === "Q") { + text = text.replace(/_/g, " "); + text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) { + return String.fromCharCode(parseInt(hex, 16)); + }); + return textdecode(charset, text); + } + + try { + text = atob(text); + } catch (e) {} + + return textdecode(charset, text); + }); + } + + return ""; +} + +/***/ }), +/* 35 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFNetworkStream = void 0; + +var _util = __w_pdfjs_require__(1); + +var _network_utils = __w_pdfjs_require__(33); + +; +const OK_RESPONSE = 200; +const PARTIAL_CONTENT_RESPONSE = 206; + +function getArrayBuffer(xhr) { + const data = xhr.response; + + if (typeof data !== "string") { + return data; + } + + const array = (0, _util.stringToBytes)(data); + return array.buffer; +} + +class NetworkManager { + constructor(url, args = {}) { + this.url = url; + this.isHttp = /^https?:/i.test(url); + this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null); + this.withCredentials = args.withCredentials || false; + + this.getXhr = args.getXhr || function NetworkManager_getXhr() { + return new XMLHttpRequest(); + }; + + this.currXhrId = 0; + this.pendingRequests = Object.create(null); + } + + requestRange(begin, end, listeners) { + const args = { + begin, + end + }; + + for (const prop in listeners) { + args[prop] = listeners[prop]; + } + + return this.request(args); + } + + requestFull(listeners) { + return this.request(listeners); + } + + request(args) { + const xhr = this.getXhr(); + const xhrId = this.currXhrId++; + const pendingRequest = this.pendingRequests[xhrId] = { + xhr + }; + xhr.open("GET", this.url); + xhr.withCredentials = this.withCredentials; + + for (const property in this.httpHeaders) { + const value = this.httpHeaders[property]; + + if (typeof value === "undefined") { + continue; + } + + xhr.setRequestHeader(property, value); + } + + if (this.isHttp && "begin" in args && "end" in args) { + xhr.setRequestHeader("Range", `bytes=${args.begin}-${args.end - 1}`); + pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE; + } else { + pendingRequest.expectedStatus = OK_RESPONSE; + } + + xhr.responseType = "arraybuffer"; + + if (args.onError) { + xhr.onerror = function (evt) { + args.onError(xhr.status); + }; + } + + xhr.onreadystatechange = this.onStateChange.bind(this, xhrId); + xhr.onprogress = this.onProgress.bind(this, xhrId); + pendingRequest.onHeadersReceived = args.onHeadersReceived; + pendingRequest.onDone = args.onDone; + pendingRequest.onError = args.onError; + pendingRequest.onProgress = args.onProgress; + xhr.send(null); + return xhrId; + } + + onProgress(xhrId, evt) { + const pendingRequest = this.pendingRequests[xhrId]; + + if (!pendingRequest) { + return; + } + + pendingRequest.onProgress?.(evt); + } + + onStateChange(xhrId, evt) { + const pendingRequest = this.pendingRequests[xhrId]; + + if (!pendingRequest) { + return; + } + + const xhr = pendingRequest.xhr; + + if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) { + pendingRequest.onHeadersReceived(); + delete pendingRequest.onHeadersReceived; + } + + if (xhr.readyState !== 4) { + return; + } + + if (!(xhrId in this.pendingRequests)) { + return; + } + + delete this.pendingRequests[xhrId]; + + if (xhr.status === 0 && this.isHttp) { + pendingRequest.onError?.(xhr.status); + return; + } + + const xhrStatus = xhr.status || OK_RESPONSE; + const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE; + + if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) { + pendingRequest.onError?.(xhr.status); + return; + } + + const chunk = getArrayBuffer(xhr); + + if (xhrStatus === PARTIAL_CONTENT_RESPONSE) { + const rangeHeader = xhr.getResponseHeader("Content-Range"); + const matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader); + pendingRequest.onDone({ + begin: parseInt(matches[1], 10), + chunk + }); + } else if (chunk) { + pendingRequest.onDone({ + begin: 0, + chunk + }); + } else { + pendingRequest.onError?.(xhr.status); + } + } + + getRequestXhr(xhrId) { + return this.pendingRequests[xhrId].xhr; + } + + isPendingRequest(xhrId) { + return xhrId in this.pendingRequests; + } + + abortRequest(xhrId) { + const xhr = this.pendingRequests[xhrId].xhr; + delete this.pendingRequests[xhrId]; + xhr.abort(); + } + +} + +class PDFNetworkStream { + constructor(source) { + this._source = source; + this._manager = new NetworkManager(source.url, { + httpHeaders: source.httpHeaders, + withCredentials: source.withCredentials + }); + this._rangeChunkSize = source.rangeChunkSize; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + + _onRangeRequestReaderClosed(reader) { + const i = this._rangeRequestReaders.indexOf(reader); + + if (i >= 0) { + this._rangeRequestReaders.splice(i, 1); + } + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFNetworkStream.getFullReader can only be called once."); + this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source); + return this._fullRequestReader; + } + + getRangeReader(begin, end) { + const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end); + reader.onClosed = this._onRangeRequestReaderClosed.bind(this); + + this._rangeRequestReaders.push(reader); + + return reader; + } + + cancelAllRequests(reason) { + this._fullRequestReader?.cancel(reason); + + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } + +} + +exports.PDFNetworkStream = PDFNetworkStream; + +class PDFNetworkStreamFullRequestReader { + constructor(manager, source) { + this._manager = manager; + const args = { + onHeadersReceived: this._onHeadersReceived.bind(this), + onDone: this._onDone.bind(this), + onError: this._onError.bind(this), + onProgress: this._onProgress.bind(this) + }; + this._url = source.url; + this._fullRequestId = manager.requestFull(args); + this._headersReceivedCapability = (0, _util.createPromiseCapability)(); + this._disableRange = source.disableRange || false; + this._contentLength = source.length; + this._rangeChunkSize = source.rangeChunkSize; + + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + + this._isStreamingSupported = false; + this._isRangeSupported = false; + this._cachedChunks = []; + this._requests = []; + this._done = false; + this._storedError = undefined; + this._filename = null; + this.onProgress = null; + } + + _onHeadersReceived() { + const fullRequestXhrId = this._fullRequestId; + + const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId); + + const getResponseHeader = name => { + return fullRequestXhr.getResponseHeader(name); + }; + + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: this._manager.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + + if (allowRangeRequests) { + this._isRangeSupported = true; + } + + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + + if (this._isRangeSupported) { + this._manager.abortRequest(fullRequestXhrId); + } + + this._headersReceivedCapability.resolve(); + } + + _onDone(data) { + if (data) { + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + + requestCapability.resolve({ + value: data.chunk, + done: false + }); + } else { + this._cachedChunks.push(data.chunk); + } + } + + this._done = true; + + if (this._cachedChunks.length > 0) { + return; + } + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + } + + _onError(status) { + this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url); + + this._headersReceivedCapability.reject(this._storedError); + + for (const requestCapability of this._requests) { + requestCapability.reject(this._storedError); + } + + this._requests.length = 0; + this._cachedChunks.length = 0; + } + + _onProgress(evt) { + this.onProgress?.({ + loaded: evt.loaded, + total: evt.lengthComputable ? evt.total : this._contentLength + }); + } + + get filename() { + return this._filename; + } + + get isRangeSupported() { + return this._isRangeSupported; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + get contentLength() { + return this._contentLength; + } + + get headersReady() { + return this._headersReceivedCapability.promise; + } + + async read() { + if (this._storedError) { + throw this._storedError; + } + + if (this._cachedChunks.length > 0) { + const chunk = this._cachedChunks.shift(); + + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + this._headersReceivedCapability.reject(reason); + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + if (this._manager.isPendingRequest(this._fullRequestId)) { + this._manager.abortRequest(this._fullRequestId); + } + + this._fullRequestReader = null; + } + +} + +class PDFNetworkStreamRangeRequestReader { + constructor(manager, begin, end) { + this._manager = manager; + const args = { + onDone: this._onDone.bind(this), + onError: this._onError.bind(this), + onProgress: this._onProgress.bind(this) + }; + this._url = manager.url; + this._requestId = manager.requestRange(begin, end, args); + this._requests = []; + this._queuedChunk = null; + this._done = false; + this._storedError = undefined; + this.onProgress = null; + this.onClosed = null; + } + + _close() { + this.onClosed?.(this); + } + + _onDone(data) { + const chunk = data.chunk; + + if (this._requests.length > 0) { + const requestCapability = this._requests.shift(); + + requestCapability.resolve({ + value: chunk, + done: false + }); + } else { + this._queuedChunk = chunk; + } + + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + this._close(); + } + + _onError(status) { + this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url); + + for (const requestCapability of this._requests) { + requestCapability.reject(this._storedError); + } + + this._requests.length = 0; + this._queuedChunk = null; + } + + _onProgress(evt) { + if (!this.isStreamingSupported) { + this.onProgress?.({ + loaded: evt.loaded + }); + } + } + + get isStreamingSupported() { + return false; + } + + async read() { + if (this._storedError) { + throw this._storedError; + } + + if (this._queuedChunk !== null) { + const chunk = this._queuedChunk; + this._queuedChunk = null; + return { + value: chunk, + done: false + }; + } + + if (this._done) { + return { + value: undefined, + done: true + }; + } + + const requestCapability = (0, _util.createPromiseCapability)(); + + this._requests.push(requestCapability); + + return requestCapability.promise; + } + + cancel(reason) { + this._done = true; + + for (const requestCapability of this._requests) { + requestCapability.resolve({ + value: undefined, + done: true + }); + } + + this._requests.length = 0; + + if (this._manager.isPendingRequest(this._requestId)) { + this._manager.abortRequest(this._requestId); + } + + this._close(); + } + +} + +/***/ }), +/* 36 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFFetchStream = void 0; + +var _util = __w_pdfjs_require__(1); + +var _network_utils = __w_pdfjs_require__(33); + +; + +function createFetchOptions(headers, withCredentials, abortController) { + return { + method: "GET", + headers, + signal: abortController.signal, + mode: "cors", + credentials: withCredentials ? "include" : "same-origin", + redirect: "follow" + }; +} + +function createHeaders(httpHeaders) { + const headers = new Headers(); + + for (const property in httpHeaders) { + const value = httpHeaders[property]; + + if (typeof value === "undefined") { + continue; + } + + headers.append(property, value); + } + + return headers; +} + +class PDFFetchStream { + constructor(source) { + this.source = source; + this.isHttp = /^https?:/i.test(source.url); + this.httpHeaders = this.isHttp && source.httpHeaders || {}; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + + get _progressiveDataLength() { + return this._fullRequestReader?._loaded ?? 0; + } + + getFullReader() { + (0, _util.assert)(!this._fullRequestReader, "PDFFetchStream.getFullReader can only be called once."); + this._fullRequestReader = new PDFFetchStreamReader(this); + return this._fullRequestReader; + } + + getRangeReader(begin, end) { + if (end <= this._progressiveDataLength) { + return null; + } + + const reader = new PDFFetchStreamRangeReader(this, begin, end); + + this._rangeRequestReaders.push(reader); + + return reader; + } + + cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + + for (const reader of this._rangeRequestReaders.slice(0)) { + reader.cancel(reason); + } + } + +} + +exports.PDFFetchStream = PDFFetchStream; + +class PDFFetchStreamReader { + constructor(stream) { + this._stream = stream; + this._reader = null; + this._loaded = 0; + this._filename = null; + const source = stream.source; + this._withCredentials = source.withCredentials || false; + this._contentLength = source.length; + this._headersCapability = (0, _util.createPromiseCapability)(); + this._disableRange = source.disableRange || false; + this._rangeChunkSize = source.rangeChunkSize; + + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + + this._abortController = new AbortController(); + this._isStreamingSupported = !source.disableStream; + this._isRangeSupported = !source.disableRange; + this._headers = createHeaders(this._stream.httpHeaders); + const url = source.url; + fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => { + if (!(0, _network_utils.validateResponseStatus)(response.status)) { + throw (0, _network_utils.createResponseStatusError)(response.status, url); + } + + this._reader = response.body.getReader(); + + this._headersCapability.resolve(); + + const getResponseHeader = name => { + return response.headers.get(name); + }; + + const { + allowRangeRequests, + suggestedLength + } = (0, _network_utils.validateRangeRequestCapabilities)({ + getResponseHeader, + isHttp: this._stream.isHttp, + rangeChunkSize: this._rangeChunkSize, + disableRange: this._disableRange + }); + this._isRangeSupported = allowRangeRequests; + this._contentLength = suggestedLength || this._contentLength; + this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader); + + if (!this._isStreamingSupported && this._isRangeSupported) { + this.cancel(new _util.AbortException("Streaming is disabled.")); + } + }).catch(this._headersCapability.reject); + this.onProgress = null; + } + + get headersReady() { + return this._headersCapability.promise; + } + + get filename() { + return this._filename; + } + + get contentLength() { + return this._contentLength; + } + + get isRangeSupported() { + return this._isRangeSupported; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._headersCapability.promise; + const { + value, + done + } = await this._reader.read(); + + if (done) { + return { + value, + done + }; + } + + this._loaded += value.byteLength; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded, + total: this._contentLength + }); + } + + const buffer = new Uint8Array(value).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (this._reader) { + this._reader.cancel(reason); + } + + this._abortController.abort(); + } + +} + +class PDFFetchStreamRangeReader { + constructor(stream, begin, end) { + this._stream = stream; + this._reader = null; + this._loaded = 0; + const source = stream.source; + this._withCredentials = source.withCredentials || false; + this._readCapability = (0, _util.createPromiseCapability)(); + this._isStreamingSupported = !source.disableStream; + this._abortController = new AbortController(); + this._headers = createHeaders(this._stream.httpHeaders); + + this._headers.append("Range", `bytes=${begin}-${end - 1}`); + + const url = source.url; + fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => { + if (!(0, _network_utils.validateResponseStatus)(response.status)) { + throw (0, _network_utils.createResponseStatusError)(response.status, url); + } + + this._readCapability.resolve(); + + this._reader = response.body.getReader(); + }).catch(this._readCapability.reject); + this.onProgress = null; + } + + get isStreamingSupported() { + return this._isStreamingSupported; + } + + async read() { + await this._readCapability.promise; + const { + value, + done + } = await this._reader.read(); + + if (done) { + return { + value, + done + }; + } + + this._loaded += value.byteLength; + + if (this.onProgress) { + this.onProgress({ + loaded: this._loaded + }); + } + + const buffer = new Uint8Array(value).buffer; + return { + value: buffer, + done: false + }; + } + + cancel(reason) { + if (this._reader) { + this._reader.cancel(reason); + } + + this._abortController.abort(); + } + +} + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __w_pdfjs_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +var exports = __webpack_exports__; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "AnnotationEditorLayer", ({ + enumerable: true, + get: function () { + return _annotation_editor_layer.AnnotationEditorLayer; + } +})); +Object.defineProperty(exports, "AnnotationEditorParamsType", ({ + enumerable: true, + get: function () { + return _util.AnnotationEditorParamsType; + } +})); +Object.defineProperty(exports, "AnnotationEditorType", ({ + enumerable: true, + get: function () { + return _util.AnnotationEditorType; + } +})); +Object.defineProperty(exports, "AnnotationEditorUIManager", ({ + enumerable: true, + get: function () { + return _tools.AnnotationEditorUIManager; + } +})); +Object.defineProperty(exports, "AnnotationLayer", ({ + enumerable: true, + get: function () { + return _annotation_layer.AnnotationLayer; + } +})); +Object.defineProperty(exports, "AnnotationMode", ({ + enumerable: true, + get: function () { + return _util.AnnotationMode; + } +})); +Object.defineProperty(exports, "CMapCompressionType", ({ + enumerable: true, + get: function () { + return _util.CMapCompressionType; + } +})); +Object.defineProperty(exports, "GlobalWorkerOptions", ({ + enumerable: true, + get: function () { + return _worker_options.GlobalWorkerOptions; + } +})); +Object.defineProperty(exports, "InvalidPDFException", ({ + enumerable: true, + get: function () { + return _util.InvalidPDFException; + } +})); +Object.defineProperty(exports, "LoopbackPort", ({ + enumerable: true, + get: function () { + return _api.LoopbackPort; + } +})); +Object.defineProperty(exports, "MissingPDFException", ({ + enumerable: true, + get: function () { + return _util.MissingPDFException; + } +})); +Object.defineProperty(exports, "OPS", ({ + enumerable: true, + get: function () { + return _util.OPS; + } +})); +Object.defineProperty(exports, "PDFDataRangeTransport", ({ + enumerable: true, + get: function () { + return _api.PDFDataRangeTransport; + } +})); +Object.defineProperty(exports, "PDFDateString", ({ + enumerable: true, + get: function () { + return _display_utils.PDFDateString; + } +})); +Object.defineProperty(exports, "PDFWorker", ({ + enumerable: true, + get: function () { + return _api.PDFWorker; + } +})); +Object.defineProperty(exports, "PasswordResponses", ({ + enumerable: true, + get: function () { + return _util.PasswordResponses; + } +})); +Object.defineProperty(exports, "PermissionFlag", ({ + enumerable: true, + get: function () { + return _util.PermissionFlag; + } +})); +Object.defineProperty(exports, "PixelsPerInch", ({ + enumerable: true, + get: function () { + return _display_utils.PixelsPerInch; + } +})); +Object.defineProperty(exports, "RenderingCancelledException", ({ + enumerable: true, + get: function () { + return _display_utils.RenderingCancelledException; + } +})); +Object.defineProperty(exports, "SVGGraphics", ({ + enumerable: true, + get: function () { + return _svg.SVGGraphics; + } +})); +Object.defineProperty(exports, "UNSUPPORTED_FEATURES", ({ + enumerable: true, + get: function () { + return _util.UNSUPPORTED_FEATURES; + } +})); +Object.defineProperty(exports, "UnexpectedResponseException", ({ + enumerable: true, + get: function () { + return _util.UnexpectedResponseException; + } +})); +Object.defineProperty(exports, "Util", ({ + enumerable: true, + get: function () { + return _util.Util; + } +})); +Object.defineProperty(exports, "VerbosityLevel", ({ + enumerable: true, + get: function () { + return _util.VerbosityLevel; + } +})); +Object.defineProperty(exports, "XfaLayer", ({ + enumerable: true, + get: function () { + return _xfa_layer.XfaLayer; + } +})); +Object.defineProperty(exports, "build", ({ + enumerable: true, + get: function () { + return _api.build; + } +})); +Object.defineProperty(exports, "createPromiseCapability", ({ + enumerable: true, + get: function () { + return _util.createPromiseCapability; + } +})); +Object.defineProperty(exports, "createValidAbsoluteUrl", ({ + enumerable: true, + get: function () { + return _util.createValidAbsoluteUrl; + } +})); +Object.defineProperty(exports, "getDocument", ({ + enumerable: true, + get: function () { + return _api.getDocument; + } +})); +Object.defineProperty(exports, "getFilenameFromUrl", ({ + enumerable: true, + get: function () { + return _display_utils.getFilenameFromUrl; + } +})); +Object.defineProperty(exports, "getPdfFilenameFromUrl", ({ + enumerable: true, + get: function () { + return _display_utils.getPdfFilenameFromUrl; + } +})); +Object.defineProperty(exports, "getXfaPageViewport", ({ + enumerable: true, + get: function () { + return _display_utils.getXfaPageViewport; + } +})); +Object.defineProperty(exports, "isPdfFile", ({ + enumerable: true, + get: function () { + return _display_utils.isPdfFile; + } +})); +Object.defineProperty(exports, "loadScript", ({ + enumerable: true, + get: function () { + return _display_utils.loadScript; + } +})); +Object.defineProperty(exports, "renderTextLayer", ({ + enumerable: true, + get: function () { + return _text_layer.renderTextLayer; + } +})); +Object.defineProperty(exports, "shadow", ({ + enumerable: true, + get: function () { + return _util.shadow; + } +})); +Object.defineProperty(exports, "version", ({ + enumerable: true, + get: function () { + return _api.version; + } +})); + +var _util = __w_pdfjs_require__(1); + +var _api = __w_pdfjs_require__(4); + +var _display_utils = __w_pdfjs_require__(8); + +var _annotation_editor_layer = __w_pdfjs_require__(22); + +var _tools = __w_pdfjs_require__(7); + +var _annotation_layer = __w_pdfjs_require__(27); + +var _worker_options = __w_pdfjs_require__(15); + +var _is_node = __w_pdfjs_require__(3); + +var _text_layer = __w_pdfjs_require__(30); + +var _svg = __w_pdfjs_require__(31); + +var _xfa_layer = __w_pdfjs_require__(29); + +const pdfjsVersion = '2.16.105'; +const pdfjsBuild = '172ccdbe5'; +{ + if (_is_node.isNodeJS) { + const { + PDFNodeStream + } = __w_pdfjs_require__(32); + + (0, _api.setPDFNetworkStreamFactory)(params => { + return new PDFNodeStream(params); + }); + } else { + const { + PDFNetworkStream + } = __w_pdfjs_require__(35); + + const { + PDFFetchStream + } = __w_pdfjs_require__(36); + + (0, _api.setPDFNetworkStreamFactory)(params => { + if ((0, _display_utils.isValidFetchUrl)(params.url)) { + return new PDFFetchStream(params); + } + + return new PDFNetworkStream(params); + }); + } +} +})(); + +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=pdf.js.map \ No newline at end of file diff --git a/static/js/pdf-js/build/pdf.js.map b/static/js/pdf-js/build/pdf.js.map new file mode 100644 index 0000000..8b64ceb --- /dev/null +++ b/static/js/pdf-js/build/pdf.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pdf.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf/src/shared/util.js","webpack://pdfjs-dist/build/pdf/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf/src/display/api.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_storage.js","webpack://pdfjs-dist/build/pdf/src/display/editor/editor.js","webpack://pdfjs-dist/build/pdf/src/display/editor/tools.js","webpack://pdfjs-dist/build/pdf/src/display/display_utils.js","webpack://pdfjs-dist/build/pdf/src/display/base_factory.js","webpack://pdfjs-dist/build/pdf/src/shared/murmurhash3.js","webpack://pdfjs-dist/build/pdf/src/display/font_loader.js","webpack://pdfjs-dist/build/pdf/src/display/canvas.js","webpack://pdfjs-dist/build/pdf/src/display/pattern_helper.js","webpack://pdfjs-dist/build/pdf/src/shared/image_utils.js","webpack://pdfjs-dist/build/pdf/src/display/worker_options.js","webpack://pdfjs-dist/build/pdf/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf/src/display/metadata.js","webpack://pdfjs-dist/build/pdf/src/display/optional_content_config.js","webpack://pdfjs-dist/build/pdf/src/display/transport_stream.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_text.js","webpack://pdfjs-dist/build/pdf/src/display/node_utils.js","webpack://pdfjs-dist/build/pdf/src/display/editor/annotation_editor_layer.js","webpack://pdfjs-dist/build/pdf/src/display/editor/freetext.js","webpack://pdfjs-dist/build/pdf/src/display/editor/ink.js","webpack://pdfjs-dist/build/pdf/src/display/editor/fit_curve.js","webpack://pdfjs-dist/build/pdf/node_modules/fit-curve/src/fit-curve.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_layer.js","webpack://pdfjs-dist/build/pdf/src/shared/scripting_utils.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_layer.js","webpack://pdfjs-dist/build/pdf/src/display/text_layer.js","webpack://pdfjs-dist/build/pdf/src/display/svg.js","webpack://pdfjs-dist/build/pdf/src/display/node_stream.js","webpack://pdfjs-dist/build/pdf/src/display/network_utils.js","webpack://pdfjs-dist/build/pdf/src/display/content_disposition.js","webpack://pdfjs-dist/build/pdf/src/display/network.js","webpack://pdfjs-dist/build/pdf/src/display/fetch_stream.js","webpack://pdfjs-dist/build/pdf/webpack/bootstrap","webpack://pdfjs-dist/build/pdf/src/pdf.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(globalThis, () => {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n// Represent the percentage of the height of a single-line field over\n// the font size. Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n INK: 15,\n};\n\nconst AnnotationEditorParamsType = {\n FREETEXT_SIZE: 1,\n FREETEXT_COLOR: 2,\n FREETEXT_OPACITY: 3,\n INK_COLOR: 11,\n INK_THICKNESS: 12,\n INK_OPACITY: 13,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n /** @deprecated unused */\n beginAnnotations: 78,\n /** @deprecated unused */\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n /** @deprecated unused */\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n /** @deprecated unused */\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n /** @deprecated unused */\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\",\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nfunction bytesToString(bytes) {\n if (\n typeof bytes !== \"object\" ||\n bytes === null ||\n bytes.length === undefined\n ) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array|Uint8Array|string} arr\n * @returns {number}\n */\n// eslint-disable-next-line consistent-return\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n if (arr.byteLength !== undefined) {\n return arr.byteLength;\n }\n unreachable(\"Invalid argument for arrayByteLength\");\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array|Uint8Array|string>} arr - the array of the arrays\n * (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\n\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n\n static get isOffscreenCanvasSupported() {\n return shadow(\n this,\n \"isOffscreenCanvasSupported\",\n typeof OffscreenCanvas !== \"undefined\"\n );\n }\n}\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Apply a scaling matrix to some min/max values.\n // If a scaling factor is negative then min and max must be\n // swaped.\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[0];\n minMax[1] *= transform[0];\n\n if (transform[3] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n\n if (transform[1] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[1];\n minMax[3] *= transform[1];\n\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[2];\n minMax[1] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[4];\n minMax[2] += transform[5];\n minMax[3] += transform[5];\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n static apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'null'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n const xLow = Math.max(\n Math.min(rect1[0], rect1[2]),\n Math.min(rect2[0], rect2[2])\n );\n const xHigh = Math.min(\n Math.max(rect1[0], rect1[2]),\n Math.max(rect2[0], rect2[2])\n );\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(\n Math.min(rect1[1], rect1[3]),\n Math.min(rect2[1], rect2[3])\n );\n const yHigh = Math.min(\n Math.max(rect1[1], rect1[3]),\n Math.max(rect2[1], rect2[3])\n );\n if (yLow > yHigh) {\n return null;\n }\n\n return [xLow, yLow, xHigh, yHigh];\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n // in order to write it in a PDF file.\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n String.fromCharCode((char >> 8) & 0xff),\n String.fromCharCode(char & 0xff)\n );\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationEditorParamsType,\n AnnotationEditorPrefix,\n AnnotationEditorType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n bytesToString,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isAscii,\n LINE_DESCENT_FACTOR,\n LINE_FACTOR,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n StreamType,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF16BEString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n !globalThis._pdfjsCompatibilityChecked\n) {\n globalThis._pdfjsCompatibilityChecked = true;\n\n // Support: Node.js<16.0.0\n (function checkNodeBtoa() {\n if (globalThis.btoa || !isNodeJS) {\n return;\n }\n globalThis.btoa = function (chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n // Support: Node.js<16.0.0\n (function checkNodeAtob() {\n if (globalThis.atob || !isNodeJS) {\n return;\n }\n globalThis.atob = function (input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n // Support: Node.js\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n globalThis.DOMMatrix = __non_webpack_require__(\n \"dommatrix/dist/dommatrix.js\"\n );\n })();\n\n // Support: Node.js\n (function checkReadableStream() {\n if (globalThis.ReadableStream || !isNodeJS) {\n return;\n }\n globalThis.ReadableStream = __non_webpack_require__(\n \"web-streams-polyfill/dist/ponyfill.js\"\n ).ReadableStream;\n })();\n\n // Support: Firefox<90, Chrome<92, Safari<15.4, Node.js<16.6.0\n (function checkArrayAt() {\n if (Array.prototype.at) {\n return;\n }\n require(\"core-js/es/array/at.js\");\n })();\n\n // Support: Firefox<90, Chrome<92, Safari<15.4, Node.js<16.6.0\n (function checkTypedArrayAt() {\n if (Uint8Array.prototype.at) {\n return;\n }\n require(\"core-js/es/typed-array/at.js\");\n })();\n\n // Support: Firefox<94, Chrome<98, Safari<15.4, Node.js<17.0.0\n (function checkStructuredClone() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `structuredClone`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.structuredClone) {\n return;\n }\n require(\"core-js/web/structured-clone.js\");\n })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n AnnotationMode,\n assert,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n MissingPDFException,\n PasswordException,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n AnnotationStorage,\n PrintAnnotationStorage,\n} from \"./annotation_storage.js\";\nimport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n loadScript,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\n\nlet DefaultCanvasFactory = DOMCanvasFactory;\nlet DefaultCMapReaderFactory = DOMCMapReaderFactory;\nlet DefaultStandardFontDataFactory = DOMStandardFontDataFactory;\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS) {\n const {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory,\n } = require(\"./node_utils.js\");\n\n DefaultCanvasFactory = NodeCanvasFactory;\n DefaultCMapReaderFactory = NodeCMapReaderFactory;\n DefaultStandardFontDataFactory = NodeStandardFontDataFactory;\n}\n\n/**\n * @typedef {function} IPDFStreamFactory\n * @param {DocumentInitParameters} params - The document initialization\n * parameters. The \"url\" key is always present.\n * @returns {Promise} A promise, which is resolved with an instance of\n * {IPDFStream}.\n * @ignore\n */\n\n/**\n * @type {IPDFStreamFactory}\n * @private\n */\nlet createPDFNetworkStream;\n\n/**\n * Sets the function that instantiates an {IPDFStream} as an alternative PDF\n * data transport.\n *\n * @param {IPDFStreamFactory} pdfNetworkStreamFactory - The factory function\n * that takes document initialization parameters (including a \"url\") and\n * returns a promise which is resolved with an instance of {IPDFStream}.\n * @ignore\n */\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef { TypedArray | ArrayBuffer | Array | string } BinaryData\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string | URL} [url] - The URL of the PDF.\n * @property {BinaryData} [data] - Binary PDF data.\n * Use typed arrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {TypedArray} [initialData] - A typed array with the first portion\n * or all of the pdf data. Used by the extension since some data is already\n * loaded before the switch to range requests.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n */\n\n/**\n * @typedef { string | URL | TypedArray | ArrayBuffer |\n * PDFDataRangeTransport | DocumentInitParameters\n * } GetDocumentParameters\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {GetDocumentParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n const task = new PDFDocumentLoadingTask();\n\n let source;\n if (typeof src === \"string\" || src instanceof URL) {\n source = { url: src };\n } else if (isArrayBuffer(src)) {\n source = { data: src };\n } else if (src instanceof PDFDataRangeTransport) {\n source = { range: src };\n } else {\n if (typeof src !== \"object\") {\n throw new Error(\n \"Invalid parameter in getDocument, \" +\n \"need either string, URL, TypedArray, or parameter object.\"\n );\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n source = src;\n }\n const params = Object.create(null);\n let rangeTransport = null,\n worker = null;\n\n for (const key in source) {\n const value = source[key];\n\n switch (key) {\n case \"url\":\n if (typeof window !== \"undefined\") {\n try {\n // The full path is required in the 'url' field.\n params[key] = new URL(value, window.location).href;\n continue;\n } catch (ex) {\n warn(`Cannot create valid URL: \"${ex}\".`);\n }\n } else if (typeof value === \"string\" || value instanceof URL) {\n params[key] = value.toString(); // Support Node.js environments.\n continue;\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n case \"range\":\n rangeTransport = value;\n continue;\n case \"worker\":\n worker = value;\n continue;\n case \"data\":\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n value instanceof Buffer // eslint-disable-line no-undef\n ) {\n params[key] = new Uint8Array(value);\n } else if (value instanceof Uint8Array) {\n break; // Use the data as-is when it's already a Uint8Array.\n } else if (typeof value === \"string\") {\n params[key] = stringToBytes(value);\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !isNaN(value.length)\n ) {\n params[key] = new Uint8Array(value);\n } else if (isArrayBuffer(value)) {\n params[key] = new Uint8Array(value);\n } else {\n throw new Error(\n \"Invalid PDF binary data: either TypedArray, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n }\n continue;\n }\n params[key] = value;\n }\n\n params.CMapReaderFactory =\n params.CMapReaderFactory || DefaultCMapReaderFactory;\n params.StandardFontDataFactory =\n params.StandardFontDataFactory || DefaultStandardFontDataFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.fontExtraProperties = params.fontExtraProperties === true;\n params.pdfBug = params.pdfBug === true;\n params.enableXfa = params.enableXfa === true;\n\n if (!Number.isInteger(params.rangeChunkSize) || params.rangeChunkSize < 1) {\n params.rangeChunkSize = DEFAULT_RANGE_CHUNK_SIZE;\n }\n if (\n typeof params.docBaseUrl !== \"string\" ||\n isDataScheme(params.docBaseUrl)\n ) {\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n params.docBaseUrl = null;\n }\n if (!Number.isInteger(params.maxImageSize) || params.maxImageSize < -1) {\n params.maxImageSize = -1;\n }\n if (typeof params.cMapUrl !== \"string\") {\n params.cMapUrl = null;\n }\n if (typeof params.standardFontDataUrl !== \"string\") {\n params.standardFontDataUrl = null;\n }\n if (typeof params.useWorkerFetch !== \"boolean\") {\n params.useWorkerFetch =\n params.CMapReaderFactory === DOMCMapReaderFactory &&\n params.StandardFontDataFactory === DOMStandardFontDataFactory;\n }\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace = isNodeJS;\n }\n if (typeof params.useSystemFonts !== \"boolean\") {\n params.useSystemFonts = !isNodeJS && !params.disableFontFace;\n }\n if (\n typeof params.ownerDocument !== \"object\" ||\n params.ownerDocument === null\n ) {\n params.ownerDocument = globalThis.document;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(params.verbosity);\n\n if (!worker) {\n const workerParams = {\n verbosity: params.verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docId = task.docId;\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(\n worker,\n params,\n rangeTransport,\n docId\n );\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n contentDispositionFilename: params.contentDispositionFilename,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n },\n rangeTransport\n );\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n params\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId - Unique document ID, used in `MessageHandler`.\n * @returns {Promise} A promise that is resolved when the worker ID of\n * the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n source.contentDispositionFilename =\n pdfDataRangeTransport.contentDispositionFilename;\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n // Only send the required properties, and *not* the entire object.\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length,\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n docBaseUrl: source.docBaseUrl,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n fontExtraProperties: source.fontExtraProperties,\n enableXfa: source.enableXfa,\n useSystemFonts: source.useSystemFonts,\n cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,\n standardFontDataUrl: source.useWorkerFetch\n ? source.standardFontDataUrl\n : null,\n }\n );\n\n // Release the TypedArray data, when it exists, since it's no longer needed\n // on the main-thread *after* it's been sent to the worker-thread.\n if (source.data) {\n source.data = null;\n }\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n\n constructor() {\n this._capability = createPromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n\n /**\n * Callback for when an unsupported feature is used in the PDF document.\n * The callback receives an {@link UNSUPPORTED_FEATURES} argument.\n * @type {function}\n */\n this.onUnsupportedFeature = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Abort all network requests and destroy the worker.\n * @returns {Promise} A promise that is resolved when destruction is\n * completed.\n */\n async destroy() {\n this.destroyed = true;\n await this._transport?.destroy();\n\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\n\n/**\n * Abstract class to support range requests file loading.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = createPromiseCapability();\n }\n\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n Object.defineProperty(this, \"fingerprint\", {\n get() {\n deprecated(\n \"`PDFDocumentProxy.fingerprint`, \" +\n \"please use `PDFDocumentProxy.fingerprints` instead.\"\n );\n return this.fingerprints[0];\n },\n });\n\n Object.defineProperty(this, \"getStats\", {\n value: async () => {\n deprecated(\n \"`PDFDocumentProxy.getStats`, \" +\n \"please use the `PDFDocumentProxy.stats`-getter instead.\"\n );\n return this.stats || { streamTypes: {}, fontTypes: {} };\n },\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @typedef {Object} PDFDocumentStats\n * @property {Object} streamTypes - Used stream types in the\n * document (an item is set to true if specific stream ID was used in the\n * document).\n * @property {Object} fontTypes - Used font types in the\n * document (an item is set to true if specific font ID was used in the\n * document).\n */\n\n /**\n * @type {PDFDocumentStats | null} The current statistics about document\n * structures, or `null` when no statistics exists.\n */\n get stats() {\n return this._transport.stats;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return !!this._transport._htmlForXfa;\n }\n\n /**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n *\n * @type {Object | null} An object representing a HTML tree structure\n * to render the XFA, or `null` when no XFA form exists.\n */\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {RefProxy} ref - The page reference.\n * @returns {Promise} A promise that is resolved with the page index,\n * starting from zero, that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise>>} A promise that is resolved\n * with a mapping from named destinations to references.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @returns {Promise | null>} A promise that is resolved with all\n * information of the given named destination, or `null` when the named\n * destination is not present in the PDF file.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} containing the page labels that correspond to the page\n * indexes, or `null` when no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {string}\n * containing the page layout name.\n */\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a {string}\n * containing the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an\n * {Object} containing the viewer preferences, or `null` when no viewer\n * preferences are present in the PDF file.\n */\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an {Array}\n * containing the destination, or `null` when no open action is present\n * in the PDF.\n */\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a lookup table\n * for mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} of all the JavaScript strings in the name tree, or `null`\n * if no JavaScript exists.\n */\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {Object} with the JavaScript actions:\n * - from the name tree (like getJavaScript);\n * - from A or AA entries in the catalog dictionary.\n * , or `null` if no JavaScript exists.\n */\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n /**\n * @typedef {Object} OutlineNode\n * @property {string} title\n * @property {boolean} bold\n * @property {boolean} italic\n * @property {Uint8ClampedArray} color - The color in RGB format to use for\n * display purposes.\n * @property {string | Array | null} dest\n * @property {string | null} url\n * @property {string | undefined} unsafeUrl\n * @property {boolean | undefined} newWindow\n * @property {number | undefined} count\n * @property {Array} items\n */\n\n /**\n * @returns {Promise>} A promise that is resolved with an\n * {Array} that is a tree outline (if it has one) of the PDF file.\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {@link OptionalContentConfig} that contains all the optional content\n * groups (assuming that the document has any).\n */\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with\n * an {Array} that contains the permission flags for the PDF document, or\n * `null` when no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n * resolved with an {Object} that has `info` and `metadata` properties.\n * `info` is an {Object} filled with anything available in the information\n * dictionary and similarly `metadata` is a {Metadata} object with\n * information from the metadata section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @typedef {Object} MarkInfo\n * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n * @property {boolean} Marked\n * @property {boolean} UserProperties\n * @property {boolean} Suspects\n */\n\n /**\n * @returns {Promise} A promise that is resolved with\n * a {MarkInfo} object that contains the MarkInfo flags for the PDF\n * document, or `null` when no MarkInfo values are present in the PDF file.\n */\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {Uint8Array} that has the raw data from the PDF.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise<{ length: number }>} A promise that is resolved when the\n * document's data is loaded. It is resolved with an {Object} that contains\n * the `length` property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * Cleans up resources allocated by the document on both the main and worker\n * threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n * NOTE: This will increase persistent memory usage, hence don't use this\n * option unless absolutely necessary. The default value is `false`.\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {DocumentInitParameters} A subset of the current\n * {DocumentInitParameters}, which are needed in the viewer.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {Uint8Array} containing the full data of the saved document.\n */\n saveDocument() {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n this._transport.annotationStorage.size <= 0\n ) {\n deprecated(\n \"saveDocument called while `annotationStorage` is empty, \" +\n \"please use the getData-method instead.\"\n );\n }\n return this._transport.saveDocument();\n }\n\n /**\n * @returns {Promise> | null>} A promise that is\n * resolved with an {Object} containing /AcroForm field data for the JS\n * sandbox, or `null` when no field data is present in the PDF file.\n */\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n /**\n * @returns {Promise} A promise that is resolved with `true`\n * if some /AcroForm fields have JavaScript actions.\n */\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n /**\n * @returns {Promise | null>} A promise that is resolved with an\n * {Array} containing IDs of annotations that have a calculation\n * action, or `null` when no such annotations are present in the PDF file.\n */\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n * the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} disableCombineTextItems - Do not attempt to combine\n * same line {@link TextItem}'s. The default value is `false`.\n * @property {boolean} [includeMarkedContent] - When true include marked\n * content items in the items array of TextContent. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array} items - Array of\n * {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n * items are included when includeMarkedContent is true.\n * @property {Object} styles - {@link TextStyle} objects,\n * indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n * line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n * 'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n * 'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n * can be 'display' (viewable annotations), 'print' (printable annotations),\n * or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {Object} canvasContext - A 2D context of a DOM Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n * the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n * onto the canvas, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {Array} [transform] - Additional transform, applied just\n * before viewport transform.\n * @property {Object} [imageLayer] - An object that has `beginLayout`,\n * `endLayout` and `appendImage` functions.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n * when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object | string} [background] - Background to use for the canvas.\n * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n * value, a `CanvasGradient` object (a linear or radial gradient) or\n * a `CanvasPattern` object (a repetitive image). The default value is\n * 'rgb(255,255,255)'.\n *\n * NOTE: This option may be partially, or completely, ignored when the\n * `pageColors`-option is used.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n * with user defined ones in order to improve readability in high contrast\n * mode.\n * @property {Promise} [optionalContentConfigPromise] -\n * A promise that should resolve with an {@link OptionalContentConfig}\n * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n * the configuration will be fetched automatically with the default visibility\n * states set.\n * @property {Map} [annotationCanvasMap] - Map some\n * annotation ids with canvases used to render them.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n * in the operatorList, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array} children - Array of\n * {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n * elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array} fnArray - Array containing the operator functions.\n * @property {Array} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._ownerDocument = ownerDocument;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n /** @type {PDFObjects} */\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this._bitmaps = new Set();\n\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this._intentStates = new Map();\n this._annotationPromises = new Map();\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {RefProxy | null} The reference that points to this page.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array} An array of the visible portion of the PDF page in\n * user space units [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n }\n\n /**\n * @param {GetViewportParameters} params - Viewport parameters.\n * @returns {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @returns {Promise>} A promise that is resolved with an\n * {Array} of the annotation objects.\n */\n getAnnotations({ intent = \"display\" } = {}) {\n const intentArgs = this._transport.getRenderingIntent(intent);\n\n let promise = this._annotationPromises.get(intentArgs.cacheKey);\n if (!promise) {\n promise = this._transport.getAnnotations(\n this._pageIndex,\n intentArgs.renderingIntent\n );\n this._annotationPromises.set(intentArgs.cacheKey, promise);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n promise = promise.then(annotations => {\n for (const annotation of annotations) {\n if (annotation.titleObj !== undefined) {\n Object.defineProperty(annotation, \"title\", {\n get() {\n deprecated(\n \"`title`-property on annotation, please use `titleObj` instead.\"\n );\n return annotation.titleObj.str;\n },\n });\n }\n if (annotation.contentsObj !== undefined) {\n Object.defineProperty(annotation, \"contents\", {\n get() {\n deprecated(\n \"`contents`-property on annotation, please use `contentsObj` instead.\"\n );\n return annotation.contentsObj.str;\n },\n });\n }\n }\n return annotations;\n });\n }\n }\n return promise;\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an\n * {Object} with JS actions.\n */\n getJSActions() {\n return (this._jsActionsPromise ||= this._transport.getPageJSActions(\n this._pageIndex\n ));\n }\n\n /**\n * @returns {Promise} A promise that is resolved with\n * an {Object} with a fake DOM object (a tree structure where elements\n * are {Object} with a name, attributes (class, style, ...), value and\n * children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n */\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n *\n * @param {RenderParameters} params - Page render parameters.\n * @returns {RenderTask} An object that contains a promise that is\n * resolved when the page finishes rendering.\n */\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n imageLayer = null,\n canvasFactory = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n }) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n if (arguments[0]?.renderInteractiveForms !== undefined) {\n deprecated(\n \"render no longer accepts the `renderInteractiveForms`-option, \" +\n \"please use the `annotationMode`-option instead.\"\n );\n if (\n arguments[0].renderInteractiveForms === true &&\n annotationMode === AnnotationMode.ENABLE\n ) {\n annotationMode = AnnotationMode.ENABLE_FORMS;\n }\n }\n if (arguments[0]?.includeAnnotationStorage !== undefined) {\n deprecated(\n \"render no longer accepts the `includeAnnotationStorage`-option, \" +\n \"please use the `annotationMode`-option instead.\"\n );\n if (\n arguments[0].includeAnnotationStorage === true &&\n annotationMode === AnnotationMode.ENABLE\n ) {\n annotationMode = AnnotationMode.ENABLE_STORAGE;\n }\n }\n }\n\n if (this._stats) {\n this._stats.time(\"Overall\");\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n printAnnotationStorage\n );\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render.\n this.pendingCleanup = false;\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const canvasFactoryInstance =\n canvasFactory ||\n new DefaultCanvasFactory({ ownerDocument: this._ownerDocument });\n const intentPrint = !!(\n intentArgs.renderingIntent & RenderingIntentFlag.PRINT\n );\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = createPromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList(intentArgs);\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup once rendering has finished (regardless of cleanupAfterRender).\n if (this.cleanupAfterRender || intentPrint) {\n this.pendingCleanup = true;\n }\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error),\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n }\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\n params: {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background,\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: canvasFactoryInstance,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors,\n });\n\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n Promise.all([\n intentState.displayReadyCapability.promise,\n optionalContentConfigPromise,\n ])\n .then(([transparency, optionalContentConfig]) => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n if (this._stats) {\n this._stats.time(\"Rendering\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig,\n });\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @param {GetOperatorListParameters} params - Page getOperatorList\n * parameters.\n * @returns {Promise} A promise resolved with an\n * {@link PDFOperatorList} object that represents the page's operator list.\n */\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n printAnnotationStorage,\n /* isOpList = */ true\n );\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = createPromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\n disableCombineTextItems = false,\n includeMarkedContent = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n combineTextItems: disableCombineTextItems !== true,\n includeMarkedContent: includeMarkedContent === true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise} A promise that is resolved with a\n * {@link TextContent} object that represents the page's text content.\n */\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n // TODO: We need to revisit this once the XFA foreground patch lands and\n // only do this for non-foreground XFA.\n return this.getXfa().then(xfa => {\n return XfaText.textContent(xfa);\n });\n }\n const readableStream = this.streamTextContent(params);\n\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({ value, done }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n pump();\n });\n }\n\n /**\n * @returns {Promise} A promise that is resolved with a\n * {@link StructTreeNode} object that represents the page's structure tree,\n * or `null` when no structure tree is present for the current page.\n */\n getStructTree() {\n return (this._structTreePromise ||= this._transport.getStructTree(\n this._pageIndex\n ));\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true,\n });\n\n if (intentState.opListReadCapability) {\n // Avoid errors below, since the renderTasks are just stubs.\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n for (const bitmap of this._bitmaps) {\n bitmap.close();\n }\n this._bitmaps.clear();\n this._annotationPromises.clear();\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n *\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.pendingCleanup = true;\n return this._tryCleanup(resetStats);\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @private\n */\n _tryCleanup(resetStats = false) {\n if (!this.pendingCleanup) {\n return false;\n }\n for (const { renderTasks, operatorList } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n\n this._intentStates.clear();\n this.objs.clear();\n this._annotationPromises.clear();\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n if (resetStats && this._stats) {\n this._stats = new StatTimer();\n }\n for (const bitmap of this._bitmaps) {\n bitmap.close();\n }\n this._bitmaps.clear();\n this.pendingCleanup = false;\n return true;\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n if (this._stats) {\n this._stats.timeEnd(\"Page Request\");\n }\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this._tryCleanup();\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList({ renderingIntent, cacheKey, annotationStorageMap }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n Number.isInteger(renderingIntent) && renderingIntent > 0,\n '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n );\n }\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: annotationStorageMap,\n }\n );\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this._tryCleanup();\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n }\n );\n };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n reason instanceof Error,\n '_abortOperatorList: Expected valid \"reason\" argument.'\n );\n }\n\n if (!intentState.streamReader) {\n return;\n }\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.size > 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n this._abortOperatorList({ intentState, reason, force: true });\n intentState.streamReaderCancelTimeout = null;\n }, RENDERING_CANCELLED_TIMEOUT);\n return;\n }\n }\n intentState.streamReader\n .cancel(new AbortException(reason.message))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {Object} Returns page stats, if enabled; returns `null` otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n constructor() {\n this._listeners = [];\n this._deferred = Promise.resolve();\n }\n\n postMessage(obj, transfers) {\n const event = {\n data: structuredClone(obj, transfers),\n };\n\n this._deferred.then(() => {\n for (const listener of this._listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n const i = this._listeners.indexOf(listener);\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners.length = 0;\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Object} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n * the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0,\n};\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // eslint-disable-next-line no-undef\n if (isNodeJS && typeof __non_webpack_require__ === \"function\") {\n // Workers aren't supported in Node.js, force-disabling them there.\n PDFWorkerUtil.isWorkerDisabled = true;\n\n PDFWorkerUtil.fallbackWorkerSrc = PDFJSDev.test(\"LIB\")\n ? \"../pdf.worker.js\"\n : \"./pdf.worker.js\";\n } else if (typeof document === \"object\") {\n const pdfjsFilePath = document?.currentScript?.src;\n if (pdfjsFilePath) {\n PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(\n /(\\.(?:min\\.)?js)(\\?.*)?$/i,\n \".worker$1$2\"\n );\n }\n }\n\n // Check if URLs have the same origin. For non-HTTP based URLs, returns false.\n PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n const wrapper = `importScripts(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n static #workerPorts = new WeakMap();\n\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel(),\n } = {}) {\n if (port && PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n\n this._readyCapability = createPromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n PDFWorker.#workerPorts.set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n\n /**\n * Promise for worker initialization completion.\n * @type {Promise}\n */\n get promise() {\n return this._readyCapability.promise;\n }\n\n /**\n * The current `workerPort`, when it exists.\n * @type {Worker}\n */\n get port() {\n return this._port;\n }\n\n /**\n * The current MessageHandler-instance.\n * @type {MessageHandler}\n */\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {\n // Ignoring \"ready\" event -- MessageHandler should already be initialized\n // and ready to accept messages.\n });\n this._readyCapability.resolve();\n }\n\n _initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if (\n !PDFWorkerUtil.isWorkerDisabled &&\n !PDFWorker._mainThreadWorkerMessageHandler\n ) {\n let { workerSrc } = PDFWorker;\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n !PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)\n ) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(\n new URL(workerSrc, window.location).href\n );\n }\n\n // Some versions of FF can't create a worker on localhost, see:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=683280\n const worker = new Worker(workerSrc);\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch (e) {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array();\n // Ensure that we can use `postMessage` transfers.\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n\n // It might take time for the worker to initialize. We will try to send\n // the \"test\" message immediately, and once the \"ready\" message arrives.\n // The worker shall process only the first received \"test\" message.\n sendTest();\n return;\n } catch (e) {\n info(\"The worker has been disabled.\");\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal\n .then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n })\n .catch(reason => {\n this._readyCapability.reject(\n new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n );\n });\n }\n\n /**\n * Destroys the worker instance.\n */\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n if (this.#workerPorts.has(params.port)) {\n return this.#workerPorts.get(params.port);\n }\n return new PDFWorker(params);\n }\n\n /**\n * The current `workerSrc`, when it exists.\n * @type {string}\n */\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n PDFWorkerUtil.fallbackWorkerSrc !== null\n ) {\n if (!isNodeJS) {\n deprecated('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n static get _mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch (ex) {\n return null;\n }\n }\n\n // Loads worker code into the main-thread.\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n\n if (mainWorkerMessageHandler) {\n // The worker was already loaded using e.g. a ` + + + + + + +
+ +
+
+
+
+ + + + +
+
+ +
+ +
+
+
+
+
+ + + +
+
+
+ +
+ + + + + + + + +
+
+
+
+ +
+ +
+ +
+ +
+ + +
+
+ + + + + + + + + Current View + + +
+ + + + + + + +
+
+
+ +
+ +
+ + + +
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + +
+ +
+ +
+ +
+
+ +
+
+ + +
+
+ +
+ File name: +

-

+
+
+ File size: +

-

+
+
+
+ Title: +

-

+
+
+ Author: +

-

+
+
+ Subject: +

-

+
+
+ Keywords: +

-

+
+
+ Creation Date: +

-

+
+
+ Modification Date: +

-

+
+
+ Creator: +

-

+
+
+
+ PDF Producer: +

-

+
+
+ PDF Version: +

-

+
+
+ Page Count: +

-

+
+
+ Page Size: +

-

+
+
+
+ Fast Web View: +

-

+
+
+ +
+
+ +
+ Preparing document for printing… +
+
+ + 0% +
+
+ +
+
+
+ +
+
+ + + + diff --git a/static/js/pdf-js/web/viewer.js b/static/js/pdf-js/web/viewer.js new file mode 100644 index 0000000..2790dd2 --- /dev/null +++ b/static/js/pdf-js/web/viewer.js @@ -0,0 +1,16550 @@ +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * Copyright 2022 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @licend The above is the entire license notice for the + * JavaScript code in this page + */ + +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.animationStarted = exports.VERTICAL_PADDING = exports.UNKNOWN_SCALE = exports.TextLayerMode = exports.SpreadMode = exports.SidebarView = exports.ScrollMode = exports.SCROLLBAR_PADDING = exports.RenderingStates = exports.RendererType = exports.ProgressBar = exports.PresentationModeState = exports.OutputScale = exports.MIN_SCALE = exports.MAX_SCALE = exports.MAX_AUTO_SCALE = exports.DEFAULT_SCALE_VALUE = exports.DEFAULT_SCALE_DELTA = exports.DEFAULT_SCALE = exports.AutoPrintRegExp = void 0; +exports.apiPageLayoutToViewerModes = apiPageLayoutToViewerModes; +exports.apiPageModeToSidebarView = apiPageModeToSidebarView; +exports.approximateFraction = approximateFraction; +exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements; +exports.binarySearchFirstItem = binarySearchFirstItem; +exports.docStyle = void 0; +exports.getActiveOrFocusedElement = getActiveOrFocusedElement; +exports.getPageSizeInches = getPageSizeInches; +exports.getVisibleElements = getVisibleElements; +exports.isPortraitOrientation = isPortraitOrientation; +exports.isValidRotation = isValidRotation; +exports.isValidScrollMode = isValidScrollMode; +exports.isValidSpreadMode = isValidSpreadMode; +exports.noContextMenuHandler = noContextMenuHandler; +exports.normalizeWheelEventDelta = normalizeWheelEventDelta; +exports.normalizeWheelEventDirection = normalizeWheelEventDirection; +exports.parseQueryString = parseQueryString; +exports.removeNullCharacters = removeNullCharacters; +exports.roundToDivide = roundToDivide; +exports.scrollIntoView = scrollIntoView; +exports.watchScroll = watchScroll; +const DEFAULT_SCALE_VALUE = "auto"; +exports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE; +const DEFAULT_SCALE = 1.0; +exports.DEFAULT_SCALE = DEFAULT_SCALE; +const DEFAULT_SCALE_DELTA = 1.1; +exports.DEFAULT_SCALE_DELTA = DEFAULT_SCALE_DELTA; +const MIN_SCALE = 0.1; +exports.MIN_SCALE = MIN_SCALE; +const MAX_SCALE = 10.0; +exports.MAX_SCALE = MAX_SCALE; +const UNKNOWN_SCALE = 0; +exports.UNKNOWN_SCALE = UNKNOWN_SCALE; +const MAX_AUTO_SCALE = 1.25; +exports.MAX_AUTO_SCALE = MAX_AUTO_SCALE; +const SCROLLBAR_PADDING = 40; +exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING; +const VERTICAL_PADDING = 5; +exports.VERTICAL_PADDING = VERTICAL_PADDING; +const RenderingStates = { + INITIAL: 0, + RUNNING: 1, + PAUSED: 2, + FINISHED: 3 +}; +exports.RenderingStates = RenderingStates; +const PresentationModeState = { + UNKNOWN: 0, + NORMAL: 1, + CHANGING: 2, + FULLSCREEN: 3 +}; +exports.PresentationModeState = PresentationModeState; +const SidebarView = { + UNKNOWN: -1, + NONE: 0, + THUMBS: 1, + OUTLINE: 2, + ATTACHMENTS: 3, + LAYERS: 4 +}; +exports.SidebarView = SidebarView; +const RendererType = { + CANVAS: "canvas", + SVG: "svg" +}; +exports.RendererType = RendererType; +const TextLayerMode = { + DISABLE: 0, + ENABLE: 1, + ENABLE_ENHANCE: 2 +}; +exports.TextLayerMode = TextLayerMode; +const ScrollMode = { + UNKNOWN: -1, + VERTICAL: 0, + HORIZONTAL: 1, + WRAPPED: 2, + PAGE: 3 +}; +exports.ScrollMode = ScrollMode; +const SpreadMode = { + UNKNOWN: -1, + NONE: 0, + ODD: 1, + EVEN: 2 +}; +exports.SpreadMode = SpreadMode; +const AutoPrintRegExp = /\bprint\s*\(/; +exports.AutoPrintRegExp = AutoPrintRegExp; + +class OutputScale { + constructor() { + const pixelRatio = window.devicePixelRatio || 1; + this.sx = pixelRatio; + this.sy = pixelRatio; + } + + get scaled() { + return this.sx !== 1 || this.sy !== 1; + } + +} + +exports.OutputScale = OutputScale; + +function scrollIntoView(element, spot, scrollMatches = false) { + let parent = element.offsetParent; + + if (!parent) { + console.error("offsetParent is not set -- cannot scroll"); + return; + } + + let offsetY = element.offsetTop + element.clientTop; + let offsetX = element.offsetLeft + element.clientLeft; + + while (parent.clientHeight === parent.scrollHeight && parent.clientWidth === parent.scrollWidth || scrollMatches && (parent.classList.contains("markedContent") || getComputedStyle(parent).overflow === "hidden")) { + offsetY += parent.offsetTop; + offsetX += parent.offsetLeft; + parent = parent.offsetParent; + + if (!parent) { + return; + } + } + + if (spot) { + if (spot.top !== undefined) { + offsetY += spot.top; + } + + if (spot.left !== undefined) { + offsetX += spot.left; + parent.scrollLeft = offsetX; + } + } + + parent.scrollTop = offsetY; +} + +function watchScroll(viewAreaElement, callback) { + const debounceScroll = function (evt) { + if (rAF) { + return; + } + + rAF = window.requestAnimationFrame(function viewAreaElementScrolled() { + rAF = null; + const currentX = viewAreaElement.scrollLeft; + const lastX = state.lastX; + + if (currentX !== lastX) { + state.right = currentX > lastX; + } + + state.lastX = currentX; + const currentY = viewAreaElement.scrollTop; + const lastY = state.lastY; + + if (currentY !== lastY) { + state.down = currentY > lastY; + } + + state.lastY = currentY; + callback(state); + }); + }; + + const state = { + right: true, + down: true, + lastX: viewAreaElement.scrollLeft, + lastY: viewAreaElement.scrollTop, + _eventHandler: debounceScroll + }; + let rAF = null; + viewAreaElement.addEventListener("scroll", debounceScroll, true); + return state; +} + +function parseQueryString(query) { + const params = new Map(); + + for (const [key, value] of new URLSearchParams(query)) { + params.set(key.toLowerCase(), value); + } + + return params; +} + +const NullCharactersRegExp = /\x00/g; +const InvisibleCharactersRegExp = /[\x01-\x1F]/g; + +function removeNullCharacters(str, replaceInvisible = false) { + if (typeof str !== "string") { + console.error(`The argument must be a string.`); + return str; + } + + if (replaceInvisible) { + str = str.replace(InvisibleCharactersRegExp, " "); + } + + return str.replace(NullCharactersRegExp, ""); +} + +function binarySearchFirstItem(items, condition, start = 0) { + let minIndex = start; + let maxIndex = items.length - 1; + + if (maxIndex < 0 || !condition(items[maxIndex])) { + return items.length; + } + + if (condition(items[minIndex])) { + return minIndex; + } + + while (minIndex < maxIndex) { + const currentIndex = minIndex + maxIndex >> 1; + const currentItem = items[currentIndex]; + + if (condition(currentItem)) { + maxIndex = currentIndex; + } else { + minIndex = currentIndex + 1; + } + } + + return minIndex; +} + +function approximateFraction(x) { + if (Math.floor(x) === x) { + return [x, 1]; + } + + const xinv = 1 / x; + const limit = 8; + + if (xinv > limit) { + return [1, limit]; + } else if (Math.floor(xinv) === xinv) { + return [1, xinv]; + } + + const x_ = x > 1 ? xinv : x; + let a = 0, + b = 1, + c = 1, + d = 1; + + while (true) { + const p = a + c, + q = b + d; + + if (q > limit) { + break; + } + + if (x_ <= p / q) { + c = p; + d = q; + } else { + a = p; + b = q; + } + } + + let result; + + if (x_ - a / b < c / d - x_) { + result = x_ === x ? [a, b] : [b, a]; + } else { + result = x_ === x ? [c, d] : [d, c]; + } + + return result; +} + +function roundToDivide(x, div) { + const r = x % div; + return r === 0 ? x : Math.round(x - r + div); +} + +function getPageSizeInches({ + view, + userUnit, + rotate +}) { + const [x1, y1, x2, y2] = view; + const changeOrientation = rotate % 180 !== 0; + const width = (x2 - x1) / 72 * userUnit; + const height = (y2 - y1) / 72 * userUnit; + return { + width: changeOrientation ? height : width, + height: changeOrientation ? width : height + }; +} + +function backtrackBeforeAllVisibleElements(index, views, top) { + if (index < 2) { + return index; + } + + let elt = views[index].div; + let pageTop = elt.offsetTop + elt.clientTop; + + if (pageTop >= top) { + elt = views[index - 1].div; + pageTop = elt.offsetTop + elt.clientTop; + } + + for (let i = index - 2; i >= 0; --i) { + elt = views[i].div; + + if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) { + break; + } + + index = i; + } + + return index; +} + +function getVisibleElements({ + scrollEl, + views, + sortByVisibility = false, + horizontal = false, + rtl = false +}) { + const top = scrollEl.scrollTop, + bottom = top + scrollEl.clientHeight; + const left = scrollEl.scrollLeft, + right = left + scrollEl.clientWidth; + + function isElementBottomAfterViewTop(view) { + const element = view.div; + const elementBottom = element.offsetTop + element.clientTop + element.clientHeight; + return elementBottom > top; + } + + function isElementNextAfterViewHorizontally(view) { + const element = view.div; + const elementLeft = element.offsetLeft + element.clientLeft; + const elementRight = elementLeft + element.clientWidth; + return rtl ? elementLeft < right : elementRight > left; + } + + const visible = [], + ids = new Set(), + numViews = views.length; + let firstVisibleElementInd = binarySearchFirstItem(views, horizontal ? isElementNextAfterViewHorizontally : isElementBottomAfterViewTop); + + if (firstVisibleElementInd > 0 && firstVisibleElementInd < numViews && !horizontal) { + firstVisibleElementInd = backtrackBeforeAllVisibleElements(firstVisibleElementInd, views, top); + } + + let lastEdge = horizontal ? right : -1; + + for (let i = firstVisibleElementInd; i < numViews; i++) { + const view = views[i], + element = view.div; + const currentWidth = element.offsetLeft + element.clientLeft; + const currentHeight = element.offsetTop + element.clientTop; + const viewWidth = element.clientWidth, + viewHeight = element.clientHeight; + const viewRight = currentWidth + viewWidth; + const viewBottom = currentHeight + viewHeight; + + if (lastEdge === -1) { + if (viewBottom >= bottom) { + lastEdge = viewBottom; + } + } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) { + break; + } + + if (viewBottom <= top || currentHeight >= bottom || viewRight <= left || currentWidth >= right) { + continue; + } + + const hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom); + const hiddenWidth = Math.max(0, left - currentWidth) + Math.max(0, viewRight - right); + const fractionHeight = (viewHeight - hiddenHeight) / viewHeight, + fractionWidth = (viewWidth - hiddenWidth) / viewWidth; + const percent = fractionHeight * fractionWidth * 100 | 0; + visible.push({ + id: view.id, + x: currentWidth, + y: currentHeight, + view, + percent, + widthPercent: fractionWidth * 100 | 0 + }); + ids.add(view.id); + } + + const first = visible[0], + last = visible.at(-1); + + if (sortByVisibility) { + visible.sort(function (a, b) { + const pc = a.percent - b.percent; + + if (Math.abs(pc) > 0.001) { + return -pc; + } + + return a.id - b.id; + }); + } + + return { + first, + last, + views: visible, + ids + }; +} + +function noContextMenuHandler(evt) { + evt.preventDefault(); +} + +function normalizeWheelEventDirection(evt) { + let delta = Math.hypot(evt.deltaX, evt.deltaY); + const angle = Math.atan2(evt.deltaY, evt.deltaX); + + if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) { + delta = -delta; + } + + return delta; +} + +function normalizeWheelEventDelta(evt) { + 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) { + delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE; + } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) { + delta /= MOUSE_LINES_PER_PAGE; + } + + return delta; +} + +function isValidRotation(angle) { + return Number.isInteger(angle) && angle % 90 === 0; +} + +function isValidScrollMode(mode) { + return Number.isInteger(mode) && Object.values(ScrollMode).includes(mode) && mode !== ScrollMode.UNKNOWN; +} + +function isValidSpreadMode(mode) { + return Number.isInteger(mode) && Object.values(SpreadMode).includes(mode) && mode !== SpreadMode.UNKNOWN; +} + +function isPortraitOrientation(size) { + return size.width <= size.height; +} + +const animationStarted = new Promise(function (resolve) { + window.requestAnimationFrame(resolve); +}); +exports.animationStarted = animationStarted; +const docStyle = document.documentElement.style; +exports.docStyle = docStyle; + +function clamp(v, min, max) { + return Math.min(Math.max(v, min), max); +} + +class ProgressBar { + #classList = null; + #percent = 0; + #visible = true; + + constructor(id) { + if (arguments.length > 1) { + throw new Error("ProgressBar no longer accepts any additional options, " + "please use CSS rules to modify its appearance instead."); + } + + const bar = document.getElementById(id); + this.#classList = bar.classList; + } + + get percent() { + return this.#percent; + } + + set percent(val) { + this.#percent = clamp(val, 0, 100); + + if (isNaN(val)) { + this.#classList.add("indeterminate"); + return; + } + + this.#classList.remove("indeterminate"); + docStyle.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`); + } + } + + hide() { + if (!this.#visible) { + return; + } + + this.#visible = false; + this.#classList.add("hidden"); + } + + show() { + if (this.#visible) { + return; + } + + this.#visible = true; + this.#classList.remove("hidden"); + } + +} + +exports.ProgressBar = ProgressBar; + +function getActiveOrFocusedElement() { + let curRoot = document; + let curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus"); + + while (curActiveOrFocused?.shadowRoot) { + curRoot = curActiveOrFocused.shadowRoot; + curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus"); + } + + return curActiveOrFocused; +} + +function apiPageLayoutToViewerModes(layout) { + let scrollMode = ScrollMode.VERTICAL, + spreadMode = SpreadMode.NONE; + + switch (layout) { + case "SinglePage": + scrollMode = ScrollMode.PAGE; + break; + + case "OneColumn": + break; + + case "TwoPageLeft": + scrollMode = ScrollMode.PAGE; + + case "TwoColumnLeft": + spreadMode = SpreadMode.ODD; + break; + + case "TwoPageRight": + scrollMode = ScrollMode.PAGE; + + case "TwoColumnRight": + spreadMode = SpreadMode.EVEN; + break; + } + + return { + scrollMode, + spreadMode + }; +} + +function apiPageModeToSidebarView(mode) { + switch (mode) { + case "UseNone": + return SidebarView.NONE; + + case "UseThumbs": + return SidebarView.THUMBS; + + case "UseOutlines": + return SidebarView.OUTLINE; + + case "UseAttachments": + return SidebarView.ATTACHMENTS; + + case "UseOC": + return SidebarView.LAYERS; + } + + return SidebarView.NONE; +} + +/***/ }), +/* 2 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.compatibilityParams = exports.OptionKind = exports.AppOptions = void 0; +const compatibilityParams = Object.create(null); +exports.compatibilityParams = compatibilityParams; +{ + const userAgent = navigator.userAgent || ""; + const platform = navigator.platform || ""; + const maxTouchPoints = navigator.maxTouchPoints || 1; + const isAndroid = /Android/.test(userAgent); + const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || platform === "MacIntel" && maxTouchPoints > 1; + + (function checkCanvasSizeLimitation() { + if (isIOS || isAndroid) { + compatibilityParams.maxCanvasPixels = 5242880; + } + })(); +} +const OptionKind = { + VIEWER: 0x02, + API: 0x04, + WORKER: 0x08, + PREFERENCE: 0x80 +}; +exports.OptionKind = OptionKind; +const defaultOptions = { + annotationEditorMode: { + value: -1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + annotationMode: { + value: 2, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + cursorToolOnLoad: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + defaultZoomValue: { + value: "", + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + disableHistory: { + value: false, + kind: OptionKind.VIEWER + }, + disablePageLabels: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + enablePermissions: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + enablePrintAutoRotate: { + value: true, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + enableScripting: { + value: true, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + externalLinkRel: { + value: "noopener noreferrer nofollow", + kind: OptionKind.VIEWER + }, + externalLinkTarget: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + historyUpdateUrl: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + ignoreDestinationZoom: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + imageResourcesPath: { + value: "./images/", + kind: OptionKind.VIEWER + }, + maxCanvasPixels: { + value: 16777216, + kind: OptionKind.VIEWER + }, + forcePageColors: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + pageColorsBackground: { + value: "Canvas", + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + pageColorsForeground: { + value: "CanvasText", + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + pdfBugEnabled: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + printResolution: { + value: 150, + kind: OptionKind.VIEWER + }, + sidebarViewOnLoad: { + value: -1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + scrollModeOnLoad: { + value: -1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + spreadModeOnLoad: { + value: -1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + textLayerMode: { + value: 1, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + useOnlyCssZoom: { + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + viewerCssTheme: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + viewOnLoad: { + value: 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }, + cMapPacked: { + value: true, + kind: OptionKind.API + }, + cMapUrl: { + value: "../web/cmaps/", + kind: OptionKind.API + }, + disableAutoFetch: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + disableFontFace: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + disableRange: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + disableStream: { + value: false, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + docBaseUrl: { + value: "", + kind: OptionKind.API + }, + enableXfa: { + value: true, + kind: OptionKind.API + OptionKind.PREFERENCE + }, + fontExtraProperties: { + value: false, + kind: OptionKind.API + }, + isEvalSupported: { + value: true, + kind: OptionKind.API + }, + maxImageSize: { + value: -1, + kind: OptionKind.API + }, + pdfBug: { + value: false, + kind: OptionKind.API + }, + standardFontDataUrl: { + value: "../web/standard_fonts/", + kind: OptionKind.API + }, + verbosity: { + value: 1, + kind: OptionKind.API + }, + workerPort: { + value: null, + kind: OptionKind.WORKER + }, + workerSrc: { + value: "../build/pdf.worker.js", + kind: OptionKind.WORKER + } +}; +{ + defaultOptions.defaultUrl = { + value: "compressed.tracemonkey-pldi-09.pdf", + kind: OptionKind.VIEWER + }; + defaultOptions.disablePreferences = { + value: false, + kind: OptionKind.VIEWER + }; + defaultOptions.locale = { + value: navigator.language || "en-US", + kind: OptionKind.VIEWER + }; + defaultOptions.renderer = { + value: "canvas", + kind: OptionKind.VIEWER + OptionKind.PREFERENCE + }; + defaultOptions.sandboxBundleSrc = { + value: "../build/pdf.sandbox.js", + kind: OptionKind.VIEWER + }; +} +const userOptions = Object.create(null); + +class AppOptions { + constructor() { + throw new Error("Cannot initialize AppOptions."); + } + + static get(name) { + const userOption = userOptions[name]; + + if (userOption !== undefined) { + return userOption; + } + + const defaultOption = defaultOptions[name]; + + if (defaultOption !== undefined) { + return compatibilityParams[name] ?? defaultOption.value; + } + + return undefined; + } + + static getAll(kind = null) { + const options = Object.create(null); + + for (const name in defaultOptions) { + const defaultOption = defaultOptions[name]; + + if (kind) { + if ((kind & defaultOption.kind) === 0) { + continue; + } + + if (kind === OptionKind.PREFERENCE) { + const value = defaultOption.value, + valueType = typeof value; + + if (valueType === "boolean" || valueType === "string" || valueType === "number" && Number.isInteger(value)) { + options[name] = value; + continue; + } + + throw new Error(`Invalid type for preference: ${name}`); + } + } + + const userOption = userOptions[name]; + options[name] = userOption !== undefined ? userOption : compatibilityParams[name] ?? defaultOption.value; + } + + return options; + } + + static set(name, value) { + userOptions[name] = value; + } + + static setAll(options) { + for (const name in options) { + userOptions[name] = options[name]; + } + } + + static remove(name) { + delete userOptions[name]; + } + + static _hasUserOptions() { + return Object.keys(userOptions).length > 0; + } + +} + +exports.AppOptions = AppOptions; + +/***/ }), +/* 3 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SimpleLinkService = exports.PDFLinkService = exports.LinkTarget = void 0; + +var _ui_utils = __webpack_require__(1); + +const DEFAULT_LINK_REL = "noopener noreferrer nofollow"; +const LinkTarget = { + NONE: 0, + SELF: 1, + BLANK: 2, + PARENT: 3, + TOP: 4 +}; +exports.LinkTarget = LinkTarget; + +function addLinkAttributes(link, { + url, + target, + rel, + enabled = true +} = {}) { + if (!url || typeof url !== "string") { + throw new Error('A valid "url" parameter must provided.'); + } + + const urlNullRemoved = (0, _ui_utils.removeNullCharacters)(url); + + if (enabled) { + link.href = link.title = urlNullRemoved; + } else { + link.href = ""; + link.title = `Disabled: ${urlNullRemoved}`; + + link.onclick = () => { + return false; + }; + } + + let targetStr = ""; + + switch (target) { + case LinkTarget.NONE: + break; + + case LinkTarget.SELF: + targetStr = "_self"; + break; + + case LinkTarget.BLANK: + targetStr = "_blank"; + break; + + case LinkTarget.PARENT: + targetStr = "_parent"; + break; + + case LinkTarget.TOP: + targetStr = "_top"; + break; + } + + link.target = targetStr; + link.rel = typeof rel === "string" ? rel : DEFAULT_LINK_REL; +} + +class PDFLinkService { + #pagesRefCache = new Map(); + + constructor({ + eventBus, + externalLinkTarget = null, + externalLinkRel = null, + ignoreDestinationZoom = false + } = {}) { + this.eventBus = eventBus; + this.externalLinkTarget = externalLinkTarget; + this.externalLinkRel = externalLinkRel; + this.externalLinkEnabled = true; + this._ignoreDestinationZoom = ignoreDestinationZoom; + this.baseUrl = null; + this.pdfDocument = null; + this.pdfViewer = null; + this.pdfHistory = null; + } + + setDocument(pdfDocument, baseUrl = null) { + this.baseUrl = baseUrl; + this.pdfDocument = pdfDocument; + this.#pagesRefCache.clear(); + } + + setViewer(pdfViewer) { + this.pdfViewer = pdfViewer; + } + + setHistory(pdfHistory) { + this.pdfHistory = pdfHistory; + } + + get pagesCount() { + return this.pdfDocument ? this.pdfDocument.numPages : 0; + } + + get page() { + return this.pdfViewer.currentPageNumber; + } + + set page(value) { + this.pdfViewer.currentPageNumber = value; + } + + get rotation() { + return this.pdfViewer.pagesRotation; + } + + set rotation(value) { + this.pdfViewer.pagesRotation = value; + } + + #goToDestinationHelper(rawDest, namedDest = null, explicitDest) { + const destRef = explicitDest[0]; + let pageNumber; + + if (typeof destRef === "object" && destRef !== null) { + pageNumber = this._cachedPageNumber(destRef); + + if (!pageNumber) { + this.pdfDocument.getPageIndex(destRef).then(pageIndex => { + this.cachePageRef(pageIndex + 1, destRef); + this.#goToDestinationHelper(rawDest, namedDest, explicitDest); + }).catch(() => { + console.error(`PDFLinkService.#goToDestinationHelper: "${destRef}" is not ` + `a valid page reference, for dest="${rawDest}".`); + }); + return; + } + } else if (Number.isInteger(destRef)) { + pageNumber = destRef + 1; + } else { + console.error(`PDFLinkService.#goToDestinationHelper: "${destRef}" is not ` + `a valid destination reference, for dest="${rawDest}".`); + return; + } + + if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) { + console.error(`PDFLinkService.#goToDestinationHelper: "${pageNumber}" is not ` + `a valid page number, for dest="${rawDest}".`); + return; + } + + if (this.pdfHistory) { + this.pdfHistory.pushCurrentPosition(); + this.pdfHistory.push({ + namedDest, + explicitDest, + pageNumber + }); + } + + this.pdfViewer.scrollPageIntoView({ + pageNumber, + destArray: explicitDest, + ignoreDestinationZoom: this._ignoreDestinationZoom + }); + } + + async goToDestination(dest) { + if (!this.pdfDocument) { + return; + } + + let namedDest, explicitDest; + + if (typeof dest === "string") { + namedDest = dest; + explicitDest = await this.pdfDocument.getDestination(dest); + } else { + namedDest = null; + explicitDest = await dest; + } + + if (!Array.isArray(explicitDest)) { + console.error(`PDFLinkService.goToDestination: "${explicitDest}" is not ` + `a valid destination array, for dest="${dest}".`); + return; + } + + this.#goToDestinationHelper(dest, namedDest, explicitDest); + } + + goToPage(val) { + if (!this.pdfDocument) { + return; + } + + const pageNumber = typeof val === "string" && this.pdfViewer.pageLabelToPageNumber(val) || val | 0; + + if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { + console.error(`PDFLinkService.goToPage: "${val}" is not a valid page.`); + return; + } + + if (this.pdfHistory) { + this.pdfHistory.pushCurrentPosition(); + this.pdfHistory.pushPage(pageNumber); + } + + this.pdfViewer.scrollPageIntoView({ + pageNumber + }); + } + + addLinkAttributes(link, url, newWindow = false) { + addLinkAttributes(link, { + url, + target: newWindow ? LinkTarget.BLANK : this.externalLinkTarget, + rel: this.externalLinkRel, + enabled: this.externalLinkEnabled + }); + } + + getDestinationHash(dest) { + if (typeof dest === "string") { + if (dest.length > 0) { + return this.getAnchorUrl("#" + escape(dest)); + } + } else if (Array.isArray(dest)) { + const str = JSON.stringify(dest); + + if (str.length > 0) { + return this.getAnchorUrl("#" + escape(str)); + } + } + + return this.getAnchorUrl(""); + } + + getAnchorUrl(anchor) { + return (this.baseUrl || "") + anchor; + } + + setHash(hash) { + if (!this.pdfDocument) { + return; + } + + let pageNumber, dest; + + if (hash.includes("=")) { + const params = (0, _ui_utils.parseQueryString)(hash); + + if (params.has("search")) { + this.eventBus.dispatch("findfromurlhash", { + source: this, + query: params.get("search").replace(/"/g, ""), + phraseSearch: params.get("phrase") === "true" + }); + } + + if (params.has("page")) { + pageNumber = params.get("page") | 0 || 1; + } + + if (params.has("zoom")) { + const zoomArgs = params.get("zoom").split(","); + const zoomArg = zoomArgs[0]; + const zoomArgNumber = parseFloat(zoomArg); + + if (!zoomArg.includes("Fit")) { + dest = [null, { + name: "XYZ" + }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg]; + } else { + if (zoomArg === "Fit" || zoomArg === "FitB") { + dest = [null, { + name: zoomArg + }]; + } else if (zoomArg === "FitH" || zoomArg === "FitBH" || zoomArg === "FitV" || zoomArg === "FitBV") { + dest = [null, { + name: zoomArg + }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null]; + } else if (zoomArg === "FitR") { + if (zoomArgs.length !== 5) { + console.error('PDFLinkService.setHash: Not enough parameters for "FitR".'); + } else { + dest = [null, { + name: zoomArg + }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0]; + } + } else { + console.error(`PDFLinkService.setHash: "${zoomArg}" is not a valid zoom value.`); + } + } + } + + if (dest) { + this.pdfViewer.scrollPageIntoView({ + pageNumber: pageNumber || this.page, + destArray: dest, + allowNegativeOffset: true + }); + } else if (pageNumber) { + this.page = pageNumber; + } + + if (params.has("pagemode")) { + this.eventBus.dispatch("pagemode", { + source: this, + mode: params.get("pagemode") + }); + } + + if (params.has("nameddest")) { + this.goToDestination(params.get("nameddest")); + } + } else { + dest = unescape(hash); + + try { + dest = JSON.parse(dest); + + if (!Array.isArray(dest)) { + dest = dest.toString(); + } + } catch (ex) {} + + if (typeof dest === "string" || PDFLinkService.#isValidExplicitDestination(dest)) { + this.goToDestination(dest); + return; + } + + console.error(`PDFLinkService.setHash: "${unescape(hash)}" is not a valid destination.`); + } + } + + executeNamedAction(action) { + switch (action) { + case "GoBack": + this.pdfHistory?.back(); + break; + + case "GoForward": + this.pdfHistory?.forward(); + break; + + case "NextPage": + this.pdfViewer.nextPage(); + break; + + case "PrevPage": + this.pdfViewer.previousPage(); + break; + + case "LastPage": + this.page = this.pagesCount; + break; + + case "FirstPage": + this.page = 1; + break; + + default: + break; + } + + this.eventBus.dispatch("namedaction", { + source: this, + action + }); + } + + cachePageRef(pageNum, pageRef) { + if (!pageRef) { + return; + } + + const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`; + this.#pagesRefCache.set(refStr, pageNum); + } + + _cachedPageNumber(pageRef) { + if (!pageRef) { + return null; + } + + const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`; + return this.#pagesRefCache.get(refStr) || null; + } + + isPageVisible(pageNumber) { + return this.pdfViewer.isPageVisible(pageNumber); + } + + isPageCached(pageNumber) { + return this.pdfViewer.isPageCached(pageNumber); + } + + static #isValidExplicitDestination(dest) { + if (!Array.isArray(dest)) { + return false; + } + + const destLength = dest.length; + + if (destLength < 2) { + return false; + } + + const page = dest[0]; + + if (!(typeof page === "object" && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) { + return false; + } + + const zoom = dest[1]; + + if (!(typeof zoom === "object" && typeof zoom.name === "string")) { + return false; + } + + let allowNull = true; + + switch (zoom.name) { + case "XYZ": + if (destLength !== 5) { + return false; + } + + break; + + case "Fit": + case "FitB": + return destLength === 2; + + case "FitH": + case "FitBH": + case "FitV": + case "FitBV": + if (destLength !== 3) { + return false; + } + + break; + + case "FitR": + if (destLength !== 6) { + return false; + } + + allowNull = false; + break; + + default: + return false; + } + + for (let i = 2; i < destLength; i++) { + const param = dest[i]; + + if (!(typeof param === "number" || allowNull && param === null)) { + return false; + } + } + + return true; + } + +} + +exports.PDFLinkService = PDFLinkService; + +class SimpleLinkService { + constructor() { + this.externalLinkEnabled = true; + } + + get pagesCount() { + return 0; + } + + get page() { + return 0; + } + + set page(value) {} + + get rotation() { + return 0; + } + + set rotation(value) {} + + async goToDestination(dest) {} + + goToPage(val) {} + + addLinkAttributes(link, url, newWindow = false) { + addLinkAttributes(link, { + url, + enabled: this.externalLinkEnabled + }); + } + + getDestinationHash(dest) { + return "#"; + } + + getAnchorUrl(hash) { + return "#"; + } + + setHash(hash) {} + + executeNamedAction(action) {} + + cachePageRef(pageNum, pageRef) {} + + isPageVisible(pageNumber) { + return true; + } + + isPageCached(pageNumber) { + return true; + } + +} + +exports.SimpleLinkService = SimpleLinkService; + +/***/ }), +/* 4 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFViewerApplication = exports.PDFPrintServiceFactory = exports.DefaultExternalServices = void 0; + +var _ui_utils = __webpack_require__(1); + +var _pdfjsLib = __webpack_require__(5); + +var _app_options = __webpack_require__(2); + +var _event_utils = __webpack_require__(6); + +var _pdf_cursor_tools = __webpack_require__(7); + +var _pdf_link_service = __webpack_require__(3); + +var _annotation_editor_params = __webpack_require__(9); + +var _overlay_manager = __webpack_require__(10); + +var _password_prompt = __webpack_require__(11); + +var _pdf_attachment_viewer = __webpack_require__(12); + +var _pdf_document_properties = __webpack_require__(14); + +var _pdf_find_bar = __webpack_require__(15); + +var _pdf_find_controller = __webpack_require__(16); + +var _pdf_history = __webpack_require__(18); + +var _pdf_layer_viewer = __webpack_require__(19); + +var _pdf_outline_viewer = __webpack_require__(20); + +var _pdf_presentation_mode = __webpack_require__(21); + +var _pdf_rendering_queue = __webpack_require__(22); + +var _pdf_scripting_manager = __webpack_require__(23); + +var _pdf_sidebar = __webpack_require__(24); + +var _pdf_sidebar_resizer = __webpack_require__(25); + +var _pdf_thumbnail_viewer = __webpack_require__(26); + +var _pdf_viewer = __webpack_require__(28); + +var _secondary_toolbar = __webpack_require__(39); + +var _toolbar = __webpack_require__(40); + +var _view_history = __webpack_require__(41); + +const DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; +const FORCE_PAGES_LOADED_TIMEOUT = 10000; +const WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; +const ViewOnLoad = { + UNKNOWN: -1, + PREVIOUS: 0, + INITIAL: 1 +}; +const ViewerCssTheme = { + AUTOMATIC: 0, + LIGHT: 1, + DARK: 2 +}; +const KNOWN_VERSIONS = ["1.0", "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "2.0", "2.1", "2.2", "2.3"]; +const KNOWN_GENERATORS = ["acrobat distiller", "acrobat pdfwriter", "adobe livecycle", "adobe pdf library", "adobe photoshop", "ghostscript", "tcpdf", "cairo", "dvipdfm", "dvips", "pdftex", "pdfkit", "itext", "prince", "quarkxpress", "mac os x", "microsoft", "openoffice", "oracle", "luradocument", "pdf-xchange", "antenna house", "aspose.cells", "fpdf"]; + +class DefaultExternalServices { + constructor() { + throw new Error("Cannot initialize DefaultExternalServices."); + } + + static updateFindControlState(data) {} + + static updateFindMatchesCount(data) {} + + static initPassiveLoading(callbacks) {} + + static reportTelemetry(data) {} + + static createDownloadManager(options) { + throw new Error("Not implemented: createDownloadManager"); + } + + static createPreferences() { + throw new Error("Not implemented: createPreferences"); + } + + static createL10n(options) { + throw new Error("Not implemented: createL10n"); + } + + static createScripting(options) { + throw new Error("Not implemented: createScripting"); + } + + static get supportsIntegratedFind() { + return (0, _pdfjsLib.shadow)(this, "supportsIntegratedFind", false); + } + + static get supportsDocumentFonts() { + return (0, _pdfjsLib.shadow)(this, "supportsDocumentFonts", true); + } + + static get supportedMouseWheelZoomModifierKeys() { + return (0, _pdfjsLib.shadow)(this, "supportedMouseWheelZoomModifierKeys", { + ctrlKey: true, + metaKey: true + }); + } + + static get isInAutomation() { + return (0, _pdfjsLib.shadow)(this, "isInAutomation", false); + } + + static updateEditorStates(data) { + throw new Error("Not implemented: updateEditorStates"); + } + +} + +exports.DefaultExternalServices = DefaultExternalServices; +const PDFViewerApplication = { + initialBookmark: document.location.hash.substring(1), + _initializedCapability: (0, _pdfjsLib.createPromiseCapability)(), + appConfig: null, + pdfDocument: null, + pdfLoadingTask: null, + printService: null, + pdfViewer: null, + pdfThumbnailViewer: null, + pdfRenderingQueue: null, + pdfPresentationMode: null, + pdfDocumentProperties: null, + pdfLinkService: null, + pdfHistory: null, + pdfSidebar: null, + pdfSidebarResizer: null, + pdfOutlineViewer: null, + pdfAttachmentViewer: null, + pdfLayerViewer: null, + pdfCursorTools: null, + pdfScriptingManager: null, + store: null, + downloadManager: null, + overlayManager: null, + preferences: null, + toolbar: null, + secondaryToolbar: null, + eventBus: null, + l10n: null, + annotationEditorParams: null, + isInitialViewSet: false, + downloadComplete: false, + isViewerEmbedded: window.parent !== window, + url: "", + baseUrl: "", + _downloadUrl: "", + externalServices: DefaultExternalServices, + _boundEvents: Object.create(null), + documentInfo: null, + metadata: null, + _contentDispositionFilename: null, + _contentLength: null, + _saveInProgress: false, + _docStats: null, + _wheelUnusedTicks: 0, + _idleCallbacks: new Set(), + _PDFBug: null, + _hasAnnotationEditors: false, + _title: document.title, + _printAnnotationStoragePromise: null, + + async initialize(appConfig) { + this.preferences = this.externalServices.createPreferences(); + this.appConfig = appConfig; + await this._readPreferences(); + await this._parseHashParameters(); + + this._forceCssTheme(); + + await this._initializeL10n(); + + if (this.isViewerEmbedded && _app_options.AppOptions.get("externalLinkTarget") === _pdf_link_service.LinkTarget.NONE) { + _app_options.AppOptions.set("externalLinkTarget", _pdf_link_service.LinkTarget.TOP); + } + + await this._initializeViewerComponents(); + this.bindEvents(); + this.bindWindowEvents(); + const appContainer = appConfig.appContainer || document.documentElement; + this.l10n.translate(appContainer).then(() => { + this.eventBus.dispatch("localized", { + source: this + }); + }); + + this._initializedCapability.resolve(); + }, + + async _readPreferences() { + if (_app_options.AppOptions.get("disablePreferences")) { + return; + } + + if (_app_options.AppOptions._hasUserOptions()) { + console.warn("_readPreferences: The Preferences may override manually set AppOptions; " + 'please use the "disablePreferences"-option in order to prevent that.'); + } + + try { + _app_options.AppOptions.setAll(await this.preferences.getAll()); + } catch (reason) { + console.error(`_readPreferences: "${reason?.message}".`); + } + }, + + async _parseHashParameters() { + if (!_app_options.AppOptions.get("pdfBugEnabled")) { + return; + } + + const hash = document.location.hash.substring(1); + + if (!hash) { + return; + } + + const { + mainContainer, + viewerContainer + } = this.appConfig, + params = (0, _ui_utils.parseQueryString)(hash); + + if (params.get("disableworker") === "true") { + try { + await loadFakeWorker(); + } catch (ex) { + console.error(`_parseHashParameters: "${ex.message}".`); + } + } + + if (params.has("disablerange")) { + _app_options.AppOptions.set("disableRange", params.get("disablerange") === "true"); + } + + if (params.has("disablestream")) { + _app_options.AppOptions.set("disableStream", params.get("disablestream") === "true"); + } + + if (params.has("disableautofetch")) { + _app_options.AppOptions.set("disableAutoFetch", params.get("disableautofetch") === "true"); + } + + if (params.has("disablefontface")) { + _app_options.AppOptions.set("disableFontFace", params.get("disablefontface") === "true"); + } + + if (params.has("disablehistory")) { + _app_options.AppOptions.set("disableHistory", params.get("disablehistory") === "true"); + } + + if (params.has("verbosity")) { + _app_options.AppOptions.set("verbosity", params.get("verbosity") | 0); + } + + if (params.has("textlayer")) { + switch (params.get("textlayer")) { + case "off": + _app_options.AppOptions.set("textLayerMode", _ui_utils.TextLayerMode.DISABLE); + + break; + + case "visible": + case "shadow": + case "hover": + viewerContainer.classList.add(`textLayer-${params.get("textlayer")}`); + + try { + await loadPDFBug(this); + + this._PDFBug.loadCSS(); + } catch (ex) { + console.error(`_parseHashParameters: "${ex.message}".`); + } + + break; + } + } + + if (params.has("pdfbug")) { + _app_options.AppOptions.set("pdfBug", true); + + _app_options.AppOptions.set("fontExtraProperties", true); + + const enabled = params.get("pdfbug").split(","); + + try { + await loadPDFBug(this); + + this._PDFBug.init({ + OPS: _pdfjsLib.OPS + }, mainContainer, enabled); + } catch (ex) { + console.error(`_parseHashParameters: "${ex.message}".`); + } + } + + if (params.has("locale")) { + _app_options.AppOptions.set("locale", params.get("locale")); + } + }, + + async _initializeL10n() { + this.l10n = this.externalServices.createL10n({ + locale: _app_options.AppOptions.get("locale") + }); + const dir = await this.l10n.getDirection(); + document.getElementsByTagName("html")[0].dir = dir; + }, + + _forceCssTheme() { + const cssTheme = _app_options.AppOptions.get("viewerCssTheme"); + + if (cssTheme === ViewerCssTheme.AUTOMATIC || !Object.values(ViewerCssTheme).includes(cssTheme)) { + return; + } + + try { + const styleSheet = document.styleSheets[0]; + const cssRules = styleSheet?.cssRules || []; + + for (let i = 0, ii = cssRules.length; i < ii; i++) { + const rule = cssRules[i]; + + if (rule instanceof CSSMediaRule && rule.media?.[0] === "(prefers-color-scheme: dark)") { + if (cssTheme === ViewerCssTheme.LIGHT) { + styleSheet.deleteRule(i); + return; + } + + const darkRules = /^@media \(prefers-color-scheme: dark\) {\n\s*([\w\s-.,:;/\\{}()]+)\n}$/.exec(rule.cssText); + + if (darkRules?.[1]) { + styleSheet.deleteRule(i); + styleSheet.insertRule(darkRules[1], i); + } + + return; + } + } + } catch (reason) { + console.error(`_forceCssTheme: "${reason?.message}".`); + } + }, + + async _initializeViewerComponents() { + const { + appConfig, + externalServices + } = this; + const eventBus = externalServices.isInAutomation ? new _event_utils.AutomationEventBus() : new _event_utils.EventBus(); + this.eventBus = eventBus; + this.overlayManager = new _overlay_manager.OverlayManager(); + const pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); + pdfRenderingQueue.onIdle = this._cleanup.bind(this); + this.pdfRenderingQueue = pdfRenderingQueue; + const pdfLinkService = new _pdf_link_service.PDFLinkService({ + eventBus, + externalLinkTarget: _app_options.AppOptions.get("externalLinkTarget"), + externalLinkRel: _app_options.AppOptions.get("externalLinkRel"), + ignoreDestinationZoom: _app_options.AppOptions.get("ignoreDestinationZoom") + }); + this.pdfLinkService = pdfLinkService; + const downloadManager = externalServices.createDownloadManager(); + this.downloadManager = downloadManager; + const findController = new _pdf_find_controller.PDFFindController({ + linkService: pdfLinkService, + eventBus + }); + this.findController = findController; + const pdfScriptingManager = new _pdf_scripting_manager.PDFScriptingManager({ + eventBus, + sandboxBundleSrc: _app_options.AppOptions.get("sandboxBundleSrc"), + scriptingFactory: externalServices, + docPropertiesLookup: this._scriptingDocProperties.bind(this) + }); + this.pdfScriptingManager = pdfScriptingManager; + const container = appConfig.mainContainer, + viewer = appConfig.viewerContainer; + + const annotationEditorMode = _app_options.AppOptions.get("annotationEditorMode"); + + const pageColors = _app_options.AppOptions.get("forcePageColors") || window.matchMedia("(forced-colors: active)").matches ? { + background: _app_options.AppOptions.get("pageColorsBackground"), + foreground: _app_options.AppOptions.get("pageColorsForeground") + } : null; + this.pdfViewer = new _pdf_viewer.PDFViewer({ + container, + viewer, + eventBus, + renderingQueue: pdfRenderingQueue, + linkService: pdfLinkService, + downloadManager, + findController, + scriptingManager: _app_options.AppOptions.get("enableScripting") && pdfScriptingManager, + renderer: _app_options.AppOptions.get("renderer"), + l10n: this.l10n, + textLayerMode: _app_options.AppOptions.get("textLayerMode"), + annotationMode: _app_options.AppOptions.get("annotationMode"), + annotationEditorMode, + imageResourcesPath: _app_options.AppOptions.get("imageResourcesPath"), + enablePrintAutoRotate: _app_options.AppOptions.get("enablePrintAutoRotate"), + useOnlyCssZoom: _app_options.AppOptions.get("useOnlyCssZoom"), + maxCanvasPixels: _app_options.AppOptions.get("maxCanvasPixels"), + enablePermissions: _app_options.AppOptions.get("enablePermissions"), + pageColors + }); + pdfRenderingQueue.setViewer(this.pdfViewer); + pdfLinkService.setViewer(this.pdfViewer); + pdfScriptingManager.setViewer(this.pdfViewer); + this.pdfThumbnailViewer = new _pdf_thumbnail_viewer.PDFThumbnailViewer({ + container: appConfig.sidebar.thumbnailView, + eventBus, + renderingQueue: pdfRenderingQueue, + linkService: pdfLinkService, + l10n: this.l10n, + pageColors + }); + pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer); + + if (!this.isViewerEmbedded && !_app_options.AppOptions.get("disableHistory")) { + this.pdfHistory = new _pdf_history.PDFHistory({ + linkService: pdfLinkService, + eventBus + }); + pdfLinkService.setHistory(this.pdfHistory); + } + + if (!this.supportsIntegratedFind) { + this.findBar = new _pdf_find_bar.PDFFindBar(appConfig.findBar, eventBus, this.l10n); + } + + if (annotationEditorMode !== _pdfjsLib.AnnotationEditorType.DISABLE) { + this.annotationEditorParams = new _annotation_editor_params.AnnotationEditorParams(appConfig.annotationEditorParams, eventBus); + + for (const element of [document.getElementById("editorModeButtons"), document.getElementById("editorModeSeparator")]) { + element.classList.remove("hidden"); + } + } + + this.pdfDocumentProperties = new _pdf_document_properties.PDFDocumentProperties(appConfig.documentProperties, this.overlayManager, eventBus, this.l10n, () => { + return this._docFilename; + }); + this.pdfCursorTools = new _pdf_cursor_tools.PDFCursorTools({ + container, + eventBus, + cursorToolOnLoad: _app_options.AppOptions.get("cursorToolOnLoad") + }); + this.toolbar = new _toolbar.Toolbar(appConfig.toolbar, eventBus, this.l10n); + this.secondaryToolbar = new _secondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, eventBus); + + if (this.supportsFullscreen) { + this.pdfPresentationMode = new _pdf_presentation_mode.PDFPresentationMode({ + container, + pdfViewer: this.pdfViewer, + eventBus + }); + } + + this.passwordPrompt = new _password_prompt.PasswordPrompt(appConfig.passwordOverlay, this.overlayManager, this.l10n, this.isViewerEmbedded); + this.pdfOutlineViewer = new _pdf_outline_viewer.PDFOutlineViewer({ + container: appConfig.sidebar.outlineView, + eventBus, + linkService: pdfLinkService + }); + this.pdfAttachmentViewer = new _pdf_attachment_viewer.PDFAttachmentViewer({ + container: appConfig.sidebar.attachmentsView, + eventBus, + downloadManager + }); + this.pdfLayerViewer = new _pdf_layer_viewer.PDFLayerViewer({ + container: appConfig.sidebar.layersView, + eventBus, + l10n: this.l10n + }); + this.pdfSidebar = new _pdf_sidebar.PDFSidebar({ + elements: appConfig.sidebar, + pdfViewer: this.pdfViewer, + pdfThumbnailViewer: this.pdfThumbnailViewer, + eventBus, + l10n: this.l10n + }); + this.pdfSidebar.onToggled = this.forceRendering.bind(this); + this.pdfSidebarResizer = new _pdf_sidebar_resizer.PDFSidebarResizer(appConfig.sidebarResizer, eventBus, this.l10n); + }, + + run(config) { + this.initialize(config).then(webViewerInitialized); + }, + + get initialized() { + return this._initializedCapability.settled; + }, + + get initializedPromise() { + return this._initializedCapability.promise; + }, + + zoomIn(steps) { + if (this.pdfViewer.isInPresentationMode) { + return; + } + + this.pdfViewer.increaseScale(steps); + }, + + zoomOut(steps) { + if (this.pdfViewer.isInPresentationMode) { + return; + } + + this.pdfViewer.decreaseScale(steps); + }, + + zoomReset() { + if (this.pdfViewer.isInPresentationMode) { + return; + } + + this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; + }, + + get pagesCount() { + return this.pdfDocument ? this.pdfDocument.numPages : 0; + }, + + get page() { + return this.pdfViewer.currentPageNumber; + }, + + set page(val) { + this.pdfViewer.currentPageNumber = val; + }, + + get supportsPrinting() { + return PDFPrintServiceFactory.instance.supportsPrinting; + }, + + get supportsFullscreen() { + return (0, _pdfjsLib.shadow)(this, "supportsFullscreen", document.fullscreenEnabled); + }, + + get supportsIntegratedFind() { + return this.externalServices.supportsIntegratedFind; + }, + + get supportsDocumentFonts() { + return this.externalServices.supportsDocumentFonts; + }, + + get loadingBar() { + const bar = new _ui_utils.ProgressBar("loadingBar"); + return (0, _pdfjsLib.shadow)(this, "loadingBar", bar); + }, + + get supportedMouseWheelZoomModifierKeys() { + return this.externalServices.supportedMouseWheelZoomModifierKeys; + }, + + initPassiveLoading() { + throw new Error("Not implemented: initPassiveLoading"); + }, + + setTitleUsingUrl(url = "", downloadUrl = null) { + this.url = url; + this.baseUrl = url.split("#")[0]; + + if (downloadUrl) { + this._downloadUrl = downloadUrl === url ? this.baseUrl : downloadUrl.split("#")[0]; + } + + let title = (0, _pdfjsLib.getPdfFilenameFromUrl)(url, ""); + + if (!title) { + try { + title = decodeURIComponent((0, _pdfjsLib.getFilenameFromUrl)(url)) || url; + } catch (ex) { + title = url; + } + } + + this.setTitle(title); + }, + + setTitle(title = this._title) { + this._title = title; + + if (this.isViewerEmbedded) { + return; + } + + document.title = `${this._hasAnnotationEditors ? "* " : ""}${title}`; + }, + + get _docFilename() { + return this._contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(this.url); + }, + + _hideViewBookmark() { + const { + toolbar, + secondaryToolbar + } = this.appConfig; + toolbar.viewBookmark.hidden = true; + secondaryToolbar.viewBookmarkButton.hidden = true; + }, + + _cancelIdleCallbacks() { + if (!this._idleCallbacks.size) { + return; + } + + for (const callback of this._idleCallbacks) { + window.cancelIdleCallback(callback); + } + + this._idleCallbacks.clear(); + }, + + async close() { + this._unblockDocumentLoadEvent(); + + this._hideViewBookmark(); + + const { + container + } = this.appConfig.errorWrapper; + container.hidden = true; + + if (!this.pdfLoadingTask) { + return; + } + + if (this.pdfDocument?.annotationStorage.size > 0 && this._annotationStorageModified) { + try { + await this.save(); + } catch (reason) {} + } + + const promises = []; + promises.push(this.pdfLoadingTask.destroy()); + this.pdfLoadingTask = null; + + if (this.pdfDocument) { + this.pdfDocument = null; + this.pdfThumbnailViewer.setDocument(null); + this.pdfViewer.setDocument(null); + this.pdfLinkService.setDocument(null); + this.pdfDocumentProperties.setDocument(null); + } + + this.pdfLinkService.externalLinkEnabled = true; + this.store = null; + this.isInitialViewSet = false; + this.downloadComplete = false; + this.url = ""; + this.baseUrl = ""; + this._downloadUrl = ""; + this.documentInfo = null; + this.metadata = null; + this._contentDispositionFilename = null; + this._contentLength = null; + this._saveInProgress = false; + this._docStats = null; + this._hasAnnotationEditors = false; + + this._cancelIdleCallbacks(); + + promises.push(this.pdfScriptingManager.destroyPromise); + this.setTitle(); + this.pdfSidebar.reset(); + this.pdfOutlineViewer.reset(); + this.pdfAttachmentViewer.reset(); + this.pdfLayerViewer.reset(); + this.pdfHistory?.reset(); + this.findBar?.reset(); + this.toolbar.reset(); + this.secondaryToolbar.reset(); + this._PDFBug?.cleanup(); + await Promise.all(promises); + }, + + async open(file, args) { + if (this.pdfLoadingTask) { + await this.close(); + } + + const workerParameters = _app_options.AppOptions.getAll(_app_options.OptionKind.WORKER); + + for (const key in workerParameters) { + _pdfjsLib.GlobalWorkerOptions[key] = workerParameters[key]; + } + + const parameters = Object.create(null); + + if (typeof file === "string") { + this.setTitleUsingUrl(file, file); + parameters.url = file; + } else if (file && "byteLength" in file) { + parameters.data = file; + } else if (file.url && file.originalUrl) { + this.setTitleUsingUrl(file.originalUrl, file.url); + parameters.url = file.url; + } + + const apiParameters = _app_options.AppOptions.getAll(_app_options.OptionKind.API); + + for (const key in apiParameters) { + let value = apiParameters[key]; + + if (key === "docBaseUrl" && !value) {} + + parameters[key] = value; + } + + if (args) { + for (const key in args) { + parameters[key] = args[key]; + } + } + + const loadingTask = (0, _pdfjsLib.getDocument)(parameters); + this.pdfLoadingTask = loadingTask; + + loadingTask.onPassword = (updateCallback, reason) => { + this.pdfLinkService.externalLinkEnabled = false; + this.passwordPrompt.setUpdateCallback(updateCallback, reason); + this.passwordPrompt.open(); + }; + + loadingTask.onProgress = ({ + loaded, + total + }) => { + this.progress(loaded / total); + }; + + loadingTask.onUnsupportedFeature = this.fallback.bind(this); + return loadingTask.promise.then(pdfDocument => { + this.load(pdfDocument); + }, reason => { + if (loadingTask !== this.pdfLoadingTask) { + return undefined; + } + + let key = "loading_error"; + + if (reason instanceof _pdfjsLib.InvalidPDFException) { + key = "invalid_file_error"; + } else if (reason instanceof _pdfjsLib.MissingPDFException) { + key = "missing_file_error"; + } else if (reason instanceof _pdfjsLib.UnexpectedResponseException) { + key = "unexpected_response_error"; + } + + return this.l10n.get(key).then(msg => { + this._documentError(msg, { + message: reason?.message + }); + + throw reason; + }); + }); + }, + + _ensureDownloadComplete() { + if (this.pdfDocument && this.downloadComplete) { + return; + } + + throw new Error("PDF document not downloaded."); + }, + + async download() { + const url = this._downloadUrl, + filename = this._docFilename; + + try { + this._ensureDownloadComplete(); + + const data = await this.pdfDocument.getData(); + const blob = new Blob([data], { + type: "application/pdf" + }); + await this.downloadManager.download(blob, url, filename); + } catch (reason) { + await this.downloadManager.downloadUrl(url, filename); + } + }, + + async save() { + if (this._saveInProgress) { + return; + } + + this._saveInProgress = true; + await this.pdfScriptingManager.dispatchWillSave(); + const url = this._downloadUrl, + filename = this._docFilename; + + try { + this._ensureDownloadComplete(); + + const data = await this.pdfDocument.saveDocument(); + const blob = new Blob([data], { + type: "application/pdf" + }); + await this.downloadManager.download(blob, url, filename); + } catch (reason) { + console.error(`Error when saving the document: ${reason.message}`); + await this.download(); + } finally { + await this.pdfScriptingManager.dispatchDidSave(); + this._saveInProgress = false; + } + + if (this._hasAnnotationEditors) { + this.externalServices.reportTelemetry({ + type: "editing", + data: { + type: "save" + } + }); + } + }, + + downloadOrSave() { + if (this.pdfDocument?.annotationStorage.size > 0) { + this.save(); + } else { + this.download(); + } + }, + + fallback(featureId) { + this.externalServices.reportTelemetry({ + type: "unsupportedFeature", + featureId + }); + }, + + _documentError(message, moreInfo = null) { + this._unblockDocumentLoadEvent(); + + this._otherError(message, moreInfo); + + this.eventBus.dispatch("documenterror", { + source: this, + message, + reason: moreInfo?.message ?? null + }); + }, + + _otherError(message, moreInfo = null) { + const moreInfoText = [this.l10n.get("error_version_info", { + version: _pdfjsLib.version || "?", + build: _pdfjsLib.build || "?" + })]; + + if (moreInfo) { + moreInfoText.push(this.l10n.get("error_message", { + message: moreInfo.message + })); + + if (moreInfo.stack) { + moreInfoText.push(this.l10n.get("error_stack", { + stack: moreInfo.stack + })); + } else { + if (moreInfo.filename) { + moreInfoText.push(this.l10n.get("error_file", { + file: moreInfo.filename + })); + } + + if (moreInfo.lineNumber) { + moreInfoText.push(this.l10n.get("error_line", { + line: moreInfo.lineNumber + })); + } + } + } + + const errorWrapperConfig = this.appConfig.errorWrapper; + const errorWrapper = errorWrapperConfig.container; + errorWrapper.hidden = false; + const errorMessage = errorWrapperConfig.errorMessage; + errorMessage.textContent = message; + const closeButton = errorWrapperConfig.closeButton; + + closeButton.onclick = function () { + errorWrapper.hidden = true; + }; + + const errorMoreInfo = errorWrapperConfig.errorMoreInfo; + const moreInfoButton = errorWrapperConfig.moreInfoButton; + const lessInfoButton = errorWrapperConfig.lessInfoButton; + + moreInfoButton.onclick = function () { + errorMoreInfo.hidden = false; + moreInfoButton.hidden = true; + lessInfoButton.hidden = false; + errorMoreInfo.style.height = errorMoreInfo.scrollHeight + "px"; + }; + + lessInfoButton.onclick = function () { + errorMoreInfo.hidden = true; + moreInfoButton.hidden = false; + lessInfoButton.hidden = true; + }; + + moreInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler; + lessInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler; + closeButton.oncontextmenu = _ui_utils.noContextMenuHandler; + moreInfoButton.hidden = false; + lessInfoButton.hidden = true; + Promise.all(moreInfoText).then(parts => { + errorMoreInfo.value = parts.join("\n"); + }); + }, + + progress(level) { + if (this.downloadComplete) { + return; + } + + const percent = Math.round(level * 100); + + if (percent <= this.loadingBar.percent) { + return; + } + + this.loadingBar.percent = percent; + + const disableAutoFetch = this.pdfDocument?.loadingParams.disableAutoFetch ?? _app_options.AppOptions.get("disableAutoFetch"); + + if (!disableAutoFetch || isNaN(percent)) { + return; + } + + if (this.disableAutoFetchLoadingBarTimeout) { + clearTimeout(this.disableAutoFetchLoadingBarTimeout); + this.disableAutoFetchLoadingBarTimeout = null; + } + + this.loadingBar.show(); + this.disableAutoFetchLoadingBarTimeout = setTimeout(() => { + this.loadingBar.hide(); + this.disableAutoFetchLoadingBarTimeout = null; + }, DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT); + }, + + load(pdfDocument) { + this.pdfDocument = pdfDocument; + pdfDocument.getDownloadInfo().then(({ + length + }) => { + this._contentLength = length; + this.downloadComplete = true; + this.loadingBar.hide(); + firstPagePromise.then(() => { + this.eventBus.dispatch("documentloaded", { + source: this + }); + }); + }); + const pageLayoutPromise = pdfDocument.getPageLayout().catch(function () {}); + const pageModePromise = pdfDocument.getPageMode().catch(function () {}); + const openActionPromise = pdfDocument.getOpenAction().catch(function () {}); + this.toolbar.setPagesCount(pdfDocument.numPages, false); + this.secondaryToolbar.setPagesCount(pdfDocument.numPages); + let baseDocumentUrl; + baseDocumentUrl = null; + this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl); + this.pdfDocumentProperties.setDocument(pdfDocument); + const pdfViewer = this.pdfViewer; + pdfViewer.setDocument(pdfDocument); + const { + firstPagePromise, + onePageRendered, + pagesPromise + } = pdfViewer; + const pdfThumbnailViewer = this.pdfThumbnailViewer; + pdfThumbnailViewer.setDocument(pdfDocument); + const storedPromise = (this.store = new _view_history.ViewHistory(pdfDocument.fingerprints[0])).getMultiple({ + page: null, + zoom: _ui_utils.DEFAULT_SCALE_VALUE, + scrollLeft: "0", + scrollTop: "0", + rotation: null, + sidebarView: _ui_utils.SidebarView.UNKNOWN, + scrollMode: _ui_utils.ScrollMode.UNKNOWN, + spreadMode: _ui_utils.SpreadMode.UNKNOWN + }).catch(() => { + return Object.create(null); + }); + firstPagePromise.then(pdfPage => { + this.loadingBar.setWidth(this.appConfig.viewerContainer); + + this._initializeAnnotationStorageCallbacks(pdfDocument); + + Promise.all([_ui_utils.animationStarted, storedPromise, pageLayoutPromise, pageModePromise, openActionPromise]).then(async ([timeStamp, stored, pageLayout, pageMode, openAction]) => { + const viewOnLoad = _app_options.AppOptions.get("viewOnLoad"); + + this._initializePdfHistory({ + fingerprint: pdfDocument.fingerprints[0], + viewOnLoad, + initialDest: openAction?.dest + }); + + const initialBookmark = this.initialBookmark; + + const zoom = _app_options.AppOptions.get("defaultZoomValue"); + + let hash = zoom ? `zoom=${zoom}` : null; + let rotation = null; + + let sidebarView = _app_options.AppOptions.get("sidebarViewOnLoad"); + + let scrollMode = _app_options.AppOptions.get("scrollModeOnLoad"); + + let spreadMode = _app_options.AppOptions.get("spreadModeOnLoad"); + + if (stored.page && viewOnLoad !== ViewOnLoad.INITIAL) { + hash = `page=${stored.page}&zoom=${zoom || stored.zoom},` + `${stored.scrollLeft},${stored.scrollTop}`; + rotation = parseInt(stored.rotation, 10); + + if (sidebarView === _ui_utils.SidebarView.UNKNOWN) { + sidebarView = stored.sidebarView | 0; + } + + if (scrollMode === _ui_utils.ScrollMode.UNKNOWN) { + scrollMode = stored.scrollMode | 0; + } + + if (spreadMode === _ui_utils.SpreadMode.UNKNOWN) { + spreadMode = stored.spreadMode | 0; + } + } + + if (pageMode && sidebarView === _ui_utils.SidebarView.UNKNOWN) { + sidebarView = (0, _ui_utils.apiPageModeToSidebarView)(pageMode); + } + + if (pageLayout && scrollMode === _ui_utils.ScrollMode.UNKNOWN && spreadMode === _ui_utils.SpreadMode.UNKNOWN) { + const modes = (0, _ui_utils.apiPageLayoutToViewerModes)(pageLayout); + spreadMode = modes.spreadMode; + } + + this.setInitialView(hash, { + rotation, + sidebarView, + scrollMode, + spreadMode + }); + this.eventBus.dispatch("documentinit", { + source: this + }); + + if (!this.isViewerEmbedded) { + pdfViewer.focus(); + } + + await Promise.race([pagesPromise, new Promise(resolve => { + setTimeout(resolve, FORCE_PAGES_LOADED_TIMEOUT); + })]); + + if (!initialBookmark && !hash) { + return; + } + + if (pdfViewer.hasEqualPageSizes) { + return; + } + + this.initialBookmark = initialBookmark; + pdfViewer.currentScaleValue = pdfViewer.currentScaleValue; + this.setInitialView(hash); + }).catch(() => { + this.setInitialView(); + }).then(function () { + pdfViewer.update(); + }); + }); + pagesPromise.then(() => { + this._unblockDocumentLoadEvent(); + + this._initializeAutoPrint(pdfDocument, openActionPromise); + }, reason => { + this.l10n.get("loading_error").then(msg => { + this._documentError(msg, { + message: reason?.message + }); + }); + }); + onePageRendered.then(data => { + this.externalServices.reportTelemetry({ + type: "pageInfo", + timestamp: data.timestamp + }); + pdfDocument.getOutline().then(outline => { + if (pdfDocument !== this.pdfDocument) { + return; + } + + this.pdfOutlineViewer.render({ + outline, + pdfDocument + }); + }); + pdfDocument.getAttachments().then(attachments => { + if (pdfDocument !== this.pdfDocument) { + return; + } + + this.pdfAttachmentViewer.render({ + attachments + }); + }); + pdfViewer.optionalContentConfigPromise.then(optionalContentConfig => { + if (pdfDocument !== this.pdfDocument) { + return; + } + + this.pdfLayerViewer.render({ + optionalContentConfig, + pdfDocument + }); + }); + + if ("requestIdleCallback" in window) { + const callback = window.requestIdleCallback(() => { + this._collectTelemetry(pdfDocument); + + this._idleCallbacks.delete(callback); + }, { + timeout: 1000 + }); + + this._idleCallbacks.add(callback); + } + }); + + this._initializePageLabels(pdfDocument); + + this._initializeMetadata(pdfDocument); + }, + + async _scriptingDocProperties(pdfDocument) { + if (!this.documentInfo) { + await new Promise(resolve => { + this.eventBus._on("metadataloaded", resolve, { + once: true + }); + }); + + if (pdfDocument !== this.pdfDocument) { + return null; + } + } + + if (!this._contentLength) { + await new Promise(resolve => { + this.eventBus._on("documentloaded", resolve, { + once: true + }); + }); + + if (pdfDocument !== this.pdfDocument) { + return null; + } + } + + return { ...this.documentInfo, + baseURL: this.baseUrl, + filesize: this._contentLength, + filename: this._docFilename, + metadata: this.metadata?.getRaw(), + authors: this.metadata?.get("dc:creator"), + numPages: this.pagesCount, + URL: this.url + }; + }, + + async _collectTelemetry(pdfDocument) { + const markInfo = await this.pdfDocument.getMarkInfo(); + + if (pdfDocument !== this.pdfDocument) { + return; + } + + const tagged = markInfo?.Marked || false; + this.externalServices.reportTelemetry({ + type: "tagged", + tagged + }); + }, + + async _initializeAutoPrint(pdfDocument, openActionPromise) { + const [openAction, javaScript] = await Promise.all([openActionPromise, !this.pdfViewer.enableScripting ? pdfDocument.getJavaScript() : null]); + + if (pdfDocument !== this.pdfDocument) { + return; + } + + let triggerAutoPrint = false; + + if (openAction?.action === "Print") { + triggerAutoPrint = true; + } + + if (javaScript) { + javaScript.some(js => { + if (!js) { + return false; + } + + console.warn("Warning: JavaScript support is not enabled"); + this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.javaScript); + return true; + }); + + if (!triggerAutoPrint) { + for (const js of javaScript) { + if (js && _ui_utils.AutoPrintRegExp.test(js)) { + triggerAutoPrint = true; + break; + } + } + } + } + + if (triggerAutoPrint) { + this.triggerPrinting(); + } + }, + + async _initializeMetadata(pdfDocument) { + const { + info, + metadata, + contentDispositionFilename, + contentLength + } = await pdfDocument.getMetadata(); + + if (pdfDocument !== this.pdfDocument) { + return; + } + + this.documentInfo = info; + this.metadata = metadata; + this._contentDispositionFilename ??= contentDispositionFilename; + this._contentLength ??= contentLength; + console.log(`PDF ${pdfDocument.fingerprints[0]} [${info.PDFFormatVersion} ` + `${(info.Producer || "-").trim()} / ${(info.Creator || "-").trim()}] ` + `(PDF.js: ${_pdfjsLib.version || "-"})`); + let pdfTitle = info.Title; + const metadataTitle = metadata?.get("dc:title"); + + if (metadataTitle) { + if (metadataTitle !== "Untitled" && !/[\uFFF0-\uFFFF]/g.test(metadataTitle)) { + pdfTitle = metadataTitle; + } + } + + if (pdfTitle) { + this.setTitle(`${pdfTitle} - ${this._contentDispositionFilename || this._title}`); + } else if (this._contentDispositionFilename) { + this.setTitle(this._contentDispositionFilename); + } + + if (info.IsXFAPresent && !info.IsAcroFormPresent && !pdfDocument.isPureXfa) { + if (pdfDocument.loadingParams.enableXfa) { + console.warn("Warning: XFA Foreground documents are not supported"); + } else { + console.warn("Warning: XFA support is not enabled"); + } + + this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms); + } else if ((info.IsAcroFormPresent || info.IsXFAPresent) && !this.pdfViewer.renderForms) { + console.warn("Warning: Interactive form support is not enabled"); + this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms); + } + + if (info.IsSignaturesPresent) { + console.warn("Warning: Digital signatures validation is not supported"); + this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.signatures); + } + + let versionId = "other"; + + if (KNOWN_VERSIONS.includes(info.PDFFormatVersion)) { + versionId = `v${info.PDFFormatVersion.replace(".", "_")}`; + } + + let generatorId = "other"; + + if (info.Producer) { + const producer = info.Producer.toLowerCase(); + KNOWN_GENERATORS.some(function (generator) { + if (!producer.includes(generator)) { + return false; + } + + generatorId = generator.replace(/[ .-]/g, "_"); + return true; + }); + } + + let formType = null; + + if (info.IsXFAPresent) { + formType = "xfa"; + } else if (info.IsAcroFormPresent) { + formType = "acroform"; + } + + this.externalServices.reportTelemetry({ + type: "documentInfo", + version: versionId, + generator: generatorId, + formType + }); + this.eventBus.dispatch("metadataloaded", { + source: this + }); + }, + + async _initializePageLabels(pdfDocument) { + const labels = await pdfDocument.getPageLabels(); + + if (pdfDocument !== this.pdfDocument) { + return; + } + + if (!labels || _app_options.AppOptions.get("disablePageLabels")) { + return; + } + + const numLabels = labels.length; + let standardLabels = 0, + emptyLabels = 0; + + for (let i = 0; i < numLabels; i++) { + const label = labels[i]; + + if (label === (i + 1).toString()) { + standardLabels++; + } else if (label === "") { + emptyLabels++; + } else { + break; + } + } + + if (standardLabels >= numLabels || emptyLabels >= numLabels) { + return; + } + + const { + pdfViewer, + pdfThumbnailViewer, + toolbar + } = this; + pdfViewer.setPageLabels(labels); + pdfThumbnailViewer.setPageLabels(labels); + toolbar.setPagesCount(numLabels, true); + toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel); + }, + + _initializePdfHistory({ + fingerprint, + viewOnLoad, + initialDest = null + }) { + if (!this.pdfHistory) { + return; + } + + this.pdfHistory.initialize({ + fingerprint, + resetHistory: viewOnLoad === ViewOnLoad.INITIAL, + updateUrl: _app_options.AppOptions.get("historyUpdateUrl") + }); + + if (this.pdfHistory.initialBookmark) { + this.initialBookmark = this.pdfHistory.initialBookmark; + this.initialRotation = this.pdfHistory.initialRotation; + } + + if (initialDest && !this.initialBookmark && viewOnLoad === ViewOnLoad.UNKNOWN) { + this.initialBookmark = JSON.stringify(initialDest); + this.pdfHistory.push({ + explicitDest: initialDest, + pageNumber: null + }); + } + }, + + _initializeAnnotationStorageCallbacks(pdfDocument) { + if (pdfDocument !== this.pdfDocument) { + return; + } + + const { + annotationStorage + } = pdfDocument; + + annotationStorage.onSetModified = () => { + window.addEventListener("beforeunload", beforeUnload); + this._annotationStorageModified = true; + }; + + annotationStorage.onResetModified = () => { + window.removeEventListener("beforeunload", beforeUnload); + delete this._annotationStorageModified; + }; + + annotationStorage.onAnnotationEditor = typeStr => { + this._hasAnnotationEditors = !!typeStr; + this.setTitle(); + + if (typeStr) { + this.externalServices.reportTelemetry({ + type: "editing", + data: { + type: typeStr + } + }); + } + }; + }, + + setInitialView(storedHash, { + rotation, + sidebarView, + scrollMode, + spreadMode + } = {}) { + const setRotation = angle => { + if ((0, _ui_utils.isValidRotation)(angle)) { + this.pdfViewer.pagesRotation = angle; + } + }; + + const setViewerModes = (scroll, spread) => { + if ((0, _ui_utils.isValidScrollMode)(scroll)) { + this.pdfViewer.scrollMode = scroll; + } + + if ((0, _ui_utils.isValidSpreadMode)(spread)) { + this.pdfViewer.spreadMode = spread; + } + }; + + this.isInitialViewSet = true; + this.pdfSidebar.setInitialView(sidebarView); + setViewerModes(scrollMode, spreadMode); + + if (this.initialBookmark) { + setRotation(this.initialRotation); + delete this.initialRotation; + this.pdfLinkService.setHash(this.initialBookmark); + this.initialBookmark = null; + } else if (storedHash) { + setRotation(rotation); + this.pdfLinkService.setHash(storedHash); + } + + this.toolbar.setPageNumber(this.pdfViewer.currentPageNumber, this.pdfViewer.currentPageLabel); + this.secondaryToolbar.setPageNumber(this.pdfViewer.currentPageNumber); + + if (!this.pdfViewer.currentScaleValue) { + this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; + } + }, + + _cleanup() { + if (!this.pdfDocument) { + return; + } + + this.pdfViewer.cleanup(); + this.pdfThumbnailViewer.cleanup(); + this.pdfDocument.cleanup(this.pdfViewer.renderer === _ui_utils.RendererType.SVG); + }, + + forceRendering() { + this.pdfRenderingQueue.printing = !!this.printService; + this.pdfRenderingQueue.isThumbnailViewEnabled = this.pdfSidebar.visibleView === _ui_utils.SidebarView.THUMBS; + this.pdfRenderingQueue.renderHighestPriority(); + }, + + beforePrint() { + this._printAnnotationStoragePromise = this.pdfScriptingManager.dispatchWillPrint().catch(() => {}).then(() => { + return this.pdfDocument?.annotationStorage.print; + }); + + if (this.printService) { + return; + } + + if (!this.supportsPrinting) { + this.l10n.get("printing_not_supported").then(msg => { + this._otherError(msg); + }); + return; + } + + if (!this.pdfViewer.pageViewsReady) { + this.l10n.get("printing_not_ready").then(msg => { + window.alert(msg); + }); + return; + } + + const pagesOverview = this.pdfViewer.getPagesOverview(); + const printContainer = this.appConfig.printContainer; + + const printResolution = _app_options.AppOptions.get("printResolution"); + + const optionalContentConfigPromise = this.pdfViewer.optionalContentConfigPromise; + const printService = PDFPrintServiceFactory.instance.createPrintService(this.pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, this._printAnnotationStoragePromise, this.l10n); + this.printService = printService; + this.forceRendering(); + printService.layout(); + this.externalServices.reportTelemetry({ + type: "print" + }); + + if (this._hasAnnotationEditors) { + this.externalServices.reportTelemetry({ + type: "editing", + data: { + type: "print" + } + }); + } + }, + + afterPrint() { + if (this._printAnnotationStoragePromise) { + this._printAnnotationStoragePromise.then(() => { + this.pdfScriptingManager.dispatchDidPrint(); + }); + + this._printAnnotationStoragePromise = null; + } + + if (this.printService) { + this.printService.destroy(); + this.printService = null; + this.pdfDocument?.annotationStorage.resetModified(); + } + + this.forceRendering(); + }, + + rotatePages(delta) { + this.pdfViewer.pagesRotation += delta; + }, + + requestPresentationMode() { + this.pdfPresentationMode?.request(); + }, + + triggerPrinting() { + if (!this.supportsPrinting) { + return; + } + + window.print(); + }, + + bindEvents() { + const { + eventBus, + _boundEvents + } = this; + _boundEvents.beforePrint = this.beforePrint.bind(this); + _boundEvents.afterPrint = this.afterPrint.bind(this); + + eventBus._on("resize", webViewerResize); + + eventBus._on("hashchange", webViewerHashchange); + + eventBus._on("beforeprint", _boundEvents.beforePrint); + + eventBus._on("afterprint", _boundEvents.afterPrint); + + eventBus._on("pagerendered", webViewerPageRendered); + + eventBus._on("updateviewarea", webViewerUpdateViewarea); + + eventBus._on("pagechanging", webViewerPageChanging); + + eventBus._on("scalechanging", webViewerScaleChanging); + + eventBus._on("rotationchanging", webViewerRotationChanging); + + eventBus._on("sidebarviewchanged", webViewerSidebarViewChanged); + + eventBus._on("pagemode", webViewerPageMode); + + eventBus._on("namedaction", webViewerNamedAction); + + eventBus._on("presentationmodechanged", webViewerPresentationModeChanged); + + eventBus._on("presentationmode", webViewerPresentationMode); + + eventBus._on("switchannotationeditormode", webViewerSwitchAnnotationEditorMode); + + eventBus._on("switchannotationeditorparams", webViewerSwitchAnnotationEditorParams); + + eventBus._on("print", webViewerPrint); + + eventBus._on("download", webViewerDownload); + + eventBus._on("firstpage", webViewerFirstPage); + + eventBus._on("lastpage", webViewerLastPage); + + eventBus._on("nextpage", webViewerNextPage); + + eventBus._on("previouspage", webViewerPreviousPage); + + eventBus._on("zoomin", webViewerZoomIn); + + eventBus._on("zoomout", webViewerZoomOut); + + eventBus._on("zoomreset", webViewerZoomReset); + + eventBus._on("pagenumberchanged", webViewerPageNumberChanged); + + eventBus._on("scalechanged", webViewerScaleChanged); + + eventBus._on("rotatecw", webViewerRotateCw); + + eventBus._on("rotateccw", webViewerRotateCcw); + + eventBus._on("optionalcontentconfig", webViewerOptionalContentConfig); + + eventBus._on("switchscrollmode", webViewerSwitchScrollMode); + + eventBus._on("scrollmodechanged", webViewerScrollModeChanged); + + eventBus._on("switchspreadmode", webViewerSwitchSpreadMode); + + eventBus._on("spreadmodechanged", webViewerSpreadModeChanged); + + eventBus._on("documentproperties", webViewerDocumentProperties); + + eventBus._on("findfromurlhash", webViewerFindFromUrlHash); + + eventBus._on("updatefindmatchescount", webViewerUpdateFindMatchesCount); + + eventBus._on("updatefindcontrolstate", webViewerUpdateFindControlState); + + if (_app_options.AppOptions.get("pdfBug")) { + _boundEvents.reportPageStatsPDFBug = reportPageStatsPDFBug; + + eventBus._on("pagerendered", _boundEvents.reportPageStatsPDFBug); + + eventBus._on("pagechanging", _boundEvents.reportPageStatsPDFBug); + } + + eventBus._on("fileinputchange", webViewerFileInputChange); + + eventBus._on("openfile", webViewerOpenFile); + }, + + bindWindowEvents() { + const { + eventBus, + _boundEvents + } = this; + + function addWindowResolutionChange(evt = null) { + if (evt) { + webViewerResolutionChange(evt); + } + + const mediaQueryList = window.matchMedia(`(resolution: ${window.devicePixelRatio || 1}dppx)`); + mediaQueryList.addEventListener("change", addWindowResolutionChange, { + once: true + }); + + _boundEvents.removeWindowResolutionChange ||= function () { + mediaQueryList.removeEventListener("change", addWindowResolutionChange); + _boundEvents.removeWindowResolutionChange = null; + }; + } + + addWindowResolutionChange(); + + _boundEvents.windowResize = () => { + eventBus.dispatch("resize", { + source: window + }); + }; + + _boundEvents.windowHashChange = () => { + eventBus.dispatch("hashchange", { + source: window, + hash: document.location.hash.substring(1) + }); + }; + + _boundEvents.windowBeforePrint = () => { + eventBus.dispatch("beforeprint", { + source: window + }); + }; + + _boundEvents.windowAfterPrint = () => { + eventBus.dispatch("afterprint", { + source: window + }); + }; + + _boundEvents.windowUpdateFromSandbox = event => { + eventBus.dispatch("updatefromsandbox", { + source: window, + detail: event.detail + }); + }; + + window.addEventListener("visibilitychange", webViewerVisibilityChange); + window.addEventListener("wheel", webViewerWheel, { + passive: false + }); + window.addEventListener("touchstart", webViewerTouchStart, { + passive: false + }); + window.addEventListener("click", webViewerClick); + window.addEventListener("keydown", webViewerKeyDown); + window.addEventListener("resize", _boundEvents.windowResize); + window.addEventListener("hashchange", _boundEvents.windowHashChange); + window.addEventListener("beforeprint", _boundEvents.windowBeforePrint); + window.addEventListener("afterprint", _boundEvents.windowAfterPrint); + window.addEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox); + }, + + unbindEvents() { + const { + eventBus, + _boundEvents + } = this; + + eventBus._off("resize", webViewerResize); + + eventBus._off("hashchange", webViewerHashchange); + + eventBus._off("beforeprint", _boundEvents.beforePrint); + + eventBus._off("afterprint", _boundEvents.afterPrint); + + eventBus._off("pagerendered", webViewerPageRendered); + + eventBus._off("updateviewarea", webViewerUpdateViewarea); + + eventBus._off("pagechanging", webViewerPageChanging); + + eventBus._off("scalechanging", webViewerScaleChanging); + + eventBus._off("rotationchanging", webViewerRotationChanging); + + eventBus._off("sidebarviewchanged", webViewerSidebarViewChanged); + + eventBus._off("pagemode", webViewerPageMode); + + eventBus._off("namedaction", webViewerNamedAction); + + eventBus._off("presentationmodechanged", webViewerPresentationModeChanged); + + eventBus._off("presentationmode", webViewerPresentationMode); + + eventBus._off("print", webViewerPrint); + + eventBus._off("download", webViewerDownload); + + eventBus._off("firstpage", webViewerFirstPage); + + eventBus._off("lastpage", webViewerLastPage); + + eventBus._off("nextpage", webViewerNextPage); + + eventBus._off("previouspage", webViewerPreviousPage); + + eventBus._off("zoomin", webViewerZoomIn); + + eventBus._off("zoomout", webViewerZoomOut); + + eventBus._off("zoomreset", webViewerZoomReset); + + eventBus._off("pagenumberchanged", webViewerPageNumberChanged); + + eventBus._off("scalechanged", webViewerScaleChanged); + + eventBus._off("rotatecw", webViewerRotateCw); + + eventBus._off("rotateccw", webViewerRotateCcw); + + eventBus._off("optionalcontentconfig", webViewerOptionalContentConfig); + + eventBus._off("switchscrollmode", webViewerSwitchScrollMode); + + eventBus._off("scrollmodechanged", webViewerScrollModeChanged); + + eventBus._off("switchspreadmode", webViewerSwitchSpreadMode); + + eventBus._off("spreadmodechanged", webViewerSpreadModeChanged); + + eventBus._off("documentproperties", webViewerDocumentProperties); + + eventBus._off("findfromurlhash", webViewerFindFromUrlHash); + + eventBus._off("updatefindmatchescount", webViewerUpdateFindMatchesCount); + + eventBus._off("updatefindcontrolstate", webViewerUpdateFindControlState); + + if (_boundEvents.reportPageStatsPDFBug) { + eventBus._off("pagerendered", _boundEvents.reportPageStatsPDFBug); + + eventBus._off("pagechanging", _boundEvents.reportPageStatsPDFBug); + + _boundEvents.reportPageStatsPDFBug = null; + } + + eventBus._off("fileinputchange", webViewerFileInputChange); + + eventBus._off("openfile", webViewerOpenFile); + + _boundEvents.beforePrint = null; + _boundEvents.afterPrint = null; + }, + + unbindWindowEvents() { + const { + _boundEvents + } = this; + window.removeEventListener("visibilitychange", webViewerVisibilityChange); + window.removeEventListener("wheel", webViewerWheel, { + passive: false + }); + window.removeEventListener("touchstart", webViewerTouchStart, { + passive: false + }); + window.removeEventListener("click", webViewerClick); + window.removeEventListener("keydown", webViewerKeyDown); + window.removeEventListener("resize", _boundEvents.windowResize); + window.removeEventListener("hashchange", _boundEvents.windowHashChange); + window.removeEventListener("beforeprint", _boundEvents.windowBeforePrint); + window.removeEventListener("afterprint", _boundEvents.windowAfterPrint); + window.removeEventListener("updatefromsandbox", _boundEvents.windowUpdateFromSandbox); + _boundEvents.removeWindowResolutionChange?.(); + _boundEvents.windowResize = null; + _boundEvents.windowHashChange = null; + _boundEvents.windowBeforePrint = null; + _boundEvents.windowAfterPrint = null; + _boundEvents.windowUpdateFromSandbox = null; + }, + + accumulateWheelTicks(ticks) { + if (this._wheelUnusedTicks > 0 && ticks < 0 || this._wheelUnusedTicks < 0 && ticks > 0) { + this._wheelUnusedTicks = 0; + } + + this._wheelUnusedTicks += ticks; + const wholeTicks = Math.sign(this._wheelUnusedTicks) * Math.floor(Math.abs(this._wheelUnusedTicks)); + this._wheelUnusedTicks -= wholeTicks; + return wholeTicks; + }, + + _unblockDocumentLoadEvent() { + document.blockUnblockOnload?.(false); + + this._unblockDocumentLoadEvent = () => {}; + }, + + _reportDocumentStatsTelemetry() { + const { + stats + } = this.pdfDocument; + + if (stats !== this._docStats) { + this._docStats = stats; + this.externalServices.reportTelemetry({ + type: "documentStats", + stats + }); + } + }, + + get scriptingReady() { + return this.pdfScriptingManager.ready; + } + +}; +exports.PDFViewerApplication = PDFViewerApplication; +let validateFileURL; +{ + const HOSTED_VIEWER_ORIGINS = ["null", "http://mozilla.github.io", "https://mozilla.github.io"]; + + validateFileURL = function (file) { + if (!file) { + return; + } + + try { + const viewerOrigin = new URL(window.location.href).origin || "null"; + + if (HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)) { + return; + } + + const fileOrigin = new URL(file, window.location.href).origin; + + if (fileOrigin !== viewerOrigin) { + throw new Error("file origin does not match viewer's"); + } + } catch (ex) { + PDFViewerApplication.l10n.get("loading_error").then(msg => { + PDFViewerApplication._documentError(msg, { + message: ex?.message + }); + }); + throw ex; + } + }; +} + +async function loadFakeWorker() { + _pdfjsLib.GlobalWorkerOptions.workerSrc ||= _app_options.AppOptions.get("workerSrc"); + await (0, _pdfjsLib.loadScript)(_pdfjsLib.PDFWorker.workerSrc); +} + +async function loadPDFBug(self) { + const { + debuggerScriptPath + } = self.appConfig; + const { + PDFBug + } = await import(debuggerScriptPath); + self._PDFBug = PDFBug; +} + +function reportPageStatsPDFBug({ + pageNumber +}) { + if (!globalThis.Stats?.enabled) { + return; + } + + const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); + globalThis.Stats.add(pageNumber, pageView?.pdfPage?.stats); +} + +function webViewerInitialized() { + const { + appConfig, + eventBus + } = PDFViewerApplication; + let file; + const queryString = document.location.search.substring(1); + const params = (0, _ui_utils.parseQueryString)(queryString); + file = params.get("file") ?? _app_options.AppOptions.get("defaultUrl"); + validateFileURL(file); + const fileInput = appConfig.openFileInput; + fileInput.value = null; + fileInput.addEventListener("change", function (evt) { + const { + files + } = evt.target; + + if (!files || files.length === 0) { + return; + } + + eventBus.dispatch("fileinputchange", { + source: this, + fileInput: evt.target + }); + }); + appConfig.mainContainer.addEventListener("dragover", function (evt) { + evt.preventDefault(); + evt.dataTransfer.dropEffect = evt.dataTransfer.effectAllowed === "copy" ? "copy" : "move"; + }); + appConfig.mainContainer.addEventListener("drop", function (evt) { + evt.preventDefault(); + const { + files + } = evt.dataTransfer; + + if (!files || files.length === 0) { + return; + } + + eventBus.dispatch("fileinputchange", { + source: this, + fileInput: evt.dataTransfer + }); + }); + + if (!PDFViewerApplication.supportsDocumentFonts) { + _app_options.AppOptions.set("disableFontFace", true); + + PDFViewerApplication.l10n.get("web_fonts_disabled").then(msg => { + console.warn(msg); + }); + } + + if (!PDFViewerApplication.supportsPrinting) { + appConfig.toolbar.print.classList.add("hidden"); + appConfig.secondaryToolbar.printButton.classList.add("hidden"); + } + + if (!PDFViewerApplication.supportsFullscreen) { + appConfig.toolbar.presentationModeButton.classList.add("hidden"); + appConfig.secondaryToolbar.presentationModeButton.classList.add("hidden"); + } + + if (PDFViewerApplication.supportsIntegratedFind) { + appConfig.toolbar.viewFind.classList.add("hidden"); + } + + appConfig.mainContainer.addEventListener("transitionend", function (evt) { + if (evt.target === this) { + eventBus.dispatch("resize", { + source: this + }); + } + }, true); + + try { + if (file) { + PDFViewerApplication.open(file); + } else { + PDFViewerApplication._hideViewBookmark(); + } + } catch (reason) { + PDFViewerApplication.l10n.get("loading_error").then(msg => { + PDFViewerApplication._documentError(msg, reason); + }); + } +} + +function webViewerPageRendered({ + pageNumber, + error +}) { + if (pageNumber === PDFViewerApplication.page) { + PDFViewerApplication.toolbar.updateLoadingIndicatorState(false); + } + + if (PDFViewerApplication.pdfSidebar.visibleView === _ui_utils.SidebarView.THUMBS) { + const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); + const thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(pageNumber - 1); + + if (pageView && thumbnailView) { + thumbnailView.setImage(pageView); + } + } + + if (error) { + PDFViewerApplication.l10n.get("rendering_error").then(msg => { + PDFViewerApplication._otherError(msg, error); + }); + } + + PDFViewerApplication._reportDocumentStatsTelemetry(); +} + +function webViewerPageMode({ + mode +}) { + let view; + + switch (mode) { + case "thumbs": + view = _ui_utils.SidebarView.THUMBS; + break; + + case "bookmarks": + case "outline": + view = _ui_utils.SidebarView.OUTLINE; + break; + + case "attachments": + view = _ui_utils.SidebarView.ATTACHMENTS; + break; + + case "layers": + view = _ui_utils.SidebarView.LAYERS; + break; + + case "none": + view = _ui_utils.SidebarView.NONE; + break; + + default: + console.error('Invalid "pagemode" hash parameter: ' + mode); + return; + } + + PDFViewerApplication.pdfSidebar.switchView(view, true); +} + +function webViewerNamedAction(evt) { + switch (evt.action) { + case "GoToPage": + PDFViewerApplication.appConfig.toolbar.pageNumber.select(); + break; + + case "Find": + if (!PDFViewerApplication.supportsIntegratedFind) { + PDFViewerApplication.findBar.toggle(); + } + + break; + + case "Print": + PDFViewerApplication.triggerPrinting(); + break; + + case "SaveAs": + PDFViewerApplication.downloadOrSave(); + break; + } +} + +function webViewerPresentationModeChanged(evt) { + PDFViewerApplication.pdfViewer.presentationModeState = evt.state; +} + +function webViewerSidebarViewChanged({ + view +}) { + PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled = view === _ui_utils.SidebarView.THUMBS; + + if (PDFViewerApplication.isInitialViewSet) { + PDFViewerApplication.store?.set("sidebarView", view).catch(() => {}); + } +} + +function webViewerUpdateViewarea({ + location +}) { + if (PDFViewerApplication.isInitialViewSet) { + PDFViewerApplication.store?.setMultiple({ + page: location.pageNumber, + zoom: location.scale, + scrollLeft: location.left, + scrollTop: location.top, + rotation: location.rotation + }).catch(() => {}); + } + + const href = PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams); + PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href; + PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href; + const currentPage = PDFViewerApplication.pdfViewer.getPageView(PDFViewerApplication.page - 1); + const loading = currentPage?.renderingState !== _ui_utils.RenderingStates.FINISHED; + PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading); +} + +function webViewerScrollModeChanged(evt) { + if (PDFViewerApplication.isInitialViewSet) { + PDFViewerApplication.store?.set("scrollMode", evt.mode).catch(() => {}); + } +} + +function webViewerSpreadModeChanged(evt) { + if (PDFViewerApplication.isInitialViewSet) { + PDFViewerApplication.store?.set("spreadMode", evt.mode).catch(() => {}); + } +} + +function webViewerResize() { + const { + pdfDocument, + pdfViewer, + pdfRenderingQueue + } = PDFViewerApplication; + + if (pdfRenderingQueue.printing && window.matchMedia("print").matches) { + return; + } + + pdfViewer.updateContainerHeightCss(); + + if (!pdfDocument) { + return; + } + + const currentScaleValue = pdfViewer.currentScaleValue; + + if (currentScaleValue === "auto" || currentScaleValue === "page-fit" || currentScaleValue === "page-width") { + pdfViewer.currentScaleValue = currentScaleValue; + } + + pdfViewer.update(); +} + +function webViewerHashchange(evt) { + const hash = evt.hash; + + if (!hash) { + return; + } + + if (!PDFViewerApplication.isInitialViewSet) { + PDFViewerApplication.initialBookmark = hash; + } else if (!PDFViewerApplication.pdfHistory?.popStateInProgress) { + PDFViewerApplication.pdfLinkService.setHash(hash); + } +} + +{ + var webViewerFileInputChange = function (evt) { + if (PDFViewerApplication.pdfViewer?.isInPresentationMode) { + return; + } + + const file = evt.fileInput.files[0]; + let url = URL.createObjectURL(file); + + if (file.name) { + url = { + url, + originalUrl: file.name + }; + } + + PDFViewerApplication.open(url); + }; + + var webViewerOpenFile = function (evt) { + const fileInput = PDFViewerApplication.appConfig.openFileInput; + fileInput.click(); + }; +} + +function webViewerPresentationMode() { + PDFViewerApplication.requestPresentationMode(); +} + +function webViewerSwitchAnnotationEditorMode(evt) { + PDFViewerApplication.pdfViewer.annotationEditorMode = evt.mode; +} + +function webViewerSwitchAnnotationEditorParams(evt) { + PDFViewerApplication.pdfViewer.annotationEditorParams = evt; +} + +function webViewerPrint() { + PDFViewerApplication.triggerPrinting(); +} + +function webViewerDownload() { + PDFViewerApplication.downloadOrSave(); +} + +function webViewerFirstPage() { + if (PDFViewerApplication.pdfDocument) { + PDFViewerApplication.page = 1; + } +} + +function webViewerLastPage() { + if (PDFViewerApplication.pdfDocument) { + PDFViewerApplication.page = PDFViewerApplication.pagesCount; + } +} + +function webViewerNextPage() { + PDFViewerApplication.pdfViewer.nextPage(); +} + +function webViewerPreviousPage() { + PDFViewerApplication.pdfViewer.previousPage(); +} + +function webViewerZoomIn() { + PDFViewerApplication.zoomIn(); +} + +function webViewerZoomOut() { + PDFViewerApplication.zoomOut(); +} + +function webViewerZoomReset() { + PDFViewerApplication.zoomReset(); +} + +function webViewerPageNumberChanged(evt) { + const pdfViewer = PDFViewerApplication.pdfViewer; + + if (evt.value !== "") { + PDFViewerApplication.pdfLinkService.goToPage(evt.value); + } + + if (evt.value !== pdfViewer.currentPageNumber.toString() && evt.value !== pdfViewer.currentPageLabel) { + PDFViewerApplication.toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel); + } +} + +function webViewerScaleChanged(evt) { + PDFViewerApplication.pdfViewer.currentScaleValue = evt.value; +} + +function webViewerRotateCw() { + PDFViewerApplication.rotatePages(90); +} + +function webViewerRotateCcw() { + PDFViewerApplication.rotatePages(-90); +} + +function webViewerOptionalContentConfig(evt) { + PDFViewerApplication.pdfViewer.optionalContentConfigPromise = evt.promise; +} + +function webViewerSwitchScrollMode(evt) { + PDFViewerApplication.pdfViewer.scrollMode = evt.mode; +} + +function webViewerSwitchSpreadMode(evt) { + PDFViewerApplication.pdfViewer.spreadMode = evt.mode; +} + +function webViewerDocumentProperties() { + PDFViewerApplication.pdfDocumentProperties.open(); +} + +function webViewerFindFromUrlHash(evt) { + PDFViewerApplication.eventBus.dispatch("find", { + source: evt.source, + type: "", + query: evt.query, + phraseSearch: evt.phraseSearch, + caseSensitive: false, + entireWord: false, + highlightAll: true, + findPrevious: false, + matchDiacritics: true + }); +} + +function webViewerUpdateFindMatchesCount({ + matchesCount +}) { + if (PDFViewerApplication.supportsIntegratedFind) { + PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount); + } else { + PDFViewerApplication.findBar.updateResultsCount(matchesCount); + } +} + +function webViewerUpdateFindControlState({ + state, + previous, + matchesCount, + rawQuery +}) { + if (PDFViewerApplication.supportsIntegratedFind) { + PDFViewerApplication.externalServices.updateFindControlState({ + result: state, + findPrevious: previous, + matchesCount, + rawQuery + }); + } else { + PDFViewerApplication.findBar.updateUIState(state, previous, matchesCount); + } +} + +function webViewerScaleChanging(evt) { + PDFViewerApplication.toolbar.setPageScale(evt.presetValue, evt.scale); + PDFViewerApplication.pdfViewer.update(); +} + +function webViewerRotationChanging(evt) { + PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation; + PDFViewerApplication.forceRendering(); + PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber; +} + +function webViewerPageChanging({ + pageNumber, + pageLabel +}) { + PDFViewerApplication.toolbar.setPageNumber(pageNumber, pageLabel); + PDFViewerApplication.secondaryToolbar.setPageNumber(pageNumber); + + if (PDFViewerApplication.pdfSidebar.visibleView === _ui_utils.SidebarView.THUMBS) { + PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(pageNumber); + } +} + +function webViewerResolutionChange(evt) { + PDFViewerApplication.pdfViewer.refresh(); +} + +function webViewerVisibilityChange(evt) { + if (document.visibilityState === "visible") { + setZoomDisabledTimeout(); + } +} + +let zoomDisabledTimeout = null; + +function setZoomDisabledTimeout() { + if (zoomDisabledTimeout) { + clearTimeout(zoomDisabledTimeout); + } + + zoomDisabledTimeout = setTimeout(function () { + zoomDisabledTimeout = null; + }, WHEEL_ZOOM_DISABLED_TIMEOUT); +} + +function webViewerWheel(evt) { + const { + pdfViewer, + supportedMouseWheelZoomModifierKeys + } = PDFViewerApplication; + + if (pdfViewer.isInPresentationMode) { + return; + } + + if (evt.ctrlKey && supportedMouseWheelZoomModifierKeys.ctrlKey || evt.metaKey && supportedMouseWheelZoomModifierKeys.metaKey) { + evt.preventDefault(); + + if (zoomDisabledTimeout || document.visibilityState === "hidden") { + return; + } + + const deltaMode = evt.deltaMode; + const delta = (0, _ui_utils.normalizeWheelEventDirection)(evt); + const previousScale = pdfViewer.currentScale; + let ticks = 0; + + if (deltaMode === WheelEvent.DOM_DELTA_LINE || deltaMode === WheelEvent.DOM_DELTA_PAGE) { + if (Math.abs(delta) >= 1) { + ticks = Math.sign(delta); + } else { + ticks = PDFViewerApplication.accumulateWheelTicks(delta); + } + } else { + const PIXELS_PER_LINE_SCALE = 30; + ticks = PDFViewerApplication.accumulateWheelTicks(delta / PIXELS_PER_LINE_SCALE); + } + + if (ticks < 0) { + PDFViewerApplication.zoomOut(-ticks); + } else if (ticks > 0) { + PDFViewerApplication.zoomIn(ticks); + } + + const currentScale = pdfViewer.currentScale; + + if (previousScale !== currentScale) { + const scaleCorrectionFactor = currentScale / previousScale - 1; + const rect = pdfViewer.container.getBoundingClientRect(); + const dx = evt.clientX - rect.left; + const dy = evt.clientY - rect.top; + pdfViewer.container.scrollLeft += dx * scaleCorrectionFactor; + pdfViewer.container.scrollTop += dy * scaleCorrectionFactor; + } + } else { + setZoomDisabledTimeout(); + } +} + +function webViewerTouchStart(evt) { + if (evt.touches.length > 1) { + evt.preventDefault(); + } +} + +function webViewerClick(evt) { + if (!PDFViewerApplication.secondaryToolbar.isOpen) { + return; + } + + const appConfig = PDFViewerApplication.appConfig; + + if (PDFViewerApplication.pdfViewer.containsElement(evt.target) || appConfig.toolbar.container.contains(evt.target) && evt.target !== appConfig.secondaryToolbar.toggleButton) { + PDFViewerApplication.secondaryToolbar.close(); + } +} + +function webViewerKeyDown(evt) { + if (PDFViewerApplication.overlayManager.active) { + return; + } + + const { + eventBus, + pdfViewer + } = PDFViewerApplication; + const isViewerInPresentationMode = pdfViewer.isInPresentationMode; + let handled = false, + ensureViewerFocused = false; + const cmd = (evt.ctrlKey ? 1 : 0) | (evt.altKey ? 2 : 0) | (evt.shiftKey ? 4 : 0) | (evt.metaKey ? 8 : 0); + + if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) { + switch (evt.keyCode) { + case 70: + if (!PDFViewerApplication.supportsIntegratedFind && !evt.shiftKey) { + PDFViewerApplication.findBar.open(); + handled = true; + } + + break; + + case 71: + if (!PDFViewerApplication.supportsIntegratedFind) { + const { + state + } = PDFViewerApplication.findController; + + if (state) { + const eventState = Object.assign(Object.create(null), state, { + source: window, + type: "again", + findPrevious: cmd === 5 || cmd === 12 + }); + eventBus.dispatch("find", eventState); + } + + handled = true; + } + + break; + + case 61: + case 107: + case 187: + case 171: + if (!isViewerInPresentationMode) { + PDFViewerApplication.zoomIn(); + } + + handled = true; + break; + + case 173: + case 109: + case 189: + if (!isViewerInPresentationMode) { + PDFViewerApplication.zoomOut(); + } + + handled = true; + break; + + case 48: + case 96: + if (!isViewerInPresentationMode) { + setTimeout(function () { + PDFViewerApplication.zoomReset(); + }); + handled = false; + } + + break; + + case 38: + if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { + PDFViewerApplication.page = 1; + handled = true; + ensureViewerFocused = true; + } + + break; + + case 40: + if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { + PDFViewerApplication.page = PDFViewerApplication.pagesCount; + handled = true; + ensureViewerFocused = true; + } + + break; + } + } + + if (cmd === 1 || cmd === 8) { + switch (evt.keyCode) { + case 83: + eventBus.dispatch("download", { + source: window + }); + handled = true; + break; + + case 79: + { + eventBus.dispatch("openfile", { + source: window + }); + handled = true; + } + break; + } + } + + if (cmd === 3 || cmd === 10) { + switch (evt.keyCode) { + case 80: + PDFViewerApplication.requestPresentationMode(); + handled = true; + break; + + case 71: + PDFViewerApplication.appConfig.toolbar.pageNumber.select(); + handled = true; + break; + } + } + + if (handled) { + if (ensureViewerFocused && !isViewerInPresentationMode) { + pdfViewer.focus(); + } + + evt.preventDefault(); + return; + } + + const curElement = (0, _ui_utils.getActiveOrFocusedElement)(); + const curElementTagName = curElement?.tagName.toUpperCase(); + + if (curElementTagName === "INPUT" || curElementTagName === "TEXTAREA" || curElementTagName === "SELECT" || curElement?.isContentEditable) { + if (evt.keyCode !== 27) { + return; + } + } + + if (cmd === 0) { + let turnPage = 0, + turnOnlyIfPageFit = false; + + switch (evt.keyCode) { + case 38: + case 33: + if (pdfViewer.isVerticalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + + turnPage = -1; + break; + + case 8: + if (!isViewerInPresentationMode) { + turnOnlyIfPageFit = true; + } + + turnPage = -1; + break; + + case 37: + if (pdfViewer.isHorizontalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + + case 75: + case 80: + turnPage = -1; + break; + + case 27: + if (PDFViewerApplication.secondaryToolbar.isOpen) { + PDFViewerApplication.secondaryToolbar.close(); + handled = true; + } + + if (!PDFViewerApplication.supportsIntegratedFind && PDFViewerApplication.findBar.opened) { + PDFViewerApplication.findBar.close(); + handled = true; + } + + break; + + case 40: + case 34: + if (pdfViewer.isVerticalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + + turnPage = 1; + break; + + case 13: + case 32: + if (!isViewerInPresentationMode) { + turnOnlyIfPageFit = true; + } + + turnPage = 1; + break; + + case 39: + if (pdfViewer.isHorizontalScrollbarEnabled) { + turnOnlyIfPageFit = true; + } + + case 74: + case 78: + turnPage = 1; + break; + + case 36: + if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { + PDFViewerApplication.page = 1; + handled = true; + ensureViewerFocused = true; + } + + break; + + case 35: + if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { + PDFViewerApplication.page = PDFViewerApplication.pagesCount; + handled = true; + ensureViewerFocused = true; + } + + break; + + case 83: + PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.SELECT); + break; + + case 72: + PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.HAND); + break; + + case 82: + PDFViewerApplication.rotatePages(90); + break; + + case 115: + PDFViewerApplication.pdfSidebar.toggle(); + break; + } + + if (turnPage !== 0 && (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === "page-fit")) { + if (turnPage > 0) { + pdfViewer.nextPage(); + } else { + pdfViewer.previousPage(); + } + + handled = true; + } + } + + if (cmd === 4) { + switch (evt.keyCode) { + case 13: + case 32: + if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== "page-fit") { + break; + } + + pdfViewer.previousPage(); + handled = true; + break; + + case 82: + PDFViewerApplication.rotatePages(-90); + break; + } + } + + if (!handled && !isViewerInPresentationMode) { + if (evt.keyCode >= 33 && evt.keyCode <= 40 || evt.keyCode === 32 && curElementTagName !== "BUTTON") { + ensureViewerFocused = true; + } + } + + if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) { + pdfViewer.focus(); + } + + if (handled) { + evt.preventDefault(); + } +} + +function beforeUnload(evt) { + evt.preventDefault(); + evt.returnValue = ""; + return false; +} + +function webViewerAnnotationEditorStatesChanged(data) { + PDFViewerApplication.externalServices.updateEditorStates(data); +} + +const PDFPrintServiceFactory = { + instance: { + supportsPrinting: false, + + createPrintService() { + throw new Error("Not implemented: createPrintService"); + } + + } +}; +exports.PDFPrintServiceFactory = PDFPrintServiceFactory; + +/***/ }), +/* 5 */ +/***/ ((module) => { + + + +let pdfjsLib; + +if (typeof window !== "undefined" && window["pdfjs-dist/build/pdf"]) { + pdfjsLib = window["pdfjs-dist/build/pdf"]; +} else { + pdfjsLib = require("../build/pdf.js"); +} + +module.exports = pdfjsLib; + +/***/ }), +/* 6 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.WaitOnType = exports.EventBus = exports.AutomationEventBus = void 0; +exports.waitOnEventOrTimeout = waitOnEventOrTimeout; +const WaitOnType = { + EVENT: "event", + TIMEOUT: "timeout" +}; +exports.WaitOnType = WaitOnType; + +function waitOnEventOrTimeout({ + target, + name, + delay = 0 +}) { + return new Promise(function (resolve, reject) { + if (typeof target !== "object" || !(name && typeof name === "string") || !(Number.isInteger(delay) && delay >= 0)) { + throw new Error("waitOnEventOrTimeout - invalid parameters."); + } + + function handler(type) { + if (target instanceof EventBus) { + target._off(name, eventHandler); + } else { + target.removeEventListener(name, eventHandler); + } + + if (timeout) { + clearTimeout(timeout); + } + + resolve(type); + } + + const eventHandler = handler.bind(null, WaitOnType.EVENT); + + if (target instanceof EventBus) { + target._on(name, eventHandler); + } else { + target.addEventListener(name, eventHandler); + } + + const timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT); + const timeout = setTimeout(timeoutHandler, delay); + }); +} + +class EventBus { + constructor() { + this._listeners = Object.create(null); + } + + on(eventName, listener, options = null) { + this._on(eventName, listener, { + external: true, + once: options?.once + }); + } + + off(eventName, listener, options = null) { + this._off(eventName, listener, { + external: true, + once: options?.once + }); + } + + dispatch(eventName, data) { + const eventListeners = this._listeners[eventName]; + + if (!eventListeners || eventListeners.length === 0) { + return; + } + + let externalListeners; + + for (const { + listener, + external, + once + } of eventListeners.slice(0)) { + if (once) { + this._off(eventName, listener); + } + + if (external) { + (externalListeners ||= []).push(listener); + continue; + } + + listener(data); + } + + if (externalListeners) { + for (const listener of externalListeners) { + listener(data); + } + + externalListeners = null; + } + } + + _on(eventName, listener, options = null) { + const eventListeners = this._listeners[eventName] ||= []; + eventListeners.push({ + listener, + external: options?.external === true, + once: options?.once === true + }); + } + + _off(eventName, listener, options = null) { + const eventListeners = this._listeners[eventName]; + + if (!eventListeners) { + return; + } + + for (let i = 0, ii = eventListeners.length; i < ii; i++) { + if (eventListeners[i].listener === listener) { + eventListeners.splice(i, 1); + return; + } + } + } + +} + +exports.EventBus = EventBus; + +class AutomationEventBus extends EventBus { + dispatch(eventName, data) { + throw new Error("Not implemented: AutomationEventBus.dispatch"); + } + +} + +exports.AutomationEventBus = AutomationEventBus; + +/***/ }), +/* 7 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFCursorTools = exports.CursorTool = void 0; + +var _grab_to_pan = __webpack_require__(8); + +var _ui_utils = __webpack_require__(1); + +const CursorTool = { + SELECT: 0, + HAND: 1, + ZOOM: 2 +}; +exports.CursorTool = CursorTool; + +class PDFCursorTools { + constructor({ + container, + eventBus, + cursorToolOnLoad = CursorTool.SELECT + }) { + this.container = container; + this.eventBus = eventBus; + this.active = CursorTool.SELECT; + this.activeBeforePresentationMode = null; + this.handTool = new _grab_to_pan.GrabToPan({ + element: this.container + }); + this.#addEventListeners(); + Promise.resolve().then(() => { + this.switchTool(cursorToolOnLoad); + }); + } + + get activeTool() { + return this.active; + } + + switchTool(tool) { + if (this.activeBeforePresentationMode !== null) { + return; + } + + if (tool === this.active) { + return; + } + + const disableActiveTool = () => { + switch (this.active) { + case CursorTool.SELECT: + break; + + case CursorTool.HAND: + this.handTool.deactivate(); + break; + + case CursorTool.ZOOM: + } + }; + + switch (tool) { + case CursorTool.SELECT: + disableActiveTool(); + break; + + case CursorTool.HAND: + disableActiveTool(); + this.handTool.activate(); + break; + + case CursorTool.ZOOM: + default: + console.error(`switchTool: "${tool}" is an unsupported value.`); + return; + } + + this.active = tool; + this.#dispatchEvent(); + } + + #dispatchEvent() { + this.eventBus.dispatch("cursortoolchanged", { + source: this, + tool: this.active + }); + } + + #addEventListeners() { + this.eventBus._on("switchcursortool", evt => { + this.switchTool(evt.tool); + }); + + this.eventBus._on("presentationmodechanged", evt => { + switch (evt.state) { + case _ui_utils.PresentationModeState.FULLSCREEN: + { + const previouslyActive = this.active; + this.switchTool(CursorTool.SELECT); + this.activeBeforePresentationMode = previouslyActive; + break; + } + + case _ui_utils.PresentationModeState.NORMAL: + { + const previouslyActive = this.activeBeforePresentationMode; + this.activeBeforePresentationMode = null; + this.switchTool(previouslyActive); + break; + } + } + }); + } + +} + +exports.PDFCursorTools = PDFCursorTools; + +/***/ }), +/* 8 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GrabToPan = void 0; +const CSS_CLASS_GRAB = "grab-to-pan-grab"; + +class GrabToPan { + constructor(options) { + this.element = options.element; + this.document = options.element.ownerDocument; + + if (typeof options.ignoreTarget === "function") { + this.ignoreTarget = options.ignoreTarget; + } + + this.onActiveChanged = options.onActiveChanged; + this.activate = this.activate.bind(this); + this.deactivate = this.deactivate.bind(this); + this.toggle = this.toggle.bind(this); + this._onMouseDown = this.#onMouseDown.bind(this); + this._onMouseMove = this.#onMouseMove.bind(this); + this._endPan = this.#endPan.bind(this); + const overlay = this.overlay = document.createElement("div"); + overlay.className = "grab-to-pan-grabbing"; + } + + activate() { + if (!this.active) { + this.active = true; + this.element.addEventListener("mousedown", this._onMouseDown, true); + this.element.classList.add(CSS_CLASS_GRAB); + this.onActiveChanged?.(true); + } + } + + deactivate() { + if (this.active) { + this.active = false; + this.element.removeEventListener("mousedown", this._onMouseDown, true); + + this._endPan(); + + this.element.classList.remove(CSS_CLASS_GRAB); + this.onActiveChanged?.(false); + } + } + + toggle() { + if (this.active) { + this.deactivate(); + } else { + this.activate(); + } + } + + ignoreTarget(node) { + return node.matches("a[href], a[href] *, input, textarea, button, button *, select, option"); + } + + #onMouseDown(event) { + if (event.button !== 0 || this.ignoreTarget(event.target)) { + return; + } + + if (event.originalTarget) { + try { + event.originalTarget.tagName; + } catch (e) { + return; + } + } + + this.scrollLeftStart = this.element.scrollLeft; + this.scrollTopStart = this.element.scrollTop; + this.clientXStart = event.clientX; + this.clientYStart = event.clientY; + this.document.addEventListener("mousemove", this._onMouseMove, true); + this.document.addEventListener("mouseup", this._endPan, true); + this.element.addEventListener("scroll", this._endPan, true); + event.preventDefault(); + event.stopPropagation(); + const focusedElement = document.activeElement; + + if (focusedElement && !focusedElement.contains(event.target)) { + focusedElement.blur(); + } + } + + #onMouseMove(event) { + this.element.removeEventListener("scroll", this._endPan, true); + + if (!(event.buttons & 1)) { + this._endPan(); + + return; + } + + const xDiff = event.clientX - this.clientXStart; + const yDiff = event.clientY - this.clientYStart; + const scrollTop = this.scrollTopStart - yDiff; + const scrollLeft = this.scrollLeftStart - xDiff; + + if (this.element.scrollTo) { + this.element.scrollTo({ + top: scrollTop, + left: scrollLeft, + behavior: "instant" + }); + } else { + this.element.scrollTop = scrollTop; + this.element.scrollLeft = scrollLeft; + } + + if (!this.overlay.parentNode) { + document.body.append(this.overlay); + } + } + + #endPan() { + this.element.removeEventListener("scroll", this._endPan, true); + this.document.removeEventListener("mousemove", this._onMouseMove, true); + this.document.removeEventListener("mouseup", this._endPan, true); + this.overlay.remove(); + } + +} + +exports.GrabToPan = GrabToPan; + +/***/ }), +/* 9 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationEditorParams = void 0; + +var _pdfjsLib = __webpack_require__(5); + +class AnnotationEditorParams { + constructor(options, eventBus) { + this.eventBus = eventBus; + this.#bindListeners(options); + } + + #bindListeners({ + editorFreeTextFontSize, + editorFreeTextColor, + editorInkColor, + editorInkThickness, + editorInkOpacity + }) { + editorFreeTextFontSize.addEventListener("input", evt => { + this.eventBus.dispatch("switchannotationeditorparams", { + source: this, + type: _pdfjsLib.AnnotationEditorParamsType.FREETEXT_SIZE, + value: editorFreeTextFontSize.valueAsNumber + }); + }); + editorFreeTextColor.addEventListener("input", evt => { + this.eventBus.dispatch("switchannotationeditorparams", { + source: this, + type: _pdfjsLib.AnnotationEditorParamsType.FREETEXT_COLOR, + value: editorFreeTextColor.value + }); + }); + editorInkColor.addEventListener("input", evt => { + this.eventBus.dispatch("switchannotationeditorparams", { + source: this, + type: _pdfjsLib.AnnotationEditorParamsType.INK_COLOR, + value: editorInkColor.value + }); + }); + editorInkThickness.addEventListener("input", evt => { + this.eventBus.dispatch("switchannotationeditorparams", { + source: this, + type: _pdfjsLib.AnnotationEditorParamsType.INK_THICKNESS, + value: editorInkThickness.valueAsNumber + }); + }); + editorInkOpacity.addEventListener("input", evt => { + this.eventBus.dispatch("switchannotationeditorparams", { + source: this, + type: _pdfjsLib.AnnotationEditorParamsType.INK_OPACITY, + value: editorInkOpacity.valueAsNumber + }); + }); + + this.eventBus._on("annotationeditorparamschanged", evt => { + for (const [type, value] of evt.details) { + switch (type) { + case _pdfjsLib.AnnotationEditorParamsType.FREETEXT_SIZE: + editorFreeTextFontSize.value = value; + break; + + case _pdfjsLib.AnnotationEditorParamsType.FREETEXT_COLOR: + editorFreeTextColor.value = value; + break; + + case _pdfjsLib.AnnotationEditorParamsType.INK_COLOR: + editorInkColor.value = value; + break; + + case _pdfjsLib.AnnotationEditorParamsType.INK_THICKNESS: + editorInkThickness.value = value; + break; + + case _pdfjsLib.AnnotationEditorParamsType.INK_OPACITY: + editorInkOpacity.value = value; + break; + } + } + }); + } + +} + +exports.AnnotationEditorParams = AnnotationEditorParams; + +/***/ }), +/* 10 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.OverlayManager = void 0; + +class OverlayManager { + #overlays = new WeakMap(); + #active = null; + + get active() { + return this.#active; + } + + async register(dialog, canForceClose = false) { + if (typeof dialog !== "object") { + throw new Error("Not enough parameters."); + } else if (this.#overlays.has(dialog)) { + throw new Error("The overlay is already registered."); + } + + this.#overlays.set(dialog, { + canForceClose + }); + dialog.addEventListener("cancel", evt => { + this.#active = null; + }); + } + + async unregister(dialog) { + if (!this.#overlays.has(dialog)) { + throw new Error("The overlay does not exist."); + } else if (this.#active === dialog) { + throw new Error("The overlay cannot be removed while it is active."); + } + + this.#overlays.delete(dialog); + } + + async open(dialog) { + if (!this.#overlays.has(dialog)) { + throw new Error("The overlay does not exist."); + } else if (this.#active) { + if (this.#active === dialog) { + throw new Error("The overlay is already active."); + } else if (this.#overlays.get(dialog).canForceClose) { + await this.close(); + } else { + throw new Error("Another overlay is currently active."); + } + } + + this.#active = dialog; + dialog.showModal(); + } + + async close(dialog = this.#active) { + if (!this.#overlays.has(dialog)) { + throw new Error("The overlay does not exist."); + } else if (!this.#active) { + throw new Error("The overlay is currently not active."); + } else if (this.#active !== dialog) { + throw new Error("Another overlay is currently active."); + } + + dialog.close(); + this.#active = null; + } + +} + +exports.OverlayManager = OverlayManager; + +/***/ }), +/* 11 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PasswordPrompt = void 0; + +var _pdfjsLib = __webpack_require__(5); + +class PasswordPrompt { + #activeCapability = null; + #updateCallback = null; + #reason = null; + + constructor(options, overlayManager, l10n, isViewerEmbedded = false) { + this.dialog = options.dialog; + this.label = options.label; + this.input = options.input; + this.submitButton = options.submitButton; + this.cancelButton = options.cancelButton; + this.overlayManager = overlayManager; + this.l10n = l10n; + this._isViewerEmbedded = isViewerEmbedded; + this.submitButton.addEventListener("click", this.#verify.bind(this)); + this.cancelButton.addEventListener("click", this.close.bind(this)); + this.input.addEventListener("keydown", e => { + if (e.keyCode === 13) { + this.#verify(); + } + }); + this.overlayManager.register(this.dialog, true); + this.dialog.addEventListener("close", this.#cancel.bind(this)); + } + + async open() { + if (this.#activeCapability) { + await this.#activeCapability.promise; + } + + this.#activeCapability = (0, _pdfjsLib.createPromiseCapability)(); + + try { + await this.overlayManager.open(this.dialog); + } catch (ex) { + this.#activeCapability = null; + throw ex; + } + + const passwordIncorrect = this.#reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD; + + if (!this._isViewerEmbedded || passwordIncorrect) { + this.input.focus(); + } + + this.label.textContent = await this.l10n.get(`password_${passwordIncorrect ? "invalid" : "label"}`); + } + + async close() { + if (this.overlayManager.active === this.dialog) { + this.overlayManager.close(this.dialog); + } + } + + #verify() { + const password = this.input.value; + + if (password?.length > 0) { + this.#invokeCallback(password); + } + } + + #cancel() { + this.#invokeCallback(new Error("PasswordPrompt cancelled.")); + this.#activeCapability.resolve(); + } + + #invokeCallback(password) { + if (!this.#updateCallback) { + return; + } + + this.close(); + this.input.value = ""; + this.#updateCallback(password); + this.#updateCallback = null; + } + + async setUpdateCallback(updateCallback, reason) { + if (this.#activeCapability) { + await this.#activeCapability.promise; + } + + this.#updateCallback = updateCallback; + this.#reason = reason; + } + +} + +exports.PasswordPrompt = PasswordPrompt; + +/***/ }), +/* 12 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFAttachmentViewer = void 0; + +var _pdfjsLib = __webpack_require__(5); + +var _base_tree_viewer = __webpack_require__(13); + +var _event_utils = __webpack_require__(6); + +class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer { + constructor(options) { + super(options); + this.downloadManager = options.downloadManager; + + this.eventBus._on("fileattachmentannotation", this.#appendAttachment.bind(this)); + } + + reset(keepRenderedCapability = false) { + super.reset(); + this._attachments = null; + + if (!keepRenderedCapability) { + this._renderedCapability = (0, _pdfjsLib.createPromiseCapability)(); + } + + this._pendingDispatchEvent = false; + } + + async _dispatchEvent(attachmentsCount) { + this._renderedCapability.resolve(); + + if (attachmentsCount === 0 && !this._pendingDispatchEvent) { + this._pendingDispatchEvent = true; + await (0, _event_utils.waitOnEventOrTimeout)({ + target: this.eventBus, + name: "annotationlayerrendered", + delay: 1000 + }); + + if (!this._pendingDispatchEvent) { + return; + } + } + + this._pendingDispatchEvent = false; + this.eventBus.dispatch("attachmentsloaded", { + source: this, + attachmentsCount + }); + } + + _bindLink(element, { + content, + filename + }) { + element.onclick = () => { + this.downloadManager.openOrDownloadData(element, content, filename); + return false; + }; + } + + render({ + attachments, + keepRenderedCapability = false + }) { + if (this._attachments) { + this.reset(keepRenderedCapability); + } + + this._attachments = attachments || null; + + if (!attachments) { + this._dispatchEvent(0); + + return; + } + + const names = Object.keys(attachments).sort(function (a, b) { + return a.toLowerCase().localeCompare(b.toLowerCase()); + }); + const fragment = document.createDocumentFragment(); + let attachmentsCount = 0; + + for (const name of names) { + const item = attachments[name]; + const content = item.content, + filename = (0, _pdfjsLib.getFilenameFromUrl)(item.filename); + const div = document.createElement("div"); + div.className = "treeItem"; + const element = document.createElement("a"); + + this._bindLink(element, { + content, + filename + }); + + element.textContent = this._normalizeTextContent(filename); + div.append(element); + fragment.append(div); + attachmentsCount++; + } + + this._finishRendering(fragment, attachmentsCount); + } + + #appendAttachment({ + filename, + content + }) { + const renderedPromise = this._renderedCapability.promise; + renderedPromise.then(() => { + if (renderedPromise !== this._renderedCapability.promise) { + return; + } + + const attachments = this._attachments || Object.create(null); + + for (const name in attachments) { + if (filename === name) { + return; + } + } + + attachments[filename] = { + filename, + content + }; + this.render({ + attachments, + keepRenderedCapability: true + }); + }); + } + +} + +exports.PDFAttachmentViewer = PDFAttachmentViewer; + +/***/ }), +/* 13 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BaseTreeViewer = void 0; + +var _ui_utils = __webpack_require__(1); + +const TREEITEM_OFFSET_TOP = -100; +const TREEITEM_SELECTED_CLASS = "selected"; + +class BaseTreeViewer { + constructor(options) { + if (this.constructor === BaseTreeViewer) { + throw new Error("Cannot initialize BaseTreeViewer."); + } + + this.container = options.container; + this.eventBus = options.eventBus; + this.reset(); + } + + reset() { + this._pdfDocument = null; + this._lastToggleIsShow = true; + this._currentTreeItem = null; + this.container.textContent = ""; + this.container.classList.remove("treeWithDeepNesting"); + } + + _dispatchEvent(count) { + throw new Error("Not implemented: _dispatchEvent"); + } + + _bindLink(element, params) { + throw new Error("Not implemented: _bindLink"); + } + + _normalizeTextContent(str) { + return (0, _ui_utils.removeNullCharacters)(str, true) || "\u2013"; + } + + _addToggleButton(div, hidden = false) { + const toggler = document.createElement("div"); + toggler.className = "treeItemToggler"; + + if (hidden) { + toggler.classList.add("treeItemsHidden"); + } + + toggler.onclick = evt => { + evt.stopPropagation(); + toggler.classList.toggle("treeItemsHidden"); + + if (evt.shiftKey) { + const shouldShowAll = !toggler.classList.contains("treeItemsHidden"); + + this._toggleTreeItem(div, shouldShowAll); + } + }; + + div.prepend(toggler); + } + + _toggleTreeItem(root, show = false) { + this._lastToggleIsShow = show; + + for (const toggler of root.querySelectorAll(".treeItemToggler")) { + toggler.classList.toggle("treeItemsHidden", !show); + } + } + + _toggleAllTreeItems() { + this._toggleTreeItem(this.container, !this._lastToggleIsShow); + } + + _finishRendering(fragment, count, hasAnyNesting = false) { + if (hasAnyNesting) { + this.container.classList.add("treeWithDeepNesting"); + this._lastToggleIsShow = !fragment.querySelector(".treeItemsHidden"); + } + + this.container.append(fragment); + + this._dispatchEvent(count); + } + + render(params) { + throw new Error("Not implemented: render"); + } + + _updateCurrentTreeItem(treeItem = null) { + if (this._currentTreeItem) { + this._currentTreeItem.classList.remove(TREEITEM_SELECTED_CLASS); + + this._currentTreeItem = null; + } + + if (treeItem) { + treeItem.classList.add(TREEITEM_SELECTED_CLASS); + this._currentTreeItem = treeItem; + } + } + + _scrollToCurrentTreeItem(treeItem) { + if (!treeItem) { + return; + } + + let currentNode = treeItem.parentNode; + + while (currentNode && currentNode !== this.container) { + if (currentNode.classList.contains("treeItem")) { + const toggler = currentNode.firstElementChild; + toggler?.classList.remove("treeItemsHidden"); + } + + currentNode = currentNode.parentNode; + } + + this._updateCurrentTreeItem(treeItem); + + this.container.scrollTo(treeItem.offsetLeft, treeItem.offsetTop + TREEITEM_OFFSET_TOP); + } + +} + +exports.BaseTreeViewer = BaseTreeViewer; + +/***/ }), +/* 14 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFDocumentProperties = void 0; + +var _pdfjsLib = __webpack_require__(5); + +var _ui_utils = __webpack_require__(1); + +const DEFAULT_FIELD_CONTENT = "-"; +const NON_METRIC_LOCALES = ["en-us", "en-lr", "my"]; +const US_PAGE_NAMES = { + "8.5x11": "Letter", + "8.5x14": "Legal" +}; +const METRIC_PAGE_NAMES = { + "297x420": "A3", + "210x297": "A4" +}; + +function getPageName(size, isPortrait, pageNames) { + const width = isPortrait ? size.width : size.height; + const height = isPortrait ? size.height : size.width; + return pageNames[`${width}x${height}`]; +} + +class PDFDocumentProperties { + #fieldData = null; + + constructor({ + dialog, + fields, + closeButton + }, overlayManager, eventBus, l10n, fileNameLookup) { + this.dialog = dialog; + this.fields = fields; + this.overlayManager = overlayManager; + this.l10n = l10n; + this._fileNameLookup = fileNameLookup; + this.#reset(); + closeButton.addEventListener("click", this.close.bind(this)); + this.overlayManager.register(this.dialog); + + eventBus._on("pagechanging", evt => { + this._currentPageNumber = evt.pageNumber; + }); + + eventBus._on("rotationchanging", evt => { + this._pagesRotation = evt.pagesRotation; + }); + + this._isNonMetricLocale = true; + l10n.getLanguage().then(locale => { + this._isNonMetricLocale = NON_METRIC_LOCALES.includes(locale); + }); + } + + async open() { + await Promise.all([this.overlayManager.open(this.dialog), this._dataAvailableCapability.promise]); + const currentPageNumber = this._currentPageNumber; + const pagesRotation = this._pagesRotation; + + if (this.#fieldData && currentPageNumber === this.#fieldData._currentPageNumber && pagesRotation === this.#fieldData._pagesRotation) { + this.#updateUI(); + return; + } + + const { + info, + contentLength + } = await this.pdfDocument.getMetadata(); + const [fileName, fileSize, creationDate, modificationDate, pageSize, isLinearized] = await Promise.all([this._fileNameLookup(), this.#parseFileSize(contentLength), this.#parseDate(info.CreationDate), this.#parseDate(info.ModDate), this.pdfDocument.getPage(currentPageNumber).then(pdfPage => { + return this.#parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation); + }), this.#parseLinearization(info.IsLinearized)]); + this.#fieldData = Object.freeze({ + fileName, + fileSize, + title: info.Title, + author: info.Author, + subject: info.Subject, + keywords: info.Keywords, + creationDate, + modificationDate, + creator: info.Creator, + producer: info.Producer, + version: info.PDFFormatVersion, + pageCount: this.pdfDocument.numPages, + pageSize, + linearized: isLinearized, + _currentPageNumber: currentPageNumber, + _pagesRotation: pagesRotation + }); + this.#updateUI(); + const { + length + } = await this.pdfDocument.getDownloadInfo(); + + if (contentLength === length) { + return; + } + + const data = Object.assign(Object.create(null), this.#fieldData); + data.fileSize = await this.#parseFileSize(length); + this.#fieldData = Object.freeze(data); + this.#updateUI(); + } + + async close() { + this.overlayManager.close(this.dialog); + } + + setDocument(pdfDocument) { + if (this.pdfDocument) { + this.#reset(); + this.#updateUI(true); + } + + if (!pdfDocument) { + return; + } + + this.pdfDocument = pdfDocument; + + this._dataAvailableCapability.resolve(); + } + + #reset() { + this.pdfDocument = null; + this.#fieldData = null; + this._dataAvailableCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._currentPageNumber = 1; + this._pagesRotation = 0; + } + + #updateUI(reset = false) { + if (reset || !this.#fieldData) { + for (const id in this.fields) { + this.fields[id].textContent = DEFAULT_FIELD_CONTENT; + } + + return; + } + + if (this.overlayManager.active !== this.dialog) { + return; + } + + for (const id in this.fields) { + const content = this.#fieldData[id]; + this.fields[id].textContent = content || content === 0 ? content : DEFAULT_FIELD_CONTENT; + } + } + + async #parseFileSize(fileSize = 0) { + const kb = fileSize / 1024, + mb = kb / 1024; + + if (!kb) { + return undefined; + } + + return this.l10n.get(`document_properties_${mb >= 1 ? "mb" : "kb"}`, { + size_mb: mb >= 1 && (+mb.toPrecision(3)).toLocaleString(), + size_kb: mb < 1 && (+kb.toPrecision(3)).toLocaleString(), + size_b: fileSize.toLocaleString() + }); + } + + async #parsePageSize(pageSizeInches, pagesRotation) { + if (!pageSizeInches) { + return undefined; + } + + if (pagesRotation % 180 !== 0) { + pageSizeInches = { + width: pageSizeInches.height, + height: pageSizeInches.width + }; + } + + const isPortrait = (0, _ui_utils.isPortraitOrientation)(pageSizeInches); + let sizeInches = { + width: Math.round(pageSizeInches.width * 100) / 100, + height: Math.round(pageSizeInches.height * 100) / 100 + }; + let sizeMillimeters = { + width: Math.round(pageSizeInches.width * 25.4 * 10) / 10, + height: Math.round(pageSizeInches.height * 25.4 * 10) / 10 + }; + let rawName = getPageName(sizeInches, isPortrait, US_PAGE_NAMES) || getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES); + + if (!rawName && !(Number.isInteger(sizeMillimeters.width) && Number.isInteger(sizeMillimeters.height))) { + const exactMillimeters = { + width: pageSizeInches.width * 25.4, + height: pageSizeInches.height * 25.4 + }; + const intMillimeters = { + width: Math.round(sizeMillimeters.width), + height: Math.round(sizeMillimeters.height) + }; + + if (Math.abs(exactMillimeters.width - intMillimeters.width) < 0.1 && Math.abs(exactMillimeters.height - intMillimeters.height) < 0.1) { + rawName = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES); + + if (rawName) { + sizeInches = { + width: Math.round(intMillimeters.width / 25.4 * 100) / 100, + height: Math.round(intMillimeters.height / 25.4 * 100) / 100 + }; + sizeMillimeters = intMillimeters; + } + } + } + + const [{ + width, + height + }, unit, name, orientation] = await Promise.all([this._isNonMetricLocale ? sizeInches : sizeMillimeters, this.l10n.get(`document_properties_page_size_unit_${this._isNonMetricLocale ? "inches" : "millimeters"}`), rawName && this.l10n.get(`document_properties_page_size_name_${rawName.toLowerCase()}`), this.l10n.get(`document_properties_page_size_orientation_${isPortrait ? "portrait" : "landscape"}`)]); + return this.l10n.get(`document_properties_page_size_dimension_${name ? "name_" : ""}string`, { + width: width.toLocaleString(), + height: height.toLocaleString(), + unit, + name, + orientation + }); + } + + async #parseDate(inputDate) { + const dateObject = _pdfjsLib.PDFDateString.toDateObject(inputDate); + + if (!dateObject) { + return undefined; + } + + return this.l10n.get("document_properties_date_string", { + date: dateObject.toLocaleDateString(), + time: dateObject.toLocaleTimeString() + }); + } + + #parseLinearization(isLinearized) { + return this.l10n.get(`document_properties_linearized_${isLinearized ? "yes" : "no"}`); + } + +} + +exports.PDFDocumentProperties = PDFDocumentProperties; + +/***/ }), +/* 15 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFFindBar = void 0; + +var _pdf_find_controller = __webpack_require__(16); + +const MATCHES_COUNT_LIMIT = 1000; + +class PDFFindBar { + constructor(options, eventBus, l10n) { + this.opened = false; + this.bar = options.bar; + this.toggleButton = options.toggleButton; + this.findField = options.findField; + this.highlightAll = options.highlightAllCheckbox; + this.caseSensitive = options.caseSensitiveCheckbox; + this.matchDiacritics = options.matchDiacriticsCheckbox; + this.entireWord = options.entireWordCheckbox; + this.findMsg = options.findMsg; + this.findResultsCount = options.findResultsCount; + this.findPreviousButton = options.findPreviousButton; + this.findNextButton = options.findNextButton; + this.eventBus = eventBus; + this.l10n = l10n; + this.toggleButton.addEventListener("click", () => { + this.toggle(); + }); + this.findField.addEventListener("input", () => { + this.dispatchEvent(""); + }); + this.bar.addEventListener("keydown", e => { + switch (e.keyCode) { + case 13: + if (e.target === this.findField) { + this.dispatchEvent("again", e.shiftKey); + } + + break; + + case 27: + this.close(); + break; + } + }); + this.findPreviousButton.addEventListener("click", () => { + this.dispatchEvent("again", true); + }); + this.findNextButton.addEventListener("click", () => { + this.dispatchEvent("again", false); + }); + this.highlightAll.addEventListener("click", () => { + this.dispatchEvent("highlightallchange"); + }); + this.caseSensitive.addEventListener("click", () => { + this.dispatchEvent("casesensitivitychange"); + }); + this.entireWord.addEventListener("click", () => { + this.dispatchEvent("entirewordchange"); + }); + this.matchDiacritics.addEventListener("click", () => { + this.dispatchEvent("diacriticmatchingchange"); + }); + + this.eventBus._on("resize", this.#adjustWidth.bind(this)); + } + + reset() { + this.updateUIState(); + } + + dispatchEvent(type, findPrev = false) { + this.eventBus.dispatch("find", { + source: this, + type, + query: this.findField.value, + phraseSearch: true, + caseSensitive: this.caseSensitive.checked, + entireWord: this.entireWord.checked, + highlightAll: this.highlightAll.checked, + findPrevious: findPrev, + matchDiacritics: this.matchDiacritics.checked + }); + } + + updateUIState(state, previous, matchesCount) { + let findMsg = Promise.resolve(""); + let status = ""; + + switch (state) { + case _pdf_find_controller.FindState.FOUND: + break; + + case _pdf_find_controller.FindState.PENDING: + status = "pending"; + break; + + case _pdf_find_controller.FindState.NOT_FOUND: + findMsg = this.l10n.get("find_not_found"); + status = "notFound"; + break; + + case _pdf_find_controller.FindState.WRAPPED: + findMsg = this.l10n.get(`find_reached_${previous ? "top" : "bottom"}`); + break; + } + + this.findField.setAttribute("data-status", status); + this.findField.setAttribute("aria-invalid", state === _pdf_find_controller.FindState.NOT_FOUND); + findMsg.then(msg => { + this.findMsg.textContent = msg; + this.#adjustWidth(); + }); + this.updateResultsCount(matchesCount); + } + + updateResultsCount({ + current = 0, + total = 0 + } = {}) { + const limit = MATCHES_COUNT_LIMIT; + let matchCountMsg = Promise.resolve(""); + + if (total > 0) { + if (total > limit) { + let key = "find_match_count_limit"; + matchCountMsg = this.l10n.get(key, { + limit + }); + } else { + let key = "find_match_count"; + matchCountMsg = this.l10n.get(key, { + current, + total + }); + } + } + + matchCountMsg.then(msg => { + this.findResultsCount.textContent = msg; + this.#adjustWidth(); + }); + } + + open() { + if (!this.opened) { + this.opened = true; + this.toggleButton.classList.add("toggled"); + this.toggleButton.setAttribute("aria-expanded", "true"); + this.bar.classList.remove("hidden"); + } + + this.findField.select(); + this.findField.focus(); + this.#adjustWidth(); + } + + close() { + if (!this.opened) { + return; + } + + this.opened = false; + this.toggleButton.classList.remove("toggled"); + this.toggleButton.setAttribute("aria-expanded", "false"); + this.bar.classList.add("hidden"); + this.eventBus.dispatch("findbarclose", { + source: this + }); + } + + toggle() { + if (this.opened) { + this.close(); + } else { + this.open(); + } + } + + #adjustWidth() { + if (!this.opened) { + return; + } + + this.bar.classList.remove("wrapContainers"); + const findbarHeight = this.bar.clientHeight; + const inputContainerHeight = this.bar.firstElementChild.clientHeight; + + if (findbarHeight > inputContainerHeight) { + this.bar.classList.add("wrapContainers"); + } + } + +} + +exports.PDFFindBar = PDFFindBar; + +/***/ }), +/* 16 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFFindController = exports.FindState = void 0; + +var _ui_utils = __webpack_require__(1); + +var _pdfjsLib = __webpack_require__(5); + +var _pdf_find_utils = __webpack_require__(17); + +const FindState = { + FOUND: 0, + NOT_FOUND: 1, + WRAPPED: 2, + PENDING: 3 +}; +exports.FindState = FindState; +const FIND_TIMEOUT = 250; +const MATCH_SCROLL_OFFSET_TOP = -50; +const MATCH_SCROLL_OFFSET_LEFT = -400; +const CHARACTERS_TO_NORMALIZE = { + "\u2010": "-", + "\u2018": "'", + "\u2019": "'", + "\u201A": "'", + "\u201B": "'", + "\u201C": '"', + "\u201D": '"', + "\u201E": '"', + "\u201F": '"', + "\u00BC": "1/4", + "\u00BD": "1/2", + "\u00BE": "3/4" +}; +const DIACRITICS_EXCEPTION = new Set([0x3099, 0x309a, 0x094d, 0x09cd, 0x0a4d, 0x0acd, 0x0b4d, 0x0bcd, 0x0c4d, 0x0ccd, 0x0d3b, 0x0d3c, 0x0d4d, 0x0dca, 0x0e3a, 0x0eba, 0x0f84, 0x1039, 0x103a, 0x1714, 0x1734, 0x17d2, 0x1a60, 0x1b44, 0x1baa, 0x1bab, 0x1bf2, 0x1bf3, 0x2d7f, 0xa806, 0xa82c, 0xa8c4, 0xa953, 0xa9c0, 0xaaf6, 0xabed, 0x0c56, 0x0f71, 0x0f72, 0x0f7a, 0x0f7b, 0x0f7c, 0x0f7d, 0x0f80, 0x0f74]); +const DIACRITICS_EXCEPTION_STR = [...DIACRITICS_EXCEPTION.values()].map(x => String.fromCharCode(x)).join(""); +const DIACRITICS_REG_EXP = /\p{M}+/gu; +const SPECIAL_CHARS_REG_EXP = /([.*+?^${}()|[\]\\])|(\p{P})|(\s+)|(\p{M})|(\p{L})/gu; +const NOT_DIACRITIC_FROM_END_REG_EXP = /([^\p{M}])\p{M}*$/u; +const NOT_DIACRITIC_FROM_START_REG_EXP = /^\p{M}*([^\p{M}])/u; +const SYLLABLES_REG_EXP = /[\uAC00-\uD7AF\uFA6C\uFACF-\uFAD1\uFAD5-\uFAD7]+/g; +const SYLLABLES_LENGTHS = new Map(); +const FIRST_CHAR_SYLLABLES_REG_EXP = "[\\u1100-\\u1112\\ud7a4-\\ud7af\\ud84a\\ud84c\\ud850\\ud854\\ud857\\ud85f]"; +let noSyllablesRegExp = null; +let withSyllablesRegExp = null; + +function normalize(text) { + const syllablePositions = []; + let m; + + while ((m = SYLLABLES_REG_EXP.exec(text)) !== null) { + let { + index + } = m; + + for (const char of m[0]) { + let len = SYLLABLES_LENGTHS.get(char); + + if (!len) { + len = char.normalize("NFD").length; + SYLLABLES_LENGTHS.set(char, len); + } + + syllablePositions.push([len, index++]); + } + } + + let normalizationRegex; + + if (syllablePositions.length === 0 && noSyllablesRegExp) { + normalizationRegex = noSyllablesRegExp; + } else if (syllablePositions.length > 0 && withSyllablesRegExp) { + normalizationRegex = withSyllablesRegExp; + } else { + const replace = Object.keys(CHARACTERS_TO_NORMALIZE).join(""); + const regexp = `([${replace}])|(\\p{M}+(?:-\\n)?)|(\\S-\\n)|(\\n)`; + + if (syllablePositions.length === 0) { + normalizationRegex = noSyllablesRegExp = new RegExp(regexp + "|(\\u0000)", "gum"); + } else { + normalizationRegex = withSyllablesRegExp = new RegExp(regexp + `|(${FIRST_CHAR_SYLLABLES_REG_EXP})`, "gum"); + } + } + + const rawDiacriticsPositions = []; + + while ((m = DIACRITICS_REG_EXP.exec(text)) !== null) { + rawDiacriticsPositions.push([m[0].length, m.index]); + } + + let normalized = text.normalize("NFD"); + const positions = [[0, 0]]; + let rawDiacriticsIndex = 0; + let syllableIndex = 0; + let shift = 0; + let shiftOrigin = 0; + let eol = 0; + let hasDiacritics = false; + normalized = normalized.replace(normalizationRegex, (match, p1, p2, p3, p4, p5, i) => { + i -= shiftOrigin; + + if (p1) { + const replacement = CHARACTERS_TO_NORMALIZE[match]; + const jj = replacement.length; + + for (let j = 1; j < jj; j++) { + positions.push([i - shift + j, shift - j]); + } + + shift -= jj - 1; + return replacement; + } + + if (p2) { + const hasTrailingDashEOL = p2.endsWith("\n"); + const len = hasTrailingDashEOL ? p2.length - 2 : p2.length; + hasDiacritics = true; + let jj = len; + + if (i + eol === rawDiacriticsPositions[rawDiacriticsIndex]?.[1]) { + jj -= rawDiacriticsPositions[rawDiacriticsIndex][0]; + ++rawDiacriticsIndex; + } + + for (let j = 1; j <= jj; j++) { + positions.push([i - 1 - shift + j, shift - j]); + } + + shift -= jj; + shiftOrigin += jj; + + if (hasTrailingDashEOL) { + i += len - 1; + positions.push([i - shift + 1, 1 + shift]); + shift += 1; + shiftOrigin += 1; + eol += 1; + return p2.slice(0, len); + } + + return p2; + } + + if (p3) { + positions.push([i - shift + 1, 1 + shift]); + shift += 1; + shiftOrigin += 1; + eol += 1; + return p3.charAt(0); + } + + if (p4) { + positions.push([i - shift + 1, shift - 1]); + shift -= 1; + shiftOrigin += 1; + eol += 1; + return " "; + } + + if (i + eol === syllablePositions[syllableIndex]?.[1]) { + const newCharLen = syllablePositions[syllableIndex][0] - 1; + ++syllableIndex; + + for (let j = 1; j <= newCharLen; j++) { + positions.push([i - (shift - j), shift - j]); + } + + shift -= newCharLen; + shiftOrigin += newCharLen; + } + + return p5; + }); + positions.push([normalized.length, shift]); + return [normalized, positions, hasDiacritics]; +} + +function getOriginalIndex(diffs, pos, len) { + if (!diffs) { + return [pos, len]; + } + + const start = pos; + const end = pos + len; + let i = (0, _ui_utils.binarySearchFirstItem)(diffs, x => x[0] >= start); + + if (diffs[i][0] > start) { + --i; + } + + let j = (0, _ui_utils.binarySearchFirstItem)(diffs, x => x[0] >= end, i); + + if (diffs[j][0] > end) { + --j; + } + + return [start + diffs[i][1], len + diffs[j][1] - diffs[i][1]]; +} + +class PDFFindController { + constructor({ + linkService, + eventBus + }) { + this._linkService = linkService; + this._eventBus = eventBus; + this.#reset(); + + eventBus._on("find", this.#onFind.bind(this)); + + eventBus._on("findbarclose", this.#onFindBarClose.bind(this)); + } + + get highlightMatches() { + return this._highlightMatches; + } + + get pageMatches() { + return this._pageMatches; + } + + get pageMatchesLength() { + return this._pageMatchesLength; + } + + get selected() { + return this._selected; + } + + get state() { + return this._state; + } + + setDocument(pdfDocument) { + if (this._pdfDocument) { + this.#reset(); + } + + if (!pdfDocument) { + return; + } + + this._pdfDocument = pdfDocument; + + this._firstPageCapability.resolve(); + } + + #onFind(state) { + if (!state) { + return; + } + + const pdfDocument = this._pdfDocument; + const { + type + } = state; + + if (this._state === null || this.#shouldDirtyMatch(state)) { + this._dirtyMatch = true; + } + + this._state = state; + + if (type !== "highlightallchange") { + this.#updateUIState(FindState.PENDING); + } + + this._firstPageCapability.promise.then(() => { + if (!this._pdfDocument || pdfDocument && this._pdfDocument !== pdfDocument) { + return; + } + + this.#extractText(); + const findbarClosed = !this._highlightMatches; + const pendingTimeout = !!this._findTimeout; + + if (this._findTimeout) { + clearTimeout(this._findTimeout); + this._findTimeout = null; + } + + if (!type) { + this._findTimeout = setTimeout(() => { + this.#nextMatch(); + this._findTimeout = null; + }, FIND_TIMEOUT); + } else if (this._dirtyMatch) { + this.#nextMatch(); + } else if (type === "again") { + this.#nextMatch(); + + if (findbarClosed && this._state.highlightAll) { + this.#updateAllPages(); + } + } else if (type === "highlightallchange") { + if (pendingTimeout) { + this.#nextMatch(); + } else { + this._highlightMatches = true; + } + + this.#updateAllPages(); + } else { + this.#nextMatch(); + } + }); + } + + scrollMatchIntoView({ + element = null, + selectedLeft = 0, + pageIndex = -1, + matchIndex = -1 + }) { + if (!this._scrollMatches || !element) { + return; + } else if (matchIndex === -1 || matchIndex !== this._selected.matchIdx) { + return; + } else if (pageIndex === -1 || pageIndex !== this._selected.pageIdx) { + return; + } + + this._scrollMatches = false; + const spot = { + top: MATCH_SCROLL_OFFSET_TOP, + left: selectedLeft + MATCH_SCROLL_OFFSET_LEFT + }; + (0, _ui_utils.scrollIntoView)(element, spot, true); + } + + #reset() { + this._highlightMatches = false; + this._scrollMatches = false; + this._pdfDocument = null; + this._pageMatches = []; + this._pageMatchesLength = []; + this._state = null; + this._selected = { + pageIdx: -1, + matchIdx: -1 + }; + this._offset = { + pageIdx: null, + matchIdx: null, + wrapped: false + }; + this._extractTextPromises = []; + this._pageContents = []; + this._pageDiffs = []; + this._hasDiacritics = []; + this._matchesCountTotal = 0; + this._pagesToSearch = null; + this._pendingFindMatches = new Set(); + this._resumePageIdx = null; + this._dirtyMatch = false; + clearTimeout(this._findTimeout); + this._findTimeout = null; + this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)(); + } + + get #query() { + if (this._state.query !== this._rawQuery) { + this._rawQuery = this._state.query; + [this._normalizedQuery] = normalize(this._state.query); + } + + return this._normalizedQuery; + } + + #shouldDirtyMatch(state) { + if (state.query !== this._state.query) { + return true; + } + + switch (state.type) { + case "again": + const pageNumber = this._selected.pageIdx + 1; + const linkService = this._linkService; + + if (pageNumber >= 1 && pageNumber <= linkService.pagesCount && pageNumber !== linkService.page && !linkService.isPageVisible(pageNumber)) { + return true; + } + + return false; + + case "highlightallchange": + return false; + } + + return true; + } + + #isEntireWord(content, startIdx, length) { + let match = content.slice(0, startIdx).match(NOT_DIACRITIC_FROM_END_REG_EXP); + + if (match) { + const first = content.charCodeAt(startIdx); + const limit = match[1].charCodeAt(0); + + if ((0, _pdf_find_utils.getCharacterType)(first) === (0, _pdf_find_utils.getCharacterType)(limit)) { + return false; + } + } + + match = content.slice(startIdx + length).match(NOT_DIACRITIC_FROM_START_REG_EXP); + + if (match) { + const last = content.charCodeAt(startIdx + length - 1); + const limit = match[1].charCodeAt(0); + + if ((0, _pdf_find_utils.getCharacterType)(last) === (0, _pdf_find_utils.getCharacterType)(limit)) { + return false; + } + } + + return true; + } + + #calculateRegExpMatch(query, entireWord, pageIndex, pageContent) { + const matches = [], + matchesLength = []; + const diffs = this._pageDiffs[pageIndex]; + let match; + + while ((match = query.exec(pageContent)) !== null) { + if (entireWord && !this.#isEntireWord(pageContent, match.index, match[0].length)) { + continue; + } + + const [matchPos, matchLen] = getOriginalIndex(diffs, match.index, match[0].length); + + if (matchLen) { + matches.push(matchPos); + matchesLength.push(matchLen); + } + } + + this._pageMatches[pageIndex] = matches; + this._pageMatchesLength[pageIndex] = matchesLength; + } + + #convertToRegExpString(query, hasDiacritics) { + const { + matchDiacritics + } = this._state; + let isUnicode = false; + query = query.replace(SPECIAL_CHARS_REG_EXP, (match, p1, p2, p3, p4, p5) => { + if (p1) { + return `[ ]*\\${p1}[ ]*`; + } + + if (p2) { + return `[ ]*${p2}[ ]*`; + } + + if (p3) { + return "[ ]+"; + } + + if (matchDiacritics) { + return p4 || p5; + } + + if (p4) { + return DIACRITICS_EXCEPTION.has(p4.charCodeAt(0)) ? p4 : ""; + } + + if (hasDiacritics) { + isUnicode = true; + return `${p5}\\p{M}*`; + } + + return p5; + }); + const trailingSpaces = "[ ]*"; + + if (query.endsWith(trailingSpaces)) { + query = query.slice(0, query.length - trailingSpaces.length); + } + + if (matchDiacritics) { + if (hasDiacritics) { + isUnicode = true; + query = `${query}(?=[${DIACRITICS_EXCEPTION_STR}]|[^\\p{M}]|$)`; + } + } + + return [isUnicode, query]; + } + + #calculateMatch(pageIndex) { + let query = this.#query; + + if (query.length === 0) { + return; + } + + const { + caseSensitive, + entireWord, + phraseSearch + } = this._state; + const pageContent = this._pageContents[pageIndex]; + const hasDiacritics = this._hasDiacritics[pageIndex]; + let isUnicode = false; + + if (phraseSearch) { + [isUnicode, query] = this.#convertToRegExpString(query, hasDiacritics); + } else { + const match = query.match(/\S+/g); + + if (match) { + query = match.sort().reverse().map(q => { + const [isUnicodePart, queryPart] = this.#convertToRegExpString(q, hasDiacritics); + isUnicode ||= isUnicodePart; + return `(${queryPart})`; + }).join("|"); + } + } + + const flags = `g${isUnicode ? "u" : ""}${caseSensitive ? "" : "i"}`; + query = new RegExp(query, flags); + this.#calculateRegExpMatch(query, entireWord, pageIndex, pageContent); + + if (this._state.highlightAll) { + this.#updatePage(pageIndex); + } + + if (this._resumePageIdx === pageIndex) { + this._resumePageIdx = null; + this.#nextPageMatch(); + } + + const pageMatchesCount = this._pageMatches[pageIndex].length; + + if (pageMatchesCount > 0) { + this._matchesCountTotal += pageMatchesCount; + this.#updateUIResultsCount(); + } + } + + #extractText() { + if (this._extractTextPromises.length > 0) { + return; + } + + let promise = Promise.resolve(); + + for (let i = 0, ii = this._linkService.pagesCount; i < ii; i++) { + const extractTextCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._extractTextPromises[i] = extractTextCapability.promise; + promise = promise.then(() => { + return this._pdfDocument.getPage(i + 1).then(pdfPage => { + return pdfPage.getTextContent(); + }).then(textContent => { + const strBuf = []; + + for (const textItem of textContent.items) { + strBuf.push(textItem.str); + + if (textItem.hasEOL) { + strBuf.push("\n"); + } + } + + [this._pageContents[i], this._pageDiffs[i], this._hasDiacritics[i]] = normalize(strBuf.join("")); + extractTextCapability.resolve(); + }, reason => { + console.error(`Unable to get text content for page ${i + 1}`, reason); + this._pageContents[i] = ""; + this._pageDiffs[i] = null; + this._hasDiacritics[i] = false; + extractTextCapability.resolve(); + }); + }); + } + } + + #updatePage(index) { + if (this._scrollMatches && this._selected.pageIdx === index) { + this._linkService.page = index + 1; + } + + this._eventBus.dispatch("updatetextlayermatches", { + source: this, + pageIndex: index + }); + } + + #updateAllPages() { + this._eventBus.dispatch("updatetextlayermatches", { + source: this, + pageIndex: -1 + }); + } + + #nextMatch() { + const previous = this._state.findPrevious; + const currentPageIndex = this._linkService.page - 1; + const numPages = this._linkService.pagesCount; + this._highlightMatches = true; + + if (this._dirtyMatch) { + this._dirtyMatch = false; + this._selected.pageIdx = this._selected.matchIdx = -1; + this._offset.pageIdx = currentPageIndex; + this._offset.matchIdx = null; + this._offset.wrapped = false; + this._resumePageIdx = null; + this._pageMatches.length = 0; + this._pageMatchesLength.length = 0; + this._matchesCountTotal = 0; + this.#updateAllPages(); + + for (let i = 0; i < numPages; i++) { + if (this._pendingFindMatches.has(i)) { + continue; + } + + this._pendingFindMatches.add(i); + + this._extractTextPromises[i].then(() => { + this._pendingFindMatches.delete(i); + + this.#calculateMatch(i); + }); + } + } + + if (this.#query === "") { + this.#updateUIState(FindState.FOUND); + return; + } + + if (this._resumePageIdx) { + return; + } + + const offset = this._offset; + this._pagesToSearch = numPages; + + if (offset.matchIdx !== null) { + const numPageMatches = this._pageMatches[offset.pageIdx].length; + + if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) { + offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1; + this.#updateMatch(true); + return; + } + + this.#advanceOffsetPage(previous); + } + + this.#nextPageMatch(); + } + + #matchesReady(matches) { + const offset = this._offset; + const numMatches = matches.length; + const previous = this._state.findPrevious; + + if (numMatches) { + offset.matchIdx = previous ? numMatches - 1 : 0; + this.#updateMatch(true); + return true; + } + + this.#advanceOffsetPage(previous); + + if (offset.wrapped) { + offset.matchIdx = null; + + if (this._pagesToSearch < 0) { + this.#updateMatch(false); + return true; + } + } + + return false; + } + + #nextPageMatch() { + if (this._resumePageIdx !== null) { + console.error("There can only be one pending page."); + } + + let matches = null; + + do { + const pageIdx = this._offset.pageIdx; + matches = this._pageMatches[pageIdx]; + + if (!matches) { + this._resumePageIdx = pageIdx; + break; + } + } while (!this.#matchesReady(matches)); + } + + #advanceOffsetPage(previous) { + const offset = this._offset; + const numPages = this._linkService.pagesCount; + offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1; + offset.matchIdx = null; + this._pagesToSearch--; + + if (offset.pageIdx >= numPages || offset.pageIdx < 0) { + offset.pageIdx = previous ? numPages - 1 : 0; + offset.wrapped = true; + } + } + + #updateMatch(found = false) { + let state = FindState.NOT_FOUND; + const wrapped = this._offset.wrapped; + this._offset.wrapped = false; + + if (found) { + const previousPage = this._selected.pageIdx; + this._selected.pageIdx = this._offset.pageIdx; + this._selected.matchIdx = this._offset.matchIdx; + state = wrapped ? FindState.WRAPPED : FindState.FOUND; + + if (previousPage !== -1 && previousPage !== this._selected.pageIdx) { + this.#updatePage(previousPage); + } + } + + this.#updateUIState(state, this._state.findPrevious); + + if (this._selected.pageIdx !== -1) { + this._scrollMatches = true; + this.#updatePage(this._selected.pageIdx); + } + } + + #onFindBarClose(evt) { + const pdfDocument = this._pdfDocument; + + this._firstPageCapability.promise.then(() => { + if (!this._pdfDocument || pdfDocument && this._pdfDocument !== pdfDocument) { + return; + } + + if (this._findTimeout) { + clearTimeout(this._findTimeout); + this._findTimeout = null; + } + + if (this._resumePageIdx) { + this._resumePageIdx = null; + this._dirtyMatch = true; + } + + this.#updateUIState(FindState.FOUND); + this._highlightMatches = false; + this.#updateAllPages(); + }); + } + + #requestMatchesCount() { + const { + pageIdx, + matchIdx + } = this._selected; + let current = 0, + total = this._matchesCountTotal; + + if (matchIdx !== -1) { + for (let i = 0; i < pageIdx; i++) { + current += this._pageMatches[i]?.length || 0; + } + + current += matchIdx + 1; + } + + if (current < 1 || current > total) { + current = total = 0; + } + + return { + current, + total + }; + } + + #updateUIResultsCount() { + this._eventBus.dispatch("updatefindmatchescount", { + source: this, + matchesCount: this.#requestMatchesCount() + }); + } + + #updateUIState(state, previous = false) { + this._eventBus.dispatch("updatefindcontrolstate", { + source: this, + state, + previous, + matchesCount: this.#requestMatchesCount(), + rawQuery: this._state?.query ?? null + }); + } + +} + +exports.PDFFindController = PDFFindController; + +/***/ }), +/* 17 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.CharacterType = void 0; +exports.getCharacterType = getCharacterType; +const CharacterType = { + SPACE: 0, + ALPHA_LETTER: 1, + PUNCT: 2, + HAN_LETTER: 3, + KATAKANA_LETTER: 4, + HIRAGANA_LETTER: 5, + HALFWIDTH_KATAKANA_LETTER: 6, + THAI_LETTER: 7 +}; +exports.CharacterType = CharacterType; + +function isAlphabeticalScript(charCode) { + return charCode < 0x2e80; +} + +function isAscii(charCode) { + return (charCode & 0xff80) === 0; +} + +function isAsciiAlpha(charCode) { + return charCode >= 0x61 && charCode <= 0x7a || charCode >= 0x41 && charCode <= 0x5a; +} + +function isAsciiDigit(charCode) { + return charCode >= 0x30 && charCode <= 0x39; +} + +function isAsciiSpace(charCode) { + return charCode === 0x20 || charCode === 0x09 || charCode === 0x0d || charCode === 0x0a; +} + +function isHan(charCode) { + return charCode >= 0x3400 && charCode <= 0x9fff || charCode >= 0xf900 && charCode <= 0xfaff; +} + +function isKatakana(charCode) { + return charCode >= 0x30a0 && charCode <= 0x30ff; +} + +function isHiragana(charCode) { + return charCode >= 0x3040 && charCode <= 0x309f; +} + +function isHalfwidthKatakana(charCode) { + return charCode >= 0xff60 && charCode <= 0xff9f; +} + +function isThai(charCode) { + return (charCode & 0xff80) === 0x0e00; +} + +function getCharacterType(charCode) { + if (isAlphabeticalScript(charCode)) { + if (isAscii(charCode)) { + if (isAsciiSpace(charCode)) { + return CharacterType.SPACE; + } else if (isAsciiAlpha(charCode) || isAsciiDigit(charCode) || charCode === 0x5f) { + return CharacterType.ALPHA_LETTER; + } + + return CharacterType.PUNCT; + } else if (isThai(charCode)) { + return CharacterType.THAI_LETTER; + } else if (charCode === 0xa0) { + return CharacterType.SPACE; + } + + return CharacterType.ALPHA_LETTER; + } + + if (isHan(charCode)) { + return CharacterType.HAN_LETTER; + } else if (isKatakana(charCode)) { + return CharacterType.KATAKANA_LETTER; + } else if (isHiragana(charCode)) { + return CharacterType.HIRAGANA_LETTER; + } else if (isHalfwidthKatakana(charCode)) { + return CharacterType.HALFWIDTH_KATAKANA_LETTER; + } + + return CharacterType.ALPHA_LETTER; +} + +/***/ }), +/* 18 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFHistory = void 0; +exports.isDestArraysEqual = isDestArraysEqual; +exports.isDestHashesEqual = isDestHashesEqual; + +var _ui_utils = __webpack_require__(1); + +var _event_utils = __webpack_require__(6); + +const HASH_CHANGE_TIMEOUT = 1000; +const POSITION_UPDATED_THRESHOLD = 50; +const UPDATE_VIEWAREA_TIMEOUT = 1000; + +function getCurrentHash() { + return document.location.hash; +} + +class PDFHistory { + constructor({ + linkService, + eventBus + }) { + this.linkService = linkService; + this.eventBus = eventBus; + this._initialized = false; + this._fingerprint = ""; + this.reset(); + this._boundEvents = null; + + this.eventBus._on("pagesinit", () => { + this._isPagesLoaded = false; + + this.eventBus._on("pagesloaded", evt => { + this._isPagesLoaded = !!evt.pagesCount; + }, { + once: true + }); + }); + } + + initialize({ + fingerprint, + resetHistory = false, + updateUrl = false + }) { + if (!fingerprint || typeof fingerprint !== "string") { + console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.'); + return; + } + + if (this._initialized) { + this.reset(); + } + + const reInitialized = this._fingerprint !== "" && this._fingerprint !== fingerprint; + this._fingerprint = fingerprint; + this._updateUrl = updateUrl === true; + this._initialized = true; + + this._bindEvents(); + + const state = window.history.state; + this._popStateInProgress = false; + this._blockHashChange = 0; + this._currentHash = getCurrentHash(); + this._numPositionUpdates = 0; + this._uid = this._maxUid = 0; + this._destination = null; + this._position = null; + + if (!this._isValidState(state, true) || resetHistory) { + const { + hash, + page, + rotation + } = this._parseCurrentHash(true); + + if (!hash || reInitialized || resetHistory) { + this._pushOrReplaceState(null, true); + + return; + } + + this._pushOrReplaceState({ + hash, + page, + rotation + }, true); + + return; + } + + const destination = state.destination; + + this._updateInternalState(destination, state.uid, true); + + if (destination.rotation !== undefined) { + this._initialRotation = destination.rotation; + } + + if (destination.dest) { + this._initialBookmark = JSON.stringify(destination.dest); + this._destination.page = null; + } else if (destination.hash) { + this._initialBookmark = destination.hash; + } else if (destination.page) { + this._initialBookmark = `page=${destination.page}`; + } + } + + reset() { + if (this._initialized) { + this._pageHide(); + + this._initialized = false; + + this._unbindEvents(); + } + + if (this._updateViewareaTimeout) { + clearTimeout(this._updateViewareaTimeout); + this._updateViewareaTimeout = null; + } + + this._initialBookmark = null; + this._initialRotation = null; + } + + push({ + namedDest = null, + explicitDest, + pageNumber + }) { + if (!this._initialized) { + return; + } + + if (namedDest && typeof namedDest !== "string") { + console.error("PDFHistory.push: " + `"${namedDest}" is not a valid namedDest parameter.`); + return; + } else if (!Array.isArray(explicitDest)) { + console.error("PDFHistory.push: " + `"${explicitDest}" is not a valid explicitDest parameter.`); + return; + } else if (!this._isValidPage(pageNumber)) { + if (pageNumber !== null || this._destination) { + console.error("PDFHistory.push: " + `"${pageNumber}" is not a valid pageNumber parameter.`); + return; + } + } + + const hash = namedDest || JSON.stringify(explicitDest); + + if (!hash) { + return; + } + + let forceReplace = false; + + if (this._destination && (isDestHashesEqual(this._destination.hash, hash) || isDestArraysEqual(this._destination.dest, explicitDest))) { + if (this._destination.page) { + return; + } + + forceReplace = true; + } + + if (this._popStateInProgress && !forceReplace) { + return; + } + + this._pushOrReplaceState({ + dest: explicitDest, + hash, + page: pageNumber, + rotation: this.linkService.rotation + }, forceReplace); + + if (!this._popStateInProgress) { + this._popStateInProgress = true; + Promise.resolve().then(() => { + this._popStateInProgress = false; + }); + } + } + + pushPage(pageNumber) { + if (!this._initialized) { + return; + } + + if (!this._isValidPage(pageNumber)) { + console.error(`PDFHistory.pushPage: "${pageNumber}" is not a valid page number.`); + return; + } + + if (this._destination?.page === pageNumber) { + return; + } + + if (this._popStateInProgress) { + return; + } + + this._pushOrReplaceState({ + dest: null, + hash: `page=${pageNumber}`, + page: pageNumber, + rotation: this.linkService.rotation + }); + + if (!this._popStateInProgress) { + this._popStateInProgress = true; + Promise.resolve().then(() => { + this._popStateInProgress = false; + }); + } + } + + pushCurrentPosition() { + if (!this._initialized || this._popStateInProgress) { + return; + } + + this._tryPushCurrentPosition(); + } + + back() { + if (!this._initialized || this._popStateInProgress) { + return; + } + + const state = window.history.state; + + if (this._isValidState(state) && state.uid > 0) { + window.history.back(); + } + } + + forward() { + if (!this._initialized || this._popStateInProgress) { + return; + } + + const state = window.history.state; + + if (this._isValidState(state) && state.uid < this._maxUid) { + window.history.forward(); + } + } + + get popStateInProgress() { + return this._initialized && (this._popStateInProgress || this._blockHashChange > 0); + } + + get initialBookmark() { + return this._initialized ? this._initialBookmark : null; + } + + get initialRotation() { + return this._initialized ? this._initialRotation : null; + } + + _pushOrReplaceState(destination, forceReplace = false) { + const shouldReplace = forceReplace || !this._destination; + const newState = { + fingerprint: this._fingerprint, + uid: shouldReplace ? this._uid : this._uid + 1, + destination + }; + + this._updateInternalState(destination, newState.uid); + + let newUrl; + + if (this._updateUrl && destination?.hash) { + const baseUrl = document.location.href.split("#")[0]; + + if (!baseUrl.startsWith("file://")) { + newUrl = `${baseUrl}#${destination.hash}`; + } + } + + if (shouldReplace) { + window.history.replaceState(newState, "", newUrl); + } else { + window.history.pushState(newState, "", newUrl); + } + } + + _tryPushCurrentPosition(temporary = false) { + if (!this._position) { + return; + } + + let position = this._position; + + if (temporary) { + position = Object.assign(Object.create(null), this._position); + position.temporary = true; + } + + if (!this._destination) { + this._pushOrReplaceState(position); + + return; + } + + if (this._destination.temporary) { + this._pushOrReplaceState(position, true); + + return; + } + + if (this._destination.hash === position.hash) { + return; + } + + if (!this._destination.page && (POSITION_UPDATED_THRESHOLD <= 0 || this._numPositionUpdates <= POSITION_UPDATED_THRESHOLD)) { + return; + } + + let forceReplace = false; + + if (this._destination.page >= position.first && this._destination.page <= position.page) { + if (this._destination.dest !== undefined || !this._destination.first) { + return; + } + + forceReplace = true; + } + + this._pushOrReplaceState(position, forceReplace); + } + + _isValidPage(val) { + return Number.isInteger(val) && val > 0 && val <= this.linkService.pagesCount; + } + + _isValidState(state, checkReload = false) { + if (!state) { + return false; + } + + if (state.fingerprint !== this._fingerprint) { + if (checkReload) { + if (typeof state.fingerprint !== "string" || state.fingerprint.length !== this._fingerprint.length) { + return false; + } + + const [perfEntry] = performance.getEntriesByType("navigation"); + + if (perfEntry?.type !== "reload") { + return false; + } + } else { + return false; + } + } + + if (!Number.isInteger(state.uid) || state.uid < 0) { + return false; + } + + if (state.destination === null || typeof state.destination !== "object") { + return false; + } + + return true; + } + + _updateInternalState(destination, uid, removeTemporary = false) { + if (this._updateViewareaTimeout) { + clearTimeout(this._updateViewareaTimeout); + this._updateViewareaTimeout = null; + } + + if (removeTemporary && destination?.temporary) { + delete destination.temporary; + } + + this._destination = destination; + this._uid = uid; + this._maxUid = Math.max(this._maxUid, uid); + this._numPositionUpdates = 0; + } + + _parseCurrentHash(checkNameddest = false) { + const hash = unescape(getCurrentHash()).substring(1); + const params = (0, _ui_utils.parseQueryString)(hash); + const nameddest = params.get("nameddest") || ""; + let page = params.get("page") | 0; + + if (!this._isValidPage(page) || checkNameddest && nameddest.length > 0) { + page = null; + } + + return { + hash, + page, + rotation: this.linkService.rotation + }; + } + + _updateViewarea({ + location + }) { + if (this._updateViewareaTimeout) { + clearTimeout(this._updateViewareaTimeout); + this._updateViewareaTimeout = null; + } + + this._position = { + hash: location.pdfOpenParams.substring(1), + page: this.linkService.page, + first: location.pageNumber, + rotation: location.rotation + }; + + if (this._popStateInProgress) { + return; + } + + if (POSITION_UPDATED_THRESHOLD > 0 && this._isPagesLoaded && this._destination && !this._destination.page) { + this._numPositionUpdates++; + } + + if (UPDATE_VIEWAREA_TIMEOUT > 0) { + this._updateViewareaTimeout = setTimeout(() => { + if (!this._popStateInProgress) { + this._tryPushCurrentPosition(true); + } + + this._updateViewareaTimeout = null; + }, UPDATE_VIEWAREA_TIMEOUT); + } + } + + _popState({ + state + }) { + const newHash = getCurrentHash(), + hashChanged = this._currentHash !== newHash; + this._currentHash = newHash; + + if (!state) { + this._uid++; + + const { + hash, + page, + rotation + } = this._parseCurrentHash(); + + this._pushOrReplaceState({ + hash, + page, + rotation + }, true); + + return; + } + + if (!this._isValidState(state)) { + return; + } + + this._popStateInProgress = true; + + if (hashChanged) { + this._blockHashChange++; + (0, _event_utils.waitOnEventOrTimeout)({ + target: window, + name: "hashchange", + delay: HASH_CHANGE_TIMEOUT + }).then(() => { + this._blockHashChange--; + }); + } + + const destination = state.destination; + + this._updateInternalState(destination, state.uid, true); + + if ((0, _ui_utils.isValidRotation)(destination.rotation)) { + this.linkService.rotation = destination.rotation; + } + + if (destination.dest) { + this.linkService.goToDestination(destination.dest); + } else if (destination.hash) { + this.linkService.setHash(destination.hash); + } else if (destination.page) { + this.linkService.page = destination.page; + } + + Promise.resolve().then(() => { + this._popStateInProgress = false; + }); + } + + _pageHide() { + if (!this._destination || this._destination.temporary) { + this._tryPushCurrentPosition(); + } + } + + _bindEvents() { + if (this._boundEvents) { + return; + } + + this._boundEvents = { + updateViewarea: this._updateViewarea.bind(this), + popState: this._popState.bind(this), + pageHide: this._pageHide.bind(this) + }; + + this.eventBus._on("updateviewarea", this._boundEvents.updateViewarea); + + window.addEventListener("popstate", this._boundEvents.popState); + window.addEventListener("pagehide", this._boundEvents.pageHide); + } + + _unbindEvents() { + if (!this._boundEvents) { + return; + } + + this.eventBus._off("updateviewarea", this._boundEvents.updateViewarea); + + window.removeEventListener("popstate", this._boundEvents.popState); + window.removeEventListener("pagehide", this._boundEvents.pageHide); + this._boundEvents = null; + } + +} + +exports.PDFHistory = PDFHistory; + +function isDestHashesEqual(destHash, pushHash) { + if (typeof destHash !== "string" || typeof pushHash !== "string") { + return false; + } + + if (destHash === pushHash) { + return true; + } + + const nameddest = (0, _ui_utils.parseQueryString)(destHash).get("nameddest"); + + if (nameddest === pushHash) { + return true; + } + + return false; +} + +function isDestArraysEqual(firstDest, secondDest) { + function isEntryEqual(first, second) { + if (typeof first !== typeof second) { + return false; + } + + if (Array.isArray(first) || Array.isArray(second)) { + return false; + } + + if (first !== null && typeof first === "object" && second !== null) { + if (Object.keys(first).length !== Object.keys(second).length) { + return false; + } + + for (const key in first) { + if (!isEntryEqual(first[key], second[key])) { + return false; + } + } + + return true; + } + + return first === second || Number.isNaN(first) && Number.isNaN(second); + } + + if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) { + return false; + } + + if (firstDest.length !== secondDest.length) { + return false; + } + + for (let i = 0, ii = firstDest.length; i < ii; i++) { + if (!isEntryEqual(firstDest[i], secondDest[i])) { + return false; + } + } + + return true; +} + +/***/ }), +/* 19 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFLayerViewer = void 0; + +var _base_tree_viewer = __webpack_require__(13); + +class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer { + constructor(options) { + super(options); + this.l10n = options.l10n; + + this.eventBus._on("resetlayers", this._resetLayers.bind(this)); + + this.eventBus._on("togglelayerstree", this._toggleAllTreeItems.bind(this)); + } + + reset() { + super.reset(); + this._optionalContentConfig = null; + } + + _dispatchEvent(layersCount) { + this.eventBus.dispatch("layersloaded", { + source: this, + layersCount + }); + } + + _bindLink(element, { + groupId, + input + }) { + const setVisibility = () => { + this._optionalContentConfig.setVisibility(groupId, input.checked); + + this.eventBus.dispatch("optionalcontentconfig", { + source: this, + promise: Promise.resolve(this._optionalContentConfig) + }); + }; + + element.onclick = evt => { + if (evt.target === input) { + setVisibility(); + return true; + } else if (evt.target !== element) { + return true; + } + + input.checked = !input.checked; + setVisibility(); + return false; + }; + } + + async _setNestedName(element, { + name = null + }) { + if (typeof name === "string") { + element.textContent = this._normalizeTextContent(name); + return; + } + + element.textContent = await this.l10n.get("additional_layers"); + element.style.fontStyle = "italic"; + } + + _addToggleButton(div, { + name = null + }) { + super._addToggleButton(div, name === null); + } + + _toggleAllTreeItems() { + if (!this._optionalContentConfig) { + return; + } + + super._toggleAllTreeItems(); + } + + render({ + optionalContentConfig, + pdfDocument + }) { + if (this._optionalContentConfig) { + this.reset(); + } + + this._optionalContentConfig = optionalContentConfig || null; + this._pdfDocument = pdfDocument || null; + const groups = optionalContentConfig?.getOrder(); + + if (!groups) { + this._dispatchEvent(0); + + return; + } + + const fragment = document.createDocumentFragment(), + queue = [{ + parent: fragment, + groups + }]; + let layersCount = 0, + hasAnyNesting = false; + + while (queue.length > 0) { + const levelData = queue.shift(); + + for (const groupId of levelData.groups) { + const div = document.createElement("div"); + div.className = "treeItem"; + const element = document.createElement("a"); + div.append(element); + + if (typeof groupId === "object") { + hasAnyNesting = true; + + this._addToggleButton(div, groupId); + + this._setNestedName(element, groupId); + + const itemsDiv = document.createElement("div"); + itemsDiv.className = "treeItems"; + div.append(itemsDiv); + queue.push({ + parent: itemsDiv, + groups: groupId.order + }); + } else { + const group = optionalContentConfig.getGroup(groupId); + const input = document.createElement("input"); + + this._bindLink(element, { + groupId, + input + }); + + input.type = "checkbox"; + input.checked = group.visible; + const label = document.createElement("label"); + label.textContent = this._normalizeTextContent(group.name); + label.append(input); + element.append(label); + layersCount++; + } + + levelData.parent.append(div); + } + } + + this._finishRendering(fragment, layersCount, hasAnyNesting); + } + + async _resetLayers() { + if (!this._optionalContentConfig) { + return; + } + + const optionalContentConfig = await this._pdfDocument.getOptionalContentConfig(); + this.eventBus.dispatch("optionalcontentconfig", { + source: this, + promise: Promise.resolve(optionalContentConfig) + }); + this.render({ + optionalContentConfig, + pdfDocument: this._pdfDocument + }); + } + +} + +exports.PDFLayerViewer = PDFLayerViewer; + +/***/ }), +/* 20 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFOutlineViewer = void 0; + +var _base_tree_viewer = __webpack_require__(13); + +var _pdfjsLib = __webpack_require__(5); + +var _ui_utils = __webpack_require__(1); + +class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer { + constructor(options) { + super(options); + this.linkService = options.linkService; + + this.eventBus._on("toggleoutlinetree", this._toggleAllTreeItems.bind(this)); + + this.eventBus._on("currentoutlineitem", this._currentOutlineItem.bind(this)); + + this.eventBus._on("pagechanging", evt => { + this._currentPageNumber = evt.pageNumber; + }); + + this.eventBus._on("pagesloaded", evt => { + this._isPagesLoaded = !!evt.pagesCount; + + if (this._currentOutlineItemCapability && !this._currentOutlineItemCapability.settled) { + this._currentOutlineItemCapability.resolve(this._isPagesLoaded); + } + }); + + this.eventBus._on("sidebarviewchanged", evt => { + this._sidebarView = evt.view; + }); + } + + reset() { + super.reset(); + this._outline = null; + this._pageNumberToDestHashCapability = null; + this._currentPageNumber = 1; + this._isPagesLoaded = null; + + if (this._currentOutlineItemCapability && !this._currentOutlineItemCapability.settled) { + this._currentOutlineItemCapability.resolve(false); + } + + this._currentOutlineItemCapability = null; + } + + _dispatchEvent(outlineCount) { + this._currentOutlineItemCapability = (0, _pdfjsLib.createPromiseCapability)(); + + if (outlineCount === 0 || this._pdfDocument?.loadingParams.disableAutoFetch) { + this._currentOutlineItemCapability.resolve(false); + } else if (this._isPagesLoaded !== null) { + this._currentOutlineItemCapability.resolve(this._isPagesLoaded); + } + + this.eventBus.dispatch("outlineloaded", { + source: this, + outlineCount, + currentOutlineItemPromise: this._currentOutlineItemCapability.promise + }); + } + + _bindLink(element, { + url, + newWindow, + dest + }) { + const { + linkService + } = this; + + if (url) { + linkService.addLinkAttributes(element, url, newWindow); + return; + } + + element.href = linkService.getDestinationHash(dest); + + element.onclick = evt => { + this._updateCurrentTreeItem(evt.target.parentNode); + + if (dest) { + linkService.goToDestination(dest); + } + + return false; + }; + } + + _setStyles(element, { + bold, + italic + }) { + if (bold) { + element.style.fontWeight = "bold"; + } + + if (italic) { + element.style.fontStyle = "italic"; + } + } + + _addToggleButton(div, { + count, + items + }) { + let hidden = false; + + if (count < 0) { + let totalCount = items.length; + + if (totalCount > 0) { + const queue = [...items]; + + while (queue.length > 0) { + const { + count: nestedCount, + items: nestedItems + } = queue.shift(); + + if (nestedCount > 0 && nestedItems.length > 0) { + totalCount += nestedItems.length; + queue.push(...nestedItems); + } + } + } + + if (Math.abs(count) === totalCount) { + hidden = true; + } + } + + super._addToggleButton(div, hidden); + } + + _toggleAllTreeItems() { + if (!this._outline) { + return; + } + + super._toggleAllTreeItems(); + } + + render({ + outline, + pdfDocument + }) { + if (this._outline) { + this.reset(); + } + + this._outline = outline || null; + this._pdfDocument = pdfDocument || null; + + if (!outline) { + this._dispatchEvent(0); + + return; + } + + const fragment = document.createDocumentFragment(); + const queue = [{ + parent: fragment, + items: outline + }]; + let outlineCount = 0, + hasAnyNesting = false; + + while (queue.length > 0) { + const levelData = queue.shift(); + + for (const item of levelData.items) { + const div = document.createElement("div"); + div.className = "treeItem"; + const element = document.createElement("a"); + + this._bindLink(element, item); + + this._setStyles(element, item); + + element.textContent = this._normalizeTextContent(item.title); + div.append(element); + + if (item.items.length > 0) { + hasAnyNesting = true; + + this._addToggleButton(div, item); + + const itemsDiv = document.createElement("div"); + itemsDiv.className = "treeItems"; + div.append(itemsDiv); + queue.push({ + parent: itemsDiv, + items: item.items + }); + } + + levelData.parent.append(div); + outlineCount++; + } + } + + this._finishRendering(fragment, outlineCount, hasAnyNesting); + } + + async _currentOutlineItem() { + if (!this._isPagesLoaded) { + throw new Error("_currentOutlineItem: All pages have not been loaded."); + } + + if (!this._outline || !this._pdfDocument) { + return; + } + + const pageNumberToDestHash = await this._getPageNumberToDestHash(this._pdfDocument); + + if (!pageNumberToDestHash) { + return; + } + + this._updateCurrentTreeItem(null); + + if (this._sidebarView !== _ui_utils.SidebarView.OUTLINE) { + return; + } + + for (let i = this._currentPageNumber; i > 0; i--) { + const destHash = pageNumberToDestHash.get(i); + + if (!destHash) { + continue; + } + + const linkElement = this.container.querySelector(`a[href="${destHash}"]`); + + if (!linkElement) { + continue; + } + + this._scrollToCurrentTreeItem(linkElement.parentNode); + + break; + } + } + + async _getPageNumberToDestHash(pdfDocument) { + if (this._pageNumberToDestHashCapability) { + return this._pageNumberToDestHashCapability.promise; + } + + this._pageNumberToDestHashCapability = (0, _pdfjsLib.createPromiseCapability)(); + const pageNumberToDestHash = new Map(), + pageNumberNesting = new Map(); + const queue = [{ + nesting: 0, + items: this._outline + }]; + + while (queue.length > 0) { + const levelData = queue.shift(), + currentNesting = levelData.nesting; + + for (const { + dest, + items + } of levelData.items) { + let explicitDest, pageNumber; + + if (typeof dest === "string") { + explicitDest = await pdfDocument.getDestination(dest); + + if (pdfDocument !== this._pdfDocument) { + return null; + } + } else { + explicitDest = dest; + } + + if (Array.isArray(explicitDest)) { + const [destRef] = explicitDest; + + if (typeof destRef === "object" && destRef !== null) { + pageNumber = this.linkService._cachedPageNumber(destRef); + + if (!pageNumber) { + try { + pageNumber = (await pdfDocument.getPageIndex(destRef)) + 1; + + if (pdfDocument !== this._pdfDocument) { + return null; + } + + this.linkService.cachePageRef(pageNumber, destRef); + } catch (ex) {} + } + } else if (Number.isInteger(destRef)) { + pageNumber = destRef + 1; + } + + if (Number.isInteger(pageNumber) && (!pageNumberToDestHash.has(pageNumber) || currentNesting > pageNumberNesting.get(pageNumber))) { + const destHash = this.linkService.getDestinationHash(dest); + pageNumberToDestHash.set(pageNumber, destHash); + pageNumberNesting.set(pageNumber, currentNesting); + } + } + + if (items.length > 0) { + queue.push({ + nesting: currentNesting + 1, + items + }); + } + } + } + + this._pageNumberToDestHashCapability.resolve(pageNumberToDestHash.size > 0 ? pageNumberToDestHash : null); + + return this._pageNumberToDestHashCapability.promise; + } + +} + +exports.PDFOutlineViewer = PDFOutlineViewer; + +/***/ }), +/* 21 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFPresentationMode = void 0; + +var _ui_utils = __webpack_require__(1); + +var _pdfjsLib = __webpack_require__(5); + +const DELAY_BEFORE_HIDING_CONTROLS = 3000; +const ACTIVE_SELECTOR = "pdfPresentationMode"; +const CONTROLS_SELECTOR = "pdfPresentationModeControls"; +const MOUSE_SCROLL_COOLDOWN_TIME = 50; +const PAGE_SWITCH_THRESHOLD = 0.1; +const SWIPE_MIN_DISTANCE_THRESHOLD = 50; +const SWIPE_ANGLE_THRESHOLD = Math.PI / 6; + +class PDFPresentationMode { + #state = _ui_utils.PresentationModeState.UNKNOWN; + #args = null; + + constructor({ + container, + pdfViewer, + eventBus + }) { + this.container = container; + this.pdfViewer = pdfViewer; + this.eventBus = eventBus; + this.contextMenuOpen = false; + this.mouseScrollTimeStamp = 0; + this.mouseScrollDelta = 0; + this.touchSwipeState = null; + } + + async request() { + const { + container, + pdfViewer + } = this; + + if (this.active || !pdfViewer.pagesCount || !container.requestFullscreen) { + return false; + } + + this.#addFullscreenChangeListeners(); + this.#notifyStateChange(_ui_utils.PresentationModeState.CHANGING); + const promise = container.requestFullscreen(); + this.#args = { + pageNumber: pdfViewer.currentPageNumber, + scaleValue: pdfViewer.currentScaleValue, + scrollMode: pdfViewer.scrollMode, + spreadMode: null, + annotationEditorMode: null + }; + + if (pdfViewer.spreadMode !== _ui_utils.SpreadMode.NONE && !(pdfViewer.pageViewsReady && pdfViewer.hasEqualPageSizes)) { + console.warn("Ignoring Spread modes when entering PresentationMode, " + "since the document may contain varying page sizes."); + this.#args.spreadMode = pdfViewer.spreadMode; + } + + if (pdfViewer.annotationEditorMode !== _pdfjsLib.AnnotationEditorType.DISABLE) { + this.#args.annotationEditorMode = pdfViewer.annotationEditorMode; + } + + try { + await promise; + pdfViewer.focus(); + return true; + } catch (reason) { + this.#removeFullscreenChangeListeners(); + this.#notifyStateChange(_ui_utils.PresentationModeState.NORMAL); + } + + return false; + } + + get active() { + return this.#state === _ui_utils.PresentationModeState.CHANGING || this.#state === _ui_utils.PresentationModeState.FULLSCREEN; + } + + #mouseWheel(evt) { + if (!this.active) { + return; + } + + evt.preventDefault(); + const delta = (0, _ui_utils.normalizeWheelEventDelta)(evt); + const currentTime = Date.now(); + const storedTime = this.mouseScrollTimeStamp; + + if (currentTime > storedTime && currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) { + return; + } + + if (this.mouseScrollDelta > 0 && delta < 0 || this.mouseScrollDelta < 0 && delta > 0) { + this.#resetMouseScrollState(); + } + + this.mouseScrollDelta += delta; + + if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) { + const totalDelta = this.mouseScrollDelta; + this.#resetMouseScrollState(); + const success = totalDelta > 0 ? this.pdfViewer.previousPage() : this.pdfViewer.nextPage(); + + if (success) { + this.mouseScrollTimeStamp = currentTime; + } + } + } + + #notifyStateChange(state) { + this.#state = state; + this.eventBus.dispatch("presentationmodechanged", { + source: this, + state + }); + } + + #enter() { + this.#notifyStateChange(_ui_utils.PresentationModeState.FULLSCREEN); + this.container.classList.add(ACTIVE_SELECTOR); + setTimeout(() => { + this.pdfViewer.scrollMode = _ui_utils.ScrollMode.PAGE; + + if (this.#args.spreadMode !== null) { + this.pdfViewer.spreadMode = _ui_utils.SpreadMode.NONE; + } + + this.pdfViewer.currentPageNumber = this.#args.pageNumber; + this.pdfViewer.currentScaleValue = "page-fit"; + + if (this.#args.annotationEditorMode !== null) { + this.pdfViewer.annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE; + } + }, 0); + this.#addWindowListeners(); + this.#showControls(); + this.contextMenuOpen = false; + window.getSelection().removeAllRanges(); + } + + #exit() { + const pageNumber = this.pdfViewer.currentPageNumber; + this.container.classList.remove(ACTIVE_SELECTOR); + setTimeout(() => { + this.#removeFullscreenChangeListeners(); + this.#notifyStateChange(_ui_utils.PresentationModeState.NORMAL); + this.pdfViewer.scrollMode = this.#args.scrollMode; + + if (this.#args.spreadMode !== null) { + this.pdfViewer.spreadMode = this.#args.spreadMode; + } + + this.pdfViewer.currentScaleValue = this.#args.scaleValue; + this.pdfViewer.currentPageNumber = pageNumber; + + if (this.#args.annotationEditorMode !== null) { + this.pdfViewer.annotationEditorMode = this.#args.annotationEditorMode; + } + + this.#args = null; + }, 0); + this.#removeWindowListeners(); + this.#hideControls(); + this.#resetMouseScrollState(); + this.contextMenuOpen = false; + } + + #mouseDown(evt) { + if (this.contextMenuOpen) { + this.contextMenuOpen = false; + evt.preventDefault(); + return; + } + + if (evt.button === 0) { + const isInternalLink = evt.target.href && evt.target.classList.contains("internalLink"); + + if (!isInternalLink) { + evt.preventDefault(); + + if (evt.shiftKey) { + this.pdfViewer.previousPage(); + } else { + this.pdfViewer.nextPage(); + } + } + } + } + + #contextMenu() { + this.contextMenuOpen = true; + } + + #showControls() { + if (this.controlsTimeout) { + clearTimeout(this.controlsTimeout); + } else { + this.container.classList.add(CONTROLS_SELECTOR); + } + + this.controlsTimeout = setTimeout(() => { + this.container.classList.remove(CONTROLS_SELECTOR); + delete this.controlsTimeout; + }, DELAY_BEFORE_HIDING_CONTROLS); + } + + #hideControls() { + if (!this.controlsTimeout) { + return; + } + + clearTimeout(this.controlsTimeout); + this.container.classList.remove(CONTROLS_SELECTOR); + delete this.controlsTimeout; + } + + #resetMouseScrollState() { + this.mouseScrollTimeStamp = 0; + this.mouseScrollDelta = 0; + } + + #touchSwipe(evt) { + if (!this.active) { + return; + } + + if (evt.touches.length > 1) { + this.touchSwipeState = null; + return; + } + + switch (evt.type) { + case "touchstart": + this.touchSwipeState = { + startX: evt.touches[0].pageX, + startY: evt.touches[0].pageY, + endX: evt.touches[0].pageX, + endY: evt.touches[0].pageY + }; + break; + + case "touchmove": + if (this.touchSwipeState === null) { + return; + } + + this.touchSwipeState.endX = evt.touches[0].pageX; + this.touchSwipeState.endY = evt.touches[0].pageY; + evt.preventDefault(); + break; + + case "touchend": + if (this.touchSwipeState === null) { + return; + } + + let delta = 0; + const dx = this.touchSwipeState.endX - this.touchSwipeState.startX; + const dy = this.touchSwipeState.endY - this.touchSwipeState.startY; + const absAngle = Math.abs(Math.atan2(dy, dx)); + + if (Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD && (absAngle <= SWIPE_ANGLE_THRESHOLD || absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)) { + delta = dx; + } else if (Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD && Math.abs(absAngle - Math.PI / 2) <= SWIPE_ANGLE_THRESHOLD) { + delta = dy; + } + + if (delta > 0) { + this.pdfViewer.previousPage(); + } else if (delta < 0) { + this.pdfViewer.nextPage(); + } + + break; + } + } + + #addWindowListeners() { + this.showControlsBind = this.#showControls.bind(this); + this.mouseDownBind = this.#mouseDown.bind(this); + this.mouseWheelBind = this.#mouseWheel.bind(this); + this.resetMouseScrollStateBind = this.#resetMouseScrollState.bind(this); + this.contextMenuBind = this.#contextMenu.bind(this); + this.touchSwipeBind = this.#touchSwipe.bind(this); + window.addEventListener("mousemove", this.showControlsBind); + window.addEventListener("mousedown", this.mouseDownBind); + window.addEventListener("wheel", this.mouseWheelBind, { + passive: false + }); + window.addEventListener("keydown", this.resetMouseScrollStateBind); + window.addEventListener("contextmenu", this.contextMenuBind); + window.addEventListener("touchstart", this.touchSwipeBind); + window.addEventListener("touchmove", this.touchSwipeBind); + window.addEventListener("touchend", this.touchSwipeBind); + } + + #removeWindowListeners() { + window.removeEventListener("mousemove", this.showControlsBind); + window.removeEventListener("mousedown", this.mouseDownBind); + window.removeEventListener("wheel", this.mouseWheelBind, { + passive: false + }); + window.removeEventListener("keydown", this.resetMouseScrollStateBind); + window.removeEventListener("contextmenu", this.contextMenuBind); + window.removeEventListener("touchstart", this.touchSwipeBind); + window.removeEventListener("touchmove", this.touchSwipeBind); + window.removeEventListener("touchend", this.touchSwipeBind); + delete this.showControlsBind; + delete this.mouseDownBind; + delete this.mouseWheelBind; + delete this.resetMouseScrollStateBind; + delete this.contextMenuBind; + delete this.touchSwipeBind; + } + + #fullscreenChange() { + if (document.fullscreenElement) { + this.#enter(); + } else { + this.#exit(); + } + } + + #addFullscreenChangeListeners() { + this.fullscreenChangeBind = this.#fullscreenChange.bind(this); + window.addEventListener("fullscreenchange", this.fullscreenChangeBind); + } + + #removeFullscreenChangeListeners() { + window.removeEventListener("fullscreenchange", this.fullscreenChangeBind); + delete this.fullscreenChangeBind; + } + +} + +exports.PDFPresentationMode = PDFPresentationMode; + +/***/ }), +/* 22 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFRenderingQueue = void 0; + +var _pdfjsLib = __webpack_require__(5); + +var _ui_utils = __webpack_require__(1); + +const CLEANUP_TIMEOUT = 30000; + +class PDFRenderingQueue { + constructor() { + this.pdfViewer = null; + this.pdfThumbnailViewer = null; + this.onIdle = null; + this.highestPriorityPage = null; + this.idleTimeout = null; + this.printing = false; + this.isThumbnailViewEnabled = false; + } + + setViewer(pdfViewer) { + this.pdfViewer = pdfViewer; + } + + setThumbnailViewer(pdfThumbnailViewer) { + this.pdfThumbnailViewer = pdfThumbnailViewer; + } + + isHighestPriority(view) { + return this.highestPriorityPage === view.renderingId; + } + + hasViewer() { + return !!this.pdfViewer; + } + + renderHighestPriority(currentlyVisiblePages) { + if (this.idleTimeout) { + clearTimeout(this.idleTimeout); + this.idleTimeout = null; + } + + if (this.pdfViewer.forceRendering(currentlyVisiblePages)) { + return; + } + + if (this.isThumbnailViewEnabled && this.pdfThumbnailViewer?.forceRendering()) { + return; + } + + if (this.printing) { + return; + } + + if (this.onIdle) { + this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT); + } + } + + getHighestPriority(visible, views, scrolledDown, preRenderExtra = false) { + const visibleViews = visible.views, + numVisible = visibleViews.length; + + if (numVisible === 0) { + return null; + } + + for (let i = 0; i < numVisible; i++) { + const view = visibleViews[i].view; + + if (!this.isViewFinished(view)) { + return view; + } + } + + const firstId = visible.first.id, + lastId = visible.last.id; + + if (lastId - firstId + 1 > numVisible) { + const visibleIds = visible.ids; + + for (let i = 1, ii = lastId - firstId; i < ii; i++) { + const holeId = scrolledDown ? firstId + i : lastId - i; + + if (visibleIds.has(holeId)) { + continue; + } + + const holeView = views[holeId - 1]; + + if (!this.isViewFinished(holeView)) { + return holeView; + } + } + } + + let preRenderIndex = scrolledDown ? lastId : firstId - 2; + let preRenderView = views[preRenderIndex]; + + if (preRenderView && !this.isViewFinished(preRenderView)) { + return preRenderView; + } + + if (preRenderExtra) { + preRenderIndex += scrolledDown ? 1 : -1; + preRenderView = views[preRenderIndex]; + + if (preRenderView && !this.isViewFinished(preRenderView)) { + return preRenderView; + } + } + + return null; + } + + isViewFinished(view) { + return view.renderingState === _ui_utils.RenderingStates.FINISHED; + } + + renderView(view) { + switch (view.renderingState) { + case _ui_utils.RenderingStates.FINISHED: + return false; + + case _ui_utils.RenderingStates.PAUSED: + this.highestPriorityPage = view.renderingId; + view.resume(); + break; + + case _ui_utils.RenderingStates.RUNNING: + this.highestPriorityPage = view.renderingId; + break; + + case _ui_utils.RenderingStates.INITIAL: + this.highestPriorityPage = view.renderingId; + view.draw().finally(() => { + this.renderHighestPriority(); + }).catch(reason => { + if (reason instanceof _pdfjsLib.RenderingCancelledException) { + return; + } + + console.error(`renderView: "${reason}"`); + }); + break; + } + + return true; + } + +} + +exports.PDFRenderingQueue = PDFRenderingQueue; + +/***/ }), +/* 23 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFScriptingManager = void 0; + +var _ui_utils = __webpack_require__(1); + +var _pdfjsLib = __webpack_require__(5); + +class PDFScriptingManager { + constructor({ + eventBus, + sandboxBundleSrc = null, + scriptingFactory = null, + docPropertiesLookup = null + }) { + this._pdfDocument = null; + this._pdfViewer = null; + this._closeCapability = null; + this._destroyCapability = null; + this._scripting = null; + this._mouseState = Object.create(null); + this._ready = false; + this._eventBus = eventBus; + this._sandboxBundleSrc = sandboxBundleSrc; + this._scriptingFactory = scriptingFactory; + this._docPropertiesLookup = docPropertiesLookup; + } + + setViewer(pdfViewer) { + this._pdfViewer = pdfViewer; + } + + async setDocument(pdfDocument) { + if (this._pdfDocument) { + await this._destroyScripting(); + } + + this._pdfDocument = pdfDocument; + + if (!pdfDocument) { + return; + } + + const [objects, calculationOrder, docActions] = await Promise.all([pdfDocument.getFieldObjects(), pdfDocument.getCalculationOrderIds(), pdfDocument.getJSActions()]); + + if (!objects && !docActions) { + await this._destroyScripting(); + return; + } + + if (pdfDocument !== this._pdfDocument) { + return; + } + + try { + this._scripting = this._createScripting(); + } catch (error) { + console.error(`PDFScriptingManager.setDocument: "${error?.message}".`); + await this._destroyScripting(); + return; + } + + this._internalEvents.set("updatefromsandbox", event => { + if (event?.source !== window) { + return; + } + + this._updateFromSandbox(event.detail); + }); + + this._internalEvents.set("dispatcheventinsandbox", event => { + this._scripting?.dispatchEventInSandbox(event.detail); + }); + + this._internalEvents.set("pagechanging", ({ + pageNumber, + previous + }) => { + if (pageNumber === previous) { + return; + } + + this._dispatchPageClose(previous); + + this._dispatchPageOpen(pageNumber); + }); + + this._internalEvents.set("pagerendered", ({ + pageNumber + }) => { + if (!this._pageOpenPending.has(pageNumber)) { + return; + } + + if (pageNumber !== this._pdfViewer.currentPageNumber) { + return; + } + + this._dispatchPageOpen(pageNumber); + }); + + this._internalEvents.set("pagesdestroy", async event => { + await this._dispatchPageClose(this._pdfViewer.currentPageNumber); + await this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "WillClose" + }); + this._closeCapability?.resolve(); + }); + + this._domEvents.set("mousedown", event => { + this._mouseState.isDown = true; + }); + + this._domEvents.set("mouseup", event => { + this._mouseState.isDown = false; + }); + + for (const [name, listener] of this._internalEvents) { + this._eventBus._on(name, listener); + } + + for (const [name, listener] of this._domEvents) { + window.addEventListener(name, listener, true); + } + + try { + const docProperties = await this._getDocProperties(); + + if (pdfDocument !== this._pdfDocument) { + return; + } + + await this._scripting.createSandbox({ + objects, + calculationOrder, + appInfo: { + platform: navigator.platform, + language: navigator.language + }, + docInfo: { ...docProperties, + actions: docActions + } + }); + + this._eventBus.dispatch("sandboxcreated", { + source: this + }); + } catch (error) { + console.error(`PDFScriptingManager.setDocument: "${error?.message}".`); + await this._destroyScripting(); + return; + } + + await this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "Open" + }); + await this._dispatchPageOpen(this._pdfViewer.currentPageNumber, true); + Promise.resolve().then(() => { + if (pdfDocument === this._pdfDocument) { + this._ready = true; + } + }); + } + + async dispatchWillSave(detail) { + return this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "WillSave" + }); + } + + async dispatchDidSave(detail) { + return this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "DidSave" + }); + } + + async dispatchWillPrint(detail) { + return this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "WillPrint" + }); + } + + async dispatchDidPrint(detail) { + return this._scripting?.dispatchEventInSandbox({ + id: "doc", + name: "DidPrint" + }); + } + + get mouseState() { + return this._mouseState; + } + + get destroyPromise() { + return this._destroyCapability?.promise || null; + } + + get ready() { + return this._ready; + } + + get _internalEvents() { + return (0, _pdfjsLib.shadow)(this, "_internalEvents", new Map()); + } + + get _domEvents() { + return (0, _pdfjsLib.shadow)(this, "_domEvents", new Map()); + } + + get _pageOpenPending() { + return (0, _pdfjsLib.shadow)(this, "_pageOpenPending", new Set()); + } + + get _visitedPages() { + return (0, _pdfjsLib.shadow)(this, "_visitedPages", new Map()); + } + + async _updateFromSandbox(detail) { + const isInPresentationMode = this._pdfViewer.isInPresentationMode || this._pdfViewer.isChangingPresentationMode; + const { + id, + siblings, + command, + value + } = detail; + + if (!id) { + switch (command) { + case "clear": + console.clear(); + break; + + case "error": + console.error(value); + break; + + case "layout": + if (isInPresentationMode) { + return; + } + + const modes = (0, _ui_utils.apiPageLayoutToViewerModes)(value); + this._pdfViewer.spreadMode = modes.spreadMode; + break; + + case "page-num": + this._pdfViewer.currentPageNumber = value + 1; + break; + + case "print": + await this._pdfViewer.pagesPromise; + + this._eventBus.dispatch("print", { + source: this + }); + + break; + + case "println": + console.log(value); + break; + + case "zoom": + if (isInPresentationMode) { + return; + } + + this._pdfViewer.currentScaleValue = value; + break; + + case "SaveAs": + this._eventBus.dispatch("download", { + source: this + }); + + break; + + case "FirstPage": + this._pdfViewer.currentPageNumber = 1; + break; + + case "LastPage": + this._pdfViewer.currentPageNumber = this._pdfViewer.pagesCount; + break; + + case "NextPage": + this._pdfViewer.nextPage(); + + break; + + case "PrevPage": + this._pdfViewer.previousPage(); + + break; + + case "ZoomViewIn": + if (isInPresentationMode) { + return; + } + + this._pdfViewer.increaseScale(); + + break; + + case "ZoomViewOut": + if (isInPresentationMode) { + return; + } + + this._pdfViewer.decreaseScale(); + + break; + } + + return; + } + + if (isInPresentationMode) { + if (detail.focus) { + return; + } + } + + delete detail.id; + delete detail.siblings; + const ids = siblings ? [id, ...siblings] : [id]; + + for (const elementId of ids) { + const element = document.querySelector(`[data-element-id="${elementId}"]`); + + if (element) { + element.dispatchEvent(new CustomEvent("updatefromsandbox", { + detail + })); + } else { + this._pdfDocument?.annotationStorage.setValue(elementId, detail); + } + } + } + + async _dispatchPageOpen(pageNumber, initialize = false) { + const pdfDocument = this._pdfDocument, + visitedPages = this._visitedPages; + + if (initialize) { + this._closeCapability = (0, _pdfjsLib.createPromiseCapability)(); + } + + if (!this._closeCapability) { + return; + } + + const pageView = this._pdfViewer.getPageView(pageNumber - 1); + + if (pageView?.renderingState !== _ui_utils.RenderingStates.FINISHED) { + this._pageOpenPending.add(pageNumber); + + return; + } + + this._pageOpenPending.delete(pageNumber); + + const actionsPromise = (async () => { + const actions = await (!visitedPages.has(pageNumber) ? pageView.pdfPage?.getJSActions() : null); + + if (pdfDocument !== this._pdfDocument) { + return; + } + + await this._scripting?.dispatchEventInSandbox({ + id: "page", + name: "PageOpen", + pageNumber, + actions + }); + })(); + + visitedPages.set(pageNumber, actionsPromise); + } + + async _dispatchPageClose(pageNumber) { + const pdfDocument = this._pdfDocument, + visitedPages = this._visitedPages; + + if (!this._closeCapability) { + return; + } + + if (this._pageOpenPending.has(pageNumber)) { + return; + } + + const actionsPromise = visitedPages.get(pageNumber); + + if (!actionsPromise) { + return; + } + + visitedPages.set(pageNumber, null); + await actionsPromise; + + if (pdfDocument !== this._pdfDocument) { + return; + } + + await this._scripting?.dispatchEventInSandbox({ + id: "page", + name: "PageClose", + pageNumber + }); + } + + async _getDocProperties() { + if (this._docPropertiesLookup) { + return this._docPropertiesLookup(this._pdfDocument); + } + + throw new Error("_getDocProperties: Unable to lookup properties."); + } + + _createScripting() { + this._destroyCapability = (0, _pdfjsLib.createPromiseCapability)(); + + if (this._scripting) { + throw new Error("_createScripting: Scripting already exists."); + } + + if (this._scriptingFactory) { + return this._scriptingFactory.createScripting({ + sandboxBundleSrc: this._sandboxBundleSrc + }); + } + + throw new Error("_createScripting: Cannot create scripting."); + } + + async _destroyScripting() { + if (!this._scripting) { + this._pdfDocument = null; + this._destroyCapability?.resolve(); + return; + } + + if (this._closeCapability) { + await Promise.race([this._closeCapability.promise, new Promise(resolve => { + setTimeout(resolve, 1000); + })]).catch(reason => {}); + this._closeCapability = null; + } + + this._pdfDocument = null; + + try { + await this._scripting.destroySandbox(); + } catch (ex) {} + + for (const [name, listener] of this._internalEvents) { + this._eventBus._off(name, listener); + } + + this._internalEvents.clear(); + + for (const [name, listener] of this._domEvents) { + window.removeEventListener(name, listener, true); + } + + this._domEvents.clear(); + + this._pageOpenPending.clear(); + + this._visitedPages.clear(); + + this._scripting = null; + delete this._mouseState.isDown; + this._ready = false; + this._destroyCapability?.resolve(); + } + +} + +exports.PDFScriptingManager = PDFScriptingManager; + +/***/ }), +/* 24 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFSidebar = void 0; + +var _ui_utils = __webpack_require__(1); + +const UI_NOTIFICATION_CLASS = "pdfSidebarNotification"; + +class PDFSidebar { + constructor({ + elements, + pdfViewer, + pdfThumbnailViewer, + eventBus, + l10n + }) { + this.isOpen = false; + this.active = _ui_utils.SidebarView.THUMBS; + this.isInitialViewSet = false; + this.isInitialEventDispatched = false; + this.onToggled = null; + this.pdfViewer = pdfViewer; + this.pdfThumbnailViewer = pdfThumbnailViewer; + this.outerContainer = elements.outerContainer; + this.sidebarContainer = elements.sidebarContainer; + this.toggleButton = elements.toggleButton; + this.thumbnailButton = elements.thumbnailButton; + this.outlineButton = elements.outlineButton; + this.attachmentsButton = elements.attachmentsButton; + this.layersButton = elements.layersButton; + this.thumbnailView = elements.thumbnailView; + this.outlineView = elements.outlineView; + this.attachmentsView = elements.attachmentsView; + this.layersView = elements.layersView; + this._outlineOptionsContainer = elements.outlineOptionsContainer; + this._currentOutlineItemButton = elements.currentOutlineItemButton; + this.eventBus = eventBus; + this.l10n = l10n; + this.#addEventListeners(); + } + + reset() { + this.isInitialViewSet = false; + this.isInitialEventDispatched = false; + this.#hideUINotification(true); + this.switchView(_ui_utils.SidebarView.THUMBS); + this.outlineButton.disabled = false; + this.attachmentsButton.disabled = false; + this.layersButton.disabled = false; + this._currentOutlineItemButton.disabled = true; + } + + get visibleView() { + return this.isOpen ? this.active : _ui_utils.SidebarView.NONE; + } + + setInitialView(view = _ui_utils.SidebarView.NONE) { + if (this.isInitialViewSet) { + return; + } + + this.isInitialViewSet = true; + + if (view === _ui_utils.SidebarView.NONE || view === _ui_utils.SidebarView.UNKNOWN) { + this.#dispatchEvent(); + return; + } + + this.switchView(view, true); + + if (!this.isInitialEventDispatched) { + this.#dispatchEvent(); + } + } + + switchView(view, forceOpen = false) { + const isViewChanged = view !== this.active; + let shouldForceRendering = false; + + switch (view) { + case _ui_utils.SidebarView.NONE: + if (this.isOpen) { + this.close(); + } + + return; + + case _ui_utils.SidebarView.THUMBS: + if (this.isOpen && isViewChanged) { + shouldForceRendering = true; + } + + break; + + case _ui_utils.SidebarView.OUTLINE: + if (this.outlineButton.disabled) { + return; + } + + break; + + case _ui_utils.SidebarView.ATTACHMENTS: + if (this.attachmentsButton.disabled) { + return; + } + + break; + + case _ui_utils.SidebarView.LAYERS: + if (this.layersButton.disabled) { + return; + } + + break; + + default: + console.error(`PDFSidebar.switchView: "${view}" is not a valid view.`); + return; + } + + this.active = view; + const isThumbs = view === _ui_utils.SidebarView.THUMBS, + isOutline = view === _ui_utils.SidebarView.OUTLINE, + isAttachments = view === _ui_utils.SidebarView.ATTACHMENTS, + isLayers = view === _ui_utils.SidebarView.LAYERS; + this.thumbnailButton.classList.toggle("toggled", isThumbs); + this.outlineButton.classList.toggle("toggled", isOutline); + this.attachmentsButton.classList.toggle("toggled", isAttachments); + this.layersButton.classList.toggle("toggled", isLayers); + this.thumbnailButton.setAttribute("aria-checked", isThumbs); + this.outlineButton.setAttribute("aria-checked", isOutline); + this.attachmentsButton.setAttribute("aria-checked", isAttachments); + this.layersButton.setAttribute("aria-checked", isLayers); + this.thumbnailView.classList.toggle("hidden", !isThumbs); + this.outlineView.classList.toggle("hidden", !isOutline); + this.attachmentsView.classList.toggle("hidden", !isAttachments); + this.layersView.classList.toggle("hidden", !isLayers); + + this._outlineOptionsContainer.classList.toggle("hidden", !isOutline); + + if (forceOpen && !this.isOpen) { + this.open(); + return; + } + + if (shouldForceRendering) { + this.#updateThumbnailViewer(); + this.#forceRendering(); + } + + if (isViewChanged) { + this.#dispatchEvent(); + } + } + + open() { + if (this.isOpen) { + return; + } + + this.isOpen = true; + this.toggleButton.classList.add("toggled"); + this.toggleButton.setAttribute("aria-expanded", "true"); + this.outerContainer.classList.add("sidebarMoving", "sidebarOpen"); + + if (this.active === _ui_utils.SidebarView.THUMBS) { + this.#updateThumbnailViewer(); + } + + this.#forceRendering(); + this.#dispatchEvent(); + this.#hideUINotification(); + } + + close() { + if (!this.isOpen) { + return; + } + + this.isOpen = false; + this.toggleButton.classList.remove("toggled"); + this.toggleButton.setAttribute("aria-expanded", "false"); + this.outerContainer.classList.add("sidebarMoving"); + this.outerContainer.classList.remove("sidebarOpen"); + this.#forceRendering(); + this.#dispatchEvent(); + } + + toggle() { + if (this.isOpen) { + this.close(); + } else { + this.open(); + } + } + + #dispatchEvent() { + if (this.isInitialViewSet && !this.isInitialEventDispatched) { + this.isInitialEventDispatched = true; + } + + this.eventBus.dispatch("sidebarviewchanged", { + source: this, + view: this.visibleView + }); + } + + #forceRendering() { + if (this.onToggled) { + this.onToggled(); + } else { + this.pdfViewer.forceRendering(); + this.pdfThumbnailViewer.forceRendering(); + } + } + + #updateThumbnailViewer() { + const { + pdfViewer, + pdfThumbnailViewer + } = this; + const pagesCount = pdfViewer.pagesCount; + + for (let pageIndex = 0; pageIndex < pagesCount; pageIndex++) { + const pageView = pdfViewer.getPageView(pageIndex); + + if (pageView?.renderingState === _ui_utils.RenderingStates.FINISHED) { + const thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex); + thumbnailView.setImage(pageView); + } + } + + pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber); + } + + #showUINotification() { + this.l10n.get("toggle_sidebar_notification2.title").then(msg => { + this.toggleButton.title = msg; + }); + + if (!this.isOpen) { + this.toggleButton.classList.add(UI_NOTIFICATION_CLASS); + } + } + + #hideUINotification(reset = false) { + if (this.isOpen || reset) { + this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS); + } + + if (reset) { + this.l10n.get("toggle_sidebar.title").then(msg => { + this.toggleButton.title = msg; + }); + } + } + + #addEventListeners() { + this.sidebarContainer.addEventListener("transitionend", evt => { + if (evt.target === this.sidebarContainer) { + this.outerContainer.classList.remove("sidebarMoving"); + } + }); + this.toggleButton.addEventListener("click", () => { + this.toggle(); + }); + this.thumbnailButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.THUMBS); + }); + this.outlineButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.OUTLINE); + }); + this.outlineButton.addEventListener("dblclick", () => { + this.eventBus.dispatch("toggleoutlinetree", { + source: this + }); + }); + this.attachmentsButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.ATTACHMENTS); + }); + this.layersButton.addEventListener("click", () => { + this.switchView(_ui_utils.SidebarView.LAYERS); + }); + this.layersButton.addEventListener("dblclick", () => { + this.eventBus.dispatch("resetlayers", { + source: this + }); + }); + + this._currentOutlineItemButton.addEventListener("click", () => { + this.eventBus.dispatch("currentoutlineitem", { + source: this + }); + }); + + const onTreeLoaded = (count, button, view) => { + button.disabled = !count; + + if (count) { + this.#showUINotification(); + } else if (this.active === view) { + this.switchView(_ui_utils.SidebarView.THUMBS); + } + }; + + this.eventBus._on("outlineloaded", evt => { + onTreeLoaded(evt.outlineCount, this.outlineButton, _ui_utils.SidebarView.OUTLINE); + evt.currentOutlineItemPromise.then(enabled => { + if (!this.isInitialViewSet) { + return; + } + + this._currentOutlineItemButton.disabled = !enabled; + }); + }); + + this.eventBus._on("attachmentsloaded", evt => { + onTreeLoaded(evt.attachmentsCount, this.attachmentsButton, _ui_utils.SidebarView.ATTACHMENTS); + }); + + this.eventBus._on("layersloaded", evt => { + onTreeLoaded(evt.layersCount, this.layersButton, _ui_utils.SidebarView.LAYERS); + }); + + this.eventBus._on("presentationmodechanged", evt => { + if (evt.state === _ui_utils.PresentationModeState.NORMAL && this.visibleView === _ui_utils.SidebarView.THUMBS) { + this.#updateThumbnailViewer(); + } + }); + } + +} + +exports.PDFSidebar = PDFSidebar; + +/***/ }), +/* 25 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFSidebarResizer = void 0; + +var _ui_utils = __webpack_require__(1); + +const SIDEBAR_WIDTH_VAR = "--sidebar-width"; +const SIDEBAR_MIN_WIDTH = 200; +const SIDEBAR_RESIZING_CLASS = "sidebarResizing"; + +class PDFSidebarResizer { + constructor(options, eventBus, l10n) { + this.isRTL = false; + this.sidebarOpen = false; + this._width = null; + this._outerContainerWidth = null; + this._boundEvents = Object.create(null); + this.outerContainer = options.outerContainer; + this.resizer = options.resizer; + this.eventBus = eventBus; + l10n.getDirection().then(dir => { + this.isRTL = dir === "rtl"; + }); + + this._addEventListeners(); + } + + get outerContainerWidth() { + return this._outerContainerWidth ||= this.outerContainer.clientWidth; + } + + _updateWidth(width = 0) { + const maxWidth = Math.floor(this.outerContainerWidth / 2); + + if (width > maxWidth) { + width = maxWidth; + } + + if (width < SIDEBAR_MIN_WIDTH) { + width = SIDEBAR_MIN_WIDTH; + } + + if (width === this._width) { + return false; + } + + this._width = width; + + _ui_utils.docStyle.setProperty(SIDEBAR_WIDTH_VAR, `${width}px`); + + return true; + } + + _mouseMove(evt) { + let width = evt.clientX; + + if (this.isRTL) { + width = this.outerContainerWidth - width; + } + + this._updateWidth(width); + } + + _mouseUp(evt) { + this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS); + this.eventBus.dispatch("resize", { + source: this + }); + const _boundEvents = this._boundEvents; + window.removeEventListener("mousemove", _boundEvents.mouseMove); + window.removeEventListener("mouseup", _boundEvents.mouseUp); + } + + _addEventListeners() { + const _boundEvents = this._boundEvents; + _boundEvents.mouseMove = this._mouseMove.bind(this); + _boundEvents.mouseUp = this._mouseUp.bind(this); + this.resizer.addEventListener("mousedown", evt => { + if (evt.button !== 0) { + return; + } + + this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS); + window.addEventListener("mousemove", _boundEvents.mouseMove); + window.addEventListener("mouseup", _boundEvents.mouseUp); + }); + + this.eventBus._on("sidebarviewchanged", evt => { + this.sidebarOpen = !!evt?.view; + }); + + this.eventBus._on("resize", evt => { + if (evt?.source !== window) { + return; + } + + this._outerContainerWidth = null; + + if (!this._width) { + return; + } + + if (!this.sidebarOpen) { + this._updateWidth(this._width); + + return; + } + + this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS); + + const updated = this._updateWidth(this._width); + + Promise.resolve().then(() => { + this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS); + + if (updated) { + this.eventBus.dispatch("resize", { + source: this + }); + } + }); + }); + } + +} + +exports.PDFSidebarResizer = PDFSidebarResizer; + +/***/ }), +/* 26 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFThumbnailViewer = void 0; + +var _ui_utils = __webpack_require__(1); + +var _pdf_thumbnail_view = __webpack_require__(27); + +const THUMBNAIL_SCROLL_MARGIN = -19; +const THUMBNAIL_SELECTED_CLASS = "selected"; + +class PDFThumbnailViewer { + constructor({ + container, + eventBus, + linkService, + renderingQueue, + l10n, + pageColors + }) { + this.container = container; + this.linkService = linkService; + this.renderingQueue = renderingQueue; + this.l10n = l10n; + this.pageColors = pageColors || null; + + if (this.pageColors && !(CSS.supports("color", this.pageColors.background) && CSS.supports("color", this.pageColors.foreground))) { + if (this.pageColors.background || this.pageColors.foreground) { + console.warn("PDFThumbnailViewer: Ignoring `pageColors`-option, since the browser doesn't support the values used."); + } + + this.pageColors = null; + } + + this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdated.bind(this)); + + this._resetView(); + } + + _scrollUpdated() { + this.renderingQueue.renderHighestPriority(); + } + + getThumbnail(index) { + return this._thumbnails[index]; + } + + _getVisibleThumbs() { + return (0, _ui_utils.getVisibleElements)({ + scrollEl: this.container, + views: this._thumbnails + }); + } + + scrollThumbnailIntoView(pageNumber) { + if (!this.pdfDocument) { + return; + } + + const thumbnailView = this._thumbnails[pageNumber - 1]; + + if (!thumbnailView) { + console.error('scrollThumbnailIntoView: Invalid "pageNumber" parameter.'); + return; + } + + if (pageNumber !== this._currentPageNumber) { + const prevThumbnailView = this._thumbnails[this._currentPageNumber - 1]; + prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS); + thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS); + } + + const { + first, + last, + views + } = this._getVisibleThumbs(); + + if (views.length > 0) { + let shouldScroll = false; + + if (pageNumber <= first.id || pageNumber >= last.id) { + shouldScroll = true; + } else { + for (const { + id, + percent + } of views) { + if (id !== pageNumber) { + continue; + } + + shouldScroll = percent < 100; + break; + } + } + + if (shouldScroll) { + (0, _ui_utils.scrollIntoView)(thumbnailView.div, { + top: THUMBNAIL_SCROLL_MARGIN + }); + } + } + + this._currentPageNumber = pageNumber; + } + + get pagesRotation() { + return this._pagesRotation; + } + + set pagesRotation(rotation) { + if (!(0, _ui_utils.isValidRotation)(rotation)) { + throw new Error("Invalid thumbnails rotation angle."); + } + + if (!this.pdfDocument) { + return; + } + + if (this._pagesRotation === rotation) { + return; + } + + this._pagesRotation = rotation; + const updateArgs = { + rotation + }; + + for (const thumbnail of this._thumbnails) { + thumbnail.update(updateArgs); + } + } + + cleanup() { + for (const thumbnail of this._thumbnails) { + if (thumbnail.renderingState !== _ui_utils.RenderingStates.FINISHED) { + thumbnail.reset(); + } + } + + _pdf_thumbnail_view.TempImageFactory.destroyCanvas(); + } + + _resetView() { + this._thumbnails = []; + this._currentPageNumber = 1; + this._pageLabels = null; + this._pagesRotation = 0; + this.container.textContent = ""; + } + + setDocument(pdfDocument) { + if (this.pdfDocument) { + this._cancelRendering(); + + this._resetView(); + } + + this.pdfDocument = pdfDocument; + + if (!pdfDocument) { + return; + } + + const firstPagePromise = pdfDocument.getPage(1); + const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig(); + firstPagePromise.then(firstPdfPage => { + const pagesCount = pdfDocument.numPages; + const viewport = firstPdfPage.getViewport({ + scale: 1 + }); + + for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) { + const thumbnail = new _pdf_thumbnail_view.PDFThumbnailView({ + container: this.container, + id: pageNum, + defaultViewport: viewport.clone(), + optionalContentConfigPromise, + linkService: this.linkService, + renderingQueue: this.renderingQueue, + l10n: this.l10n, + pageColors: this.pageColors + }); + + this._thumbnails.push(thumbnail); + } + + const firstThumbnailView = this._thumbnails[0]; + + if (firstThumbnailView) { + firstThumbnailView.setPdfPage(firstPdfPage); + } + + const thumbnailView = this._thumbnails[this._currentPageNumber - 1]; + thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS); + }).catch(reason => { + console.error("Unable to initialize thumbnail viewer", reason); + }); + } + + _cancelRendering() { + for (const thumbnail of this._thumbnails) { + thumbnail.cancelRendering(); + } + } + + setPageLabels(labels) { + if (!this.pdfDocument) { + return; + } + + if (!labels) { + this._pageLabels = null; + } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) { + this._pageLabels = null; + console.error("PDFThumbnailViewer_setPageLabels: Invalid page labels."); + } else { + this._pageLabels = labels; + } + + for (let i = 0, ii = this._thumbnails.length; i < ii; i++) { + this._thumbnails[i].setPageLabel(this._pageLabels?.[i] ?? null); + } + } + + async #ensurePdfPageLoaded(thumbView) { + if (thumbView.pdfPage) { + return thumbView.pdfPage; + } + + try { + const pdfPage = await this.pdfDocument.getPage(thumbView.id); + + if (!thumbView.pdfPage) { + thumbView.setPdfPage(pdfPage); + } + + return pdfPage; + } catch (reason) { + console.error("Unable to get page for thumb view", reason); + return null; + } + } + + #getScrollAhead(visible) { + if (visible.first?.id === 1) { + return true; + } else if (visible.last?.id === this._thumbnails.length) { + return false; + } + + return this.scroll.down; + } + + forceRendering() { + const visibleThumbs = this._getVisibleThumbs(); + + const scrollAhead = this.#getScrollAhead(visibleThumbs); + const thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, this._thumbnails, scrollAhead); + + if (thumbView) { + this.#ensurePdfPageLoaded(thumbView).then(() => { + this.renderingQueue.renderView(thumbView); + }); + return true; + } + + return false; + } + +} + +exports.PDFThumbnailViewer = PDFThumbnailViewer; + +/***/ }), +/* 27 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TempImageFactory = exports.PDFThumbnailView = void 0; + +var _ui_utils = __webpack_require__(1); + +var _pdfjsLib = __webpack_require__(5); + +const DRAW_UPSCALE_FACTOR = 2; +const MAX_NUM_SCALING_STEPS = 3; +const THUMBNAIL_CANVAS_BORDER_WIDTH = 1; +const THUMBNAIL_WIDTH = 98; + +class TempImageFactory { + static #tempCanvas = null; + + static getCanvas(width, height) { + const tempCanvas = this.#tempCanvas ||= document.createElement("canvas"); + tempCanvas.width = width; + tempCanvas.height = height; + const ctx = tempCanvas.getContext("2d", { + alpha: false + }); + ctx.save(); + ctx.fillStyle = "rgb(255, 255, 255)"; + ctx.fillRect(0, 0, width, height); + ctx.restore(); + return [tempCanvas, tempCanvas.getContext("2d")]; + } + + static destroyCanvas() { + const tempCanvas = this.#tempCanvas; + + if (tempCanvas) { + tempCanvas.width = 0; + tempCanvas.height = 0; + } + + this.#tempCanvas = null; + } + +} + +exports.TempImageFactory = TempImageFactory; + +class PDFThumbnailView { + constructor({ + container, + id, + defaultViewport, + optionalContentConfigPromise, + linkService, + renderingQueue, + l10n, + pageColors + }) { + this.id = id; + this.renderingId = "thumbnail" + id; + this.pageLabel = null; + this.pdfPage = null; + this.rotation = 0; + this.viewport = defaultViewport; + this.pdfPageRotate = defaultViewport.rotation; + this._optionalContentConfigPromise = optionalContentConfigPromise || null; + this.pageColors = pageColors || null; + this.linkService = linkService; + this.renderingQueue = renderingQueue; + this.renderTask = null; + this.renderingState = _ui_utils.RenderingStates.INITIAL; + this.resume = null; + const pageWidth = this.viewport.width, + pageHeight = this.viewport.height, + pageRatio = pageWidth / pageHeight; + this.canvasWidth = THUMBNAIL_WIDTH; + this.canvasHeight = this.canvasWidth / pageRatio | 0; + this.scale = this.canvasWidth / pageWidth; + this.l10n = l10n; + const anchor = document.createElement("a"); + anchor.href = linkService.getAnchorUrl("#page=" + id); + + this._thumbPageTitle.then(msg => { + anchor.title = msg; + }); + + anchor.onclick = function () { + linkService.goToPage(id); + return false; + }; + + this.anchor = anchor; + const div = document.createElement("div"); + div.className = "thumbnail"; + div.setAttribute("data-page-number", this.id); + this.div = div; + const ring = document.createElement("div"); + ring.className = "thumbnailSelectionRing"; + const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; + ring.style.width = this.canvasWidth + borderAdjustment + "px"; + ring.style.height = this.canvasHeight + borderAdjustment + "px"; + this.ring = ring; + div.append(ring); + anchor.append(div); + container.append(anchor); + } + + setPdfPage(pdfPage) { + this.pdfPage = pdfPage; + this.pdfPageRotate = pdfPage.rotate; + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = pdfPage.getViewport({ + scale: 1, + rotation: totalRotation + }); + this.reset(); + } + + reset() { + this.cancelRendering(); + this.renderingState = _ui_utils.RenderingStates.INITIAL; + const pageWidth = this.viewport.width, + pageHeight = this.viewport.height, + pageRatio = pageWidth / pageHeight; + this.canvasHeight = this.canvasWidth / pageRatio | 0; + this.scale = this.canvasWidth / pageWidth; + this.div.removeAttribute("data-loaded"); + const ring = this.ring; + ring.textContent = ""; + const borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; + ring.style.width = this.canvasWidth + borderAdjustment + "px"; + ring.style.height = this.canvasHeight + borderAdjustment + "px"; + + if (this.canvas) { + this.canvas.width = 0; + this.canvas.height = 0; + delete this.canvas; + } + + if (this.image) { + this.image.removeAttribute("src"); + delete this.image; + } + } + + update({ + rotation = null + }) { + if (typeof rotation === "number") { + this.rotation = rotation; + } + + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = this.viewport.clone({ + scale: 1, + rotation: totalRotation + }); + this.reset(); + } + + cancelRendering() { + if (this.renderTask) { + this.renderTask.cancel(); + this.renderTask = null; + } + + this.resume = null; + } + + _getPageDrawContext(upscaleFactor = 1) { + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d", { + alpha: false + }); + const outputScale = new _ui_utils.OutputScale(); + canvas.width = upscaleFactor * this.canvasWidth * outputScale.sx | 0; + canvas.height = upscaleFactor * this.canvasHeight * outputScale.sy | 0; + const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null; + return { + ctx, + canvas, + transform + }; + } + + _convertCanvasToImage(canvas) { + if (this.renderingState !== _ui_utils.RenderingStates.FINISHED) { + throw new Error("_convertCanvasToImage: Rendering has not finished."); + } + + const reducedCanvas = this._reduceImage(canvas); + + const image = document.createElement("img"); + image.className = "thumbnailImage"; + + this._thumbPageCanvas.then(msg => { + image.setAttribute("aria-label", msg); + }); + + image.style.width = this.canvasWidth + "px"; + image.style.height = this.canvasHeight + "px"; + image.src = reducedCanvas.toDataURL(); + this.image = image; + this.div.setAttribute("data-loaded", true); + this.ring.append(image); + reducedCanvas.width = 0; + reducedCanvas.height = 0; + } + + draw() { + if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) { + console.error("Must be in new state before drawing"); + return Promise.resolve(); + } + + const { + pdfPage + } = this; + + if (!pdfPage) { + this.renderingState = _ui_utils.RenderingStates.FINISHED; + return Promise.reject(new Error("pdfPage is not loaded")); + } + + this.renderingState = _ui_utils.RenderingStates.RUNNING; + + const finishRenderTask = async (error = null) => { + if (renderTask === this.renderTask) { + this.renderTask = null; + } + + if (error instanceof _pdfjsLib.RenderingCancelledException) { + return; + } + + this.renderingState = _ui_utils.RenderingStates.FINISHED; + + this._convertCanvasToImage(canvas); + + if (error) { + throw error; + } + }; + + const { + ctx, + canvas, + transform + } = this._getPageDrawContext(DRAW_UPSCALE_FACTOR); + + const drawViewport = this.viewport.clone({ + scale: DRAW_UPSCALE_FACTOR * this.scale + }); + + const renderContinueCallback = cont => { + if (!this.renderingQueue.isHighestPriority(this)) { + this.renderingState = _ui_utils.RenderingStates.PAUSED; + + this.resume = () => { + this.renderingState = _ui_utils.RenderingStates.RUNNING; + cont(); + }; + + return; + } + + cont(); + }; + + const renderContext = { + canvasContext: ctx, + transform, + viewport: drawViewport, + optionalContentConfigPromise: this._optionalContentConfigPromise, + pageColors: this.pageColors + }; + const renderTask = this.renderTask = pdfPage.render(renderContext); + renderTask.onContinue = renderContinueCallback; + const resultPromise = renderTask.promise.then(function () { + return finishRenderTask(null); + }, function (error) { + return finishRenderTask(error); + }); + resultPromise.finally(() => { + canvas.width = 0; + canvas.height = 0; + const pageCached = this.linkService.isPageCached(this.id); + + if (!pageCached) { + this.pdfPage?.cleanup(); + } + }); + return resultPromise; + } + + setImage(pageView) { + if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) { + return; + } + + const { + thumbnailCanvas: canvas, + pdfPage, + scale + } = pageView; + + if (!canvas) { + return; + } + + if (!this.pdfPage) { + this.setPdfPage(pdfPage); + } + + if (scale < this.scale) { + return; + } + + this.renderingState = _ui_utils.RenderingStates.FINISHED; + + this._convertCanvasToImage(canvas); + } + + _reduceImage(img) { + const { + ctx, + canvas + } = this._getPageDrawContext(); + + if (img.width <= 2 * canvas.width) { + ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height); + return canvas; + } + + let reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS; + let reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS; + const [reducedImage, reducedImageCtx] = TempImageFactory.getCanvas(reducedWidth, reducedHeight); + + while (reducedWidth > img.width || reducedHeight > img.height) { + reducedWidth >>= 1; + reducedHeight >>= 1; + } + + reducedImageCtx.drawImage(img, 0, 0, img.width, img.height, 0, 0, reducedWidth, reducedHeight); + + while (reducedWidth > 2 * canvas.width) { + reducedImageCtx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, reducedWidth >> 1, reducedHeight >> 1); + reducedWidth >>= 1; + reducedHeight >>= 1; + } + + ctx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, canvas.width, canvas.height); + return canvas; + } + + get _thumbPageTitle() { + return this.l10n.get("thumb_page_title", { + page: this.pageLabel ?? this.id + }); + } + + get _thumbPageCanvas() { + return this.l10n.get("thumb_page_canvas", { + page: this.pageLabel ?? this.id + }); + } + + setPageLabel(label) { + this.pageLabel = typeof label === "string" ? label : null; + + this._thumbPageTitle.then(msg => { + this.anchor.title = msg; + }); + + if (this.renderingState !== _ui_utils.RenderingStates.FINISHED) { + return; + } + + this._thumbPageCanvas.then(msg => { + this.image?.setAttribute("aria-label", msg); + }); + } + +} + +exports.PDFThumbnailView = PDFThumbnailView; + +/***/ }), +/* 28 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFViewer = exports.PDFSinglePageViewer = void 0; + +var _ui_utils = __webpack_require__(1); + +var _base_viewer = __webpack_require__(29); + +class PDFViewer extends _base_viewer.BaseViewer {} + +exports.PDFViewer = PDFViewer; + +class PDFSinglePageViewer extends _base_viewer.BaseViewer { + _resetView() { + super._resetView(); + + this._scrollMode = _ui_utils.ScrollMode.PAGE; + this._spreadMode = _ui_utils.SpreadMode.NONE; + } + + set scrollMode(mode) {} + + _updateScrollMode() {} + + set spreadMode(mode) {} + + _updateSpreadMode() {} + +} + +exports.PDFSinglePageViewer = PDFSinglePageViewer; + +/***/ }), +/* 29 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PagesCountLimit = exports.PDFPageViewBuffer = exports.BaseViewer = void 0; + +var _pdfjsLib = __webpack_require__(5); + +var _ui_utils = __webpack_require__(1); + +var _annotation_editor_layer_builder = __webpack_require__(30); + +var _annotation_layer_builder = __webpack_require__(32); + +var _l10n_utils = __webpack_require__(31); + +var _pdf_page_view = __webpack_require__(33); + +var _pdf_rendering_queue = __webpack_require__(22); + +var _pdf_link_service = __webpack_require__(3); + +var _struct_tree_layer_builder = __webpack_require__(35); + +var _text_highlighter = __webpack_require__(36); + +var _text_layer_builder = __webpack_require__(37); + +var _xfa_layer_builder = __webpack_require__(38); + +const DEFAULT_CACHE_SIZE = 10; +const ENABLE_PERMISSIONS_CLASS = "enablePermissions"; +const PagesCountLimit = { + FORCE_SCROLL_MODE_PAGE: 15000, + FORCE_LAZY_PAGE_INIT: 7500, + PAUSE_EAGER_PAGE_INIT: 250 +}; +exports.PagesCountLimit = PagesCountLimit; + +function isValidAnnotationEditorMode(mode) { + return Object.values(_pdfjsLib.AnnotationEditorType).includes(mode) && mode !== _pdfjsLib.AnnotationEditorType.DISABLE; +} + +class PDFPageViewBuffer { + #buf = new Set(); + #size = 0; + + constructor(size) { + this.#size = size; + } + + push(view) { + const buf = this.#buf; + + if (buf.has(view)) { + buf.delete(view); + } + + buf.add(view); + + if (buf.size > this.#size) { + this.#destroyFirstView(); + } + } + + resize(newSize, idsToKeep = null) { + this.#size = newSize; + const buf = this.#buf; + + if (idsToKeep) { + const ii = buf.size; + let i = 1; + + for (const view of buf) { + if (idsToKeep.has(view.id)) { + buf.delete(view); + buf.add(view); + } + + if (++i > ii) { + break; + } + } + } + + while (buf.size > this.#size) { + this.#destroyFirstView(); + } + } + + has(view) { + return this.#buf.has(view); + } + + [Symbol.iterator]() { + return this.#buf.keys(); + } + + #destroyFirstView() { + const firstView = this.#buf.keys().next().value; + firstView?.destroy(); + this.#buf.delete(firstView); + } + +} + +exports.PDFPageViewBuffer = PDFPageViewBuffer; + +class BaseViewer { + #buffer = null; + #annotationEditorMode = _pdfjsLib.AnnotationEditorType.DISABLE; + #annotationEditorUIManager = null; + #annotationMode = _pdfjsLib.AnnotationMode.ENABLE_FORMS; + #enablePermissions = false; + #previousContainerHeight = 0; + #scrollModePageState = null; + #onVisibilityChange = null; + + constructor(options) { + if (this.constructor === BaseViewer) { + throw new Error("Cannot initialize BaseViewer."); + } + + const viewerVersion = '2.16.105'; + + 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; + + if (!(this.container?.tagName.toUpperCase() === "DIV" && this.viewer?.tagName.toUpperCase() === "DIV")) { + throw new Error("Invalid `container` and/or `viewer` option."); + } + + if (this.container.offsetParent && getComputedStyle(this.container).position !== "absolute") { + throw new Error("The `container` must be absolutely positioned."); + } + + this.eventBus = options.eventBus; + this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService(); + this.downloadManager = options.downloadManager || null; + this.findController = options.findController || null; + this._scriptingManager = options.scriptingManager || null; + this.removePageBorders = options.removePageBorders || false; + this.textLayerMode = options.textLayerMode ?? _ui_utils.TextLayerMode.ENABLE; + this.#annotationMode = options.annotationMode ?? _pdfjsLib.AnnotationMode.ENABLE_FORMS; + this.#annotationEditorMode = options.annotationEditorMode ?? _pdfjsLib.AnnotationEditorType.DISABLE; + this.imageResourcesPath = options.imageResourcesPath || ""; + this.enablePrintAutoRotate = options.enablePrintAutoRotate || false; + this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; + this.useOnlyCssZoom = options.useOnlyCssZoom || false; + this.maxCanvasPixels = options.maxCanvasPixels; + this.l10n = options.l10n || _l10n_utils.NullL10n; + this.#enablePermissions = options.enablePermissions || false; + this.pageColors = options.pageColors || null; + + if (this.pageColors && !(CSS.supports("color", this.pageColors.background) && CSS.supports("color", this.pageColors.foreground))) { + if (this.pageColors.background || this.pageColors.foreground) { + console.warn("BaseViewer: Ignoring `pageColors`-option, since the browser doesn't support the values used."); + } + + this.pageColors = null; + } + + this.defaultRenderingQueue = !options.renderingQueue; + + if (this.defaultRenderingQueue) { + this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); + this.renderingQueue.setViewer(this); + } else { + this.renderingQueue = options.renderingQueue; + } + + this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this)); + this.presentationModeState = _ui_utils.PresentationModeState.UNKNOWN; + this._onBeforeDraw = this._onAfterDraw = null; + + this._resetView(); + + if (this.removePageBorders) { + this.viewer.classList.add("removePageBorders"); + } + + this.updateContainerHeightCss(); + } + + get pagesCount() { + return this._pages.length; + } + + getPageView(index) { + return this._pages[index]; + } + + get pageViewsReady() { + if (!this._pagesCapability.settled) { + return false; + } + + return this._pages.every(function (pageView) { + return pageView?.pdfPage; + }); + } + + get renderForms() { + return this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS; + } + + get enableScripting() { + return !!this._scriptingManager; + } + + get currentPageNumber() { + return this._currentPageNumber; + } + + set currentPageNumber(val) { + if (!Number.isInteger(val)) { + throw new Error("Invalid page number."); + } + + if (!this.pdfDocument) { + return; + } + + if (!this._setCurrentPageNumber(val, true)) { + console.error(`currentPageNumber: "${val}" is not a valid page.`); + } + } + + _setCurrentPageNumber(val, resetCurrentPageView = false) { + if (this._currentPageNumber === val) { + if (resetCurrentPageView) { + this.#resetCurrentPageView(); + } + + return true; + } + + if (!(0 < val && val <= this.pagesCount)) { + return false; + } + + const previous = this._currentPageNumber; + this._currentPageNumber = val; + this.eventBus.dispatch("pagechanging", { + source: this, + pageNumber: val, + pageLabel: this._pageLabels?.[val - 1] ?? null, + previous + }); + + if (resetCurrentPageView) { + this.#resetCurrentPageView(); + } + + return true; + } + + get currentPageLabel() { + return this._pageLabels?.[this._currentPageNumber - 1] ?? null; + } + + set currentPageLabel(val) { + if (!this.pdfDocument) { + return; + } + + let page = val | 0; + + if (this._pageLabels) { + const i = this._pageLabels.indexOf(val); + + if (i >= 0) { + page = i + 1; + } + } + + if (!this._setCurrentPageNumber(page, true)) { + console.error(`currentPageLabel: "${val}" is not a valid page.`); + } + } + + get currentScale() { + return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE; + } + + set currentScale(val) { + if (isNaN(val)) { + throw new Error("Invalid numeric scale."); + } + + if (!this.pdfDocument) { + return; + } + + this._setScale(val, false); + } + + get currentScaleValue() { + return this._currentScaleValue; + } + + set currentScaleValue(val) { + if (!this.pdfDocument) { + return; + } + + this._setScale(val, false); + } + + get pagesRotation() { + return this._pagesRotation; + } + + set pagesRotation(rotation) { + if (!(0, _ui_utils.isValidRotation)(rotation)) { + throw new Error("Invalid pages rotation angle."); + } + + if (!this.pdfDocument) { + return; + } + + rotation %= 360; + + if (rotation < 0) { + rotation += 360; + } + + if (this._pagesRotation === rotation) { + return; + } + + this._pagesRotation = rotation; + const pageNumber = this._currentPageNumber; + const updateArgs = { + rotation + }; + + for (const pageView of this._pages) { + pageView.update(updateArgs); + } + + if (this._currentScaleValue) { + this._setScale(this._currentScaleValue, true); + } + + this.eventBus.dispatch("rotationchanging", { + source: this, + pagesRotation: rotation, + pageNumber + }); + + if (this.defaultRenderingQueue) { + this.update(); + } + } + + get firstPagePromise() { + return this.pdfDocument ? this._firstPageCapability.promise : null; + } + + get onePageRendered() { + return this.pdfDocument ? this._onePageRenderedCapability.promise : null; + } + + get pagesPromise() { + return this.pdfDocument ? this._pagesCapability.promise : null; + } + + #initializePermissions(permissions) { + const params = { + annotationEditorMode: this.#annotationEditorMode, + annotationMode: this.#annotationMode, + textLayerMode: this.textLayerMode + }; + + if (!permissions) { + return params; + } + + if (!permissions.includes(_pdfjsLib.PermissionFlag.COPY)) { + this.viewer.classList.add(ENABLE_PERMISSIONS_CLASS); + } + + if (!permissions.includes(_pdfjsLib.PermissionFlag.MODIFY_CONTENTS)) { + params.annotationEditorMode = _pdfjsLib.AnnotationEditorType.DISABLE; + } + + if (!permissions.includes(_pdfjsLib.PermissionFlag.MODIFY_ANNOTATIONS) && !permissions.includes(_pdfjsLib.PermissionFlag.FILL_INTERACTIVE_FORMS) && this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS) { + params.annotationMode = _pdfjsLib.AnnotationMode.ENABLE; + } + + return params; + } + + #onePageRenderedOrForceFetch() { + if (document.visibilityState === "hidden" || !this.container.offsetParent || this._getVisiblePages().views.length === 0) { + return Promise.resolve(); + } + + const visibilityChangePromise = new Promise(resolve => { + this.#onVisibilityChange = () => { + if (document.visibilityState !== "hidden") { + return; + } + + resolve(); + document.removeEventListener("visibilitychange", this.#onVisibilityChange); + this.#onVisibilityChange = null; + }; + + document.addEventListener("visibilitychange", this.#onVisibilityChange); + }); + return Promise.race([this._onePageRenderedCapability.promise, visibilityChangePromise]); + } + + setDocument(pdfDocument) { + if (this.pdfDocument) { + this.eventBus.dispatch("pagesdestroy", { + source: this + }); + + this._cancelRendering(); + + this._resetView(); + + if (this.findController) { + this.findController.setDocument(null); + } + + if (this._scriptingManager) { + this._scriptingManager.setDocument(null); + } + + if (this.#annotationEditorUIManager) { + this.#annotationEditorUIManager.destroy(); + this.#annotationEditorUIManager = null; + } + } + + this.pdfDocument = pdfDocument; + + if (!pdfDocument) { + return; + } + + const isPureXfa = pdfDocument.isPureXfa; + const pagesCount = pdfDocument.numPages; + const firstPagePromise = pdfDocument.getPage(1); + const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig(); + const permissionsPromise = this.#enablePermissions ? pdfDocument.getPermissions() : Promise.resolve(); + + if (pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) { + console.warn("Forcing PAGE-scrolling for performance reasons, given the length of the document."); + const mode = this._scrollMode = _ui_utils.ScrollMode.PAGE; + this.eventBus.dispatch("scrollmodechanged", { + source: this, + mode + }); + } + + this._pagesCapability.promise.then(() => { + this.eventBus.dispatch("pagesloaded", { + source: this, + pagesCount + }); + }, () => {}); + + this._onBeforeDraw = evt => { + const pageView = this._pages[evt.pageNumber - 1]; + + if (!pageView) { + return; + } + + this.#buffer.push(pageView); + }; + + this.eventBus._on("pagerender", this._onBeforeDraw); + + this._onAfterDraw = evt => { + if (evt.cssTransform || this._onePageRenderedCapability.settled) { + return; + } + + this._onePageRenderedCapability.resolve({ + timestamp: evt.timestamp + }); + + this.eventBus._off("pagerendered", this._onAfterDraw); + + this._onAfterDraw = null; + + if (this.#onVisibilityChange) { + document.removeEventListener("visibilitychange", this.#onVisibilityChange); + this.#onVisibilityChange = null; + } + }; + + this.eventBus._on("pagerendered", this._onAfterDraw); + + Promise.all([firstPagePromise, permissionsPromise]).then(([firstPdfPage, permissions]) => { + if (pdfDocument !== this.pdfDocument) { + return; + } + + this._firstPageCapability.resolve(firstPdfPage); + + this._optionalContentConfigPromise = optionalContentConfigPromise; + const { + annotationEditorMode, + annotationMode, + textLayerMode + } = this.#initializePermissions(permissions); + + if (annotationEditorMode !== _pdfjsLib.AnnotationEditorType.DISABLE) { + const mode = annotationEditorMode; + + if (isPureXfa) { + console.warn("Warning: XFA-editing is not implemented."); + } else if (isValidAnnotationEditorMode(mode)) { + this.#annotationEditorUIManager = new _pdfjsLib.AnnotationEditorUIManager(this.container, this.eventBus); + + if (mode !== _pdfjsLib.AnnotationEditorType.NONE) { + this.#annotationEditorUIManager.updateMode(mode); + } + } else { + console.error(`Invalid AnnotationEditor mode: ${mode}`); + } + } + + const viewerElement = this._scrollMode === _ui_utils.ScrollMode.PAGE ? null : this.viewer; + const scale = this.currentScale; + const viewport = firstPdfPage.getViewport({ + scale: scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS + }); + const textLayerFactory = textLayerMode !== _ui_utils.TextLayerMode.DISABLE && !isPureXfa ? this : null; + const annotationLayerFactory = annotationMode !== _pdfjsLib.AnnotationMode.DISABLE ? this : null; + const xfaLayerFactory = isPureXfa ? this : null; + const annotationEditorLayerFactory = this.#annotationEditorUIManager ? this : null; + + for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) { + const pageView = new _pdf_page_view.PDFPageView({ + container: viewerElement, + eventBus: this.eventBus, + id: pageNum, + scale, + defaultViewport: viewport.clone(), + optionalContentConfigPromise, + renderingQueue: this.renderingQueue, + textLayerFactory, + textLayerMode, + annotationLayerFactory, + annotationMode, + xfaLayerFactory, + annotationEditorLayerFactory, + textHighlighterFactory: this, + structTreeLayerFactory: this, + imageResourcesPath: this.imageResourcesPath, + renderer: this.renderer, + useOnlyCssZoom: this.useOnlyCssZoom, + maxCanvasPixels: this.maxCanvasPixels, + pageColors: this.pageColors, + l10n: this.l10n + }); + + this._pages.push(pageView); + } + + const firstPageView = this._pages[0]; + + if (firstPageView) { + firstPageView.setPdfPage(firstPdfPage); + this.linkService.cachePageRef(1, firstPdfPage.ref); + } + + if (this._scrollMode === _ui_utils.ScrollMode.PAGE) { + this.#ensurePageViewVisible(); + } else if (this._spreadMode !== _ui_utils.SpreadMode.NONE) { + this._updateSpreadMode(); + } + + this.#onePageRenderedOrForceFetch().then(async () => { + if (this.findController) { + this.findController.setDocument(pdfDocument); + } + + if (this._scriptingManager) { + this._scriptingManager.setDocument(pdfDocument); + } + + if (this.#annotationEditorUIManager) { + this.eventBus.dispatch("annotationeditormodechanged", { + source: this, + mode: this.#annotationEditorMode + }); + } + + if (pdfDocument.loadingParams.disableAutoFetch || pagesCount > PagesCountLimit.FORCE_LAZY_PAGE_INIT) { + this._pagesCapability.resolve(); + + return; + } + + let getPagesLeft = pagesCount - 1; + + if (getPagesLeft <= 0) { + this._pagesCapability.resolve(); + + return; + } + + for (let pageNum = 2; pageNum <= pagesCount; ++pageNum) { + const promise = pdfDocument.getPage(pageNum).then(pdfPage => { + const pageView = this._pages[pageNum - 1]; + + if (!pageView.pdfPage) { + pageView.setPdfPage(pdfPage); + } + + this.linkService.cachePageRef(pageNum, pdfPage.ref); + + if (--getPagesLeft === 0) { + this._pagesCapability.resolve(); + } + }, reason => { + console.error(`Unable to get page ${pageNum} to initialize viewer`, reason); + + if (--getPagesLeft === 0) { + this._pagesCapability.resolve(); + } + }); + + if (pageNum % PagesCountLimit.PAUSE_EAGER_PAGE_INIT === 0) { + await promise; + } + } + }); + this.eventBus.dispatch("pagesinit", { + source: this + }); + pdfDocument.getMetadata().then(({ + info + }) => { + if (pdfDocument !== this.pdfDocument) { + return; + } + + if (info.Language) { + this.viewer.lang = info.Language; + } + }); + + if (this.defaultRenderingQueue) { + this.update(); + } + }).catch(reason => { + console.error("Unable to initialize viewer", reason); + + this._pagesCapability.reject(reason); + }); + } + + setPageLabels(labels) { + if (!this.pdfDocument) { + return; + } + + if (!labels) { + this._pageLabels = null; + } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) { + this._pageLabels = null; + console.error(`setPageLabels: Invalid page labels.`); + } else { + this._pageLabels = labels; + } + + for (let i = 0, ii = this._pages.length; i < ii; i++) { + this._pages[i].setPageLabel(this._pageLabels?.[i] ?? null); + } + } + + _resetView() { + this._pages = []; + this._currentPageNumber = 1; + this._currentScale = _ui_utils.UNKNOWN_SCALE; + this._currentScaleValue = null; + this._pageLabels = null; + this.#buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE); + this._location = null; + this._pagesRotation = 0; + this._optionalContentConfigPromise = null; + this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._onePageRenderedCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._pagesCapability = (0, _pdfjsLib.createPromiseCapability)(); + this._scrollMode = _ui_utils.ScrollMode.VERTICAL; + this._previousScrollMode = _ui_utils.ScrollMode.UNKNOWN; + this._spreadMode = _ui_utils.SpreadMode.NONE; + this.#scrollModePageState = { + previousPageNumber: 1, + scrollDown: true, + pages: [] + }; + + if (this._onBeforeDraw) { + this.eventBus._off("pagerender", this._onBeforeDraw); + + this._onBeforeDraw = null; + } + + if (this._onAfterDraw) { + this.eventBus._off("pagerendered", this._onAfterDraw); + + this._onAfterDraw = null; + } + + if (this.#onVisibilityChange) { + document.removeEventListener("visibilitychange", this.#onVisibilityChange); + this.#onVisibilityChange = null; + } + + this.viewer.textContent = ""; + + this._updateScrollMode(); + + this.viewer.removeAttribute("lang"); + this.viewer.classList.remove(ENABLE_PERMISSIONS_CLASS); + } + + #ensurePageViewVisible() { + if (this._scrollMode !== _ui_utils.ScrollMode.PAGE) { + throw new Error("#ensurePageViewVisible: Invalid scrollMode value."); + } + + const pageNumber = this._currentPageNumber, + state = this.#scrollModePageState, + viewer = this.viewer; + viewer.textContent = ""; + state.pages.length = 0; + + if (this._spreadMode === _ui_utils.SpreadMode.NONE && !this.isInPresentationMode) { + const pageView = this._pages[pageNumber - 1]; + viewer.append(pageView.div); + state.pages.push(pageView); + } else { + const pageIndexSet = new Set(), + parity = this._spreadMode - 1; + + if (parity === -1) { + pageIndexSet.add(pageNumber - 1); + } else if (pageNumber % 2 !== parity) { + pageIndexSet.add(pageNumber - 1); + pageIndexSet.add(pageNumber); + } else { + pageIndexSet.add(pageNumber - 2); + pageIndexSet.add(pageNumber - 1); + } + + const spread = document.createElement("div"); + spread.className = "spread"; + + if (this.isInPresentationMode) { + const dummyPage = document.createElement("div"); + dummyPage.className = "dummyPage"; + spread.append(dummyPage); + } + + for (const i of pageIndexSet) { + const pageView = this._pages[i]; + + if (!pageView) { + continue; + } + + spread.append(pageView.div); + state.pages.push(pageView); + } + + viewer.append(spread); + } + + state.scrollDown = pageNumber >= state.previousPageNumber; + state.previousPageNumber = pageNumber; + } + + _scrollUpdate() { + if (this.pagesCount === 0) { + return; + } + + this.update(); + } + + #scrollIntoView(pageView, pageSpot = null) { + const { + div, + id + } = pageView; + + if (this._scrollMode === _ui_utils.ScrollMode.PAGE) { + this._setCurrentPageNumber(id); + + this.#ensurePageViewVisible(); + this.update(); + } + + if (!pageSpot && !this.isInPresentationMode) { + const left = div.offsetLeft + div.clientLeft, + right = left + div.clientWidth; + const { + scrollLeft, + clientWidth + } = this.container; + + if (this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL || left < scrollLeft || right > scrollLeft + clientWidth) { + pageSpot = { + left: 0, + top: 0 + }; + } + } + + (0, _ui_utils.scrollIntoView)(div, pageSpot); + } + + #isSameScale(newScale) { + return newScale === this._currentScale || Math.abs(newScale - this._currentScale) < 1e-15; + } + + _setScaleUpdatePages(newScale, newValue, noScroll = false, preset = false) { + this._currentScaleValue = newValue.toString(); + + if (this.#isSameScale(newScale)) { + if (preset) { + this.eventBus.dispatch("scalechanging", { + source: this, + scale: newScale, + presetValue: newValue + }); + } + + return; + } + + _ui_utils.docStyle.setProperty("--scale-factor", newScale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS); + + const updateArgs = { + scale: newScale + }; + + for (const pageView of this._pages) { + pageView.update(updateArgs); + } + + this._currentScale = newScale; + + if (!noScroll) { + let page = this._currentPageNumber, + dest; + + if (this._location && !(this.isInPresentationMode || this.isChangingPresentationMode)) { + page = this._location.pageNumber; + dest = [null, { + name: "XYZ" + }, this._location.left, this._location.top, null]; + } + + this.scrollPageIntoView({ + pageNumber: page, + destArray: dest, + allowNegativeOffset: true + }); + } + + this.eventBus.dispatch("scalechanging", { + source: this, + scale: newScale, + presetValue: preset ? newValue : undefined + }); + + if (this.defaultRenderingQueue) { + this.update(); + } + + this.updateContainerHeightCss(); + } + + get _pageWidthScaleFactor() { + if (this._spreadMode !== _ui_utils.SpreadMode.NONE && this._scrollMode !== _ui_utils.ScrollMode.HORIZONTAL) { + return 2; + } + + return 1; + } + + _setScale(value, noScroll = false) { + let scale = parseFloat(value); + + if (scale > 0) { + this._setScaleUpdatePages(scale, value, noScroll, false); + } else { + const currentPage = this._pages[this._currentPageNumber - 1]; + + if (!currentPage) { + return; + } + + let hPadding = _ui_utils.SCROLLBAR_PADDING, + vPadding = _ui_utils.VERTICAL_PADDING; + + if (this.isInPresentationMode) { + hPadding = vPadding = 4; + } else if (this.removePageBorders) { + hPadding = vPadding = 0; + } else if (this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL) { + [hPadding, vPadding] = [vPadding, hPadding]; + } + + const pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale / this._pageWidthScaleFactor; + const pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale; + + switch (value) { + case "page-actual": + scale = 1; + break; + + case "page-width": + scale = pageWidthScale; + break; + + case "page-height": + scale = pageHeightScale; + break; + + case "page-fit": + scale = Math.min(pageWidthScale, pageHeightScale); + break; + + case "auto": + const horizontalScale = (0, _ui_utils.isPortraitOrientation)(currentPage) ? pageWidthScale : Math.min(pageHeightScale, pageWidthScale); + scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale); + break; + + default: + console.error(`_setScale: "${value}" is an unknown zoom value.`); + return; + } + + this._setScaleUpdatePages(scale, value, noScroll, true); + } + } + + #resetCurrentPageView() { + const pageView = this._pages[this._currentPageNumber - 1]; + + if (this.isInPresentationMode) { + this._setScale(this._currentScaleValue, true); + } + + this.#scrollIntoView(pageView); + } + + pageLabelToPageNumber(label) { + if (!this._pageLabels) { + return null; + } + + const i = this._pageLabels.indexOf(label); + + if (i < 0) { + return null; + } + + return i + 1; + } + + scrollPageIntoView({ + pageNumber, + destArray = null, + allowNegativeOffset = false, + ignoreDestinationZoom = false + }) { + if (!this.pdfDocument) { + return; + } + + const pageView = Number.isInteger(pageNumber) && this._pages[pageNumber - 1]; + + if (!pageView) { + console.error(`scrollPageIntoView: "${pageNumber}" is not a valid pageNumber parameter.`); + return; + } + + if (this.isInPresentationMode || !destArray) { + this._setCurrentPageNumber(pageNumber, true); + + return; + } + + let x = 0, + y = 0; + let width = 0, + height = 0, + widthScale, + heightScale; + const changeOrientation = pageView.rotation % 180 !== 0; + const pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; + const pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; + let scale = 0; + + switch (destArray[1].name) { + case "XYZ": + x = destArray[2]; + y = destArray[3]; + scale = destArray[4]; + x = x !== null ? x : 0; + y = y !== null ? y : pageHeight; + break; + + case "Fit": + case "FitB": + scale = "page-fit"; + break; + + case "FitH": + case "FitBH": + y = destArray[2]; + scale = "page-width"; + + if (y === null && this._location) { + x = this._location.left; + y = this._location.top; + } else if (typeof y !== "number" || y < 0) { + y = pageHeight; + } + + break; + + case "FitV": + case "FitBV": + x = destArray[2]; + width = pageWidth; + height = pageHeight; + scale = "page-height"; + break; + + case "FitR": + x = destArray[2]; + y = destArray[3]; + width = destArray[4] - x; + height = destArray[5] - y; + const hPadding = this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING; + const vPadding = this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING; + widthScale = (this.container.clientWidth - hPadding) / width / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; + heightScale = (this.container.clientHeight - vPadding) / height / _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS; + scale = Math.min(Math.abs(widthScale), Math.abs(heightScale)); + break; + + default: + console.error(`scrollPageIntoView: "${destArray[1].name}" is not a valid destination type.`); + return; + } + + if (!ignoreDestinationZoom) { + if (scale && scale !== this._currentScale) { + this.currentScaleValue = scale; + } else if (this._currentScale === _ui_utils.UNKNOWN_SCALE) { + this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; + } + } + + if (scale === "page-fit" && !destArray[4]) { + this.#scrollIntoView(pageView); + return; + } + + const boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)]; + let left = Math.min(boundingRect[0][0], boundingRect[1][0]); + let top = Math.min(boundingRect[0][1], boundingRect[1][1]); + + if (!allowNegativeOffset) { + left = Math.max(left, 0); + top = Math.max(top, 0); + } + + this.#scrollIntoView(pageView, { + left, + top + }); + } + + _updateLocation(firstPage) { + const currentScale = this._currentScale; + const currentScaleValue = this._currentScaleValue; + const normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue; + const pageNumber = firstPage.id; + const currentPageView = this._pages[pageNumber - 1]; + const container = this.container; + const topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y); + const intLeft = Math.round(topLeft[0]); + const intTop = Math.round(topLeft[1]); + let pdfOpenParams = `#page=${pageNumber}`; + + if (!this.isInPresentationMode) { + pdfOpenParams += `&zoom=${normalizedScaleValue},${intLeft},${intTop}`; + } + + this._location = { + pageNumber, + scale: normalizedScaleValue, + top: intTop, + left: intLeft, + rotation: this._pagesRotation, + pdfOpenParams + }; + } + + update() { + const visible = this._getVisiblePages(); + + const visiblePages = visible.views, + numVisiblePages = visiblePages.length; + + if (numVisiblePages === 0) { + return; + } + + const newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1); + this.#buffer.resize(newCacheSize, visible.ids); + this.renderingQueue.renderHighestPriority(visible); + const isSimpleLayout = this._spreadMode === _ui_utils.SpreadMode.NONE && (this._scrollMode === _ui_utils.ScrollMode.PAGE || this._scrollMode === _ui_utils.ScrollMode.VERTICAL); + const currentId = this._currentPageNumber; + let stillFullyVisible = false; + + for (const page of visiblePages) { + if (page.percent < 100) { + break; + } + + if (page.id === currentId && isSimpleLayout) { + stillFullyVisible = true; + break; + } + } + + this._setCurrentPageNumber(stillFullyVisible ? currentId : visiblePages[0].id); + + this._updateLocation(visible.first); + + this.eventBus.dispatch("updateviewarea", { + source: this, + location: this._location + }); + } + + containsElement(element) { + return this.container.contains(element); + } + + focus() { + this.container.focus(); + } + + get _isContainerRtl() { + return getComputedStyle(this.container).direction === "rtl"; + } + + get isInPresentationMode() { + return this.presentationModeState === _ui_utils.PresentationModeState.FULLSCREEN; + } + + get isChangingPresentationMode() { + return this.presentationModeState === _ui_utils.PresentationModeState.CHANGING; + } + + get isHorizontalScrollbarEnabled() { + return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth; + } + + get isVerticalScrollbarEnabled() { + return this.isInPresentationMode ? false : this.container.scrollHeight > this.container.clientHeight; + } + + _getVisiblePages() { + const views = this._scrollMode === _ui_utils.ScrollMode.PAGE ? this.#scrollModePageState.pages : this._pages, + horizontal = this._scrollMode === _ui_utils.ScrollMode.HORIZONTAL, + rtl = horizontal && this._isContainerRtl; + return (0, _ui_utils.getVisibleElements)({ + scrollEl: this.container, + views, + sortByVisibility: true, + horizontal, + rtl + }); + } + + isPageVisible(pageNumber) { + if (!this.pdfDocument) { + return false; + } + + if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { + console.error(`isPageVisible: "${pageNumber}" is not a valid page.`); + return false; + } + + return this._getVisiblePages().ids.has(pageNumber); + } + + isPageCached(pageNumber) { + if (!this.pdfDocument) { + return false; + } + + if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.pagesCount)) { + console.error(`isPageCached: "${pageNumber}" is not a valid page.`); + return false; + } + + const pageView = this._pages[pageNumber - 1]; + return this.#buffer.has(pageView); + } + + cleanup() { + for (const pageView of this._pages) { + if (pageView.renderingState !== _ui_utils.RenderingStates.FINISHED) { + pageView.reset(); + } + } + } + + _cancelRendering() { + for (const pageView of this._pages) { + pageView.cancelRendering(); + } + } + + async #ensurePdfPageLoaded(pageView) { + if (pageView.pdfPage) { + return pageView.pdfPage; + } + + try { + const pdfPage = await this.pdfDocument.getPage(pageView.id); + + if (!pageView.pdfPage) { + pageView.setPdfPage(pdfPage); + } + + if (!this.linkService._cachedPageNumber?.(pdfPage.ref)) { + this.linkService.cachePageRef(pageView.id, pdfPage.ref); + } + + return pdfPage; + } catch (reason) { + console.error("Unable to get page for page view", reason); + return null; + } + } + + #getScrollAhead(visible) { + if (visible.first?.id === 1) { + return true; + } else if (visible.last?.id === this.pagesCount) { + return false; + } + + switch (this._scrollMode) { + case _ui_utils.ScrollMode.PAGE: + return this.#scrollModePageState.scrollDown; + + case _ui_utils.ScrollMode.HORIZONTAL: + return this.scroll.right; + } + + return this.scroll.down; + } + + #toggleLoadingIconSpinner(visibleIds) { + for (const id of visibleIds) { + const pageView = this._pages[id - 1]; + pageView?.toggleLoadingIconSpinner(true); + } + + for (const pageView of this.#buffer) { + if (visibleIds.has(pageView.id)) { + continue; + } + + pageView.toggleLoadingIconSpinner(false); + } + } + + forceRendering(currentlyVisiblePages) { + const visiblePages = currentlyVisiblePages || this._getVisiblePages(); + + const scrollAhead = this.#getScrollAhead(visiblePages); + const preRenderExtra = this._spreadMode !== _ui_utils.SpreadMode.NONE && this._scrollMode !== _ui_utils.ScrollMode.HORIZONTAL; + const pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead, preRenderExtra); + this.#toggleLoadingIconSpinner(visiblePages.ids); + + if (pageView) { + this.#ensurePdfPageLoaded(pageView).then(() => { + this.renderingQueue.renderView(pageView); + }); + return true; + } + + return false; + } + + createTextLayerBuilder({ + textLayerDiv, + pageIndex, + viewport, + enhanceTextSelection = false, + eventBus, + highlighter, + accessibilityManager = null + }) { + return new _text_layer_builder.TextLayerBuilder({ + textLayerDiv, + eventBus, + pageIndex, + viewport, + enhanceTextSelection: this.isInPresentationMode ? false : enhanceTextSelection, + highlighter, + accessibilityManager + }); + } + + createTextHighlighter({ + pageIndex, + eventBus + }) { + return new _text_highlighter.TextHighlighter({ + eventBus, + pageIndex, + findController: this.isInPresentationMode ? null : this.findController + }); + } + + createAnnotationLayerBuilder({ + pageDiv, + pdfPage, + annotationStorage = this.pdfDocument?.annotationStorage, + imageResourcesPath = "", + renderForms = true, + l10n = _l10n_utils.NullL10n, + enableScripting = this.enableScripting, + hasJSActionsPromise = this.pdfDocument?.hasJSActions(), + mouseState = this._scriptingManager?.mouseState, + fieldObjectsPromise = this.pdfDocument?.getFieldObjects(), + annotationCanvasMap = null, + accessibilityManager = null + }) { + return new _annotation_layer_builder.AnnotationLayerBuilder({ + pageDiv, + pdfPage, + annotationStorage, + imageResourcesPath, + renderForms, + linkService: this.linkService, + downloadManager: this.downloadManager, + l10n, + enableScripting, + hasJSActionsPromise, + mouseState, + fieldObjectsPromise, + annotationCanvasMap, + accessibilityManager + }); + } + + createAnnotationEditorLayerBuilder({ + uiManager = this.#annotationEditorUIManager, + pageDiv, + pdfPage, + accessibilityManager = null, + l10n, + annotationStorage = this.pdfDocument?.annotationStorage + }) { + return new _annotation_editor_layer_builder.AnnotationEditorLayerBuilder({ + uiManager, + pageDiv, + pdfPage, + annotationStorage, + accessibilityManager, + l10n + }); + } + + createXfaLayerBuilder({ + pageDiv, + pdfPage, + annotationStorage = this.pdfDocument?.annotationStorage + }) { + return new _xfa_layer_builder.XfaLayerBuilder({ + pageDiv, + pdfPage, + annotationStorage, + linkService: this.linkService + }); + } + + createStructTreeLayerBuilder({ + pdfPage + }) { + return new _struct_tree_layer_builder.StructTreeLayerBuilder({ + pdfPage + }); + } + + get hasEqualPageSizes() { + const firstPageView = this._pages[0]; + + for (let i = 1, ii = this._pages.length; i < ii; ++i) { + const pageView = this._pages[i]; + + if (pageView.width !== firstPageView.width || pageView.height !== firstPageView.height) { + return false; + } + } + + return true; + } + + getPagesOverview() { + return this._pages.map(pageView => { + const viewport = pageView.pdfPage.getViewport({ + scale: 1 + }); + + if (!this.enablePrintAutoRotate || (0, _ui_utils.isPortraitOrientation)(viewport)) { + return { + width: viewport.width, + height: viewport.height, + rotation: viewport.rotation + }; + } + + return { + width: viewport.height, + height: viewport.width, + rotation: (viewport.rotation - 90) % 360 + }; + }); + } + + get optionalContentConfigPromise() { + if (!this.pdfDocument) { + return Promise.resolve(null); + } + + if (!this._optionalContentConfigPromise) { + console.error("optionalContentConfigPromise: Not initialized yet."); + return this.pdfDocument.getOptionalContentConfig(); + } + + return this._optionalContentConfigPromise; + } + + set optionalContentConfigPromise(promise) { + if (!(promise instanceof Promise)) { + throw new Error(`Invalid optionalContentConfigPromise: ${promise}`); + } + + if (!this.pdfDocument) { + return; + } + + if (!this._optionalContentConfigPromise) { + return; + } + + this._optionalContentConfigPromise = promise; + const updateArgs = { + optionalContentConfigPromise: promise + }; + + for (const pageView of this._pages) { + pageView.update(updateArgs); + } + + this.update(); + this.eventBus.dispatch("optionalcontentconfigchanged", { + source: this, + promise + }); + } + + get scrollMode() { + return this._scrollMode; + } + + set scrollMode(mode) { + if (this._scrollMode === mode) { + return; + } + + if (!(0, _ui_utils.isValidScrollMode)(mode)) { + throw new Error(`Invalid scroll mode: ${mode}`); + } + + if (this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) { + return; + } + + this._previousScrollMode = this._scrollMode; + this._scrollMode = mode; + this.eventBus.dispatch("scrollmodechanged", { + source: this, + mode + }); + + this._updateScrollMode(this._currentPageNumber); + } + + _updateScrollMode(pageNumber = null) { + const scrollMode = this._scrollMode, + viewer = this.viewer; + viewer.classList.toggle("scrollHorizontal", scrollMode === _ui_utils.ScrollMode.HORIZONTAL); + viewer.classList.toggle("scrollWrapped", scrollMode === _ui_utils.ScrollMode.WRAPPED); + + if (!this.pdfDocument || !pageNumber) { + return; + } + + if (scrollMode === _ui_utils.ScrollMode.PAGE) { + this.#ensurePageViewVisible(); + } else if (this._previousScrollMode === _ui_utils.ScrollMode.PAGE) { + this._updateSpreadMode(); + } + + if (this._currentScaleValue && isNaN(this._currentScaleValue)) { + this._setScale(this._currentScaleValue, true); + } + + this._setCurrentPageNumber(pageNumber, true); + + this.update(); + } + + get spreadMode() { + return this._spreadMode; + } + + set spreadMode(mode) { + if (this._spreadMode === mode) { + return; + } + + if (!(0, _ui_utils.isValidSpreadMode)(mode)) { + throw new Error(`Invalid spread mode: ${mode}`); + } + + this._spreadMode = mode; + this.eventBus.dispatch("spreadmodechanged", { + source: this, + mode + }); + + this._updateSpreadMode(this._currentPageNumber); + } + + _updateSpreadMode(pageNumber = null) { + if (!this.pdfDocument) { + return; + } + + const viewer = this.viewer, + pages = this._pages; + + if (this._scrollMode === _ui_utils.ScrollMode.PAGE) { + this.#ensurePageViewVisible(); + } else { + viewer.textContent = ""; + + if (this._spreadMode === _ui_utils.SpreadMode.NONE) { + for (const pageView of this._pages) { + viewer.append(pageView.div); + } + } else { + const parity = this._spreadMode - 1; + let spread = null; + + for (let i = 0, ii = pages.length; i < ii; ++i) { + if (spread === null) { + spread = document.createElement("div"); + spread.className = "spread"; + viewer.append(spread); + } else if (i % 2 === parity) { + spread = spread.cloneNode(false); + viewer.append(spread); + } + + spread.append(pages[i].div); + } + } + } + + if (!pageNumber) { + return; + } + + if (this._currentScaleValue && isNaN(this._currentScaleValue)) { + this._setScale(this._currentScaleValue, true); + } + + this._setCurrentPageNumber(pageNumber, true); + + this.update(); + } + + _getPageAdvance(currentPageNumber, previous = false) { + switch (this._scrollMode) { + case _ui_utils.ScrollMode.WRAPPED: + { + const { + views + } = this._getVisiblePages(), + pageLayout = new Map(); + + for (const { + id, + y, + percent, + widthPercent + } of views) { + if (percent === 0 || widthPercent < 100) { + continue; + } + + let yArray = pageLayout.get(y); + + if (!yArray) { + pageLayout.set(y, yArray ||= []); + } + + yArray.push(id); + } + + for (const yArray of pageLayout.values()) { + const currentIndex = yArray.indexOf(currentPageNumber); + + if (currentIndex === -1) { + continue; + } + + const numPages = yArray.length; + + if (numPages === 1) { + break; + } + + if (previous) { + for (let i = currentIndex - 1, ii = 0; i >= ii; i--) { + const currentId = yArray[i], + expectedId = yArray[i + 1] - 1; + + if (currentId < expectedId) { + return currentPageNumber - expectedId; + } + } + } else { + for (let i = currentIndex + 1, ii = numPages; i < ii; i++) { + const currentId = yArray[i], + expectedId = yArray[i - 1] + 1; + + if (currentId > expectedId) { + return expectedId - currentPageNumber; + } + } + } + + if (previous) { + const firstId = yArray[0]; + + if (firstId < currentPageNumber) { + return currentPageNumber - firstId + 1; + } + } else { + const lastId = yArray[numPages - 1]; + + if (lastId > currentPageNumber) { + return lastId - currentPageNumber + 1; + } + } + + break; + } + + break; + } + + case _ui_utils.ScrollMode.HORIZONTAL: + { + break; + } + + case _ui_utils.ScrollMode.PAGE: + case _ui_utils.ScrollMode.VERTICAL: + { + if (this._spreadMode === _ui_utils.SpreadMode.NONE) { + break; + } + + const parity = this._spreadMode - 1; + + if (previous && currentPageNumber % 2 !== parity) { + break; + } else if (!previous && currentPageNumber % 2 === parity) { + break; + } + + const { + views + } = this._getVisiblePages(), + expectedId = previous ? currentPageNumber - 1 : currentPageNumber + 1; + + for (const { + id, + percent, + widthPercent + } of views) { + if (id !== expectedId) { + continue; + } + + if (percent > 0 && widthPercent === 100) { + return 2; + } + + break; + } + + break; + } + } + + return 1; + } + + nextPage() { + const currentPageNumber = this._currentPageNumber, + pagesCount = this.pagesCount; + + if (currentPageNumber >= pagesCount) { + return false; + } + + const advance = this._getPageAdvance(currentPageNumber, false) || 1; + this.currentPageNumber = Math.min(currentPageNumber + advance, pagesCount); + return true; + } + + previousPage() { + const currentPageNumber = this._currentPageNumber; + + if (currentPageNumber <= 1) { + return false; + } + + const advance = this._getPageAdvance(currentPageNumber, true) || 1; + this.currentPageNumber = Math.max(currentPageNumber - advance, 1); + return true; + } + + increaseScale(steps = 1) { + let newScale = this._currentScale; + + do { + newScale = (newScale * _ui_utils.DEFAULT_SCALE_DELTA).toFixed(2); + newScale = Math.ceil(newScale * 10) / 10; + newScale = Math.min(_ui_utils.MAX_SCALE, newScale); + } while (--steps > 0 && newScale < _ui_utils.MAX_SCALE); + + this.currentScaleValue = newScale; + } + + decreaseScale(steps = 1) { + let newScale = this._currentScale; + + do { + newScale = (newScale / _ui_utils.DEFAULT_SCALE_DELTA).toFixed(2); + newScale = Math.floor(newScale * 10) / 10; + newScale = Math.max(_ui_utils.MIN_SCALE, newScale); + } while (--steps > 0 && newScale > _ui_utils.MIN_SCALE); + + this.currentScaleValue = newScale; + } + + updateContainerHeightCss() { + const height = this.container.clientHeight; + + if (height !== this.#previousContainerHeight) { + this.#previousContainerHeight = height; + + _ui_utils.docStyle.setProperty("--viewer-container-height", `${height}px`); + } + } + + get annotationEditorMode() { + return this.#annotationEditorUIManager ? this.#annotationEditorMode : _pdfjsLib.AnnotationEditorType.DISABLE; + } + + set annotationEditorMode(mode) { + if (!this.#annotationEditorUIManager) { + throw new Error(`The AnnotationEditor is not enabled.`); + } + + if (this.#annotationEditorMode === mode) { + return; + } + + if (!isValidAnnotationEditorMode(mode)) { + throw new Error(`Invalid AnnotationEditor mode: ${mode}`); + } + + if (!this.pdfDocument) { + return; + } + + this.#annotationEditorMode = mode; + this.eventBus.dispatch("annotationeditormodechanged", { + source: this, + mode + }); + this.#annotationEditorUIManager.updateMode(mode); + } + + set annotationEditorParams({ + type, + value + }) { + if (!this.#annotationEditorUIManager) { + throw new Error(`The AnnotationEditor is not enabled.`); + } + + this.#annotationEditorUIManager.updateParams(type, value); + } + + refresh() { + if (!this.pdfDocument) { + return; + } + + const updateArgs = {}; + + for (const pageView of this._pages) { + pageView.update(updateArgs); + } + + this.update(); + } + +} + +exports.BaseViewer = BaseViewer; + +/***/ }), +/* 30 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationEditorLayerBuilder = void 0; + +var _pdfjsLib = __webpack_require__(5); + +var _l10n_utils = __webpack_require__(31); + +class AnnotationEditorLayerBuilder { + #uiManager; + + constructor(options) { + this.pageDiv = options.pageDiv; + this.pdfPage = options.pdfPage; + this.annotationStorage = options.annotationStorage || null; + this.accessibilityManager = options.accessibilityManager; + this.l10n = options.l10n || _l10n_utils.NullL10n; + this.annotationEditorLayer = null; + this.div = null; + this._cancelled = false; + this.#uiManager = options.uiManager; + } + + async render(viewport, intent = "display") { + if (intent !== "display") { + return; + } + + if (this._cancelled) { + return; + } + + const clonedViewport = viewport.clone({ + dontFlip: true + }); + + if (this.div) { + this.annotationEditorLayer.update({ + viewport: clonedViewport + }); + this.show(); + return; + } + + this.div = document.createElement("div"); + this.div.className = "annotationEditorLayer"; + this.div.tabIndex = 0; + this.pageDiv.append(this.div); + this.annotationEditorLayer = new _pdfjsLib.AnnotationEditorLayer({ + uiManager: this.#uiManager, + div: this.div, + annotationStorage: this.annotationStorage, + accessibilityManager: this.accessibilityManager, + pageIndex: this.pdfPage._pageIndex, + l10n: this.l10n, + viewport: clonedViewport + }); + const parameters = { + viewport: clonedViewport, + div: this.div, + annotations: null, + intent + }; + this.annotationEditorLayer.render(parameters); + } + + cancel() { + this._cancelled = true; + this.destroy(); + } + + hide() { + if (!this.div) { + return; + } + + this.div.hidden = true; + } + + show() { + if (!this.div) { + return; + } + + this.div.hidden = false; + } + + destroy() { + if (!this.div) { + return; + } + + this.pageDiv = null; + this.annotationEditorLayer.destroy(); + this.div.remove(); + } + +} + +exports.AnnotationEditorLayerBuilder = AnnotationEditorLayerBuilder; + +/***/ }), +/* 31 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.NullL10n = void 0; +exports.fixupLangCode = fixupLangCode; +exports.getL10nFallback = getL10nFallback; +const DEFAULT_L10N_STRINGS = { + of_pages: "of {{pagesCount}}", + page_of_pages: "({{pageNumber}} of {{pagesCount}})", + document_properties_kb: "{{size_kb}} KB ({{size_b}} bytes)", + document_properties_mb: "{{size_mb}} MB ({{size_b}} bytes)", + document_properties_date_string: "{{date}}, {{time}}", + document_properties_page_size_unit_inches: "in", + document_properties_page_size_unit_millimeters: "mm", + document_properties_page_size_orientation_portrait: "portrait", + document_properties_page_size_orientation_landscape: "landscape", + document_properties_page_size_name_a3: "A3", + document_properties_page_size_name_a4: "A4", + document_properties_page_size_name_letter: "Letter", + document_properties_page_size_name_legal: "Legal", + document_properties_page_size_dimension_string: "{{width}} × {{height}} {{unit}} ({{orientation}})", + document_properties_page_size_dimension_name_string: "{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})", + document_properties_linearized_yes: "Yes", + document_properties_linearized_no: "No", + print_progress_percent: "{{progress}}%", + "toggle_sidebar.title": "Toggle Sidebar", + "toggle_sidebar_notification2.title": "Toggle Sidebar (document contains outline/attachments/layers)", + additional_layers: "Additional Layers", + page_landmark: "Page {{page}}", + thumb_page_title: "Page {{page}}", + thumb_page_canvas: "Thumbnail of Page {{page}}", + find_reached_top: "Reached top of document, continued from bottom", + find_reached_bottom: "Reached end of document, continued from top", + "find_match_count[one]": "{{current}} of {{total}} match", + "find_match_count[other]": "{{current}} of {{total}} matches", + "find_match_count_limit[one]": "More than {{limit}} match", + "find_match_count_limit[other]": "More than {{limit}} matches", + find_not_found: "Phrase not found", + error_version_info: "PDF.js v{{version}} (build: {{build}})", + error_message: "Message: {{message}}", + error_stack: "Stack: {{stack}}", + error_file: "File: {{file}}", + error_line: "Line: {{line}}", + rendering_error: "An error occurred while rendering the page.", + page_scale_width: "Page Width", + page_scale_fit: "Page Fit", + page_scale_auto: "Automatic Zoom", + page_scale_actual: "Actual Size", + page_scale_percent: "{{scale}}%", + loading: "Loading…", + loading_error: "An error occurred while loading the PDF.", + invalid_file_error: "Invalid or corrupted PDF file.", + missing_file_error: "Missing PDF file.", + unexpected_response_error: "Unexpected server response.", + printing_not_supported: "Warning: Printing is not fully supported by this browser.", + printing_not_ready: "Warning: The PDF is not fully loaded for printing.", + web_fonts_disabled: "Web fonts are disabled: unable to use embedded PDF fonts.", + free_text_default_content: "Enter text…", + editor_free_text_aria_label: "FreeText Editor", + editor_ink_aria_label: "Ink Editor", + editor_ink_canvas_aria_label: "User-created image" +}; + +function getL10nFallback(key, args) { + switch (key) { + case "find_match_count": + key = `find_match_count[${args.total === 1 ? "one" : "other"}]`; + break; + + case "find_match_count_limit": + key = `find_match_count_limit[${args.limit === 1 ? "one" : "other"}]`; + break; + } + + return DEFAULT_L10N_STRINGS[key] || ""; +} + +const PARTIAL_LANG_CODES = { + en: "en-US", + es: "es-ES", + fy: "fy-NL", + ga: "ga-IE", + gu: "gu-IN", + hi: "hi-IN", + hy: "hy-AM", + nb: "nb-NO", + ne: "ne-NP", + nn: "nn-NO", + pa: "pa-IN", + pt: "pt-PT", + sv: "sv-SE", + zh: "zh-CN" +}; + +function fixupLangCode(langCode) { + return PARTIAL_LANG_CODES[langCode?.toLowerCase()] || langCode; +} + +function formatL10nValue(text, args) { + if (!args) { + return text; + } + + return text.replace(/\{\{\s*(\w+)\s*\}\}/g, (all, name) => { + return name in args ? args[name] : "{{" + name + "}}"; + }); +} + +const NullL10n = { + async getLanguage() { + return "en-us"; + }, + + async getDirection() { + return "ltr"; + }, + + async get(key, args = null, fallback = getL10nFallback(key, args)) { + return formatL10nValue(fallback, args); + }, + + async translate(element) {} + +}; +exports.NullL10n = NullL10n; + +/***/ }), +/* 32 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationLayerBuilder = void 0; + +var _pdfjsLib = __webpack_require__(5); + +var _l10n_utils = __webpack_require__(31); + +class AnnotationLayerBuilder { + constructor({ + pageDiv, + pdfPage, + linkService, + downloadManager, + annotationStorage = null, + imageResourcesPath = "", + renderForms = true, + l10n = _l10n_utils.NullL10n, + enableScripting = false, + hasJSActionsPromise = null, + fieldObjectsPromise = null, + mouseState = null, + annotationCanvasMap = null, + accessibilityManager = null + }) { + this.pageDiv = pageDiv; + this.pdfPage = pdfPage; + this.linkService = linkService; + this.downloadManager = downloadManager; + this.imageResourcesPath = imageResourcesPath; + this.renderForms = renderForms; + this.l10n = l10n; + this.annotationStorage = annotationStorage; + this.enableScripting = enableScripting; + this._hasJSActionsPromise = hasJSActionsPromise; + this._fieldObjectsPromise = fieldObjectsPromise; + this._mouseState = mouseState; + this._annotationCanvasMap = annotationCanvasMap; + this._accessibilityManager = accessibilityManager; + this.div = null; + this._cancelled = false; + } + + async render(viewport, intent = "display") { + const [annotations, hasJSActions = false, fieldObjects = null] = await Promise.all([this.pdfPage.getAnnotations({ + intent + }), this._hasJSActionsPromise, this._fieldObjectsPromise]); + + if (this._cancelled || annotations.length === 0) { + return; + } + + const parameters = { + viewport: viewport.clone({ + dontFlip: true + }), + div: this.div, + annotations, + page: this.pdfPage, + imageResourcesPath: this.imageResourcesPath, + renderForms: this.renderForms, + linkService: this.linkService, + downloadManager: this.downloadManager, + annotationStorage: this.annotationStorage, + enableScripting: this.enableScripting, + hasJSActions, + fieldObjects, + mouseState: this._mouseState, + annotationCanvasMap: this._annotationCanvasMap, + accessibilityManager: this._accessibilityManager + }; + + if (this.div) { + _pdfjsLib.AnnotationLayer.update(parameters); + } else { + this.div = document.createElement("div"); + this.div.className = "annotationLayer"; + this.pageDiv.append(this.div); + parameters.div = this.div; + + _pdfjsLib.AnnotationLayer.render(parameters); + + this.l10n.translate(this.div); + } + } + + cancel() { + this._cancelled = true; + } + + hide() { + if (!this.div) { + return; + } + + this.div.hidden = true; + } + +} + +exports.AnnotationLayerBuilder = AnnotationLayerBuilder; + +/***/ }), +/* 33 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFPageView = void 0; + +var _pdfjsLib = __webpack_require__(5); + +var _ui_utils = __webpack_require__(1); + +var _app_options = __webpack_require__(2); + +var _l10n_utils = __webpack_require__(31); + +var _text_accessibility = __webpack_require__(34); + +const MAX_CANVAS_PIXELS = _app_options.compatibilityParams.maxCanvasPixels || 16777216; + +class PDFPageView { + #annotationMode = _pdfjsLib.AnnotationMode.ENABLE_FORMS; + #useThumbnailCanvas = { + initialOptionalContent: true, + regularAnnotations: true + }; + + constructor(options) { + const container = options.container; + const defaultViewport = options.defaultViewport; + this.id = options.id; + this.renderingId = "page" + this.id; + this.pdfPage = null; + this.pageLabel = null; + this.rotation = 0; + this.scale = options.scale || _ui_utils.DEFAULT_SCALE; + this.viewport = defaultViewport; + this.pdfPageRotate = defaultViewport.rotation; + this._optionalContentConfigPromise = options.optionalContentConfigPromise || null; + this.hasRestrictedScaling = false; + this.textLayerMode = options.textLayerMode ?? _ui_utils.TextLayerMode.ENABLE; + this.#annotationMode = options.annotationMode ?? _pdfjsLib.AnnotationMode.ENABLE_FORMS; + this.imageResourcesPath = options.imageResourcesPath || ""; + this.useOnlyCssZoom = options.useOnlyCssZoom || false; + this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS; + this.pageColors = options.pageColors || null; + this.eventBus = options.eventBus; + this.renderingQueue = options.renderingQueue; + this.textLayerFactory = options.textLayerFactory; + this.annotationLayerFactory = options.annotationLayerFactory; + this.annotationEditorLayerFactory = options.annotationEditorLayerFactory; + this.xfaLayerFactory = options.xfaLayerFactory; + this.textHighlighter = options.textHighlighterFactory?.createTextHighlighter({ + pageIndex: this.id - 1, + eventBus: this.eventBus + }); + this.structTreeLayerFactory = options.structTreeLayerFactory; + this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; + this.l10n = options.l10n || _l10n_utils.NullL10n; + this.paintTask = null; + this.paintedViewportMap = new WeakMap(); + this.renderingState = _ui_utils.RenderingStates.INITIAL; + this.resume = null; + this._renderError = null; + this._isStandalone = !this.renderingQueue?.hasViewer(); + this._annotationCanvasMap = null; + this.annotationLayer = null; + this.annotationEditorLayer = null; + this.textLayer = null; + this.zoomLayer = null; + this.xfaLayer = null; + this.structTreeLayer = null; + const div = document.createElement("div"); + div.className = "page"; + div.style.width = Math.floor(this.viewport.width) + "px"; + div.style.height = Math.floor(this.viewport.height) + "px"; + div.setAttribute("data-page-number", this.id); + div.setAttribute("role", "region"); + this.l10n.get("page_landmark", { + page: this.id + }).then(msg => { + div.setAttribute("aria-label", msg); + }); + this.div = div; + container?.append(div); + + if (this._isStandalone) { + const { + optionalContentConfigPromise + } = options; + + if (optionalContentConfigPromise) { + optionalContentConfigPromise.then(optionalContentConfig => { + if (optionalContentConfigPromise !== this._optionalContentConfigPromise) { + return; + } + + this.#useThumbnailCanvas.initialOptionalContent = optionalContentConfig.hasInitialVisibility; + }); + } + } + } + + setPdfPage(pdfPage) { + this.pdfPage = pdfPage; + this.pdfPageRotate = pdfPage.rotate; + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = pdfPage.getViewport({ + scale: this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS, + rotation: totalRotation + }); + this.reset(); + } + + destroy() { + this.reset(); + + if (this.pdfPage) { + this.pdfPage.cleanup(); + } + } + + async _renderAnnotationLayer() { + let error = null; + + try { + await this.annotationLayer.render(this.viewport, "display"); + } catch (ex) { + console.error(`_renderAnnotationLayer: "${ex}".`); + error = ex; + } finally { + this.eventBus.dispatch("annotationlayerrendered", { + source: this, + pageNumber: this.id, + error + }); + } + } + + async _renderAnnotationEditorLayer() { + let error = null; + + try { + await this.annotationEditorLayer.render(this.viewport, "display"); + } catch (ex) { + console.error(`_renderAnnotationEditorLayer: "${ex}".`); + error = ex; + } finally { + this.eventBus.dispatch("annotationeditorlayerrendered", { + source: this, + pageNumber: this.id, + error + }); + } + } + + async _renderXfaLayer() { + let error = null; + + try { + const result = await this.xfaLayer.render(this.viewport, "display"); + + if (this.textHighlighter) { + this._buildXfaTextContentItems(result.textDivs); + } + } catch (ex) { + console.error(`_renderXfaLayer: "${ex}".`); + error = ex; + } finally { + this.eventBus.dispatch("xfalayerrendered", { + source: this, + pageNumber: this.id, + error + }); + } + } + + async _buildXfaTextContentItems(textDivs) { + const text = await this.pdfPage.getTextContent(); + const items = []; + + for (const item of text.items) { + items.push(item.str); + } + + this.textHighlighter.setTextMapping(textDivs, items); + this.textHighlighter.enable(); + } + + _resetZoomLayer(removeFromDOM = false) { + if (!this.zoomLayer) { + return; + } + + const zoomLayerCanvas = this.zoomLayer.firstChild; + this.paintedViewportMap.delete(zoomLayerCanvas); + zoomLayerCanvas.width = 0; + zoomLayerCanvas.height = 0; + + if (removeFromDOM) { + this.zoomLayer.remove(); + } + + this.zoomLayer = null; + } + + reset({ + keepZoomLayer = false, + keepAnnotationLayer = false, + keepAnnotationEditorLayer = false, + keepXfaLayer = false + } = {}) { + this.cancelRendering({ + keepAnnotationLayer, + keepAnnotationEditorLayer, + keepXfaLayer + }); + this.renderingState = _ui_utils.RenderingStates.INITIAL; + const div = this.div; + div.style.width = Math.floor(this.viewport.width) + "px"; + div.style.height = Math.floor(this.viewport.height) + "px"; + const childNodes = div.childNodes, + zoomLayerNode = keepZoomLayer && this.zoomLayer || null, + annotationLayerNode = keepAnnotationLayer && this.annotationLayer?.div || null, + annotationEditorLayerNode = keepAnnotationEditorLayer && this.annotationEditorLayer?.div || null, + xfaLayerNode = keepXfaLayer && this.xfaLayer?.div || null; + + for (let i = childNodes.length - 1; i >= 0; i--) { + const node = childNodes[i]; + + switch (node) { + case zoomLayerNode: + case annotationLayerNode: + case annotationEditorLayerNode: + case xfaLayerNode: + continue; + } + + node.remove(); + } + + div.removeAttribute("data-loaded"); + + if (annotationLayerNode) { + this.annotationLayer.hide(); + } + + if (annotationEditorLayerNode) { + this.annotationEditorLayer.hide(); + } else { + this.annotationEditorLayer?.destroy(); + } + + if (xfaLayerNode) { + this.xfaLayer.hide(); + } + + if (!zoomLayerNode) { + if (this.canvas) { + this.paintedViewportMap.delete(this.canvas); + this.canvas.width = 0; + this.canvas.height = 0; + delete this.canvas; + } + + this._resetZoomLayer(); + } + + if (this.svg) { + this.paintedViewportMap.delete(this.svg); + delete this.svg; + } + + this.loadingIconDiv = document.createElement("div"); + this.loadingIconDiv.className = "loadingIcon notVisible"; + + if (this._isStandalone) { + this.toggleLoadingIconSpinner(true); + } + + this.loadingIconDiv.setAttribute("role", "img"); + this.l10n.get("loading").then(msg => { + this.loadingIconDiv?.setAttribute("aria-label", msg); + }); + div.append(this.loadingIconDiv); + } + + update({ + scale = 0, + rotation = null, + optionalContentConfigPromise = null + }) { + this.scale = scale || this.scale; + + if (typeof rotation === "number") { + this.rotation = rotation; + } + + if (optionalContentConfigPromise instanceof Promise) { + this._optionalContentConfigPromise = optionalContentConfigPromise; + optionalContentConfigPromise.then(optionalContentConfig => { + if (optionalContentConfigPromise !== this._optionalContentConfigPromise) { + return; + } + + this.#useThumbnailCanvas.initialOptionalContent = optionalContentConfig.hasInitialVisibility; + }); + } + + const totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = this.viewport.clone({ + scale: this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS, + rotation: totalRotation + }); + + if (this._isStandalone) { + _ui_utils.docStyle.setProperty("--scale-factor", this.viewport.scale); + } + + if (this.svg) { + this.cssTransform({ + target: this.svg, + redrawAnnotationLayer: true, + redrawAnnotationEditorLayer: true, + redrawXfaLayer: true + }); + this.eventBus.dispatch("pagerendered", { + source: this, + pageNumber: this.id, + cssTransform: true, + timestamp: performance.now(), + error: this._renderError + }); + return; + } + + let isScalingRestricted = false; + + if (this.canvas && this.maxCanvasPixels > 0) { + const outputScale = this.outputScale; + + if ((Math.floor(this.viewport.width) * outputScale.sx | 0) * (Math.floor(this.viewport.height) * outputScale.sy | 0) > this.maxCanvasPixels) { + isScalingRestricted = true; + } + } + + if (this.canvas) { + if (this.useOnlyCssZoom || this.hasRestrictedScaling && isScalingRestricted) { + this.cssTransform({ + target: this.canvas, + redrawAnnotationLayer: true, + redrawAnnotationEditorLayer: true, + redrawXfaLayer: true + }); + this.eventBus.dispatch("pagerendered", { + source: this, + pageNumber: this.id, + cssTransform: true, + timestamp: performance.now(), + error: this._renderError + }); + return; + } + + if (!this.zoomLayer && !this.canvas.hidden) { + this.zoomLayer = this.canvas.parentNode; + this.zoomLayer.style.position = "absolute"; + } + } + + if (this.zoomLayer) { + this.cssTransform({ + target: this.zoomLayer.firstChild + }); + } + + this.reset({ + keepZoomLayer: true, + keepAnnotationLayer: true, + keepAnnotationEditorLayer: true, + keepXfaLayer: true + }); + } + + cancelRendering({ + keepAnnotationLayer = false, + keepAnnotationEditorLayer = false, + keepXfaLayer = false + } = {}) { + if (this.paintTask) { + this.paintTask.cancel(); + this.paintTask = null; + } + + this.resume = null; + + if (this.textLayer) { + this.textLayer.cancel(); + this.textLayer = null; + } + + if (this.annotationLayer && (!keepAnnotationLayer || !this.annotationLayer.div)) { + this.annotationLayer.cancel(); + this.annotationLayer = null; + this._annotationCanvasMap = null; + } + + if (this.annotationEditorLayer && (!keepAnnotationEditorLayer || !this.annotationEditorLayer.div)) { + this.annotationEditorLayer.cancel(); + this.annotationEditorLayer = null; + } + + if (this.xfaLayer && (!keepXfaLayer || !this.xfaLayer.div)) { + this.xfaLayer.cancel(); + this.xfaLayer = null; + this.textHighlighter?.disable(); + } + + if (this._onTextLayerRendered) { + this.eventBus._off("textlayerrendered", this._onTextLayerRendered); + + this._onTextLayerRendered = null; + } + } + + cssTransform({ + target, + redrawAnnotationLayer = false, + redrawAnnotationEditorLayer = false, + redrawXfaLayer = false + }) { + const width = this.viewport.width; + const height = this.viewport.height; + const div = this.div; + target.style.width = target.parentNode.style.width = div.style.width = Math.floor(width) + "px"; + target.style.height = target.parentNode.style.height = div.style.height = Math.floor(height) + "px"; + const relativeRotation = this.viewport.rotation - this.paintedViewportMap.get(target).rotation; + const absRotation = Math.abs(relativeRotation); + let scaleX = 1, + scaleY = 1; + + if (absRotation === 90 || absRotation === 270) { + scaleX = height / width; + scaleY = width / height; + } + + target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`; + + if (this.textLayer) { + const textLayerViewport = this.textLayer.viewport; + const textRelativeRotation = this.viewport.rotation - textLayerViewport.rotation; + const textAbsRotation = Math.abs(textRelativeRotation); + let scale = width / textLayerViewport.width; + + if (textAbsRotation === 90 || textAbsRotation === 270) { + scale = width / textLayerViewport.height; + } + + const textLayerDiv = this.textLayer.textLayerDiv; + let transX, transY; + + switch (textAbsRotation) { + case 0: + transX = transY = 0; + break; + + case 90: + transX = 0; + transY = "-" + textLayerDiv.style.height; + break; + + case 180: + transX = "-" + textLayerDiv.style.width; + transY = "-" + textLayerDiv.style.height; + break; + + case 270: + transX = "-" + textLayerDiv.style.width; + transY = 0; + break; + + default: + console.error("Bad rotation value."); + break; + } + + textLayerDiv.style.transform = `rotate(${textAbsRotation}deg) ` + `scale(${scale}) ` + `translate(${transX}, ${transY})`; + textLayerDiv.style.transformOrigin = "0% 0%"; + } + + if (redrawAnnotationLayer && this.annotationLayer) { + this._renderAnnotationLayer(); + } + + if (redrawAnnotationEditorLayer && this.annotationEditorLayer) { + this._renderAnnotationEditorLayer(); + } + + if (redrawXfaLayer && this.xfaLayer) { + this._renderXfaLayer(); + } + } + + get width() { + return this.viewport.width; + } + + get height() { + return this.viewport.height; + } + + getPagePoint(x, y) { + return this.viewport.convertToPdfPoint(x, y); + } + + toggleLoadingIconSpinner(viewVisible = false) { + this.loadingIconDiv?.classList.toggle("notVisible", !viewVisible); + } + + draw() { + if (this.renderingState !== _ui_utils.RenderingStates.INITIAL) { + console.error("Must be in new state before drawing"); + this.reset(); + } + + const { + div, + pdfPage + } = this; + + if (!pdfPage) { + this.renderingState = _ui_utils.RenderingStates.FINISHED; + + if (this.loadingIconDiv) { + this.loadingIconDiv.remove(); + delete this.loadingIconDiv; + } + + return Promise.reject(new Error("pdfPage is not loaded")); + } + + this.renderingState = _ui_utils.RenderingStates.RUNNING; + const canvasWrapper = document.createElement("div"); + canvasWrapper.style.width = div.style.width; + canvasWrapper.style.height = div.style.height; + canvasWrapper.classList.add("canvasWrapper"); + const lastDivBeforeTextDiv = this.annotationLayer?.div || this.annotationEditorLayer?.div; + + if (lastDivBeforeTextDiv) { + lastDivBeforeTextDiv.before(canvasWrapper); + } else { + div.append(canvasWrapper); + } + + let textLayer = null; + + if (this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE && this.textLayerFactory) { + this._accessibilityManager ||= new _text_accessibility.TextAccessibilityManager(); + const textLayerDiv = document.createElement("div"); + textLayerDiv.className = "textLayer"; + textLayerDiv.style.width = canvasWrapper.style.width; + textLayerDiv.style.height = canvasWrapper.style.height; + + if (lastDivBeforeTextDiv) { + lastDivBeforeTextDiv.before(textLayerDiv); + } else { + div.append(textLayerDiv); + } + + textLayer = this.textLayerFactory.createTextLayerBuilder({ + textLayerDiv, + pageIndex: this.id - 1, + viewport: this.viewport, + enhanceTextSelection: this.textLayerMode === _ui_utils.TextLayerMode.ENABLE_ENHANCE, + eventBus: this.eventBus, + highlighter: this.textHighlighter, + accessibilityManager: this._accessibilityManager + }); + } + + this.textLayer = textLayer; + + if (this.#annotationMode !== _pdfjsLib.AnnotationMode.DISABLE && this.annotationLayerFactory) { + this._annotationCanvasMap ||= new Map(); + this.annotationLayer ||= this.annotationLayerFactory.createAnnotationLayerBuilder({ + pageDiv: div, + pdfPage, + imageResourcesPath: this.imageResourcesPath, + renderForms: this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS, + l10n: this.l10n, + annotationCanvasMap: this._annotationCanvasMap, + accessibilityManager: this._accessibilityManager + }); + } + + if (this.xfaLayer?.div) { + div.append(this.xfaLayer.div); + } + + let renderContinueCallback = null; + + if (this.renderingQueue) { + renderContinueCallback = cont => { + if (!this.renderingQueue.isHighestPriority(this)) { + this.renderingState = _ui_utils.RenderingStates.PAUSED; + + this.resume = () => { + this.renderingState = _ui_utils.RenderingStates.RUNNING; + cont(); + }; + + return; + } + + cont(); + }; + } + + const finishPaintTask = async (error = null) => { + if (paintTask === this.paintTask) { + this.paintTask = null; + } + + if (error instanceof _pdfjsLib.RenderingCancelledException) { + this._renderError = null; + return; + } + + this._renderError = error; + this.renderingState = _ui_utils.RenderingStates.FINISHED; + + if (this.loadingIconDiv) { + this.loadingIconDiv.remove(); + delete this.loadingIconDiv; + } + + this._resetZoomLayer(true); + + this.#useThumbnailCanvas.regularAnnotations = !paintTask.separateAnnots; + this.eventBus.dispatch("pagerendered", { + source: this, + pageNumber: this.id, + cssTransform: false, + timestamp: performance.now(), + error: this._renderError + }); + + if (error) { + throw error; + } + }; + + const paintTask = this.renderer === _ui_utils.RendererType.SVG ? this.paintOnSvg(canvasWrapper) : this.paintOnCanvas(canvasWrapper); + paintTask.onRenderContinue = renderContinueCallback; + this.paintTask = paintTask; + const resultPromise = paintTask.promise.then(() => { + return finishPaintTask(null).then(() => { + if (textLayer) { + const readableStream = pdfPage.streamTextContent({ + includeMarkedContent: true + }); + textLayer.setTextContentStream(readableStream); + textLayer.render(); + } + + if (this.annotationLayer) { + this._renderAnnotationLayer().then(() => { + if (this.annotationEditorLayerFactory) { + this.annotationEditorLayer ||= this.annotationEditorLayerFactory.createAnnotationEditorLayerBuilder({ + pageDiv: div, + pdfPage, + l10n: this.l10n, + accessibilityManager: this._accessibilityManager + }); + + this._renderAnnotationEditorLayer(); + } + }); + } + }); + }, function (reason) { + return finishPaintTask(reason); + }); + + if (this.xfaLayerFactory) { + this.xfaLayer ||= this.xfaLayerFactory.createXfaLayerBuilder({ + pageDiv: div, + pdfPage + }); + + this._renderXfaLayer(); + } + + if (this.structTreeLayerFactory && this.textLayer && this.canvas) { + this._onTextLayerRendered = event => { + if (event.pageNumber !== this.id) { + return; + } + + this.eventBus._off("textlayerrendered", this._onTextLayerRendered); + + this._onTextLayerRendered = null; + + if (!this.canvas) { + return; + } + + this.pdfPage.getStructTree().then(tree => { + if (!tree) { + return; + } + + if (!this.canvas) { + return; + } + + const treeDom = this.structTreeLayer.render(tree); + treeDom.classList.add("structTree"); + this.canvas.append(treeDom); + }); + }; + + this.eventBus._on("textlayerrendered", this._onTextLayerRendered); + + this.structTreeLayer = this.structTreeLayerFactory.createStructTreeLayerBuilder({ + pdfPage + }); + } + + div.setAttribute("data-loaded", true); + this.eventBus.dispatch("pagerender", { + source: this, + pageNumber: this.id + }); + return resultPromise; + } + + paintOnCanvas(canvasWrapper) { + const renderCapability = (0, _pdfjsLib.createPromiseCapability)(); + const result = { + promise: renderCapability.promise, + + onRenderContinue(cont) { + cont(); + }, + + cancel() { + renderTask.cancel(); + }, + + get separateAnnots() { + return renderTask.separateAnnots; + } + + }; + const viewport = this.viewport; + const canvas = document.createElement("canvas"); + canvas.setAttribute("role", "presentation"); + canvas.hidden = true; + let isCanvasHidden = true; + + const showCanvas = function () { + if (isCanvasHidden) { + canvas.hidden = false; + isCanvasHidden = false; + } + }; + + canvasWrapper.append(canvas); + this.canvas = canvas; + const ctx = canvas.getContext("2d", { + alpha: false + }); + const outputScale = this.outputScale = new _ui_utils.OutputScale(); + + if (this.useOnlyCssZoom) { + const actualSizeViewport = viewport.clone({ + scale: _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS + }); + outputScale.sx *= actualSizeViewport.width / viewport.width; + outputScale.sy *= actualSizeViewport.height / viewport.height; + } + + if (this.maxCanvasPixels > 0) { + const pixelsInViewport = viewport.width * viewport.height; + const maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport); + + if (outputScale.sx > maxScale || outputScale.sy > maxScale) { + outputScale.sx = maxScale; + outputScale.sy = maxScale; + this.hasRestrictedScaling = true; + } else { + this.hasRestrictedScaling = false; + } + } + + const sfx = (0, _ui_utils.approximateFraction)(outputScale.sx); + const sfy = (0, _ui_utils.approximateFraction)(outputScale.sy); + canvas.width = (0, _ui_utils.roundToDivide)(viewport.width * outputScale.sx, sfx[0]); + canvas.height = (0, _ui_utils.roundToDivide)(viewport.height * outputScale.sy, sfy[0]); + canvas.style.width = (0, _ui_utils.roundToDivide)(viewport.width, sfx[1]) + "px"; + canvas.style.height = (0, _ui_utils.roundToDivide)(viewport.height, sfy[1]) + "px"; + this.paintedViewportMap.set(canvas, viewport); + const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null; + const renderContext = { + canvasContext: ctx, + transform, + viewport: this.viewport, + annotationMode: this.#annotationMode, + optionalContentConfigPromise: this._optionalContentConfigPromise, + annotationCanvasMap: this._annotationCanvasMap, + pageColors: this.pageColors + }; + const renderTask = this.pdfPage.render(renderContext); + + renderTask.onContinue = function (cont) { + showCanvas(); + + if (result.onRenderContinue) { + result.onRenderContinue(cont); + } else { + cont(); + } + }; + + renderTask.promise.then(function () { + showCanvas(); + renderCapability.resolve(); + }, function (error) { + showCanvas(); + renderCapability.reject(error); + }); + return result; + } + + paintOnSvg(wrapper) { + let cancelled = false; + + const ensureNotCancelled = () => { + if (cancelled) { + throw new _pdfjsLib.RenderingCancelledException(`Rendering cancelled, page ${this.id}`, "svg"); + } + }; + + const pdfPage = this.pdfPage; + const actualSizeViewport = this.viewport.clone({ + scale: _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS + }); + const promise = pdfPage.getOperatorList({ + annotationMode: this.#annotationMode + }).then(opList => { + ensureNotCancelled(); + const svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs); + return svgGfx.getSVG(opList, actualSizeViewport).then(svg => { + ensureNotCancelled(); + this.svg = svg; + this.paintedViewportMap.set(svg, actualSizeViewport); + svg.style.width = wrapper.style.width; + svg.style.height = wrapper.style.height; + this.renderingState = _ui_utils.RenderingStates.FINISHED; + wrapper.append(svg); + }); + }); + return { + promise, + + onRenderContinue(cont) { + cont(); + }, + + cancel() { + cancelled = true; + }, + + get separateAnnots() { + return false; + } + + }; + } + + setPageLabel(label) { + this.pageLabel = typeof label === "string" ? label : null; + + if (this.pageLabel !== null) { + this.div.setAttribute("data-page-label", this.pageLabel); + } else { + this.div.removeAttribute("data-page-label"); + } + } + + get thumbnailCanvas() { + const { + initialOptionalContent, + regularAnnotations + } = this.#useThumbnailCanvas; + return initialOptionalContent && regularAnnotations ? this.canvas : null; + } + +} + +exports.PDFPageView = PDFPageView; + +/***/ }), +/* 34 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextAccessibilityManager = void 0; + +var _ui_utils = __webpack_require__(1); + +class TextAccessibilityManager { + #enabled = false; + #textChildren = null; + #textNodes = new Map(); + #waitingElements = new Map(); + + setTextMapping(textDivs) { + this.#textChildren = textDivs; + } + + static #compareElementPositions(e1, e2) { + const rect1 = e1.getBoundingClientRect(); + const rect2 = e2.getBoundingClientRect(); + + if (rect1.width === 0 && rect1.height === 0) { + return +1; + } + + if (rect2.width === 0 && rect2.height === 0) { + return -1; + } + + const top1 = rect1.y; + const bot1 = rect1.y + rect1.height; + const mid1 = rect1.y + rect1.height / 2; + const top2 = rect2.y; + const bot2 = rect2.y + rect2.height; + const mid2 = rect2.y + rect2.height / 2; + + if (mid1 <= top2 && mid2 >= bot1) { + return -1; + } + + if (mid2 <= top1 && mid1 >= bot2) { + return +1; + } + + const centerX1 = rect1.x + rect1.width / 2; + const centerX2 = rect2.x + rect2.width / 2; + return centerX1 - centerX2; + } + + enable() { + if (this.#enabled) { + throw new Error("TextAccessibilityManager is already enabled."); + } + + if (!this.#textChildren) { + throw new Error("Text divs and strings have not been set."); + } + + this.#enabled = true; + this.#textChildren = this.#textChildren.slice(); + this.#textChildren.sort(TextAccessibilityManager.#compareElementPositions); + + if (this.#textNodes.size > 0) { + const textChildren = this.#textChildren; + + for (const [id, nodeIndex] of this.#textNodes) { + const element = document.getElementById(id); + + if (!element) { + this.#textNodes.delete(id); + continue; + } + + this.#addIdToAriaOwns(id, textChildren[nodeIndex]); + } + } + + for (const [element, isRemovable] of this.#waitingElements) { + this.addPointerInTextLayer(element, isRemovable); + } + + this.#waitingElements.clear(); + } + + disable() { + if (!this.#enabled) { + return; + } + + this.#waitingElements.clear(); + this.#textChildren = null; + this.#enabled = false; + } + + removePointerInTextLayer(element) { + if (!this.#enabled) { + this.#waitingElements.delete(element); + return; + } + + const children = this.#textChildren; + + if (!children || children.length === 0) { + return; + } + + const { + id + } = element; + const nodeIndex = this.#textNodes.get(id); + + if (nodeIndex === undefined) { + return; + } + + const node = children[nodeIndex]; + this.#textNodes.delete(id); + let owns = node.getAttribute("aria-owns"); + + if (owns?.includes(id)) { + owns = owns.split(" ").filter(x => x !== id).join(" "); + + if (owns) { + node.setAttribute("aria-owns", owns); + } else { + node.removeAttribute("aria-owns"); + node.setAttribute("role", "presentation"); + } + } + } + + #addIdToAriaOwns(id, node) { + const owns = node.getAttribute("aria-owns"); + + if (!owns?.includes(id)) { + node.setAttribute("aria-owns", owns ? `${owns} ${id}` : id); + } + + node.removeAttribute("role"); + } + + addPointerInTextLayer(element, isRemovable) { + const { + id + } = element; + + if (!id) { + return; + } + + if (!this.#enabled) { + this.#waitingElements.set(element, isRemovable); + return; + } + + if (isRemovable) { + this.removePointerInTextLayer(element); + } + + const children = this.#textChildren; + + if (!children || children.length === 0) { + return; + } + + const index = (0, _ui_utils.binarySearchFirstItem)(children, node => TextAccessibilityManager.#compareElementPositions(element, node) < 0); + const nodeIndex = Math.max(0, index - 1); + this.#addIdToAriaOwns(id, children[nodeIndex]); + this.#textNodes.set(id, nodeIndex); + } + + moveElementInDOM(container, element, contentElement, isRemovable) { + this.addPointerInTextLayer(contentElement, isRemovable); + + if (!container.hasChildNodes()) { + container.append(element); + return; + } + + const children = Array.from(container.childNodes).filter(node => node !== element); + + if (children.length === 0) { + return; + } + + const elementToCompare = contentElement || element; + const index = (0, _ui_utils.binarySearchFirstItem)(children, node => TextAccessibilityManager.#compareElementPositions(elementToCompare, node) < 0); + + if (index === 0) { + children[0].before(element); + } else { + children[index - 1].after(element); + } + } + +} + +exports.TextAccessibilityManager = TextAccessibilityManager; + +/***/ }), +/* 35 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.StructTreeLayerBuilder = void 0; +const PDF_ROLE_TO_HTML_ROLE = { + Document: null, + DocumentFragment: null, + Part: "group", + Sect: "group", + Div: "group", + Aside: "note", + NonStruct: "none", + P: null, + H: "heading", + Title: null, + FENote: "note", + Sub: "group", + Lbl: null, + Span: null, + Em: null, + Strong: null, + Link: "link", + Annot: "note", + Form: "form", + Ruby: null, + RB: null, + RT: null, + RP: null, + Warichu: null, + WT: null, + WP: null, + L: "list", + LI: "listitem", + LBody: null, + Table: "table", + TR: "row", + TH: "columnheader", + TD: "cell", + THead: "columnheader", + TBody: null, + TFoot: null, + Caption: null, + Figure: "figure", + Formula: null, + Artifact: null +}; +const HEADING_PATTERN = /^H(\d+)$/; + +class StructTreeLayerBuilder { + constructor({ + pdfPage + }) { + this.pdfPage = pdfPage; + } + + render(structTree) { + return this._walk(structTree); + } + + _setAttributes(structElement, htmlElement) { + if (structElement.alt !== undefined) { + htmlElement.setAttribute("aria-label", structElement.alt); + } + + if (structElement.id !== undefined) { + htmlElement.setAttribute("aria-owns", structElement.id); + } + + if (structElement.lang !== undefined) { + htmlElement.setAttribute("lang", structElement.lang); + } + } + + _walk(node) { + if (!node) { + return null; + } + + const element = document.createElement("span"); + + if ("role" in node) { + const { + role + } = node; + const match = role.match(HEADING_PATTERN); + + if (match) { + element.setAttribute("role", "heading"); + element.setAttribute("aria-level", match[1]); + } else if (PDF_ROLE_TO_HTML_ROLE[role]) { + element.setAttribute("role", PDF_ROLE_TO_HTML_ROLE[role]); + } + } + + this._setAttributes(node, element); + + if (node.children) { + if (node.children.length === 1 && "id" in node.children[0]) { + this._setAttributes(node.children[0], element); + } else { + for (const kid of node.children) { + element.append(this._walk(kid)); + } + } + } + + return element; + } + +} + +exports.StructTreeLayerBuilder = StructTreeLayerBuilder; + +/***/ }), +/* 36 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextHighlighter = void 0; + +class TextHighlighter { + constructor({ + findController, + eventBus, + pageIndex + }) { + this.findController = findController; + this.matches = []; + this.eventBus = eventBus; + this.pageIdx = pageIndex; + this._onUpdateTextLayerMatches = null; + this.textDivs = null; + this.textContentItemsStr = null; + this.enabled = false; + } + + setTextMapping(divs, texts) { + this.textDivs = divs; + this.textContentItemsStr = texts; + } + + enable() { + if (!this.textDivs || !this.textContentItemsStr) { + throw new Error("Text divs and strings have not been set."); + } + + if (this.enabled) { + throw new Error("TextHighlighter is already enabled."); + } + + this.enabled = true; + + if (!this._onUpdateTextLayerMatches) { + this._onUpdateTextLayerMatches = evt => { + if (evt.pageIndex === this.pageIdx || evt.pageIndex === -1) { + this._updateMatches(); + } + }; + + this.eventBus._on("updatetextlayermatches", this._onUpdateTextLayerMatches); + } + + this._updateMatches(); + } + + disable() { + if (!this.enabled) { + return; + } + + this.enabled = false; + + if (this._onUpdateTextLayerMatches) { + this.eventBus._off("updatetextlayermatches", this._onUpdateTextLayerMatches); + + this._onUpdateTextLayerMatches = null; + } + } + + _convertMatches(matches, matchesLength) { + if (!matches) { + return []; + } + + const { + textContentItemsStr + } = this; + let i = 0, + iIndex = 0; + const end = textContentItemsStr.length - 1; + const result = []; + + for (let m = 0, mm = matches.length; m < mm; m++) { + let matchIdx = matches[m]; + + while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) { + iIndex += textContentItemsStr[i].length; + i++; + } + + if (i === textContentItemsStr.length) { + console.error("Could not find a matching mapping"); + } + + const match = { + begin: { + divIdx: i, + offset: matchIdx - iIndex + } + }; + matchIdx += matchesLength[m]; + + while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) { + iIndex += textContentItemsStr[i].length; + i++; + } + + match.end = { + divIdx: i, + offset: matchIdx - iIndex + }; + result.push(match); + } + + return result; + } + + _renderMatches(matches) { + if (matches.length === 0) { + return; + } + + const { + findController, + pageIdx + } = this; + const { + textContentItemsStr, + textDivs + } = this; + const isSelectedPage = pageIdx === findController.selected.pageIdx; + const selectedMatchIdx = findController.selected.matchIdx; + const highlightAll = findController.state.highlightAll; + let prevEnd = null; + const infinity = { + divIdx: -1, + offset: undefined + }; + + function beginText(begin, className) { + const divIdx = begin.divIdx; + textDivs[divIdx].textContent = ""; + return appendTextToDiv(divIdx, 0, begin.offset, className); + } + + function appendTextToDiv(divIdx, fromOffset, toOffset, className) { + let div = textDivs[divIdx]; + + if (div.nodeType === Node.TEXT_NODE) { + const span = document.createElement("span"); + div.before(span); + span.append(div); + textDivs[divIdx] = span; + div = span; + } + + const content = textContentItemsStr[divIdx].substring(fromOffset, toOffset); + const node = document.createTextNode(content); + + if (className) { + const span = document.createElement("span"); + span.className = `${className} appended`; + span.append(node); + div.append(span); + return className.includes("selected") ? span.offsetLeft : 0; + } + + div.append(node); + return 0; + } + + let i0 = selectedMatchIdx, + i1 = i0 + 1; + + if (highlightAll) { + i0 = 0; + i1 = matches.length; + } else if (!isSelectedPage) { + return; + } + + for (let i = i0; i < i1; i++) { + const match = matches[i]; + const begin = match.begin; + const end = match.end; + const isSelected = isSelectedPage && i === selectedMatchIdx; + const highlightSuffix = isSelected ? " selected" : ""; + let selectedLeft = 0; + + if (!prevEnd || begin.divIdx !== prevEnd.divIdx) { + if (prevEnd !== null) { + appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); + } + + beginText(begin); + } else { + appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset); + } + + if (begin.divIdx === end.divIdx) { + selectedLeft = appendTextToDiv(begin.divIdx, begin.offset, end.offset, "highlight" + highlightSuffix); + } else { + selectedLeft = appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, "highlight begin" + highlightSuffix); + + for (let n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) { + textDivs[n0].className = "highlight middle" + highlightSuffix; + } + + beginText(end, "highlight end" + highlightSuffix); + } + + prevEnd = end; + + if (isSelected) { + findController.scrollMatchIntoView({ + element: textDivs[begin.divIdx], + selectedLeft, + pageIndex: pageIdx, + matchIndex: selectedMatchIdx + }); + } + } + + if (prevEnd) { + appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); + } + } + + _updateMatches() { + if (!this.enabled) { + return; + } + + const { + findController, + matches, + pageIdx + } = this; + const { + textContentItemsStr, + textDivs + } = this; + let clearedUntilDivIdx = -1; + + for (let i = 0, ii = matches.length; i < ii; i++) { + const match = matches[i]; + const begin = Math.max(clearedUntilDivIdx, match.begin.divIdx); + + for (let n = begin, end = match.end.divIdx; n <= end; n++) { + const div = textDivs[n]; + div.textContent = textContentItemsStr[n]; + div.className = ""; + } + + clearedUntilDivIdx = match.end.divIdx + 1; + } + + if (!findController?.highlightMatches) { + return; + } + + const pageMatches = findController.pageMatches[pageIdx] || null; + const pageMatchesLength = findController.pageMatchesLength[pageIdx] || null; + this.matches = this._convertMatches(pageMatches, pageMatchesLength); + + this._renderMatches(this.matches); + } + +} + +exports.TextHighlighter = TextHighlighter; + +/***/ }), +/* 37 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextLayerBuilder = void 0; + +var _pdfjsLib = __webpack_require__(5); + +const EXPAND_DIVS_TIMEOUT = 300; + +class TextLayerBuilder { + constructor({ + textLayerDiv, + eventBus, + pageIndex, + viewport, + highlighter = null, + enhanceTextSelection = false, + accessibilityManager = null + }) { + this.textLayerDiv = textLayerDiv; + this.eventBus = eventBus; + this.textContent = null; + this.textContentItemsStr = []; + this.textContentStream = null; + this.renderingDone = false; + this.pageNumber = pageIndex + 1; + this.viewport = viewport; + this.textDivs = []; + this.textLayerRenderTask = null; + this.highlighter = highlighter; + this.enhanceTextSelection = enhanceTextSelection; + this.accessibilityManager = accessibilityManager; + + this._bindMouse(); + } + + _finishRendering() { + this.renderingDone = true; + + if (!this.enhanceTextSelection) { + const endOfContent = document.createElement("div"); + endOfContent.className = "endOfContent"; + this.textLayerDiv.append(endOfContent); + } + + this.eventBus.dispatch("textlayerrendered", { + source: this, + pageNumber: this.pageNumber, + numTextDivs: this.textDivs.length + }); + } + + render(timeout = 0) { + if (!(this.textContent || this.textContentStream) || this.renderingDone) { + return; + } + + this.cancel(); + this.textDivs.length = 0; + this.highlighter?.setTextMapping(this.textDivs, this.textContentItemsStr); + this.accessibilityManager?.setTextMapping(this.textDivs); + const textLayerFrag = document.createDocumentFragment(); + this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({ + textContent: this.textContent, + textContentStream: this.textContentStream, + container: textLayerFrag, + viewport: this.viewport, + textDivs: this.textDivs, + textContentItemsStr: this.textContentItemsStr, + timeout, + enhanceTextSelection: this.enhanceTextSelection + }); + this.textLayerRenderTask.promise.then(() => { + this.textLayerDiv.append(textLayerFrag); + + this._finishRendering(); + + this.highlighter?.enable(); + this.accessibilityManager?.enable(); + }, function (reason) {}); + } + + cancel() { + if (this.textLayerRenderTask) { + this.textLayerRenderTask.cancel(); + this.textLayerRenderTask = null; + } + + this.highlighter?.disable(); + this.accessibilityManager?.disable(); + } + + setTextContentStream(readableStream) { + this.cancel(); + this.textContentStream = readableStream; + } + + setTextContent(textContent) { + this.cancel(); + this.textContent = textContent; + } + + _bindMouse() { + const div = this.textLayerDiv; + let expandDivsTimer = null; + div.addEventListener("mousedown", evt => { + if (this.enhanceTextSelection && this.textLayerRenderTask) { + this.textLayerRenderTask.expandTextDivs(true); + + if (expandDivsTimer) { + clearTimeout(expandDivsTimer); + expandDivsTimer = null; + } + + return; + } + + const end = div.querySelector(".endOfContent"); + + if (!end) { + return; + } + + let adjustTop = evt.target !== div; + adjustTop = adjustTop && window.getComputedStyle(end).getPropertyValue("-moz-user-select") !== "none"; + + if (adjustTop) { + const divBounds = div.getBoundingClientRect(); + const r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height); + end.style.top = (r * 100).toFixed(2) + "%"; + } + + end.classList.add("active"); + }); + div.addEventListener("mouseup", () => { + if (this.enhanceTextSelection && this.textLayerRenderTask) { + expandDivsTimer = setTimeout(() => { + if (this.textLayerRenderTask) { + this.textLayerRenderTask.expandTextDivs(false); + } + + expandDivsTimer = null; + }, EXPAND_DIVS_TIMEOUT); + return; + } + + const end = div.querySelector(".endOfContent"); + + if (!end) { + return; + } + + end.style.top = ""; + end.classList.remove("active"); + }); + } + +} + +exports.TextLayerBuilder = TextLayerBuilder; + +/***/ }), +/* 38 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaLayerBuilder = void 0; + +var _pdfjsLib = __webpack_require__(5); + +class XfaLayerBuilder { + constructor({ + pageDiv, + pdfPage, + annotationStorage = null, + linkService, + xfaHtml = null + }) { + this.pageDiv = pageDiv; + this.pdfPage = pdfPage; + this.annotationStorage = annotationStorage; + this.linkService = linkService; + this.xfaHtml = xfaHtml; + this.div = null; + this._cancelled = false; + } + + render(viewport, intent = "display") { + if (intent === "print") { + const parameters = { + viewport: viewport.clone({ + dontFlip: true + }), + div: this.div, + xfaHtml: this.xfaHtml, + annotationStorage: this.annotationStorage, + linkService: this.linkService, + intent + }; + const div = document.createElement("div"); + this.pageDiv.append(div); + parameters.div = div; + + const result = _pdfjsLib.XfaLayer.render(parameters); + + return Promise.resolve(result); + } + + return this.pdfPage.getXfa().then(xfaHtml => { + if (this._cancelled || !xfaHtml) { + return { + textDivs: [] + }; + } + + const parameters = { + viewport: viewport.clone({ + dontFlip: true + }), + div: this.div, + xfaHtml, + annotationStorage: this.annotationStorage, + linkService: this.linkService, + intent + }; + + if (this.div) { + return _pdfjsLib.XfaLayer.update(parameters); + } + + this.div = document.createElement("div"); + this.pageDiv.append(this.div); + parameters.div = this.div; + return _pdfjsLib.XfaLayer.render(parameters); + }).catch(error => { + console.error(error); + }); + } + + cancel() { + this._cancelled = true; + } + + hide() { + if (!this.div) { + return; + } + + this.div.hidden = true; + } + +} + +exports.XfaLayerBuilder = XfaLayerBuilder; + +/***/ }), +/* 39 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SecondaryToolbar = void 0; + +var _ui_utils = __webpack_require__(1); + +var _pdf_cursor_tools = __webpack_require__(7); + +var _base_viewer = __webpack_require__(29); + +class SecondaryToolbar { + constructor(options, eventBus) { + this.toolbar = options.toolbar; + this.toggleButton = options.toggleButton; + this.buttons = [{ + element: options.presentationModeButton, + eventName: "presentationmode", + close: true + }, { + element: options.printButton, + eventName: "print", + close: true + }, { + element: options.downloadButton, + eventName: "download", + close: true + }, { + element: options.viewBookmarkButton, + eventName: null, + close: true + }, { + element: options.firstPageButton, + eventName: "firstpage", + close: true + }, { + element: options.lastPageButton, + eventName: "lastpage", + close: true + }, { + element: options.pageRotateCwButton, + eventName: "rotatecw", + close: false + }, { + element: options.pageRotateCcwButton, + eventName: "rotateccw", + close: false + }, { + element: options.cursorSelectToolButton, + eventName: "switchcursortool", + eventDetails: { + tool: _pdf_cursor_tools.CursorTool.SELECT + }, + close: true + }, { + element: options.cursorHandToolButton, + eventName: "switchcursortool", + eventDetails: { + tool: _pdf_cursor_tools.CursorTool.HAND + }, + close: true + }, { + element: options.scrollPageButton, + eventName: "switchscrollmode", + eventDetails: { + mode: _ui_utils.ScrollMode.PAGE + }, + close: true + }, { + element: options.scrollVerticalButton, + eventName: "switchscrollmode", + eventDetails: { + mode: _ui_utils.ScrollMode.VERTICAL + }, + close: true + }, { + element: options.scrollHorizontalButton, + eventName: "switchscrollmode", + eventDetails: { + mode: _ui_utils.ScrollMode.HORIZONTAL + }, + close: true + }, { + element: options.scrollWrappedButton, + eventName: "switchscrollmode", + eventDetails: { + mode: _ui_utils.ScrollMode.WRAPPED + }, + close: true + }, { + element: options.spreadNoneButton, + eventName: "switchspreadmode", + eventDetails: { + mode: _ui_utils.SpreadMode.NONE + }, + close: true + }, { + element: options.spreadOddButton, + eventName: "switchspreadmode", + eventDetails: { + mode: _ui_utils.SpreadMode.ODD + }, + close: true + }, { + element: options.spreadEvenButton, + eventName: "switchspreadmode", + eventDetails: { + mode: _ui_utils.SpreadMode.EVEN + }, + close: true + }, { + element: options.documentPropertiesButton, + eventName: "documentproperties", + close: true + }]; + this.buttons.push({ + element: options.openFileButton, + eventName: "openfile", + close: true + }); + this.items = { + firstPage: options.firstPageButton, + lastPage: options.lastPageButton, + pageRotateCw: options.pageRotateCwButton, + pageRotateCcw: options.pageRotateCcwButton + }; + this.eventBus = eventBus; + this.opened = false; + this.#bindClickListeners(); + this.#bindCursorToolsListener(options); + this.#bindScrollModeListener(options); + this.#bindSpreadModeListener(options); + this.reset(); + } + + get isOpen() { + return this.opened; + } + + setPageNumber(pageNumber) { + this.pageNumber = pageNumber; + this.#updateUIState(); + } + + setPagesCount(pagesCount) { + this.pagesCount = pagesCount; + this.#updateUIState(); + } + + reset() { + this.pageNumber = 0; + this.pagesCount = 0; + this.#updateUIState(); + this.eventBus.dispatch("secondarytoolbarreset", { + source: this + }); + } + + #updateUIState() { + this.items.firstPage.disabled = this.pageNumber <= 1; + this.items.lastPage.disabled = this.pageNumber >= this.pagesCount; + this.items.pageRotateCw.disabled = this.pagesCount === 0; + this.items.pageRotateCcw.disabled = this.pagesCount === 0; + } + + #bindClickListeners() { + this.toggleButton.addEventListener("click", this.toggle.bind(this)); + + for (const { + element, + eventName, + close, + eventDetails + } of this.buttons) { + element.addEventListener("click", evt => { + if (eventName !== null) { + const details = { + source: this + }; + + for (const property in eventDetails) { + details[property] = eventDetails[property]; + } + + this.eventBus.dispatch(eventName, details); + } + + if (close) { + this.close(); + } + }); + } + } + + #bindCursorToolsListener({ + cursorSelectToolButton, + cursorHandToolButton + }) { + this.eventBus._on("cursortoolchanged", function ({ + tool + }) { + const isSelect = tool === _pdf_cursor_tools.CursorTool.SELECT, + isHand = tool === _pdf_cursor_tools.CursorTool.HAND; + cursorSelectToolButton.classList.toggle("toggled", isSelect); + cursorHandToolButton.classList.toggle("toggled", isHand); + cursorSelectToolButton.setAttribute("aria-checked", isSelect); + cursorHandToolButton.setAttribute("aria-checked", isHand); + }); + } + + #bindScrollModeListener({ + scrollPageButton, + scrollVerticalButton, + scrollHorizontalButton, + scrollWrappedButton, + spreadNoneButton, + spreadOddButton, + spreadEvenButton + }) { + const scrollModeChanged = ({ + mode + }) => { + const isPage = mode === _ui_utils.ScrollMode.PAGE, + isVertical = mode === _ui_utils.ScrollMode.VERTICAL, + isHorizontal = mode === _ui_utils.ScrollMode.HORIZONTAL, + isWrapped = mode === _ui_utils.ScrollMode.WRAPPED; + scrollPageButton.classList.toggle("toggled", isPage); + scrollVerticalButton.classList.toggle("toggled", isVertical); + scrollHorizontalButton.classList.toggle("toggled", isHorizontal); + scrollWrappedButton.classList.toggle("toggled", isWrapped); + scrollPageButton.setAttribute("aria-checked", isPage); + scrollVerticalButton.setAttribute("aria-checked", isVertical); + scrollHorizontalButton.setAttribute("aria-checked", isHorizontal); + scrollWrappedButton.setAttribute("aria-checked", isWrapped); + const forceScrollModePage = this.pagesCount > _base_viewer.PagesCountLimit.FORCE_SCROLL_MODE_PAGE; + scrollPageButton.disabled = forceScrollModePage; + scrollVerticalButton.disabled = forceScrollModePage; + scrollHorizontalButton.disabled = forceScrollModePage; + scrollWrappedButton.disabled = forceScrollModePage; + spreadNoneButton.disabled = isHorizontal; + spreadOddButton.disabled = isHorizontal; + spreadEvenButton.disabled = isHorizontal; + }; + + this.eventBus._on("scrollmodechanged", scrollModeChanged); + + this.eventBus._on("secondarytoolbarreset", evt => { + if (evt.source === this) { + scrollModeChanged({ + mode: _ui_utils.ScrollMode.VERTICAL + }); + } + }); + } + + #bindSpreadModeListener({ + spreadNoneButton, + spreadOddButton, + spreadEvenButton + }) { + function spreadModeChanged({ + mode + }) { + const isNone = mode === _ui_utils.SpreadMode.NONE, + isOdd = mode === _ui_utils.SpreadMode.ODD, + isEven = mode === _ui_utils.SpreadMode.EVEN; + spreadNoneButton.classList.toggle("toggled", isNone); + spreadOddButton.classList.toggle("toggled", isOdd); + spreadEvenButton.classList.toggle("toggled", isEven); + spreadNoneButton.setAttribute("aria-checked", isNone); + spreadOddButton.setAttribute("aria-checked", isOdd); + spreadEvenButton.setAttribute("aria-checked", isEven); + } + + this.eventBus._on("spreadmodechanged", spreadModeChanged); + + this.eventBus._on("secondarytoolbarreset", evt => { + if (evt.source === this) { + spreadModeChanged({ + mode: _ui_utils.SpreadMode.NONE + }); + } + }); + } + + open() { + if (this.opened) { + return; + } + + this.opened = true; + this.toggleButton.classList.add("toggled"); + this.toggleButton.setAttribute("aria-expanded", "true"); + this.toolbar.classList.remove("hidden"); + } + + close() { + if (!this.opened) { + return; + } + + this.opened = false; + this.toolbar.classList.add("hidden"); + this.toggleButton.classList.remove("toggled"); + this.toggleButton.setAttribute("aria-expanded", "false"); + } + + toggle() { + if (this.opened) { + this.close(); + } else { + this.open(); + } + } + +} + +exports.SecondaryToolbar = SecondaryToolbar; + +/***/ }), +/* 40 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Toolbar = void 0; + +var _ui_utils = __webpack_require__(1); + +var _pdfjsLib = __webpack_require__(5); + +const PAGE_NUMBER_LOADING_INDICATOR = "visiblePageIsLoading"; + +class Toolbar { + #wasLocalized = false; + + constructor(options, eventBus, l10n) { + this.toolbar = options.container; + this.eventBus = eventBus; + this.l10n = l10n; + this.buttons = [{ + element: options.previous, + eventName: "previouspage" + }, { + element: options.next, + eventName: "nextpage" + }, { + element: options.zoomIn, + eventName: "zoomin" + }, { + element: options.zoomOut, + eventName: "zoomout" + }, { + element: options.print, + eventName: "print" + }, { + element: options.presentationModeButton, + eventName: "presentationmode" + }, { + element: options.download, + eventName: "download" + }, { + element: options.viewBookmark, + eventName: null + }, { + element: options.editorFreeTextButton, + eventName: "switchannotationeditormode", + eventDetails: { + get mode() { + const { + classList + } = options.editorFreeTextButton; + return classList.contains("toggled") ? _pdfjsLib.AnnotationEditorType.NONE : _pdfjsLib.AnnotationEditorType.FREETEXT; + } + + } + }, { + element: options.editorInkButton, + eventName: "switchannotationeditormode", + eventDetails: { + get mode() { + const { + classList + } = options.editorInkButton; + return classList.contains("toggled") ? _pdfjsLib.AnnotationEditorType.NONE : _pdfjsLib.AnnotationEditorType.INK; + } + + } + }]; + this.buttons.push({ + element: options.openFile, + eventName: "openfile" + }); + this.items = { + numPages: options.numPages, + pageNumber: options.pageNumber, + scaleSelect: options.scaleSelect, + customScaleOption: options.customScaleOption, + previous: options.previous, + next: options.next, + zoomIn: options.zoomIn, + zoomOut: options.zoomOut + }; + this.#bindListeners(options); + this.reset(); + } + + setPageNumber(pageNumber, pageLabel) { + this.pageNumber = pageNumber; + this.pageLabel = pageLabel; + this.#updateUIState(false); + } + + setPagesCount(pagesCount, hasPageLabels) { + this.pagesCount = pagesCount; + this.hasPageLabels = hasPageLabels; + this.#updateUIState(true); + } + + setPageScale(pageScaleValue, pageScale) { + this.pageScaleValue = (pageScaleValue || pageScale).toString(); + this.pageScale = pageScale; + this.#updateUIState(false); + } + + reset() { + this.pageNumber = 0; + this.pageLabel = null; + this.hasPageLabels = false; + this.pagesCount = 0; + this.pageScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; + this.pageScale = _ui_utils.DEFAULT_SCALE; + this.#updateUIState(true); + this.updateLoadingIndicatorState(); + this.eventBus.dispatch("toolbarreset", { + source: this + }); + } + + #bindListeners(options) { + const { + pageNumber, + scaleSelect + } = this.items; + const self = this; + + for (const { + element, + eventName, + eventDetails + } of this.buttons) { + element.addEventListener("click", evt => { + if (eventName !== null) { + const details = { + source: this + }; + + if (eventDetails) { + for (const property in eventDetails) { + details[property] = eventDetails[property]; + } + } + + this.eventBus.dispatch(eventName, details); + } + }); + } + + pageNumber.addEventListener("click", function () { + this.select(); + }); + pageNumber.addEventListener("change", function () { + self.eventBus.dispatch("pagenumberchanged", { + source: self, + value: this.value + }); + }); + scaleSelect.addEventListener("change", function () { + if (this.value === "custom") { + return; + } + + self.eventBus.dispatch("scalechanged", { + source: self, + value: this.value + }); + }); + scaleSelect.addEventListener("click", function (evt) { + const target = evt.target; + + if (this.value === self.pageScaleValue && target.tagName.toUpperCase() === "OPTION") { + this.blur(); + } + }); + scaleSelect.oncontextmenu = _ui_utils.noContextMenuHandler; + + this.eventBus._on("localized", () => { + this.#wasLocalized = true; + this.#adjustScaleWidth(); + this.#updateUIState(true); + }); + + this.#bindEditorToolsListener(options); + } + + #bindEditorToolsListener({ + editorFreeTextButton, + editorFreeTextParamsToolbar, + editorInkButton, + editorInkParamsToolbar + }) { + const editorModeChanged = (evt, disableButtons = false) => { + const editorButtons = [{ + mode: _pdfjsLib.AnnotationEditorType.FREETEXT, + button: editorFreeTextButton, + toolbar: editorFreeTextParamsToolbar + }, { + mode: _pdfjsLib.AnnotationEditorType.INK, + button: editorInkButton, + toolbar: editorInkParamsToolbar + }]; + + for (const { + mode, + button, + toolbar + } of editorButtons) { + const checked = mode === evt.mode; + button.classList.toggle("toggled", checked); + button.setAttribute("aria-checked", checked); + button.disabled = disableButtons; + toolbar?.classList.toggle("hidden", !checked); + } + }; + + this.eventBus._on("annotationeditormodechanged", editorModeChanged); + + this.eventBus._on("toolbarreset", evt => { + if (evt.source === this) { + editorModeChanged({ + mode: _pdfjsLib.AnnotationEditorType.NONE + }, true); + } + }); + } + + #updateUIState(resetNumPages = false) { + if (!this.#wasLocalized) { + return; + } + + const { + pageNumber, + pagesCount, + pageScaleValue, + pageScale, + items + } = this; + + if (resetNumPages) { + if (this.hasPageLabels) { + items.pageNumber.type = "text"; + } else { + items.pageNumber.type = "number"; + this.l10n.get("of_pages", { + pagesCount + }).then(msg => { + items.numPages.textContent = msg; + }); + } + + items.pageNumber.max = pagesCount; + } + + if (this.hasPageLabels) { + items.pageNumber.value = this.pageLabel; + this.l10n.get("page_of_pages", { + pageNumber, + pagesCount + }).then(msg => { + items.numPages.textContent = msg; + }); + } else { + items.pageNumber.value = pageNumber; + } + + items.previous.disabled = pageNumber <= 1; + items.next.disabled = pageNumber >= pagesCount; + items.zoomOut.disabled = pageScale <= _ui_utils.MIN_SCALE; + items.zoomIn.disabled = pageScale >= _ui_utils.MAX_SCALE; + this.l10n.get("page_scale_percent", { + scale: Math.round(pageScale * 10000) / 100 + }).then(msg => { + let predefinedValueFound = false; + + for (const option of items.scaleSelect.options) { + if (option.value !== pageScaleValue) { + option.selected = false; + continue; + } + + option.selected = true; + predefinedValueFound = true; + } + + if (!predefinedValueFound) { + items.customScaleOption.textContent = msg; + items.customScaleOption.selected = true; + } + }); + } + + updateLoadingIndicatorState(loading = false) { + const { + pageNumber + } = this.items; + pageNumber.classList.toggle(PAGE_NUMBER_LOADING_INDICATOR, loading); + } + + async #adjustScaleWidth() { + const { + items, + l10n + } = this; + const predefinedValuesPromise = Promise.all([l10n.get("page_scale_auto"), l10n.get("page_scale_actual"), l10n.get("page_scale_fit"), l10n.get("page_scale_width")]); + await _ui_utils.animationStarted; + const style = getComputedStyle(items.scaleSelect), + scaleSelectContainerWidth = parseInt(style.getPropertyValue("--scale-select-container-width"), 10), + scaleSelectOverflow = parseInt(style.getPropertyValue("--scale-select-overflow"), 10); + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d", { + alpha: false + }); + ctx.font = `${style.fontSize} ${style.fontFamily}`; + let maxWidth = 0; + + for (const predefinedValue of await predefinedValuesPromise) { + const { + width + } = ctx.measureText(predefinedValue); + + if (width > maxWidth) { + maxWidth = width; + } + } + + maxWidth += 2 * scaleSelectOverflow; + + if (maxWidth > scaleSelectContainerWidth) { + _ui_utils.docStyle.setProperty("--scale-select-container-width", `${maxWidth}px`); + } + + canvas.width = 0; + canvas.height = 0; + } + +} + +exports.Toolbar = Toolbar; + +/***/ }), +/* 41 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ViewHistory = void 0; +const DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20; + +class ViewHistory { + constructor(fingerprint, cacheSize = DEFAULT_VIEW_HISTORY_CACHE_SIZE) { + this.fingerprint = fingerprint; + this.cacheSize = cacheSize; + this._initializedPromise = this._readFromStorage().then(databaseStr => { + const database = JSON.parse(databaseStr || "{}"); + let index = -1; + + if (!Array.isArray(database.files)) { + database.files = []; + } else { + while (database.files.length >= this.cacheSize) { + database.files.shift(); + } + + for (let i = 0, ii = database.files.length; i < ii; i++) { + const branch = database.files[i]; + + if (branch.fingerprint === this.fingerprint) { + index = i; + break; + } + } + } + + if (index === -1) { + index = database.files.push({ + fingerprint: this.fingerprint + }) - 1; + } + + this.file = database.files[index]; + this.database = database; + }); + } + + async _writeToStorage() { + const databaseStr = JSON.stringify(this.database); + localStorage.setItem("pdfjs.history", databaseStr); + } + + async _readFromStorage() { + return localStorage.getItem("pdfjs.history"); + } + + async set(name, val) { + await this._initializedPromise; + this.file[name] = val; + return this._writeToStorage(); + } + + async setMultiple(properties) { + await this._initializedPromise; + + for (const name in properties) { + this.file[name] = properties[name]; + } + + return this._writeToStorage(); + } + + async get(name, defaultValue) { + await this._initializedPromise; + const val = this.file[name]; + return val !== undefined ? val : defaultValue; + } + + async getMultiple(properties) { + await this._initializedPromise; + const values = Object.create(null); + + for (const name in properties) { + const val = this.file[name]; + values[name] = val !== undefined ? val : properties[name]; + } + + return values; + } + +} + +exports.ViewHistory = ViewHistory; + +/***/ }), +/* 42 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GenericCom = void 0; + +var _app = __webpack_require__(4); + +var _preferences = __webpack_require__(43); + +var _download_manager = __webpack_require__(44); + +var _genericl10n = __webpack_require__(45); + +var _generic_scripting = __webpack_require__(47); + +; +const GenericCom = {}; +exports.GenericCom = GenericCom; + +class GenericPreferences extends _preferences.BasePreferences { + async _writeToStorage(prefObj) { + localStorage.setItem("pdfjs.preferences", JSON.stringify(prefObj)); + } + + async _readFromStorage(prefObj) { + return JSON.parse(localStorage.getItem("pdfjs.preferences")); + } + +} + +class GenericExternalServices extends _app.DefaultExternalServices { + static createDownloadManager(options) { + return new _download_manager.DownloadManager(); + } + + static createPreferences() { + return new GenericPreferences(); + } + + static createL10n({ + locale = "en-US" + }) { + return new _genericl10n.GenericL10n(locale); + } + + static createScripting({ + sandboxBundleSrc + }) { + return new _generic_scripting.GenericScripting(sandboxBundleSrc); + } + +} + +_app.PDFViewerApplication.externalServices = GenericExternalServices; + +/***/ }), +/* 43 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BasePreferences = void 0; + +var _app_options = __webpack_require__(2); + +class BasePreferences { + #defaults = Object.freeze({ + "annotationEditorMode": -1, + "annotationMode": 2, + "cursorToolOnLoad": 0, + "defaultZoomValue": "", + "disablePageLabels": false, + "enablePermissions": false, + "enablePrintAutoRotate": true, + "enableScripting": true, + "externalLinkTarget": 0, + "historyUpdateUrl": false, + "ignoreDestinationZoom": false, + "forcePageColors": false, + "pageColorsBackground": "Canvas", + "pageColorsForeground": "CanvasText", + "pdfBugEnabled": false, + "sidebarViewOnLoad": -1, + "scrollModeOnLoad": -1, + "spreadModeOnLoad": -1, + "textLayerMode": 1, + "useOnlyCssZoom": false, + "viewerCssTheme": 0, + "viewOnLoad": 0, + "disableAutoFetch": false, + "disableFontFace": false, + "disableRange": false, + "disableStream": false, + "enableXfa": true, + "renderer": "canvas" + }); + #prefs = Object.create(null); + #initializedPromise = null; + + constructor() { + if (this.constructor === BasePreferences) { + throw new Error("Cannot initialize BasePreferences."); + } + + this.#initializedPromise = this._readFromStorage(this.#defaults).then(prefs => { + for (const name in this.#defaults) { + const prefValue = prefs?.[name]; + + if (typeof prefValue === typeof this.#defaults[name]) { + this.#prefs[name] = prefValue; + } + } + }); + } + + async _writeToStorage(prefObj) { + throw new Error("Not implemented: _writeToStorage"); + } + + async _readFromStorage(prefObj) { + throw new Error("Not implemented: _readFromStorage"); + } + + async reset() { + await this.#initializedPromise; + const prefs = this.#prefs; + this.#prefs = Object.create(null); + return this._writeToStorage(this.#defaults).catch(reason => { + this.#prefs = prefs; + throw reason; + }); + } + + async set(name, value) { + await this.#initializedPromise; + const defaultValue = this.#defaults[name], + prefs = this.#prefs; + + if (defaultValue === undefined) { + throw new Error(`Set preference: "${name}" is undefined.`); + } else if (value === undefined) { + throw new Error("Set preference: no value is specified."); + } + + const valueType = typeof value, + defaultType = typeof defaultValue; + + if (valueType !== defaultType) { + if (valueType === "number" && defaultType === "string") { + value = value.toString(); + } else { + throw new Error(`Set preference: "${value}" is a ${valueType}, expected a ${defaultType}.`); + } + } else { + if (valueType === "number" && !Number.isInteger(value)) { + throw new Error(`Set preference: "${value}" must be an integer.`); + } + } + + this.#prefs[name] = value; + return this._writeToStorage(this.#prefs).catch(reason => { + this.#prefs = prefs; + throw reason; + }); + } + + async get(name) { + await this.#initializedPromise; + const defaultValue = this.#defaults[name]; + + if (defaultValue === undefined) { + throw new Error(`Get preference: "${name}" is undefined.`); + } + + return this.#prefs[name] ?? defaultValue; + } + + async getAll() { + await this.#initializedPromise; + const obj = Object.create(null); + + for (const name in this.#defaults) { + obj[name] = this.#prefs[name] ?? this.#defaults[name]; + } + + return obj; + } + +} + +exports.BasePreferences = BasePreferences; + +/***/ }), +/* 44 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.DownloadManager = void 0; + +var _pdfjsLib = __webpack_require__(5); + +; + +function download(blobUrl, filename) { + const a = document.createElement("a"); + + if (!a.click) { + throw new Error('DownloadManager: "a.click()" is not supported.'); + } + + a.href = blobUrl; + a.target = "_parent"; + + if ("download" in a) { + a.download = filename; + } + + (document.body || document.documentElement).append(a); + a.click(); + a.remove(); +} + +class DownloadManager { + constructor() { + this._openBlobUrls = new WeakMap(); + } + + downloadUrl(url, filename) { + if (!(0, _pdfjsLib.createValidAbsoluteUrl)(url, "http://example.com")) { + console.error(`downloadUrl - not a valid URL: ${url}`); + return; + } + + download(url + "#pdfjs.action=download", filename); + } + + downloadData(data, filename, contentType) { + const blobUrl = URL.createObjectURL(new Blob([data], { + type: contentType + })); + download(blobUrl, filename); + } + + openOrDownloadData(element, data, filename) { + const isPdfData = (0, _pdfjsLib.isPdfFile)(filename); + const contentType = isPdfData ? "application/pdf" : ""; + + if (isPdfData) { + let blobUrl = this._openBlobUrls.get(element); + + if (!blobUrl) { + blobUrl = URL.createObjectURL(new Blob([data], { + type: contentType + })); + + this._openBlobUrls.set(element, blobUrl); + } + + let viewerUrl; + viewerUrl = "?file=" + encodeURIComponent(blobUrl + "#" + filename); + + try { + window.open(viewerUrl); + return true; + } catch (ex) { + console.error(`openOrDownloadData: ${ex}`); + URL.revokeObjectURL(blobUrl); + + this._openBlobUrls.delete(element); + } + } + + this.downloadData(data, filename, contentType); + return false; + } + + download(blob, url, filename) { + const blobUrl = URL.createObjectURL(blob); + download(blobUrl, filename); + } + +} + +exports.DownloadManager = DownloadManager; + +/***/ }), +/* 45 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GenericL10n = void 0; + +__webpack_require__(46); + +var _l10n_utils = __webpack_require__(31); + +const webL10n = document.webL10n; + +class GenericL10n { + constructor(lang) { + this._lang = lang; + this._ready = new Promise((resolve, reject) => { + webL10n.setLanguage((0, _l10n_utils.fixupLangCode)(lang), () => { + resolve(webL10n); + }); + }); + } + + async getLanguage() { + const l10n = await this._ready; + return l10n.getLanguage(); + } + + async getDirection() { + const l10n = await this._ready; + return l10n.getDirection(); + } + + async get(key, args = null, fallback = (0, _l10n_utils.getL10nFallback)(key, args)) { + const l10n = await this._ready; + return l10n.get(key, args, fallback); + } + + async translate(element) { + const l10n = await this._ready; + return l10n.translate(element); + } + +} + +exports.GenericL10n = GenericL10n; + +/***/ }), +/* 46 */ +/***/ (() => { + + + +document.webL10n = function (window, document, undefined) { + var gL10nData = {}; + var gTextData = ''; + var gTextProp = 'textContent'; + var gLanguage = ''; + var gMacros = {}; + var gReadyState = 'loading'; + var gAsyncResourceLoading = true; + + function getL10nResourceLinks() { + return document.querySelectorAll('link[type="application/l10n"]'); + } + + function getL10nDictionary() { + var script = document.querySelector('script[type="application/l10n"]'); + return script ? JSON.parse(script.innerHTML) : null; + } + + function getTranslatableChildren(element) { + return element ? element.querySelectorAll('*[data-l10n-id]') : []; + } + + function getL10nAttributes(element) { + if (!element) return {}; + var l10nId = element.getAttribute('data-l10n-id'); + var l10nArgs = element.getAttribute('data-l10n-args'); + var args = {}; + + if (l10nArgs) { + try { + args = JSON.parse(l10nArgs); + } catch (e) { + console.warn('could not parse arguments for #' + l10nId); + } + } + + return { + id: l10nId, + args: args + }; + } + + function xhrLoadText(url, onSuccess, onFailure) { + onSuccess = onSuccess || function _onSuccess(data) {}; + + onFailure = onFailure || function _onFailure() {}; + + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, gAsyncResourceLoading); + + if (xhr.overrideMimeType) { + xhr.overrideMimeType('text/plain; charset=utf-8'); + } + + xhr.onreadystatechange = function () { + if (xhr.readyState == 4) { + if (xhr.status == 200 || xhr.status === 0) { + onSuccess(xhr.responseText); + } else { + onFailure(); + } + } + }; + + xhr.onerror = onFailure; + xhr.ontimeout = onFailure; + + try { + xhr.send(null); + } catch (e) { + onFailure(); + } + } + + function parseResource(href, lang, successCallback, failureCallback) { + var baseURL = href.replace(/[^\/]*$/, '') || './'; + + function evalString(text) { + if (text.lastIndexOf('\\') < 0) return text; + return text.replace(/\\\\/g, '\\').replace(/\\n/g, '\n').replace(/\\r/g, '\r').replace(/\\t/g, '\t').replace(/\\b/g, '\b').replace(/\\f/g, '\f').replace(/\\{/g, '{').replace(/\\}/g, '}').replace(/\\"/g, '"').replace(/\\'/g, "'"); + } + + function parseProperties(text, parsedPropertiesCallback) { + var dictionary = {}; + var reBlank = /^\s*|\s*$/; + var reComment = /^\s*#|^\s*$/; + var reSection = /^\s*\[(.*)\]\s*$/; + var reImport = /^\s*@import\s+url\((.*)\)\s*$/i; + var reSplit = /^([^=\s]*)\s*=\s*(.+)$/; + + function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) { + var entries = rawText.replace(reBlank, '').split(/[\r\n]+/); + var currentLang = '*'; + var genericLang = lang.split('-', 1)[0]; + var skipLang = false; + var match = ''; + + function nextEntry() { + while (true) { + if (!entries.length) { + parsedRawLinesCallback(); + return; + } + + var line = entries.shift(); + if (reComment.test(line)) continue; + + if (extendedSyntax) { + match = reSection.exec(line); + + if (match) { + currentLang = match[1].toLowerCase(); + skipLang = currentLang !== '*' && currentLang !== lang && currentLang !== genericLang; + continue; + } else if (skipLang) { + continue; + } + + match = reImport.exec(line); + + if (match) { + loadImport(baseURL + match[1], nextEntry); + return; + } + } + + var tmp = line.match(reSplit); + + if (tmp && tmp.length == 3) { + dictionary[tmp[1]] = evalString(tmp[2]); + } + } + } + + nextEntry(); + } + + function loadImport(url, callback) { + xhrLoadText(url, function (content) { + parseRawLines(content, false, callback); + }, function () { + console.warn(url + ' not found.'); + callback(); + }); + } + + parseRawLines(text, true, function () { + parsedPropertiesCallback(dictionary); + }); + } + + xhrLoadText(href, function (response) { + gTextData += response; + parseProperties(response, function (data) { + for (var key in data) { + var id, + prop, + index = key.lastIndexOf('.'); + + if (index > 0) { + id = key.substring(0, index); + prop = key.substring(index + 1); + } else { + id = key; + prop = gTextProp; + } + + if (!gL10nData[id]) { + gL10nData[id] = {}; + } + + gL10nData[id][prop] = data[key]; + } + + if (successCallback) { + successCallback(); + } + }); + }, failureCallback); + } + + function loadLocale(lang, callback) { + if (lang) { + lang = lang.toLowerCase(); + } + + callback = callback || function _callback() {}; + + clear(); + gLanguage = lang; + var langLinks = getL10nResourceLinks(); + var langCount = langLinks.length; + + if (langCount === 0) { + var dict = getL10nDictionary(); + + if (dict && dict.locales && dict.default_locale) { + console.log('using the embedded JSON directory, early way out'); + gL10nData = dict.locales[lang]; + + if (!gL10nData) { + var defaultLocale = dict.default_locale.toLowerCase(); + + for (var anyCaseLang in dict.locales) { + anyCaseLang = anyCaseLang.toLowerCase(); + + if (anyCaseLang === lang) { + gL10nData = dict.locales[lang]; + break; + } else if (anyCaseLang === defaultLocale) { + gL10nData = dict.locales[defaultLocale]; + } + } + } + + callback(); + } else { + console.log('no resource to load, early way out'); + } + + gReadyState = 'complete'; + return; + } + + var onResourceLoaded = null; + var gResourceCount = 0; + + onResourceLoaded = function () { + gResourceCount++; + + if (gResourceCount >= langCount) { + callback(); + gReadyState = 'complete'; + } + }; + + function L10nResourceLink(link) { + var href = link.href; + + this.load = function (lang, callback) { + parseResource(href, lang, callback, function () { + console.warn(href + ' not found.'); + console.warn('"' + lang + '" resource not found'); + gLanguage = ''; + callback(); + }); + }; + } + + for (var i = 0; i < langCount; i++) { + var resource = new L10nResourceLink(langLinks[i]); + resource.load(lang, onResourceLoaded); + } + } + + function clear() { + gL10nData = {}; + gTextData = ''; + gLanguage = ''; + } + + function getPluralRules(lang) { + var locales2rules = { + 'af': 3, + 'ak': 4, + 'am': 4, + 'ar': 1, + 'asa': 3, + 'az': 0, + 'be': 11, + 'bem': 3, + 'bez': 3, + 'bg': 3, + 'bh': 4, + 'bm': 0, + 'bn': 3, + 'bo': 0, + 'br': 20, + 'brx': 3, + 'bs': 11, + 'ca': 3, + 'cgg': 3, + 'chr': 3, + 'cs': 12, + 'cy': 17, + 'da': 3, + 'de': 3, + 'dv': 3, + 'dz': 0, + 'ee': 3, + 'el': 3, + 'en': 3, + 'eo': 3, + 'es': 3, + 'et': 3, + 'eu': 3, + 'fa': 0, + 'ff': 5, + 'fi': 3, + 'fil': 4, + 'fo': 3, + 'fr': 5, + 'fur': 3, + 'fy': 3, + 'ga': 8, + 'gd': 24, + 'gl': 3, + 'gsw': 3, + 'gu': 3, + 'guw': 4, + 'gv': 23, + 'ha': 3, + 'haw': 3, + 'he': 2, + 'hi': 4, + 'hr': 11, + 'hu': 0, + 'id': 0, + 'ig': 0, + 'ii': 0, + 'is': 3, + 'it': 3, + 'iu': 7, + 'ja': 0, + 'jmc': 3, + 'jv': 0, + 'ka': 0, + 'kab': 5, + 'kaj': 3, + 'kcg': 3, + 'kde': 0, + 'kea': 0, + 'kk': 3, + 'kl': 3, + 'km': 0, + 'kn': 0, + 'ko': 0, + 'ksb': 3, + 'ksh': 21, + 'ku': 3, + 'kw': 7, + 'lag': 18, + 'lb': 3, + 'lg': 3, + 'ln': 4, + 'lo': 0, + 'lt': 10, + 'lv': 6, + 'mas': 3, + 'mg': 4, + 'mk': 16, + 'ml': 3, + 'mn': 3, + 'mo': 9, + 'mr': 3, + 'ms': 0, + 'mt': 15, + 'my': 0, + 'nah': 3, + 'naq': 7, + 'nb': 3, + 'nd': 3, + 'ne': 3, + 'nl': 3, + 'nn': 3, + 'no': 3, + 'nr': 3, + 'nso': 4, + 'ny': 3, + 'nyn': 3, + 'om': 3, + 'or': 3, + 'pa': 3, + 'pap': 3, + 'pl': 13, + 'ps': 3, + 'pt': 3, + 'rm': 3, + 'ro': 9, + 'rof': 3, + 'ru': 11, + 'rwk': 3, + 'sah': 0, + 'saq': 3, + 'se': 7, + 'seh': 3, + 'ses': 0, + 'sg': 0, + 'sh': 11, + 'shi': 19, + 'sk': 12, + 'sl': 14, + 'sma': 7, + 'smi': 7, + 'smj': 7, + 'smn': 7, + 'sms': 7, + 'sn': 3, + 'so': 3, + 'sq': 3, + 'sr': 11, + 'ss': 3, + 'ssy': 3, + 'st': 3, + 'sv': 3, + 'sw': 3, + 'syr': 3, + 'ta': 3, + 'te': 3, + 'teo': 3, + 'th': 0, + 'ti': 4, + 'tig': 3, + 'tk': 3, + 'tl': 4, + 'tn': 3, + 'to': 0, + 'tr': 0, + 'ts': 3, + 'tzm': 22, + 'uk': 11, + 'ur': 3, + 've': 3, + 'vi': 0, + 'vun': 3, + 'wa': 4, + 'wae': 3, + 'wo': 0, + 'xh': 3, + 'xog': 3, + 'yo': 0, + 'zh': 0, + 'zu': 3 + }; + + function isIn(n, list) { + return list.indexOf(n) !== -1; + } + + function isBetween(n, start, end) { + return start <= n && n <= end; + } + + var pluralRules = { + '0': function (n) { + return 'other'; + }, + '1': function (n) { + if (isBetween(n % 100, 3, 10)) return 'few'; + if (n === 0) return 'zero'; + if (isBetween(n % 100, 11, 99)) return 'many'; + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '2': function (n) { + if (n !== 0 && n % 10 === 0) return 'many'; + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '3': function (n) { + if (n == 1) return 'one'; + return 'other'; + }, + '4': function (n) { + if (isBetween(n, 0, 1)) return 'one'; + return 'other'; + }, + '5': function (n) { + if (isBetween(n, 0, 2) && n != 2) return 'one'; + return 'other'; + }, + '6': function (n) { + if (n === 0) return 'zero'; + if (n % 10 == 1 && n % 100 != 11) return 'one'; + return 'other'; + }, + '7': function (n) { + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '8': function (n) { + if (isBetween(n, 3, 6)) return 'few'; + if (isBetween(n, 7, 10)) return 'many'; + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '9': function (n) { + if (n === 0 || n != 1 && isBetween(n % 100, 1, 19)) return 'few'; + if (n == 1) return 'one'; + return 'other'; + }, + '10': function (n) { + if (isBetween(n % 10, 2, 9) && !isBetween(n % 100, 11, 19)) return 'few'; + if (n % 10 == 1 && !isBetween(n % 100, 11, 19)) return 'one'; + return 'other'; + }, + '11': function (n) { + if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few'; + if (n % 10 === 0 || isBetween(n % 10, 5, 9) || isBetween(n % 100, 11, 14)) return 'many'; + if (n % 10 == 1 && n % 100 != 11) return 'one'; + return 'other'; + }, + '12': function (n) { + if (isBetween(n, 2, 4)) return 'few'; + if (n == 1) return 'one'; + return 'other'; + }, + '13': function (n) { + if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few'; + if (n != 1 && isBetween(n % 10, 0, 1) || isBetween(n % 10, 5, 9) || isBetween(n % 100, 12, 14)) return 'many'; + if (n == 1) return 'one'; + return 'other'; + }, + '14': function (n) { + if (isBetween(n % 100, 3, 4)) return 'few'; + if (n % 100 == 2) return 'two'; + if (n % 100 == 1) return 'one'; + return 'other'; + }, + '15': function (n) { + if (n === 0 || isBetween(n % 100, 2, 10)) return 'few'; + if (isBetween(n % 100, 11, 19)) return 'many'; + if (n == 1) return 'one'; + return 'other'; + }, + '16': function (n) { + if (n % 10 == 1 && n != 11) return 'one'; + return 'other'; + }, + '17': function (n) { + if (n == 3) return 'few'; + if (n === 0) return 'zero'; + if (n == 6) return 'many'; + if (n == 2) return 'two'; + if (n == 1) return 'one'; + return 'other'; + }, + '18': function (n) { + if (n === 0) return 'zero'; + if (isBetween(n, 0, 2) && n !== 0 && n != 2) return 'one'; + return 'other'; + }, + '19': function (n) { + if (isBetween(n, 2, 10)) return 'few'; + if (isBetween(n, 0, 1)) return 'one'; + return 'other'; + }, + '20': function (n) { + if ((isBetween(n % 10, 3, 4) || n % 10 == 9) && !(isBetween(n % 100, 10, 19) || isBetween(n % 100, 70, 79) || isBetween(n % 100, 90, 99))) return 'few'; + if (n % 1000000 === 0 && n !== 0) return 'many'; + if (n % 10 == 2 && !isIn(n % 100, [12, 72, 92])) return 'two'; + if (n % 10 == 1 && !isIn(n % 100, [11, 71, 91])) return 'one'; + return 'other'; + }, + '21': function (n) { + if (n === 0) return 'zero'; + if (n == 1) return 'one'; + return 'other'; + }, + '22': function (n) { + if (isBetween(n, 0, 1) || isBetween(n, 11, 99)) return 'one'; + return 'other'; + }, + '23': function (n) { + if (isBetween(n % 10, 1, 2) || n % 20 === 0) return 'one'; + return 'other'; + }, + '24': function (n) { + if (isBetween(n, 3, 10) || isBetween(n, 13, 19)) return 'few'; + if (isIn(n, [2, 12])) return 'two'; + if (isIn(n, [1, 11])) return 'one'; + return 'other'; + } + }; + var index = locales2rules[lang.replace(/-.*$/, '')]; + + if (!(index in pluralRules)) { + console.warn('plural form unknown for [' + lang + ']'); + return function () { + return 'other'; + }; + } + + return pluralRules[index]; + } + + gMacros.plural = function (str, param, key, prop) { + var n = parseFloat(param); + if (isNaN(n)) return str; + if (prop != gTextProp) return str; + + if (!gMacros._pluralRules) { + gMacros._pluralRules = getPluralRules(gLanguage); + } + + var index = '[' + gMacros._pluralRules(n) + ']'; + + if (n === 0 && key + '[zero]' in gL10nData) { + str = gL10nData[key + '[zero]'][prop]; + } else if (n == 1 && key + '[one]' in gL10nData) { + str = gL10nData[key + '[one]'][prop]; + } else if (n == 2 && key + '[two]' in gL10nData) { + str = gL10nData[key + '[two]'][prop]; + } else if (key + index in gL10nData) { + str = gL10nData[key + index][prop]; + } else if (key + '[other]' in gL10nData) { + str = gL10nData[key + '[other]'][prop]; + } + + return str; + }; + + function getL10nData(key, args, fallback) { + var data = gL10nData[key]; + + if (!data) { + console.warn('#' + key + ' is undefined.'); + + if (!fallback) { + return null; + } + + data = fallback; + } + + var rv = {}; + + for (var prop in data) { + var str = data[prop]; + str = substIndexes(str, args, key, prop); + str = substArguments(str, args, key); + rv[prop] = str; + } + + return rv; + } + + function substIndexes(str, args, key, prop) { + var reIndex = /\{\[\s*([a-zA-Z]+)\(([a-zA-Z]+)\)\s*\]\}/; + var reMatch = reIndex.exec(str); + if (!reMatch || !reMatch.length) return str; + var macroName = reMatch[1]; + var paramName = reMatch[2]; + var param; + + if (args && paramName in args) { + param = args[paramName]; + } else if (paramName in gL10nData) { + param = gL10nData[paramName]; + } + + if (macroName in gMacros) { + var macro = gMacros[macroName]; + str = macro(str, param, key, prop); + } + + return str; + } + + function substArguments(str, args, key) { + var reArgs = /\{\{\s*(.+?)\s*\}\}/g; + return str.replace(reArgs, function (matched_text, arg) { + if (args && arg in args) { + return args[arg]; + } + + if (arg in gL10nData) { + return gL10nData[arg]; + } + + console.log('argument {{' + arg + '}} for #' + key + ' is undefined.'); + return matched_text; + }); + } + + function translateElement(element) { + var l10n = getL10nAttributes(element); + if (!l10n.id) return; + var data = getL10nData(l10n.id, l10n.args); + + if (!data) { + console.warn('#' + l10n.id + ' is undefined.'); + return; + } + + if (data[gTextProp]) { + if (getChildElementCount(element) === 0) { + element[gTextProp] = data[gTextProp]; + } else { + var children = element.childNodes; + var found = false; + + for (var i = 0, l = children.length; i < l; i++) { + if (children[i].nodeType === 3 && /\S/.test(children[i].nodeValue)) { + if (found) { + children[i].nodeValue = ''; + } else { + children[i].nodeValue = data[gTextProp]; + found = true; + } + } + } + + if (!found) { + var textNode = document.createTextNode(data[gTextProp]); + element.prepend(textNode); + } + } + + delete data[gTextProp]; + } + + for (var k in data) { + element[k] = data[k]; + } + } + + function getChildElementCount(element) { + if (element.children) { + return element.children.length; + } + + if (typeof element.childElementCount !== 'undefined') { + return element.childElementCount; + } + + var count = 0; + + for (var i = 0; i < element.childNodes.length; i++) { + count += element.nodeType === 1 ? 1 : 0; + } + + return count; + } + + function translateFragment(element) { + element = element || document.documentElement; + var children = getTranslatableChildren(element); + var elementCount = children.length; + + for (var i = 0; i < elementCount; i++) { + translateElement(children[i]); + } + + translateElement(element); + } + + return { + get: function (key, args, fallbackString) { + var index = key.lastIndexOf('.'); + var prop = gTextProp; + + if (index > 0) { + prop = key.substring(index + 1); + key = key.substring(0, index); + } + + var fallback; + + if (fallbackString) { + fallback = {}; + fallback[prop] = fallbackString; + } + + var data = getL10nData(key, args, fallback); + + if (data && prop in data) { + return data[prop]; + } + + return '{{' + key + '}}'; + }, + getData: function () { + return gL10nData; + }, + getText: function () { + return gTextData; + }, + getLanguage: function () { + return gLanguage; + }, + setLanguage: function (lang, callback) { + loadLocale(lang, function () { + if (callback) callback(); + }); + }, + getDirection: function () { + var rtlList = ['ar', 'he', 'fa', 'ps', 'ur']; + var shortCode = gLanguage.split('-', 1)[0]; + return rtlList.indexOf(shortCode) >= 0 ? 'rtl' : 'ltr'; + }, + translate: translateFragment, + getReadyState: function () { + return gReadyState; + }, + ready: function (callback) { + if (!callback) { + return; + } else if (gReadyState == 'complete' || gReadyState == 'interactive') { + window.setTimeout(function () { + callback(); + }); + } else if (document.addEventListener) { + document.addEventListener('localized', function once() { + document.removeEventListener('localized', once); + callback(); + }); + } + } + }; +}(window, document); + +/***/ }), +/* 47 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GenericScripting = void 0; +exports.docPropertiesLookup = docPropertiesLookup; + +var _pdfjsLib = __webpack_require__(5); + +async function docPropertiesLookup(pdfDocument) { + const url = "", + baseUrl = url.split("#")[0]; + let { + info, + metadata, + contentDispositionFilename, + contentLength + } = await pdfDocument.getMetadata(); + + if (!contentLength) { + const { + length + } = await pdfDocument.getDownloadInfo(); + contentLength = length; + } + + return { ...info, + baseURL: baseUrl, + filesize: contentLength, + filename: contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(url), + metadata: metadata?.getRaw(), + authors: metadata?.get("dc:creator"), + numPages: pdfDocument.numPages, + URL: url + }; +} + +class GenericScripting { + constructor(sandboxBundleSrc) { + this._ready = (0, _pdfjsLib.loadScript)(sandboxBundleSrc, true).then(() => { + return window.pdfjsSandbox.QuickJSSandbox(); + }); + } + + async createSandbox(data) { + const sandbox = await this._ready; + sandbox.create(data); + } + + async dispatchEventInSandbox(event) { + const sandbox = await this._ready; + setTimeout(() => sandbox.dispatchEvent(event), 0); + } + + async destroySandbox() { + const sandbox = await this._ready; + sandbox.nukeSandbox(); + } + +} + +exports.GenericScripting = GenericScripting; + +/***/ }), +/* 48 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFPrintService = PDFPrintService; + +var _pdfjsLib = __webpack_require__(5); + +var _app = __webpack_require__(4); + +var _print_utils = __webpack_require__(49); + +let activeService = null; +let dialog = null; +let overlayManager = null; + +function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size, printResolution, optionalContentConfigPromise, printAnnotationStoragePromise) { + const scratchCanvas = activeService.scratchCanvas; + const PRINT_UNITS = printResolution / _pdfjsLib.PixelsPerInch.PDF; + scratchCanvas.width = Math.floor(size.width * PRINT_UNITS); + scratchCanvas.height = Math.floor(size.height * PRINT_UNITS); + const ctx = scratchCanvas.getContext("2d"); + ctx.save(); + ctx.fillStyle = "rgb(255, 255, 255)"; + ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height); + ctx.restore(); + return Promise.all([pdfDocument.getPage(pageNumber), printAnnotationStoragePromise]).then(function ([pdfPage, printAnnotationStorage]) { + const renderContext = { + canvasContext: ctx, + transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0], + viewport: pdfPage.getViewport({ + scale: 1, + rotation: size.rotation + }), + intent: "print", + annotationMode: _pdfjsLib.AnnotationMode.ENABLE_STORAGE, + optionalContentConfigPromise, + printAnnotationStorage + }; + return pdfPage.render(renderContext).promise; + }); +} + +function PDFPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise = null, printAnnotationStoragePromise = null, l10n) { + this.pdfDocument = pdfDocument; + this.pagesOverview = pagesOverview; + this.printContainer = printContainer; + this._printResolution = printResolution || 150; + this._optionalContentConfigPromise = optionalContentConfigPromise || pdfDocument.getOptionalContentConfig(); + this._printAnnotationStoragePromise = printAnnotationStoragePromise || Promise.resolve(); + this.l10n = l10n; + this.currentPage = -1; + this.scratchCanvas = document.createElement("canvas"); +} + +PDFPrintService.prototype = { + layout() { + this.throwIfInactive(); + const body = document.querySelector("body"); + body.setAttribute("data-pdfjsprinting", true); + const hasEqualPageSizes = this.pagesOverview.every(function (size) { + return size.width === this.pagesOverview[0].width && size.height === this.pagesOverview[0].height; + }, this); + + if (!hasEqualPageSizes) { + console.warn("Not all pages have the same size. The printed " + "result may be incorrect!"); + } + + this.pageStyleSheet = document.createElement("style"); + const pageSize = this.pagesOverview[0]; + this.pageStyleSheet.textContent = "@page { size: " + pageSize.width + "pt " + pageSize.height + "pt;}"; + body.append(this.pageStyleSheet); + }, + + destroy() { + if (activeService !== this) { + return; + } + + this.printContainer.textContent = ""; + const body = document.querySelector("body"); + body.removeAttribute("data-pdfjsprinting"); + + if (this.pageStyleSheet) { + this.pageStyleSheet.remove(); + this.pageStyleSheet = null; + } + + this.scratchCanvas.width = this.scratchCanvas.height = 0; + this.scratchCanvas = null; + activeService = null; + ensureOverlay().then(function () { + if (overlayManager.active === dialog) { + overlayManager.close(dialog); + } + }); + }, + + renderPages() { + if (this.pdfDocument.isPureXfa) { + (0, _print_utils.getXfaHtmlForPrinting)(this.printContainer, this.pdfDocument); + return Promise.resolve(); + } + + const pageCount = this.pagesOverview.length; + + const renderNextPage = (resolve, reject) => { + this.throwIfInactive(); + + if (++this.currentPage >= pageCount) { + renderProgress(pageCount, pageCount, this.l10n); + resolve(); + return; + } + + const index = this.currentPage; + renderProgress(index, pageCount, this.l10n); + renderPage(this, this.pdfDocument, index + 1, this.pagesOverview[index], this._printResolution, this._optionalContentConfigPromise, this._printAnnotationStoragePromise).then(this.useRenderedPage.bind(this)).then(function () { + renderNextPage(resolve, reject); + }, reject); + }; + + return new Promise(renderNextPage); + }, + + useRenderedPage() { + this.throwIfInactive(); + const img = document.createElement("img"); + const scratchCanvas = this.scratchCanvas; + + if ("toBlob" in scratchCanvas) { + scratchCanvas.toBlob(function (blob) { + img.src = URL.createObjectURL(blob); + }); + } else { + img.src = scratchCanvas.toDataURL(); + } + + const wrapper = document.createElement("div"); + wrapper.className = "printedPage"; + wrapper.append(img); + this.printContainer.append(wrapper); + return new Promise(function (resolve, reject) { + img.onload = resolve; + img.onerror = reject; + }); + }, + + performPrint() { + this.throwIfInactive(); + return new Promise(resolve => { + setTimeout(() => { + if (!this.active) { + resolve(); + return; + } + + print.call(window); + setTimeout(resolve, 20); + }, 0); + }); + }, + + get active() { + return this === activeService; + }, + + throwIfInactive() { + if (!this.active) { + throw new Error("This print request was cancelled or completed."); + } + } + +}; +const print = window.print; + +window.print = function () { + if (activeService) { + console.warn("Ignored window.print() because of a pending print job."); + return; + } + + ensureOverlay().then(function () { + if (activeService) { + overlayManager.open(dialog); + } + }); + + try { + dispatchEvent("beforeprint"); + } finally { + if (!activeService) { + console.error("Expected print service to be initialized."); + ensureOverlay().then(function () { + if (overlayManager.active === dialog) { + overlayManager.close(dialog); + } + }); + return; + } + + const activeServiceOnEntry = activeService; + activeService.renderPages().then(function () { + return activeServiceOnEntry.performPrint(); + }).catch(function () {}).then(function () { + if (activeServiceOnEntry.active) { + abort(); + } + }); + } +}; + +function dispatchEvent(eventType) { + const event = document.createEvent("CustomEvent"); + event.initCustomEvent(eventType, false, false, "custom"); + window.dispatchEvent(event); +} + +function abort() { + if (activeService) { + activeService.destroy(); + dispatchEvent("afterprint"); + } +} + +function renderProgress(index, total, l10n) { + dialog ||= document.getElementById("printServiceDialog"); + const progress = Math.round(100 * index / total); + const progressBar = dialog.querySelector("progress"); + const progressPerc = dialog.querySelector(".relative-progress"); + progressBar.value = progress; + l10n.get("print_progress_percent", { + progress + }).then(msg => { + progressPerc.textContent = msg; + }); +} + +window.addEventListener("keydown", function (event) { + if (event.keyCode === 80 && (event.ctrlKey || event.metaKey) && !event.altKey && (!event.shiftKey || window.chrome || window.opera)) { + window.print(); + event.preventDefault(); + + if (event.stopImmediatePropagation) { + event.stopImmediatePropagation(); + } else { + event.stopPropagation(); + } + } +}, true); + +if ("onbeforeprint" in window) { + const stopPropagationIfNeeded = function (event) { + if (event.detail !== "custom" && event.stopImmediatePropagation) { + event.stopImmediatePropagation(); + } + }; + + window.addEventListener("beforeprint", stopPropagationIfNeeded); + window.addEventListener("afterprint", stopPropagationIfNeeded); +} + +let overlayPromise; + +function ensureOverlay() { + if (!overlayPromise) { + overlayManager = _app.PDFViewerApplication.overlayManager; + + if (!overlayManager) { + throw new Error("The overlay manager has not yet been initialized."); + } + + dialog ||= document.getElementById("printServiceDialog"); + overlayPromise = overlayManager.register(dialog, true); + document.getElementById("printCancel").onclick = abort; + dialog.addEventListener("close", abort); + } + + return overlayPromise; +} + +_app.PDFPrintServiceFactory.instance = { + supportsPrinting: true, + + createPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, printAnnotationStoragePromise, l10n) { + if (activeService) { + throw new Error("The print service is created and active."); + } + + activeService = new PDFPrintService(pdfDocument, pagesOverview, printContainer, printResolution, optionalContentConfigPromise, printAnnotationStoragePromise, l10n); + return activeService; + } + +}; + +/***/ }), +/* 49 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.getXfaHtmlForPrinting = getXfaHtmlForPrinting; + +var _pdfjsLib = __webpack_require__(5); + +var _pdf_link_service = __webpack_require__(3); + +var _xfa_layer_builder = __webpack_require__(38); + +function getXfaHtmlForPrinting(printContainer, pdfDocument) { + const xfaHtml = pdfDocument.allXfaHtml; + const linkService = new _pdf_link_service.SimpleLinkService(); + const scale = Math.round(_pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS * 100) / 100; + + for (const xfaPage of xfaHtml.children) { + const page = document.createElement("div"); + page.className = "xfaPrintedPage"; + printContainer.append(page); + const builder = new _xfa_layer_builder.XfaLayerBuilder({ + pageDiv: page, + pdfPage: null, + annotationStorage: pdfDocument.annotationStorage, + linkService, + xfaHtml: xfaPage + }); + const viewport = (0, _pdfjsLib.getXfaPageViewport)(xfaPage, { + scale + }); + builder.render(viewport, "print"); + } +} + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +var exports = __webpack_exports__; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "PDFViewerApplication", ({ + enumerable: true, + get: function () { + return _app.PDFViewerApplication; + } +})); +exports.PDFViewerApplicationConstants = void 0; +Object.defineProperty(exports, "PDFViewerApplicationOptions", ({ + enumerable: true, + get: function () { + return _app_options.AppOptions; + } +})); + +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 = '2.16.105'; +const pdfjsBuild = '172ccdbe5'; +const AppConstants = { + LinkTarget: _pdf_link_service.LinkTarget, + RenderingStates: _ui_utils.RenderingStates, + ScrollMode: _ui_utils.ScrollMode, + SpreadMode: _ui_utils.SpreadMode +}; +exports.PDFViewerApplicationConstants = AppConstants; +window.PDFViewerApplication = _app.PDFViewerApplication; +window.PDFViewerApplicationConstants = AppConstants; +window.PDFViewerApplicationOptions = _app_options.AppOptions; +; +; +{ + __webpack_require__(42); +} +; +{ + __webpack_require__(48); +} + +function getViewerConfiguration() { + let errorWrapper = null; + errorWrapper = { + container: document.getElementById("errorWrapper"), + errorMessage: document.getElementById("errorMessage"), + closeButton: document.getElementById("errorClose"), + errorMoreInfo: document.getElementById("errorMoreInfo"), + moreInfoButton: document.getElementById("errorShowMore"), + lessInfoButton: document.getElementById("errorShowLess") + }; + return { + appContainer: document.body, + mainContainer: document.getElementById("viewerContainer"), + viewerContainer: document.getElementById("viewer"), + toolbar: { + container: document.getElementById("toolbarViewer"), + numPages: document.getElementById("numPages"), + pageNumber: document.getElementById("pageNumber"), + scaleSelect: document.getElementById("scaleSelect"), + customScaleOption: document.getElementById("customScaleOption"), + previous: document.getElementById("previous"), + next: document.getElementById("next"), + zoomIn: document.getElementById("zoomIn"), + zoomOut: document.getElementById("zoomOut"), + viewFind: document.getElementById("viewFind"), + openFile: document.getElementById("openFile"), + print: document.getElementById("print"), + editorFreeTextButton: document.getElementById("editorFreeText"), + editorFreeTextParamsToolbar: document.getElementById("editorFreeTextParamsToolbar"), + editorInkButton: document.getElementById("editorInk"), + editorInkParamsToolbar: document.getElementById("editorInkParamsToolbar"), + presentationModeButton: document.getElementById("presentationMode"), + download: document.getElementById("download"), + viewBookmark: document.getElementById("viewBookmark") + }, + secondaryToolbar: { + toolbar: document.getElementById("secondaryToolbar"), + toggleButton: document.getElementById("secondaryToolbarToggle"), + presentationModeButton: document.getElementById("secondaryPresentationMode"), + openFileButton: document.getElementById("secondaryOpenFile"), + printButton: document.getElementById("secondaryPrint"), + downloadButton: document.getElementById("secondaryDownload"), + viewBookmarkButton: document.getElementById("secondaryViewBookmark"), + firstPageButton: document.getElementById("firstPage"), + lastPageButton: document.getElementById("lastPage"), + pageRotateCwButton: document.getElementById("pageRotateCw"), + pageRotateCcwButton: document.getElementById("pageRotateCcw"), + cursorSelectToolButton: document.getElementById("cursorSelectTool"), + cursorHandToolButton: document.getElementById("cursorHandTool"), + scrollPageButton: document.getElementById("scrollPage"), + scrollVerticalButton: document.getElementById("scrollVertical"), + scrollHorizontalButton: document.getElementById("scrollHorizontal"), + scrollWrappedButton: document.getElementById("scrollWrapped"), + spreadNoneButton: document.getElementById("spreadNone"), + spreadOddButton: document.getElementById("spreadOdd"), + spreadEvenButton: document.getElementById("spreadEven"), + documentPropertiesButton: document.getElementById("documentProperties") + }, + sidebar: { + outerContainer: document.getElementById("outerContainer"), + sidebarContainer: document.getElementById("sidebarContainer"), + toggleButton: document.getElementById("sidebarToggle"), + thumbnailButton: document.getElementById("viewThumbnail"), + outlineButton: document.getElementById("viewOutline"), + attachmentsButton: document.getElementById("viewAttachments"), + layersButton: document.getElementById("viewLayers"), + thumbnailView: document.getElementById("thumbnailView"), + outlineView: document.getElementById("outlineView"), + attachmentsView: document.getElementById("attachmentsView"), + layersView: document.getElementById("layersView"), + outlineOptionsContainer: document.getElementById("outlineOptionsContainer"), + currentOutlineItemButton: document.getElementById("currentOutlineItem") + }, + sidebarResizer: { + outerContainer: document.getElementById("outerContainer"), + resizer: document.getElementById("sidebarResizer") + }, + findBar: { + bar: document.getElementById("findbar"), + toggleButton: document.getElementById("viewFind"), + findField: document.getElementById("findInput"), + highlightAllCheckbox: document.getElementById("findHighlightAll"), + caseSensitiveCheckbox: document.getElementById("findMatchCase"), + matchDiacriticsCheckbox: document.getElementById("findMatchDiacritics"), + entireWordCheckbox: document.getElementById("findEntireWord"), + findMsg: document.getElementById("findMsg"), + findResultsCount: document.getElementById("findResultsCount"), + findPreviousButton: document.getElementById("findPrevious"), + findNextButton: document.getElementById("findNext") + }, + passwordOverlay: { + dialog: document.getElementById("passwordDialog"), + label: document.getElementById("passwordText"), + input: document.getElementById("password"), + submitButton: document.getElementById("passwordSubmit"), + cancelButton: document.getElementById("passwordCancel") + }, + documentProperties: { + dialog: document.getElementById("documentPropertiesDialog"), + closeButton: document.getElementById("documentPropertiesClose"), + fields: { + fileName: document.getElementById("fileNameField"), + fileSize: document.getElementById("fileSizeField"), + title: document.getElementById("titleField"), + author: document.getElementById("authorField"), + subject: document.getElementById("subjectField"), + keywords: document.getElementById("keywordsField"), + creationDate: document.getElementById("creationDateField"), + modificationDate: document.getElementById("modificationDateField"), + creator: document.getElementById("creatorField"), + producer: document.getElementById("producerField"), + version: document.getElementById("versionField"), + pageCount: document.getElementById("pageCountField"), + pageSize: document.getElementById("pageSizeField"), + linearized: document.getElementById("linearizedField") + } + }, + annotationEditorParams: { + editorFreeTextFontSize: document.getElementById("editorFreeTextFontSize"), + editorFreeTextColor: document.getElementById("editorFreeTextColor"), + editorInkColor: document.getElementById("editorInkColor"), + editorInkThickness: document.getElementById("editorInkThickness"), + editorInkOpacity: document.getElementById("editorInkOpacity") + }, + errorWrapper, + printContainer: document.getElementById("printContainer"), + openFileInput: document.getElementById("fileInput"), + debuggerScriptPath: "./debugger.js" + }; +} + +function webViewerLoad() { + const config = getViewerConfiguration(); + const event = document.createEvent("CustomEvent"); + event.initCustomEvent("webviewerloaded", true, true, { + source: window + }); + + try { + parent.document.dispatchEvent(event); + } catch (ex) { + console.error(`webviewerloaded: ${ex}`); + document.dispatchEvent(event); + } + + _app.PDFViewerApplication.run(config); +} + +document.blockUnblockOnload?.(true); + +if (document.readyState === "interactive" || document.readyState === "complete") { + webViewerLoad(); +} else { + document.addEventListener("DOMContentLoaded", webViewerLoad, true); +} +})(); + +/******/ })() +; +//# sourceMappingURL=viewer.js.map \ No newline at end of file diff --git a/static/js/pdf-js/web/viewer.js.map b/static/js/pdf-js/web/viewer.js.map new file mode 100644 index 0000000..3879a8d --- /dev/null +++ b/static/js/pdf-js/web/viewer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"viewer.js","mappings":"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","sources":["webpack://pdf.js/web/ui_utils.js","webpack://pdf.js/web/app_options.js","webpack://pdf.js/web/pdf_link_service.js","webpack://pdf.js/web/app.js","webpack://pdf.js/web/pdfjs.js","webpack://pdf.js/web/event_utils.js","webpack://pdf.js/web/pdf_cursor_tools.js","webpack://pdf.js/web/grab_to_pan.js","webpack://pdf.js/web/annotation_editor_params.js","webpack://pdf.js/web/overlay_manager.js","webpack://pdf.js/web/password_prompt.js","webpack://pdf.js/web/pdf_attachment_viewer.js","webpack://pdf.js/web/base_tree_viewer.js","webpack://pdf.js/web/pdf_document_properties.js","webpack://pdf.js/web/pdf_find_bar.js","webpack://pdf.js/web/pdf_find_controller.js","webpack://pdf.js/web/pdf_find_utils.js","webpack://pdf.js/web/pdf_history.js","webpack://pdf.js/web/pdf_layer_viewer.js","webpack://pdf.js/web/pdf_outline_viewer.js","webpack://pdf.js/web/pdf_presentation_mode.js","webpack://pdf.js/web/pdf_rendering_queue.js","webpack://pdf.js/web/pdf_scripting_manager.js","webpack://pdf.js/web/pdf_sidebar.js","webpack://pdf.js/web/pdf_sidebar_resizer.js","webpack://pdf.js/web/pdf_thumbnail_viewer.js","webpack://pdf.js/web/pdf_thumbnail_view.js","webpack://pdf.js/web/pdf_viewer.js","webpack://pdf.js/web/base_viewer.js","webpack://pdf.js/web/annotation_editor_layer_builder.js","webpack://pdf.js/web/l10n_utils.js","webpack://pdf.js/web/annotation_layer_builder.js","webpack://pdf.js/web/pdf_page_view.js","webpack://pdf.js/web/text_accessibility.js","webpack://pdf.js/web/struct_tree_layer_builder.js","webpack://pdf.js/web/text_highlighter.js","webpack://pdf.js/web/text_layer_builder.js","webpack://pdf.js/web/xfa_layer_builder.js","webpack://pdf.js/web/secondary_toolbar.js","webpack://pdf.js/web/toolbar.js","webpack://pdf.js/web/view_history.js","webpack://pdf.js/web/genericcom.js","webpack://pdf.js/web/preferences.js","webpack://pdf.js/web/download_manager.js","webpack://pdf.js/web/genericl10n.js","webpack://pdf.js/external/webL10n/l10n.js","webpack://pdf.js/web/generic_scripting.js","webpack://pdf.js/web/pdf_print_service.js","webpack://pdf.js/web/print_utils.js","webpack://pdf.js/webpack/bootstrap","webpack://pdf.js/web/viewer.js"],"sourcesContent":["/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst DEFAULT_SCALE_VALUE = \"auto\";\nconst DEFAULT_SCALE = 1.0;\nconst DEFAULT_SCALE_DELTA = 1.1;\nconst MIN_SCALE = 0.1;\nconst MAX_SCALE = 10.0;\nconst UNKNOWN_SCALE = 0;\nconst MAX_AUTO_SCALE = 1.25;\nconst SCROLLBAR_PADDING = 40;\nconst VERTICAL_PADDING = 5;\n\nconst RenderingStates = {\n INITIAL: 0,\n RUNNING: 1,\n PAUSED: 2,\n FINISHED: 3,\n};\n\nconst PresentationModeState = {\n UNKNOWN: 0,\n NORMAL: 1,\n CHANGING: 2,\n FULLSCREEN: 3,\n};\n\nconst SidebarView = {\n UNKNOWN: -1,\n NONE: 0,\n THUMBS: 1, // Default value.\n OUTLINE: 2,\n ATTACHMENTS: 3,\n LAYERS: 4,\n};\n\nconst RendererType =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n ? {\n CANVAS: \"canvas\",\n SVG: \"svg\",\n }\n : null;\n\nconst TextLayerMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_ENHANCE: 2,\n};\n\nconst ScrollMode = {\n UNKNOWN: -1,\n VERTICAL: 0, // Default value.\n HORIZONTAL: 1,\n WRAPPED: 2,\n PAGE: 3,\n};\n\nconst SpreadMode = {\n UNKNOWN: -1,\n NONE: 0, // Default value.\n ODD: 1,\n EVEN: 2,\n};\n\n// Used by `PDFViewerApplication`, and by the API unit-tests.\nconst AutoPrintRegExp = /\\bprint\\s*\\(/;\n\n/**\n * Scale factors for the canvas, necessary with HiDPI displays.\n */\nclass OutputScale {\n constructor() {\n const pixelRatio = window.devicePixelRatio || 1;\n\n /**\n * @type {number} Horizontal scale.\n */\n this.sx = pixelRatio;\n\n /**\n * @type {number} Vertical scale.\n */\n this.sy = pixelRatio;\n }\n\n /**\n * @type {boolean} Returns `true` when scaling is required, `false` otherwise.\n */\n get scaled() {\n return this.sx !== 1 || this.sy !== 1;\n }\n}\n\n/**\n * Scrolls specified element into view of its parent.\n * @param {Object} element - The element to be visible.\n * @param {Object} spot - An object with optional top and left properties,\n * specifying the offset from the top left edge.\n * @param {boolean} [scrollMatches] - When scrolling search results into view,\n * ignore elements that either: Contains marked content identifiers,\n * or have the CSS-rule `overflow: hidden;` set. The default value is `false`.\n */\nfunction scrollIntoView(element, spot, scrollMatches = false) {\n // Assuming offsetParent is available (it's not available when viewer is in\n // hidden iframe or object). We have to scroll: if the offsetParent is not set\n // producing the error. See also animationStarted.\n let parent = element.offsetParent;\n if (!parent) {\n console.error(\"offsetParent is not set -- cannot scroll\");\n return;\n }\n let offsetY = element.offsetTop + element.clientTop;\n let offsetX = element.offsetLeft + element.clientLeft;\n while (\n (parent.clientHeight === parent.scrollHeight &&\n parent.clientWidth === parent.scrollWidth) ||\n (scrollMatches &&\n (parent.classList.contains(\"markedContent\") ||\n getComputedStyle(parent).overflow === \"hidden\"))\n ) {\n offsetY += parent.offsetTop;\n offsetX += parent.offsetLeft;\n\n parent = parent.offsetParent;\n if (!parent) {\n return; // no need to scroll\n }\n }\n if (spot) {\n if (spot.top !== undefined) {\n offsetY += spot.top;\n }\n if (spot.left !== undefined) {\n offsetX += spot.left;\n parent.scrollLeft = offsetX;\n }\n }\n parent.scrollTop = offsetY;\n}\n\n/**\n * Helper function to start monitoring the scroll event and converting them into\n * PDF.js friendly one: with scroll debounce and scroll direction.\n */\nfunction watchScroll(viewAreaElement, callback) {\n const debounceScroll = function (evt) {\n if (rAF) {\n return;\n }\n // schedule an invocation of scroll for next animation frame.\n rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {\n rAF = null;\n\n const currentX = viewAreaElement.scrollLeft;\n const lastX = state.lastX;\n if (currentX !== lastX) {\n state.right = currentX > lastX;\n }\n state.lastX = currentX;\n const currentY = viewAreaElement.scrollTop;\n const lastY = state.lastY;\n if (currentY !== lastY) {\n state.down = currentY > lastY;\n }\n state.lastY = currentY;\n callback(state);\n });\n };\n\n const state = {\n right: true,\n down: true,\n lastX: viewAreaElement.scrollLeft,\n lastY: viewAreaElement.scrollTop,\n _eventHandler: debounceScroll,\n };\n\n let rAF = null;\n viewAreaElement.addEventListener(\"scroll\", debounceScroll, true);\n return state;\n}\n\n/**\n * Helper function to parse query string (e.g. ?param1=value¶m2=...).\n * @param {string}\n * @returns {Map}\n */\nfunction parseQueryString(query) {\n const params = new Map();\n for (const [key, value] of new URLSearchParams(query)) {\n params.set(key.toLowerCase(), value);\n }\n return params;\n}\n\nconst NullCharactersRegExp = /\\x00/g;\nconst InvisibleCharactersRegExp = /[\\x01-\\x1F]/g;\n\n/**\n * @param {string} str\n * @param {boolean} [replaceInvisible]\n */\nfunction removeNullCharacters(str, replaceInvisible = false) {\n if (typeof str !== \"string\") {\n console.error(`The argument must be a string.`);\n return str;\n }\n if (replaceInvisible) {\n str = str.replace(InvisibleCharactersRegExp, \" \");\n }\n return str.replace(NullCharactersRegExp, \"\");\n}\n\n/**\n * Use binary search to find the index of the first item in a given array which\n * passes a given condition. The items are expected to be sorted in the sense\n * that if the condition is true for one item in the array, then it is also true\n * for all following items.\n *\n * @returns {number} Index of the first array element to pass the test,\n * or |items.length| if no such element exists.\n */\nfunction binarySearchFirstItem(items, condition, start = 0) {\n let minIndex = start;\n let maxIndex = items.length - 1;\n\n if (maxIndex < 0 || !condition(items[maxIndex])) {\n return items.length;\n }\n if (condition(items[minIndex])) {\n return minIndex;\n }\n\n while (minIndex < maxIndex) {\n const currentIndex = (minIndex + maxIndex) >> 1;\n const currentItem = items[currentIndex];\n if (condition(currentItem)) {\n maxIndex = currentIndex;\n } else {\n minIndex = currentIndex + 1;\n }\n }\n return minIndex; /* === maxIndex */\n}\n\n/**\n * Approximates float number as a fraction using Farey sequence (max order\n * of 8).\n * @param {number} x - Positive float number.\n * @returns {Array} Estimated fraction: the first array item is a numerator,\n * the second one is a denominator.\n */\nfunction approximateFraction(x) {\n // Fast paths for int numbers or their inversions.\n if (Math.floor(x) === x) {\n return [x, 1];\n }\n const xinv = 1 / x;\n const limit = 8;\n if (xinv > limit) {\n return [1, limit];\n } else if (Math.floor(xinv) === xinv) {\n return [1, xinv];\n }\n\n const x_ = x > 1 ? xinv : x;\n // a/b and c/d are neighbours in Farey sequence.\n let a = 0,\n b = 1,\n c = 1,\n d = 1;\n // Limiting search to order 8.\n while (true) {\n // Generating next term in sequence (order of q).\n const p = a + c,\n q = b + d;\n if (q > limit) {\n break;\n }\n if (x_ <= p / q) {\n c = p;\n d = q;\n } else {\n a = p;\n b = q;\n }\n }\n let result;\n // Select closest of the neighbours to x.\n if (x_ - a / b < c / d - x_) {\n result = x_ === x ? [a, b] : [b, a];\n } else {\n result = x_ === x ? [c, d] : [d, c];\n }\n return result;\n}\n\nfunction roundToDivide(x, div) {\n const r = x % div;\n return r === 0 ? x : Math.round(x - r + div);\n}\n\n/**\n * @typedef {Object} GetPageSizeInchesParameters\n * @property {number[]} view\n * @property {number} userUnit\n * @property {number} rotate\n */\n\n/**\n * @typedef {Object} PageSize\n * @property {number} width - In inches.\n * @property {number} height - In inches.\n */\n\n/**\n * Gets the size of the specified page, converted from PDF units to inches.\n * @param {GetPageSizeInchesParameters} params\n * @returns {PageSize}\n */\nfunction getPageSizeInches({ view, userUnit, rotate }) {\n const [x1, y1, x2, y2] = view;\n // We need to take the page rotation into account as well.\n const changeOrientation = rotate % 180 !== 0;\n\n const width = ((x2 - x1) / 72) * userUnit;\n const height = ((y2 - y1) / 72) * userUnit;\n\n return {\n width: changeOrientation ? height : width,\n height: changeOrientation ? width : height,\n };\n}\n\n/**\n * Helper function for getVisibleElements.\n *\n * @param {number} index - initial guess at the first visible element\n * @param {Array} views - array of pages, into which `index` is an index\n * @param {number} top - the top of the scroll pane\n * @returns {number} less than or equal to `index` that is definitely at or\n * before the first visible element in `views`, but not by too much. (Usually,\n * this will be the first element in the first partially visible row in\n * `views`, although sometimes it goes back one row further.)\n */\nfunction backtrackBeforeAllVisibleElements(index, views, top) {\n // binarySearchFirstItem's assumption is that the input is ordered, with only\n // one index where the conditions flips from false to true: [false ...,\n // true...]. With vertical scrolling and spreads, it is possible to have\n // [false ..., true, false, true ...]. With wrapped scrolling we can have a\n // similar sequence, with many more mixed true and false in the middle.\n //\n // So there is no guarantee that the binary search yields the index of the\n // first visible element. It could have been any of the other visible elements\n // that were preceded by a hidden element.\n\n // Of course, if either this element or the previous (hidden) element is also\n // the first element, there's nothing to worry about.\n if (index < 2) {\n return index;\n }\n\n // That aside, the possible cases are represented below.\n //\n // **** = fully hidden\n // A*B* = mix of partially visible and/or hidden pages\n // CDEF = fully visible\n //\n // (1) Binary search could have returned A, in which case we can stop.\n // (2) Binary search could also have returned B, in which case we need to\n // check the whole row.\n // (3) Binary search could also have returned C, in which case we need to\n // check the whole previous row.\n //\n // There's one other possibility:\n //\n // **** = fully hidden\n // ABCD = mix of fully and/or partially visible pages\n //\n // (4) Binary search could only have returned A.\n\n // Initially assume that we need to find the beginning of the current row\n // (case 1, 2, or 4), which means finding a page that is above the current\n // page's top. If the found page is partially visible, we're definitely not in\n // case 3, and this assumption is correct.\n let elt = views[index].div;\n let pageTop = elt.offsetTop + elt.clientTop;\n\n if (pageTop >= top) {\n // The found page is fully visible, so we're actually either in case 3 or 4,\n // and unfortunately we can't tell the difference between them without\n // scanning the entire previous row, so we just conservatively assume that\n // we do need to backtrack to that row. In both cases, the previous page is\n // in the previous row, so use its top instead.\n elt = views[index - 1].div;\n pageTop = elt.offsetTop + elt.clientTop;\n }\n\n // Now we backtrack to the first page that still has its bottom below\n // `pageTop`, which is the top of a page in the first visible row (unless\n // we're in case 4, in which case it's the row before that).\n // `index` is found by binary search, so the page at `index - 1` is\n // invisible and we can start looking for potentially visible pages from\n // `index - 2`. (However, if this loop terminates on its first iteration,\n // which is the case when pages are stacked vertically, `index` should remain\n // unchanged, so we use a distinct loop variable.)\n for (let i = index - 2; i >= 0; --i) {\n elt = views[i].div;\n if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) {\n // We have reached the previous row, so stop now.\n // This loop is expected to terminate relatively quickly because the\n // number of pages per row is expected to be small.\n break;\n }\n index = i;\n }\n return index;\n}\n\n/**\n * @typedef {Object} GetVisibleElementsParameters\n * @property {HTMLElement} scrollEl - A container that can possibly scroll.\n * @property {Array} views - Objects with a `div` property that contains an\n * HTMLElement, which should all be descendants of `scrollEl` satisfying the\n * relevant layout assumptions.\n * @property {boolean} sortByVisibility - If `true`, the returned elements are\n * sorted in descending order of the percent of their padding box that is\n * visible. The default value is `false`.\n * @property {boolean} horizontal - If `true`, the elements are assumed to be\n * laid out horizontally instead of vertically. The default value is `false`.\n * @property {boolean} rtl - If `true`, the `scrollEl` container is assumed to\n * be in right-to-left mode. The default value is `false`.\n */\n\n/**\n * Generic helper to find out what elements are visible within a scroll pane.\n *\n * Well, pretty generic. There are some assumptions placed on the elements\n * referenced by `views`:\n * - If `horizontal`, no left of any earlier element is to the right of the\n * left of any later element.\n * - Otherwise, `views` can be split into contiguous rows where, within a row,\n * no top of any element is below the bottom of any other element, and\n * between rows, no bottom of any element in an earlier row is below the\n * top of any element in a later row.\n *\n * (Here, top, left, etc. all refer to the padding edge of the element in\n * question. For pages, that ends up being equivalent to the bounding box of the\n * rendering canvas. Earlier and later refer to index in `views`, not page\n * layout.)\n *\n * @param {GetVisibleElementsParameters}\n * @returns {Object} `{ first, last, views: [{ id, x, y, view, percent }] }`\n */\nfunction getVisibleElements({\n scrollEl,\n views,\n sortByVisibility = false,\n horizontal = false,\n rtl = false,\n}) {\n const top = scrollEl.scrollTop,\n bottom = top + scrollEl.clientHeight;\n const left = scrollEl.scrollLeft,\n right = left + scrollEl.clientWidth;\n\n // Throughout this \"generic\" function, comments will assume we're working with\n // PDF document pages, which is the most important and complex case. In this\n // case, the visible elements we're actually interested is the page canvas,\n // which is contained in a wrapper which adds no padding/border/margin, which\n // is itself contained in `view.div` which adds no padding (but does add a\n // border). So, as specified in this function's doc comment, this function\n // does all of its work on the padding edge of the provided views, starting at\n // offsetLeft/Top (which includes margin) and adding clientLeft/Top (which is\n // the border). Adding clientWidth/Height gets us the bottom-right corner of\n // the padding edge.\n function isElementBottomAfterViewTop(view) {\n const element = view.div;\n const elementBottom =\n element.offsetTop + element.clientTop + element.clientHeight;\n return elementBottom > top;\n }\n function isElementNextAfterViewHorizontally(view) {\n const element = view.div;\n const elementLeft = element.offsetLeft + element.clientLeft;\n const elementRight = elementLeft + element.clientWidth;\n return rtl ? elementLeft < right : elementRight > left;\n }\n\n const visible = [],\n ids = new Set(),\n numViews = views.length;\n let firstVisibleElementInd = binarySearchFirstItem(\n views,\n horizontal\n ? isElementNextAfterViewHorizontally\n : isElementBottomAfterViewTop\n );\n\n // Please note the return value of the `binarySearchFirstItem` function when\n // no valid element is found (hence the `firstVisibleElementInd` check below).\n if (\n firstVisibleElementInd > 0 &&\n firstVisibleElementInd < numViews &&\n !horizontal\n ) {\n // In wrapped scrolling (or vertical scrolling with spreads), with some page\n // sizes, isElementBottomAfterViewTop doesn't satisfy the binary search\n // condition: there can be pages with bottoms above the view top between\n // pages with bottoms below. This function detects and corrects that error;\n // see it for more comments.\n firstVisibleElementInd = backtrackBeforeAllVisibleElements(\n firstVisibleElementInd,\n views,\n top\n );\n }\n\n // lastEdge acts as a cutoff for us to stop looping, because we know all\n // subsequent pages will be hidden.\n //\n // When using wrapped scrolling or vertical scrolling with spreads, we can't\n // simply stop the first time we reach a page below the bottom of the view;\n // the tops of subsequent pages on the same row could still be visible. In\n // horizontal scrolling, we don't have that issue, so we can stop as soon as\n // we pass `right`, without needing the code below that handles the -1 case.\n let lastEdge = horizontal ? right : -1;\n\n for (let i = firstVisibleElementInd; i < numViews; i++) {\n const view = views[i],\n element = view.div;\n const currentWidth = element.offsetLeft + element.clientLeft;\n const currentHeight = element.offsetTop + element.clientTop;\n const viewWidth = element.clientWidth,\n viewHeight = element.clientHeight;\n const viewRight = currentWidth + viewWidth;\n const viewBottom = currentHeight + viewHeight;\n\n if (lastEdge === -1) {\n // As commented above, this is only needed in non-horizontal cases.\n // Setting lastEdge to the bottom of the first page that is partially\n // visible ensures that the next page fully below lastEdge is on the\n // next row, which has to be fully hidden along with all subsequent rows.\n if (viewBottom >= bottom) {\n lastEdge = viewBottom;\n }\n } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) {\n break;\n }\n\n if (\n viewBottom <= top ||\n currentHeight >= bottom ||\n viewRight <= left ||\n currentWidth >= right\n ) {\n continue;\n }\n\n const hiddenHeight =\n Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom);\n const hiddenWidth =\n Math.max(0, left - currentWidth) + Math.max(0, viewRight - right);\n\n const fractionHeight = (viewHeight - hiddenHeight) / viewHeight,\n fractionWidth = (viewWidth - hiddenWidth) / viewWidth;\n const percent = (fractionHeight * fractionWidth * 100) | 0;\n\n visible.push({\n id: view.id,\n x: currentWidth,\n y: currentHeight,\n view,\n percent,\n widthPercent: (fractionWidth * 100) | 0,\n });\n ids.add(view.id);\n }\n\n const first = visible[0],\n last = visible.at(-1);\n\n if (sortByVisibility) {\n visible.sort(function (a, b) {\n const pc = a.percent - b.percent;\n if (Math.abs(pc) > 0.001) {\n return -pc;\n }\n return a.id - b.id; // ensure stability\n });\n }\n return { first, last, views: visible, ids };\n}\n\n/**\n * Event handler to suppress context menu.\n */\nfunction noContextMenuHandler(evt) {\n evt.preventDefault();\n}\n\nfunction normalizeWheelEventDirection(evt) {\n let delta = Math.hypot(evt.deltaX, evt.deltaY);\n const angle = Math.atan2(evt.deltaY, evt.deltaX);\n if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) {\n // All that is left-up oriented has to change the sign.\n delta = -delta;\n }\n return delta;\n}\n\nfunction normalizeWheelEventDelta(evt) {\n let delta = normalizeWheelEventDirection(evt);\n\n const MOUSE_DOM_DELTA_PIXEL_MODE = 0;\n const MOUSE_DOM_DELTA_LINE_MODE = 1;\n const MOUSE_PIXELS_PER_LINE = 30;\n const MOUSE_LINES_PER_PAGE = 30;\n\n // Converts delta to per-page units\n if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) {\n delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE;\n } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) {\n delta /= MOUSE_LINES_PER_PAGE;\n }\n return delta;\n}\n\nfunction isValidRotation(angle) {\n return Number.isInteger(angle) && angle % 90 === 0;\n}\n\nfunction isValidScrollMode(mode) {\n return (\n Number.isInteger(mode) &&\n Object.values(ScrollMode).includes(mode) &&\n mode !== ScrollMode.UNKNOWN\n );\n}\n\nfunction isValidSpreadMode(mode) {\n return (\n Number.isInteger(mode) &&\n Object.values(SpreadMode).includes(mode) &&\n mode !== SpreadMode.UNKNOWN\n );\n}\n\nfunction isPortraitOrientation(size) {\n return size.width <= size.height;\n}\n\n/**\n * Promise that is resolved when DOM window becomes visible.\n */\nconst animationStarted = new Promise(function (resolve) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"LIB\") &&\n typeof window === \"undefined\"\n ) {\n // Prevent \"ReferenceError: window is not defined\" errors when running the\n // unit-tests in Node.js environments.\n setTimeout(resolve, 20);\n return;\n }\n window.requestAnimationFrame(resolve);\n});\n\nconst docStyle =\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"LIB\") &&\n typeof document === \"undefined\"\n ? null\n : document.documentElement.style;\n\nfunction clamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\n\nclass ProgressBar {\n #classList = null;\n\n #percent = 0;\n\n #visible = true;\n\n constructor(id) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n arguments.length > 1\n ) {\n throw new Error(\n \"ProgressBar no longer accepts any additional options, \" +\n \"please use CSS rules to modify its appearance instead.\"\n );\n }\n const bar = document.getElementById(id);\n this.#classList = bar.classList;\n }\n\n get percent() {\n return this.#percent;\n }\n\n set percent(val) {\n this.#percent = clamp(val, 0, 100);\n\n if (isNaN(val)) {\n this.#classList.add(\"indeterminate\");\n return;\n }\n this.#classList.remove(\"indeterminate\");\n\n docStyle.setProperty(\"--progressBar-percent\", `${this.#percent}%`);\n }\n\n setWidth(viewer) {\n if (!viewer) {\n return;\n }\n const container = viewer.parentNode;\n const scrollbarWidth = container.offsetWidth - viewer.offsetWidth;\n if (scrollbarWidth > 0) {\n docStyle.setProperty(\"--progressBar-end-offset\", `${scrollbarWidth}px`);\n }\n }\n\n hide() {\n if (!this.#visible) {\n return;\n }\n this.#visible = false;\n this.#classList.add(\"hidden\");\n }\n\n show() {\n if (this.#visible) {\n return;\n }\n this.#visible = true;\n this.#classList.remove(\"hidden\");\n }\n}\n\n/**\n * Get the active or focused element in current DOM.\n *\n * Recursively search for the truly active or focused element in case there are\n * shadow DOMs.\n *\n * @returns {Element} the truly active or focused element.\n */\nfunction getActiveOrFocusedElement() {\n let curRoot = document;\n let curActiveOrFocused =\n curRoot.activeElement || curRoot.querySelector(\":focus\");\n\n while (curActiveOrFocused?.shadowRoot) {\n curRoot = curActiveOrFocused.shadowRoot;\n curActiveOrFocused =\n curRoot.activeElement || curRoot.querySelector(\":focus\");\n }\n\n return curActiveOrFocused;\n}\n\n/**\n * Converts API PageLayout values to the format used by `BaseViewer`.\n * NOTE: This is supported to the extent that the viewer implements the\n * necessary Scroll/Spread modes (since SinglePage, TwoPageLeft,\n * and TwoPageRight all suggests using non-continuous scrolling).\n * @param {string} mode - The API PageLayout value.\n * @returns {Object}\n */\nfunction apiPageLayoutToViewerModes(layout) {\n let scrollMode = ScrollMode.VERTICAL,\n spreadMode = SpreadMode.NONE;\n\n switch (layout) {\n case \"SinglePage\":\n scrollMode = ScrollMode.PAGE;\n break;\n case \"OneColumn\":\n break;\n case \"TwoPageLeft\":\n scrollMode = ScrollMode.PAGE;\n /* falls through */\n case \"TwoColumnLeft\":\n spreadMode = SpreadMode.ODD;\n break;\n case \"TwoPageRight\":\n scrollMode = ScrollMode.PAGE;\n /* falls through */\n case \"TwoColumnRight\":\n spreadMode = SpreadMode.EVEN;\n break;\n }\n return { scrollMode, spreadMode };\n}\n\n/**\n * Converts API PageMode values to the format used by `PDFSidebar`.\n * NOTE: There's also a \"FullScreen\" parameter which is not possible to support,\n * since the Fullscreen API used in browsers requires that entering\n * fullscreen mode only occurs as a result of a user-initiated event.\n * @param {string} mode - The API PageMode value.\n * @returns {number} A value from {SidebarView}.\n */\nfunction apiPageModeToSidebarView(mode) {\n switch (mode) {\n case \"UseNone\":\n return SidebarView.NONE;\n case \"UseThumbs\":\n return SidebarView.THUMBS;\n case \"UseOutlines\":\n return SidebarView.OUTLINE;\n case \"UseAttachments\":\n return SidebarView.ATTACHMENTS;\n case \"UseOC\":\n return SidebarView.LAYERS;\n }\n return SidebarView.NONE; // Default value.\n}\n\nexport {\n animationStarted,\n apiPageLayoutToViewerModes,\n apiPageModeToSidebarView,\n approximateFraction,\n AutoPrintRegExp,\n backtrackBeforeAllVisibleElements, // only exported for testing\n binarySearchFirstItem,\n DEFAULT_SCALE,\n DEFAULT_SCALE_DELTA,\n DEFAULT_SCALE_VALUE,\n docStyle,\n getActiveOrFocusedElement,\n getPageSizeInches,\n getVisibleElements,\n isPortraitOrientation,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n MAX_AUTO_SCALE,\n MAX_SCALE,\n MIN_SCALE,\n noContextMenuHandler,\n normalizeWheelEventDelta,\n normalizeWheelEventDirection,\n OutputScale,\n parseQueryString,\n PresentationModeState,\n ProgressBar,\n removeNullCharacters,\n RendererType,\n RenderingStates,\n roundToDivide,\n SCROLLBAR_PADDING,\n scrollIntoView,\n ScrollMode,\n SidebarView,\n SpreadMode,\n TextLayerMode,\n UNKNOWN_SCALE,\n VERTICAL_PADDING,\n watchScroll,\n};\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst compatibilityParams = Object.create(null);\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"LIB\") &&\n typeof navigator === \"undefined\"\n ) {\n globalThis.navigator = Object.create(null);\n }\n const userAgent = navigator.userAgent || \"\";\n const platform = navigator.platform || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 1;\n\n const isAndroid = /Android/.test(userAgent);\n const isIOS =\n /\\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) ||\n (platform === \"MacIntel\" && maxTouchPoints > 1);\n\n // Limit canvas size to 5 mega-pixels on mobile.\n // Support: Android, iOS\n (function checkCanvasSizeLimitation() {\n if (isIOS || isAndroid) {\n compatibilityParams.maxCanvasPixels = 5242880;\n }\n })();\n}\n\nconst OptionKind = {\n VIEWER: 0x02,\n API: 0x04,\n WORKER: 0x08,\n PREFERENCE: 0x80,\n};\n\n/**\n * NOTE: These options are used to generate the `default_preferences.json` file,\n * see `OptionKind.PREFERENCE`, hence the values below must use only\n * primitive types and cannot rely on any imported types.\n */\nconst defaultOptions = {\n annotationEditorMode: {\n /** @type {boolean} */\n value:\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ? 0\n : -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n annotationMode: {\n /** @type {number} */\n value: 2,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n cursorToolOnLoad: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n defaultZoomValue: {\n /** @type {string} */\n value: \"\",\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n disableHistory: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER,\n },\n disablePageLabels: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enablePermissions: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enablePrintAutoRotate: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n enableScripting: {\n /** @type {boolean} */\n value: typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\"),\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n externalLinkRel: {\n /** @type {string} */\n value: \"noopener noreferrer nofollow\",\n kind: OptionKind.VIEWER,\n },\n externalLinkTarget: {\n /** @type {number} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n historyUpdateUrl: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n ignoreDestinationZoom: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n imageResourcesPath: {\n /** @type {string} */\n value: \"./images/\",\n kind: OptionKind.VIEWER,\n },\n maxCanvasPixels: {\n /** @type {number} */\n value: 16777216,\n kind: OptionKind.VIEWER,\n },\n forcePageColors: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n pageColorsBackground: {\n /** @type {string} */\n value: \"Canvas\",\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n pageColorsForeground: {\n /** @type {string} */\n value: \"CanvasText\",\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n pdfBugEnabled: {\n /** @type {boolean} */\n value: typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\"),\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n printResolution: {\n /** @type {number} */\n value: 150,\n kind: OptionKind.VIEWER,\n },\n sidebarViewOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n scrollModeOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n spreadModeOnLoad: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n textLayerMode: {\n /** @type {number} */\n value: 1,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n useOnlyCssZoom: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n viewerCssTheme: {\n /** @type {number} */\n value: typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\") ? 2 : 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n viewOnLoad: {\n /** @type {boolean} */\n value: 0,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n },\n\n cMapPacked: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API,\n },\n cMapUrl: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../external/bcmaps/\"\n : \"../web/cmaps/\",\n kind: OptionKind.API,\n },\n disableAutoFetch: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableFontFace: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableRange: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n disableStream: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n docBaseUrl: {\n /** @type {string} */\n value: \"\",\n kind: OptionKind.API,\n },\n enableXfa: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API + OptionKind.PREFERENCE,\n },\n fontExtraProperties: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API,\n },\n isEvalSupported: {\n /** @type {boolean} */\n value: true,\n kind: OptionKind.API,\n },\n maxImageSize: {\n /** @type {number} */\n value: -1,\n kind: OptionKind.API,\n },\n pdfBug: {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.API,\n },\n standardFontDataUrl: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../external/standard_fonts/\"\n : \"../web/standard_fonts/\",\n kind: OptionKind.API,\n },\n verbosity: {\n /** @type {number} */\n value: 1,\n kind: OptionKind.API,\n },\n\n workerPort: {\n /** @type {Object} */\n value: null,\n kind: OptionKind.WORKER,\n },\n workerSrc: {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../src/worker_loader.js\"\n : \"../build/pdf.worker.js\",\n kind: OptionKind.WORKER,\n },\n};\nif (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n) {\n defaultOptions.defaultUrl = {\n /** @type {string} */\n value: \"compressed.tracemonkey-pldi-09.pdf\",\n kind: OptionKind.VIEWER,\n };\n defaultOptions.disablePreferences = {\n /** @type {boolean} */\n value: typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\"),\n kind: OptionKind.VIEWER,\n };\n defaultOptions.locale = {\n /** @type {string} */\n value: navigator.language || \"en-US\",\n kind: OptionKind.VIEWER,\n };\n defaultOptions.renderer = {\n /** @type {string} */\n value: \"canvas\",\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n };\n defaultOptions.sandboxBundleSrc = {\n /** @type {string} */\n value:\n typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")\n ? \"../build/dev-sandbox/pdf.sandbox.js\"\n : \"../build/pdf.sandbox.js\",\n kind: OptionKind.VIEWER,\n };\n} else if (PDFJSDev.test(\"CHROME\")) {\n defaultOptions.defaultUrl = {\n /** @type {string} */\n value: \"\",\n kind: OptionKind.VIEWER,\n };\n defaultOptions.disableTelemetry = {\n /** @type {boolean} */\n value: false,\n kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\n };\n defaultOptions.sandboxBundleSrc = {\n /** @type {string} */\n value: \"../build/pdf.sandbox.js\",\n kind: OptionKind.VIEWER,\n };\n}\n\nconst userOptions = Object.create(null);\n\nclass AppOptions {\n constructor() {\n throw new Error(\"Cannot initialize AppOptions.\");\n }\n\n static get(name) {\n const userOption = userOptions[name];\n if (userOption !== undefined) {\n return userOption;\n }\n const defaultOption = defaultOptions[name];\n if (defaultOption !== undefined) {\n return compatibilityParams[name] ?? defaultOption.value;\n }\n return undefined;\n }\n\n static getAll(kind = null) {\n const options = Object.create(null);\n for (const name in defaultOptions) {\n const defaultOption = defaultOptions[name];\n if (kind) {\n if ((kind & defaultOption.kind) === 0) {\n continue;\n }\n if (kind === OptionKind.PREFERENCE) {\n const value = defaultOption.value,\n valueType = typeof value;\n\n if (\n valueType === \"boolean\" ||\n valueType === \"string\" ||\n (valueType === \"number\" && Number.isInteger(value))\n ) {\n options[name] = value;\n continue;\n }\n throw new Error(`Invalid type for preference: ${name}`);\n }\n }\n const userOption = userOptions[name];\n options[name] =\n userOption !== undefined\n ? userOption\n : compatibilityParams[name] ?? defaultOption.value;\n }\n return options;\n }\n\n static set(name, value) {\n userOptions[name] = value;\n }\n\n static setAll(options) {\n for (const name in options) {\n userOptions[name] = options[name];\n }\n }\n\n static remove(name) {\n delete userOptions[name];\n }\n\n /**\n * @ignore\n */\n static _hasUserOptions() {\n return Object.keys(userOptions).length > 0;\n }\n}\n\nexport { AppOptions, compatibilityParams, OptionKind };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./event_utils\").EventBus} EventBus */\n/** @typedef {import(\"./interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { parseQueryString, removeNullCharacters } from \"./ui_utils.js\";\n\nconst DEFAULT_LINK_REL = \"noopener noreferrer nofollow\";\n\nconst LinkTarget = {\n NONE: 0, // Default value.\n SELF: 1,\n BLANK: 2,\n PARENT: 3,\n TOP: 4,\n};\n\n/**\n * @typedef {Object} ExternalLinkParameters\n * @property {string} url - An absolute URL.\n * @property {LinkTarget} [target] - The link target. The default value is\n * `LinkTarget.NONE`.\n * @property {string} [rel] - The link relationship. The default value is\n * `DEFAULT_LINK_REL`.\n * @property {boolean} [enabled] - Whether the link should be enabled. The\n * default value is true.\n */\n\n/**\n * Adds various attributes (href, title, target, rel) to hyperlinks.\n * @param {HTMLAnchorElement} link - The link element.\n * @param {ExternalLinkParameters} params\n */\nfunction addLinkAttributes(link, { url, target, rel, enabled = true } = {}) {\n if (!url || typeof url !== \"string\") {\n throw new Error('A valid \"url\" parameter must provided.');\n }\n\n const urlNullRemoved = removeNullCharacters(url);\n if (enabled) {\n link.href = link.title = urlNullRemoved;\n } else {\n link.href = \"\";\n link.title = `Disabled: ${urlNullRemoved}`;\n link.onclick = () => {\n return false;\n };\n }\n\n let targetStr = \"\"; // LinkTarget.NONE\n switch (target) {\n case LinkTarget.NONE:\n break;\n case LinkTarget.SELF:\n targetStr = \"_self\";\n break;\n case LinkTarget.BLANK:\n targetStr = \"_blank\";\n break;\n case LinkTarget.PARENT:\n targetStr = \"_parent\";\n break;\n case LinkTarget.TOP:\n targetStr = \"_top\";\n break;\n }\n link.target = targetStr;\n\n link.rel = typeof rel === \"string\" ? rel : DEFAULT_LINK_REL;\n}\n\n/**\n * @typedef {Object} PDFLinkServiceOptions\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} [externalLinkTarget] - Specifies the `target` attribute\n * for external links. Must use one of the values from {LinkTarget}.\n * Defaults to using no target.\n * @property {string} [externalLinkRel] - Specifies the `rel` attribute for\n * external links. Defaults to stripping the referrer.\n * @property {boolean} [ignoreDestinationZoom] - Ignores the zoom argument,\n * thus preserving the current zoom level in the viewer, when navigating\n * to internal destinations. The default value is `false`.\n */\n\n/**\n * Performs navigation functions inside PDF, such as opening specified page,\n * or destination.\n * @implements {IPDFLinkService}\n */\nclass PDFLinkService {\n #pagesRefCache = new Map();\n\n /**\n * @param {PDFLinkServiceOptions} options\n */\n constructor({\n eventBus,\n externalLinkTarget = null,\n externalLinkRel = null,\n ignoreDestinationZoom = false,\n } = {}) {\n this.eventBus = eventBus;\n this.externalLinkTarget = externalLinkTarget;\n this.externalLinkRel = externalLinkRel;\n this.externalLinkEnabled = true;\n this._ignoreDestinationZoom = ignoreDestinationZoom;\n\n this.baseUrl = null;\n this.pdfDocument = null;\n this.pdfViewer = null;\n this.pdfHistory = null;\n }\n\n setDocument(pdfDocument, baseUrl = null) {\n this.baseUrl = baseUrl;\n this.pdfDocument = pdfDocument;\n this.#pagesRefCache.clear();\n }\n\n setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n\n setHistory(pdfHistory) {\n this.pdfHistory = pdfHistory;\n }\n\n /**\n * @type {number}\n */\n get pagesCount() {\n return this.pdfDocument ? this.pdfDocument.numPages : 0;\n }\n\n /**\n * @type {number}\n */\n get page() {\n return this.pdfViewer.currentPageNumber;\n }\n\n /**\n * @param {number} value\n */\n set page(value) {\n this.pdfViewer.currentPageNumber = value;\n }\n\n /**\n * @type {number}\n */\n get rotation() {\n return this.pdfViewer.pagesRotation;\n }\n\n /**\n * @param {number} value\n */\n set rotation(value) {\n this.pdfViewer.pagesRotation = value;\n }\n\n #goToDestinationHelper(rawDest, namedDest = null, explicitDest) {\n // Dest array looks like that: \n const destRef = explicitDest[0];\n let pageNumber;\n\n if (typeof destRef === \"object\" && destRef !== null) {\n pageNumber = this._cachedPageNumber(destRef);\n\n if (!pageNumber) {\n // Fetch the page reference if it's not yet available. This could\n // only occur during loading, before all pages have been resolved.\n this.pdfDocument\n .getPageIndex(destRef)\n .then(pageIndex => {\n this.cachePageRef(pageIndex + 1, destRef);\n this.#goToDestinationHelper(rawDest, namedDest, explicitDest);\n })\n .catch(() => {\n console.error(\n `PDFLinkService.#goToDestinationHelper: \"${destRef}\" is not ` +\n `a valid page reference, for dest=\"${rawDest}\".`\n );\n });\n return;\n }\n } else if (Number.isInteger(destRef)) {\n pageNumber = destRef + 1;\n } else {\n console.error(\n `PDFLinkService.#goToDestinationHelper: \"${destRef}\" is not ` +\n `a valid destination reference, for dest=\"${rawDest}\".`\n );\n return;\n }\n if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) {\n console.error(\n `PDFLinkService.#goToDestinationHelper: \"${pageNumber}\" is not ` +\n `a valid page number, for dest=\"${rawDest}\".`\n );\n return;\n }\n\n if (this.pdfHistory) {\n // Update the browser history before scrolling the new destination into\n // view, to be able to accurately capture the current document position.\n this.pdfHistory.pushCurrentPosition();\n this.pdfHistory.push({ namedDest, explicitDest, pageNumber });\n }\n\n this.pdfViewer.scrollPageIntoView({\n pageNumber,\n destArray: explicitDest,\n ignoreDestinationZoom: this._ignoreDestinationZoom,\n });\n }\n\n /**\n * This method will, when available, also update the browser history.\n *\n * @param {string|Array} dest - The named, or explicit, PDF destination.\n */\n async goToDestination(dest) {\n if (!this.pdfDocument) {\n return;\n }\n let namedDest, explicitDest;\n if (typeof dest === \"string\") {\n namedDest = dest;\n explicitDest = await this.pdfDocument.getDestination(dest);\n } else {\n namedDest = null;\n explicitDest = await dest;\n }\n if (!Array.isArray(explicitDest)) {\n console.error(\n `PDFLinkService.goToDestination: \"${explicitDest}\" is not ` +\n `a valid destination array, for dest=\"${dest}\".`\n );\n return;\n }\n this.#goToDestinationHelper(dest, namedDest, explicitDest);\n }\n\n /**\n * This method will, when available, also update the browser history.\n *\n * @param {number|string} val - The page number, or page label.\n */\n goToPage(val) {\n if (!this.pdfDocument) {\n return;\n }\n const pageNumber =\n (typeof val === \"string\" && this.pdfViewer.pageLabelToPageNumber(val)) ||\n val | 0;\n if (\n !(\n Number.isInteger(pageNumber) &&\n pageNumber > 0 &&\n pageNumber <= this.pagesCount\n )\n ) {\n console.error(`PDFLinkService.goToPage: \"${val}\" is not a valid page.`);\n return;\n }\n\n if (this.pdfHistory) {\n // Update the browser history before scrolling the new page into view,\n // to be able to accurately capture the current document position.\n this.pdfHistory.pushCurrentPosition();\n this.pdfHistory.pushPage(pageNumber);\n }\n\n this.pdfViewer.scrollPageIntoView({ pageNumber });\n }\n\n /**\n * Wrapper around the `addLinkAttributes` helper function.\n * @param {HTMLAnchorElement} link\n * @param {string} url\n * @param {boolean} [newWindow]\n */\n addLinkAttributes(link, url, newWindow = false) {\n addLinkAttributes(link, {\n url,\n target: newWindow ? LinkTarget.BLANK : this.externalLinkTarget,\n rel: this.externalLinkRel,\n enabled: this.externalLinkEnabled,\n });\n }\n\n /**\n * @param {string|Array} dest - The PDF destination object.\n * @returns {string} The hyperlink to the PDF object.\n */\n getDestinationHash(dest) {\n if (typeof dest === \"string\") {\n if (dest.length > 0) {\n return this.getAnchorUrl(\"#\" + escape(dest));\n }\n } else if (Array.isArray(dest)) {\n const str = JSON.stringify(dest);\n if (str.length > 0) {\n return this.getAnchorUrl(\"#\" + escape(str));\n }\n }\n return this.getAnchorUrl(\"\");\n }\n\n /**\n * Prefix the full url on anchor links to make sure that links are resolved\n * relative to the current URL instead of the one defined in .\n * @param {string} anchor - The anchor hash, including the #.\n * @returns {string} The hyperlink to the PDF object.\n */\n getAnchorUrl(anchor) {\n return (this.baseUrl || \"\") + anchor;\n }\n\n /**\n * @param {string} hash\n */\n setHash(hash) {\n if (!this.pdfDocument) {\n return;\n }\n let pageNumber, dest;\n if (hash.includes(\"=\")) {\n const params = parseQueryString(hash);\n if (params.has(\"search\")) {\n this.eventBus.dispatch(\"findfromurlhash\", {\n source: this,\n query: params.get(\"search\").replace(/\"/g, \"\"),\n phraseSearch: params.get(\"phrase\") === \"true\",\n });\n }\n // borrowing syntax from \"Parameters for Opening PDF Files\"\n if (params.has(\"page\")) {\n pageNumber = params.get(\"page\") | 0 || 1;\n }\n if (params.has(\"zoom\")) {\n // Build the destination array.\n const zoomArgs = params.get(\"zoom\").split(\",\"); // scale,left,top\n const zoomArg = zoomArgs[0];\n const zoomArgNumber = parseFloat(zoomArg);\n\n if (!zoomArg.includes(\"Fit\")) {\n // If the zoomArg is a number, it has to get divided by 100. If it's\n // a string, it should stay as it is.\n dest = [\n null,\n { name: \"XYZ\" },\n zoomArgs.length > 1 ? zoomArgs[1] | 0 : null,\n zoomArgs.length > 2 ? zoomArgs[2] | 0 : null,\n zoomArgNumber ? zoomArgNumber / 100 : zoomArg,\n ];\n } else {\n if (zoomArg === \"Fit\" || zoomArg === \"FitB\") {\n dest = [null, { name: zoomArg }];\n } else if (\n zoomArg === \"FitH\" ||\n zoomArg === \"FitBH\" ||\n zoomArg === \"FitV\" ||\n zoomArg === \"FitBV\"\n ) {\n dest = [\n null,\n { name: zoomArg },\n zoomArgs.length > 1 ? zoomArgs[1] | 0 : null,\n ];\n } else if (zoomArg === \"FitR\") {\n if (zoomArgs.length !== 5) {\n console.error(\n 'PDFLinkService.setHash: Not enough parameters for \"FitR\".'\n );\n } else {\n dest = [\n null,\n { name: zoomArg },\n zoomArgs[1] | 0,\n zoomArgs[2] | 0,\n zoomArgs[3] | 0,\n zoomArgs[4] | 0,\n ];\n }\n } else {\n console.error(\n `PDFLinkService.setHash: \"${zoomArg}\" is not a valid zoom value.`\n );\n }\n }\n }\n if (dest) {\n this.pdfViewer.scrollPageIntoView({\n pageNumber: pageNumber || this.page,\n destArray: dest,\n allowNegativeOffset: true,\n });\n } else if (pageNumber) {\n this.page = pageNumber; // simple page\n }\n if (params.has(\"pagemode\")) {\n this.eventBus.dispatch(\"pagemode\", {\n source: this,\n mode: params.get(\"pagemode\"),\n });\n }\n // Ensure that this parameter is *always* handled last, in order to\n // guarantee that it won't be overridden (e.g. by the \"page\" parameter).\n if (params.has(\"nameddest\")) {\n this.goToDestination(params.get(\"nameddest\"));\n }\n } else {\n // Named (or explicit) destination.\n dest = unescape(hash);\n try {\n dest = JSON.parse(dest);\n\n if (!Array.isArray(dest)) {\n // Avoid incorrectly rejecting a valid named destination, such as\n // e.g. \"4.3\" or \"true\", because `JSON.parse` converted its type.\n dest = dest.toString();\n }\n } catch (ex) {}\n\n if (\n typeof dest === \"string\" ||\n PDFLinkService.#isValidExplicitDestination(dest)\n ) {\n this.goToDestination(dest);\n return;\n }\n console.error(\n `PDFLinkService.setHash: \"${unescape(\n hash\n )}\" is not a valid destination.`\n );\n }\n }\n\n /**\n * @param {string} action\n */\n executeNamedAction(action) {\n // See PDF reference, table 8.45 - Named action\n switch (action) {\n case \"GoBack\":\n this.pdfHistory?.back();\n break;\n\n case \"GoForward\":\n this.pdfHistory?.forward();\n break;\n\n case \"NextPage\":\n this.pdfViewer.nextPage();\n break;\n\n case \"PrevPage\":\n this.pdfViewer.previousPage();\n break;\n\n case \"LastPage\":\n this.page = this.pagesCount;\n break;\n\n case \"FirstPage\":\n this.page = 1;\n break;\n\n default:\n break; // No action according to spec\n }\n\n this.eventBus.dispatch(\"namedaction\", {\n source: this,\n action,\n });\n }\n\n /**\n * @param {number} pageNum - page number.\n * @param {Object} pageRef - reference to the page.\n */\n cachePageRef(pageNum, pageRef) {\n if (!pageRef) {\n return;\n }\n const refStr =\n pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;\n this.#pagesRefCache.set(refStr, pageNum);\n }\n\n /**\n * @ignore\n */\n _cachedPageNumber(pageRef) {\n if (!pageRef) {\n return null;\n }\n const refStr =\n pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;\n return this.#pagesRefCache.get(refStr) || null;\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageVisible(pageNumber) {\n return this.pdfViewer.isPageVisible(pageNumber);\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageCached(pageNumber) {\n return this.pdfViewer.isPageCached(pageNumber);\n }\n\n static #isValidExplicitDestination(dest) {\n if (!Array.isArray(dest)) {\n return false;\n }\n const destLength = dest.length;\n if (destLength < 2) {\n return false;\n }\n const page = dest[0];\n if (\n !(\n typeof page === \"object\" &&\n Number.isInteger(page.num) &&\n Number.isInteger(page.gen)\n ) &&\n !(Number.isInteger(page) && page >= 0)\n ) {\n return false;\n }\n const zoom = dest[1];\n if (!(typeof zoom === \"object\" && typeof zoom.name === \"string\")) {\n return false;\n }\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (destLength !== 5) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return destLength === 2;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (destLength !== 3) {\n return false;\n }\n break;\n case \"FitR\":\n if (destLength !== 6) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (let i = 2; i < destLength; i++) {\n const param = dest[i];\n if (!(typeof param === \"number\" || (allowNull && param === null))) {\n return false;\n }\n }\n return true;\n }\n}\n\n/**\n * @implements {IPDFLinkService}\n */\nclass SimpleLinkService {\n constructor() {\n this.externalLinkEnabled = true;\n }\n\n /**\n * @type {number}\n */\n get pagesCount() {\n return 0;\n }\n\n /**\n * @type {number}\n */\n get page() {\n return 0;\n }\n\n /**\n * @param {number} value\n */\n set page(value) {}\n\n /**\n * @type {number}\n */\n get rotation() {\n return 0;\n }\n\n /**\n * @param {number} value\n */\n set rotation(value) {}\n\n /**\n * @param {string|Array} dest - The named, or explicit, PDF destination.\n */\n async goToDestination(dest) {}\n\n /**\n * @param {number|string} val - The page number, or page label.\n */\n goToPage(val) {}\n\n /**\n * @param {HTMLAnchorElement} link\n * @param {string} url\n * @param {boolean} [newWindow]\n */\n addLinkAttributes(link, url, newWindow = false) {\n addLinkAttributes(link, { url, enabled: this.externalLinkEnabled });\n }\n\n /**\n * @param dest - The PDF destination object.\n * @returns {string} The hyperlink to the PDF object.\n */\n getDestinationHash(dest) {\n return \"#\";\n }\n\n /**\n * @param hash - The PDF parameters/hash.\n * @returns {string} The hyperlink to the PDF object.\n */\n getAnchorUrl(hash) {\n return \"#\";\n }\n\n /**\n * @param {string} hash\n */\n setHash(hash) {}\n\n /**\n * @param {string} action\n */\n executeNamedAction(action) {}\n\n /**\n * @param {number} pageNum - page number.\n * @param {Object} pageRef - reference to the page.\n */\n cachePageRef(pageNum, pageRef) {}\n\n /**\n * @param {number} pageNumber\n */\n isPageVisible(pageNumber) {\n return true;\n }\n\n /**\n * @param {number} pageNumber\n */\n isPageCached(pageNumber) {\n return true;\n }\n}\n\nexport { LinkTarget, PDFLinkService, SimpleLinkService };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n animationStarted,\n apiPageLayoutToViewerModes,\n apiPageModeToSidebarView,\n AutoPrintRegExp,\n DEFAULT_SCALE_VALUE,\n getActiveOrFocusedElement,\n isValidRotation,\n isValidScrollMode,\n isValidSpreadMode,\n noContextMenuHandler,\n normalizeWheelEventDirection,\n parseQueryString,\n ProgressBar,\n RendererType,\n RenderingStates,\n ScrollMode,\n SidebarView,\n SpreadMode,\n TextLayerMode,\n} from \"./ui_utils.js\";\nimport {\n AnnotationEditorType,\n build,\n createPromiseCapability,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n GlobalWorkerOptions,\n InvalidPDFException,\n isPdfFile,\n loadScript,\n MissingPDFException,\n OPS,\n PDFWorker,\n shadow,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n version,\n} from \"pdfjs-lib\";\nimport { AppOptions, OptionKind } from \"./app_options.js\";\nimport { AutomationEventBus, EventBus } from \"./event_utils.js\";\nimport { CursorTool, PDFCursorTools } from \"./pdf_cursor_tools.js\";\nimport { LinkTarget, PDFLinkService } from \"./pdf_link_service.js\";\nimport { AnnotationEditorParams } from \"./annotation_editor_params.js\";\nimport { OverlayManager } from \"./overlay_manager.js\";\nimport { PasswordPrompt } from \"./password_prompt.js\";\nimport { PDFAttachmentViewer } from \"./pdf_attachment_viewer.js\";\nimport { PDFDocumentProperties } from \"./pdf_document_properties.js\";\nimport { PDFFindBar } from \"./pdf_find_bar.js\";\nimport { PDFFindController } from \"./pdf_find_controller.js\";\nimport { PDFHistory } from \"./pdf_history.js\";\nimport { PDFLayerViewer } from \"./pdf_layer_viewer.js\";\nimport { PDFOutlineViewer } from \"./pdf_outline_viewer.js\";\nimport { PDFPresentationMode } from \"./pdf_presentation_mode.js\";\nimport { PDFRenderingQueue } from \"./pdf_rendering_queue.js\";\nimport { PDFScriptingManager } from \"./pdf_scripting_manager.js\";\nimport { PDFSidebar } from \"./pdf_sidebar.js\";\nimport { PDFSidebarResizer } from \"./pdf_sidebar_resizer.js\";\nimport { PDFThumbnailViewer } from \"./pdf_thumbnail_viewer.js\";\nimport { PDFViewer } from \"./pdf_viewer.js\";\nimport { SecondaryToolbar } from \"./secondary_toolbar.js\";\nimport { Toolbar } from \"./toolbar.js\";\nimport { ViewHistory } from \"./view_history.js\";\n\nconst DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; // ms\nconst FORCE_PAGES_LOADED_TIMEOUT = 10000; // ms\nconst WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; // ms\n\nconst ViewOnLoad = {\n UNKNOWN: -1,\n PREVIOUS: 0, // Default value.\n INITIAL: 1,\n};\n\nconst ViewerCssTheme = {\n AUTOMATIC: 0, // Default value.\n LIGHT: 1,\n DARK: 2,\n};\n\n// Keep these in sync with mozilla-central's Histograms.json.\nconst KNOWN_VERSIONS = [\n \"1.0\",\n \"1.1\",\n \"1.2\",\n \"1.3\",\n \"1.4\",\n \"1.5\",\n \"1.6\",\n \"1.7\",\n \"1.8\",\n \"1.9\",\n \"2.0\",\n \"2.1\",\n \"2.2\",\n \"2.3\",\n];\n// Keep these in sync with mozilla-central's Histograms.json.\nconst KNOWN_GENERATORS = [\n \"acrobat distiller\",\n \"acrobat pdfwriter\",\n \"adobe livecycle\",\n \"adobe pdf library\",\n \"adobe photoshop\",\n \"ghostscript\",\n \"tcpdf\",\n \"cairo\",\n \"dvipdfm\",\n \"dvips\",\n \"pdftex\",\n \"pdfkit\",\n \"itext\",\n \"prince\",\n \"quarkxpress\",\n \"mac os x\",\n \"microsoft\",\n \"openoffice\",\n \"oracle\",\n \"luradocument\",\n \"pdf-xchange\",\n \"antenna house\",\n \"aspose.cells\",\n \"fpdf\",\n];\n\nclass DefaultExternalServices {\n constructor() {\n throw new Error(\"Cannot initialize DefaultExternalServices.\");\n }\n\n static updateFindControlState(data) {}\n\n static updateFindMatchesCount(data) {}\n\n static initPassiveLoading(callbacks) {}\n\n static reportTelemetry(data) {}\n\n static createDownloadManager(options) {\n throw new Error(\"Not implemented: createDownloadManager\");\n }\n\n static createPreferences() {\n throw new Error(\"Not implemented: createPreferences\");\n }\n\n static createL10n(options) {\n throw new Error(\"Not implemented: createL10n\");\n }\n\n static createScripting(options) {\n throw new Error(\"Not implemented: createScripting\");\n }\n\n static get supportsIntegratedFind() {\n return shadow(this, \"supportsIntegratedFind\", false);\n }\n\n static get supportsDocumentFonts() {\n return shadow(this, \"supportsDocumentFonts\", true);\n }\n\n static get supportedMouseWheelZoomModifierKeys() {\n return shadow(this, \"supportedMouseWheelZoomModifierKeys\", {\n ctrlKey: true,\n metaKey: true,\n });\n }\n\n static get isInAutomation() {\n return shadow(this, \"isInAutomation\", false);\n }\n\n static updateEditorStates(data) {\n throw new Error(\"Not implemented: updateEditorStates\");\n }\n}\n\nconst PDFViewerApplication = {\n initialBookmark: document.location.hash.substring(1),\n _initializedCapability: createPromiseCapability(),\n appConfig: null,\n pdfDocument: null,\n pdfLoadingTask: null,\n printService: null,\n /** @type {PDFViewer} */\n pdfViewer: null,\n /** @type {PDFThumbnailViewer} */\n pdfThumbnailViewer: null,\n /** @type {PDFRenderingQueue} */\n pdfRenderingQueue: null,\n /** @type {PDFPresentationMode} */\n pdfPresentationMode: null,\n /** @type {PDFDocumentProperties} */\n pdfDocumentProperties: null,\n /** @type {PDFLinkService} */\n pdfLinkService: null,\n /** @type {PDFHistory} */\n pdfHistory: null,\n /** @type {PDFSidebar} */\n pdfSidebar: null,\n /** @type {PDFSidebarResizer} */\n pdfSidebarResizer: null,\n /** @type {PDFOutlineViewer} */\n pdfOutlineViewer: null,\n /** @type {PDFAttachmentViewer} */\n pdfAttachmentViewer: null,\n /** @type {PDFLayerViewer} */\n pdfLayerViewer: null,\n /** @type {PDFCursorTools} */\n pdfCursorTools: null,\n /** @type {PDFScriptingManager} */\n pdfScriptingManager: null,\n /** @type {ViewHistory} */\n store: null,\n /** @type {DownloadManager} */\n downloadManager: null,\n /** @type {OverlayManager} */\n overlayManager: null,\n /** @type {Preferences} */\n preferences: null,\n /** @type {Toolbar} */\n toolbar: null,\n /** @type {SecondaryToolbar} */\n secondaryToolbar: null,\n /** @type {EventBus} */\n eventBus: null,\n /** @type {IL10n} */\n l10n: null,\n /** @type {AnnotationEditorParams} */\n annotationEditorParams: null,\n isInitialViewSet: false,\n downloadComplete: false,\n isViewerEmbedded: window.parent !== window,\n url: \"\",\n baseUrl: \"\",\n _downloadUrl: \"\",\n externalServices: DefaultExternalServices,\n _boundEvents: Object.create(null),\n documentInfo: null,\n metadata: null,\n _contentDispositionFilename: null,\n _contentLength: null,\n _saveInProgress: false,\n _docStats: null,\n _wheelUnusedTicks: 0,\n _idleCallbacks: new Set(),\n _PDFBug: null,\n _hasAnnotationEditors: false,\n _title: document.title,\n _printAnnotationStoragePromise: null,\n\n // Called once when the document is loaded.\n async initialize(appConfig) {\n this.preferences = this.externalServices.createPreferences();\n this.appConfig = appConfig;\n\n await this._readPreferences();\n await this._parseHashParameters();\n this._forceCssTheme();\n await this._initializeL10n();\n\n if (\n this.isViewerEmbedded &&\n AppOptions.get(\"externalLinkTarget\") === LinkTarget.NONE\n ) {\n // Prevent external links from \"replacing\" the viewer,\n // when it's embedded in e.g. an