diff --git a/content/now.md b/content/now.md index 8f980c2..d5078e8 100644 --- a/content/now.md +++ b/content/now.md @@ -14,9 +14,7 @@ I'm in the last month of my second semester at Rutgers University School of Comm I started working as a Data Science Graduate Specialist for Rutgers University Libraries this semester, a role in which I am developing and teaching weekly, open workshops in "Data Science Basics" for individuals who want to improve their data management and visualization skills. In March, I also started working on a pilot study with a professor from the Department of Library and Information Science. - -

The PDF file could not be displayed, but you can still download it.

-
+{{< embed-pdf url="/NJLEND project poster (Yoo, 2023).pdf" hidePaginator="true" >}} ## In my free time My summer plans are nearly finalized. diff --git a/layouts/shortcodes/embed-pdf.html b/layouts/shortcodes/embed-pdf.html new file mode 100644 index 0000000..1c2ecd6 --- /dev/null +++ b/layouts/shortcodes/embed-pdf.html @@ -0,0 +1,263 @@ +{{- if not ($.Page.Scratch.Get "embed-pdf-count") -}} + + + + +{{- end -}} + +{{- $.Page.Scratch.Add "embed-pdf-count" 1 -}} +
+
+
+
+
+ + + +
+ +
+ +
+ +     + + / + + [pdf] +
+ + + + diff --git a/static/.htaccess b/static/.htaccess index b00fc24..6bed918 100644 --- a/static/.htaccess +++ b/static/.htaccess @@ -7,7 +7,7 @@ Header always set X-Content-Type-Options "nosniff" Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" "expr=%{req_novary:X-Forwarded-Proto}=='https'" Header always set Referrer-Policy "no-referrer" Header always set Permissions-Policy "accelerometer=(), ambient-light-sensor=(), autoplay=(), battery=(), camera=(), cross-origin-isolated=(), display-capture=(), document-domain=(), encrypted-media=(), execution-while-not-rendered=(), execution-while-out-of-viewport=(), fullscreen=(), geolocation=(), gyroscope=(), keyboard-map=(), magnetometer=(), microphone=(), midi=(), navigation-override=(), payment=(), picture-in-picture=(), publickey-credentials-get=(), screen-wake-lock=(), sync-xhr=(), usb=(), web-share=(), xr-spatial-tracking=()" -Header always set Content-Security-Policy "default-src 'none'; frame-ancestors 'self'; frame-src 'self'; img-src 'self'; style-src 'self' 'sha256-hgWmJ4N/XjVDdpPaJ9SyNBobcUm30V1q+z6yvJzFRlk='; base-uri 'self'; connect-src 'self'; form-action https://duckduckgo.com; frame-ancestors 'none'; object-src 'self'; script-src-elem 'self'; upgrade-insecure-requests;" +Header always set Content-Security-Policy "default-src 'none'; img-src 'self'; style-src 'self' 'sha256-hgWmJ4N/XjVDdpPaJ9SyNBobcUm30V1q+z6yvJzFRlk='; base-uri 'self'; connect-src 'self'; form-action https://duckduckgo.com; frame-ancestors 'none'; script-src-elem 'self'; upgrade-insecure-requests;" # Set custom error page: https://faq.nearlyfreespeech.net/full/error ErrorDocument 404 /404.html diff --git a/static/js/pdf-js/LICENSE b/static/js/pdf-js/LICENSE new file mode 100644 index 0000000..f433b1a --- /dev/null +++ b/static/js/pdf-js/LICENSE @@ -0,0 +1,177 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/static/js/pdf-js/build/pdf.js b/static/js/pdf-js/build/pdf.js new file mode 100644 index 0000000..212325e --- /dev/null +++ b/static/js/pdf-js/build/pdf.js @@ -0,0 +1,15792 @@ +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * Copyright 2023 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.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.FeatureTest = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.BASELINE_FACTOR = 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.assert = assert; +exports.bytesToString = bytesToString; +exports.createPromiseCapability = createPromiseCapability; +exports.createValidAbsoluteUrl = createValidAbsoluteUrl; +exports.getModificationDate = getModificationDate; +exports.getVerbosityLevel = getVerbosityLevel; +exports.info = info; +exports.isArrayBuffer = isArrayBuffer; +exports.isArrayEqual = isArrayEqual; +exports.objectFromMap = objectFromMap; +exports.objectSize = objectSize; +exports.setVerbosityLevel = setVerbosityLevel; +exports.shadow = shadow; +exports.string32 = string32; +exports.stringToBytes = stringToBytes; +exports.stringToPDFString = stringToPDFString; +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 BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR; +exports.BASELINE_FACTOR = BASELINE_FACTOR; +const RenderingIntentFlag = { + ANY: 0x01, + DISPLAY: 0x02, + PRINT: 0x04, + SAVE: 0x08, + 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 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, nonSerializable = false) { + Object.defineProperty(obj, prop, { + value, + enumerable: !nonSerializable, + 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 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"); + } + static get platform() { + if (typeof navigator === "undefined") { + return shadow(this, "platform", { + isWin: false, + isMac: false + }); + } + return shadow(this, "platform", { + isWin: navigator.platform.includes("Win"), + isMac: navigator.platform.includes("Mac") + }); + } +} +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 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.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__(11); +var _worker_options = __w_pdfjs_require__(14); +var _is_node = __w_pdfjs_require__(10); +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; +{ + if (_is_node.isNodeJS) { + const { + PDFNodeStream + } = __w_pdfjs_require__(21); + createPDFNetworkStream = params => { + return new PDFNodeStream(params); + }; + } else { + const { + PDFNetworkStream + } = __w_pdfjs_require__(24); + const { + PDFFetchStream + } = __w_pdfjs_require__(25); + createPDFNetworkStream = params => { + return (0, _display_utils.isValidFetchUrl)(params.url) ? new PDFFetchStream(params) : new PDFNetworkStream(params); + }; + } +} +function getDocument(src) { + if (typeof src === "string" || src instanceof URL) { + src = { + url: src + }; + } else if ((0, _util.isArrayBuffer)(src)) { + src = { + data: src + }; + } else if (src instanceof PDFDataRangeTransport) { + (0, _display_utils.deprecated)("`PDFDataRangeTransport`-instance, " + "please use a parameter object with `range`-property instead."); + src = { + 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"); + } + const task = new PDFDocumentLoadingTask(); + const url = src.url ? getUrlProp(src.url) : null; + const data = src.data ? getDataProp(src.data) : null; + const httpHeaders = src.httpHeaders || null; + const withCredentials = src.withCredentials === true; + const password = src.password ?? null; + const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null; + const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE; + let worker = src.worker instanceof PDFWorker ? src.worker : null; + const verbosity = src.verbosity; + const docBaseUrl = typeof src.docBaseUrl === "string" && !(0, _display_utils.isDataScheme)(src.docBaseUrl) ? src.docBaseUrl : null; + const cMapUrl = typeof src.cMapUrl === "string" ? src.cMapUrl : null; + const cMapPacked = src.cMapPacked !== false; + const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory; + const standardFontDataUrl = typeof src.standardFontDataUrl === "string" ? src.standardFontDataUrl : null; + const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory; + const ignoreErrors = src.stopAtErrors !== true; + const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1; + const isEvalSupported = src.isEvalSupported !== false; + const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === "boolean" ? src.isOffscreenCanvasSupported : !_is_node.isNodeJS; + const disableFontFace = typeof src.disableFontFace === "boolean" ? src.disableFontFace : _is_node.isNodeJS; + const fontExtraProperties = src.fontExtraProperties === true; + const enableXfa = src.enableXfa === true; + const ownerDocument = src.ownerDocument || globalThis.document; + const disableRange = src.disableRange === true; + const disableStream = src.disableStream === true; + const disableAutoFetch = src.disableAutoFetch === true; + const pdfBug = src.pdfBug === true; + const length = rangeTransport ? rangeTransport.length : src.length ?? NaN; + const useSystemFonts = typeof src.useSystemFonts === "boolean" ? src.useSystemFonts : !_is_node.isNodeJS && !disableFontFace; + const useWorkerFetch = typeof src.useWorkerFetch === "boolean" ? src.useWorkerFetch : CMapReaderFactory === _display_utils.DOMCMapReaderFactory && StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory && (0, _display_utils.isValidFetchUrl)(cMapUrl, document.baseURI) && (0, _display_utils.isValidFetchUrl)(standardFontDataUrl, document.baseURI); + const styleElement = null; + (0, _util.setVerbosityLevel)(verbosity); + const transportFactory = useWorkerFetch ? null : { + cMapReaderFactory: new CMapReaderFactory({ + baseUrl: cMapUrl, + isCompressed: cMapPacked + }), + standardFontDataFactory: new StandardFontDataFactory({ + baseUrl: standardFontDataUrl + }) + }; + if (!worker) { + const workerParams = { + verbosity, + port: _worker_options.GlobalWorkerOptions.workerPort + }; + worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams); + task._worker = worker; + } + const docId = task.docId; + const fetchDocParams = { + docId, + apiVersion: '3.4.120', + data, + password, + disableAutoFetch, + rangeChunkSize, + length, + docBaseUrl, + enableXfa, + evaluatorOptions: { + maxImageSize, + disableFontFace, + ignoreErrors, + isEvalSupported, + isOffscreenCanvasSupported, + fontExtraProperties, + useSystemFonts, + cMapUrl: useWorkerFetch ? cMapUrl : null, + standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null + } + }; + const transportParams = { + ignoreErrors, + isEvalSupported, + disableFontFace, + fontExtraProperties, + enableXfa, + ownerDocument, + disableAutoFetch, + pdfBug, + styleElement + }; + worker.promise.then(function () { + if (task.destroyed) { + throw new Error("Loading aborted"); + } + const workerIdPromise = _fetchDocument(worker, fetchDocParams); + const networkStreamPromise = new Promise(function (resolve) { + let networkStream; + if (rangeTransport) { + networkStream = new _transport_stream.PDFDataTransportStream({ + length, + initialData: rangeTransport.initialData, + progressiveDone: rangeTransport.progressiveDone, + contentDispositionFilename: rangeTransport.contentDispositionFilename, + disableRange, + disableStream + }, rangeTransport); + } else if (!data) { + networkStream = createPDFNetworkStream({ + url, + length, + httpHeaders, + withCredentials, + rangeChunkSize, + disableRange, + 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, transportParams, transportFactory); + task._transport = transport; + messageHandler.send("Ready", null); + }); + }).catch(task._capability.reject); + return task; +} +async function _fetchDocument(worker, source) { + if (worker.destroyed) { + throw new Error("Worker was destroyed"); + } + const workerId = await worker.messageHandler.sendWithPromise("GetDocRequest", source, source.data ? [source.data.buffer] : null); + if (worker.destroyed) { + throw new Error("Worker was destroyed"); + } + return workerId; +} +function getUrlProp(val) { + if (val instanceof URL) { + return val.href; + } + try { + return new URL(val, window.location).href; + } catch (ex) { + if (_is_node.isNodeJS && typeof val === "string") { + return val; + } + } + throw new Error("Invalid PDF url data: " + "either string or URL-object is expected in the url property."); +} +function getDataProp(val) { + if (_is_node.isNodeJS && typeof Buffer !== "undefined" && val instanceof Buffer) { + (0, _display_utils.deprecated)("Please provide binary data as `Uint8Array`, rather than `Buffer`."); + return new Uint8Array(val); + } + if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) { + return val; + } + if (typeof val === "string") { + return (0, _util.stringToBytes)(val); + } + if (typeof val === "object" && !isNaN(val?.length) || (0, _util.isArrayBuffer)(val)) { + return new Uint8Array(val); + } + throw new Error("Invalid PDF binary data: either TypedArray, " + "string, or array-like object is expected in the data property."); +} +class PDFDocumentLoadingTask { + static #docId = 0; + #onUnsupportedFeature = null; + 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; + } + get onUnsupportedFeature() { + return this.#onUnsupportedFeature; + } + set onUnsupportedFeature(callback) { + (0, _display_utils.deprecated)("The PDFDocumentLoadingTask onUnsupportedFeature property will be removed in the future."); + this.#onUnsupportedFeature = callback; + } + 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 isPureXfa() { + return (0, _util.shadow)(this, "isPureXfa", !!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.cleanupAfterRender = false; + this.pendingCleanup = false; + this._intentStates = 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); + return this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent); + } + getJSActions() { + return this._transport.getPageJSActions(this._pageIndex); + } + get isPureXfa() { + return (0, _util.shadow)(this, "isPureXfa", !!this._transport._htmlForXfa); + } + 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._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(); + 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(); + if (resetStats && this._stats) { + this._stats = new _display_utils.StatTimer(); + } + 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 (intentState.streamReaderCancelTimeout) { + clearTimeout(intentState.streamReaderCancelTimeout); + intentState.streamReaderCancelTimeout = null; + } + if (!force) { + if (intentState.renderTasks.size > 0) { + return; + } + if (reason instanceof _display_utils.RenderingCancelledException) { + let delay = RENDERING_CANCELLED_TIMEOUT; + if (reason.extraDelay > 0 && reason.extraDelay < 1000) { + delay += reason.extraDelay; + } + intentState.streamReaderCancelTimeout = setTimeout(() => { + intentState.streamReaderCancelTimeout = null; + this._abortOperatorList({ + intentState, + reason, + force: true + }); + }, delay); + 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 = new Set(); + #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.add(listener); + } + removeEventListener(name, listener) { + this.#listeners.delete(listener); + } + terminate() { + this.#listeners.clear(); + } +} +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 { + #methodPromises = new Map(); + #pageCache = new Map(); + #pagePromises = new Map(); + constructor(messageHandler, loadingTask, networkStream, params, factory) { + 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; + this.cMapReaderFactory = factory?.cMapReaderFactory; + this.standardFontDataFactory = factory?.standardFontDataFactory; + 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(); + } + #cacheSimpleMethod(name, data = null) { + const cachedPromise = this.#methodPromises.get(name); + if (cachedPromise) { + return cachedPromise; + } + const promise = this.messageHandler.sendWithPromise(name, data); + this.#methodPromises.set(name, promise); + return promise; + } + get annotationStorage() { + return (0, _util.shadow)(this, "annotationStorage", new _annotation_storage.AnnotationStorage()); + } + 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.#methodPromises.clear(); + 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)(value instanceof ArrayBuffer, "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)(value instanceof ArrayBuffer, "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 { + width, + height + } = imageData; + length = width * height * 4; + } 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("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.#cacheSimpleMethod("GetFieldObjects"); + } + hasJSActions() { + return this.#cacheSimpleMethod("HasJSActions"); + } + 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() { + const name = "GetMetadata", + cachedPromise = this.#methodPromises.get(name); + if (cachedPromise) { + return cachedPromise; + } + const promise = this.messageHandler.sendWithPromise(name, 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 + }; + }); + this.#methodPromises.set(name, promise); + return promise; + } + 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.#methodPromises.clear(); + } + get loadingParams() { + const { + disableAutoFetch, + enableXfa + } = this._params; + return (0, _util.shadow)(this, "loadingParams", { + disableAutoFetch, + 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() { + for (const objId in this.#objs) { + const { + data + } = this.#objs[objId]; + data?.bitmap?.close(); + } + 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(extraDelay = 0) { + this.#internalRenderTask.cancel(null, extraDelay); + } + 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, extraDelay = 0) { + 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", extraDelay)); + } + 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.4.120'; +exports.version = version; +const build = 'af6414988'; +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 { + #modified = false; + #storage = new Map(); + constructor() { + 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; + } + setAll(obj) { + for (const [key, val] of Object.entries(obj)) { + this.setValue(key, val); + } + } + 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; + _uiManager = null; + #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; + this._uiManager = parameters.uiManager; + const { + rotation, + rawDims: { + pageWidth, + pageHeight, + pageX, + pageY + } + } = this.parent.viewport; + this.rotation = rotation; + this.pageDimensions = [pageWidth, pageHeight]; + this.pageTranslation = [pageX, pageY]; + const [width, height] = this.parentDimensions; + this.x = parameters.x / width; + this.y = parameters.y / height; + this.isAttachedToDOM = false; + } + static get _defaultLineColor() { + return (0, _util.shadow)(this, "_defaultLineColor", this._colorManager.getHexCode("CanvasText")); + } + addCommands(params) { + this._uiManager.addCommands(params); + } + get currentLayer() { + return this._uiManager.currentLayer; + } + setInBackground() { + this.div.style.zIndex = 0; + } + setInForeground() { + this.div.style.zIndex = this.#zIndex; + } + setParent(parent) { + if (parent !== null) { + this.pageIndex = parent.pageIndex; + this.pageDimensions = parent.pageDimensions; + } + this.parent = parent; + } + 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.addToAnnotationStorage(); + } + addToAnnotationStorage() { + this._uiManager.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.parentDimensions; + [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.parentDimensions; + [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) { + switch (this.parentRotation) { + case 90: + return [y, -x]; + case 180: + return [-x, -y]; + case 270: + return [-y, x]; + default: + return [x, y]; + } + } + get parentScale() { + return this._uiManager.viewParameters.realScale; + } + get parentRotation() { + return this._uiManager.viewParameters.rotation; + } + get parentDimensions() { + const { + realScale + } = this._uiManager.viewParameters; + const [pageWidth, pageHeight] = this.pageDimensions; + return [pageWidth * realScale, pageHeight * realScale]; + } + setDims(width, height) { + const [parentWidth, parentHeight] = this.parentDimensions; + 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.parentDimensions; + 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 + } = _util.FeatureTest.platform; + 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 scale = this.parentScale; + const [pageWidth, pageHeight] = this.pageDimensions; + const [pageX, pageY] = this.pageTranslation; + const shiftX = tx / scale; + const shiftY = ty / scale; + 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 + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY]; + case 90: + return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY]; + case 180: + return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY]; + case 270: + return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY]; + 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, uiManager) { + const editor = new this.prototype.constructor({ + parent, + id: parent.getNextId(), + uiManager + }); + editor.rotation = data.rotation; + const [pageWidth, pageHeight] = editor.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 + } = _util.FeatureTest.platform; + 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)); + } + } + } + } + #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(); + #annotationStorage = null; + #commandManager = new CommandManager(); + #currentPageIndex = 0; + #editorTypes = null; + #editorsToRescale = new Set(); + #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); + #boundOnScaleChanging = this.onScaleChanging.bind(this); + #boundOnRotationChanging = this.onRotationChanging.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, annotationStorage) { + this.#container = container; + this.#eventBus = eventBus; + this.#eventBus._on("editingaction", this.#boundOnEditingAction); + this.#eventBus._on("pagechanging", this.#boundOnPageChanging); + this.#eventBus._on("scalechanging", this.#boundOnScaleChanging); + this.#eventBus._on("rotationchanging", this.#boundOnRotationChanging); + this.#annotationStorage = annotationStorage; + this.viewParameters = { + realScale: _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS, + rotation: 0 + }; + } + destroy() { + this.#removeKeyboardManager(); + this.#eventBus._off("editingaction", this.#boundOnEditingAction); + this.#eventBus._off("pagechanging", this.#boundOnPageChanging); + this.#eventBus._off("scalechanging", this.#boundOnScaleChanging); + this.#eventBus._off("rotationchanging", this.#boundOnRotationChanging); + for (const layer of this.#allLayers.values()) { + layer.destroy(); + } + this.#allLayers.clear(); + this.#allEditors.clear(); + this.#editorsToRescale.clear(); + this.#activeEditor = null; + this.#selectedEditors.clear(); + this.#commandManager.destroy(); + } + onPageChanging({ + pageNumber + }) { + this.#currentPageIndex = pageNumber - 1; + } + focusMainContainer() { + this.#container.focus(); + } + addShouldRescale(editor) { + this.#editorsToRescale.add(editor); + } + removeShouldRescale(editor) { + this.#editorsToRescale.delete(editor); + } + onScaleChanging({ + scale + }) { + this.commitOrRemove(); + this.viewParameters.realScale = scale * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS; + for (const editor of this.#editorsToRescale) { + editor.onScaleChanging(); + } + } + onRotationChanging({ + pagesRotation + }) { + this.commitOrRemove(); + this.viewParameters.rotation = pagesRotation; + } + addToAnnotationStorage(editor) { + if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) { + this.#annotationStorage.setValue(editor.id, editor); + } + } + #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(); + } + get currentLayer() { + return this.#allLayers.get(this.#currentPageIndex); + } + get currentPageIndex() { + return this.#currentPageIndex; + } + 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); + this.#annotationStorage?.remove(editor.id); + } + #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; +exports.setLayerDimensions = setLayerDimensions; +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 = (viewBox[3] - viewBox[1]) * scale; + height = (viewBox[2] - viewBox[0]) * scale; + } else { + offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX; + offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY; + width = (viewBox[2] - viewBox[0]) * scale; + height = (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; + } + get rawDims() { + const { + viewBox + } = this; + return (0, _util.shadow)(this, "rawDims", { + pageWidth: viewBox[2] - viewBox[0], + pageHeight: viewBox[3] - viewBox[1], + pageX: viewBox[0], + pageY: viewBox[1] + }); + } + 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, extraDelay = 0) { + super(msg, "RenderingCancelledException"); + this.type = type; + this.extraDelay = extraDelay; + } +} +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, onlyStripPath = false) { + if (!onlyStripPath) { + [url] = url.split(/[#?]/, 1); + } + return url.substring(url.lastIndexOf("/") + 1); +} +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 { + started = Object.create(null); + 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 { + name + } of this.times) { + longest = Math.max(name.length, longest); + } + for (const { + name, + start, + end + } of this.times) { + outBuf.push(`${name.padEnd(longest)} ${end - start}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]; +} +function setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) { + if (viewport instanceof PageViewport) { + const { + pageWidth, + pageHeight + } = viewport.rawDims; + const { + style + } = div; + const widthStr = `calc(var(--scale-factor) * ${pageWidth}px)`; + const heightStr = `calc(var(--scale-factor) * ${pageHeight}px)`; + if (!mustFlip || viewport.rotation % 180 === 0) { + style.width = widthStr; + style.height = heightStr; + } else { + style.width = heightStr; + style.height = widthStr; + } + } + if (mustRotate) { + div.setAttribute("data-main-rotation", viewport.rotation); + } +} + +/***/ }), +/* 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 = true + }) { + 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; + return (h1 >>> 0).toString(16).padStart(8, "0") + (h2 >>> 0).toString(16).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); +var _is_node = __w_pdfjs_require__(10); +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 (_is_node.isNodeJS) { + supported = true; + } else if (typeof navigator !== "undefined" && /Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent)) { + 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) => { + + + +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; + +/***/ }), +/* 11 */ +/***/ ((__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__(12); +var _image_utils = __w_pdfjs_require__(13); +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 = 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, + markedContentStack = null + }, 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 = 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 = 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 = 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; + if (font.isInvalidPDFjsFont) { + const chars = []; + let width = 0; + for (const glyph of glyphs) { + chars.push(glyph.unicode); + width += glyph.width; + } + ctx.fillText(chars.join(""), 0, 0); + current.x += width * widthAdvanceScale * textHScale; + ctx.restore(); + this.compose(); + return undefined; + } + 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, { + optionalContentConfig: this.optionalContentConfig, + markedContentStack: this.markedContentStack + }); + } + }; + 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, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]); + 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]; + } +} + +/***/ }), +/* 12 */ +/***/ ((__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); +const PathType = { + FILL: "Fill", + STROKE: "Stroke", + SHADING: "Shading" +}; +exports.PathType = PathType; +function applyBoundingBox(ctx, bbox) { + if (!bbox) { + 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; + +/***/ }), +/* 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 = null; +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({ + length, + initialData, + progressiveDone = false, + contentDispositionFilename = null, + disableRange = false, + disableStream = false + }, pdfDataRangeTransport) { + (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.'); + this._queuedChunks = []; + this._progressiveDone = progressiveDone; + this._contentDispositionFilename = contentDispositionFilename; + if (initialData?.length > 0) { + const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer; + this._queuedChunks.push(buffer); + } + this._pdfDataRangeTransport = pdfDataRangeTransport; + this._isStreamingSupported = !disableStream; + this._isRangeSupported = !disableRange; + this._contentLength = 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({ + begin, + chunk + }) { + const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer; + if (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 !== 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.PDFNodeStream = void 0; +var _util = __w_pdfjs_require__(1); +var _network_utils = __w_pdfjs_require__(22); +; +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 (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 + })); + } +} + +/***/ }), +/* 22 */ +/***/ ((__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__(23); +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; +} + +/***/ }), +/* 23 */ +/***/ ((__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 ""; +} + +/***/ }), +/* 24 */ +/***/ ((__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__(22); +; +const OK_RESPONSE = 200; +const PARTIAL_CONTENT_RESPONSE = 206; +function getArrayBuffer(xhr) { + const data = xhr.response; + if (typeof data !== "string") { + return data; + } + return (0, _util.stringToBytes)(data).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 (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(); + } +} + +/***/ }), +/* 25 */ +/***/ ((__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__(22); +; +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 (value === undefined) { + continue; + } + headers.append(property, value); + } + return headers; +} +function getArrayBuffer(val) { + if (val instanceof Uint8Array) { + return val.buffer; + } + if (val instanceof ArrayBuffer) { + return val; + } + (0, _util.warn)(`getArrayBuffer - unexpected data format: ${val}`); + return new Uint8Array(val).buffer; +} +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 + }); + return { + value: getArrayBuffer(value), + 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 + }); + return { + value: getArrayBuffer(value), + done: false + }; + } + cancel(reason) { + this._reader?.cancel(reason); + this._abortController.abort(); + } +} + +/***/ }), +/* 26 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextLayerRenderTask = void 0; +exports.renderTextLayer = renderTextLayer; +exports.updateTextLayer = updateTextLayer; +var _util = __w_pdfjs_require__(1); +var _display_utils = __w_pdfjs_require__(6); +const MAX_TEXT_DIVS_TO_RENDER = 100000; +const DEFAULT_FONT_SIZE = 30; +const DEFAULT_FONT_ASCENT = 0.8; +const ascentCache = new Map(); +function getCtx(size, isOffscreenCanvasSupported) { + let ctx; + if (isOffscreenCanvasSupported && _util.FeatureTest.isOffscreenCanvasSupported) { + ctx = new OffscreenCanvas(size, size).getContext("2d", { + alpha: false + }); + } else { + const canvas = document.createElement("canvas"); + canvas.width = canvas.height = size; + ctx = canvas.getContext("2d", { + alpha: false + }); + } + return ctx; +} +function getAscent(fontFamily, isOffscreenCanvasSupported) { + const cachedAscent = ascentCache.get(fontFamily); + if (cachedAscent) { + return cachedAscent; + } + const ctx = getCtx(DEFAULT_FONT_SIZE, isOffscreenCanvasSupported); + ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`; + const metrics = ctx.measureText(""); + let ascent = metrics.fontBoundingBoxAscent; + let descent = Math.abs(metrics.fontBoundingBoxDescent); + if (ascent) { + const ratio = ascent / (ascent + descent); + ascentCache.set(fontFamily, ratio); + ctx.canvas.width = ctx.canvas.height = 0; + 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.canvas.width = ctx.canvas.height = 0; + 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) { + 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._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, task._isOffscreenCanvasSupported); + 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); + } + const scaleFactorStr = "calc(var(--scale-factor)*"; + const divStyle = textDiv.style; + if (task._container === task._rootContainer) { + divStyle.left = `${(100 * left / task._pageWidth).toFixed(2)}%`; + divStyle.top = `${(100 * top / task._pageHeight).toFixed(2)}%`; + } else { + divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`; + divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`; + } + divStyle.fontSize = `${scaleFactorStr}${fontHeight.toFixed(2)}px)`; + divStyle.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) { + textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width; + } + task._textDivProperties.set(textDiv, textDivProperties); + if (task._isReadableStream) { + task._layoutText(textDiv); + } +} +function layout(params) { + const { + div, + scale, + properties, + ctx, + prevFontSize, + prevFontFamily + } = params; + const { + style + } = div; + let transform = ""; + if (properties.canvasWidth !== 0 && properties.hasText) { + const { + fontFamily + } = style; + const { + canvasWidth, + fontSize + } = properties; + if (prevFontSize !== fontSize || prevFontFamily !== fontFamily) { + ctx.font = `${fontSize * scale}px ${fontFamily}`; + params.prevFontSize = fontSize; + params.prevFontFamily = fontFamily; + } + const { + width + } = ctx.measureText(div.textContent); + if (width > 0) { + transform = `scaleX(${canvasWidth * scale / width})`; + } + } + if (properties.angle !== 0) { + transform = `rotate(${properties.angle}deg) ${transform}`; + } + if (transform.length > 0) { + style.transform = transform; + } +} +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) { + capability.resolve(); + return; + } + if (!task._isReadableStream) { + for (const textDiv of textDivs) { + task._layoutText(textDiv); + } + } + capability.resolve(); +} +class TextLayerRenderTask { + constructor({ + textContentSource, + container, + viewport, + textDivs, + textDivProperties, + textContentItemsStr, + isOffscreenCanvasSupported + }) { + this._textContentSource = textContentSource; + this._isReadableStream = textContentSource instanceof ReadableStream; + this._container = this._rootContainer = container; + this._textDivs = textDivs || []; + this._textContentItemsStr = textContentItemsStr || []; + this._isOffscreenCanvasSupported = isOffscreenCanvasSupported; + this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled; + this._reader = null; + this._textDivProperties = textDivProperties || new WeakMap(); + this._canceled = false; + this._capability = (0, _util.createPromiseCapability)(); + this._layoutTextParams = { + prevFontSize: null, + prevFontFamily: null, + div: null, + scale: viewport.scale * (globalThis.devicePixelRatio || 1), + properties: null, + ctx: getCtx(0, isOffscreenCanvasSupported) + }; + const { + pageWidth, + pageHeight, + pageX, + pageY + } = viewport.rawDims; + this._transform = [1, 0, 0, -1, -pageX, pageY + pageHeight]; + this._pageWidth = pageWidth; + this._pageHeight = pageHeight; + (0, _display_utils.setLayerDimensions)(container, viewport); + this._capability.promise.finally(() => { + this._layoutTextParams = 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; + } + this._capability.reject(new _util.AbortException("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); + } + } + _layoutText(textDiv) { + const textDivProperties = this._layoutTextParams.properties = this._textDivProperties.get(textDiv); + this._layoutTextParams.div = textDiv; + layout(this._layoutTextParams); + if (textDivProperties.hasText) { + this._container.append(textDiv); + } + if (textDivProperties.hasEOL) { + const br = document.createElement("br"); + br.setAttribute("role", "presentation"); + this._container.append(br); + } + } + _render() { + const capability = (0, _util.createPromiseCapability)(); + let styleCache = Object.create(null); + if (this._isReadableStream) { + 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._textContentSource.getReader(); + pump(); + } else if (this._textContentSource) { + const { + items, + styles + } = this._textContentSource; + this._processItems(items, styles); + capability.resolve(); + } else { + throw new Error('No "textContentSource" parameter specified.'); + } + capability.promise.then(() => { + styleCache = null; + render(this); + }, this._capability.reject); + } +} +exports.TextLayerRenderTask = TextLayerRenderTask; +function renderTextLayer(params) { + if (!params.textContentSource && (params.textContent || params.textContentStream)) { + (0, _display_utils.deprecated)("The TextLayerRender `textContent`/`textContentStream` parameters " + "will be removed in the future, please use `textContentSource` instead."); + params.textContentSource = params.textContent || params.textContentStream; + } + const task = new TextLayerRenderTask(params); + task._render(); + return task; +} +function updateTextLayer({ + container, + viewport, + textDivs, + textDivProperties, + isOffscreenCanvasSupported, + mustRotate = true, + mustRescale = true +}) { + if (mustRotate) { + (0, _display_utils.setLayerDimensions)(container, { + rotation: viewport.rotation + }); + } + if (mustRescale) { + const ctx = getCtx(0, isOffscreenCanvasSupported); + const scale = viewport.scale * (globalThis.devicePixelRatio || 1); + const params = { + prevFontSize: null, + prevFontFamily: null, + div: null, + scale, + properties: null, + ctx + }; + for (const div of textDivs) { + params.properties = textDivProperties.get(div); + params.div = div; + layout(params); + } + } +} + +/***/ }), +/* 27 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationEditorLayer = void 0; +var _util = __w_pdfjs_require__(1); +var _tools = __w_pdfjs_require__(5); +var _freetext = __w_pdfjs_require__(28); +var _ink = __w_pdfjs_require__(29); +var _display_utils = __w_pdfjs_require__(6); +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.pageIndex = options.pageIndex; + this.div = options.div; + this.#accessibilityManager = options.accessibilityManager; + this.#uiManager.addLayer(this); + } + get isEmpty() { + return this.#editors.size === 0; + } + 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(); + if (mode !== _util.AnnotationEditorType.NONE) { + this.div.classList.toggle("freeTextEditing", mode === _util.AnnotationEditorType.FREETEXT); + this.div.classList.toggle("inkEditing", mode === _util.AnnotationEditorType.INK); + this.div.hidden = false; + } + } + 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(); + } + this.#cleanup(); + if (this.isEmpty) { + this.div.hidden = true; + } + } + 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); + 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.parent?.detach(editor); + editor.setParent(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.#uiManager.addToAnnotationStorage(editor); + } + moveEditorInDOM(editor) { + this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true); + } + 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, this.#uiManager); + case _util.AnnotationEditorType.INK: + return _ink.InkEditor.deserialize(data, this, this.#uiManager); + } + return null; + } + #createAndAddNewEditor(event) { + const id = this.getNextId(); + const editor = this.#createNewEditor({ + parent: this, + id, + x: event.offsetX, + y: event.offsetY, + uiManager: this.#uiManager + }); + 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 + } = _util.FeatureTest.platform; + 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 + } = _util.FeatureTest.platform; + 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.setParent(null); + editor.isAttachedToDOM = false; + editor.div.remove(); + } + 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({ + viewport + }) { + this.viewport = viewport; + (0, _display_utils.setLayerDimensions)(this.div, viewport); + (0, _tools.bindEvents)(this, this.div, ["dragover", "drop"]); + for (const editor of this.#uiManager.getEditors(this.pageIndex)) { + this.add(editor); + } + this.updateMode(); + } + update({ + viewport + }) { + this.#uiManager.commitOrRemove(); + this.viewport = viewport; + (0, _display_utils.setLayerDimensions)(this.div, { + rotation: viewport.rotation + }); + this.updateMode(); + } + get pageDimensions() { + const { + pageWidth, + pageHeight + } = this.viewport.rawDims; + return [pageWidth, pageHeight]; + } +} +exports.AnnotationEditorLayer = AnnotationEditorLayer; + +/***/ }), +/* 28 */ +/***/ ((__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.parentScale); + this.#fontSize = size; + this.#setEditorDimensions(); + }; + const savedFontsize = this.#fontSize; + this.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.addCommands({ + cmd: () => { + this.#color = this.editorDiv.style.color = color; + }, + undo: () => { + this.#color = this.editorDiv.style.color = savedColor; + }, + mustExec: true, + type: _util.AnnotationEditorParamsType.FREETEXT_COLOR, + overwriteIfSameType: true, + keepUndo: true + }); + } + getInitialTranslation() { + const scale = this.parentScale; + return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale]; + } + 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({ + preventScroll: true + }); + 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) { + buffer.push(div.innerText.replace(/\r\n?|\n/, "")); + } + return buffer.join("\n"); + } + #setEditorDimensions() { + const [parentWidth, parentHeight] = this.parentDimensions; + let rect; + if (this.isAttachedToDOM) { + rect = this.div.getBoundingClientRect(); + } else { + const { + currentLayer, + div + } = this; + const savedDisplay = div.style.display; + div.style.display = "hidden"; + currentLayer.div.append(this.div); + rect = div.getBoundingClientRect(); + div.remove(); + div.style.display = savedDisplay; + } + this.width = rect.width / parentWidth; + this.height = rect.height / parentHeight; + } + commit() { + if (!this.isInEditMode()) { + return; + } + 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.parentDimensions; + 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, uiManager) { + const editor = super.deserialize(data, parent, uiManager); + 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.parentScale; + const rect = this.getRect(padding, padding); + const color = _editor.AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color); + return { + annotationType: _util.AnnotationEditorType.FREETEXT, + color, + fontSize: this.#fontSize, + value: this.#content, + pageIndex: this.pageIndex, + rect, + rotation: this.rotation + }; + } +} +exports.FreeTextEditor = FreeTextEditor; + +/***/ }), +/* 29 */ +/***/ ((__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__(30); +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.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.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.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(); + } + setParent(parent) { + if (!this.parent && parent) { + this._uiManager.removeShouldRescale(this); + } else if (this.parent && parent === null) { + this._uiManager.addShouldRescale(this); + } + super.setParent(parent); + } + onScaleChanging() { + const [parentWidth, parentHeight] = this.parentDimensions; + const width = this.width * parentWidth; + const height = this.height * parentHeight; + this.setDimensions(width, height); + } + 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 { + parentRotation, + parentDimensions: [width, height] + } = this; + switch (parentRotation) { + case 90: + return [0, height, height, width]; + case 180: + return [width, height, width, height]; + case 270: + return [width, 0, height, width]; + default: + return [0, 0, width, height]; + } + } + #setStroke() { + const { + ctx, + color, + opacity, + thickness, + parentScale, + scaleFactor + } = this; + ctx.lineWidth = thickness * parentScale / scaleFactor; + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + ctx.miterLimit = 10; + ctx.strokeStyle = `${color}${(0, _tools.opacityToHex)(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.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({ + preventScroll: true + }); + } + 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.addToAnnotationStorage(); + } + #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.parentDimensions; + 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.parentDimensions; + 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.parentDimensions; + 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.parentScale) : 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.parentDimensions; + 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, uiManager) { + const editor = super.deserialize(data, parent, uiManager); + editor.thickness = data.thickness; + editor.color = _util.Util.makeHexColor(...data.color); + editor.opacity = data.opacity; + const [pageWidth, pageHeight] = editor.pageDimensions; + const width = editor.width * pageWidth; + const height = editor.height * pageHeight; + const scaleFactor = editor.parentScale; + 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.parentScale, this.translationX, this.translationY, height), + pageIndex: this.pageIndex, + rect, + rotation: this.rotation + }; + } +} +exports.InkEditor = InkEditor; + +/***/ }), +/* 30 */ +/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.fitCurve = void 0; +const fitCurve = __w_pdfjs_require__(31); +exports.fitCurve = fitCurve; + +/***/ }), +/* 31 */ +/***/ ((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; + +/***/ }), +/* 32 */ +/***/ ((__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__(33); +var _xfa_layer = __w_pdfjs_require__(34); +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; + if (isRenderable) { + this.container = this._createContainer(ignoreBorder); + } + if (createQuadrilaterals) { + this.quadrilaterals = this._createQuadrilaterals(ignoreBorder); + } + } + _createContainer(ignoreBorder = false) { + const { + data, + page, + viewport + } = this; + const container = document.createElement("section"); + container.setAttribute("data-annotation-id", data.id); + const { + pageWidth, + pageHeight, + pageX, + pageY + } = viewport.rawDims; + const { + width, + height + } = getRectDims(data.rect); + 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] - pageX) / pageWidth}%`; + container.style.top = `${100 * (rect[1] - pageY) / 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 { + pageWidth, + pageHeight + } = this.viewport.rawDims; + 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; + } +} +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; + } + #setInternalLink() { + this.container.setAttribute("data-internal-link", ""); + } + _bindLink(link, destination) { + link.href = this.linkService.getDestinationHash(destination); + link.onclick = () => { + if (destination) { + this.linkService.goToDestination(destination); + } + return false; + }; + if (destination || destination === "") { + this.#setInternalLink(); + } + } + _bindNamedAction(link, action) { + link.href = this.linkService.getAnchorUrl(""); + link.onclick = () => { + this.linkService.executeNamedAction(action); + return false; + }; + this.#setInternalLink(); + } + _bindAttachment(link, attachment) { + link.href = this.linkService.getAnchorUrl(""); + link.onclick = () => { + this.downloadManager?.openOrDownloadData(this.container, attachment.content, attachment.filename); + return false; + }; + this.#setInternalLink(); + } + #bindSetOCGState(link, action) { + link.href = this.linkService.getAnchorUrl(""); + link.onclick = () => { + this.linkService.executeSetOCGState(action); + return false; + }; + this.#setInternalLink(); + } + _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; + } + this.#setInternalLink(); + } + _bindResetFormAction(link, resetForm) { + const otherClickAction = link.onclick; + if (!otherClickAction) { + link.href = this.linkService.getAnchorUrl(""); + } + this.#setInternalLink(); + 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 + } = _util.FeatureTest.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, + lastCommittedValue: null, + commitKey: 1 + }; + 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 => { + const { + target + } = event; + if (elementData.userValue) { + target.value = elementData.userValue; + } + elementData.lastCommittedValue = target.value; + elementData.commitKey = 1; + }); + 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 => { + elementData.commitKey = 1; + let commitKey = -1; + if (event.key === "Escape") { + commitKey = 0; + } else if (event.key === "Enter" && !this.data.multiLine) { + commitKey = 2; + } else if (event.key === "Tab") { + elementData.commitKey = 3; + } + if (commitKey === -1) { + return; + } + const { + value + } = event.target; + if (elementData.lastCommittedValue === value) { + return; + } + elementData.lastCommittedValue = value; + 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 => { + if (!event.relatedTarget) { + return; + } + const { + value + } = event.target; + elementData.userValue = value; + if (elementData.lastCommittedValue !== value) { + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value, + willCommit: true, + commitKey: elementData.commitKey, + selStart: event.target.selectionStart, + selEnd: event.target.selectionEnd + } + }); + } + _blurListener(event); + }); + if (this.data.actions?.Keystroke) { + element.addEventListener("beforeinput", event => { + elementData.lastCommittedValue = null; + 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 = isExport => { + const name = isExport ? "value" : "textContent"; + const { + options, + multiple + } = selectElement; + if (!multiple) { + return options.selectedIndex === -1 ? null : options[options.selectedIndex][name]; + } + return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]); + }; + let selectedValues = getValue(false); + 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(true) + }); + selectedValues = getValue(false); + }, + 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(true), + items: getItems(event) + }); + selectedValues = getValue(false); + }, + clear(event) { + while (selectElement.length !== 0) { + selectElement.remove(0); + } + storage.setValue(id, { + value: null, + items: [] + }); + selectedValues = getValue(false); + }, + 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(true), + items: getItems(event) + }); + selectedValues = getValue(false); + }, + 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(true), + items: getItems(event) + }); + selectedValues = getValue(false); + }, + 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(true) + }); + selectedValues = getValue(false); + }, + editable(event) { + event.target.disabled = !event.detail.editable; + } + }; + this._dispatchEventFromSandbox(actions, jsEvent); + }); + selectElement.addEventListener("input", event => { + const exportValue = getValue(true); + storage.setValue(id, { + value: exportValue + }); + event.preventDefault(); + this.linkService.eventBus?.dispatch("dispatcheventinsandbox", { + source: this, + detail: { + id, + name: "Keystroke", + value: selectedValues, + changeEx: exportValue, + willCommit: false, + 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"], ["input", "Validate"]], event => event.target.value); + } else { + selectElement.addEventListener("input", function (event) { + storage.setValue(id, { + value: getValue(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 { + pageWidth, + pageHeight, + pageX, + pageY + } = this.viewport.rawDims; + this.container.style.left = `${100 * (popupLeft - pageX) / pageWidth}%`; + this.container.style.top = `${100 * (popupTop - pageY) / 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, true); + this.content = content; + this.linkService.eventBus?.dispatch("fileattachmentannotation", { + source: this, + filename, + content + }); + } + render() { + this.container.className = "fileAttachmentAnnotation"; + let trigger; + if (this.data.hasAppearance) { + trigger = document.createElement("div"); + } else { + trigger = document.createElement("img"); + trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(this.data.name) ? "paperclip" : "pushpin"}.svg`; + } + 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(params) { + const { + annotations, + div, + viewport, + accessibilityManager + } = params; + (0, _display_utils.setLayerDimensions)(div, viewport); + const elementParams = { + data: null, + layer: div, + page: params.page, + viewport, + linkService: params.linkService, + downloadManager: params.downloadManager, + imageResourcesPath: params.imageResourcesPath || "", + renderForms: params.renderForms !== false, + svgFactory: new _display_utils.DOMSVGFactory(), + annotationStorage: params.annotationStorage || new _annotation_storage.AnnotationStorage(), + enableScripting: params.enableScripting === true, + hasJSActions: params.hasJSActions, + fieldObjects: params.fieldObjects + }; + 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; + } + } + elementParams.data = data; + const element = AnnotationElementFactory.create(elementParams); + if (!element.isRenderable) { + continue; + } + 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, params.annotationCanvasMap); + } + static update(params) { + const { + annotationCanvasMap, + div, + viewport + } = params; + (0, _display_utils.setLayerDimensions)(div, { + rotation: viewport.rotation + }); + this.#setAnnotationCanvasMap(div, annotationCanvasMap); + div.hidden = false; + } + 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; + +/***/ }), +/* 33 */ +/***/ ((__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; + +/***/ }), +/* 34 */ +/***/ ((__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; + +/***/ }), +/* 35 */ +/***/ ((__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__(10); +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; + } + }; +} + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // 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, "AbortException", ({ + enumerable: true, + get: function () { + return _util.AbortException; + } +})); +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, "FeatureTest", ({ + enumerable: true, + get: function () { + return _util.FeatureTest; + } +})); +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, "isDataScheme", ({ + enumerable: true, + get: function () { + return _display_utils.isDataScheme; + } +})); +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, "setLayerDimensions", ({ + enumerable: true, + get: function () { + return _display_utils.setLayerDimensions; + } +})); +Object.defineProperty(exports, "shadow", ({ + enumerable: true, + get: function () { + return _util.shadow; + } +})); +Object.defineProperty(exports, "updateTextLayer", ({ + enumerable: true, + get: function () { + return _text_layer.updateTextLayer; + } +})); +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 _text_layer = __w_pdfjs_require__(26); +var _annotation_editor_layer = __w_pdfjs_require__(27); +var _tools = __w_pdfjs_require__(5); +var _annotation_layer = __w_pdfjs_require__(32); +var _worker_options = __w_pdfjs_require__(14); +var _svg = __w_pdfjs_require__(35); +var _xfa_layer = __w_pdfjs_require__(34); +const pdfjsVersion = '3.4.120'; +const pdfjsBuild = 'af6414988'; +})(); + +/******/ return __webpack_exports__; +/******/ })() +; +}); +//# sourceMappingURL=pdf.js.map \ No newline at end of file diff --git a/static/js/pdf-js/build/pdf.js.map b/static/js/pdf-js/build/pdf.js.map new file mode 100644 index 0000000..de46837 --- /dev/null +++ b/static/js/pdf-js/build/pdf.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pdf.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf/src/shared/util.js","webpack://pdfjs-dist/build/pdf/src/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/shared/is_node.js","webpack://pdfjs-dist/build/pdf/src/display/canvas.js","webpack://pdfjs-dist/build/pdf/src/display/pattern_helper.js","webpack://pdfjs-dist/build/pdf/src/shared/image_utils.js","webpack://pdfjs-dist/build/pdf/src/display/worker_options.js","webpack://pdfjs-dist/build/pdf/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf/src/display/metadata.js","webpack://pdfjs-dist/build/pdf/src/display/optional_content_config.js","webpack://pdfjs-dist/build/pdf/src/display/transport_stream.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_text.js","webpack://pdfjs-dist/build/pdf/src/display/node_utils.js","webpack://pdfjs-dist/build/pdf/src/display/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/src/display/text_layer.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/svg.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;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\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 SAVE: 0x08,\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 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 typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")\n ? {\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 : null;\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, nonSerializable = false) {\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: !nonSerializable,\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\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 static get platform() {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n typeof navigator === \"undefined\"\n ) {\n return shadow(this, \"platform\", { isWin: false, isMac: false });\n }\n return shadow(this, \"platform\", {\n isWin: navigator.platform.includes(\"Win\"),\n isMac: navigator.platform.includes(\"Mac\"),\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 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 assert,\n BaseException,\n BASELINE_FACTOR,\n bytesToString,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\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 string32,\n stringToBytes,\n stringToPDFString,\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 isValidFetchUrl,\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\nlet createPDFNetworkStream;\nif (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n const streamsPromise = Promise.all([\n import(\"./network.js\"),\n import(\"./fetch_stream.js\"),\n ]);\n\n createPDFNetworkStream = async params => {\n const [{ PDFNetworkStream }, { PDFFetchStream }] = await streamsPromise;\n\n return isValidFetchUrl(params.url)\n ? new PDFFetchStream(params)\n : new PDFNetworkStream(params);\n };\n} else if (PDFJSDev.test(\"GENERIC || CHROME\")) {\n if (PDFJSDev.test(\"GENERIC\") && isNodeJS) {\n const { PDFNodeStream } = require(\"./node_stream.js\");\n\n createPDFNetworkStream = params => {\n return new PDFNodeStream(params);\n };\n } else {\n const { PDFNetworkStream } = require(\"./network.js\");\n const { PDFFetchStream } = require(\"./fetch_stream.js\");\n\n createPDFNetworkStream = params => {\n return isValidFetchUrl(params.url)\n ? new PDFFetchStream(params)\n : new PDFNetworkStream(params);\n };\n }\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 TypedArrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n *\n * NOTE: If TypedArrays are used they will generally be transferred to the\n * worker-thread. This will help reduce main-thread memory usage, however\n * it will take ownership of the TypedArrays.\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 {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. The default value is `true`.\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 * 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 {string | URL | TypedArray | ArrayBuffer | DocumentInitParameters}\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 if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = { url: src };\n } else if (isArrayBuffer(src)) {\n src = { data: src };\n } else if (src instanceof PDFDataRangeTransport) {\n deprecated(\n \"`PDFDataRangeTransport`-instance, \" +\n \"please use a parameter object with `range`-property instead.\"\n );\n src = { 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 }\n } else if (typeof src !== \"object\") {\n throw new Error(\"Invalid parameter in getDocument, need parameter object.\");\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 const task = new PDFDocumentLoadingTask();\n\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport =\n src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize =\n Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0\n ? src.rangeChunkSize\n : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\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 const docBaseUrl =\n typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl)\n ? src.docBaseUrl\n : null;\n const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n const standardFontDataUrl =\n typeof src.standardFontDataUrl === \"string\"\n ? src.standardFontDataUrl\n : null;\n const StandardFontDataFactory =\n src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize =\n Number.isInteger(src.maxImageSize) && src.maxImageSize > -1\n ? src.maxImageSize\n : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported =\n typeof src.isOffscreenCanvasSupported === \"boolean\"\n ? src.isOffscreenCanvasSupported\n : !isNodeJS;\n const disableFontFace =\n typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n\n // Parameters whose default values depend on other parameters.\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts =\n typeof src.useSystemFonts === \"boolean\"\n ? src.useSystemFonts\n : !isNodeJS && !disableFontFace;\n const useWorkerFetch =\n typeof src.useWorkerFetch === \"boolean\"\n ? src.useWorkerFetch\n : (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n (CMapReaderFactory === DOMCMapReaderFactory &&\n StandardFontDataFactory === DOMStandardFontDataFactory &&\n isValidFetchUrl(cMapUrl, document.baseURI) &&\n isValidFetchUrl(standardFontDataUrl, document.baseURI));\n\n // Parameters only intended for development/testing purposes.\n const styleElement =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n ? src.styleElement\n : null;\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(verbosity);\n\n // Ensure that the various factories can be initialized, when necessary,\n // since the user may provide *custom* ones.\n const transportFactory = useWorkerFetch\n ? null\n : {\n cMapReaderFactory: new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked,\n }),\n standardFontDataFactory: new StandardFontDataFactory({\n baseUrl: standardFontDataUrl,\n }),\n };\n\n if (!worker) {\n const workerParams = {\n 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\n const fetchDocParams = {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n fontExtraProperties,\n useSystemFonts,\n cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null,\n },\n };\n const transportParams = {\n ignoreErrors,\n isEvalSupported,\n disableFontFace,\n fontExtraProperties,\n enableXfa,\n ownerDocument,\n disableAutoFetch,\n pdfBug,\n styleElement,\n };\n\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(worker, fetchDocParams);\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length,\n initialData: rangeTransport.initialData,\n progressiveDone: rangeTransport.progressiveDone,\n contentDispositionFilename:\n rangeTransport.contentDispositionFilename,\n disableRange,\n disableStream,\n },\n rangeTransport\n );\n } else if (!data) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: createPDFNetworkStream\");\n }\n networkStream = createPDFNetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n 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 transportParams,\n transportFactory\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 * @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) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n source,\n source.data ? [source.data.buffer] : null\n );\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\nfunction getUrlProp(val) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return null; // The 'url' is unused with `PDFDataRangeTransport`.\n }\n if (val instanceof URL) {\n return val.href;\n }\n try {\n // The full path is required in the 'url' field.\n return new URL(val, window.location).href;\n } catch (ex) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof val === \"string\"\n ) {\n return val; // Use the url as-is in Node.js environments.\n }\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n}\n\nfunction getDataProp(val) {\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 val instanceof Buffer // eslint-disable-line no-undef\n ) {\n deprecated(\n \"Please provide binary data as `Uint8Array`, rather than `Buffer`.\"\n );\n return new Uint8Array(val);\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n // Use the data as-is when it's already a Uint8Array that completely\n // \"utilizes\" its underlying ArrayBuffer, to prevent any possible\n // issues when transferring it to the worker-thread.\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if ((typeof val === \"object\" && !isNaN(val?.length)) || isArrayBuffer(val)) {\n return new Uint8Array(val);\n }\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\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 #onUnsupportedFeature = null;\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 /**\n * @type {function | null} The current callback used with unsupported\n * features.\n */\n get onUnsupportedFeature() {\n return this.#onUnsupportedFeature;\n }\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 set onUnsupportedFeature(callback) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n deprecated(\n \"The PDFDocumentLoadingTask onUnsupportedFeature property will be removed in the future.\"\n );\n this.#onUnsupportedFeature = callback;\n }\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 *\n * NOTE: The TypedArrays passed to the constructor and relevant methods below\n * will generally be transferred to the worker-thread. This will help reduce\n * main-thread memory usage, however it will take ownership of the TypedArrays.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array|null} 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 /**\n * @param {function} listener\n */\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n /**\n * @param {number} begin\n * @param {Uint8Array|null} chunk\n */\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n /**\n * @param {number} loaded\n * @param {number|undefined} total\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 /**\n * @param {Uint8Array|null} chunk\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 /**\n * @param {number} begin\n * @param {number} end\n */\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"getXFADatasets\", {\n value: () => {\n return this._transport.getXFADatasets();\n },\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!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.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this._intentStates = 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 return this._transport.getAnnotations(\n this._pageIndex,\n intentArgs.renderingIntent\n );\n }\n\n /**\n * @returns {Promise} A promise that is resolved with an\n * {Object} with JS actions.\n */\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\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._transport.getStructTree(this._pageIndex);\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 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 if (resetStats && this._stats) {\n this._stats = new StatTimer();\n }\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 // 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 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 let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < /* ms = */ 1000) {\n // Above, we prevent the total delay from becoming arbitrarily large.\n delay += reason.extraDelay;\n }\n\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({ intentState, reason, force: true });\n }, delay);\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 = new Set();\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.add(listener);\n }\n\n removeEventListener(name, listener) {\n this.#listeners.delete(listener);\n }\n\n terminate() {\n this.#listeners.clear();\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 =\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) &&\n !workerSrc.endsWith(\"/build/pdf.worker.js\") &&\n !workerSrc.endsWith(\"/src/worker_loader.js\")\n ? new Worker(workerSrc, { type: \"module\" })\n : 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/static/js/pdf-js/web/viewer.js b/static/js/pdf-js/web/viewer.js new file mode 100644 index 0000000..6706c10 --- /dev/null +++ b/static/js/pdf-js/web/viewer.js @@ -0,0 +1,13912 @@ +/** + * @licstart The following is the entire license notice for the + * JavaScript code in this page + * + * Copyright 2023 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, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.GenericCom = void 0; +var _app = __webpack_require__(2); +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() { + 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; + +/***/ }), +/* 2 */ +/***/ ((__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__(3); +var _pdfjsLib = __webpack_require__(4); +var _app_options = __webpack_require__(5); +var _event_utils = __webpack_require__(6); +var _pdf_link_service = __webpack_require__(7); +var _webAnnotation_editor_params = __webpack_require__(8); +var _overlay_manager = __webpack_require__(9); +var _password_prompt = __webpack_require__(10); +var _webPdf_attachment_viewer = __webpack_require__(11); +var _webPdf_cursor_tools = __webpack_require__(13); +var _webPdf_document_properties = __webpack_require__(15); +var _webPdf_find_bar = __webpack_require__(16); +var _pdf_find_controller = __webpack_require__(17); +var _pdf_history = __webpack_require__(19); +var _webPdf_layer_viewer = __webpack_require__(20); +var _webPdf_outline_viewer = __webpack_require__(21); +var _webPdf_presentation_mode = __webpack_require__(22); +var _pdf_rendering_queue = __webpack_require__(23); +var _pdf_scripting_manager = __webpack_require__(24); +var _webPdf_sidebar = __webpack_require__(25); +var _webPdf_sidebar_resizer = __webpack_require__(26); +var _webPdf_thumbnail_viewer = __webpack_require__(27); +var _pdf_viewer = __webpack_require__(29); +var _webSecondary_toolbar = __webpack_require__(39); +var _webToolbar = __webpack_require__(40); +var _view_history = __webpack_require__(41); +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 +}; +class DefaultExternalServices { + constructor() { + throw new Error("Cannot initialize DefaultExternalServices."); + } + static updateFindControlState(data) {} + static updateFindMatchesCount(data) {} + static initPassiveLoading(callbacks) {} + static reportTelemetry(data) {} + static createDownloadManager() { + 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 supportsPinchToZoom() { + return (0, _pdfjsLib.shadow)(this, "supportsPinchToZoom", true); + } + 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, + _wheelUnusedTicks: 0, + _wheelUnusedFactor: 1, + _touchUnusedTicks: 0, + _touchUnusedFactor: 1, + _PDFBug: null, + _hasAnnotationEditors: false, + _title: document.title, + _printAnnotationStoragePromise: null, + _touchInfo: null, + _isCtrlKeyDown: false, + async initialize(appConfig) { + this.preferences = this.externalServices.createPreferences(); + this.appConfig = appConfig; + await this._initializeOptions(); + 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 _initializeOptions() { + if (_app_options.AppOptions.get("disablePreferences")) { + if (_app_options.AppOptions.get("pdfBugEnabled")) { + await this._parseHashParams(); + } + return; + } + if (_app_options.AppOptions._hasUserOptions()) { + console.warn("_initializeOptions: 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(`_initializeOptions: "${reason.message}".`); + } + if (_app_options.AppOptions.get("pdfBugEnabled")) { + await this._parseHashParams(); + } + }, + async _parseHashParams() { + 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(`_parseHashParams: "${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(`_parseHashParams: "${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(`_parseHashParams: "${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, + updateMatchesCountOnProgress: true + }); + 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"), + isOffscreenCanvasSupported: _app_options.AppOptions.get("isOffscreenCanvasSupported"), + 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); + if (appConfig.sidebar?.thumbnailView) { + this.pdfThumbnailViewer = new _webPdf_thumbnail_viewer.PDFThumbnailViewer({ + container: appConfig.sidebar.thumbnailView, + 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 && appConfig.findBar) { + this.findBar = new _webPdf_find_bar.PDFFindBar(appConfig.findBar, eventBus, this.l10n); + } + if (appConfig.annotationEditorParams) { + if (annotationEditorMode !== _pdfjsLib.AnnotationEditorType.DISABLE) { + this.annotationEditorParams = new _webAnnotation_editor_params.AnnotationEditorParams(appConfig.annotationEditorParams, eventBus); + } else { + for (const id of ["editorModeButtons", "editorModeSeparator"]) { + document.getElementById(id)?.classList.add("hidden"); + } + } + } + if (appConfig.documentProperties) { + this.pdfDocumentProperties = new _webPdf_document_properties.PDFDocumentProperties(appConfig.documentProperties, this.overlayManager, eventBus, this.l10n, () => { + return this._docFilename; + }); + } + if (appConfig.secondaryToolbar?.cursorHandToolButton) { + this.pdfCursorTools = new _webPdf_cursor_tools.PDFCursorTools({ + container, + eventBus, + cursorToolOnLoad: _app_options.AppOptions.get("cursorToolOnLoad") + }); + } + if (appConfig.toolbar) { + this.toolbar = new _webToolbar.Toolbar(appConfig.toolbar, eventBus, this.l10n); + } + if (appConfig.secondaryToolbar) { + this.secondaryToolbar = new _webSecondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, eventBus, this.externalServices); + } + if (this.supportsFullscreen && appConfig.secondaryToolbar?.presentationModeButton) { + this.pdfPresentationMode = new _webPdf_presentation_mode.PDFPresentationMode({ + container, + pdfViewer: this.pdfViewer, + eventBus + }); + } + if (appConfig.passwordOverlay) { + this.passwordPrompt = new _password_prompt.PasswordPrompt(appConfig.passwordOverlay, this.overlayManager, this.l10n, this.isViewerEmbedded); + } + if (appConfig.sidebar?.outlineView) { + this.pdfOutlineViewer = new _webPdf_outline_viewer.PDFOutlineViewer({ + container: appConfig.sidebar.outlineView, + eventBus, + linkService: pdfLinkService, + downloadManager + }); + } + if (appConfig.sidebar?.attachmentsView) { + this.pdfAttachmentViewer = new _webPdf_attachment_viewer.PDFAttachmentViewer({ + container: appConfig.sidebar.attachmentsView, + eventBus, + downloadManager + }); + } + if (appConfig.sidebar?.layersView) { + this.pdfLayerViewer = new _webPdf_layer_viewer.PDFLayerViewer({ + container: appConfig.sidebar.layersView, + eventBus, + l10n: this.l10n + }); + } + if (appConfig.sidebar) { + this.pdfSidebar = new _webPdf_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 _webPdf_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, scaleFactor) { + if (this.pdfViewer.isInPresentationMode) { + return; + } + this.pdfViewer.increaseScale({ + drawingDelay: _app_options.AppOptions.get("defaultZoomDelay"), + steps, + scaleFactor + }); + }, + zoomOut(steps, scaleFactor) { + if (this.pdfViewer.isInPresentationMode) { + return; + } + this.pdfViewer.decreaseScale({ + drawingDelay: _app_options.AppOptions.get("defaultZoomDelay"), + steps, + scaleFactor + }); + }, + 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 supportsPinchToZoom() { + return this.externalServices.supportsPinchToZoom; + }, + get supportsIntegratedFind() { + return this.externalServices.supportsIntegratedFind; + }, + get supportsDocumentFonts() { + return this.externalServices.supportsDocumentFonts; + }, + get loadingBar() { + const barElement = document.getElementById("loadingBar"); + const bar = barElement ? new _ui_utils.ProgressBar(barElement) : null; + 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]; + } + if ((0, _pdfjsLib.isDataScheme)(url)) { + this._hideViewBookmark(); + } + 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() { + const { + secondaryToolbar + } = this.appConfig; + secondaryToolbar?.viewBookmarkButton.classList.add("hidden"); + if (secondaryToolbar?.presentationModeButton.classList.contains("hidden")) { + document.getElementById("viewBookmarkSeparator")?.classList.add("hidden"); + } + }, + 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._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(args) { + let deprecatedArgs = false; + if (typeof args === "string") { + args = { + url: args + }; + deprecatedArgs = true; + } else if (args?.byteLength) { + args = { + data: args + }; + deprecatedArgs = true; + } + if (deprecatedArgs) { + console.error("The `PDFViewerApplication.open` signature was updated, please use an object instead."); + } + if (this.pdfLoadingTask) { + await this.close(); + } + const workerParams = _app_options.AppOptions.getAll(_app_options.OptionKind.WORKER); + Object.assign(_pdfjsLib.GlobalWorkerOptions, workerParams); + if (args.url) { + this.setTitleUsingUrl(args.originalUrl || args.url, args.url); + } + const apiParams = _app_options.AppOptions.getAll(_app_options.OptionKind.API); + const params = { + ...apiParams, + ...args + }; + const loadingTask = (0, _pdfjsLib.getDocument)(params); + this.pdfLoadingTask = loadingTask; + loadingTask.onPassword = (updateCallback, reason) => { + if (this.isViewerEmbedded) { + this._unblockDocumentLoadEvent(); + } + this.pdfLinkService.externalLinkEnabled = false; + this.passwordPrompt.setUpdateCallback(updateCallback, reason); + this.passwordPrompt.open(); + }; + loadingTask.onProgress = ({ + loaded, + total + }) => { + this.progress(loaded / total); + }; + 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(); + } + }, + _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")}`); + }, + progress(level) { + if (!this.loadingBar || this.downloadComplete) { + return; + } + const percent = Math.round(level * 100); + if (percent <= this.loadingBar.percent) { + return; + } + this.loadingBar.percent = percent; + if (this.pdfDocument?.loadingParams.disableAutoFetch ?? _app_options.AppOptions.get("disableAutoFetch")) { + this.loadingBar.setDisableAutoFetch(); + } + }, + 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; + if (baseDocumentUrl && (0, _pdfjsLib.isDataScheme)(baseDocumentUrl)) { + baseDocumentUrl = null; + } + this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl); + this.pdfDocumentProperties?.setDocument(pdfDocument); + const pdfViewer = this.pdfViewer; + pdfViewer.setDocument(pdfDocument); + const { + firstPagePromise, + onePageRendered, + pagesPromise + } = pdfViewer; + this.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 + }); + if (this.pdfOutlineViewer) { + pdfDocument.getOutline().then(outline => { + if (pdfDocument !== this.pdfDocument) { + return; + } + this.pdfOutlineViewer.render({ + outline, + pdfDocument + }); + }); + } + if (this.pdfAttachmentViewer) { + pdfDocument.getAttachments().then(attachments => { + if (pdfDocument !== this.pdfDocument) { + return; + } + this.pdfAttachmentViewer.render({ + attachments + }); + }); + } + if (this.pdfLayerViewer) { + 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"); + 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"); + } + } else if ((info.IsAcroFormPresent || info.IsXFAPresent) && !this.pdfViewer.renderForms) { + console.warn("Warning: Interactive form support is not enabled"); + } + if (info.IsSignaturesPresent) { + console.warn("Warning: Digital signatures validation is not supported"); + } + 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(); + 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("pagerender", webViewerPageRender); + 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("touchmove", webViewerTouchMove, { + passive: false + }); + window.addEventListener("touchend", webViewerTouchEnd, { + passive: false + }); + window.addEventListener("click", webViewerClick); + window.addEventListener("keydown", webViewerKeyDown); + window.addEventListener("keyup", webViewerKeyUp); + 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("pagerender", webViewerPageRender); + 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("touchmove", webViewerTouchMove, { + passive: false + }); + window.removeEventListener("touchend", webViewerTouchEnd, { + passive: false + }); + window.removeEventListener("click", webViewerClick); + window.removeEventListener("keydown", webViewerKeyDown); + window.removeEventListener("keyup", webViewerKeyUp); + 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; + }, + _accumulateTicks(ticks, prop) { + if (this[prop] > 0 && ticks < 0 || this[prop] < 0 && ticks > 0) { + this[prop] = 0; + } + this[prop] += ticks; + const wholeTicks = Math.trunc(this[prop]); + this[prop] -= wholeTicks; + return wholeTicks; + }, + _accumulateFactor(previousScale, factor, prop) { + if (factor === 1) { + return 1; + } + if (this[prop] > 1 && factor < 1 || this[prop] < 1 && factor > 1) { + this[prop] = 1; + } + const newFactor = Math.floor(previousScale * factor * this[prop] * 100) / (100 * previousScale); + this[prop] = factor / newFactor; + return newFactor; + }, + _centerAtPos(previousScale, x, y) { + const { + pdfViewer + } = this; + const scaleDiff = pdfViewer.currentScale / previousScale - 1; + if (scaleDiff !== 0) { + const [top, left] = pdfViewer.containerTopLeft; + pdfViewer.container.scrollLeft += (x - left) * scaleDiff; + pdfViewer.container.scrollTop += (y - top) * scaleDiff; + } + }, + _unblockDocumentLoadEvent() { + document.blockUnblockOnload?.(false); + this._unblockDocumentLoadEvent = () => {}; + }, + 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, + l10n + } = 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); + 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({ + url: file + }); + } else { + PDFViewerApplication._hideViewBookmark(); + } + } catch (reason) { + l10n.get("loading_error").then(msg => { + PDFViewerApplication._documentError(msg, reason); + }); + } +} +function webViewerPageRender({ + pageNumber +}) { + if (pageNumber === PDFViewerApplication.page) { + PDFViewerApplication.toolbar?.updateLoadingIndicatorState(true); + } +} +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); + }); + } +} +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(() => {}); + } + if (PDFViewerApplication.appConfig.secondaryToolbar) { + const href = PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams); + PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href; + } +} +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; + } + 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]; + PDFViewerApplication.open({ + url: URL.createObjectURL(file), + originalUrl: file.name + }); + }; + 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() { + PDFViewerApplication.page = 1; +} +function webViewerLastPage() { + 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) { + if (PDFViewerApplication.pdfThumbnailViewer) { + 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); + } + const currentPage = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1); + PDFViewerApplication.toolbar?.updateLoadingIndicatorState(currentPage?.renderingState === _ui_utils.RenderingStates.RUNNING); +} +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, + supportsPinchToZoom + } = PDFViewerApplication; + if (pdfViewer.isInPresentationMode) { + return; + } + const deltaMode = evt.deltaMode; + let scaleFactor = Math.exp(-evt.deltaY / 100); + const isBuiltInMac = false; + const isPinchToZoom = evt.ctrlKey && !PDFViewerApplication._isCtrlKeyDown && deltaMode === WheelEvent.DOM_DELTA_PIXEL && evt.deltaX === 0 && (Math.abs(scaleFactor - 1) < 0.05 || isBuiltInMac) && evt.deltaZ === 0; + if (isPinchToZoom || evt.ctrlKey && supportedMouseWheelZoomModifierKeys.ctrlKey || evt.metaKey && supportedMouseWheelZoomModifierKeys.metaKey) { + evt.preventDefault(); + if (zoomDisabledTimeout || document.visibilityState === "hidden") { + return; + } + const previousScale = pdfViewer.currentScale; + if (isPinchToZoom && supportsPinchToZoom) { + scaleFactor = PDFViewerApplication._accumulateFactor(previousScale, scaleFactor, "_wheelUnusedFactor"); + if (scaleFactor < 1) { + PDFViewerApplication.zoomOut(null, scaleFactor); + } else if (scaleFactor > 1) { + PDFViewerApplication.zoomIn(null, scaleFactor); + } else { + return; + } + } else { + const delta = (0, _ui_utils.normalizeWheelEventDirection)(evt); + let ticks = 0; + if (deltaMode === WheelEvent.DOM_DELTA_LINE || deltaMode === WheelEvent.DOM_DELTA_PAGE) { + if (Math.abs(delta) >= 1) { + ticks = Math.sign(delta); + } else { + ticks = PDFViewerApplication._accumulateTicks(delta, "_wheelUnusedTicks"); + } + } else { + const PIXELS_PER_LINE_SCALE = 30; + ticks = PDFViewerApplication._accumulateTicks(delta / PIXELS_PER_LINE_SCALE, "_wheelUnusedTicks"); + } + if (ticks < 0) { + PDFViewerApplication.zoomOut(-ticks); + } else if (ticks > 0) { + PDFViewerApplication.zoomIn(ticks); + } else { + return; + } + } + PDFViewerApplication._centerAtPos(previousScale, evt.clientX, evt.clientY); + } else { + setZoomDisabledTimeout(); + } +} +function webViewerTouchStart(evt) { + if (PDFViewerApplication.pdfViewer.isInPresentationMode || evt.touches.length < 2) { + return; + } + evt.preventDefault(); + if (evt.touches.length !== 2) { + PDFViewerApplication._touchInfo = null; + return; + } + let [touch0, touch1] = evt.touches; + if (touch0.identifier > touch1.identifier) { + [touch0, touch1] = [touch1, touch0]; + } + PDFViewerApplication._touchInfo = { + touch0X: touch0.pageX, + touch0Y: touch0.pageY, + touch1X: touch1.pageX, + touch1Y: touch1.pageY + }; +} +function webViewerTouchMove(evt) { + if (!PDFViewerApplication._touchInfo || evt.touches.length !== 2) { + return; + } + const { + pdfViewer, + _touchInfo, + supportsPinchToZoom + } = PDFViewerApplication; + let [touch0, touch1] = evt.touches; + if (touch0.identifier > touch1.identifier) { + [touch0, touch1] = [touch1, touch0]; + } + const { + pageX: page0X, + pageY: page0Y + } = touch0; + const { + pageX: page1X, + pageY: page1Y + } = touch1; + const { + touch0X: pTouch0X, + touch0Y: pTouch0Y, + touch1X: pTouch1X, + touch1Y: pTouch1Y + } = _touchInfo; + if (Math.abs(pTouch0X - page0X) <= 1 && Math.abs(pTouch0Y - page0Y) <= 1 && Math.abs(pTouch1X - page1X) <= 1 && Math.abs(pTouch1Y - page1Y) <= 1) { + return; + } + _touchInfo.touch0X = page0X; + _touchInfo.touch0Y = page0Y; + _touchInfo.touch1X = page1X; + _touchInfo.touch1Y = page1Y; + if (pTouch0X === page0X && pTouch0Y === page0Y) { + const v1X = pTouch1X - page0X; + const v1Y = pTouch1Y - page0Y; + const v2X = page1X - page0X; + const v2Y = page1Y - page0Y; + const det = v1X * v2Y - v1Y * v2X; + if (Math.abs(det) > 0.02 * Math.hypot(v1X, v1Y) * Math.hypot(v2X, v2Y)) { + return; + } + } else if (pTouch1X === page1X && pTouch1Y === page1Y) { + const v1X = pTouch0X - page1X; + const v1Y = pTouch0Y - page1Y; + const v2X = page0X - page1X; + const v2Y = page0Y - page1Y; + const det = v1X * v2Y - v1Y * v2X; + if (Math.abs(det) > 0.02 * Math.hypot(v1X, v1Y) * Math.hypot(v2X, v2Y)) { + return; + } + } else { + const diff0X = page0X - pTouch0X; + const diff1X = page1X - pTouch1X; + const diff0Y = page0Y - pTouch0Y; + const diff1Y = page1Y - pTouch1Y; + const dotProduct = diff0X * diff1X + diff0Y * diff1Y; + if (dotProduct >= 0) { + return; + } + } + evt.preventDefault(); + const distance = Math.hypot(page0X - page1X, page0Y - page1Y) || 1; + const pDistance = Math.hypot(pTouch0X - pTouch1X, pTouch0Y - pTouch1Y) || 1; + const previousScale = pdfViewer.currentScale; + if (supportsPinchToZoom) { + const newScaleFactor = PDFViewerApplication._accumulateFactor(previousScale, distance / pDistance, "_touchUnusedFactor"); + if (newScaleFactor < 1) { + PDFViewerApplication.zoomOut(null, newScaleFactor); + } else if (newScaleFactor > 1) { + PDFViewerApplication.zoomIn(null, newScaleFactor); + } else { + return; + } + } else { + const PIXELS_PER_LINE_SCALE = 30; + const ticks = PDFViewerApplication._accumulateTicks((distance - pDistance) / PIXELS_PER_LINE_SCALE, "_touchUnusedTicks"); + if (ticks < 0) { + PDFViewerApplication.zoomOut(-ticks); + } else if (ticks > 0) { + PDFViewerApplication.zoomIn(ticks); + } else { + return; + } + } + PDFViewerApplication._centerAtPos(previousScale, (page0X + page1X) / 2, (page0Y + page1Y) / 2); +} +function webViewerTouchEnd(evt) { + if (!PDFViewerApplication._touchInfo) { + return; + } + evt.preventDefault(); + PDFViewerApplication._touchInfo = null; + PDFViewerApplication._touchUnusedTicks = 0; + PDFViewerApplication._touchUnusedFactor = 1; +} +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 webViewerKeyUp(evt) { + if (evt.key === "Control") { + PDFViewerApplication._isCtrlKeyDown = false; + } +} +function webViewerKeyDown(evt) { + PDFViewerApplication._isCtrlKeyDown = evt.key === "Control"; + 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 newState = { + source: window, + type: "again", + findPrevious: cmd === 5 || cmd === 12 + }; + eventBus.dispatch("find", { + ...state, + ...newState + }); + } + handled = true; + } + break; + case 61: + case 107: + case 187: + case 171: + PDFViewerApplication.zoomIn(); + handled = true; + break; + case 173: + case 109: + case 189: + 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: + if (PDFViewerApplication.appConfig.toolbar) { + 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(_ui_utils.CursorTool.SELECT); + break; + case 72: + PDFViewerApplication.pdfCursorTools?.switchTool(_ui_utils.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; + +/***/ }), +/* 3 */ +/***/ ((__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.CursorTool = 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 CursorTool = { + SELECT: 0, + HAND: 1, + ZOOM: 2 +}; +exports.CursorTool = CursorTool; +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) { + const deltaMode = evt.deltaMode; + let delta = normalizeWheelEventDirection(evt); + const MOUSE_PIXELS_PER_LINE = 30; + const MOUSE_LINES_PER_PAGE = 30; + if (deltaMode === WheelEvent.DOM_DELTA_PIXEL) { + delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE; + } else if (deltaMode === WheelEvent.DOM_DELTA_LINE) { + 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; + #disableAutoFetchTimeout = null; + #percent = 0; + #style = null; + #visible = true; + constructor(bar) { + this.#classList = bar.classList; + this.#style = bar.style; + } + get percent() { + return this.#percent; + } + set percent(val) { + this.#percent = clamp(val, 0, 100); + if (isNaN(val)) { + this.#classList.add("indeterminate"); + return; + } + this.#classList.remove("indeterminate"); + this.#style.setProperty("--progressBar-percent", `${this.#percent}%`); + } + setWidth(viewer) { + if (!viewer) { + return; + } + const container = viewer.parentNode; + const scrollbarWidth = container.offsetWidth - viewer.offsetWidth; + if (scrollbarWidth > 0) { + this.#style.setProperty("--progressBar-end-offset", `${scrollbarWidth}px`); + } + } + setDisableAutoFetch(delay = 5000) { + if (isNaN(this.#percent)) { + return; + } + if (this.#disableAutoFetchTimeout) { + clearTimeout(this.#disableAutoFetchTimeout); + } + this.show(); + this.#disableAutoFetchTimeout = setTimeout(() => { + this.#disableAutoFetchTimeout = null; + this.hide(); + }, delay); + } + 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; +} + +/***/ }), +/* 4 */ +/***/ ((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; + +/***/ }), +/* 5 */ +/***/ ((__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 + }, + defaultZoomDelay: { + value: 400, + 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]; + } +} +exports.AppOptions = AppOptions; +{ + AppOptions._hasUserOptions = function () { + return Object.keys(userOptions).length > 0; + }; +} + +/***/ }), +/* 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 { + #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.SimpleLinkService = exports.PDFLinkService = exports.LinkTarget = void 0; +var _ui_utils = __webpack_require__(3); +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; + } + get isInPresentationMode() { + return this.pdfViewer.isInPresentationMode; + } + #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) {} + get isInPresentationMode() { + return false; + } + 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; + +/***/ }), +/* 8 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationEditorParams = void 0; +var _pdfjsLib = __webpack_require__(4); +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; + +/***/ }), +/* 9 */ +/***/ ((__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; + +/***/ }), +/* 10 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PasswordPrompt = void 0; +var _pdfjsLib = __webpack_require__(4); +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; + +/***/ }), +/* 11 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFAttachmentViewer = void 0; +var _pdfjsLib = __webpack_require__(4); +var _base_tree_viewer = __webpack_require__(12); +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, true); + 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; + +/***/ }), +/* 12 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BaseTreeViewer = void 0; +var _ui_utils = __webpack_require__(3); +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; + +/***/ }), +/* 13 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFCursorTools = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +var _grab_to_pan = __webpack_require__(14); +class PDFCursorTools { + constructor({ + container, + eventBus, + cursorToolOnLoad = _ui_utils.CursorTool.SELECT + }) { + this.container = container; + this.eventBus = eventBus; + this.active = _ui_utils.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 _ui_utils.CursorTool.SELECT: + break; + case _ui_utils.CursorTool.HAND: + this.handTool.deactivate(); + break; + case _ui_utils.CursorTool.ZOOM: + } + }; + switch (tool) { + case _ui_utils.CursorTool.SELECT: + disableActiveTool(); + break; + case _ui_utils.CursorTool.HAND: + disableActiveTool(); + this.handTool.activate(); + break; + case _ui_utils.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(_ui_utils.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; + +/***/ }), +/* 14 */ +/***/ ((__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; + +/***/ }), +/* 15 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFDocumentProperties = void 0; +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +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; + +/***/ }), +/* 16 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFFindBar = void 0; +var _pdf_find_controller = __webpack_require__(17); +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; + +/***/ }), +/* 17 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFFindController = exports.FindState = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +var _pdf_find_utils = __webpack_require__(18); +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]); +let DIACRITICS_EXCEPTION_STR; +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]"; +const NFKC_CHARS_TO_NORMALIZE = new Map(); +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 toNormalizeWithNFKC = "\u2460-\u2473" + "\u24b6-\u24ff" + "\u3244-\u32bf" + "\u32d0-\u32fe" + "\uff00-\uffef"; + const CJK = "(?:\\p{Ideographic}|[\u3040-\u30FF])"; + const HKDiacritics = "(?:\u3099|\u309A)"; + const regexp = `([${replace}])|([${toNormalizeWithNFKC}])|(${HKDiacritics}\\n)|(\\p{M}+(?:-\\n)?)|(\\S-\\n)|(${CJK}\\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, p7, p8, i) => { + i -= shiftOrigin; + if (p1) { + const replacement = CHARACTERS_TO_NORMALIZE[p1]; + 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) { + let replacement = NFKC_CHARS_TO_NORMALIZE.get(p2); + if (!replacement) { + replacement = p2.normalize("NFKC"); + NFKC_CHARS_TO_NORMALIZE.set(p2, replacement); + } + const jj = replacement.length; + for (let j = 1; j < jj; j++) { + positions.push([i - shift + j, shift - j]); + } + shift -= jj - 1; + return replacement; + } + if (p3) { + hasDiacritics = true; + if (i + eol === rawDiacriticsPositions[rawDiacriticsIndex]?.[1]) { + ++rawDiacriticsIndex; + } else { + positions.push([i - 1 - shift + 1, shift - 1]); + shift -= 1; + shiftOrigin += 1; + } + positions.push([i - shift + 1, shift]); + shiftOrigin += 1; + eol += 1; + return p3.charAt(0); + } + if (p4) { + const hasTrailingDashEOL = p4.endsWith("\n"); + const len = hasTrailingDashEOL ? p4.length - 2 : p4.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 p4.slice(0, len); + } + return p4; + } + if (p5) { + positions.push([i - shift + 1, 1 + shift]); + shift += 1; + shiftOrigin += 1; + eol += 1; + return p5.charAt(0); + } + if (p6) { + positions.push([i - shift + 1, shift]); + shiftOrigin += 1; + eol += 1; + return p6.charAt(0); + } + if (p7) { + 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 p8; + }); + 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 { + #updateMatchesCountOnProgress = true; + #visitedPagesCount = 0; + constructor({ + linkService, + eventBus, + updateMatchesCountOnProgress = true + }) { + this._linkService = linkService; + this._eventBus = eventBus; + this.#updateMatchesCountOnProgress = updateMatchesCountOnProgress; + 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.#visitedPagesCount = 0; + 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 = this._pageMatches[pageIndex] = []; + const matchesLength = this._pageMatchesLength[pageIndex] = []; + if (!query) { + return; + } + 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); + } + } + } + #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) { + DIACRITICS_EXCEPTION_STR ||= String.fromCharCode(...DIACRITICS_EXCEPTION); + isUnicode = true; + query = `${query}(?=[${DIACRITICS_EXCEPTION_STR}]|[^\\p{M}]|$)`; + } + } + return [isUnicode, query]; + } + #calculateMatch(pageIndex) { + let query = this.#query; + if (!query) { + 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 = query ? new RegExp(query, flags) : null; + 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; + this._matchesCountTotal += pageMatchesCount; + if (this.#updateMatchesCountOnProgress) { + if (pageMatchesCount > 0) { + this.#updateUIResultsCount(); + } + } else if (++this.#visitedPagesCount === this._linkService.pagesCount) { + 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.#visitedPagesCount = 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) { + if (!this.#updateMatchesCountOnProgress && (this.#visitedPagesCount !== this._linkService.pagesCount || state === FindState.PENDING)) { + return; + } + this._eventBus.dispatch("updatefindcontrolstate", { + source: this, + state, + previous, + matchesCount: this.#requestMatchesCount(), + rawQuery: this._state?.query ?? null + }); + } +} +exports.PDFFindController = PDFFindController; + +/***/ }), +/* 18 */ +/***/ ((__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; +} + +/***/ }), +/* 19 */ +/***/ ((__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__(3); +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; +} + +/***/ }), +/* 20 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFLayerViewer = void 0; +var _base_tree_viewer = __webpack_require__(12); +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; + +/***/ }), +/* 21 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFOutlineViewer = void 0; +var _base_tree_viewer = __webpack_require__(12); +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +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; + +/***/ }), +/* 22 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFPresentationMode = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +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) { + return; + } + if (evt.target.href && evt.target.parentNode?.hasAttribute("data-internal-link")) { + return; + } + 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; + +/***/ }), +/* 23 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFRenderingQueue = void 0; +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +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; + +/***/ }), +/* 24 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFScriptingManager = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +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._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(); + }); + for (const [name, listener] of this._internalEvents) { + this._eventBus._on(name, listener); + } + 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 destroyPromise() { + return this._destroyCapability?.promise || null; + } + get ready() { + return this._ready; + } + get _internalEvents() { + return (0, _pdfjsLib.shadow)(this, "_internalEvents", 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(); + this._pageOpenPending.clear(); + this._visitedPages.clear(); + this._scripting = null; + this._ready = false; + this._destroyCapability?.resolve(); + } +} +exports.PDFScriptingManager = PDFScriptingManager; + +/***/ }), +/* 25 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFSidebar = void 0; +var _ui_utils = __webpack_require__(3); +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; + +/***/ }), +/* 26 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFSidebarResizer = void 0; +var _ui_utils = __webpack_require__(3); +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; + +/***/ }), +/* 27 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PDFThumbnailViewer = void 0; +var _ui_utils = __webpack_require__(3); +var _pdf_thumbnail_view = __webpack_require__(28); +const THUMBNAIL_SCROLL_MARGIN = -19; +const THUMBNAIL_SELECTED_CLASS = "selected"; +class PDFThumbnailViewer { + constructor({ + container, + 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; + +/***/ }), +/* 28 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TempImageFactory = exports.PDFThumbnailView = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +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; + +/***/ }), +/* 29 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.PagesCountLimit = exports.PDFViewer = exports.PDFPageViewBuffer = void 0; +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +var _l10n_utils = __webpack_require__(30); +var _pdf_page_view = __webpack_require__(31); +var _pdf_rendering_queue = __webpack_require__(23); +var _pdf_link_service = __webpack_require__(7); +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; + #containerTopLeft = null; + #enablePermissions = false; + #previousContainerHeight = 0; + #resizeObserver = new ResizeObserver(this.#resizeObserverCallback.bind(this)); + #scrollModePageState = null; + #onVisibilityChange = null; + #scaleTimeoutId = null; + constructor(options) { + const viewerVersion = '3.4.120'; + 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 !== "DIV" || this.viewer?.tagName !== "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.#resizeObserver.observe(this.container); + 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.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.removePageBorders = options.removePageBorders || false; + this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; + this.useOnlyCssZoom = options.useOnlyCssZoom || false; + this.isOffscreenCanvasSupported = options.isOffscreenCanvasSupported ?? true; + 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, { + noScroll: false + }); + } + get currentScaleValue() { + return this._currentScaleValue; + } + set currentScaleValue(val) { + if (!this.pdfDocument) { + return; + } + this._setScale(val, { + noScroll: 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; + this.refresh(true, { + rotation + }); + if (this._currentScaleValue) { + this._setScale(this._currentScaleValue, { + noScroll: 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; + } + #layerProperties() { + const self = this; + return { + get annotationEditorUIManager() { + return self.#annotationEditorUIManager; + }, + get annotationStorage() { + return self.pdfDocument?.annotationStorage; + }, + get downloadManager() { + return self.downloadManager; + }, + get enableScripting() { + return !!self._scriptingManager; + }, + get fieldObjectsPromise() { + return self.pdfDocument?.getFieldObjects(); + }, + get findController() { + return self.findController; + }, + get hasJSActionsPromise() { + return self.pdfDocument?.hasJSActions(); + }, + get linkService() { + return self.linkService; + } + }; + } + #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 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 (pdfDocument.isPureXfa) { + console.warn("Warning: XFA-editing is not implemented."); + } else if (isValidAnnotationEditorMode(mode)) { + this.#annotationEditorUIManager = new _pdfjsLib.AnnotationEditorUIManager(this.container, this.eventBus, pdfDocument?.annotationStorage); + if (mode !== _pdfjsLib.AnnotationEditorType.NONE) { + this.#annotationEditorUIManager.updateMode(mode); + } + } else { + console.error(`Invalid AnnotationEditor mode: ${mode}`); + } + } + const layerProperties = this.#layerProperties.bind(this); + 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 + }); + this.viewer.style.setProperty("--scale-factor", viewport.scale); + 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, + textLayerMode, + annotationMode, + imageResourcesPath: this.imageResourcesPath, + renderer: this.renderer, + useOnlyCssZoom: this.useOnlyCssZoom, + isOffscreenCanvasSupported: this.isOffscreenCanvasSupported, + maxCanvasPixels: this.maxCanvasPixels, + pageColors: this.pageColors, + l10n: this.l10n, + layerProperties + }); + 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._currentPageNumber !== id) { + this._setCurrentPageNumber(id); + } + if (this._scrollMode === _ui_utils.ScrollMode.PAGE) { + 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); + if (!this._currentScaleValue && this._location) { + this._location = null; + } + } + #isSameScale(newScale) { + return newScale === this._currentScale || Math.abs(newScale - this._currentScale) < 1e-15; + } + _setScaleUpdatePages(newScale, newValue, { + noScroll = false, + preset = false, + drawingDelay = -1 + }) { + this._currentScaleValue = newValue.toString(); + if (this.#isSameScale(newScale)) { + if (preset) { + this.eventBus.dispatch("scalechanging", { + source: this, + scale: newScale, + presetValue: newValue + }); + } + return; + } + this.viewer.style.setProperty("--scale-factor", newScale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS); + const postponeDrawing = drawingDelay >= 0 && drawingDelay < 1000; + this.refresh(true, { + scale: newScale, + drawingDelay: postponeDrawing ? drawingDelay : -1 + }); + if (postponeDrawing) { + this.#scaleTimeoutId = setTimeout(() => { + this.#scaleTimeoutId = null; + this.refresh(); + }, drawingDelay); + } + 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(); + } + } + get _pageWidthScaleFactor() { + if (this._spreadMode !== _ui_utils.SpreadMode.NONE && this._scrollMode !== _ui_utils.ScrollMode.HORIZONTAL) { + return 2; + } + return 1; + } + _setScale(value, options) { + let scale = parseFloat(value); + if (scale > 0) { + options.preset = false; + this._setScaleUpdatePages(scale, value, options); + } 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; + if (this._spreadMode !== _ui_utils.SpreadMode.NONE) { + hPadding *= 2; + } + } 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; + } + options.preset = true; + this._setScaleUpdatePages(scale, value, options); + } + } + #resetCurrentPageView() { + const pageView = this._pages[this._currentPageNumber - 1]; + if (this.isInPresentationMode) { + this._setScale(this._currentScaleValue, { + noScroll: 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; + let hPadding = _ui_utils.SCROLLBAR_PADDING, + vPadding = _ui_utils.VERTICAL_PADDING; + if (this.removePageBorders) { + hPadding = vPadding = 0; + } + 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; + } + 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); + if (pageView) { + this.#ensurePdfPageLoaded(pageView).then(() => { + this.renderingQueue.renderView(pageView); + }); + return true; + } + return false; + } + 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; + this.refresh(false, { + optionalContentConfigPromise: promise + }); + 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, { + noScroll: 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, { + noScroll: 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(options = null) { + if (typeof options === "number") { + console.error("The `increaseScale` method-signature was updated, please use an object instead."); + options = { + steps: options + }; + } + if (!this.pdfDocument) { + return; + } + options ||= Object.create(null); + let newScale = this._currentScale; + if (options.scaleFactor > 1) { + newScale = Math.min(_ui_utils.MAX_SCALE, Math.round(newScale * options.scaleFactor * 100) / 100); + } else { + let steps = options.steps ?? 1; + 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); + } + options.noScroll = false; + this._setScale(newScale, options); + } + decreaseScale(options = null) { + if (typeof options === "number") { + console.error("The `decreaseScale` method-signature was updated, please use an object instead."); + options = { + steps: options + }; + } + if (!this.pdfDocument) { + return; + } + options ||= Object.create(null); + let newScale = this._currentScale; + if (options.scaleFactor > 0 && options.scaleFactor < 1) { + newScale = Math.max(_ui_utils.MIN_SCALE, Math.round(newScale * options.scaleFactor * 100) / 100); + } else { + let steps = options.steps ?? 1; + 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); + } + options.noScroll = false; + this._setScale(newScale, options); + } + #updateContainerHeightCss(height = this.container.clientHeight) { + if (height !== this.#previousContainerHeight) { + this.#previousContainerHeight = height; + _ui_utils.docStyle.setProperty("--viewer-container-height", `${height}px`); + } + } + #resizeObserverCallback(entries) { + for (const entry of entries) { + if (entry.target === this.container) { + this.#updateContainerHeightCss(Math.floor(entry.borderBoxSize[0].blockSize)); + this.#containerTopLeft = null; + break; + } + } + } + get containerTopLeft() { + return this.#containerTopLeft ||= [this.container.offsetTop, this.container.offsetLeft]; + } + 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(noUpdate = false, updateArgs = Object.create(null)) { + if (!this.pdfDocument) { + return; + } + for (const pageView of this._pages) { + pageView.update(updateArgs); + } + if (this.#scaleTimeoutId !== null) { + clearTimeout(this.#scaleTimeoutId); + this.#scaleTimeoutId = null; + } + if (!noUpdate) { + this.update(); + } + } +} +exports.PDFViewer = PDFViewer; + +/***/ }), +/* 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_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.PDFPageView = void 0; +var _pdfjsLib = __webpack_require__(4); +var _ui_utils = __webpack_require__(3); +var _annotation_editor_layer_builder = __webpack_require__(32); +var _annotation_layer_builder = __webpack_require__(33); +var _app_options = __webpack_require__(5); +var _l10n_utils = __webpack_require__(30); +var _pdf_link_service = __webpack_require__(7); +var _struct_tree_layer_builder = __webpack_require__(34); +var _text_accessibility = __webpack_require__(35); +var _text_highlighter = __webpack_require__(36); +var _text_layer_builder = __webpack_require__(37); +var _xfa_layer_builder = __webpack_require__(38); +const MAX_CANVAS_PIXELS = _app_options.compatibilityParams.maxCanvasPixels || 16777216; +const DEFAULT_LAYER_PROPERTIES = () => { + return null; +}; +class PDFPageView { + #annotationMode = _pdfjsLib.AnnotationMode.ENABLE_FORMS; + #layerProperties = null; + #loadingId = null; + #previousRotation = null; + #renderingState = _ui_utils.RenderingStates.INITIAL; + #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.#layerProperties = options.layerProperties || DEFAULT_LAYER_PROPERTIES; + 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.isOffscreenCanvasSupported = options.isOffscreenCanvasSupported ?? true; + this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS; + this.pageColors = options.pageColors || null; + this.eventBus = options.eventBus; + this.renderingQueue = options.renderingQueue; + this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; + this.l10n = options.l10n || _l10n_utils.NullL10n; + this.paintTask = null; + this.paintedViewportMap = new WeakMap(); + 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.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; + this.#setDimensions(); + container?.append(div); + if (this._isStandalone) { + container?.style.setProperty("--scale-factor", this.scale * _pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS); + const { + optionalContentConfigPromise + } = options; + if (optionalContentConfigPromise) { + optionalContentConfigPromise.then(optionalContentConfig => { + if (optionalContentConfigPromise !== this._optionalContentConfigPromise) { + return; + } + this.#useThumbnailCanvas.initialOptionalContent = optionalContentConfig.hasInitialVisibility; + }); + } + } + } + get renderingState() { + return this.#renderingState; + } + set renderingState(state) { + if (state === this.#renderingState) { + return; + } + this.#renderingState = state; + if (this.#loadingId) { + clearTimeout(this.#loadingId); + this.#loadingId = null; + } + switch (state) { + case _ui_utils.RenderingStates.PAUSED: + this.div.classList.remove("loading"); + break; + case _ui_utils.RenderingStates.RUNNING: + this.div.classList.add("loadingIcon"); + this.#loadingId = setTimeout(() => { + this.div.classList.add("loading"); + this.#loadingId = null; + }, 0); + break; + case _ui_utils.RenderingStates.INITIAL: + case _ui_utils.RenderingStates.FINISHED: + this.div.classList.remove("loadingIcon", "loading"); + break; + } + } + #setDimensions() { + const { + viewport + } = this; + if (this.pdfPage) { + if (this.#previousRotation === viewport.rotation) { + return; + } + this.#previousRotation = viewport.rotation; + } + (0, _pdfjsLib.setLayerDimensions)(this.div, viewport, true, false); + } + 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.#setDimensions(); + this.reset(); + } + destroy() { + this.reset(); + this.pdfPage?.cleanup(); + } + get _textHighlighter() { + return (0, _pdfjsLib.shadow)(this, "_textHighlighter", new _text_highlighter.TextHighlighter({ + pageIndex: this.id - 1, + eventBus: this.eventBus, + findController: this.#layerProperties().findController + })); + } + 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 #renderTextLayer() { + const { + pdfPage, + textLayer, + viewport + } = this; + if (!textLayer) { + return; + } + let error = null; + try { + if (!textLayer.renderingDone) { + const readableStream = pdfPage.streamTextContent({ + includeMarkedContent: true + }); + textLayer.setTextContentSource(readableStream); + } + await textLayer.render(viewport); + } catch (ex) { + if (ex instanceof _pdfjsLib.AbortException) { + return; + } + console.error(`#renderTextLayer: "${ex}".`); + error = ex; + } + this.eventBus.dispatch("textlayerrendered", { + source: this, + pageNumber: this.id, + numTextDivs: textLayer.numTextDivs, + error + }); + this.#renderStructTreeLayer(); + } + async #renderStructTreeLayer() { + if (!this.textLayer) { + return; + } + this.structTreeLayer ||= new _struct_tree_layer_builder.StructTreeLayerBuilder(); + const tree = await (!this.structTreeLayer.renderingDone ? this.pdfPage.getStructTree() : null); + const treeDom = this.structTreeLayer?.render(tree); + if (treeDom) { + this.canvas?.append(treeDom); + } + this.structTreeLayer?.show(); + } + 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, + keepTextLayer = false + } = {}) { + this.cancelRendering({ + keepAnnotationLayer, + keepAnnotationEditorLayer, + keepXfaLayer, + keepTextLayer + }); + this.renderingState = _ui_utils.RenderingStates.INITIAL; + const div = this.div; + 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, + textLayerNode = keepTextLayer && this.textLayer?.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: + case textLayerNode: + continue; + } + node.remove(); + } + div.removeAttribute("data-loaded"); + if (annotationLayerNode) { + this.annotationLayer.hide(); + } + if (annotationEditorLayerNode) { + this.annotationEditorLayer.hide(); + } + if (xfaLayerNode) { + this.xfaLayer.hide(); + } + if (textLayerNode) { + this.textLayer.hide(); + } + this.structTreeLayer?.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; + } + } + update({ + scale = 0, + rotation = null, + optionalContentConfigPromise = null, + drawingDelay = -1 + }) { + 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 + }); + this.#setDimensions(); + if (this._isStandalone) { + this.div.parentNode?.style.setProperty("--scale-factor", this.viewport.scale); + } + if (this.svg) { + this.cssTransform({ + target: this.svg, + redrawAnnotationLayer: true, + redrawAnnotationEditorLayer: true, + redrawXfaLayer: true, + redrawTextLayer: 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; + } + } + const postponeDrawing = drawingDelay >= 0 && drawingDelay < 1000; + if (this.canvas) { + if (postponeDrawing || this.useOnlyCssZoom || this.hasRestrictedScaling && isScalingRestricted) { + if (postponeDrawing && this.renderingState !== _ui_utils.RenderingStates.FINISHED) { + this.cancelRendering({ + keepZoomLayer: true, + keepAnnotationLayer: true, + keepAnnotationEditorLayer: true, + keepXfaLayer: true, + keepTextLayer: true, + cancelExtraDelay: drawingDelay + }); + this.renderingState = _ui_utils.RenderingStates.FINISHED; + } + this.cssTransform({ + target: this.canvas, + redrawAnnotationLayer: true, + redrawAnnotationEditorLayer: true, + redrawXfaLayer: true, + redrawTextLayer: !postponeDrawing, + hideTextLayer: postponeDrawing + }); + 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, + keepTextLayer: true + }); + } + cancelRendering({ + keepAnnotationLayer = false, + keepAnnotationEditorLayer = false, + keepXfaLayer = false, + keepTextLayer = false, + cancelExtraDelay = 0 + } = {}) { + if (this.paintTask) { + this.paintTask.cancel(cancelExtraDelay); + this.paintTask = null; + } + this.resume = null; + if (this.textLayer && (!keepTextLayer || !this.textLayer.div)) { + this.textLayer.cancel(); + this.textLayer = null; + } + if (this.structTreeLayer && !this.textLayer) { + this.structTreeLayer = 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(); + } + } + cssTransform({ + target, + redrawAnnotationLayer = false, + redrawAnnotationEditorLayer = false, + redrawXfaLayer = false, + redrawTextLayer = false, + hideTextLayer = false + }) { + if (target instanceof HTMLCanvasElement) { + if (!target.hasAttribute("zooming")) { + target.setAttribute("zooming", true); + const { + style + } = target; + style.width = style.height = ""; + } + } else { + const div = this.div; + const { + width, + height + } = this.viewport; + 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 originalViewport = this.paintedViewportMap.get(target); + if (this.viewport !== originalViewport) { + const relativeRotation = this.viewport.rotation - originalViewport.rotation; + const absRotation = Math.abs(relativeRotation); + let scaleX = 1, + scaleY = 1; + if (absRotation === 90 || absRotation === 270) { + const { + width, + height + } = this.viewport; + scaleX = height / width; + scaleY = width / height; + } + if (absRotation !== 0) { + target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`; + } + } + if (redrawAnnotationLayer && this.annotationLayer) { + this.#renderAnnotationLayer(); + } + if (redrawAnnotationEditorLayer && this.annotationEditorLayer) { + this.#renderAnnotationEditorLayer(); + } + if (redrawXfaLayer && this.xfaLayer) { + this.#renderXfaLayer(); + } + if (this.textLayer) { + if (hideTextLayer) { + this.textLayer.hide(); + this.structTreeLayer?.hide(); + } else if (redrawTextLayer) { + this.#renderTextLayer(); + } + } + } + get width() { + return this.viewport.width; + } + get height() { + return this.viewport.height; + } + getPagePoint(x, y) { + return this.viewport.convertToPdfPoint(x, y); + } + 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; + return Promise.reject(new Error("pdfPage is not loaded")); + } + this.renderingState = _ui_utils.RenderingStates.RUNNING; + const canvasWrapper = document.createElement("div"); + canvasWrapper.classList.add("canvasWrapper"); + div.append(canvasWrapper); + if (!this.textLayer && this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE && !pdfPage.isPureXfa) { + this._accessibilityManager ||= new _text_accessibility.TextAccessibilityManager(); + this.textLayer = new _text_layer_builder.TextLayerBuilder({ + highlighter: this._textHighlighter, + accessibilityManager: this._accessibilityManager, + isOffscreenCanvasSupported: this.isOffscreenCanvasSupported + }); + div.append(this.textLayer.div); + } + if (!this.annotationLayer && this.#annotationMode !== _pdfjsLib.AnnotationMode.DISABLE) { + const { + annotationStorage, + downloadManager, + enableScripting, + fieldObjectsPromise, + hasJSActionsPromise, + linkService + } = this.#layerProperties(); + this._annotationCanvasMap ||= new Map(); + this.annotationLayer = new _annotation_layer_builder.AnnotationLayerBuilder({ + pageDiv: div, + pdfPage, + annotationStorage, + imageResourcesPath: this.imageResourcesPath, + renderForms: this.#annotationMode === _pdfjsLib.AnnotationMode.ENABLE_FORMS, + linkService, + downloadManager, + l10n: this.l10n, + enableScripting, + hasJSActionsPromise, + fieldObjectsPromise, + annotationCanvasMap: this._annotationCanvasMap, + accessibilityManager: this._accessibilityManager + }); + } + 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; + 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(async () => { + this.#renderTextLayer(); + if (this.annotationLayer) { + await this.#renderAnnotationLayer(); + } + if (!this.annotationEditorLayer) { + const { + annotationEditorUIManager + } = this.#layerProperties(); + if (!annotationEditorUIManager) { + return; + } + this.annotationEditorLayer = new _annotation_editor_layer_builder.AnnotationEditorLayerBuilder({ + uiManager: annotationEditorUIManager, + pageDiv: div, + pdfPage, + l10n: this.l10n, + accessibilityManager: this._accessibilityManager + }); + } + this.#renderAnnotationEditorLayer(); + }); + }, function (reason) { + return finishPaintTask(reason); + }); + if (pdfPage.isPureXfa) { + if (!this.xfaLayer) { + const { + annotationStorage, + linkService + } = this.#layerProperties(); + this.xfaLayer = new _xfa_layer_builder.XfaLayerBuilder({ + pageDiv: div, + pdfPage, + annotationStorage, + linkService + }); + } else if (this.xfaLayer.div) { + div.append(this.xfaLayer.div); + } + this.#renderXfaLayer(); + } + 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(extraDelay = 0) { + renderTask.cancel(extraDelay); + }, + get separateAnnots() { + return renderTask.separateAnnots; + } + }; + const viewport = this.viewport; + const { + width, + height + } = 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 / width; + outputScale.sy *= actualSizeViewport.height / height; + } + if (this.maxCanvasPixels > 0) { + const pixelsInViewport = width * 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]); + const { + style + } = canvas; + style.width = (0, _ui_utils.roundToDivide)(viewport.width, sfx[1]) + "px"; + 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, + 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) { + if (!(error instanceof _pdfjsLib.RenderingCancelledException)) { + 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; + +/***/ }), +/* 32 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationEditorLayerBuilder = void 0; +var _pdfjsLib = __webpack_require__(4); +var _l10n_utils = __webpack_require__(30); +class AnnotationEditorLayerBuilder { + #uiManager; + constructor(options) { + this.pageDiv = options.pageDiv; + this.pdfPage = options.pdfPage; + 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; + } + const div = this.div = document.createElement("div"); + div.className = "annotationEditorLayer"; + div.tabIndex = 0; + div.hidden = true; + this.pageDiv.append(div); + this.annotationEditorLayer = new _pdfjsLib.AnnotationEditorLayer({ + uiManager: this.#uiManager, + div, + accessibilityManager: this.accessibilityManager, + pageIndex: this.pdfPage.pageNumber - 1, + l10n: this.l10n, + viewport: clonedViewport + }); + const parameters = { + viewport: clonedViewport, + div, + annotations: null, + intent + }; + this.annotationEditorLayer.render(parameters); + this.show(); + } + cancel() { + this._cancelled = true; + if (!this.div) { + return; + } + this.pageDiv = null; + this.annotationEditorLayer.destroy(); + this.div.remove(); + } + hide() { + if (!this.div) { + return; + } + this.div.hidden = true; + } + show() { + if (!this.div || this.annotationEditorLayer.isEmpty) { + return; + } + this.div.hidden = false; + } +} +exports.AnnotationEditorLayerBuilder = AnnotationEditorLayerBuilder; + +/***/ }), +/* 33 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.AnnotationLayerBuilder = void 0; +var _pdfjsLib = __webpack_require__(4); +var _l10n_utils = __webpack_require__(30); +var _ui_utils = __webpack_require__(3); +class AnnotationLayerBuilder { + #numAnnotations = 0; + #onPresentationModeChanged = null; + constructor({ + pageDiv, + pdfPage, + linkService, + downloadManager, + annotationStorage = null, + imageResourcesPath = "", + renderForms = true, + l10n = _l10n_utils.NullL10n, + enableScripting = false, + hasJSActionsPromise = null, + fieldObjectsPromise = 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 || Promise.resolve(false); + this._fieldObjectsPromise = fieldObjectsPromise || Promise.resolve(null); + this._annotationCanvasMap = annotationCanvasMap; + this._accessibilityManager = accessibilityManager; + this.div = null; + this._cancelled = false; + this._eventBus = linkService.eventBus; + } + async render(viewport, intent = "display") { + if (this.div) { + if (this._cancelled || this.#numAnnotations === 0) { + return; + } + _pdfjsLib.AnnotationLayer.update({ + viewport: viewport.clone({ + dontFlip: true + }), + div: this.div, + annotationCanvasMap: this._annotationCanvasMap + }); + return; + } + const [annotations, hasJSActions, fieldObjects] = await Promise.all([this.pdfPage.getAnnotations({ + intent + }), this._hasJSActionsPromise, this._fieldObjectsPromise]); + if (this._cancelled) { + return; + } + this.#numAnnotations = annotations.length; + this.div = document.createElement("div"); + this.div.className = "annotationLayer"; + this.pageDiv.append(this.div); + if (this.#numAnnotations === 0) { + this.hide(); + return; + } + _pdfjsLib.AnnotationLayer.render({ + 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, + annotationCanvasMap: this._annotationCanvasMap, + accessibilityManager: this._accessibilityManager + }); + this.l10n.translate(this.div); + if (this.linkService.isInPresentationMode) { + this.#updatePresentationModeState(_ui_utils.PresentationModeState.FULLSCREEN); + } + if (!this.#onPresentationModeChanged) { + this.#onPresentationModeChanged = evt => { + this.#updatePresentationModeState(evt.state); + }; + this._eventBus?._on("presentationmodechanged", this.#onPresentationModeChanged); + } + } + cancel() { + this._cancelled = true; + if (this.#onPresentationModeChanged) { + this._eventBus?._off("presentationmodechanged", this.#onPresentationModeChanged); + this.#onPresentationModeChanged = null; + } + } + hide() { + if (!this.div) { + return; + } + this.div.hidden = true; + } + #updatePresentationModeState(state) { + if (!this.div) { + return; + } + let disableFormElements = false; + switch (state) { + case _ui_utils.PresentationModeState.FULLSCREEN: + disableFormElements = true; + break; + case _ui_utils.PresentationModeState.NORMAL: + break; + default: + return; + } + for (const section of this.div.childNodes) { + if (section.hasAttribute("data-internal-link")) { + continue; + } + section.inert = disableFormElements; + } + } +} +exports.AnnotationLayerBuilder = AnnotationLayerBuilder; + +/***/ }), +/* 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 { + #treeDom = undefined; + get renderingDone() { + return this.#treeDom !== undefined; + } + render(structTree) { + if (this.#treeDom !== undefined) { + return this.#treeDom; + } + const treeDom = this.#walk(structTree); + treeDom?.classList.add("structTree"); + return this.#treeDom = treeDom; + } + hide() { + if (this.#treeDom && !this.#treeDom.hidden) { + this.#treeDom.hidden = true; + } + } + show() { + if (this.#treeDom?.hidden) { + this.#treeDom.hidden = false; + } + } + #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, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextAccessibilityManager = void 0; +var _ui_utils = __webpack_require__(3); +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; + +/***/ }), +/* 36 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextHighlighter = void 0; +class TextHighlighter { + constructor({ + findController, + eventBus, + pageIndex + }) { + this.findController = findController; + this.matches = []; + this.eventBus = eventBus; + this.pageIdx = pageIndex; + this._onUpdateTextLayerMatches = null; + this.textDivs = null; + this.textContentItemsStr = null; + this.enabled = false; + } + setTextMapping(divs, texts) { + this.textDivs = divs; + this.textContentItemsStr = texts; + } + enable() { + if (!this.textDivs || !this.textContentItemsStr) { + throw new Error("Text divs and strings have not been set."); + } + if (this.enabled) { + throw new Error("TextHighlighter is already enabled."); + } + this.enabled = true; + if (!this._onUpdateTextLayerMatches) { + this._onUpdateTextLayerMatches = evt => { + if (evt.pageIndex === this.pageIdx || evt.pageIndex === -1) { + this._updateMatches(); + } + }; + this.eventBus._on("updatetextlayermatches", this._onUpdateTextLayerMatches); + } + this._updateMatches(); + } + disable() { + if (!this.enabled) { + return; + } + this.enabled = false; + if (this._onUpdateTextLayerMatches) { + this.eventBus._off("updatetextlayermatches", this._onUpdateTextLayerMatches); + this._onUpdateTextLayerMatches = null; + } + this._updateMatches(true); + } + _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(reset = false) { + if (!this.enabled && !reset) { + 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 || reset) { + return; + } + const pageMatches = findController.pageMatches[pageIdx] || null; + const pageMatchesLength = findController.pageMatchesLength[pageIdx] || null; + this.matches = this._convertMatches(pageMatches, pageMatchesLength); + this._renderMatches(this.matches); + } +} +exports.TextHighlighter = TextHighlighter; + +/***/ }), +/* 37 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.TextLayerBuilder = void 0; +var _pdfjsLib = __webpack_require__(4); +class TextLayerBuilder { + #rotation = 0; + #scale = 0; + #textContentSource = null; + constructor({ + highlighter = null, + accessibilityManager = null, + isOffscreenCanvasSupported = true + }) { + this.textContentItemsStr = []; + this.renderingDone = false; + this.textDivs = []; + this.textDivProperties = new WeakMap(); + this.textLayerRenderTask = null; + this.highlighter = highlighter; + this.accessibilityManager = accessibilityManager; + this.isOffscreenCanvasSupported = isOffscreenCanvasSupported; + this.div = document.createElement("div"); + this.div.className = "textLayer"; + this.hide(); + } + #finishRendering() { + this.renderingDone = true; + const endOfContent = document.createElement("div"); + endOfContent.className = "endOfContent"; + this.div.append(endOfContent); + this.#bindMouse(); + } + get numTextDivs() { + return this.textDivs.length; + } + async render(viewport) { + if (!this.#textContentSource) { + throw new Error('No "textContentSource" parameter specified.'); + } + const scale = viewport.scale * (globalThis.devicePixelRatio || 1); + const { + rotation + } = viewport; + if (this.renderingDone) { + const mustRotate = rotation !== this.#rotation; + const mustRescale = scale !== this.#scale; + if (mustRotate || mustRescale) { + this.hide(); + (0, _pdfjsLib.updateTextLayer)({ + container: this.div, + viewport, + textDivs: this.textDivs, + textDivProperties: this.textDivProperties, + isOffscreenCanvasSupported: this.isOffscreenCanvasSupported, + mustRescale, + mustRotate + }); + this.#scale = scale; + this.#rotation = rotation; + } + this.show(); + return; + } + this.cancel(); + this.highlighter?.setTextMapping(this.textDivs, this.textContentItemsStr); + this.accessibilityManager?.setTextMapping(this.textDivs); + this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({ + textContentSource: this.#textContentSource, + container: this.div, + viewport, + textDivs: this.textDivs, + textDivProperties: this.textDivProperties, + textContentItemsStr: this.textContentItemsStr, + isOffscreenCanvasSupported: this.isOffscreenCanvasSupported + }); + await this.textLayerRenderTask.promise; + this.#finishRendering(); + this.#scale = scale; + this.#rotation = rotation; + this.show(); + this.accessibilityManager?.enable(); + } + hide() { + if (!this.div.hidden) { + this.highlighter?.disable(); + this.div.hidden = true; + } + } + show() { + if (this.div.hidden && this.renderingDone) { + this.div.hidden = false; + this.highlighter?.enable(); + } + } + cancel() { + if (this.textLayerRenderTask) { + this.textLayerRenderTask.cancel(); + this.textLayerRenderTask = null; + } + this.highlighter?.disable(); + this.accessibilityManager?.disable(); + this.textContentItemsStr.length = 0; + this.textDivs.length = 0; + this.textDivProperties = new WeakMap(); + } + setTextContentSource(source) { + this.cancel(); + this.#textContentSource = source; + } + #bindMouse() { + const { + div + } = this; + 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; + +/***/ }), +/* 38 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.XfaLayerBuilder = void 0; +var _pdfjsLib = __webpack_require__(4); +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; + } + async 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; + return _pdfjsLib.XfaLayer.render(parameters); + } + const xfaHtml = await this.pdfPage.getXfa(); + 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); + } + cancel() { + this._cancelled = true; + } + hide() { + if (!this.div) { + return; + } + this.div.hidden = true; + } +} +exports.XfaLayerBuilder = XfaLayerBuilder; + +/***/ }), +/* 39 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.SecondaryToolbar = void 0; +var _ui_utils = __webpack_require__(3); +var _pdf_viewer = __webpack_require__(29); +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: _ui_utils.CursorTool.SELECT + }, + close: true + }, { + element: options.cursorHandToolButton, + eventName: "switchcursortool", + eventDetails: { + tool: _ui_utils.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 === _ui_utils.CursorTool.SELECT, + isHand = tool === _ui_utils.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; + +/***/ }), +/* 40 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.Toolbar = void 0; +var _ui_utils = __webpack_require__(3); +var _pdfjsLib = __webpack_require__(4); +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) { + const container = items.scaleSelect.parentNode; + container.style.setProperty("--scale-select-width", `${maxWidth}px`); + } + canvas.width = 0; + canvas.height = 0; + } +} +exports.Toolbar = Toolbar; + +/***/ }), +/* 41 */ +/***/ ((__unused_webpack_module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.ViewHistory = void 0; +const DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20; +class ViewHistory { + constructor(fingerprint, cacheSize = DEFAULT_VIEW_HISTORY_CACHE_SIZE) { + this.fingerprint = fingerprint; + this.cacheSize = cacheSize; + this._initializedPromise = this._readFromStorage().then(databaseStr => { + const database = JSON.parse(databaseStr || "{}"); + let index = -1; + if (!Array.isArray(database.files)) { + database.files = []; + } else { + while (database.files.length >= this.cacheSize) { + database.files.shift(); + } + for (let i = 0, ii = database.files.length; i < ii; i++) { + const branch = database.files[i]; + if (branch.fingerprint === this.fingerprint) { + index = i; + break; + } + } + } + if (index === -1) { + index = database.files.push({ + fingerprint: this.fingerprint + }) - 1; + } + this.file = database.files[index]; + this.database = database; + }); + } + async _writeToStorage() { + const databaseStr = JSON.stringify(this.database); + localStorage.setItem("pdfjs.history", databaseStr); + } + async _readFromStorage() { + return localStorage.getItem("pdfjs.history"); + } + async set(name, val) { + await this._initializedPromise; + this.file[name] = val; + return this._writeToStorage(); + } + async setMultiple(properties) { + await this._initializedPromise; + for (const name in properties) { + this.file[name] = properties[name]; + } + return this._writeToStorage(); + } + async get(name, defaultValue) { + await this._initializedPromise; + const val = this.file[name]; + return val !== undefined ? val : defaultValue; + } + async getMultiple(properties) { + await this._initializedPromise; + const values = Object.create(null); + for (const name in properties) { + const val = this.file[name]; + values[name] = val !== undefined ? val : properties[name]; + } + return values; + } +} +exports.ViewHistory = ViewHistory; + +/***/ }), +/* 42 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports.BasePreferences = void 0; +var _app_options = __webpack_require__(5); +class BasePreferences { + #defaults = Object.freeze({ + "annotationEditorMode": 0, + "annotationMode": 2, + "cursorToolOnLoad": 0, + "defaultZoomDelay": 400, + "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__(4); +; +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 { + #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__(4); +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__(4); +var _app = __webpack_require__(2); +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__(4); +var _pdf_link_service = __webpack_require__(7); +var _xfa_layer_builder = __webpack_require__(38); +function getXfaHtmlForPrinting(printContainer, pdfDocument) { + const xfaHtml = pdfDocument.allXfaHtml; + const linkService = new _pdf_link_service.SimpleLinkService(); + const scale = Math.round(_pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS * 100) / 100; + for (const xfaPage of xfaHtml.children) { + const page = document.createElement("div"); + page.className = "xfaPrintedPage"; + printContainer.append(page); + const builder = new _xfa_layer_builder.XfaLayerBuilder({ + pageDiv: page, + pdfPage: null, + annotationStorage: pdfDocument.annotationStorage, + linkService, + xfaHtml: xfaPage + }); + const viewport = (0, _pdfjsLib.getXfaPageViewport)(xfaPage, { + scale + }); + builder.render(viewport, "print"); + } +} + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. +(() => { +var exports = __webpack_exports__; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "PDFViewerApplication", ({ + enumerable: true, + get: function () { + return _app.PDFViewerApplication; + } +})); +exports.PDFViewerApplicationConstants = void 0; +Object.defineProperty(exports, "PDFViewerApplicationOptions", ({ + enumerable: true, + get: function () { + return _app_options.AppOptions; + } +})); +__webpack_require__(1); +__webpack_require__(47); +var _ui_utils = __webpack_require__(3); +var _app_options = __webpack_require__(5); +var _pdf_link_service = __webpack_require__(7); +var _app = __webpack_require__(2); +const pdfjsVersion = '3.4.120'; +const pdfjsBuild = 'af6414988'; +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; +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/static/js/pdf-js/web/viewer.js.map b/static/js/pdf-js/web/viewer.js.map new file mode 100644 index 0000000..f5b6354 --- /dev/null +++ b/static/js/pdf-js/web/viewer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"viewer.js","mappings":"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","sources":["webpack://pdf.js/web/genericcom.js","webpack://pdf.js/web/app.js","webpack://pdf.js/web/ui_utils.js","webpack://pdf.js/web/pdfjs.js","webpack://pdf.js/web/app_options.js","webpack://pdf.js/web/event_utils.js","webpack://pdf.js/web/pdf_link_service.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_cursor_tools.js","webpack://pdf.js/web/grab_to_pan.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/l10n_utils.js","webpack://pdf.js/web/pdf_page_view.js","webpack://pdf.js/web/annotation_editor_layer_builder.js","webpack://pdf.js/web/annotation_layer_builder.js","webpack://pdf.js/web/struct_tree_layer_builder.js","webpack://pdf.js/web/text_accessibility.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/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 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DefaultExternalServices, PDFViewerApplication } from \"./app.js\";\nimport { BasePreferences } from \"./preferences.js\";\nimport { DownloadManager } from \"./download_manager.js\";\nimport { GenericL10n } from \"./genericl10n.js\";\nimport { GenericScripting } from \"./generic_scripting.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n throw new Error(\n 'Module \"pdfjs-web/genericcom\" shall not be used outside GENERIC build.'\n );\n}\n\nconst GenericCom = {};\n\nclass GenericPreferences extends BasePreferences {\n async _writeToStorage(prefObj) {\n localStorage.setItem(\"pdfjs.preferences\", JSON.stringify(prefObj));\n }\n\n async _readFromStorage(prefObj) {\n return JSON.parse(localStorage.getItem(\"pdfjs.preferences\"));\n }\n}\n\nclass GenericExternalServices extends DefaultExternalServices {\n static createDownloadManager() {\n return new DownloadManager();\n }\n\n static createPreferences() {\n return new GenericPreferences();\n }\n\n static createL10n({ locale = \"en-US\" }) {\n return new GenericL10n(locale);\n }\n\n static createScripting({ sandboxBundleSrc }) {\n return new GenericScripting(sandboxBundleSrc);\n }\n}\nPDFViewerApplication.externalServices = GenericExternalServices;\n\nexport { GenericCom };\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 CursorTool,\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 FeatureTest,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n GlobalWorkerOptions,\n InvalidPDFException,\n isDataScheme,\n isPdfFile,\n loadScript,\n MissingPDFException,\n OPS,\n PDFWorker,\n shadow,\n UnexpectedResponseException,\n version,\n} from \"pdfjs-lib\";\nimport { AppOptions, OptionKind } from \"./app_options.js\";\nimport { AutomationEventBus, EventBus } from \"./event_utils.js\";\nimport { LinkTarget, PDFLinkService } from \"./pdf_link_service.js\";\nimport { AnnotationEditorParams } from \"web-annotation_editor_params\";\nimport { OverlayManager } from \"./overlay_manager.js\";\nimport { PasswordPrompt } from \"./password_prompt.js\";\nimport { PDFAttachmentViewer } from \"web-pdf_attachment_viewer\";\nimport { PDFCursorTools } from \"web-pdf_cursor_tools\";\nimport { PDFDocumentProperties } from \"web-pdf_document_properties\";\nimport { PDFFindBar } from \"web-pdf_find_bar\";\nimport { PDFFindController } from \"./pdf_find_controller.js\";\nimport { PDFHistory } from \"./pdf_history.js\";\nimport { PDFLayerViewer } from \"web-pdf_layer_viewer\";\nimport { PDFOutlineViewer } from \"web-pdf_outline_viewer\";\nimport { PDFPresentationMode } from \"web-pdf_presentation_mode\";\nimport { PDFRenderingQueue } from \"./pdf_rendering_queue.js\";\nimport { PDFScriptingManager } from \"./pdf_scripting_manager.js\";\nimport { PDFSidebar } from \"web-pdf_sidebar\";\nimport { PDFSidebarResizer } from \"web-pdf_sidebar_resizer\";\nimport { PDFThumbnailViewer } from \"web-pdf_thumbnail_viewer\";\nimport { PDFViewer } from \"./pdf_viewer.js\";\nimport { SecondaryToolbar } from \"web-secondary_toolbar\";\nimport { Toolbar } from \"web-toolbar\";\nimport { ViewHistory } from \"./view_history.js\";\n\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\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() {\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 supportsPinchToZoom() {\n return shadow(this, \"supportsPinchToZoom\", true);\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 _wheelUnusedTicks: 0,\n _wheelUnusedFactor: 1,\n _touchUnusedTicks: 0,\n _touchUnusedFactor: 1,\n _PDFBug: null,\n _hasAnnotationEditors: false,\n _title: document.title,\n _printAnnotationStoragePromise: null,\n _touchInfo: null,\n _isCtrlKeyDown: false,\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._initializeOptions();\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