UNPKG

1.27 MBSource Map (JSON)View Raw
1{"version":3,"file":"pdf.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf/src/shared/util.js","webpack://pdfjs-dist/build/pdf/src/display/api.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_storage.js","webpack://pdfjs-dist/build/pdf/src/display/editor/editor.js","webpack://pdfjs-dist/build/pdf/src/display/editor/tools.js","webpack://pdfjs-dist/build/pdf/src/display/display_utils.js","webpack://pdfjs-dist/build/pdf/src/display/base_factory.js","webpack://pdfjs-dist/build/pdf/src/shared/murmurhash3.js","webpack://pdfjs-dist/build/pdf/src/display/font_loader.js","webpack://pdfjs-dist/build/pdf/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf/src/display/canvas.js","webpack://pdfjs-dist/build/pdf/src/display/pattern_helper.js","webpack://pdfjs-dist/build/pdf/src/shared/image_utils.js","webpack://pdfjs-dist/build/pdf/src/display/worker_options.js","webpack://pdfjs-dist/build/pdf/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf/src/display/metadata.js","webpack://pdfjs-dist/build/pdf/src/display/optional_content_config.js","webpack://pdfjs-dist/build/pdf/src/display/transport_stream.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_text.js","webpack://pdfjs-dist/build/pdf/src/display/node_utils.js","webpack://pdfjs-dist/build/pdf/src/display/node_stream.js","webpack://pdfjs-dist/build/pdf/src/display/network_utils.js","webpack://pdfjs-dist/build/pdf/src/display/content_disposition.js","webpack://pdfjs-dist/build/pdf/src/display/network.js","webpack://pdfjs-dist/build/pdf/src/display/fetch_stream.js","webpack://pdfjs-dist/build/pdf/src/display/text_layer.js","webpack://pdfjs-dist/build/pdf/src/display/editor/annotation_editor_layer.js","webpack://pdfjs-dist/build/pdf/src/display/editor/freetext.js","webpack://pdfjs-dist/build/pdf/src/display/editor/ink.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_layer.js","webpack://pdfjs-dist/build/pdf/src/shared/scripting_utils.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_layer.js","webpack://pdfjs-dist/build/pdf/src/display/svg.js","webpack://pdfjs-dist/build/pdf/webpack/bootstrap","webpack://pdfjs-dist/build/pdf/src/pdf.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(globalThis, () => {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n typeof PDFJSDev !== \"undefined\" &&\n !PDFJSDev.test(\"SKIP_BABEL\") &&\n !globalThis._pdfjsCompatibilityChecked\n) {\n globalThis._pdfjsCompatibilityChecked = true;\n require(\"./compatibility.js\");\n}\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6; // Ten megabytes.\n\n// Represent the percentage of the height of a single-line field over\n// the font size. Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n INK: 15,\n};\n\nconst AnnotationEditorParamsType = {\n FREETEXT_SIZE: 1,\n FREETEXT_COLOR: 2,\n FREETEXT_OPACITY: 3,\n INK_COLOR: 11,\n INK_THICKNESS: 12,\n INK_OPACITY: 13,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n // PLEASE NOTE: We purposely keep any removed operators commented out, since\n // re-numbering the list would risk breaking third-party users.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n // beginAnnotations: 78,\n // endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n // paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value, nonSerializable = false) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nfunction bytesToString(bytes) {\n if (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}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\nfunction string32(value) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\n\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n\n static get isOffscreenCanvasSupported() {\n return shadow(\n this,\n \"isOffscreenCanvasSupported\",\n typeof OffscreenCanvas !== \"undefined\"\n );\n }\n\n static get platform() {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n typeof navigator === \"undefined\"\n ) {\n return shadow(this, \"platform\", { isWin: false, isMac: false });\n }\n return shadow(this, \"platform\", {\n isWin: navigator.platform.includes(\"Win\"),\n isMac: navigator.platform.includes(\"Mac\"),\n });\n }\n}\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Apply a scaling matrix to some min/max values.\n // If a scaling factor is negative then min and max must be\n // swaped.\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[0];\n minMax[1] *= transform[0];\n\n if (transform[3] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n\n if (transform[1] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[1];\n minMax[3] *= transform[1];\n\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[2];\n minMax[1] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[4];\n minMax[2] += transform[5];\n minMax[3] += transform[5];\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'null'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n const xLow = Math.max(\n Math.min(rect1[0], rect1[2]),\n Math.min(rect2[0], rect2[2])\n );\n const xHigh = Math.min(\n Math.max(rect1[0], rect1[2]),\n Math.max(rect2[0], rect2[2])\n );\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(\n Math.min(rect1[1], rect1[3]),\n Math.min(rect2[1], rect2[3])\n );\n const yHigh = Math.min(\n Math.max(rect1[1], rect1[3]),\n Math.max(rect2[1], rect2[3])\n );\n if (yLow > yHigh) {\n return null;\n }\n\n return [xLow, yLow, xHigh, yHigh];\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v?.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\nclass PromiseCapability {\n #settled = false;\n\n constructor() {\n /**\n * @type {Promise<any>} The Promise object.\n */\n this.promise = new Promise((resolve, reject) => {\n /**\n * @type {function} Fulfills the Promise.\n */\n this.resolve = data => {\n this.#settled = true;\n resolve(data);\n };\n\n /**\n * @type {function} Rejects the Promise.\n */\n this.reject = reason => {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(reason instanceof Error, 'Expected valid \"reason\" argument.');\n }\n this.#settled = true;\n reject(reason);\n };\n });\n }\n\n /**\n * @type {boolean} If the Promise has been fulfilled/rejected.\n */\n get settled() {\n return this.#settled;\n }\n}\n\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n // In order to generate the following regex:\n // - create a PDF containing all the chars in the range 0000-FFFF with\n // a NFKC which is different of the char.\n // - copy and paste all those chars and get the ones where NFKC is\n // required.\n // It appears that most the chars here contain some ligatures.\n NormalizeRegex =\n /([\\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) => {\n return p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2);\n });\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationEditorParamsType,\n AnnotationEditorPrefix,\n AnnotationEditorType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n assert,\n BaseException,\n BASELINE_FACTOR,\n bytesToString,\n CMapCompressionType,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n LINE_DESCENT_FACTOR,\n LINE_FACTOR,\n MAX_IMAGE_SIZE_TO_CACHE,\n MissingPDFException,\n normalizeUnicode,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n PromiseCapability,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n AnnotationMode,\n assert,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n MAX_IMAGE_SIZE_TO_CACHE,\n MissingPDFException,\n PasswordException,\n PromiseCapability,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n AnnotationStorage,\n PrintAnnotationStorage,\n} from \"./annotation_storage.js\";\nimport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMFilterFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n isValidFetchUrl,\n loadScript,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\nconst DELAYED_CLEANUP_TIMEOUT = 5000; // ms\n\nlet DefaultCanvasFactory = DOMCanvasFactory;\nlet DefaultCMapReaderFactory = DOMCMapReaderFactory;\nlet DefaultFilterFactory = DOMFilterFactory;\nlet DefaultStandardFontDataFactory = DOMStandardFontDataFactory;\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS) {\n const {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeFilterFactory,\n NodeStandardFontDataFactory,\n } = require(\"./node_utils.js\");\n\n DefaultCanvasFactory = NodeCanvasFactory;\n DefaultCMapReaderFactory = NodeCMapReaderFactory;\n DefaultFilterFactory = NodeFilterFactory;\n DefaultStandardFontDataFactory = NodeStandardFontDataFactory;\n}\n\nlet createPDFNetworkStream;\nif (typeof PDFJSDev === \"undefined\") {\n const streamsPromise = Promise.all([\n import(\"./network.js\"),\n import(\"./fetch_stream.js\"),\n ]);\n\n createPDFNetworkStream = async params => {\n const [{ PDFNetworkStream }, { PDFFetchStream }] = await streamsPromise;\n\n return isValidFetchUrl(params.url)\n ? new PDFFetchStream(params)\n : new PDFNetworkStream(params);\n };\n} else if (PDFJSDev.test(\"GENERIC || CHROME\")) {\n if (PDFJSDev.test(\"GENERIC\") && isNodeJS) {\n const { PDFNodeStream } = require(\"./node_stream.js\");\n\n createPDFNetworkStream = params => {\n return new PDFNodeStream(params);\n };\n } else {\n const { PDFNetworkStream } = require(\"./network.js\");\n const { PDFFetchStream } = require(\"./fetch_stream.js\");\n\n createPDFNetworkStream = params => {\n return isValidFetchUrl(params.url)\n ? new PDFFetchStream(params)\n : new PDFNetworkStream(params);\n };\n }\n}\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef { TypedArray | ArrayBuffer | Array<number> | string } BinaryData\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string | URL} [url] - The URL of the PDF.\n * @property {BinaryData} [data] - Binary PDF data.\n * Use TypedArrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n *\n * NOTE: If TypedArrays are used they will generally be transferred to the\n * worker-thread. This will help reduce main-thread memory usage, however\n * it will take ownership of the TypedArrays.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not. The default value is `true`.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [isOffscreenCanvasSupported] - Determines if we can use\n * `OffscreenCanvas` in the worker. Primarily used to improve performance of\n * image conversion/rendering.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [canvasMaxAreaInBytes] - The integer value is used to\n * know when an image must be resized (uses `OffscreenCanvas` in the worker).\n * If it's -1 then a possibly slow algorithm is used to guess the max value.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n * when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object} [filterFactory] - A factory instance that will be used\n * to create SVG filters when rendering some images on the main canvas.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string | URL | TypedArray | ArrayBuffer | DocumentInitParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = { url: src };\n } else if (isArrayBuffer(src)) {\n src = { data: src };\n }\n }\n if (typeof src !== \"object\") {\n throw new Error(\"Invalid parameter in getDocument, need parameter object.\");\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n const task = new PDFDocumentLoadingTask();\n const { docId } = task;\n\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport =\n src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize =\n Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0\n ? src.rangeChunkSize\n : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n const docBaseUrl =\n typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl)\n ? src.docBaseUrl\n : null;\n const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n const standardFontDataUrl =\n typeof src.standardFontDataUrl === \"string\"\n ? src.standardFontDataUrl\n : null;\n const StandardFontDataFactory =\n src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize =\n Number.isInteger(src.maxImageSize) && src.maxImageSize > -1\n ? src.maxImageSize\n : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported =\n typeof src.isOffscreenCanvasSupported === \"boolean\"\n ? src.isOffscreenCanvasSupported\n : !isNodeJS;\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes)\n ? src.canvasMaxAreaInBytes\n : -1;\n const disableFontFace =\n typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n\n // Parameters whose default values depend on other parameters.\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts =\n typeof src.useSystemFonts === \"boolean\"\n ? src.useSystemFonts\n : !isNodeJS && !disableFontFace;\n const useWorkerFetch =\n typeof src.useWorkerFetch === \"boolean\"\n ? src.useWorkerFetch\n : (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n (CMapReaderFactory === DOMCMapReaderFactory &&\n StandardFontDataFactory === DOMStandardFontDataFactory &&\n isValidFetchUrl(cMapUrl, document.baseURI) &&\n isValidFetchUrl(standardFontDataUrl, document.baseURI));\n const canvasFactory =\n src.canvasFactory || new DefaultCanvasFactory({ ownerDocument });\n const filterFactory =\n src.filterFactory || new DefaultFilterFactory({ docId, ownerDocument });\n\n // Parameters only intended for development/testing purposes.\n const styleElement =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n ? src.styleElement\n : null;\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(verbosity);\n\n // Ensure that the various factories can be initialized, when necessary,\n // since the user may provide *custom* ones.\n const transportFactory = {\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\n if (!worker) {\n const workerParams = {\n verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n\n const fetchDocParams = {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null,\n },\n };\n const transportParams = {\n ignoreErrors,\n isEvalSupported,\n disableFontFace,\n fontExtraProperties,\n enableXfa,\n ownerDocument,\n disableAutoFetch,\n pdfBug,\n styleElement,\n };\n\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(worker, fetchDocParams);\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length,\n initialData: rangeTransport.initialData,\n progressiveDone: rangeTransport.progressiveDone,\n contentDispositionFilename:\n rangeTransport.contentDispositionFilename,\n disableRange,\n disableStream,\n },\n rangeTransport\n );\n } else if (!data) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: createPDFNetworkStream\");\n }\n networkStream = createPDFNetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n transportParams,\n transportFactory\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @returns {Promise<string>} A promise that is resolved when the worker ID of\n * the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n source,\n source.data ? [source.data.buffer] : null\n );\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\nfunction getUrlProp(val) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return null; // The 'url' is unused with `PDFDataRangeTransport`.\n }\n if (val instanceof URL) {\n return val.href;\n }\n try {\n // The full path is required in the 'url' field.\n return new URL(val, window.location).href;\n } catch (ex) {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof val === \"string\"\n ) {\n return val; // Use the url as-is in Node.js environments.\n }\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n}\n\nfunction getDataProp(val) {\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n val instanceof Buffer // eslint-disable-line no-undef\n ) {\n deprecated(\n \"Please provide binary data as `Uint8Array`, rather than `Buffer`.\"\n );\n return new Uint8Array(val);\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n // Use the data as-is when it's already a Uint8Array that completely\n // \"utilizes\" its underlying ArrayBuffer, to prevent any possible\n // issues when transferring it to the worker-thread.\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if ((typeof val === \"object\" && !isNaN(val?.length)) || isArrayBuffer(val)) {\n return new Uint8Array(val);\n }\n throw new Error(\n \"Invalid PDF binary data: either TypedArray, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n\n constructor() {\n this._capability = new PromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise<PDFDocumentProxy>}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Abort all network requests and destroy the worker.\n * @returns {Promise<void>} A promise that is resolved when destruction is\n * completed.\n */\n async destroy() {\n this.destroyed = true;\n await this._transport?.destroy();\n\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\n\n/**\n * Abstract class to support range requests file loading.\n *\n * NOTE: The TypedArrays passed to the constructor and relevant methods below\n * will generally be transferred to the worker-thread. This will help reduce\n * main-thread memory usage, however it will take ownership of the TypedArrays.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array|null} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = new PromiseCapability();\n }\n\n /**\n * @param {function} listener\n */\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n /**\n * @param {number} begin\n * @param {Uint8Array|null} chunk\n */\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n /**\n * @param {number} loaded\n * @param {number|undefined} total\n */\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n /**\n * @param {Uint8Array|null} chunk\n */\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n /**\n * @param {number} begin\n * @param {number} end\n */\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"getXFADatasets\", {\n value: () => {\n return this._transport.getXFADatasets();\n },\n });\n Object.defineProperty(this, \"getXRefPrevValue\", {\n value: () => {\n return this._transport.getXRefPrevValue();\n },\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {Object} The filter factory instance.\n */\n get filterFactory() {\n return this._transport.filterFactory;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array<string, string|null>} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n\n /**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n *\n * @type {Object | null} An object representing a HTML tree structure\n * to render the XFA, or `null` when no XFA form exists.\n */\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise<PDFPageProxy>} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {RefProxy} ref - The page reference.\n * @returns {Promise<number>} A promise that is resolved with the page index,\n * starting from zero, that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise<Object<string, Array<any>>>} A promise that is resolved\n * with a mapping from named destinations to references.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @returns {Promise<Array<any> | null>} A promise that is resolved with all\n * information of the given named destination, or `null` when the named\n * destination is not present in the PDF file.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with\n * an {Array} containing the page labels that correspond to the page\n * indexes, or `null` when no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @returns {Promise<string>} A promise that is resolved with a {string}\n * containing the page layout name.\n */\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n /**\n * @returns {Promise<string>} A promise that is resolved with a {string}\n * containing the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with an\n * {Object} containing the viewer preferences, or `null` when no viewer\n * preferences are present in the PDF file.\n */\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n /**\n * @returns {Promise<any | null>} A promise that is resolved with an {Array}\n * containing the destination, or `null` when no open action is present\n * in the PDF.\n */\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n /**\n * @returns {Promise<any>} A promise that is resolved with a lookup table\n * for mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with\n * an {Array} of all the JavaScript strings in the name tree, or `null`\n * if no JavaScript exists.\n */\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with\n * an {Object} with the JavaScript actions:\n * - from the name tree (like getJavaScript);\n * - from A or AA entries in the catalog dictionary.\n * , or `null` if no JavaScript exists.\n */\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n /**\n * @typedef {Object} OutlineNode\n * @property {string} title\n * @property {boolean} bold\n * @property {boolean} italic\n * @property {Uint8ClampedArray} color - The color in RGB format to use for\n * display purposes.\n * @property {string | Array<any> | null} dest\n * @property {string | null} url\n * @property {string | undefined} unsafeUrl\n * @property {boolean | undefined} newWindow\n * @property {number | undefined} count\n * @property {Array<OutlineNode>} items\n */\n\n /**\n * @returns {Promise<Array<OutlineNode>>} A promise that is resolved with an\n * {Array} that is a tree outline (if it has one) of the PDF file.\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @returns {Promise<OptionalContentConfig>} A promise that is resolved with\n * an {@link OptionalContentConfig} that contains all the optional content\n * groups (assuming that the document has any).\n */\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n /**\n * @returns {Promise<Array<number> | null>} A promise that is resolved with\n * an {Array} that contains the permission flags for the PDF document, or\n * `null` when no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n * resolved with an {Object} that has `info` and `metadata` properties.\n * `info` is an {Object} filled with anything available in the information\n * dictionary and similarly `metadata` is a {Metadata} object with\n * information from the metadata section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @typedef {Object} MarkInfo\n * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n * @property {boolean} Marked\n * @property {boolean} UserProperties\n * @property {boolean} Suspects\n */\n\n /**\n * @returns {Promise<MarkInfo | null>} A promise that is resolved with\n * a {MarkInfo} object that contains the MarkInfo flags for the PDF\n * document, or `null` when no MarkInfo values are present in the PDF file.\n */\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n /**\n * @returns {Promise<Uint8Array>} A promise that is resolved with a\n * {Uint8Array} containing the raw data of the PDF document.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise<Uint8Array>} A promise that is resolved with a\n * {Uint8Array} containing the full data of the saved document.\n */\n saveDocument() {\n return this._transport.saveDocument();\n }\n\n /**\n * @returns {Promise<{ length: number }>} A promise that is resolved when the\n * document's data is loaded. It is resolved with an {Object} that contains\n * the `length` property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * Cleans up resources allocated by the document on both the main and worker\n * threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n * NOTE: This will increase persistent memory usage, hence don't use this\n * option unless absolutely necessary. The default value is `false`.\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {DocumentInitParameters} A subset of the current\n * {DocumentInitParameters}, which are needed in the viewer.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n /**\n * @returns {Promise<Object<string, Array<Object>> | null>} A promise that is\n * resolved with an {Object} containing /AcroForm field data for the JS\n * sandbox, or `null` when no field data is present in the PDF file.\n */\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n /**\n * @returns {Promise<boolean>} A promise that is resolved with `true`\n * if some /AcroForm fields have JavaScript actions.\n */\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with an\n * {Array<string>} containing IDs of annotations that have a calculation\n * action, or `null` when no such annotations are present in the PDF file.\n */\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n * the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} [includeMarkedContent] - When true include marked\n * content items in the items array of TextContent. The default is `false`.\n * @property {boolean} [disableNormalization] - When true the text is *not*\n * normalized in the worker-thread. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array<TextItem | TextMarkedContent>} items - Array of\n * {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n * items are included when includeMarkedContent is true.\n * @property {Object<string, TextStyle>} styles - {@link TextStyle} objects,\n * indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array<any>} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n * line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n * 'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n * 'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n * can be 'display' (viewable annotations), 'print' (printable annotations),\n * or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {CanvasRenderingContext2D} canvasContext - A 2D context of a DOM\n * Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n * the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n * onto the canvas, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {Array<any>} [transform] - Additional transform, applied just\n * before viewport transform.\n * @property {CanvasGradient | CanvasPattern | string} [background] - Background\n * to use for the canvas.\n * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n * <color> value, a `CanvasGradient` object (a linear or radial gradient) or\n * a `CanvasPattern` object (a repetitive image). The default value is\n * 'rgb(255,255,255)'.\n *\n * NOTE: This option may be partially, or completely, ignored when the\n * `pageColors`-option is used.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n * with user defined ones in order to improve readability in high contrast\n * mode.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n * A promise that should resolve with an {@link OptionalContentConfig}\n * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n * the configuration will be fetched automatically with the default visibility\n * states set.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap] - Map some\n * annotation ids with canvases used to render them.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n * in the operatorList, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array<StructTreeNode | StructTreeContent>} children - Array of\n * {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n * elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array<number>} fnArray - Array containing the operator functions.\n * @property {Array<any>} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n #delayedCleanupTimeout = null;\n\n #pendingCleanup = false;\n\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 /** @type {PDFObjects} */\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this._maybeCleanupAfterRender = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {RefProxy | null} The reference that points to this page.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array<number>} An array of the visible portion of the PDF page in\n * user space units [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n }\n\n /**\n * @param {GetViewportParameters} params - Viewport parameters.\n * @returns {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @returns {Promise<Array<any>>} A promise that is resolved with an\n * {Array} of the annotation objects.\n */\n getAnnotations({ intent = \"display\" } = {}) {\n const intentArgs = this._transport.getRenderingIntent(intent);\n\n return this._transport.getAnnotations(\n this._pageIndex,\n intentArgs.renderingIntent\n );\n }\n\n /**\n * @returns {Promise<Object>} A promise that is resolved with an\n * {Object} with JS actions.\n */\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with\n * an {Object} with a fake DOM object (a tree structure where elements\n * are {Object} with a name, attributes (class, style, ...), value and\n * children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n */\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n *\n * @param {RenderParameters} params - Page render parameters.\n * @returns {RenderTask} An object that contains a promise that is\n * resolved when the page finishes rendering.\n */\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n }) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n arguments[0]?.canvasFactory\n ) {\n throw new Error(\n \"render no longer accepts the `canvasFactory`-option, \" +\n \"please pass it to the `getDocument`-function instead.\"\n );\n }\n\n this._stats?.time(\"Overall\");\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n printAnnotationStorage\n );\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render...\n this.#pendingCleanup = false;\n // ... and ensure that a delayed cleanup is always aborted.\n this.#abortDelayedCleanup();\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const intentPrint = !!(\n intentArgs.renderingIntent & RenderingIntentFlag.PRINT\n );\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = new PromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null,\n };\n\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup immediately once rendering has finished.\n if (this._maybeCleanupAfterRender || intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup(/* delayed = */ !intentPrint);\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error),\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n\n this._stats?.timeEnd(\"Rendering\");\n this._stats?.timeEnd(\"Overall\");\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\n params: {\n canvasContext,\n viewport,\n transform,\n background,\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors,\n });\n\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n Promise.all([\n intentState.displayReadyCapability.promise,\n optionalContentConfigPromise,\n ])\n .then(([transparency, optionalContentConfig]) => {\n if (this.#pendingCleanup) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig,\n });\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @param {GetOperatorListParameters} params - Page getOperatorList\n * parameters.\n * @returns {Promise<PDFOperatorList>} A promise resolved with an\n * {@link PDFOperatorList} object that represents the page's operator list.\n */\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n printAnnotationStorage,\n /* isOpList = */ true\n );\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = new PromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null,\n };\n\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise<TextContent>} A promise that is resolved with a\n * {@link TextContent} object that represents the page's text content.\n */\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n // TODO: We need to revisit this once the XFA foreground patch lands and\n // only do this for non-foreground XFA.\n return this.getXfa().then(xfa => {\n return XfaText.textContent(xfa);\n });\n }\n const readableStream = this.streamTextContent(params);\n\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({ value, done }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n pump();\n });\n }\n\n /**\n * @returns {Promise<StructTreeNode>} A promise that is resolved with a\n * {@link StructTreeNode} object that represents the page's structure tree,\n * or `null` when no structure tree is present for the current page.\n */\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true,\n });\n\n if (intentState.opListReadCapability) {\n // Avoid errors below, since the renderTasks are just stubs.\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n *\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup(/* delayed = */ false);\n\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @param {boolean} [delayed] - Delay the cleanup, to e.g. improve zooming\n * performance in documents with large images.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n #tryCleanup(delayed = false) {\n this.#abortDelayedCleanup();\n\n if (!this.#pendingCleanup) {\n return false;\n }\n if (delayed) {\n this.#delayedCleanupTimeout = setTimeout(() => {\n this.#delayedCleanupTimeout = null;\n this.#tryCleanup(/* delayed = */ false);\n }, DELAYED_CLEANUP_TIMEOUT);\n\n return false;\n }\n for (const { renderTasks, operatorList } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n\n #abortDelayedCleanup() {\n if (this.#delayedCleanupTimeout) {\n clearTimeout(this.#delayedCleanupTimeout);\n this.#delayedCleanupTimeout = null;\n }\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n this._stats?.timeEnd(\"Page Request\");\n\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n intentState.displayReadyCapability?.resolve(transparency);\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup(/* delayed = */ true);\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList({ renderingIntent, cacheKey, annotationStorageMap }) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n Number.isInteger(renderingIntent) && renderingIntent > 0,\n '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n );\n }\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: annotationStorageMap,\n }\n );\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup(/* delayed = */ true);\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n }\n );\n };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n reason instanceof Error,\n '_abortOperatorList: Expected valid \"reason\" argument.'\n );\n }\n\n if (!intentState.streamReader) {\n return;\n }\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.size > 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < /* ms = */ 1000) {\n // Above, we prevent the total delay from becoming arbitrarily large.\n delay += reason.extraDelay;\n }\n\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({ intentState, reason, force: true });\n }, delay);\n return;\n }\n }\n intentState.streamReader\n .cancel(new AbortException(reason.message))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {StatTimer | null} Returns page stats, if enabled; returns `null`\n * otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n #listeners = new Set();\n\n #deferred = Promise.resolve();\n\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(\n obj,\n (typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"SKIP_BABEL || TESTING\")) &&\n transfer\n ? { transfer }\n : null\n ),\n };\n\n this.#deferred.then(() => {\n for (const listener of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this.#listeners.add(listener);\n }\n\n removeEventListener(name, listener) {\n this.#listeners.delete(listener);\n }\n\n terminate() {\n this.#listeners.clear();\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Worker} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n * the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0,\n};\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n // eslint-disable-next-line no-undef\n if (isNodeJS && typeof __non_webpack_require__ === \"function\") {\n // Workers aren't supported in Node.js, force-disabling them there.\n PDFWorkerUtil.isWorkerDisabled = true;\n\n PDFWorkerUtil.fallbackWorkerSrc = PDFJSDev.test(\"LIB\")\n ? \"../pdf.worker.js\"\n : \"./pdf.worker.js\";\n } else if (typeof document === \"object\") {\n const pdfjsFilePath = document?.currentScript?.src;\n if (pdfjsFilePath) {\n PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(\n /(\\.(?:min\\.)?js)(\\?.*)?$/i,\n \".worker$1$2\"\n );\n }\n }\n\n // Check if URLs have the same origin. For non-HTTP based URLs, returns false.\n PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n const wrapper = `importScripts(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n static #workerPorts = new WeakMap();\n\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel(),\n } = {}) {\n if (port && PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n\n this._readyCapability = new PromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n PDFWorker.#workerPorts.set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n\n /**\n * Promise for worker initialization completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._readyCapability.promise;\n }\n\n /**\n * The current `workerPort`, when it exists.\n * @type {Worker}\n */\n get port() {\n return this._port;\n }\n\n /**\n * The current MessageHandler-instance.\n * @type {MessageHandler}\n */\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {\n // Ignoring \"ready\" event -- MessageHandler should already be initialized\n // and ready to accept messages.\n });\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n }\n\n _initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if (\n !PDFWorkerUtil.isWorkerDisabled &&\n !PDFWorker._mainThreadWorkerMessageHandler\n ) {\n let { workerSrc } = PDFWorker;\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n !PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)\n ) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(\n new URL(workerSrc, window.location).href\n );\n }\n\n const worker =\n typeof PDFJSDev === \"undefined\" &&\n !workerSrc.endsWith(\"/build/pdf.worker.js\")\n ? new Worker(workerSrc, { type: \"module\" })\n : new Worker(workerSrc);\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch (e) {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array();\n // Ensure that we can use `postMessage` transfers.\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n\n // It might take time for the worker to initialize. We will try to send\n // the \"test\" message immediately, and once the \"ready\" message arrives.\n // The worker shall process only the first received \"test\" message.\n sendTest();\n return;\n } catch (e) {\n info(\"The worker has been disabled.\");\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal\n .then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n })\n .catch(reason => {\n this._readyCapability.reject(\n new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n );\n });\n }\n\n /**\n * Destroys the worker instance.\n */\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n if (this.#workerPorts.has(params.port)) {\n return this.#workerPorts.get(params.port);\n }\n return new PDFWorker(params);\n }\n\n /**\n * The current `workerSrc`, when it exists.\n * @type {string}\n */\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n PDFWorkerUtil.fallbackWorkerSrc !== null\n ) {\n if (!isNodeJS) {\n deprecated('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n static get _mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch (ex) {\n return null;\n }\n }\n\n // Loads worker code into the main-thread.\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n\n if (mainWorkerMessageHandler) {\n // The worker was already loaded using e.g. a `<script>` tag.\n return mainWorkerMessageHandler;\n }\n if (typeof PDFJSDev === \"undefined\") {\n const worker = await import(\"pdfjs/pdf.worker.js\");\n return worker.WorkerMessageHandler;\n }\n if (\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n // eslint-disable-next-line no-undef\n typeof __non_webpack_require__ === \"function\"\n ) {\n // Since bundlers, such as Webpack, cannot be told to leave `require`\n // statements alone we are thus forced to jump through hoops in order\n // to prevent `Critical dependency: ...` warnings in third-party\n // deployments of the built `pdf.js`/`pdf.worker.js` files; see\n // https://github.com/webpack/webpack/issues/8826\n //\n // The following hack is based on the assumption that code running in\n // Node.js won't ever be affected by e.g. Content Security Policies that\n // prevent the use of `eval`. If that ever occurs, we should revert this\n // to a normal `__non_webpack_require__` statement and simply document\n // the Webpack warnings instead (telling users to ignore them).\n //\n // eslint-disable-next-line no-eval\n const worker = eval(\"require\")(this.workerSrc);\n return worker.WorkerMessageHandler;\n }\n await loadScript(this.workerSrc);\n return window.pdfjsWorker.WorkerMessageHandler;\n };\n\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass WorkerTransport {\n #methodPromises = new Map();\n\n #pageCache = new Map();\n\n #pagePromises = new Map();\n\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._params = params;\n\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n\n this.destroyed = false;\n this.destroyCapability = null;\n this._passwordCapability = null;\n\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = new PromiseCapability();\n\n this.setupMessageHandler();\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"getXFADatasets\", {\n value: () => {\n return this.messageHandler.sendWithPromise(\"GetXFADatasets\", null);\n },\n });\n Object.defineProperty(this, \"getXRefPrevValue\", {\n value: () => {\n return this.messageHandler.sendWithPromise(\"GetXRefPrevValue\", null);\n },\n });\n }\n }\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\n this.#methodPromises.set(name, promise);\n return promise;\n }\n\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n\n getRenderingIntent(\n intent,\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isOpList = false\n ) {\n let renderingIntent = RenderingIntentFlag.DISPLAY; // Default value.\n let annotationMap = null;\n\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\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\n const annotationStorage =\n renderingIntent & RenderingIntentFlag.PRINT &&\n printAnnotationStorage instanceof PrintAnnotationStorage\n ? printAnnotationStorage\n : this.annotationStorage;\n\n annotationMap = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n\n return {\n renderingIntent,\n cacheKey: `${renderingIntent}_${AnnotationStorage.getHash(\n annotationMap\n )}`,\n annotationStorageMap: annotationMap,\n };\n }\n\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = new PromiseCapability();\n\n if (this._passwordCapability) {\n this._passwordCapability.reject(\n new Error(\"Worker was destroyed during onPassword callback\")\n );\n }\n\n const waitOn = [];\n // We need to wait for all renderings to be completed, e.g.\n // timeout/rAF can take a long time.\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n // Allow `AnnotationStorage`-related clean-up when destroying the document.\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n // We also need to wait for the worker to finish its long running tasks.\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n\n if (this._networkStream) {\n this._networkStream.cancelAllRequests(\n new AbortException(\"Worker was terminated.\")\n );\n }\n\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\n setupMessageHandler() {\n const { messageHandler, loadingTask } = this;\n\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(\n this._networkStream,\n \"GetReader - no `IPDFStream` instance available.\"\n );\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\n .read()\n .then(function ({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(\n value instanceof ArrayBuffer,\n \"GetReader - expected an ArrayBuffer.\"\n );\n // Enqueue data chunk into sink, and transfer it\n // to other side as `Transferable` object.\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n throw readyReason;\n });\n };\n });\n\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = new PromiseCapability();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n // If stream or range are disabled, it's our only way to report\n // loading progress.\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\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength,\n });\n }, headersCapability.reject);\n\n return headersCapability.promise;\n });\n\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(\n this._networkStream,\n \"GetRangeReader - no `IPDFStream` instance available.\"\n );\n const rangeReader = this._networkStream.getRangeReader(\n data.begin,\n data.end\n );\n\n // When streaming is enabled, it's possible that the data requested here\n // has already been fetched via the `_fullRequestReader` implementation.\n // However, given that the PDF data is loaded asynchronously on the\n // main-thread and then sent via `postMessage` to the worker-thread,\n // it may not have been available during parsing (hence the attempt to\n // use range requests here).\n //\n // To avoid wasting time and resources here, we'll thus *not* dispatch\n // range requests if the data was already loaded but has not been sent to\n // the worker-thread yet (which will happen via the `_fullRequestReader`).\n if (!rangeReader) {\n sink.close();\n return;\n }\n\n sink.onPull = () => {\n rangeReader\n .read()\n .then(function ({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(\n value instanceof ArrayBuffer,\n \"GetRangeReader - expected an ArrayBuffer.\"\n );\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n throw readyReason;\n });\n };\n });\n\n messageHandler.on(\"GetDoc\", ({ pdfInfo }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\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\n messageHandler.on(\"PasswordRequest\", exception => {\n this._passwordCapability = new PromiseCapability();\n\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n if (password instanceof Error) {\n this._passwordCapability.reject(password);\n } else {\n this._passwordCapability.resolve({ password });\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(\n new PasswordException(exception.message, exception.code)\n );\n }\n return this._passwordCapability.promise;\n });\n\n messageHandler.on(\"DataLoaded\", data => {\n // For consistency: Ensure that progress is always reported when the\n // entire PDF file has been loaded, regardless of how it was fetched.\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length,\n });\n\n this.downloadInfoCapability.resolve(data);\n });\n\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n if (this.commonObjs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Font\":\n const params = this._params;\n\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\n const inspectFont =\n params.pdfBug && globalThis.FontInspector?.enabled\n ? (font, url) => globalThis.FontInspector.fontAdded(font, url)\n : null;\n const font = new FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n inspectFont,\n });\n\n this.fontLoader\n .bind(font)\n .catch(reason => {\n return messageHandler.sendWithPromise(\"FontFallback\", { id });\n })\n .finally(() => {\n if (!params.fontExtraProperties && font.data) {\n // Immediately release the `font.data` property once the font\n // has been attached to the DOM, since it's no longer needed,\n // rather than waiting for a `PDFDocumentProxy.cleanup` call.\n // Since `font.data` could be very large, e.g. in some cases\n // multiple megabytes, this will help reduce memory usage.\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\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 });\n\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n // Ignore any pending requests if the worker was terminated.\n return;\n }\n\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n\n // Heuristic that will allow us not to store large data.\n if (imageData) {\n let length;\n if (imageData.bitmap) {\n const { width, height } = imageData;\n length = width * height * 4;\n } else {\n length = imageData.data?.length || 0;\n }\n\n if (length > MAX_IMAGE_SIZE_TO_CACHE) {\n pageProxy._maybeCleanupAfterRender = true;\n }\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\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total,\n });\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(\n new Error(\n \"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"\n )\n );\n }\n return this.cMapReaderFactory.fetch(data);\n });\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(\n new Error(\n \"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"\n )\n );\n }\n return this.standardFontDataFactory.fetch(data);\n });\n }\n\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\n \"saveDocument called while `annotationStorage` is empty, \" +\n \"please use the getData-method instead.\"\n );\n }\n return this.messageHandler\n .sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: this.annotationStorage.serializable,\n filename: this._fullReader?.filename ?? null,\n })\n .finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n\n getPage(pageNumber) {\n if (\n !Number.isInteger(pageNumber) ||\n pageNumber <= 0 ||\n pageNumber > this._numPages\n ) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler\n .sendWithPromise(\"GetPage\", {\n pageIndex,\n })\n .then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n const page = new PDFPageProxy(\n pageIndex,\n pageInfo,\n this,\n this._params.pdfBug\n );\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n\n getPageIndex(ref) {\n if (\n typeof ref !== \"object\" ||\n ref === null ||\n !Number.isInteger(ref.num) ||\n ref.num < 0 ||\n !Number.isInteger(ref.gen) ||\n ref.gen < 0\n ) {\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\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent,\n });\n }\n\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\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\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n\n getJavaScript() {\n return this.messageHandler.sendWithPromise(\"GetJavaScript\", null);\n }\n\n getDocJSActions() {\n return this.messageHandler.sendWithPromise(\"GetDocJSActions\", null);\n }\n\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex,\n });\n }\n\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex,\n });\n }\n\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n\n getOptionalContentConfig() {\n return this.messageHandler\n .sendWithPromise(\"GetOptionalContentConfig\", null)\n .then(results => {\n return new OptionalContentConfig(results);\n });\n }\n\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\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\n .sendWithPromise(name, null)\n .then(results => {\n return {\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 });\n this.#methodPromises.set(name, promise);\n return promise;\n }\n\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return; // No need to manually clean-up when destruction has started.\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n\n if (!cleanupSuccessful) {\n throw new Error(\n `startCleanup: Page ${page.pageNumber} is currently rendering.`\n );\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(/* keepHCM = */ true);\n }\n\n get loadingParams() {\n const { disableAutoFetch, enableXfa } = this._params;\n return shadow(this, \"loadingParams\", {\n disableAutoFetch,\n enableXfa,\n });\n }\n}\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects for\n * fonts, images, rendering code, etc. These objects may get processed inside of\n * a worker. This class implements some basic methods to manage these objects.\n */\nclass PDFObjects {\n #objs = Object.create(null);\n\n /**\n * Ensures there is an object defined for `objId`.\n *\n * @param {string} objId\n * @returns {Object}\n */\n #ensureObj(objId) {\n const obj = this.#objs[objId];\n if (obj) {\n return obj;\n }\n return (this.#objs[objId] = {\n capability: new PromiseCapability(),\n data: null,\n });\n }\n\n /**\n * If called *without* callback, this returns the data of `objId` but the\n * object needs to be resolved. If it isn't, this method throws.\n *\n * If called *with* a callback, the callback is called with the data of the\n * object once the object is resolved. That means, if you call this method\n * and the object is already resolved, the callback gets called right away.\n *\n * @param {string} objId\n * @param {function} [callback]\n * @returns {any}\n */\n get(objId, callback = null) {\n // If there is a callback, then the get can be async and the object is\n // not required to be resolved right now.\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.capability.promise.then(() => callback(obj.data));\n return null;\n }\n // If there isn't a callback, the user expects to get the resolved data\n // directly.\n const obj = this.#objs[objId];\n // If there isn't an object yet or the object isn't resolved, then the\n // data isn't ready yet!\n if (!obj?.capability.settled) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n\n /**\n * @param {string} objId\n * @returns {boolean}\n */\n has(objId) {\n const obj = this.#objs[objId];\n return obj?.capability.settled || false;\n }\n\n /**\n * Resolves the object `objId` with optional `data`.\n *\n * @param {string} objId\n * @param {any} [data]\n */\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.capability.resolve();\n }\n\n clear() {\n for (const objId in this.#objs) {\n const { data } = this.#objs[objId];\n data?.bitmap?.close(); // Release any `ImageBitmap` data.\n }\n this.#objs = Object.create(null);\n }\n}\n\n/**\n * Allows controlling of the rendering tasks.\n */\nclass RenderTask {\n #internalRenderTask = null;\n\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n\n /**\n * Callback for incremental rendering -- a function that will be called\n * each time the rendering is paused. To continue rendering call the\n * function that is the first argument to the callback.\n * @type {function}\n */\n this.onContinue = null;\n }\n\n /**\n * Promise for rendering task completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n\n /**\n * Cancels the rendering task. If the task is currently rendering it will\n * not be cancelled until graphics pauses with a timeout. The promise that\n * this object extends will be rejected when cancelled.\n *\n * @param {number} [extraDelay]\n */\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(/* error = */ null, extraDelay);\n }\n\n /**\n * Whether form fields are rendered separately from the main operatorList.\n * @type {boolean}\n */\n get separateAnnots() {\n const { separateAnnots } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const { annotationCanvasMap } = this.#internalRenderTask;\n return (\n separateAnnots.form ||\n (separateAnnots.canvas && annotationCanvasMap?.size > 0)\n );\n }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass InternalRenderTask {\n static #canvasInUse = new WeakSet();\n\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\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame =\n useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = new PromiseCapability();\n this.task = new RenderTask(this);\n // caching this-bound methods\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\n get completed() {\n return this.capability.promise.catch(function () {\n // Ignoring errors, since we only want to know when rendering is\n // no longer pending.\n });\n }\n\n initializeGraphics({ transparency = false, optionalContentConfig }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\n \"Cannot use the same canvas during multiple render() operations. \" +\n \"Use different canvas or ensure previous operations were \" +\n \"cancelled or completed.\"\n );\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\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 { canvasContext, viewport, transform, background } = this.params;\n\n this.gfx = new CanvasGraphics(\n canvasContext,\n this.commonObjs,\n this.objs,\n this.canvasFactory,\n this.filterFactory,\n { optionalContentConfig },\n this.annotationCanvasMap,\n this.pageColors\n );\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\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n\n if (this._canvas) {\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n }\n this.callback(\n error ||\n new RenderingCancelledException(\n `Rendering cancelled, page ${this._pageIndex + 1}`,\n \"canvas\",\n extraDelay\n )\n );\n }\n\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.stepper?.updateOperatorList(this.operatorList);\n\n if (this.running) {\n return;\n }\n this._continue();\n }\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\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(\n this.operatorList,\n this.operatorListIdx,\n this._continueBound,\n this.stepper\n );\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing(this.pageColors);\n if (this._canvas) {\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n }\n this.callback();\n }\n }\n }\n}\n\n/** @type {string} */\nconst version =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\n/** @type {string} */\nconst build =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : null;\n\nexport {\n build,\n DefaultCanvasFactory,\n DefaultCMapReaderFactory,\n DefaultFilterFactory,\n DefaultStandardFontDataFactory,\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFDocumentLoadingTask,\n PDFDocumentProxy,\n PDFPageProxy,\n PDFWorker,\n PDFWorkerUtil,\n RenderTask,\n version,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap, unreachable } from \"../shared/util.js\";\nimport { AnnotationEditor } from \"./editor/editor.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\n/**\n * Key/value storage for annotation data in forms.\n */\nclass AnnotationStorage {\n #modified = false;\n\n #storage = new Map();\n\n constructor() {\n // Callbacks to signal when the modification state is set or reset.\n // This is used by the viewer to only bind on `beforeunload` if forms\n // are actually edited to prevent doing so unconditionally since that\n // can have undesirable effects.\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n\n /**\n * Get the value for a given key if it exists, or return the default value.\n * @param {string} key\n * @param {Object} defaultValue\n * @returns {Object}\n */\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n\n return Object.assign(defaultValue, value);\n }\n\n /**\n * Get the value for a given key.\n * @param {string} key\n * @returns {Object}\n */\n getRawValue(key) {\n return this.#storage.get(key);\n }\n\n /**\n * Remove a value from the storage.\n * @param {string} key\n */\n remove(key) {\n this.#storage.delete(key);\n\n if (this.#storage.size === 0) {\n this.resetModified();\n }\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\n /**\n * Set the value for a given key\n * @param {string} key\n * @param {Object} value\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\n if (\n value instanceof AnnotationEditor &&\n typeof this.onAnnotationEditor === \"function\"\n ) {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n\n /**\n * Check if the storage contains the given key.\n * @param {string} key\n * @returns {boolean}\n */\n has(key) {\n return this.#storage.has(key);\n }\n\n /**\n * @returns {Object | null}\n */\n getAll() {\n return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n }\n\n /**\n * @param {Object} obj\n */\n setAll(obj) {\n for (const [key, val] of Object.entries(obj)) {\n this.setValue(key, val);\n }\n }\n\n get size() {\n return this.#storage.size;\n }\n\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\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\n /**\n * @returns {PrintAnnotationStorage}\n */\n get print() {\n return new PrintAnnotationStorage(this);\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get serializable() {\n if (this.#storage.size === 0) {\n return null;\n }\n const clone = new Map();\n\n for (const [key, val] of this.#storage) {\n const serialized =\n val instanceof AnnotationEditor ? val.serialize() : val;\n if (serialized) {\n clone.set(key, serialized);\n }\n }\n return clone;\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n static getHash(map) {\n if (!map) {\n return \"\";\n }\n const hash = new MurmurHash3_64();\n\n for (const [key, val] of map) {\n hash.update(`${key}:${JSON.stringify(val)}`);\n }\n return hash.hexdigest();\n }\n}\n\n/**\n * A special `AnnotationStorage` for use during printing, where the serializable\n * data is *frozen* upon initialization, to prevent scripting from modifying its\n * contents. (Necessary since printing is triggered synchronously in browsers.)\n */\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable = null;\n\n constructor(parent) {\n super();\n // Create a *copy* of the data, since Objects are passed by reference in JS.\n this.#serializable = structuredClone(parent.serializable);\n }\n\n /**\n * @returns {PrintAnnotationStorage}\n */\n // eslint-disable-next-line getter-return\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get serializable() {\n return this.#serializable;\n }\n}\n\nexport { AnnotationStorage, PrintAnnotationStorage };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./tools.js\").AnnotationEditorUIManager} AnnotationEditorUIManager */\n\nimport { bindEvents, ColorManager } from \"./tools.js\";\nimport { FeatureTest, shadow, unreachable } from \"../../shared/util.js\";\n\n/**\n * @typedef {Object} AnnotationEditorParameters\n * @property {AnnotationEditorUIManager} uiManager - the global manager\n * @property {AnnotationEditorLayer} parent - the layer containing this editor\n * @property {string} id - editor id\n * @property {number} x - x-coordinate\n * @property {number} y - y-coordinate\n */\n\n/**\n * Base class for editors.\n */\nclass AnnotationEditor {\n #boundFocusin = this.focusin.bind(this);\n\n #boundFocusout = this.focusout.bind(this);\n\n #hasBeenSelected = false;\n\n #isEditing = false;\n\n #isInEditMode = false;\n\n _uiManager = null;\n\n #zIndex = AnnotationEditor._zIndex++;\n\n static _colorManager = new ColorManager();\n\n static _zIndex = 1;\n\n /**\n * @param {AnnotationEditorParameters} parameters\n */\n constructor(parameters) {\n if (this.constructor === AnnotationEditor) {\n unreachable(\"Cannot initialize AnnotationEditor.\");\n }\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\n const {\n rotation,\n rawDims: { pageWidth, pageHeight, pageX, pageY },\n } = this.parent.viewport;\n\n this.rotation = rotation;\n this.pageRotation =\n (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n\n this.isAttachedToDOM = false;\n }\n\n static get _defaultLineColor() {\n return shadow(\n this,\n \"_defaultLineColor\",\n this._colorManager.getHexCode(\"CanvasText\")\n );\n }\n\n /**\n * Add some commands into the CommandManager (undo/redo stuff).\n * @param {Object} params\n */\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n\n /**\n * This editor will be behind the others.\n */\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n\n /**\n * This editor will be in the foreground.\n */\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n }\n this.parent = parent;\n }\n\n /**\n * onfocus callback.\n */\n focusin(event) {\n if (!this.#hasBeenSelected) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenSelected = false;\n }\n }\n\n /**\n * onblur callback.\n * @param {FocusEvent} event\n */\n focusout(event) {\n if (!this.isAttachedToDOM) {\n return;\n }\n\n // In case of focusout, the relatedTarget is the element which\n // is grabbing the focus.\n // So if the related target is an element under the div for this\n // editor, then the editor isn't unactive.\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n\n event.preventDefault();\n\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n\n /**\n * Commit the data contained in this editor.\n */\n commit() {\n this.addToAnnotationStorage();\n }\n\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n\n /**\n * We use drag-and-drop in order to move an editor on a page.\n * @param {DragEvent} event\n */\n dragstart(event) {\n const rect = this.parent.div.getBoundingClientRect();\n this.startX = event.clientX - rect.x;\n this.startY = event.clientY - rect.y;\n event.dataTransfer.setData(\"text/plain\", this.id);\n event.dataTransfer.effectAllowed = \"move\";\n }\n\n /**\n * Set the editor position within its parent.\n * @param {number} x\n * @param {number} y\n * @param {number} tx - x-translation in screen coordinates.\n * @param {number} ty - y-translation in screen coordinates.\n */\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n\n this.div.style.left = `${100 * this.x}%`;\n this.div.style.top = `${100 * this.y}%`;\n }\n\n /**\n * Translate the editor position within its parent.\n * @param {number} x - x-translation in screen coordinates.\n * @param {number} y - y-translation in screen coordinates.\n */\n translate(x, y) {\n const [width, height] = this.parentDimensions;\n [x, y] = this.screenToPageTranslation(x, y);\n\n this.x += x / width;\n this.y += y / height;\n\n this.div.style.left = `${100 * this.x}%`;\n this.div.style.top = `${100 * this.y}%`;\n }\n\n /**\n * Convert a screen translation into a page one.\n * @param {number} x\n * @param {number} y\n */\n screenToPageTranslation(x, y) {\n switch (this.parentRotation) {\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\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n\n get parentDimensions() {\n const { realScale } = this._uiManager.viewParameters;\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [pageWidth * realScale, pageHeight * realScale];\n }\n\n /**\n * Set the dimensions of this editor.\n * @param {number} width\n * @param {number} height\n */\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.div.style.width = `${(100 * width) / parentWidth}%`;\n this.div.style.height = `${(100 * height) / parentHeight}%`;\n }\n\n fixDims() {\n const { style } = this.div;\n const { height, width } = style;\n const widthPercent = width.endsWith(\"%\");\n const heightPercent = height.endsWith(\"%\");\n if (widthPercent && heightPercent) {\n return;\n }\n\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (!widthPercent) {\n style.width = `${(100 * parseFloat(width)) / parentWidth}%`;\n }\n if (!heightPercent) {\n style.height = `${(100 * parseFloat(height)) / parentHeight}%`;\n }\n }\n\n /**\n * Get the translation used to position this editor when it's created.\n * @returns {Array<number>}\n */\n getInitialTranslation() {\n return [0, 0];\n }\n\n /**\n * Render this editor in a div.\n * @returns {HTMLDivElement}\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.setAttribute(\"tabIndex\", 0);\n\n this.setInForeground();\n\n this.div.addEventListener(\"focusin\", this.#boundFocusin);\n this.div.addEventListener(\"focusout\", this.#boundFocusout);\n\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n\n bindEvents(this, this.div, [\"dragstart\", \"pointerdown\"]);\n\n return this.div;\n }\n\n /**\n * Onpointerdown callback.\n * @param {PointerEvent} event\n */\n pointerdown(event) {\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n // Avoid to focus this editor because of a non-left click.\n event.preventDefault();\n return;\n }\n\n if (\n (event.ctrlKey && !isMac) ||\n event.shiftKey ||\n (event.metaKey && isMac)\n ) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n\n this.#hasBeenSelected = true;\n }\n\n getRect(tx, ty) {\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\n switch (this.rotation) {\n case 0:\n return [\n x + shiftX + pageX,\n pageHeight - y - shiftY - height + pageY,\n x + shiftX + width + pageX,\n pageHeight - y - shiftY + pageY,\n ];\n case 90:\n return [\n x + shiftY + pageX,\n pageHeight - y + shiftX + pageY,\n x + shiftY + height + pageX,\n pageHeight - y + shiftX + width + pageY,\n ];\n case 180:\n return [\n x - shiftX - width + pageX,\n pageHeight - y + shiftY + pageY,\n x - shiftX + pageX,\n pageHeight - y + shiftY + height + pageY,\n ];\n case 270:\n return [\n x - shiftY - height + pageX,\n pageHeight - y - shiftX - width + pageY,\n x - shiftY + pageX,\n pageHeight - y - shiftX + pageY,\n ];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n\n const width = x2 - x1;\n const height = y2 - y1;\n\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\n /**\n * Executed once this editor has been rendered.\n */\n onceAdded() {}\n\n /**\n * Check if the editor contains something.\n * @returns {boolean}\n */\n isEmpty() {\n return false;\n }\n\n /**\n * Enable edit mode.\n */\n enableEditMode() {\n this.#isInEditMode = true;\n }\n\n /**\n * Disable edit mode.\n */\n disableEditMode() {\n this.#isInEditMode = false;\n }\n\n /**\n * Check if the editor is edited.\n * @returns {boolean}\n */\n isInEditMode() {\n return this.#isInEditMode;\n }\n\n /**\n * If it returns true, then this editor handle the keyboard\n * events itself.\n * @returns {boolean}\n */\n shouldGetKeyboardEvents() {\n return false;\n }\n\n /**\n * Check if this editor needs to be rebuilt or not.\n * @returns {boolean}\n */\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n\n /**\n * Rebuild the editor in case it has been removed on undo.\n *\n * To implement in subclasses.\n */\n rebuild() {\n this.div?.addEventListener(\"focusin\", this.#boundFocusin);\n }\n\n /**\n * Serialize the editor.\n * The result of the serialization will be used to construct a\n * new annotation to add to the pdf document.\n *\n * To implement in subclasses.\n */\n serialize() {\n unreachable(\"An editor must be serializable\");\n }\n\n /**\n * Deserialize the editor.\n * The result of the deserialization is a new editor.\n *\n * @param {Object} data\n * @param {AnnotationEditorLayer} parent\n * @param {AnnotationEditorUIManager} uiManager\n * @returns {AnnotationEditor}\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\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(\n data.rect,\n pageHeight\n );\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n\n return editor;\n }\n\n /**\n * Remove this editor.\n * It's used on ctrl+backspace action.\n */\n remove() {\n this.div.removeEventListener(\"focusin\", this.#boundFocusin);\n this.div.removeEventListener(\"focusout\", this.#boundFocusout);\n\n if (!this.isEmpty()) {\n // The editor is removed but it can be back at some point thanks to\n // undo/redo so we must commit it before.\n this.commit();\n }\n this.parent.remove(this);\n }\n\n /**\n * Select this editor.\n */\n select() {\n this.div?.classList.add(\"selectedEditor\");\n }\n\n /**\n * Unselect this editor.\n */\n unselect() {\n this.div?.classList.remove(\"selectedEditor\");\n }\n\n /**\n * Update some parameters which have been changed through the UI.\n * @param {number} type\n * @param {*} value\n */\n updateParams(type, value) {}\n\n /**\n * When the user disables the editing mode some editors can change some of\n * their properties.\n */\n disableEditing() {}\n\n /**\n * When the user enables the editing mode some editors can change some of\n * their properties.\n */\n enableEditing() {}\n\n /**\n * Get some properties to update in the UI.\n * @returns {Object}\n */\n get propertiesToUpdate() {\n return {};\n }\n\n /**\n * Get the div which really contains the displayed content.\n */\n get contentDiv() {\n return this.div;\n }\n\n /**\n * If true then the editor is currently edited.\n * @type {boolean}\n */\n get isEditing() {\n return this.#isEditing;\n }\n\n /**\n * When set to true, it means that this editor is currently edited.\n * @param {boolean} value\n */\n set isEditing(value) {\n this.#isEditing = value;\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n}\n\nexport { AnnotationEditor };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./editor.js\").AnnotationEditor} AnnotationEditor */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n AnnotationEditorPrefix,\n AnnotationEditorType,\n FeatureTest,\n shadow,\n Util,\n warn,\n} from \"../../shared/util.js\";\nimport { getColorValues, getRGB, PixelsPerInch } from \"../display_utils.js\";\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\n\n/**\n * Convert a number between 0 and 100 into an hex number between 0 and 255.\n * @param {number} opacity\n * @return {string}\n */\nfunction opacityToHex(opacity) {\n return Math.round(Math.min(255, Math.max(1, 255 * opacity)))\n .toString(16)\n .padStart(2, \"0\");\n}\n\n/**\n * Class to create some unique ids for the different editors.\n */\nclass IdManager {\n #id = 0;\n\n /**\n * Get a unique id.\n * @returns {string}\n */\n getId() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\n\n/**\n * Class to handle undo/redo.\n * Commands are just saved in a buffer.\n * If we hit some memory issues we could likely use a circular buffer.\n * It has to be used as a singleton.\n */\nclass CommandManager {\n #commands = [];\n\n #locked = false;\n\n #maxSize;\n\n #position = -1;\n\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n\n /**\n * @typedef {Object} addOptions\n * @property {function} cmd\n * @property {function} undo\n * @property {boolean} mustExec\n * @property {number} type\n * @property {boolean} overwriteIfSameType\n * @property {boolean} keepUndo\n */\n\n /**\n * Add a new couple of commands to be used in case of redo/undo.\n * @param {addOptions} options\n */\n add({\n cmd,\n undo,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false,\n }) {\n if (mustExec) {\n cmd();\n }\n\n if (this.#locked) {\n return;\n }\n\n const save = { cmd, undo, type };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n // All the commands have been undone and then a new one is added\n // hence we clear the queue.\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n // For example when we change a color we don't want to\n // be able to undo all the steps, hence we only want to\n // keep the last undoable action in this sequence of actions.\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\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\n this.#commands.push(save);\n }\n\n /**\n * Undo the last command.\n */\n undo() {\n if (this.#position === -1) {\n // Nothing to undo.\n return;\n }\n\n // Avoid to insert something during the undo execution.\n this.#locked = true;\n this.#commands[this.#position].undo();\n this.#locked = false;\n\n this.#position -= 1;\n }\n\n /**\n * Redo the last command.\n */\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n\n // Avoid to insert something during the redo execution.\n this.#locked = true;\n this.#commands[this.#position].cmd();\n this.#locked = false;\n }\n }\n\n /**\n * Check if there is something to undo.\n * @returns {boolean}\n */\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n\n /**\n * Check if there is something to redo.\n * @returns {boolean}\n */\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n\n destroy() {\n this.#commands = null;\n }\n}\n\n/**\n * Class to handle the different keyboards shortcuts we can have on mac or\n * non-mac OSes.\n */\nclass KeyboardManager {\n /**\n * Create a new keyboard manager class.\n * @param {Array<Array>} callbacks - an array containing an array of shortcuts\n * and a callback to call.\n * A shortcut is a string like `ctrl+c` or `mac+ctrl+c` for mac OS.\n */\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n\n const { isMac } = FeatureTest.platform;\n for (const [keys, callback] 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), callback);\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, callback);\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n\n /**\n * Serialize an event into a string in order to match a\n * potential key for a callback.\n * @param {KeyboardEvent} event\n * @returns {string}\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\n return str;\n }\n\n /**\n * Execute a callback, if any, for a given keyboard event.\n * The self is used as `this` in the callback.\n * @param {Object} self.\n * @param {KeyboardEvent} event\n * @returns\n */\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const callback = this.callbacks.get(this.#serialize(event));\n if (!callback) {\n return;\n }\n callback.bind(self)();\n event.stopPropagation();\n event.preventDefault();\n }\n}\n\nclass ColorManager {\n static _colorsMapping = new Map([\n [\"CanvasText\", [0, 0, 0]],\n [\"Canvas\", [255, 255, 255]],\n ]);\n\n get _colors() {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"LIB\") &&\n typeof document === \"undefined\"\n ) {\n return shadow(this, \"_colors\", ColorManager._colorsMapping);\n }\n\n const colors = new Map([\n [\"CanvasText\", null],\n [\"Canvas\", null],\n ]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n\n /**\n * In High Contrast Mode, the color on the screen is not always the\n * real color used in the pdf.\n * For example in some cases white can appear to be black but when saving\n * we want to have white.\n * @param {string} color\n * @returns {Array<number>}\n */\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\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\n /**\n * An input element must have its color value as a hex string\n * and not as color name.\n * So this function converts a name into an hex string.\n * @param {string} name\n * @returns {string}\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}\n\n/**\n * A pdf has several pages and each of them when it will rendered\n * will have an AnnotationEditorLayer which will contain the some\n * new Annotations associated to an editor in order to modify them.\n *\n * This class is used to manage all the different layers, editors and\n * some action like copy/paste, undo/redo, ...\n */\nclass AnnotationEditorUIManager {\n #activeEditor = null;\n\n #allEditors = new Map();\n\n #allLayers = new Map();\n\n #annotationStorage = null;\n\n #commandManager = new CommandManager();\n\n #currentPageIndex = 0;\n\n #editorTypes = null;\n\n #editorsToRescale = new Set();\n\n #eventBus = null;\n\n #idManager = new IdManager();\n\n #isEnabled = false;\n\n #mode = AnnotationEditorType.NONE;\n\n #selectedEditors = new Set();\n\n #boundCopy = this.copy.bind(this);\n\n #boundCut = this.cut.bind(this);\n\n #boundPaste = this.paste.bind(this);\n\n #boundKeydown = this.keydown.bind(this);\n\n #boundOnEditingAction = this.onEditingAction.bind(this);\n\n #boundOnPageChanging = this.onPageChanging.bind(this);\n\n #boundOnScaleChanging = this.onScaleChanging.bind(this);\n\n #boundOnRotationChanging = this.onRotationChanging.bind(this);\n\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n };\n\n #container = null;\n\n static _keyboardManager = new KeyboardManager([\n [[\"ctrl+a\", \"mac+meta+a\"], AnnotationEditorUIManager.prototype.selectAll],\n [[\"ctrl+z\", \"mac+meta+z\"], AnnotationEditorUIManager.prototype.undo],\n [\n [\"ctrl+y\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"],\n AnnotationEditorUIManager.prototype.redo,\n ],\n [\n [\n \"Backspace\",\n \"alt+Backspace\",\n \"ctrl+Backspace\",\n \"shift+Backspace\",\n \"mac+Backspace\",\n \"mac+alt+Backspace\",\n \"mac+ctrl+Backspace\",\n \"Delete\",\n \"ctrl+Delete\",\n \"shift+Delete\",\n ],\n AnnotationEditorUIManager.prototype.delete,\n ],\n [[\"Escape\", \"mac+Escape\"], AnnotationEditorUIManager.prototype.unselectAll],\n ]);\n\n constructor(container, eventBus, annotationStorage) {\n this.#container = container;\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.#annotationStorage = annotationStorage;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0,\n };\n }\n\n destroy() {\n this.#removeKeyboardManager();\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 }\n\n onPageChanging({ pageNumber }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n\n focusMainContainer() {\n this.#container.focus();\n }\n\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n\n onScaleChanging({ scale }) {\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\n onRotationChanging({ pagesRotation }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n\n /**\n * Add an editor in the annotation storage.\n * @param {AnnotationEditor} editor\n */\n addToAnnotationStorage(editor) {\n if (\n !editor.isEmpty() &&\n this.#annotationStorage &&\n !this.#annotationStorage.has(editor.id)\n ) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n\n #addKeyboardManager() {\n // The keyboard events are caught at the container level in order to be able\n // to execute some callbacks even if the current page doesn't have focus.\n this.#container.addEventListener(\"keydown\", this.#boundKeydown);\n }\n\n #removeKeyboardManager() {\n this.#container.removeEventListener(\"keydown\", this.#boundKeydown);\n }\n\n #addCopyPasteListeners() {\n document.addEventListener(\"copy\", this.#boundCopy);\n document.addEventListener(\"cut\", this.#boundCut);\n document.addEventListener(\"paste\", this.#boundPaste);\n }\n\n #removeCopyPasteListeners() {\n document.removeEventListener(\"copy\", this.#boundCopy);\n document.removeEventListener(\"cut\", this.#boundCut);\n document.removeEventListener(\"paste\", this.#boundPaste);\n }\n\n /**\n * Copy callback.\n * @param {ClipboardEvent} event\n */\n copy(event) {\n event.preventDefault();\n\n if (this.#activeEditor) {\n // An editor is being edited so just commit it.\n this.#activeEditor.commitOrRemove();\n }\n\n if (!this.hasSelection) {\n return;\n }\n\n const editors = [];\n for (const editor of this.#selectedEditors) {\n if (!editor.isEmpty()) {\n editors.push(editor.serialize());\n }\n }\n if (editors.length === 0) {\n return;\n }\n\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n\n /**\n * Cut callback.\n * @param {ClipboardEvent} event\n */\n cut(event) {\n this.copy(event);\n this.delete();\n }\n\n /**\n * Paste callback.\n * @param {ClipboardEvent} event\n */\n paste(event) {\n event.preventDefault();\n\n let data = event.clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n\n if (!Array.isArray(data)) {\n return;\n }\n\n this.unselectAll();\n const layer = this.#allLayers.get(this.#currentPageIndex);\n\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\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({ cmd, undo, mustExec: true });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n\n /**\n * Keydown callback.\n * @param {KeyboardEvent} event\n */\n keydown(event) {\n if (!this.getActive()?.shouldGetKeyboardEvents()) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n\n /**\n * Execute an action for a given name.\n * For example, the user can click on the \"Undo\" entry in the context menu\n * and it'll trigger the undo action.\n * @param {Object} details\n */\n onEditingAction(details) {\n if ([\"undo\", \"redo\", \"delete\", \"selectAll\"].includes(details.name)) {\n this[details.name]();\n }\n }\n\n /**\n * Update the different possible states of this manager, e.g. is there\n * something to undo, redo, ...\n * @param {Object} details\n */\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(\n ([key, value]) => this.#previousStates[key] !== value\n );\n\n if (hasChanged) {\n this.#eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details),\n });\n }\n }\n\n #dispatchUpdateUI(details) {\n this.#eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details,\n });\n }\n\n /**\n * Set the editing state.\n * It can be useful to temporarily disable it when the user is editing a\n * FreeText annotation.\n * @param {boolean} isEditing\n */\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addKeyboardManager();\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.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false,\n });\n }\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\n /**\n * Get an id.\n * @returns {string}\n */\n getId() {\n return this.#idManager.getId();\n }\n\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n\n /**\n * Add a new layer for a page which will contains the editors.\n * @param {AnnotationEditorLayer} layer\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\n /**\n * Remove a layer.\n * @param {AnnotationEditorLayer} layer\n */\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n\n /**\n * Change the editor mode (None, FreeText, Ink, ...)\n * @param {number} mode\n */\n updateMode(mode) {\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n } else {\n this.setEditingState(true);\n this.#enableAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n }\n }\n\n /**\n * Update the toolbar if it's required to reflect the tool currently used.\n * @param {number} mode\n * @returns {undefined}\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\n /**\n * Update a parameter in the current editor or globally.\n * @param {number} type\n * @param {*} value\n */\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n\n /**\n * Enable all the layers.\n */\n #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n for (const layer of this.#allLayers.values()) {\n layer.enable();\n }\n }\n }\n\n /**\n * Disable all the layers.\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 }\n }\n\n /**\n * Get all the editors belonging to a give page.\n * @param {number} pageIndex\n * @returns {Array<AnnotationEditor>}\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\n /**\n * Get an editor with the given id.\n * @param {string} id\n * @returns {AnnotationEditor}\n */\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n\n /**\n * Add a new editor.\n * @param {AnnotationEditor} editor\n */\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n\n /**\n * Remove an editor.\n * @param {AnnotationEditor} editor\n */\n removeEditor(editor) {\n this.#allEditors.delete(editor.id);\n this.unselect(editor);\n this.#annotationStorage?.remove(editor.id);\n }\n\n /**\n * Add an editor to the layer it belongs to or add it to the global map.\n * @param {AnnotationEditor} editor\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 }\n }\n\n /**\n * Set the given editor as the active one.\n * @param {AnnotationEditor} editor\n */\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n\n /**\n * Add or remove an editor the current selection.\n * @param {AnnotationEditor} editor\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\n /**\n * Set the last selected editor.\n * @param {AnnotationEditor} editor\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\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true,\n });\n }\n\n /**\n * Check if the editor is selected.\n * @param {AnnotationEditor} editor\n */\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n\n /**\n * Unselect an editor.\n * @param {AnnotationEditor} editor\n */\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection,\n });\n }\n\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n\n /**\n * Undo the last command.\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\n /**\n * Redo the last undoed command.\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\n /**\n * Add a command to execute (cmd) and another one to undo it.\n * @param {Object} params\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\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n\n return false;\n }\n\n /**\n * Delete the current editor or all.\n */\n delete() {\n this.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\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\n this.addCommands({ cmd, undo, mustExec: true });\n }\n\n commitOrRemove() {\n // An editor is being edited so just commit it.\n this.#activeEditor?.commitOrRemove();\n }\n\n /**\n * Select the editors.\n * @param {Array<AnnotationEditor>} editors\n */\n #selectEditors(editors) {\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({ hasSelectedEditor: true });\n }\n\n /**\n * Select all the editors.\n */\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n\n /**\n * Unselect all the selected editors.\n */\n unselectAll() {\n if (this.#activeEditor) {\n // An editor is being edited so just commit it.\n this.#activeEditor.commitOrRemove();\n return;\n }\n\n if (this.#selectedEditors.size === 0) {\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\n /**\n * Is the current editor the one passed as argument?\n * @param {AnnotationEditor} editor\n * @returns\n */\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n\n /**\n * Get the current active editor.\n * @returns {AnnotationEditor|null}\n */\n getActive() {\n return this.#activeEditor;\n }\n\n /**\n * Get the current editor mode.\n * @returns {number}\n */\n getMode() {\n return this.#mode;\n }\n}\n\nexport {\n AnnotationEditorUIManager,\n bindEvents,\n ColorManager,\n CommandManager,\n KeyboardManager,\n opacityToHex,\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 */\n\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseFilterFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n} from \"./base_factory.js\";\nimport {\n BaseException,\n shadow,\n stringToBytes,\n Util,\n warn,\n} from \"../shared/util.js\";\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\n\nclass PixelsPerInch {\n static CSS = 96.0;\n\n static PDF = 72.0;\n\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\n\n/**\n * FilterFactory aims to create some SVG filters we can use when drawing an\n * image (or whatever) on a canvas.\n * Filters aren't applied with ctx.putImageData because it just overwrites the\n * underlying pixels.\n * With these filters, it's possible for example to apply some transfer maps on\n * an image without the need to apply them on the pixel arrays: the renderer\n * does the magic for us.\n */\nclass DOMFilterFactory extends BaseFilterFactory {\n #_cache;\n\n #_defs;\n\n #docId;\n\n #document;\n\n #hcmFilter;\n\n #hcmKey;\n\n #hcmUrl;\n\n #id = 0;\n\n constructor({ docId, ownerDocument = globalThis.document } = {}) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n\n get #cache() {\n return (this.#_cache ||= new Map());\n }\n\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const { style } = 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\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\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\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n\n // When a page is zoomed the page is re-drawn but the maps are likely\n // the same.\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n\n let tableR, tableG, tableB, key;\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 key = tableR = tableG = tableB = buffer.join(\",\");\n } else {\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 tableR = bufferR.join(\",\");\n tableG = bufferG.join(\",\");\n tableB = bufferB.join(\",\");\n key = `${tableR}${tableG}${tableB}`;\n }\n\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n\n // We create a SVG filter: feComponentTransferElement\n // https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement\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\n const filter = this.#document.createElementNS(SVG_NS, \"filter\", SVG_NS);\n filter.setAttribute(\"id\", id);\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n const feComponentTransfer = this.#document.createElementNS(\n SVG_NS,\n \"feComponentTransfer\"\n );\n filter.append(feComponentTransfer);\n\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", tableR);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", tableG);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", tableB);\n\n this.#defs.append(filter);\n\n return url;\n }\n\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n if (this.#hcmKey === key) {\n return this.#hcmUrl;\n }\n\n this.#hcmKey = key;\n this.#hcmUrl = \"none\";\n this.#hcmFilter?.remove();\n\n if (!fgColor || !bgColor) {\n return this.#hcmUrl;\n }\n\n this.#defs.style.color = fgColor;\n fgColor = getComputedStyle(this.#defs).getPropertyValue(\"color\");\n const fgRGB = getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n this.#defs.style.color = bgColor;\n bgColor = getComputedStyle(this.#defs).getPropertyValue(\"color\");\n const bgRGB = getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n\n if (\n (fgColor === \"#000000\" && bgColor === \"#ffffff\") ||\n fgColor === bgColor\n ) {\n return this.#hcmUrl;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Understanding_Colors_and_Luminance\n //\n // Relative luminance:\n // https://www.w3.org/TR/WCAG20/#relativeluminancedef\n //\n // We compute the rounded luminance of the default background color.\n // Then for every color in the pdf, if its rounded luminance is the\n // same as the background one then it's replaced by the new\n // background color else by the foreground one.\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\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = (this.#hcmFilter = this.#document.createElementNS(\n SVG_NS,\n \"filter\",\n SVG_NS\n ));\n filter.setAttribute(\"id\", id);\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n let feComponentTransfer = this.#document.createElementNS(\n SVG_NS,\n \"feComponentTransfer\"\n );\n filter.append(feComponentTransfer);\n\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", table);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", table);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", table);\n\n const feColorMatrix = this.#document.createElementNS(\n SVG_NS,\n \"feColorMatrix\"\n );\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\n \"values\",\n \"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 );\n filter.append(feColorMatrix);\n\n feComponentTransfer = this.#document.createElementNS(\n SVG_NS,\n \"feComponentTransfer\"\n );\n filter.append(feComponentTransfer);\n\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.#appendFeFunc(feComponentTransfer, \"feFuncR\", getSteps(0, 5));\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", getSteps(1, 5));\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", getSteps(2, 5));\n\n this.#defs.append(filter);\n\n this.#hcmUrl = `url(#${id})`;\n return this.#hcmUrl;\n }\n\n destroy(keepHCM = false) {\n if (keepHCM && this.#hcmUrl) {\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}\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({ ownerDocument = globalThis.document } = {}) {\n super();\n this._document = ownerDocument;\n }\n\n /**\n * @ignore\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}\n\nasync function fetchData(url, asTypedArray = false) {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n isValidFetchUrl(url, document.baseURI)\n ) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n return asTypedArray\n ? new Uint8Array(await response.arrayBuffer())\n : stringToBytes(await response.text());\n }\n\n // The Fetch API is not supported.\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, /* asTypedArray = */ true);\n\n if (asTypedArray) {\n request.responseType = \"arraybuffer\";\n }\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n let data;\n if (asTypedArray && request.response) {\n data = new Uint8Array(request.response);\n } else if (!asTypedArray && request.responseText) {\n data = stringToBytes(request.responseText);\n }\n if (data) {\n resolve(data);\n return;\n }\n }\n reject(new Error(request.statusText));\n };\n\n request.send(null);\n });\n}\n\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n /**\n * @ignore\n */\n _fetchData(url, compressionType) {\n return fetchData(url, /* asTypedArray = */ this.isCompressed).then(data => {\n return { cMapData: data, compressionType };\n });\n }\n}\n\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n /**\n * @ignore\n */\n _fetchData(url) {\n return fetchData(url, /* asTypedArray = */ true);\n }\n}\n\nclass DOMSVGFactory extends BaseSVGFactory {\n /**\n * @ignore\n */\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array<number>} viewBox - The xMin, yMin, xMax and\n * yMax coordinates.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\n * default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\n * default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} [scale] - The scale, overriding the one in the cloned\n * viewport. The default value is `this.scale`.\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\n * in the cloned viewport. The default value is `this.rotation`.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `this.offsetX`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `this.offsetY`.\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n /**\n * @param {PageViewportParameters}\n */\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\n // creating transform to convert pdf coordinate system to the normal\n // canvas like coordinates taking in account scale and rotation\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n // Normalize the rotation, by clamping it to the [0, 360) range.\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(\n \"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\"\n );\n }\n\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\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 // creating transform for the following operations:\n // translate(-centerX, -centerY), rotate and flip vertically,\n // scale, and translate(offsetCanvasX, offsetCanvasY)\n this.transform = [\n rotateA * scale,\n rotateB * scale,\n rotateC * scale,\n rotateD * scale,\n offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\n ];\n\n this.width = width;\n this.height = height;\n }\n\n /**\n * The original, un-scaled, viewport dimensions.\n * @type {Object}\n */\n get rawDims() {\n const { viewBox } = 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\n /**\n * Clones viewport, with optional additional properties.\n * @param {PageViewportCloneParameters} [params]\n * @returns {PageViewport} Cloned viewport.\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\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Array} Array containing `x`- and `y`-coordinates of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n * @returns {Array} Array containing corresponding coordinates of the\n * rectangle in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\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\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Array} Array containing `x`- and `y`-coordinates of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\n\nclass RenderingCancelledException extends BaseException {\n constructor(msg, type, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.type = type;\n this.extraDelay = extraDelay;\n }\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}\n\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\n/**\n * Gets the filename from a given URL.\n * @param {string} url\n * @param {boolean} [onlyStripPath]\n * @returns {string}\n */\nfunction getFilenameFromUrl(url, onlyStripPath = false) {\n if (!onlyStripPath) {\n [url] = url.split(/[#?]/, 1);\n }\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\n\n/**\n * Returns the filename or guessed filename from the url (see issue 3455).\n * @param {string} url - The original PDF location.\n * @param {string} defaultFilename - The value returned if the filename is\n * unknown, or the protocol is unsupported.\n * @returns {string} Guessed PDF filename.\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 // SCHEME HOST 1.PATH 2.QUERY 3.REF\n // Pattern to get last matching NAME.pdf\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename =\n reFilename.exec(splitURI[1]) ||\n reFilename.exec(splitURI[2]) ||\n reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf\n try {\n suggestedFilename = reFilename.exec(\n decodeURIComponent(suggestedFilename)\n )[0];\n } catch (ex) {\n // Possible (extremely rare) errors:\n // URIError \"Malformed URI\", e.g. for \"%AA.pdf\"\n // TypeError \"null has no properties\", e.g. for \"%2F.pdf\"\n }\n }\n }\n return suggestedFilename || defaultFilename;\n}\n\nclass StatTimer {\n started = Object.create(null);\n\n times = [];\n\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\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 // Remove timer from started so it can be called again.\n delete this.started[name];\n }\n\n toString() {\n // Find the longest name for padding purposes.\n const outBuf = [];\n let longest = 0;\n for (const { name } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const { name, start, end } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n // The Fetch API only supports the http/https protocols, and not file/ftp.\n return protocol === \"http:\" || protocol === \"https:\";\n } catch (ex) {\n return false; // `new URL()` will throw on incorrect data.\n }\n}\n\n/**\n * @param {string} src\n * @param {boolean} [removeScriptElement]\n * @returns {Promise<void>}\n */\nfunction loadScript(src, removeScriptElement = false) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n\n script.onload = function (evt) {\n if (removeScriptElement) {\n script.remove();\n }\n resolve(evt);\n };\n script.onerror = function () {\n reject(new Error(`Cannot load script at: ${script.src}`));\n };\n (document.head || document.documentElement).append(script);\n });\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n /**\n * Convert a PDF date string to a JavaScript `Date` object.\n *\n * The PDF date string format is described in section 7.9.4 of the official\n * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\n * edition) Adobe describes the same format including a trailing apostrophe.\n * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\n * them. We ignore all apostrophes as they are not necessary for date parsing.\n *\n * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\n * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\n * parts of the date string).\n *\n * @param {string} input\n * @returns {Date|null}\n */\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n\n // Lazily initialize the regular expression.\n pdfDateStringRegex ||= new RegExp(\n \"^D:\" + // Prefix (required)\n \"(\\\\d{4})\" + // Year (required)\n \"(\\\\d{2})?\" + // Month (optional)\n \"(\\\\d{2})?\" + // Day (optional)\n \"(\\\\d{2})?\" + // Hour (optional)\n \"(\\\\d{2})?\" + // Minute (optional)\n \"(\\\\d{2})?\" + // Second (optional)\n \"([Z|+|-])?\" + // Universal time relation (optional)\n \"(\\\\d{2})?\" + // Offset hour (optional)\n \"'?\" + // Splitting apostrophe (optional)\n \"(\\\\d{2})?\" + // Offset minute (optional)\n \"'?\" // Trailing apostrophe (optional)\n );\n\n // Optional fields that don't satisfy the requirements from the regular\n // expression (such as incorrect digit counts or numbers that are out of\n // range) will fall back the defaults from the specification.\n const matches = pdfDateStringRegex.exec(input);\n if (!matches) {\n return null;\n }\n\n // JavaScript's `Date` object expects the month to be between 0 and 11\n // instead of 1 and 12, so we have to correct for that.\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\n // Universal time relation 'Z' means that the local time is equal to the\n // universal time, whereas the relations '+'/'-' indicate that the local\n // time is later respectively earlier than the universal time. Every date\n // is normalized to universal time.\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\n\n/**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n */\nfunction getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) {\n const { width, height } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n\n return new PageViewport({\n viewBox,\n scale,\n rotation,\n });\n}\n\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [\n (colorRGB & 0xff0000) >> 16,\n (colorRGB & 0x00ff00) >> 8,\n colorRGB & 0x0000ff,\n ];\n }\n\n if (color.startsWith(\"rgb(\")) {\n // getComputedStyle(...).color returns a `rgb(R, G, B)` color.\n return color\n .slice(/* \"rgb(\".length */ 4, -1) // Strip out \"rgb(\" and \")\".\n .split(\",\")\n .map(x => parseInt(x));\n }\n\n if (color.startsWith(\"rgba(\")) {\n return color\n .slice(/* \"rgba(\".length */ 5, -1) // Strip out \"rgba(\" and \")\".\n .split(\",\")\n .map(x => parseInt(x))\n .slice(0, 3);\n }\n\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\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}\n\nfunction getCurrentTransform(ctx) {\n const { a, b, c, d, e, f } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\n\nfunction getCurrentTransformInverse(ctx) {\n const { a, b, c, d, e, f } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\n\n/**\n * @param {HTMLDivElement} div\n * @param {PageViewport} viewport\n * @param {boolean} mustFlip\n * @param {boolean} mustRotate\n */\nfunction setLayerDimensions(\n div,\n viewport,\n mustFlip = false,\n mustRotate = true\n) {\n if (viewport instanceof PageViewport) {\n const { pageWidth, pageHeight } = viewport.rawDims;\n const { style } = div;\n\n // TODO: Investigate if it could be interesting to use the css round\n // function (https://developer.mozilla.org/en-US/docs/Web/CSS/round):\n // const widthStr =\n // `round(down, var(--scale-factor) * ${pageWidth}px, 1px)`;\n // const heightStr =\n // `round(down, var(--scale-factor) * ${pageHeight}px, 1px)`;\n const widthStr = `calc(var(--scale-factor) * ${pageWidth}px)`;\n const heightStr = `calc(var(--scale-factor) * ${pageHeight}px)`;\n\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\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\n\nexport {\n AnnotationPrefix,\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMFilterFactory,\n DOMStandardFontDataFactory,\n DOMSVGFactory,\n getColorValues,\n getCurrentTransform,\n getCurrentTransformInverse,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getRGB,\n getXfaPageViewport,\n isDataScheme,\n isPdfFile,\n isValidFetchUrl,\n loadScript,\n PageViewport,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n setLayerDimensions,\n StatTimer,\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 */\n\nimport { CMapCompressionType, unreachable } from \"../shared/util.js\";\n\nclass BaseFilterFactory {\n constructor() {\n if (this.constructor === BaseFilterFactory) {\n unreachable(\"Cannot initialize BaseFilterFactory.\");\n }\n }\n\n addFilter(maps) {\n return \"none\";\n }\n\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n\n destroy(keepHCM = false) {}\n}\n\nclass BaseCanvasFactory {\n constructor() {\n if (this.constructor === BaseCanvasFactory) {\n unreachable(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\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 };\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\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n\n /**\n * @ignore\n */\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\n\nclass BaseCMapReaderFactory {\n constructor({ baseUrl = null, isCompressed = true }) {\n if (this.constructor === BaseCMapReaderFactory) {\n unreachable(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n async fetch({ name }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The CMap \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.'\n );\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\n ? CMapCompressionType.BINARY\n : CMapCompressionType.NONE;\n\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(\n `Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`\n );\n });\n }\n\n /**\n * @ignore\n */\n _fetchData(url, compressionType) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseStandardFontDataFactory {\n constructor({ baseUrl = null }) {\n if (this.constructor === BaseStandardFontDataFactory) {\n unreachable(\"Cannot initialize BaseStandardFontDataFactory.\");\n }\n this.baseUrl = baseUrl;\n }\n\n async fetch({ filename }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The standard font \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"standardFontDataUrl\" API parameter is provided.'\n );\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n\n return this._fetchData(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n\n /**\n * @ignore\n */\n _fetchData(url) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseSVGFactory {\n constructor() {\n if (this.constructor === BaseSVGFactory) {\n unreachable(\"Cannot initialize BaseSVGFactory.\");\n }\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\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n\n return svg;\n }\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\n /**\n * @ignore\n */\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\n\nexport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseFilterFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n};\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nimport { isArrayBuffer } from \"./util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\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 (isArrayBuffer(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\n \"Wrong data format in MurmurHash3_64_update. \" +\n \"Input must be a string or array.\"\n );\n }\n\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n // We don't care about endianness here.\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\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\n k1 = 0;\n\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n /* falls through */\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n /* falls through */\n case 1:\n k1 ^= data[blockCounts * 4];\n /* falls through */\n\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\n this.h1 = h1;\n this.h2 = h2;\n }\n\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n h2 =\n ((h2 * 0xff51afd7) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n h2 =\n ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n\n return (\n (h1 >>> 0).toString(16).padStart(8, \"0\") +\n (h2 >>> 0).toString(16).padStart(8, \"0\")\n );\n }\n}\n\nexport { MurmurHash3_64 };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FeatureTest,\n shadow,\n string32,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\n\nclass FontLoader {\n #systemFonts = new Set();\n\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null, // For testing only.\n }) {\n this._document = ownerDocument;\n\n this.nativeFontFaces = new Set();\n this.styleElement =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n ? styleElement\n : null;\n\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n }\n\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement\n .getElementsByTagName(\"head\")[0]\n .append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\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\n if (this.styleElement) {\n // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n\n async loadSystemFont(info) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(\n !this.disableFontFace,\n \"loadSystemFont shouldn't be called when `disableFontFace` is set.\"\n );\n\n if (this.isFontLoadingAPISupported) {\n const { loadedName, src, style } = 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 } catch {\n warn(\n `Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`\n );\n\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n\n unreachable(\n \"Not implemented: loadSystemFont without the Font Loading API.\"\n );\n }\n\n async bind(font) {\n // Add the font to the DOM only once; skip if the font is already loaded.\n if (font.attached || (font.missingFile && !font.systemFontInfo)) {\n return;\n }\n font.attached = true;\n\n if (font.systemFontInfo) {\n await this.loadSystemFont(font.systemFontInfo);\n return;\n }\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\n // When font loading failed, fall back to the built-in font renderer.\n font.disableFontFace = true;\n throw ex;\n }\n }\n return; // The font was, asynchronously, loaded.\n }\n\n // !this.isFontLoadingAPISupported\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n\n if (this.isSyncFontLoadingSupported) {\n return; // The font was, synchronously, loaded.\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: async font loading\");\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n // The font was, asynchronously, loaded.\n }\n }\n\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n return shadow(\n this,\n \"isFontLoadingAPISupported\",\n hasFonts && !this.styleElement\n );\n }\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n\n get isSyncFontLoadingSupported() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return shadow(this, \"isSyncFontLoadingSupported\", true);\n }\n\n let supported = false;\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\")) {\n if (isNodeJS) {\n // Node.js - we can pretend that sync font loading is supported.\n supported = true;\n } else if (\n typeof navigator !== \"undefined\" &&\n // User agent string sniffing is bad, but there is no reliable way to\n // tell if the font is fully loaded and ready to be used with canvas.\n /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)\n ) {\n // Firefox, from version 14, supports synchronous font loading.\n supported = true;\n }\n }\n return shadow(this, \"isSyncFontLoadingSupported\", supported);\n }\n\n _queueLoadingCallback(callback) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: _queueLoadingCallback\");\n }\n\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n\n // Sending all completed requests in order of how they were queued.\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n const { loadingRequests } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback,\n };\n loadingRequests.push(request);\n return request;\n }\n\n get _loadTestFont() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: _loadTestFont\");\n }\n\n // This is a CFF font with 1 glyph for '.' that fills its entire width\n // and height.\n const testFont = atob(\n \"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" +\n \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" +\n \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" +\n \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" +\n \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" +\n \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" +\n \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" +\n \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" +\n \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" +\n \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" +\n \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" +\n \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" +\n \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" +\n \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" +\n \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" +\n \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" +\n \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\"\n );\n return shadow(this, \"_loadTestFont\", testFont);\n }\n\n _prepareFontLoadEvent(font, request) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: _prepareFontLoadEvent\");\n }\n\n /** Hack begin */\n // There's currently no event when a font has finished downloading so the\n // following code is a dirty hack to 'guess' when a font is ready.\n // It's assumed fonts are loaded in order, so add a known test font after\n // the desired fonts and then test for the loading of that test font.\n\n function int32(data, offset) {\n return (\n (data.charCodeAt(offset) << 24) |\n (data.charCodeAt(offset + 1) << 16) |\n (data.charCodeAt(offset + 2) << 8) |\n (data.charCodeAt(offset + 3) & 0xff)\n );\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\n // The temporary canvas is used to determine if fonts are loaded.\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n\n let called = 0;\n function isFontReady(name, callback) {\n // With setTimeout clamping this gives the font ~100ms to load.\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\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n // Chromium seems to cache fonts based on a hash of the actual font data,\n // so the font must be modified for each load test else it will appear to\n // be loaded already.\n // TODO: This could maybe be made faster by avoiding the btoa of the full\n // font by splitting it in chunks before hand and padding the font id.\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n data = spliceString(\n data,\n COMMENT_OFFSET,\n loadTestFontId.length,\n loadTestFontId\n );\n // CFF checksum is important for IE, adjusting it\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\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 // align to 4 bytes boundary\n checksum = (checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i)) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\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\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\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\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n /** Hack end */\n }\n}\n\nclass FontFaceObject {\n constructor(\n translatedData,\n {\n isEvalSupported = true,\n disableFontFace = false,\n ignoreErrors = false,\n inspectFont = null,\n }\n ) {\n this.compiledGlyphs = Object.create(null);\n // importing translated data\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._inspectFont = inspectFont;\n }\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(\n this.cssFontInfo.fontFamily,\n this.data,\n css\n );\n }\n\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const data = bytesToString(this.data);\n // Add the @font-face rule to the document.\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\n this._inspectFont?.(this, url);\n return rule;\n }\n\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n\n let cmds;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n\n return (this.compiledGlyphs[character] = function (c, size) {\n // No-op function, to allow rendering to continue.\n });\n }\n\n // If we can, compile cmds into JS for MAXIMUM SPEED...\n if (this.isEvalSupported && FeatureTest.isEvalSupported) {\n const jsBuf = [];\n for (const current of cmds) {\n const args = current.args !== undefined ? current.args.join(\",\") : \"\";\n jsBuf.push(\"c.\", current.cmd, \"(\", args, \");\\n\");\n }\n // eslint-disable-next-line no-new-func\n return (this.compiledGlyphs[character] = new Function(\n \"c\",\n \"size\",\n jsBuf.join(\"\")\n ));\n }\n // ... but fall back on using Function.prototype.apply() if we're\n // blocked from using eval() for whatever reason (like CSP policies).\n return (this.compiledGlyphs[character] = function (c, size) {\n for (const current of cmds) {\n if (current.cmd === \"scale\") {\n current.args = [size, -size];\n }\n // eslint-disable-next-line prefer-spread\n c[current.cmd].apply(c, current.args);\n }\n });\n }\n}\n\nexport { FontFaceObject, FontLoader };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n OPS,\n shadow,\n TextRenderingMode,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n getCurrentTransform,\n getCurrentTransformInverse,\n PixelsPerInch,\n} from \"./display_utils.js\";\nimport {\n getShadingPattern,\n PathType,\n TilingPattern,\n} from \"./pattern_helper.js\";\nimport { convertBlackAndWhiteToRGBA } from \"../shared/image_utils.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\n\n// <canvas> contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n// Minimal font size that would be used during canvas fillText operations.\nconst MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nconst MAX_FONT_SIZE = 100;\nconst MAX_GROUP_SIZE = 4096;\n\n// Defines the time the `executeOperatorList`-method is going to be executing\n// before it stops and schedules a continue of execution.\nconst EXECUTION_TIME = 15; // ms\n// Defines the number of steps before checking the execution time.\nconst EXECUTION_STEPS = 10;\n\n// To disable Type3 compilation, set the value to `-1`.\nconst MAX_SIZE_TO_COMPILE = 1000;\n\nconst FULL_CHUNK_HEIGHT = 16;\n\n/**\n * Overrides certain methods on a 2d ctx so that when they are called they\n * will also call the same method on the destCtx. The methods that are\n * overridden are all the transformation state modifiers, path creation, and\n * save/restore. We only forward these specific methods because they are the\n * only state modifiers that we cannot copy over when we switch contexts.\n *\n * To remove mirroring call `ctx._removeMirroring()`.\n *\n * @param {Object} ctx - The 2d canvas context that will duplicate its calls on\n * the destCtx.\n * @param {Object} destCtx - The 2d canvas context that will receive the\n * forwarded calls.\n */\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\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\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\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\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\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\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\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\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\n\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\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\n delete(id) {\n delete this.cache[id];\n }\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}\n\nfunction drawImageAtIntegerCoords(\n ctx,\n srcImg,\n srcX,\n srcY,\n srcW,\n srcH,\n destX,\n destY,\n destW,\n destH\n) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n // top-left corner is at (X, Y) and\n // bottom-right one is at (X + width, Y + height).\n\n // If leftX is 4.321 then it's rounded to 4.\n // If width is 10.432 then it's rounded to 11 because\n // rightX = leftX + width = 14.753 which is rounded to 15\n // so after rounding the total width is 11 (15 - 4).\n // It's why we can't just floor/ceil uniformly, it just depends\n // on the values we've.\n\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\n // Some pdf contains images with 1x1 images so in case of 0-width after\n // scaling we must fallback on 1 to be sure there is something.\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\n // We must apply a transformation in order to apply it on the image itself.\n // For example if a == 1 && d == -1, it means that the image itself is\n // mirrored w.r.t. the x-axis.\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\n return [rWidth, rHeight];\n }\n\n if (a === 0 && d === 0) {\n // This path is taken in issue9462.pdf (page 3).\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\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\n return [rHeight, rWidth];\n }\n\n // Not a scale matrix so let the render handle the case without rounding.\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\n\nfunction compileType3Glyph(imgData) {\n const { width, height } = imgData;\n if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([\n 0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0,\n ]);\n\n const width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n\n // decodes bit-packed mask data\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\n // finding interesting points: every point is located between mask pixels,\n // so there will be points of the (width + 1)x(height + 1) grid. Every point\n // will have flags assigned based on neighboring mask pixels:\n // 4 | 8\n // --P--\n // 2 | 1\n // We are interested only in points with the flags:\n // - outside corners: 1, 2, 4, 8;\n // - inside corners: 7, 11, 13, 14;\n // - and, intersections: 5, 10.\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 // 'sum' is the position of the current pixel configuration in the 'TYPES'\n // array (in order 8-1-2-4, so we can use '>>2' to shift the column).\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum =\n (sum >> 2) +\n (data[pos + 1] ? 4 : 0) +\n (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\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\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\n // building outlines\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const path = new Path2D();\n\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\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\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n // set new direction\n type = pp;\n // delete mark\n points[p] = 0;\n } else {\n // type is 5 or 10, ie, a crossing\n // set new direction\n type = pp & ((0x33 * type) >> 4);\n // set new type for \"future hit\"\n points[p] &= (type >> 2) | (type << 2);\n }\n path.lineTo(p % width1, (p / width1) | 0);\n\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n --i;\n }\n\n // Immediately release the, potentially large, `Uint8Array`s after parsing.\n data = null;\n points = null;\n\n const drawOutline = function (c) {\n c.save();\n // the path shall be painted in [0..1]x[0..1] space\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.fill(path);\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nclass CanvasExtraState {\n constructor(width, height) {\n // Are soft masks and alpha values shapes or opacities?\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 // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n // Default fore and background colors\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n // Note: fill alpha applies to all non-stroking operations\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = \"none\";\n\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\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\n updateRectMinMax(transform, rect) {\n const p1 = Util.applyTransform(rect, transform);\n const p2 = Util.applyTransform(rect.slice(2), transform);\n this.minX = Math.min(this.minX, p1[0], p2[0]);\n this.minY = Math.min(this.minY, p1[1], p2[1]);\n this.maxX = Math.max(this.maxX, p1[0], p2[0]);\n this.maxY = Math.max(this.maxY, p1[1], p2[1]);\n }\n\n updateScalingPathMinMax(transform, minMax) {\n Util.scaleMinMax(transform, minMax);\n this.minX = Math.min(this.minX, minMax[0]);\n this.maxX = Math.max(this.maxX, minMax[1]);\n this.minY = Math.min(this.minY, minMax[2]);\n this.maxY = Math.max(this.maxY, minMax[3]);\n }\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);\n if (minMax) {\n minMax[0] = Math.min(minMax[0], box[0], box[2]);\n minMax[1] = Math.max(minMax[1], box[0], box[2]);\n minMax[2] = Math.min(minMax[2], box[1], box[3]);\n minMax[3] = Math.max(minMax[3], box[1], box[3]);\n return;\n }\n this.updateRectMinMax(transform, box);\n }\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 // Stroked paths can be outside of the path bounding box by 1/2 the line\n // width.\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\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n\n isEmptyClip() {\n return this.minX === Infinity;\n }\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\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(\n this.clipBox,\n this.getPathBoundingBox(pathType, transform)\n );\n }\n}\n\nfunction putBinaryImageData(ctx, imgData) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n\n // Put the image data to the canvas in chunks, rather than putting the\n // whole image at once. This saves JS memory, because the ImageData object\n // is smaller. It also possibly saves C++ memory within the implementation\n // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n // the data passed to putImageData()). |n| shouldn't be too small, however,\n // because too many putImageData() calls will slow things down.\n //\n // Note: as written, if the last chunk is partial, the putImageData() call\n // will (conceptually) put pixels past the bounds of the canvas. But\n // that's ok; any such pixels are ignored.\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\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\n // There are multiple forms in which the pixel data can be passed, and\n // imgData.kind tells us which one this is.\n if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n // Grayscale, 1 bit per pixel (i.e. black-and-white).\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 = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n\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\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n // We ran out of input. Make all remaining pixels transparent.\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n // RGBA, 32-bits per pixel.\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\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\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === ImageKind.RGB_24BPP) {\n // RGB, 24-bits per pixel.\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\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\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\n\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n // The bitmap has been created in the worker.\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n\n // Slow path: OffscreenCanvas isn't available in the worker.\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\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight =\n i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n // Expand the mask so it can be used by the canvas. Any required\n // inversion has already been handled.\n\n ({ srcPos } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0,\n }));\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\n\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\n \"strokeStyle\",\n \"fillStyle\",\n \"fillRule\",\n \"globalAlpha\",\n \"lineWidth\",\n \"lineCap\",\n \"lineJoin\",\n \"miterLimit\",\n \"globalCompositeOperation\",\n \"font\",\n \"filter\",\n ];\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}\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 (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n !isNodeJS\n ) {\n ctx.filter = \"none\";\n }\n}\n\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n const length = bytes.length;\n for (let i = 3; i < length; i += 4) {\n const alpha = bytes[i];\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n const alpha_ = 255 - alpha;\n bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8;\n bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8;\n bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8;\n }\n }\n}\n\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n const length = maskData.length;\n const scale = 1 / 255;\n for (let i = 3; i < length; i += 4) {\n const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = (layerData[i] * alpha * scale) | 0;\n }\n}\n\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n const length = maskData.length;\n for (let i = 3; i < length; i += 4) {\n const y =\n maskData[i - 3] * 77 + // * 0.3 / 255 * 0x10000\n maskData[i - 2] * 152 + // * 0.59 ....\n maskData[i - 1] * 28; // * 0.11 ....\n layerData[i] = transferMap\n ? (layerData[i] * transferMap[y >> 8]) >> 8\n : (layerData[i] * y) >> 16;\n }\n}\n\nfunction genericComposeSMask(\n maskCtx,\n layerCtx,\n width,\n height,\n subtype,\n backdrop,\n transferMap,\n layerOffsetX,\n layerOffsetY,\n maskOffsetX,\n maskOffsetY\n) {\n const hasBackdrop = !!backdrop;\n const r0 = hasBackdrop ? backdrop[0] : 0;\n const g0 = hasBackdrop ? backdrop[1] : 0;\n const b0 = hasBackdrop ? backdrop[2] : 0;\n\n let composeFn;\n if (subtype === \"Luminosity\") {\n composeFn = composeSMaskLuminosity;\n } else {\n composeFn = composeSMaskAlpha;\n }\n\n // processing image in chunks to save memory\n const PIXELS_TO_PROCESS = 1048576;\n const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n for (let row = 0; row < height; row += chunkSize) {\n const chunkHeight = Math.min(chunkSize, height - row);\n const maskData = maskCtx.getImageData(\n layerOffsetX - maskOffsetX,\n row + (layerOffsetY - maskOffsetY),\n width,\n chunkHeight\n );\n const layerData = layerCtx.getImageData(\n layerOffsetX,\n row + layerOffsetY,\n width,\n chunkHeight\n );\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n composeFn(maskData.data, layerData.data, transferMap);\n\n layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n }\n}\n\nfunction 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 genericComposeSMask(\n smask.context,\n layerCtx,\n layerWidth,\n layerHeight,\n smask.subtype,\n smask.backdrop,\n smask.transferMap,\n layerOffsetX,\n layerOffsetY,\n smask.offsetX,\n smask.offsetY\n );\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\nfunction getImageSmoothingEnabled(transform, interpolate) {\n const scale = Util.singularValueDecompose2dScale(transform);\n // Round to a 32bit float so that `<=` check below will pass for numbers that\n // are very close, but not exactly the same 64bit floats.\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround(\n (globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS\n );\n if (interpolate !== undefined) {\n // If the value is explicitly set use it.\n return interpolate;\n } else if (scale[0] <= actualScale || scale[1] <= actualScale) {\n // Smooth when downscaling.\n return true;\n }\n // Don't smooth when upscaling.\n return false;\n}\n\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\n\nclass CanvasGraphics {\n constructor(\n canvasCtx,\n commonObjs,\n objs,\n canvasFactory,\n filterFactory,\n { optionalContentConfig, markedContentStack = null },\n annotationCanvasMap,\n pageColors\n ) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(\n this.ctx.canvas.width,\n this.ctx.canvas.height\n );\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 // Patterns are painted relative to the initial page/form transform, see\n // PDF spec 8.7.2 NOTE 1.\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\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\")\n ? this.commonObjs.get(data)\n : this.objs.get(data);\n }\n return fallback;\n }\n\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null,\n }) {\n // For pdfs that use blend modes we have to clear the canvas else certain\n // blend modes can look wrong since we'd be blending with a white\n // backdrop. The problem with a transparent backdrop though is we then\n // don't get sub pixel anti aliasing on text, creating temporary\n // transparent canvas when we have blend modes.\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n\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\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\n \"transparent\",\n width,\n height\n );\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n // The transform can be applied before rendering, transferring it to\n // the new canvas.\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\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\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n\n executeOperatorList(\n operatorList,\n executionStartIdx,\n continueCallback,\n stepper\n ) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n\n // Sometimes the OperatorList to execute is empty.\n if (argsArrayLen === i) {\n return i;\n }\n\n const chunkOperations =\n argsArrayLen - i > EXECUTION_STEPS &&\n typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== OPS.dependency) {\n // eslint-disable-next-line prefer-spread\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\n // If the promise isn't resolved yet, add the continueCallback\n // to the promise and bail out.\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n\n i++;\n\n // If the entire operatorList was executed, stop as were done.\n if (i === argsArrayLen) {\n return i;\n }\n\n // If the execution took longer then a certain amount of time and\n // `continueCallback` is specified, interrupt the execution.\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n\n // If the operatorList isn't executed completely yet OR the execution\n // time was short enough, do another execution round.\n }\n }\n\n #restoreInitialState() {\n // Finishing all opened operations such as SMask group painting.\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n\n endDrawing() {\n this.#restoreInitialState();\n\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (\n typeof HTMLCanvasElement !== \"undefined\" &&\n canvas instanceof HTMLCanvasElement\n ) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(\n this.pageColors.foreground,\n this.pageColors.background\n );\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\n _scaleImage(img, inverseTransform) {\n // Vertical or horizontal scaling shall not be more than 2 to not lose the\n // pixels during drawImage operation, painting on the temporary canvas(es)\n // that are twice smaller in size.\n const width = img.width;\n const height = img.height;\n let widthScale = Math.max(\n Math.hypot(inverseTransform[0], inverseTransform[1]),\n 1\n );\n let heightScale = Math.max(\n Math.hypot(inverseTransform[2], inverseTransform[3]),\n 1\n );\n\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (\n (widthScale > 2 && paintWidth > 1) ||\n (heightScale > 2 && paintHeight > 1)\n ) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n // See bug 1820511 (Windows specific bug).\n // TODO: once the above bug is fixed we could revert to:\n // newWidth = Math.ceil(paintWidth / 2);\n newWidth =\n paintWidth >= 16384\n ? Math.floor(paintWidth / 2) - 1 || 1\n : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n // TODO: see the comment above.\n newHeight =\n paintHeight >= 16384\n ? Math.floor(paintHeight / 2) - 1 || 1\n : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(\n tmpCanvasId,\n newWidth,\n newHeight\n );\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(\n img,\n 0,\n 0,\n paintWidth,\n paintHeight,\n 0,\n 0,\n newWidth,\n newHeight\n );\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\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const { width, height } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n // We're reusing the same image several times, so we can cache it.\n // In case we've a pattern fill we just keep the scaled version of\n // the image.\n // Only the scaling part matters, the translation part is just used\n // to compute offsets (but not when filling patterns see #15573).\n // TODO: handle the case of a pattern fill if it's possible.\n cacheKey = JSON.stringify(\n isPatternFill\n ? currentTransform\n : [currentTransform.slice(0, 4), fillColor]\n );\n\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(\n Math.min(currentTransform[0], currentTransform[2]) +\n currentTransform[4]\n );\n const offsetY = Math.round(\n Math.min(currentTransform[1], currentTransform[3]) +\n currentTransform[5]\n );\n return {\n canvas: cachedImage,\n offsetX,\n offsetY,\n };\n }\n scaled = cachedImage;\n }\n\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n\n // Create the mask canvas at the size it will be drawn at and also set\n // its transform to match the current transform so if there are any\n // patterns applied they will be applied relative to the correct\n // transform.\n\n let maskToCanvas = Util.transform(currentTransform, [\n 1 / width,\n 0,\n 0,\n -1 / height,\n 0,\n 0,\n ]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const cord1 = Util.applyTransform([0, 0], maskToCanvas);\n const cord2 = Util.applyTransform([width, height], maskToCanvas);\n const rect = Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);\n const drawnWidth = Math.round(rect[2] - rect[0]) || 1;\n const drawnHeight = Math.round(rect[3] - rect[1]) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\n \"fillCanvas\",\n drawnWidth,\n drawnHeight\n );\n const fillCtx = fillCanvas.context;\n\n // The offset will be the top-left cordinate mask.\n // If objToCanvas is [a,b,c,d,e,f] then:\n // - offsetX = min(a, c) + e\n // - offsetY = min(b, d) + f\n const offsetX = Math.min(cord1[0], cord2[0]);\n const offsetY = Math.min(cord1[1], cord2[1]);\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n\n if (!scaled) {\n // Pre-scale if needed to improve image smoothing.\n scaled = this._scaleImage(\n maskCanvas.canvas,\n getCurrentTransformInverse(fillCtx)\n );\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(\n getCurrentTransform(fillCtx),\n img.interpolate\n );\n\n drawImageAtIntegerCoords(\n fillCtx,\n scaled,\n 0,\n 0,\n scaled.width,\n scaled.height,\n 0,\n 0,\n width,\n height\n );\n fillCtx.globalCompositeOperation = \"source-in\";\n\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [\n 1,\n 0,\n 0,\n 1,\n -offsetX,\n -offsetY,\n ]);\n fillCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(ctx, this, inverse, PathType.FILL)\n : fillColor;\n\n fillCtx.fillRect(0, 0, width, height);\n\n if (cache && !isPatternFill) {\n // The fill canvas is put in the cache associated to the mask image\n // so we must remove from the cached canvas: it mustn't be used again.\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n\n // Round the offsets to avoid drawing fractional pixels.\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY),\n };\n }\n\n // Graphics state\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\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\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\n setRenderingIntent(intent) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setFlatness(flatness) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\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 =\n this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\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 // Else, the state is okay and nothing needs to be done.\n }\n\n /**\n * Soft mask mode takes the current main drawing canvas and replaces it with\n * a temporary canvas. Any drawing operations that happen on the temporary\n * canvas need to be composed with the main canvas that was suspended (see\n * `compose()`). The temporary canvas also duplicates many of its operations\n * on the suspended canvas to keep them in sync, so that when the soft mask\n * mode ends any clipping paths or transformations will still be active and in\n * the right order on the canvas' graphics state stack.\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(\n cacheId,\n drawnWidth,\n drawnHeight\n );\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\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n }\n\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n // The soft mask is done, now restore the suspended canvas as the main\n // drawing canvas.\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n\n this.suspendedCtx = null;\n }\n\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\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\n composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n // Whatever was drawn has been moved to the suspended canvas, now clear it\n // out of the current canvas.\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\n save() {\n if (this.inSMaskMode) {\n // SMask mode may be turned on/off causing us to lose graphics state.\n // Copy the temporary canvas state to the main(suspended) canvas to keep\n // it in sync.\n copyCtxState(this.ctx, this.suspendedCtx);\n // Don't bother calling save on the temporary canvas since state is not\n // saved there.\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\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 // Graphics state is stored on the main(suspended) canvas. Restore its\n // state then copy it over to the temporary canvas.\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n\n // Ensure that the clipping path is reset (fixes issue6413.pdf).\n this.pendingClip = null;\n\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n\n // Path\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\n // Most of the time the current transform is a scaling matrix\n // so we don't need to transform points before computing min/max:\n // we can compute min/max first and then smartly \"apply\" the\n // transform (see Util.scaleMinMax).\n // For rectangle, moveTo and lineTo, min/max are computed in the\n // worker (see evaluator.js).\n const isScalingMatrix =\n (currentTransform[0] === 0 && currentTransform[3] === 0) ||\n (currentTransform[1] === 0 && currentTransform[2] === 0);\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n\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\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(\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y\n );\n current.updateCurvePathMinMax(\n currentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y,\n minMaxForBezier\n );\n j += 6;\n break;\n case OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3]\n );\n current.updateCurvePathMinMax(\n currentTransform,\n startX,\n startY,\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n minMaxForBezier\n );\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(\n currentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n x,\n y,\n x,\n y,\n minMaxForBezier\n );\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n }\n\n current.setCurrentPoint(x, y);\n }\n\n closePath() {\n this.ctx.closePath();\n }\n\n stroke(consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n // For stroke we want to temporarily change the global alpha to the\n // stroking alpha.\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(\n ctx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.STROKE\n );\n this.rescaleAndStroke(/* saveRestore */ false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(/* saveRestore */ true);\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n // Restore the global alpha to the fill alpha\n ctx.globalAlpha = this.current.fillAlpha;\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\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\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(\n ctx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.FILL\n );\n needRestore = true;\n }\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\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n\n this.consumePath();\n }\n\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n\n endPath() {\n this.consumePath();\n }\n\n // Clipping\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n\n // Text\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\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\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\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n // A valid matrix needs all main diagonal elements to be non-zero\n // This also ensures we bypass FF bugzilla bug #719844.\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n\n // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n // and in some docs this can be negative (inverted x-y axes).\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return; // we don't need ctx.font for Type3 fonts\n }\n\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface =\n fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n\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\n // Some font backends cannot handle fonts below certain size.\n // Keeping the font at minimal size and using the fontSizeScale to change\n // the current transformation matrix before the fillText/strokeText.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\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\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\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\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\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 =\n textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(\n textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n );\n const patternFill = current.patternFill && !font.missingFile;\n\n let addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\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 (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fill();\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fillText(character, x, y);\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.strokeText(character, x, y);\n }\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\n get isFontSubpixelAAEnabled() {\n // Checks if anti-aliasing is enabled when scaled text is painted.\n // On Windows GDI scaled fonts looks bad.\n const { context: ctx } = this.cachedCanvases.getCanvas(\n \"isFontSubpixelAAEnabled\",\n 10,\n 10\n );\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\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\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\n const simpleFillText =\n current.textRenderingMode === TextRenderingMode.FILL &&\n !font.disableFontFace &&\n !current.patternFill;\n\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n let patternTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(\n ctx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.FILL\n );\n patternTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode =\n current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n\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\n return undefined;\n }\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\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 =\n -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n\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\n if (font.remeasure && width > 0) {\n // Some standard fonts may not have the exact width: rescale per\n // character if measured width is greater than expected glyph width\n // and subpixel-aa is enabled, otherwise just center the glyph.\n const measuredWidth =\n ((ctx.measureText(character).width * 1000) / fontSize) *\n 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 +=\n (((width - measuredWidth) / 2000) * fontSize) / fontSizeScale;\n }\n }\n\n // Only attempt to draw the glyph if it is actually in the embedded font\n // file or if there isn't a font file so the fallback font is shown.\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n // common case\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n if (accent) {\n const scaledAccentX =\n scaledX + (fontSize * accent.offset.x) / fontSizeScale;\n const scaledAccentY =\n scaledY - (fontSize * accent.offset.y) / fontSizeScale;\n this.paintChar(\n accent.fontChar,\n scaledAccentX,\n scaledAccentY,\n patternTransform\n );\n }\n }\n }\n\n let charWidth;\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n x += charWidth;\n\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\n return undefined;\n }\n\n showType3Text(glyphs) {\n // Type3 fonts - each glyph is a \"mini-PDF\"\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 =\n current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y);\n\n ctx.scale(textHScale, fontDirection);\n\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\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\n const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n\n // Type3 fonts\n setCharWidth(xWidth, yWidth) {\n // We can safely ignore this since the width should be the same\n // as the width in the Widths array.\n }\n\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\n // Color\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 => {\n return new CanvasGraphics(\n ctx,\n this.commonObjs,\n this.objs,\n this.canvasFactory,\n this.filterFactory,\n {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack,\n }\n );\n },\n };\n pattern = new TilingPattern(\n IR,\n color,\n this.ctx,\n canvasGraphicsFactory,\n baseTransform\n );\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\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\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\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\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(\n ctx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.SHADING\n );\n\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const canvas = ctx.canvas;\n const width = canvas.width;\n const height = canvas.height;\n\n const bl = Util.applyTransform([0, 0], inv);\n const br = Util.applyTransform([0, height], inv);\n const ul = Util.applyTransform([width, 0], inv);\n const ur = Util.applyTransform([width, height], inv);\n\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n // HACK to draw the gradient onto an infinite rectangle.\n // PDF gradients are drawn across the entire image while\n // Canvas only allows gradients to be drawn in a rectangle\n // The following bug should allow us to remove this.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n\n // Images\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(...matrix);\n }\n\n this.baseTransform = getCurrentTransform(this.ctx);\n\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\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n // If there's an active soft mask we don't want it enabled for the group, so\n // clear it out. The mask and suspended canvas will be restored in endGroup.\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n\n const currentCtx = this.ctx;\n // TODO non-isolated groups - according to Rik at adobe non-isolated\n // group results aren't usually that different and they even have tools\n // that ignore this setting. Notes from Rik on implementing:\n // - When you encounter an transparency group, create a new canvas with\n // the dimensions of the bbox\n // - copy the content from the previous canvas to the new canvas\n // - draw as usual\n // - remove the backdrop alpha:\n // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n // value of your transparency group and 'alphaBackdrop' the alpha of the\n // backdrop\n // - remove background color:\n // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n\n // TODO knockout - supposedly possible with the clever use of compositing\n // modes.\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\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\n // Based on the current transform figure out how big the bounding box\n // will actually be.\n let bounds = Util.getAxialAlignedBoundingBox(\n group.bbox,\n getCurrentTransform(currentCtx)\n );\n // Clip the bounding box to the current canvas.\n const canvasBounds = [\n 0,\n 0,\n currentCtx.canvas.width,\n currentCtx.canvas.height,\n ];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n // Use ceil in case we're between sizes so we don't create canvas that is\n // too small and make the canvas at least 1x1 pixels.\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n let scaleX = 1,\n scaleY = 1;\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n // Using two cache entries is case if masks are used one after another.\n cacheId += \"_smask_\" + (this.smaskCounter++ % 2);\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId,\n drawnWidth,\n drawnHeight\n );\n const groupCtx = scratchCanvas.context;\n\n // Since we created a new canvas that is just the size of the bounding box\n // we have to translate the group ctx.\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n\n if (group.smask) {\n // Saving state and cached mask to be used in setGState.\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null, // used during suspend operation\n });\n } else {\n // Setup the current ctx so when the group is popped we draw it at the\n // right location.\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n currentCtx.save();\n }\n // The transparency group inherits all off the current graphics state\n // except the blend mode, soft mask, and alpha constants.\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\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 // Turn off image smoothing to avoid sub pixel interpolation which can\n // look kind of blurry for some pdfs.\n this.ctx.imageSmoothingEnabled = false;\n\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(\n [0, 0, groupCtx.canvas.width, groupCtx.canvas.height],\n currentMtx\n );\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n // The annotations are drawn just after the page content.\n // The page content drawing can potentially have set a transform,\n // a clipping path, whatever...\n // So in order to have something clean, we restore the initial state.\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n\n this.ctx.save();\n this.save();\n\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n\n if (Array.isArray(rect) && rect.length === 4) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(\n getCurrentTransform(this.ctx)\n );\n const { viewportScale } = this;\n const canvasWidth = Math.ceil(\n width * this.outputScaleX * viewportScale\n );\n const canvasHeight = Math.ceil(\n height * this.outputScaleY * viewportScale\n );\n\n this.annotationCanvas = this.canvasFactory.create(\n canvasWidth,\n canvasHeight\n );\n const { canvas, context } = 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\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.clip();\n this.endPath();\n }\n }\n\n this.current = new CanvasExtraState(\n this.ctx.canvas.width,\n this.ctx.canvas.height\n );\n\n this.transform(...transform);\n this.transform(...matrix);\n }\n\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\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\n const ctx = this.ctx;\n const glyph = this.processingType3;\n\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\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\n ctx.save();\n // The mask is drawn with the transform applied. Reset the current\n // transform to draw to the identity.\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\n paintImageMaskXObjectRepeat(\n img,\n scaleX,\n skewX = 0,\n skewY = 0,\n scaleY,\n positions\n ) {\n if (!this.contentVisible) {\n return;\n }\n\n img = this.getObject(img.data, img);\n\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\n ctx.setTransform(\n 1,\n 0,\n 0,\n 1,\n mask.offsetX - currentTransform[4],\n mask.offsetY - currentTransform[5]\n );\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [\n scaleX,\n skewX,\n skewY,\n scaleY,\n positions[i],\n positions[i + 1],\n ]);\n\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\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n\n for (const image of images) {\n const { data, width, height, transform } = image;\n\n const maskCanvas = this.cachedCanvases.getCanvas(\n \"maskCanvas\",\n width,\n height\n );\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n\n const img = this.getObject(data, image);\n putBinaryImageMask(maskCtx, img);\n\n maskCtx.globalCompositeOperation = \"source-in\";\n\n maskCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(\n maskCtx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.FILL\n )\n : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(\n ctx,\n maskCanvas.canvas,\n 0,\n 0,\n width,\n height,\n 0,\n -1,\n 1,\n 1\n );\n ctx.restore();\n }\n this.compose();\n }\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\n this.paintInlineImageXObject(imgData);\n }\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\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\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\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const { bitmap, width, height } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\n \"inlineImage\",\n width,\n height\n );\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n\n return tmpCanvas.canvas;\n }\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\n this.save();\n\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n !isNodeJS\n ) {\n // The filter, if any, will be applied in applyTransferMapsToBitmap.\n // It must be applied to the image before rescaling else some artifacts\n // could appear.\n // The final restore will reset it to its value.\n ctx.filter = \"none\";\n }\n\n // scale the image to the unit square\n ctx.scale(1 / width, -1 / height);\n\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (\n (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement) ||\n !imgData.data\n ) {\n // typeof check is needed due to node.js support, see issue #8489\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\n \"inlineImage\",\n width,\n height\n );\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n\n const scaled = this._scaleImage(\n imgToPaint,\n getCurrentTransformInverse(ctx)\n );\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(\n getCurrentTransform(ctx),\n imgData.interpolate\n );\n\n drawImageAtIntegerCoords(\n ctx,\n scaled.img,\n 0,\n 0,\n scaled.paintWidth,\n scaled.paintHeight,\n 0,\n -height,\n width,\n height\n );\n this.compose();\n this.restore();\n }\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\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\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(\n ctx,\n imgToPaint,\n entry.x,\n entry.y,\n entry.w,\n entry.h,\n 0,\n -1,\n 1,\n 1\n );\n ctx.restore();\n }\n this.compose();\n }\n\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n\n // Marked content\n\n markPoint(tag) {\n // TODO Marked content.\n }\n\n markPointProps(tag, properties) {\n // TODO Marked content.\n }\n\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true,\n });\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\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n\n // Compatibility\n\n beginCompat() {\n // TODO ignore undefined operators (should we do that anyway?)\n }\n\n endCompat() {\n // TODO stop ignoring undefined operators\n }\n\n // Helper functions\n\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\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n // Fast path\n this._cachedGetSinglePixelWidth =\n 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\n getScaleForStroking() {\n // A pixel has thicknessX = thicknessY = 1;\n // A transformed pixel is a parallelogram and the thicknesses\n // corresponds to the heights.\n // The goal of this function is to rescale before setting the\n // lineWidth in order to have both thicknesses greater or equal\n // to 1 after transform.\n if (this._cachedScaleForStroking[0] === -1) {\n const { lineWidth } = this.current;\n const { a, b, c, d } = this.ctx.getTransform();\n let scaleX, scaleY;\n\n if (b === 0 && c === 0) {\n // Fast path\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 // A pixel (base (x, y)) is transformed by M into a parallelogram:\n // - its area is |det(M)|;\n // - heightY (orthogonal to Mx) has a length: |det(M)| / norm(Mx);\n // - heightX (orthogonal to My) has a length: |det(M)| / norm(My).\n // heightX and heightY are the thicknesses of the transformed pixel\n // and they must be both greater or equal to 1.\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\n // Rescale before stroking in order to have a final lineWidth\n // with both thicknesses greater or equal to 1.\n rescaleAndStroke(saveRestore) {\n const { ctx } = this;\n const { lineWidth } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n\n ctx.lineWidth = lineWidth || 1;\n\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n\n ctx.scale(scaleX, scaleY);\n\n // How the dashed line is rendered depends on the current transform...\n // so we added a rescale to handle too thin lines and consequently\n // the way the line is dashed will be modified.\n // If scaleX === scaleY, the dashed lines will be rendered correctly\n // else we'll have some bugs (but only with too thin lines).\n // Here we take the max... why not taking the min... or something else.\n // Anyway, as said it's buggy when 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\n ctx.stroke();\n\n if (saveRestore) {\n ctx.restore();\n }\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}\n\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\nexport { CanvasGraphics };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, info, unreachable, Util } from \"../shared/util.js\";\nimport { getCurrentTransform } from \"./display_utils.js\";\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\",\n};\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}\n\nclass BaseShadingPattern {\n constructor() {\n if (this.constructor === BaseShadingPattern) {\n unreachable(\"Cannot initialize BaseShadingPattern.\");\n }\n }\n\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\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\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(\n this._p0[0],\n this._p0[1],\n this._p1[0],\n this._p1[1]\n );\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(\n this._p0[0],\n this._p0[1],\n this._r0,\n this._p1[0],\n this._p1[1],\n this._r1\n );\n }\n\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(\n pathType,\n getCurrentTransform(ctx)\n ) || [0, 0, 0, 0];\n // Create a canvas that is only as big as the current path. This doesn't\n // allow us to cache the pattern, but it generally creates much smaller\n // canvases and saves memory use. See bug 1722807 for an example.\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n\n const tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n width,\n height,\n true\n );\n\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 // Non shading fill patterns are positioned relative to the base transform\n // (usually the page's initial transform), but we may have created a\n // smaller canvas based on the path, so we must account for the shift.\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [\n 1,\n 0,\n 0,\n 1,\n ownerBBox[0],\n ownerBBox[1],\n ]);\n\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n // Shading fills are applied relative to the current matrix which is also\n // how canvas gradients work, so there's no need to do anything special\n // here.\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\n\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n // Very basic Gouraud-shaded triangle rasterization algorithm.\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\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 let k;\n if (y < y1) {\n k = 0;\n } else {\n k = (y1 - y) / (y1 - y2);\n }\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\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}\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(\n data,\n context,\n ps[q],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n drawTriangle(\n data,\n context,\n ps[q + verticesPerRow + 1],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q + verticesPerRow + 1],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(\n data,\n context,\n ps[i],\n ps[i + 1],\n ps[i + 2],\n cs[i],\n cs[i + 1],\n cs[i + 2]\n );\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\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\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n // we will increase scale on some weird factor to let antialiasing take\n // care of \"rough\" edges\n const EXPECTED_SCALE = 1.1;\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n const MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n // We need to keep transparent border around our pattern for fill():\n // createPattern with 'no-repeat' will bleed edges across entire area.\n const BORDER_SIZE = 2;\n\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\n const width = Math.min(\n Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n const height = Math.min(\n Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n\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\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n\n const tmpCanvas = cachedCanvases.getCanvas(\n \"mesh\",\n paddedWidth,\n paddedHeight,\n false\n );\n const tmpCtx = tmpCanvas.context;\n\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\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY,\n };\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 // Obtain scale from matrix and current transformation matrix.\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\n // Rasterizing on the main thread since sending/queue large canvases\n // might cause OOM.\n const temporaryPatternCanvas = this._createMeshCanvas(\n scale,\n pathType === PathType.SHADING ? null : this._background,\n owner.cachedCanvases\n );\n\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n\n ctx.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\n\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\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}\n\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2,\n};\n\nclass TilingPattern {\n // 10in @ 300dpi shall be enough.\n static MAX_PATTERN_SIZE = 3000;\n\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\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\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\n info(\"TilingType: \" + tilingType);\n\n // A tiling pattern as defined by PDF spec 8.7.2 is a cell whose size is\n // described by bbox, and may repeat regularly by shifting the cell by\n // xstep and ystep.\n // Because the HTML5 canvas API does not support pattern repetition with\n // gaps in between, we use the xstep/ystep instead of the bbox's size.\n //\n // This has the following consequences (similarly for ystep):\n //\n // - If xstep is the same as bbox, then there is no observable difference.\n //\n // - If xstep is larger than bbox, then the pattern canvas is partially\n // empty: the area bounded by bbox is painted, the outside area is void.\n //\n // - If xstep is smaller than bbox, then the pixels between xstep and the\n // bbox boundary will be missing. This is INCORRECT behavior.\n // \"Figures on adjacent tiles should not overlap\" (PDF spec 8.7.3.1),\n // but overlapping cells without common pixels are still valid.\n // TODO: Fix the implementation, to allow this scenario to be painted\n // correctly.\n\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n\n // Obtain scale from matrix and current transformation matrix.\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = Util.singularValueDecompose2dScale(\n this.baseTransform\n );\n const combinedScale = [\n matrixScale[0] * curMatrixScale[0],\n matrixScale[1] * curMatrixScale[1],\n ];\n\n // Use width and height values that are as close as possible to the end\n // result when the pattern is used. Too low value makes the pattern look\n // blurry. Too large value makes it look too crispy.\n const dimx = this.getSizeAndScale(\n xstep,\n this.ctx.canvas.width,\n combinedScale[0]\n );\n const dimy = this.getSizeAndScale(\n ystep,\n this.ctx.canvas.height,\n combinedScale[1]\n );\n\n const tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n dimx.size,\n dimy.size,\n true\n );\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n\n let adjustedX0 = x0;\n let adjustedY0 = y0;\n let adjustedX1 = x1;\n let adjustedY1 = y1;\n // Some bounding boxes have negative x0/y0 coordinates which will cause the\n // some of the drawing to be off of the canvas. To avoid this shift the\n // bounding box over.\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\n // To match CanvasGraphics beginDrawing we must save the context here or\n // else we end up with unbalanced save/restores.\n tmpCtx.save();\n\n this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n\n graphics.executeOperatorList(operatorList);\n\n graphics.endDrawing();\n\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: adjustedX0,\n offsetY: adjustedY0,\n };\n }\n\n getSizeAndScale(step, realOutputSize, scale) {\n // xstep / ystep may be negative -- normalize.\n step = Math.abs(step);\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n // Use the destination canvas's size if it is bigger than the hard-coded\n // limit of MAX_PATTERN_SIZE to avoid clipping patterns that cover the\n // whole canvas.\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 { scale, 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), [\n x0,\n y0,\n x1,\n y1,\n ]);\n graphics.clip();\n graphics.endPath();\n }\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 // Set color needed by image masks (fixes issues 3226 and 8741).\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n // PDF spec 8.7.2 NOTE 1: pattern's matrix is relative to initial matrix.\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\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n\n let domMatrix = new DOMMatrix(matrix);\n // Rescale and so that the ctx.createPattern call generates a pattern with\n // the desired size.\n domMatrix = domMatrix.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n domMatrix = domMatrix.scale(\n 1 / temporaryPatternCanvas.scaleX,\n 1 / temporaryPatternCanvas.scaleY\n );\n\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n\n return pattern;\n }\n}\n\nexport { getShadingPattern, PathType, TilingPattern };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FeatureTest, ImageKind } from \"./util.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\n return null;\n}\n\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false,\n}) {\n const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode\n ? [nonBlackColor, black]\n : [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\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 { srcPos, 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\n if (FeatureTest.isLittleEndian) {\n // It's a way faster to do the shuffle manually instead of working\n // component by component with some Uint8 arrays.\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i]; // R2B1G1R1\n const s2 = src32[i + 1]; // G3R3B2G2\n const s3 = src32[i + 2]; // B4G4R4B3\n\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\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] =\n 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]; // R1G1B1R2\n const s2 = src32[i + 1]; // G2B2R3G3\n const s3 = src32[i + 2]; // B3R4G4B4\n\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\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] =\n (src[j] << 24) | (src[j + 1] << 16) | (src[j + 2] << 8) | 0xff;\n }\n }\n\n return { srcPos, 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\nexport { convertBlackAndWhiteToRGBA, convertToRGBA, grayToRGBA };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @typedef {Object} GlobalWorkerOptionsType\n * @property {Worker | null} workerPort - Defines global port for worker\n * process. Overrides the `workerSrc` option.\n * @property {string} workerSrc - A string containing the path and filename\n * of the worker file.\n *\n * NOTE: The `workerSrc` option should always be set, in order to prevent any\n * issues when using the PDF.js library.\n */\n\n/** @type {GlobalWorkerOptionsType} */\nconst GlobalWorkerOptions = Object.create(null);\n\nGlobalWorkerOptions.workerPort = null;\nGlobalWorkerOptions.workerSrc = \"\";\n\nexport { GlobalWorkerOptions };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n MissingPDFException,\n PasswordException,\n PromiseCapability,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n} from \"./util.js\";\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2,\n};\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};\n\nfunction wrapReason(reason) {\n if (\n !(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null)\n )\n ) {\n unreachable(\n 'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n );\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}\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\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\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\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(\n function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result,\n });\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 );\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\n on(actionName, handler) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n typeof handler === \"function\",\n 'MessageHandler.on: Expected \"handler\" to be a function.'\n );\n }\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\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n */\n send(actionName, data, transfers) {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n },\n transfers\n );\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = new PromiseCapability();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data,\n },\n transfers\n );\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {ReadableStream} ReadableStream to read data in chunks.\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\n return new ReadableStream(\n {\n start: controller => {\n const startCapability = new PromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false,\n };\n comObj.postMessage(\n {\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n },\n transfers\n );\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: controller => {\n const pullCapability = new PromiseCapability();\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 // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = new PromiseCapability();\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 Promise to signal success or failure.\n return cancelCapability.promise;\n },\n },\n queueingStrategy\n );\n }\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\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 // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = new PromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage(\n {\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk,\n },\n transfers\n );\n },\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\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\n sinkCapability: new PromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true,\n });\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 }\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\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 // Ignore any pull after close is called.\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 // Pull increases the desiredSize property of sink, so when it changes\n // from negative to positive, set ready property as resolved promise.\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n streamSink.desiredSize = data.desiredSize;\n\n new Promise(function (resolve) {\n resolve(streamSink.onPull?.());\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\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 );\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\n new Promise(function (resolve) {\n resolve(streamSink.onCancel?.(wrapReason(data.reason)));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true,\n });\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 );\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\n async #deleteStreamController(streamController, streamId) {\n // Delete the `streamController` only when the start, pull, and cancel\n // capabilities have settled, to prevent `TypeError`s.\n await Promise.allSettled([\n streamController.startCall?.promise,\n streamController.pullCall?.promise,\n streamController.cancelCall?.promise,\n ]);\n delete this.streamControllers[streamId];\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\nexport { MessageHandler };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap } from \"../shared/util.js\";\n\nclass Metadata {\n #metadataMap;\n\n #data;\n\n constructor({ parsedData, rawData }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n\n getRaw() {\n return this.#data;\n }\n\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n\n getAll() {\n return objectFromMap(this.#metadataMap);\n }\n\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\n\nexport { Metadata };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap, unreachable, warn } from \"../shared/util.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\nconst INTERNAL = Symbol(\"INTERNAL\");\n\nclass OptionalContentGroup {\n #visible = true;\n\n constructor(name, intent) {\n this.name = name;\n this.intent = intent;\n }\n\n /**\n * @type {boolean}\n */\n get visible() {\n return this.#visible;\n }\n\n /**\n * @ignore\n */\n _setVisible(internal, visible) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#visible = visible;\n }\n}\n\nclass OptionalContentConfig {\n #cachedGetHash = null;\n\n #groups = new Map();\n\n #initialHash = null;\n\n #order = null;\n\n constructor(data) {\n this.name = null;\n this.creator = null;\n\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(\n group.id,\n new OptionalContentGroup(group.name, group.intent)\n );\n }\n\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n\n // The following code must always run *last* in the constructor.\n this.#initialHash = this.getHash();\n }\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\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n warn(\"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 // Per the spec, the expression should be preferred if available.\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n // Default\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\n setVisibility(id, visible = true) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n this.#groups.get(id)._setVisible(INTERNAL, !!visible);\n\n this.#cachedGetHash = null;\n }\n\n get hasInitialVisibility() {\n return this.getHash() === this.#initialHash;\n }\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\n getGroups() {\n return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\n }\n\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return (this.#cachedGetHash = hash.hexdigest());\n }\n}\n\nexport { OptionalContentConfig };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, PromiseCapability } from \"../shared/util.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\n/** @implements {IPDFStream} */\nclass PDFDataTransportStream {\n constructor(\n {\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null,\n disableRange = false,\n disableStream = false,\n },\n pdfDataRangeTransport\n ) {\n assert(\n pdfDataRangeTransport,\n 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.'\n );\n\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n\n if (initialData?.length > 0) {\n // Prevent any possible issues by only transferring a Uint8Array that\n // completely \"utilizes\" its underlying ArrayBuffer.\n const buffer =\n initialData instanceof Uint8Array &&\n initialData.byteLength === initialData.buffer.byteLength\n ? initialData.buffer\n : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({ begin, chunk });\n });\n\n this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({ loaded, total });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({ chunk });\n });\n\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n\n _onReceiveData({ begin, chunk }) {\n // Prevent any possible issues by only transferring a Uint8Array that\n // completely \"utilizes\" its underlying ArrayBuffer.\n const buffer =\n chunk instanceof Uint8Array &&\n chunk.byteLength === chunk.buffer.byteLength\n ? chunk.buffer\n : new Uint8Array(chunk).buffer;\n\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(\n found,\n \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\"\n );\n }\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n _onProgress(evt) {\n if (evt.total === undefined) {\n // Reporting to first range reader, if it exists.\n this._rangeReaders[0]?.onProgress?.({ loaded: evt.loaded });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total,\n });\n }\n }\n\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFDataTransportStream.getFullReader can only be called once.\"\n );\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(\n this,\n queuedChunks,\n this._progressiveDone,\n this._contentDispositionFilename\n );\n }\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\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFDataTransportStreamReader {\n constructor(\n stream,\n queuedChunks,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename)\n ? contentDispositionFilename\n : 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\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // Ignore new data.\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n\n get contentLength() {\n return this._stream._contentLength;\n }\n\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = new PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\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\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // ignore new data\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({ value: chunk, done: false });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = new PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\nexport { PDFDataTransportStream };\n","/* Copyright 2021 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\nclass XfaText {\n /**\n * Walk an XFA tree and create an array of text nodes that is compatible\n * with a regular PDFs TextContent. Currently, only TextItem.str is supported,\n * all other fields and styles haven't been implemented.\n *\n * @param {Object} xfa - An XFA fake DOM object.\n *\n * @returns {TextContent}\n */\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\n /**\n * @param {string} name - DOM node name. (lower case)\n *\n * @returns {boolean} true if the DOM node should have a corresponding text\n * node.\n */\n static shouldBuildText(name) {\n return !(\n name === \"textarea\" ||\n name === \"input\" ||\n name === \"option\" ||\n name === \"select\"\n );\n }\n}\n\nexport { XfaText };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseFilterFactory,\n BaseStandardFontDataFactory,\n} from \"./base_factory.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./node_utils.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst fetchData = function (url) {\n return new Promise((resolve, reject) => {\n const fs = __non_webpack_require__(\"fs\");\n fs.readFile(url, (error, data) => {\n if (error || !data) {\n reject(new Error(error));\n return;\n }\n resolve(new Uint8Array(data));\n });\n });\n};\n\nclass NodeFilterFactory extends BaseFilterFactory {}\n\nclass NodeCanvasFactory extends BaseCanvasFactory {\n /**\n * @ignore\n */\n _createCanvas(width, height) {\n const Canvas = __non_webpack_require__(\"canvas\");\n return Canvas.createCanvas(width, height);\n }\n}\n\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n /**\n * @ignore\n */\n _fetchData(url, compressionType) {\n return fetchData(url).then(data => {\n return { cMapData: data, compressionType };\n });\n }\n}\n\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n /**\n * @ignore\n */\n _fetchData(url) {\n return fetchData(url);\n }\n}\n\nexport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeFilterFactory,\n NodeStandardFontDataFactory,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n AbortException,\n assert,\n MissingPDFException,\n PromiseCapability,\n} from \"../shared/util.js\";\nimport {\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./node_stream.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst fs = __non_webpack_require__(\"fs\");\nconst http = __non_webpack_require__(\"http\");\nconst https = __non_webpack_require__(\"https\");\nconst url = __non_webpack_require__(\"url\");\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n const parsedUrl = url.parse(sourceUrl);\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n // Prepending 'file:///' to Windows absolute path.\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n // Changes protocol to 'file:' if url refers to filesystem.\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n return parsedUrl;\n}\n\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp =\n this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n // Check if url refers to filesystem.\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFNodeStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = this.isFsUrl\n ? new PDFNodeStreamFsFullReader(this)\n : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = this.isFsUrl\n ? new PDFNodeStreamFsRangeReader(this, start, end)\n : new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\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; // optional\n this._loaded = 0;\n this._filename = null;\n\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._readableStream = null;\n this._readCapability = new PromiseCapability();\n this._headersCapability = new PromiseCapability();\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = new PromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength,\n });\n\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readable to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n\n // Destroy ReadableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\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 = new PromiseCapability();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = new PromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({ loaded: this._loaded });\n\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readableStream to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // Destroy readableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\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}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\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\n const getResponseHeader = name => {\n // Make sure that headers name are in lower case, as mentioned\n // here: https://nodejs.org/api/http.html#http_message_headers.\n return this._readableStream.headers[name.toLowerCase()];\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n } else {\n this._request = https.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n // Note: `request.end(data)` is used to write `data` to request body\n // and notify end of request. But one should always call `request.end()`\n // even if there is no data to write -- (to notify the end of request).\n this._request.end();\n }\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\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\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\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n } else {\n this._request = https.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n fs.lstat(path, (error, stat) => {\n if (error) {\n if (error.code === \"ENOENT\") {\n error = new MissingPDFException(`Missing PDF \"${path}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n // Setting right content length.\n this._contentLength = stat.size;\n\n this._setReadableStream(fs.createReadStream(path));\n this._headersCapability.resolve();\n });\n }\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n this._setReadableStream(fs.createReadStream(path, { start, end: end - 1 }));\n }\n}\n\nexport { PDFNodeStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n MissingPDFException,\n UnexpectedResponseException,\n} from \"../shared/util.js\";\nimport { getFilenameFromContentDispositionHeader } from \"./content_disposition.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange,\n}) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n Number.isInteger(rangeChunkSize) && rangeChunkSize > 0,\n \"rangeChunkSize must be an integer larger than zero.\"\n );\n }\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined,\n };\n\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n\n returnValues.suggestedLength = length;\n\n if (length <= 2 * rangeChunkSize) {\n // The file size is smaller than the size of two chunks, so it does not\n // make any sense to abort the request and retry with a range request.\n return returnValues;\n }\n\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\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 (ex) {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\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(\n `Unexpected server response (${status}) while retrieving PDF \"${url}\".`,\n status\n );\n}\n\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\nexport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToBytes } from \"../shared/util.js\";\n\n// This getFilenameFromContentDispositionHeader function is adapted from\n// https://github.com/Rob--W/open-in-browser/blob/7e2e35a38b8b4e981b11da7b2f01df0149049e92/extension/content-disposition.js\n// with the following changes:\n// - Modified to conform to PDF.js's coding style.\n// - Move return to the end of the function to prevent Babel from dropping the\n// function declarations.\n\n/**\n * Extract file name from the Content-Disposition HTTP response header.\n *\n * @param {string} contentDisposition\n * @returns {string} Filename, if found in the Content-Disposition header.\n */\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n\n // filename*=ext-value (\"ext-value\" from RFC 5987, referenced by RFC 6266).\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\n // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\n // filename*n*=part\n // filename*n=part\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n // RFC 2047, section\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n\n // filename=value (RFC 5987, section 4.1).\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\n // After this line there are only function declarations. We cannot put\n // \"return\" here for readability because babel would then drop the function\n // declarations...\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\n \"(?:^|;)\\\\s*\" +\n attributePattern +\n \"\\\\s*=\\\\s*\" +\n // Captures: value = token | quoted-string\n // (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\n \"(\" +\n '[^\";\\\\s][^;\\\\s]*' +\n \"|\" +\n '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' +\n \")\",\n flags\n );\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, { fatal: true });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch (e) {\n // TextDecoder constructor threw - unrecognized encoding.\n }\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n // Maybe multi-byte UTF-8.\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n // Try iso-8859-1 encoding.\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n // Iterate over all filename*n= and filename*n*= with n being an integer\n // of at least zero. Any non-zero number must not start with '0'.\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match; // eslint-disable-line prefer-const\n n = parseInt(n, 10);\n if (n in matches) {\n // Ignore anything after the invalid second filename*0.\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 // Numbers must be consecutive. Truncate when there is a hole.\n break;\n }\n let [quot, part] = matches[n]; // eslint-disable-line prefer-const\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 // Find the first unescaped \" and terminate there.\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; // Truncates and stop the iteration.\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n // Decodes \"ext-value\" from RFC 5987.\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n // Some servers send \"filename*=\" without encoding 'language' prefix,\n // e.g. in https://github.com/Rob--W/open-in-browser/issues/26\n // Let's accept the value like Firefox (57) (Chrome 62 rejects it).\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n // Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n // RFC 2047-decode the result. Firefox tried to drop support for it, but\n // backed out because some servers use it - https://bugzil.la/875615\n // Firefox's condition for decoding is here: https://searchfox.org/mozilla-central/rev/4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8/netwerk/mime/nsMIMEHeaderParamImpl.cpp#742-748\n\n // We are more strict and only recognize RFC 2047-encoding if the value\n // starts with \"=?\", since then it is likely that the full value is\n // RFC 2047-encoded.\n\n // Firefox also decodes words even where RFC 2047 section 5 states:\n // \"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\"\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n // RFC 2047, section 2.4\n // encoded-word = \"=?\" charset \"?\" encoding \"?\" encoded-text \"?=\"\n // charset = token (but let's restrict to characters that denote a\n // possibly valid encoding).\n // encoding = q or b\n // encoded-text = any printable ASCII character other than ? or space.\n // ... but Firefox permits ? and space.\n return value.replaceAll(\n /=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g,\n function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n // RFC 2047 section 4.2.\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 } // else encoding is b or B - base64 (RFC 2047 section 4.1)\n try {\n text = atob(text);\n } catch (e) {}\n return textdecode(charset, text);\n }\n );\n }\n\n return \"\";\n}\n\nexport { getFilenameFromContentDispositionHeader };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, PromiseCapability, stringToBytes } from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./network.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\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\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\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\n requestFull(listeners) {\n return this.request(listeners);\n }\n\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = (this.pendingRequests[xhrId] = { 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\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\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n\n xhr.send(null);\n\n return xhrId;\n }\n\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return; // Maybe abortRequest was called...\n }\n pendingRequest.onProgress?.(evt);\n }\n\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return; // Maybe abortRequest was called...\n }\n\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n // The XHR request might have been aborted in onHeadersReceived()\n // callback, in which case we should abort request.\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n // Success status == 0 can be on ftp, file and other protocols.\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n\n // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n // \"A server MAY ignore the Range header\". This means it's possible to\n // get a 200 rather than a 206 response from a range request.\n const ok_response_on_range_request =\n xhrStatus === OK_RESPONSE &&\n pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (\n !ok_response_on_range_request &&\n xhrStatus !== pendingRequest.expectedStatus\n ) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n\n const chunk = 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\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\n\n/** @implements {IPDFStream} */\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\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFNetworkStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(\n this._manager,\n this._source\n );\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(\n this._manager,\n begin,\n end\n );\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n\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 = new PromiseCapability();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length; // Optional\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n\n this.onProgress = null;\n }\n\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n const getResponseHeader = name => {\n return fullRequestXhr.getResponseHeader(name);\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n if (this._isRangeSupported) {\n // NOTE: by cancelling the full request, and then issuing range\n // requests, there will be an issue for sites where you can only\n // request the pdf once. However, if this is the case, then the\n // server should not be returning that it can support range requests.\n this._manager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n }\n\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: data.chunk, done: false });\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({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\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\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength,\n });\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\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 { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = new PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\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}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n\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\n this.onProgress = null;\n this.onClosed = null;\n }\n\n _close() {\n this.onClosed?.(this);\n }\n\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n this._close();\n }\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\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({ loaded: evt.loaded });\n }\n }\n\n get isStreamingSupported() {\n return false;\n }\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 { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = new PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\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\nexport { PDFNetworkStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n PromiseCapability,\n warn,\n} from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./fetch_stream.js\" shall not be used with MOZCENTRAL builds.'\n );\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}\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}\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}\n\n/** @implements {IPDFStream} */\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\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFFetchStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\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\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\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 = new PromiseCapability();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._headers = createHeaders(this._stream.httpHeaders);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .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\n const getResponseHeader = name => {\n return response.headers.get(name);\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n })\n .catch(this._headersCapability.reject);\n\n this.onProgress = null;\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._headersCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength,\n });\n\n return { value: getArrayBuffer(value), done: false };\n }\n\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\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 = new PromiseCapability();\n this._isStreamingSupported = !source.disableStream;\n\n this._abortController = new AbortController();\n this._headers = createHeaders(this._stream.httpHeaders);\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .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 })\n .catch(this._readCapability.reject);\n\n this.onProgress = null;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({ loaded: this._loaded });\n\n return { value: getArrayBuffer(value), done: false };\n }\n\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\nexport { PDFFetchStream };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./api\").TextContent} TextContent */\n\nimport {\n AbortException,\n FeatureTest,\n PromiseCapability,\n Util,\n} from \"../shared/util.js\";\nimport { deprecated, setLayerDimensions } from \"./display_utils.js\";\n\n/**\n * Text layer render parameters.\n *\n * @typedef {Object} TextLayerRenderParameters\n * @property {ReadableStream | TextContent} textContentSource - Text content to\n * render, i.e. the value returned by the page's `streamTextContent` or\n * `getTextContent` method.\n * @property {HTMLElement} container - The DOM node that will contain the text\n * runs.\n * @property {PageViewport} viewport - The target viewport to properly layout\n * the text runs.\n * @property {Array<HTMLElement>} [textDivs] - HTML elements that correspond to\n * the text items of the textContent input.\n * This is output and shall initially be set to an empty array.\n * @property {WeakMap<HTMLElement,Object>} [textDivProperties] - Some properties\n * weakly mapped to the HTML elements used to render the text.\n * @property {Array<string>} [textContentItemsStr] - Strings that correspond to\n * the `str` property of the text items of the textContent input.\n * This is output and shall initially be set to an empty array.\n * @property {boolean} [isOffscreenCanvasSupported] true if we can use\n * OffscreenCanvas to measure string widths.\n */\n\n/**\n * Text layer update parameters.\n *\n * @typedef {Object} TextLayerUpdateParameters\n * @property {HTMLElement} container - The DOM node that will contain the text\n * runs.\n * @property {PageViewport} viewport - The target viewport to properly layout\n * the text runs.\n * @property {Array<HTMLElement>} [textDivs] - HTML elements that correspond to\n * the text items of the textContent input.\n * This is output and shall initially be set to an empty array.\n * @property {WeakMap<HTMLElement,Object>} [textDivProperties] - Some properties\n * weakly mapped to the HTML elements used to render the text.\n * @property {boolean} [isOffscreenCanvasSupported] true if we can use\n * OffscreenCanvas to measure string widths.\n * @property {boolean} [mustRotate] true if the text layer must be rotated.\n * @property {boolean} [mustRescale] true if the text layer contents must be\n * rescaled.\n */\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nconst ascentCache = new Map();\n\nfunction getCtx(size, isOffscreenCanvasSupported) {\n let ctx;\n if (isOffscreenCanvasSupported && FeatureTest.isOffscreenCanvasSupported) {\n ctx = new OffscreenCanvas(size, size).getContext(\"2d\", { alpha: false });\n } else {\n const canvas = document.createElement(\"canvas\");\n canvas.width = canvas.height = size;\n ctx = canvas.getContext(\"2d\", { alpha: false });\n }\n\n return ctx;\n}\n\nfunction getAscent(fontFamily, isOffscreenCanvasSupported) {\n const cachedAscent = ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n\n const ctx = getCtx(DEFAULT_FONT_SIZE, isOffscreenCanvasSupported);\n\n ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n const metrics = ctx.measureText(\"\");\n\n // Both properties aren't available by default in Firefox.\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n\n ctx.canvas.width = ctx.canvas.height = 0;\n return ratio;\n }\n\n // Try basic heuristic to guess ascent/descent.\n // Draw a g with baseline at 0,0 and then get the line\n // number where a pixel has non-null red component (starting\n // from bottom).\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(\n 0,\n 0,\n DEFAULT_FONT_SIZE,\n DEFAULT_FONT_SIZE\n ).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\n // Draw an A with baseline at 0,DEFAULT_FONT_SIZE and then get the line\n // number where a pixel has non-null red component (starting\n // from top).\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\n ctx.canvas.width = ctx.canvas.height = 0;\n\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n return DEFAULT_FONT_ASCENT;\n}\n\nfunction appendText(task, geom, styles) {\n // Initialize all used properties to keep the caches monomorphic.\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 task._textDivs.push(textDiv);\n\n const tx = Util.transform(task._transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = styles[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent =\n fontHeight * getAscent(style.fontFamily, task._isOffscreenCanvasSupported);\n\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\n const scaleFactorStr = \"calc(var(--scale-factor)*\";\n const divStyle = textDiv.style;\n // Setting the style properties individually, rather than all at once,\n // should be OK since the `textDiv` isn't appended to the document yet.\n if (task._container === task._rootContainer) {\n divStyle.left = `${((100 * left) / task._pageWidth).toFixed(2)}%`;\n divStyle.top = `${((100 * top) / task._pageHeight).toFixed(2)}%`;\n } else {\n // We're in a marked content span, hence we can't use percents.\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${fontHeight.toFixed(2)}px)`;\n divStyle.fontFamily = style.fontFamily;\n\n textDivProperties.fontSize = fontHeight;\n\n // Keeps screen readers from pausing on every new text span.\n textDiv.setAttribute(\"role\", \"presentation\");\n\n textDiv.textContent = geom.str;\n // geom.dir may be 'ttb' for vertical texts.\n textDiv.dir = geom.dir;\n\n // `fontName` is only used by the FontInspector, and we only use `dataset`\n // here to make the font name available in the debugger.\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n // We don't bother scaling single-char text divs, because it has very\n // little effect on text highlighting. This makes scrolling on docs with\n // lots of such divs a lot faster.\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 // When the horizontal/vertical scaling differs significantly, also scale\n // even single-char text to improve highlighting (fixes issue11713.pdf).\n if (\n absScaleX !== absScaleY &&\n Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5\n ) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n task._textDivProperties.set(textDiv, textDivProperties);\n if (task._isReadableStream) {\n task._layoutText(textDiv);\n }\n}\n\nfunction layout(params) {\n const { div, scale, properties, ctx, prevFontSize, prevFontFamily } = params;\n const { style } = div;\n let transform = \"\";\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const { fontFamily } = style;\n const { canvasWidth, fontSize } = properties;\n\n if (prevFontSize !== fontSize || prevFontFamily !== fontFamily) {\n ctx.font = `${fontSize * scale}px ${fontFamily}`;\n params.prevFontSize = fontSize;\n params.prevFontFamily = fontFamily;\n }\n\n // Only measure the width for multi-char text divs, see `appendText`.\n const { width } = ctx.measureText(div.textContent);\n\n if (width > 0) {\n transform = `scaleX(${(canvasWidth * scale) / width})`;\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\nfunction render(task) {\n if (task._canceled) {\n return;\n }\n const textDivs = task._textDivs;\n const capability = task._capability;\n const textDivsLength = textDivs.length;\n\n // No point in rendering many divs as it would make the browser\n // unusable even after the divs are rendered.\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n capability.resolve();\n return;\n }\n\n if (!task._isReadableStream) {\n for (const textDiv of textDivs) {\n task._layoutText(textDiv);\n }\n }\n capability.resolve();\n}\n\nclass TextLayerRenderTask {\n constructor({\n textContentSource,\n container,\n viewport,\n textDivs,\n textDivProperties,\n textContentItemsStr,\n isOffscreenCanvasSupported,\n }) {\n this._textContentSource = textContentSource;\n this._isReadableStream = textContentSource instanceof ReadableStream;\n this._container = this._rootContainer = container;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._isOffscreenCanvasSupported = isOffscreenCanvasSupported;\n this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n\n this._reader = null;\n this._textDivProperties = textDivProperties || new WeakMap();\n this._canceled = false;\n this._capability = new PromiseCapability();\n this._layoutTextParams = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n scale: viewport.scale * (globalThis.devicePixelRatio || 1),\n properties: null,\n ctx: getCtx(0, isOffscreenCanvasSupported),\n };\n const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n this._transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this._pageWidth = pageWidth;\n this._pageHeight = pageHeight;\n\n setLayerDimensions(container, viewport);\n\n // Always clean-up the temporary canvas once rendering is no longer pending.\n this._capability.promise\n .finally(() => {\n this._layoutTextParams = null;\n })\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n }\n\n /**\n * Promise for textLayer rendering task completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Cancel rendering of the textLayer.\n */\n cancel() {\n this._canceled = true;\n if (this._reader) {\n this._reader\n .cancel(new AbortException(\"TextLayer task cancelled.\"))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n this._reader = null;\n }\n this._capability.reject(new AbortException(\"TextLayer task cancelled.\"));\n }\n\n /**\n * @private\n */\n _processItems(items, styleCache) {\n for (const item of items) {\n if (item.str === undefined) {\n if (\n item.type === \"beginMarkedContentProps\" ||\n item.type === \"beginMarkedContent\"\n ) {\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 this._textContentItemsStr.push(item.str);\n appendText(this, item, styleCache);\n }\n }\n\n /**\n * @private\n */\n _layoutText(textDiv) {\n const textDivProperties = (this._layoutTextParams.properties =\n this._textDivProperties.get(textDiv));\n this._layoutTextParams.div = textDiv;\n layout(this._layoutTextParams);\n\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\n /**\n * @private\n */\n _render() {\n const capability = new PromiseCapability();\n let styleCache = Object.create(null);\n\n if (this._isReadableStream) {\n const pump = () => {\n this._reader.read().then(({ value, done }) => {\n if (done) {\n capability.resolve();\n return;\n }\n\n Object.assign(styleCache, value.styles);\n this._processItems(value.items, styleCache);\n pump();\n }, capability.reject);\n };\n\n this._reader = this._textContentSource.getReader();\n pump();\n } else if (this._textContentSource) {\n const { items, styles } = this._textContentSource;\n this._processItems(items, styles);\n capability.resolve();\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n\n capability.promise.then(() => {\n styleCache = null;\n render(this);\n }, this._capability.reject);\n }\n}\n\n/**\n * @param {TextLayerRenderParameters} params\n * @returns {TextLayerRenderTask}\n */\nfunction renderTextLayer(params) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n !params.textContentSource &&\n (params.textContent || params.textContentStream)\n ) {\n deprecated(\n \"The TextLayerRender `textContent`/`textContentStream` parameters \" +\n \"will be removed in the future, please use `textContentSource` instead.\"\n );\n params.textContentSource = params.textContent || params.textContentStream;\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC && !TESTING\")) {\n const { container, viewport } = params;\n const style = getComputedStyle(container);\n const visibility = style.getPropertyValue(\"visibility\");\n const scaleFactor = parseFloat(style.getPropertyValue(\"--scale-factor\"));\n\n if (\n visibility === \"visible\" &&\n (!scaleFactor || Math.abs(scaleFactor - viewport.scale) > 1e-5)\n ) {\n console.error(\n \"The `--scale-factor` CSS-variable must be set, \" +\n \"to the same value as `viewport.scale`, \" +\n \"either on the `container`-element itself or higher up in the DOM.\"\n );\n }\n }\n const task = new TextLayerRenderTask(params);\n task._render();\n return task;\n}\n\n/**\n * @param {TextLayerUpdateParameters} params\n * @returns {undefined}\n */\nfunction updateTextLayer({\n container,\n viewport,\n textDivs,\n textDivProperties,\n isOffscreenCanvasSupported,\n mustRotate = true,\n mustRescale = true,\n}) {\n if (mustRotate) {\n setLayerDimensions(container, { rotation: viewport.rotation });\n }\n\n if (mustRescale) {\n const ctx = getCtx(0, isOffscreenCanvasSupported);\n const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n const params = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n scale,\n properties: null,\n ctx,\n };\n for (const div of textDivs) {\n params.properties = textDivProperties.get(div);\n params.div = div;\n layout(params);\n }\n }\n}\n\nexport { renderTextLayer, TextLayerRenderTask, updateTextLayer };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./editor.js\").AnnotationEditor} AnnotationEditor */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./tools.js\").AnnotationEditorUIManager} AnnotationEditorUIManager */\n/** @typedef {import(\"../display_utils.js\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n/** @typedef {import(\"../../web/interfaces\").IL10n} IL10n */\n\nimport { AnnotationEditorType, FeatureTest } from \"../../shared/util.js\";\nimport { bindEvents } from \"./tools.js\";\nimport { FreeTextEditor } from \"./freetext.js\";\nimport { InkEditor } from \"./ink.js\";\nimport { setLayerDimensions } from \"../display_utils.js\";\n\n/**\n * @typedef {Object} AnnotationEditorLayerOptions\n * @property {Object} mode\n * @property {HTMLDivElement} div\n * @property {AnnotationEditorUIManager} uiManager\n * @property {boolean} enabled\n * @property {TextAccessibilityManager} [accessibilityManager]\n * @property {number} pageIndex\n * @property {IL10n} l10n\n */\n\n/**\n * @typedef {Object} RenderEditorLayerOptions\n * @property {PageViewport} viewport\n */\n\n/**\n * Manage all the different editors on a page.\n */\nclass AnnotationEditorLayer {\n #accessibilityManager;\n\n #allowClick = false;\n\n #boundPointerup = this.pointerup.bind(this);\n\n #boundPointerdown = this.pointerdown.bind(this);\n\n #editors = new Map();\n\n #hadPointerDown = false;\n\n #isCleaningUp = false;\n\n #uiManager;\n\n static _initialized = false;\n\n /**\n * @param {AnnotationEditorLayerOptions} options\n */\n constructor(options) {\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n FreeTextEditor.initialize(options.l10n);\n InkEditor.initialize(options.l10n);\n }\n options.uiManager.registerEditorTypes([FreeTextEditor, InkEditor]);\n\n this.#uiManager = options.uiManager;\n this.pageIndex = options.pageIndex;\n this.div = options.div;\n this.#accessibilityManager = options.accessibilityManager;\n\n this.#uiManager.addLayer(this);\n }\n\n get isEmpty() {\n return this.#editors.size === 0;\n }\n\n /**\n * Update the toolbar if it's required to reflect the tool currently used.\n * @param {number} mode\n */\n updateToolbar(mode) {\n this.#uiManager.updateToolbar(mode);\n }\n\n /**\n * The mode has changed: it must be updated.\n * @param {number} mode\n */\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n if (mode === AnnotationEditorType.INK) {\n // We always want to an ink editor ready to draw in.\n this.addInkEditorIfNeeded(false);\n this.disableClick();\n } else {\n this.enableClick();\n }\n this.#uiManager.unselectAll();\n\n if (mode !== AnnotationEditorType.NONE) {\n this.div.classList.toggle(\n \"freeTextEditing\",\n mode === AnnotationEditorType.FREETEXT\n );\n this.div.classList.toggle(\n \"inkEditing\",\n mode === AnnotationEditorType.INK\n );\n this.div.hidden = false;\n }\n }\n\n addInkEditorIfNeeded(isCommitting) {\n if (\n !isCommitting &&\n this.#uiManager.getMode() !== AnnotationEditorType.INK\n ) {\n return;\n }\n\n if (!isCommitting) {\n // We're removing an editor but an empty one can already exist so in this\n // case we don't need to create a new one.\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.setInBackground();\n return;\n }\n }\n }\n\n const editor = this.#createAndAddNewEditor({ offsetX: 0, offsetY: 0 });\n editor.setInBackground();\n }\n\n /**\n * Set the editing state.\n * @param {boolean} isEditing\n */\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n\n /**\n * Add some commands into the CommandManager (undo/redo stuff).\n * @param {Object} params\n */\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n\n /**\n * Enable pointer events on the main div in order to enable\n * editor creation.\n */\n enable() {\n this.div.style.pointerEvents = \"auto\";\n for (const editor of this.#editors.values()) {\n editor.enableEditing();\n }\n }\n\n /**\n * Disable editor creation.\n */\n disable() {\n this.div.style.pointerEvents = \"none\";\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n }\n\n /**\n * Set the current editor.\n * @param {AnnotationEditor} editor\n */\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n\n this.#uiManager.setActiveEditor(editor);\n }\n\n enableClick() {\n this.div.addEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.addEventListener(\"pointerup\", this.#boundPointerup);\n }\n\n disableClick() {\n this.div.removeEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.removeEventListener(\"pointerup\", this.#boundPointerup);\n }\n\n attach(editor) {\n this.#editors.set(editor.id, editor);\n }\n\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n }\n\n /**\n * Remove an editor.\n * @param {AnnotationEditor} editor\n */\n remove(editor) {\n // Since we can undo a removal we need to keep the\n // parent property as it is, so don't null it!\n\n this.#uiManager.removeEditor(editor);\n this.detach(editor);\n editor.div.style.display = \"none\";\n setTimeout(() => {\n // When the div is removed from DOM the focus can move on the\n // document.body, so we just slightly postpone the removal in\n // order to let an element potentially grab the focus before\n // the body.\n editor.div.style.display = \"\";\n editor.div.remove();\n editor.isAttachedToDOM = false;\n if (document.activeElement === document.body) {\n this.#uiManager.focusMainContainer();\n }\n }, 0);\n\n if (!this.#isCleaningUp) {\n this.addInkEditorIfNeeded(/* isCommitting = */ false);\n }\n }\n\n /**\n * An editor can have a different parent, for example after having\n * being dragged and droped from a page to another.\n * @param {AnnotationEditor} editor\n */\n #changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\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\n /**\n * Add a new editor in the current view.\n * @param {AnnotationEditor} editor\n */\n add(editor) {\n this.#changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n\n this.moveEditorInDOM(editor);\n editor.onceAdded();\n this.#uiManager.addToAnnotationStorage(editor);\n }\n\n moveEditorInDOM(editor) {\n this.#accessibilityManager?.moveElementInDOM(\n this.div,\n editor.div,\n editor.contentDiv,\n /* isRemovable = */ true\n );\n }\n\n /**\n * Add or rebuild depending if it has been removed or not.\n * @param {AnnotationEditor} editor\n */\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.rebuild();\n } else {\n this.add(editor);\n }\n }\n\n /**\n * Add a new editor and make this addition undoable.\n * @param {AnnotationEditor} editor\n */\n addANewEditor(editor) {\n const cmd = () => {\n this.addOrRebuild(editor);\n };\n const undo = () => {\n editor.remove();\n };\n\n this.addCommands({ cmd, undo, mustExec: true });\n }\n\n /**\n * Add a new editor and make this addition undoable.\n * @param {AnnotationEditor} editor\n */\n addUndoableEditor(editor) {\n const cmd = () => {\n this.addOrRebuild(editor);\n };\n const undo = () => {\n editor.remove();\n };\n\n this.addCommands({ cmd, undo, mustExec: false });\n }\n\n /**\n * Get an id for an editor.\n * @returns {string}\n */\n getNextId() {\n return this.#uiManager.getId();\n }\n\n /**\n * Create a new editor\n * @param {Object} params\n * @returns {AnnotationEditor}\n */\n #createNewEditor(params) {\n switch (this.#uiManager.getMode()) {\n case AnnotationEditorType.FREETEXT:\n return new FreeTextEditor(params);\n case AnnotationEditorType.INK:\n return new InkEditor(params);\n }\n return null;\n }\n\n /**\n * Create a new editor\n * @param {Object} data\n * @returns {AnnotationEditor}\n */\n deserialize(data) {\n switch (data.annotationType) {\n case AnnotationEditorType.FREETEXT:\n return FreeTextEditor.deserialize(data, this, this.#uiManager);\n case AnnotationEditorType.INK:\n return InkEditor.deserialize(data, this, this.#uiManager);\n }\n return null;\n }\n\n /**\n * Create and add a new editor.\n * @param {PointerEvent} event\n * @returns {AnnotationEditor}\n */\n #createAndAddNewEditor(event) {\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 });\n if (editor) {\n this.add(editor);\n }\n\n return editor;\n }\n\n /**\n * Set the last selected editor.\n * @param {AnnotationEditor} editor\n */\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n\n /**\n * Add or remove an editor the current selection.\n * @param {AnnotationEditor} editor\n */\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n\n /**\n * Check if the editor is selected.\n * @param {AnnotationEditor} editor\n */\n isSelected(editor) {\n return this.#uiManager.isSelected(editor);\n }\n\n /**\n * Unselect an editor.\n * @param {AnnotationEditor} editor\n */\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n\n /**\n * Pointerup callback.\n * @param {PointerEvent} event\n */\n pointerup(event) {\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n // Don't create an editor on right click.\n return;\n }\n\n if (event.target !== this.div) {\n return;\n }\n\n if (!this.#hadPointerDown) {\n // It can happen when the user starts a drag inside a text editor\n // and then releases the mouse button outside of it. In such a case\n // we don't want to create a new editor, hence we check that a pointerdown\n // occurred on this div previously.\n return;\n }\n this.#hadPointerDown = false;\n\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n\n this.#createAndAddNewEditor(event);\n }\n\n /**\n * Pointerdown callback.\n * @param {PointerEvent} event\n */\n pointerdown(event) {\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n // Do nothing on right click.\n return;\n }\n\n if (event.target !== this.div) {\n return;\n }\n\n this.#hadPointerDown = true;\n\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n\n /**\n * Drag callback.\n * @param {DragEvent} event\n */\n drop(event) {\n const id = event.dataTransfer.getData(\"text/plain\");\n const editor = this.#uiManager.getEditor(id);\n if (!editor) {\n return;\n }\n\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n\n this.#changeParent(editor);\n\n const rect = this.div.getBoundingClientRect();\n const endX = event.clientX - rect.x;\n const endY = event.clientY - rect.y;\n\n editor.translate(endX - editor.startX, endY - editor.startY);\n this.moveEditorInDOM(editor);\n editor.div.focus();\n }\n\n /**\n * Dragover callback.\n * @param {DragEvent} event\n */\n dragover(event) {\n event.preventDefault();\n }\n\n /**\n * Destroy the main editor.\n */\n destroy() {\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.setActiveEditor(null);\n }\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\n #cleanup() {\n // When we're cleaning up, some editors are removed but we don't want\n // to add a new one which will induce an addition in this.#editors, hence\n // an infinite loop.\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\n /**\n * Render the main editor.\n * @param {RenderEditorLayerOptions} parameters\n */\n render({ viewport }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n bindEvents(this, this.div, [\"dragover\", \"drop\"]);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n }\n this.updateMode();\n }\n\n /**\n * Update the main editor.\n * @param {RenderEditorLayerOptions} parameters\n */\n update({ viewport }) {\n // Editors have their dimensions/positions in percent so to avoid any\n // issues (see #15582), we must commit the current one before changing\n // the viewport.\n this.#uiManager.commitOrRemove();\n\n this.viewport = viewport;\n setLayerDimensions(this.div, { rotation: viewport.rotation });\n this.updateMode();\n }\n\n /**\n * Get page dimensions.\n * @returns {Object} dimensions.\n */\n get pageDimensions() {\n const { pageWidth, pageHeight } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n}\n\nexport { AnnotationEditorLayer };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n AnnotationEditorParamsType,\n AnnotationEditorType,\n assert,\n LINE_FACTOR,\n Util,\n} from \"../../shared/util.js\";\nimport { bindEvents, KeyboardManager } from \"./tools.js\";\nimport { AnnotationEditor } from \"./editor.js\";\n\n/**\n * Basic text editor in order to create a FreeTex annotation.\n */\nclass FreeTextEditor extends AnnotationEditor {\n #boundEditorDivBlur = this.editorDivBlur.bind(this);\n\n #boundEditorDivFocus = this.editorDivFocus.bind(this);\n\n #boundEditorDivInput = this.editorDivInput.bind(this);\n\n #boundEditorDivKeydown = this.editorDivKeydown.bind(this);\n\n #color;\n\n #content = \"\";\n\n #editorDivId = `${this.id}-editor`;\n\n #hasAlreadyBeenCommitted = false;\n\n #fontSize;\n\n static _freeTextDefaultContent = \"\";\n\n static _l10nPromise;\n\n static _internalPadding = 0;\n\n static _defaultColor = null;\n\n static _defaultFontSize = 10;\n\n static _keyboardManager = new KeyboardManager([\n [\n [\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"],\n FreeTextEditor.prototype.commitOrRemove,\n ],\n ]);\n\n static _type = \"freetext\";\n\n constructor(params) {\n super({ ...params, name: \"freeTextEditor\" });\n this.#color =\n params.color ||\n FreeTextEditor._defaultColor ||\n AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n }\n\n static initialize(l10n) {\n this._l10nPromise = new Map(\n [\"free_text2_default_content\", \"editor_free_text2_aria_label\"].map(\n str => [str, l10n.get(str)]\n )\n );\n\n const style = getComputedStyle(document.documentElement);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n const lineHeight = parseFloat(\n style.getPropertyValue(\"--freetext-line-height\")\n );\n assert(\n lineHeight === LINE_FACTOR,\n \"Update the CSS variable to agree with the constant.\"\n );\n }\n\n this._internalPadding = parseFloat(\n style.getPropertyValue(\"--freetext-padding\")\n );\n }\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\n /** @inheritdoc */\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\n static get defaultPropertiesToUpdate() {\n return [\n [\n AnnotationEditorParamsType.FREETEXT_SIZE,\n FreeTextEditor._defaultFontSize,\n ],\n [\n AnnotationEditorParamsType.FREETEXT_COLOR,\n FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor,\n ],\n ];\n }\n\n get propertiesToUpdate() {\n return [\n [AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize],\n [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color],\n ];\n }\n\n /**\n * Update the font size and make this action as undoable.\n * @param {number} fontSize\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: () => {\n setFontsize(fontSize);\n },\n undo: () => {\n setFontsize(savedFontsize);\n },\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n }\n\n /**\n * Update the color and make this action undoable.\n * @param {string} color\n */\n #updateColor(color) {\n const savedColor = this.#color;\n this.addCommands({\n cmd: () => {\n this.#color = this.editorDiv.style.color = color;\n },\n undo: () => {\n this.#color = this.editorDiv.style.color = savedColor;\n },\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n }\n\n /** @inheritdoc */\n getInitialTranslation() {\n // The start of the base line is where the user clicked.\n const scale = this.parentScale;\n return [\n -FreeTextEditor._internalPadding * scale,\n -(FreeTextEditor._internalPadding + this.#fontSize) * scale,\n ];\n }\n\n /** @inheritdoc */\n rebuild() {\n super.rebuild();\n if (this.div === null) {\n return;\n }\n\n if (!this.isAttachedToDOM) {\n // At some point this editor was removed and we're rebuilting it,\n // hence we must add it to its parent.\n this.parent.add(this);\n }\n }\n\n /** @inheritdoc */\n enableEditMode() {\n if (this.isInEditMode()) {\n return;\n }\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.div.draggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.editorDiv.addEventListener(\"keydown\", this.#boundEditorDivKeydown);\n this.editorDiv.addEventListener(\"focus\", this.#boundEditorDivFocus);\n this.editorDiv.addEventListener(\"blur\", this.#boundEditorDivBlur);\n this.editorDiv.addEventListener(\"input\", this.#boundEditorDivInput);\n }\n\n /** @inheritdoc */\n disableEditMode() {\n if (!this.isInEditMode()) {\n return;\n }\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.div.draggable = 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\n // On Chrome, the focus is given to <body> when contentEditable is set to\n // false, hence we focus the div.\n this.div.focus({\n preventScroll: true /* See issue #15744 */,\n });\n\n // In case the blur callback hasn't been called.\n this.isEditing = false;\n this.parent.div.classList.add(\"freeTextEditing\");\n }\n\n /** @inheritdoc */\n focusin(event) {\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n\n /** @inheritdoc */\n onceAdded() {\n if (this.width) {\n // The editor was created in using ctrl+c.\n return;\n }\n this.enableEditMode();\n this.editorDiv.focus();\n }\n\n /** @inheritdoc */\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n\n /** @inheritdoc */\n remove() {\n this.isEditing = false;\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freeTextEditing\");\n super.remove();\n }\n\n /**\n * Extract the text from this editor.\n * @returns {string}\n */\n #extractText() {\n const divs = this.editorDiv.getElementsByTagName(\"div\");\n if (divs.length === 0) {\n return this.editorDiv.innerText;\n }\n const buffer = [];\n for (const div of divs) {\n buffer.push(div.innerText.replace(/\\r\\n?|\\n/, \"\"));\n }\n return buffer.join(\"\\n\");\n }\n\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n // This editor isn't on screen but we need to get its dimensions, so\n // we just insert it in the DOM, get its bounding box and then remove it.\n const { currentLayer, div } = this;\n const savedDisplay = div.style.display;\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n }\n\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n }\n\n /**\n * Commit the content we have in this editor.\n * @returns {undefined}\n */\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n\n super.commit();\n if (!this.#hasAlreadyBeenCommitted) {\n // This editor has something and it's the first time\n // it's commited so we can add it in the undo/redo stack.\n this.#hasAlreadyBeenCommitted = true;\n this.parent.addUndoableEditor(this);\n }\n\n this.disableEditMode();\n this.#content = this.#extractText().trimEnd();\n\n this.#setEditorDimensions();\n }\n\n /** @inheritdoc */\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n\n /**\n * ondblclick callback.\n * @param {MouseEvent} event\n */\n dblclick(event) {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n\n /**\n * onkeydown callback.\n * @param {KeyboardEvent} event\n */\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n }\n\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n\n editorDivFocus(event) {\n this.isEditing = true;\n }\n\n editorDivBlur(event) {\n this.isEditing = false;\n }\n\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freeTextEditing\", this.isEmpty());\n }\n\n /** @inheritdoc */\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n\n /** @inheritdoc */\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n\n /** @inheritdoc */\n render() {\n if (this.div) {\n return this.div;\n }\n\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.enableEditing();\n\n FreeTextEditor._l10nPromise\n .get(\"editor_free_text2_aria_label\")\n .then(msg => this.editorDiv?.setAttribute(\"aria-label\", msg));\n\n FreeTextEditor._l10nPromise\n .get(\"free_text2_default_content\")\n .then(msg => this.editorDiv?.setAttribute(\"default-content\", msg));\n this.editorDiv.contentEditable = true;\n\n const { style } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n\n this.div.append(this.editorDiv);\n\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n\n // TODO: implement paste callback.\n // The goal is to sanitize and have something suitable for this\n // editor.\n bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n\n if (this.width) {\n // This editor was created in using copy (ctrl+c).\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(\n baseX * parentWidth,\n baseY * parentHeight,\n this.width * parentWidth,\n this.height * parentHeight\n );\n\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(\n line ? document.createTextNode(line) : document.createElement(\"br\")\n );\n this.editorDiv.append(div);\n }\n\n this.div.draggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this.div.draggable = false;\n this.editorDiv.contentEditable = true;\n }\n\n return this.div;\n }\n\n get contentDiv() {\n return this.editorDiv;\n }\n\n /** @inheritdoc */\n static deserialize(data, parent, uiManager) {\n const editor = super.deserialize(data, parent, uiManager);\n\n editor.#fontSize = data.fontSize;\n editor.#color = Util.makeHexColor(...data.color);\n editor.#content = data.value;\n\n return editor;\n }\n\n /** @inheritdoc */\n serialize() {\n if (this.isEmpty()) {\n return null;\n }\n\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n const rect = this.getRect(padding, padding);\n\n const color = AnnotationEditor._colorManager.convert(\n this.isAttachedToDOM\n ? getComputedStyle(this.editorDiv).color\n : this.#color\n );\n\n return {\n annotationType: AnnotationEditorType.FREETEXT,\n color,\n fontSize: this.#fontSize,\n value: this.#content,\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n };\n }\n}\n\nexport { FreeTextEditor };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AnnotationEditorParamsType,\n AnnotationEditorType,\n Util,\n} from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { opacityToHex } from \"./tools.js\";\n\n// The dimensions of the resizer is 15x15:\n// https://searchfox.org/mozilla-central/rev/1ce190047b9556c3c10ab4de70a0e61d893e2954/toolkit/content/minimal-xul.css#136-137\n// so each dimension must be greater than RESIZER_SIZE.\nconst RESIZER_SIZE = 16;\n\n/**\n * Basic draw editor in order to generate an Ink annotation.\n */\nclass InkEditor extends AnnotationEditor {\n #aspectRatio = 0;\n\n #baseHeight = 0;\n\n #baseWidth = 0;\n\n #boundCanvasContextMenu = this.canvasContextMenu.bind(this);\n\n #boundCanvasPointermove = this.canvasPointermove.bind(this);\n\n #boundCanvasPointerleave = this.canvasPointerleave.bind(this);\n\n #boundCanvasPointerup = this.canvasPointerup.bind(this);\n\n #boundCanvasPointerdown = this.canvasPointerdown.bind(this);\n\n #currentPath2D = new Path2D();\n\n #disableEditing = false;\n\n #hasSomethingToDraw = false;\n\n #isCanvasInitialized = false;\n\n #observer = null;\n\n #realWidth = 0;\n\n #realHeight = 0;\n\n #requestFrameCallback = null;\n\n static _defaultColor = null;\n\n static _defaultOpacity = 1;\n\n static _defaultThickness = 1;\n\n static _l10nPromise;\n\n static _type = \"ink\";\n\n constructor(params) {\n super({ ...params, name: \"inkEditor\" });\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 }\n\n static initialize(l10n) {\n this._l10nPromise = new Map(\n [\"editor_ink_canvas_aria_label\", \"editor_ink2_aria_label\"].map(str => [\n str,\n l10n.get(str),\n ])\n );\n }\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\n /** @inheritdoc */\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\n static get defaultPropertiesToUpdate() {\n return [\n [AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness],\n [\n AnnotationEditorParamsType.INK_COLOR,\n InkEditor._defaultColor || AnnotationEditor._defaultLineColor,\n ],\n [\n AnnotationEditorParamsType.INK_OPACITY,\n Math.round(InkEditor._defaultOpacity * 100),\n ],\n ];\n }\n\n /** @inheritdoc */\n get propertiesToUpdate() {\n return [\n [\n AnnotationEditorParamsType.INK_THICKNESS,\n this.thickness || InkEditor._defaultThickness,\n ],\n [\n AnnotationEditorParamsType.INK_COLOR,\n this.color ||\n InkEditor._defaultColor ||\n AnnotationEditor._defaultLineColor,\n ],\n [\n AnnotationEditorParamsType.INK_OPACITY,\n Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity)),\n ],\n ];\n }\n\n /**\n * Update the thickness and make this action undoable.\n * @param {number} thickness\n */\n #updateThickness(thickness) {\n const savedThickness = this.thickness;\n this.addCommands({\n cmd: () => {\n this.thickness = thickness;\n this.#fitToContent();\n },\n undo: () => {\n this.thickness = savedThickness;\n this.#fitToContent();\n },\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n }\n\n /**\n * Update the color and make this action undoable.\n * @param {string} color\n */\n #updateColor(color) {\n const savedColor = this.color;\n this.addCommands({\n cmd: () => {\n this.color = color;\n this.#redraw();\n },\n undo: () => {\n this.color = savedColor;\n this.#redraw();\n },\n mustExec: true,\n type: AnnotationEditorParamsType.INK_COLOR,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n }\n\n /**\n * Update the opacity and make this action undoable.\n * @param {number} opacity\n */\n #updateOpacity(opacity) {\n opacity /= 100;\n const savedOpacity = this.opacity;\n this.addCommands({\n cmd: () => {\n this.opacity = opacity;\n this.#redraw();\n },\n undo: () => {\n this.opacity = savedOpacity;\n this.#redraw();\n },\n mustExec: true,\n type: AnnotationEditorParamsType.INK_OPACITY,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n }\n\n /** @inheritdoc */\n rebuild() {\n super.rebuild();\n if (this.div === null) {\n return;\n }\n\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n\n if (!this.isAttachedToDOM) {\n // At some point this editor was removed and we're rebuilding it,\n // hence we must add it to its parent.\n this.parent.add(this);\n this.#setCanvasDims();\n }\n this.#fitToContent();\n }\n\n /** @inheritdoc */\n remove() {\n if (this.canvas === null) {\n return;\n }\n\n if (!this.isEmpty()) {\n this.commit();\n }\n\n // Destroy the canvas.\n this.canvas.width = this.canvas.height = 0;\n this.canvas.remove();\n this.canvas = null;\n\n this.#observer.disconnect();\n this.#observer = null;\n\n super.remove();\n }\n\n setParent(parent) {\n if (!this.parent && parent) {\n // We've a parent hence the rescale will be handled thanks to the\n // ResizeObserver.\n this._uiManager.removeShouldRescale(this);\n } else if (this.parent && parent === null) {\n // The editor is removed from the DOM, hence we handle the rescale thanks\n // to the onScaleChanging callback.\n // This way, it'll be saved/printed correctly.\n this._uiManager.addShouldRescale(this);\n }\n super.setParent(parent);\n }\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\n /** @inheritdoc */\n enableEditMode() {\n if (this.#disableEditing || this.canvas === null) {\n return;\n }\n\n super.enableEditMode();\n this.div.draggable = false;\n this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n }\n\n /** @inheritdoc */\n disableEditMode() {\n if (!this.isInEditMode() || this.canvas === null) {\n return;\n }\n\n super.disableEditMode();\n this.div.draggable = !this.isEmpty();\n this.div.classList.remove(\"editing\");\n\n this.canvas.removeEventListener(\n \"pointerdown\",\n this.#boundCanvasPointerdown\n );\n }\n\n /** @inheritdoc */\n onceAdded() {\n this.div.draggable = !this.isEmpty();\n }\n\n /** @inheritdoc */\n isEmpty() {\n return (\n this.paths.length === 0 ||\n (this.paths.length === 1 && this.paths[0].length === 0)\n );\n }\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\n /**\n * Set line styles.\n */\n #setStroke() {\n const { ctx, color, opacity, thickness, parentScale, scaleFactor } = 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\n /**\n * Start to draw on the canvas.\n * @param {number} x\n * @param {number} y\n */\n #startDrawing(x, y) {\n this.canvas.addEventListener(\"contextmenu\", this.#boundCanvasContextMenu);\n this.canvas.addEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n this.canvas.addEventListener(\"pointermove\", this.#boundCanvasPointermove);\n this.canvas.addEventListener(\"pointerup\", this.#boundCanvasPointerup);\n this.canvas.removeEventListener(\n \"pointerdown\",\n this.#boundCanvasPointerdown\n );\n\n this.isEditing = true;\n if (!this.#isCanvasInitialized) {\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.thickness ||= InkEditor._defaultThickness;\n this.color ||=\n InkEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.opacity ??= InkEditor._defaultOpacity;\n }\n this.currentPath.push([x, y]);\n this.#hasSomethingToDraw = false;\n this.#setStroke();\n\n this.#requestFrameCallback = () => {\n this.#drawPoints();\n if (this.#requestFrameCallback) {\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n };\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n\n /**\n * Draw on the canvas.\n * @param {number} x\n * @param {number} y\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\n if (currentPath.length <= 2) {\n path2D.moveTo(...currentPath[0]);\n path2D.lineTo(x, y);\n return;\n }\n\n if (currentPath.length === 3) {\n this.#currentPath2D = path2D = new Path2D();\n path2D.moveTo(...currentPath[0]);\n }\n\n this.#makeBezierCurve(\n path2D,\n ...currentPath.at(-3),\n ...currentPath.at(-2),\n x,\n y\n );\n }\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\n /**\n * Stop to draw on the canvas.\n * @param {number} x\n * @param {number} y\n */\n #stopDrawing(x, y) {\n this.#requestFrameCallback = null;\n\n x = Math.min(Math.max(x, 0), this.canvas.width);\n y = Math.min(Math.max(y, 0), this.canvas.height);\n\n this.#draw(x, y);\n this.#endPath();\n\n // Interpolate the path entered by the user with some\n // Bezier's curves in order to have a smoother path and\n // to reduce the data size used to draw it in the PDF.\n let bezier;\n if (this.currentPath.length !== 1) {\n bezier = this.#generateBezierPoints();\n } else {\n // We have only one point finally.\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\n const cmd = () => {\n this.allRawPaths.push(currentPath);\n this.paths.push(bezier);\n this.bezierPath2D.push(path2D);\n this.rebuild();\n };\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\n this.addCommands({ cmd, undo, mustExec: true });\n }\n\n #drawPoints() {\n if (!this.#hasSomethingToDraw) {\n return;\n }\n this.#hasSomethingToDraw = false;\n\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\n const { ctx } = this;\n ctx.save();\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n // In Chrome, the clip() method doesn't work as expected.\n ctx.clearRect(xMin, yMin, xMax - xMin, yMax - yMin);\n ctx.beginPath();\n ctx.rect(xMin, yMin, xMax - xMin, yMax - yMin);\n ctx.clip();\n } else {\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n ctx.stroke(this.#currentPath2D);\n\n ctx.restore();\n }\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\n path2D.bezierCurveTo(\n prevX + (2 * (x1 - prevX)) / 3,\n prevY + (2 * (y1 - prevY)) / 3,\n x3 + (2 * (x1 - x3)) / 3,\n y3 + (2 * (y1 - y3)) / 3,\n x3,\n y3\n );\n }\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\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\n // The quadratic is: [[x0, y0], [x1, y1], [x3, y3]].\n // Convert the quadratic to a cubic\n // (see https://fontforge.org/docs/techref/bezier.html#converting-truetype-to-postscript)\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\n bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);\n\n [x0, y0] = [x3, y3];\n }\n\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n\n // The quadratic is: [[x0, y0], [x1, y1], [x2, y2]].\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\n bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);\n return bezierPoints;\n }\n\n /**\n * Redraw all the paths.\n */\n #redraw() {\n if (this.isEmpty()) {\n this.#updateTransform();\n return;\n }\n this.#setStroke();\n\n const { canvas, ctx } = this;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n this.#updateTransform();\n\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n }\n\n /**\n * Commit the curves we have in this editor.\n */\n commit() {\n if (this.#disableEditing) {\n return;\n }\n\n super.commit();\n\n this.isEditing = false;\n this.disableEditMode();\n\n // This editor must be on top of the main ink editor.\n this.setInForeground();\n\n this.#disableEditing = true;\n this.div.classList.add(\"disabled\");\n\n this.#fitToContent(/* firstTime = */ true);\n\n this.parent.addInkEditorIfNeeded(/* isCommitting = */ true);\n\n // When commiting, the position of this editor is changed, hence we must\n // move it to the right position in the DOM.\n this.parent.moveEditorInDOM(this);\n this.div.focus({\n preventScroll: true /* See issue #15744 */,\n });\n }\n\n /** @inheritdoc */\n focusin(event) {\n super.focusin(event);\n this.enableEditMode();\n }\n\n /**\n * onpointerdown callback for the canvas we're drawing on.\n * @param {PointerEvent} event\n */\n canvasPointerdown(event) {\n if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n return;\n }\n\n // We want to draw on top of any other editors.\n // Since it's the last child, there's no need to give it a higher z-index.\n this.setInForeground();\n\n event.preventDefault();\n\n if (event.type !== \"mouse\") {\n this.div.focus();\n }\n\n this.#startDrawing(event.offsetX, event.offsetY);\n }\n\n /**\n * oncontextmenu callback for the canvas we're drawing on.\n * @param {PointerEvent} event\n */\n canvasContextMenu(event) {\n event.preventDefault();\n }\n\n /**\n * onpointermove callback for the canvas we're drawing on.\n * @param {PointerEvent} event\n */\n canvasPointermove(event) {\n event.preventDefault();\n this.#draw(event.offsetX, event.offsetY);\n }\n\n /**\n * onpointerup callback for the canvas we're drawing on.\n * @param {PointerEvent} event\n */\n canvasPointerup(event) {\n event.preventDefault();\n this.#endDrawing(event);\n }\n\n /**\n * onpointerleave callback for the canvas we're drawing on.\n * @param {PointerEvent} event\n */\n canvasPointerleave(event) {\n this.#endDrawing(event);\n }\n\n /**\n * End the drawing.\n * @param {PointerEvent} event\n */\n #endDrawing(event) {\n this.canvas.removeEventListener(\n \"pointerleave\",\n this.#boundCanvasPointerleave\n );\n this.canvas.removeEventListener(\n \"pointermove\",\n this.#boundCanvasPointermove\n );\n this.canvas.removeEventListener(\"pointerup\", this.#boundCanvasPointerup);\n this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n\n // Slight delay to avoid the context menu to appear (it can happen on a long\n // tap with a pen).\n setTimeout(() => {\n this.canvas.removeEventListener(\n \"contextmenu\",\n this.#boundCanvasContextMenu\n );\n }, 10);\n\n this.#stopDrawing(event.offsetX, event.offsetY);\n\n this.addToAnnotationStorage();\n\n // Since the ink editor covers all of the page and we want to be able\n // to select another editor, we just put this one in the background.\n this.setInBackground();\n }\n\n /**\n * Create the canvas element.\n */\n #createCanvas() {\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = this.canvas.height = 0;\n this.canvas.className = \"inkEditorCanvas\";\n\n InkEditor._l10nPromise\n .get(\"editor_ink_canvas_aria_label\")\n .then(msg => this.canvas?.setAttribute(\"aria-label\", msg));\n this.div.append(this.canvas);\n this.ctx = this.canvas.getContext(\"2d\");\n }\n\n /**\n * Create the resize observer.\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 }\n\n /** @inheritdoc */\n render() {\n if (this.div) {\n return this.div;\n }\n\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n\n super.render();\n\n InkEditor._l10nPromise\n .get(\"editor_ink2_aria_label\")\n .then(msg => this.div?.setAttribute(\"aria-label\", msg));\n\n const [x, y, w, h] = this.#getInitialBBox();\n this.setAt(x, y, 0, 0);\n this.setDims(w, h);\n\n this.#createCanvas();\n\n if (this.width) {\n // This editor was created in using copy (ctrl+c).\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(\n baseX * parentWidth,\n baseY * parentHeight,\n this.width * parentWidth,\n this.height * parentHeight\n );\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this.#redraw();\n this.#setMinDims();\n this.div.classList.add(\"disabled\");\n } else {\n this.div.classList.add(\"editing\");\n this.enableEditMode();\n }\n\n this.#createObserver();\n\n return this.div;\n }\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\n /**\n * When the dimensions of the div change the inner canvas must\n * renew its dimensions, hence it must redraw its own contents.\n * @param {number} width - the new width of the div\n * @param {number} height - the new height of the div\n * @returns\n */\n setDimensions(width, height) {\n const roundedWidth = Math.round(width);\n const roundedHeight = Math.round(height);\n if (\n this.#realWidth === roundedWidth &&\n this.#realHeight === roundedHeight\n ) {\n return;\n }\n\n this.#realWidth = roundedWidth;\n this.#realHeight = roundedHeight;\n\n this.canvas.style.visibility = \"hidden\";\n\n if (\n this.#aspectRatio &&\n Math.abs(this.#aspectRatio - width / height) > 1e-2\n ) {\n height = Math.ceil(width / this.#aspectRatio);\n this.setDims(width, height);\n }\n\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n\n if (this.#disableEditing) {\n this.#setScaleFactor(width, height);\n }\n\n this.#setCanvasDims();\n this.#redraw();\n\n this.canvas.style.visibility = \"visible\";\n\n // For any reason the dimensions couldn't be in percent but in pixels, hence\n // we must fix them.\n this.fixDims();\n }\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\n /**\n * Update the canvas transform.\n */\n #updateTransform() {\n const padding = this.#getPadding() / 2;\n this.ctx.setTransform(\n this.scaleFactor,\n 0,\n 0,\n this.scaleFactor,\n this.translationX * this.scaleFactor + padding,\n this.translationY * this.scaleFactor + padding\n );\n }\n\n /**\n * Convert into a Path2D.\n * @param {Arra<Array<number>} bezier\n * @returns {Path2D}\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(\n control1[0],\n control1[1],\n control2[0],\n control2[1],\n second[0],\n second[1]\n );\n }\n return path2D;\n }\n\n /**\n * Transform and serialize the paths.\n * @param {number} s - scale factor\n * @param {number} tx - abscissa of the translation\n * @param {number} ty - ordinate of the translation\n * @param {number} h - height of the bounding box\n */\n #serializePaths(s, tx, ty, h) {\n const NUMBER_OF_POINTS_ON_BEZIER_CURVE = 4;\n const paths = [];\n const padding = this.thickness / 2;\n let buffer, points;\n\n for (const bezier of this.paths) {\n buffer = [];\n points = [];\n for (let i = 0, ii = bezier.length; i < ii; i++) {\n const [first, control1, control2, second] = bezier[i];\n const p10 = s * (first[0] + tx) + padding;\n const p11 = h - s * (first[1] + ty) - padding;\n const p20 = s * (control1[0] + tx) + padding;\n const p21 = h - s * (control1[1] + ty) - padding;\n const p30 = s * (control2[0] + tx) + padding;\n const p31 = h - s * (control2[1] + ty) - padding;\n const p40 = s * (second[0] + tx) + padding;\n const p41 = h - s * (second[1] + ty) - padding;\n\n if (i === 0) {\n buffer.push(p10, p11);\n points.push(p10, p11);\n }\n buffer.push(p20, p21, p30, p31, p40, p41);\n this.#extractPointsOnBezier(\n p10,\n p11,\n p20,\n p21,\n p30,\n p31,\n p40,\n p41,\n NUMBER_OF_POINTS_ON_BEZIER_CURVE,\n points\n );\n }\n paths.push({ bezier: buffer, points });\n }\n\n return paths;\n }\n\n /**\n * Extract n-1 points from the cubic Bezier curve.\n * @param {number} p10\n * @param {number} p11\n * @param {number} p20\n * @param {number} p21\n * @param {number} p30\n * @param {number} p31\n * @param {number} p40\n * @param {number} p41\n * @param {number} n\n * @param {Array<number>} points\n * @returns {undefined}\n */\n #extractPointsOnBezier(p10, p11, p20, p21, p30, p31, p40, p41, n, points) {\n // If we can save few points thanks to the flatness we must do it.\n if (this.#isAlmostFlat(p10, p11, p20, p21, p30, p31, p40, p41)) {\n points.push(p40, p41);\n return;\n }\n\n // Apply the de Casteljau's algorithm in order to get n points belonging\n // to the Bezier's curve:\n // https://en.wikipedia.org/wiki/De_Casteljau%27s_algorithm\n\n // The first point is the last point of the previous Bezier curve\n // so no need to push the first point.\n for (let i = 1; i < n - 1; i++) {\n const t = i / n;\n const mt = 1 - t;\n\n let q10 = t * p10 + mt * p20;\n let q11 = t * p11 + mt * p21;\n\n let q20 = t * p20 + mt * p30;\n let q21 = t * p21 + mt * p31;\n\n const q30 = t * p30 + mt * p40;\n const q31 = t * p31 + mt * p41;\n\n q10 = t * q10 + mt * q20;\n q11 = t * q11 + mt * q21;\n\n q20 = t * q20 + mt * q30;\n q21 = t * q21 + mt * q31;\n\n q10 = t * q10 + mt * q20;\n q11 = t * q11 + mt * q21;\n\n points.push(q10, q11);\n }\n\n points.push(p40, p41);\n }\n\n /**\n * Check if a cubic Bezier curve is almost flat.\n * @param {number} p10\n * @param {number} p11\n * @param {number} p20\n * @param {number} p21\n * @param {number} p30\n * @param {number} p31\n * @param {number} p40\n * @param {number} p41\n * @returns {boolean}\n */\n #isAlmostFlat(p10, p11, p20, p21, p30, p31, p40, p41) {\n // For reference:\n // https://jeremykun.com/tag/bezier-curves/\n const tol = 10;\n\n const ax = (3 * p20 - 2 * p10 - p40) ** 2;\n const ay = (3 * p21 - 2 * p11 - p41) ** 2;\n const bx = (3 * p30 - p10 - 2 * p40) ** 2;\n const by = (3 * p31 - p11 - 2 * p41) ** 2;\n\n return Math.max(ax, bx) + Math.max(ay, by) <= tol;\n }\n\n /**\n * Get the bounding box containing all the paths.\n * @returns {Array<number>}\n */\n #getBbox() {\n let xMin = Infinity;\n let xMax = -Infinity;\n let yMin = Infinity;\n let yMax = -Infinity;\n\n for (const path of this.paths) {\n for (const [first, control1, control2, second] of path) {\n const bbox = Util.bezierBoundingBox(\n ...first,\n ...control1,\n ...control2,\n ...second\n );\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\n return [xMin, yMin, xMax, yMax];\n }\n\n /**\n * The bounding box is computed with null thickness, so we must take\n * it into account for the display.\n * It corresponds to the total padding, hence it should be divided by 2\n * in order to have left/right paddings.\n * @returns {number}\n */\n #getPadding() {\n return this.#disableEditing\n ? Math.ceil(this.thickness * this.parentScale)\n : 0;\n }\n\n /**\n * Set the div position and dimensions in order to fit to\n * the bounding box of the contents.\n * @returns {undefined}\n */\n #fitToContent(firstTime = false) {\n if (this.isEmpty()) {\n return;\n }\n\n if (!this.#disableEditing) {\n this.#redraw();\n return;\n }\n\n const bbox = this.#getBbox();\n const padding = this.#getPadding();\n this.#baseWidth = Math.max(RESIZER_SIZE, bbox[2] - bbox[0]);\n this.#baseHeight = Math.max(RESIZER_SIZE, bbox[3] - bbox[1]);\n\n const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n\n this.#aspectRatio = width / height;\n this.#setMinDims();\n\n const prevTranslationX = this.translationX;\n const prevTranslationY = this.translationY;\n\n this.translationX = -bbox[0];\n this.translationY = -bbox[1];\n this.#setCanvasDims();\n this.#redraw();\n\n this.#realWidth = width;\n this.#realHeight = height;\n\n this.setDims(width, height);\n const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;\n this.translate(\n prevTranslationX - this.translationX - unscaledPadding,\n prevTranslationY - this.translationY - unscaledPadding\n );\n }\n\n #setMinDims() {\n const { style } = this.div;\n if (this.#aspectRatio >= 1) {\n style.minHeight = `${RESIZER_SIZE}px`;\n style.minWidth = `${Math.round(this.#aspectRatio * RESIZER_SIZE)}px`;\n } else {\n style.minWidth = `${RESIZER_SIZE}px`;\n style.minHeight = `${Math.round(RESIZER_SIZE / this.#aspectRatio)}px`;\n }\n }\n\n /** @inheritdoc */\n static deserialize(data, parent, uiManager) {\n const editor = super.deserialize(data, parent, uiManager);\n\n editor.thickness = data.thickness;\n editor.color = Util.makeHexColor(...data.color);\n editor.opacity = data.opacity;\n\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\n editor.#aspectRatio = width / height;\n editor.#disableEditing = true;\n editor.#realWidth = Math.round(width);\n editor.#realHeight = Math.round(height);\n\n for (const { bezier } of data.paths) {\n const path = [];\n editor.paths.push(path);\n let p0 = scaleFactor * (bezier[0] - padding);\n let p1 = scaleFactor * (height - 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 * (height - bezier[i + 1] - padding);\n const p20 = scaleFactor * (bezier[i + 2] - padding);\n const p21 = scaleFactor * (height - bezier[i + 3] - padding);\n const p30 = scaleFactor * (bezier[i + 4] - padding);\n const p31 = scaleFactor * (height - bezier[i + 5] - padding);\n path.push([\n [p0, p1],\n [p10, p11],\n [p20, p21],\n [p30, p31],\n ]);\n p0 = p30;\n p1 = p31;\n }\n const path2D = this.#buildPath2D(path);\n editor.bezierPath2D.push(path2D);\n }\n\n const bbox = editor.#getBbox();\n editor.#baseWidth = Math.max(RESIZER_SIZE, bbox[2] - bbox[0]);\n editor.#baseHeight = Math.max(RESIZER_SIZE, bbox[3] - bbox[1]);\n editor.#setScaleFactor(width, height);\n\n return editor;\n }\n\n /** @inheritdoc */\n serialize() {\n if (this.isEmpty()) {\n return null;\n }\n\n const rect = this.getRect(0, 0);\n const height =\n this.rotation % 180 === 0 ? rect[3] - rect[1] : rect[2] - rect[0];\n\n const color = AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n\n return {\n annotationType: AnnotationEditorType.INK,\n color,\n thickness: this.thickness,\n opacity: this.opacity,\n paths: this.#serializePaths(\n this.scaleFactor / this.parentScale,\n this.translationX,\n this.translationY,\n height\n ),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n };\n }\n}\n\nexport { InkEditor };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport {\n AnnotationBorderStyleType,\n AnnotationType,\n assert,\n FeatureTest,\n LINE_FACTOR,\n shadow,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n AnnotationPrefix,\n DOMSVGFactory,\n getFilenameFromUrl,\n PDFDateString,\n setLayerDimensions,\n} from \"./display_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { ColorConverters } from \"../shared/scripting_utils.js\";\nimport { XfaLayer } from \"./xfa_layer.js\";\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\n\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1],\n };\n}\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {PDFPageProxy} page\n * @property {PageViewport} viewport\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {Object} svgFactory\n * @property {boolean} [enableScripting]\n * @property {boolean} [hasJSActions]\n * @property {Object} [fieldObjects]\n */\n\nclass AnnotationElementFactory {\n /**\n * @param {AnnotationElementParameters} parameters\n * @returns {AnnotationElement}\n */\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n\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 }\n return new WidgetAnnotationElement(parameters);\n\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\n\nclass AnnotationElement {\n constructor(\n parameters,\n {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false,\n } = {}\n ) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.page = parameters.page;\n this.viewport = parameters.viewport;\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\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this.quadrilaterals = this._createQuadrilaterals(ignoreBorder);\n }\n }\n\n /**\n * Create an empty container for the annotation's HTML element.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {HTMLElement} A section element.\n */\n _createContainer(ignoreBorder = false) {\n const { data, page, viewport } = this;\n\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n\n const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n const { width, height } = getRectDims(data.rect);\n\n // Do *not* modify `data.rect`, since that will corrupt the annotation\n // position on subsequent calls to `_createContainer` (see issue 6804).\n const rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1],\n ]);\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n\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 container.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 container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n\n case AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n const borderColor = data.borderColor || null;\n if (borderColor) {\n container.style.borderColor = Util.makeHexColor(\n borderColor[0] | 0,\n borderColor[1] | 0,\n borderColor[2] | 0\n );\n } else {\n // Transparent (invisible) border, so do not draw it at all.\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = `${(100 * (rect[0] - pageX)) / pageWidth}%`;\n container.style.top = `${(100 * (rect[1] - pageY)) / pageHeight}%`;\n\n const { rotation } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n container.style.width = `${(100 * width) / pageWidth}%`;\n container.style.height = `${(100 * height) / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n\n return container;\n }\n\n setRotation(angle, container = this.container) {\n const { pageWidth, pageHeight } = this.viewport.rawDims;\n const { width, height } = getRectDims(this.data.rect);\n\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\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\n\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n event.target.style[styleName] = ColorConverters[`${color[0]}_HTML`](\n color.slice(1)\n );\n };\n\n return shadow(this, \"_commonActions\", {\n display: event => {\n const hidden = event.detail.display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden,\n print: event.detail.display === 0 || event.detail.display === 3,\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n print: event.detail.print,\n });\n },\n hidden: event => {\n this.container.style.visibility = event.detail.hidden\n ? \"hidden\"\n : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden: event.detail.hidden,\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({ preventScroll: false }), 0);\n },\n userName: event => {\n // tooltip\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n if (event.detail.readonly) {\n event.target.setAttribute(\"readonly\", \"\");\n } else {\n event.target.removeAttribute(\"readonly\");\n }\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\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\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n\n // Some properties may have been updated thanks to JS.\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\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 // The action has been consumed: no need to keep it.\n delete storedData[actionName];\n }\n }\n }\n\n /**\n * Create quadrilaterals from the annotation's quadpoints.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {Array<HTMLElement>} An array of section elements.\n */\n _createQuadrilaterals(ignoreBorder = false) {\n if (!this.data.quadPoints) {\n return null;\n }\n\n const quadrilaterals = [];\n const savedRect = this.data.rect;\n for (const quadPoint of this.data.quadPoints) {\n this.data.rect = [\n quadPoint[2].x,\n quadPoint[2].y,\n quadPoint[1].x,\n quadPoint[1].y,\n ];\n quadrilaterals.push(this._createContainer(ignoreBorder));\n }\n this.data.rect = savedRect;\n return quadrilaterals;\n }\n\n /**\n * Create a popup for the annotation's HTML element. This is used for\n * annotations that do not have a Popup entry in the dictionary, but\n * are of a type that works with popups (such as Highlight annotations).\n *\n * @private\n * @param {HTMLDivElement|HTMLImageElement|null} trigger\n * @param {Object} data\n * @memberof AnnotationElement\n */\n _createPopup(trigger, data) {\n let container = this.container;\n if (this.quadrilaterals) {\n trigger ||= this.quadrilaterals;\n container = this.quadrilaterals[0];\n }\n\n // If no trigger element is specified, create it.\n if (!trigger) {\n trigger = document.createElement(\"div\");\n trigger.classList.add(\"popupTriggerArea\");\n container.append(trigger);\n }\n\n const popupElement = new PopupElement({\n container,\n trigger,\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n hideWrapper: true,\n });\n const popup = popupElement.render();\n\n // Position the popup next to the annotation's container.\n popup.style.left = \"100%\";\n\n container.append(popup);\n }\n\n /**\n * Render the quadrilaterals of the annotation.\n *\n * @private\n * @param {string} className\n * @memberof AnnotationElement\n * @returns {Array<HTMLElement>} An array of section elements.\n */\n _renderQuadrilaterals(className) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(this.quadrilaterals, \"Missing quadrilaterals during rendering\");\n }\n\n for (const quadrilateral of this.quadrilaterals) {\n quadrilateral.classList.add(className);\n }\n return this.quadrilaterals;\n }\n\n /**\n * Render the annotation's HTML element(s).\n *\n * @public\n * @memberof AnnotationElement\n * @returns {HTMLElement|Array<HTMLElement>} A section element or\n * an array of section elements.\n */\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n\n /**\n * @private\n * @returns {Array}\n */\n _getElementsByName(name, skipId = null) {\n const fields = [];\n\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const { page, id, exportValues } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue =\n typeof exportValues === \"string\" ? exportValues : null;\n\n const domElement = document.querySelector(\n `[data-element-id=\"${id}\"]`\n );\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n }\n return fields;\n }\n // Fallback to a regular DOM lookup, to ensure that the standalone\n // viewer components won't break.\n for (const domElement of document.getElementsByName(name)) {\n const { exportValue } = 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({ id, exportValue, domElement });\n }\n return fields;\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\n render() {\n const { data, linkService } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n\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);\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 (\n data.actions &&\n (data.actions.Action ||\n data.actions[\"Mouse Up\"] ||\n data.actions[\"Mouse Down\"]) &&\n this.enableScripting &&\n this.hasJSActions\n ) {\n this._bindJSAction(link, data);\n isBound = true;\n }\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\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"linkAnnotation\").map(\n (quadrilateral, index) => {\n const linkElement = index === 0 ? link : link.cloneNode();\n quadrilateral.append(linkElement);\n return quadrilateral;\n }\n );\n }\n\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n\n return this.container;\n }\n\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n\n /**\n * Bind internal links to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} destination\n * @memberof LinkAnnotationElement\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 === /* isTooltipOnly = */ \"\") {\n this.#setInternalLink();\n }\n }\n\n /**\n * Bind named actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} action\n * @memberof LinkAnnotationElement\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\n /**\n * Bind attachments to the link element.\n * @param {Object} link\n * @param {Object} attachment\n */\n _bindAttachment(link, attachment) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(\n this.container,\n attachment.content,\n attachment.filename\n );\n return false;\n };\n this.#setInternalLink();\n }\n\n /**\n * Bind SetOCGState actions to the link element.\n * @param {Object} link\n * @param {Object} action\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\n /**\n * Bind JS actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} data\n * @memberof LinkAnnotationElement\n */\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([\n [\"Action\", \"onclick\"],\n [\"Mouse Up\", \"onmouseup\"],\n [\"Mouse Down\", \"onmousedown\"],\n ]);\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\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n\n if (!this._fieldObjects) {\n warn(\n `_bindResetFormAction - \"resetForm\" action not supported, ` +\n \"ensure that the `fieldObjects` parameter is provided.\"\n );\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n\n link.onclick = () => {\n otherClickAction?.();\n\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include,\n } = resetForm;\n\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 { id } 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\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const { id } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\": {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, { value });\n break;\n }\n case \"combobox\":\n case \"listbox\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n default:\n continue;\n }\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\n if (this.enableScripting) {\n // Update the values in the sandbox.\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\",\n },\n });\n }\n\n return false;\n };\n }\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable });\n }\n\n render() {\n this.container.classList.add(\"textAnnotation\");\n\n const image = document.createElement(\"img\");\n image.src =\n this.imageResourcesPath +\n \"annotation-\" +\n this.data.name.toLowerCase() +\n \".svg\";\n image.alt = \"[{{type}} Annotation]\";\n image.dataset.l10nId = \"text_annotation_type\";\n image.dataset.l10nArgs = JSON.stringify({ type: this.data.name });\n\n if (!this.data.hasPopup) {\n this._createPopup(image, this.data);\n }\n\n this.container.append(image);\n return this.container;\n }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n // Show only the container for unsupported field types.\n if (this.data.alternativeText) {\n this.container.title = this.data.alternativeText;\n }\n\n return this.container;\n }\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\n _getKeyModifier(event) {\n const { isWin, isMac } = FeatureTest.platform;\n return (isWin && event.ctrlKey) || (isMac && event.metaKey);\n }\n\n _setEventListener(element, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n // Mouse events\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 // Non mouse event\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 },\n });\n });\n }\n }\n\n _setEventListeners(element, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n this._setEventListener(element, baseName, eventName, getter);\n }\n }\n }\n\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor =\n color === null\n ? \"transparent\"\n : Util.makeHexColor(color[0], color[1], color[2]);\n }\n\n /**\n * Apply text styles to the text in the element.\n *\n * @private\n * @param {HTMLDivElement} element\n * @memberof TextWidgetAnnotationElement\n */\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const { fontColor } = this.data.defaultAppearanceData;\n const fontSize =\n this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;\n\n const style = element.style;\n\n // TODO: If the font-size is zero, calculate it based on the height and\n // width of the element.\n // Not setting `style.fontSize` will use the default font-size for now.\n\n // We don't use the font, as specified in the PDF document, for the <input>\n // element. Hence using the original `fontSize` could look bad, which is why\n // it's instead based on the field height.\n // If the height is \"big\" then it could lead to a too big font size\n // so in this case use the one we've in the pdf (hence the min).\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(\n this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n );\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(\n fontSize,\n roundToOneDecimal(lineHeight / LINE_FACTOR)\n );\n } else {\n const height = Math.abs(\n this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n );\n computedFontSize = Math.min(\n fontSize,\n roundToOneDecimal(height / LINE_FACTOR)\n );\n }\n style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\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}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable =\n parameters.renderForms ||\n (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n super(parameters, { isRenderable });\n }\n\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(\n base.name,\n /* skipId = */ base.id\n )) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, { [keyInStorage]: value });\n }\n }\n\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n this.container.classList.add(\"textWidgetAnnotation\");\n\n let element = null;\n if (this.renderForms) {\n // NOTE: We cannot set the values using `element.value` below, since it\n // prevents the AnnotationLayer rasterizer in `test/driver.js`\n // from parsing the elements correctly for the reference tests.\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\n let fieldFormattedValues =\n storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n };\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\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n this._setRequired(element, this.data.required);\n\n if (maxLen) {\n element.maxLength = maxLen;\n }\n\n element.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n this.setPropertyOnSiblings(\n element,\n \"value\",\n event.target.value,\n \"value\"\n );\n elementData.formattedValue = null;\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n\n let blurListener = event => {\n const { formattedValue } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n // Reset the cursor position to the start of the field (issue 12359).\n event.target.scrollLeft = 0;\n };\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n const { target } = event;\n if (elementData.userValue) {\n target.value = elementData.userValue;\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\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, { value: elementData.userValue.toString() });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const { formattedValue } = event.detail;\n elementData.formattedValue = formattedValue;\n if (\n formattedValue !== null &&\n formattedValue !== undefined &&\n event.target !== document.activeElement\n ) {\n // Input hasn't the focus so display formatted string\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 { charLimit } = event.detail;\n const { target } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\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, { 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\n // Even if the field hasn't any actions\n // leaving it can still trigger some actions with Calculate\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n // If the key is one of Escape, Enter then the data are committed.\n // If we've a Tab then data will be committed on blur.\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n // When we've a multiline field, \"Enter\" key is a key as the other\n // hence we don't commit the data (Acrobat behaves the same way)\n // (see issue #15627).\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const { value } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n // Save the entered 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 (!event.relatedTarget) {\n return;\n }\n const { value } = 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\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const { data, target } = event;\n const { value, selectionStart, selectionEnd } = target;\n\n let selStart = selectionStart,\n selEnd = selectionEnd;\n\n switch (event.inputType) {\n // https://rawgit.com/w3c/input-events/v1/index.html#interface-InputEvent-Attributes\n case \"deleteWordBackward\": {\n const match = value\n .substring(0, selectionStart)\n .match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\": {\n const match = value\n .substring(selectionStart)\n .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\n // We handle the event ourselves.\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\n this._setEventListeners(\n element,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.value\n );\n }\n\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n\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 }\n\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { 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 // The value has been changed through js and set in annotationStorage.\n value = value !== \"Off\";\n storage.setValue(id, { value });\n }\n\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n\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\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const checkbox of this._getElementsByName(name, /* skipId = */ id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, { value: curChecked });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\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, { value: event.target.checked });\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { 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 // The value has been changed through js and set in annotationStorage.\n value = value !== data.buttonValue;\n storage.setValue(id, { value });\n }\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n\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\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const radio of this._getElementsByName(name, /* skipId = */ id)) {\n storage.setValue(radio.id, { value: false });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked =\n defaultValue !== null &&\n defaultValue !== undefined &&\n defaultValue === data.buttonValue;\n });\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, { value: curChecked });\n }\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, { ignoreBorder: parameters.data.hasAppearance });\n }\n\n render() {\n // The rendering and functionality of a push button widget annotation is\n // equal to that of a link annotation, but may have more functionality, such\n // as performing actions on form fields (resetting, submitting, et cetera).\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n\n if (this.data.alternativeText) {\n container.title = this.data.alternativeText;\n }\n\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n\n return container;\n }\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { 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\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue,\n });\n\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n\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\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n\n if (!this.data.combo) {\n // List boxes have a size and (optionally) multiple selection.\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\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\n // Insert the options into the choice field.\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\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\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const { options, multiple } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1\n ? null\n : options[options.selectedIndex][name];\n }\n return Array.prototype.filter\n .call(options, option => option.selected)\n .map(option => option[name]);\n };\n\n let selectedValues = getValue(/* isExport */ false);\n\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => {\n return { displayValue: option.textContent, exportValue: option.value };\n });\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(/* isExport */ true),\n });\n selectedValues = getValue(/* isExport */ 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(\n options,\n option => option.selected\n );\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n items: getItems(event),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, { value: null, items: [] });\n selectedValues = getValue(/* isExport */ false);\n },\n insert(event) {\n const { index, displayValue, exportValue } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n items: getItems(event),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n items(event) {\n const { items } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const { displayValue, exportValue } = 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(/* isExport */ true),\n items: getItems(event),\n });\n selectedValues = getValue(/* isExport */ 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(/* isExport */ true),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(/* isExport */ true);\n storage.setValue(id, { value: exportValue });\n\n event.preventDefault();\n\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false,\n },\n });\n });\n\n this._setEventListeners(\n selectElement,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n [\"input\", \"Action\"],\n [\"input\", \"Validate\"],\n ],\n event => event.target.value\n );\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, { value: getValue(/* isExport */ true) });\n });\n }\n\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {\n // Just use the default font size...\n // it's a bit hard to guess what is a good size.\n }\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n\n this.container.append(selectElement);\n return this.container;\n }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n // Do not render popup annotations for parent elements with these types as\n // they create the popups themselves (because of custom trigger divs).\n static IGNORE_TYPES = new Set([\n \"Line\",\n \"Square\",\n \"Circle\",\n \"PolyLine\",\n \"Polygon\",\n \"Ink\",\n ]);\n\n constructor(parameters) {\n const { data } = parameters;\n const isRenderable =\n !PopupAnnotationElement.IGNORE_TYPES.has(data.parentType) &&\n !!(data.titleObj?.str || data.contentsObj?.str || data.richText?.str);\n super(parameters, { isRenderable });\n }\n\n render() {\n this.container.classList.add(\"popupAnnotation\");\n\n const parentElements = this.layer.querySelectorAll(\n `[data-annotation-id=\"${this.data.parentId}\"]`\n );\n if (parentElements.length === 0) {\n return this.container;\n }\n\n const popup = new PopupElement({\n container: this.container,\n trigger: Array.from(parentElements),\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 });\n\n // Position the popup next to the parent annotation's container.\n // PDF viewers ignore a popup annotation's rectangle.\n const page = this.page;\n const rect = Util.normalizeRect([\n this.data.parentRect[0],\n page.view[3] - this.data.parentRect[1] + page.view[1],\n this.data.parentRect[2],\n page.view[3] - this.data.parentRect[3] + page.view[1],\n ]);\n const popupLeft =\n rect[0] + this.data.parentRect[2] - this.data.parentRect[0];\n const popupTop = rect[1];\n\n const { pageWidth, pageHeight, pageX, pageY } = this.viewport.rawDims;\n\n this.container.style.left = `${(100 * (popupLeft - pageX)) / pageWidth}%`;\n this.container.style.top = `${(100 * (popupTop - pageY)) / pageHeight}%`;\n\n this.container.append(popup.render());\n return this.container;\n }\n}\n\nclass PopupElement {\n constructor(parameters) {\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.titleObj = parameters.titleObj;\n this.modificationDate = parameters.modificationDate;\n this.contentsObj = parameters.contentsObj;\n this.richText = parameters.richText;\n this.hideWrapper = parameters.hideWrapper || false;\n\n this.pinned = false;\n }\n\n render() {\n const BACKGROUND_ENLIGHT = 0.7;\n\n const wrapper = document.createElement(\"div\");\n wrapper.classList.add(\"popupWrapper\");\n\n // For Popup annotations we hide the entire section because it contains\n // only the popup. However, for Text annotations without a separate Popup\n // annotation, we cannot hide the entire container as the image would\n // disappear too. In that special case, hiding the wrapper suffices.\n this.hideElement = this.hideWrapper ? wrapper : this.container;\n this.hideElement.hidden = true;\n\n const popup = document.createElement(\"div\");\n popup.classList.add(\"popup\");\n\n const color = this.color;\n if (color) {\n // Enlighten the color.\n const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = Util.makeHexColor(r | 0, g | 0, b | 0);\n }\n\n const title = document.createElement(\"h1\");\n title.dir = this.titleObj.dir;\n title.textContent = this.titleObj.str;\n popup.append(title);\n\n // The modification date is shown in the popup instead of the creation\n // date if it is available and can be parsed correctly, which is\n // consistent with other viewers such as Adobe Acrobat.\n const dateObject = PDFDateString.toDateObject(this.modificationDate);\n if (dateObject) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"popupDate\");\n modificationDate.textContent = \"{{date}}, {{time}}\";\n modificationDate.dataset.l10nId = \"annotation_date_string\";\n modificationDate.dataset.l10nArgs = JSON.stringify({\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString(),\n });\n popup.append(modificationDate);\n }\n\n if (\n this.richText?.str &&\n (!this.contentsObj?.str || this.contentsObj.str === this.richText.str)\n ) {\n XfaLayer.render({\n xfaHtml: this.richText.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\n if (!Array.isArray(this.trigger)) {\n this.trigger = [this.trigger];\n }\n\n // Attach the event listeners to the trigger element.\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this._toggle.bind(this));\n element.addEventListener(\"mouseover\", this._show.bind(this, false));\n element.addEventListener(\"mouseout\", this._hide.bind(this, false));\n }\n popup.addEventListener(\"click\", this._hide.bind(this, true));\n\n wrapper.append(popup);\n return wrapper;\n }\n\n /**\n * Format the contents of the popup by adding newlines where necessary.\n *\n * @private\n * @param {Object<string, string>} contentsObj\n * @memberof PopupElement\n * @returns {HTMLParagraphElement}\n */\n _formatContents({ str, dir }) {\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\n /**\n * Toggle the visibility of the popup.\n *\n * @private\n * @memberof PopupElement\n */\n _toggle() {\n if (this.pinned) {\n this._hide(true);\n } else {\n this._show(true);\n }\n }\n\n /**\n * Show the popup.\n *\n * @private\n * @param {boolean} pin\n * @memberof PopupElement\n */\n _show(pin = false) {\n if (pin) {\n this.pinned = true;\n }\n if (this.hideElement.hidden) {\n this.hideElement.hidden = false;\n this.container.style.zIndex =\n parseInt(this.container.style.zIndex) + 1000;\n }\n }\n\n /**\n * Hide the popup.\n *\n * @private\n * @param {boolean} unpin\n * @memberof PopupElement\n */\n _hide(unpin = true) {\n if (unpin) {\n this.pinned = false;\n }\n if (!this.hideElement.hidden && !this.pinned) {\n this.hideElement.hidden = true;\n this.container.style.zIndex =\n parseInt(this.container.style.zIndex) - 1000;\n }\n }\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n this.textContent = parameters.data.textContent;\n }\n\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n\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\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"lineAnnotation\");\n\n // Create an invisible line with the same starting and ending coordinates\n // that acts as the trigger for the popup. Only the line itself should\n // trigger the popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // PDF coordinates are calculated from a bottom left origin, so transform\n // the line coordinates to a top left origin for the SVG element.\n const 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 // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n\n svg.append(line);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the line instead\n // of to the entire container (which is the default).\n this._createPopup(line, data);\n\n return this.container;\n }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"squareAnnotation\");\n\n // Create an invisible square with the same rectangle that acts as the\n // trigger for the popup. Only the square itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // The browser draws half of the borders inside the square and half of\n // the borders outside the square by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const 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 // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n\n svg.append(square);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the square instead\n // of to the entire container (which is the default).\n this._createPopup(square, data);\n\n return this.container;\n }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"circleAnnotation\");\n\n // Create an invisible circle with the same ellipse that acts as the\n // trigger for the popup. Only the circle itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // The browser draws half of the borders inside the circle and half of\n // the borders outside the circle by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const 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 // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n\n svg.append(circle);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the circle instead\n // of to the entire container (which is the default).\n this._createPopup(circle, data);\n\n return this.container;\n }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.classList.add(this.containerClassName);\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup. Only the polyline itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // Convert the vertices array to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n svg.append(polyline);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n this._createPopup(polyline, data);\n\n return this.container;\n }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(parameters);\n\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"caretAnnotation\");\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n\n this.containerClassName = \"inkAnnotation\";\n\n // Use the polyline SVG element since it allows us to use coordinates\n // directly and to draw both straight lines and curves.\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.classList.add(this.containerClassName);\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n for (const inkList of data.inkLists) {\n // Convert the ink list to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n this._createPopup(polyline, data);\n\n svg.append(polyline);\n }\n\n this.container.append(svg);\n return this.container;\n }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"highlightAnnotation\");\n }\n\n this.container.classList.add(\"highlightAnnotation\");\n return this.container;\n }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"underlineAnnotation\");\n }\n\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"squigglyAnnotation\");\n }\n\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"strikeoutAnnotation\");\n }\n\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"stampAnnotation\");\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true });\n\n const { filename, content } = this.data.file;\n this.filename = getFilenameFromUrl(filename, /* onlyStripPath = */ true);\n this.content = content;\n\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n filename,\n content,\n });\n }\n\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n\n let trigger;\n if (this.data.hasAppearance) {\n trigger = document.createElement(\"div\");\n } else {\n // Unfortunately it seems that it's not clearly specified exactly what\n // names are actually valid, since Table 184 contains:\n // Conforming readers shall provide predefined icon appearances for at\n // least the following standard names: GraphPushPin, PaperclipTag.\n // Additional names may be supported as well. Default value: PushPin.\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${\n /paperclip/i.test(this.data.name) ? \"paperclip\" : \"pushpin\"\n }.svg`;\n }\n trigger.classList.add(\"popupTriggerArea\");\n trigger.addEventListener(\"dblclick\", this._download.bind(this));\n\n if (\n !this.data.hasPopup &&\n (this.data.titleObj?.str ||\n this.data.contentsObj?.str ||\n this.data.richText)\n ) {\n this._createPopup(trigger, this.data);\n }\n\n this.container.append(trigger);\n return this.container;\n }\n\n /**\n * Download the file attachment associated with this annotation.\n *\n * @private\n * @memberof FileAttachmentAnnotationElement\n */\n _download() {\n this.downloadManager?.openOrDownloadData(\n this.container,\n this.content,\n this.filename\n );\n }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPageProxy} page\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {boolean} [enableScripting] - Enable embedded script execution.\n * @property {boolean} [hasJSActions] - Some fields have JS actions.\n * The default value is `false`.\n * @property {Object<string, Array<Object>> | null} [fieldObjects]\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n * @property {TextAccessibilityManager} [accessibilityManager]\n */\n\nclass AnnotationLayer {\n static #appendElement(element, id, div, accessibilityManager) {\n const contentElement = element.firstChild || element;\n contentElement.id = `${AnnotationPrefix}${id}`;\n\n div.append(element);\n accessibilityManager?.moveElementInDOM(\n div,\n element,\n contentElement,\n /* isRemovable = */ false\n );\n }\n\n /**\n * Render a new annotation layer with all annotation elements.\n *\n * @param {AnnotationLayerParameters} params\n * @memberof AnnotationLayer\n */\n static render(params) {\n const { annotations, div, viewport, accessibilityManager } = params;\n setLayerDimensions(div, viewport);\n\n const elementParams = {\n data: null,\n layer: div,\n page: params.page,\n viewport,\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 };\n let zIndex = 0;\n\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n if (data.annotationType !== AnnotationType.POPUP) {\n const { width, height } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue; // Ignore empty annotations.\n }\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n\n if (!element.isRenderable) {\n continue;\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n if (Array.isArray(rendered)) {\n for (const renderedElement of rendered) {\n renderedElement.style.zIndex = zIndex++;\n AnnotationLayer.#appendElement(\n renderedElement,\n data.id,\n div,\n accessibilityManager\n );\n }\n } else {\n // The accessibility manager will move the annotation in the DOM in\n // order to match the visual ordering.\n // But if an annotation is above an other one, then we must draw it\n // after the other one whatever the order is in the DOM, hence the\n // use of the z-index.\n rendered.style.zIndex = zIndex++;\n\n if (element instanceof PopupAnnotationElement) {\n // Popup annotation elements should not be on top of other\n // annotation elements to prevent interfering with mouse events.\n div.prepend(rendered);\n } else {\n AnnotationLayer.#appendElement(\n rendered,\n data.id,\n div,\n accessibilityManager\n );\n }\n }\n }\n\n this.#setAnnotationCanvasMap(div, params.annotationCanvasMap);\n }\n\n /**\n * Update the annotation elements on existing annotation layer.\n *\n * @param {AnnotationLayerParameters} params\n * @memberof AnnotationLayer\n */\n static update(params) {\n const { annotationCanvasMap, div, viewport } = params;\n setLayerDimensions(div, { rotation: viewport.rotation });\n\n this.#setAnnotationCanvasMap(div, annotationCanvasMap);\n div.hidden = false;\n }\n\n static #setAnnotationCanvasMap(div, annotationCanvasMap) {\n if (!annotationCanvasMap) {\n return;\n }\n for (const [id, canvas] of annotationCanvasMap) {\n const element = div.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n\n const { firstChild } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else {\n firstChild.before(canvas);\n }\n }\n annotationCanvasMap.clear();\n }\n}\n\nexport { AnnotationLayer };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * PLEASE NOTE: This file is currently imported in both the `../display/` and\n * `../scripting_api/` folders, hence be EXTREMELY careful about\n * introducing any dependencies here since that can lead to an\n * unexpected/unnecessary size increase of the *built* files.\n */\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255)\n .toString(16)\n .padStart(2, \"0\");\n}\n\n// PDF specifications section 10.3\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\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n\n static RGB_HTML([r, g, b]) {\n const R = makeColorComp(r);\n const G = makeColorComp(g);\n const B = makeColorComp(b);\n return `#${R}${G}${B}`;\n }\n\n static T_HTML() {\n return \"#00000000\";\n }\n\n static CMYK_RGB([c, y, m, k]) {\n return [\n \"RGB\",\n 1 - Math.min(1, c + k),\n 1 - Math.min(1, m + k),\n 1 - Math.min(1, y + k),\n ];\n }\n\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\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\nexport { ColorConverters };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { XfaText } from \"./xfa_text.js\";\n\n/**\n * @typedef {Object} XfaLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Object} xfaHtml\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {string} [intent] - (default value is 'display').\n */\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, { value: null });\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, { value: event.target.value });\n });\n break;\n case \"input\":\n if (\n element.attributes.type === \"radio\" ||\n element.attributes.type === \"checkbox\"\n ) {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n // The checked attribute may have been set when opening the file,\n // unset through the UI and we're here because of printing.\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\n ? event.target.getAttribute(\"xfaOn\")\n : 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, { value: event.target.value });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value =\n options.selectedIndex === -1\n ? \"\"\n : options[options.selectedIndex].value;\n storage.setValue(id, { value });\n });\n break;\n }\n }\n\n static setAttributes({ html, element, storage = null, intent, linkService }) {\n const { attributes } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n\n if (attributes.type === \"radio\") {\n // Avoid to have a radio group when printing with the same as one\n // already displayed.\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\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n // We don't need to add dataId in the html object but it can\n // be useful to know its value when writing printing tests:\n // in this case, don't skip dataId to have its value.\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\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(\n html,\n attributes.href,\n attributes.newWindow\n );\n }\n\n // Set the value after the others to be sure to overwrite any other values.\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n\n /**\n * Render the XFA layer.\n *\n * @param {XfaLayerParameters} parameters\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 stack = [[root, -1, rootHtml]];\n\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n\n // Set defaults.\n if (intent !== \"richText\") {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n\n // Text nodes used for the text highlighter.\n const textDivs = [];\n\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\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n\n const { name } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n\n let childHtml;\n if (child?.attributes?.xmlns) {\n childHtml = document.createElementNS(child.attributes.xmlns, name);\n } else {\n childHtml = document.createElement(name);\n }\n\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\n if (child.children && child.children.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n\n /**\n * TODO: re-enable that stuff once we've JS implementation.\n * See https://bugzilla.mozilla.org/show_bug.cgi?id=1719465.\n *\n * for (const el of rootDiv.querySelectorAll(\n * \".xfaDisabled input, .xfaDisabled textarea\"\n * )) {\n * el.setAttribute(\"disabled\", true);\n * }\n * for (const el of rootDiv.querySelectorAll(\n * \".xfaReadOnly input, .xfaReadOnly textarea\"\n * )) {\n * el.setAttribute(\"readOnly\", true);\n * }\n */\n\n for (const el of rootDiv.querySelectorAll(\n \".xfaNonInteractive input, .xfaNonInteractive textarea\"\n )) {\n el.setAttribute(\"readOnly\", true);\n }\n\n return {\n textDivs,\n };\n }\n\n /**\n * Update the XFA layer.\n *\n * @param {XfaLayerParameters} parameters\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\nexport { XfaLayer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport { deprecated, DOMSVGFactory } from \"./display_utils.js\";\nimport {\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n OPS,\n TextRenderingMode,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\n\n/** @type {any} */\nlet SVGGraphics = class {\n constructor() {\n unreachable(\"Not implemented: SVGGraphics\");\n }\n};\n\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n const SVG_DEFAULTS = {\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fillColor: \"#000000\",\n };\n const XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n const XLINK_NS = \"http://www.w3.org/1999/xlink\";\n const LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n const LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n\n const createObjectURL = function (\n data,\n contentType = \"\",\n forceDataSchema = false\n ) {\n if (\n URL.createObjectURL &&\n typeof Blob !== \"undefined\" &&\n !forceDataSchema\n ) {\n return URL.createObjectURL(new Blob([data], { type: contentType }));\n }\n // Blob/createObjectURL is not available, falling back to data schema.\n const digits =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n let buffer = `data:${contentType};base64,`;\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const b1 = data[i] & 0xff;\n const b2 = data[i + 1] & 0xff;\n const b3 = data[i + 2] & 0xff;\n const d1 = b1 >> 2,\n d2 = ((b1 & 3) << 4) | (b2 >> 4);\n const d3 = i + 1 < ii ? ((b2 & 0xf) << 2) | (b3 >> 6) : 64;\n const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n };\n\n const convertImgDataToPng = (function () {\n const PNG_HEADER = new Uint8Array([\n 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a,\n ]);\n const CHUNK_WRAPPER_SIZE = 12;\n\n const crcTable = new Int32Array(256);\n for (let i = 0; i < 256; i++) {\n let c = i;\n for (let h = 0; h < 8; h++) {\n if (c & 1) {\n c = 0xedb88320 ^ ((c >> 1) & 0x7fffffff);\n } else {\n c = (c >> 1) & 0x7fffffff;\n }\n }\n crcTable[i] = c;\n }\n\n function crc32(data, start, end) {\n let crc = -1;\n for (let i = start; i < end; i++) {\n const a = (crc ^ data[i]) & 0xff;\n const b = crcTable[a];\n crc = (crc >>> 8) ^ b;\n }\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n let p = offset;\n const len = body.length;\n\n data[p] = (len >> 24) & 0xff;\n data[p + 1] = (len >> 16) & 0xff;\n data[p + 2] = (len >> 8) & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n\n data.set(body, p);\n p += body.length;\n\n const crc = crc32(data, offset + 4, p);\n data[p] = (crc >> 24) & 0xff;\n data[p + 1] = (crc >> 16) & 0xff;\n data[p + 2] = (crc >> 8) & 0xff;\n data[p + 3] = crc & 0xff;\n }\n\n function adler32(data, start, end) {\n let a = 1;\n let b = 0;\n for (let i = start; i < end; ++i) {\n a = (a + (data[i] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n return (b << 16) | a;\n }\n\n /**\n * @param {Uint8Array} literals The input data.\n * @returns {Uint8Array} The DEFLATE-compressed data stream in zlib format.\n * This is the required format for compressed streams in the PNG format:\n * http://www.libpng.org/pub/png/spec/1.2/PNG-Compression.html\n */\n function deflateSync(literals) {\n if (!isNodeJS) {\n // zlib is certainly not available outside of Node.js. We can either use\n // the pako library for client-side DEFLATE compression, or use the\n // canvas API of the browser to obtain a more optimal PNG file.\n return deflateSyncUncompressed(literals);\n }\n try {\n // NOTE: This implementation is far from perfect, but already way better\n // than not applying any compression.\n //\n // A better algorithm will try to choose a good predictor/filter and\n // then choose a suitable zlib compression strategy (e.g. 3,Z_RLE).\n //\n // Node v0.11.12 zlib.deflateSync is introduced (and returns a Buffer).\n // Node v3.0.0 Buffer inherits from Uint8Array.\n // Node v8.0.0 zlib.deflateSync accepts Uint8Array as input.\n let input;\n // eslint-disable-next-line no-undef\n if (parseInt(process.versions.node) >= 8) {\n input = literals;\n } else {\n // eslint-disable-next-line no-undef\n input = Buffer.from(literals);\n }\n const output = __non_webpack_require__(\"zlib\").deflateSync(input, {\n level: 9,\n });\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n warn(\n \"Not compressing PNG because zlib.deflateSync is unavailable: \" + e\n );\n }\n\n return deflateSyncUncompressed(literals);\n }\n\n // An implementation of DEFLATE with compression level 0 (Z_NO_COMPRESSION).\n function deflateSyncUncompressed(literals) {\n let len = literals.length;\n const maxBlockLength = 0xffff;\n\n const deflateBlocks = Math.ceil(len / maxBlockLength);\n const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n let pi = 0;\n idat[pi++] = 0x78; // compression method and flags\n idat[pi++] = 0x9c; // flags\n\n let pos = 0;\n while (len > maxBlockLength) {\n // writing non-final DEFLATE blocks type 0 and length of 65535\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n\n // writing non-final DEFLATE blocks type 0\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = (len >> 8) & 0xff;\n idat[pi++] = ~len & 0xffff & 0xff;\n idat[pi++] = ((~len & 0xffff) >> 8) & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n\n const adler = adler32(literals, 0, literals.length); // checksum\n idat[pi++] = (adler >> 24) & 0xff;\n idat[pi++] = (adler >> 16) & 0xff;\n idat[pi++] = (adler >> 8) & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n\n function encode(imgData, kind, forceDataSchema, isMask) {\n const width = imgData.width;\n const height = imgData.height;\n let bitDepth, colorType, lineSize;\n const bytes = imgData.data;\n\n switch (kind) {\n case ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = (width + 7) >> 3;\n break;\n case ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n case ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n default:\n throw new Error(\"invalid format\");\n }\n\n // prefix every row with predictor 0\n const literals = new Uint8Array((1 + lineSize) * height);\n let offsetLiterals = 0,\n offsetBytes = 0;\n for (let y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0; // no prediction\n literals.set(\n bytes.subarray(offsetBytes, offsetBytes + lineSize),\n offsetLiterals\n );\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === ImageKind.GRAYSCALE_1BPP && isMask) {\n // inverting for image masks\n offsetLiterals = 0;\n for (let y = 0; y < height; y++) {\n offsetLiterals++; // skipping predictor\n for (let i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xff;\n }\n }\n }\n\n const ihdr = new Uint8Array([\n (width >> 24) & 0xff,\n (width >> 16) & 0xff,\n (width >> 8) & 0xff,\n width & 0xff,\n (height >> 24) & 0xff,\n (height >> 16) & 0xff,\n (height >> 8) & 0xff,\n height & 0xff,\n bitDepth, // bit depth\n colorType, // color type\n 0x00, // compression method\n 0x00, // filter method\n 0x00, // interlace method\n ]);\n const idat = deflateSync(literals);\n\n // PNG consists of: header, IHDR+data, IDAT+data, and IEND.\n const pngLength =\n PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n const data = new Uint8Array(pngLength);\n let offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk(\"IHDR\", ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk(\"IDATA\", idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n\n return createObjectURL(data, \"image/png\", forceDataSchema);\n }\n\n // eslint-disable-next-line no-shadow\n return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n const kind =\n imgData.kind === undefined ? ImageKind.GRAYSCALE_1BPP : imgData.kind;\n return encode(imgData, kind, forceDataSchema, isMask);\n };\n })();\n\n class SVGExtraState {\n constructor() {\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n\n this.textMatrix = IDENTITY_MATRIX;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n\n // Default foreground and background colors\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = \"#000000\";\n\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n\n this.dashArray = [];\n this.dashPhase = 0;\n\n this.dependencies = [];\n\n // Clipping\n this.activeClipUrl = null;\n this.clipGroup = null;\n\n this.maskId = \"\";\n }\n\n clone() {\n return Object.create(this);\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n }\n\n // eslint-disable-next-line no-inner-declarations\n function opListToTree(opList) {\n let opTree = [];\n const tmp = [];\n\n for (const opListElement of opList) {\n if (opListElement.fn === \"save\") {\n opTree.push({ fnId: 92, fn: \"group\", items: [] });\n tmp.push(opTree);\n opTree = opTree.at(-1).items;\n continue;\n }\n\n if (opListElement.fn === \"restore\") {\n opTree = tmp.pop();\n } else {\n opTree.push(opListElement);\n }\n }\n return opTree;\n }\n\n /**\n * Format a float number as a string.\n *\n * @param value {number} - The float number to format.\n * @returns {string}\n */\n // eslint-disable-next-line no-inner-declarations\n function pf(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n const s = value.toFixed(10);\n let i = s.length - 1;\n if (s[i] !== \"0\") {\n return s;\n }\n\n // Remove trailing zeros.\n do {\n i--;\n } while (s[i] === \"0\");\n return s.substring(0, s[i] === \".\" ? i : i + 1);\n }\n\n /**\n * Format a transform matrix as a string. The standard rotation, scale and\n * translation matrices are replaced by their shorter forms, and for\n * identity matrices an empty string is returned to save memory.\n *\n * @param m {Array} - The transform matrix to format.\n * @returns {string}\n */\n // eslint-disable-next-line no-inner-declarations\n function pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return \"\";\n }\n return `scale(${pf(m[0])} ${pf(m[3])})`;\n }\n if (m[0] === m[3] && m[1] === -m[2]) {\n const a = (Math.acos(m[0]) * 180) / Math.PI;\n return `rotate(${pf(a)})`;\n }\n } else {\n if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return `translate(${pf(m[4])} ${pf(m[5])})`;\n }\n }\n return (\n `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` +\n `${pf(m[5])})`\n );\n }\n\n // The counts below are relevant for all pages, so they have to be global\n // instead of being members of `SVGGraphics` (which is recreated for\n // each page).\n let clipCount = 0;\n let maskCount = 0;\n let shadingCount = 0;\n\n SVGGraphics = class {\n constructor(commonObjs, objs, forceDataSchema = false) {\n deprecated(\n \"The SVG back-end is no longer maintained and *may* be removed in the future.\"\n );\n this.svgFactory = new DOMSVGFactory();\n\n this.current = new SVGExtraState();\n this.transformMatrix = IDENTITY_MATRIX; // Graphics state matrix\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n\n // In `src/shared/util.js` the operator names are mapped to IDs.\n // The list below represents the reverse of that, i.e., it maps IDs\n // to operator names.\n this._operatorIdMapping = [];\n for (const op in OPS) {\n this._operatorIdMapping[OPS[op]] = op;\n }\n }\n\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\")\n ? this.commonObjs.get(data)\n : this.objs.get(data);\n }\n return fallback;\n }\n\n save() {\n this.transformStack.push(this.transformMatrix);\n const old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n\n group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n }\n\n loadDependencies(operatorList) {\n const fnArray = operatorList.fnArray;\n const argsArray = operatorList.argsArray;\n\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n if (fnArray[i] !== OPS.dependency) {\n continue;\n }\n\n for (const obj of argsArray[i]) {\n const objsPool = obj.startsWith(\"g_\") ? this.commonObjs : this.objs;\n const promise = new Promise(resolve => {\n objsPool.get(obj, resolve);\n });\n this.current.dependencies.push(promise);\n }\n }\n return Promise.all(this.current.dependencies);\n }\n\n transform(a, b, c, d, e, f) {\n const transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = Util.transform(\n this.transformMatrix,\n transformMatrix\n );\n this.tgrp = null;\n }\n\n getSVG(operatorList, viewport) {\n this.viewport = viewport;\n\n const svgElement = this._initialize(viewport);\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = IDENTITY_MATRIX;\n this.executeOpTree(this.convertOpList(operatorList));\n return svgElement;\n });\n }\n\n convertOpList(operatorList) {\n const operatorIdMapping = this._operatorIdMapping;\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n const opList = [];\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n const fnId = fnArray[i];\n opList.push({\n fnId,\n fn: operatorIdMapping[fnId],\n args: argsArray[i],\n });\n }\n return opListToTree(opList);\n }\n\n executeOpTree(opTree) {\n for (const opTreeElement of opTree) {\n const fn = opTreeElement.fn;\n const fnId = opTreeElement.fnId;\n const args = opTreeElement.args;\n\n switch (fnId | 0) {\n case OPS.beginText:\n this.beginText();\n break;\n case OPS.dependency:\n // Handled in `loadDependencies`, so no warning should be shown.\n break;\n case OPS.setLeading:\n this.setLeading(args);\n break;\n case OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n case OPS.setFont:\n this.setFont(args);\n break;\n case OPS.showText:\n this.showText(args[0]);\n break;\n case OPS.showSpacedText:\n this.showText(args[0]);\n break;\n case OPS.endText:\n this.endText();\n break;\n case OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n case OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n case OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n case OPS.setHScale:\n this.setHScale(args[0]);\n break;\n case OPS.setTextMatrix:\n this.setTextMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n break;\n case OPS.setTextRise:\n this.setTextRise(args[0]);\n break;\n case OPS.setTextRenderingMode:\n this.setTextRenderingMode(args[0]);\n break;\n case OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n case OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n case OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n case OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n case OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeColorN:\n this.setStrokeColorN(args);\n break;\n case OPS.setFillColorN:\n this.setFillColorN(args);\n break;\n case OPS.shadingFill:\n this.shadingFill(args[0]);\n break;\n case OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n case OPS.setRenderingIntent:\n this.setRenderingIntent(args[0]);\n break;\n case OPS.setFlatness:\n this.setFlatness(args[0]);\n break;\n case OPS.setGState:\n this.setGState(args[0]);\n break;\n case OPS.fill:\n this.fill();\n break;\n case OPS.eoFill:\n this.eoFill();\n break;\n case OPS.stroke:\n this.stroke();\n break;\n case OPS.fillStroke:\n this.fillStroke();\n break;\n case OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n case OPS.clip:\n this.clip(\"nonzero\");\n break;\n case OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n case OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n case OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n case OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n case OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n case OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n case OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n case OPS.closePath:\n this.closePath();\n break;\n case OPS.closeStroke:\n this.closeStroke();\n break;\n case OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n case OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n case OPS.nextLine:\n this.nextLine();\n break;\n case OPS.transform:\n this.transform(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n break;\n case OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n case OPS.endPath:\n this.endPath();\n break;\n case 92:\n this.group(opTreeElement.items);\n break;\n default:\n warn(`Unimplemented operator ${fn}`);\n break;\n }\n }\n }\n\n setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n }\n\n setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const current = this.current;\n current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n current.textMatrixScale = Math.hypot(a, b);\n\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtElement.append(current.tspan);\n }\n\n beginText() {\n const current = this.current;\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.textMatrix = IDENTITY_MATRIX;\n current.lineMatrix = IDENTITY_MATRIX;\n current.textMatrixScale = 1;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n current.xcoords = [];\n current.ycoords = [];\n }\n\n moveText(x, y) {\n const current = this.current;\n current.x = current.lineX += x;\n current.y = current.lineY += y;\n\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return;\n }\n\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 vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n let x = 0;\n for (const glyph of glyphs) {\n if (glyph === null) {\n // Word break\n x += fontDirection * wordSpacing;\n continue;\n } else if (typeof glyph === \"number\") {\n x += (spacingDir * glyph * fontSize) / 1000;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n let vx;\n const vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n\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\n if (glyph.isInFont || font.missingFile) {\n current.xcoords.push(current.x + scaledX);\n if (vertical) {\n current.ycoords.push(-current.y + scaledY);\n }\n current.tspan.textContent += character;\n } else {\n // TODO: To assist with text selection, we should replace the missing\n // character with a space character if charWidth is not zero.\n // But we cannot just do \"character = ' '\", because the ' ' character\n // might actually map to a different glyph.\n }\n\n let charWidth;\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n\n x += charWidth;\n }\n current.tspan.setAttributeNS(\n null,\n \"x\",\n current.xcoords.map(pf).join(\" \")\n );\n if (vertical) {\n current.tspan.setAttributeNS(\n null,\n \"y\",\n current.ycoords.map(pf).join(\" \")\n );\n } else {\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n }\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n }\n\n const fillStrokeMode =\n current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n }\n if (current.fillAlpha < 1) {\n current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n }\n } else if (current.textRenderingMode === TextRenderingMode.ADD_TO_PATH) {\n // Workaround for Firefox: We must set fill=\"transparent\" because\n // fill=\"none\" would generate an empty clipping path.\n current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n } else {\n current.tspan.setAttributeNS(null, \"fill\", \"none\");\n }\n\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n const lineWidthScale = 1 / (current.textMatrixScale || 1);\n this._setStrokeAttributes(current.tspan, lineWidthScale);\n }\n\n // Include the text rise in the text matrix since the `pm` function\n // creates the SVG element's `translate` entry (work on a copy to avoid\n // altering the original text matrix).\n let textMatrix = current.textMatrix;\n if (current.textRise !== 0) {\n textMatrix = textMatrix.slice();\n textMatrix[5] += current.textRise;\n }\n\n current.txtElement.setAttributeNS(\n null,\n \"transform\",\n `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`\n );\n current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n current.txtElement.append(current.tspan);\n current.txtgrp.append(current.txtElement);\n\n this._ensureTransformGroup().append(current.txtElement);\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n addFontStyle(fontObj) {\n if (!fontObj.data) {\n throw new Error(\n \"addFontStyle: No font data available, \" +\n 'ensure that the \"fontExtraProperties\" API parameter is set.'\n );\n }\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.append(this.cssStyle);\n }\n\n const url = createObjectURL(\n fontObj.data,\n fontObj.mimetype,\n this.forceDataSchema\n );\n this.cssStyle.textContent +=\n `@font-face { font-family: \"${fontObj.loadedName}\";` +\n ` src: url(${url}); }\\n`;\n }\n\n setFont(details) {\n const current = this.current;\n const fontObj = this.commonObjs.get(details[0]);\n let size = details[1];\n current.font = fontObj;\n\n if (\n this.embedFonts &&\n !fontObj.missingFile &&\n !this.embeddedFonts[fontObj.loadedName]\n ) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\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\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.xcoords = [];\n current.ycoords = [];\n }\n\n endText() {\n const current = this.current;\n if (\n current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG &&\n current.txtElement?.hasChildNodes()\n ) {\n // If no glyphs are shown (i.e. no child nodes), no clipping occurs.\n current.element = current.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n // Path properties\n setLineWidth(width) {\n if (width > 0) {\n this.current.lineWidth = width;\n }\n }\n\n setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.current.miterLimit = limit;\n }\n\n setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n }\n\n setStrokeRGBColor(r, g, b) {\n this.current.strokeColor = Util.makeHexColor(r, g, b);\n }\n\n setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n }\n\n setFillRGBColor(r, g, b) {\n this.current.fillColor = Util.makeHexColor(r, g, b);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n this.current.ycoords = [];\n }\n\n setStrokeColorN(args) {\n this.current.strokeColor = this._makeColorN_Pattern(args);\n }\n\n setFillColorN(args) {\n this.current.fillColor = this._makeColorN_Pattern(args);\n }\n\n shadingFill(args) {\n const width = this.viewport.width;\n const height = this.viewport.height;\n const inv = Util.inverseTransform(this.transformMatrix);\n const bl = Util.applyTransform([0, 0], inv);\n const br = Util.applyTransform([0, height], inv);\n const ul = Util.applyTransform([width, 0], inv);\n const ur = Util.applyTransform([width, height], inv);\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", x0);\n rect.setAttributeNS(null, \"y\", y0);\n rect.setAttributeNS(null, \"width\", x1 - x0);\n rect.setAttributeNS(null, \"height\", y1 - y0);\n rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n if (this.current.fillAlpha < 1) {\n rect.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n }\n this._ensureTransformGroup().append(rect);\n }\n\n /**\n * @private\n */\n _makeColorN_Pattern(args) {\n if (args[0] === \"TilingPattern\") {\n return this._makeTilingPattern(args);\n }\n return this._makeShadingPattern(args);\n }\n\n /**\n * @private\n */\n _makeTilingPattern(args) {\n const color = args[1];\n const operatorList = args[2];\n const matrix = args[3] || IDENTITY_MATRIX;\n const [x0, y0, x1, y1] = args[4];\n const xstep = args[5];\n const ystep = args[6];\n const paintType = args[7];\n\n const tilingId = `shading${shadingCount++}`;\n const [tx0, ty0, tx1, ty1] = Util.normalizeRect([\n ...Util.applyTransform([x0, y0], matrix),\n ...Util.applyTransform([x1, y1], matrix),\n ]);\n const [xscale, yscale] = Util.singularValueDecompose2dScale(matrix);\n const txstep = xstep * xscale;\n const tystep = ystep * yscale;\n\n const tiling = this.svgFactory.createElement(\"svg:pattern\");\n tiling.setAttributeNS(null, \"id\", tilingId);\n tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n tiling.setAttributeNS(null, \"width\", txstep);\n tiling.setAttributeNS(null, \"height\", tystep);\n tiling.setAttributeNS(null, \"x\", `${tx0}`);\n tiling.setAttributeNS(null, \"y\", `${ty0}`);\n\n // Save current state.\n const svg = this.svg;\n const transformMatrix = this.transformMatrix;\n const fillColor = this.current.fillColor;\n const strokeColor = this.current.strokeColor;\n\n const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n this.svg = bbox;\n this.transformMatrix = matrix;\n if (paintType === 2) {\n const cssColor = Util.makeHexColor(...color);\n this.current.fillColor = cssColor;\n this.current.strokeColor = cssColor;\n }\n this.executeOpTree(this.convertOpList(operatorList));\n\n // Restore saved state.\n this.svg = svg;\n this.transformMatrix = transformMatrix;\n this.current.fillColor = fillColor;\n this.current.strokeColor = strokeColor;\n\n tiling.append(bbox.childNodes[0]);\n this.defs.append(tiling);\n return `url(#${tilingId})`;\n }\n\n /**\n * @private\n */\n _makeShadingPattern(args) {\n if (typeof args === \"string\") {\n args = this.objs.get(args);\n }\n switch (args[0]) {\n case \"RadialAxial\":\n const shadingId = `shading${shadingCount++}`;\n const colorStops = args[3];\n let gradient;\n\n switch (args[1]) {\n case \"axial\":\n const point0 = args[4];\n const point1 = args[5];\n gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"x1\", point0[0]);\n gradient.setAttributeNS(null, \"y1\", point0[1]);\n gradient.setAttributeNS(null, \"x2\", point1[0]);\n gradient.setAttributeNS(null, \"y2\", point1[1]);\n break;\n case \"radial\":\n const focalPoint = args[4];\n const circlePoint = args[5];\n const focalRadius = args[6];\n const circleRadius = args[7];\n gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n gradient.setAttributeNS(null, \"r\", circleRadius);\n gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n gradient.setAttributeNS(null, \"fr\", focalRadius);\n break;\n default:\n throw new Error(`Unknown RadialAxial type: ${args[1]}`);\n }\n for (const colorStop of colorStops) {\n const stop = this.svgFactory.createElement(\"svg:stop\");\n stop.setAttributeNS(null, \"offset\", colorStop[0]);\n stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n gradient.append(stop);\n }\n this.defs.append(gradient);\n return `url(#${shadingId})`;\n case \"Mesh\":\n warn(\"Unimplemented pattern Mesh\");\n return null;\n case \"Dummy\":\n return \"hotpink\";\n default:\n throw new Error(`Unknown IR type: ${args[0]}`);\n }\n }\n\n setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n }\n\n constructPath(ops, args) {\n const current = this.current;\n let x = current.x,\n y = current.y;\n let d = [];\n let j = 0;\n\n for (const op of ops) {\n switch (op | 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 d.push(\n \"M\",\n pf(x),\n pf(y),\n \"L\",\n pf(xw),\n pf(y),\n \"L\",\n pf(xw),\n pf(yh),\n \"L\",\n pf(x),\n pf(yh),\n \"Z\"\n );\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push(\"M\", pf(x), pf(y));\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push(\"L\", pf(x), pf(y));\n break;\n case OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push(\n \"C\",\n pf(args[j]),\n pf(args[j + 1]),\n pf(args[j + 2]),\n pf(args[j + 3]),\n pf(x),\n pf(y)\n );\n j += 6;\n break;\n case OPS.curveTo2:\n d.push(\n \"C\",\n pf(x),\n pf(y),\n pf(args[j]),\n pf(args[j + 1]),\n pf(args[j + 2]),\n pf(args[j + 3])\n );\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push(\n \"C\",\n pf(args[j]),\n pf(args[j + 1]),\n pf(x),\n pf(y),\n pf(x),\n pf(y)\n );\n j += 4;\n break;\n case OPS.closePath:\n d.push(\"Z\");\n break;\n }\n }\n\n d = d.join(\" \");\n\n if (\n current.path &&\n ops.length > 0 &&\n ops[0] !== OPS.rectangle &&\n ops[0] !== OPS.moveTo\n ) {\n // If a path does not start with an OPS.rectangle or OPS.moveTo, it has\n // probably been divided into two OPS.constructPath operators by\n // OperatorList. Append the commands to the previous path element.\n d = current.path.getAttributeNS(null, \"d\") + d;\n } else {\n current.path = this.svgFactory.createElement(\"svg:path\");\n this._ensureTransformGroup().append(current.path);\n }\n\n current.path.setAttributeNS(null, \"d\", d);\n current.path.setAttributeNS(null, \"fill\", \"none\");\n\n // Saving a reference in current.element so that it can be addressed\n // in 'fill' and 'stroke'\n current.element = current.path;\n current.setCurrentPoint(x, y);\n }\n\n endPath() {\n const current = this.current;\n\n // Painting operators end a path.\n current.path = null;\n\n if (!this.pendingClip) {\n return;\n }\n if (!current.element) {\n this.pendingClip = null;\n return;\n }\n\n // Add the current path to a clipping path.\n const clipId = `clippath${clipCount++}`;\n const clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n clipPath.setAttributeNS(null, \"id\", clipId);\n clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n\n // A deep clone is needed when text is used as a clipping path.\n const clipElement = current.element.cloneNode(true);\n if (this.pendingClip === \"evenodd\") {\n clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n } else {\n clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n }\n this.pendingClip = null;\n clipPath.append(clipElement);\n this.defs.append(clipPath);\n\n if (current.activeClipUrl) {\n // The previous clipping group content can go out of order -- resetting\n // cached clipGroups.\n current.clipGroup = null;\n for (const prev of this.extraStack) {\n prev.clipGroup = null;\n }\n // Intersect with the previous clipping path.\n clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n }\n current.activeClipUrl = `url(#${clipId})`;\n\n this.tgrp = null;\n }\n\n clip(type) {\n this.pendingClip = type;\n }\n\n closePath() {\n const current = this.current;\n if (current.path) {\n const d = `${current.path.getAttributeNS(null, \"d\")}Z`;\n current.path.setAttributeNS(null, \"d\", d);\n }\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setTextRise(textRise) {\n this.current.textRise = textRise;\n }\n\n setTextRenderingMode(textRenderingMode) {\n this.current.textRenderingMode = textRenderingMode;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setRenderingIntent(intent) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setFlatness(flatness) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\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);\n break;\n case \"CA\":\n this.setStrokeAlpha(value);\n break;\n case \"ca\":\n this.setFillAlpha(value);\n break;\n default:\n warn(`Unimplemented graphic state operator ${key}`);\n break;\n }\n }\n }\n\n fill() {\n const current = this.current;\n if (current.element) {\n current.element.setAttributeNS(null, \"fill\", current.fillColor);\n current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n this.endPath();\n }\n }\n\n stroke() {\n const current = this.current;\n if (current.element) {\n this._setStrokeAttributes(current.element);\n current.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n\n /**\n * @private\n */\n _setStrokeAttributes(element, lineWidthScale = 1) {\n const current = this.current;\n let dashArray = current.dashArray;\n if (lineWidthScale !== 1 && dashArray.length > 0) {\n dashArray = dashArray.map(function (value) {\n return lineWidthScale * value;\n });\n }\n element.setAttributeNS(null, \"stroke\", current.strokeColor);\n element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n element.setAttributeNS(\n null,\n \"stroke-width\",\n pf(lineWidthScale * current.lineWidth) + \"px\"\n );\n element.setAttributeNS(\n null,\n \"stroke-dasharray\",\n dashArray.map(pf).join(\" \")\n );\n element.setAttributeNS(\n null,\n \"stroke-dashoffset\",\n pf(lineWidthScale * current.dashPhase) + \"px\"\n );\n }\n\n eoFill() {\n this.current.element?.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n this.fill();\n }\n\n fillStroke() {\n // Order is important since stroke wants fill to be none.\n // First stroke, then if fill needed, it will be overwritten.\n this.stroke();\n this.fill();\n }\n\n eoFillStroke() {\n this.current.element?.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n this.fillStroke();\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n\n paintSolidColorImageMask() {\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", \"1px\");\n rect.setAttributeNS(null, \"height\", \"1px\");\n rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n\n this._ensureTransformGroup().append(rect);\n }\n\n paintImageXObject(objId) {\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(`Dependent image with object ID ${objId} is not ready yet`);\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n\n paintInlineImageXObject(imgData, mask) {\n const width = imgData.width;\n const height = imgData.height;\n\n const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", \"0\");\n cliprect.setAttributeNS(null, \"y\", \"0\");\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n\n const imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-height));\n imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n imgEl.setAttributeNS(\n null,\n \"transform\",\n `scale(${pf(1 / width)} ${pf(-1 / height)})`\n );\n if (mask) {\n mask.append(imgEl);\n } else {\n this._ensureTransformGroup().append(imgEl);\n }\n }\n\n paintImageMaskXObject(img) {\n const imgData = this.getObject(img.data, img);\n if (imgData.bitmap) {\n warn(\n \"paintImageMaskXObject: ImageBitmap support is not implemented, \" +\n \"ensure that the `isOffscreenCanvasSupported` API parameter is disabled.\"\n );\n return;\n }\n const current = this.current;\n const width = imgData.width;\n const height = imgData.height;\n const fillColor = current.fillColor;\n\n current.maskId = `mask${maskCount++}`;\n const mask = this.svgFactory.createElement(\"svg:mask\");\n mask.setAttributeNS(null, \"id\", current.maskId);\n\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", pf(width));\n rect.setAttributeNS(null, \"height\", pf(height));\n rect.setAttributeNS(null, \"fill\", fillColor);\n rect.setAttributeNS(null, \"mask\", `url(#${current.maskId})`);\n\n this.defs.append(mask);\n this._ensureTransformGroup().append(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(\n matrix[0],\n matrix[1],\n matrix[2],\n matrix[3],\n matrix[4],\n matrix[5]\n );\n }\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", bbox[0]);\n cliprect.setAttributeNS(null, \"y\", bbox[1]);\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {}\n\n /**\n * @private\n */\n _initialize(viewport) {\n const svg = this.svgFactory.create(viewport.width, viewport.height);\n\n // Create the definitions element.\n const definitions = this.svgFactory.createElement(\"svg:defs\");\n svg.append(definitions);\n this.defs = definitions;\n\n // Create the root group element, which acts a container for all other\n // groups and applies the viewport transform.\n const rootGroup = this.svgFactory.createElement(\"svg:g\");\n rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n svg.append(rootGroup);\n\n // For the construction of the SVG image we are only interested in the\n // root group, so we expose it as the entry point of the SVG image for\n // the other code in this class.\n this.svg = rootGroup;\n\n return svg;\n }\n\n /**\n * @private\n */\n _ensureClipGroup() {\n if (!this.current.clipGroup) {\n const clipGroup = this.svgFactory.createElement(\"svg:g\");\n clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.append(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n return this.current.clipGroup;\n }\n\n /**\n * @private\n */\n _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().append(this.tgrp);\n } else {\n this.svg.append(this.tgrp);\n }\n }\n return this.tgrp;\n }\n };\n}\n\nexport { SVGGraphics };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_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\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").OnProgressParameters} OnProgressParameters */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").PDFDocumentLoadingTask} PDFDocumentLoadingTask */\n/** @typedef {import(\"./display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./display/api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display/api\").RenderTask} RenderTask */\n/** @typedef {import(\"./display/display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/text_layer\").TextLayerRenderTask} TextLayerRenderTask */\n\nimport {\n AbortException,\n AnnotationEditorParamsType,\n AnnotationEditorType,\n AnnotationMode,\n CMapCompressionType,\n createValidAbsoluteUrl,\n FeatureTest,\n InvalidPDFException,\n MissingPDFException,\n normalizeUnicode,\n OPS,\n PasswordResponses,\n PermissionFlag,\n PromiseCapability,\n shadow,\n UnexpectedResponseException,\n Util,\n VerbosityLevel,\n} from \"./shared/util.js\";\nimport {\n build,\n getDocument,\n PDFDataRangeTransport,\n PDFWorker,\n version,\n} from \"./display/api.js\";\nimport {\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n isDataScheme,\n isPdfFile,\n loadScript,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n setLayerDimensions,\n} from \"./display/display_utils.js\";\nimport { renderTextLayer, updateTextLayer } from \"./display/text_layer.js\";\nimport { AnnotationEditorLayer } from \"./display/editor/annotation_editor_layer.js\";\nimport { AnnotationEditorUIManager } from \"./display/editor/tools.js\";\nimport { AnnotationLayer } from \"./display/annotation_layer.js\";\nimport { GlobalWorkerOptions } from \"./display/worker_options.js\";\nimport { SVGGraphics } from \"./display/svg.js\";\nimport { XfaLayer } from \"./display/xfa_layer.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nexport {\n AbortException,\n AnnotationEditorLayer,\n AnnotationEditorParamsType,\n AnnotationEditorType,\n AnnotationEditorUIManager,\n AnnotationLayer,\n AnnotationMode,\n build,\n CMapCompressionType,\n createValidAbsoluteUrl,\n FeatureTest,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n GlobalWorkerOptions,\n InvalidPDFException,\n isDataScheme,\n isPdfFile,\n loadScript,\n MissingPDFException,\n normalizeUnicode,\n OPS,\n PasswordResponses,\n PDFDataRangeTransport,\n PDFDateString,\n PDFWorker,\n PermissionFlag,\n PixelsPerInch,\n PromiseCapability,\n RenderingCancelledException,\n renderTextLayer,\n setLayerDimensions,\n shadow,\n SVGGraphics,\n UnexpectedResponseException,\n updateTextLayer,\n Util,\n VerbosityLevel,\n version,\n XfaLayer,\n};\n"],"names":["IDENTITY_MATRIX","exports","FONT_IDENTITY_MATRIX","MAX_IMAGE_SIZE_TO_CACHE","LINE_FACTOR","LINE_DESCENT_FACTOR","BASELINE_FACTOR","RenderingIntentFlag","ANY","DISPLAY","PRINT","SAVE","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","AnnotationEditorPrefix","AnnotationEditorType","NONE","FREETEXT","INK","AnnotationEditorParamsType","FREETEXT_SIZE","FREETEXT_COLOR","FREETEXT_OPACITY","INK_COLOR","INK_THICKNESS","INK_OPACITY","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","VerbosityLevel","ERRORS","WARNINGS","INFOS","CMapCompressionType","BINARY","OPS","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","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","setVerbosityLevel","level","Number","isInteger","getVerbosityLevel","info","msg","console","log","warn","unreachable","Error","assert","cond","_isValidProtocol","url","protocol","createValidAbsoluteUrl","baseUrl","options","addDefaultProtocol","startsWith","dots","match","length","tryConvertEncoding","stringToUTF8String","ex","absoluteUrl","URL","shadow","obj","prop","value","nonSerializable","Object","defineProperty","enumerable","configurable","writable","BaseException","BaseExceptionClosure","message","name","constructor","prototype","PasswordException","code","UnknownErrorException","details","InvalidPDFException","MissingPDFException","UnexpectedResponseException","status","FormatError","AbortException","bytesToString","bytes","undefined","MAX_ARGUMENT_COUNT","String","fromCharCode","apply","strBuf","i","chunkEnd","Math","min","chunk","subarray","push","join","stringToBytes","str","Uint8Array","charCodeAt","string32","objectSize","keys","objectFromMap","map","create","key","isLittleEndian","buffer8","view32","Uint32Array","buffer","isEvalSupported","Function","e","FeatureTest","isOffscreenCanvasSupported","OffscreenCanvas","platform","navigator","isWin","isMac","includes","hexNumbers","Array","n","toString","padStart","Util","makeHexColor","r","g","b","scaleMinMax","minMax","temp","m1","m2","applyTransform","p","m","xt","yt","applyInverseTransform","d","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","bezierBoundingBox","x0","y0","x1","y1","x2","y2","x3","y3","tvalues","bounds","t","t1","t2","b2ac","sqrtb2ac","abs","j","mt","jlen","PDFStringTranslateTable","stringToPDFString","encoding","decoder","TextDecoder","fatal","decode","ii","charAt","decodeURIComponent","escape","utf8StringToString","unescape","encodeURIComponent","isArrayBuffer","v","byteLength","isArrayEqual","arr1","arr2","getModificationDate","date","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","PromiseCapability","settled","promise","Promise","resolve","reject","data","reason","NormalizeRegex","NormalizationMap","normalizeUnicode","Map","replaceAll","_","normalize","get","_util","require","_annotation_storage","_display_utils","_font_loader","_canvas","_worker_options","_is_node","_message_handler","_metadata","_optional_content_config","_transport_stream","_xfa_text","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DELAYED_CLEANUP_TIMEOUT","DefaultCanvasFactory","DOMCanvasFactory","DefaultCMapReaderFactory","DOMCMapReaderFactory","DefaultFilterFactory","DOMFilterFactory","DefaultStandardFontDataFactory","DOMStandardFontDataFactory","isNodeJS","NodeCanvasFactory","NodeCMapReaderFactory","NodeFilterFactory","NodeStandardFontDataFactory","createPDFNetworkStream","PDFNodeStream","params","PDFNetworkStream","PDFFetchStream","isValidFetchUrl","getDocument","src","range","task","PDFDocumentLoadingTask","docId","getUrlProp","getDataProp","httpHeaders","withCredentials","password","rangeTransport","PDFDataRangeTransport","rangeChunkSize","worker","PDFWorker","docBaseUrl","isDataScheme","cMapUrl","cMapPacked","CMapReaderFactory","standardFontDataUrl","StandardFontDataFactory","ignoreErrors","stopAtErrors","maxImageSize","canvasMaxAreaInBytes","disableFontFace","fontExtraProperties","enableXfa","ownerDocument","globalThis","document","disableRange","disableStream","disableAutoFetch","pdfBug","NaN","useSystemFonts","useWorkerFetch","baseURI","canvasFactory","filterFactory","styleElement","transportFactory","cMapReaderFactory","isCompressed","standardFontDataFactory","workerParams","port","GlobalWorkerOptions","workerPort","fromPort","_worker","fetchDocParams","apiVersion","evaluatorOptions","transportParams","then","destroyed","workerIdPromise","_fetchDocument","networkStreamPromise","networkStream","PDFDataTransportStream","initialData","progressiveDone","contentDispositionFilename","all","workerId","messageHandler","MessageHandler","transport","WorkerTransport","_transport","send","catch","_capability","source","sendWithPromise","val","href","window","location","Buffer","deprecated","isNaN","onPassword","onProgress","destroy","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","addRangeListener","listener","addProgressListener","addProgressiveReadListener","addProgressiveDoneListener","onDataRange","begin","onDataProgress","loaded","total","onDataProgressiveRead","onDataProgressiveDone","transportReady","requestDataRange","end","abort","PDFDocumentProxy","pdfInfo","_pdfInfo","annotationStorage","numPages","fingerprints","isPureXfa","_htmlForXfa","allXfaHtml","getPage","pageNumber","getPageIndex","ref","getDestinations","getDestination","id","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJavaScript","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getPermissions","getMetadata","getMarkInfo","getData","saveDocument","getDownloadInfo","downloadInfoCapability","cleanup","keepLoadedFonts","startCleanup","loadingTask","loadingParams","getFieldObjects","hasJSActions","getCalculationOrderIds","PDFPageProxy","delayedCleanupTimeout","pendingCleanup","pageIndex","pageInfo","_pageIndex","_pageInfo","_stats","StatTimer","_pdfBug","commonObjs","objs","PDFObjects","_maybeCleanupAfterRender","_intentStates","rotate","userUnit","view","getViewport","scale","rotation","offsetX","offsetY","dontFlip","PageViewport","viewBox","getAnnotations","intent","intentArgs","getRenderingIntent","renderingIntent","getPageJSActions","getXfa","children","render","canvasContext","viewport","annotationMode","background","optionalContentConfigPromise","annotationCanvasMap","pageColors","printAnnotationStorage","arguments","time","abortDelayedCleanup","intentState","cacheKey","set","streamReaderCancelTimeout","clearTimeout","intentPrint","displayReadyCapability","operatorList","fnArray","argsArray","lastChunk","separateAnnots","_pumpOperatorList","complete","error","renderTasks","delete","internalRenderTask","tryCleanup","capability","_abortOperatorList","timeEnd","InternalRenderTask","callback","useRequestAnimationFrame","Set","add","renderTask","transparency","optionalContentConfig","initializeGraphics","operatorListChanged","getOperatorList","opListReadCapability","opListTask","streamTextContent","includeMarkedContent","disableNormalization","TEXT_CONTENT_CHUNK_SIZE","sendWithStream","highWaterMark","size","textContent","items","getTextContent","xfa","XfaText","readableStream","pump","reader","read","done","assign","styles","getReader","getStructTree","_destroy","waitOn","values","force","completed","cancel","clear","resetStats","success","delayed","setTimeout","_startRenderPage","_renderPageChunk","operatorListChunk","annotationStorageMap","streamReader","RenderingCancelledException","delay","extraDelay","curCacheKey","curIntentState","stats","LoopbackPort","listeners","deferred","postMessage","transfer","event","structuredClone","call","addEventListener","removeEventListener","terminate","PDFWorkerUtil","isWorkerDisabled","fallbackWorkerSrc","fakeWorkerId","__non_webpack_require__","pdfjsFilePath","currentScript","replace","isSameOrigin","otherUrl","base","origin","other","createCDNWrapper","wrapper","createObjectURL","Blob","workerPorts","WeakMap","has","_port","_webWorker","_messageHandler","_initializeFromPort","_initialize","on","_mainThreadWorkerMessageHandler","workerSrc","Worker","terminateEarly","onWorkerError","_setupFakeWorker","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","pdfjsWorker","loader","mainWorkerMessageHandler","eval","loadScript","methodPromises","pageCache","pagePromises","factory","fontLoader","FontLoader","_params","destroyCapability","_passwordCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","cacheSimpleMethod","cachedPromise","AnnotationStorage","isOpList","annotationMap","PrintAnnotationStorage","serializable","getHash","page","hasOwnProperty","resetModified","terminated","cancelAllRequests","sink","getFullReader","evt","onPull","close","ArrayBuffer","enqueue","onCancel","ready","readyReason","headersCapability","fullReader","headersReady","isStreamingSupported","isRangeSupported","contentLength","rangeReader","getRangeReader","_numPages","htmlForXfa","exception","updatePassword","type","exportedData","exportedError","inspectFont","FontInspector","enabled","font","fontAdded","FontFaceObject","bind","finally","imageData","pageProxy","bitmap","width","height","fetch","filename","num","gen","results","OptionalContentConfig","metadata","Metadata","cleanupSuccessful","ensureObj","objId","RenderTask","onContinue","form","canvas","canvasInUse","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","StepperManager","stepper","init","nextBreakPoint","getNextBreakPoint","gfx","CanvasGraphics","beginDrawing","endDrawing","updateOperatorList","requestAnimationFrame","executeOperatorList","version","build","_editor","_murmurhash","modified","storage","onSetModified","onResetModified","onAnnotationEditor","getValue","defaultValue","getRawValue","remove","AnnotationEditor","setValue","entry","entries","setModified","_type","getAll","setAll","print","clone","serialized","serialize","hash","MurmurHash3_64","update","JSON","stringify","hexdigest","parent","_tools","boundFocusin","focusin","boundFocusout","focusout","hasBeenSelected","isEditing","isInEditMode","_uiManager","zIndex","_zIndex","_colorManager","ColorManager","parameters","div","uiManager","rawDims","pageWidth","pageHeight","pageX","pageY","pageRotation","viewParameters","pageDimensions","pageTranslation","parentDimensions","x","y","isAttachedToDOM","_defaultLineColor","getHexCode","addCommands","currentLayer","setInBackground","style","setInForeground","setParent","setSelected","target","relatedTarget","closest","preventDefault","isMultipleSelection","commitOrRemove","isEmpty","commit","addToAnnotationStorage","dragstart","getBoundingClientRect","startX","clientX","startY","clientY","dataTransfer","setData","effectAllowed","setAt","tx","ty","screenToPageTranslation","left","top","translate","parentRotation","parentScale","realScale","setDims","parentWidth","parentHeight","fixDims","widthPercent","endsWith","heightPercent","parseFloat","getInitialTranslation","createElement","setAttribute","className","bindEvents","pointerdown","button","ctrlKey","shiftKey","metaKey","toggleSelected","getRect","shiftX","shiftY","getRectInCurrentCoords","onceAdded","enableEditMode","disableEditMode","shouldGetKeyboardEvents","needsToBeRebuilt","rebuild","deserialize","editor","getNextId","select","classList","unselect","updateParams","disableEditing","enableEditing","propertiesToUpdate","contentDiv","setActiveEditor","element","names","opacityToHex","opacity","round","IdManager","getId","CommandManager","commands","locked","maxSize","position","cmd","undo","mustExec","overwriteIfSameType","keepUndo","next","splice","redo","hasSomethingToUndo","hasSomethingToRedo","KeyboardManager","callbacks","allKeys","isMacKey","split","at","altKey","exec","self","stopPropagation","_colorsMapping","_colors","colors","getColorValues","convert","color","rgb","getRGB","matchMedia","matches","RGB","every","AnnotationEditorUIManager","activeEditor","allEditors","allLayers","commandManager","currentPageIndex","editorTypes","editorsToRescale","eventBus","idManager","isEnabled","mode","selectedEditors","boundCopy","copy","boundCut","cut","boundPaste","paste","boundKeydown","keydown","boundOnEditingAction","onEditingAction","boundOnPageChanging","onPageChanging","boundOnScaleChanging","onScaleChanging","boundOnRotationChanging","onRotationChanging","previousStates","hasSelectedEditor","container","_keyboardManager","selectAll","unselectAll","_on","PixelsPerInch","PDF_TO_CSS_UNITS","removeKeyboardManager","_off","layer","focusMainContainer","focus","addShouldRescale","removeShouldRescale","pagesRotation","addKeyboardManager","addCopyPasteListeners","removeCopyPasteListeners","hasSelection","editors","clipboardData","parse","isArray","newEditors","deserializedEditor","addEditorToLayer","selectEditors","getActive","dispatchUpdateStates","hasChanged","some","dispatch","dispatchUpdateUI","setEditingState","registerEditorTypes","types","editorType","defaultPropertiesToUpdate","addLayer","enable","disable","removeLayer","updateMode","disableAll","enableAll","updateToolbar","updateDefaultParams","getEditors","getEditor","addEditor","removeEditor","addOrRebuild","ed","isSelected","isActive","getMode","_base_factory","SVG_NS","AnnotationPrefix","CSS","PDF","BaseFilterFactory","_cache","_defs","hcmFilter","hcmKey","hcmUrl","cache","defs","visibility","contain","svg","createElementNS","append","body","appendFeFunc","feComponentTransfer","func","table","feFunc","addFilter","maps","tableR","tableG","tableB","mapR","mapG","mapB","bufferR","bufferG","bufferB","filter","addHCMFilter","fgColor","bgColor","getComputedStyle","getPropertyValue","fgRGB","bgRGB","feColorMatrix","getSteps","start","arr","keepHCM","parentNode","BaseCanvasFactory","_document","_createCanvas","fetchData","asTypedArray","response","ok","statusText","arrayBuffer","text","request","XMLHttpRequest","open","responseType","onreadystatechange","readyState","DONE","responseText","BaseCMapReaderFactory","_fetchData","compressionType","cMapData","BaseStandardFontDataFactory","DOMSVGFactory","BaseSVGFactory","_createSVG","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","trim","substring","toLowerCase","isPdfFile","test","getFilenameFromUrl","onlyStripPath","lastIndexOf","getPdfFilenameFromUrl","defaultFilename","reURI","reFilename","splitURI","suggestedFilename","started","times","now","outBuf","longest","padEnd","removeScriptElement","script","onload","onerror","head","documentElement","pdfDateStringRegex","PDFDateString","toDateObject","input","RegExp","year","parseInt","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","UTC","getXfaPageViewport","xfaPage","attributes","colorRGB","span","computedColor","getCurrentTransform","ctx","f","getTransform","getCurrentTransformInverse","invertSelf","setLayerDimensions","mustFlip","mustRotate","widthStr","heightStr","context","getContext","reset","canvasAndContext","skipDimensions","SEED","MASK_HIGH","MASK_LOW","seed","h1","h2","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","systemFonts","nativeFontFaces","loadingRequests","loadTestFontId","addNativeFontFace","nativeFontFace","fonts","removeNativeFontFace","insertRule","rule","getElementsByTagName","styleSheet","sheet","cssRules","loadSystemFont","loadedName","isFontLoadingAPISupported","fontFace","FontFace","load","baseFontName","attached","missingFile","systemFontInfo","createNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","hasFonts","supported","userAgent","completeRequest","otherRequest","shift","_loadTestFont","testFont","atob","int32","offset","spliceString","s","insert","chunk1","chunk2","called","isFontReady","fillText","getImageData","COMMENT_OFFSET","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","btoa","fontFamily","translatedData","compiledGlyphs","_inspectFont","cssFontInfo","css","weight","fontWeight","italicAngle","mimetype","getPathGenerator","character","cmds","jsBuf","current","args","process","versions","nw","electron","_pattern_helper","_image_utils","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","EXECUTION_TIME","EXECUTION_STEPS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","mirrorContextOperations","destCtx","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","setTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","bezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","beginPath","ctxSave","ctxRestore","ctxTranslate","ctxScale","ctxTransform","ctxSetTransform","ctxResetTransform","ctxRotate","angle","cp1x","cp1y","cp2x","cp2y","CachedCanvases","getCanvas","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","sign","drawImage","scaleX","hypot","scaleY","compileType3Glyph","imgData","POINT_TO_PROCESS_LIMIT","POINT_TYPES","width1","points","j0","lineSize","pos","elem","mask","count","sum","steps","Int32Array","path","Path2D","p0","step","pp","drawOutline","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","fillColor","strokeColor","patternFill","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","startNewPathAndClipBox","clipBox","setCurrentPoint","updatePathMinMax","minX","minY","maxX","maxY","updateRectMinMax","updateScalingPathMinMax","updateCurvePathMinMax","box","getPathBoundingBox","pathType","PathType","xStrokePad","yStrokePad","updateClipFromPath","isEmptyClip","Infinity","getClippedPathBoundingBox","putBinaryImageData","ImageData","putImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","createImageData","srcPos","destPos","dest","thisChunkHeight","elemsInThisChunk","kind","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","srcDiff","k","kEnd","kEndUnrolled","srcByte","putBinaryImageMask","convertBlackAndWhiteToRGBA","nonBlackColor","copyCtxState","sourceCtx","properties","property","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","strokeStyle","fillStyle","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","composeSMaskBackdrop","r0","g0","b0","alpha","alpha_","composeSMaskAlpha","maskData","layerData","transferMap","composeSMaskLuminosity","genericComposeSMask","maskCtx","layerCtx","subtype","backdrop","layerOffsetX","layerOffsetY","maskOffsetX","maskOffsetY","hasBackdrop","composeFn","PIXELS_TO_PROCESS","chunkSize","ceil","row","chunkHeight","composeSMask","smask","layerBox","layerWidth","layerHeight","getImageSmoothingEnabled","interpolate","fround","actualScale","devicePixelRatio","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","canvasCtx","markedContentStack","stateStack","pendingClip","pendingEOFill","res","xobjs","groupStack","processingType3","baseTransform","baseTransformStack","groupLevel","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","cachedCanvases","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","fallback","savedFillStyle","fillRect","transparentCanvas","compositeCtx","executionStartIdx","continueCallback","argsArrayLen","chunkOperations","endTime","fnId","breakIt","depObjId","objsPool","restoreInitialState","inSMaskMode","HTMLCanvasElement","drawFilter","hcmFilterId","foreground","savedFilter","_scaleImage","img","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","tmpCanvas","tmpCtx","newWidth","newHeight","floor","clearRect","_createMaskCanvas","isPatternFill","currentTransform","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","cord1","cord2","drawnWidth","drawnHeight","fillCanvas","fillCtx","imageSmoothingEnabled","inverse","getPattern","limit","dashArray","dashPhase","flatness","states","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","compose","dirtyBox","old","pop","ops","isScalingMatrix","minMaxForBezier","xw","yh","consumePath","rescaleAndStroke","needRestore","paths","pendingTextPaths","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","pattern","getSinglePixelWidth","isInvalidPDFjsFont","chars","glyph","unicode","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","remeasure","measuredWidth","measureText","characterScaleX","isInFont","scaledAccentX","scaledAccentY","charWidth","isTextInvisible","spacingLength","charProcOperatorList","operatorListId","transformed","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","IR","canvasGraphicsFactory","createCanvasGraphics","TilingPattern","_getPattern","matrix","getShadingPattern","SHADING","inv","bl","br","ul","ur","bbox","group","currentCtx","isolated","knockout","canvasBounds","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","canvasWidth","canvasHeight","annotationCanvas","savedCtx","compiled","skewX","skewY","positions","trans","images","image","w","h","applyTransferMapsToCanvas","applyTransferMapsToBitmap","imgToPaint","HTMLElement","tag","visible","isVisible","isContentVisible","absDet","normX","normY","getScaleForStroking","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","op","applyBoundingBox","region","BaseShadingPattern","RadialAxialShadingPattern","_bbox","_colorStops","_p0","_p1","_r0","_r1","_createGradient","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","ownerBBox","createPattern","domMatrix","DOMMatrix","drawTriangle","c1","c2","c3","coords","rowSize","tmp","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","_coords","_figures","_bounds","_background","_createMeshCanvas","combinedScale","backgroundColor","EXPECTED_SCALE","MAX_PATTERN_SIZE","BORDER_SIZE","boundsWidth","boundsHeight","paddedWidth","paddedHeight","matrixScale","temporaryPatternCanvas","DummyShadingPattern","PaintType","COLORED","UNCOLORED","xstep","ystep","paintType","tilingType","createPatternCanvas","curMatrixScale","dimx","getSizeAndScale","dimy","graphics","setFillAndStrokeStyleToContext","adjustedX0","adjustedY0","adjustedX1","adjustedY1","clipBbox","realOutputSize","bboxWidth","bboxHeight","cssColor","convertToRGBA","convertRGBToRGBA","inverseDecode","zeroMapping","oneMapping","widthInSource","widthRemainder","len32","src32","s1","s2","s3","jj","grayToRGBA","CallbackKind","UNKNOWN","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","stream","processStreamMessage","action","cbSourceName","cbTargetName","result","createStreamSink","actionName","handler","ah","transfers","queueingStrategy","ReadableStream","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","streamSink","isCancelled","lastDesiredSize","sinkCapability","streamController","deleteStreamController","allSettled","metadataMap","parsedData","rawData","getRaw","INTERNAL","Symbol","OptionalContentGroup","_setVisible","internal","cachedGetHash","groups","initialHash","order","creator","baseState","off","evaluateVisibilityExpression","array","operator","state","expression","policy","ids","setVisibility","hasInitialVisibility","getOrder","getGroups","getGroup","pdfDataRangeTransport","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","_onReceiveData","_onProgress","_onProgressiveDone","_enqueue","found","_begin","_progressiveDataLength","_loaded","_removeRangeReader","indexOf","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","_stream","_done","_filename","_requests","_headersReady","requestCapability","_end","_queuedChunk","requestsCapability","output","walk","node","shouldBuildText","child","fs","readFile","Canvas","createCanvas","_network_utils","http","https","fileUriRegex","parseUrl","sourceUrl","parsedUrl","host","isHttp","isFsUrl","_rangeRequestReaders","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_url","_storedError","_disableRange","_rangeChunkSize","_readableStream","_readCapability","_headersCapability","_error","_setReadableStream","BaseRangeReader","createRequestOptions","headers","auth","hostname","method","handleResponse","statusCode","getResponseHeader","allowRangeRequests","suggestedLength","validateRangeRequestCapabilities","extractFilenameFromHeader","_request","_httpHeaders","Range","lstat","stat","createReadStream","_content_disposition","returnValues","contentEncoding","contentDisposition","getFilenameFromContentDispositionHeader","createResponseStatusError","validateResponseStatus","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","contentDispositionStr","iter","quot","part","parts","quotindex","extvalue","encodingend","langvalue","charset","hex","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","getArrayBuffer","xhr","NetworkManager","currXhrId","pendingRequests","requestRange","requestFull","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","ok_response_on_range_request","rangeHeader","getRequestXhr","isPendingRequest","abortRequest","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_onHeadersReceived","_onDone","_onError","_fullRequestId","_headersReceivedCapability","_cachedChunks","fullRequestXhrId","fullRequestXhr","lengthComputable","_requestId","_close","createFetchOptions","abortController","signal","credentials","redirect","createHeaders","Headers","PDFFetchStreamReader","PDFFetchStreamRangeReader","_reader","_withCredentials","_abortController","AbortController","_headers","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","DEFAULT_FONT_ASCENT","ascentCache","getCtx","getAscent","cachedAscent","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","pixels","appendText","geom","textDiv","textDivProperties","hasText","hasEOL","_textDivs","_transform","atan2","fontName","fontHeight","fontAscent","_isOffscreenCanvasSupported","sin","cos","scaleFactorStr","divStyle","_container","_rootContainer","_pageWidth","toFixed","_pageHeight","dir","_fontInspectorEnabled","dataset","shouldScaleText","absScaleX","absScaleY","_textDivProperties","_isReadableStream","_layoutText","layout","prevFontSize","prevFontFamily","_canceled","textDivs","textDivsLength","TextLayerRenderTask","textContentSource","textContentItemsStr","_textContentSource","_textContentItemsStr","_layoutTextParams","_processItems","styleCache","item","_render","renderTextLayer","textContentStream","scaleFactor","updateTextLayer","mustRescale","_freetext","_ink","AnnotationEditorLayer","accessibilityManager","allowClick","boundPointerup","pointerup","boundPointerdown","hadPointerDown","isCleaningUp","_initialized","FreeTextEditor","initialize","l10n","InkEditor","addInkEditorIfNeeded","disableClick","enableClick","toggle","hidden","isCommitting","createAndAddNewEditor","pointerEvents","currentActive","attach","detach","removePointerInTextLayer","display","activeElement","changeParent","moveEditorInDOM","moveElementInDOM","addANewEditor","addUndoableEditor","createNewEditor","annotationType","drop","dropEffect","endX","endY","dragover","boundEditorDivBlur","editorDivBlur","boundEditorDivFocus","editorDivFocus","boundEditorDivInput","editorDivInput","boundEditorDivKeydown","editorDivKeydown","content","editorDivId","hasAlreadyBeenCommitted","_freeTextDefaultContent","_l10nPromise","_internalPadding","_defaultColor","_defaultFontSize","updateFontSize","updateColor","setFontsize","editorDiv","setEditorDimensions","savedFontsize","savedColor","overlayDiv","contentEditable","draggable","removeAttribute","preventScroll","innerText","extractText","divs","savedDisplay","trimEnd","dblclick","baseX","baseY","line","createTextNode","padding","RESIZER_SIZE","aspectRatio","baseHeight","baseWidth","boundCanvasContextMenu","canvasContextMenu","boundCanvasPointermove","canvasPointermove","boundCanvasPointerleave","canvasPointerleave","boundCanvasPointerup","canvasPointerup","boundCanvasPointerdown","canvasPointerdown","currentPath2D","hasSomethingToDraw","isCanvasInitialized","observer","realWidth","realHeight","requestFrameCallback","_defaultOpacity","_defaultThickness","thickness","bezierPath2D","allRawPaths","currentPath","translationX","translationY","updateThickness","updateOpacity","savedThickness","fitToContent","redraw","savedOpacity","createObserver","setCanvasDims","disconnect","setDimensions","getInitialBBox","setStroke","startDrawing","drawPoints","draw","lastX","lastY","path2D","makeBezierCurve","lastPoint","stopDrawing","bezier","generateBezierPoints","xy","lastPoints","xMin","xMax","yMin","yMax","prevX","prevY","bezierPoints","control1","control2","updateTransform","ResizeObserver","contentRect","observe","setMinDims","roundedWidth","roundedHeight","setScaleFactor","getPadding","scaleFactorW","scaleFactorH","buildPath2D","serializePaths","NUMBER_OF_POINTS_ON_BEZIER_CURVE","p10","p11","p20","p21","p30","p31","p40","p41","extractPointsOnBezier","isAlmostFlat","q10","q11","q20","q21","q30","q31","tol","ax","ay","bx","by","getBbox","firstTime","prevTranslationX","prevTranslationY","unscaledPadding","minHeight","minWidth","_scripting_utils","_xfa_layer","DEFAULT_TAB_INDEX","GetElementsByNameSet","getRectDims","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","linkService","downloadManager","imageResourcesPath","renderForms","svgFactory","enableScripting","_fieldObjects","fieldObjects","_createContainer","quadrilaterals","_createQuadrilaterals","noRotate","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","setRotation","elementWidth","elementHeight","_commonActions","setColor","jsName","styleName","detail","ColorConverters","userName","title","readonly","required","_setRequired","textColor","_dispatchEventFromSandbox","actions","jsEvent","commonActions","_setDefaultPropertiesFromJS","storedData","eventProxy","quadPoints","savedRect","quadPoint","_createPopup","trigger","popupElement","PopupElement","titleObj","modificationDate","contentsObj","richText","hideWrapper","popup","_renderQuadrilaterals","quadrilateral","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","querySelector","getElementsByName","getAttribute","isTooltipOnly","link","isBound","addLinkAttributes","newWindow","_bindNamedAction","attachment","_bindAttachment","setOCGState","bindSetOCGState","_bindLink","Action","_bindJSAction","resetForm","_bindResetFormAction","index","linkElement","cloneNode","setInternalLink","destination","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","openOrDownloadData","executeSetOCGState","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","dispatchEvent","Event","hasPopup","alt","l10nId","l10nArgs","alternativeText","showElementAndHideCanvas","previousSibling","nodeName","_getKeyModifier","_setEventListener","baseName","eventName","valueGetter","modifier","_setEventListeners","getter","_setBackgroundColor","_setTextStyle","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","computedFontSize","roundToOneDecimal","multiLine","numberOfLines","lineHeight","textAlignment","textAlign","isRequired","hasAppearance","fieldValue","setPropertyOnSiblings","keyInStorage","maxLen","charLimit","fieldFormattedValues","formattedValue","comb","elementData","userValue","lastCommittedValue","commitKey","doNotScroll","overflowY","overflowX","disabled","readOnly","tabIndex","maxLength","defaultFieldValue","blurListener","scrollLeft","selRange","setSelectionRange","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","Keystroke","inputType","change","fieldWidth","combWidth","letterSpacing","verticalAlign","checked","checkbox","curChecked","buttonValue","radio","pdfButtonValue","lastChild","selectElement","addAnEmptyEntry","combo","multiSelect","multiple","option","selected","optionElement","displayValue","removeEmptyEntry","noneOptionElement","prepend","isExport","selectedIndex","selectedValues","getItems","multipleSelection","findIndex","selectChild","before","indices","editable","changeEx","keyDown","IGNORE_TYPES","parentType","parentElements","querySelectorAll","parentId","from","parentRect","popupLeft","popupTop","pinned","BACKGROUND_ENLIGHT","hideElement","dateObject","toLocaleDateString","toLocaleTimeString","XfaLayer","xfaHtml","html","contents","_formatContents","_toggle","_show","_hide","lines","pin","unpin","lineSpan","lineCoordinates","square","circle","containerClassName","svgElementName","coordinate","vertices","polyline","inkList","inkLists","file","_download","AnnotationLayer","appendElement","contentElement","firstChild","annotations","elementParams","noHTML","rendered","renderedElement","setAnnotationCanvasMap","replaceWith","makeColorComp","CMYK_G","G_CMYK","G_RGB","G_HTML","G","RGB_G","RGB_HTML","R","B","T_HTML","CMYK_RGB","CMYK_HTML","components","RGB_CMYK","setupStorage","xfaOn","xfaOff","setAttributes","isHTMLAnchorElement","HTMLAnchorElement","dataId","root","rootHtml","stack","rootDiv","childHtml","xmlns","el","SVGGraphics","SVG_DEFAULTS","fontStyle","XML_NS","XLINK_NS","contentType","forceDataSchema","digits","b1","b2","b3","d1","d2","d3","d4","convertImgDataToPng","PNG_HEADER","CHUNK_WRAPPER_SIZE","crcTable","crc32","crc","writePngChunk","len","adler32","deflateSync","literals","deflateSyncUncompressed","maxBlockLength","deflateBlocks","idat","pi","adler","encode","isMask","bitDepth","colorType","offsetLiterals","offsetBytes","ihdr","pngLength","SVGExtraState","dependencies","activeClipUrl","clipGroup","maskId","opListToTree","opList","opTree","opListElement","fn","pf","pm","acos","clipCount","maskCount","shadingCount","transformMatrix","transformStack","extraStack","embedFonts","embeddedFonts","cssStyle","_operatorIdMapping","tgrp","executeOpTree","loadDependencies","getSVG","svgElement","convertOpList","operatorIdMapping","opTreeElement","lineMatrix","xcoords","ycoords","tspan","setAttributeNS","txtElement","txtgrp","lineWidthScale","_setStrokeAttributes","_ensureTransformGroup","addFontStyle","hasChildNodes","setStrokeAlpha","setFillAlpha","_makeColorN_Pattern","_makeShadingPattern","_makeTilingPattern","tilingId","tx0","ty0","tx1","ty1","xscale","yscale","txstep","tystep","tiling","childNodes","shadingId","colorStops","gradient","point0","point1","focalPoint","circlePoint","focalRadius","circleRadius","stop","getAttributeNS","clipId","clipPath","clipElement","prev","imgSrc","cliprect","imgEl","definitions","rootGroup","_ensureClipGroup","_api","_text_layer","_annotation_editor_layer","_annotation_layer","_svg","pdfjsVersion","pdfjsBuild"],"sourceRoot":""}
\No newline at end of file