diff --git a/pdf/LICENSE b/pdf/LICENSE deleted file mode 100644 index f433b1a..0000000 --- a/pdf/LICENSE +++ /dev/null @@ -1,177 +0,0 @@ - - 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/pdf/build/pdf.js b/pdf/build/pdf.js deleted file mode 100644 index 1afcab4..0000000 --- a/pdf/build/pdf.js +++ /dev/null @@ -1,15617 +0,0 @@ -/** - * @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) => { - - - -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; -; -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 -}; -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, - beginAnnotation: 80, - endAnnotation: 81, - paintImageMaskXObject: 83, - paintImageMaskXObjectGroup: 84, - paintImageXObject: 85, - paintInlineImageXObject: 86, - paintInlineImageXObjectGroup: 87, - paintImageXObjectRepeat: 88, - paintImageMaskXObjectRepeat: 89, - paintSolidColorImageMask: 90, - constructPath: 91 -}; -exports.OPS = OPS; -const UNSUPPORTED_FEATURES = { - forms: "forms", - javaScript: "javaScript", - signatures: "signatures", - smask: "smask", - shadingPattern: "shadingPattern", - 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 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, 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__(3); -var _display_utils = __w_pdfjs_require__(6); -var _font_loader = __w_pdfjs_require__(9); -var _canvas = __w_pdfjs_require__(10); -var _worker_options = __w_pdfjs_require__(14); -var _is_node = __w_pdfjs_require__(12); -var _message_handler = __w_pdfjs_require__(15); -var _metadata = __w_pdfjs_require__(16); -var _optional_content_config = __w_pdfjs_require__(17); -var _transport_stream = __w_pdfjs_require__(18); -var _xfa_text = __w_pdfjs_require__(19); -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__(20); - 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.isOffscreenCanvasSupported !== "boolean") { - params.isOffscreenCanvasSupported = !_is_node.isNodeJS; - } - 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: '3.0.279', - data: source.data, - password: source.password, - disableAutoFetch: source.disableAutoFetch, - rangeChunkSize: source.rangeChunkSize, - length: source.length, - docBaseUrl: source.docBaseUrl, - enableXfa: source.enableXfa, - evaluatorOptions: { - maxImageSize: source.maxImageSize, - disableFontFace: source.disableFontFace, - ignoreErrors: source.ignoreErrors, - isEvalSupported: source.isEvalSupported, - isOffscreenCanvasSupported: source.isOffscreenCanvasSupported, - fontExtraProperties: source.fontExtraProperties, - 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; - } - 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(); - } - saveDocument() { - return this._transport.saveDocument(); - } - 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; - } - 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); - } - 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, - canvasFactory = null, - background = null, - optionalContentConfigPromise = null, - annotationCanvasMap = null, - pageColors = null, - printAnnotationStorage = null - }) { - 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 - }; - 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(); - } - this._stats?.timeEnd("Rendering"); - this._stats?.timeEnd("Overall"); - }; - const internalRenderTask = new InternalRenderTask({ - callback: complete, - params: { - canvasContext, - viewport, - transform, - 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; - } - 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 - }; - 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; - } - this._stats?.timeEnd("Page Request"); - 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 { - #listeners = []; - #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(); - this._messageHandler.send("configure", { - verbosity: this.verbosity - }); - } - _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; -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({ - 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); - } - saveDocument() { - if (this.annotationStorage.size <= 0) { - (0, _util.warn)("saveDocument called while `annotationStorage` is empty, " + "please use the getData-method instead."); - } - return this.messageHandler.sendWithPromise("SaveDocument", { - isPureXfa: !!this._htmlForXfa, - numPages: this._numPages, - annotationStorage: this.annotationStorage.serializable, - filename: this._fullReader?.filename ?? null - }).finally(() => { - this.annotationStorage.resetModified(); - }); - } - 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 - }); - } - 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) { - if (this.destroyed) { - return; - } - await this.messageHandler.sendWithPromise("Cleanup", null); - 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, - background - } = this.params; - this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, optionalContentConfig, this.annotationCanvasMap, this.pageColors); - this.gfx.beginDrawing({ - transform, - viewport, - transparency, - background - }); - this.operatorListIdx = 0; - this.graphicsReady = true; - this.graphicsReadyCallback?.(); - } - cancel(error = null) { - this.running = false; - this.cancelled = true; - 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; - } - 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 = '3.0.279'; -exports.version = version; -const build = 'd0823066c'; -exports.build = build; - -/***/ }), -/* 3 */ -/***/ ((__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__(4); -var _murmurhash = __w_pdfjs_require__(8); -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; - -/***/ }), -/* 4 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.AnnotationEditor = void 0; -var _tools = __w_pdfjs_require__(5); -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}%`; - } - fixDims() { - const { - style - } = this.div; - const { - height, - width - } = style; - const widthPercent = width.endsWith("%"); - const heightPercent = height.endsWith("%"); - if (widthPercent && heightPercent) { - return; - } - const [parentWidth, parentHeight] = this.parent.viewportBaseDimensions; - if (!widthPercent) { - style.width = `${100 * parseFloat(width) / parentWidth}%`; - } - if (!heightPercent) { - style.height = `${100 * parseFloat(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; - -/***/ }), -/* 5 */ -/***/ ((__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__(6); -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 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(); - #commandManager = new CommandManager(); - #currentPageIndex = 0; - #editorTypes = null; - #eventBus = null; - #idManager = new IdManager(); - #isEnabled = false; - #mode = _util.AnnotationEditorType.NONE; - #selectedEditors = new Set(); - #boundCopy = this.copy.bind(this); - #boundCut = this.cut.bind(this); - #boundPaste = this.paste.bind(this); - #boundKeydown = this.keydown.bind(this); - #boundOnEditingAction = this.onEditingAction.bind(this); - #boundOnPageChanging = this.onPageChanging.bind(this); - #previousStates = { - isEditing: false, - isEmpty: true, - hasSomethingToUndo: false, - hasSomethingToRedo: false, - hasSelectedEditor: false - }; - #container = null; - static _keyboardManager = new KeyboardManager([[["ctrl+a", "mac+meta+a"], AnnotationEditorUIManager.prototype.selectAll], [["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.#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); - } - #addCopyPasteListeners() { - document.addEventListener("copy", this.#boundCopy); - document.addEventListener("cut", this.#boundCut); - document.addEventListener("paste", this.#boundPaste); - } - #removeCopyPasteListeners() { - document.removeEventListener("copy", this.#boundCopy); - document.removeEventListener("cut", this.#boundCut); - document.removeEventListener("paste", this.#boundPaste); - } - copy(event) { - event.preventDefault(); - if (this.#activeEditor) { - this.#activeEditor.commitOrRemove(); - } - if (!this.hasSelection) { - return; - } - const editors = []; - for (const editor of this.#selectedEditors) { - if (!editor.isEmpty()) { - editors.push(editor.serialize()); - } - } - if (editors.length === 0) { - return; - } - event.clipboardData.setData("application/pdfjs", JSON.stringify(editors)); - } - cut(event) { - this.copy(event); - this.delete(); - } - paste(event) { - event.preventDefault(); - let data = event.clipboardData.getData("application/pdfjs"); - if (!data) { - return; - } - try { - data = JSON.parse(data); - } catch (ex) { - (0, _util.warn)(`paste: "${ex.message}".`); - return; - } - if (!Array.isArray(data)) { - return; - } - this.unselectAll(); - const layer = this.#allLayers.get(this.#currentPageIndex); - try { - const newEditors = []; - for (const editor of data) { - const deserializedEditor = layer.deserialize(editor); - if (!deserializedEditor) { - return; - } - newEditors.push(deserializedEditor); - } - 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 - }); - } catch (ex) { - (0, _util.warn)(`paste: "${ex.message}".`); - } - } - keydown(event) { - if (!this.getActive()?.shouldGetKeyboardEvents()) { - AnnotationEditorUIManager._keyboardManager.exec(this, event); - } - } - onEditingAction(details) { - if (["undo", "redo", "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.#addCopyPasteListeners(); - this.#dispatchUpdateStates({ - isEditing: this.#mode !== _util.AnnotationEditorType.NONE, - isEmpty: this.#isEmpty(), - hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(), - hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(), - hasSelectedEditor: false - }); - } else { - this.#removeKeyboardManager(); - this.#removeCopyPasteListeners(); - this.#dispatchUpdateStates({ - isEditing: false - }); - } - } - registerEditorTypes(types) { - if (this.#editorTypes) { - return; - } - 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) { - if (!this.#editorTypes) { - return; - } - 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() { - this.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 - }); - } - commitOrRemove() { - this.#activeEditor?.commitOrRemove(); - } - #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.#selectedEditors.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; - -/***/ }), -/* 6 */ -/***/ ((__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__(7); -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]; -} - -/***/ }), -/* 7 */ -/***/ ((__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; - -/***/ }), -/* 8 */ -/***/ ((__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; - -/***/ }), -/* 9 */ -/***/ ((__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 FontLoader { - constructor({ - onUnsupportedFeature, - ownerDocument = globalThis.document, - styleElement = null - }) { - this._onUnsupportedFeature = onUnsupportedFeature; - this._document = ownerDocument; - this.nativeFontFaces = []; - this.styleElement = null; - this.loadingRequests = []; - this.loadTestFontId = 0; - } - addNativeFontFace(nativeFontFace) { - this.nativeFontFaces.push(nativeFontFace); - this._document.fonts.add(nativeFontFace); - } - insertRule(rule) { - if (!this.styleElement) { - this.styleElement = this._document.createElement("style"); - this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement); - } - const styleSheet = this.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(font, request); - }); - } - } - get isFontLoadingAPISupported() { - const hasFonts = !!this._document?.fonts; - return (0, _util.shadow)(this, "isFontLoadingAPISupported", hasFonts); - } - 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 (loadingRequests.length > 0 && loadingRequests[0].done) { - const otherRequest = loadingRequests.shift(); - setTimeout(otherRequest.callback, 0); - } - } - const { - loadingRequests - } = this; - const request = { - done: false, - complete: completeRequest, - callback - }; - loadingRequests.push(request); - return request; - } - get _loadTestFont() { - const testFont = 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", testFont); - } - _prepareFontLoadEvent(font, 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) { - 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 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 [font.loadedName, loadTestFontId]) { - 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(); - }); - } -} -exports.FontLoader = FontLoader; -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); - } - 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}}`; - } - 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; - -/***/ }), -/* 10 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.CanvasGraphics = void 0; -var _util = __w_pdfjs_require__(1); -var _display_utils = __w_pdfjs_require__(6); -var _pattern_helper = __w_pdfjs_require__(11); -var _image_utils = __w_pdfjs_require__(13); -var _is_node = __w_pdfjs_require__(12); -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 (const property of properties) { - 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, 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.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); - } - 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(); - } - _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; - cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), 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 (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[0], value[1]); - break; - case "CA": - this.current.strokeAlpha = value; - break; - case "ca": - this.current.fillAlpha = value; - this.ctx.globalAlpha = value; - 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); - drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height); - 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); - 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]; - } -} - -/***/ }), -/* 11 */ -/***/ ((__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__(6); -var _is_node = __w_pdfjs_require__(12); -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); - pattern.setTransform(domMatrix); - } 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"); - pattern.setTransform(domMatrix); - return pattern; - } -} -exports.TilingPattern = TilingPattern; - -/***/ }), -/* 12 */ -/***/ ((__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; - -/***/ }), -/* 13 */ -/***/ ((__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 - }; -} - -/***/ }), -/* 14 */ -/***/ ((__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; - -/***/ }), -/* 15 */ -/***/ ((__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; - -/***/ }), -/* 16 */ -/***/ ((__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; - -/***/ }), -/* 17 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.OptionalContentConfig = void 0; -var _util = __w_pdfjs_require__(1); -var _murmurhash = __w_pdfjs_require__(8); -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 { - #cachedGetHash = null; - #groups = new Map(); - #initialHash = 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.#initialHash = this.getHash(); - } - #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.#cachedGetHash = null; - } - get hasInitialVisibility() { - return this.getHash() === this.#initialHash; - } - 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; - } - getHash() { - if (this.#cachedGetHash !== null) { - return this.#cachedGetHash; - } - const hash = new _murmurhash.MurmurHash3_64(); - for (const [id, group] of this.#groups) { - hash.update(`${id}:${group.visible}`); - } - return this.#cachedGetHash = hash.hexdigest(); - } -} -exports.OptionalContentConfig = OptionalContentConfig; - -/***/ }), -/* 18 */ -/***/ ((__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__(6); -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) { - this._rangeReaders[0]?.onProgress?.({ - loaded: evt.loaded - }); - } else { - this._fullRequestReader?.onProgress?.({ - loaded: evt.loaded, - total: evt.total - }); - } - } - _onProgressiveDone() { - 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) { - 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); - } -} - -/***/ }), -/* 19 */ -/***/ ((__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; - -/***/ }), -/* 20 */ -/***/ ((__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__(7); -; -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; - -/***/ }), -/* 21 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.AnnotationEditorLayer = void 0; -var _tools = __w_pdfjs_require__(5); -var _util = __w_pdfjs_require__(1); -var _freetext = __w_pdfjs_require__(22); -var _ink = __w_pdfjs_require__(23); -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(); - this.div.classList.toggle("freeTextEditing", mode === _util.AnnotationEditorType.FREETEXT); - this.div.classList.toggle("inkEditing", mode === _util.AnnotationEditorType.INK); - } - 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.#uiManager.commitOrRemove(); - 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; - -/***/ }), -/* 22 */ -/***/ ((__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__(5); -var _editor = __w_pdfjs_require__(4); -class FreeTextEditor extends _editor.AnnotationEditor { - #boundEditorDivBlur = this.editorDivBlur.bind(this); - #boundEditorDivFocus = this.editorDivFocus.bind(this); - #boundEditorDivInput = this.editorDivInput.bind(this); - #boundEditorDivKeydown = this.editorDivKeydown.bind(this); - #color; - #content = ""; - #editorDivId = `${this.id}-editor`; - #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_text2_default_content", "editor_free_text2_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.overlayDiv.classList.remove("enabled"); - this.editorDiv.contentEditable = true; - this.div.draggable = false; - this.div.removeAttribute("aria-activedescendant"); - this.editorDiv.addEventListener("keydown", this.#boundEditorDivKeydown); - this.editorDiv.addEventListener("focus", this.#boundEditorDivFocus); - this.editorDiv.addEventListener("blur", this.#boundEditorDivBlur); - this.editorDiv.addEventListener("input", this.#boundEditorDivInput); - } - disableEditMode() { - if (!this.isInEditMode()) { - return; - } - this.parent.setEditingState(true); - super.disableEditMode(); - this.overlayDiv.classList.add("enabled"); - this.editorDiv.contentEditable = false; - this.div.setAttribute("aria-activedescendant", this.#editorDivId); - this.div.draggable = true; - this.editorDiv.removeEventListener("keydown", this.#boundEditorDivKeydown); - this.editorDiv.removeEventListener("focus", this.#boundEditorDivFocus); - this.editorDiv.removeEventListener("blur", this.#boundEditorDivBlur); - this.editorDiv.removeEventListener("input", this.#boundEditorDivInput); - this.div.focus(); - this.isEditing = false; - this.parent.div.classList.add("freeTextEditing"); - } - 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); - this.parent.div.classList.add("freeTextEditing"); - super.remove(); - } - #extractText() { - const divs = this.editorDiv.getElementsByTagName("div"); - if (divs.length === 0) { - return this.editorDiv.innerText; - } - const buffer = []; - for (const div of divs) { - 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; - } - editorDivInput(event) { - this.parent.div.classList.toggle("freeTextEditing", this.isEmpty()); - } - 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.#editorDivId); - this.enableEditing(); - FreeTextEditor._l10nPromise.get("editor_free_text2_aria_label").then(msg => this.editorDiv?.setAttribute("aria-label", msg)); - FreeTextEditor._l10nPromise.get("free_text2_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; - -/***/ }), -/* 23 */ -/***/ ((__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__(4); -var _pdfjsFitCurve = __w_pdfjs_require__(24); -var _tools = __w_pdfjs_require__(5); -const RESIZER_SIZE = 16; -const TIME_TO_WAIT_BEFORE_FIXING_DIMS = 100; -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_ink2_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() { - let timeoutId = null; - this.#observer = new ResizeObserver(entries => { - const rect = entries[0].contentRect; - if (rect.width && rect.height) { - if (timeoutId !== null) { - clearTimeout(timeoutId); - } - timeoutId = setTimeout(() => { - this.fixDims(); - timeoutId = null; - }, TIME_TO_WAIT_BEFORE_FIXING_DIMS); - 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_ink2_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; - -/***/ }), -/* 24 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.fitCurve = void 0; -const fitCurve = __w_pdfjs_require__(25); -exports.fitCurve = fitCurve; - -/***/ }), -/* 25 */ -/***/ ((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; - -/***/ }), -/* 26 */ -/***/ ((__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__(6); -var _annotation_storage = __w_pdfjs_require__(3); -var _scripting_utils = __w_pdfjs_require__(27); -var _xfa_layer = __w_pdfjs_require__(28); -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]; - 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 { - exportValue - } = domElement; - const id = domElement.getAttribute("data-element-id"); - 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.attachment) { - this._bindAttachment(link, data.attachment); - isBound = true; - } else if (data.setOCGState) { - this.#bindSetOCGState(link, data.setOCGState); - 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"; - } - _bindAttachment(link, attachment) { - link.href = this.linkService.getAnchorUrl(""); - link.onclick = () => { - this.downloadManager?.openOrDownloadData(this.container, attachment.content, attachment.filename); - return false; - }; - link.className = "internalLink"; - } - #bindSetOCGState(link, action) { - link.href = this.linkService.getAnchorUrl(""); - link.onclick = () => { - this.linkService.executeSetOCGState(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 = () => { - 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; - const BORDER_SIZE = 2; - const roundToOneDecimal = x => Math.round(10 * x) / 10; - if (this.data.multiLine) { - const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE); - const numberOfLines = Math.round(height / (_util.LINE_FACTOR * fontSize)) || 1; - const lineHeight = height / numberOfLines; - computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / _util.LINE_FACTOR)); - } else { - const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE); - computedFontSize = Math.min(fontSize, roundToOneDecimal(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" && !this.data.multiLine) { - 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 { - static IGNORE_TYPES = new Set(["Line", "Square", "Circle", "PolyLine", "Polygon", "Ink"]); - constructor(parameters) { - const { - data - } = parameters; - const isRenderable = !PopupAnnotationElement.IGNORE_TYPES.has(data.parentType) && !!(data.titleObj?.str || data.contentsObj?.str || data.richText?.str); - super(parameters, { - isRenderable - }); - } - render() { - this.container.className = "popupAnnotation"; - const parentElements = this.layer.querySelectorAll(`[data-annotation-id="${this.data.parentId}"]`); - 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; - -/***/ }), -/* 27 */ -/***/ ((__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; - -/***/ }), -/* 28 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.XfaLayer = void 0; -var _xfa_text = __w_pdfjs_require__(19); -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; - -/***/ }), -/* 29 */ -/***/ ((__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); -const MAX_TEXT_DIVS_TO_RENDER = 100000; -const DEFAULT_FONT_SIZE = 30; -const DEFAULT_FONT_ASCENT = 0.8; -const ascentCache = new Map(); -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 = { - 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) { - 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); - } -} -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 (const textDiv of textDivs) { - task._layoutText(textDiv); - } - } - task._renderingDone = true; - capability.resolve(); -} -class TextLayerRenderTask { - constructor({ - textContent, - textContentStream, - container, - viewport, - textDivs, - textContentItemsStr - }) { - this._textContent = textContent; - this._textContentStream = textContentStream; - this._container = container; - this._document = container.ownerDocument; - this._viewport = viewport; - this._textDivs = textDivs || []; - this._textContentItemsStr = textContentItemsStr || []; - 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(() => { - 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 (const item of items) { - if (item.str === undefined) { - if (item.type === "beginMarkedContentProps" || item.type === "beginMarkedContent") { - const parent = this._container; - this._container = document.createElement("span"); - this._container.classList.add("markedContent"); - if (item.id !== null) { - this._container.setAttribute("id", `${item.id}`); - } - parent.append(this._container); - } else if (item.type === "endMarkedContent") { - this._container = this._container.parentNode; - } - continue; - } - this._textContentItemsStr.push(item.str); - appendText(this, item, 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) { - transform = `scaleX(${this._devicePixelRatio * textDivProperties.canvasWidth / width})`; - } - } - if (textDivProperties.angle !== 0) { - transform = `rotate(${textDivProperties.angle}deg) ${transform}`; - } - if (transform.length > 0) { - 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); - } -} -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 - }); - task._render(renderParameters.timeout); - return task; -} - -/***/ }), -/* 30 */ -/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.SVGGraphics = void 0; -var _display_utils = __w_pdfjs_require__(6); -var _util = __w_pdfjs_require__(1); -var _is_node = __w_pdfjs_require__(12); -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; - } - } - getObject(data, fallback = null) { - if (typeof data === "string") { - return data.startsWith("g_") ? this.commonObjs.get(data) : this.objs.get(data); - } - return fallback; - } - 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() { - this.current.element?.setAttributeNS(null, "fill-rule", "evenodd"); - this.fill(); - } - fillStroke() { - this.stroke(); - this.fill(); - } - eoFillStroke() { - 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 = this.getObject(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(img) { - const imgData = this.getObject(img.data, img); - if (imgData.bitmap) { - (0, _util.warn)("paintImageMaskXObject: ImageBitmap support is not implemented, " + "ensure that the `isOffscreenCanvasSupported` API parameter is disabled."); - return; - } - 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; - } - }; -} - -/***/ }), -/* 31 */ -/***/ ((__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__(32); -; -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) { - 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; - 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; - 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 - })); - } -} - -/***/ }), -/* 32 */ -/***/ ((__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__(33); -var _display_utils = __w_pdfjs_require__(6); -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; -} - -/***/ }), -/* 33 */ -/***/ ((__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 ""; -} - -/***/ }), -/* 34 */ -/***/ ((__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__(32); -; -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(); - } -} - -/***/ }), -/* 35 */ -/***/ ((__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__(32); -; -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) { - 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; - this.onProgress?.({ - loaded: this._loaded, - total: this._contentLength - }); - const buffer = new Uint8Array(value).buffer; - return { - value: buffer, - done: false - }; - } - cancel(reason) { - 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; - this.onProgress?.({ - loaded: this._loaded - }); - const buffer = new Uint8Array(value).buffer; - return { - value: buffer, - done: false - }; - } - cancel(reason) { - 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, "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__(2); -var _display_utils = __w_pdfjs_require__(6); -var _annotation_editor_layer = __w_pdfjs_require__(21); -var _tools = __w_pdfjs_require__(5); -var _annotation_layer = __w_pdfjs_require__(26); -var _worker_options = __w_pdfjs_require__(14); -var _is_node = __w_pdfjs_require__(12); -var _text_layer = __w_pdfjs_require__(29); -var _svg = __w_pdfjs_require__(30); -var _xfa_layer = __w_pdfjs_require__(28); -const pdfjsVersion = '3.0.279'; -const pdfjsBuild = 'd0823066c'; -{ - if (_is_node.isNodeJS) { - const { - PDFNodeStream - } = __w_pdfjs_require__(31); - (0, _api.setPDFNetworkStreamFactory)(params => { - return new PDFNodeStream(params); - }); - } else { - const { - PDFNetworkStream - } = __w_pdfjs_require__(34); - const { - PDFFetchStream - } = __w_pdfjs_require__(35); - (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/pdf/build/pdf.js.map b/pdf/build/pdf.js.map deleted file mode 100644 index f168c77..0000000 --- a/pdf/build/pdf.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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/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/is_node.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\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n typeof PDFJSDev !== \"undefined\" &&\n !PDFJSDev.test(\"SKIP_BABEL\") &&\n !globalThis._pdfjsCompatibilityChecked\n) {\n globalThis._pdfjsCompatibilityChecked = true;\n require(\"./compatibility.js\");\n}\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};\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 // PLEASE NOTE: We purposely keep any removed operators commented out, since\n // re-numbering the list would risk breaking third-party users.\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 // beginAnnotations: 78,\n // endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\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 forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\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 // 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 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} [isOffscreenCanvasSupported] - Determines if we can use\n * `OffscreenCanvas` in the worker. Primarily used to improve performance of\n * image conversion/rendering.\n * The default value is `true` in web environments and `false` in Node.js.\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.isOffscreenCanvasSupported !== \"boolean\") {\n params.isOffscreenCanvasSupported = !isNodeJS;\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 // Only send the required properties, and *not* the entire `source` object.\n {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n data: source.data,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length,\n docBaseUrl: source.docBaseUrl,\n enableXfa: source.enableXfa,\n evaluatorOptions: {\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n isOffscreenCanvasSupported: source.isOffscreenCanvasSupported,\n fontExtraProperties: source.fontExtraProperties,\n useSystemFonts: source.useSystemFonts,\n cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,\n standardFontDataUrl: source.useWorkerFetch\n ? source.standardFontDataUrl\n : null,\n },\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\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} containing the raw data of the PDF document.\n */\n getData() {\n return this._transport.getData();\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 return this._transport.saveDocument();\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> | 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} [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 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 canvasFactory = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n }) {\n this._stats?.time(\"Overall\");\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 this._stats?.time(\"Page Request\");\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\n this._stats?.timeEnd(\"Rendering\");\n this._stats?.timeEnd(\"Overall\");\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 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 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 this._stats?.time(\"Page Request\");\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 this._stats?.timeEnd(\"Page Request\");\n\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n intentState.displayReadyCapability?.resolve(transparency);\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 #listeners = [];\n\n #deferred = Promise.resolve();\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 // Send global setting, e.g. verbosity level.\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\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 ` - - - - - - -
- -
-
-
-
- - - - -
-
- -
- -
-
-
-
-
- - - -
-
-
- -
- - - - - - - - -
-
-
-
- -
- -
- -
- -
- - -
-
- - - - - - -
- -
- - -
- -
- - -
-
-
- -
- -
- - - -
-
-
-
-
-
-
-
-
-
- -
-
-
-
- -
- -
- -
-
- -
-
- - -
-
- -
- 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/pdf/web/viewer.js b/pdf/web/viewer.js deleted file mode 100644 index 4b50b88..0000000 --- a/pdf/web/viewer.js +++ /dev/null @@ -1,13547 +0,0 @@ -/** - * @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 -}; -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) { - 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: 0, - 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 - }, - isOffscreenCanvasSupported: { - 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 - }); - } - async executeSetOCGState(action) { - const pdfDocument = this.pdfDocument; - const optionalContentConfig = await this.pdfViewer.optionalContentConfigPromise; - if (pdfDocument !== this.pdfDocument) { - return; - } - let operator; - for (const elem of action.state) { - switch (elem) { - case "ON": - case "OFF": - case "Toggle": - operator = elem; - continue; - } - switch (operator) { - case "ON": - optionalContentConfig.setVisibility(elem, true); - break; - case "OFF": - optionalContentConfig.setVisibility(elem, false); - break; - case "Toggle": - const group = optionalContentConfig.getGroup(elem); - if (group) { - optionalContentConfig.setVisibility(elem, !group.visible); - } - break; - } - } - this.pdfViewer.optionalContentConfigPromise = Promise.resolve(optionalContentConfig); - } - 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) {} - executeSetOCGState(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__(38); -var _toolbar = __webpack_require__(39); -var _view_history = __webpack_require__(40); -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, - _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); - } else { - for (const element of [document.getElementById("editorModeButtons"), document.getElementById("editorModeSeparator")]) { - element.hidden = true; - } - } - 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, this.externalServices); - 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, - downloadManager - }); - 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; - } - const editorIndicator = this._hasAnnotationEditors && !this.pdfRenderingQueue.printing; - document.title = `${editorIndicator ? "* " : ""}${title}`; - }, - get _docFilename() { - return this._contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(this.url); - }, - _hideViewBookmark() { - this.appConfig.secondaryToolbar.viewBookmarkButton.hidden = true; - }, - async close() { - this._unblockDocumentLoadEvent(); - this._hideViewBookmark(); - 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; - 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 = [`PDF.js v${_pdfjsLib.version || "?"} (build: ${_pdfjsLib.build || "?"})`]; - if (moreInfo) { - moreInfoText.push(`Message: ${moreInfo.message}`); - if (moreInfo.stack) { - moreInfoText.push(`Stack: ${moreInfo.stack}`); - } else { - if (moreInfo.filename) { - moreInfoText.push(`File: ${moreInfo.filename}`); - } - if (moreInfo.lineNumber) { - moreInfoText.push(`Line: ${moreInfo.lineNumber}`); - } - } - } - console.error(`${message}\n\n${moreInfoText.join("\n")}`); - this.fallback(); - }, - 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 - }); - }); - }); - 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 _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 || "?"} [${_pdfjsLib.build || "?"}])`); - 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(); - this.setTitle(); - 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(); - this.setTitle(); - }, - 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; -{ - const HOSTED_VIEWER_ORIGINS = ["null", "http://mozilla.github.io", "https://mozilla.github.io"]; - var 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.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.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.pdfViewer.isInPresentationMode) { - PDFViewerApplication.store?.set("scrollMode", evt.mode).catch(() => {}); - } -} -function webViewerSpreadModeChanged(evt) { - if (PDFViewerApplication.isInitialViewSet && !PDFViewerApplication.pdfViewer.isInPresentationMode) { - 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; - PDFViewerApplication.externalServices.reportTelemetry({ - type: "buttons", - data: { - id: "presentationModeKeyboard" - } - }); - 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 _pdfjsLib = __webpack_require__(5); -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.previouslyActive = 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.previouslyActive !== 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); - }); - let annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE, - presentationModeState = _ui_utils.PresentationModeState.NORMAL; - const disableActive = () => { - const previouslyActive = this.active; - this.switchTool(CursorTool.SELECT); - this.previouslyActive ??= previouslyActive; - }; - const enableActive = () => { - const previouslyActive = this.previouslyActive; - if (previouslyActive !== null && annotationEditorMode === _pdfjsLib.AnnotationEditorType.NONE && presentationModeState === _ui_utils.PresentationModeState.NORMAL) { - this.previouslyActive = null; - this.switchTool(previouslyActive); - } - }; - this.eventBus._on("secondarytoolbarreset", evt => { - if (this.previouslyActive !== null) { - annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE; - presentationModeState = _ui_utils.PresentationModeState.NORMAL; - enableActive(); - } - }); - this.eventBus._on("annotationeditormodechanged", ({ - mode - }) => { - annotationEditorMode = mode; - if (mode === _pdfjsLib.AnnotationEditorType.NONE) { - enableActive(); - } else { - disableActive(); - } - }); - this.eventBus._on("presentationmodechanged", ({ - state - }) => { - presentationModeState = state; - if (state === _ui_utils.PresentationModeState.NORMAL) { - enableActive(); - } else if (state === _ui_utils.PresentationModeState.FULLSCREEN) { - disableActive(); - } - }); - } -} -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)|(\\p{Ideographic}\\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, p6, 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]); - shiftOrigin += 1; - eol += 1; - return p4.charAt(0); - } - if (p5) { - 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 p6; - }); - 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("optionalcontentconfigchanged", evt => { - this.#updateLayers(evt.promise); - }); - this.eventBus._on("resetlayers", () => { - this.#updateLayers(); - }); - this.eventBus._on("togglelayerstree", this._toggleAllTreeItems.bind(this)); - } - reset() { - super.reset(); - this._optionalContentConfig = null; - this._optionalContentHash = null; - } - _dispatchEvent(layersCount) { - this.eventBus.dispatch("layersloaded", { - source: this, - layersCount - }); - } - _bindLink(element, { - groupId, - input - }) { - const setVisibility = () => { - this._optionalContentConfig.setVisibility(groupId, input.checked); - this._optionalContentHash = this._optionalContentConfig.getHash(); - 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; - } - this._optionalContentHash = optionalContentConfig.getHash(); - 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 #updateLayers(promise = null) { - if (!this._optionalContentConfig) { - return; - } - const pdfDocument = this._pdfDocument; - const optionalContentConfig = await (promise || pdfDocument.getOptionalContentConfig()); - if (pdfDocument !== this._pdfDocument) { - return; - } - if (promise) { - if (optionalContentConfig.getHash() === this._optionalContentHash) { - return; - } - } else { - 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.downloadManager = options.downloadManager; - 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, - action, - attachment, - dest, - setOCGState - }) { - const { - linkService - } = this; - if (url) { - linkService.addLinkAttributes(element, url, newWindow); - return; - } - if (action) { - element.href = linkService.getAnchorUrl(""); - element.onclick = () => { - linkService.executeNamedAction(action); - return false; - }; - return; - } - if (attachment) { - element.href = linkService.getAnchorUrl(""); - element.onclick = () => { - this.downloadManager.openOrDownloadData(element, attachment.content, attachment.filename); - return false; - }; - return; - } - if (setOCGState) { - element.href = linkService.getAnchorUrl(""); - element.onclick = () => { - linkService.executeSetOCGState(setOCGState); - return false; - }; - 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.toggleButton.setAttribute("data-l10n-id", "toggle_sidebar_notification2"); - this.l10n.translate(this.toggleButton); - 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.toggleButton.setAttribute("data-l10n-id", "toggle_sidebar"); - this.l10n.translate(this.toggleButton); - } - } - #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); - } - this._thumbnails[0]?.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.PagesCountLimit = exports.PDFViewer = exports.PDFPageViewBuffer = void 0; -var _pdfjsLib = __webpack_require__(5); -var _ui_utils = __webpack_require__(1); -var _annotation_editor_layer_builder = __webpack_require__(29); -var _annotation_layer_builder = __webpack_require__(31); -var _l10n_utils = __webpack_require__(30); -var _pdf_page_view = __webpack_require__(32); -var _pdf_rendering_queue = __webpack_require__(22); -var _pdf_link_service = __webpack_require__(3); -var _struct_tree_layer_builder = __webpack_require__(34); -var _text_highlighter = __webpack_require__(35); -var _text_layer_builder = __webpack_require__(36); -var _xfa_layer_builder = __webpack_require__(37); -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 PDFViewer { - #buffer = null; - #annotationEditorMode = _pdfjsLib.AnnotationEditorType.NONE; - #annotationEditorUIManager = null; - #annotationMode = _pdfjsLib.AnnotationMode.ENABLE_FORMS; - #enablePermissions = false; - #previousContainerHeight = 0; - #scrollModePageState = null; - #onVisibilityChange = null; - constructor(options) { - const viewerVersion = '3.0.279'; - 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.NONE; - 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("PDFViewer: 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(); - this.findController?.setDocument(null); - 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 () => { - this.findController?.setDocument(pdfDocument); - 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, - eventBus, - highlighter, - accessibilityManager = null - }) { - return new _text_layer_builder.TextLayerBuilder({ - textLayerDiv, - eventBus, - pageIndex, - viewport, - 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.PDFViewer = PDFViewer; - -/***/ }), -/* 29 */ -/***/ ((__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__(30); -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; - -/***/ }), -/* 30 */ -/***/ ((__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", - 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", - 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.", - rendering_error: "An error occurred while rendering the page.", - 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_text2_default_content: "Start typing…", - editor_free_text2_aria_label: "Text Editor", - editor_ink2_aria_label: "Draw Editor", - editor_ink_canvas_aria_label: "User-created image" -}; -{ - DEFAULT_L10N_STRINGS.print_progress_percent = "{{progress}}%"; -} -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; - -/***/ }), -/* 31 */ -/***/ ((__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__(30); -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; - -/***/ }), -/* 32 */ -/***/ ((__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__(30); -var _text_accessibility = __webpack_require__(33); -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(); - 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 (result?.textDivs && 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, - 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; - -/***/ }), -/* 33 */ -/***/ ((__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; - -/***/ }), -/* 34 */ -/***/ ((__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; - -/***/ }), -/* 35 */ -/***/ ((__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 (const match of matches) { - 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; - -/***/ }), -/* 36 */ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.TextLayerBuilder = void 0; -var _pdfjsLib = __webpack_require__(5); -class TextLayerBuilder { - constructor({ - textLayerDiv, - eventBus, - pageIndex, - viewport, - highlighter = null, - 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.accessibilityManager = accessibilityManager; - this.#bindMouse(); - } - #finishRendering() { - this.renderingDone = true; - 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 - }); - 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; - div.addEventListener("mousedown", evt => { - const end = div.querySelector(".endOfContent"); - if (!end) { - return; - } - let adjustTop = evt.target !== div; - adjustTop &&= 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", () => { - const end = div.querySelector(".endOfContent"); - if (!end) { - return; - } - end.style.top = ""; - end.classList.remove("active"); - }); - } -} -exports.TextLayerBuilder = TextLayerBuilder; - -/***/ }), -/* 37 */ -/***/ ((__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; - -/***/ }), -/* 38 */ -/***/ ((__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 _pdf_viewer = __webpack_require__(28); -class SecondaryToolbar { - constructor(options, eventBus, externalServices) { - 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.externalServices = externalServices; - 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(); - } - this.externalServices.reportTelemetry({ - type: "buttons", - data: { - id: element.id - } - }); - }); - } - } - #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 > _pdf_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; - -/***/ }), -/* 39 */ -/***/ ((__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.download, - eventName: "download" - }, { - 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); - const scaleSelectWidth = parseFloat(style.getPropertyValue("--scale-select-width")); - 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 += 0.3 * scaleSelectWidth; - if (maxWidth > scaleSelectWidth) { - _ui_utils.docStyle.setProperty("--scale-select-width", `${maxWidth}px`); - } - canvas.width = 0; - canvas.height = 0; - } -} -exports.Toolbar = Toolbar; - -/***/ }), -/* 40 */ -/***/ ((__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; - -/***/ }), -/* 41 */ -/***/ ((__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__(42); -var _download_manager = __webpack_require__(43); -var _genericl10n = __webpack_require__(44); -var _generic_scripting = __webpack_require__(46); -; -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; - -/***/ }), -/* 42 */ -/***/ ((__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": 0, - "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; - -/***/ }), -/* 43 */ -/***/ ((__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; - -/***/ }), -/* 44 */ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.GenericL10n = void 0; -__webpack_require__(45); -var _l10n_utils = __webpack_require__(30); -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; - -/***/ }), -/* 45 */ -/***/ (() => { - - - -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); - -/***/ }), -/* 46 */ -/***/ ((__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; - -/***/ }), -/* 47 */ -/***/ ((__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__(48); -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(); - event.stopImmediatePropagation(); - } -}, true); -if ("onbeforeprint" in window) { - const stopPropagationIfNeeded = function (event) { - if (event.detail !== "custom") { - 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; - } -}; - -/***/ }), -/* 48 */ -/***/ ((__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__(37); -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 = '3.0.279'; -const pdfjsBuild = 'd0823066c'; -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__(41); -} -; -{ - __webpack_require__(47); -} -function getViewerConfiguration() { - 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"), - download: document.getElementById("download") - }, - secondaryToolbar: { - toolbar: document.getElementById("secondaryToolbar"), - toggleButton: document.getElementById("secondaryToolbarToggle"), - presentationModeButton: document.getElementById("presentationMode"), - openFileButton: document.getElementById("secondaryOpenFile"), - printButton: document.getElementById("secondaryPrint"), - downloadButton: document.getElementById("secondaryDownload"), - viewBookmarkButton: document.getElementById("viewBookmark"), - 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") - }, - 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/pdf/web/viewer.js.map b/pdf/web/viewer.js.map deleted file mode 100644 index e01a3dc..0000000 --- a/pdf/web/viewer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"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/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};\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 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 {number} */\n value: 0,\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 isOffscreenCanvasSupported: {\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 {Object} action\n */\n async executeSetOCGState(action) {\n const pdfDocument = this.pdfDocument;\n const optionalContentConfig = await this.pdfViewer\n .optionalContentConfigPromise;\n\n if (pdfDocument !== this.pdfDocument) {\n return; // The document was closed while the optional content resolved.\n }\n let operator;\n\n for (const elem of action.state) {\n switch (elem) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n operator = elem;\n continue;\n }\n switch (operator) {\n case \"ON\":\n optionalContentConfig.setVisibility(elem, true);\n break;\n case \"OFF\":\n optionalContentConfig.setVisibility(elem, false);\n break;\n case \"Toggle\":\n const group = optionalContentConfig.getGroup(elem);\n if (group) {\n optionalContentConfig.setVisibility(elem, !group.visible);\n }\n break;\n }\n }\n\n this.pdfViewer.optionalContentConfigPromise = Promise.resolve(\n optionalContentConfig\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 {Object} action\n */\n executeSetOCGState(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 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 _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