{"version":3,"file":"js/docpreview.js","mappings":"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","sources":["webpack://pcloud-js/webpack/runtime/chunk loaded","webpack://pcloud-js/./node_modules/warning/warning.js","webpack://pcloud-js/./node_modules/pdfjs-dist/build/pdf.mjs","webpack://pcloud-js/./node_modules/make-event-props/dist/esm/index.js","webpack://pcloud-js/./node_modules/make-cancellable-promise/dist/esm/index.js","webpack://pcloud-js/./node_modules/dequal/dist/index.mjs","webpack://pcloud-js/./node_modules/react-pdf/dist/esm/DocumentContext.js","webpack://pcloud-js/./node_modules/react-pdf/dist/esm/Message.js","webpack://pcloud-js/./node_modules/react-pdf/dist/esm/LinkService.js","webpack://pcloud-js/./node_modules/react-pdf/dist/esm/PasswordResponses.js","webpack://pcloud-js/./node_modules/react-pdf/dist/esm/shared/utils.js","webpack://pcloud-js/./node_modules/react-pdf/dist/esm/shared/hooks/useResolver.js","webpack://pcloud-js/./node_modules/react-pdf/dist/esm/Document.js","webpack://pcloud-js/./node_modules/merge-refs/dist/esm/index.js","webpack://pcloud-js/./node_modules/react-pdf/dist/esm/PageContext.js","webpack://pcloud-js/./node_modules/react-pdf/dist/esm/shared/constants.js","webpack://pcloud-js/./node_modules/react-pdf/dist/esm/shared/structTreeUtils.js","webpack://pcloud-js/./node_modules/react-pdf/dist/esm/StructTreeItem.js","webpack://pcloud-js/./node_modules/react-pdf/dist/esm/shared/hooks/usePageContext.js","webpack://pcloud-js/./node_modules/react-pdf/dist/esm/StructTree.js","webpack://pcloud-js/./node_modules/react-pdf/dist/esm/Page/Canvas.js","webpack://pcloud-js/./node_modules/react-pdf/dist/esm/Page/TextLayer.js","webpack://pcloud-js/./node_modules/react-pdf/dist/esm/shared/hooks/useDocumentContext.js","webpack://pcloud-js/./node_modules/react-pdf/dist/esm/Page/AnnotationLayer.js","webpack://pcloud-js/./node_modules/react-pdf/dist/esm/Page.js","webpack://pcloud-js/./root/img/modal/right-arrow.svg","webpack://pcloud-js/./src/components/DocumentViewer/DocPreview.js","webpack://pcloud-js/./src/components/Modals/PreviewDocumentWrapper.js","webpack://pcloud-js/./src/exports/docpreview.js","webpack://pcloud-js/external var \"jQuery\"","webpack://pcloud-js/webpack/bootstrap","webpack://pcloud-js/webpack/runtime/amd options","webpack://pcloud-js/webpack/runtime/compat get default export","webpack://pcloud-js/webpack/runtime/define property getters","webpack://pcloud-js/webpack/runtime/global","webpack://pcloud-js/webpack/runtime/harmony module decorator","webpack://pcloud-js/webpack/runtime/hasOwnProperty shorthand","webpack://pcloud-js/webpack/runtime/make namespace object","webpack://pcloud-js/webpack/runtime/node module decorator","webpack://pcloud-js/webpack/runtime/publicPath","webpack://pcloud-js/webpack/runtime/jsonp chunk loading","webpack://pcloud-js/webpack/runtime/nonce","webpack://pcloud-js/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2023 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 * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/******/ // The require scope\n/******/ var __webpack_require__ = {};\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__webpack_require__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = globalThis.pdfjsLib = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n AbortException: () => (/* reexport */ AbortException),\n AnnotationEditorLayer: () => (/* reexport */ AnnotationEditorLayer),\n AnnotationEditorParamsType: () => (/* reexport */ AnnotationEditorParamsType),\n AnnotationEditorType: () => (/* reexport */ AnnotationEditorType),\n AnnotationEditorUIManager: () => (/* reexport */ AnnotationEditorUIManager),\n AnnotationLayer: () => (/* reexport */ AnnotationLayer),\n AnnotationMode: () => (/* reexport */ AnnotationMode),\n CMapCompressionType: () => (/* reexport */ CMapCompressionType),\n ColorPicker: () => (/* reexport */ ColorPicker),\n DOMSVGFactory: () => (/* reexport */ DOMSVGFactory),\n DrawLayer: () => (/* reexport */ DrawLayer),\n FeatureTest: () => (/* reexport */ util_FeatureTest),\n GlobalWorkerOptions: () => (/* reexport */ GlobalWorkerOptions),\n ImageKind: () => (/* reexport */ util_ImageKind),\n InvalidPDFException: () => (/* reexport */ InvalidPDFException),\n MissingPDFException: () => (/* reexport */ MissingPDFException),\n OPS: () => (/* reexport */ OPS),\n Outliner: () => (/* reexport */ Outliner),\n PDFDataRangeTransport: () => (/* reexport */ PDFDataRangeTransport),\n PDFDateString: () => (/* reexport */ PDFDateString),\n PDFWorker: () => (/* reexport */ PDFWorker),\n PasswordResponses: () => (/* reexport */ PasswordResponses),\n PermissionFlag: () => (/* reexport */ PermissionFlag),\n PixelsPerInch: () => (/* reexport */ PixelsPerInch),\n RenderingCancelledException: () => (/* reexport */ RenderingCancelledException),\n TextLayer: () => (/* reexport */ TextLayer),\n UnexpectedResponseException: () => (/* reexport */ UnexpectedResponseException),\n Util: () => (/* reexport */ Util),\n VerbosityLevel: () => (/* reexport */ VerbosityLevel),\n XfaLayer: () => (/* reexport */ XfaLayer),\n build: () => (/* reexport */ build),\n createValidAbsoluteUrl: () => (/* reexport */ createValidAbsoluteUrl),\n fetchData: () => (/* reexport */ fetchData),\n getDocument: () => (/* reexport */ getDocument),\n getFilenameFromUrl: () => (/* reexport */ getFilenameFromUrl),\n getPdfFilenameFromUrl: () => (/* reexport */ getPdfFilenameFromUrl),\n getXfaPageViewport: () => (/* reexport */ getXfaPageViewport),\n isDataScheme: () => (/* reexport */ isDataScheme),\n isPdfFile: () => (/* reexport */ isPdfFile),\n noContextMenu: () => (/* reexport */ noContextMenu),\n normalizeUnicode: () => (/* reexport */ normalizeUnicode),\n renderTextLayer: () => (/* reexport */ renderTextLayer),\n setLayerDimensions: () => (/* reexport */ setLayerDimensions),\n shadow: () => (/* reexport */ shadow),\n updateTextLayer: () => (/* reexport */ updateTextLayer),\n version: () => (/* reexport */ version)\n});\n\n;// CONCATENATED MODULE: ./src/shared/util.js\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6;\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\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};\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_DEFAULT_COLOR: 32,\n HIGHLIGHT_THICKNESS: 33,\n HIGHLIGHT_FREE: 34,\n HIGHLIGHT_SHOW_ALL: 35\n};\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};\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};\nconst util_ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\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};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\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};\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};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\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};\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1\n};\nconst OPS = {\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 beginAnnotation: 80,\n endAnnotation: 81,\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};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\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}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch {}\n return null;\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\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 return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\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}\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}\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\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}\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}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch {\n return false;\n }\n}\nclass util_FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get platform() {\n if (typeof navigator !== \"undefined\" && typeof navigator?.platform === \"string\") {\n return shadow(this, \"platform\", {\n isMac: navigator.platform.includes(\"Mac\")\n });\n }\n return shadow(this, \"platform\", {\n isMac: false\n });\n }\n static get isCSSRoundSupported() {\n return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\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[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[0];\n minMax[2] *= transform[0];\n if (transform[3] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n if (transform[1] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[1];\n minMax[3] *= transform[1];\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[2];\n minMax[2] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[5];\n minMax[2] += transform[4];\n minMax[3] += transform[5];\n }\n static transform(m1, m2) {\n 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]];\n }\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 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 static getAxialAlignedBoundingBox(r, m) {\n const p1 = this.applyTransform(r, m);\n const p2 = this.applyTransform(r.slice(2, 4), m);\n const p3 = this.applyTransform([r[0], r[3]], m);\n const p4 = this.applyTransform([r[2], r[1]], m);\n 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])];\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n 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];\n }\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\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 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 return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\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 static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n if (minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n } else {\n minMax = [Math.min(x0, x3), Math.min(y0, y3), Math.max(x0, x3), Math.max(y0, y3)];\n }\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n return minMax;\n }\n}\nconst PDFStringTranslateTable = (/* unused pure expression or super */ null && ([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]));\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (!decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const charCode = str.charCodeAt(i);\n if (charCode === 0x1b) {\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\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}\nfunction getModificationDate(date = new Date()) {\n 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\")];\n return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto?.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n if (typeof crypto !== \"undefined\" && typeof crypto?.getRandomValues === \"function\") {\n crypto.getRandomValues(buf);\n } else {\n for (let i = 0; i < 32; i++) {\n buf[i] = Math.floor(Math.random() * 255);\n }\n }\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nconst FontRenderOps = {\n BEZIER_CURVE_TO: 0,\n MOVE_TO: 1,\n LINE_TO: 2,\n QUADRATIC_CURVE_TO: 3,\n RESTORE: 4,\n SAVE: 5,\n SCALE: 6,\n TRANSFORM: 7,\n TRANSLATE: 8\n};\n\n;// CONCATENATED MODULE: ./src/display/base_factory.js\n\nclass BaseFilterFactory {\n constructor() {\n if (this.constructor === BaseFilterFactory) {\n unreachable(\"Cannot initialize BaseFilterFactory.\");\n }\n }\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addAlphaFilter(map) {\n return \"none\";\n }\n addLuminosityFilter(map) {\n return \"none\";\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n destroy(keepHCM = false) {}\n}\nclass BaseCanvasFactory {\n #enableHWA = false;\n constructor({\n enableHWA = false\n } = {}) {\n if (this.constructor === BaseCanvasFactory) {\n unreachable(\"Cannot initialize BaseCanvasFactory.\");\n }\n this.#enableHWA = enableHWA;\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\", {\n willReadFrequently: !this.#enableHWA\n })\n };\n }\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = true\n }) {\n if (this.constructor === BaseCMapReaderFactory) {\n unreachable(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error('The CMap \"baseUrl\" parameter must be specified, ensure that ' + 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.');\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed ? CMapCompressionType.BINARY : CMapCompressionType.NONE;\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n _fetchData(url, compressionType) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n if (this.constructor === BaseStandardFontDataFactory) {\n unreachable(\"Cannot initialize BaseStandardFontDataFactory.\");\n }\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error('The standard font \"baseUrl\" parameter must be specified, ensure that ' + 'the \"standardFontDataUrl\" API parameter is provided.');\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetchData(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n _fetchData(url) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\nclass BaseSVGFactory {\n constructor() {\n if (this.constructor === BaseSVGFactory) {\n unreachable(\"Cannot initialize BaseSVGFactory.\");\n }\n }\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/display_utils.js\n\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n #_cache;\n #_defs;\n #docId;\n #document;\n #_hcmCache;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n } = {}) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #hcmCache() {\n return this.#_hcmCache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n #createTables(maps) {\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n const table = buffer.join(\",\");\n return [table, table, table];\n }\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n const [tableR, tableG, tableB] = this.#createTables(maps);\n const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = `url(#${id})`;\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n const filterName = \"base\";\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return info.url;\n }\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n info.url = `url(#${id})`;\n return info.url;\n }\n addAlphaFilter(map) {\n let value = this.#cache.get(map);\n if (value) {\n return value;\n }\n const [tableA] = this.#createTables([map]);\n const key = `alpha_${tableA}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n const url = `url(#${id})`;\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapAlphaConversion(tableA, filter);\n return url;\n }\n addLuminosityFilter(map) {\n let value = this.#cache.get(map || \"luminosity\");\n if (value) {\n return value;\n }\n let tableA, key;\n if (map) {\n [tableA] = this.#createTables([map]);\n key = `luminosity_${tableA}`;\n } else {\n key = \"luminosity\";\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n const url = `url(#${id})`;\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addLuminosityConversion(filter);\n if (map) {\n this.#addTransferMapAlphaConversion(tableA, filter);\n }\n return url;\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#defs.style.color = \"\";\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n info.url = `url(#${id})`;\n return info.url;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#hcmCache.size !== 0) {\n return;\n }\n if (this.#_defs) {\n this.#_defs.parentNode.parentNode.remove();\n this.#_defs = null;\n }\n if (this.#_cache) {\n this.#_cache.clear();\n this.#_cache = null;\n }\n this.#id = 0;\n }\n #addLuminosityConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n filter.append(feColorMatrix);\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #addTransferMapAlphaConversion(aTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n }\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document,\n enableHWA = false\n } = {}) {\n super({\n enableHWA\n });\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\nasync function fetchData(url, type = \"text\") {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = type;\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n switch (type) {\n case \"arraybuffer\":\n case \"blob\":\n case \"json\":\n resolve(request.response);\n return;\n }\n resolve(request.responseText);\n return;\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\").then(data => ({\n cMapData: data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data),\n compressionType\n }));\n }\n}\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url, \"arraybuffer\").then(data => new Uint8Array(data));\n }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\nclass PageViewport {\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const {\n viewBox\n } = this;\n return shadow(this, \"rawDims\", {\n pageWidth: viewBox[2] - viewBox[0],\n pageHeight: viewBox[3] - viewBox[1],\n pageX: viewBox[0],\n pageY: viewBox[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n convertToViewportRectangle(rect) {\n const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n [url] = url.split(/[#?]/, 1);\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n try {\n suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n } catch {}\n }\n }\n return suggestedFilename || defaultFilename;\n}\nclass StatTimer {\n started = Object.create(null);\n times = [];\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n toString() {\n const outBuf = [];\n let longest = 0;\n for (const {\n name\n } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const {\n name,\n start,\n end\n } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const {\n protocol\n } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n return protocol === \"http:\" || protocol === \"https:\";\n } catch {\n return false;\n }\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nlet pdfDateStringRegex;\nclass PDFDateString {\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n pdfDateStringRegex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = pdfDateStringRegex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n scale,\n rotation\n });\n}\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n }\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const useRound = util_FeatureTest.isCSSRoundSupported;\n const w = `var(--scale-factor) * ${pageWidth}px`,\n h = `var(--scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(${w}, 1px)` : `calc(${w})`,\n heightStr = useRound ? `round(${h}, 1px)` : `calc(${h})`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/toolbar.js\n\nclass EditorToolbar {\n #toolbar = null;\n #colorPicker = null;\n #editor;\n #buttons = null;\n constructor(editor) {\n this.#editor = editor;\n }\n render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#editor._uiManager._signal;\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n const position = this.#editor.toolbarPosition;\n if (position) {\n const {\n style\n } = editToolbar;\n const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n }\n this.#addDeleteButton();\n return editToolbar;\n }\n static #pointerDown(e) {\n e.stopPropagation();\n }\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n e.preventDefault();\n e.stopPropagation();\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n e.preventDefault();\n e.stopPropagation();\n }\n #addListenersToElement(element) {\n const signal = this.#editor._uiManager._signal;\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n }\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n this.#colorPicker?.hideDropdown();\n }\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n }\n #addDeleteButton() {\n const button = document.createElement(\"button\");\n button.className = \"delete\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", `pdfjs-editor-remove-${this.#editor.editorType}-button`);\n this.#addListenersToElement(button);\n button.addEventListener(\"click\", e => {\n this.#editor._uiManager.delete();\n }, {\n signal: this.#editor._uiManager._signal\n });\n this.#buttons.append(button);\n }\n get #divider() {\n const divider = document.createElement(\"div\");\n divider.className = \"divider\";\n return divider;\n }\n addAltTextButton(button) {\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n }\n addColorPicker(colorPicker) {\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass HighlightToolbar {\n #buttons = null;\n #toolbar = null;\n #uiManager;\n constructor(uiManager) {\n this.#uiManager = uiManager;\n }\n #render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal: this.#uiManager._signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n this.#addHighlightButton();\n return editToolbar;\n }\n #getLastPoint(boxes, isLTR) {\n let lastY = 0;\n let lastX = 0;\n for (const box of boxes) {\n const y = box.y + box.height;\n if (y < lastY) {\n continue;\n }\n const x = box.x + (isLTR ? box.width : 0);\n if (y > lastY) {\n lastX = x;\n lastY = y;\n continue;\n }\n if (isLTR) {\n if (x > lastX) {\n lastX = x;\n }\n } else if (x < lastX) {\n lastX = x;\n }\n }\n return [isLTR ? 1 - lastX : lastX, lastY];\n }\n show(parent, boxes, isLTR) {\n const [x, y] = this.#getLastPoint(boxes, isLTR);\n const {\n style\n } = this.#toolbar ||= this.#render();\n parent.append(this.#toolbar);\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n }\n hide() {\n this.#toolbar.remove();\n }\n #addHighlightButton() {\n const button = document.createElement(\"button\");\n button.className = \"highlightButton\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", `pdfjs-highlight-floating-button1`);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", \"pdfjs-highlight-floating-button-label\");\n const signal = this.#uiManager._signal;\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n }, {\n signal\n });\n this.#buttons.append(button);\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/tools.js\n\n\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nfunction opacityToHex(opacity) {\n return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, \"0\");\n}\nclass IdManager {\n #id = 0;\n get id() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass ImageManager {\n #baseId = getUuid();\n #id = 0;\n #cache = null;\n static get _isSVGFittingCanvas() {\n const svg = `data:image/svg+xml;charset=UTF-8,`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n image = await fetchData(rawData, \"blob\");\n } else {\n image = data.file = rawData;\n }\n if (image.type === \"image/svg+xml\") {\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = data.svgUrl = fileReader.result;\n imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n console.error(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n return this.getFromUrl(data.url);\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n post,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n post,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n const {\n undo,\n post\n } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n const {\n cmd,\n post\n } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac\n } = util_FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info = this.callbacks.get(this.#serialize(event));\n if (!info) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info;\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args, event)();\n if (!bubbles) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n}\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\nclass AnnotationEditorUIManager {\n #abortController = new AbortController();\n #activeEditor = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n #enableHighlightFloatingButton = false;\n #filterFactory = null;\n #focusMainContainerTimeoutId = null;\n #highlightColors = null;\n #highlightWhenShiftUp = false;\n #highlightToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isWaiting = false;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #pageColors = null;\n #showAllStates = null;\n #boundBlur = this.blur.bind(this);\n #boundFocus = this.focus.bind(this);\n #boundCopy = this.copy.bind(this);\n #boundCut = this.cut.bind(this);\n #boundPaste = this.paste.bind(this);\n #boundKeydown = this.keydown.bind(this);\n #boundKeyup = this.keyup.bind(this);\n #boundOnEditingAction = this.onEditingAction.bind(this);\n #boundOnPageChanging = this.onPageChanging.bind(this);\n #boundOnScaleChanging = this.onScaleChanging.bind(this);\n #boundOnRotationChanging = this.onRotationChanging.bind(this);\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false\n };\n #translation = [0, 0];\n #translationTimeoutId = null;\n #container = null;\n #viewer = null;\n static TRANSLATE_SMALL = 1;\n static TRANSLATE_BIG = 10;\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n const textInputChecker = (_self, {\n target: el\n }) => {\n if (el instanceof HTMLInputElement) {\n const {\n type\n } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n checker: textInputChecker\n }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n checker: textInputChecker\n }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n checker: textInputChecker\n }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n checker: textInputChecker\n }], [[\"Enter\", \"mac+Enter\"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n }], [[\" \", \"mac+ \"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n }], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n constructor(container, viewer, altTextManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, mlManager) {\n this._signal = this.#abortController.signal;\n this.#container = container;\n this.#viewer = viewer;\n this.#altTextManager = altTextManager;\n this._eventBus = eventBus;\n this._eventBus._on(\"editingaction\", this.#boundOnEditingAction);\n this._eventBus._on(\"pagechanging\", this.#boundOnPageChanging);\n this._eventBus._on(\"scalechanging\", this.#boundOnScaleChanging);\n this._eventBus._on(\"rotationchanging\", this.#boundOnRotationChanging);\n this.#addSelectionListener();\n this.#addDragAndDropListeners();\n this.#addKeyboardManager();\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.#highlightColors = highlightColors || null;\n this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n this.isShiftKeyDown = false;\n }\n destroy() {\n this.#abortController?.abort();\n this.#abortController = null;\n this._signal = null;\n this._eventBus._off(\"editingaction\", this.#boundOnEditingAction);\n this._eventBus._off(\"pagechanging\", this.#boundOnPageChanging);\n this._eventBus._off(\"scalechanging\", this.#boundOnScaleChanging);\n this._eventBus._off(\"rotationchanging\", this.#boundOnRotationChanging);\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#highlightToolbar?.hide();\n this.#highlightToolbar = null;\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n }\n async mlGuess(data) {\n return this.#mlManager?.guess(data) || null;\n }\n get hasMLManager() {\n return !!this.#mlManager;\n }\n get hcmFilter() {\n return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n }\n get direction() {\n return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n }\n get highlightColors() {\n return shadow(this, \"highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => pair.split(\"=\").map(x => x.trim()))) : null);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n }\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n editAltText(editor) {\n this.#altTextManager?.editAltText(this, editor);\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n #getAnchorElementForSelection({\n anchorNode\n }) {\n return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n }\n highlightSelection(methodOfCreation = \"\") {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const text = selection.toString();\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n selection.empty();\n if (this.#mode === AnnotationEditorType.NONE) {\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode: AnnotationEditorType.HIGHLIGHT\n });\n this.showAllEditors(\"highlight\", true, true);\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n layer.createAndAddNewEditor({\n x: 0,\n y: 0\n }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text\n });\n break;\n }\n }\n }\n #displayHighlightToolbar() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n this.#highlightToolbar ||= new HighlightToolbar(this);\n this.#highlightToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n const {\n anchorNode\n } = selection;\n if (anchorNode === this.#selectedTextNode) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n if (!textLayer) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = anchorNode;\n this.#dispatchUpdateStates({\n hasSelectedText: true\n });\n if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.showAllEditors(\"highlight\", true, true);\n }\n this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const signal = this._signal;\n const pointerup = e => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n return;\n }\n window.removeEventListener(\"pointerup\", pointerup);\n window.removeEventListener(\"blur\", pointerup);\n if (e.type === \"pointerup\") {\n this.#onSelectEnd(\"main_toolbar\");\n }\n };\n window.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n window.addEventListener(\"blur\", pointerup, {\n signal\n });\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayHighlightToolbar();\n }\n }\n #addSelectionListener() {\n document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n signal: this._signal\n });\n }\n #addFocusManager() {\n const signal = this._signal;\n window.addEventListener(\"focus\", this.#boundFocus, {\n signal\n });\n window.addEventListener(\"blur\", this.#boundBlur, {\n signal\n });\n }\n #removeFocusManager() {\n window.removeEventListener(\"focus\", this.#boundFocus);\n window.removeEventListener(\"blur\", this.#boundBlur);\n }\n blur() {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n if (!this.hasSelection) {\n return;\n }\n const {\n activeElement\n } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this._signal\n });\n lastActiveElement.focus();\n }\n #addKeyboardManager() {\n const signal = this._signal;\n window.addEventListener(\"keydown\", this.#boundKeydown, {\n signal\n });\n window.addEventListener(\"keyup\", this.#boundKeyup, {\n signal\n });\n }\n #removeKeyboardManager() {\n window.removeEventListener(\"keydown\", this.#boundKeydown);\n window.removeEventListener(\"keyup\", this.#boundKeyup);\n }\n #addCopyPasteListeners() {\n const signal = this._signal;\n document.addEventListener(\"copy\", this.#boundCopy, {\n signal\n });\n document.addEventListener(\"cut\", this.#boundCut, {\n signal\n });\n document.addEventListener(\"paste\", this.#boundPaste, {\n signal\n });\n }\n #removeCopyPasteListeners() {\n document.removeEventListener(\"copy\", this.#boundCopy);\n document.removeEventListener(\"cut\", this.#boundCut);\n document.removeEventListener(\"paste\", this.#boundPaste);\n }\n #addDragAndDropListeners() {\n const signal = this._signal;\n document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n signal\n });\n document.addEventListener(\"drop\", this.drop.bind(this), {\n signal\n });\n }\n addEditListeners() {\n this.#addKeyboardManager();\n this.#addCopyPasteListeners();\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n }\n dragOver(event) {\n for (const {\n type\n } of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(type)) {\n event.dataTransfer.dropEffect = \"copy\";\n event.preventDefault();\n return;\n }\n }\n }\n }\n drop(event) {\n for (const item of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n event.preventDefault();\n return;\n }\n }\n }\n }\n copy(event) {\n event.preventDefault();\n this.#activeEditor?.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n paste(event) {\n event.preventDefault();\n const {\n clipboardData\n } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = true;\n }\n if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n keyup(event) {\n if (this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n onEditingAction({\n name\n }) {\n switch (name) {\n case \"undo\":\n case \"redo\":\n case \"delete\":\n case \"selectAll\":\n this[name]();\n break;\n case \"highlightSelection\":\n this.highlightSelection(\"context_menu\");\n break;\n }\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n }\n }\n }\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false\n });\n } else {\n this.#removeFocusManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.id;\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n updateMode(mode, editId = null, isFromKeyboard = false) {\n if (this.#mode === mode) {\n return;\n }\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n return;\n }\n this.setEditingState(true);\n this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (!editId && isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n return;\n }\n if (!editId) {\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.annotationElementId === editId) {\n this.setSelected(editor);\n editor.enterInEditMode();\n break;\n }\n }\n }\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n updateToolbar(mode) {\n if (mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor();\n return;\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n this.#mainHighlightColorPicker?.updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n this._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data: {\n type: \"highlight\",\n action: \"toggle_visibility\"\n }\n }\n });\n (this.#showAllStates ||= new Map()).set(type, value);\n this.showAllEditors(\"highlight\", value);\n break;\n }\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n if (state !== visible) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n }\n }\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n for (const layer of this.#allLayers.values()) {\n layer.enable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.enable();\n }\n }\n }\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.disable();\n }\n }\n }\n getEditors(pageIndex) {\n const editors = [];\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n editors.push(editor);\n }\n }\n return editors;\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n if (editor.div.contains(document.activeElement)) {\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n }\n this.#focusMainContainerTimeoutId = setTimeout(() => {\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {}\n return ed;\n }\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n get isEnterHandled() {\n return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [...this.#selectedEditors];\n const cmd = () => {\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n }\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1000;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n }\n }\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1\n });\n }\n }\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n for (const [{\n x,\n y,\n pageIndex\n }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, {\n newX,\n newY,\n newPageIndex\n }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, {\n savedX,\n savedY,\n savedPageIndex\n }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true\n });\n return true;\n }\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n get isEditorHandlingKeyboard() {\n return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\n getSelectionBoxes(textLayer) {\n if (!textLayer) {\n return null;\n }\n const selection = document.getSelection();\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n return null;\n }\n }\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n let rotator;\n switch (textLayer.getAttribute(\"data-main-rotation\")) {\n case \"90\":\n rotator = (x, y, w, h) => ({\n x: (y - layerY) / parentHeight,\n y: 1 - (x + w - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n case \"180\":\n rotator = (x, y, w, h) => ({\n x: 1 - (x + w - layerX) / parentWidth,\n y: 1 - (y + h - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n case \"270\":\n rotator = (x, y, w, h) => ({\n x: 1 - (y + h - layerY) / parentHeight,\n y: (x - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n default:\n rotator = (x, y, w, h) => ({\n x: (x - layerX) / parentWidth,\n y: (y - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n }\n const boxes = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n for (const {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n boxes.push(rotator(x, y, width, height));\n }\n }\n return boxes.length === 0 ? null : boxes;\n }\n addChangedExistingAnnotation({\n annotationElementId,\n id\n }) {\n (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n }\n removeChangedExistingAnnotation({\n annotationElementId\n }) {\n this.#changedExistingAnnotations?.delete(annotationElementId);\n }\n renderAnnotationElement(annotation) {\n const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n if (!editorId) {\n return;\n }\n const editor = this.#annotationStorage.getRawValue(editorId);\n if (!editor) {\n return;\n }\n if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n return;\n }\n editor.renderAnnotationElement(annotation);\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/alt_text.js\n\nclass AltText {\n #altText = \"\";\n #altTextDecorative = false;\n #altTextButton = null;\n #altTextTooltip = null;\n #altTextTooltipTimeout = null;\n #altTextWasFromKeyBoard = false;\n #editor = null;\n static _l10nPromise = null;\n constructor(editor) {\n this.#editor = editor;\n }\n static initialize(l10nPromise) {\n AltText._l10nPromise ||= l10nPromise;\n }\n async render() {\n const altText = this.#altTextButton = document.createElement(\"button\");\n altText.className = \"altText\";\n const msg = await AltText._l10nPromise.get(\"pdfjs-editor-alt-text-button-label\");\n altText.textContent = msg;\n altText.setAttribute(\"aria-label\", msg);\n altText.tabIndex = \"0\";\n const signal = this.#editor._uiManager._signal;\n altText.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n this.#editor._uiManager.editAltText(this.#editor);\n };\n altText.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n await this.#setState();\n return altText;\n }\n finish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.focus({\n focusVisible: this.#altTextWasFromKeyBoard\n });\n this.#altTextWasFromKeyBoard = false;\n }\n isEmpty() {\n return !this.#altText && !this.#altTextDecorative;\n }\n get data() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative\n };\n }\n set data({\n altText,\n decorative\n }) {\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n this.#setState();\n }\n toggle(enabled = false) {\n if (!this.#altTextButton) {\n return;\n }\n if (!enabled && this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextButton.disabled = !enabled;\n }\n destroy() {\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextTooltip = null;\n }\n async #setState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n AltText._l10nPromise.get(\"pdfjs-editor-alt-text-edit-button-label\").then(msg => {\n button.setAttribute(\"aria-label\", msg);\n });\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n const id = tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n button.setAttribute(\"aria-describedby\", id);\n const DELAY_TO_SHOW_TOOLTIP = 100;\n const signal = this.#editor._uiManager._signal;\n signal.addEventListener(\"abort\", () => {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }, {\n once: true\n });\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this.#editor._reportTelemetry({\n action: \"alt_text_tooltip\"\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n }, {\n signal\n });\n button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n }, {\n signal\n });\n }\n tooltip.innerText = this.#altTextDecorative ? await AltText._l10nPromise.get(\"pdfjs-editor-alt-text-decorative-tooltip\") : this.#altText;\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n const element = this.#editor.getImageForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/editor.js\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #disabled = false;\n #keepAspectRatio = false;\n #resizersDiv = null;\n #savedDimensions = null;\n #boundFocusin = this.focusin.bind(this);\n #boundFocusout = this.focusout.bind(this);\n #editToolbar = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialPosition = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n _initialOptions = Object.create(null);\n _isVisible = true;\n _uiManager = null;\n _focusEventsAllowed = true;\n _l10nPromise = null;\n #isDraggable = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _borderLineWidth = -1;\n static _colorManager = new ColorManager();\n static _zIndex = 1;\n static _telemetryTimeout = 1000;\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, {\n args: [-small, 0]\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n args: [-big, 0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], resize, {\n args: [small, 0]\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n args: [big, 0]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], resize, {\n args: [0, -small]\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n args: [0, -big]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], resize, {\n args: [0, small]\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n args: [0, big]\n }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n }\n constructor(parameters) {\n if (this.constructor === AnnotationEditor) {\n unreachable(\"Cannot initialize AnnotationEditor.\");\n }\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n static get _defaultLineColor() {\n return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager, options) {\n AnnotationEditor._l10nPromise ||= new Map([\"pdfjs-editor-alt-text-button-label\", \"pdfjs-editor-alt-text-edit-button-label\", \"pdfjs-editor-alt-text-decorative-tooltip\", \"pdfjs-editor-resizer-label-topLeft\", \"pdfjs-editor-resizer-label-topMiddle\", \"pdfjs-editor-resizer-label-topRight\", \"pdfjs-editor-resizer-label-middleRight\", \"pdfjs-editor-resizer-label-bottomRight\", \"pdfjs-editor-resizer-label-bottomMiddle\", \"pdfjs-editor-resizer-label-bottomLeft\", \"pdfjs-editor-resizer-label-middleLeft\"].map(str => [str, l10n.get(str.replaceAll(/([A-Z])/g, c => `-${c.toLowerCase()}`))]));\n if (options?.strings) {\n for (const str of options.strings) {\n AnnotationEditor._l10nPromise.set(str, l10n.get(str));\n }\n }\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n get isEnterHandled() {\n return true;\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= this.height * pageHeight / (pageWidth * 2);\n this.y += this.width * pageWidth / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += this.height * pageHeight / (pageWidth * 2);\n this.y -= this.width * pageWidth / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n this.#stopResizing();\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialPosition ||= [this.x, this.y];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n drag(tx, ty) {\n this.#initialPosition ||= [this.x, this.y];\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x,\n y\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n this.div.style.left = `${(100 * x).toFixed(2)}%`;\n this.div.style.top = `${(100 * y).toFixed(2)}%`;\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n get _hasBeenMoved() {\n return !!this.#initialPosition && (this.#initialPosition[0] !== this.x || this.#initialPosition[1] !== this.y);\n }\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n get _mustFixPosition() {\n return true;\n }\n fixAndSetPosition(rotation = this.rotation) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = Math.max(0, Math.min(pageWidth - width, x));\n y = Math.max(0, Math.min(pageHeight - height, y));\n break;\n case 90:\n x = Math.max(0, Math.min(pageWidth - height, x));\n y = Math.min(pageHeight, Math.max(width, y));\n break;\n case 180:\n x = Math.min(pageWidth, Math.max(width, x));\n y = Math.min(pageHeight, Math.max(height, y));\n break;\n case 270:\n x = Math.min(pageWidth, Math.max(height, x));\n y = Math.max(0, Math.min(pageHeight - width, y));\n break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = this.div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n const scaledWidth = pageWidth * parentScale;\n const scaledHeight = pageHeight * parentScale;\n return util_FeatureTest.isCSSRoundSupported ? [Math.round(scaledWidth), Math.round(scaledHeight)] : [scaledWidth, scaledHeight];\n }\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.div.style.width = `${(100 * width / parentWidth).toFixed(2)}%`;\n if (!this.#keepAspectRatio) {\n this.div.style.height = `${(100 * height / parentHeight).toFixed(2)}%`;\n }\n }\n fixDims() {\n const {\n style\n } = this.div;\n const {\n height,\n width\n } = style;\n const widthPercent = width.endsWith(\"%\");\n const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n if (widthPercent && heightPercent) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (!widthPercent) {\n style.width = `${(100 * parseFloat(width) / parentWidth).toFixed(2)}%`;\n }\n if (!this.#keepAspectRatio && !heightPercent) {\n style.height = `${(100 * parseFloat(height) / parentHeight).toFixed(2)}%`;\n }\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n const signal = this._uiManager._signal;\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n signal\n });\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#altText?.toggle(false);\n const boundResizerPointermove = this.#resizerPointermove.bind(this, name);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n const signal = this._uiManager._signal;\n const pointerMoveOptions = {\n passive: true,\n capture: true,\n signal\n };\n this.parent.togglePointerEvents(false);\n window.addEventListener(\"pointermove\", boundResizerPointermove, pointerMoveOptions);\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n window.removeEventListener(\"pointerup\", pointerUpCallback);\n window.removeEventListener(\"blur\", pointerUpCallback);\n window.removeEventListener(\"pointermove\", boundResizerPointermove, pointerMoveOptions);\n window.removeEventListener(\"contextmenu\", noContextMenu);\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n #addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight) {\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: () => {\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n },\n undo: () => {\n this.width = savedWidth;\n this.height = savedHeight;\n this.x = savedX;\n this.y = savedY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * savedWidth, parentHeight * savedHeight);\n this.fixAndSetPosition();\n },\n mustExec: true\n });\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const round = x => Math.round(x * 10000) / 10000;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = round(savedX + transfOppositePoint[0]);\n const oppositeY = round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let [deltaX, deltaY] = this.screenToPageTranslation(event.movementX, event.movementY);\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = Math.max(minWidth, Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))) / savedWidth;\n } else {\n ratioY = Math.max(minHeight, Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))) / savedHeight;\n }\n const newWidth = round(savedWidth * ratioX);\n const newHeight = round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n }\n altTextFinish() {\n this.#altText?.finish();\n }\n async addEditToolbar() {\n if (this.#editToolbar || this.#isInEditMode) {\n return this.#editToolbar;\n }\n this.#editToolbar = new EditorToolbar(this);\n this.div.append(this.#editToolbar.render());\n if (this.#altText) {\n this.#editToolbar.addAltTextButton(await this.#altText.render());\n }\n return this.#editToolbar;\n }\n removeEditToolbar() {\n if (!this.#editToolbar) {\n return;\n }\n this.#editToolbar.remove();\n this.#editToolbar = null;\n this.#altText?.destroy();\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n async addAltTextButton() {\n if (this.#altText) {\n return;\n }\n AltText.initialize(AnnotationEditor._l10nPromise);\n this.#altText = new AltText(this);\n if (this.#accessibilityData) {\n this.#altText.data = this.#accessibilityData;\n this.#accessibilityData = null;\n }\n await this.addEditToolbar();\n }\n get altTextData() {\n return this.#altText?.data;\n }\n set altTextData(data) {\n if (!this.#altText) {\n return;\n }\n this.#altText.data = data;\n }\n hasAltText() {\n return !this.#altText?.isEmpty();\n }\n render() {\n this.div = document.createElement(\"div\");\n this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n this.div.className = this.name;\n this.div.setAttribute(\"id\", this.id);\n this.div.tabIndex = this.#disabled ? -1 : 0;\n if (!this._isVisible) {\n this.div.classList.add(\"hidden\");\n }\n this.setInForeground();\n const signal = this._uiManager._signal;\n this.div.addEventListener(\"focusin\", this.#boundFocusin, {\n signal\n });\n this.div.addEventListener(\"focusout\", this.#boundFocusout, {\n signal\n });\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n this.div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n this.div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, this.div, [\"pointerdown\"]);\n return this.div;\n }\n pointerdown(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n this.#selectOnPointerEvent(event);\n }\n #selectOnPointerEvent(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n #setUpDragSession(event) {\n const isSelected = this._uiManager.isSelected(this);\n this._uiManager.setUpDragSession();\n let pointerMoveOptions, pointerMoveCallback;\n const signal = this._uiManager._signal;\n if (isSelected) {\n this.div.classList.add(\"moving\");\n pointerMoveOptions = {\n passive: true,\n capture: true,\n signal\n };\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n pointerMoveCallback = e => {\n const {\n clientX: x,\n clientY: y\n } = e;\n const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n };\n window.addEventListener(\"pointermove\", pointerMoveCallback, pointerMoveOptions);\n }\n const pointerUpCallback = () => {\n window.removeEventListener(\"pointerup\", pointerUpCallback);\n window.removeEventListener(\"blur\", pointerUpCallback);\n if (isSelected) {\n this.div.classList.remove(\"moving\");\n window.removeEventListener(\"pointermove\", pointerMoveCallback, pointerMoveOptions);\n }\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(event);\n }\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n moveInDOM() {\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n }\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n onceAdded() {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n this.#isInEditMode = true;\n }\n disableEditMode() {\n this.#isInEditMode = false;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n rebuild() {\n const signal = this._uiManager._signal;\n this.div?.addEventListener(\"focusin\", this.#boundFocusin, {\n signal\n });\n this.div?.addEventListener(\"focusout\", this.#boundFocusout, {\n signal\n });\n }\n rotate(_angle) {}\n serialize(isForCopying = false, context = null) {\n unreachable(\"An editor must be serializable\");\n }\n static deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n get hasBeenModified() {\n return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n }\n remove() {\n this.div.removeEventListener(\"focusin\", this.#boundFocusin);\n this.div.removeEventListener(\"focusout\", this.#boundFocusout);\n if (!this.isEmpty()) {\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n if (this.#telemetryTimeouts) {\n for (const timeout of this.#telemetryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.#telemetryTimeouts = null;\n }\n this.parent = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n bindEvents(this, this.div, [\"keydown\"]);\n }\n }\n get toolbarPosition() {\n return null;\n }\n keydown(event) {\n if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n const signal = this._uiManager._signal;\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown, {\n signal\n });\n div.addEventListener(\"blur\", boundResizerBlur, {\n signal\n });\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n signal\n });\n AnnotationEditor._l10nPromise.get(`pdfjs-editor-resizer-label-${name}`).then(msg => div.setAttribute(\"aria-label\", msg));\n }\n }\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n if (nextFirstPosition !== firstPosition) {\n if (nextFirstPosition < firstPosition) {\n for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n this.#resizersDiv.append(this.#resizersDiv.firstChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\n }\n }\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n AnnotationEditor._l10nPromise.get(`pdfjs-editor-resizer-label-${name}`).then(msg => child.setAttribute(\"aria-label\", msg));\n }\n }\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstChild.focus({\n focusVisible: true\n });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n #resizerBlur(event) {\n if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n this.#stopResizing();\n }\n }\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n movementX: x,\n movementY: y\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n if (this.#savedDimensions) {\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n this.#savedDimensions = null;\n }\n }\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n select() {\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n if (!this.#editToolbar) {\n this.addEditToolbar().then(() => {\n if (this.div?.classList.contains(\"selectedEditor\")) {\n this.#editToolbar?.show();\n }\n });\n return;\n }\n this.#editToolbar?.show();\n }\n unselect() {\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n this._uiManager.currentLayer.div.focus({\n preventScroll: true\n });\n }\n this.#editToolbar?.hide();\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n enterInEditMode() {}\n getImageForAltText() {\n return null;\n }\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n setAspectRatio(width, height) {\n this.#keepAspectRatio = true;\n const aspectRatio = width / height;\n const {\n style\n } = this.div;\n style.aspectRatio = aspectRatio;\n style.height = \"auto\";\n }\n static get MIN_SIZE() {\n return 16;\n }\n static canCreateNewEmptyEditor() {\n return true;\n }\n get telemetryInitialData() {\n return {\n action: \"added\"\n };\n }\n get telemetryFinalData() {\n return null;\n }\n _reportTelemetry(data, mustWait = false) {\n if (mustWait) {\n this.#telemetryTimeouts ||= new Map();\n const {\n action\n } = data;\n let timeout = this.#telemetryTimeouts.get(action);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n this._reportTelemetry(data);\n this.#telemetryTimeouts.delete(action);\n if (this.#telemetryTimeouts.size === 0) {\n this.#telemetryTimeouts = null;\n }\n }, AnnotationEditor._telemetryTimeout);\n this.#telemetryTimeouts.set(action, timeout);\n return;\n }\n data.type ||= this.editorType;\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data\n }\n });\n }\n show(visible = this._isVisible) {\n this.div.classList.toggle(\"hidden\", !visible);\n this._isVisible = visible;\n }\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n this.#disabled = false;\n }\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n this.#disabled = true;\n }\n renderAnnotationElement(annotation) {\n let content = annotation.container.querySelector(\".annotationContent\");\n if (!content) {\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n annotation.container.prepend(content);\n } else if (content.nodeName === \"CANVAS\") {\n const canvas = content;\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n canvas.before(content);\n }\n return content;\n }\n resetAnnotationElement(annotation) {\n const {\n firstChild\n } = annotation.container;\n if (firstChild.nodeName === \"DIV\" && firstChild.classList.contains(\"annotationContent\")) {\n firstChild.remove();\n }\n }\n}\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex\n };\n }\n}\n\n;// CONCATENATED MODULE: ./src/shared/murmurhash3.js\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/annotation_storage.js\n\n\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined\n});\nclass AnnotationStorage {\n #modified = false;\n #storage = new Map();\n constructor() {\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n if (value instanceof AnnotationEditor && typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n getAll() {\n return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n }\n setAll(obj) {\n for (const [key, val] of Object.entries(obj)) {\n this.setValue(key, val);\n }\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new MurmurHash3_64(),\n transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n if (hasBitmap) {\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n return map.size > 0 ? {\n map,\n hash: hash.hexdigest(),\n transfer\n } : SerializableEmpty;\n }\n get editorStats() {\n let stats = null;\n const typeToEditor = new Map();\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n continue;\n }\n const editorStats = value.telemetryFinalData;\n if (!editorStats) {\n continue;\n }\n const {\n type\n } = editorStats;\n if (!typeToEditor.has(type)) {\n typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n }\n stats ||= Object.create(null);\n const map = stats[type] ||= new Map();\n for (const [key, val] of Object.entries(editorStats)) {\n if (key === \"type\") {\n continue;\n }\n let counters = map.get(key);\n if (!counters) {\n counters = new Map();\n map.set(key, counters);\n }\n const count = counters.get(val) ?? 0;\n counters.set(val, count + 1);\n }\n }\n for (const [type, editor] of typeToEditor) {\n stats[type] = editor.computeTelemetryFinalData(stats[type]);\n }\n return stats;\n }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n constructor(parent) {\n super();\n const {\n map,\n hash,\n transfer\n } = parent.serializable;\n const clone = structuredClone(map, transfer ? {\n transfer\n } : null);\n this.#serializable = {\n map: clone,\n hash,\n transfer\n };\n }\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/font_loader.js\n\nclass FontLoader {\n #systemFonts = new Set();\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont({\n systemFontInfo: info,\n _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(!this.disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n _inspectFont?.(info);\n } catch {\n warn(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n let supported = false;\n if (isNodeJS) {\n supported = true;\n } else if (typeof navigator !== \"undefined\" && typeof navigator?.userAgent === \"string\" && /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)) {\n supported = true;\n }\n return shadow(this, \"isSyncFontLoadingSupported\", supported);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n 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==\");\n return shadow(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\n if (++called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nclass FontFaceObject {\n constructor(translatedData, {\n disableFontFace = false,\n inspectFont = null\n }) {\n this.compiledGlyphs = Object.create(null);\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.disableFontFace = disableFontFace === true;\n this._inspectFont = inspectFont;\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const data = bytesToString(this.data);\n const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n let cmds;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n if (!Array.isArray(cmds) || cmds.length === 0) {\n return this.compiledGlyphs[character] = function (c, size) {};\n }\n const commands = [];\n for (let i = 0, ii = cmds.length; i < ii;) {\n switch (cmds[i++]) {\n case FontRenderOps.BEZIER_CURVE_TO:\n {\n const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\n commands.push(ctx => ctx.bezierCurveTo(a, b, c, d, e, f));\n i += 6;\n }\n break;\n case FontRenderOps.MOVE_TO:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.moveTo(a, b));\n i += 2;\n }\n break;\n case FontRenderOps.LINE_TO:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.lineTo(a, b));\n i += 2;\n }\n break;\n case FontRenderOps.QUADRATIC_CURVE_TO:\n {\n const [a, b, c, d] = cmds.slice(i, i + 4);\n commands.push(ctx => ctx.quadraticCurveTo(a, b, c, d));\n i += 4;\n }\n break;\n case FontRenderOps.RESTORE:\n commands.push(ctx => ctx.restore());\n break;\n case FontRenderOps.SAVE:\n commands.push(ctx => ctx.save());\n break;\n case FontRenderOps.SCALE:\n assert(commands.length === 2, \"Scale command is only valid at the third position.\");\n break;\n case FontRenderOps.TRANSFORM:\n {\n const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\n commands.push(ctx => ctx.transform(a, b, c, d, e, f));\n i += 6;\n }\n break;\n case FontRenderOps.TRANSLATE:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.translate(a, b));\n i += 2;\n }\n break;\n }\n }\n return this.compiledGlyphs[character] = function glyphDrawer(ctx, size) {\n commands[0](ctx);\n commands[1](ctx);\n ctx.scale(size, -size);\n for (let i = 2, ii = commands.length; i < ii; i++) {\n commands[i](ctx);\n }\n };\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/node_utils.js\n\n\nif (isNodeJS) {\n var packageCapability = Promise.withResolvers();\n var packageMap = null;\n const loadPackages = async () => {\n const fs = await import( /*webpackIgnore: true*/\"fs\"),\n http = await import( /*webpackIgnore: true*/\"http\"),\n https = await import( /*webpackIgnore: true*/\"https\"),\n url = await import( /*webpackIgnore: true*/\"url\");\n let canvas, path2d;\n return new Map(Object.entries({\n fs,\n http,\n https,\n url,\n canvas,\n path2d\n }));\n };\n loadPackages().then(map => {\n packageMap = map;\n packageCapability.resolve();\n }, reason => {\n warn(`loadPackages: ${reason}`);\n packageMap = new Map();\n packageCapability.resolve();\n });\n}\nclass NodePackages {\n static get promise() {\n return packageCapability.promise;\n }\n static get(name) {\n return packageMap?.get(name);\n }\n}\nconst node_utils_fetchData = function (url) {\n const fs = NodePackages.get(\"fs\");\n return fs.promises.readFile(url).then(data => new Uint8Array(data));\n};\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const canvas = NodePackages.get(\"canvas\");\n return canvas.createCanvas(width, height);\n }\n}\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return node_utils_fetchData(url).then(data => ({\n cMapData: data,\n compressionType\n }));\n }\n}\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n _fetchData(url) {\n return node_utils_fetchData(url);\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/pattern_helper.js\n\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\nclass BaseShadingPattern {\n constructor() {\n if (this.constructor === BaseShadingPattern) {\n unreachable(\"Cannot initialize BaseShadingPattern.\");\n }\n }\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height, true);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[7];\n this._background = IR[8];\n this.matrix = null;\n }\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight, false);\n const tmpCtx = tmpCanvas.context;\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n if (pathType === PathType.SHADING) {\n scale = Util.singularValueDecompose2dScale(getCurrentTransform(ctx));\n } else {\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (this.matrix) {\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3000;\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner) {\n const operatorList = this.operatorList;\n const bbox = this.bbox;\n const xstep = this.xstep;\n const ystep = this.ystep;\n const paintType = this.paintType;\n const tilingType = this.tilingType;\n const color = this.color;\n const canvasGraphicsFactory = this.canvasGraphicsFactory;\n info(\"TilingType: \" + tilingType);\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = Util.singularValueDecompose2dScale(this.baseTransform);\n const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];\n const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);\n const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size, true);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n let adjustedX0 = x0;\n let adjustedY0 = y0;\n let adjustedX1 = x1;\n let adjustedY1 = y1;\n if (x0 < 0) {\n adjustedX0 = 0;\n adjustedX1 += Math.abs(x0);\n }\n if (y0 < 0) {\n adjustedY0 = 0;\n adjustedY1 += Math.abs(y0);\n }\n tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: adjustedX0,\n offsetY: adjustedY0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\n step = Math.abs(step);\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return {\n scale,\n size\n };\n }\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.current.updateRectMinMax(getCurrentTransform(graphics.ctx), [x0, y0, x1, y1]);\n graphics.clip();\n graphics.endPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n getPattern(ctx, owner, inverse, pathType) {\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\n\n;// CONCATENATED MODULE: ./src/shared/image_utils.js\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len32 = src.length >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n }\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n dest[destPos + 3] = s3 << 8 | 0xff;\n }\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/canvas.js\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst MAX_SIZE_TO_COMPILE = 1000;\nconst FULL_CHUNK_HEIGHT = 16;\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n return canvasEntry;\n }\n delete(id) {\n delete this.cache[id];\n }\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nfunction compileType3Glyph(imgData) {\n const {\n width,\n height\n } = imgData;\n if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n const width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n const lineSize = width + 7 & ~7;\n let data = new Uint8Array(lineSize * height),\n pos = 0;\n for (const elem of imgData.data) {\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const path = new Path2D();\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n path.moveTo(p % width1, i);\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n path.lineTo(p % width1, p / width1 | 0);\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n --i;\n }\n data = null;\n points = null;\n const drawOutline = function (c) {\n c.save();\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.fill(path);\n c.beginPath();\n c.restore();\n };\n return drawOutline;\n}\nclass CanvasExtraState {\n constructor(width, height) {\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = \"none\";\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n updatePathMinMax(transform, x, y) {\n [x, y] = Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n updateRectMinMax(transform, rect) {\n const p1 = Util.applyTransform(rect, transform);\n const p2 = Util.applyTransform(rect.slice(2), transform);\n const p3 = Util.applyTransform([rect[0], rect[3]], transform);\n const p4 = Util.applyTransform([rect[2], rect[1]], transform);\n this.minX = Math.min(this.minX, p1[0], p2[0], p3[0], p4[0]);\n this.minY = Math.min(this.minY, p1[1], p2[1], p3[1], p4[1]);\n this.maxX = Math.max(this.maxX, p1[0], p2[0], p3[0], p4[0]);\n this.maxY = Math.max(this.maxY, p1[1], p2[1], p3[1], p4[1]);\n }\n updateScalingPathMinMax(transform, minMax) {\n Util.scaleMinMax(transform, minMax);\n this.minX = Math.min(this.minX, minMax[0]);\n this.minY = Math.min(this.minY, minMax[1]);\n this.maxX = Math.max(this.maxX, minMax[2]);\n this.maxY = Math.max(this.maxY, minMax[3]);\n }\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax);\n if (minMax) {\n return;\n }\n this.updateRectMinMax(transform, box);\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n const scale = Util.singularValueDecompose2dScale(transform);\n const xStrokePad = scale[0] * this.lineWidth / 2;\n const yStrokePad = scale[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minX === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n if (imgData.kind === util_ImageKind.GRAYSCALE_1BPP) {\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = width + 7 >> 3;\n const white = 0xffffffff;\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === util_ImageKind.RGBA_32BPP) {\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === util_ImageKind.RGB_24BPP) {\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n if (!isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n const scale = Util.singularValueDecompose2dScale(transform);\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS);\n return scale[0] <= actualScale && scale[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.processingType3 = null;\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n fnId = fnArray[i];\n if (fnId !== OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width;\n const height = img.height;\n let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight\n };\n }\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox([0, 0, width, height], maskToCanvas);\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(width) {\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(intent) {}\n setFlatness(flatness) {}\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.current.fillAlpha = value;\n this.ctx.globalAlpha = value;\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform(...getCurrentTransform(this.suspendedCtx));\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n }\n genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n let maskCanvas = maskCtx.canvas;\n let maskX = layerOffsetX - maskOffsetX;\n let maskY = layerOffsetY - maskOffsetY;\n if (backdrop) {\n if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {\n const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n const ctx = canvas.context;\n ctx.drawImage(maskCanvas, -maskX, -maskY);\n if (backdrop.some(c => c !== 0)) {\n ctx.globalCompositeOperation = \"destination-atop\";\n ctx.fillStyle = Util.makeHexColor(...backdrop);\n ctx.fillRect(0, 0, width, height);\n ctx.globalCompositeOperation = \"source-over\";\n }\n maskCanvas = canvas.canvas;\n maskX = maskY = 0;\n } else if (backdrop.some(c => c !== 0)) {\n maskCtx.save();\n maskCtx.globalAlpha = 1;\n maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip = new Path2D();\n clip.rect(maskX, maskY, width, height);\n maskCtx.clip(clip);\n maskCtx.globalCompositeOperation = \"destination-atop\";\n maskCtx.fillStyle = Util.makeHexColor(...backdrop);\n maskCtx.fillRect(maskX, maskY, width, height);\n maskCtx.restore();\n }\n }\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n if (subtype === \"Alpha\" && transferMap) {\n layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n } else if (subtype === \"Luminosity\") {\n layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n }\n const clip = new Path2D();\n clip.rect(layerOffsetX, layerOffsetY, width, height);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(maskCanvas, maskX, maskY, width, height, layerOffsetX, layerOffsetY, width, height);\n layerCtx.restore();\n }\n save() {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n restore() {\n if (this.stateStack.length === 0 && this.inSMaskMode) {\n this.endSMaskMode();\n }\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(ops, args, minMax) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n const currentTransform = getCurrentTransform(ctx);\n const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n if (!isScalingMatrix) {\n current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n }\n ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);\n j += 6;\n break;\n case OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n }\n current.setCurrentPoint(x, y);\n }\n closePath() {\n this.ctx.closePath();\n }\n stroke(consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n this.rescaleAndStroke(false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(true);\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n fill(consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n this.consumePath();\n }\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n endPath() {\n this.consumePath();\n }\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n ctx.save();\n ctx.beginPath();\n for (const path of paths) {\n ctx.setTransform(...path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n setLeading(leading) {\n this.current.leading = -leading;\n }\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n paintChar(character, x, y, patternTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n let addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (patternTransform) {\n ctx.setTransform(...patternTransform);\n }\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fill();\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n addToPath\n });\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n patternTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n ctx.fillText(chars.join(\"\"), 0, 0);\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n return undefined;\n }\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n if (font.remeasure && width > 0) {\n const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n return undefined;\n }\n showType3Text(glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y);\n ctx.scale(textHScale, fontDirection);\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n setCharWidth(xWidth, yWidth) {}\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip();\n this.endPath();\n }\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n })\n };\n pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(r, g, b) {\n const color = Util.makeHexColor(r, g, b);\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n }\n setFillRGBColor(r, g, b) {\n const color = Util.makeHexColor(r, g, b);\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n }\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.getObject(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox([0, 0, width, height], inv);\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updateRectMinMax(getCurrentTransform(this.ctx), bbox);\n this.clip();\n this.endPath();\n }\n }\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n const currentTransform = getCurrentTransform(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n let bounds = Util.getAxialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx));\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n const groupCtx = scratchCanvas.context;\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n } else {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore();\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (rect) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx));\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.clip();\n this.endPath();\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(...transform);\n this.transform(...matrix);\n }\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const glyph = this.processingType3;\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\n if (glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n }\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(img.data, img);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = getCurrentTransform(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n const [x, y] = Util.applyTransform([0, 0], trans);\n ctx.drawImage(mask.canvas, x, y);\n }\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return tmpCanvas.canvas;\n }\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save();\n if (!isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore();\n }\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(tag) {}\n markPointProps(tag, properties) {}\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat() {}\n endCompat() {}\n consumePath(clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(saveRestore) {\n const {\n ctx\n } = this;\n const {\n lineWidth\n } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n ctx.lineWidth = lineWidth || 1;\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.stroke();\n if (saveRestore) {\n ctx.restore();\n }\n }\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n static #port = null;\n static #src = \"\";\n static get workerPort() {\n return this.#port;\n }\n static set workerPort(val) {\n if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n static get workerSrc() {\n return this.#src;\n }\n static set workerSrc(val) {\n if (typeof val !== \"string\") {\n throw new Error(\"Invalid `workerSrc` type.\");\n }\n this.#src = val;\n }\n}\n\n;// CONCATENATED MODULE: ./src/shared/message_handler.js\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction wrapReason(reason) {\n if (!(reason instanceof Error || typeof reason === \"object\" && reason !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n new Promise(function (resolve) {\n resolve(streamSink.onPull?.());\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n new Promise(function (resolve) {\n resolve(streamSink.onCancel?.(wrapReason(data.reason)));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/metadata.js\n\nclass Metadata {\n #metadataMap;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n getAll() {\n return objectFromMap(this.#metadataMap);\n }\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/optional_content_config.js\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #isDisplay = false;\n #isPrint = false;\n #userSet = false;\n #visible = true;\n constructor(renderingIntent, {\n name,\n intent,\n usage\n }) {\n this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n this.name = name;\n this.intent = intent;\n this.usage = usage;\n }\n get visible() {\n if (this.#userSet) {\n return this.#visible;\n }\n if (!this.#visible) {\n return false;\n }\n const {\n print,\n view\n } = this.usage;\n if (this.#isDisplay) {\n return view?.viewState !== \"OFF\";\n } else if (this.#isPrint) {\n return print?.printState !== \"OFF\";\n }\n return true;\n }\n _setVisible(internal, visible, userSet = false) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#userSet = userSet;\n this.#visible = visible;\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = new Map();\n #initialHash = null;\n #order = null;\n constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n this.renderingIntent = renderingIntent;\n this.name = null;\n this.creator = null;\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(renderingIntent, group));\n }\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n this.#initialHash = this.getHash();\n }\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n info(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n setVisibility(id, visible = true) {\n const group = this.#groups.get(id);\n if (!group) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n group._setVisible(INTERNAL, !!visible, true);\n this.#cachedGetHash = null;\n }\n setOCGState({\n state,\n preserveRB\n }) {\n let operator;\n for (const elem of state) {\n switch (elem) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n operator = elem;\n continue;\n }\n const group = this.#groups.get(elem);\n if (!group) {\n continue;\n }\n switch (operator) {\n case \"ON\":\n group._setVisible(INTERNAL, true);\n break;\n case \"OFF\":\n group._setVisible(INTERNAL, false);\n break;\n case \"Toggle\":\n group._setVisible(INTERNAL, !group.visible);\n break;\n }\n }\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n getGroups() {\n return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\n }\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/transport_stream.js\n\n\nclass PDFDataTransportStream {\n constructor(pdfDataRangeTransport, {\n disableRange = false,\n disableStream = false\n }) {\n assert(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n const {\n length,\n initialData,\n progressiveDone,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n if (initialData?.length > 0) {\n const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n pdfDataRangeTransport.transportReady();\n }\n _onReceiveData({\n begin,\n chunk\n }) {\n const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n if (begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n _onProgress(evt) {\n if (evt.total === undefined) {\n this._rangeReaders[0]?.onProgress?.({\n loaded: evt.loaded\n });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/content_disposition.js\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n;// CONCATENATED MODULE: ./src/display/network_utils.js\n\n\n\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n returnValues.suggestedLength = length;\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseStatusError(status, url) {\n if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n return new MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status);\n}\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n;// CONCATENATED MODULE: ./src/display/fetch_stream.js\n\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n headers.append(property, value);\n }\n return headers;\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n warn(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._headers = createHeaders(this._stream.httpHeaders);\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n const getResponseHeader = name => response.headers.get(name);\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(getResponseHeader);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = Promise.withResolvers();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n this._headers = createHeaders(this._stream.httpHeaders);\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/network.js\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\nclass NetworkManager {\n constructor(url, args = {}) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null);\n this.withCredentials = args.withCredentials || false;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end\n };\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n }\n requestFull(listeners) {\n return this.request(listeners);\n }\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n xhr.setRequestHeader(property, value);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n pendingRequest.onProgress?.(evt);\n }\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n delete this.pendingRequests[xhrId];\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const chunk = network_getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n const getResponseHeader = name => fullRequestXhr.getResponseHeader(name);\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(getResponseHeader);\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n this._headersReceivedCapability.resolve();\n }\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n this._headersReceivedCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n const args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n _close() {\n this.onClosed?.(this);\n }\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._close();\n }\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/node_stream.js\n\n\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\nfunction parseUrl(sourceUrl) {\n const url = NodePackages.get(\"url\");\n const parsedUrl = url.parse(sourceUrl);\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n return parsedUrl;\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp = this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n this._headersCapability = Promise.withResolvers();\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nfunction createRequestOptions(parsedUrl, headers) {\n return {\n protocol: parsedUrl.protocol,\n auth: parsedUrl.auth,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.path,\n method: \"GET\",\n headers\n };\n}\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(response);\n const getResponseHeader = name => this._readableStream.headers[name.toLowerCase()];\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(getResponseHeader);\n };\n this._request = null;\n if (this._url.protocol === \"http:\") {\n const http = NodePackages.get(\"http\");\n this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n } else {\n const https = NodePackages.get(\"https\");\n this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n }\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n this._request.end();\n }\n}\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n this._httpHeaders = {};\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n this._httpHeaders[property] = value;\n }\n this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n this._setReadableStream(response);\n };\n this._request = null;\n if (this._url.protocol === \"http:\") {\n const http = NodePackages.get(\"http\");\n this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n } else {\n const https = NodePackages.get(\"https\");\n this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n }\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n let path = decodeURIComponent(this._url.path);\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n const fs = NodePackages.get(\"fs\");\n fs.promises.lstat(path).then(stat => {\n this._contentLength = stat.size;\n this._setReadableStream(fs.createReadStream(path));\n this._headersCapability.resolve();\n }, error => {\n if (error.code === \"ENOENT\") {\n error = new MissingPDFException(`Missing PDF \"${path}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n });\n }\n}\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n let path = decodeURIComponent(this._url.path);\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n const fs = NodePackages.get(\"fs\");\n this._setReadableStream(fs.createReadStream(path, {\n start,\n end: end - 1\n }));\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/text_layer.js\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nclass TextLayer {\n #capability = Promise.withResolvers();\n #container = null;\n #disableProcessItems = false;\n #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n #lang = null;\n #layoutTextParams = null;\n #pageHeight = 0;\n #pageWidth = 0;\n #reader = null;\n #rootContainer = null;\n #rotation = 0;\n #scale = 0;\n #styleCache = Object.create(null);\n #textContentItemsStr = [];\n #textContentSource = null;\n #textDivs = [];\n #textDivProperties = new WeakMap();\n #transform = null;\n static #ascentCache = new Map();\n static #canvasContexts = new Map();\n static #minFontSize = null;\n static #pendingTextLayers = new Set();\n constructor({\n textContentSource,\n container,\n viewport\n }) {\n if (textContentSource instanceof ReadableStream) {\n this.#textContentSource = textContentSource;\n } else if (typeof textContentSource === \"object\") {\n this.#textContentSource = new ReadableStream({\n start(controller) {\n controller.enqueue(textContentSource);\n controller.close();\n }\n });\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n this.#container = this.#rootContainer = container;\n this.#scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n this.#rotation = viewport.rotation;\n this.#layoutTextParams = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n properties: null,\n ctx: null\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this.#pageWidth = pageWidth;\n this.#pageHeight = pageHeight;\n TextLayer.#ensureMinFontSizeComputed();\n setLayerDimensions(container, viewport);\n this.#capability.promise.catch(() => {}).then(() => {\n TextLayer.#pendingTextLayers.delete(this);\n this.#layoutTextParams = null;\n this.#styleCache = null;\n });\n }\n render() {\n const pump = () => {\n this.#reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n this.#capability.resolve();\n return;\n }\n this.#lang ??= value.lang;\n Object.assign(this.#styleCache, value.styles);\n this.#processItems(value.items);\n pump();\n }, this.#capability.reject);\n };\n this.#reader = this.#textContentSource.getReader();\n TextLayer.#pendingTextLayers.add(this);\n pump();\n return this.#capability.promise;\n }\n update({\n viewport,\n onBefore = null\n }) {\n const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n const rotation = viewport.rotation;\n if (rotation !== this.#rotation) {\n onBefore?.();\n this.#rotation = rotation;\n setLayerDimensions(this.#rootContainer, {\n rotation\n });\n }\n if (scale !== this.#scale) {\n onBefore?.();\n this.#scale = scale;\n const params = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n properties: null,\n ctx: TextLayer.#getCtx(this.#lang)\n };\n for (const div of this.#textDivs) {\n params.properties = this.#textDivProperties.get(div);\n params.div = div;\n this.#layout(params);\n }\n }\n }\n cancel() {\n const abortEx = new AbortException(\"TextLayer task cancelled.\");\n this.#reader?.cancel(abortEx).catch(() => {});\n this.#reader = null;\n this.#capability.reject(abortEx);\n }\n get textDivs() {\n return this.#textDivs;\n }\n get textContentItemsStr() {\n return this.#textContentItemsStr;\n }\n #processItems(items) {\n if (this.#disableProcessItems) {\n return;\n }\n this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n const textDivs = this.#textDivs,\n textContentItemsStr = this.#textContentItemsStr;\n for (const item of items) {\n if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n warn(\"Ignoring additional textDivs for performance reasons.\");\n this.#disableProcessItems = true;\n return;\n }\n if (item.str === undefined) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this.#container;\n this.#container = document.createElement(\"span\");\n this.#container.classList.add(\"markedContent\");\n if (item.id !== null) {\n this.#container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this.#container);\n } else if (item.type === \"endMarkedContent\") {\n this.#container = this.#container.parentNode;\n }\n continue;\n }\n textContentItemsStr.push(item.str);\n this.#appendText(item);\n }\n }\n #appendText(geom) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n this.#textDivs.push(textDiv);\n const tx = Util.transform(this.#transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = this.#styleCache[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n const fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, this.#lang);\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n const scaleFactorStr = \"calc(var(--scale-factor)*\";\n const divStyle = textDiv.style;\n if (this.#container === this.#rootContainer) {\n divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n } else {\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${(TextLayer.#minFontSize * fontHeight).toFixed(2)}px)`;\n divStyle.fontFamily = fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (this.#fontInspectorEnabled) {\n textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n this.#textDivProperties.set(textDiv, textDivProperties);\n this.#layoutTextParams.div = textDiv;\n this.#layoutTextParams.properties = textDivProperties;\n this.#layout(this.#layoutTextParams);\n if (textDivProperties.hasText) {\n this.#container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this.#container.append(br);\n }\n }\n #layout(params) {\n const {\n div,\n properties,\n ctx,\n prevFontSize,\n prevFontFamily\n } = params;\n const {\n style\n } = div;\n let transform = \"\";\n if (TextLayer.#minFontSize > 1) {\n transform = `scale(${1 / TextLayer.#minFontSize})`;\n }\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n if (prevFontSize !== fontSize || prevFontFamily !== fontFamily) {\n ctx.font = `${fontSize * this.#scale}px ${fontFamily}`;\n params.prevFontSize = fontSize;\n params.prevFontFamily = fontFamily;\n }\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n transform = `scaleX(${canvasWidth * this.#scale / width}) ${transform}`;\n }\n }\n if (properties.angle !== 0) {\n transform = `rotate(${properties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n style.transform = transform;\n }\n }\n static cleanup() {\n if (this.#pendingTextLayers.size > 0) {\n return;\n }\n this.#ascentCache.clear();\n for (const {\n canvas\n } of this.#canvasContexts.values()) {\n canvas.remove();\n }\n this.#canvasContexts.clear();\n }\n static #getCtx(lang = null) {\n let canvasContext = this.#canvasContexts.get(lang ||= \"\");\n if (!canvasContext) {\n const canvas = document.createElement(\"canvas\");\n canvas.className = \"hiddenCanvasElement\";\n canvas.lang = lang;\n document.body.append(canvas);\n canvasContext = canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: true\n });\n this.#canvasContexts.set(lang, canvasContext);\n }\n return canvasContext;\n }\n static #ensureMinFontSizeComputed() {\n if (this.#minFontSize !== null) {\n return;\n }\n const div = document.createElement(\"div\");\n div.style.opacity = 0;\n div.style.lineHeight = 1;\n div.style.fontSize = \"1px\";\n div.textContent = \"X\";\n document.body.append(div);\n this.#minFontSize = div.getBoundingClientRect().height;\n div.remove();\n }\n static #getAscent(fontFamily, lang) {\n const cachedAscent = this.#ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = this.#getCtx(lang);\n const savedFont = ctx.font;\n ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n const metrics = ctx.measureText(\"\");\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n this.#ascentCache.set(fontFamily, ratio);\n ctx.canvas.width = ctx.canvas.height = 0;\n ctx.font = savedFont;\n return ratio;\n }\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n descent = 0;\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.canvas.width = ctx.canvas.height = 0;\n ctx.font = savedFont;\n const ratio = ascent ? ascent / (ascent + descent) : DEFAULT_FONT_ASCENT;\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n}\nfunction renderTextLayer() {\n deprecated(\"`renderTextLayer`, please use `TextLayer` instead.\");\n const {\n textContentSource,\n container,\n viewport,\n ...rest\n } = arguments[0];\n const restKeys = Object.keys(rest);\n if (restKeys.length > 0) {\n warn(\"Ignoring `renderTextLayer` parameters: \" + restKeys.join(\", \"));\n }\n const textLayer = new TextLayer({\n textContentSource,\n container,\n viewport\n });\n const {\n textDivs,\n textContentItemsStr\n } = textLayer;\n const promise = textLayer.render();\n return {\n promise,\n textDivs,\n textContentItemsStr\n };\n}\nfunction updateTextLayer() {\n deprecated(\"`updateTextLayer`, please use `TextLayer` instead.\");\n}\n\n;// CONCATENATED MODULE: ./src/display/xfa_text.js\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/api.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nconst DELAYED_CLEANUP_TIMEOUT = 5000;\nconst DefaultCanvasFactory = isNodeJS ? NodeCanvasFactory : DOMCanvasFactory;\nconst DefaultCMapReaderFactory = isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory;\nconst DefaultFilterFactory = isNodeJS ? NodeFilterFactory : DOMFilterFactory;\nconst DefaultStandardFontDataFactory = isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory;\nfunction getDocument(src = {}) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = {\n url: src\n };\n } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n src = {\n data: src\n };\n }\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\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 = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : 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 = typeof src.standardFontDataUrl === \"string\" ? src.standardFontDataUrl : null;\n const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = 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 const enableHWA = src.enableHWA === true;\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && cMapUrl && standardFontDataUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI);\n const canvasFactory = src.canvasFactory || new DefaultCanvasFactory({\n ownerDocument,\n enableHWA\n });\n const filterFactory = src.filterFactory || new DefaultFilterFactory({\n docId,\n ownerDocument\n });\n const styleElement = null;\n setVerbosityLevel(verbosity);\n const transportFactory = {\n canvasFactory,\n filterFactory\n };\n if (!useWorkerFetch) {\n transportFactory.cMapReaderFactory = new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked\n });\n transportFactory.standardFontDataFactory = new StandardFontDataFactory({\n baseUrl: standardFontDataUrl\n });\n }\n if (!worker) {\n const workerParams = {\n verbosity,\n port: GlobalWorkerOptions.workerPort\n };\n worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"4.4.168\",\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 canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null\n }\n };\n const transportParams = {\n disableFontFace,\n fontExtraProperties,\n ownerDocument,\n pdfBug,\n styleElement,\n loadingParams: {\n disableAutoFetch,\n enableXfa\n }\n };\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(rangeTransport, {\n disableRange,\n disableStream\n });\n } else if (!data) {\n if (!url) {\n throw new Error(\"getDocument - no `url` parameter provided.\");\n }\n const createPDFNetworkStream = params => {\n if (isNodeJS) {\n const isFetchSupported = function () {\n return typeof fetch !== \"undefined\" && typeof Response !== \"undefined\" && \"body\" in Response.prototype;\n };\n return isFetchSupported() && isValidFetchUrl(params.url) ? new PDFFetchStream(params) : new PDFNodeStream(params);\n }\n return isValidFetchUrl(params.url) ? new PDFFetchStream(params) : new PDFNetworkStream(params);\n };\n networkStream = createPDFNetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n }\n return workerIdPromise.then(workerId => {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const messageHandler = new MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n try {\n return new URL(val, window.location).href;\n } catch {\n if (isNodeJS && typeof val === \"string\") {\n return val;\n }\n }\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction isRefProxy(ref) {\n return typeof ref === \"object\" && Number.isInteger(ref?.num) && ref.num >= 0 && Number.isInteger(ref?.gen) && ref.gen >= 0;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n constructor() {\n this._capability = Promise.withResolvers();\n this._transport = null;\n this._worker = null;\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n this.destroyed = false;\n this.onPassword = null;\n this.onProgress = null;\n }\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\nclass PDFDataRangeTransport {\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = Promise.withResolvers();\n }\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this._readyCapability.resolve();\n }\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n}\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getOptionalContentConfig(renderingIntent);\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n cachedPageNumber(ref) {\n return this._transport.cachedPageNumber(ref);\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nclass PDFPageProxy {\n #delayedCleanupTimeout = null;\n #pendingCleanup = false;\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._maybeCleanupAfterRender = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\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 getAnnotations({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null\n }) {\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage);\n const {\n renderingIntent,\n cacheKey\n } = intentArgs;\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n let intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(cacheKey, intentState);\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = Promise.withResolvers();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (this._maybeCleanupAfterRender || intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup(!intentPrint);\n if (error) {\n internalRenderTask.capability.reject(error);\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n if (globalThis.Stats?.enabled) {\n globalThis.Stats.add(this.pageNumber, this._stats);\n }\n }\n };\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\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: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\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 intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, true);\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 if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = Promise.withResolvers();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n textContent.lang ??= value.lang;\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang: null\n };\n pump();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\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 if (intentState.opListReadCapability) {\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 this.#abortDelayedCleanup();\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup(false);\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup(delayed = false) {\n this.#abortDelayedCleanup();\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n if (delayed) {\n this.#delayedCleanupTimeout = setTimeout(() => {\n this.#delayedCleanupTimeout = null;\n this.#tryCleanup(false);\n }, DELAYED_CLEANUP_TIMEOUT);\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n #abortDelayedCleanup() {\n if (this.#delayedCleanupTimeout) {\n clearTimeout(this.#delayedCleanupTimeout);\n this.#delayedCleanupTimeout = null;\n }\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\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 for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup(true);\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable\n }) {\n const {\n map,\n transfer\n } = annotationStorageSerializable;\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map\n }, transfer);\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, reason => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup(true);\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 pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nclass LoopbackPort {\n #listeners = new Set();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const listener of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener) {\n this.#listeners.add(listener);\n }\n removeEventListener(name, listener) {\n this.#listeners.delete(listener);\n }\n terminate() {\n this.#listeners.clear();\n }\n}\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fakeWorkerId: 0\n};\n{\n if (isNodeJS) {\n PDFWorkerUtil.isWorkerDisabled = true;\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\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;\n }\n } catch {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n PDFWorkerUtil.createCDNWrapper = function (url) {\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper], {\n type: \"text/javascript\"\n }));\n };\n}\nclass PDFWorker {\n static #workerPorts;\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel()\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n this._readyCapability = Promise.withResolvers();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n if (port) {\n if (PDFWorker.#workerPorts?.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n get promise() {\n if (isNodeJS) {\n return Promise.all([NodePackages.promise, this._readyCapability.promise]);\n }\n return this._readyCapability.promise;\n }\n #resolve() {\n this._readyCapability.resolve();\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n get port() {\n return this._port;\n }\n get messageHandler() {\n return this._messageHandler;\n }\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {});\n this.#resolve();\n }\n _initialize() {\n if (PDFWorkerUtil.isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n this._setupFakeWorker();\n return;\n }\n let {\n workerSrc\n } = PDFWorker;\n try {\n if (!PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc, {\n type: \"module\"\n });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n ac.abort();\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this._setupFakeWorker();\n }\n };\n const ac = new AbortController();\n worker.addEventListener(\"error\", () => {\n if (!this._webWorker) {\n terminateEarly();\n }\n }, {\n signal: ac.signal\n });\n messageHandler.on(\"test\", data => {\n ac.abort();\n if (this.destroyed || !data) {\n terminateEarly();\n return;\n }\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n this.#resolve();\n });\n messageHandler.on(\"ready\", data => {\n ac.abort();\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch {\n this._setupFakeWorker();\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n this._setupFakeWorker();\n }\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n PDFWorker._setupFakeWorkerGlobal.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 const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n this._messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this.#resolve();\n }).catch(reason => {\n this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\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 static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n const cachedPort = this.#workerPorts?.get(params.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.fromPort - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n return this.#mainThreadWorkerMessageHandler;\n }\n const worker = await import( /*webpackIgnore: true*/this.workerSrc);\n return worker.WorkerMessageHandler;\n };\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nclass WorkerTransport {\n #methodPromises = new Map();\n #pageCache = new Map();\n #pagePromises = new Map();\n #pageRefCache = new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this.loadingParams = params.loadingParams;\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n this.destroyed = false;\n this.destroyCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = Promise.withResolvers();\n this.setupMessageHandler();\n }\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n this.#methodPromises.set(name, promise);\n return promise;\n }\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isOpList = false) {\n let renderingIntent = RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = SerializableEmpty;\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n return {\n renderingIntent,\n cacheKey: `${renderingIntent}_${annotationStorageSerializable.hash}`,\n annotationStorageSerializable\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n this.#pageRefCache.clear();\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n TextLayer.cleanup();\n this._networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = Promise.withResolvers();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength\n });\n }, headersCapability.reject);\n return headersCapability.promise;\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n switch (ex.name) {\n case \"PasswordException\":\n reason = new PasswordException(ex.message, ex.code);\n break;\n case \"InvalidPDFException\":\n reason = new InvalidPDFException(ex.message);\n break;\n case \"MissingPDFException\":\n reason = new MissingPDFException(ex.message);\n break;\n case \"UnexpectedResponseException\":\n reason = new UnexpectedResponseException(ex.message, ex.status);\n break;\n case \"UnknownErrorException\":\n reason = new UnknownErrorException(ex.message, ex.details);\n break;\n default:\n unreachable(\"DocException - expected a valid Error.\");\n }\n loadingTask._capability.reject(reason);\n });\n messageHandler.on(\"PasswordRequest\", exception => {\n this.#passwordCapability = Promise.withResolvers();\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this.#passwordCapability.reject(ex);\n }\n } else {\n this.#passwordCapability.reject(new PasswordException(exception.message, exception.code));\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null;\n }\n if (this.commonObjs.has(id)) {\n return null;\n }\n switch (type) {\n case \"Font\":\n const {\n disableFontFace,\n fontExtraProperties,\n pdfBug\n } = this._params;\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n const inspectFont = pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new FontFaceObject(exportedData, {\n disableFontFace,\n inspectFont\n });\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!fontExtraProperties && font.data) {\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"CopyLocalImage\":\n const {\n imageRef\n } = exportedData;\n assert(imageRef, \"The imageRef must be defined.\");\n for (const pageProxy of this.#pageCache.values()) {\n for (const [, data] of pageProxy.objs) {\n if (data?.ref !== imageRef) {\n continue;\n }\n if (!data.dataLen) {\n return null;\n }\n this.commonObjs.resolve(id, structuredClone(data));\n return data.dataLen;\n }\n }\n break;\n case \"FontPath\":\n case \"Image\":\n case \"Pattern\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n return null;\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close();\n return;\n }\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n if (imageData?.dataLen > MAX_IMAGE_SIZE_TO_CACHE) {\n pageProxy._maybeCleanupAfterRender = true;\n }\n break;\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"FetchBuiltInCMap\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.cMapReaderFactory) {\n return Promise.reject(new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"));\n }\n return this.cMapReaderFactory.fetch(data);\n });\n messageHandler.on(\"FetchStandardFontData\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.standardFontDataFactory) {\n return Promise.reject(new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"));\n }\n return this.standardFontDataFactory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n const {\n map,\n transfer\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null\n }, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n if (pageInfo.refStr) {\n this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n getPageIndex(ref) {\n if (!isRefProxy(ref)) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig(renderingIntent) {\n return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new OptionalContentConfig(data, renderingIntent));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\",\n cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, null).then(results => ({\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null\n }));\n this.#methodPromises.set(name, promise);\n return promise;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n TextLayer.cleanup();\n }\n cachedPageNumber(ref) {\n if (!isRefProxy(ref)) {\n return null;\n }\n const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n return this.#pageRefCache.get(refStr) ?? null;\n }\n}\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n #objs = Object.create(null);\n #ensureObj(objId) {\n return this.#objs[objId] ||= {\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n };\n }\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs[objId];\n return !!obj && obj.data !== INITIAL_DATA;\n }\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n data?.bitmap?.close();\n }\n this.#objs = Object.create(null);\n }\n *[Symbol.iterator]() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n if (data === INITIAL_DATA) {\n continue;\n }\n yield [objId, data];\n }\n }\n}\nclass RenderTask {\n #internalRenderTask = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n this.onContinue = null;\n }\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n}\nclass InternalRenderTask {\n #rAF = null;\n static #canvasInUse = new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = Promise.withResolvers();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n canvasContext,\n viewport,\n transform,\n background\n } = this.params;\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n if (this.#rAF) {\n window.cancelAnimationFrame(this.#rAF);\n this.#rAF = null;\n }\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback(error || new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay));\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\n }\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n this.#rAF = window.requestAnimationFrame(() => {\n this.#rAF = null;\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback();\n }\n }\n }\n}\nconst version = \"4.4.168\";\nconst build = \"19fbc8998\";\n\n;// CONCATENATED MODULE: ./src/shared/scripting_utils.js\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/xfa_layer.js\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (option.attributes.hasOwnProperty(\"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n Object.assign(html.style, value);\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n }\n }\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n const isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n if (root.children.length === 0) {\n if (root.value) {\n const node = document.createTextNode(root.value);\n rootHtml.append(node);\n if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n textDivs.push(node);\n }\n }\n return {\n textDivs\n };\n }\n const stack = [[root, -1, rootHtml]];\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n if (child.children?.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (isNotForRichText && XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\n }\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/annotation_layer.js\n\n\n\n\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n}\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n #updates = null;\n #hasBorder = false;\n #popupElement = null;\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n titleObj,\n contentsObj,\n richText\n }) {\n return !!(titleObj?.str || contentsObj?.str || richText?.str);\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data);\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n const {\n rect\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n this.#popupElement?.popup.updateEdited(params);\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n this.#setRectEdited(this.#updates.rect);\n this.#popupElement?.popup.resetEdited();\n this.#updates = null;\n }\n #setRectEdited(rect) {\n const {\n container: {\n style\n },\n data: {\n rect: currentRect,\n rotation\n },\n parent: {\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n }\n } = this;\n currentRect?.splice(0, 4, ...rect);\n const {\n width,\n height\n } = getRectDims(rect);\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation);\n }\n }\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: {\n page,\n viewport\n }\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement)) {\n container.tabIndex = DEFAULT_TAB_INDEX;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex++;\n if (data.popupRef) {\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n }\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation\n } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n const {\n width,\n height\n } = getRectDims(data.rect);\n if (!ignoreBorder && data.borderStyle.width > 0) {\n style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;\n style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n style.borderStyle = \"solid\";\n break;\n case AnnotationBorderStyleType.DASHED:\n style.borderStyle = \"dashed\";\n break;\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n case AnnotationBorderStyleType.UNDERLINE:\n style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n style.borderColor = Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n style.borderWidth = 0;\n }\n }\n const rect = 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]]);\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const {\n pageWidth,\n pageHeight\n } = this.parent.viewport.rawDims;\n const {\n width,\n height\n } = getRectDims(this.data.rect);\n let elementWidth, elementHeight;\n if (angle % 180 === 0) {\n elementWidth = 100 * width / pageWidth;\n elementHeight = 100 * height / pageHeight;\n } else {\n elementWidth = 100 * height / pageWidth;\n elementHeight = 100 * width / pageHeight;\n }\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n });\n };\n return shadow(this, \"_commonActions\", {\n display: event => {\n const {\n display\n } = event.detail;\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print\n });\n },\n hidden: event => {\n const {\n hidden\n } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail\n },\n target: element\n };\n action(eventProxy);\n delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const {\n quadPoints\n } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x => Math.fround(x));\n if (quadPoints.length === 8) {\n const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n return;\n }\n }\n const {\n style\n } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const {\n borderColor,\n borderWidth\n } = style;\n style.borderWidth = 0;\n svgBuffer = [\"url('data:image/svg+xml;utf8,\", ``, ``];\n this.container.classList.add(\"hasBorder\");\n }\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n const {\n svgFactory\n } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n const trX = quadPoints[i];\n const trY = quadPoints[i + 1];\n const blX = quadPoints[i + 2];\n const blY = quadPoints[i + 3];\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(``);\n }\n if (this.#hasBorder) {\n svgBuffer.push(`')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup() {\n const {\n container,\n data\n } = this;\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n const popup = this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation\n },\n parent: this.parent,\n elements: [this]\n });\n this.parent.div.append(popup.render());\n }\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n get _isEditable() {\n return false;\n }\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: {\n id: editId\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId\n });\n });\n }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n isBound = true;\n } else {\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === \"\") {\n this.#setInternalLink();\n }\n }\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n this.#setInternalLink();\n }\n #bindAttachment(link, attachment, dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n }\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n this.#setInternalLink();\n }\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name\n }\n });\n return false;\n };\n }\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n warn(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\"data-l10n-args\", JSON.stringify({\n type: this.data.name\n }));\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n _getKeyModifier(event) {\n return util_FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n _setEventListeners(element, elementData, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= {\n focused: false\n };\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(color[0], color[1], color[2]);\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / LINE_FACTOR));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const {\n target\n } = event;\n if (elementData.userValue) {\n target.value = elementData.userValue;\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n if (!this.data.actions?.Focus) {\n elementData.focused = true;\n }\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n storage.setValue(id, {\n formattedValue\n });\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, {\n value\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd\n }\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n if (!this.data.actions?.Blur) {\n elementData.focused = false;\n }\n const {\n value\n } = event.target;\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.hasOwnCanvas\n });\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n if (value) {\n for (const radio of this._getElementsByName(data.fieldName, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => ({\n displayValue: option.textContent,\n exportValue: option.value\n }));\n };\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(true);\n const change = getValue(false);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n change,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const {\n data,\n elements\n } = parameters;\n super(parameters, {\n isRenderable: AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n this.popup = null;\n }\n render() {\n this.container.classList.add(\"popupAnnotation\");\n const popup = this.popup = new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open\n });\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n #boundKeyDown = this.#keyDown.bind(this);\n #boundHide = this.#hide.bind(this);\n #boundShow = this.#show.bind(this);\n #boundToggle = this.#toggle.bind(this);\n #color = null;\n #container = null;\n #contentsObj = null;\n #dateObj = null;\n #elements = null;\n #parent = null;\n #parentRect = null;\n #pinned = false;\n #popup = null;\n #position = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle);\n element.addEventListener(\"mouseenter\", this.#boundShow);\n element.addEventListener(\"mouseleave\", this.#boundHide);\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n }\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n render() {\n if (this.#popup) {\n return;\n }\n const popup = this.#popup = document.createElement(\"div\");\n popup.className = \"popup\";\n if (this.#color) {\n const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n if (CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")) {\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n } else {\n const BACKGROUND_ENLIGHT = 0.7;\n popup.style.backgroundColor = Util.makeHexColor(...this.#color.map(c => Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)));\n }\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n const title = document.createElement(\"h1\");\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"popupDate\");\n modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-string\");\n modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n date: this.#dateObj.toLocaleDateString(),\n time: this.#dateObj.toLocaleTimeString()\n }));\n header.append(modificationDate);\n }\n const html = this.#html;\n if (html) {\n XfaLayer.render({\n xfaHtml: html,\n intent: \"richText\",\n div: popup\n });\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n } else {\n const contents = this._formatContents(this.#contentsObj);\n popup.append(contents);\n }\n this.#container.append(popup);\n }\n get #html() {\n const richText = this.#richText;\n const contentsObj = this.#contentsObj;\n if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n return this.#richText.html || null;\n }\n return null;\n }\n get #fontSize() {\n return this.#html?.attributes?.style?.fontSize || 0;\n }\n get #fontColor() {\n return this.#html?.attributes?.style?.color || null;\n }\n #makePopupContent(text) {\n const popupLines = [];\n const popupContent = {\n str: text,\n html: {\n name: \"div\",\n attributes: {\n dir: \"auto\"\n },\n children: [{\n name: \"p\",\n children: popupLines\n }]\n }\n };\n const lineAttributes = {\n style: {\n color: this.#fontColor,\n fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--scale-factor))` : \"\"\n }\n };\n for (const line of text.split(\"\\n\")) {\n popupLines.push({\n name: \"span\",\n value: line,\n attributes: lineAttributes\n });\n }\n return popupContent;\n }\n _formatContents({\n str,\n dir\n }) {\n const p = document.createElement(\"p\");\n p.classList.add(\"popupContent\");\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n return p;\n }\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n this.#toggle();\n }\n }\n updateEdited({\n rect,\n popupContent\n }) {\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popupContent) {\n this.#richText = this.#makePopupContent(popupContent);\n this.#contentsObj = null;\n }\n this.#popup?.remove();\n this.#popup = null;\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n ({\n contentsObj: this.#contentsObj,\n richText: this.#richText\n } = this.#updates);\n this.#updates = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#position = null;\n }\n #setPosition() {\n if (this.#position !== null) {\n return;\n }\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.#parent;\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n const {\n style\n } = this.#container;\n style.left = `${this.#position[0]}%`;\n style.top = `${this.#position[1]}%`;\n }\n #toggle() {\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#setPosition();\n this.#container.hidden = false;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000;\n }\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n maybeShow() {\n if (!this.#wasVisible) {\n return;\n }\n if (!this.#popup) {\n this.#show();\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n get isVisible() {\n return this.#container.hidden === false;\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n get _isEditable() {\n return this.data.hasOwnCanvas;\n }\n}\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#line;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#square;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n vertices,\n borderStyle,\n popupRef\n }\n } = this;\n if (!vertices) {\n return this.container;\n }\n const {\n width,\n height\n } = getRectDims(rect);\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n const x = vertices[i] - rect[0];\n const y = rect[3] - vertices[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = AnnotationEditorType.INK;\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n inkLists,\n borderStyle,\n popupRef\n }\n } = this;\n const {\n width,\n height\n } = getRectDims(rect);\n const svg = this.svgFactory.create(width, height, true);\n for (const inkList of inkLists) {\n let points = [];\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n const x = inkList[i] - rect[0];\n const y = rect[3] - inkList[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n svg.append(polyline);\n }\n this.container.append(svg);\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n file\n } = this.data;\n this.filename = file.filename;\n this.content = file.content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n ...file\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n const {\n container,\n data\n } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n const {\n isMac\n } = util_FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n container.append(trigger);\n return container;\n }\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\nclass AnnotationLayer {\n #accessibilityManager = null;\n #annotationCanvasMap = null;\n #editableAnnotations = new Map();\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n }\n #appendElement(element, id) {\n const contentElement = element.firstChild || element;\n contentElement.id = `${AnnotationPrefix}${id}`;\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);\n }\n async render(params) {\n const {\n annotations\n } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n const popupToElements = new Map();\n const elementParams = {\n data: null,\n layer,\n linkService: params.linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: params.annotationStorage || new AnnotationStorage(),\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n const {\n width,\n height\n } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation && data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n this.#appendElement(rendered, data.id);\n if (element.annotationEditorType > 0) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n this.#setAnnotationCanvasMap();\n }\n update({\n viewport\n }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, {\n rotation: viewport.rotation\n });\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n canvas.className = \"annotationContent\";\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else if (!firstChild.classList.contains(\"annotationContent\")) {\n firstChild.before(canvas);\n } else {\n firstChild.after(canvas);\n }\n }\n this.#annotationCanvasMap.clear();\n }\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/freetext.js\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #boundEditorDivBlur = this.editorDivBlur.bind(this);\n #boundEditorDivFocus = this.editorDivFocus.bind(this);\n #boundEditorDivInput = this.editorDivInput.bind(this);\n #boundEditorDivKeydown = this.editorDivKeydown.bind(this);\n #boundEditorDivPaste = this.editorDivPaste.bind(this);\n #color;\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #fontSize;\n #initialData = null;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = self => self.isEmpty();\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n static _editorType = AnnotationEditorType.FREETEXT;\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.#color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager, {\n strings: [\"pdfjs-free-text-default-content\"]\n });\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]];\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: setFontsize.bind(this, fontSize),\n undo: setFontsize.bind(this, savedFontsize),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const setColor = col => {\n this.#color = this.editorDiv.style.color = col;\n };\n const savedColor = this.#color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, true);\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(false);\n this.parent.updateToolbar(AnnotationEditorType.FREETEXT);\n super.enableEditMode();\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n const signal = this._uiManager._signal;\n this.editorDiv.addEventListener(\"keydown\", this.#boundEditorDivKeydown, {\n signal\n });\n this.editorDiv.addEventListener(\"focus\", this.#boundEditorDivFocus, {\n signal\n });\n this.editorDiv.addEventListener(\"blur\", this.#boundEditorDivBlur, {\n signal\n });\n this.editorDiv.addEventListener(\"input\", this.#boundEditorDivInput, {\n signal\n });\n this.editorDiv.addEventListener(\"paste\", this.#boundEditorDivPaste, {\n signal\n });\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(true);\n super.disableEditMode();\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.editorDiv.removeEventListener(\"keydown\", this.#boundEditorDivKeydown);\n this.editorDiv.removeEventListener(\"focus\", this.#boundEditorDivFocus);\n this.editorDiv.removeEventListener(\"blur\", this.#boundEditorDivBlur);\n this.editorDiv.removeEventListener(\"input\", this.#boundEditorDivInput);\n this.editorDiv.removeEventListener(\"paste\", this.#boundEditorDivPaste);\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded() {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n this.editorDiv.focus();\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const buffer = [];\n this.editorDiv.normalize();\n for (const child of this.editorDiv.childNodes) {\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\");\n div.classList.remove(\"hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n div.classList.toggle(\"hidden\", savedVisibility);\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n dblclick(event) {\n this.enterInEditMode();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n event.preventDefault();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text\");\n this.enableEditing();\n AnnotationEditor._l10nPromise.get(\"pdfjs-free-text-default-content\").then(msg => this.editorDiv?.setAttribute(\"default-content\", msg));\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position\n } = this.#initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n }\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n static #getNodeContent(node) {\n return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n }\n editorDivPaste(event) {\n const clipboardData = event.clipboardData || window.clipboardData;\n const {\n types\n } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n event.preventDefault();\n const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n if (!paste) {\n return;\n }\n const selection = window.getSelection();\n if (!selection.rangeCount) {\n return;\n }\n this.editorDiv.normalize();\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n if (!paste.includes(\"\\n\")) {\n range.insertNode(document.createTextNode(paste));\n this.editorDiv.normalize();\n selection.collapseToStart();\n return;\n }\n const {\n startContainer,\n startOffset\n } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n if (parent !== this.editorDiv) {\n let buffer = bufferBefore;\n for (const child of this.editorDiv.childNodes) {\n if (child === parent) {\n buffer = bufferAfter;\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n } else if (startContainer === this.editorDiv) {\n let buffer = bufferBefore;\n let i = 0;\n for (const child of this.editorDiv.childNodes) {\n if (i++ === startOffset) {\n buffer = bufferAfter;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n this.#setContent();\n const newRange = new Range();\n let beforeLength = bufferBefore.reduce((acc, line) => acc + line.length, 0);\n for (const {\n firstChild\n } of this.editorDiv.childNodes) {\n if (firstChild.nodeType === Node.TEXT_NODE) {\n const length = firstChild.nodeValue.length;\n if (beforeLength <= length) {\n newRange.setStart(firstChild, beforeLength);\n newRange.setEnd(firstChild, beforeLength);\n break;\n }\n beforeLength -= length;\n }\n }\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n }\n #serializeContent() {\n return this.#content.replaceAll(\"\\xa0\", \" \");\n }\n static #deserializeContent(content) {\n return content.replaceAll(\" \", \"\\xa0\");\n }\n get contentDiv() {\n return this.editorDiv;\n }\n static deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize,\n fontColor\n },\n rect,\n rotation,\n id\n },\n textContent,\n textPosition,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n if (!textContent || textContent.length === 0) {\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false\n };\n }\n const editor = super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.#color = Util.makeHexColor(...data.color);\n editor.#content = FreeTextEditor.#deserializeContent(data.value);\n editor.annotationElementId = data.id || null;\n editor.#initialData = initialData;\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return {\n pageIndex: this.pageIndex,\n id: this.annotationElementId,\n deleted: true\n };\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n const rect = this.getRect(padding, padding);\n const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color);\n const serialized = {\n annotationType: AnnotationEditorType.FREETEXT,\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent(),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n value,\n fontSize,\n color,\n pageIndex\n } = this.#initialData;\n return this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const content = super.renderAnnotationElement(annotation);\n if (this.deleted) {\n return content;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n content.replaceChildren();\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n content.append(div);\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n annotation.updateEdited({\n rect: this.getRect(padding, padding),\n popupContent: this.#content\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/outliner.js\n\nclass Outliner {\n #box;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n this.#verticalEdges.push(left, right);\n minX = Math.min(minX, x1);\n maxX = Math.max(maxX, x2);\n minY = Math.min(minY, y1);\n maxY = Math.max(maxY, y2);\n }\n const bboxWidth = maxX - minX + 2 * innerMargin;\n const bboxHeight = maxY - minY + 2 * innerMargin;\n const shiftedMinX = minX - innerMargin;\n const shiftedMinY = minY - innerMargin;\n const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n for (const edge of this.#verticalEdges) {\n const [x, y1, y2] = edge;\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n this.#box = {\n x: shiftedMinX,\n y: shiftedMinY,\n width: bboxWidth,\n height: bboxHeight,\n lastPoint\n };\n }\n getOutlines() {\n this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, this.#box);\n }\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = start + end >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\nclass Outline {\n toSVGPath() {\n throw new Error(\"Abstract method `toSVGPath` must be implemented.\");\n }\n get box() {\n throw new Error(\"Abstract getter `box` must be implemented.\");\n }\n serialize(_bbox, _rotation) {\n throw new Error(\"Abstract method `serialize` must be implemented.\");\n }\n get free() {\n return this instanceof FreeHighlightOutline;\n }\n}\nclass HighlightOutline extends Outline {\n #box;\n #outlines;\n constructor(outlines, box) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of this.#outlines) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], _rotation) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of this.#outlines) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return this.#box;\n }\n}\nclass FreeOutliner {\n #box;\n #bottom = [];\n #innerMargin;\n #isLTR;\n #top = [];\n #last = new Float64Array(18);\n #lastX;\n #lastY;\n #min;\n #min_dist;\n #scaleFactor;\n #thickness;\n #points = [];\n static #MIN_DIST = 8;\n static #MIN_DIFF = 2;\n static #MIN = FreeOutliner.#MIN_DIST + FreeOutliner.#MIN_DIFF;\n constructor({\n x,\n y\n }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n this.#box = box;\n this.#thickness = thickness * scaleFactor;\n this.#isLTR = isLTR;\n this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n this.#innerMargin = innerMargin;\n this.#min_dist = FreeOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n get free() {\n return true;\n }\n isEmpty() {\n return isNaN(this.#last[8]);\n }\n #getLastCoords() {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n }\n add({\n x,\n y\n }) {\n this.#lastX = x;\n this.#lastY = y;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < this.#min) {\n return false;\n }\n const diffD = d - this.#min_dist;\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n this.#points?.push(x, y);\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * this.#thickness;\n const thY = nY * this.#thickness;\n this.#last.set(this.#last.subarray(2, 8), 0);\n this.#last.set([x2 + thX, y2 + thY], 4);\n this.#last.set(this.#last.subarray(14, 18), 12);\n this.#last.set([x2 - thX, y2 - thY], 16);\n if (isNaN(this.#last[6])) {\n if (this.#top.length === 0) {\n this.#last.set([x1 + thX, y1 + thY], 2);\n this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n } else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n } else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n return buffer.join(\" \");\n }\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const lastTop = last.subarray(4, 6);\n const lastBottom = last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const points = new Float64Array((this.#points?.length ?? 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (this.#points[i] - layerX) / layerWidth;\n points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n if (isNaN(last[6]) && !this.isEmpty()) {\n const outline = new Float64Array(36);\n outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n return new FreeHighlightOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n const outline = new Float64Array(this.#top.length + 24 + this.#bottom.length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], N);\n N += 24;\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], N);\n return new FreeHighlightOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n}\nclass FreeHighlightOutline extends Outline {\n #box;\n #bbox = null;\n #innerMargin;\n #isLTR;\n #points;\n #scaleFactor;\n #outline;\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n this.#outline = outline;\n this.#points = points;\n this.#box = box;\n this.#scaleFactor = scaleFactor;\n this.#innerMargin = innerMargin;\n this.#isLTR = isLTR;\n this.#computeMinMax(isLTR);\n const {\n x,\n y,\n width,\n height\n } = this.#bbox;\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n if (isNaN(this.#outline[i])) {\n buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n continue;\n }\n buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = this.#rescale(this.#outline, blX, trY, width, -height);\n points = this.#rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = this.#rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = this.#rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = this.#rescale(this.#outline, trX, blY, -width, height);\n points = this.#rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = this.#rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = this.#rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return {\n outline: Array.from(outline),\n points: [Array.from(points)]\n };\n }\n #rescale(src, tx, ty, sx, sy) {\n const dest = new Float64Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n }\n #rescaleAndSwap(src, tx, ty, sx, sy) {\n const dest = new Float64Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n }\n #computeMinMax(isLTR) {\n const outline = this.#outline;\n let lastX = outline[4];\n let lastY = outline[5];\n let minX = lastX;\n let minY = lastY;\n let maxX = lastX;\n let maxY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n if (isNaN(outline[i])) {\n minX = Math.min(minX, outline[i + 4]);\n minY = Math.min(minY, outline[i + 5]);\n maxX = Math.max(maxX, outline[i + 4]);\n maxY = Math.max(maxY, outline[i + 5]);\n if (lastPointY < outline[i + 5]) {\n lastPointX = outline[i + 4];\n lastPointY = outline[i + 5];\n } else if (lastPointY === outline[i + 5]) {\n lastPointX = ltrCallback(lastPointX, outline[i + 4]);\n }\n } else {\n const bbox = Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6));\n minX = Math.min(minX, bbox[0]);\n minY = Math.min(minY, bbox[1]);\n maxX = Math.max(maxX, bbox[2]);\n maxY = Math.max(maxY, bbox[3]);\n if (lastPointY < bbox[3]) {\n lastPointX = bbox[2];\n lastPointY = bbox[3];\n } else if (lastPointY === bbox[3]) {\n lastPointX = ltrCallback(lastPointX, bbox[2]);\n }\n }\n lastX = outline[i + 4];\n lastY = outline[i + 5];\n }\n const x = minX - this.#innerMargin,\n y = minY - this.#innerMargin,\n width = maxX - minX + 2 * this.#innerMargin,\n height = maxY - minY + 2 * this.#innerMargin;\n this.#bbox = {\n x,\n y,\n width,\n height,\n lastPoint: [lastPointX, lastPointY]\n };\n }\n get box() {\n return this.#bbox;\n }\n getNewOutline(thickness, innerMargin) {\n const {\n x,\n y,\n width,\n height\n } = this.#bbox;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const outliner = new FreeOutliner({\n x: this.#points[0] * sx + tx,\n y: this.#points[1] * sy + ty\n }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n for (let i = 2; i < this.#points.length; i += 2) {\n outliner.add({\n x: this.#points[i] * sx + tx,\n y: this.#points[i + 1] * sy + ty\n });\n }\n return outliner.getOutlines();\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/color_picker.js\n\n\n\nclass ColorPicker {\n #boundKeyDown = this.#keyDown.bind(this);\n #boundPointerDown = this.#pointerDown.bind(this);\n #button = null;\n #buttonSwatch = null;\n #defaultColor;\n #dropdown = null;\n #dropdownWasFromKeyboard = false;\n #isMainColorPicker = false;\n #editor = null;\n #eventBus;\n #uiManager = null;\n #type;\n static get _keyboardManager() {\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n }\n constructor({\n editor = null,\n uiManager = null\n }) {\n if (editor) {\n this.#isMainColorPicker = false;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_COLOR;\n this.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n }\n renderButton() {\n const button = this.#button = document.createElement(\"button\");\n button.className = \"colorPicker\";\n button.tabIndex = \"0\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n button.setAttribute(\"aria-haspopup\", true);\n const signal = this.#uiManager._signal;\n button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n signal\n });\n button.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n const swatch = this.#buttonSwatch = document.createElement(\"span\");\n swatch.className = \"swatch\";\n swatch.setAttribute(\"aria-hidden\", true);\n swatch.style.backgroundColor = this.#defaultColor;\n button.append(swatch);\n return button;\n }\n renderMainDropdown() {\n const dropdown = this.#dropdown = this.#getDropdownRoot();\n dropdown.setAttribute(\"aria-orientation\", \"horizontal\");\n dropdown.setAttribute(\"aria-labelledby\", \"highlightColorPickerLabel\");\n return dropdown;\n }\n #getDropdownRoot() {\n const div = document.createElement(\"div\");\n const signal = this.#uiManager._signal;\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.className = \"dropdown\";\n div.role = \"listbox\";\n div.setAttribute(\"aria-multiselectable\", false);\n div.setAttribute(\"aria-orientation\", \"vertical\");\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n for (const [name, color] of this.#uiManager.highlightColors) {\n const button = document.createElement(\"button\");\n button.tabIndex = \"0\";\n button.role = \"option\";\n button.setAttribute(\"data-color\", color);\n button.title = name;\n button.setAttribute(\"data-l10n-id\", `pdfjs-editor-colorpicker-${name}`);\n const swatch = document.createElement(\"span\");\n button.append(swatch);\n swatch.className = \"swatch\";\n swatch.style.backgroundColor = color;\n button.setAttribute(\"aria-selected\", color === this.#defaultColor);\n button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n signal\n });\n div.append(button);\n }\n div.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n return div;\n }\n #colorSelect(color, event) {\n event.stopPropagation();\n this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n source: this,\n type: this.#type,\n value: color\n });\n }\n _colorSelectFromKeyboard(event) {\n if (event.target === this.#button) {\n this.#openDropdown(event);\n return;\n }\n const color = event.target.getAttribute(\"data-color\");\n if (!color) {\n return;\n }\n this.#colorSelect(color, event);\n }\n _moveToNext(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n if (event.target === this.#button) {\n this.#dropdown.firstChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstChild || event.target === this.#button) {\n if (this.#isDropdownVisible) {\n this._hideDropdownFromKeyboard();\n }\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n }\n event.target.previousSibling?.focus();\n }\n _moveToBeginning(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.firstChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastChild?.focus();\n }\n #keyDown(event) {\n ColorPicker._keyboardManager.exec(this, event);\n }\n #openDropdown(event) {\n if (this.#isDropdownVisible) {\n this.hideDropdown();\n return;\n }\n this.#dropdownWasFromKeyboard = event.detail === 0;\n window.addEventListener(\"pointerdown\", this.#boundPointerDown, {\n signal: this.#uiManager._signal\n });\n if (this.#dropdown) {\n this.#dropdown.classList.remove(\"hidden\");\n return;\n }\n const root = this.#dropdown = this.#getDropdownRoot();\n this.#button.append(root);\n }\n #pointerDown(event) {\n if (this.#dropdown?.contains(event.target)) {\n return;\n }\n this.hideDropdown();\n }\n hideDropdown() {\n this.#dropdown?.classList.add(\"hidden\");\n window.removeEventListener(\"pointerdown\", this.#boundPointerDown);\n }\n get #isDropdownVisible() {\n return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n }\n _hideDropdownFromKeyboard() {\n if (this.#isMainColorPicker) {\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#editor?.unselect();\n return;\n }\n this.hideDropdown();\n this.#button.focus({\n preventScroll: true,\n focusVisible: this.#dropdownWasFromKeyboard\n });\n }\n updateColor(color) {\n if (this.#buttonSwatch) {\n this.#buttonSwatch.style.backgroundColor = color;\n }\n if (!this.#dropdown) {\n return;\n }\n const i = this.#uiManager.highlightColors.values();\n for (const child of this.#dropdown.children) {\n child.setAttribute(\"aria-selected\", i.next().value === color);\n }\n }\n destroy() {\n this.#button?.remove();\n this.#button = null;\n this.#buttonSwatch = null;\n this.#dropdown?.remove();\n this.#dropdown = null;\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/highlight.js\n\n\n\n\n\n\nclass HighlightEditor extends AnnotationEditor {\n #anchorNode = null;\n #anchorOffset = 0;\n #boxes;\n #clipPathId = null;\n #colorPicker = null;\n #focusOutlines = null;\n #focusNode = null;\n #focusOffset = 0;\n #highlightDiv = null;\n #highlightOutlines = null;\n #id = null;\n #isFreeHighlight = false;\n #boundKeydown = this.#keydown.bind(this);\n #lastPoint = null;\n #opacity;\n #outlineId = null;\n #text = \"\";\n #thickness;\n #methodOfCreation = \"\";\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 12;\n static _l10nPromise;\n static _type = \"highlight\";\n static _editorType = AnnotationEditorType.HIGHLIGHT;\n static _freeHighlightId = -1;\n static _freeHighlight = null;\n static _freeHighlightClipId = \"\";\n static get _keyboardManager() {\n const proto = HighlightEditor.prototype;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, {\n args: [0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, {\n args: [1]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, {\n args: [2]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, {\n args: [3]\n }]]));\n }\n constructor(params) {\n super({\n ...params,\n name: \"highlightEditor\"\n });\n this.color = params.color || HighlightEditor._defaultColor;\n this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n this.#opacity = params.opacity || HighlightEditor._defaultOpacity;\n this.#boxes = params.boxes || null;\n this.#methodOfCreation = params.methodOfCreation || \"\";\n this.#text = params.text || \"\";\n this._isDraggable = false;\n if (params.highlightId > -1) {\n this.#isFreeHighlight = true;\n this.#createFreeOutlines(params);\n this.#addToDrawLayer();\n } else {\n this.#anchorNode = params.anchorNode;\n this.#anchorOffset = params.anchorOffset;\n this.#focusNode = params.focusNode;\n this.#focusOffset = params.focusOffset;\n this.#createOutlines();\n this.#addToDrawLayer();\n this.rotate(this.rotation);\n }\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color),\n thickness: this.#thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color)\n };\n }\n static computeTelemetryFinalData(data) {\n return {\n numberOfColors: data.get(\"color\").size\n };\n }\n #createOutlines() {\n const outliner = new Outliner(this.#boxes, 0.001);\n this.#highlightOutlines = outliner.getOutlines();\n ({\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height\n } = this.#highlightOutlines.box);\n const outlinerForOutline = new Outliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n this.#focusOutlines = outlinerForOutline.getOutlines();\n const {\n lastPoint\n } = this.#focusOutlines.box;\n this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n }\n #createFreeOutlines({\n highlightOutlines,\n highlightId,\n clipPathId\n }) {\n this.#highlightOutlines = highlightOutlines;\n const extraThickness = 1.5;\n this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 0.0025);\n if (highlightId >= 0) {\n this.#id = highlightId;\n this.#clipPathId = clipPathId;\n this.parent.drawLayer.finalizeLine(highlightId, highlightOutlines);\n this.#outlineId = this.parent.drawLayer.highlightOutline(this.#focusOutlines);\n } else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateLine(this.#id, highlightOutlines);\n this.parent.drawLayer.updateBox(this.#id, HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360));\n this.parent.drawLayer.updateLine(this.#outlineId, this.#focusOutlines);\n this.parent.drawLayer.updateBox(this.#outlineId, HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle));\n }\n const {\n x,\n y,\n width,\n height\n } = highlightOutlines.box;\n switch (this.rotation) {\n case 0:\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n break;\n case 90:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = y;\n this.y = 1 - x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n case 180:\n this.x = 1 - x;\n this.y = 1 - y;\n this.width = width;\n this.height = height;\n break;\n case 270:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = 1 - y;\n this.y = x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n }\n const {\n lastPoint\n } = this.#focusOutlines.box;\n this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n HighlightEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n HighlightEditor._defaultThickness = value;\n break;\n }\n }\n translateInPage(x, y) {}\n get toolbarPosition() {\n return this.#lastPoint;\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n this.#updateThickness(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR, HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, HighlightEditor._defaultThickness]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n }\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.parent?.drawLayer.changeColor(this.#id, col);\n this.#colorPicker?.updateColor(col);\n };\n const savedColor = this.color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"color_changed\",\n color: this._uiManager.highlightColorNames.get(color)\n }, true);\n }\n #updateThickness(thickness) {\n const savedThickness = this.#thickness;\n const setThickness = th => {\n this.#thickness = th;\n this.#changeThickness(th);\n };\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"thickness_changed\",\n thickness\n }, true);\n }\n async addEditToolbar() {\n const toolbar = await super.addEditToolbar();\n if (!toolbar) {\n return null;\n }\n if (this._uiManager.highlightColors) {\n this.#colorPicker = new ColorPicker({\n editor: this\n });\n toolbar.addColorPicker(this.#colorPicker);\n }\n return toolbar;\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n fixAndSetPosition() {\n return super.fixAndSetPosition(this.#getRotation());\n }\n getBaseTranslation() {\n return [0, 0];\n }\n getRect(tx, ty) {\n return super.getRect(tx, ty, this.#getRotation());\n }\n onceAdded() {\n this.parent.addUndoableEditor(this);\n this.div.focus();\n }\n remove() {\n this.#cleanDrawLayer();\n this._reportTelemetry({\n action: \"deleted\"\n });\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this.#cleanDrawLayer();\n } else if (parent) {\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.show(this._isVisible);\n if (mustBeSelected) {\n this.select();\n }\n }\n #changeThickness(thickness) {\n if (!this.#isFreeHighlight) {\n return;\n }\n this.#createFreeOutlines({\n highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n });\n this.fixAndSetPosition();\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n }\n #cleanDrawLayer() {\n if (this.#id === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this.#id);\n this.#id = null;\n this.parent.drawLayer.remove(this.#outlineId);\n this.#outlineId = null;\n }\n #addToDrawLayer(parent = this.parent) {\n if (this.#id !== null) {\n return;\n }\n ({\n id: this.#id,\n clipPathId: this.#clipPathId\n } = parent.drawLayer.highlight(this.#highlightOutlines, this.color, this.#opacity));\n this.#outlineId = parent.drawLayer.highlightOutline(this.#focusOutlines);\n if (this.#highlightDiv) {\n this.#highlightDiv.style.clipPath = this.#clipPathId;\n }\n }\n static #rotateBbox({\n x,\n y,\n width,\n height\n }, angle) {\n switch (angle) {\n case 90:\n return {\n x: 1 - y - height,\n y: x,\n width: height,\n height: width\n };\n case 180:\n return {\n x: 1 - x - width,\n y: 1 - y - height,\n width,\n height\n };\n case 270:\n return {\n x: y,\n y: 1 - x - width,\n width: height,\n height: width\n };\n }\n return {\n x,\n y,\n width,\n height\n };\n }\n rotate(angle) {\n const {\n drawLayer\n } = this.parent;\n let box;\n if (this.#isFreeHighlight) {\n angle = (angle - this.rotation + 360) % 360;\n box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n } else {\n box = HighlightEditor.#rotateBbox(this, angle);\n }\n drawLayer.rotate(this.#id, angle);\n drawLayer.rotate(this.#outlineId, angle);\n drawLayer.updateBox(this.#id, box);\n drawLayer.updateBox(this.#outlineId, HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle));\n }\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (this.#text) {\n div.setAttribute(\"aria-label\", this.#text);\n div.setAttribute(\"role\", \"mark\");\n }\n if (this.#isFreeHighlight) {\n div.classList.add(\"free\");\n } else {\n this.div.addEventListener(\"keydown\", this.#boundKeydown, {\n signal: this._uiManager._signal\n });\n }\n const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n div.append(highlightDiv);\n highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n highlightDiv.className = \"internal\";\n highlightDiv.style.clipPath = this.#clipPathId;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n this.enableEditing();\n return div;\n }\n pointerover() {\n this.parent.drawLayer.addClass(this.#outlineId, \"hovered\");\n }\n pointerleave() {\n this.parent.drawLayer.removeClass(this.#outlineId, \"hovered\");\n }\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0:\n case 2:\n this.#setCaret(true);\n break;\n case 1:\n case 3:\n this.#setCaret(false);\n break;\n }\n }\n #setCaret(start) {\n if (!this.#anchorNode) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(this.#anchorNode, this.#anchorOffset);\n } else {\n selection.setPosition(this.#focusNode, this.#focusOffset);\n }\n }\n select() {\n super.select();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.removeClass(this.#outlineId, \"hovered\");\n this.parent?.drawLayer.addClass(this.#outlineId, \"selected\");\n }\n unselect() {\n super.unselect();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.removeClass(this.#outlineId, \"selected\");\n if (!this.#isFreeHighlight) {\n this.#setCaret(false);\n }\n }\n get _mustFixPosition() {\n return !this.#isFreeHighlight;\n }\n show(visible = this._isVisible) {\n super.show(visible);\n if (this.parent) {\n this.parent.drawLayer.show(this.#id, visible);\n this.parent.drawLayer.show(this.#outlineId, visible);\n }\n }\n #getRotation() {\n return this.#isFreeHighlight ? this.rotation : 0;\n }\n #serializeBoxes() {\n if (this.#isFreeHighlight) {\n return null;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n const boxes = this.#boxes;\n const quadPoints = new Float32Array(boxes.length * 8);\n let i = 0;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const sx = x * pageWidth;\n const sy = (1 - y - height) * pageHeight;\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy + height * pageHeight;\n i += 8;\n }\n return quadPoints;\n }\n #serializeOutlines(rect) {\n return this.#highlightOutlines.serialize(rect, this.#getRotation());\n }\n static startHighlighting(parent, isLTR, {\n target: textLayer,\n x,\n y\n }) {\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n const pointerMove = e => {\n this.#highlightMove(parent, e);\n };\n const signal = parent._signal;\n const pointerDownOptions = {\n capture: true,\n passive: false,\n signal\n };\n const pointerDown = e => {\n e.preventDefault();\n e.stopPropagation();\n };\n const pointerUpCallback = e => {\n textLayer.removeEventListener(\"pointermove\", pointerMove);\n window.removeEventListener(\"blur\", pointerUpCallback);\n window.removeEventListener(\"pointerup\", pointerUpCallback);\n window.removeEventListener(\"pointerdown\", pointerDown, pointerDownOptions);\n window.removeEventListener(\"contextmenu\", noContextMenu);\n this.#endHighlight(parent, e);\n };\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerdown\", pointerDown, pointerDownOptions);\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n textLayer.addEventListener(\"pointermove\", pointerMove, {\n signal\n });\n this._freeHighlight = new FreeOutliner({\n x,\n y\n }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 0.001);\n ({\n id: this._freeHighlightId,\n clipPathId: this._freeHighlightClipId\n } = parent.drawLayer.highlight(this._freeHighlight, this._defaultColor, this._defaultOpacity, true));\n }\n static #highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n parent.drawLayer.updatePath(this._freeHighlightId, this._freeHighlight);\n }\n }\n static #endHighlight(parent, event) {\n if (!this._freeHighlight.isEmpty()) {\n parent.createAndAddNewEditor(event, false, {\n highlightId: this._freeHighlightId,\n highlightOutlines: this._freeHighlight.getOutlines(),\n clipPathId: this._freeHighlightClipId,\n methodOfCreation: \"main_toolbar\"\n });\n } else {\n parent.drawLayer.removeFreeHighlight(this._freeHighlightId);\n }\n this._freeHighlightId = -1;\n this._freeHighlight = null;\n this._freeHighlightClipId = \"\";\n }\n static deserialize(data, parent, uiManager) {\n const editor = super.deserialize(data, parent, uiManager);\n const {\n rect: [blX, blY, trX, trY],\n color,\n quadPoints\n } = data;\n editor.color = Util.makeHexColor(...color);\n editor.#opacity = data.opacity;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n editor.width = (trX - blX) / pageWidth;\n editor.height = (trY - blY) / pageHeight;\n const boxes = editor.#boxes = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n boxes.push({\n x: (quadPoints[4] - trX) / pageWidth,\n y: (trY - (1 - quadPoints[i + 5])) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 5] - quadPoints[i + 1]) / pageHeight\n });\n }\n editor.#createOutlines();\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.color);\n return {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color,\n opacity: this.#opacity,\n thickness: this.#thickness,\n quadPoints: this.#serializeBoxes(),\n outlines: this.#serializeOutlines(rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.#getRotation(),\n structTreeParentId: this._structTreeParentId\n };\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/ink.js\n\n\n\n\n\nclass InkEditor extends AnnotationEditor {\n #baseHeight = 0;\n #baseWidth = 0;\n #boundCanvasPointermove = this.canvasPointermove.bind(this);\n #boundCanvasPointerleave = this.canvasPointerleave.bind(this);\n #boundCanvasPointerup = this.canvasPointerup.bind(this);\n #boundCanvasPointerdown = this.canvasPointerdown.bind(this);\n #canvasContextMenuTimeoutId = null;\n #currentPath2D = new Path2D();\n #disableEditing = false;\n #hasSomethingToDraw = false;\n #isCanvasInitialized = false;\n #observer = null;\n #realWidth = 0;\n #realHeight = 0;\n #requestFrameCallback = null;\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 1;\n static _type = \"ink\";\n static _editorType = AnnotationEditorType.INK;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this.color = params.color || null;\n this.thickness = params.thickness || null;\n this.opacity = params.opacity || null;\n this.paths = [];\n this.bezierPath2D = [];\n this.allRawPaths = [];\n this.currentPath = [];\n this.scaleFactor = 1;\n this.translationX = this.translationY = 0;\n this.x = 0;\n this.y = 0;\n this._willKeepAspectRatio = true;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.INK_THICKNESS:\n InkEditor._defaultThickness = value;\n break;\n case AnnotationEditorParamsType.INK_COLOR:\n InkEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.INK_OPACITY:\n InkEditor._defaultOpacity = value / 100;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.INK_THICKNESS:\n this.#updateThickness(value);\n break;\n case AnnotationEditorParamsType.INK_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.INK_OPACITY:\n this.#updateOpacity(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || AnnotationEditor._defaultLineColor], [AnnotationEditorParamsType.INK_OPACITY, Math.round(InkEditor._defaultOpacity * 100)]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || AnnotationEditor._defaultLineColor], [AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity))]];\n }\n #updateThickness(thickness) {\n const setThickness = th => {\n this.thickness = th;\n this.#fitToContent();\n };\n const savedThickness = this.thickness;\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.#redraw();\n };\n const savedColor = this.color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateOpacity(opacity) {\n const setOpacity = op => {\n this.opacity = op;\n this.#redraw();\n };\n opacity /= 100;\n const savedOpacity = this.opacity;\n this.addCommands({\n cmd: setOpacity.bind(this, opacity),\n undo: setOpacity.bind(this, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_OPACITY,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n this.#setCanvasDims();\n }\n this.#fitToContent();\n }\n remove() {\n if (this.canvas === null) {\n return;\n }\n if (!this.isEmpty()) {\n this.commit();\n }\n this.canvas.width = this.canvas.height = 0;\n this.canvas.remove();\n this.canvas = null;\n if (this.#canvasContextMenuTimeoutId) {\n clearTimeout(this.#canvasContextMenuTimeoutId);\n this.#canvasContextMenuTimeoutId = null;\n }\n this.#observer?.disconnect();\n this.#observer = null;\n super.remove();\n }\n setParent(parent) {\n if (!this.parent && parent) {\n this._uiManager.removeShouldRescale(this);\n } else if (this.parent && parent === null) {\n this._uiManager.addShouldRescale(this);\n }\n super.setParent(parent);\n }\n onScaleChanging() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const width = this.width * parentWidth;\n const height = this.height * parentHeight;\n this.setDimensions(width, height);\n }\n enableEditMode() {\n if (this.#disableEditing || this.canvas === null) {\n return;\n }\n super.enableEditMode();\n this._isDraggable = false;\n this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown, {\n signal: this._uiManager._signal\n });\n }\n disableEditMode() {\n if (!this.isInEditMode() || this.canvas === null) {\n return;\n }\n super.disableEditMode();\n this._isDraggable = !this.isEmpty();\n this.div.classList.remove(\"editing\");\n this.canvas.removeEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n }\n onceAdded() {\n this._isDraggable = !this.isEmpty();\n }\n isEmpty() {\n return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0;\n }\n #getInitialBBox() {\n const {\n parentRotation,\n parentDimensions: [width, height]\n } = this;\n switch (parentRotation) {\n case 90:\n return [0, height, height, width];\n case 180:\n return [width, height, width, height];\n case 270:\n return [width, 0, height, width];\n default:\n return [0, 0, width, height];\n }\n }\n #setStroke() {\n const {\n ctx,\n color,\n opacity,\n thickness,\n parentScale,\n scaleFactor\n } = this;\n ctx.lineWidth = thickness * parentScale / scaleFactor;\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.miterLimit = 10;\n ctx.strokeStyle = `${color}${opacityToHex(opacity)}`;\n }\n #startDrawing(x, y) {\n const signal = this._uiManager._signal;\n this.canvas.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n this.canvas.addEventListener(\"pointerleave\", this.#boundCanvasPointerleave, {\n signal\n });\n this.canvas.addEventListener(\"pointermove\", this.#boundCanvasPointermove, {\n signal\n });\n this.canvas.addEventListener(\"pointerup\", this.#boundCanvasPointerup, {\n signal\n });\n this.canvas.removeEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n this.isEditing = true;\n if (!this.#isCanvasInitialized) {\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.thickness ||= InkEditor._defaultThickness;\n this.color ||= InkEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.opacity ??= InkEditor._defaultOpacity;\n }\n this.currentPath.push([x, y]);\n this.#hasSomethingToDraw = false;\n this.#setStroke();\n this.#requestFrameCallback = () => {\n this.#drawPoints();\n if (this.#requestFrameCallback) {\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n };\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n #draw(x, y) {\n const [lastX, lastY] = this.currentPath.at(-1);\n if (this.currentPath.length > 1 && x === lastX && y === lastY) {\n return;\n }\n const currentPath = this.currentPath;\n let path2D = this.#currentPath2D;\n currentPath.push([x, y]);\n this.#hasSomethingToDraw = true;\n if (currentPath.length <= 2) {\n path2D.moveTo(...currentPath[0]);\n path2D.lineTo(x, y);\n return;\n }\n if (currentPath.length === 3) {\n this.#currentPath2D = path2D = new Path2D();\n path2D.moveTo(...currentPath[0]);\n }\n this.#makeBezierCurve(path2D, ...currentPath.at(-3), ...currentPath.at(-2), x, y);\n }\n #endPath() {\n if (this.currentPath.length === 0) {\n return;\n }\n const lastPoint = this.currentPath.at(-1);\n this.#currentPath2D.lineTo(...lastPoint);\n }\n #stopDrawing(x, y) {\n this.#requestFrameCallback = null;\n x = Math.min(Math.max(x, 0), this.canvas.width);\n y = Math.min(Math.max(y, 0), this.canvas.height);\n this.#draw(x, y);\n this.#endPath();\n let bezier;\n if (this.currentPath.length !== 1) {\n bezier = this.#generateBezierPoints();\n } else {\n const xy = [x, y];\n bezier = [[xy, xy.slice(), xy.slice(), xy]];\n }\n const path2D = this.#currentPath2D;\n const currentPath = this.currentPath;\n this.currentPath = [];\n this.#currentPath2D = new Path2D();\n const cmd = () => {\n this.allRawPaths.push(currentPath);\n this.paths.push(bezier);\n this.bezierPath2D.push(path2D);\n this._uiManager.rebuild(this);\n };\n const undo = () => {\n this.allRawPaths.pop();\n this.paths.pop();\n this.bezierPath2D.pop();\n if (this.paths.length === 0) {\n this.remove();\n } else {\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n this.#fitToContent();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n #drawPoints() {\n if (!this.#hasSomethingToDraw) {\n return;\n }\n this.#hasSomethingToDraw = false;\n const thickness = Math.ceil(this.thickness * this.parentScale);\n const lastPoints = this.currentPath.slice(-3);\n const x = lastPoints.map(xy => xy[0]);\n const y = lastPoints.map(xy => xy[1]);\n const xMin = Math.min(...x) - thickness;\n const xMax = Math.max(...x) + thickness;\n const yMin = Math.min(...y) - thickness;\n const yMax = Math.max(...y) + thickness;\n const {\n ctx\n } = this;\n ctx.save();\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n ctx.stroke(this.#currentPath2D);\n ctx.restore();\n }\n #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) {\n const prevX = (x0 + x1) / 2;\n const prevY = (y0 + y1) / 2;\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n path2D.bezierCurveTo(prevX + 2 * (x1 - prevX) / 3, prevY + 2 * (y1 - prevY) / 3, x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3, x3, y3);\n }\n #generateBezierPoints() {\n const path = this.currentPath;\n if (path.length <= 2) {\n return [[path[0], path[0], path.at(-1), path.at(-1)]];\n }\n const bezierPoints = [];\n let i;\n let [x0, y0] = path[0];\n for (i = 1; i < path.length - 2; i++) {\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];\n const control2 = [x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3];\n bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);\n [x0, y0] = [x3, y3];\n }\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];\n const control2 = [x2 + 2 * (x1 - x2) / 3, y2 + 2 * (y1 - y2) / 3];\n bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);\n return bezierPoints;\n }\n #redraw() {\n if (this.isEmpty()) {\n this.#updateTransform();\n return;\n }\n this.#setStroke();\n const {\n canvas,\n ctx\n } = this;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n this.#updateTransform();\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n }\n commit() {\n if (this.#disableEditing) {\n return;\n }\n super.commit();\n this.isEditing = false;\n this.disableEditMode();\n this.setInForeground();\n this.#disableEditing = true;\n this.div.classList.add(\"disabled\");\n this.#fitToContent(true);\n this.select();\n this.parent.addInkEditorIfNeeded(true);\n this.moveInDOM();\n this.div.focus({\n preventScroll: true\n });\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n this.enableEditMode();\n }\n canvasPointerdown(event) {\n if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n return;\n }\n this.setInForeground();\n event.preventDefault();\n if (!this.div.contains(document.activeElement)) {\n this.div.focus({\n preventScroll: true\n });\n }\n this.#startDrawing(event.offsetX, event.offsetY);\n }\n canvasPointermove(event) {\n event.preventDefault();\n this.#draw(event.offsetX, event.offsetY);\n }\n canvasPointerup(event) {\n event.preventDefault();\n this.#endDrawing(event);\n }\n canvasPointerleave(event) {\n this.#endDrawing(event);\n }\n #endDrawing(event) {\n this.canvas.removeEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n this.canvas.removeEventListener(\"pointermove\", this.#boundCanvasPointermove);\n this.canvas.removeEventListener(\"pointerup\", this.#boundCanvasPointerup);\n this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown, {\n signal: this._uiManager._signal\n });\n if (this.#canvasContextMenuTimeoutId) {\n clearTimeout(this.#canvasContextMenuTimeoutId);\n }\n this.#canvasContextMenuTimeoutId = setTimeout(() => {\n this.#canvasContextMenuTimeoutId = null;\n this.canvas.removeEventListener(\"contextmenu\", noContextMenu);\n }, 10);\n this.#stopDrawing(event.offsetX, event.offsetY);\n this.addToAnnotationStorage();\n this.setInBackground();\n }\n #createCanvas() {\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = this.canvas.height = 0;\n this.canvas.className = \"inkEditorCanvas\";\n this.canvas.setAttribute(\"data-l10n-id\", \"pdfjs-ink-canvas\");\n this.div.append(this.canvas);\n this.ctx = this.canvas.getContext(\"2d\");\n }\n #createObserver() {\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n this._uiManager._signal.addEventListener(\"abort\", () => {\n this.#observer?.disconnect();\n this.#observer = null;\n }, {\n once: true\n });\n }\n get isResizable() {\n return !this.isEmpty() && this.#disableEditing;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.setAttribute(\"data-l10n-id\", \"pdfjs-ink\");\n const [x, y, w, h] = this.#getInitialBBox();\n this.setAt(x, y, 0, 0);\n this.setDims(w, h);\n this.#createCanvas();\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAspectRatio(this.width * parentWidth, this.height * parentHeight);\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this.#redraw();\n this.div.classList.add(\"disabled\");\n } else {\n this.div.classList.add(\"editing\");\n this.enableEditMode();\n }\n this.#createObserver();\n return this.div;\n }\n #setCanvasDims() {\n if (!this.#isCanvasInitialized) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.canvas.width = Math.ceil(this.width * parentWidth);\n this.canvas.height = Math.ceil(this.height * parentHeight);\n this.#updateTransform();\n }\n setDimensions(width, height) {\n const roundedWidth = Math.round(width);\n const roundedHeight = Math.round(height);\n if (this.#realWidth === roundedWidth && this.#realHeight === roundedHeight) {\n return;\n }\n this.#realWidth = roundedWidth;\n this.#realHeight = roundedHeight;\n this.canvas.style.visibility = \"hidden\";\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.fixAndSetPosition();\n if (this.#disableEditing) {\n this.#setScaleFactor(width, height);\n }\n this.#setCanvasDims();\n this.#redraw();\n this.canvas.style.visibility = \"visible\";\n this.fixDims();\n }\n #setScaleFactor(width, height) {\n const padding = this.#getPadding();\n const scaleFactorW = (width - padding) / this.#baseWidth;\n const scaleFactorH = (height - padding) / this.#baseHeight;\n this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\n }\n #updateTransform() {\n const padding = this.#getPadding() / 2;\n this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding);\n }\n static #buildPath2D(bezier) {\n const path2D = new Path2D();\n for (let i = 0, ii = bezier.length; i < ii; i++) {\n const [first, control1, control2, second] = bezier[i];\n if (i === 0) {\n path2D.moveTo(...first);\n }\n path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]);\n }\n return path2D;\n }\n static #toPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] += blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] + blX;\n points[i + 1] = x + blY;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] += blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trX - points[i + 1];\n points[i + 1] = trY - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n static #fromPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] -= blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] - blY;\n points[i + 1] = x - blX;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] -= blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trY - points[i + 1];\n points[i + 1] = trX - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n #serializePaths(s, tx, ty, rect) {\n const paths = [];\n const padding = this.thickness / 2;\n const shiftX = s * tx + padding;\n const shiftY = s * ty + padding;\n for (const bezier of this.paths) {\n const buffer = [];\n const points = [];\n for (let j = 0, jj = bezier.length; j < jj; j++) {\n const [first, control1, control2, second] = bezier[j];\n if (first[0] === second[0] && first[1] === second[1] && jj === 1) {\n const p0 = s * first[0] + shiftX;\n const p1 = s * first[1] + shiftY;\n buffer.push(p0, p1);\n points.push(p0, p1);\n break;\n }\n const p10 = s * first[0] + shiftX;\n const p11 = s * first[1] + shiftY;\n const p20 = s * control1[0] + shiftX;\n const p21 = s * control1[1] + shiftY;\n const p30 = s * control2[0] + shiftX;\n const p31 = s * control2[1] + shiftY;\n const p40 = s * second[0] + shiftX;\n const p41 = s * second[1] + shiftY;\n if (j === 0) {\n buffer.push(p10, p11);\n points.push(p10, p11);\n }\n buffer.push(p20, p21, p30, p31, p40, p41);\n points.push(p20, p21);\n if (j === jj - 1) {\n points.push(p40, p41);\n }\n }\n paths.push({\n bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation),\n points: InkEditor.#toPDFCoordinates(points, rect, this.rotation)\n });\n }\n return paths;\n }\n #getBbox() {\n let xMin = Infinity;\n let xMax = -Infinity;\n let yMin = Infinity;\n let yMax = -Infinity;\n for (const path of this.paths) {\n for (const [first, control1, control2, second] of path) {\n const bbox = Util.bezierBoundingBox(...first, ...control1, ...control2, ...second);\n xMin = Math.min(xMin, bbox[0]);\n yMin = Math.min(yMin, bbox[1]);\n xMax = Math.max(xMax, bbox[2]);\n yMax = Math.max(yMax, bbox[3]);\n }\n }\n return [xMin, yMin, xMax, yMax];\n }\n #getPadding() {\n return this.#disableEditing ? Math.ceil(this.thickness * this.parentScale) : 0;\n }\n #fitToContent(firstTime = false) {\n if (this.isEmpty()) {\n return;\n }\n if (!this.#disableEditing) {\n this.#redraw();\n return;\n }\n const bbox = this.#getBbox();\n const padding = this.#getPadding();\n this.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n this.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.setAspectRatio(width, height);\n const prevTranslationX = this.translationX;\n const prevTranslationY = this.translationY;\n this.translationX = -bbox[0];\n this.translationY = -bbox[1];\n this.#setCanvasDims();\n this.#redraw();\n this.#realWidth = width;\n this.#realHeight = height;\n this.setDims(width, height);\n const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;\n this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding);\n }\n static deserialize(data, parent, uiManager) {\n if (data instanceof InkAnnotationElement) {\n return null;\n }\n const editor = super.deserialize(data, parent, uiManager);\n editor.thickness = data.thickness;\n editor.color = Util.makeHexColor(...data.color);\n editor.opacity = data.opacity;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const width = editor.width * pageWidth;\n const height = editor.height * pageHeight;\n const scaleFactor = editor.parentScale;\n const padding = data.thickness / 2;\n editor.#disableEditing = true;\n editor.#realWidth = Math.round(width);\n editor.#realHeight = Math.round(height);\n const {\n paths,\n rect,\n rotation\n } = data;\n for (let {\n bezier\n } of paths) {\n bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation);\n const path = [];\n editor.paths.push(path);\n let p0 = scaleFactor * (bezier[0] - padding);\n let p1 = scaleFactor * (bezier[1] - padding);\n for (let i = 2, ii = bezier.length; i < ii; i += 6) {\n const p10 = scaleFactor * (bezier[i] - padding);\n const p11 = scaleFactor * (bezier[i + 1] - padding);\n const p20 = scaleFactor * (bezier[i + 2] - padding);\n const p21 = scaleFactor * (bezier[i + 3] - padding);\n const p30 = scaleFactor * (bezier[i + 4] - padding);\n const p31 = scaleFactor * (bezier[i + 5] - padding);\n path.push([[p0, p1], [p10, p11], [p20, p21], [p30, p31]]);\n p0 = p30;\n p1 = p31;\n }\n const path2D = this.#buildPath2D(path);\n editor.bezierPath2D.push(path2D);\n }\n const bbox = editor.#getBbox();\n editor.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n editor.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n editor.#setScaleFactor(width, height);\n return editor;\n }\n serialize() {\n if (this.isEmpty()) {\n return null;\n }\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n return {\n annotationType: AnnotationEditorType.INK,\n color,\n thickness: this.thickness,\n opacity: this.opacity,\n paths: this.#serializePaths(this.scaleFactor / this.parentScale, this.translationX, this.translationY, rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/stamp.js\n\n\n\n\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n #bitmapId = null;\n #bitmapPromise = null;\n #bitmapUrl = null;\n #bitmapFile = null;\n #bitmapFileName = \"\";\n #canvas = null;\n #observer = null;\n #resizeTimeoutId = null;\n #isSvg = false;\n #hasBeenAddedInUndoStack = false;\n static _type = \"stamp\";\n static _editorType = AnnotationEditorType.STAMP;\n constructor(params) {\n super({\n ...params,\n name: \"stampEditor\"\n });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static get supportedTypes() {\n const types = [\"apng\", \"avif\", \"bmp\", \"gif\", \"jpeg\", \"png\", \"svg+xml\", \"webp\", \"x-icon\"];\n return shadow(this, \"supportedTypes\", types.map(type => `image/${type}`));\n }\n static get supportedTypesStr() {\n return shadow(this, \"supportedTypesStr\", this.supportedTypes.join(\",\"));\n }\n static isHandlingMimeForPasting(mime) {\n return this.supportedTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor(AnnotationEditorType.STAMP, {\n bitmapFile: item.getAsFile()\n });\n }\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n if (data.file) {\n this.#bitmapFileName = data.file.name;\n }\n this.#createCanvas();\n }\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (this.#canvas) {\n this.div.focus();\n }\n }\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = StampEditor.supportedTypesStr;\n const signal = this._uiManager._signal;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this.#getBitmapFetched(data);\n }\n resolve();\n }, {\n signal\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n }, {\n signal\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n this.#observer?.disconnect();\n this.#observer = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded() {\n this._isDraggable = true;\n this.div.focus();\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId);\n }\n get isResizable() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.addAltTextButton();\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n }\n return this.div;\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(width * parentWidth / pageWidth, height * parentHeight / pageHeight);\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n div.append(canvas);\n div.hidden = false;\n this.#drawBitmap(width, height);\n this.#createObserver();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._reportTelemetry({\n action: \"inserted_image\"\n });\n if (this.#bitmapFileName) {\n canvas.setAttribute(\"aria-label\", this.#bitmapFileName);\n }\n }\n #setDimensions(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.setDims(width, height);\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap(width, height);\n }, TIME_TO_WAIT);\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap(width, height) {\n width = Math.ceil(width);\n height = Math.ceil(height);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === width && canvas.height === height) {\n return;\n }\n canvas.width = width;\n canvas.height = height;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(width, height);\n if (this._uiManager.hasMLManager && !this.hasAltText()) {\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, width, height);\n this._uiManager.mlGuess({\n service: \"image-to-text\",\n request: {\n data: ctx.getImageData(0, 0, width, height).data,\n width,\n height,\n channels: 4\n }\n }).then(response => {\n const altText = response?.output || \"\";\n if (this.parent && altText && !this.hasAltText()) {\n this.altTextData = {\n altText,\n decorative: false\n };\n }\n });\n }\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, width, height);\n }\n getImageForAltText() {\n return this.#canvas;\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n #createObserver() {\n if (!this._uiManager._signal) {\n return;\n }\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.#setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n this._uiManager._signal.addEventListener(\"abort\", () => {\n this.#observer?.disconnect();\n this.#observer = null;\n }, {\n once: true\n });\n }\n static deserialize(data, parent, uiManager) {\n if (data instanceof StampAnnotationElement) {\n return null;\n }\n const editor = super.deserialize(data, parent, uiManager);\n const {\n rect,\n bitmapUrl,\n bitmapId,\n isSvg,\n accessibilityData\n } = data;\n if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n return editor;\n }\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n const serialized = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId: this.#bitmapId,\n pageIndex: this.pageIndex,\n rect: this.getRect(0, 0),\n rotation: this.rotation,\n isSvg: this.#isSvg,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.altTextData;\n return serialized;\n }\n const {\n decorative,\n altText\n } = this.altTextData;\n if (!decorative && altText) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: altText\n };\n }\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #boundPointerup = null;\n #boundPointerdown = null;\n #boundTextLayerPointerDown = null;\n #editorFocusTimeoutId = null;\n #editors = new Map();\n #hadPointerDown = false;\n #isCleaningUp = false;\n #isDisabling = false;\n #textLayer = null;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor].map(type => [type._editorType, type]));\n constructor({\n uiManager,\n pageIndex,\n div,\n accessibilityManager,\n annotationLayer,\n drawLayer,\n textLayer,\n viewport,\n l10n\n }) {\n const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n, uiManager);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n this.#textLayer = textLayer;\n this.drawLayer = drawLayer;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n get isInvisible() {\n return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n }\n updateToolbar(mode) {\n this.#uiManager.updateToolbar(mode);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case AnnotationEditorType.INK:\n this.addInkEditorIfNeeded(false);\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.disableClick();\n break;\n case AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n addInkEditorIfNeeded(isCommitting) {\n if (this.#uiManager.getMode() !== AnnotationEditorType.INK) {\n return;\n }\n if (!isCommitting) {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.setInBackground();\n return;\n }\n }\n }\n const editor = this.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false);\n editor.setInBackground();\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n }\n enable() {\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n const annotationElementIds = new Set();\n for (const editor of this.#editors.values()) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n if (!this.#annotationLayer) {\n return;\n }\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n continue;\n }\n if (editor.serialize() !== null) {\n changedAnnotations.set(editor.annotationElementId, editor);\n continue;\n } else {\n resetAnnotations.set(editor.annotationElementId, editor);\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n if (this.#annotationLayer) {\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n this.#uiManager.addChangedExistingAnnotation(editor);\n editor.renderAnnotationElement(editable);\n editor.show(false);\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#boundTextLayerPointerDown) {\n this.#boundTextLayerPointerDown = this.#textLayerPointerDown.bind(this);\n this.#textLayer.div.addEventListener(\"pointerdown\", this.#boundTextLayerPointerDown, {\n signal: this.#uiManager._signal\n });\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#boundTextLayerPointerDown) {\n this.#textLayer.div.removeEventListener(\"pointerdown\", this.#boundTextLayerPointerDown);\n this.#boundTextLayerPointerDown = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n #textLayerPointerDown(event) {\n this.#uiManager.unselectAll();\n if (event.target === this.#textLayer.div) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#uiManager.showAllEditors(\"highlight\", true, true);\n this.#textLayer.div.classList.add(\"free\");\n HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", event);\n this.#textLayer.div.addEventListener(\"pointerup\", () => {\n this.#textLayer.div.classList.remove(\"free\");\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n event.preventDefault();\n }\n }\n enableClick() {\n if (this.#boundPointerdown) {\n return;\n }\n const signal = this.#uiManager._signal;\n this.#boundPointerdown = this.pointerdown.bind(this);\n this.#boundPointerup = this.pointerup.bind(this);\n this.div.addEventListener(\"pointerdown\", this.#boundPointerdown, {\n signal\n });\n this.div.addEventListener(\"pointerup\", this.#boundPointerup, {\n signal\n });\n }\n disableClick() {\n if (!this.#boundPointerdown) {\n return;\n }\n this.div.removeEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.removeEventListener(\"pointerup\", this.#boundPointerup);\n this.#boundPointerdown = null;\n this.#boundPointerup = null;\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n if (!this.#isCleaningUp) {\n this.addInkEditorIfNeeded(false);\n }\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded();\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n editor.show();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getNextId() {\n return this.#uiManager.getId();\n }\n get #currentEditorType() {\n return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n }\n get _signal() {\n return this.#uiManager._signal;\n }\n #createNewEditor(params) {\n const editorType = this.#currentEditorType;\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n canCreateNewEmptyEditor() {\n return this.#currentEditorType?.canCreateNewEmptyEditor();\n }\n pasteEditor(mode, params) {\n this.#uiManager.updateToolbar(mode);\n this.#uiManager.updateMode(mode);\n const {\n offsetX,\n offsetY\n } = this.#getCenterPoint();\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params\n });\n if (editor) {\n this.add(editor);\n }\n }\n deserialize(data) {\n return AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager) || null;\n }\n createAndAddNewEditor(event, isCentered, data = {}) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n ...data\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.div.getBoundingClientRect();\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n return {\n offsetX,\n offsetY\n };\n }\n addNewEditor() {\n this.createAndAddNewEditor(this.#getCenterPoint(), true);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n isSelected(editor) {\n return this.#uiManager.isSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n if (this.#uiManager.getMode() === AnnotationEditorType.STAMP) {\n this.#uiManager.unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n destroy() {\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n this.#isCleaningUp = true;\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n this.#isCleaningUp = false;\n }\n render({\n viewport\n }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n setLayerDimensions(this.div, {\n rotation\n });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n this.addInkEditorIfNeeded(false);\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\n\n;// CONCATENATED MODULE: ./src/display/draw_layer.js\n\n\nclass DrawLayer {\n #parent = null;\n #id = 0;\n #mapping = new Map();\n #toUpdate = new Map();\n constructor({\n pageIndex\n }) {\n this.pageIndex = pageIndex;\n }\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n return;\n }\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n static #setBox(element, {\n x = 0,\n y = 0,\n width = 1,\n height = 1\n } = {}) {\n const {\n style\n } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n #createSVG(box) {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", true);\n DrawLayer.#setBox(svg, box);\n return svg;\n }\n #createClipPath(defs, pathId) {\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n return clipPathId;\n }\n highlight(outlines, color, opacity, isPathUpdatable = false) {\n const id = this.#id++;\n const root = this.#createSVG(outlines.box);\n root.classList.add(\"highlight\");\n if (outlines.free) {\n root.classList.add(\"free\");\n }\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"d\", outlines.toSVGPath());\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = this.#createClipPath(defs, pathId);\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n root.setAttribute(\"fill\", color);\n root.setAttribute(\"fill-opacity\", opacity);\n use.setAttribute(\"href\", `#${pathId}`);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n highlightOutline(outlines) {\n const id = this.#id++;\n const root = this.#createSVG(outlines.box);\n root.classList.add(\"highlightOutline\");\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"d\", outlines.toSVGPath());\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (outlines.free) {\n root.classList.add(\"free\");\n const mask = DrawLayer._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_p${this.pageIndex}_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = DrawLayer._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = DrawLayer._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n use.classList.add(\"mask\");\n }\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n this.#mapping.set(id, root);\n return id;\n }\n finalizeLine(id, line) {\n const path = this.#toUpdate.get(id);\n this.#toUpdate.delete(id);\n this.updateBox(id, line.box);\n path.setAttribute(\"d\", line.toSVGPath());\n }\n updateLine(id, line) {\n const root = this.#mapping.get(id);\n const defs = root.firstChild;\n const path = defs.firstChild;\n path.setAttribute(\"d\", line.toSVGPath());\n }\n removeFreeHighlight(id) {\n this.remove(id);\n this.#toUpdate.delete(id);\n }\n updatePath(id, line) {\n this.#toUpdate.get(id).setAttribute(\"d\", line.toSVGPath());\n }\n updateBox(id, box) {\n DrawLayer.#setBox(this.#mapping.get(id), box);\n }\n show(id, visible) {\n this.#mapping.get(id).classList.toggle(\"hidden\", !visible);\n }\n rotate(id, angle) {\n this.#mapping.get(id).setAttribute(\"data-main-rotation\", angle);\n }\n changeColor(id, color) {\n this.#mapping.get(id).setAttribute(\"fill\", color);\n }\n changeOpacity(id, opacity) {\n this.#mapping.get(id).setAttribute(\"fill-opacity\", opacity);\n }\n addClass(id, className) {\n this.#mapping.get(id).classList.add(className);\n }\n removeClass(id, className) {\n this.#mapping.get(id).classList.remove(className);\n }\n remove(id) {\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n }\n}\n\n;// CONCATENATED MODULE: ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\nconst pdfjsVersion = \"4.4.168\";\nconst pdfjsBuild = \"19fbc8998\";\n\nvar __webpack_exports__AbortException = __webpack_exports__.AbortException;\nvar __webpack_exports__AnnotationEditorLayer = __webpack_exports__.AnnotationEditorLayer;\nvar __webpack_exports__AnnotationEditorParamsType = __webpack_exports__.AnnotationEditorParamsType;\nvar __webpack_exports__AnnotationEditorType = __webpack_exports__.AnnotationEditorType;\nvar __webpack_exports__AnnotationEditorUIManager = __webpack_exports__.AnnotationEditorUIManager;\nvar __webpack_exports__AnnotationLayer = __webpack_exports__.AnnotationLayer;\nvar __webpack_exports__AnnotationMode = __webpack_exports__.AnnotationMode;\nvar __webpack_exports__CMapCompressionType = __webpack_exports__.CMapCompressionType;\nvar __webpack_exports__ColorPicker = __webpack_exports__.ColorPicker;\nvar __webpack_exports__DOMSVGFactory = __webpack_exports__.DOMSVGFactory;\nvar __webpack_exports__DrawLayer = __webpack_exports__.DrawLayer;\nvar __webpack_exports__FeatureTest = __webpack_exports__.FeatureTest;\nvar __webpack_exports__GlobalWorkerOptions = __webpack_exports__.GlobalWorkerOptions;\nvar __webpack_exports__ImageKind = __webpack_exports__.ImageKind;\nvar __webpack_exports__InvalidPDFException = __webpack_exports__.InvalidPDFException;\nvar __webpack_exports__MissingPDFException = __webpack_exports__.MissingPDFException;\nvar __webpack_exports__OPS = __webpack_exports__.OPS;\nvar __webpack_exports__Outliner = __webpack_exports__.Outliner;\nvar __webpack_exports__PDFDataRangeTransport = __webpack_exports__.PDFDataRangeTransport;\nvar __webpack_exports__PDFDateString = __webpack_exports__.PDFDateString;\nvar __webpack_exports__PDFWorker = __webpack_exports__.PDFWorker;\nvar __webpack_exports__PasswordResponses = __webpack_exports__.PasswordResponses;\nvar __webpack_exports__PermissionFlag = __webpack_exports__.PermissionFlag;\nvar __webpack_exports__PixelsPerInch = __webpack_exports__.PixelsPerInch;\nvar __webpack_exports__RenderingCancelledException = __webpack_exports__.RenderingCancelledException;\nvar __webpack_exports__TextLayer = __webpack_exports__.TextLayer;\nvar __webpack_exports__UnexpectedResponseException = __webpack_exports__.UnexpectedResponseException;\nvar __webpack_exports__Util = __webpack_exports__.Util;\nvar __webpack_exports__VerbosityLevel = __webpack_exports__.VerbosityLevel;\nvar __webpack_exports__XfaLayer = __webpack_exports__.XfaLayer;\nvar __webpack_exports__build = __webpack_exports__.build;\nvar __webpack_exports__createValidAbsoluteUrl = __webpack_exports__.createValidAbsoluteUrl;\nvar __webpack_exports__fetchData = __webpack_exports__.fetchData;\nvar __webpack_exports__getDocument = __webpack_exports__.getDocument;\nvar __webpack_exports__getFilenameFromUrl = __webpack_exports__.getFilenameFromUrl;\nvar __webpack_exports__getPdfFilenameFromUrl = __webpack_exports__.getPdfFilenameFromUrl;\nvar __webpack_exports__getXfaPageViewport = __webpack_exports__.getXfaPageViewport;\nvar __webpack_exports__isDataScheme = __webpack_exports__.isDataScheme;\nvar __webpack_exports__isPdfFile = __webpack_exports__.isPdfFile;\nvar __webpack_exports__noContextMenu = __webpack_exports__.noContextMenu;\nvar __webpack_exports__normalizeUnicode = __webpack_exports__.normalizeUnicode;\nvar __webpack_exports__renderTextLayer = __webpack_exports__.renderTextLayer;\nvar __webpack_exports__setLayerDimensions = __webpack_exports__.setLayerDimensions;\nvar __webpack_exports__shadow = __webpack_exports__.shadow;\nvar __webpack_exports__updateTextLayer = __webpack_exports__.updateTextLayer;\nvar __webpack_exports__version = __webpack_exports__.version;\nexport { __webpack_exports__AbortException as AbortException, __webpack_exports__AnnotationEditorLayer as AnnotationEditorLayer, __webpack_exports__AnnotationEditorParamsType as AnnotationEditorParamsType, __webpack_exports__AnnotationEditorType as AnnotationEditorType, __webpack_exports__AnnotationEditorUIManager as AnnotationEditorUIManager, __webpack_exports__AnnotationLayer as AnnotationLayer, __webpack_exports__AnnotationMode as AnnotationMode, __webpack_exports__CMapCompressionType as CMapCompressionType, __webpack_exports__ColorPicker as ColorPicker, __webpack_exports__DOMSVGFactory as DOMSVGFactory, __webpack_exports__DrawLayer as DrawLayer, __webpack_exports__FeatureTest as FeatureTest, __webpack_exports__GlobalWorkerOptions as GlobalWorkerOptions, __webpack_exports__ImageKind as ImageKind, __webpack_exports__InvalidPDFException as InvalidPDFException, __webpack_exports__MissingPDFException as MissingPDFException, __webpack_exports__OPS as OPS, __webpack_exports__Outliner as Outliner, __webpack_exports__PDFDataRangeTransport as PDFDataRangeTransport, __webpack_exports__PDFDateString as PDFDateString, __webpack_exports__PDFWorker as PDFWorker, __webpack_exports__PasswordResponses as PasswordResponses, __webpack_exports__PermissionFlag as PermissionFlag, __webpack_exports__PixelsPerInch as PixelsPerInch, __webpack_exports__RenderingCancelledException as RenderingCancelledException, __webpack_exports__TextLayer as TextLayer, __webpack_exports__UnexpectedResponseException as UnexpectedResponseException, __webpack_exports__Util as Util, __webpack_exports__VerbosityLevel as VerbosityLevel, __webpack_exports__XfaLayer as XfaLayer, __webpack_exports__build as build, __webpack_exports__createValidAbsoluteUrl as createValidAbsoluteUrl, __webpack_exports__fetchData as fetchData, __webpack_exports__getDocument as getDocument, __webpack_exports__getFilenameFromUrl as getFilenameFromUrl, __webpack_exports__getPdfFilenameFromUrl as getPdfFilenameFromUrl, __webpack_exports__getXfaPageViewport as getXfaPageViewport, __webpack_exports__isDataScheme as isDataScheme, __webpack_exports__isPdfFile as isPdfFile, __webpack_exports__noContextMenu as noContextMenu, __webpack_exports__normalizeUnicode as normalizeUnicode, __webpack_exports__renderTextLayer as renderTextLayer, __webpack_exports__setLayerDimensions as setLayerDimensions, __webpack_exports__shadow as shadow, __webpack_exports__updateTextLayer as updateTextLayer, __webpack_exports__version as version };\n\n//# sourceMappingURL=pdf.mjs.map","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n// As defined on the list of supported events: https://reactjs.org/docs/events.html\nexport var clipboardEvents = ['onCopy', 'onCut', 'onPaste'];\nexport var compositionEvents = [\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate',\n];\nexport var focusEvents = ['onFocus', 'onBlur'];\nexport var formEvents = ['onInput', 'onInvalid', 'onReset', 'onSubmit'];\nexport var imageEvents = ['onLoad', 'onError'];\nexport var keyboardEvents = ['onKeyDown', 'onKeyPress', 'onKeyUp'];\nexport var mediaEvents = [\n 'onAbort',\n 'onCanPlay',\n 'onCanPlayThrough',\n 'onDurationChange',\n 'onEmptied',\n 'onEncrypted',\n 'onEnded',\n 'onError',\n 'onLoadedData',\n 'onLoadedMetadata',\n 'onLoadStart',\n 'onPause',\n 'onPlay',\n 'onPlaying',\n 'onProgress',\n 'onRateChange',\n 'onSeeked',\n 'onSeeking',\n 'onStalled',\n 'onSuspend',\n 'onTimeUpdate',\n 'onVolumeChange',\n 'onWaiting',\n];\nexport var mouseEvents = [\n 'onClick',\n 'onContextMenu',\n 'onDoubleClick',\n 'onMouseDown',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOut',\n 'onMouseOver',\n 'onMouseUp',\n];\nexport var dragEvents = [\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n];\nexport var selectionEvents = ['onSelect'];\nexport var touchEvents = ['onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart'];\nexport var pointerEvents = [\n 'onPointerDown',\n 'onPointerMove',\n 'onPointerUp',\n 'onPointerCancel',\n 'onGotPointerCapture',\n 'onLostPointerCapture',\n 'onPointerEnter',\n 'onPointerLeave',\n 'onPointerOver',\n 'onPointerOut',\n];\nexport var uiEvents = ['onScroll'];\nexport var wheelEvents = ['onWheel'];\nexport var animationEvents = [\n 'onAnimationStart',\n 'onAnimationEnd',\n 'onAnimationIteration',\n];\nexport var transitionEvents = ['onTransitionEnd'];\nexport var otherEvents = ['onToggle'];\nexport var changeEvents = ['onChange'];\nexport var allEvents = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], clipboardEvents, true), compositionEvents, true), focusEvents, true), formEvents, true), imageEvents, true), keyboardEvents, true), mediaEvents, true), mouseEvents, true), dragEvents, true), selectionEvents, true), touchEvents, true), pointerEvents, true), uiEvents, true), wheelEvents, true), animationEvents, true), transitionEvents, true), changeEvents, true), otherEvents, true);\n/**\n * Returns an object with on-event callback props curried with provided args.\n * @param {Object} props Props passed to a component.\n * @param {Function=} getArgs A function that returns argument(s) on-event callbacks\n * shall be curried with.\n */\nexport default function makeEventProps(props, getArgs) {\n var eventProps = {};\n allEvents.forEach(function (eventName) {\n var eventHandler = props[eventName];\n if (!eventHandler) {\n return;\n }\n if (getArgs) {\n eventProps[eventName] = (function (event) {\n return eventHandler(event, getArgs(eventName));\n });\n }\n else {\n eventProps[eventName] = eventHandler;\n }\n });\n return eventProps;\n}\n","export default function makeCancellablePromise(promise) {\n var isCancelled = false;\n var wrappedPromise = new Promise(function (resolve, reject) {\n promise\n .then(function (value) { return !isCancelled && resolve(value); })\n .catch(function (error) { return !isCancelled && reject(error); });\n });\n return {\n promise: wrappedPromise,\n cancel: function () {\n isCancelled = true;\n },\n };\n}\n","var has = Object.prototype.hasOwnProperty;\n\nfunction find(iter, tar, key) {\n\tfor (key of iter.keys()) {\n\t\tif (dequal(key, tar)) return key;\n\t}\n}\n\nexport function dequal(foo, bar) {\n\tvar ctor, len, tmp;\n\tif (foo === bar) return true;\n\n\tif (foo && bar && (ctor=foo.constructor) === bar.constructor) {\n\t\tif (ctor === Date) return foo.getTime() === bar.getTime();\n\t\tif (ctor === RegExp) return foo.toString() === bar.toString();\n\n\t\tif (ctor === Array) {\n\t\t\tif ((len=foo.length) === bar.length) {\n\t\t\t\twhile (len-- && dequal(foo[len], bar[len]));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (ctor === Set) {\n\t\t\tif (foo.size !== bar.size) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (len of foo) {\n\t\t\t\ttmp = len;\n\t\t\t\tif (tmp && typeof tmp === 'object') {\n\t\t\t\t\ttmp = find(bar, tmp);\n\t\t\t\t\tif (!tmp) return false;\n\t\t\t\t}\n\t\t\t\tif (!bar.has(tmp)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (ctor === Map) {\n\t\t\tif (foo.size !== bar.size) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (len of foo) {\n\t\t\t\ttmp = len[0];\n\t\t\t\tif (tmp && typeof tmp === 'object') {\n\t\t\t\t\ttmp = find(bar, tmp);\n\t\t\t\t\tif (!tmp) return false;\n\t\t\t\t}\n\t\t\t\tif (!dequal(len[1], bar.get(tmp))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (ctor === ArrayBuffer) {\n\t\t\tfoo = new Uint8Array(foo);\n\t\t\tbar = new Uint8Array(bar);\n\t\t} else if (ctor === DataView) {\n\t\t\tif ((len=foo.byteLength) === bar.byteLength) {\n\t\t\t\twhile (len-- && foo.getInt8(len) === bar.getInt8(len));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (ArrayBuffer.isView(foo)) {\n\t\t\tif ((len=foo.byteLength) === bar.byteLength) {\n\t\t\t\twhile (len-- && foo[len] === bar[len]);\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (!ctor || typeof foo === 'object') {\n\t\t\tlen = 0;\n\t\t\tfor (ctor in foo) {\n\t\t\t\tif (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n\t\t\t\tif (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;\n\t\t\t}\n\t\t\treturn Object.keys(bar).length === len;\n\t\t}\n\t}\n\n\treturn foo !== foo && bar !== bar;\n}\n","'use client';\nimport { createContext } from 'react';\nconst documentContext = createContext(null);\nexport default documentContext;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function Message({ children, type }) {\n return _jsx(\"div\", { className: `react-pdf__message react-pdf__message--${type}`, children: children });\n}\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport invariant from 'tiny-invariant';\nconst DEFAULT_LINK_REL = 'noopener noreferrer nofollow';\nexport default class LinkService {\n constructor() {\n this.externalLinkEnabled = true;\n this.externalLinkRel = undefined;\n this.externalLinkTarget = undefined;\n this.isInPresentationMode = false;\n this.pdfDocument = undefined;\n this.pdfViewer = undefined;\n }\n setDocument(pdfDocument) {\n this.pdfDocument = pdfDocument;\n }\n setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n setExternalLinkRel(externalLinkRel) {\n this.externalLinkRel = externalLinkRel;\n }\n setExternalLinkTarget(externalLinkTarget) {\n this.externalLinkTarget = externalLinkTarget;\n }\n setHistory() {\n // Intentionally empty\n }\n get pagesCount() {\n return this.pdfDocument ? this.pdfDocument.numPages : 0;\n }\n get page() {\n invariant(this.pdfViewer, 'PDF viewer is not initialized.');\n return this.pdfViewer.currentPageNumber || 0;\n }\n set page(value) {\n invariant(this.pdfViewer, 'PDF viewer is not initialized.');\n this.pdfViewer.currentPageNumber = value;\n }\n get rotation() {\n return 0;\n }\n set rotation(value) {\n // Intentionally empty\n }\n goToDestination(dest) {\n return new Promise((resolve) => {\n invariant(this.pdfDocument, 'PDF document not loaded.');\n invariant(dest, 'Destination is not specified.');\n if (typeof dest === 'string') {\n this.pdfDocument.getDestination(dest).then(resolve);\n }\n else if (Array.isArray(dest)) {\n resolve(dest);\n }\n else {\n dest.then(resolve);\n }\n }).then((explicitDest) => {\n invariant(Array.isArray(explicitDest), `\"${explicitDest}\" is not a valid destination array.`);\n const destRef = explicitDest[0];\n new Promise((resolve) => {\n invariant(this.pdfDocument, 'PDF document not loaded.');\n if (destRef instanceof Object) {\n this.pdfDocument\n .getPageIndex(destRef)\n .then((pageIndex) => {\n resolve(pageIndex);\n })\n .catch(() => {\n invariant(false, `\"${destRef}\" is not a valid page reference.`);\n });\n }\n else if (typeof destRef === 'number') {\n resolve(destRef);\n }\n else {\n invariant(false, `\"${destRef}\" is not a valid destination reference.`);\n }\n }).then((pageIndex) => {\n const pageNumber = pageIndex + 1;\n invariant(this.pdfViewer, 'PDF viewer is not initialized.');\n invariant(pageNumber >= 1 && pageNumber <= this.pagesCount, `\"${pageNumber}\" is not a valid page number.`);\n this.pdfViewer.scrollPageIntoView({\n dest: explicitDest,\n pageIndex,\n pageNumber,\n });\n });\n });\n }\n navigateTo(dest) {\n this.goToDestination(dest);\n }\n goToPage(pageNumber) {\n const pageIndex = pageNumber - 1;\n invariant(this.pdfViewer, 'PDF viewer is not initialized.');\n invariant(pageNumber >= 1 && pageNumber <= this.pagesCount, `\"${pageNumber}\" is not a valid page number.`);\n this.pdfViewer.scrollPageIntoView({\n pageIndex,\n pageNumber,\n });\n }\n addLinkAttributes(link, url, newWindow) {\n link.href = url;\n link.rel = this.externalLinkRel || DEFAULT_LINK_REL;\n link.target = newWindow ? '_blank' : this.externalLinkTarget || '';\n }\n getDestinationHash() {\n return '#';\n }\n getAnchorUrl() {\n return '#';\n }\n setHash() {\n // Intentionally empty\n }\n executeNamedAction() {\n // Intentionally empty\n }\n cachePageRef() {\n // Intentionally empty\n }\n isPageVisible() {\n return true;\n }\n isPageCached() {\n return true;\n }\n executeSetOCGState() {\n // Intentionally empty\n }\n}\n","// As defined in https://github.com/mozilla/pdf.js/blob/d9fac3459609a807be6506fb3441b5da4b154d14/src/shared/util.js#L371-L374\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\nexport default PasswordResponses;\n","import invariant from 'tiny-invariant';\nimport warning from 'warning';\n/**\n * Checks if we're running in a browser environment.\n */\nexport const isBrowser = typeof document !== 'undefined';\n/**\n * Checks whether we're running from a local file system.\n */\nexport const isLocalFileSystem = isBrowser && window.location.protocol === 'file:';\n/**\n * Checks whether a variable is defined.\n *\n * @param {*} variable Variable to check\n */\nexport function isDefined(variable) {\n return typeof variable !== 'undefined';\n}\n/**\n * Checks whether a variable is defined and not null.\n *\n * @param {*} variable Variable to check\n */\nexport function isProvided(variable) {\n return isDefined(variable) && variable !== null;\n}\n/**\n * Checks whether a variable provided is a string.\n *\n * @param {*} variable Variable to check\n */\nexport function isString(variable) {\n return typeof variable === 'string';\n}\n/**\n * Checks whether a variable provided is an ArrayBuffer.\n *\n * @param {*} variable Variable to check\n */\nexport function isArrayBuffer(variable) {\n return variable instanceof ArrayBuffer;\n}\n/**\n * Checks whether a variable provided is a Blob.\n *\n * @param {*} variable Variable to check\n */\nexport function isBlob(variable) {\n invariant(isBrowser, 'isBlob can only be used in a browser environment');\n return variable instanceof Blob;\n}\n/**\n * Checks whether a variable provided is a data URI.\n *\n * @param {*} variable String to check\n */\nexport function isDataURI(variable) {\n return isString(variable) && /^data:/.test(variable);\n}\nexport function dataURItoByteString(dataURI) {\n invariant(isDataURI(dataURI), 'Invalid data URI.');\n const [headersString = '', dataString = ''] = dataURI.split(',');\n const headers = headersString.split(';');\n if (headers.indexOf('base64') !== -1) {\n return atob(dataString);\n }\n return unescape(dataString);\n}\nexport function getDevicePixelRatio() {\n return (isBrowser && window.devicePixelRatio) || 1;\n}\nconst allowFileAccessFromFilesTip = 'On Chromium based browsers, you can use --allow-file-access-from-files flag for debugging purposes.';\nexport function displayCORSWarning() {\n warning(!isLocalFileSystem, `Loading PDF as base64 strings/URLs may not work on protocols other than HTTP/HTTPS. ${allowFileAccessFromFilesTip}`);\n}\nexport function displayWorkerWarning() {\n warning(!isLocalFileSystem, `Loading PDF.js worker may not work on protocols other than HTTP/HTTPS. ${allowFileAccessFromFilesTip}`);\n}\nexport function cancelRunningTask(runningTask) {\n if (runningTask === null || runningTask === void 0 ? void 0 : runningTask.cancel)\n runningTask.cancel();\n}\nexport function makePageCallback(page, scale) {\n Object.defineProperty(page, 'width', {\n get() {\n return this.view[2] * scale;\n },\n configurable: true,\n });\n Object.defineProperty(page, 'height', {\n get() {\n return this.view[3] * scale;\n },\n configurable: true,\n });\n Object.defineProperty(page, 'originalWidth', {\n get() {\n return this.view[2];\n },\n configurable: true,\n });\n Object.defineProperty(page, 'originalHeight', {\n get() {\n return this.view[3];\n },\n configurable: true,\n });\n return page;\n}\nexport function isCancelException(error) {\n return error.name === 'RenderingCancelledException';\n}\nexport function loadFromFile(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n if (!reader.result) {\n return reject(new Error('Error while reading a file.'));\n }\n resolve(reader.result);\n };\n reader.onerror = (event) => {\n if (!event.target) {\n return reject(new Error('Error while reading a file.'));\n }\n const { error } = event.target;\n if (!error) {\n return reject(new Error('Error while reading a file.'));\n }\n switch (error.code) {\n case error.NOT_FOUND_ERR:\n return reject(new Error('Error while reading a file: File not found.'));\n case error.SECURITY_ERR:\n return reject(new Error('Error while reading a file: Security error.'));\n case error.ABORT_ERR:\n return reject(new Error('Error while reading a file: Aborted.'));\n default:\n return reject(new Error('Error while reading a file.'));\n }\n };\n reader.readAsArrayBuffer(file);\n });\n}\n","import { useReducer } from 'react';\nfunction reducer(state, action) {\n switch (action.type) {\n case 'RESOLVE':\n return { value: action.value, error: undefined };\n case 'REJECT':\n return { value: false, error: action.error };\n case 'RESET':\n return { value: undefined, error: undefined };\n default:\n return state;\n }\n}\nexport default function useResolver() {\n return useReducer((reducer), { value: undefined, error: undefined });\n}\n","'use client';\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react';\nimport makeEventProps from 'make-event-props';\nimport makeCancellable from 'make-cancellable-promise';\nimport clsx from 'clsx';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport { dequal } from 'dequal';\nimport * as pdfjs from 'pdfjs-dist';\nimport DocumentContext from './DocumentContext.js';\nimport Message from './Message.js';\nimport LinkService from './LinkService.js';\nimport PasswordResponses from './PasswordResponses.js';\nimport { cancelRunningTask, dataURItoByteString, displayCORSWarning, isArrayBuffer, isBlob, isBrowser, isDataURI, loadFromFile, } from './shared/utils.js';\nimport useResolver from './shared/hooks/useResolver.js';\nconst { PDFDataRangeTransport } = pdfjs;\nconst defaultOnPassword = (callback, reason) => {\n switch (reason) {\n case PasswordResponses.NEED_PASSWORD: {\n const password = prompt('Enter the password to open this PDF file.');\n callback(password);\n break;\n }\n case PasswordResponses.INCORRECT_PASSWORD: {\n const password = prompt('Invalid password. Please try again.');\n callback(password);\n break;\n }\n default:\n }\n};\nfunction isParameterObject(file) {\n return (typeof file === 'object' &&\n file !== null &&\n ('data' in file || 'range' in file || 'url' in file));\n}\n/**\n * Loads a document passed using `file` prop.\n */\nconst Document = forwardRef(function Document(_a, ref) {\n var { children, className, error = 'Failed to load PDF file.', externalLinkRel, externalLinkTarget, file, inputRef, imageResourcesPath, loading = 'Loading PDF…', noData = 'No PDF file specified.', onItemClick, onLoadError: onLoadErrorProps, onLoadProgress, onLoadSuccess: onLoadSuccessProps, onPassword = defaultOnPassword, onSourceError: onSourceErrorProps, onSourceSuccess: onSourceSuccessProps, options, renderMode, rotate } = _a, otherProps = __rest(_a, [\"children\", \"className\", \"error\", \"externalLinkRel\", \"externalLinkTarget\", \"file\", \"inputRef\", \"imageResourcesPath\", \"loading\", \"noData\", \"onItemClick\", \"onLoadError\", \"onLoadProgress\", \"onLoadSuccess\", \"onPassword\", \"onSourceError\", \"onSourceSuccess\", \"options\", \"renderMode\", \"rotate\"]);\n const [sourceState, sourceDispatch] = useResolver();\n const { value: source, error: sourceError } = sourceState;\n const [pdfState, pdfDispatch] = useResolver();\n const { value: pdf, error: pdfError } = pdfState;\n const linkService = useRef(new LinkService());\n const pages = useRef([]);\n const prevFile = useRef(undefined);\n const prevOptions = useRef(undefined);\n if (file && file !== prevFile.current && isParameterObject(file)) {\n warning(!dequal(file, prevFile.current), `File prop passed to changed, but it's equal to previous one. This might result in unnecessary reloads. Consider memoizing the value passed to \"file\" prop.`);\n prevFile.current = file;\n }\n // Detect non-memoized changes in options prop\n if (options && options !== prevOptions.current) {\n warning(!dequal(options, prevOptions.current), `Options prop passed to changed, but it's equal to previous one. This might result in unnecessary reloads. Consider memoizing the value passed to \"options\" prop.`);\n prevOptions.current = options;\n }\n const viewer = useRef({\n // Handling jumping to internal links target\n scrollPageIntoView: (args) => {\n const { dest, pageNumber, pageIndex = pageNumber - 1 } = args;\n // First, check if custom handling of onItemClick was provided\n if (onItemClick) {\n onItemClick({ dest, pageIndex, pageNumber });\n return;\n }\n // If not, try to look for target page within the .\n const page = pages.current[pageIndex];\n if (page) {\n // Scroll to the page automatically\n page.scrollIntoView();\n return;\n }\n warning(false, `An internal link leading to page ${pageNumber} was clicked, but neither was provided with onItemClick nor it was able to find the page within itself. Either provide onItemClick to and handle navigating by yourself or ensure that all pages are rendered within .`);\n },\n });\n useImperativeHandle(ref, () => ({\n linkService,\n pages,\n viewer,\n }), []);\n /**\n * Called when a document source is resolved correctly\n */\n function onSourceSuccess() {\n if (onSourceSuccessProps) {\n onSourceSuccessProps();\n }\n }\n /**\n * Called when a document source failed to be resolved correctly\n */\n function onSourceError() {\n if (!sourceError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, sourceError.toString());\n if (onSourceErrorProps) {\n onSourceErrorProps(sourceError);\n }\n }\n function resetSource() {\n sourceDispatch({ type: 'RESET' });\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: See https://github.com/biomejs/biome/issues/3080\n useEffect(resetSource, [file, sourceDispatch]);\n const findDocumentSource = useCallback(() => __awaiter(this, void 0, void 0, function* () {\n if (!file) {\n return null;\n }\n // File is a string\n if (typeof file === 'string') {\n if (isDataURI(file)) {\n const fileByteString = dataURItoByteString(file);\n return { data: fileByteString };\n }\n displayCORSWarning();\n return { url: file };\n }\n // File is PDFDataRangeTransport\n if (file instanceof PDFDataRangeTransport) {\n return { range: file };\n }\n // File is an ArrayBuffer\n if (isArrayBuffer(file)) {\n return { data: file };\n }\n /**\n * The cases below are browser-only.\n * If you're running on a non-browser environment, these cases will be of no use.\n */\n if (isBrowser) {\n // File is a Blob\n if (isBlob(file)) {\n const data = yield loadFromFile(file);\n return { data };\n }\n }\n // At this point, file must be an object\n invariant(typeof file === 'object', 'Invalid parameter in file, need either Uint8Array, string or a parameter object');\n invariant(isParameterObject(file), 'Invalid parameter object: need either .data, .range or .url');\n // File .url is a string\n if ('url' in file && typeof file.url === 'string') {\n if (isDataURI(file.url)) {\n const { url } = file, otherParams = __rest(file, [\"url\"]);\n const fileByteString = dataURItoByteString(url);\n return Object.assign({ data: fileByteString }, otherParams);\n }\n displayCORSWarning();\n }\n return file;\n }), [file]);\n useEffect(() => {\n const cancellable = makeCancellable(findDocumentSource());\n cancellable.promise\n .then((nextSource) => {\n sourceDispatch({ type: 'RESOLVE', value: nextSource });\n })\n .catch((error) => {\n sourceDispatch({ type: 'REJECT', error });\n });\n return () => {\n cancelRunningTask(cancellable);\n };\n }, [findDocumentSource, sourceDispatch]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (typeof source === 'undefined') {\n return;\n }\n if (source === false) {\n onSourceError();\n return;\n }\n onSourceSuccess();\n }, [source]);\n /**\n * Called when a document is read successfully\n */\n function onLoadSuccess() {\n if (!pdf) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onLoadSuccessProps) {\n onLoadSuccessProps(pdf);\n }\n pages.current = new Array(pdf.numPages);\n linkService.current.setDocument(pdf);\n }\n /**\n * Called when a document failed to read successfully\n */\n function onLoadError() {\n if (!pdfError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, pdfError.toString());\n if (onLoadErrorProps) {\n onLoadErrorProps(pdfError);\n }\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on source change\n useEffect(function resetDocument() {\n pdfDispatch({ type: 'RESET' });\n }, [pdfDispatch, source]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(function loadDocument() {\n if (!source) {\n return;\n }\n const documentInitParams = Object.assign(Object.assign({}, source), options);\n const destroyable = pdfjs.getDocument(documentInitParams);\n if (onLoadProgress) {\n destroyable.onProgress = onLoadProgress;\n }\n if (onPassword) {\n destroyable.onPassword = onPassword;\n }\n const loadingTask = destroyable;\n loadingTask.promise\n .then((nextPdf) => {\n pdfDispatch({ type: 'RESOLVE', value: nextPdf });\n })\n .catch((error) => {\n if (loadingTask.destroyed) {\n return;\n }\n pdfDispatch({ type: 'REJECT', error });\n });\n return () => {\n loadingTask.destroy();\n };\n }, [options, pdfDispatch, source]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (typeof pdf === 'undefined') {\n return;\n }\n if (pdf === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, [pdf]);\n useEffect(function setupLinkService() {\n linkService.current.setViewer(viewer.current);\n linkService.current.setExternalLinkRel(externalLinkRel);\n linkService.current.setExternalLinkTarget(externalLinkTarget);\n }, [externalLinkRel, externalLinkTarget]);\n const registerPage = useCallback((pageIndex, ref) => {\n pages.current[pageIndex] = ref;\n }, []);\n const unregisterPage = useCallback((pageIndex) => {\n delete pages.current[pageIndex];\n }, []);\n const childContext = useMemo(() => ({\n imageResourcesPath,\n linkService: linkService.current,\n onItemClick,\n pdf,\n registerPage,\n renderMode,\n rotate,\n unregisterPage,\n }), [imageResourcesPath, onItemClick, pdf, registerPage, renderMode, rotate, unregisterPage]);\n const eventProps = useMemo(() => makeEventProps(otherProps, () => pdf), \n // biome-ignore lint/correctness/useExhaustiveDependencies: FIXME\n [otherProps, pdf]);\n function renderChildren() {\n return _jsx(DocumentContext.Provider, { value: childContext, children: children });\n }\n function renderContent() {\n if (!file) {\n return _jsx(Message, { type: \"no-data\", children: typeof noData === 'function' ? noData() : noData });\n }\n if (pdf === undefined || pdf === null) {\n return (_jsx(Message, { type: \"loading\", children: typeof loading === 'function' ? loading() : loading }));\n }\n if (pdf === false) {\n return _jsx(Message, { type: \"error\", children: typeof error === 'function' ? error() : error });\n }\n return renderChildren();\n }\n return (_jsx(\"div\", Object.assign({ className: clsx('react-pdf__Document', className), \n // Assertion is needed for React 18 compatibility\n ref: inputRef, style: {\n ['--scale-factor']: '1',\n } }, eventProps, { children: renderContent() })));\n});\nexport default Document;\n","/**\n * A function that merges React refs into one.\n * Supports both functions and ref objects created using createRef() and useRef().\n *\n * Usage:\n * ```tsx\n *
\n * ```\n *\n * @param {(React.Ref | undefined)[]} inputRefs Array of refs\n * @returns {React.Ref | React.RefCallback} Merged refs\n */\nexport default function mergeRefs() {\n var inputRefs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n inputRefs[_i] = arguments[_i];\n }\n var filteredInputRefs = inputRefs.filter(Boolean);\n if (filteredInputRefs.length <= 1) {\n var firstRef = filteredInputRefs[0];\n return firstRef || null;\n }\n return function mergedRefs(ref) {\n filteredInputRefs.forEach(function (inputRef) {\n if (typeof inputRef === 'function') {\n inputRef(ref);\n }\n else if (inputRef) {\n inputRef.current = ref;\n }\n });\n };\n}\n","'use client';\nimport { createContext } from 'react';\nconst pageContext = createContext(null);\nexport default pageContext;\n","// From pdfjs-dist/lib/web/struct_tree_layer_builder.js\nexport const PDF_ROLE_TO_HTML_ROLE = {\n // Document level structure types\n Document: null, // There's a \"document\" role, but it doesn't make sense here.\n DocumentFragment: null,\n // Grouping level structure types\n Part: 'group',\n Sect: 'group', // XXX: There's a \"section\" role, but it's abstract.\n Div: 'group',\n Aside: 'note',\n NonStruct: 'none',\n // Block level structure types\n P: null,\n // H,\n H: 'heading',\n Title: null,\n FENote: 'note',\n // Sub-block level structure type\n Sub: 'group',\n // General inline level structure types\n Lbl: null,\n Span: null,\n Em: null,\n Strong: null,\n Link: 'link',\n Annot: 'note',\n Form: 'form',\n // Ruby and Warichu structure types\n Ruby: null,\n RB: null,\n RT: null,\n RP: null,\n Warichu: null,\n WT: null,\n WP: null,\n // List standard structure types\n L: 'list',\n LI: 'listitem',\n LBody: null,\n // Table standard structure types\n Table: 'table',\n TR: 'row',\n TH: 'columnheader',\n TD: 'cell',\n THead: 'columnheader',\n TBody: null,\n TFoot: null,\n // Standard structure type Caption\n Caption: null,\n // Standard structure type Figure\n Figure: 'figure',\n // Standard structure type Formula\n Formula: null,\n // standard structure type Artifact\n Artifact: null,\n};\nexport const HEADING_PATTERN = /^H(\\d+)$/;\n","import { HEADING_PATTERN, PDF_ROLE_TO_HTML_ROLE } from './constants.js';\nexport function isPdfRole(role) {\n return role in PDF_ROLE_TO_HTML_ROLE;\n}\nexport function isStructTreeNode(node) {\n return 'children' in node;\n}\nexport function isStructTreeNodeWithOnlyContentChild(node) {\n if (!isStructTreeNode(node)) {\n return false;\n }\n return node.children.length === 1 && 0 in node.children && 'id' in node.children[0];\n}\nexport function getRoleAttributes(node) {\n const attributes = {};\n if (isStructTreeNode(node)) {\n const { role } = node;\n const matches = role.match(HEADING_PATTERN);\n if (matches) {\n attributes.role = 'heading';\n attributes['aria-level'] = Number(matches[1]);\n }\n else if (isPdfRole(role)) {\n const htmlRole = PDF_ROLE_TO_HTML_ROLE[role];\n if (htmlRole) {\n attributes.role = htmlRole;\n }\n }\n }\n return attributes;\n}\nexport function getBaseAttributes(node) {\n const attributes = {};\n if (isStructTreeNode(node)) {\n if (node.alt !== undefined) {\n attributes['aria-label'] = node.alt;\n }\n if (node.lang !== undefined) {\n attributes.lang = node.lang;\n }\n if (isStructTreeNodeWithOnlyContentChild(node)) {\n const [child] = node.children;\n if (child) {\n const childAttributes = getBaseAttributes(child);\n return Object.assign(Object.assign({}, attributes), childAttributes);\n }\n }\n }\n else {\n if ('id' in node) {\n attributes['aria-owns'] = node.id;\n }\n }\n return attributes;\n}\nexport function getAttributes(node) {\n if (!node) {\n return null;\n }\n return Object.assign(Object.assign({}, getRoleAttributes(node)), getBaseAttributes(node));\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useMemo } from 'react';\nimport { getAttributes, isStructTreeNode, isStructTreeNodeWithOnlyContentChild, } from './shared/structTreeUtils.js';\nexport default function StructTreeItem({ className, node, }) {\n const attributes = useMemo(() => getAttributes(node), [node]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Looks like a Biome error\n const children = useMemo(() => {\n if (!isStructTreeNode(node)) {\n return null;\n }\n if (isStructTreeNodeWithOnlyContentChild(node)) {\n return null;\n }\n return node.children.map((child, index) => {\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: index is stable here\n _jsx(StructTreeItem, { node: child }, index));\n });\n }, [node]);\n return (_jsx(\"span\", Object.assign({ className: className }, attributes, { children: children })));\n}\n","import { useContext } from 'react';\nimport PageContext from '../../PageContext.js';\nexport default function usePageContext() {\n return useContext(PageContext);\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect } from 'react';\nimport makeCancellable from 'make-cancellable-promise';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport StructTreeItem from './StructTreeItem.js';\nimport usePageContext from './shared/hooks/usePageContext.js';\nimport useResolver from './shared/hooks/useResolver.js';\nimport { cancelRunningTask } from './shared/utils.js';\nexport default function StructTree() {\n const pageContext = usePageContext();\n invariant(pageContext, 'Unable to find Page context.');\n const { onGetStructTreeError: onGetStructTreeErrorProps, onGetStructTreeSuccess: onGetStructTreeSuccessProps, } = pageContext;\n const [structTreeState, structTreeDispatch] = useResolver();\n const { value: structTree, error: structTreeError } = structTreeState;\n const { customTextRenderer, page } = pageContext;\n function onLoadSuccess() {\n if (!structTree) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onGetStructTreeSuccessProps) {\n onGetStructTreeSuccessProps(structTree);\n }\n }\n function onLoadError() {\n if (!structTreeError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, structTreeError.toString());\n if (onGetStructTreeErrorProps) {\n onGetStructTreeErrorProps(structTreeError);\n }\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on page change\n useEffect(function resetStructTree() {\n structTreeDispatch({ type: 'RESET' });\n }, [structTreeDispatch, page]);\n useEffect(function loadStructTree() {\n if (customTextRenderer) {\n // TODO: Document why this is necessary\n return;\n }\n if (!page) {\n return;\n }\n const cancellable = makeCancellable(page.getStructTree());\n const runningTask = cancellable;\n cancellable.promise\n .then((nextStructTree) => {\n structTreeDispatch({ type: 'RESOLVE', value: nextStructTree });\n })\n .catch((error) => {\n structTreeDispatch({ type: 'REJECT', error });\n });\n return () => cancelRunningTask(runningTask);\n }, [customTextRenderer, page, structTreeDispatch]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (structTree === undefined) {\n return;\n }\n if (structTree === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, [structTree]);\n if (!structTree) {\n return null;\n }\n return _jsx(StructTreeItem, { className: \"react-pdf__Page__structTree structTree\", node: structTree });\n}\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport mergeRefs from 'merge-refs';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport * as pdfjs from 'pdfjs-dist';\nimport StructTree from '../StructTree.js';\nimport usePageContext from '../shared/hooks/usePageContext.js';\nimport { cancelRunningTask, getDevicePixelRatio, isCancelException, makePageCallback, } from '../shared/utils.js';\nconst ANNOTATION_MODE = pdfjs.AnnotationMode;\nexport default function Canvas(props) {\n const pageContext = usePageContext();\n invariant(pageContext, 'Unable to find Page context.');\n const mergedProps = Object.assign(Object.assign({}, pageContext), props);\n const { _className, canvasBackground, devicePixelRatio = getDevicePixelRatio(), onRenderError: onRenderErrorProps, onRenderSuccess: onRenderSuccessProps, page, renderForms, renderTextLayer, rotate, scale, } = mergedProps;\n const { canvasRef } = props;\n invariant(page, 'Attempted to render page canvas, but no page was specified.');\n const canvasElement = useRef(null);\n /**\n * Called when a page is rendered successfully.\n */\n function onRenderSuccess() {\n if (!page) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onRenderSuccessProps) {\n onRenderSuccessProps(makePageCallback(page, scale));\n }\n }\n /**\n * Called when a page fails to render.\n */\n function onRenderError(error) {\n if (isCancelException(error)) {\n return;\n }\n warning(false, error.toString());\n if (onRenderErrorProps) {\n onRenderErrorProps(error);\n }\n }\n const renderViewport = useMemo(() => page.getViewport({ scale: scale * devicePixelRatio, rotation: rotate }), [devicePixelRatio, page, rotate, scale]);\n const viewport = useMemo(() => page.getViewport({ scale, rotation: rotate }), [page, rotate, scale]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(function drawPageOnCanvas() {\n if (!page) {\n return;\n }\n // Ensures the canvas will be re-rendered from scratch. Otherwise all form data will stay.\n page.cleanup();\n const { current: canvas } = canvasElement;\n if (!canvas) {\n return;\n }\n canvas.width = renderViewport.width;\n canvas.height = renderViewport.height;\n canvas.style.width = `${Math.floor(viewport.width)}px`;\n canvas.style.height = `${Math.floor(viewport.height)}px`;\n canvas.style.visibility = 'hidden';\n const renderContext = {\n annotationMode: renderForms ? ANNOTATION_MODE.ENABLE_FORMS : ANNOTATION_MODE.ENABLE,\n canvasContext: canvas.getContext('2d', { alpha: false }),\n viewport: renderViewport,\n };\n if (canvasBackground) {\n renderContext.background = canvasBackground;\n }\n const cancellable = page.render(renderContext);\n const runningTask = cancellable;\n cancellable.promise\n .then(() => {\n canvas.style.visibility = '';\n onRenderSuccess();\n })\n .catch(onRenderError);\n return () => cancelRunningTask(runningTask);\n }, [canvasBackground, page, renderForms, renderViewport, viewport]);\n const cleanup = useCallback(() => {\n const { current: canvas } = canvasElement;\n /**\n * Zeroing the width and height cause most browsers to release graphics\n * resources immediately, which can greatly reduce memory consumption.\n */\n if (canvas) {\n canvas.width = 0;\n canvas.height = 0;\n }\n }, []);\n useEffect(() => cleanup, [cleanup]);\n return (_jsx(\"canvas\", { className: `${_className}__canvas`, dir: \"ltr\", ref: mergeRefs(canvasRef, canvasElement), style: {\n display: 'block',\n userSelect: 'none',\n }, children: renderTextLayer ? _jsx(StructTree, {}) : null }));\n}\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';\nimport makeCancellable from 'make-cancellable-promise';\nimport clsx from 'clsx';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport * as pdfjs from 'pdfjs-dist';\nimport usePageContext from '../shared/hooks/usePageContext.js';\nimport useResolver from '../shared/hooks/useResolver.js';\nimport { cancelRunningTask } from '../shared/utils.js';\nfunction isTextItem(item) {\n return 'str' in item;\n}\nexport default function TextLayer() {\n const pageContext = usePageContext();\n invariant(pageContext, 'Unable to find Page context.');\n const { customTextRenderer, onGetTextError, onGetTextSuccess, onRenderTextLayerError, onRenderTextLayerSuccess, page, pageIndex, pageNumber, rotate, scale, } = pageContext;\n invariant(page, 'Attempted to load page text content, but no page was specified.');\n const [textContentState, textContentDispatch] = useResolver();\n const { value: textContent, error: textContentError } = textContentState;\n const layerElement = useRef(null);\n const endElement = useRef(undefined);\n warning(Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--react-pdf-text-layer'), 10) === 1, 'TextLayer styles not found. Read more: https://github.com/wojtekmaj/react-pdf#support-for-text-layer');\n /**\n * Called when a page text content is read successfully\n */\n function onLoadSuccess() {\n if (!textContent) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onGetTextSuccess) {\n onGetTextSuccess(textContent);\n }\n }\n /**\n * Called when a page text content failed to read successfully\n */\n function onLoadError() {\n if (!textContentError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, textContentError.toString());\n if (onGetTextError) {\n onGetTextError(textContentError);\n }\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on page change\n useEffect(function resetTextContent() {\n textContentDispatch({ type: 'RESET' });\n }, [page, textContentDispatch]);\n useEffect(function loadTextContent() {\n if (!page) {\n return;\n }\n const cancellable = makeCancellable(page.getTextContent());\n const runningTask = cancellable;\n cancellable.promise\n .then((nextTextContent) => {\n textContentDispatch({ type: 'RESOLVE', value: nextTextContent });\n })\n .catch((error) => {\n textContentDispatch({ type: 'REJECT', error });\n });\n return () => cancelRunningTask(runningTask);\n }, [page, textContentDispatch]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (textContent === undefined) {\n return;\n }\n if (textContent === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, [textContent]);\n /**\n * Called when a text layer is rendered successfully\n */\n const onRenderSuccess = useCallback(() => {\n if (onRenderTextLayerSuccess) {\n onRenderTextLayerSuccess();\n }\n }, [onRenderTextLayerSuccess]);\n /**\n * Called when a text layer failed to render successfully\n */\n const onRenderError = useCallback((error) => {\n warning(false, error.toString());\n if (onRenderTextLayerError) {\n onRenderTextLayerError(error);\n }\n }, [onRenderTextLayerError]);\n function onMouseDown() {\n const end = endElement.current;\n if (!end) {\n return;\n }\n end.classList.add('active');\n }\n function onMouseUp() {\n const end = endElement.current;\n if (!end) {\n return;\n }\n end.classList.remove('active');\n }\n const viewport = useMemo(() => page.getViewport({ scale, rotation: rotate }), [page, rotate, scale]);\n useLayoutEffect(function renderTextLayer() {\n if (!page || !textContent) {\n return;\n }\n const { current: layer } = layerElement;\n if (!layer) {\n return;\n }\n layer.innerHTML = '';\n const textContentSource = page.streamTextContent({ includeMarkedContent: true });\n const parameters = {\n container: layer,\n textContentSource,\n viewport,\n };\n const cancellable = new pdfjs.TextLayer(parameters);\n const runningTask = cancellable;\n cancellable\n .render()\n .then(() => {\n const end = document.createElement('div');\n end.className = 'endOfContent';\n layer.append(end);\n endElement.current = end;\n const layerChildren = layer.querySelectorAll('[role=\"presentation\"]');\n if (customTextRenderer) {\n let index = 0;\n textContent.items.forEach((item, itemIndex) => {\n if (!isTextItem(item)) {\n return;\n }\n const child = layerChildren[index];\n if (!child) {\n return;\n }\n const content = customTextRenderer(Object.assign({ pageIndex,\n pageNumber,\n itemIndex }, item));\n child.innerHTML = content;\n index += item.str && item.hasEOL ? 2 : 1;\n });\n }\n // Intentional immediate callback\n onRenderSuccess();\n })\n .catch(onRenderError);\n return () => cancelRunningTask(runningTask);\n }, [\n customTextRenderer,\n onRenderError,\n onRenderSuccess,\n page,\n pageIndex,\n pageNumber,\n textContent,\n viewport,\n ]);\n return (_jsx(\"div\", { className: clsx('react-pdf__Page__textContent', 'textLayer'), onMouseUp: onMouseUp, onMouseDown: onMouseDown, ref: layerElement }));\n}\n","import { useContext } from 'react';\nimport DocumentContext from '../../DocumentContext.js';\nexport default function useDocumentContext() {\n return useContext(DocumentContext);\n}\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect, useMemo, useRef } from 'react';\nimport makeCancellable from 'make-cancellable-promise';\nimport clsx from 'clsx';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport * as pdfjs from 'pdfjs-dist';\nimport useDocumentContext from '../shared/hooks/useDocumentContext.js';\nimport usePageContext from '../shared/hooks/usePageContext.js';\nimport useResolver from '../shared/hooks/useResolver.js';\nimport { cancelRunningTask } from '../shared/utils.js';\nexport default function AnnotationLayer() {\n const documentContext = useDocumentContext();\n const pageContext = usePageContext();\n invariant(pageContext, 'Unable to find Page context.');\n const mergedProps = Object.assign(Object.assign({}, documentContext), pageContext);\n const { imageResourcesPath, linkService, onGetAnnotationsError: onGetAnnotationsErrorProps, onGetAnnotationsSuccess: onGetAnnotationsSuccessProps, onRenderAnnotationLayerError: onRenderAnnotationLayerErrorProps, onRenderAnnotationLayerSuccess: onRenderAnnotationLayerSuccessProps, page, pdf, renderForms, rotate, scale = 1, } = mergedProps;\n invariant(pdf, 'Attempted to load page annotations, but no document was specified. Wrap in a or pass explicit `pdf` prop.');\n invariant(page, 'Attempted to load page annotations, but no page was specified.');\n invariant(linkService, 'Attempted to load page annotations, but no linkService was specified.');\n const [annotationsState, annotationsDispatch] = useResolver();\n const { value: annotations, error: annotationsError } = annotationsState;\n const layerElement = useRef(null);\n warning(Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--react-pdf-annotation-layer'), 10) === 1, 'AnnotationLayer styles not found. Read more: https://github.com/wojtekmaj/react-pdf#support-for-annotations');\n function onLoadSuccess() {\n if (!annotations) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onGetAnnotationsSuccessProps) {\n onGetAnnotationsSuccessProps(annotations);\n }\n }\n function onLoadError() {\n if (!annotationsError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, annotationsError.toString());\n if (onGetAnnotationsErrorProps) {\n onGetAnnotationsErrorProps(annotationsError);\n }\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on page change\n useEffect(function resetAnnotations() {\n annotationsDispatch({ type: 'RESET' });\n }, [annotationsDispatch, page]);\n useEffect(function loadAnnotations() {\n if (!page) {\n return;\n }\n const cancellable = makeCancellable(page.getAnnotations());\n const runningTask = cancellable;\n cancellable.promise\n .then((nextAnnotations) => {\n annotationsDispatch({ type: 'RESOLVE', value: nextAnnotations });\n })\n .catch((error) => {\n annotationsDispatch({ type: 'REJECT', error });\n });\n return () => {\n cancelRunningTask(runningTask);\n };\n }, [annotationsDispatch, page]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (annotations === undefined) {\n return;\n }\n if (annotations === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, [annotations]);\n function onRenderSuccess() {\n if (onRenderAnnotationLayerSuccessProps) {\n onRenderAnnotationLayerSuccessProps();\n }\n }\n function onRenderError(error) {\n warning(false, `${error}`);\n if (onRenderAnnotationLayerErrorProps) {\n onRenderAnnotationLayerErrorProps(error);\n }\n }\n const viewport = useMemo(() => page.getViewport({ scale, rotation: rotate }), [page, rotate, scale]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(function renderAnnotationLayer() {\n if (!pdf || !page || !linkService || !annotations) {\n return;\n }\n const { current: layer } = layerElement;\n if (!layer) {\n return;\n }\n const clonedViewport = viewport.clone({ dontFlip: true });\n const annotationLayerParameters = {\n accessibilityManager: null, // TODO: Implement this\n annotationCanvasMap: null, // TODO: Implement this\n annotationEditorUIManager: null, // TODO: Implement this\n div: layer,\n l10n: null, // TODO: Implement this\n page,\n viewport: clonedViewport,\n };\n const renderParameters = {\n annotations,\n annotationStorage: pdf.annotationStorage,\n div: layer,\n imageResourcesPath,\n linkService,\n page,\n renderForms,\n viewport: clonedViewport,\n };\n layer.innerHTML = '';\n try {\n new pdfjs.AnnotationLayer(annotationLayerParameters).render(renderParameters);\n // Intentional immediate callback\n onRenderSuccess();\n }\n catch (error) {\n onRenderError(error);\n }\n return () => {\n // TODO: Cancel running task?\n };\n }, [annotations, imageResourcesPath, linkService, page, pdf, renderForms, viewport]);\n return (_jsx(\"div\", { className: clsx('react-pdf__Page__annotations', 'annotationLayer'), ref: layerElement }));\n}\n","'use client';\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useEffect, useMemo, useRef } from 'react';\nimport makeCancellable from 'make-cancellable-promise';\nimport makeEventProps from 'make-event-props';\nimport clsx from 'clsx';\nimport mergeRefs from 'merge-refs';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport PageContext from './PageContext.js';\nimport Message from './Message.js';\nimport Canvas from './Page/Canvas.js';\nimport TextLayer from './Page/TextLayer.js';\nimport AnnotationLayer from './Page/AnnotationLayer.js';\nimport { cancelRunningTask, isProvided, makePageCallback } from './shared/utils.js';\nimport useDocumentContext from './shared/hooks/useDocumentContext.js';\nimport useResolver from './shared/hooks/useResolver.js';\nconst defaultScale = 1;\n/**\n * Displays a page.\n *\n * Should be placed inside ``. Alternatively, it can have `pdf` prop passed, which can be obtained from ``'s `onLoadSuccess` callback function, however some advanced functions like linking between pages inside a document may not be working correctly.\n */\nexport default function Page(props) {\n const documentContext = useDocumentContext();\n const mergedProps = Object.assign(Object.assign({}, documentContext), props);\n const { _className = 'react-pdf__Page', _enableRegisterUnregisterPage = true, canvasBackground, canvasRef, children, className, customRenderer: CustomRenderer, customTextRenderer, devicePixelRatio, error = 'Failed to load the page.', height, inputRef, loading = 'Loading page…', noData = 'No page specified.', onGetAnnotationsError: onGetAnnotationsErrorProps, onGetAnnotationsSuccess: onGetAnnotationsSuccessProps, onGetStructTreeError: onGetStructTreeErrorProps, onGetStructTreeSuccess: onGetStructTreeSuccessProps, onGetTextError: onGetTextErrorProps, onGetTextSuccess: onGetTextSuccessProps, onLoadError: onLoadErrorProps, onLoadSuccess: onLoadSuccessProps, onRenderAnnotationLayerError: onRenderAnnotationLayerErrorProps, onRenderAnnotationLayerSuccess: onRenderAnnotationLayerSuccessProps, onRenderError: onRenderErrorProps, onRenderSuccess: onRenderSuccessProps, onRenderTextLayerError: onRenderTextLayerErrorProps, onRenderTextLayerSuccess: onRenderTextLayerSuccessProps, pageIndex: pageIndexProps, pageNumber: pageNumberProps, pdf, registerPage, renderAnnotationLayer: renderAnnotationLayerProps = true, renderForms = false, renderMode = 'canvas', renderTextLayer: renderTextLayerProps = true, rotate: rotateProps, scale: scaleProps = defaultScale, unregisterPage, width } = mergedProps, otherProps = __rest(mergedProps, [\"_className\", \"_enableRegisterUnregisterPage\", \"canvasBackground\", \"canvasRef\", \"children\", \"className\", \"customRenderer\", \"customTextRenderer\", \"devicePixelRatio\", \"error\", \"height\", \"inputRef\", \"loading\", \"noData\", \"onGetAnnotationsError\", \"onGetAnnotationsSuccess\", \"onGetStructTreeError\", \"onGetStructTreeSuccess\", \"onGetTextError\", \"onGetTextSuccess\", \"onLoadError\", \"onLoadSuccess\", \"onRenderAnnotationLayerError\", \"onRenderAnnotationLayerSuccess\", \"onRenderError\", \"onRenderSuccess\", \"onRenderTextLayerError\", \"onRenderTextLayerSuccess\", \"pageIndex\", \"pageNumber\", \"pdf\", \"registerPage\", \"renderAnnotationLayer\", \"renderForms\", \"renderMode\", \"renderTextLayer\", \"rotate\", \"scale\", \"unregisterPage\", \"width\"]);\n const [pageState, pageDispatch] = useResolver();\n const { value: page, error: pageError } = pageState;\n const pageElement = useRef(null);\n invariant(pdf, 'Attempted to load a page, but no document was specified. Wrap in a or pass explicit `pdf` prop.');\n const pageIndex = isProvided(pageNumberProps) ? pageNumberProps - 1 : pageIndexProps !== null && pageIndexProps !== void 0 ? pageIndexProps : null;\n const pageNumber = pageNumberProps !== null && pageNumberProps !== void 0 ? pageNumberProps : (isProvided(pageIndexProps) ? pageIndexProps + 1 : null);\n const rotate = rotateProps !== null && rotateProps !== void 0 ? rotateProps : (page ? page.rotate : null);\n const scale = useMemo(() => {\n if (!page) {\n return null;\n }\n // Be default, we'll render page at 100% * scale width.\n let pageScale = 1;\n // Passing scale explicitly null would cause the page not to render\n const scaleWithDefault = scaleProps !== null && scaleProps !== void 0 ? scaleProps : defaultScale;\n // If width/height is defined, calculate the scale of the page so it could be of desired width.\n if (width || height) {\n const viewport = page.getViewport({ scale: 1, rotation: rotate });\n if (width) {\n pageScale = width / viewport.width;\n }\n else if (height) {\n pageScale = height / viewport.height;\n }\n }\n return scaleWithDefault * pageScale;\n }, [height, page, rotate, scaleProps, width]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on pdf change\n useEffect(function hook() {\n return () => {\n if (!isProvided(pageIndex)) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (_enableRegisterUnregisterPage && unregisterPage) {\n unregisterPage(pageIndex);\n }\n };\n }, [_enableRegisterUnregisterPage, pdf, pageIndex, unregisterPage]);\n /**\n * Called when a page is loaded successfully\n */\n function onLoadSuccess() {\n if (onLoadSuccessProps) {\n if (!page || !scale) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n onLoadSuccessProps(makePageCallback(page, scale));\n }\n if (_enableRegisterUnregisterPage && registerPage) {\n if (!isProvided(pageIndex) || !pageElement.current) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n registerPage(pageIndex, pageElement.current);\n }\n }\n /**\n * Called when a page failed to load\n */\n function onLoadError() {\n if (!pageError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, pageError.toString());\n if (onLoadErrorProps) {\n onLoadErrorProps(pageError);\n }\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on pdf and pageIndex change\n useEffect(function resetPage() {\n pageDispatch({ type: 'RESET' });\n }, [pageDispatch, pdf, pageIndex]);\n useEffect(function loadPage() {\n if (!pdf || !pageNumber) {\n return;\n }\n const cancellable = makeCancellable(pdf.getPage(pageNumber));\n const runningTask = cancellable;\n cancellable.promise\n .then((nextPage) => {\n pageDispatch({ type: 'RESOLVE', value: nextPage });\n })\n .catch((error) => {\n pageDispatch({ type: 'REJECT', error });\n });\n return () => cancelRunningTask(runningTask);\n }, [pageDispatch, pdf, pageNumber]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (page === undefined) {\n return;\n }\n if (page === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, [page, scale]);\n const childContext = useMemo(() => \n // Technically there cannot be page without pageIndex, pageNumber, rotate and scale, but TypeScript doesn't know that\n page && isProvided(pageIndex) && pageNumber && isProvided(rotate) && isProvided(scale)\n ? {\n _className,\n canvasBackground,\n customTextRenderer,\n devicePixelRatio,\n onGetAnnotationsError: onGetAnnotationsErrorProps,\n onGetAnnotationsSuccess: onGetAnnotationsSuccessProps,\n onGetStructTreeError: onGetStructTreeErrorProps,\n onGetStructTreeSuccess: onGetStructTreeSuccessProps,\n onGetTextError: onGetTextErrorProps,\n onGetTextSuccess: onGetTextSuccessProps,\n onRenderAnnotationLayerError: onRenderAnnotationLayerErrorProps,\n onRenderAnnotationLayerSuccess: onRenderAnnotationLayerSuccessProps,\n onRenderError: onRenderErrorProps,\n onRenderSuccess: onRenderSuccessProps,\n onRenderTextLayerError: onRenderTextLayerErrorProps,\n onRenderTextLayerSuccess: onRenderTextLayerSuccessProps,\n page,\n pageIndex,\n pageNumber,\n renderForms,\n renderTextLayer: renderTextLayerProps,\n rotate,\n scale,\n }\n : null, [\n _className,\n canvasBackground,\n customTextRenderer,\n devicePixelRatio,\n onGetAnnotationsErrorProps,\n onGetAnnotationsSuccessProps,\n onGetStructTreeErrorProps,\n onGetStructTreeSuccessProps,\n onGetTextErrorProps,\n onGetTextSuccessProps,\n onRenderAnnotationLayerErrorProps,\n onRenderAnnotationLayerSuccessProps,\n onRenderErrorProps,\n onRenderSuccessProps,\n onRenderTextLayerErrorProps,\n onRenderTextLayerSuccessProps,\n page,\n pageIndex,\n pageNumber,\n renderForms,\n renderTextLayerProps,\n rotate,\n scale,\n ]);\n const eventProps = useMemo(() => makeEventProps(otherProps, () => page ? (scale ? makePageCallback(page, scale) : undefined) : page), \n // biome-ignore lint/correctness/useExhaustiveDependencies: FIXME\n [otherProps, page, scale]);\n const pageKey = `${pageIndex}@${scale}/${rotate}`;\n function renderMainLayer() {\n switch (renderMode) {\n case 'custom': {\n invariant(CustomRenderer, `renderMode was set to \"custom\", but no customRenderer was passed.`);\n return _jsx(CustomRenderer, {}, `${pageKey}_custom`);\n }\n case 'none':\n return null;\n case 'canvas':\n default:\n return _jsx(Canvas, { canvasRef: canvasRef }, `${pageKey}_canvas`);\n }\n }\n function renderTextLayer() {\n if (!renderTextLayerProps) {\n return null;\n }\n return _jsx(TextLayer, {}, `${pageKey}_text`);\n }\n function renderAnnotationLayer() {\n if (!renderAnnotationLayerProps) {\n return null;\n }\n /**\n * As of now, PDF.js 2.0.943 returns warnings on unimplemented annotations in SVG mode.\n * Therefore, as a fallback, we render \"traditional\" AnnotationLayer component.\n */\n return _jsx(AnnotationLayer, {}, `${pageKey}_annotations`);\n }\n function renderChildren() {\n return (_jsxs(PageContext.Provider, { value: childContext, children: [renderMainLayer(), renderTextLayer(), renderAnnotationLayer(), children] }));\n }\n function renderContent() {\n if (!pageNumber) {\n return _jsx(Message, { type: \"no-data\", children: typeof noData === 'function' ? noData() : noData });\n }\n if (pdf === null || page === undefined || page === null) {\n return (_jsx(Message, { type: \"loading\", children: typeof loading === 'function' ? loading() : loading }));\n }\n if (pdf === false || page === false) {\n return _jsx(Message, { type: \"error\", children: typeof error === 'function' ? error() : error });\n }\n return renderChildren();\n }\n return (_jsx(\"div\", Object.assign({ className: clsx(_className, className), \"data-page-number\": pageNumber, \n // Assertion is needed for React 18 compatibility\n ref: mergeRefs(inputRef, pageElement), style: {\n ['--scale-factor']: `${scale}`,\n backgroundColor: canvasBackground || 'white',\n position: 'relative',\n minWidth: 'min-content',\n minHeight: 'min-content',\n } }, eventProps, { children: renderContent() })));\n}\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgRightArrow(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 15.556,\n height: 15.556\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"current\",\n d: \"M8.839 14.495a1.5 1.5 0 01-2.121 0 1.5 1.5 0 010-2.12l4.596-4.597-4.596-4.596a1.5 1.5 0 010-2.122 1.5 1.5 0 012.12 0l5.658 5.657a1.5 1.5 0 010 2.122z\"\n })));\n}\nexport default SvgRightArrow;","// @flow\nimport React, { useEffect, useState, useRef } from \"react\";\nimport styled from \"styled-components\";\nimport { Document, Page, pdfjs } from \"react-pdf\";\n\nimport { Loader } from \"../../containers/TwoFactorAuth/SharedComponents\";\n// import \"./annotation.css\";\nimport 'react-pdf/dist/Page/TextLayer.css';\nimport 'react-pdf/dist/Page/AnnotationLayer.css';\nimport RightArrow from \"../../../root/img/modal/right-arrow.svg\";\n\nconst options = {\n cMapUrl: \"cmaps/\",\n cMapPacked: true\n};\n\ntype Props = {\n file: string,\n onError: () => void\n};\n\npdfjs.GlobalWorkerOptions.workerSrc = new URL(\n 'pdfjs-dist/legacy/build/pdf.worker.min.mjs',\n import.meta.url,\n).toString();\n\nconst DocPreview = ({ file, wrapperDivSize = 0, calculateHeight = false, onError, availableHeight = 0 }: Props) => {\n const [numPages, setNumPages] = useState(null);\n const [pageNumber, setPageNumber] = useState(1);\n const nav = useRef();\n\n const onDocumentLoadSuccess = ({ numPages }) => {\n setNumPages(numPages);\n };\n\n const changePage = offset => {\n setPageNumber(prevPageNumber => prevPageNumber + offset);\n };\n\n const previousPage = () => {\n changePage(-1);\n };\n\n const nextPage = () => {\n changePage(1);\n };\n\n const renderLoading = () => {\n return (\n \n \n \n );\n };\n\n return (\n \n \n \n \n \n \n {(numPages && numPages > 1) ? (\n \n \n \n \n \n {pageNumber || (numPages ? 1 : \"--\")} / {numPages || \"--\"}\n \n = numPages}\n onClick={nextPage}\n className=\"right-button\"\n >\n \n \n \n ) : (\n \n \n {pageNumber || (numPages ? 1 : \"--\")} / {numPages || \"--\"}\n \n \n )}\n \n );\n};\n\nexport default DocPreview;\n\nconst Container = styled.div`\n display: flex;\n justify-content: space-between;\n flex-direction: column;\n align-items: center;\n /* background-color: rgb(82, 86, 89); */\n background-color: #EBECED;\n user-select: none;\n\n input,\n button {\n font: inherit;\n }\n\n .page-style {\n background-color: #fff;\n max-width: calc(~\"100% - 2em\");\n box-shadow: 0 0 8px rgba(0, 0, 0, 0.5);\n margin: 1em;\n canvas {\n max-width: 100%;\n height: auto !important;\n }\n }\n\n &__container {\n &__load {\n margin-top: 1em;\n color: white;\n }\n\n .react-pdf {\n &__Document {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n &__Page {\n canvas {\n max-width: 100%;\n height: auto !important;\n }\n }\n\n &__message {\n padding: 20px;\n color: white;\n }\n }\n }\n`;\n\nconst ExpandableWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-grow: 1;\n flex-shrink: 0;\n height: 100%;\n`;\n\n\nconst NavigationLabel = styled.p`\n text-align: center;\n color: #444;\n font-size: 14px !important;\n text-wrap: nowrap;\n`;\n\nconst Navigation = styled.div`\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 8px;\n padding: 20px;\n box-sizing: border-box;\n`;\n\nconst Button = styled.button`\n border-radius: 24px;\n display: inline-block;\n width: 50%;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n font-size: 14px !important;\n font-weight: bold !important;\n color: #444;\n background-color: #fff;\n border: 1px solid #E4E4E4;\n max-width: 240px;\n\n span {\n flex-grow: 1;\n }\n\n &:disabled {\n background-color: #f2f2f3;\n color: #ADADAD;\n\n svg {\n fill: #ADADAD;\n }\n }\n\n &.left-button {\n svg {\n transform: rotate(180deg);\n }\n }\n`;\n\nconst LoaderWrapper = styled.div`\n position: fixed;\n width: 100%;\n height: 100%;\n background-color: #EBECED;\n top: 0;\n left: 0;\n z-index: 1001;\n`;","// @flow\n\nimport React, { useState, useEffect, useRef } from \"react\";\nimport styled from \"styled-components\";\n\nimport Modal, { CloseModalIcon } from \"../Modal\";\nimport * as Style from \"./styledComponents\";\n\nimport { __ } from \"../../lib/translate\";\nimport apiMethod from \"../../api/apiMethod\";\nimport { prepUrl } from \"../../api/utils\";\n\nimport PreviewDocModal from \"./PreviewDocModal\";\nimport DocPreview from \"../DocumentViewer/DocPreview\";\nimport PreviewDocErrorModal from \"./PreviewDocErrorModal\";\n\ntype Props = {\n data: object,\n code: String,\n method: string,\n params: object,\n candownload: boolean,\n offsetX: string,\n offsetY: string,\n downloadmethod: string,\n downloadparams: string,\n prevplcCss: object\n};\n\nconst PreviewDocumentWrapper = ({\n data,\n code,\n method,\n params,\n candownload,\n offsetX,\n offsetY,\n downloadmethod,\n downloadparams,\n prevplcCss\n}: Props) => {\n const [displayPreviewDocModal, setDisplayPreviewDocModal] = useState(false);\n const [displayDocPreview, setDisplayDocPreview] = useState(false);\n const [displayPreviewDocErrorModal, setDisplayPreviewDocErrorModal] = useState(false);\n const [passwordProtected, setPasswordProtected] = useState(false);\n const [iframeSrc, setIframeSrc] = useState(\"\");\n const [isOpen, setIsOpen] = useState(true);\n const [wrapperDivSize, setWrapperDivSize] = useState(0);\n // const [availableHeight, setAvailableHeight] = useState(0);\n const wrapperEl = useRef();\n const header = useRef();\n\n // useEffect(() => {\n // const innerHeight = window.innerHeight;\n // const headerHeight = header.current?.offsetHeight || 0;\n // console.log(\"!!!!!!!!!!!!!!!!! available height\", innerHeight - headerHeight)\n // setAvailableHeight(innerHeight - headerHeight);\n // }, []);\n\n useEffect(() => {\n apiMethod(\n method,\n params,\n ret => {\n let iframeSrcU = prepUrl(ret) + \"?_=\" + new Date().getTime();\n setIframeSrc(iframeSrcU);\n console.log(\"iframe\", iframeSrcU, iframeSrc);\n\n $.ajax({\n url: iframeSrcU,\n cache: false,\n method: \"HEAD\",\n complete: () => {}\n })\n .done(() => {\n console.log(\"iframe done\", iframeSrcU, iframeSrc);\n if (candownload) {\n setDisplayPreviewDocModal(true);\n } else {\n //render DocPreview\n setDisplayDocPreview(true);\n }\n })\n .fail(xhr => {\n console.log(\"iframe fail\", iframeSrcU, iframeSrc);\n if (xhr.status === 403) {\n setPasswordProtected(true);\n }\n setDisplayPreviewDocErrorModal(true);\n });\n },\n {\n errorCallback: () => {\n setDisplayPreviewDocErrorModal(true);\n }\n }\n );\n }, [method, params]); //[method, params]\n\n useEffect(() => {\n if (displayDocPreview && wrapperEl.current) {\n setWrapperDivSize(wrapperEl.current.offsetWidth);\n }\n }, [displayDocPreview])\n\n const handleClose = () => {\n setIsOpen(false);\n };\n\n const onErrorPreview = () => {\n setDisplayPreviewDocModal(false);\n displayDocPreview(false);\n setDisplayPreviewDocErrorModal(true);\n };\n\n if (displayPreviewDocModal) {\n return (\n \n );\n } else if (displayDocPreview) {\n return (\n \n \n \n \n \n
{__(\"Preview Document\", \"Preview Document\")}
\n \n {data.name && data.name.split(\".\").length && data.name.split(\".\")[0] ? {data.name.split(\".\")[0]} : null}\n {data.name && data.name.split(\".\").length && data.name.split(\".\")[1] ? (\n <>\n .\n {data.name.split(\".\")[1]}\n \n ) : null}\n \n
\n \n \n \n
\n
\n \n );\n } else if (displayPreviewDocErrorModal) {\n return (\n \n );\n } else {\n return null;\n }\n};\n\nexport default PreviewDocumentWrapper;\n\nconst ContainerW = styled(Style.Container)`\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n padding: 20px 0 0;\n display: flex;\n flex-direction: column;\n`;\n\nconst DocTitle = styled.div`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n margin: 0 auto;\n padding: 30px 20px 20px;\n box-sizing: border-box;\n text-wrap: wrap;\n width: 100%;\n`;\n\nconst ModalContainer = styled.div`\n position: relative;\n display: inline-block;\n width: 100%;\n height: 100%;\n background: #fff;\n border-radius: 4px;\n display: inline-block;\n overflow: hidden;\n transform-origin: ${props => props.mouseOffset};\n`;\n\nconst DocPreviewWrapper = styled.div`\n /* margin-top: 20px; */\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n`;\n\nconst ResponsiveFileName = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n color: #17bed0;\n`;\n\nconst FileName = styled.div`\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n text-align: right;\n`;\n\nconst FileExtension = styled.div``;\n","import React from \"react\";\nimport { Provider } from \"react-redux\";\nimport store from \"../lib/state/store\";\nimport DocPreview from \"../components/DocumentViewer/DocPreview\";\nimport PreviewDocumentWrapper from \"../components/Modals/PreviewDocumentWrapper.js\";\nimport componentMount from \"../lib/componentMount\";\n\nself.prc = self.prc || {};\nself.prc.DocPreview = componentMount(props => );\nself.prc.PreviewDocumentWrapper = componentMount(props => );\n\n","module.exports = jQuery;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/dist/\";","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t7: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkpcloud_js\"] = self[\"webpackChunkpcloud_js\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [0], () => (__webpack_require__(23503)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","warning","module","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","globalThis","pdfjsLib","d","AbortException","AnnotationEditorLayer","AnnotationEditorParamsType","AnnotationEditorType","AnnotationEditorUIManager","AnnotationLayer","AnnotationMode","CMapCompressionType","ColorPicker","DOMSVGFactory","DrawLayer","FeatureTest","GlobalWorkerOptions","ImageKind","InvalidPDFException","MissingPDFException","OPS","Outliner","PDFDataRangeTransport","PDFDateString","PDFWorker","PasswordResponses","PermissionFlag","PixelsPerInch","RenderingCancelledException","TextLayer","UnexpectedResponseException","Util","VerbosityLevel","XfaLayer","build","createValidAbsoluteUrl","fetchData","getDocument","getFilenameFromUrl","getPdfFilenameFromUrl","getXfaPageViewport","isDataScheme","isPdfFile","noContextMenu","normalizeUnicode","renderTextLayer","setLayerDimensions","shadow","updateTextLayer","version","isNodeJS","process","versions","nw","electron","type","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","LINE_FACTOR","RenderingIntentFlag","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","NONE","FREETEXT","HIGHLIGHT","STAMP","INK","RESIZE","CREATE","FREETEXT_SIZE","FREETEXT_COLOR","FREETEXT_OPACITY","INK_COLOR","INK_THICKNESS","INK_OPACITY","HIGHLIGHT_COLOR","HIGHLIGHT_DEFAULT_COLOR","HIGHLIGHT_THICKNESS","HIGHLIGHT_FREE","HIGHLIGHT_SHOW_ALL","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","util_ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","AnnotationBorderStyleType","ERRORS","WARNINGS","INFOS","BINARY","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotation","endAnnotation","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","setVerbosityLevel","level","Number","isInteger","getVerbosityLevel","info","msg","console","log","warn","unreachable","Error","assert","cond","url","baseUrl","options","addDefaultProtocol","startsWith","dots","match","length","tryConvertEncoding","decodeURIComponent","escape","absoluteUrl","URL","protocol","_isValidProtocol","value","nonSerializable","configurable","writable","BaseException","message","name","this","constructor","PasswordException","code","super","UnknownErrorException","details","status","FormatError","bytesToString","bytes","undefined","MAX_ARGUMENT_COUNT","String","fromCharCode","apply","strBuf","i","chunkEnd","Math","min","chunk","subarray","push","join","stringToBytes","str","Uint8Array","charCodeAt","objectFromMap","map","create","util_FeatureTest","isLittleEndian","buffer8","Uint32Array","buffer","isEvalSupported","Function","isOffscreenCanvasSupported","OffscreenCanvas","platform","navigator","isMac","includes","isCSSRoundSupported","CSS","supports","hexNumbers","Array","from","keys","n","toString","padStart","makeHexColor","r","g","b","scaleMinMax","minMax","temp","m1","m2","applyTransform","p","m","applyInverseTransform","getAxialAlignedBoundingBox","p1","p2","slice","p3","p4","max","inverseTransform","singularValueDecompose2dScale","transpose","a","c","first","second","sqrt","sx","sy","normalizeRect","rect","intersect","rect1","rect2","xLow","xHigh","yLow","yHigh","x0","x1","x2","x3","y0","y1","y2","y3","t","mt","tt","ttt","x","y","abs","delta","sqrtDelta","a2","bezierBoundingBox","NormalizeRegex","NormalizationMap","Map","replaceAll","_","normalize","AnnotationPrefix","FontRenderOps","BaseFilterFactory","addFilter","maps","addHCMFilter","fgColor","bgColor","addAlphaFilter","addLuminosityFilter","addHighlightHCMFilter","filterName","newFgColor","newBgColor","destroy","keepHCM","BaseCanvasFactory","enableHWA","width","height","canvas","_createCanvas","context","getContext","willReadFrequently","reset","canvasAndContext","BaseCMapReaderFactory","isCompressed","fetch","compressionType","_fetchData","catch","reason","BaseStandardFontDataFactory","filename","BaseSVGFactory","skipDimensions","svg","_createSVG","setAttribute","createElement","SVG_NS","static","PDF","async","isValidFetchUrl","document","baseURI","response","ok","statusText","arrayBuffer","blob","json","text","Promise","resolve","reject","request","XMLHttpRequest","open","responseType","onreadystatechange","readyState","DONE","responseText","send","DOMCMapReaderFactory","then","data","cMapData","ArrayBuffer","DOMStandardFontDataFactory","createElementNS","PageViewport","viewBox","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","rawDims","pageWidth","pageHeight","pageX","pageY","clone","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","extraDelay","ii","trim","substring","toLowerCase","test","split","lastIndexOf","defaultFilename","reFilename","splitURI","exec","suggestedFilename","StatTimer","started","times","time","Date","now","timeEnd","start","end","outBuf","longest","padEnd","e","preventDefault","deprecated","pdfDateStringRegex","toDateObject","input","RegExp","matches","year","parseInt","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","UTC","xfaPage","attributes","style","getRGB","color","colorRGB","getCurrentTransform","ctx","f","getTransform","getCurrentTransformInverse","invertSelf","div","viewport","mustFlip","mustRotate","useRound","w","h","widthStr","heightStr","EditorToolbar","editor","render","editToolbar","className","signal","_uiManager","_signal","addEventListener","buttons","append","position","toolbarPosition","direction","insetInlineEnd","top","stopPropagation","_focusEventsAllowed","element","bind","capture","hide","classList","add","hideDropdown","show","remove","button","tabIndex","editorType","delete","divider","addAltTextButton","prepend","addColorPicker","colorPicker","renderButton","HighlightToolbar","uiManager","boxes","isLTR","lastY","lastX","box","parent","span","highlightSelection","bindEvents","names","IdManager","id","ImageManager","crypto","randomUUID","buf","getRandomValues","floor","random","getUuid","_isSVGFittingCanvas","image","Image","src","decode","drawImage","getImageData","rawData","bitmap","refCounter","isSvg","file","mustRemoveAspectRatioPromise","fileReader","FileReader","imageElement","imagePromise","onload","svgUrl","result","onerror","readAsDataURL","createImageBitmap","error","set","getFromFile","lastModified","size","getFromUrl","getFromId","getSvgUrl","deleteId","isValidId","CommandManager","maxSize","cmd","undo","post","mustExec","NaN","overwriteIfSameType","keepUndo","next","splice","redo","hasSomethingToUndo","hasSomethingToRedo","KeyboardManager","callbacks","allKeys","Set","callback","isMacKey","at","event","altKey","ctrlKey","metaKey","shiftKey","self","has","bubbles","args","checker","ColorManager","_colors","colors","visibility","body","computedColor","window","getComputedStyle","getColorValues","convert","rgb","matchMedia","RGB","every","_colorsMapping","getHexCode","AbortController","blur","focus","copy","cut","paste","keydown","keyup","onEditingAction","onPageChanging","onScaleChanging","onRotationChanging","isEditing","isEmpty","hasSelectedEditor","hasSelectedText","_keyboardManager","proto","arrowChecker","contains","activeElement","tagName","hasSomethingToControl","textInputChecker","_self","target","el","HTMLInputElement","small","TRANSLATE_SMALL","big","TRANSLATE_BIG","selectAll","addNewEditorFromKeyboard","HTMLButtonElement","isEnterHandled","unselectAll","translateSelectedEditors","container","viewer","altTextManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","mlManager","_eventBus","_on","annotationStorage","filterFactory","viewParameters","realScale","PDF_TO_CSS_UNITS","isShiftKeyDown","abort","_off","layer","values","clear","clearTimeout","mlGuess","guess","hasMLManager","hcmFilter","foreground","background","pair","highlightColorNames","reverse","setMainHighlightColorPicker","editAltText","pageNumber","focusMainContainer","findParent","layerX","layerY","getBoundingClientRect","disableUserSelect","toggle","addShouldRescale","removeShouldRescale","commitOrRemove","pagesRotation","anchorNode","nodeType","Node","TEXT_NODE","parentElement","methodOfCreation","selection","getSelection","isCollapsed","anchorOffset","focusNode","focusOffset","textLayer","closest","getSelectionBoxes","empty","dispatch","source","mode","showAllEditors","hasTextLayer","createAndAddNewEditor","addToAnnotationStorage","setValue","pointerup","removeEventListener","hasSelection","lastEditor","lastActiveElement","once","dragOver","drop","addEditListeners","removeEditListeners","dataTransfer","items","isHandlingMimeForPasting","dropEffect","item","currentLayer","editors","serialized","serialize","clipboardData","setData","JSON","stringify","getData","parse","ex","isArray","newEditors","deserializedEditor","deserialize","addCommands","isEditorHandlingKeyboard","entries","some","assign","setEditingState","registerEditorTypes","types","defaultPropertiesToUpdate","getId","getLayer","pageIndex","currentPageIndex","addLayer","enable","disable","removeLayer","updateMode","editId","isFromKeyboard","annotationElementId","setSelected","enterInEditMode","canCreateNewEmptyEditor","addNewEditor","updateToolbar","updateParams","updateColor","action","updateDefaultParams","visible","updateButton","enableWaiting","mustWait","disableClick","enableClick","getEditors","getEditor","addEditor","removeEditor","setTimeout","unselect","addDeletedAnnotationElement","addChangedExistingAnnotation","deleted","isDeletedAnnotationElement","removeDeletedAnnotationElement","removeChangedExistingAnnotation","addOrRebuild","setActiveEditor","propertiesToUpdate","ed","updateUI","toggleSelected","select","isSelected","firstSelectedEditor","params","commit","noCommit","totalX","totalY","translateInPage","setUpDragSession","savedX","savedY","savedPageIndex","newX","newY","newPageIndex","endDragSession","mustBeAddedInUndoStack","move","_setParentAndPosition","dragSelectedEditors","tx","ty","drag","rebuild","changeParent","getActive","shouldGetKeyboardEvents","isActive","getMode","imageManager","rangeCount","getRangeAt","commonAncestorContainer","parentWidth","parentHeight","rotator","getAttribute","range","collapsed","getClientRects","renderAnnotationElement","annotation","editorId","getRawValue","hasBeenModified","AltText","initialize","l10nPromise","_l10nPromise","altText","textContent","onClick","finish","focusVisible","decorative","enabled","disabled","tooltip","DELAY_TO_SHOW_TOOLTIP","_reportTelemetry","innerText","parentNode","getImageForAltText","AnnotationEditor","focusin","focusout","_initialOptions","_isVisible","_zIndex","_resizerKeyboardManager","resize","_resizeWithKeyboard","_stopResizingWithKeyboard","parameters","_willKeepAspectRatio","isCentered","_structTreeParentId","pageRotation","pageDimensions","pageTranslation","parentDimensions","isAttachedToDOM","getPrototypeOf","_type","_defaultLineColor","_colorManager","deleteAnnotationElement","fakeEditor","FakeEditor","getNextId","l10n","strings","_borderLineWidth","documentElement","parseFloat","getPropertyValue","_value","mime","_isDraggable","center","parentRotation","fixAndSetPosition","setInBackground","zIndex","setInForeground","setParent","relatedTarget","isMultipleSelection","setAt","screenToPageTranslation","translate","scrollIntoView","block","findNewParent","bx","by","getBaseTranslation","left","toFixed","_hasBeenMoved","_mustFixPosition","moveInDOM","angle","pageTranslationToScreen","parentScale","scaledWidth","scaledHeight","round","setDims","fixDims","widthPercent","endsWith","heightPercent","getInitialTranslation","classes","boundResizerPointermove","savedDraggable","pointerMoveOptions","passive","togglePointerEvents","savedWidth","savedHeight","savedParentCursor","cursor","savedCursor","pointerUpCallback","newWidth","newHeight","minWidth","MIN_SIZE","minHeight","rotationMatrix","transf","invRotationMatrix","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","deltaX","deltaY","movementX","movementY","oldDiag","hypot","altTextFinish","addEditToolbar","removeEditToolbar","getClientDimensions","altTextData","hasAltText","maxWidth","maxHeight","pointerdown","pointerMoveCallback","clientX","clientY","moveEditorInDOM","getRect","shiftX","shiftY","getRectInCurrentCoords","onceAdded","enableEditMode","disableEditMode","isInEditMode","needsToBeRebuilt","rotate","_angle","isForCopying","accessibilityData","timeout","isResizable","makeResizable","children","boundResizerKeydown","boundResizerBlur","firstPosition","nextFirstPosition","firstChild","before","lastChild","child","stopImmediatePropagation","preventScroll","disableEditing","enableEditing","contentDiv","setAspectRatio","aspectRatio","telemetryInitialData","telemetryFinalData","_telemetryTimeout","content","querySelector","nodeName","resetAnnotationElement","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","h1","h2","update","isView","byteLength","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hexdigest","SerializableEmpty","freeze","hash","transfer","AnnotationStorage","onSetModified","onResetModified","onAnnotationEditor","getValue","defaultValue","resetModified","modified","entry","val","getAll","setAll","print","PrintAnnotationStorage","serializable","hasBitmap","editorStats","stats","typeToEditor","counters","count","computeTelemetryFinalData","structuredClone","FontLoader","ownerDocument","styleElement","_document","nativeFontFaces","loadingRequests","loadTestFontId","addNativeFontFace","nativeFontFace","fonts","removeNativeFontFace","insertRule","rule","getElementsByTagName","styleSheet","sheet","cssRules","loadSystemFont","systemFontInfo","_inspectFont","loadedName","disableFontFace","isFontLoadingAPISupported","fontFace","FontFace","load","baseFontName","font","attached","missingFile","createNativeFontFace","loaded","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","supported","userAgent","done","complete","otherRequest","shift","_loadTestFont","atob","int32","offset","spliceString","s","insert","called","XXXX_VALUE","checksum","btoa","fontFamily","isFontReady","fillText","FontFaceObject","translatedData","inspectFont","compiledGlyphs","cssFontInfo","css","weight","fontWeight","italicAngle","mimetype","getPathGenerator","objs","character","cmds","commands","bezierCurveTo","quadraticCurveTo","packageCapability","withResolvers","packageMap","fs","import","http","https","path2d","loadPackages","NodePackages","promise","node_utils_fetchData","promises","readFile","PathType","applyBoundingBox","bbox","region","Path2D","BaseShadingPattern","getPattern","RadialAxialShadingPattern","IR","_bbox","_colorStops","_p0","_p1","_r0","_r1","matrix","_createGradient","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","inverse","pathType","pattern","ownerBBox","current","getClippedPathBoundingBox","ceil","tmpCanvas","cachedCanvases","getCanvas","tmpCtx","clearRect","beginPath","baseTransform","fillStyle","createPattern","domMatrix","DOMMatrix","setTransform","drawTriangle","c1","c2","c3","coords","rowSize","tmp","scaleX","scaleY","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","k","x1_","x2_","j","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","_coords","_figures","_bounds","_background","_createMeshCanvas","combinedScale","backgroundColor","boundsWidth","boundsHeight","paddedWidth","BORDER_SIZE","paddedHeight","createImageData","putImageData","matrixScale","temporaryPatternCanvas","DummyShadingPattern","PaintType","TilingPattern","canvasGraphicsFactory","operatorList","xstep","ystep","paintType","tilingType","createPatternCanvas","curMatrixScale","dimx","getSizeAndScale","dimy","graphics","createCanvasGraphics","groupLevel","setFillAndStrokeStyleToContext","adjustedX0","adjustedY0","adjustedX1","adjustedY1","clipBbox","executeOperatorList","endDrawing","step","realOutputSize","MAX_PATTERN_SIZE","bboxWidth","bboxHeight","updateRectMinMax","strokeStyle","fillColor","strokeColor","cssColor","convertBlackAndWhiteToRGBA","srcPos","dest","nonBlackColor","inverseDecode","black","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","elem","FULL_CHUNK_HEIGHT","CachedCanvases","canvasFactory","cache","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","sign","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","patternFill","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","startNewPathAndClipBox","clipBox","setCurrentPoint","updatePathMinMax","minX","maxX","updateScalingPathMinMax","updateCurvePathMinMax","getPathBoundingBox","xStrokePad","yStrokePad","updateClipFromPath","isEmptyClip","Infinity","putBinaryImageData","imgData","ImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","kind","dest32","dest32DataLength","fullSrcDiff","white","srcDiff","kEnd","kEndUnrolled","mask","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","destCtx","properties","property","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","filter","getImageSmoothingEnabled","interpolate","fround","actualScale","devicePixelRatio","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","CanvasGraphics","canvasCtx","commonObjs","optionalContentConfig","markedContentStack","annotationCanvasMap","stateStack","pendingClip","pendingEOFill","res","xobjs","groupStack","processingType3","baseTransformStack","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","fallback","beginDrawing","transparency","savedFillStyle","fillRect","transparentCanvas","compositeCtx","executionStartIdx","continueCallback","stepper","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","steps","fnId","nextBreakPoint","breakIt","depObjId","objsPool","inSMaskMode","HTMLCanvasElement","hcmFilterId","savedFilter","_scaleImage","img","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","_createMaskCanvas","isPatternFill","currentTransform","cacheKey","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","drawnWidth","drawnHeight","fillCanvas","fillCtx","imageSmoothingEnabled","limit","dashArray","dashPhase","intent","flatness","states","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","cp1x","cp1y","cp2x","cp2y","mirrorContextOperations","compose","dirtyBox","smask","composeSMask","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","genericComposeSMask","subtype","backdrop","transferMap","maskCtx","maskOffsetX","maskOffsetY","maskX","maskY","old","pop","ops","startX","startY","isScalingMatrix","minMaxForBezier","xw","yh","consumePath","rescaleAndStroke","needRestore","paths","pendingTextPaths","path","addToPath","spacing","fontRefName","fontObj","fontDirection","isType3Font","typeface","fallbackName","bold","italic","browserFontSize","rise","paintChar","patternTransform","fillStrokeMode","isAddToPathSet","strokeText","isFontSubpixelAAEnabled","glyphs","showType3Text","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","getSinglePixelWidth","isInvalidPDFjsFont","chars","glyph","unicode","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","remeasure","measuredWidth","measureText","characterScaleX","isInFont","scaledAccentX","scaledAccentY","spacingLength","charProcOperatorList","operatorListId","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","_getPattern","arguments","objId","getShadingPattern","inv","group","currentCtx","isolated","knockout","bounds","canvasBounds","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","canvasWidth","canvasHeight","annotationCanvas","savedCtx","compiled","POINT_TYPES","width1","j0","points","lineSize","pos","sum","Int32Array","p0","pp","compileType3Glyph","skewX","skewY","positions","trans","images","applyTransferMapsToCanvas","applyTransferMapsToBitmap","imgToPaint","HTMLElement","tag","isVisible","isContentVisible","absDet","normX","normY","getScaleForStroking","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","op","workerPort","Worker","workerSrc","CallbackKind","StreamKind","wrapReason","MessageHandler","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","stream","capability","cbSourceName","cbTargetName","postMessage","on","actionName","handler","ah","transfers","sendWithPromise","sendWithStream","queueingStrategy","ReadableStream","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancel","cancelCapability","streamSink","enqueue","isCancelled","lastDesiredSize","sinkCapability","ready","close","onPull","onCancel","success","streamController","allSettled","Metadata","parsedData","getRaw","INTERNAL","Symbol","OptionalContentGroup","renderingIntent","usage","view","viewState","printState","_setVisible","internal","userSet","OptionalContentConfig","creator","order","groups","baseState","off","getHash","array","operator","state","expression","policy","ids","setVisibility","setOCGState","preserveRB","hasInitialVisibility","getOrder","getGroups","getGroup","PDFDataTransportStream","pdfDataRangeTransport","disableRange","disableStream","initialData","progressiveDone","contentDispositionFilename","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","addRangeListener","begin","_onReceiveData","addProgressListener","total","_onProgress","addProgressiveReadListener","addProgressiveDoneListener","_onProgressiveDone","transportReady","_enqueue","rangeReader","_begin","_progressiveDataLength","_loaded","evt","onProgress","_removeRangeReader","reader","indexOf","getFullReader","queuedChunks","PDFDataTransportStreamReader","getRangeReader","PDFDataTransportStreamRangeReader","requestDataRange","cancelAllRequests","_stream","_done","_filename","_requests","_headersReady","headersReady","isRangeSupported","isStreamingSupported","contentLength","read","requestCapability","_end","_queuedChunk","validateRangeRequestCapabilities","getResponseHeader","isHttp","rangeChunkSize","returnValues","allowRangeRequests","suggestedLength","extractFilenameFromHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","unescape","rfc5987decode","rfc2047decode","fixupEncoding","contentDispositionStr","iter","quot","part","parts","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","TextDecoder","fatal","quotindex","extvalue","encodingend","replace","charset","hex","getFilenameFromContentDispositionHeader","createResponseStatusError","validateResponseStatus","createFetchOptions","headers","withCredentials","abortController","method","credentials","redirect","createHeaders","httpHeaders","Headers","getArrayBuffer","PDFFetchStream","_rangeRequestReaders","PDFFetchStreamReader","PDFFetchStreamRangeReader","_reader","_withCredentials","_headersCapability","_disableRange","_rangeChunkSize","_abortController","_headers","getReader","_readCapability","NetworkManager","currXhrId","pendingRequests","requestRange","listeners","requestFull","xhr","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","network_getArrayBuffer","rangeHeader","getRequestXhr","isPendingRequest","abortRequest","PDFNetworkStream","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_onHeadersReceived","_onDone","_onError","_url","_fullRequestId","_headersReceivedCapability","_cachedChunks","_storedError","fullRequestXhrId","fullRequestXhr","lengthComputable","_requestId","_close","fileUriRegex","PDFNodeStream","sourceUrl","parsedUrl","host","parseUrl","isFsUrl","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_readableStream","_error","_setReadableStream","readableStream","BaseRangeReader","createRequestOptions","auth","hostname","port","handleResponse","statusCode","_request","_httpHeaders","Range","href","lstat","stat","createReadStream","DEFAULT_FONT_SIZE","FontInspector","WeakMap","textContentSource","prevFontSize","prevFontFamily","pump","lang","styles","onBefore","abortEx","textDivs","textContentItemsStr","geom","textDiv","textDivProperties","hasText","hasEOL","atan2","fontName","PI","fontSubstitution","fontHeight","fontAscent","sin","cos","scaleFactorStr","divStyle","dir","dataset","fontSubstitutionLoadedName","shouldScaleText","absScaleX","absScaleY","br","cleanup","canvasContext","alpha","opacity","lineHeight","cachedAscent","savedFont","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","pixels","rest","restKeys","XfaText","xfa","output","walk","node","shouldBuildText","DEFAULT_RANGE_CHUNK_SIZE","DefaultCanvasFactory","createCanvas","DefaultCMapReaderFactory","DefaultFilterFactory","docId","contain","mapR","table","mapG","mapB","bufferR","bufferG","bufferB","tableR","tableG","tableB","fgRGB","bgRGB","getSteps","arr","tableA","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","newStart","newStep","prev","feColorMatrix","feComponentTransfer","func","feFunc","rTable","gTable","bTable","aTable","DefaultStandardFontDataFactory","task","PDFDocumentLoadingTask","location","getUrlProp","Buffer","isNaN","getDataProp","password","rangeTransport","worker","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","standardFontDataUrl","StandardFontDataFactory","ignoreErrors","stopAtErrors","maxImageSize","canvasMaxAreaInBytes","fontExtraProperties","enableXfa","disableAutoFetch","pdfBug","useSystemFonts","useWorkerFetch","transportFactory","cMapReaderFactory","standardFontDataFactory","workerParams","fromPort","_worker","docParams","apiVersion","evaluatorOptions","transportParams","loadingParams","destroyed","workerIdPromise","messageHandler","networkStream","Response","isFetchSupported","createPDFNetworkStream","workerId","transport","WorkerTransport","_transport","_capability","isRefProxy","ref","num","gen","onPassword","_pendingDestroy","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","listener","onDataRange","onDataProgress","onDataProgressiveRead","onDataProgressiveDone","PDFDocumentProxy","pdfInfo","_pdfInfo","numPages","fingerprints","isPureXfa","_htmlForXfa","allXfaHtml","getPage","getPageIndex","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getRenderingIntent","getPermissions","getMetadata","getMarkInfo","saveDocument","getDownloadInfo","downloadInfoCapability","keepLoadedFonts","startCleanup","loadingTask","cachedPageNumber","getFieldObjects","hasJSActions","getCalculationOrderIds","PDFPageProxy","pageInfo","_pageIndex","_pageInfo","_stats","_pdfBug","PDFObjects","_maybeCleanupAfterRender","_intentStates","userUnit","getViewport","getAnnotations","getPageJSActions","getXfa","annotationMode","optionalContentConfigPromise","printAnnotationStorage","intentArgs","intentState","streamReaderCancelTimeout","intentPrint","displayReadyCapability","lastChunk","separateAnnots","_pumpOperatorList","renderTasks","internalRenderTask","_abortOperatorList","Stats","InternalRenderTask","useRequestAnimationFrame","renderTask","all","initializeGraphics","operatorListChanged","getOperatorList","opListTask","opListReadCapability","streamTextContent","includeMarkedContent","disableNormalization","highWaterMark","getTextContent","getStructTree","_destroy","waitOn","force","completed","resetStats","delayed","_startRenderPage","_renderPageChunk","operatorListChunk","annotationStorageSerializable","streamReader","delay","curCacheKey","curIntentState","LoopbackPort","terminate","PDFWorkerUtil","isWorkerDisabled","fakeWorkerId","isSameOrigin","otherUrl","base","origin","other","createCDNWrapper","wrapper","createObjectURL","Blob","_port","_webWorker","_messageHandler","_initializeFromPort","_initialize","_setupFakeWorker","terminateEarly","ac","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","cachedPort","pdfjsWorker","loader","factory","fontLoader","_params","destroyCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","cachedPromise","isOpList","page","terminated","sink","readyReason","headersCapability","fullReader","_numPages","htmlForXfa","exception","updatePassword","exportedData","exportedError","fontAdded","finally","imageRef","pageProxy","dataLen","imageData","refStr","results","metadata","INITIAL_DATA","iterator","RenderTask","onContinue","form","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","_canvas","StepperManager","init","getNextBreakPoint","gfx","cancelAnimationFrame","updateOperatorList","requestAnimationFrame","makeColorComp","scaleAndClamp","ColorConverters","CMYK_G","G_CMYK","G_RGB","G_rgb","G_HTML","G","RGB_G","RGB_rgb","RGB_HTML","T_HTML","T_rgb","CMYK_RGB","CMYK_rgb","CMYK_HTML","components","RGB_CMYK","setupStorage","html","storage","storedData","xfaOn","xfaOff","removeAttribute","checked","option","selected","selectedIndex","setAttributes","linkService","isHTMLAnchorElement","HTMLAnchorElement","addLinkAttributes","newWindow","dataId","root","xfaHtml","rootHtml","isNotForRichText","rootDiv","createTextNode","stack","childHtml","xmlns","querySelectorAll","hidden","DEFAULT_TAB_INDEX","GetElementsByNameSet","getRectDims","AnnotationElementFactory","annotationType","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","downloadManager","imageResourcesPath","renderForms","svgFactory","enableScripting","_fieldObjects","fieldObjects","_createContainer","_createQuadrilaterals","_hasPopupData","titleObj","contentsObj","richText","hasPopupData","updateEdited","popup","resetEdited","currentRect","setRotation","popupRef","alternativeText","title","noRotate","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","elementWidth","elementHeight","_commonActions","setColor","jsName","styleName","detail","colorType","colorArray","display","noView","noPrint","userName","readonly","required","_setRequired","textColor","_dispatchEventFromSandbox","actions","jsEvent","commonActions","_setDefaultPropertiesFromJS","quadPoints","rectBlX","rectBlY","rectTrX","rectTrY","trX","trY","blX","blY","svgBuffer","defs","clipPath","rectWidth","rectHeight","backgroundImage","_createPopup","modificationDate","parentRect","elements","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","getElementsByName","maybeShow","forceHide","getElementsToTriggerPopup","addHighlightArea","triggers","_isEditable","_editOnDoubleClick","annotationEditorType","isTooltipOnly","link","isBound","_bindNamedAction","attachment","attachmentDest","_bindLink","Action","_bindJSAction","resetForm","_bindResetFormAction","destination","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","description","openOrDownloadData","executeSetOCGState","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","dispatchEvent","Event","showElementAndHideCanvas","previousSibling","_getKeyModifier","_setEventListener","elementData","baseName","eventName","valueGetter","modifier","focused","_setEventListeners","getter","Blur","Focus","_setBackgroundColor","_setTextStyle","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","computedFontSize","roundToOneDecimal","multiLine","textAlignment","textAlign","isRequired","hasAppearance","fieldValue","setPropertyOnSiblings","keyInStorage","maxLen","charLimit","fieldFormattedValues","formattedValue","comb","userValue","lastCommittedValue","commitKey","doNotScroll","overflowY","overflowX","readOnly","maxLength","defaultFieldValue","blurListener","scrollLeft","selRange","setSelectionRange","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","Keystroke","inputType","change","combWidth","letterSpacing","verticalAlign","checkbox","curChecked","buttonValue","radio","pdfButtonValue","linkElement","selectElement","addAnEmptyEntry","combo","multiSelect","multiple","optionElement","displayValue","removeEmptyEntry","noneOptionElement","isExport","selectedValues","getItems","multipleSelection","index","findIndex","selectChild","indices","editable","changeEx","keyDown","PopupElement","elementIds","trigger","flatMap","baseColor","outlineColor","BACKGROUND_ENLIGHT","header","date","toLocaleDateString","toLocaleTimeString","contents","_formatContents","popupLines","popupContent","lineAttributes","line","lines","useParentRect","normalizedRect","popupLeft","popupTop","textPosition","lineSpan","lineCoordinates","square","circle","containerClassName","svgElementName","vertices","polyline","inkLists","inkList","accessibilityManager","annotationEditorUIManager","_annotationEditorUIManager","contentElement","moveElementInDOM","annotations","popupToElements","elementParams","noHTML","isPopupAnnotation","rendered","replaceWith","after","getEditableAnnotations","getEditableAnnotation","EOL_PATTERN","FreeTextEditor","editorDivBlur","editorDivFocus","editorDivInput","editorDivKeydown","editorDivPaste","_translateEmpty","_defaultColor","_defaultFontSize","_internalPadding","setFontsize","editorDiv","savedFontsize","col","savedColor","overlayDiv","contentEditable","childNodes","savedDisplay","savedVisibility","savedText","newText","trimEnd","setText","dblclick","baseX","baseY","posX","posY","nodeValue","deleteFromDocument","insertNode","collapseToStart","startContainer","startOffset","bufferBefore","bufferAfter","newRange","beforeLength","reduce","acc","setStart","setEnd","removeAllRanges","addRange","replaceChildren","padding","structTreeParentId","innerMargin","EPSILON","right","shiftedMinX","shiftedMinY","lastEdge","lastPoint","edge","getOutlines","sort","outlineVerticalEdges","edges","allEdges","edge1","edge2","outlines","outline","lastPointX","lastPointY","HighlightOutline","middle","jj","y4","Outline","toSVGPath","_rotation","free","FreeHighlightOutline","polygon","prevX","prevY","FreeOutliner","Float64Array","scaleFactor","thickness","lastTop","lastBottom","diffX","diffY","diffD","K","nY","thX","thY","bottom","lastTopX","lastTopY","lastBottomX","lastBottomY","last","N","ltrCallback","getNewOutline","outliner","_hideDropdownFromKeyboard","_colorSelectFromKeyboard","_moveToNext","_moveToPrevious","_moveToBeginning","_moveToEnd","swatch","renderMainDropdown","dropdown","role","nextSibling","HighlightEditor","_moveCaret","_defaultThickness","_defaultOpacity","highlightId","numberOfColors","outlinerForOutline","highlightOutlines","clipPathId","drawLayer","finalizeLine","highlightOutline","updateLine","updateBox","changeColor","savedThickness","setThickness","th","toolbar","addUndoableEditor","mustBeSelected","highlight","highlightDiv","pointerover","addClass","pointerleave","removeClass","setPosition","Float32Array","startHighlighting","pointerMove","pointerDownOptions","pointerDown","_freeHighlight","_freeHighlightId","_freeHighlightClipId","updatePath","removeFreeHighlight","InkEditor","canvasPointermove","canvasPointerleave","canvasPointerup","canvasPointerdown","bezierPath2D","allRawPaths","currentPath","translationX","translationY","setOpacity","savedOpacity","disconnect","setDimensions","opacityToHex","path2D","bezier","xy","lastPoints","bezierPoints","control1","control2","addInkEditorIfNeeded","ResizeObserver","contentRect","observe","roundedWidth","roundedHeight","scaleFactorW","scaleFactorH","p10","p11","p20","p21","p30","p31","p40","p41","xMin","xMax","yMin","yMax","firstTime","prevTranslationX","prevTranslationY","unscaledPadding","StampEditor","bitmapUrl","bitmapFile","supportedTypes","supportedTypesStr","pasteEditor","getAsFile","fromId","accept","files","click","MAX_RATIO","factor","bitmapWidth","bitmapHeight","prevWidth","prevHeight","offscreen","transferToImageBitmap","service","channels","toUrl","toDataURL","bitmapId","alt","stamps","area","prevData","_editorType","annotationLayer","editorTypes","_initialized","isInvisible","disableTextSelection","toggleAnnotationLayerPointerEvents","enableTextSelection","isCommitting","annotationElementIds","editables","changedAnnotations","resetAnnotations","attach","detach","removePointerInTextLayer","innerWidth","innerHeight","oldRotation","_svgFactory","pathId","clipPathUse","isPathUpdatable","use","maskId","use1","use2","cloneNode","changeOpacity","__webpack_exports__AnnotationLayer","__webpack_exports__AnnotationMode","__webpack_exports__GlobalWorkerOptions","__webpack_exports__PDFDataRangeTransport","__webpack_exports__TextLayer","__webpack_exports__getDocument","__spreadArray","to","pack","ar","l","concat","allEvents","makeEventProps","props","getArgs","eventProps","forEach","eventHandler","makeCancellablePromise","find","tar","dequal","foo","bar","ctor","len","getTime","DataView","getInt8","createContext","Message","_ref","_jsx","LinkService","_classCallCheck","externalLinkEnabled","externalLinkRel","externalLinkTarget","isInPresentationMode","pdfViewer","invariant","currentPageNumber","_this","explicitDest","destRef","pagesCount","scrollPageIntoView","rel","isBrowser","isLocalFileSystem","isProvided","variable","isDefined","isBlob","isDataURI","isString","dataURItoByteString","dataURI","_dataURI$split2","_slicedToArray","_dataURI$split2$","headersString","_dataURI$split2$2","dataString","allowFileAccessFromFilesTip","displayCORSWarning","cancelRunningTask","runningTask","makePageCallback","loadFromFile","NOT_FOUND_ERR","SECURITY_ERR","ABORT_ERR","readAsArrayBuffer","reducer","useResolver","useReducer","_defineProperty","_typeof","toPrimitive","TypeError","_toPrimitive","_toPropertyKey","_regeneratorRuntime","asyncIterator","u","toStringTag","define","wrap","Generator","Context","makeInvokeMethod","tryCatch","arg","GeneratorFunction","GeneratorFunctionPrototype","v","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","mark","setPrototypeOf","__proto__","awrap","charAt","stop","rval","handle","delegateYield","_arrayWithHoles","_iterableToArrayLimit","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","__awaiter","thisArg","_arguments","P","generator","fulfilled","rejected","__rest","getOwnPropertySymbols","propertyIsEnumerable","pdfjs","defaultOnPassword","prompt","isParameterObject","Document","forwardRef","_a","_a$error","inputRef","_a$loading","loading","_a$noData","noData","onItemClick","onLoadErrorProps","onLoadError","onLoadProgress","onLoadSuccessProps","onLoadSuccess","_a$onPassword","onSourceErrorProps","onSourceError","onSourceSuccessProps","onSourceSuccess","renderMode","otherProps","_useResolver2","sourceState","sourceDispatch","sourceError","_useResolver4","pdfState","pdfDispatch","pdf","pdfError","useRef","pages","prevFile","prevOptions","_args$pageIndex","useImperativeHandle","useEffect","findDocumentSource","useCallback","_callee","fileByteString","otherParams","_fileByteString","_context","cancellable","makeCancellable","nextSource","documentInitParams","destroyable","nextPdf","setDocument","setViewer","setExternalLinkRel","setExternalLinkTarget","registerPage","unregisterPage","childContext","useMemo","clsx","DocumentContext","Provider","mergeRefs","inputRefs","_i","filteredInputRefs","Boolean","PDF_ROLE_TO_HTML_ROLE","DocumentFragment","Part","Sect","Div","Aside","NonStruct","H","Title","FENote","Sub","Lbl","Span","Em","Strong","Link","Annot","Form","Ruby","RB","RT","RP","Warichu","WT","WP","L","LI","LBody","Table","TR","TH","TD","THead","TBody","TFoot","Caption","Figure","Formula","Artifact","HEADING_PATTERN","isStructTreeNode","isStructTreeNodeWithOnlyContentChild","getRoleAttributes","isPdfRole","htmlRole","getBaseAttributes","childAttributes","getAttributes","StructTreeItem","usePageContext","useContext","PageContext","StructTree","pageContext","onGetStructTreeErrorProps","onGetStructTreeError","onGetStructTreeSuccessProps","onGetStructTreeSuccess","structTreeState","structTreeDispatch","structTree","structTreeError","customTextRenderer","nextStructTree","ANNOTATION_MODE","Canvas","mergedProps","_className","canvasBackground","_mergedProps$devicePi","onRenderErrorProps","onRenderError","onRenderSuccessProps","onRenderSuccess","canvasRef","canvasElement","isCancelException","renderViewport","renderContext","userSelect","onGetTextError","onGetTextSuccess","onRenderTextLayerError","onRenderTextLayerSuccess","textContentState","textContentDispatch","textContentError","layerElement","endElement","nextTextContent","useLayoutEffect","innerHTML","layerChildren","itemIndex","isTextItem","onMouseUp","onMouseDown","useDocumentContext","documentContext","onGetAnnotationsErrorProps","onGetAnnotationsError","onGetAnnotationsSuccessProps","onGetAnnotationsSuccess","onRenderAnnotationLayerErrorProps","onRenderAnnotationLayerError","onRenderAnnotationLayerSuccessProps","onRenderAnnotationLayerSuccess","_mergedProps$scale","annotationsState","annotationsDispatch","annotationsError","nextAnnotations","clonedViewport","annotationLayerParameters","renderParameters","Page","_mergedProps$_classNa","_mergedProps$_enableR","_enableRegisterUnregisterPage","CustomRenderer","customRenderer","_mergedProps$error","_mergedProps$loading","_mergedProps$noData","onGetTextErrorProps","onGetTextSuccessProps","onRenderTextLayerErrorProps","onRenderTextLayerSuccessProps","pageIndexProps","pageNumberProps","_mergedProps$renderAn","renderAnnotationLayer","renderAnnotationLayerProps","_mergedProps$renderFo","_mergedProps$renderMo","_mergedProps$renderTe","renderTextLayerProps","rotateProps","scaleProps","pageState","pageDispatch","pageError","pageElement","pageScale","scaleWithDefault","nextPage","pageKey","renderMainLayer","_jsxs","_path","_extends","_ref$wrapperDivSize","wrapperDivSize","calculateHeight","_useState2","availableHeight","useState","setNumPages","_useState4","setPageNumber","nav","changePage","prevPageNumber","React","Container","ExpandableWrapper","_ref2","LoaderWrapper","Loader","Navigation","Button","RightArrow","NavigationLabel","styled","withConfig","componentId","candownload","downloadmethod","downloadparams","prevplcCss","displayPreviewDocModal","setDisplayPreviewDocModal","displayDocPreview","setDisplayDocPreview","_useState6","displayPreviewDocErrorModal","setDisplayPreviewDocErrorModal","_useState8","passwordProtected","setPasswordProtected","_useState10","iframeSrc","setIframeSrc","_useState12","isOpen","setIsOpen","_useState14","setWrapperDivSize","wrapperEl","apiMethod","ret","iframeSrcU","prepUrl","$","ajax","fail","errorCallback","offsetWidth","handleClose","PreviewDocModal","documentName","Modal","align","shouldCloseOnOverlayClick","animate","onClose","opened","fullSize","margin","ModalContainer","CloseModalIcon","ContainerW","DocTitle","__","ResponsiveFileName","FileName","FileExtension","DocPreviewWrapper","DocPreview","PreviewDocErrorModal","Style","mouseOffset","prc","componentMount","store","PreviewDocumentWrapper","jQuery","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","amdO","O","chunkIds","fn","priority","notFulfilled","__esModule","hmd","nmd","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""}