@turinhub/atomix-common-ui 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BYKrRClM.js","sources":["../node_modules/.pnpm/pdfjs-dist@4.8.69/node_modules/pdfjs-dist/build/pdf.mjs","../node_modules/.pnpm/make-event-props@1.6.2/node_modules/make-event-props/dist/esm/index.js","../node_modules/.pnpm/make-cancellable-promise@1.3.2/node_modules/make-cancellable-promise/dist/esm/index.js","../node_modules/.pnpm/tiny-invariant@1.3.3/node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/.pnpm/warning@4.0.3/node_modules/warning/warning.js","../node_modules/.pnpm/dequal@2.0.3/node_modules/dequal/dist/index.mjs","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/DocumentContext.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/Message.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/LinkService.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/PasswordResponses.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/shared/utils.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/shared/hooks/useResolver.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/Document.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/OutlineContext.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/Ref.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/shared/hooks/useCachedValue.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/shared/hooks/useDocumentContext.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/shared/hooks/useOutlineContext.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/OutlineItem.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/Outline.js","../node_modules/.pnpm/merge-refs@1.3.0_@types+react@19.2.14/node_modules/merge-refs/dist/esm/index.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/PageContext.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/shared/constants.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/shared/structTreeUtils.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/StructTreeItem.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/shared/hooks/usePageContext.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/StructTree.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/Page/Canvas.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/Page/TextLayer.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/Page/AnnotationLayer.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/Page.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/Thumbnail.js","../node_modules/.pnpm/react-pdf@9.2.1_@types+react@19.2.14_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-pdf/dist/esm/index.js"],"sourcesContent":["/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/******/ // The require scope\n/******/ var __webpack_require__ = {};\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__webpack_require__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = globalThis.pdfjsLib = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n AbortException: () => (/* reexport */ AbortException),\n AnnotationEditorLayer: () => (/* reexport */ AnnotationEditorLayer),\n AnnotationEditorParamsType: () => (/* reexport */ AnnotationEditorParamsType),\n AnnotationEditorType: () => (/* reexport */ AnnotationEditorType),\n AnnotationEditorUIManager: () => (/* reexport */ AnnotationEditorUIManager),\n AnnotationLayer: () => (/* reexport */ AnnotationLayer),\n AnnotationMode: () => (/* reexport */ AnnotationMode),\n ColorPicker: () => (/* reexport */ ColorPicker),\n DOMSVGFactory: () => (/* reexport */ DOMSVGFactory),\n DrawLayer: () => (/* reexport */ DrawLayer),\n FeatureTest: () => (/* reexport */ util_FeatureTest),\n GlobalWorkerOptions: () => (/* reexport */ GlobalWorkerOptions),\n ImageKind: () => (/* reexport */ util_ImageKind),\n InvalidPDFException: () => (/* reexport */ InvalidPDFException),\n MissingPDFException: () => (/* reexport */ MissingPDFException),\n OPS: () => (/* reexport */ OPS),\n OutputScale: () => (/* reexport */ OutputScale),\n PDFDataRangeTransport: () => (/* reexport */ PDFDataRangeTransport),\n PDFDateString: () => (/* reexport */ PDFDateString),\n PDFWorker: () => (/* reexport */ PDFWorker),\n PasswordResponses: () => (/* reexport */ PasswordResponses),\n PermissionFlag: () => (/* reexport */ PermissionFlag),\n PixelsPerInch: () => (/* reexport */ PixelsPerInch),\n RenderingCancelledException: () => (/* reexport */ RenderingCancelledException),\n TextLayer: () => (/* reexport */ TextLayer),\n UnexpectedResponseException: () => (/* reexport */ UnexpectedResponseException),\n Util: () => (/* reexport */ Util),\n VerbosityLevel: () => (/* reexport */ VerbosityLevel),\n XfaLayer: () => (/* reexport */ XfaLayer),\n build: () => (/* reexport */ build),\n createValidAbsoluteUrl: () => (/* reexport */ createValidAbsoluteUrl),\n fetchData: () => (/* reexport */ fetchData),\n getDocument: () => (/* reexport */ getDocument),\n getFilenameFromUrl: () => (/* reexport */ getFilenameFromUrl),\n getPdfFilenameFromUrl: () => (/* reexport */ getPdfFilenameFromUrl),\n getXfaPageViewport: () => (/* reexport */ getXfaPageViewport),\n isDataScheme: () => (/* reexport */ isDataScheme),\n isPdfFile: () => (/* reexport */ isPdfFile),\n noContextMenu: () => (/* reexport */ noContextMenu),\n normalizeUnicode: () => (/* reexport */ normalizeUnicode),\n setLayerDimensions: () => (/* reexport */ setLayerDimensions),\n shadow: () => (/* reexport */ shadow),\n version: () => (/* reexport */ version)\n});\n\n;// ./src/shared/util.js\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6;\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n IS_EDITING: 0x80,\n OPLIST: 0x100\n};\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_DEFAULT_COLOR: 32,\n HIGHLIGHT_THICKNESS: 33,\n HIGHLIGHT_FREE: 34,\n HIGHLIGHT_SHOW_ALL: 35\n};\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nconst util_ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n setStrokeTransparent: 92,\n setFillTransparent: 93\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch {}\n return null;\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch {\n return false;\n }\n}\nclass util_FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get platform() {\n if (typeof navigator !== \"undefined\" && typeof navigator?.platform === \"string\") {\n return shadow(this, \"platform\", {\n isMac: navigator.platform.includes(\"Mac\"),\n isWindows: navigator.platform.includes(\"Win\"),\n isFirefox: typeof navigator?.userAgent === \"string\" && navigator.userAgent.includes(\"Firefox\")\n });\n }\n return shadow(this, \"platform\", {\n isMac: false,\n isWindows: false,\n isFirefox: false\n });\n }\n static get isCSSRoundSupported() {\n return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[0];\n minMax[2] *= transform[0];\n if (transform[3] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n if (transform[1] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[1];\n minMax[3] *= transform[1];\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[2];\n minMax[2] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[5];\n minMax[2] += transform[4];\n minMax[3] += transform[5];\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = this.applyTransform(r, m);\n const p2 = this.applyTransform(r.slice(2, 4), m);\n const p3 = this.applyTransform([r[0], r[3]], m);\n const p4 = this.applyTransform([r[2], r[1]], m);\n return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n if (minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n } else {\n minMax = [Math.min(x0, x3), Math.min(y0, y3), Math.max(x0, x3), Math.max(y0, y3)];\n }\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n return minMax;\n }\n}\nconst PDFStringTranslateTable = (/* unused pure expression or super */ null && ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]));\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (!decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const charCode = str.charCodeAt(i);\n if (charCode === 0x1b) {\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction getModificationDate(date = new Date()) {\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto?.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n if (typeof crypto !== \"undefined\" && typeof crypto?.getRandomValues === \"function\") {\n crypto.getRandomValues(buf);\n } else {\n for (let i = 0; i < 32; i++) {\n buf[i] = Math.floor(Math.random() * 255);\n }\n }\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nconst FontRenderOps = {\n BEZIER_CURVE_TO: 0,\n MOVE_TO: 1,\n LINE_TO: 2,\n QUADRATIC_CURVE_TO: 3,\n RESTORE: 4,\n SAVE: 5,\n SCALE: 6,\n TRANSFORM: 7,\n TRANSLATE: 8\n};\nfunction toHexUtil(arr) {\n if (Uint8Array.prototype.toHex) {\n return arr.toHex();\n }\n return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\nfunction toBase64Util(arr) {\n if (Uint8Array.prototype.toBase64) {\n return arr.toBase64();\n }\n return btoa(bytesToString(arr));\n}\nfunction fromBase64Util(str) {\n if (Uint8Array.fromBase64) {\n return Uint8Array.fromBase64(str);\n }\n return stringToBytes(atob(str));\n}\n\n;// ./src/display/display_utils.js\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nasync function fetchData(url, type = \"text\") {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = type;\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n switch (type) {\n case \"arraybuffer\":\n case \"blob\":\n case \"json\":\n resolve(request.response);\n return;\n }\n resolve(request.responseText);\n return;\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass PageViewport {\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const {\n viewBox\n } = this;\n return shadow(this, \"rawDims\", {\n pageWidth: viewBox[2] - viewBox[0],\n pageHeight: viewBox[3] - viewBox[1],\n pageX: viewBox[0],\n pageY: viewBox[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n convertToViewportRectangle(rect) {\n const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n [url] = url.split(/[#?]/, 1);\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n try {\n suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n } catch {}\n }\n }\n return suggestedFilename || defaultFilename;\n}\nclass StatTimer {\n started = Object.create(null);\n times = [];\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n toString() {\n const outBuf = [];\n let longest = 0;\n for (const {\n name\n } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const {\n name,\n start,\n end\n } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const {\n protocol\n } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n return protocol === \"http:\" || protocol === \"https:\";\n } catch {\n return false;\n }\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nclass PDFDateString {\n static #regex;\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n this.#regex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = this.#regex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n scale,\n rotation\n });\n}\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n }\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const useRound = util_FeatureTest.isCSSRoundSupported;\n const w = `var(--scale-factor) * ${pageWidth}px`,\n h = `var(--scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x, 1px))` : `calc(${w})`,\n heightStr = useRound ? `round(down, ${h}, var(--scale-round-y, 1px))` : `calc(${h})`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\nclass OutputScale {\n constructor() {\n const pixelRatio = window.devicePixelRatio || 1;\n this.sx = pixelRatio;\n this.sy = pixelRatio;\n }\n get scaled() {\n return this.sx !== 1 || this.sy !== 1;\n }\n get symmetric() {\n return this.sx === this.sy;\n }\n}\n\n;// ./src/display/editor/toolbar.js\n\nclass EditorToolbar {\n #toolbar = null;\n #colorPicker = null;\n #editor;\n #buttons = null;\n #altText = null;\n static #l10nRemove = null;\n constructor(editor) {\n this.#editor = editor;\n EditorToolbar.#l10nRemove ||= Object.freeze({\n freetext: \"pdfjs-editor-remove-freetext-button\",\n highlight: \"pdfjs-editor-remove-highlight-button\",\n ink: \"pdfjs-editor-remove-ink-button\",\n stamp: \"pdfjs-editor-remove-stamp-button\"\n });\n }\n render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.classList.add(\"editToolbar\", \"hidden\");\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#editor._uiManager._signal;\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n const position = this.#editor.toolbarPosition;\n if (position) {\n const {\n style\n } = editToolbar;\n const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n }\n this.#addDeleteButton();\n return editToolbar;\n }\n get div() {\n return this.#toolbar;\n }\n static #pointerDown(e) {\n e.stopPropagation();\n }\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n e.preventDefault();\n e.stopPropagation();\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n e.preventDefault();\n e.stopPropagation();\n }\n #addListenersToElement(element) {\n const signal = this.#editor._uiManager._signal;\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n }\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n this.#colorPicker?.hideDropdown();\n }\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n this.#altText?.shown();\n }\n #addDeleteButton() {\n const {\n editorType,\n _uiManager\n } = this.#editor;\n const button = document.createElement(\"button\");\n button.className = \"delete\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n this.#addListenersToElement(button);\n button.addEventListener(\"click\", e => {\n _uiManager.delete();\n }, {\n signal: _uiManager._signal\n });\n this.#buttons.append(button);\n }\n get #divider() {\n const divider = document.createElement(\"div\");\n divider.className = \"divider\";\n return divider;\n }\n async addAltText(altText) {\n const button = await altText.render();\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n this.#altText = altText;\n }\n addColorPicker(colorPicker) {\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass HighlightToolbar {\n #buttons = null;\n #toolbar = null;\n #uiManager;\n constructor(uiManager) {\n this.#uiManager = uiManager;\n }\n #render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal: this.#uiManager._signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n this.#addHighlightButton();\n return editToolbar;\n }\n #getLastPoint(boxes, isLTR) {\n let lastY = 0;\n let lastX = 0;\n for (const box of boxes) {\n const y = box.y + box.height;\n if (y < lastY) {\n continue;\n }\n const x = box.x + (isLTR ? box.width : 0);\n if (y > lastY) {\n lastX = x;\n lastY = y;\n continue;\n }\n if (isLTR) {\n if (x > lastX) {\n lastX = x;\n }\n } else if (x < lastX) {\n lastX = x;\n }\n }\n return [isLTR ? 1 - lastX : lastX, lastY];\n }\n show(parent, boxes, isLTR) {\n const [x, y] = this.#getLastPoint(boxes, isLTR);\n const {\n style\n } = this.#toolbar ||= this.#render();\n parent.append(this.#toolbar);\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n }\n hide() {\n this.#toolbar.remove();\n }\n #addHighlightButton() {\n const button = document.createElement(\"button\");\n button.className = \"highlightButton\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", `pdfjs-highlight-floating-button1`);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", \"pdfjs-highlight-floating-button-label\");\n const signal = this.#uiManager._signal;\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n }, {\n signal\n });\n this.#buttons.append(button);\n }\n}\n\n;// ./src/display/editor/tools.js\n\n\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nfunction opacityToHex(opacity) {\n return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, \"0\");\n}\nclass IdManager {\n #id = 0;\n get id() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass ImageManager {\n #baseId = getUuid();\n #id = 0;\n #cache = null;\n static get _isSVGFittingCanvas() {\n const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n image = await fetchData(rawData, \"blob\");\n } else if (rawData instanceof File) {\n image = data.file = rawData;\n } else if (rawData instanceof Blob) {\n image = rawData;\n }\n if (image.type === \"image/svg+xml\") {\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = data.svgUrl = fileReader.result;\n imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n console.error(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromBlob(id, blobPromise) {\n const blob = await blobPromise;\n return this.#get(id, blob);\n }\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n if (data.blobPromise) {\n const {\n blobPromise\n } = data;\n delete data.blobPromise;\n return this.getFromBlob(data.id, blobPromise);\n }\n return this.getFromUrl(data.url);\n }\n getFromCanvas(id, canvas) {\n this.#cache ||= new Map();\n let data = this.#cache.get(id);\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(canvas, 0, 0);\n data = {\n bitmap: offscreen.transferToImageBitmap(),\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 1,\n isSvg: false\n };\n this.#cache.set(id, data);\n this.#cache.set(data.id, data);\n return data;\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n const {\n bitmap\n } = data;\n if (!data.url && !data.file) {\n const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n const ctx = canvas.getContext(\"bitmaprenderer\");\n ctx.transferFromImageBitmap(bitmap);\n data.blobPromise = canvas.convertToBlob();\n }\n bitmap.close?.();\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n post,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n post,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n const {\n undo,\n post\n } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n const {\n cmd,\n post\n } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac\n } = util_FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info = this.callbacks.get(this.#serialize(event));\n if (!info) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info;\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args, event)();\n if (!bubbles) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n}\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\nclass AnnotationEditorUIManager {\n #abortController = new AbortController();\n #activeEditor = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #copyPasteAC = null;\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n #enableHighlightFloatingButton = false;\n #enableUpdatedAddImage = false;\n #enableNewAltTextWhenAddingImage = false;\n #filterFactory = null;\n #focusMainContainerTimeoutId = null;\n #focusManagerAC = null;\n #highlightColors = null;\n #highlightWhenShiftUp = false;\n #highlightToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isWaiting = false;\n #keyboardManagerAC = null;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #pageColors = null;\n #showAllStates = null;\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false\n };\n #translation = [0, 0];\n #translationTimeoutId = null;\n #container = null;\n #viewer = null;\n #updateModeCapability = null;\n static TRANSLATE_SMALL = 1;\n static TRANSLATE_BIG = 10;\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n const textInputChecker = (_self, {\n target: el\n }) => {\n if (el instanceof HTMLInputElement) {\n const {\n type\n } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n checker: textInputChecker\n }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n checker: textInputChecker\n }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n checker: textInputChecker\n }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n checker: textInputChecker\n }], [[\"Enter\", \"mac+Enter\"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n }], [[\" \", \"mac+ \"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n }], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n constructor(container, viewer, altTextManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager) {\n const signal = this._signal = this.#abortController.signal;\n this.#container = container;\n this.#viewer = viewer;\n this.#altTextManager = altTextManager;\n this._eventBus = eventBus;\n eventBus._on(\"editingaction\", this.onEditingAction.bind(this), {\n signal\n });\n eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), {\n signal\n });\n eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), {\n signal\n });\n eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n signal\n });\n eventBus._on(\"setpreference\", this.onSetPreference.bind(this), {\n signal\n });\n eventBus._on(\"switchannotationeditorparams\", evt => this.updateParams(evt.type, evt.value), {\n signal\n });\n this.#addSelectionListener();\n this.#addDragAndDropListeners();\n this.#addKeyboardManager();\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.#highlightColors = highlightColors || null;\n this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n this.#enableUpdatedAddImage = enableUpdatedAddImage;\n this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n this.isShiftKeyDown = false;\n }\n destroy() {\n this.#updateModeCapability?.resolve();\n this.#updateModeCapability = null;\n this.#abortController?.abort();\n this.#abortController = null;\n this._signal = null;\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#highlightToolbar?.hide();\n this.#highlightToolbar = null;\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n }\n combinedSignal(ac) {\n return AbortSignal.any([this._signal, ac.signal]);\n }\n get mlManager() {\n return this.#mlManager;\n }\n get useNewAltTextFlow() {\n return this.#enableUpdatedAddImage;\n }\n get useNewAltTextWhenAddingImage() {\n return this.#enableNewAltTextWhenAddingImage;\n }\n get hcmFilter() {\n return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n }\n get direction() {\n return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n }\n get highlightColors() {\n return shadow(this, \"highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => pair.split(\"=\").map(x => x.trim()))) : null);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n }\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n editAltText(editor, firstTime = false) {\n this.#altTextManager?.editAltText(this, editor, firstTime);\n }\n switchToMode(mode, callback) {\n this._eventBus.on(\"annotationeditormodechanged\", callback, {\n once: true,\n signal: this._signal\n });\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode\n });\n }\n setPreference(name, value) {\n this._eventBus.dispatch(\"setpreference\", {\n source: this,\n name,\n value\n });\n }\n onSetPreference({\n name,\n value\n }) {\n switch (name) {\n case \"enableNewAltTextWhenAddingImage\":\n this.#enableNewAltTextWhenAddingImage = value;\n break;\n }\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n #getAnchorElementForSelection({\n anchorNode\n }) {\n return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n }\n #getLayerForTextLayer(textLayer) {\n const {\n currentLayer\n } = this;\n if (currentLayer.hasTextLayer(textLayer)) {\n return currentLayer;\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n return layer;\n }\n }\n return null;\n }\n highlightSelection(methodOfCreation = \"\") {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const text = selection.toString();\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n selection.empty();\n const layer = this.#getLayerForTextLayer(textLayer);\n const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n const callback = () => {\n layer?.createAndAddNewEditor({\n x: 0,\n y: 0\n }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text\n });\n if (isNoneMode) {\n this.showAllEditors(\"highlight\", true, true);\n }\n };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n #displayHighlightToolbar() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n this.#highlightToolbar ||= new HighlightToolbar(this);\n this.#highlightToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n const {\n anchorNode\n } = selection;\n if (anchorNode === this.#selectedTextNode) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n if (!textLayer) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = anchorNode;\n this.#dispatchUpdateStates({\n hasSelectedText: true\n });\n if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.showAllEditors(\"highlight\", true, true);\n }\n this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n activeLayer?.toggleDrawing();\n const ac = new AbortController();\n const signal = this.combinedSignal(ac);\n const pointerup = e => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n return;\n }\n ac.abort();\n activeLayer?.toggleDrawing(true);\n if (e.type === \"pointerup\") {\n this.#onSelectEnd(\"main_toolbar\");\n }\n };\n window.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n window.addEventListener(\"blur\", pointerup, {\n signal\n });\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayHighlightToolbar();\n }\n }\n #addSelectionListener() {\n document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n signal: this._signal\n });\n }\n #addFocusManager() {\n if (this.#focusManagerAC) {\n return;\n }\n this.#focusManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#focusManagerAC);\n window.addEventListener(\"focus\", this.focus.bind(this), {\n signal\n });\n window.addEventListener(\"blur\", this.blur.bind(this), {\n signal\n });\n }\n #removeFocusManager() {\n this.#focusManagerAC?.abort();\n this.#focusManagerAC = null;\n }\n blur() {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n if (!this.hasSelection) {\n return;\n }\n const {\n activeElement\n } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this._signal\n });\n lastActiveElement.focus();\n }\n #addKeyboardManager() {\n if (this.#keyboardManagerAC) {\n return;\n }\n this.#keyboardManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#keyboardManagerAC);\n window.addEventListener(\"keydown\", this.keydown.bind(this), {\n signal\n });\n window.addEventListener(\"keyup\", this.keyup.bind(this), {\n signal\n });\n }\n #removeKeyboardManager() {\n this.#keyboardManagerAC?.abort();\n this.#keyboardManagerAC = null;\n }\n #addCopyPasteListeners() {\n if (this.#copyPasteAC) {\n return;\n }\n this.#copyPasteAC = new AbortController();\n const signal = this.combinedSignal(this.#copyPasteAC);\n document.addEventListener(\"copy\", this.copy.bind(this), {\n signal\n });\n document.addEventListener(\"cut\", this.cut.bind(this), {\n signal\n });\n document.addEventListener(\"paste\", this.paste.bind(this), {\n signal\n });\n }\n #removeCopyPasteListeners() {\n this.#copyPasteAC?.abort();\n this.#copyPasteAC = null;\n }\n #addDragAndDropListeners() {\n const signal = this._signal;\n document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n signal\n });\n document.addEventListener(\"drop\", this.drop.bind(this), {\n signal\n });\n }\n addEditListeners() {\n this.#addKeyboardManager();\n this.#addCopyPasteListeners();\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n }\n dragOver(event) {\n for (const {\n type\n } of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(type)) {\n event.dataTransfer.dropEffect = \"copy\";\n event.preventDefault();\n return;\n }\n }\n }\n }\n drop(event) {\n for (const item of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n event.preventDefault();\n return;\n }\n }\n }\n }\n copy(event) {\n event.preventDefault();\n this.#activeEditor?.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n async paste(event) {\n event.preventDefault();\n const {\n clipboardData\n } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = await layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = true;\n }\n if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n keyup(event) {\n if (this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n onEditingAction({\n name\n }) {\n switch (name) {\n case \"undo\":\n case \"redo\":\n case \"delete\":\n case \"selectAll\":\n this[name]();\n break;\n case \"highlightSelection\":\n this.highlightSelection(\"context_menu\");\n break;\n }\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n }\n }\n }\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false\n });\n } else {\n this.#removeFocusManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.id;\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n async updateMode(mode, editId = null, isFromKeyboard = false) {\n if (this.#mode === mode) {\n return;\n }\n if (this.#updateModeCapability) {\n await this.#updateModeCapability.promise;\n if (!this.#updateModeCapability) {\n return;\n }\n }\n this.#updateModeCapability = Promise.withResolvers();\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n this.#updateModeCapability.resolve();\n return;\n }\n this.setEditingState(true);\n await this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (!editId) {\n if (isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n }\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.annotationElementId === editId) {\n this.setSelected(editor);\n editor.enterInEditMode();\n } else {\n editor.unselect();\n }\n }\n this.#updateModeCapability.resolve();\n }\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n updateToolbar(mode) {\n if (mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor();\n return;\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n this.#mainHighlightColorPicker?.updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n this._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data: {\n type: \"highlight\",\n action: \"toggle_visibility\"\n }\n }\n });\n (this.#showAllStates ||= new Map()).set(type, value);\n this.showAllEditors(\"highlight\", value);\n break;\n }\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n if (state !== visible) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n }\n }\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n async #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n const promises = [];\n for (const layer of this.#allLayers.values()) {\n promises.push(layer.enable());\n }\n await Promise.all(promises);\n for (const editor of this.#allEditors.values()) {\n editor.enable();\n }\n }\n }\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.disable();\n }\n }\n }\n getEditors(pageIndex) {\n const editors = [];\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n editors.push(editor);\n }\n }\n return editors;\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n if (editor.div.contains(document.activeElement)) {\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n }\n this.#focusMainContainerTimeoutId = setTimeout(() => {\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {}\n return ed;\n }\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n get isEnterHandled() {\n return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [...this.#selectedEditors];\n const cmd = () => {\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n }\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1000;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n }\n }\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1\n });\n }\n }\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n for (const [{\n x,\n y,\n pageIndex\n }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, {\n newX,\n newY,\n newPageIndex\n }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, {\n savedX,\n savedY,\n savedPageIndex\n }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true\n });\n return true;\n }\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n get isEditorHandlingKeyboard() {\n return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\n getSelectionBoxes(textLayer) {\n if (!textLayer) {\n return null;\n }\n const selection = document.getSelection();\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n return null;\n }\n }\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n let rotator;\n switch (textLayer.getAttribute(\"data-main-rotation\")) {\n case \"90\":\n rotator = (x, y, w, h) => ({\n x: (y - layerY) / parentHeight,\n y: 1 - (x + w - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n case \"180\":\n rotator = (x, y, w, h) => ({\n x: 1 - (x + w - layerX) / parentWidth,\n y: 1 - (y + h - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n case \"270\":\n rotator = (x, y, w, h) => ({\n x: 1 - (y + h - layerY) / parentHeight,\n y: (x - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n default:\n rotator = (x, y, w, h) => ({\n x: (x - layerX) / parentWidth,\n y: (y - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n }\n const boxes = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n for (const {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n boxes.push(rotator(x, y, width, height));\n }\n }\n return boxes.length === 0 ? null : boxes;\n }\n addChangedExistingAnnotation({\n annotationElementId,\n id\n }) {\n (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n }\n removeChangedExistingAnnotation({\n annotationElementId\n }) {\n this.#changedExistingAnnotations?.delete(annotationElementId);\n }\n renderAnnotationElement(annotation) {\n const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n if (!editorId) {\n return;\n }\n const editor = this.#annotationStorage.getRawValue(editorId);\n if (!editor) {\n return;\n }\n if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n return;\n }\n editor.renderAnnotationElement(annotation);\n }\n}\n\n;// ./src/display/editor/alt_text.js\n\nclass AltText {\n #altText = null;\n #altTextDecorative = false;\n #altTextButton = null;\n #altTextButtonLabel = null;\n #altTextTooltip = null;\n #altTextTooltipTimeout = null;\n #altTextWasFromKeyBoard = false;\n #badge = null;\n #editor = null;\n #guessedText = null;\n #textWithDisclaimer = null;\n #useNewAltTextFlow = false;\n static #l10nNewButton = null;\n static _l10n = null;\n constructor(editor) {\n this.#editor = editor;\n this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n AltText.#l10nNewButton ||= Object.freeze({\n added: \"pdfjs-editor-new-alt-text-added-button\",\n \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n missing: \"pdfjs-editor-new-alt-text-missing-button\",\n \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n review: \"pdfjs-editor-new-alt-text-to-review-button\",\n \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\"\n });\n }\n static initialize(l10n) {\n AltText._l10n ??= l10n;\n }\n async render() {\n const altText = this.#altTextButton = document.createElement(\"button\");\n altText.className = \"altText\";\n altText.tabIndex = \"0\";\n const label = this.#altTextButtonLabel = document.createElement(\"span\");\n altText.append(label);\n if (this.#useNewAltTextFlow) {\n altText.classList.add(\"new\");\n altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n label.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[\"missing-label\"]);\n } else {\n altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n }\n const signal = this.#editor._uiManager._signal;\n altText.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n this.#editor._uiManager.editAltText(this.#editor);\n if (this.#useNewAltTextFlow) {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n data: {\n label: this.#label\n }\n });\n }\n };\n altText.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n await this.#setState();\n return altText;\n }\n get #label() {\n return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n }\n finish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.focus({\n focusVisible: this.#altTextWasFromKeyBoard\n });\n this.#altTextWasFromKeyBoard = false;\n }\n isEmpty() {\n if (this.#useNewAltTextFlow) {\n return this.#altText === null;\n }\n return !this.#altText && !this.#altTextDecorative;\n }\n hasData() {\n if (this.#useNewAltTextFlow) {\n return this.#altText !== null || !!this.#guessedText;\n }\n return this.isEmpty();\n }\n get guessedText() {\n return this.#guessedText;\n }\n async setGuessedText(guessedText) {\n if (this.#altText !== null) {\n return;\n }\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = await AltText._l10n.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\", {\n generatedAltText: guessedText\n });\n this.#setState();\n }\n toggleAltTextBadge(visibility = false) {\n if (!this.#useNewAltTextFlow || this.#altText) {\n this.#badge?.remove();\n this.#badge = null;\n return;\n }\n if (!this.#badge) {\n const badge = this.#badge = document.createElement(\"div\");\n badge.className = \"noAltTextBadge\";\n this.#editor.div.append(badge);\n }\n this.#badge.classList.toggle(\"hidden\", !visibility);\n }\n serialize(isForCopying) {\n let altText = this.#altText;\n if (!isForCopying && this.#guessedText === altText) {\n altText = this.#textWithDisclaimer;\n }\n return {\n altText,\n decorative: this.#altTextDecorative,\n guessedText: this.#guessedText,\n textWithDisclaimer: this.#textWithDisclaimer\n };\n }\n get data() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative\n };\n }\n set data({\n altText,\n decorative,\n guessedText,\n textWithDisclaimer,\n cancel = false\n }) {\n if (guessedText) {\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = textWithDisclaimer;\n }\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n if (!cancel) {\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n }\n this.#setState();\n }\n toggle(enabled = false) {\n if (!this.#altTextButton) {\n return;\n }\n if (!enabled && this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextButton.disabled = !enabled;\n }\n shown() {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n data: {\n label: this.#label\n }\n });\n }\n destroy() {\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextButtonLabel = null;\n this.#altTextTooltip = null;\n this.#badge?.remove();\n this.#badge = null;\n }\n async #setState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (this.#useNewAltTextFlow) {\n button.classList.toggle(\"done\", !!this.#altText);\n button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n this.#altTextButtonLabel?.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[`${this.#label}-label`]);\n if (!this.#altText) {\n this.#altTextTooltip?.remove();\n return;\n }\n } else {\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\n }\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n const DELAY_TO_SHOW_TOOLTIP = 100;\n const signal = this.#editor._uiManager._signal;\n signal.addEventListener(\"abort\", () => {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }, {\n once: true\n });\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this.#editor._reportTelemetry({\n action: \"alt_text_tooltip\"\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n }, {\n signal\n });\n button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n }, {\n signal\n });\n }\n if (this.#altTextDecorative) {\n tooltip.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-decorative-tooltip\");\n } else {\n tooltip.removeAttribute(\"data-l10n-id\");\n tooltip.textContent = this.#altText;\n }\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n const element = this.#editor.getImageForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #disabled = false;\n #keepAspectRatio = false;\n #resizersDiv = null;\n #savedDimensions = null;\n #focusAC = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialPosition = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n _editToolbar = null;\n _initialOptions = Object.create(null);\n _initialData = null;\n _isVisible = true;\n _uiManager = null;\n _focusEventsAllowed = true;\n static _l10n = null;\n static _l10nResizer = null;\n #isDraggable = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _borderLineWidth = -1;\n static _colorManager = new ColorManager();\n static _zIndex = 1;\n static _telemetryTimeout = 1000;\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, {\n args: [-small, 0]\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n args: [-big, 0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], resize, {\n args: [small, 0]\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n args: [big, 0]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], resize, {\n args: [0, -small]\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n args: [0, -big]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], resize, {\n args: [0, small]\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n args: [0, big]\n }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n }\n constructor(parameters) {\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n static get _defaultLineColor() {\n return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager) {\n AnnotationEditor._l10n ??= l10n;\n AnnotationEditor._l10nResizer ||= Object.freeze({\n topLeft: \"pdfjs-editor-resizer-top-left\",\n topMiddle: \"pdfjs-editor-resizer-top-middle\",\n topRight: \"pdfjs-editor-resizer-top-right\",\n middleRight: \"pdfjs-editor-resizer-middle-right\",\n bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n middleLeft: \"pdfjs-editor-resizer-middle-left\"\n });\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n get isEnterHandled() {\n return true;\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= this.height * pageHeight / (pageWidth * 2);\n this.y += this.width * pageWidth / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += this.height * pageHeight / (pageWidth * 2);\n this.y -= this.width * pageWidth / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n this.#stopResizing();\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialPosition ||= [this.x, this.y];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n drag(tx, ty) {\n this.#initialPosition ||= [this.x, this.y];\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x,\n y\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n this.div.style.left = `${(100 * x).toFixed(2)}%`;\n this.div.style.top = `${(100 * y).toFixed(2)}%`;\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n get _hasBeenMoved() {\n return !!this.#initialPosition && (this.#initialPosition[0] !== this.x || this.#initialPosition[1] !== this.y);\n }\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n get _mustFixPosition() {\n return true;\n }\n fixAndSetPosition(rotation = this.rotation) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = Math.max(0, Math.min(pageWidth - width, x));\n y = Math.max(0, Math.min(pageHeight - height, y));\n break;\n case 90:\n x = Math.max(0, Math.min(pageWidth - height, x));\n y = Math.min(pageHeight, Math.max(width, y));\n break;\n case 180:\n x = Math.min(pageWidth, Math.max(width, x));\n y = Math.min(pageHeight, Math.max(height, y));\n break;\n case 270:\n x = Math.min(pageWidth, Math.max(height, x));\n y = Math.max(0, Math.min(pageHeight - width, y));\n break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = this.div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n return [pageWidth * parentScale, pageHeight * parentScale];\n }\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.div.style.width = `${(100 * width / parentWidth).toFixed(2)}%`;\n if (!this.#keepAspectRatio) {\n this.div.style.height = `${(100 * height / parentHeight).toFixed(2)}%`;\n }\n }\n fixDims() {\n const {\n style\n } = this.div;\n const {\n height,\n width\n } = style;\n const widthPercent = width.endsWith(\"%\");\n const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n if (widthPercent && heightPercent) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (!widthPercent) {\n style.width = `${(100 * parseFloat(width) / parentWidth).toFixed(2)}%`;\n }\n if (!this.#keepAspectRatio && !heightPercent) {\n style.height = `${(100 * parseFloat(height) / parentHeight).toFixed(2)}%`;\n }\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n const signal = this._uiManager._signal;\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n signal\n });\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#altText?.toggle(false);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n this.parent.togglePointerEvents(false);\n window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n passive: true,\n capture: true,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n ac.abort();\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n #addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight) {\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: () => {\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n },\n undo: () => {\n this.width = savedWidth;\n this.height = savedHeight;\n this.x = savedX;\n this.y = savedY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * savedWidth, parentHeight * savedHeight);\n this.fixAndSetPosition();\n },\n mustExec: true\n });\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const round = x => Math.round(x * 10000) / 10000;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = round(savedX + transfOppositePoint[0]);\n const oppositeY = round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let [deltaX, deltaY] = this.screenToPageTranslation(event.movementX, event.movementY);\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = Math.max(minWidth, Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))) / savedWidth;\n } else {\n ratioY = Math.max(minHeight, Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))) / savedHeight;\n }\n const newWidth = round(savedWidth * ratioX);\n const newHeight = round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n }\n altTextFinish() {\n this.#altText?.finish();\n }\n async addEditToolbar() {\n if (this._editToolbar || this.#isInEditMode) {\n return this._editToolbar;\n }\n this._editToolbar = new EditorToolbar(this);\n this.div.append(this._editToolbar.render());\n if (this.#altText) {\n await this._editToolbar.addAltText(this.#altText);\n }\n return this._editToolbar;\n }\n removeEditToolbar() {\n if (!this._editToolbar) {\n return;\n }\n this._editToolbar.remove();\n this._editToolbar = null;\n this.#altText?.destroy();\n }\n addContainer(container) {\n const editToolbarDiv = this._editToolbar?.div;\n if (editToolbarDiv) {\n editToolbarDiv.before(container);\n } else {\n this.div.append(container);\n }\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n async addAltTextButton() {\n if (this.#altText) {\n return;\n }\n AltText.initialize(AnnotationEditor._l10n);\n this.#altText = new AltText(this);\n if (this.#accessibilityData) {\n this.#altText.data = this.#accessibilityData;\n this.#accessibilityData = null;\n }\n await this.addEditToolbar();\n }\n get altTextData() {\n return this.#altText?.data;\n }\n set altTextData(data) {\n if (!this.#altText) {\n return;\n }\n this.#altText.data = data;\n }\n get guessedAltText() {\n return this.#altText?.guessedText;\n }\n async setGuessedAltText(text) {\n await this.#altText?.setGuessedText(text);\n }\n serializeAltText(isForCopying) {\n return this.#altText?.serialize(isForCopying);\n }\n hasAltText() {\n return !!this.#altText && !this.#altText.isEmpty();\n }\n hasAltTextData() {\n return this.#altText?.hasData() ?? false;\n }\n render() {\n this.div = document.createElement(\"div\");\n this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n this.div.className = this.name;\n this.div.setAttribute(\"id\", this.id);\n this.div.tabIndex = this.#disabled ? -1 : 0;\n if (!this._isVisible) {\n this.div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.#addFocusListeners();\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n this.div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n this.div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, this.div, [\"pointerdown\"]);\n return this.div;\n }\n pointerdown(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n this.#selectOnPointerEvent(event);\n }\n get isSelected() {\n return this._uiManager.isSelected(this);\n }\n #selectOnPointerEvent(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n #setUpDragSession(event) {\n const {\n isSelected\n } = this;\n this._uiManager.setUpDragSession();\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n if (isSelected) {\n this.div.classList.add(\"moving\");\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n const pointerMoveCallback = e => {\n const {\n clientX: x,\n clientY: y\n } = e;\n const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n };\n window.addEventListener(\"pointermove\", pointerMoveCallback, {\n passive: true,\n capture: true,\n signal\n });\n }\n const pointerUpCallback = () => {\n ac.abort();\n if (isSelected) {\n this.div.classList.remove(\"moving\");\n }\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(event);\n }\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n moveInDOM() {\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n }\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n onceAdded() {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n this.#isInEditMode = true;\n }\n disableEditMode() {\n this.#isInEditMode = false;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n #addFocusListeners() {\n if (this.#focusAC || !this.div) {\n return;\n }\n this.#focusAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#focusAC);\n this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n signal\n });\n this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n signal\n });\n }\n rebuild() {\n this.#addFocusListeners();\n }\n rotate(_angle) {}\n serializeDeleted() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n serialize(isForCopying = false, context = null) {\n unreachable(\"An editor must be serializable\");\n }\n static async deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n get hasBeenModified() {\n return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n }\n remove() {\n this.#focusAC?.abort();\n this.#focusAC = null;\n if (!this.isEmpty()) {\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n if (this.#telemetryTimeouts) {\n for (const timeout of this.#telemetryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.#telemetryTimeouts = null;\n }\n this.parent = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n bindEvents(this, this.div, [\"keydown\"]);\n }\n }\n get toolbarPosition() {\n return null;\n }\n keydown(event) {\n if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n const signal = this._uiManager._signal;\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown, {\n signal\n });\n div.addEventListener(\"blur\", boundResizerBlur, {\n signal\n });\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n signal\n });\n div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n if (nextFirstPosition !== firstPosition) {\n if (nextFirstPosition < firstPosition) {\n for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n this.#resizersDiv.append(this.#resizersDiv.firstChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\n }\n }\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstChild.focus({\n focusVisible: true\n });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n #resizerBlur(event) {\n if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n this.#stopResizing();\n }\n }\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n movementX: x,\n movementY: y\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n if (this.#savedDimensions) {\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n this.#savedDimensions = null;\n }\n }\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n select() {\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n if (!this._editToolbar) {\n this.addEditToolbar().then(() => {\n if (this.div?.classList.contains(\"selectedEditor\")) {\n this._editToolbar?.show();\n }\n });\n return;\n }\n this._editToolbar?.show();\n this.#altText?.toggleAltTextBadge(false);\n }\n unselect() {\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n this._uiManager.currentLayer.div.focus({\n preventScroll: true\n });\n }\n this._editToolbar?.hide();\n this.#altText?.toggleAltTextBadge(true);\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n enterInEditMode() {}\n getImageForAltText() {\n return null;\n }\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n setAspectRatio(width, height) {\n this.#keepAspectRatio = true;\n const aspectRatio = width / height;\n const {\n style\n } = this.div;\n style.aspectRatio = aspectRatio;\n style.height = \"auto\";\n }\n static get MIN_SIZE() {\n return 16;\n }\n static canCreateNewEmptyEditor() {\n return true;\n }\n get telemetryInitialData() {\n return {\n action: \"added\"\n };\n }\n get telemetryFinalData() {\n return null;\n }\n _reportTelemetry(data, mustWait = false) {\n if (mustWait) {\n this.#telemetryTimeouts ||= new Map();\n const {\n action\n } = data;\n let timeout = this.#telemetryTimeouts.get(action);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n this._reportTelemetry(data);\n this.#telemetryTimeouts.delete(action);\n if (this.#telemetryTimeouts.size === 0) {\n this.#telemetryTimeouts = null;\n }\n }, AnnotationEditor._telemetryTimeout);\n this.#telemetryTimeouts.set(action, timeout);\n return;\n }\n data.type ||= this.editorType;\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data\n }\n });\n }\n show(visible = this._isVisible) {\n this.div.classList.toggle(\"hidden\", !visible);\n this._isVisible = visible;\n }\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n this.#disabled = false;\n }\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n this.#disabled = true;\n }\n renderAnnotationElement(annotation) {\n let content = annotation.container.querySelector(\".annotationContent\");\n if (!content) {\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n annotation.container.prepend(content);\n } else if (content.nodeName === \"CANVAS\") {\n const canvas = content;\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n canvas.before(content);\n }\n return content;\n }\n resetAnnotationElement(annotation) {\n const {\n firstChild\n } = annotation.container;\n if (firstChild?.nodeName === \"DIV\" && firstChild.classList.contains(\"annotationContent\")) {\n firstChild.remove();\n }\n }\n}\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return this.serializeDeleted();\n }\n}\n\n;// ./src/shared/murmurhash3.js\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n;// ./src/display/annotation_storage.js\n\n\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined\n});\nclass AnnotationStorage {\n #modified = false;\n #modifiedIds = null;\n #storage = new Map();\n constructor() {\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n if (value instanceof AnnotationEditor && typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n getAll() {\n return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n }\n setAll(obj) {\n for (const [key, val] of Object.entries(obj)) {\n this.setValue(key, val);\n }\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new MurmurHash3_64(),\n transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n if (hasBitmap) {\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n return map.size > 0 ? {\n map,\n hash: hash.hexdigest(),\n transfer\n } : SerializableEmpty;\n }\n get editorStats() {\n let stats = null;\n const typeToEditor = new Map();\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n continue;\n }\n const editorStats = value.telemetryFinalData;\n if (!editorStats) {\n continue;\n }\n const {\n type\n } = editorStats;\n if (!typeToEditor.has(type)) {\n typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n }\n stats ||= Object.create(null);\n const map = stats[type] ||= new Map();\n for (const [key, val] of Object.entries(editorStats)) {\n if (key === \"type\") {\n continue;\n }\n let counters = map.get(key);\n if (!counters) {\n counters = new Map();\n map.set(key, counters);\n }\n const count = counters.get(val) ?? 0;\n counters.set(val, count + 1);\n }\n }\n for (const [type, editor] of typeToEditor) {\n stats[type] = editor.computeTelemetryFinalData(stats[type]);\n }\n return stats;\n }\n resetModifiedIds() {\n this.#modifiedIds = null;\n }\n get modifiedIds() {\n if (this.#modifiedIds) {\n return this.#modifiedIds;\n }\n const ids = [];\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor) || !value.annotationElementId || !value.serialize()) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash: ids.join(\",\")\n };\n }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n constructor(parent) {\n super();\n const {\n map,\n hash,\n transfer\n } = parent.serializable;\n const clone = structuredClone(map, transfer ? {\n transfer\n } : null);\n this.#serializable = {\n map: clone,\n hash,\n transfer\n };\n }\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n get modifiedIds() {\n return shadow(this, \"modifiedIds\", {\n ids: new Set(),\n hash: \"\"\n });\n }\n}\n\n;// ./src/display/font_loader.js\n\nclass FontLoader {\n #systemFonts = new Set();\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont({\n systemFontInfo: info,\n _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(!this.disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n _inspectFont?.(info);\n } catch {\n warn(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n let supported = false;\n if (isNodeJS) {\n supported = true;\n } else if (typeof navigator !== \"undefined\" && typeof navigator?.userAgent === \"string\" && /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)) {\n supported = true;\n }\n return shadow(this, \"isSyncFontLoadingSupported\", supported);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return shadow(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\n if (++called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nclass FontFaceObject {\n constructor(translatedData, {\n disableFontFace = false,\n inspectFont = null\n }) {\n this.compiledGlyphs = Object.create(null);\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.disableFontFace = disableFontFace === true;\n this._inspectFont = inspectFont;\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const url = `url(data:${this.mimetype};base64,${toBase64Util(this.data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n let cmds;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n if (!Array.isArray(cmds) || cmds.length === 0) {\n return this.compiledGlyphs[character] = function (c, size) {};\n }\n const commands = [];\n for (let i = 0, ii = cmds.length; i < ii;) {\n switch (cmds[i++]) {\n case FontRenderOps.BEZIER_CURVE_TO:\n {\n const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\n commands.push(ctx => ctx.bezierCurveTo(a, b, c, d, e, f));\n i += 6;\n }\n break;\n case FontRenderOps.MOVE_TO:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.moveTo(a, b));\n i += 2;\n }\n break;\n case FontRenderOps.LINE_TO:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.lineTo(a, b));\n i += 2;\n }\n break;\n case FontRenderOps.QUADRATIC_CURVE_TO:\n {\n const [a, b, c, d] = cmds.slice(i, i + 4);\n commands.push(ctx => ctx.quadraticCurveTo(a, b, c, d));\n i += 4;\n }\n break;\n case FontRenderOps.RESTORE:\n commands.push(ctx => ctx.restore());\n break;\n case FontRenderOps.SAVE:\n commands.push(ctx => ctx.save());\n break;\n case FontRenderOps.SCALE:\n assert(commands.length === 2, \"Scale command is only valid at the third position.\");\n break;\n case FontRenderOps.TRANSFORM:\n {\n const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\n commands.push(ctx => ctx.transform(a, b, c, d, e, f));\n i += 6;\n }\n break;\n case FontRenderOps.TRANSLATE:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.translate(a, b));\n i += 2;\n }\n break;\n }\n }\n return this.compiledGlyphs[character] = function glyphDrawer(ctx, size) {\n commands[0](ctx);\n commands[1](ctx);\n ctx.scale(size, -size);\n for (let i = 2, ii = commands.length; i < ii; i++) {\n commands[i](ctx);\n }\n };\n }\n}\n\n;// ./src/display/canvas_factory.js\n\nclass BaseCanvasFactory {\n #enableHWA = false;\n constructor({\n enableHWA = false\n }) {\n this.#enableHWA = enableHWA;\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\", {\n willReadFrequently: !this.#enableHWA\n })\n };\n }\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document,\n enableHWA = false\n }) {\n super({\n enableHWA\n });\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\n;// ./src/display/cmap_reader_factory.js\n\n\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = true\n }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\");\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n return this._fetch(url).then(cMapData => ({\n cMapData,\n isCompressed: this.isCompressed\n })).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n const data = await fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\");\n return data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data);\n }\n}\n\n;// ./src/display/filter_factory.js\n\n\nclass BaseFilterFactory {\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addAlphaFilter(map) {\n return \"none\";\n }\n addLuminosityFilter(map) {\n return \"none\";\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n destroy(keepHCM = false) {}\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n #baseUrl;\n #_cache;\n #_defs;\n #docId;\n #document;\n #_hcmCache;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n }) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #hcmCache() {\n return this.#_hcmCache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n #createTables(maps) {\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n const table = buffer.join(\",\");\n return [table, table, table];\n }\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n }\n #createUrl(id) {\n if (this.#baseUrl === undefined) {\n this.#baseUrl = \"\";\n const url = this.#document.URL;\n if (url !== this.#document.baseURI) {\n if (isDataScheme(url)) {\n warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n } else {\n this.#baseUrl = url.split(\"#\", 1)[0];\n }\n }\n }\n return `url(${this.#baseUrl}#${id})`;\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n const [tableR, tableG, tableB] = this.#createTables(maps);\n const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n const filterName = \"base\";\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return info.url;\n }\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n addAlphaFilter(map) {\n let value = this.#cache.get(map);\n if (value) {\n return value;\n }\n const [tableA] = this.#createTables([map]);\n const key = `alpha_${tableA}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapAlphaConversion(tableA, filter);\n return url;\n }\n addLuminosityFilter(map) {\n let value = this.#cache.get(map || \"luminosity\");\n if (value) {\n return value;\n }\n let tableA, key;\n if (map) {\n [tableA] = this.#createTables([map]);\n key = `luminosity_${tableA}`;\n } else {\n key = \"luminosity\";\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addLuminosityConversion(filter);\n if (map) {\n this.#addTransferMapAlphaConversion(tableA, filter);\n }\n return url;\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#defs.style.color = \"\";\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#hcmCache.size !== 0) {\n return;\n }\n if (this.#_defs) {\n this.#_defs.parentNode.parentNode.remove();\n this.#_defs = null;\n }\n if (this.#_cache) {\n this.#_cache.clear();\n this.#_cache = null;\n }\n this.#id = 0;\n }\n #addLuminosityConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n filter.append(feColorMatrix);\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #addTransferMapAlphaConversion(aTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n }\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\n\n;// ./src/display/standard_fontdata_factory.js\n\n\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `standardFontDataUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/node_utils.js\n\n\n\n\n\nif (isNodeJS) {\n var packageCapability = Promise.withResolvers();\n var packageMap = null;\n const loadPackages = async () => {\n const fs = await import(/*webpackIgnore: true*/\"fs\"),\n http = await import(/*webpackIgnore: true*/\"http\"),\n https = await import(/*webpackIgnore: true*/\"https\"),\n url = await import(/*webpackIgnore: true*/\"url\");\n let canvas, path2d;\n return new Map(Object.entries({\n fs,\n http,\n https,\n url,\n canvas,\n path2d\n }));\n };\n loadPackages().then(map => {\n packageMap = map;\n packageCapability.resolve();\n }, reason => {\n warn(`loadPackages: ${reason}`);\n packageMap = new Map();\n packageCapability.resolve();\n });\n}\nclass NodePackages {\n static get promise() {\n return packageCapability.promise;\n }\n static get(name) {\n return packageMap?.get(name);\n }\n}\nasync function node_utils_fetchData(url) {\n const fs = NodePackages.get(\"fs\");\n const data = await fs.promises.readFile(url);\n return new Uint8Array(data);\n}\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const canvas = NodePackages.get(\"canvas\");\n return canvas.createCanvas(width, height);\n }\n}\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\n\n;// ./src/display/pattern_helper.js\n\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\nclass BaseShadingPattern {\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[7];\n this._background = IR[8];\n this.matrix = null;\n }\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight);\n const tmpCtx = tmpCanvas.context;\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n if (pathType === PathType.SHADING) {\n scale = Util.singularValueDecompose2dScale(getCurrentTransform(ctx));\n } else {\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (this.matrix) {\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3000;\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner) {\n const {\n bbox,\n operatorList,\n paintType,\n tilingType,\n color,\n canvasGraphicsFactory\n } = this;\n let {\n xstep,\n ystep\n } = this;\n xstep = Math.abs(xstep);\n ystep = Math.abs(ystep);\n info(\"TilingType: \" + tilingType);\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n const width = x1 - x0;\n const height = y1 - y0;\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = Util.singularValueDecompose2dScale(this.baseTransform);\n const combinedScaleX = matrixScale[0] * curMatrixScale[0];\n const combinedScaleY = matrixScale[1] * curMatrixScale[1];\n let canvasWidth = width,\n canvasHeight = height,\n redrawHorizontally = false,\n redrawVertically = false;\n const xScaledStep = Math.ceil(xstep * combinedScaleX);\n const yScaledStep = Math.ceil(ystep * combinedScaleY);\n const xScaledWidth = Math.ceil(width * combinedScaleX);\n const yScaledHeight = Math.ceil(height * combinedScaleY);\n if (xScaledStep >= xScaledWidth) {\n canvasWidth = xstep;\n } else {\n redrawHorizontally = true;\n }\n if (yScaledStep >= yScaledHeight) {\n canvasHeight = ystep;\n } else {\n redrawVertically = true;\n }\n const dimx = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n this.clipBbox(graphics, x0, y0, x1, y1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n tmpCtx.restore();\n if (redrawHorizontally || redrawVertically) {\n const image = tmpCanvas.canvas;\n if (redrawHorizontally) {\n canvasWidth = xstep;\n }\n if (redrawVertically) {\n canvasHeight = ystep;\n }\n const dimx2 = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy2 = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const xSize = dimx2.size;\n const ySize = dimy2.size;\n const tmpCanvas2 = owner.cachedCanvases.getCanvas(\"pattern-workaround\", xSize, ySize);\n const tmpCtx2 = tmpCanvas2.context;\n const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n for (let i = 0; i <= ii; i++) {\n for (let j = 0; j <= jj; j++) {\n tmpCtx2.drawImage(image, xSize * i, ySize * j, xSize, ySize, 0, 0, xSize, ySize);\n }\n }\n return {\n canvas: tmpCanvas2.canvas,\n scaleX: dimx2.scale,\n scaleY: dimy2.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return {\n scale,\n size\n };\n }\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.current.updateRectMinMax(getCurrentTransform(graphics.ctx), [x0, y0, x1, y1]);\n graphics.clip();\n graphics.endPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n getPattern(ctx, owner, inverse, pathType) {\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\n\n;// ./src/shared/image_utils.js\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len32 = src.length >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n }\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n dest[destPos + 3] = s3 << 8 | 0xff;\n }\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// ./src/display/canvas.js\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst MAX_SIZE_TO_COMPILE = 1000;\nconst FULL_CHUNK_HEIGHT = 16;\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n return canvasEntry;\n }\n delete(id) {\n delete this.cache[id];\n }\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nfunction compileType3Glyph(imgData) {\n const {\n width,\n height\n } = imgData;\n if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n const width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n const lineSize = width + 7 & ~7;\n let data = new Uint8Array(lineSize * height),\n pos = 0;\n for (const elem of imgData.data) {\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const path = new Path2D();\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n path.moveTo(p % width1, i);\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n path.lineTo(p % width1, p / width1 | 0);\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n --i;\n }\n data = null;\n points = null;\n const drawOutline = function (c) {\n c.save();\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.fill(path);\n c.beginPath();\n c.restore();\n };\n return drawOutline;\n}\nclass CanvasExtraState {\n constructor(width, height) {\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = \"none\";\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n updatePathMinMax(transform, x, y) {\n [x, y] = Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n updateRectMinMax(transform, rect) {\n const p1 = Util.applyTransform(rect, transform);\n const p2 = Util.applyTransform(rect.slice(2), transform);\n const p3 = Util.applyTransform([rect[0], rect[3]], transform);\n const p4 = Util.applyTransform([rect[2], rect[1]], transform);\n this.minX = Math.min(this.minX, p1[0], p2[0], p3[0], p4[0]);\n this.minY = Math.min(this.minY, p1[1], p2[1], p3[1], p4[1]);\n this.maxX = Math.max(this.maxX, p1[0], p2[0], p3[0], p4[0]);\n this.maxY = Math.max(this.maxY, p1[1], p2[1], p3[1], p4[1]);\n }\n updateScalingPathMinMax(transform, minMax) {\n Util.scaleMinMax(transform, minMax);\n this.minX = Math.min(this.minX, minMax[0]);\n this.minY = Math.min(this.minY, minMax[1]);\n this.maxX = Math.max(this.maxX, minMax[2]);\n this.maxY = Math.max(this.maxY, minMax[3]);\n }\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax);\n if (minMax) {\n return;\n }\n this.updateRectMinMax(transform, box);\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n const scale = Util.singularValueDecompose2dScale(transform);\n const xStrokePad = scale[0] * this.lineWidth / 2;\n const yStrokePad = scale[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minX === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n if (imgData.kind === util_ImageKind.GRAYSCALE_1BPP) {\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = width + 7 >> 3;\n const white = 0xffffffff;\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === util_ImageKind.RGBA_32BPP) {\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === util_ImageKind.RGB_24BPP) {\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n if (!isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n const scale = Util.singularValueDecompose2dScale(transform);\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS);\n return scale[0] <= actualScale && scale[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.processingType3 = null;\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n fnId = fnArray[i];\n if (fnId !== OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.current.activeSMask = null;\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width ?? img.displayWidth;\n const height = img.height ?? img.displayHeight;\n let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight\n };\n }\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox([0, 0, width, height], maskToCanvas);\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(width) {\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(intent) {}\n setFlatness(flatness) {}\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.current.fillAlpha = value;\n this.ctx.globalAlpha = value;\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform(...getCurrentTransform(this.suspendedCtx));\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n }\n genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n let maskCanvas = maskCtx.canvas;\n let maskX = layerOffsetX - maskOffsetX;\n let maskY = layerOffsetY - maskOffsetY;\n if (backdrop) {\n const backdropRGB = Util.makeHexColor(...backdrop);\n if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {\n const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n const ctx = canvas.context;\n ctx.drawImage(maskCanvas, -maskX, -maskY);\n ctx.globalCompositeOperation = \"destination-atop\";\n ctx.fillStyle = backdropRGB;\n ctx.fillRect(0, 0, width, height);\n ctx.globalCompositeOperation = \"source-over\";\n maskCanvas = canvas.canvas;\n maskX = maskY = 0;\n } else {\n maskCtx.save();\n maskCtx.globalAlpha = 1;\n maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip = new Path2D();\n clip.rect(maskX, maskY, width, height);\n maskCtx.clip(clip);\n maskCtx.globalCompositeOperation = \"destination-atop\";\n maskCtx.fillStyle = backdropRGB;\n maskCtx.fillRect(maskX, maskY, width, height);\n maskCtx.restore();\n }\n }\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n if (subtype === \"Alpha\" && transferMap) {\n layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n } else if (subtype === \"Luminosity\") {\n layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n }\n const clip = new Path2D();\n clip.rect(layerOffsetX, layerOffsetY, width, height);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(maskCanvas, maskX, maskY, width, height, layerOffsetX, layerOffsetY, width, height);\n layerCtx.restore();\n }\n save() {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n restore() {\n if (this.stateStack.length === 0 && this.inSMaskMode) {\n this.endSMaskMode();\n }\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(ops, args, minMax) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n const currentTransform = getCurrentTransform(ctx);\n const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n if (!isScalingMatrix) {\n current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n }\n ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);\n j += 6;\n break;\n case OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n }\n current.setCurrentPoint(x, y);\n }\n closePath() {\n this.ctx.closePath();\n }\n stroke(consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n this.rescaleAndStroke(false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(true);\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n fill(consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n this.consumePath();\n }\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n endPath() {\n this.consumePath();\n }\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n ctx.save();\n ctx.beginPath();\n for (const path of paths) {\n ctx.setTransform(...path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n setLeading(leading) {\n this.current.leading = -leading;\n }\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n paintChar(character, x, y, patternTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n let addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (patternTransform) {\n ctx.setTransform(...patternTransform);\n }\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fill();\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n addToPath\n });\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n patternTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n ctx.fillText(chars.join(\"\"), 0, 0);\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n return undefined;\n }\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n if (font.remeasure && width > 0) {\n const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n return undefined;\n }\n showType3Text(glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y);\n ctx.scale(textHScale, fontDirection);\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n setCharWidth(xWidth, yWidth) {}\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip();\n this.endPath();\n }\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n })\n };\n pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(r, g, b) {\n this.ctx.strokeStyle = this.current.strokeColor = Util.makeHexColor(r, g, b);\n }\n setStrokeTransparent() {\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n }\n setFillRGBColor(r, g, b) {\n this.ctx.fillStyle = this.current.fillColor = Util.makeHexColor(r, g, b);\n this.current.patternFill = false;\n }\n setFillTransparent() {\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n }\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.getObject(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox([0, 0, width, height], inv);\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updateRectMinMax(getCurrentTransform(this.ctx), bbox);\n this.clip();\n this.endPath();\n }\n }\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n const currentTransform = getCurrentTransform(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n let bounds = Util.getAxialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx));\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n const groupCtx = scratchCanvas.context;\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n } else {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore();\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (rect) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx));\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.endPath();\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.clip();\n this.ctx.beginPath();\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(...transform);\n this.transform(...matrix);\n }\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const glyph = this.processingType3;\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\n if (glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n }\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(img.data, img);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = getCurrentTransform(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n const [x, y] = Util.applyTransform([0, 0], trans);\n ctx.drawImage(mask.canvas, x, y);\n }\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return tmpCanvas.canvas;\n }\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save();\n if (!isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore();\n }\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(tag) {}\n markPointProps(tag, properties) {}\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat() {}\n endCompat() {}\n consumePath(clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(saveRestore) {\n const {\n ctx\n } = this;\n const {\n lineWidth\n } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n ctx.lineWidth = lineWidth || 1;\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.stroke();\n if (saveRestore) {\n ctx.restore();\n }\n }\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n;// ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n static #port = null;\n static #src = \"\";\n static get workerPort() {\n return this.#port;\n }\n static set workerPort(val) {\n if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n static get workerSrc() {\n return this.#src;\n }\n static set workerSrc(val) {\n if (typeof val !== \"string\") {\n throw new Error(\"Invalid `workerSrc` type.\");\n }\n this.#src = val;\n }\n}\n\n;// ./src/shared/message_handler.js\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction wrapReason(reason) {\n if (!(reason instanceof Error || typeof reason === \"object\" && reason !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\nclass MessageHandler {\n #messageAC = new AbortController();\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 comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n signal: this.#messageAC.signal\n });\n }\n #onMessage({\n data\n }) {\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(function (result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n new Promise(function (resolve) {\n resolve(streamSink.onPull?.());\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n new Promise(function (resolve) {\n resolve(streamSink.onCancel?.(wrapReason(data.reason)));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.#messageAC?.abort();\n this.#messageAC = null;\n }\n}\n\n;// ./src/display/metadata.js\n\nclass Metadata {\n #metadataMap;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n getAll() {\n return objectFromMap(this.#metadataMap);\n }\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\n\n;// ./src/display/optional_content_config.js\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #isDisplay = false;\n #isPrint = false;\n #userSet = false;\n #visible = true;\n constructor(renderingIntent, {\n name,\n intent,\n usage,\n rbGroups\n }) {\n this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n this.name = name;\n this.intent = intent;\n this.usage = usage;\n this.rbGroups = rbGroups;\n }\n get visible() {\n if (this.#userSet) {\n return this.#visible;\n }\n if (!this.#visible) {\n return false;\n }\n const {\n print,\n view\n } = this.usage;\n if (this.#isDisplay) {\n return view?.viewState !== \"OFF\";\n } else if (this.#isPrint) {\n return print?.printState !== \"OFF\";\n }\n return true;\n }\n _setVisible(internal, visible, userSet = false) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#userSet = userSet;\n this.#visible = visible;\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = new Map();\n #initialHash = null;\n #order = null;\n constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n this.renderingIntent = renderingIntent;\n this.name = null;\n this.creator = null;\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(renderingIntent, group));\n }\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n this.#initialHash = this.getHash();\n }\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n info(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n setVisibility(id, visible = true, preserveRB = true) {\n const group = this.#groups.get(id);\n if (!group) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n if (preserveRB && visible && group.rbGroups.length) {\n for (const rbGroup of group.rbGroups) {\n for (const otherId of rbGroup) {\n if (otherId !== id) {\n this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n }\n }\n }\n }\n group._setVisible(INTERNAL, !!visible, true);\n this.#cachedGetHash = null;\n }\n setOCGState({\n state,\n preserveRB\n }) {\n let operator;\n for (const elem of state) {\n switch (elem) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n operator = elem;\n continue;\n }\n const group = this.#groups.get(elem);\n if (!group) {\n continue;\n }\n switch (operator) {\n case \"ON\":\n this.setVisibility(elem, true, preserveRB);\n break;\n case \"OFF\":\n this.setVisibility(elem, false, preserveRB);\n break;\n case \"Toggle\":\n this.setVisibility(elem, !group.visible, preserveRB);\n break;\n }\n }\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n getGroups() {\n return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\n }\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n}\n\n;// ./src/display/transport_stream.js\n\n\nclass PDFDataTransportStream {\n constructor(pdfDataRangeTransport, {\n disableRange = false,\n disableStream = false\n }) {\n assert(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n const {\n length,\n initialData,\n progressiveDone,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n if (initialData?.length > 0) {\n const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n pdfDataRangeTransport.transportReady();\n }\n _onReceiveData({\n begin,\n chunk\n }) {\n const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n if (begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n _onProgress(evt) {\n if (evt.total === undefined) {\n this._rangeReaders[0]?.onProgress?.({\n loaded: evt.loaded\n });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\n;// ./src/display/content_disposition.js\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n;// ./src/display/network_utils.js\n\n\n\nfunction createHeaders(isHttp, httpHeaders) {\n const headers = new Headers();\n if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n return headers;\n }\n for (const key in httpHeaders) {\n const val = httpHeaders[key];\n if (val !== undefined) {\n headers.append(key, val);\n }\n }\n return headers;\n}\nfunction validateRangeRequestCapabilities({\n responseHeaders,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n returnValues.suggestedLength = length;\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\nfunction extractFilenameFromHeader(responseHeaders) {\n const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseStatusError(status, url) {\n if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n return new MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status);\n}\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n;// ./src/display/fetch_stream.js\n\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n warn(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.headers = createHeaders(this.isHttp, source.httpHeaders);\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n const headers = new Headers(stream.headers);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n const responseHeaders = response.headers;\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = Promise.withResolvers();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n const headers = new Headers(stream.headers);\n headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n;// ./src/display/network.js\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\nclass NetworkManager {\n constructor({\n url,\n httpHeaders,\n withCredentials\n }) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.headers = createHeaders(this.isHttp, httpHeaders);\n this.withCredentials = withCredentials || false;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end\n };\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n }\n requestFull(listeners) {\n return this.request(listeners);\n }\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const [key, val] of this.headers) {\n xhr.setRequestHeader(key, val);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n pendingRequest.onProgress?.(evt);\n }\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n delete this.pendingRequests[xhrId];\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const chunk = network_getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source);\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n const responseHeaders = new Headers(fullRequestXhr.getAllResponseHeaders().trim().split(/[\\r\\n]+/).map(x => {\n const [key, ...val] = x.split(\": \");\n return [key, val.join(\": \")];\n }));\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n this._headersCapability.resolve();\n }\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n this._headersCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n const args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n _close() {\n this.onClosed?.(this);\n }\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._close();\n }\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\n;// ./src/display/node_stream.js\n\n\n\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\nfunction parseUrlOrPath(sourceUrl) {\n if (urlRegex.test(sourceUrl)) {\n return new URL(sourceUrl);\n }\n const url = NodePackages.get(\"url\");\n return new URL(url.pathToFileURL(sourceUrl));\n}\nfunction createRequest(url, headers, callback) {\n if (url.protocol === \"http:\") {\n const http = NodePackages.get(\"http\");\n return http.request(url, {\n headers\n }, callback);\n }\n const https = NodePackages.get(\"https\");\n return https.request(url, {\n headers\n }, callback);\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrlOrPath(source.url);\n this.isHttp = this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n this.isFsUrl = this.url.protocol === \"file:\";\n this.headers = createHeaders(this.isHttp, source.httpHeaders);\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n this._headersCapability = Promise.withResolvers();\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n const headers = Object.fromEntries(stream.headers);\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(response);\n const responseHeaders = new Headers(this._readableStream.headers);\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n };\n this._request = createRequest(this._url, headers, handleResponse);\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n this._request.end();\n }\n}\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n const headers = Object.fromEntries(stream.headers);\n headers.Range = `bytes=${start}-${end - 1}`;\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n this._setReadableStream(response);\n };\n this._request = createRequest(this._url, headers, handleResponse);\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n const fs = NodePackages.get(\"fs\");\n fs.promises.lstat(this._url).then(stat => {\n this._contentLength = stat.size;\n this._setReadableStream(fs.createReadStream(this._url));\n this._headersCapability.resolve();\n }, error => {\n if (error.code === \"ENOENT\") {\n error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n });\n }\n}\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n const fs = NodePackages.get(\"fs\");\n this._setReadableStream(fs.createReadStream(this._url, {\n start,\n end: end - 1\n }));\n }\n}\n\n;// ./src/display/text_layer.js\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nclass TextLayer {\n #capability = Promise.withResolvers();\n #container = null;\n #disableProcessItems = false;\n #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n #lang = null;\n #layoutTextParams = null;\n #pageHeight = 0;\n #pageWidth = 0;\n #reader = null;\n #rootContainer = null;\n #rotation = 0;\n #scale = 0;\n #styleCache = Object.create(null);\n #textContentItemsStr = [];\n #textContentSource = null;\n #textDivs = [];\n #textDivProperties = new WeakMap();\n #transform = null;\n static #ascentCache = new Map();\n static #canvasContexts = new Map();\n static #canvasCtxFonts = new WeakMap();\n static #minFontSize = null;\n static #pendingTextLayers = new Set();\n constructor({\n textContentSource,\n container,\n viewport\n }) {\n if (textContentSource instanceof ReadableStream) {\n this.#textContentSource = textContentSource;\n } else if (typeof textContentSource === \"object\") {\n this.#textContentSource = new ReadableStream({\n start(controller) {\n controller.enqueue(textContentSource);\n controller.close();\n }\n });\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n this.#container = this.#rootContainer = container;\n this.#scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n this.#rotation = viewport.rotation;\n this.#layoutTextParams = {\n div: null,\n properties: null,\n ctx: null\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this.#pageWidth = pageWidth;\n this.#pageHeight = pageHeight;\n TextLayer.#ensureMinFontSizeComputed();\n setLayerDimensions(container, viewport);\n this.#capability.promise.finally(() => {\n TextLayer.#pendingTextLayers.delete(this);\n this.#layoutTextParams = null;\n this.#styleCache = null;\n }).catch(() => {});\n }\n static get fontFamilyMap() {\n const {\n isWindows,\n isFirefox\n } = util_FeatureTest.platform;\n return shadow(this, \"fontFamilyMap\", new Map([[\"sans-serif\", `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`], [\"monospace\", `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`]]));\n }\n render() {\n const pump = () => {\n this.#reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n this.#capability.resolve();\n return;\n }\n this.#lang ??= value.lang;\n Object.assign(this.#styleCache, value.styles);\n this.#processItems(value.items);\n pump();\n }, this.#capability.reject);\n };\n this.#reader = this.#textContentSource.getReader();\n TextLayer.#pendingTextLayers.add(this);\n pump();\n return this.#capability.promise;\n }\n update({\n viewport,\n onBefore = null\n }) {\n const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n const rotation = viewport.rotation;\n if (rotation !== this.#rotation) {\n onBefore?.();\n this.#rotation = rotation;\n setLayerDimensions(this.#rootContainer, {\n rotation\n });\n }\n if (scale !== this.#scale) {\n onBefore?.();\n this.#scale = scale;\n const params = {\n div: null,\n properties: null,\n ctx: TextLayer.#getCtx(this.#lang)\n };\n for (const div of this.#textDivs) {\n params.properties = this.#textDivProperties.get(div);\n params.div = div;\n this.#layout(params);\n }\n }\n }\n cancel() {\n const abortEx = new AbortException(\"TextLayer task cancelled.\");\n this.#reader?.cancel(abortEx).catch(() => {});\n this.#reader = null;\n this.#capability.reject(abortEx);\n }\n get textDivs() {\n return this.#textDivs;\n }\n get textContentItemsStr() {\n return this.#textContentItemsStr;\n }\n #processItems(items) {\n if (this.#disableProcessItems) {\n return;\n }\n this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n const textDivs = this.#textDivs,\n textContentItemsStr = this.#textContentItemsStr;\n for (const item of items) {\n if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n warn(\"Ignoring additional textDivs for performance reasons.\");\n this.#disableProcessItems = true;\n return;\n }\n if (item.str === undefined) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this.#container;\n this.#container = document.createElement(\"span\");\n this.#container.classList.add(\"markedContent\");\n if (item.id !== null) {\n this.#container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this.#container);\n } else if (item.type === \"endMarkedContent\") {\n this.#container = this.#container.parentNode;\n }\n continue;\n }\n textContentItemsStr.push(item.str);\n this.#appendText(item);\n }\n }\n #appendText(geom) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n this.#textDivs.push(textDiv);\n const tx = Util.transform(this.#transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = this.#styleCache[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n let fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, this.#lang);\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n const scaleFactorStr = \"calc(var(--scale-factor)*\";\n const divStyle = textDiv.style;\n if (this.#container === this.#rootContainer) {\n divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n } else {\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${(TextLayer.#minFontSize * fontHeight).toFixed(2)}px)`;\n divStyle.fontFamily = fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (this.#fontInspectorEnabled) {\n textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n this.#textDivProperties.set(textDiv, textDivProperties);\n this.#layoutTextParams.div = textDiv;\n this.#layoutTextParams.properties = textDivProperties;\n this.#layout(this.#layoutTextParams);\n if (textDivProperties.hasText) {\n this.#container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this.#container.append(br);\n }\n }\n #layout(params) {\n const {\n div,\n properties,\n ctx\n } = params;\n const {\n style\n } = div;\n let transform = \"\";\n if (TextLayer.#minFontSize > 1) {\n transform = `scale(${1 / TextLayer.#minFontSize})`;\n }\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n transform = `scaleX(${canvasWidth * this.#scale / width}) ${transform}`;\n }\n }\n if (properties.angle !== 0) {\n transform = `rotate(${properties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n style.transform = transform;\n }\n }\n static cleanup() {\n if (this.#pendingTextLayers.size > 0) {\n return;\n }\n this.#ascentCache.clear();\n for (const {\n canvas\n } of this.#canvasContexts.values()) {\n canvas.remove();\n }\n this.#canvasContexts.clear();\n }\n static #getCtx(lang = null) {\n let ctx = this.#canvasContexts.get(lang ||= \"\");\n if (!ctx) {\n const canvas = document.createElement(\"canvas\");\n canvas.className = \"hiddenCanvasElement\";\n canvas.lang = lang;\n document.body.append(canvas);\n ctx = canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: true\n });\n this.#canvasContexts.set(lang, ctx);\n this.#canvasCtxFonts.set(ctx, {\n size: 0,\n family: \"\"\n });\n }\n return ctx;\n }\n static #ensureCtxFont(ctx, size, family) {\n const cached = this.#canvasCtxFonts.get(ctx);\n if (size === cached.size && family === cached.family) {\n return;\n }\n ctx.font = `${size}px ${family}`;\n cached.size = size;\n cached.family = family;\n }\n static #ensureMinFontSizeComputed() {\n if (this.#minFontSize !== null) {\n return;\n }\n const div = document.createElement(\"div\");\n div.style.opacity = 0;\n div.style.lineHeight = 1;\n div.style.fontSize = \"1px\";\n div.style.position = \"absolute\";\n div.textContent = \"X\";\n document.body.append(div);\n this.#minFontSize = div.getBoundingClientRect().height;\n div.remove();\n }\n static #getAscent(fontFamily, lang) {\n const cachedAscent = this.#ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = this.#getCtx(lang);\n ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n const metrics = ctx.measureText(\"\");\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n this.#ascentCache.set(fontFamily, ratio);\n ctx.canvas.width = ctx.canvas.height = 0;\n return ratio;\n }\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n descent = 0;\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.canvas.width = ctx.canvas.height = 0;\n const ratio = ascent ? ascent / (ascent + descent) : DEFAULT_FONT_ASCENT;\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n}\n\n;// ./src/display/xfa_text.js\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\n\n;// ./src/display/api.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nconst DELAYED_CLEANUP_TIMEOUT = 5000;\nconst DefaultCanvasFactory = isNodeJS ? NodeCanvasFactory : DOMCanvasFactory;\nconst DefaultCMapReaderFactory = isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory;\nconst DefaultFilterFactory = isNodeJS ? NodeFilterFactory : DOMFilterFactory;\nconst DefaultStandardFontDataFactory = isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory;\nfunction getDocument(src = {}) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = {\n url: src\n };\n } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n src = {\n data: src\n };\n }\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;\n const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n const standardFontDataUrl = typeof src.standardFontDataUrl === \"string\" ? src.standardFontDataUrl : null;\n const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n const isChrome = typeof src.isChrome === \"boolean\" ? src.isChrome : !util_FeatureTest.platform.isFirefox && typeof window !== \"undefined\" && !!window?.chrome;\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const CanvasFactory = src.CanvasFactory || DefaultCanvasFactory;\n const FilterFactory = src.FilterFactory || DefaultFilterFactory;\n const enableHWA = src.enableHWA === true;\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && cMapUrl && standardFontDataUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI);\n if (src.canvasFactory) {\n deprecated(\"`canvasFactory`-instance option, please use `CanvasFactory` instead.\");\n }\n if (src.filterFactory) {\n deprecated(\"`filterFactory`-instance option, please use `FilterFactory` instead.\");\n }\n const styleElement = null;\n setVerbosityLevel(verbosity);\n const transportFactory = {\n canvasFactory: new CanvasFactory({\n ownerDocument,\n enableHWA\n }),\n filterFactory: new FilterFactory({\n docId,\n ownerDocument\n }),\n cMapReaderFactory: useWorkerFetch ? null : new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked\n }),\n standardFontDataFactory: useWorkerFetch ? null : new StandardFontDataFactory({\n baseUrl: standardFontDataUrl\n })\n };\n if (!worker) {\n const workerParams = {\n verbosity,\n port: GlobalWorkerOptions.workerPort\n };\n worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"4.8.69\",\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 isChrome,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null\n }\n };\n const transportParams = {\n disableFontFace,\n fontExtraProperties,\n ownerDocument,\n pdfBug,\n styleElement,\n loadingParams: {\n disableAutoFetch,\n enableXfa\n }\n };\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(rangeTransport, {\n disableRange,\n disableStream\n });\n } else if (!data) {\n if (!url) {\n throw new Error(\"getDocument - no `url` parameter provided.\");\n }\n let NetworkStream;\n if (isNodeJS) {\n const isFetchSupported = typeof fetch !== \"undefined\" && typeof Response !== \"undefined\" && \"body\" in Response.prototype;\n NetworkStream = isFetchSupported && isValidFetchUrl(url) ? PDFFetchStream : PDFNodeStream;\n } else {\n NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : PDFNetworkStream;\n }\n networkStream = new NetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n }\n return workerIdPromise.then(workerId => {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const messageHandler = new MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n try {\n return new URL(val, window.location).href;\n } catch {\n if (isNodeJS && typeof val === \"string\") {\n return val;\n }\n }\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction isRefProxy(ref) {\n return typeof ref === \"object\" && Number.isInteger(ref?.num) && ref.num >= 0 && Number.isInteger(ref?.gen) && ref.gen >= 0;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n constructor() {\n this._capability = Promise.withResolvers();\n this._transport = null;\n this._worker = null;\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n this.destroyed = false;\n this.onPassword = null;\n this.onProgress = null;\n }\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\nclass PDFDataRangeTransport {\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = Promise.withResolvers();\n }\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this._readyCapability.resolve();\n }\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n}\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get canvasFactory() {\n return this._transport.canvasFactory;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getOptionalContentConfig(renderingIntent);\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n cachedPageNumber(ref) {\n return this._transport.cachedPageNumber(ref);\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nclass PDFPageProxy {\n #delayedCleanupTimeout = null;\n #pendingCleanup = false;\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._maybeCleanupAfterRender = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n isEditing = false\n }) {\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n const {\n renderingIntent,\n cacheKey\n } = intentArgs;\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n let intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(cacheKey, intentState);\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = Promise.withResolvers();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (this._maybeCleanupAfterRender || intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup(!intentPrint);\n if (error) {\n internalRenderTask.capability.reject(error);\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n if (globalThis.Stats?.enabled) {\n globalThis.Stats.add(this.pageNumber, this._stats);\n }\n }\n };\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext,\n viewport,\n transform,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isEditing = false\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = Promise.withResolvers();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n textContent.lang ??= value.lang;\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang: null\n };\n pump();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n if (intentState.opListReadCapability) {\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup(false);\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup(delayed = false) {\n this.#abortDelayedCleanup();\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n if (delayed) {\n this.#delayedCleanupTimeout = setTimeout(() => {\n this.#delayedCleanupTimeout = null;\n this.#tryCleanup(false);\n }, DELAYED_CLEANUP_TIMEOUT);\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n #abortDelayedCleanup() {\n if (this.#delayedCleanupTimeout) {\n clearTimeout(this.#delayedCleanupTimeout);\n this.#delayedCleanupTimeout = null;\n }\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup(true);\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n modifiedIds\n }) {\n const {\n map,\n transfer\n } = annotationStorageSerializable;\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n modifiedIds\n }, transfer);\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, reason => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup(true);\n }\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nclass LoopbackPort {\n #listeners = new Map();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const [listener] of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener, options = null) {\n let rmAbort = null;\n if (options?.signal instanceof AbortSignal) {\n const {\n signal\n } = options;\n if (signal.aborted) {\n warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n return;\n }\n const onAbort = () => this.removeEventListener(name, listener);\n rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n signal.addEventListener(\"abort\", onAbort);\n }\n this.#listeners.set(listener, rmAbort);\n }\n removeEventListener(name, listener) {\n const rmAbort = this.#listeners.get(listener);\n rmAbort?.();\n this.#listeners.delete(listener);\n }\n terminate() {\n for (const [, rmAbort] of this.#listeners) {\n rmAbort?.();\n }\n this.#listeners.clear();\n }\n}\nclass PDFWorker {\n static #fakeWorkerId = 0;\n static #isWorkerDisabled = false;\n static #workerPorts;\n static {\n if (isNodeJS) {\n this.#isWorkerDisabled = true;\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n this._isSameOrigin = (baseUrl, otherUrl) => {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false;\n }\n } catch {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n this._createCDNWrapper = url => {\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper], {\n type: \"text/javascript\"\n }));\n };\n }\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel()\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n this._readyCapability = Promise.withResolvers();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n if (port) {\n if (PDFWorker.#workerPorts?.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n get promise() {\n if (isNodeJS) {\n return Promise.all([NodePackages.promise, this._readyCapability.promise]);\n }\n return this._readyCapability.promise;\n }\n #resolve() {\n this._readyCapability.resolve();\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n get port() {\n return this._port;\n }\n get messageHandler() {\n return this._messageHandler;\n }\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {});\n this.#resolve();\n }\n _initialize() {\n if (PDFWorker.#isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n this._setupFakeWorker();\n return;\n }\n let {\n workerSrc\n } = PDFWorker;\n try {\n if (!PDFWorker._isSameOrigin(window.location.href, workerSrc)) {\n workerSrc = PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc, {\n type: \"module\"\n });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n ac.abort();\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this._setupFakeWorker();\n }\n };\n const ac = new AbortController();\n worker.addEventListener(\"error\", () => {\n if (!this._webWorker) {\n terminateEarly();\n }\n }, {\n signal: ac.signal\n });\n messageHandler.on(\"test\", data => {\n ac.abort();\n if (this.destroyed || !data) {\n terminateEarly();\n return;\n }\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n this.#resolve();\n });\n messageHandler.on(\"ready\", data => {\n ac.abort();\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch {\n this._setupFakeWorker();\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n this._setupFakeWorker();\n }\n _setupFakeWorker() {\n if (!PDFWorker.#isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorker.#isWorkerDisabled = true;\n }\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n const id = `fake${PDFWorker.#fakeWorkerId++}`;\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n this._messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this.#resolve();\n }).catch(reason => {\n this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts?.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n const cachedPort = this.#workerPorts?.get(params.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.fromPort - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n return this.#mainThreadWorkerMessageHandler;\n }\n const worker = await import(/*webpackIgnore: true*/this.workerSrc);\n return worker.WorkerMessageHandler;\n };\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nclass WorkerTransport {\n #methodPromises = new Map();\n #pageCache = new Map();\n #pagePromises = new Map();\n #pageRefCache = new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this.loadingParams = params.loadingParams;\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n this.destroyed = false;\n this.destroyCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = Promise.withResolvers();\n this.setupMessageHandler();\n }\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n this.#methodPromises.set(name, promise);\n return promise;\n }\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n let renderingIntent = RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = SerializableEmpty;\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\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 annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isEditing) {\n renderingIntent += RenderingIntentFlag.IS_EDITING;\n }\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n const {\n ids: modifiedIds,\n hash: modifiedIdsHash\n } = annotationStorage.modifiedIds;\n const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n return {\n renderingIntent,\n cacheKey: cacheKeyBuf.join(\"_\"),\n annotationStorageSerializable,\n modifiedIds\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n this.#pageRefCache.clear();\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n TextLayer.cleanup();\n this._networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", async data => {\n await this._fullReader.headersReady;\n const {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n } = this._fullReader;\n if (!isStreamingSupported || !isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n this._fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n return {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n };\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n switch (ex.name) {\n case \"PasswordException\":\n reason = new PasswordException(ex.message, ex.code);\n break;\n case \"InvalidPDFException\":\n reason = new InvalidPDFException(ex.message);\n break;\n case \"MissingPDFException\":\n reason = new MissingPDFException(ex.message);\n break;\n case \"UnexpectedResponseException\":\n reason = new UnexpectedResponseException(ex.message, ex.status);\n break;\n case \"UnknownErrorException\":\n reason = new UnknownErrorException(ex.message, ex.details);\n break;\n default:\n unreachable(\"DocException - expected a valid Error.\");\n }\n loadingTask._capability.reject(reason);\n });\n messageHandler.on(\"PasswordRequest\", exception => {\n this.#passwordCapability = Promise.withResolvers();\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this.#passwordCapability.reject(ex);\n }\n } else {\n this.#passwordCapability.reject(new PasswordException(exception.message, exception.code));\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null;\n }\n if (this.commonObjs.has(id)) {\n return null;\n }\n switch (type) {\n case \"Font\":\n const {\n disableFontFace,\n fontExtraProperties,\n pdfBug\n } = this._params;\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n const inspectFont = pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new FontFaceObject(exportedData, {\n disableFontFace,\n inspectFont\n });\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!fontExtraProperties && font.data) {\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"CopyLocalImage\":\n const {\n imageRef\n } = exportedData;\n assert(imageRef, \"The imageRef must be defined.\");\n for (const pageProxy of this.#pageCache.values()) {\n for (const [, data] of pageProxy.objs) {\n if (data?.ref !== imageRef) {\n continue;\n }\n if (!data.dataLen) {\n return null;\n }\n this.commonObjs.resolve(id, structuredClone(data));\n return data.dataLen;\n }\n }\n break;\n case \"FontPath\":\n case \"Image\":\n case \"Pattern\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n return null;\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close();\n return;\n }\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n if (imageData?.dataLen > MAX_IMAGE_SIZE_TO_CACHE) {\n pageProxy._maybeCleanupAfterRender = true;\n }\n break;\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"FetchBuiltInCMap\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n if (!this.cMapReaderFactory) {\n throw new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\");\n }\n return this.cMapReaderFactory.fetch(data);\n });\n messageHandler.on(\"FetchStandardFontData\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n if (!this.standardFontDataFactory) {\n throw new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\");\n }\n return this.standardFontDataFactory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n const {\n map,\n transfer\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null\n }, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n if (pageInfo.refStr) {\n this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n getPageIndex(ref) {\n if (!isRefProxy(ref)) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig(renderingIntent) {\n return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new OptionalContentConfig(data, renderingIntent));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\",\n cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, null).then(results => ({\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null\n }));\n this.#methodPromises.set(name, promise);\n return promise;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n TextLayer.cleanup();\n }\n cachedPageNumber(ref) {\n if (!isRefProxy(ref)) {\n return null;\n }\n const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n return this.#pageRefCache.get(refStr) ?? null;\n }\n}\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n #objs = Object.create(null);\n #ensureObj(objId) {\n return this.#objs[objId] ||= {\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n };\n }\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs[objId];\n return !!obj && obj.data !== INITIAL_DATA;\n }\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n data?.bitmap?.close();\n }\n this.#objs = Object.create(null);\n }\n *[Symbol.iterator]() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n if (data === INITIAL_DATA) {\n continue;\n }\n yield [objId, data];\n }\n }\n}\nclass RenderTask {\n #internalRenderTask = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n this.onContinue = null;\n }\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n}\nclass InternalRenderTask {\n #rAF = null;\n static #canvasInUse = new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = Promise.withResolvers();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n canvasContext,\n viewport,\n transform,\n background\n } = this.params;\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n if (this.#rAF) {\n window.cancelAnimationFrame(this.#rAF);\n this.#rAF = null;\n }\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback(error || new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay));\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\n }\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n this.#rAF = window.requestAnimationFrame(() => {\n this.#rAF = null;\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback();\n }\n }\n }\n}\nconst version = \"4.8.69\";\nconst build = \"3634dab10\";\n\n;// ./src/shared/scripting_utils.js\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\n\n;// ./src/display/svg_factory.js\n\n\nclass BaseSVGFactory {\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n;// ./src/display/xfa_layer.js\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (option.attributes.hasOwnProperty(\"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n Object.assign(html.style, value);\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n }\n }\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n const isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n if (root.children.length === 0) {\n if (root.value) {\n const node = document.createTextNode(root.value);\n rootHtml.append(node);\n if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n textDivs.push(node);\n }\n }\n return {\n textDivs\n };\n }\n const stack = [[root, -1, rootHtml]];\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n if (child.children?.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (isNotForRichText && XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\n }\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\n;// ./src/display/annotation_layer.js\n\n\n\n\n\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n}\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n #updates = null;\n #hasBorder = false;\n #popupElement = null;\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n titleObj,\n contentsObj,\n richText\n }) {\n return !!(titleObj?.str || contentsObj?.str || richText?.str);\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data);\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n const {\n rect\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n this.#popupElement?.popup.updateEdited(params);\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n this.#setRectEdited(this.#updates.rect);\n this.#popupElement?.popup.resetEdited();\n this.#updates = null;\n }\n #setRectEdited(rect) {\n const {\n container: {\n style\n },\n data: {\n rect: currentRect,\n rotation\n },\n parent: {\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n }\n } = this;\n currentRect?.splice(0, 4, ...rect);\n const {\n width,\n height\n } = getRectDims(rect);\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation);\n }\n }\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: {\n page,\n viewport\n }\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement)) {\n container.tabIndex = DEFAULT_TAB_INDEX;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex++;\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation\n } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n const {\n width,\n height\n } = getRectDims(data.rect);\n if (!ignoreBorder && data.borderStyle.width > 0) {\n style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;\n style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n style.borderStyle = \"solid\";\n break;\n case AnnotationBorderStyleType.DASHED:\n style.borderStyle = \"dashed\";\n break;\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n case AnnotationBorderStyleType.UNDERLINE:\n style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n style.borderColor = Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n style.borderWidth = 0;\n }\n }\n const rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const {\n pageWidth,\n pageHeight\n } = this.parent.viewport.rawDims;\n const {\n width,\n height\n } = getRectDims(this.data.rect);\n let elementWidth, elementHeight;\n if (angle % 180 === 0) {\n elementWidth = 100 * width / pageWidth;\n elementHeight = 100 * height / pageHeight;\n } else {\n elementWidth = 100 * height / pageWidth;\n elementHeight = 100 * width / pageHeight;\n }\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n });\n };\n return shadow(this, \"_commonActions\", {\n display: event => {\n const {\n display\n } = event.detail;\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print\n });\n },\n hidden: event => {\n const {\n hidden\n } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail\n },\n target: element\n };\n action(eventProxy);\n delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const {\n quadPoints\n } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x => Math.fround(x));\n if (quadPoints.length === 8) {\n const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n return;\n }\n }\n const {\n style\n } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const {\n borderColor,\n borderWidth\n } = style;\n style.borderWidth = 0;\n svgBuffer = [\"url('data:image/svg+xml;utf8,\", `<svg xmlns=\"http://www.w3.org/2000/svg\"`, ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`, `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`];\n this.container.classList.add(\"hasBorder\");\n }\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n const {\n svgFactory\n } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n const trX = quadPoints[i];\n const trY = quadPoints[i + 1];\n const blX = quadPoints[i + 2];\n const blY = quadPoints[i + 3];\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(`<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`);\n }\n if (this.#hasBorder) {\n svgBuffer.push(`</g></svg>')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup() {\n const {\n data\n } = this;\n const popup = this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation\n },\n parent: this.parent,\n elements: [this]\n });\n this.parent.div.append(popup.render());\n }\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: {\n id: editId\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId\n });\n });\n }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n isBound = true;\n } else {\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === \"\") {\n this.#setInternalLink();\n }\n }\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n this.#setInternalLink();\n }\n #bindAttachment(link, attachment, dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n }\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n this.#setInternalLink();\n }\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name\n }\n });\n return false;\n };\n }\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n warn(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\"data-l10n-args\", JSON.stringify({\n type: this.data.name\n }));\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n _getKeyModifier(event) {\n return util_FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n _setEventListeners(element, elementData, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= {\n focused: false\n };\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(color[0], color[1], color[2]);\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / LINE_FACTOR));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const {\n target\n } = event;\n if (elementData.userValue) {\n target.value = elementData.userValue;\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n if (!this.data.actions?.Focus) {\n elementData.focused = true;\n }\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n storage.setValue(id, {\n formattedValue\n });\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, {\n value\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd\n }\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n if (!this.data.actions?.Blur) {\n elementData.focused = false;\n }\n const {\n value\n } = event.target;\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.hasOwnCanvas\n });\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n if (value) {\n for (const radio of this._getElementsByName(data.fieldName, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => ({\n displayValue: option.textContent,\n exportValue: option.value\n }));\n };\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(true);\n const change = getValue(false);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n change,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const {\n data,\n elements\n } = parameters;\n super(parameters, {\n isRenderable: AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n this.popup = null;\n }\n render() {\n this.container.classList.add(\"popupAnnotation\");\n const popup = this.popup = new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open\n });\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n element.container.ariaHasPopup = \"dialog\";\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n #boundKeyDown = this.#keyDown.bind(this);\n #boundHide = this.#hide.bind(this);\n #boundShow = this.#show.bind(this);\n #boundToggle = this.#toggle.bind(this);\n #color = null;\n #container = null;\n #contentsObj = null;\n #dateObj = null;\n #elements = null;\n #parent = null;\n #parentRect = null;\n #pinned = false;\n #popup = null;\n #position = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle);\n element.addEventListener(\"mouseenter\", this.#boundShow);\n element.addEventListener(\"mouseleave\", this.#boundHide);\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n }\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n render() {\n if (this.#popup) {\n return;\n }\n const popup = this.#popup = document.createElement(\"div\");\n popup.className = \"popup\";\n if (this.#color) {\n const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n if (CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")) {\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n } else {\n const BACKGROUND_ENLIGHT = 0.7;\n popup.style.backgroundColor = Util.makeHexColor(...this.#color.map(c => Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)));\n }\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n const title = document.createElement(\"h1\");\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"popupDate\");\n modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n dateObj: this.#dateObj.valueOf()\n }));\n header.append(modificationDate);\n }\n const html = this.#html;\n if (html) {\n XfaLayer.render({\n xfaHtml: html,\n intent: \"richText\",\n div: popup\n });\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n } else {\n const contents = this._formatContents(this.#contentsObj);\n popup.append(contents);\n }\n this.#container.append(popup);\n }\n get #html() {\n const richText = this.#richText;\n const contentsObj = this.#contentsObj;\n if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n return this.#richText.html || null;\n }\n return null;\n }\n get #fontSize() {\n return this.#html?.attributes?.style?.fontSize || 0;\n }\n get #fontColor() {\n return this.#html?.attributes?.style?.color || null;\n }\n #makePopupContent(text) {\n const popupLines = [];\n const popupContent = {\n str: text,\n html: {\n name: \"div\",\n attributes: {\n dir: \"auto\"\n },\n children: [{\n name: \"p\",\n children: popupLines\n }]\n }\n };\n const lineAttributes = {\n style: {\n color: this.#fontColor,\n fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--scale-factor))` : \"\"\n }\n };\n for (const line of text.split(\"\\n\")) {\n popupLines.push({\n name: \"span\",\n value: line,\n attributes: lineAttributes\n });\n }\n return popupContent;\n }\n _formatContents({\n str,\n dir\n }) {\n const p = document.createElement(\"p\");\n p.classList.add(\"popupContent\");\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n return p;\n }\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n this.#toggle();\n }\n }\n updateEdited({\n rect,\n popupContent\n }) {\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popupContent) {\n this.#richText = this.#makePopupContent(popupContent);\n this.#contentsObj = null;\n }\n this.#popup?.remove();\n this.#popup = null;\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n ({\n contentsObj: this.#contentsObj,\n richText: this.#richText\n } = this.#updates);\n this.#updates = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#position = null;\n }\n #setPosition() {\n if (this.#position !== null) {\n return;\n }\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.#parent;\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n const {\n style\n } = this.#container;\n style.left = `${this.#position[0]}%`;\n style.top = `${this.#position[1]}%`;\n }\n #toggle() {\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#setPosition();\n this.#container.hidden = false;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000;\n }\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n maybeShow() {\n if (!this.#wasVisible) {\n return;\n }\n if (!this.#popup) {\n this.#show();\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n get isVisible() {\n return this.#container.hidden === false;\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#line;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#square;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n vertices,\n borderStyle,\n popupRef\n }\n } = this;\n if (!vertices) {\n return this.container;\n }\n const {\n width,\n height\n } = getRectDims(rect);\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n const x = vertices[i] - rect[0];\n const y = rect[3] - vertices[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n inkLists,\n borderStyle,\n popupRef\n }\n } = this;\n const {\n width,\n height\n } = getRectDims(rect);\n const svg = this.svgFactory.create(width, height, true);\n for (const inkList of inkLists) {\n let points = [];\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n const x = inkList[i] - rect[0];\n const y = rect[3] - inkList[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n }\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(svg);\n this._editOnDoubleClick();\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.annotationEditorType = AnnotationEditorType.STAMP;\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n this.container.setAttribute(\"role\", \"img\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n file\n } = this.data;\n this.filename = file.filename;\n this.content = file.content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n ...file\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n const {\n container,\n data\n } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n const {\n isMac\n } = util_FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n container.append(trigger);\n return container;\n }\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\nclass AnnotationLayer {\n #accessibilityManager = null;\n #annotationCanvasMap = null;\n #editableAnnotations = new Map();\n #structTreeLayer = null;\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport,\n structTreeLayer\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.#structTreeLayer = structTreeLayer || null;\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n }\n hasEditableAnnotations() {\n return this.#editableAnnotations.size > 0;\n }\n async #appendElement(element, id) {\n const contentElement = element.firstChild || element;\n const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n const ariaAttributes = await this.#structTreeLayer?.getAriaAttributes(annotationId);\n if (ariaAttributes) {\n for (const [key, value] of ariaAttributes) {\n contentElement.setAttribute(key, value);\n }\n }\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);\n }\n async render(params) {\n const {\n annotations\n } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n const popupToElements = new Map();\n const elementParams = {\n data: null,\n layer,\n linkService: params.linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: params.annotationStorage || new AnnotationStorage(),\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n const {\n width,\n height\n } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation && data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n await this.#appendElement(rendered, data.id);\n if (element._isEditable) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n this.#setAnnotationCanvasMap();\n }\n update({\n viewport\n }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, {\n rotation: viewport.rotation\n });\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n canvas.className = \"annotationContent\";\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else if (!firstChild.classList.contains(\"annotationContent\")) {\n firstChild.before(canvas);\n } else {\n firstChild.after(canvas);\n }\n }\n this.#annotationCanvasMap.clear();\n }\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #color;\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #editModeAC = null;\n #fontSize;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = self => self.isEmpty();\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n static _editorType = AnnotationEditorType.FREETEXT;\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.#color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]];\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: setFontsize.bind(this, fontSize),\n undo: setFontsize.bind(this, savedFontsize),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const setColor = col => {\n this.#color = this.editorDiv.style.color = col;\n };\n const savedColor = this.#color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, true);\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(false);\n this.parent.updateToolbar(AnnotationEditorType.FREETEXT);\n super.enableEditMode();\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.#editModeAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#editModeAC);\n this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n signal\n });\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(true);\n super.disableEditMode();\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.#editModeAC?.abort();\n this.#editModeAC = null;\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded() {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n this.editorDiv.focus();\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const buffer = [];\n this.editorDiv.normalize();\n let prevChild = null;\n for (const child of this.editorDiv.childNodes) {\n if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n prevChild = child;\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\");\n div.classList.remove(\"hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n div.classList.toggle(\"hidden\", savedVisibility);\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n dblclick(event) {\n this.enterInEditMode();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n event.preventDefault();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n this.enableEditing();\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position\n } = this._initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n }\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n static #getNodeContent(node) {\n return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n }\n editorDivPaste(event) {\n const clipboardData = event.clipboardData || window.clipboardData;\n const {\n types\n } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n event.preventDefault();\n const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n if (!paste) {\n return;\n }\n const selection = window.getSelection();\n if (!selection.rangeCount) {\n return;\n }\n this.editorDiv.normalize();\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n if (!paste.includes(\"\\n\")) {\n range.insertNode(document.createTextNode(paste));\n this.editorDiv.normalize();\n selection.collapseToStart();\n return;\n }\n const {\n startContainer,\n startOffset\n } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n if (parent !== this.editorDiv) {\n let buffer = bufferBefore;\n for (const child of this.editorDiv.childNodes) {\n if (child === parent) {\n buffer = bufferAfter;\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n } else if (startContainer === this.editorDiv) {\n let buffer = bufferBefore;\n let i = 0;\n for (const child of this.editorDiv.childNodes) {\n if (i++ === startOffset) {\n buffer = bufferAfter;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n this.#setContent();\n const newRange = new Range();\n let beforeLength = bufferBefore.reduce((acc, line) => acc + line.length, 0);\n for (const {\n firstChild\n } of this.editorDiv.childNodes) {\n if (firstChild.nodeType === Node.TEXT_NODE) {\n const length = firstChild.nodeValue.length;\n if (beforeLength <= length) {\n newRange.setStart(firstChild, beforeLength);\n newRange.setEnd(firstChild, beforeLength);\n break;\n }\n beforeLength -= length;\n }\n }\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n }\n #serializeContent() {\n return this.#content.replaceAll(\"\\xa0\", \" \");\n }\n static #deserializeContent(content) {\n return content.replaceAll(\" \", \"\\xa0\");\n }\n get contentDiv() {\n return this.editorDiv;\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize,\n fontColor\n },\n rect,\n rotation,\n id,\n popupRef\n },\n textContent,\n textPosition,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n if (!textContent || textContent.length === 0) {\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.#color = Util.makeHexColor(...data.color);\n editor.#content = FreeTextEditor.#deserializeContent(data.value);\n editor.annotationElementId = data.id || null;\n editor._initialData = initialData;\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n const rect = this.getRect(padding, padding);\n const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color);\n const serialized = {\n annotationType: AnnotationEditorType.FREETEXT,\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent(),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n value,\n fontSize,\n color,\n pageIndex\n } = this._initialData;\n return this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const content = super.renderAnnotationElement(annotation);\n if (this.deleted) {\n return content;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n content.replaceChildren();\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n content.append(div);\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n annotation.updateEdited({\n rect: this.getRect(padding, padding),\n popupContent: this.#content\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n}\n\n;// ./src/display/editor/drawers/outline.js\n\nclass Outline {\n toSVGPath() {\n unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n }\n get box() {\n unreachable(\"Abstract getter `box` must be implemented.\");\n }\n serialize(_bbox, _rotation) {\n unreachable(\"Abstract method `serialize` must be implemented.\");\n }\n get classNamesForDrawing() {\n unreachable(\"Abstract getter `classNamesForDrawing` must be implemented.\");\n }\n get classNamesForOutlining() {\n unreachable(\"Abstract getter `classNamesForOutlining` must be implemented.\");\n }\n get mustRemoveSelfIntersections() {\n return false;\n }\n}\n\n;// ./src/display/editor/drawers/freedraw.js\n\n\nclass FreeDrawOutliner {\n #box;\n #bottom = [];\n #innerMargin;\n #isLTR;\n #top = [];\n #last = new Float64Array(18);\n #lastX;\n #lastY;\n #min;\n #min_dist;\n #scaleFactor;\n #thickness;\n #points = [];\n static #MIN_DIST = 8;\n static #MIN_DIFF = 2;\n static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n constructor({\n x,\n y\n }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n this.#box = box;\n this.#thickness = thickness * scaleFactor;\n this.#isLTR = isLTR;\n this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n this.#innerMargin = innerMargin;\n this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n isEmpty() {\n return isNaN(this.#last[8]);\n }\n #getLastCoords() {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n }\n add({\n x,\n y\n }) {\n this.#lastX = x;\n this.#lastY = y;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < this.#min) {\n return false;\n }\n const diffD = d - this.#min_dist;\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n this.#points?.push(x, y);\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * this.#thickness;\n const thY = nY * this.#thickness;\n this.#last.set(this.#last.subarray(2, 8), 0);\n this.#last.set([x2 + thX, y2 + thY], 4);\n this.#last.set(this.#last.subarray(14, 18), 12);\n this.#last.set([x2 - thX, y2 - thY], 16);\n if (isNaN(this.#last[6])) {\n if (this.#top.length === 0) {\n this.#last.set([x1 + thX, y1 + thY], 2);\n this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n return this.#toSVGPathTwoPoints();\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n } else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n this.#toSVGPathEnd(buffer);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n } else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n this.#toSVGPathStart(buffer);\n return buffer.join(\" \");\n }\n #toSVGPathTwoPoints() {\n const [x, y, width, height] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n }\n #toSVGPathStart(buffer) {\n const bottom = this.#bottom;\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n }\n #toSVGPathEnd(buffer) {\n const [x, y, width, height] = this.#box;\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n }\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const points = new Float64Array((this.#points?.length ?? 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (this.#points[i] - layerX) / layerWidth;\n points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n if (isNaN(last[6]) && !this.isEmpty()) {\n return this.#getOutlineTwoPoints(points);\n }\n const outline = new Float64Array(this.#top.length + 24 + this.#bottom.length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n N = this.#getOutlineEnd(outline, N);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n this.#getOutlineStart(outline, N);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineTwoPoints(points) {\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n const outline = new Float64Array(36);\n outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineStart(outline, pos) {\n const bottom = this.#bottom;\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n return pos += 6;\n }\n #getOutlineEnd(outline, pos) {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], pos);\n return pos += 24;\n }\n}\nclass FreeDrawOutline extends Outline {\n #box;\n #bbox = null;\n #innerMargin;\n #isLTR;\n #points;\n #scaleFactor;\n #outline;\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n this.#outline = outline;\n this.#points = points;\n this.#box = box;\n this.#scaleFactor = scaleFactor;\n this.#innerMargin = innerMargin;\n this.#isLTR = isLTR;\n this.#computeMinMax(isLTR);\n const {\n x,\n y,\n width,\n height\n } = this.#bbox;\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n if (isNaN(this.#outline[i])) {\n buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n continue;\n }\n buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = this.#rescale(this.#outline, blX, trY, width, -height);\n points = this.#rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = this.#rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = this.#rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = this.#rescale(this.#outline, trX, blY, -width, height);\n points = this.#rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = this.#rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = this.#rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return {\n outline: Array.from(outline),\n points: [Array.from(points)]\n };\n }\n #rescale(src, tx, ty, sx, sy) {\n const dest = new Float64Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n }\n #rescaleAndSwap(src, tx, ty, sx, sy) {\n const dest = new Float64Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n }\n #computeMinMax(isLTR) {\n const outline = this.#outline;\n let lastX = outline[4];\n let lastY = outline[5];\n let minX = lastX;\n let minY = lastY;\n let maxX = lastX;\n let maxY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n if (isNaN(outline[i])) {\n minX = Math.min(minX, outline[i + 4]);\n minY = Math.min(minY, outline[i + 5]);\n maxX = Math.max(maxX, outline[i + 4]);\n maxY = Math.max(maxY, outline[i + 5]);\n if (lastPointY < outline[i + 5]) {\n lastPointX = outline[i + 4];\n lastPointY = outline[i + 5];\n } else if (lastPointY === outline[i + 5]) {\n lastPointX = ltrCallback(lastPointX, outline[i + 4]);\n }\n } else {\n const bbox = Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6));\n minX = Math.min(minX, bbox[0]);\n minY = Math.min(minY, bbox[1]);\n maxX = Math.max(maxX, bbox[2]);\n maxY = Math.max(maxY, bbox[3]);\n if (lastPointY < bbox[3]) {\n lastPointX = bbox[2];\n lastPointY = bbox[3];\n } else if (lastPointY === bbox[3]) {\n lastPointX = ltrCallback(lastPointX, bbox[2]);\n }\n }\n lastX = outline[i + 4];\n lastY = outline[i + 5];\n }\n const x = minX - this.#innerMargin,\n y = minY - this.#innerMargin,\n width = maxX - minX + 2 * this.#innerMargin,\n height = maxY - minY + 2 * this.#innerMargin;\n this.#bbox = {\n x,\n y,\n width,\n height,\n lastPoint: [lastPointX, lastPointY]\n };\n }\n get box() {\n return this.#bbox;\n }\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeDrawOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n getNewOutline(thickness, innerMargin) {\n const {\n x,\n y,\n width,\n height\n } = this.#bbox;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const outliner = this.newOutliner({\n x: this.#points[0] * sx + tx,\n y: this.#points[1] * sy + ty\n }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n for (let i = 2; i < this.#points.length; i += 2) {\n outliner.add({\n x: this.#points[i] * sx + tx,\n y: this.#points[i + 1] * sy + ty\n });\n }\n return outliner.getOutlines();\n }\n get mustRemoveSelfIntersections() {\n return true;\n }\n}\n\n;// ./src/display/editor/drawers/highlight.js\n\n\nclass HighlightOutliner {\n #box;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n this.#verticalEdges.push(left, right);\n minX = Math.min(minX, x1);\n maxX = Math.max(maxX, x2);\n minY = Math.min(minY, y1);\n maxY = Math.max(maxY, y2);\n }\n const bboxWidth = maxX - minX + 2 * innerMargin;\n const bboxHeight = maxY - minY + 2 * innerMargin;\n const shiftedMinX = minX - innerMargin;\n const shiftedMinY = minY - innerMargin;\n const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n for (const edge of this.#verticalEdges) {\n const [x, y1, y2] = edge;\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n this.#box = {\n x: shiftedMinX,\n y: shiftedMinY,\n width: bboxWidth,\n height: bboxHeight,\n lastPoint\n };\n }\n getOutlines() {\n this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, this.#box);\n }\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = start + end >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\nclass HighlightOutline extends Outline {\n #box;\n #outlines;\n constructor(outlines, box) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of this.#outlines) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], _rotation) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of this.#outlines) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return this.#box;\n }\n get classNamesForDrawing() {\n return [\"highlight\"];\n }\n get classNamesForOutlining() {\n return [\"highlightOutline\"];\n }\n}\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeHighlightOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n get classNamesForDrawing() {\n return [\"highlight\", \"free\"];\n }\n}\nclass FreeHighlightOutline extends FreeDrawOutline {\n get classNamesForDrawing() {\n return [\"highlight\", \"free\"];\n }\n get classNamesForOutlining() {\n return [\"highlightOutline\", \"free\"];\n }\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeHighlightOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n}\n\n;// ./src/display/editor/color_picker.js\n\n\n\nclass ColorPicker {\n #button = null;\n #buttonSwatch = null;\n #defaultColor;\n #dropdown = null;\n #dropdownWasFromKeyboard = false;\n #isMainColorPicker = false;\n #editor = null;\n #eventBus;\n #openDropdownAC = null;\n #uiManager = null;\n #type;\n static #l10nColor = null;\n static get _keyboardManager() {\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n }\n constructor({\n editor = null,\n uiManager = null\n }) {\n if (editor) {\n this.#isMainColorPicker = false;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_COLOR;\n this.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n ColorPicker.#l10nColor ||= Object.freeze({\n blue: \"pdfjs-editor-colorpicker-blue\",\n green: \"pdfjs-editor-colorpicker-green\",\n pink: \"pdfjs-editor-colorpicker-pink\",\n red: \"pdfjs-editor-colorpicker-red\",\n yellow: \"pdfjs-editor-colorpicker-yellow\"\n });\n }\n renderButton() {\n const button = this.#button = document.createElement(\"button\");\n button.className = \"colorPicker\";\n button.tabIndex = \"0\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n button.setAttribute(\"aria-haspopup\", true);\n const signal = this.#uiManager._signal;\n button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n signal\n });\n button.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n const swatch = this.#buttonSwatch = document.createElement(\"span\");\n swatch.className = \"swatch\";\n swatch.setAttribute(\"aria-hidden\", true);\n swatch.style.backgroundColor = this.#defaultColor;\n button.append(swatch);\n return button;\n }\n renderMainDropdown() {\n const dropdown = this.#dropdown = this.#getDropdownRoot();\n dropdown.setAttribute(\"aria-orientation\", \"horizontal\");\n dropdown.setAttribute(\"aria-labelledby\", \"highlightColorPickerLabel\");\n return dropdown;\n }\n #getDropdownRoot() {\n const div = document.createElement(\"div\");\n const signal = this.#uiManager._signal;\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.className = \"dropdown\";\n div.role = \"listbox\";\n div.setAttribute(\"aria-multiselectable\", false);\n div.setAttribute(\"aria-orientation\", \"vertical\");\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n for (const [name, color] of this.#uiManager.highlightColors) {\n const button = document.createElement(\"button\");\n button.tabIndex = \"0\";\n button.role = \"option\";\n button.setAttribute(\"data-color\", color);\n button.title = name;\n button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n const swatch = document.createElement(\"span\");\n button.append(swatch);\n swatch.className = \"swatch\";\n swatch.style.backgroundColor = color;\n button.setAttribute(\"aria-selected\", color === this.#defaultColor);\n button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n signal\n });\n div.append(button);\n }\n div.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n return div;\n }\n #colorSelect(color, event) {\n event.stopPropagation();\n this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n source: this,\n type: this.#type,\n value: color\n });\n }\n _colorSelectFromKeyboard(event) {\n if (event.target === this.#button) {\n this.#openDropdown(event);\n return;\n }\n const color = event.target.getAttribute(\"data-color\");\n if (!color) {\n return;\n }\n this.#colorSelect(color, event);\n }\n _moveToNext(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n if (event.target === this.#button) {\n this.#dropdown.firstChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstChild || event.target === this.#button) {\n if (this.#isDropdownVisible) {\n this._hideDropdownFromKeyboard();\n }\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n }\n event.target.previousSibling?.focus();\n }\n _moveToBeginning(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.firstChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastChild?.focus();\n }\n #keyDown(event) {\n ColorPicker._keyboardManager.exec(this, event);\n }\n #openDropdown(event) {\n if (this.#isDropdownVisible) {\n this.hideDropdown();\n return;\n }\n this.#dropdownWasFromKeyboard = event.detail === 0;\n if (!this.#openDropdownAC) {\n this.#openDropdownAC = new AbortController();\n window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n signal: this.#uiManager.combinedSignal(this.#openDropdownAC)\n });\n }\n if (this.#dropdown) {\n this.#dropdown.classList.remove(\"hidden\");\n return;\n }\n const root = this.#dropdown = this.#getDropdownRoot();\n this.#button.append(root);\n }\n #pointerDown(event) {\n if (this.#dropdown?.contains(event.target)) {\n return;\n }\n this.hideDropdown();\n }\n hideDropdown() {\n this.#dropdown?.classList.add(\"hidden\");\n this.#openDropdownAC?.abort();\n this.#openDropdownAC = null;\n }\n get #isDropdownVisible() {\n return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n }\n _hideDropdownFromKeyboard() {\n if (this.#isMainColorPicker) {\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#editor?.unselect();\n return;\n }\n this.hideDropdown();\n this.#button.focus({\n preventScroll: true,\n focusVisible: this.#dropdownWasFromKeyboard\n });\n }\n updateColor(color) {\n if (this.#buttonSwatch) {\n this.#buttonSwatch.style.backgroundColor = color;\n }\n if (!this.#dropdown) {\n return;\n }\n const i = this.#uiManager.highlightColors.values();\n for (const child of this.#dropdown.children) {\n child.setAttribute(\"aria-selected\", i.next().value === color);\n }\n }\n destroy() {\n this.#button?.remove();\n this.#button = null;\n this.#buttonSwatch = null;\n this.#dropdown?.remove();\n this.#dropdown = null;\n }\n}\n\n;// ./src/display/editor/highlight.js\n\n\n\n\n\n\n\nclass HighlightEditor extends AnnotationEditor {\n #anchorNode = null;\n #anchorOffset = 0;\n #boxes;\n #clipPathId = null;\n #colorPicker = null;\n #focusOutlines = null;\n #focusNode = null;\n #focusOffset = 0;\n #highlightDiv = null;\n #highlightOutlines = null;\n #id = null;\n #isFreeHighlight = false;\n #lastPoint = null;\n #opacity;\n #outlineId = null;\n #text = \"\";\n #thickness;\n #methodOfCreation = \"\";\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 12;\n static _type = \"highlight\";\n static _editorType = AnnotationEditorType.HIGHLIGHT;\n static _freeHighlightId = -1;\n static _freeHighlight = null;\n static _freeHighlightClipId = \"\";\n static get _keyboardManager() {\n const proto = HighlightEditor.prototype;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, {\n args: [0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, {\n args: [1]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, {\n args: [2]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, {\n args: [3]\n }]]));\n }\n constructor(params) {\n super({\n ...params,\n name: \"highlightEditor\"\n });\n this.color = params.color || HighlightEditor._defaultColor;\n this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n this.#opacity = params.opacity || HighlightEditor._defaultOpacity;\n this.#boxes = params.boxes || null;\n this.#methodOfCreation = params.methodOfCreation || \"\";\n this.#text = params.text || \"\";\n this._isDraggable = false;\n if (params.highlightId > -1) {\n this.#isFreeHighlight = true;\n this.#createFreeOutlines(params);\n this.#addToDrawLayer();\n } else if (this.#boxes) {\n this.#anchorNode = params.anchorNode;\n this.#anchorOffset = params.anchorOffset;\n this.#focusNode = params.focusNode;\n this.#focusOffset = params.focusOffset;\n this.#createOutlines();\n this.#addToDrawLayer();\n this.rotate(this.rotation);\n }\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color),\n thickness: this.#thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color)\n };\n }\n static computeTelemetryFinalData(data) {\n return {\n numberOfColors: data.get(\"color\").size\n };\n }\n #createOutlines() {\n const outliner = new HighlightOutliner(this.#boxes, 0.001);\n this.#highlightOutlines = outliner.getOutlines();\n ({\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height\n } = this.#highlightOutlines.box);\n const outlinerForOutline = new HighlightOutliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n this.#focusOutlines = outlinerForOutline.getOutlines();\n const {\n lastPoint\n } = this.#focusOutlines.box;\n this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n }\n #createFreeOutlines({\n highlightOutlines,\n highlightId,\n clipPathId\n }) {\n this.#highlightOutlines = highlightOutlines;\n const extraThickness = 1.5;\n this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 0.0025);\n if (highlightId >= 0) {\n this.#id = highlightId;\n this.#clipPathId = clipPathId;\n this.parent.drawLayer.finalizeLine(highlightId, highlightOutlines);\n this.#outlineId = this.parent.drawLayer.drawOutline(this.#focusOutlines);\n } else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateLine(this.#id, highlightOutlines);\n this.parent.drawLayer.updateBox(this.#id, HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360));\n this.parent.drawLayer.updateLine(this.#outlineId, this.#focusOutlines);\n this.parent.drawLayer.updateBox(this.#outlineId, HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle));\n }\n const {\n x,\n y,\n width,\n height\n } = highlightOutlines.box;\n switch (this.rotation) {\n case 0:\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n break;\n case 90:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = y;\n this.y = 1 - x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n case 180:\n this.x = 1 - x;\n this.y = 1 - y;\n this.width = width;\n this.height = height;\n break;\n case 270:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = 1 - y;\n this.y = x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n }\n const {\n lastPoint\n } = this.#focusOutlines.box;\n this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n HighlightEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n HighlightEditor._defaultThickness = value;\n break;\n }\n }\n translateInPage(x, y) {}\n get toolbarPosition() {\n return this.#lastPoint;\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n this.#updateThickness(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR, HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, HighlightEditor._defaultThickness]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n }\n #updateColor(color) {\n const setColorAndOpacity = (col, opa) => {\n this.color = col;\n this.parent?.drawLayer.changeColor(this.#id, col);\n this.#colorPicker?.updateColor(col);\n this.#opacity = opa;\n this.parent?.drawLayer.changeOpacity(this.#id, opa);\n };\n const savedColor = this.color;\n const savedOpacity = this.#opacity;\n this.addCommands({\n cmd: setColorAndOpacity.bind(this, color, HighlightEditor._defaultOpacity),\n undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"color_changed\",\n color: this._uiManager.highlightColorNames.get(color)\n }, true);\n }\n #updateThickness(thickness) {\n const savedThickness = this.#thickness;\n const setThickness = th => {\n this.#thickness = th;\n this.#changeThickness(th);\n };\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"thickness_changed\",\n thickness\n }, true);\n }\n async addEditToolbar() {\n const toolbar = await super.addEditToolbar();\n if (!toolbar) {\n return null;\n }\n if (this._uiManager.highlightColors) {\n this.#colorPicker = new ColorPicker({\n editor: this\n });\n toolbar.addColorPicker(this.#colorPicker);\n }\n return toolbar;\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n fixAndSetPosition() {\n return super.fixAndSetPosition(this.#getRotation());\n }\n getBaseTranslation() {\n return [0, 0];\n }\n getRect(tx, ty) {\n return super.getRect(tx, ty, this.#getRotation());\n }\n onceAdded() {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n this.div.focus();\n }\n remove() {\n this.#cleanDrawLayer();\n this._reportTelemetry({\n action: \"deleted\"\n });\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this.#cleanDrawLayer();\n } else if (parent) {\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.show(this._isVisible);\n if (mustBeSelected) {\n this.select();\n }\n }\n #changeThickness(thickness) {\n if (!this.#isFreeHighlight) {\n return;\n }\n this.#createFreeOutlines({\n highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n });\n this.fixAndSetPosition();\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n }\n #cleanDrawLayer() {\n if (this.#id === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this.#id);\n this.#id = null;\n this.parent.drawLayer.remove(this.#outlineId);\n this.#outlineId = null;\n }\n #addToDrawLayer(parent = this.parent) {\n if (this.#id !== null) {\n return;\n }\n ({\n id: this.#id,\n clipPathId: this.#clipPathId\n } = parent.drawLayer.draw(this.#highlightOutlines, this.color, this.#opacity));\n this.#outlineId = parent.drawLayer.drawOutline(this.#focusOutlines);\n if (this.#highlightDiv) {\n this.#highlightDiv.style.clipPath = this.#clipPathId;\n }\n }\n static #rotateBbox({\n x,\n y,\n width,\n height\n }, angle) {\n switch (angle) {\n case 90:\n return {\n x: 1 - y - height,\n y: x,\n width: height,\n height: width\n };\n case 180:\n return {\n x: 1 - x - width,\n y: 1 - y - height,\n width,\n height\n };\n case 270:\n return {\n x: y,\n y: 1 - x - width,\n width: height,\n height: width\n };\n }\n return {\n x,\n y,\n width,\n height\n };\n }\n rotate(angle) {\n const {\n drawLayer\n } = this.parent;\n let box;\n if (this.#isFreeHighlight) {\n angle = (angle - this.rotation + 360) % 360;\n box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n } else {\n box = HighlightEditor.#rotateBbox(this, angle);\n }\n drawLayer.rotate(this.#id, angle);\n drawLayer.rotate(this.#outlineId, angle);\n drawLayer.updateBox(this.#id, box);\n drawLayer.updateBox(this.#outlineId, HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle));\n }\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (this.#text) {\n div.setAttribute(\"aria-label\", this.#text);\n div.setAttribute(\"role\", \"mark\");\n }\n if (this.#isFreeHighlight) {\n div.classList.add(\"free\");\n } else {\n this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n signal: this._uiManager._signal\n });\n }\n const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n div.append(highlightDiv);\n highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n highlightDiv.className = \"internal\";\n highlightDiv.style.clipPath = this.#clipPathId;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n this.enableEditing();\n return div;\n }\n pointerover() {\n if (!this.isSelected) {\n this.parent.drawLayer.addClass(this.#outlineId, \"hovered\");\n }\n }\n pointerleave() {\n if (!this.isSelected) {\n this.parent.drawLayer.removeClass(this.#outlineId, \"hovered\");\n }\n }\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0:\n case 2:\n this.#setCaret(true);\n break;\n case 1:\n case 3:\n this.#setCaret(false);\n break;\n }\n }\n #setCaret(start) {\n if (!this.#anchorNode) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(this.#anchorNode, this.#anchorOffset);\n } else {\n selection.setPosition(this.#focusNode, this.#focusOffset);\n }\n }\n select() {\n super.select();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.removeClass(this.#outlineId, \"hovered\");\n this.parent?.drawLayer.addClass(this.#outlineId, \"selected\");\n }\n unselect() {\n super.unselect();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.removeClass(this.#outlineId, \"selected\");\n if (!this.#isFreeHighlight) {\n this.#setCaret(false);\n }\n }\n get _mustFixPosition() {\n return !this.#isFreeHighlight;\n }\n show(visible = this._isVisible) {\n super.show(visible);\n if (this.parent) {\n this.parent.drawLayer.show(this.#id, visible);\n this.parent.drawLayer.show(this.#outlineId, visible);\n }\n }\n #getRotation() {\n return this.#isFreeHighlight ? this.rotation : 0;\n }\n #serializeBoxes() {\n if (this.#isFreeHighlight) {\n return null;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const boxes = this.#boxes;\n const quadPoints = new Float32Array(boxes.length * 8);\n let i = 0;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const sx = x * pageWidth + pageX;\n const sy = (1 - y - height) * pageHeight + pageY;\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy + height * pageHeight;\n i += 8;\n }\n return quadPoints;\n }\n #serializeOutlines(rect) {\n return this.#highlightOutlines.serialize(rect, this.#getRotation());\n }\n static startHighlighting(parent, isLTR, {\n target: textLayer,\n x,\n y\n }) {\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n const ac = new AbortController();\n const signal = parent.combinedSignal(ac);\n const pointerDown = e => {\n e.preventDefault();\n e.stopPropagation();\n };\n const pointerUpCallback = e => {\n ac.abort();\n this.#endHighlight(parent, e);\n };\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerdown\", pointerDown, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n textLayer.addEventListener(\"pointermove\", this.#highlightMove.bind(this, parent), {\n signal\n });\n this._freeHighlight = new FreeHighlightOutliner({\n x,\n y\n }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 0.001);\n ({\n id: this._freeHighlightId,\n clipPathId: this._freeHighlightClipId\n } = parent.drawLayer.draw(this._freeHighlight, this._defaultColor, this._defaultOpacity, true));\n }\n static #highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n parent.drawLayer.updatePath(this._freeHighlightId, this._freeHighlight);\n }\n }\n static #endHighlight(parent, event) {\n if (!this._freeHighlight.isEmpty()) {\n parent.createAndAddNewEditor(event, false, {\n highlightId: this._freeHighlightId,\n highlightOutlines: this._freeHighlight.getOutlines(),\n clipPathId: this._freeHighlightClipId,\n methodOfCreation: \"main_toolbar\"\n });\n } else {\n parent.drawLayer.remove(this._freeHighlightId);\n }\n this._freeHighlightId = -1;\n this._freeHighlight = null;\n this._freeHighlightClipId = \"\";\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof HighlightAnnotationElement) {\n const {\n data: {\n quadPoints,\n rect,\n rotation,\n id,\n color,\n opacity,\n popupRef\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n opacity,\n quadPoints,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n } else if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n thickness,\n inkLists,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n }\n const {\n color,\n quadPoints,\n inkLists,\n opacity\n } = data;\n const editor = await super.deserialize(data, parent, uiManager);\n editor.color = Util.makeHexColor(...color);\n editor.#opacity = opacity || 1;\n if (inkLists) {\n editor.#thickness = data.thickness;\n }\n editor.annotationElementId = data.id || null;\n editor._initialData = initialData;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [pageX, pageY] = editor.pageTranslation;\n if (quadPoints) {\n const boxes = editor.#boxes = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n boxes.push({\n x: (quadPoints[i] - pageX) / pageWidth,\n y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight\n });\n }\n editor.#createOutlines();\n editor.#addToDrawLayer();\n editor.rotate(editor.rotation);\n } else if (inkLists) {\n editor.#isFreeHighlight = true;\n const points = inkLists[0];\n const point = {\n x: points[0] - pageX,\n y: pageHeight - (points[1] - pageY)\n };\n const outliner = new FreeHighlightOutliner(point, [0, 0, pageWidth, pageHeight], 1, editor.#thickness / 2, true, 0.001);\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n point.x = points[i] - pageX;\n point.y = pageHeight - (points[i + 1] - pageY);\n outliner.add(point);\n }\n const {\n id,\n clipPathId\n } = parent.drawLayer.draw(outliner, editor.color, editor._defaultOpacity, true);\n editor.#createFreeOutlines({\n highlightOutlines: outliner.getOutlines(),\n highlightId: id,\n clipPathId\n });\n editor.#addToDrawLayer();\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.color);\n const serialized = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color,\n opacity: this.#opacity,\n thickness: this.#thickness,\n quadPoints: this.#serializeBoxes(),\n outlines: this.#serializeOutlines(rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.#getRotation(),\n structTreeParentId: this._structTreeParentId\n };\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color\n } = this._initialData;\n return serialized.color.some((c, i) => c !== color[i]);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/ink.js\n\n\n\n\n\nclass InkEditor extends AnnotationEditor {\n #baseHeight = 0;\n #baseWidth = 0;\n #canvasContextMenuTimeoutId = null;\n #currentPath2D = new Path2D();\n #disableEditing = false;\n #drawingAC = null;\n #hasSomethingToDraw = false;\n #isCanvasInitialized = false;\n #observer = null;\n #pointerdownAC = null;\n #realWidth = 0;\n #realHeight = 0;\n #requestFrameCallback = null;\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 1;\n static _type = \"ink\";\n static _editorType = AnnotationEditorType.INK;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this.color = params.color || null;\n this.thickness = params.thickness || null;\n this.opacity = params.opacity || null;\n this.paths = [];\n this.bezierPath2D = [];\n this.allRawPaths = [];\n this.currentPath = [];\n this.scaleFactor = 1;\n this.translationX = this.translationY = 0;\n this.x = 0;\n this.y = 0;\n this._willKeepAspectRatio = true;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.INK_THICKNESS:\n InkEditor._defaultThickness = value;\n break;\n case AnnotationEditorParamsType.INK_COLOR:\n InkEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.INK_OPACITY:\n InkEditor._defaultOpacity = value / 100;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.INK_THICKNESS:\n this.#updateThickness(value);\n break;\n case AnnotationEditorParamsType.INK_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.INK_OPACITY:\n this.#updateOpacity(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || AnnotationEditor._defaultLineColor], [AnnotationEditorParamsType.INK_OPACITY, Math.round(InkEditor._defaultOpacity * 100)]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || AnnotationEditor._defaultLineColor], [AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity))]];\n }\n #updateThickness(thickness) {\n const setThickness = th => {\n this.thickness = th;\n this.#fitToContent();\n };\n const savedThickness = this.thickness;\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.#redraw();\n };\n const savedColor = this.color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateOpacity(opacity) {\n const setOpacity = op => {\n this.opacity = op;\n this.#redraw();\n };\n opacity /= 100;\n const savedOpacity = this.opacity;\n this.addCommands({\n cmd: setOpacity.bind(this, opacity),\n undo: setOpacity.bind(this, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_OPACITY,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n this.#setCanvasDims();\n }\n this.#fitToContent();\n }\n remove() {\n if (this.canvas === null) {\n return;\n }\n if (!this.isEmpty()) {\n this.commit();\n }\n this.canvas.width = this.canvas.height = 0;\n this.canvas.remove();\n this.canvas = null;\n if (this.#canvasContextMenuTimeoutId) {\n clearTimeout(this.#canvasContextMenuTimeoutId);\n this.#canvasContextMenuTimeoutId = null;\n }\n this.#observer?.disconnect();\n this.#observer = null;\n super.remove();\n }\n setParent(parent) {\n if (!this.parent && parent) {\n this._uiManager.removeShouldRescale(this);\n } else if (this.parent && parent === null) {\n this._uiManager.addShouldRescale(this);\n }\n super.setParent(parent);\n }\n onScaleChanging() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const width = this.width * parentWidth;\n const height = this.height * parentHeight;\n this.setDimensions(width, height);\n }\n enableEditMode() {\n if (this.#disableEditing || this.canvas === null) {\n return;\n }\n super.enableEditMode();\n this._isDraggable = false;\n this.#addPointerdownListener();\n }\n disableEditMode() {\n if (!this.isInEditMode() || this.canvas === null) {\n return;\n }\n super.disableEditMode();\n this._isDraggable = !this.isEmpty();\n this.div.classList.remove(\"editing\");\n this.#removePointerdownListener();\n }\n onceAdded() {\n this._isDraggable = !this.isEmpty();\n }\n isEmpty() {\n return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0;\n }\n #getInitialBBox() {\n const {\n parentRotation,\n parentDimensions: [width, height]\n } = this;\n switch (parentRotation) {\n case 90:\n return [0, height, height, width];\n case 180:\n return [width, height, width, height];\n case 270:\n return [width, 0, height, width];\n default:\n return [0, 0, width, height];\n }\n }\n #setStroke() {\n const {\n ctx,\n color,\n opacity,\n thickness,\n parentScale,\n scaleFactor\n } = this;\n ctx.lineWidth = thickness * parentScale / scaleFactor;\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.miterLimit = 10;\n ctx.strokeStyle = `${color}${opacityToHex(opacity)}`;\n }\n #startDrawing(x, y) {\n this.canvas.addEventListener(\"contextmenu\", noContextMenu, {\n signal: this._uiManager._signal\n });\n this.#removePointerdownListener();\n this.#drawingAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#drawingAC);\n this.canvas.addEventListener(\"pointerleave\", this.canvasPointerleave.bind(this), {\n signal\n });\n this.canvas.addEventListener(\"pointermove\", this.canvasPointermove.bind(this), {\n signal\n });\n this.canvas.addEventListener(\"pointerup\", this.canvasPointerup.bind(this), {\n signal\n });\n this.isEditing = true;\n if (!this.#isCanvasInitialized) {\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.thickness ||= InkEditor._defaultThickness;\n this.color ||= InkEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.opacity ??= InkEditor._defaultOpacity;\n }\n this.currentPath.push([x, y]);\n this.#hasSomethingToDraw = false;\n this.#setStroke();\n this.#requestFrameCallback = () => {\n this.#drawPoints();\n if (this.#requestFrameCallback) {\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n };\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n #draw(x, y) {\n const [lastX, lastY] = this.currentPath.at(-1);\n if (this.currentPath.length > 1 && x === lastX && y === lastY) {\n return;\n }\n const currentPath = this.currentPath;\n let path2D = this.#currentPath2D;\n currentPath.push([x, y]);\n this.#hasSomethingToDraw = true;\n if (currentPath.length <= 2) {\n path2D.moveTo(...currentPath[0]);\n path2D.lineTo(x, y);\n return;\n }\n if (currentPath.length === 3) {\n this.#currentPath2D = path2D = new Path2D();\n path2D.moveTo(...currentPath[0]);\n }\n this.#makeBezierCurve(path2D, ...currentPath.at(-3), ...currentPath.at(-2), x, y);\n }\n #endPath() {\n if (this.currentPath.length === 0) {\n return;\n }\n const lastPoint = this.currentPath.at(-1);\n this.#currentPath2D.lineTo(...lastPoint);\n }\n #stopDrawing(x, y) {\n this.#requestFrameCallback = null;\n x = Math.min(Math.max(x, 0), this.canvas.width);\n y = Math.min(Math.max(y, 0), this.canvas.height);\n this.#draw(x, y);\n this.#endPath();\n let bezier;\n if (this.currentPath.length !== 1) {\n bezier = this.#generateBezierPoints();\n } else {\n const xy = [x, y];\n bezier = [[xy, xy.slice(), xy.slice(), xy]];\n }\n const path2D = this.#currentPath2D;\n const currentPath = this.currentPath;\n this.currentPath = [];\n this.#currentPath2D = new Path2D();\n const cmd = () => {\n this.allRawPaths.push(currentPath);\n this.paths.push(bezier);\n this.bezierPath2D.push(path2D);\n this._uiManager.rebuild(this);\n };\n const undo = () => {\n this.allRawPaths.pop();\n this.paths.pop();\n this.bezierPath2D.pop();\n if (this.paths.length === 0) {\n this.remove();\n } else {\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n this.#fitToContent();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n #drawPoints() {\n if (!this.#hasSomethingToDraw) {\n return;\n }\n this.#hasSomethingToDraw = false;\n const thickness = Math.ceil(this.thickness * this.parentScale);\n const lastPoints = this.currentPath.slice(-3);\n const x = lastPoints.map(xy => xy[0]);\n const y = lastPoints.map(xy => xy[1]);\n const xMin = Math.min(...x) - thickness;\n const xMax = Math.max(...x) + thickness;\n const yMin = Math.min(...y) - thickness;\n const yMax = Math.max(...y) + thickness;\n const {\n ctx\n } = this;\n ctx.save();\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n ctx.stroke(this.#currentPath2D);\n ctx.restore();\n }\n #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) {\n const prevX = (x0 + x1) / 2;\n const prevY = (y0 + y1) / 2;\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n path2D.bezierCurveTo(prevX + 2 * (x1 - prevX) / 3, prevY + 2 * (y1 - prevY) / 3, x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3, x3, y3);\n }\n #generateBezierPoints() {\n const path = this.currentPath;\n if (path.length <= 2) {\n return [[path[0], path[0], path.at(-1), path.at(-1)]];\n }\n const bezierPoints = [];\n let i;\n let [x0, y0] = path[0];\n for (i = 1; i < path.length - 2; i++) {\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];\n const control2 = [x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3];\n bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);\n [x0, y0] = [x3, y3];\n }\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];\n const control2 = [x2 + 2 * (x1 - x2) / 3, y2 + 2 * (y1 - y2) / 3];\n bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);\n return bezierPoints;\n }\n #redraw() {\n if (this.isEmpty()) {\n this.#updateTransform();\n return;\n }\n this.#setStroke();\n const {\n canvas,\n ctx\n } = this;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n this.#updateTransform();\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n }\n commit() {\n if (this.#disableEditing) {\n return;\n }\n super.commit();\n this.isEditing = false;\n this.disableEditMode();\n this.setInForeground();\n this.#disableEditing = true;\n this.div.classList.add(\"disabled\");\n this.#fitToContent(true);\n this.select();\n this.parent.addInkEditorIfNeeded(true);\n this.moveInDOM();\n this.div.focus({\n preventScroll: true\n });\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n this.enableEditMode();\n }\n #addPointerdownListener() {\n if (this.#pointerdownAC) {\n return;\n }\n this.#pointerdownAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#pointerdownAC);\n this.canvas.addEventListener(\"pointerdown\", this.canvasPointerdown.bind(this), {\n signal\n });\n }\n #removePointerdownListener() {\n this.pointerdownAC?.abort();\n this.pointerdownAC = null;\n }\n canvasPointerdown(event) {\n if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n return;\n }\n this.setInForeground();\n event.preventDefault();\n if (!this.div.contains(document.activeElement)) {\n this.div.focus({\n preventScroll: true\n });\n }\n this.#startDrawing(event.offsetX, event.offsetY);\n }\n canvasPointermove(event) {\n event.preventDefault();\n this.#draw(event.offsetX, event.offsetY);\n }\n canvasPointerup(event) {\n event.preventDefault();\n this.#endDrawing(event);\n }\n canvasPointerleave(event) {\n this.#endDrawing(event);\n }\n #endDrawing(event) {\n this.#drawingAC?.abort();\n this.#drawingAC = null;\n this.#addPointerdownListener();\n if (this.#canvasContextMenuTimeoutId) {\n clearTimeout(this.#canvasContextMenuTimeoutId);\n }\n this.#canvasContextMenuTimeoutId = setTimeout(() => {\n this.#canvasContextMenuTimeoutId = null;\n this.canvas.removeEventListener(\"contextmenu\", noContextMenu);\n }, 10);\n this.#stopDrawing(event.offsetX, event.offsetY);\n this.addToAnnotationStorage();\n this.setInBackground();\n }\n #createCanvas() {\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = this.canvas.height = 0;\n this.canvas.className = \"inkEditorCanvas\";\n this.canvas.setAttribute(\"data-l10n-id\", \"pdfjs-ink-canvas\");\n this.div.append(this.canvas);\n this.ctx = this.canvas.getContext(\"2d\");\n }\n #createObserver() {\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n this._uiManager._signal.addEventListener(\"abort\", () => {\n this.#observer?.disconnect();\n this.#observer = null;\n }, {\n once: true\n });\n }\n get isResizable() {\n return !this.isEmpty() && this.#disableEditing;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.setAttribute(\"data-l10n-id\", \"pdfjs-ink\");\n const [x, y, w, h] = this.#getInitialBBox();\n this.setAt(x, y, 0, 0);\n this.setDims(w, h);\n this.#createCanvas();\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAspectRatio(this.width * parentWidth, this.height * parentHeight);\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this.#redraw();\n this.div.classList.add(\"disabled\");\n } else {\n this.div.classList.add(\"editing\");\n this.enableEditMode();\n }\n this.#createObserver();\n return this.div;\n }\n #setCanvasDims() {\n if (!this.#isCanvasInitialized) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.canvas.width = Math.ceil(this.width * parentWidth);\n this.canvas.height = Math.ceil(this.height * parentHeight);\n this.#updateTransform();\n }\n setDimensions(width, height) {\n const roundedWidth = Math.round(width);\n const roundedHeight = Math.round(height);\n if (this.#realWidth === roundedWidth && this.#realHeight === roundedHeight) {\n return;\n }\n this.#realWidth = roundedWidth;\n this.#realHeight = roundedHeight;\n this.canvas.style.visibility = \"hidden\";\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.fixAndSetPosition();\n if (this.#disableEditing) {\n this.#setScaleFactor(width, height);\n }\n this.#setCanvasDims();\n this.#redraw();\n this.canvas.style.visibility = \"visible\";\n this.fixDims();\n }\n #setScaleFactor(width, height) {\n const padding = this.#getPadding();\n const scaleFactorW = (width - padding) / this.#baseWidth;\n const scaleFactorH = (height - padding) / this.#baseHeight;\n this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\n }\n #updateTransform() {\n const padding = this.#getPadding() / 2;\n this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding);\n }\n static #buildPath2D(bezier) {\n const path2D = new Path2D();\n for (let i = 0, ii = bezier.length; i < ii; i++) {\n const [first, control1, control2, second] = bezier[i];\n if (i === 0) {\n path2D.moveTo(...first);\n }\n path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]);\n }\n return path2D;\n }\n static #toPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] += blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] + blX;\n points[i + 1] = x + blY;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] += blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trX - points[i + 1];\n points[i + 1] = trY - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n static #fromPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] -= blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] - blY;\n points[i + 1] = x - blX;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] -= blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trY - points[i + 1];\n points[i + 1] = trX - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n #serializePaths(s, tx, ty, rect) {\n const paths = [];\n const padding = this.thickness / 2;\n const shiftX = s * tx + padding;\n const shiftY = s * ty + padding;\n for (const bezier of this.paths) {\n const buffer = [];\n const points = [];\n for (let j = 0, jj = bezier.length; j < jj; j++) {\n const [first, control1, control2, second] = bezier[j];\n if (first[0] === second[0] && first[1] === second[1] && jj === 1) {\n const p0 = s * first[0] + shiftX;\n const p1 = s * first[1] + shiftY;\n buffer.push(p0, p1);\n points.push(p0, p1);\n break;\n }\n const p10 = s * first[0] + shiftX;\n const p11 = s * first[1] + shiftY;\n const p20 = s * control1[0] + shiftX;\n const p21 = s * control1[1] + shiftY;\n const p30 = s * control2[0] + shiftX;\n const p31 = s * control2[1] + shiftY;\n const p40 = s * second[0] + shiftX;\n const p41 = s * second[1] + shiftY;\n if (j === 0) {\n buffer.push(p10, p11);\n points.push(p10, p11);\n }\n buffer.push(p20, p21, p30, p31, p40, p41);\n points.push(p20, p21);\n if (j === jj - 1) {\n points.push(p40, p41);\n }\n }\n paths.push({\n bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation),\n points: InkEditor.#toPDFCoordinates(points, rect, this.rotation)\n });\n }\n return paths;\n }\n #getBbox() {\n let xMin = Infinity;\n let xMax = -Infinity;\n let yMin = Infinity;\n let yMax = -Infinity;\n for (const path of this.paths) {\n for (const [first, control1, control2, second] of path) {\n const bbox = Util.bezierBoundingBox(...first, ...control1, ...control2, ...second);\n xMin = Math.min(xMin, bbox[0]);\n yMin = Math.min(yMin, bbox[1]);\n xMax = Math.max(xMax, bbox[2]);\n yMax = Math.max(yMax, bbox[3]);\n }\n }\n return [xMin, yMin, xMax, yMax];\n }\n #getPadding() {\n return this.#disableEditing ? Math.ceil(this.thickness * this.parentScale) : 0;\n }\n #fitToContent(firstTime = false) {\n if (this.isEmpty()) {\n return;\n }\n if (!this.#disableEditing) {\n this.#redraw();\n return;\n }\n const bbox = this.#getBbox();\n const padding = this.#getPadding();\n this.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n this.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.setAspectRatio(width, height);\n const prevTranslationX = this.translationX;\n const prevTranslationY = this.translationY;\n this.translationX = -bbox[0];\n this.translationY = -bbox[1];\n this.#setCanvasDims();\n this.#redraw();\n this.#realWidth = width;\n this.#realHeight = height;\n this.setDims(width, height);\n const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;\n this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding);\n }\n static async deserialize(data, parent, uiManager) {\n if (data instanceof InkAnnotationElement) {\n return null;\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.thickness = data.thickness;\n editor.color = Util.makeHexColor(...data.color);\n editor.opacity = data.opacity;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const width = editor.width * pageWidth;\n const height = editor.height * pageHeight;\n const scaleFactor = editor.parentScale;\n const padding = data.thickness / 2;\n editor.#disableEditing = true;\n editor.#realWidth = Math.round(width);\n editor.#realHeight = Math.round(height);\n const {\n paths,\n rect,\n rotation\n } = data;\n for (let {\n bezier\n } of paths) {\n bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation);\n const path = [];\n editor.paths.push(path);\n let p0 = scaleFactor * (bezier[0] - padding);\n let p1 = scaleFactor * (bezier[1] - padding);\n for (let i = 2, ii = bezier.length; i < ii; i += 6) {\n const p10 = scaleFactor * (bezier[i] - padding);\n const p11 = scaleFactor * (bezier[i + 1] - padding);\n const p20 = scaleFactor * (bezier[i + 2] - padding);\n const p21 = scaleFactor * (bezier[i + 3] - padding);\n const p30 = scaleFactor * (bezier[i + 4] - padding);\n const p31 = scaleFactor * (bezier[i + 5] - padding);\n path.push([[p0, p1], [p10, p11], [p20, p21], [p30, p31]]);\n p0 = p30;\n p1 = p31;\n }\n const path2D = this.#buildPath2D(path);\n editor.bezierPath2D.push(path2D);\n }\n const bbox = editor.#getBbox();\n editor.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n editor.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n editor.#setScaleFactor(width, height);\n return editor;\n }\n serialize() {\n if (this.isEmpty()) {\n return null;\n }\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n return {\n annotationType: AnnotationEditorType.INK,\n color,\n thickness: this.thickness,\n opacity: this.opacity,\n paths: this.#serializePaths(this.scaleFactor / this.parentScale, this.translationX, this.translationY, rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n }\n}\n\n;// ./src/display/editor/stamp.js\n\n\n\n\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n #bitmapId = null;\n #bitmapPromise = null;\n #bitmapUrl = null;\n #bitmapFile = null;\n #bitmapFileName = \"\";\n #canvas = null;\n #observer = null;\n #resizeTimeoutId = null;\n #isSvg = false;\n #hasBeenAddedInUndoStack = false;\n static _type = \"stamp\";\n static _editorType = AnnotationEditorType.STAMP;\n constructor(params) {\n super({\n ...params,\n name: \"stampEditor\"\n });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static get supportedTypes() {\n const types = [\"apng\", \"avif\", \"bmp\", \"gif\", \"jpeg\", \"png\", \"svg+xml\", \"webp\", \"x-icon\"];\n return shadow(this, \"supportedTypes\", types.map(type => `image/${type}`));\n }\n static get supportedTypesStr() {\n return shadow(this, \"supportedTypesStr\", this.supportedTypes.join(\",\"));\n }\n static isHandlingMimeForPasting(mime) {\n return this.supportedTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor(AnnotationEditorType.STAMP, {\n bitmapFile: item.getAsFile()\n });\n }\n altTextFinish() {\n if (this._uiManager.useNewAltTextFlow) {\n this.div.hidden = false;\n }\n super.altTextFinish();\n }\n get telemetryFinalData() {\n return {\n type: \"stamp\",\n hasAltText: !!this.altTextData?.altText\n };\n }\n static computeTelemetryFinalData(data) {\n const hasAltTextStats = data.get(\"hasAltText\");\n return {\n hasAltText: hasAltTextStats.get(true) ?? 0,\n hasNoAltText: hasAltTextStats.get(false) ?? 0\n };\n }\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n if (data.file) {\n this.#bitmapFileName = data.file.name;\n }\n this.#createCanvas();\n }\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (!this.#canvas) {\n return;\n }\n if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._editToolbar.hide();\n this._uiManager.editAltText(this, true);\n return;\n }\n if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._reportTelemetry({\n action: \"pdfjs.image.image_added\",\n data: {\n alt_text_modal: false,\n alt_text_type: \"empty\"\n }\n });\n try {\n this.mlGuessAltText();\n } catch {}\n }\n this.div.focus();\n }\n async mlGuessAltText(imageData = null, updateAltTextData = true) {\n if (this.hasAltTextData()) {\n return null;\n }\n const {\n mlManager\n } = this._uiManager;\n if (!mlManager) {\n throw new Error(\"No ML.\");\n }\n if (!(await mlManager.isEnabledFor(\"altText\"))) {\n throw new Error(\"ML isn't enabled for alt text.\");\n }\n const {\n data,\n width,\n height\n } = imageData || this.copyCanvas(null, null, true).imageData;\n const response = await mlManager.guess({\n name: \"altText\",\n request: {\n data,\n width,\n height,\n channels: data.length / (width * height)\n }\n });\n if (!response) {\n throw new Error(\"No response from the AI service.\");\n }\n if (response.error) {\n throw new Error(\"Error from the AI service.\");\n }\n if (response.cancel) {\n return null;\n }\n if (!response.output) {\n throw new Error(\"No valid response from the AI service.\");\n }\n const altText = response.output;\n await this.setGuessedAltText(altText);\n if (updateAltTextData && !this.hasAltTextData()) {\n this.altTextData = {\n alt: altText,\n decorative: false\n };\n }\n return altText;\n }\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = StampEditor.supportedTypesStr;\n const signal = this._uiManager._signal;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this._reportTelemetry({\n action: \"pdfjs.image.image_selected\",\n data: {\n alt_text_modal: this._uiManager.useNewAltTextFlow\n }\n });\n this.#getBitmapFetched(data);\n }\n resolve();\n }, {\n signal\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n }, {\n signal\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n this.#observer?.disconnect();\n this.#observer = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded() {\n this._isDraggable = true;\n this.div.focus();\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId);\n }\n get isResizable() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.div.setAttribute(\"role\", \"figure\");\n this.addAltTextButton();\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n if (this.width && !this.annotationElementId) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n }\n return this.div;\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(width * parentWidth / pageWidth, height * parentHeight / pageHeight);\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n canvas.setAttribute(\"role\", \"img\");\n this.addContainer(canvas);\n if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n div.hidden = false;\n }\n this.#drawBitmap(width, height);\n this.#createObserver();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._reportTelemetry({\n action: \"inserted_image\"\n });\n if (this.#bitmapFileName) {\n canvas.setAttribute(\"aria-label\", this.#bitmapFileName);\n }\n }\n copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n if (!maxDataDimension) {\n maxDataDimension = 224;\n }\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n const outputScale = new OutputScale();\n let bitmap = this.#bitmap;\n let width = bitmapWidth,\n height = bitmapHeight;\n let canvas = null;\n if (maxPreviewDimension) {\n if (bitmapWidth > maxPreviewDimension || bitmapHeight > maxPreviewDimension) {\n const ratio = Math.min(maxPreviewDimension / bitmapWidth, maxPreviewDimension / bitmapHeight);\n width = Math.floor(bitmapWidth * ratio);\n height = Math.floor(bitmapHeight * ratio);\n }\n canvas = document.createElement(\"canvas\");\n const scaledWidth = canvas.width = Math.ceil(width * outputScale.sx);\n const scaledHeight = canvas.height = Math.ceil(height * outputScale.sy);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n }\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n let white = \"white\",\n black = \"#cfcfd8\";\n if (this._uiManager.hcmFilter !== \"none\") {\n black = \"black\";\n } else if (window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches) {\n white = \"#8f8f9d\";\n black = \"#42414d\";\n }\n const boxDim = 15;\n const boxDimWidth = boxDim * outputScale.sx;\n const boxDimHeight = boxDim * outputScale.sy;\n const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n const patternCtx = pattern.getContext(\"2d\");\n patternCtx.fillStyle = white;\n patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n patternCtx.fillStyle = black;\n patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n let imageData = null;\n if (createImageData) {\n let dataWidth, dataHeight;\n if (outputScale.symmetric && bitmap.width < maxDataDimension && bitmap.height < maxDataDimension) {\n dataWidth = bitmap.width;\n dataHeight = bitmap.height;\n } else {\n bitmap = this.#bitmap;\n if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n const ratio = Math.min(maxDataDimension / bitmapWidth, maxDataDimension / bitmapHeight);\n dataWidth = Math.floor(bitmapWidth * ratio);\n dataHeight = Math.floor(bitmapHeight * ratio);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n }\n }\n }\n const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n const offscreenCtx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n imageData = {\n width: dataWidth,\n height: dataHeight,\n data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n };\n }\n return {\n canvas,\n width,\n height,\n imageData\n };\n }\n #setDimensions(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap(width, height);\n }, TIME_TO_WAIT);\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap(width, height) {\n const outputScale = new OutputScale();\n const scaledWidth = Math.ceil(width * outputScale.sx);\n const scaledHeight = Math.ceil(height * outputScale.sy);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n return;\n }\n canvas.width = scaledWidth;\n canvas.height = scaledHeight;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n getImageForAltText() {\n return this.#canvas;\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n #createObserver() {\n if (!this._uiManager._signal) {\n return;\n }\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.#setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n this._uiManager._signal.addEventListener(\"abort\", () => {\n this.#observer?.disconnect();\n this.#observer = null;\n }, {\n once: true\n });\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof StampAnnotationElement) {\n const {\n data: {\n rect,\n rotation,\n id,\n structParent,\n popupRef\n },\n container,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n const canvas = container.querySelector(\"canvas\");\n const imageData = uiManager.imageManager.getFromCanvas(container.id, canvas);\n canvas.remove();\n const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n initialData = data = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId: imageData.id,\n bitmap: imageData.bitmap,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n accessibilityData: {\n decorative: false,\n altText\n },\n isSvg: false,\n structParent,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n const {\n rect,\n bitmap,\n bitmapUrl,\n bitmapId,\n isSvg,\n accessibilityData\n } = data;\n if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n if (bitmap) {\n editor.#bitmap = bitmap;\n }\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n editor.annotationElementId = data.id || null;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n editor._initialData = initialData;\n editor.#hasBeenAddedInUndoStack = !!initialData;\n return editor;\n }\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const serialized = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId: this.#bitmapId,\n pageIndex: this.pageIndex,\n rect: this.getRect(0, 0),\n rotation: this.rotation,\n isSvg: this.#isSvg,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.serializeAltText(true);\n return serialized;\n }\n const {\n decorative,\n altText\n } = this.serializeAltText(false);\n if (!decorative && altText) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: altText\n };\n }\n if (this.annotationElementId) {\n const changes = this.#hasElementChanged(serialized);\n if (changes.isSame) {\n return null;\n }\n if (changes.isSameAltText) {\n delete serialized.accessibilityData;\n } else {\n serialized.accessibilityData.structParent = this._initialData.structParent ?? -1;\n }\n }\n serialized.id = this.annotationElementId;\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n rect,\n pageIndex,\n accessibilityData: {\n altText\n }\n } = this._initialData;\n const isSameRect = serialized.rect.every((x, i) => Math.abs(x - rect[i]) < 1);\n const isSamePageIndex = serialized.pageIndex === pageIndex;\n const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n return {\n isSame: isSameRect && isSamePageIndex && isSameAltText,\n isSameAltText\n };\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #clickAC = null;\n #editorFocusTimeoutId = null;\n #editors = new Map();\n #hadPointerDown = false;\n #isCleaningUp = false;\n #isDisabling = false;\n #textLayer = null;\n #textSelectionAC = null;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor].map(type => [type._editorType, type]));\n constructor({\n uiManager,\n pageIndex,\n div,\n structTreeLayer,\n accessibilityManager,\n annotationLayer,\n drawLayer,\n textLayer,\n viewport,\n l10n\n }) {\n const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n, uiManager);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n this.#textLayer = textLayer;\n this.drawLayer = drawLayer;\n this._structTree = structTreeLayer;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n get isInvisible() {\n return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n }\n updateToolbar(mode) {\n this.#uiManager.updateToolbar(mode);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case AnnotationEditorType.INK:\n this.addInkEditorIfNeeded(false);\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.disableClick();\n break;\n case AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n addInkEditorIfNeeded(isCommitting) {\n if (this.#uiManager.getMode() !== AnnotationEditorType.INK) {\n return;\n }\n if (!isCommitting) {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.setInBackground();\n return;\n }\n }\n }\n const editor = this.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false);\n editor.setInBackground();\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n toggleDrawing(enabled = false) {\n this.div.classList.toggle(\"drawing\", !enabled);\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n }\n async enable() {\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n const annotationElementIds = new Set();\n for (const editor of this.#editors.values()) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n if (!this.#annotationLayer) {\n return;\n }\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = await this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n continue;\n }\n if (editor.serialize() !== null) {\n changedAnnotations.set(editor.annotationElementId, editor);\n continue;\n } else {\n resetAnnotations.set(editor.annotationElementId, editor);\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n if (this.#annotationLayer) {\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n this.#uiManager.addChangedExistingAnnotation(editor);\n if (editor.renderAnnotationElement(editable)) {\n editor.show(false);\n }\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#textSelectionAC) {\n this.#textSelectionAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n signal\n });\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#textSelectionAC) {\n this.#textSelectionAC.abort();\n this.#textSelectionAC = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n #textLayerPointerDown(event) {\n this.#uiManager.unselectAll();\n const {\n target\n } = event;\n if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\")) && this.#textLayer.div.contains(target)) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#uiManager.showAllEditors(\"highlight\", true, true);\n this.#textLayer.div.classList.add(\"free\");\n this.toggleDrawing();\n HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", {\n target: this.#textLayer.div,\n x: event.x,\n y: event.y\n });\n this.#textLayer.div.addEventListener(\"pointerup\", () => {\n this.#textLayer.div.classList.remove(\"free\");\n this.toggleDrawing(true);\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n event.preventDefault();\n }\n }\n enableClick() {\n if (this.#clickAC) {\n return;\n }\n this.#clickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#clickAC);\n this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n signal\n });\n this.div.addEventListener(\"pointerup\", this.pointerup.bind(this), {\n signal\n });\n }\n disableClick() {\n this.#clickAC?.abort();\n this.#clickAC = null;\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n if (!this.#isCleaningUp) {\n this.addInkEditorIfNeeded(false);\n }\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded();\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n editor.show();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getNextId() {\n return this.#uiManager.getId();\n }\n get #currentEditorType() {\n return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n }\n combinedSignal(ac) {\n return this.#uiManager.combinedSignal(ac);\n }\n #createNewEditor(params) {\n const editorType = this.#currentEditorType;\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n canCreateNewEmptyEditor() {\n return this.#currentEditorType?.canCreateNewEmptyEditor();\n }\n pasteEditor(mode, params) {\n this.#uiManager.updateToolbar(mode);\n this.#uiManager.updateMode(mode);\n const {\n offsetX,\n offsetY\n } = this.#getCenterPoint();\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params\n });\n if (editor) {\n this.add(editor);\n }\n }\n async deserialize(data) {\n return (await AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager)) || null;\n }\n createAndAddNewEditor(event, isCentered, data = {}) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n ...data\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.div.getBoundingClientRect();\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n return {\n offsetX,\n offsetY\n };\n }\n addNewEditor() {\n this.createAndAddNewEditor(this.#getCenterPoint(), true);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n if (this.#uiManager.getMode() === AnnotationEditorType.STAMP) {\n this.#uiManager.unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n destroy() {\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n this.#isCleaningUp = true;\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n this.#isCleaningUp = false;\n }\n render({\n viewport\n }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n setLayerDimensions(this.div, {\n rotation\n });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n this.addInkEditorIfNeeded(false);\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\n\n;// ./src/display/draw_layer.js\n\n\nclass DrawLayer {\n #parent = null;\n #id = 0;\n #mapping = new Map();\n #toUpdate = new Map();\n constructor({\n pageIndex\n }) {\n this.pageIndex = pageIndex;\n }\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n return;\n }\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n static #setBox(element, {\n x = 0,\n y = 0,\n width = 1,\n height = 1\n } = {}) {\n const {\n style\n } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n #createSVG(box) {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", true);\n DrawLayer.#setBox(svg, box);\n return svg;\n }\n #createClipPath(defs, pathId) {\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n return clipPathId;\n }\n draw(outlines, color, opacity, isPathUpdatable = false) {\n const id = this.#id++;\n const root = this.#createSVG(outlines.box);\n root.classList.add(...outlines.classNamesForDrawing);\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"d\", outlines.toSVGPath());\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = this.#createClipPath(defs, pathId);\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n root.setAttribute(\"fill\", color);\n root.setAttribute(\"fill-opacity\", opacity);\n use.setAttribute(\"href\", `#${pathId}`);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n drawOutline(outlines) {\n const id = this.#id++;\n const root = this.#createSVG(outlines.box);\n root.classList.add(...outlines.classNamesForOutlining);\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"d\", outlines.toSVGPath());\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (outlines.mustRemoveSelfIntersections) {\n const mask = DrawLayer._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_p${this.pageIndex}_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = DrawLayer._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = DrawLayer._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n use.classList.add(\"mask\");\n }\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n this.#mapping.set(id, root);\n return id;\n }\n finalizeLine(id, line) {\n const path = this.#toUpdate.get(id);\n this.#toUpdate.delete(id);\n this.updateBox(id, line.box);\n path.setAttribute(\"d\", line.toSVGPath());\n }\n updateLine(id, line) {\n const root = this.#mapping.get(id);\n const defs = root.firstChild;\n const path = defs.firstChild;\n path.setAttribute(\"d\", line.toSVGPath());\n }\n updatePath(id, line) {\n this.#toUpdate.get(id).setAttribute(\"d\", line.toSVGPath());\n }\n updateBox(id, box) {\n DrawLayer.#setBox(this.#mapping.get(id), box);\n }\n show(id, visible) {\n this.#mapping.get(id).classList.toggle(\"hidden\", !visible);\n }\n rotate(id, angle) {\n this.#mapping.get(id).setAttribute(\"data-main-rotation\", angle);\n }\n changeColor(id, color) {\n this.#mapping.get(id).setAttribute(\"fill\", color);\n }\n changeOpacity(id, opacity) {\n this.#mapping.get(id).setAttribute(\"fill-opacity\", opacity);\n }\n addClass(id, className) {\n this.#mapping.get(id).classList.add(className);\n }\n removeClass(id, className) {\n this.#mapping.get(id).classList.remove(className);\n }\n getSVGRoot(id) {\n return this.#mapping.get(id);\n }\n remove(id) {\n this.#toUpdate.delete(id);\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n this.#toUpdate.clear();\n }\n}\n\n;// ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst pdfjsVersion = \"4.8.69\";\nconst pdfjsBuild = \"3634dab10\";\n\nvar __webpack_exports__AbortException = __webpack_exports__.AbortException;\nvar __webpack_exports__AnnotationEditorLayer = __webpack_exports__.AnnotationEditorLayer;\nvar __webpack_exports__AnnotationEditorParamsType = __webpack_exports__.AnnotationEditorParamsType;\nvar __webpack_exports__AnnotationEditorType = __webpack_exports__.AnnotationEditorType;\nvar __webpack_exports__AnnotationEditorUIManager = __webpack_exports__.AnnotationEditorUIManager;\nvar __webpack_exports__AnnotationLayer = __webpack_exports__.AnnotationLayer;\nvar __webpack_exports__AnnotationMode = __webpack_exports__.AnnotationMode;\nvar __webpack_exports__ColorPicker = __webpack_exports__.ColorPicker;\nvar __webpack_exports__DOMSVGFactory = __webpack_exports__.DOMSVGFactory;\nvar __webpack_exports__DrawLayer = __webpack_exports__.DrawLayer;\nvar __webpack_exports__FeatureTest = __webpack_exports__.FeatureTest;\nvar __webpack_exports__GlobalWorkerOptions = __webpack_exports__.GlobalWorkerOptions;\nvar __webpack_exports__ImageKind = __webpack_exports__.ImageKind;\nvar __webpack_exports__InvalidPDFException = __webpack_exports__.InvalidPDFException;\nvar __webpack_exports__MissingPDFException = __webpack_exports__.MissingPDFException;\nvar __webpack_exports__OPS = __webpack_exports__.OPS;\nvar __webpack_exports__OutputScale = __webpack_exports__.OutputScale;\nvar __webpack_exports__PDFDataRangeTransport = __webpack_exports__.PDFDataRangeTransport;\nvar __webpack_exports__PDFDateString = __webpack_exports__.PDFDateString;\nvar __webpack_exports__PDFWorker = __webpack_exports__.PDFWorker;\nvar __webpack_exports__PasswordResponses = __webpack_exports__.PasswordResponses;\nvar __webpack_exports__PermissionFlag = __webpack_exports__.PermissionFlag;\nvar __webpack_exports__PixelsPerInch = __webpack_exports__.PixelsPerInch;\nvar __webpack_exports__RenderingCancelledException = __webpack_exports__.RenderingCancelledException;\nvar __webpack_exports__TextLayer = __webpack_exports__.TextLayer;\nvar __webpack_exports__UnexpectedResponseException = __webpack_exports__.UnexpectedResponseException;\nvar __webpack_exports__Util = __webpack_exports__.Util;\nvar __webpack_exports__VerbosityLevel = __webpack_exports__.VerbosityLevel;\nvar __webpack_exports__XfaLayer = __webpack_exports__.XfaLayer;\nvar __webpack_exports__build = __webpack_exports__.build;\nvar __webpack_exports__createValidAbsoluteUrl = __webpack_exports__.createValidAbsoluteUrl;\nvar __webpack_exports__fetchData = __webpack_exports__.fetchData;\nvar __webpack_exports__getDocument = __webpack_exports__.getDocument;\nvar __webpack_exports__getFilenameFromUrl = __webpack_exports__.getFilenameFromUrl;\nvar __webpack_exports__getPdfFilenameFromUrl = __webpack_exports__.getPdfFilenameFromUrl;\nvar __webpack_exports__getXfaPageViewport = __webpack_exports__.getXfaPageViewport;\nvar __webpack_exports__isDataScheme = __webpack_exports__.isDataScheme;\nvar __webpack_exports__isPdfFile = __webpack_exports__.isPdfFile;\nvar __webpack_exports__noContextMenu = __webpack_exports__.noContextMenu;\nvar __webpack_exports__normalizeUnicode = __webpack_exports__.normalizeUnicode;\nvar __webpack_exports__setLayerDimensions = __webpack_exports__.setLayerDimensions;\nvar __webpack_exports__shadow = __webpack_exports__.shadow;\nvar __webpack_exports__version = __webpack_exports__.version;\nexport { __webpack_exports__AbortException as AbortException, __webpack_exports__AnnotationEditorLayer as AnnotationEditorLayer, __webpack_exports__AnnotationEditorParamsType as AnnotationEditorParamsType, __webpack_exports__AnnotationEditorType as AnnotationEditorType, __webpack_exports__AnnotationEditorUIManager as AnnotationEditorUIManager, __webpack_exports__AnnotationLayer as AnnotationLayer, __webpack_exports__AnnotationMode as AnnotationMode, __webpack_exports__ColorPicker as ColorPicker, __webpack_exports__DOMSVGFactory as DOMSVGFactory, __webpack_exports__DrawLayer as DrawLayer, __webpack_exports__FeatureTest as FeatureTest, __webpack_exports__GlobalWorkerOptions as GlobalWorkerOptions, __webpack_exports__ImageKind as ImageKind, __webpack_exports__InvalidPDFException as InvalidPDFException, __webpack_exports__MissingPDFException as MissingPDFException, __webpack_exports__OPS as OPS, __webpack_exports__OutputScale as OutputScale, __webpack_exports__PDFDataRangeTransport as PDFDataRangeTransport, __webpack_exports__PDFDateString as PDFDateString, __webpack_exports__PDFWorker as PDFWorker, __webpack_exports__PasswordResponses as PasswordResponses, __webpack_exports__PermissionFlag as PermissionFlag, __webpack_exports__PixelsPerInch as PixelsPerInch, __webpack_exports__RenderingCancelledException as RenderingCancelledException, __webpack_exports__TextLayer as TextLayer, __webpack_exports__UnexpectedResponseException as UnexpectedResponseException, __webpack_exports__Util as Util, __webpack_exports__VerbosityLevel as VerbosityLevel, __webpack_exports__XfaLayer as XfaLayer, __webpack_exports__build as build, __webpack_exports__createValidAbsoluteUrl as createValidAbsoluteUrl, __webpack_exports__fetchData as fetchData, __webpack_exports__getDocument as getDocument, __webpack_exports__getFilenameFromUrl as getFilenameFromUrl, __webpack_exports__getPdfFilenameFromUrl as getPdfFilenameFromUrl, __webpack_exports__getXfaPageViewport as getXfaPageViewport, __webpack_exports__isDataScheme as isDataScheme, __webpack_exports__isPdfFile as isPdfFile, __webpack_exports__noContextMenu as noContextMenu, __webpack_exports__normalizeUnicode as normalizeUnicode, __webpack_exports__setLayerDimensions as setLayerDimensions, __webpack_exports__shadow as shadow, __webpack_exports__version as version };\n\n//# sourceMappingURL=pdf.mjs.map","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n// As defined on the list of supported events: https://reactjs.org/docs/events.html\nexport var clipboardEvents = ['onCopy', 'onCut', 'onPaste'];\nexport var compositionEvents = [\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate',\n];\nexport var focusEvents = ['onFocus', 'onBlur'];\nexport var formEvents = ['onInput', 'onInvalid', 'onReset', 'onSubmit'];\nexport var imageEvents = ['onLoad', 'onError'];\nexport var keyboardEvents = ['onKeyDown', 'onKeyPress', 'onKeyUp'];\nexport var mediaEvents = [\n 'onAbort',\n 'onCanPlay',\n 'onCanPlayThrough',\n 'onDurationChange',\n 'onEmptied',\n 'onEncrypted',\n 'onEnded',\n 'onError',\n 'onLoadedData',\n 'onLoadedMetadata',\n 'onLoadStart',\n 'onPause',\n 'onPlay',\n 'onPlaying',\n 'onProgress',\n 'onRateChange',\n 'onSeeked',\n 'onSeeking',\n 'onStalled',\n 'onSuspend',\n 'onTimeUpdate',\n 'onVolumeChange',\n 'onWaiting',\n];\nexport var mouseEvents = [\n 'onClick',\n 'onContextMenu',\n 'onDoubleClick',\n 'onMouseDown',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOut',\n 'onMouseOver',\n 'onMouseUp',\n];\nexport var dragEvents = [\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n];\nexport var selectionEvents = ['onSelect'];\nexport var touchEvents = ['onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart'];\nexport var pointerEvents = [\n 'onPointerDown',\n 'onPointerMove',\n 'onPointerUp',\n 'onPointerCancel',\n 'onGotPointerCapture',\n 'onLostPointerCapture',\n 'onPointerEnter',\n 'onPointerLeave',\n 'onPointerOver',\n 'onPointerOut',\n];\nexport var uiEvents = ['onScroll'];\nexport var wheelEvents = ['onWheel'];\nexport var animationEvents = [\n 'onAnimationStart',\n 'onAnimationEnd',\n 'onAnimationIteration',\n];\nexport var transitionEvents = ['onTransitionEnd'];\nexport var otherEvents = ['onToggle'];\nexport var changeEvents = ['onChange'];\nexport var allEvents = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], clipboardEvents, true), compositionEvents, true), focusEvents, true), formEvents, true), imageEvents, true), keyboardEvents, true), mediaEvents, true), mouseEvents, true), dragEvents, true), selectionEvents, true), touchEvents, true), pointerEvents, true), uiEvents, true), wheelEvents, true), animationEvents, true), transitionEvents, true), changeEvents, true), otherEvents, true);\n/**\n * Returns an object with on-event callback props curried with provided args.\n * @param {Object} props Props passed to a component.\n * @param {Function=} getArgs A function that returns argument(s) on-event callbacks\n * shall be curried with.\n */\nexport default function makeEventProps(props, getArgs) {\n var eventProps = {};\n allEvents.forEach(function (eventName) {\n var eventHandler = props[eventName];\n if (!eventHandler) {\n return;\n }\n if (getArgs) {\n eventProps[eventName] = (function (event) {\n return eventHandler(event, getArgs(eventName));\n });\n }\n else {\n eventProps[eventName] = eventHandler;\n }\n });\n return eventProps;\n}\n","export default function makeCancellablePromise(promise) {\n var isCancelled = false;\n var wrappedPromise = new Promise(function (resolve, reject) {\n promise\n .then(function (value) { return !isCancelled && resolve(value); })\n .catch(function (error) { return !isCancelled && reject(error); });\n });\n return {\n promise: wrappedPromise,\n cancel: function () {\n isCancelled = true;\n },\n };\n}\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","var has = Object.prototype.hasOwnProperty;\n\nfunction find(iter, tar, key) {\n\tfor (key of iter.keys()) {\n\t\tif (dequal(key, tar)) return key;\n\t}\n}\n\nexport function dequal(foo, bar) {\n\tvar ctor, len, tmp;\n\tif (foo === bar) return true;\n\n\tif (foo && bar && (ctor=foo.constructor) === bar.constructor) {\n\t\tif (ctor === Date) return foo.getTime() === bar.getTime();\n\t\tif (ctor === RegExp) return foo.toString() === bar.toString();\n\n\t\tif (ctor === Array) {\n\t\t\tif ((len=foo.length) === bar.length) {\n\t\t\t\twhile (len-- && dequal(foo[len], bar[len]));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (ctor === Set) {\n\t\t\tif (foo.size !== bar.size) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (len of foo) {\n\t\t\t\ttmp = len;\n\t\t\t\tif (tmp && typeof tmp === 'object') {\n\t\t\t\t\ttmp = find(bar, tmp);\n\t\t\t\t\tif (!tmp) return false;\n\t\t\t\t}\n\t\t\t\tif (!bar.has(tmp)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (ctor === Map) {\n\t\t\tif (foo.size !== bar.size) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (len of foo) {\n\t\t\t\ttmp = len[0];\n\t\t\t\tif (tmp && typeof tmp === 'object') {\n\t\t\t\t\ttmp = find(bar, tmp);\n\t\t\t\t\tif (!tmp) return false;\n\t\t\t\t}\n\t\t\t\tif (!dequal(len[1], bar.get(tmp))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (ctor === ArrayBuffer) {\n\t\t\tfoo = new Uint8Array(foo);\n\t\t\tbar = new Uint8Array(bar);\n\t\t} else if (ctor === DataView) {\n\t\t\tif ((len=foo.byteLength) === bar.byteLength) {\n\t\t\t\twhile (len-- && foo.getInt8(len) === bar.getInt8(len));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (ArrayBuffer.isView(foo)) {\n\t\t\tif ((len=foo.byteLength) === bar.byteLength) {\n\t\t\t\twhile (len-- && foo[len] === bar[len]);\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (!ctor || typeof foo === 'object') {\n\t\t\tlen = 0;\n\t\t\tfor (ctor in foo) {\n\t\t\t\tif (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n\t\t\t\tif (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;\n\t\t\t}\n\t\t\treturn Object.keys(bar).length === len;\n\t\t}\n\t}\n\n\treturn foo !== foo && bar !== bar;\n}\n","'use client';\nimport { createContext } from 'react';\nconst documentContext = createContext(null);\nexport default documentContext;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function Message({ children, type }) {\n return _jsx(\"div\", { className: `react-pdf__message react-pdf__message--${type}`, children: children });\n}\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport invariant from 'tiny-invariant';\nconst DEFAULT_LINK_REL = 'noopener noreferrer nofollow';\nexport default class LinkService {\n constructor() {\n this.externalLinkEnabled = true;\n this.externalLinkRel = undefined;\n this.externalLinkTarget = undefined;\n this.isInPresentationMode = false;\n this.pdfDocument = undefined;\n this.pdfViewer = undefined;\n }\n setDocument(pdfDocument) {\n this.pdfDocument = pdfDocument;\n }\n setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n setExternalLinkRel(externalLinkRel) {\n this.externalLinkRel = externalLinkRel;\n }\n setExternalLinkTarget(externalLinkTarget) {\n this.externalLinkTarget = externalLinkTarget;\n }\n setHistory() {\n // Intentionally empty\n }\n get pagesCount() {\n return this.pdfDocument ? this.pdfDocument.numPages : 0;\n }\n get page() {\n invariant(this.pdfViewer, 'PDF viewer is not initialized.');\n return this.pdfViewer.currentPageNumber || 0;\n }\n set page(value) {\n invariant(this.pdfViewer, 'PDF viewer is not initialized.');\n this.pdfViewer.currentPageNumber = value;\n }\n get rotation() {\n return 0;\n }\n set rotation(_value) {\n // Intentionally empty\n }\n goToDestination(dest) {\n return new Promise((resolve) => {\n invariant(this.pdfDocument, 'PDF document not loaded.');\n invariant(dest, 'Destination is not specified.');\n if (typeof dest === 'string') {\n this.pdfDocument.getDestination(dest).then(resolve);\n }\n else if (Array.isArray(dest)) {\n resolve(dest);\n }\n else {\n dest.then(resolve);\n }\n }).then((explicitDest) => {\n invariant(Array.isArray(explicitDest), `\"${explicitDest}\" is not a valid destination array.`);\n const destRef = explicitDest[0];\n new Promise((resolve) => {\n invariant(this.pdfDocument, 'PDF document not loaded.');\n if (destRef instanceof Object) {\n this.pdfDocument\n .getPageIndex(destRef)\n .then((pageIndex) => {\n resolve(pageIndex);\n })\n .catch(() => {\n invariant(false, `\"${destRef}\" is not a valid page reference.`);\n });\n }\n else if (typeof destRef === 'number') {\n resolve(destRef);\n }\n else {\n invariant(false, `\"${destRef}\" is not a valid destination reference.`);\n }\n }).then((pageIndex) => {\n const pageNumber = pageIndex + 1;\n invariant(this.pdfViewer, 'PDF viewer is not initialized.');\n invariant(pageNumber >= 1 && pageNumber <= this.pagesCount, `\"${pageNumber}\" is not a valid page number.`);\n this.pdfViewer.scrollPageIntoView({\n dest: explicitDest,\n pageIndex,\n pageNumber,\n });\n });\n });\n }\n navigateTo(dest) {\n this.goToDestination(dest);\n }\n goToPage(pageNumber) {\n const pageIndex = pageNumber - 1;\n invariant(this.pdfViewer, 'PDF viewer is not initialized.');\n invariant(pageNumber >= 1 && pageNumber <= this.pagesCount, `\"${pageNumber}\" is not a valid page number.`);\n this.pdfViewer.scrollPageIntoView({\n pageIndex,\n pageNumber,\n });\n }\n addLinkAttributes(link, url, newWindow) {\n link.href = url;\n link.rel = this.externalLinkRel || DEFAULT_LINK_REL;\n link.target = newWindow ? '_blank' : this.externalLinkTarget || '';\n }\n getDestinationHash() {\n return '#';\n }\n getAnchorUrl() {\n return '#';\n }\n setHash() {\n // Intentionally empty\n }\n executeNamedAction() {\n // Intentionally empty\n }\n cachePageRef() {\n // Intentionally empty\n }\n isPageVisible() {\n return true;\n }\n isPageCached() {\n return true;\n }\n executeSetOCGState() {\n // Intentionally empty\n }\n}\n","// As defined in https://github.com/mozilla/pdf.js/blob/d9fac3459609a807be6506fb3441b5da4b154d14/src/shared/util.js#L371-L374\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\nexport default PasswordResponses;\n","import invariant from 'tiny-invariant';\nimport warning from 'warning';\n/**\n * Checks if we're running in a browser environment.\n */\nexport const isBrowser = typeof window !== 'undefined';\n/**\n * Checks whether we're running from a local file system.\n */\nexport const isLocalFileSystem = isBrowser && window.location.protocol === 'file:';\n/**\n * Checks whether a variable is defined.\n *\n * @param {*} variable Variable to check\n */\nexport function isDefined(variable) {\n return typeof variable !== 'undefined';\n}\n/**\n * Checks whether a variable is defined and not null.\n *\n * @param {*} variable Variable to check\n */\nexport function isProvided(variable) {\n return isDefined(variable) && variable !== null;\n}\n/**\n * Checks whether a variable provided is a string.\n *\n * @param {*} variable Variable to check\n */\nexport function isString(variable) {\n return typeof variable === 'string';\n}\n/**\n * Checks whether a variable provided is an ArrayBuffer.\n *\n * @param {*} variable Variable to check\n */\nexport function isArrayBuffer(variable) {\n return variable instanceof ArrayBuffer;\n}\n/**\n * Checks whether a variable provided is a Blob.\n *\n * @param {*} variable Variable to check\n */\nexport function isBlob(variable) {\n invariant(isBrowser, 'isBlob can only be used in a browser environment');\n return variable instanceof Blob;\n}\n/**\n * Checks whether a variable provided is a data URI.\n *\n * @param {*} variable String to check\n */\nexport function isDataURI(variable) {\n return isString(variable) && /^data:/.test(variable);\n}\nexport function dataURItoByteString(dataURI) {\n invariant(isDataURI(dataURI), 'Invalid data URI.');\n const [headersString = '', dataString = ''] = dataURI.split(',');\n const headers = headersString.split(';');\n if (headers.indexOf('base64') !== -1) {\n return atob(dataString);\n }\n return unescape(dataString);\n}\nexport function getDevicePixelRatio() {\n return (isBrowser && window.devicePixelRatio) || 1;\n}\nconst allowFileAccessFromFilesTip = 'On Chromium based browsers, you can use --allow-file-access-from-files flag for debugging purposes.';\nexport function displayCORSWarning() {\n warning(!isLocalFileSystem, `Loading PDF as base64 strings/URLs may not work on protocols other than HTTP/HTTPS. ${allowFileAccessFromFilesTip}`);\n}\nexport function displayWorkerWarning() {\n warning(!isLocalFileSystem, `Loading PDF.js worker may not work on protocols other than HTTP/HTTPS. ${allowFileAccessFromFilesTip}`);\n}\nexport function cancelRunningTask(runningTask) {\n if (runningTask === null || runningTask === void 0 ? void 0 : runningTask.cancel)\n runningTask.cancel();\n}\nexport function makePageCallback(page, scale) {\n Object.defineProperty(page, 'width', {\n get() {\n return this.view[2] * scale;\n },\n configurable: true,\n });\n Object.defineProperty(page, 'height', {\n get() {\n return this.view[3] * scale;\n },\n configurable: true,\n });\n Object.defineProperty(page, 'originalWidth', {\n get() {\n return this.view[2];\n },\n configurable: true,\n });\n Object.defineProperty(page, 'originalHeight', {\n get() {\n return this.view[3];\n },\n configurable: true,\n });\n return page;\n}\nexport function isCancelException(error) {\n return error.name === 'RenderingCancelledException';\n}\nexport function loadFromFile(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n if (!reader.result) {\n return reject(new Error('Error while reading a file.'));\n }\n resolve(reader.result);\n };\n reader.onerror = (event) => {\n if (!event.target) {\n return reject(new Error('Error while reading a file.'));\n }\n const { error } = event.target;\n if (!error) {\n return reject(new Error('Error while reading a file.'));\n }\n switch (error.code) {\n case error.NOT_FOUND_ERR:\n return reject(new Error('Error while reading a file: File not found.'));\n case error.SECURITY_ERR:\n return reject(new Error('Error while reading a file: Security error.'));\n case error.ABORT_ERR:\n return reject(new Error('Error while reading a file: Aborted.'));\n default:\n return reject(new Error('Error while reading a file.'));\n }\n };\n reader.readAsArrayBuffer(file);\n });\n}\n","import { useReducer } from 'react';\nfunction reducer(state, action) {\n switch (action.type) {\n case 'RESOLVE':\n return { value: action.value, error: undefined };\n case 'REJECT':\n return { value: false, error: action.error };\n case 'RESET':\n return { value: undefined, error: undefined };\n default:\n return state;\n }\n}\nexport default function useResolver() {\n return useReducer((reducer), { value: undefined, error: undefined });\n}\n","'use client';\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react';\nimport makeEventProps from 'make-event-props';\nimport makeCancellable from 'make-cancellable-promise';\nimport clsx from 'clsx';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport { dequal } from 'dequal';\nimport * as pdfjs from 'pdfjs-dist';\nimport DocumentContext from './DocumentContext.js';\nimport Message from './Message.js';\nimport LinkService from './LinkService.js';\nimport PasswordResponses from './PasswordResponses.js';\nimport { cancelRunningTask, dataURItoByteString, displayCORSWarning, isArrayBuffer, isBlob, isBrowser, isDataURI, loadFromFile, } from './shared/utils.js';\nimport useResolver from './shared/hooks/useResolver.js';\nconst { PDFDataRangeTransport } = pdfjs;\nconst defaultOnPassword = (callback, reason) => {\n switch (reason) {\n case PasswordResponses.NEED_PASSWORD: {\n const password = prompt('Enter the password to open this PDF file.');\n callback(password);\n break;\n }\n case PasswordResponses.INCORRECT_PASSWORD: {\n const password = prompt('Invalid password. Please try again.');\n callback(password);\n break;\n }\n default:\n }\n};\nfunction isParameterObject(file) {\n return (typeof file === 'object' &&\n file !== null &&\n ('data' in file || 'range' in file || 'url' in file));\n}\n/**\n * Loads a document passed using `file` prop.\n */\nconst Document = forwardRef(function Document(_a, ref) {\n var { children, className, error = 'Failed to load PDF file.', externalLinkRel, externalLinkTarget, file, inputRef, imageResourcesPath, loading = 'Loading PDF…', noData = 'No PDF file specified.', onItemClick, onLoadError: onLoadErrorProps, onLoadProgress, onLoadSuccess: onLoadSuccessProps, onPassword = defaultOnPassword, onSourceError: onSourceErrorProps, onSourceSuccess: onSourceSuccessProps, options, renderMode, rotate } = _a, otherProps = __rest(_a, [\"children\", \"className\", \"error\", \"externalLinkRel\", \"externalLinkTarget\", \"file\", \"inputRef\", \"imageResourcesPath\", \"loading\", \"noData\", \"onItemClick\", \"onLoadError\", \"onLoadProgress\", \"onLoadSuccess\", \"onPassword\", \"onSourceError\", \"onSourceSuccess\", \"options\", \"renderMode\", \"rotate\"]);\n const [sourceState, sourceDispatch] = useResolver();\n const { value: source, error: sourceError } = sourceState;\n const [pdfState, pdfDispatch] = useResolver();\n const { value: pdf, error: pdfError } = pdfState;\n const linkService = useRef(new LinkService());\n const pages = useRef([]);\n const prevFile = useRef(undefined);\n const prevOptions = useRef(undefined);\n if (file && file !== prevFile.current && isParameterObject(file)) {\n warning(!dequal(file, prevFile.current), `File prop passed to <Document /> changed, but it's equal to previous one. This might result in unnecessary reloads. Consider memoizing the value passed to \"file\" prop.`);\n prevFile.current = file;\n }\n // Detect non-memoized changes in options prop\n if (options && options !== prevOptions.current) {\n warning(!dequal(options, prevOptions.current), `Options prop passed to <Document /> changed, but it's equal to previous one. This might result in unnecessary reloads. Consider memoizing the value passed to \"options\" prop.`);\n prevOptions.current = options;\n }\n const viewer = useRef({\n // Handling jumping to internal links target\n scrollPageIntoView: (args) => {\n const { dest, pageNumber, pageIndex = pageNumber - 1 } = args;\n // First, check if custom handling of onItemClick was provided\n if (onItemClick) {\n onItemClick({ dest, pageIndex, pageNumber });\n return;\n }\n // If not, try to look for target page within the <Document>.\n const page = pages.current[pageIndex];\n if (page) {\n // Scroll to the page automatically\n page.scrollIntoView();\n return;\n }\n warning(false, `An internal link leading to page ${pageNumber} was clicked, but neither <Document> was provided with onItemClick nor it was able to find the page within itself. Either provide onItemClick to <Document> and handle navigating by yourself or ensure that all pages are rendered within <Document>.`);\n },\n });\n useImperativeHandle(ref, () => ({\n linkService,\n pages,\n viewer,\n }), []);\n /**\n * Called when a document source is resolved correctly\n */\n function onSourceSuccess() {\n if (onSourceSuccessProps) {\n onSourceSuccessProps();\n }\n }\n /**\n * Called when a document source failed to be resolved correctly\n */\n function onSourceError() {\n if (!sourceError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, sourceError.toString());\n if (onSourceErrorProps) {\n onSourceErrorProps(sourceError);\n }\n }\n function resetSource() {\n sourceDispatch({ type: 'RESET' });\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: See https://github.com/biomejs/biome/issues/3080\n useEffect(resetSource, [file, sourceDispatch]);\n const findDocumentSource = useCallback(() => __awaiter(this, void 0, void 0, function* () {\n if (!file) {\n return null;\n }\n // File is a string\n if (typeof file === 'string') {\n if (isDataURI(file)) {\n const fileByteString = dataURItoByteString(file);\n return { data: fileByteString };\n }\n displayCORSWarning();\n return { url: file };\n }\n // File is PDFDataRangeTransport\n if (file instanceof PDFDataRangeTransport) {\n return { range: file };\n }\n // File is an ArrayBuffer\n if (isArrayBuffer(file)) {\n return { data: file };\n }\n /**\n * The cases below are browser-only.\n * If you're running on a non-browser environment, these cases will be of no use.\n */\n if (isBrowser) {\n // File is a Blob\n if (isBlob(file)) {\n const data = yield loadFromFile(file);\n return { data };\n }\n }\n // At this point, file must be an object\n invariant(typeof file === 'object', 'Invalid parameter in file, need either Uint8Array, string or a parameter object');\n invariant(isParameterObject(file), 'Invalid parameter object: need either .data, .range or .url');\n // File .url is a string\n if ('url' in file && typeof file.url === 'string') {\n if (isDataURI(file.url)) {\n const { url } = file, otherParams = __rest(file, [\"url\"]);\n const fileByteString = dataURItoByteString(url);\n return Object.assign({ data: fileByteString }, otherParams);\n }\n displayCORSWarning();\n }\n return file;\n }), [file]);\n useEffect(() => {\n const cancellable = makeCancellable(findDocumentSource());\n cancellable.promise\n .then((nextSource) => {\n sourceDispatch({ type: 'RESOLVE', value: nextSource });\n })\n .catch((error) => {\n sourceDispatch({ type: 'REJECT', error });\n });\n return () => {\n cancelRunningTask(cancellable);\n };\n }, [findDocumentSource, sourceDispatch]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (typeof source === 'undefined') {\n return;\n }\n if (source === false) {\n onSourceError();\n return;\n }\n onSourceSuccess();\n }, [source]);\n /**\n * Called when a document is read successfully\n */\n function onLoadSuccess() {\n if (!pdf) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onLoadSuccessProps) {\n onLoadSuccessProps(pdf);\n }\n pages.current = new Array(pdf.numPages);\n linkService.current.setDocument(pdf);\n }\n /**\n * Called when a document failed to read successfully\n */\n function onLoadError() {\n if (!pdfError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, pdfError.toString());\n if (onLoadErrorProps) {\n onLoadErrorProps(pdfError);\n }\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on source change\n useEffect(function resetDocument() {\n pdfDispatch({ type: 'RESET' });\n }, [pdfDispatch, source]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(function loadDocument() {\n if (!source) {\n return;\n }\n const documentInitParams = options\n ? Object.assign(Object.assign({}, source), options) : source;\n const destroyable = pdfjs.getDocument(documentInitParams);\n if (onLoadProgress) {\n destroyable.onProgress = onLoadProgress;\n }\n if (onPassword) {\n destroyable.onPassword = onPassword;\n }\n const loadingTask = destroyable;\n const loadingPromise = loadingTask.promise\n .then((nextPdf) => {\n pdfDispatch({ type: 'RESOLVE', value: nextPdf });\n })\n .catch((error) => {\n if (loadingTask.destroyed) {\n return;\n }\n pdfDispatch({ type: 'REJECT', error });\n });\n return () => {\n loadingPromise.finally(() => loadingTask.destroy());\n };\n }, [options, pdfDispatch, source]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (typeof pdf === 'undefined') {\n return;\n }\n if (pdf === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, [pdf]);\n useEffect(function setupLinkService() {\n linkService.current.setViewer(viewer.current);\n linkService.current.setExternalLinkRel(externalLinkRel);\n linkService.current.setExternalLinkTarget(externalLinkTarget);\n }, [externalLinkRel, externalLinkTarget]);\n const registerPage = useCallback((pageIndex, ref) => {\n pages.current[pageIndex] = ref;\n }, []);\n const unregisterPage = useCallback((pageIndex) => {\n delete pages.current[pageIndex];\n }, []);\n const childContext = useMemo(() => ({\n imageResourcesPath,\n linkService: linkService.current,\n onItemClick,\n pdf,\n registerPage,\n renderMode,\n rotate,\n unregisterPage,\n }), [imageResourcesPath, onItemClick, pdf, registerPage, renderMode, rotate, unregisterPage]);\n const eventProps = useMemo(() => makeEventProps(otherProps, () => pdf), \n // biome-ignore lint/correctness/useExhaustiveDependencies: FIXME\n [otherProps, pdf]);\n function renderChildren() {\n return _jsx(DocumentContext.Provider, { value: childContext, children: children });\n }\n function renderContent() {\n if (!file) {\n return _jsx(Message, { type: \"no-data\", children: typeof noData === 'function' ? noData() : noData });\n }\n if (pdf === undefined || pdf === null) {\n return (_jsx(Message, { type: \"loading\", children: typeof loading === 'function' ? loading() : loading }));\n }\n if (pdf === false) {\n return _jsx(Message, { type: \"error\", children: typeof error === 'function' ? error() : error });\n }\n return renderChildren();\n }\n return (_jsx(\"div\", Object.assign({ className: clsx('react-pdf__Document', className), \n // Assertion is needed for React 18 compatibility\n ref: inputRef, style: {\n ['--scale-factor']: '1',\n } }, eventProps, { children: renderContent() })));\n});\nexport default Document;\n","'use client';\nimport { createContext } from 'react';\nconst outlineContext = createContext(null);\nexport default outlineContext;\n","export default class Ref {\n constructor({ num, gen }) {\n this.num = num;\n this.gen = gen;\n }\n toString() {\n let str = `${this.num}R`;\n if (this.gen !== 0) {\n str += this.gen;\n }\n return str;\n }\n}\n","'use client';\nimport { useRef } from 'react';\nimport { isDefined } from '../utils.js';\nexport default function useCachedValue(getter) {\n const ref = useRef(undefined);\n const currentValue = ref.current;\n if (isDefined(currentValue)) {\n return () => currentValue;\n }\n return () => {\n const value = getter();\n ref.current = value;\n return value;\n };\n}\n","import { useContext } from 'react';\nimport DocumentContext from '../../DocumentContext.js';\nexport default function useDocumentContext() {\n return useContext(DocumentContext);\n}\n","import { useContext } from 'react';\nimport OutlineContext from '../../OutlineContext.js';\nexport default function useOutlineContext() {\n return useContext(OutlineContext);\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport invariant from 'tiny-invariant';\nimport Ref from './Ref.js';\nimport useCachedValue from './shared/hooks/useCachedValue.js';\nimport useDocumentContext from './shared/hooks/useDocumentContext.js';\nimport useOutlineContext from './shared/hooks/useOutlineContext.js';\nexport default function OutlineItem(props) {\n const documentContext = useDocumentContext();\n const outlineContext = useOutlineContext();\n invariant(outlineContext, 'Unable to find Outline context.');\n const mergedProps = Object.assign(Object.assign(Object.assign({}, documentContext), outlineContext), props);\n const { item, linkService, onItemClick, pdf } = mergedProps, otherProps = __rest(mergedProps, [\"item\", \"linkService\", \"onItemClick\", \"pdf\"]);\n invariant(pdf, 'Attempted to load an outline, but no document was specified. Wrap <Outline /> in a <Document /> or pass explicit `pdf` prop.');\n const getDestination = useCachedValue(() => {\n if (typeof item.dest === 'string') {\n return pdf.getDestination(item.dest);\n }\n return item.dest;\n });\n const getPageIndex = useCachedValue(() => __awaiter(this, void 0, void 0, function* () {\n const destination = yield getDestination();\n if (!destination) {\n throw new Error('Destination not found.');\n }\n const [ref] = destination;\n return pdf.getPageIndex(new Ref(ref));\n }));\n const getPageNumber = useCachedValue(() => __awaiter(this, void 0, void 0, function* () {\n const pageIndex = yield getPageIndex();\n return pageIndex + 1;\n }));\n function onClick(event) {\n event.preventDefault();\n invariant(onItemClick || linkService, 'Either onItemClick callback or linkService must be defined in order to navigate to an outline item.');\n if (onItemClick) {\n Promise.all([getDestination(), getPageIndex(), getPageNumber()]).then(([dest, pageIndex, pageNumber]) => {\n onItemClick({\n dest,\n pageIndex,\n pageNumber,\n });\n });\n }\n else if (linkService) {\n linkService.goToDestination(item.dest);\n }\n }\n function renderSubitems() {\n if (!item.items || !item.items.length) {\n return null;\n }\n const { items: subitems } = item;\n return (_jsx(\"ul\", { children: subitems.map((subitem, subitemIndex) => (_jsx(OutlineItem, Object.assign({ item: subitem, pdf: pdf }, otherProps), typeof subitem.dest === 'string' ? subitem.dest : subitemIndex))) }));\n }\n return (_jsxs(\"li\", { children: [_jsx(\"a\", { href: \"#\", onClick: onClick, children: item.title }), renderSubitems()] }));\n}\n","'use client';\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect, useMemo } from 'react';\nimport makeCancellable from 'make-cancellable-promise';\nimport makeEventProps from 'make-event-props';\nimport clsx from 'clsx';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport OutlineContext from './OutlineContext.js';\nimport OutlineItem from './OutlineItem.js';\nimport { cancelRunningTask } from './shared/utils.js';\nimport useDocumentContext from './shared/hooks/useDocumentContext.js';\nimport useResolver from './shared/hooks/useResolver.js';\n/**\n * Displays an outline (table of contents).\n *\n * Should be placed inside `<Document />`. Alternatively, it can have `pdf` prop passed, which can be obtained from `<Document />`'s `onLoadSuccess` callback function.\n */\nexport default function Outline(props) {\n const documentContext = useDocumentContext();\n const mergedProps = Object.assign(Object.assign({}, documentContext), props);\n const { className, inputRef, onItemClick, onLoadError: onLoadErrorProps, onLoadSuccess: onLoadSuccessProps, pdf } = mergedProps, otherProps = __rest(mergedProps, [\"className\", \"inputRef\", \"onItemClick\", \"onLoadError\", \"onLoadSuccess\", \"pdf\"]);\n invariant(pdf, 'Attempted to load an outline, but no document was specified. Wrap <Outline /> in a <Document /> or pass explicit `pdf` prop.');\n const [outlineState, outlineDispatch] = useResolver();\n const { value: outline, error: outlineError } = outlineState;\n /**\n * Called when an outline is read successfully\n */\n function onLoadSuccess() {\n if (typeof outline === 'undefined' || outline === false) {\n return;\n }\n if (onLoadSuccessProps) {\n onLoadSuccessProps(outline);\n }\n }\n /**\n * Called when an outline failed to read successfully\n */\n function onLoadError() {\n if (!outlineError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, outlineError.toString());\n if (onLoadErrorProps) {\n onLoadErrorProps(outlineError);\n }\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on pdf change\n useEffect(function resetOutline() {\n outlineDispatch({ type: 'RESET' });\n }, [outlineDispatch, pdf]);\n useEffect(function loadOutline() {\n if (!pdf) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n const cancellable = makeCancellable(pdf.getOutline());\n const runningTask = cancellable;\n cancellable.promise\n .then((nextOutline) => {\n outlineDispatch({ type: 'RESOLVE', value: nextOutline });\n })\n .catch((error) => {\n outlineDispatch({ type: 'REJECT', error });\n });\n return () => cancelRunningTask(runningTask);\n }, [outlineDispatch, pdf]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (outline === undefined) {\n return;\n }\n if (outline === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, [outline]);\n const childContext = useMemo(() => ({\n onItemClick,\n }), [onItemClick]);\n const eventProps = useMemo(() => makeEventProps(otherProps, () => outline), \n // biome-ignore lint/correctness/useExhaustiveDependencies: FIXME\n [otherProps, outline]);\n if (!outline) {\n return null;\n }\n function renderOutline() {\n if (!outline) {\n return null;\n }\n return (_jsx(\"ul\", { children: outline.map((item, itemIndex) => (_jsx(OutlineItem, { item: item, pdf: pdf }, typeof item.dest === 'string' ? item.dest : itemIndex))) }));\n }\n return (_jsx(\"div\", Object.assign({ className: clsx('react-pdf__Outline', className), ref: inputRef }, eventProps, { children: _jsx(OutlineContext.Provider, { value: childContext, children: renderOutline() }) })));\n}\n","/**\n * A function that merges React refs into one.\n * Supports both functions and ref objects created using createRef() and useRef().\n *\n * Usage:\n * ```tsx\n * <div ref={mergeRefs(ref1, ref2, ref3)} />\n * ```\n *\n * @param {(React.Ref<T> | undefined)[]} inputRefs Array of refs\n * @returns {React.Ref<T> | React.RefCallback<T>} Merged refs\n */\nexport default function mergeRefs() {\n var inputRefs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n inputRefs[_i] = arguments[_i];\n }\n var filteredInputRefs = inputRefs.filter(Boolean);\n if (filteredInputRefs.length <= 1) {\n var firstRef = filteredInputRefs[0];\n return firstRef || null;\n }\n return function mergedRefs(ref) {\n filteredInputRefs.forEach(function (inputRef) {\n if (typeof inputRef === 'function') {\n inputRef(ref);\n }\n else if (inputRef) {\n inputRef.current = ref;\n }\n });\n };\n}\n","'use client';\nimport { createContext } from 'react';\nconst pageContext = createContext(null);\nexport default pageContext;\n","// From pdfjs-dist/lib/web/struct_tree_layer_builder.js\nexport const PDF_ROLE_TO_HTML_ROLE = {\n // Document level structure types\n Document: null, // There's a \"document\" role, but it doesn't make sense here.\n DocumentFragment: null,\n // Grouping level structure types\n Part: 'group',\n Sect: 'group', // XXX: There's a \"section\" role, but it's abstract.\n Div: 'group',\n Aside: 'note',\n NonStruct: 'none',\n // Block level structure types\n P: null,\n // H<n>,\n H: 'heading',\n Title: null,\n FENote: 'note',\n // Sub-block level structure type\n Sub: 'group',\n // General inline level structure types\n Lbl: null,\n Span: null,\n Em: null,\n Strong: null,\n Link: 'link',\n Annot: 'note',\n Form: 'form',\n // Ruby and Warichu structure types\n Ruby: null,\n RB: null,\n RT: null,\n RP: null,\n Warichu: null,\n WT: null,\n WP: null,\n // List standard structure types\n L: 'list',\n LI: 'listitem',\n LBody: null,\n // Table standard structure types\n Table: 'table',\n TR: 'row',\n TH: 'columnheader',\n TD: 'cell',\n THead: 'columnheader',\n TBody: null,\n TFoot: null,\n // Standard structure type Caption\n Caption: null,\n // Standard structure type Figure\n Figure: 'figure',\n // Standard structure type Formula\n Formula: null,\n // standard structure type Artifact\n Artifact: null,\n};\nexport const HEADING_PATTERN = /^H(\\d+)$/;\n","import { HEADING_PATTERN, PDF_ROLE_TO_HTML_ROLE } from './constants.js';\nexport function isPdfRole(role) {\n return role in PDF_ROLE_TO_HTML_ROLE;\n}\nexport function isStructTreeNode(node) {\n return 'children' in node;\n}\nexport function isStructTreeNodeWithOnlyContentChild(node) {\n if (!isStructTreeNode(node)) {\n return false;\n }\n return node.children.length === 1 && 0 in node.children && 'id' in node.children[0];\n}\nexport function getRoleAttributes(node) {\n const attributes = {};\n if (isStructTreeNode(node)) {\n const { role } = node;\n const matches = role.match(HEADING_PATTERN);\n if (matches) {\n attributes.role = 'heading';\n attributes['aria-level'] = Number(matches[1]);\n }\n else if (isPdfRole(role)) {\n const htmlRole = PDF_ROLE_TO_HTML_ROLE[role];\n if (htmlRole) {\n attributes.role = htmlRole;\n }\n }\n }\n return attributes;\n}\nexport function getBaseAttributes(node) {\n const attributes = {};\n if (isStructTreeNode(node)) {\n if (node.alt !== undefined) {\n attributes['aria-label'] = node.alt;\n }\n if (node.lang !== undefined) {\n attributes.lang = node.lang;\n }\n if (isStructTreeNodeWithOnlyContentChild(node)) {\n const [child] = node.children;\n if (child) {\n const childAttributes = getBaseAttributes(child);\n return Object.assign(Object.assign({}, attributes), childAttributes);\n }\n }\n }\n else {\n if ('id' in node) {\n attributes['aria-owns'] = node.id;\n }\n }\n return attributes;\n}\nexport function getAttributes(node) {\n if (!node) {\n return null;\n }\n return Object.assign(Object.assign({}, getRoleAttributes(node)), getBaseAttributes(node));\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useMemo } from 'react';\nimport { getAttributes, isStructTreeNode, isStructTreeNodeWithOnlyContentChild, } from './shared/structTreeUtils.js';\nexport default function StructTreeItem({ className, node, }) {\n const attributes = useMemo(() => getAttributes(node), [node]);\n const children = useMemo(() => {\n if (!isStructTreeNode(node)) {\n return null;\n }\n if (isStructTreeNodeWithOnlyContentChild(node)) {\n return null;\n }\n return node.children.map((child, index) => {\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: index is stable here\n _jsx(StructTreeItem, { node: child }, index));\n });\n }, [node]);\n return (_jsx(\"span\", Object.assign({ className: className }, attributes, { children: children })));\n}\n","import { useContext } from 'react';\nimport PageContext from '../../PageContext.js';\nexport default function usePageContext() {\n return useContext(PageContext);\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect } from 'react';\nimport makeCancellable from 'make-cancellable-promise';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport StructTreeItem from './StructTreeItem.js';\nimport usePageContext from './shared/hooks/usePageContext.js';\nimport useResolver from './shared/hooks/useResolver.js';\nimport { cancelRunningTask } from './shared/utils.js';\nexport default function StructTree() {\n const pageContext = usePageContext();\n invariant(pageContext, 'Unable to find Page context.');\n const { onGetStructTreeError: onGetStructTreeErrorProps, onGetStructTreeSuccess: onGetStructTreeSuccessProps, } = pageContext;\n const [structTreeState, structTreeDispatch] = useResolver();\n const { value: structTree, error: structTreeError } = structTreeState;\n const { customTextRenderer, page } = pageContext;\n function onLoadSuccess() {\n if (!structTree) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onGetStructTreeSuccessProps) {\n onGetStructTreeSuccessProps(structTree);\n }\n }\n function onLoadError() {\n if (!structTreeError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, structTreeError.toString());\n if (onGetStructTreeErrorProps) {\n onGetStructTreeErrorProps(structTreeError);\n }\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on page change\n useEffect(function resetStructTree() {\n structTreeDispatch({ type: 'RESET' });\n }, [structTreeDispatch, page]);\n useEffect(function loadStructTree() {\n if (customTextRenderer) {\n // TODO: Document why this is necessary\n return;\n }\n if (!page) {\n return;\n }\n const cancellable = makeCancellable(page.getStructTree());\n const runningTask = cancellable;\n cancellable.promise\n .then((nextStructTree) => {\n structTreeDispatch({ type: 'RESOLVE', value: nextStructTree });\n })\n .catch((error) => {\n structTreeDispatch({ type: 'REJECT', error });\n });\n return () => cancelRunningTask(runningTask);\n }, [customTextRenderer, page, structTreeDispatch]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (structTree === undefined) {\n return;\n }\n if (structTree === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, [structTree]);\n if (!structTree) {\n return null;\n }\n return _jsx(StructTreeItem, { className: \"react-pdf__Page__structTree structTree\", node: structTree });\n}\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport mergeRefs from 'merge-refs';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport * as pdfjs from 'pdfjs-dist';\nimport StructTree from '../StructTree.js';\nimport usePageContext from '../shared/hooks/usePageContext.js';\nimport { cancelRunningTask, getDevicePixelRatio, isCancelException, makePageCallback, } from '../shared/utils.js';\nconst ANNOTATION_MODE = pdfjs.AnnotationMode;\nexport default function Canvas(props) {\n const pageContext = usePageContext();\n invariant(pageContext, 'Unable to find Page context.');\n const mergedProps = Object.assign(Object.assign({}, pageContext), props);\n const { _className, canvasBackground, devicePixelRatio = getDevicePixelRatio(), onRenderError: onRenderErrorProps, onRenderSuccess: onRenderSuccessProps, page, renderForms, renderTextLayer, rotate, scale, } = mergedProps;\n const { canvasRef } = props;\n invariant(page, 'Attempted to render page canvas, but no page was specified.');\n const canvasElement = useRef(null);\n /**\n * Called when a page is rendered successfully.\n */\n function onRenderSuccess() {\n if (!page) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onRenderSuccessProps) {\n onRenderSuccessProps(makePageCallback(page, scale));\n }\n }\n /**\n * Called when a page fails to render.\n */\n function onRenderError(error) {\n if (isCancelException(error)) {\n return;\n }\n warning(false, error.toString());\n if (onRenderErrorProps) {\n onRenderErrorProps(error);\n }\n }\n const renderViewport = useMemo(() => page.getViewport({ scale: scale * devicePixelRatio, rotation: rotate }), [devicePixelRatio, page, rotate, scale]);\n const viewport = useMemo(() => page.getViewport({ scale, rotation: rotate }), [page, rotate, scale]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(function drawPageOnCanvas() {\n if (!page) {\n return;\n }\n // Ensures the canvas will be re-rendered from scratch. Otherwise all form data will stay.\n page.cleanup();\n const { current: canvas } = canvasElement;\n if (!canvas) {\n return;\n }\n canvas.width = renderViewport.width;\n canvas.height = renderViewport.height;\n canvas.style.width = `${Math.floor(viewport.width)}px`;\n canvas.style.height = `${Math.floor(viewport.height)}px`;\n canvas.style.visibility = 'hidden';\n const renderContext = {\n annotationMode: renderForms ? ANNOTATION_MODE.ENABLE_FORMS : ANNOTATION_MODE.ENABLE,\n canvasContext: canvas.getContext('2d', { alpha: false }),\n viewport: renderViewport,\n };\n if (canvasBackground) {\n renderContext.background = canvasBackground;\n }\n const cancellable = page.render(renderContext);\n const runningTask = cancellable;\n cancellable.promise\n .then(() => {\n canvas.style.visibility = '';\n onRenderSuccess();\n })\n .catch(onRenderError);\n return () => cancelRunningTask(runningTask);\n }, [canvasBackground, page, renderForms, renderViewport, viewport]);\n const cleanup = useCallback(() => {\n const { current: canvas } = canvasElement;\n /**\n * Zeroing the width and height cause most browsers to release graphics\n * resources immediately, which can greatly reduce memory consumption.\n */\n if (canvas) {\n canvas.width = 0;\n canvas.height = 0;\n }\n }, []);\n useEffect(() => cleanup, [cleanup]);\n return (_jsx(\"canvas\", { className: `${_className}__canvas`, dir: \"ltr\", ref: mergeRefs(canvasRef, canvasElement), style: {\n display: 'block',\n userSelect: 'none',\n }, children: renderTextLayer ? _jsx(StructTree, {}) : null }));\n}\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';\nimport makeCancellable from 'make-cancellable-promise';\nimport clsx from 'clsx';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport * as pdfjs from 'pdfjs-dist';\nimport usePageContext from '../shared/hooks/usePageContext.js';\nimport useResolver from '../shared/hooks/useResolver.js';\nimport { cancelRunningTask } from '../shared/utils.js';\nfunction isTextItem(item) {\n return 'str' in item;\n}\nexport default function TextLayer() {\n const pageContext = usePageContext();\n invariant(pageContext, 'Unable to find Page context.');\n const { customTextRenderer, onGetTextError, onGetTextSuccess, onRenderTextLayerError, onRenderTextLayerSuccess, page, pageIndex, pageNumber, rotate, scale, } = pageContext;\n invariant(page, 'Attempted to load page text content, but no page was specified.');\n const [textContentState, textContentDispatch] = useResolver();\n const { value: textContent, error: textContentError } = textContentState;\n const layerElement = useRef(null);\n warning(Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--react-pdf-text-layer'), 10) === 1, 'TextLayer styles not found. Read more: https://github.com/wojtekmaj/react-pdf#support-for-text-layer');\n /**\n * Called when a page text content is read successfully\n */\n function onLoadSuccess() {\n if (!textContent) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onGetTextSuccess) {\n onGetTextSuccess(textContent);\n }\n }\n /**\n * Called when a page text content failed to read successfully\n */\n function onLoadError() {\n if (!textContentError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, textContentError.toString());\n if (onGetTextError) {\n onGetTextError(textContentError);\n }\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on page change\n useEffect(function resetTextContent() {\n textContentDispatch({ type: 'RESET' });\n }, [page, textContentDispatch]);\n useEffect(function loadTextContent() {\n if (!page) {\n return;\n }\n const cancellable = makeCancellable(page.getTextContent());\n const runningTask = cancellable;\n cancellable.promise\n .then((nextTextContent) => {\n textContentDispatch({ type: 'RESOLVE', value: nextTextContent });\n })\n .catch((error) => {\n textContentDispatch({ type: 'REJECT', error });\n });\n return () => cancelRunningTask(runningTask);\n }, [page, textContentDispatch]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (textContent === undefined) {\n return;\n }\n if (textContent === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, [textContent]);\n /**\n * Called when a text layer is rendered successfully\n */\n const onRenderSuccess = useCallback(() => {\n if (onRenderTextLayerSuccess) {\n onRenderTextLayerSuccess();\n }\n }, [onRenderTextLayerSuccess]);\n /**\n * Called when a text layer failed to render successfully\n */\n const onRenderError = useCallback((error) => {\n warning(false, error.toString());\n if (onRenderTextLayerError) {\n onRenderTextLayerError(error);\n }\n }, [onRenderTextLayerError]);\n function onMouseDown() {\n const layer = layerElement.current;\n if (!layer) {\n return;\n }\n layer.classList.add('selecting');\n }\n function onMouseUp() {\n const layer = layerElement.current;\n if (!layer) {\n return;\n }\n layer.classList.remove('selecting');\n }\n const viewport = useMemo(() => page.getViewport({ scale, rotation: rotate }), [page, rotate, scale]);\n useLayoutEffect(function renderTextLayer() {\n if (!page || !textContent) {\n return;\n }\n const { current: layer } = layerElement;\n if (!layer) {\n return;\n }\n layer.innerHTML = '';\n const textContentSource = page.streamTextContent({ includeMarkedContent: true });\n const parameters = {\n container: layer,\n textContentSource,\n viewport,\n };\n const cancellable = new pdfjs.TextLayer(parameters);\n const runningTask = cancellable;\n cancellable\n .render()\n .then(() => {\n const end = document.createElement('div');\n end.className = 'endOfContent';\n layer.append(end);\n const layerChildren = layer.querySelectorAll('[role=\"presentation\"]');\n if (customTextRenderer) {\n let index = 0;\n textContent.items.forEach((item, itemIndex) => {\n if (!isTextItem(item)) {\n return;\n }\n const child = layerChildren[index];\n if (!child) {\n return;\n }\n const content = customTextRenderer(Object.assign({ pageIndex,\n pageNumber,\n itemIndex }, item));\n child.innerHTML = content;\n index += item.str && item.hasEOL ? 2 : 1;\n });\n }\n // Intentional immediate callback\n onRenderSuccess();\n })\n .catch(onRenderError);\n return () => cancelRunningTask(runningTask);\n }, [\n customTextRenderer,\n onRenderError,\n onRenderSuccess,\n page,\n pageIndex,\n pageNumber,\n textContent,\n viewport,\n ]);\n return (_jsx(\"div\", { className: clsx('react-pdf__Page__textContent', 'textLayer'), onMouseUp: onMouseUp, onMouseDown: onMouseDown, ref: layerElement }));\n}\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect, useMemo, useRef } from 'react';\nimport makeCancellable from 'make-cancellable-promise';\nimport clsx from 'clsx';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport * as pdfjs from 'pdfjs-dist';\nimport useDocumentContext from '../shared/hooks/useDocumentContext.js';\nimport usePageContext from '../shared/hooks/usePageContext.js';\nimport useResolver from '../shared/hooks/useResolver.js';\nimport { cancelRunningTask } from '../shared/utils.js';\nexport default function AnnotationLayer() {\n const documentContext = useDocumentContext();\n const pageContext = usePageContext();\n invariant(pageContext, 'Unable to find Page context.');\n const mergedProps = Object.assign(Object.assign({}, documentContext), pageContext);\n const { imageResourcesPath, linkService, onGetAnnotationsError: onGetAnnotationsErrorProps, onGetAnnotationsSuccess: onGetAnnotationsSuccessProps, onRenderAnnotationLayerError: onRenderAnnotationLayerErrorProps, onRenderAnnotationLayerSuccess: onRenderAnnotationLayerSuccessProps, page, pdf, renderForms, rotate, scale = 1, } = mergedProps;\n invariant(pdf, 'Attempted to load page annotations, but no document was specified. Wrap <Page /> in a <Document /> or pass explicit `pdf` prop.');\n invariant(page, 'Attempted to load page annotations, but no page was specified.');\n invariant(linkService, 'Attempted to load page annotations, but no linkService was specified.');\n const [annotationsState, annotationsDispatch] = useResolver();\n const { value: annotations, error: annotationsError } = annotationsState;\n const layerElement = useRef(null);\n warning(Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--react-pdf-annotation-layer'), 10) === 1, 'AnnotationLayer styles not found. Read more: https://github.com/wojtekmaj/react-pdf#support-for-annotations');\n function onLoadSuccess() {\n if (!annotations) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onGetAnnotationsSuccessProps) {\n onGetAnnotationsSuccessProps(annotations);\n }\n }\n function onLoadError() {\n if (!annotationsError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, annotationsError.toString());\n if (onGetAnnotationsErrorProps) {\n onGetAnnotationsErrorProps(annotationsError);\n }\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on page change\n useEffect(function resetAnnotations() {\n annotationsDispatch({ type: 'RESET' });\n }, [annotationsDispatch, page]);\n useEffect(function loadAnnotations() {\n if (!page) {\n return;\n }\n const cancellable = makeCancellable(page.getAnnotations());\n const runningTask = cancellable;\n cancellable.promise\n .then((nextAnnotations) => {\n annotationsDispatch({ type: 'RESOLVE', value: nextAnnotations });\n })\n .catch((error) => {\n annotationsDispatch({ type: 'REJECT', error });\n });\n return () => {\n cancelRunningTask(runningTask);\n };\n }, [annotationsDispatch, page]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (annotations === undefined) {\n return;\n }\n if (annotations === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, [annotations]);\n function onRenderSuccess() {\n if (onRenderAnnotationLayerSuccessProps) {\n onRenderAnnotationLayerSuccessProps();\n }\n }\n function onRenderError(error) {\n warning(false, `${error}`);\n if (onRenderAnnotationLayerErrorProps) {\n onRenderAnnotationLayerErrorProps(error);\n }\n }\n const viewport = useMemo(() => page.getViewport({ scale, rotation: rotate }), [page, rotate, scale]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(function renderAnnotationLayer() {\n if (!pdf || !page || !linkService || !annotations) {\n return;\n }\n const { current: layer } = layerElement;\n if (!layer) {\n return;\n }\n const clonedViewport = viewport.clone({ dontFlip: true });\n const annotationLayerParameters = {\n accessibilityManager: null, // TODO: Implement this\n annotationCanvasMap: null, // TODO: Implement this\n annotationEditorUIManager: null, // TODO: Implement this\n div: layer,\n l10n: null, // TODO: Implement this\n page,\n structTreeLayer: null, // TODO: Implement this\n viewport: clonedViewport,\n };\n const renderParameters = {\n annotations,\n annotationStorage: pdf.annotationStorage,\n div: layer,\n imageResourcesPath,\n linkService,\n page,\n renderForms,\n viewport: clonedViewport,\n };\n layer.innerHTML = '';\n try {\n new pdfjs.AnnotationLayer(annotationLayerParameters).render(renderParameters);\n // Intentional immediate callback\n onRenderSuccess();\n }\n catch (error) {\n onRenderError(error);\n }\n return () => {\n // TODO: Cancel running task?\n };\n }, [annotations, imageResourcesPath, linkService, page, pdf, renderForms, viewport]);\n return (_jsx(\"div\", { className: clsx('react-pdf__Page__annotations', 'annotationLayer'), ref: layerElement }));\n}\n","'use client';\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useEffect, useMemo, useRef } from 'react';\nimport makeCancellable from 'make-cancellable-promise';\nimport makeEventProps from 'make-event-props';\nimport clsx from 'clsx';\nimport mergeRefs from 'merge-refs';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport PageContext from './PageContext.js';\nimport Message from './Message.js';\nimport Canvas from './Page/Canvas.js';\nimport TextLayer from './Page/TextLayer.js';\nimport AnnotationLayer from './Page/AnnotationLayer.js';\nimport { cancelRunningTask, isProvided, makePageCallback } from './shared/utils.js';\nimport useDocumentContext from './shared/hooks/useDocumentContext.js';\nimport useResolver from './shared/hooks/useResolver.js';\nconst defaultScale = 1;\n/**\n * Displays a page.\n *\n * Should be placed inside `<Document />`. Alternatively, it can have `pdf` prop passed, which can be obtained from `<Document />`'s `onLoadSuccess` callback function, however some advanced functions like linking between pages inside a document may not be working correctly.\n */\nexport default function Page(props) {\n const documentContext = useDocumentContext();\n const mergedProps = Object.assign(Object.assign({}, documentContext), props);\n const { _className = 'react-pdf__Page', _enableRegisterUnregisterPage = true, canvasBackground, canvasRef, children, className, customRenderer: CustomRenderer, customTextRenderer, devicePixelRatio, error = 'Failed to load the page.', height, inputRef, loading = 'Loading page…', noData = 'No page specified.', onGetAnnotationsError: onGetAnnotationsErrorProps, onGetAnnotationsSuccess: onGetAnnotationsSuccessProps, onGetStructTreeError: onGetStructTreeErrorProps, onGetStructTreeSuccess: onGetStructTreeSuccessProps, onGetTextError: onGetTextErrorProps, onGetTextSuccess: onGetTextSuccessProps, onLoadError: onLoadErrorProps, onLoadSuccess: onLoadSuccessProps, onRenderAnnotationLayerError: onRenderAnnotationLayerErrorProps, onRenderAnnotationLayerSuccess: onRenderAnnotationLayerSuccessProps, onRenderError: onRenderErrorProps, onRenderSuccess: onRenderSuccessProps, onRenderTextLayerError: onRenderTextLayerErrorProps, onRenderTextLayerSuccess: onRenderTextLayerSuccessProps, pageIndex: pageIndexProps, pageNumber: pageNumberProps, pdf, registerPage, renderAnnotationLayer: renderAnnotationLayerProps = true, renderForms = false, renderMode = 'canvas', renderTextLayer: renderTextLayerProps = true, rotate: rotateProps, scale: scaleProps = defaultScale, unregisterPage, width } = mergedProps, otherProps = __rest(mergedProps, [\"_className\", \"_enableRegisterUnregisterPage\", \"canvasBackground\", \"canvasRef\", \"children\", \"className\", \"customRenderer\", \"customTextRenderer\", \"devicePixelRatio\", \"error\", \"height\", \"inputRef\", \"loading\", \"noData\", \"onGetAnnotationsError\", \"onGetAnnotationsSuccess\", \"onGetStructTreeError\", \"onGetStructTreeSuccess\", \"onGetTextError\", \"onGetTextSuccess\", \"onLoadError\", \"onLoadSuccess\", \"onRenderAnnotationLayerError\", \"onRenderAnnotationLayerSuccess\", \"onRenderError\", \"onRenderSuccess\", \"onRenderTextLayerError\", \"onRenderTextLayerSuccess\", \"pageIndex\", \"pageNumber\", \"pdf\", \"registerPage\", \"renderAnnotationLayer\", \"renderForms\", \"renderMode\", \"renderTextLayer\", \"rotate\", \"scale\", \"unregisterPage\", \"width\"]);\n const [pageState, pageDispatch] = useResolver();\n const { value: page, error: pageError } = pageState;\n const pageElement = useRef(null);\n invariant(pdf, 'Attempted to load a page, but no document was specified. Wrap <Page /> in a <Document /> or pass explicit `pdf` prop.');\n const pageIndex = isProvided(pageNumberProps) ? pageNumberProps - 1 : (pageIndexProps !== null && pageIndexProps !== void 0 ? pageIndexProps : null);\n const pageNumber = pageNumberProps !== null && pageNumberProps !== void 0 ? pageNumberProps : (isProvided(pageIndexProps) ? pageIndexProps + 1 : null);\n const rotate = rotateProps !== null && rotateProps !== void 0 ? rotateProps : (page ? page.rotate : null);\n const scale = useMemo(() => {\n if (!page) {\n return null;\n }\n // Be default, we'll render page at 100% * scale width.\n let pageScale = 1;\n // Passing scale explicitly null would cause the page not to render\n const scaleWithDefault = scaleProps !== null && scaleProps !== void 0 ? scaleProps : defaultScale;\n // If width/height is defined, calculate the scale of the page so it could be of desired width.\n if (width || height) {\n const viewport = page.getViewport({ scale: 1, rotation: rotate });\n if (width) {\n pageScale = width / viewport.width;\n }\n else if (height) {\n pageScale = height / viewport.height;\n }\n }\n return scaleWithDefault * pageScale;\n }, [height, page, rotate, scaleProps, width]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on pdf change\n useEffect(function hook() {\n return () => {\n if (!isProvided(pageIndex)) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (_enableRegisterUnregisterPage && unregisterPage) {\n unregisterPage(pageIndex);\n }\n };\n }, [_enableRegisterUnregisterPage, pdf, pageIndex, unregisterPage]);\n /**\n * Called when a page is loaded successfully\n */\n function onLoadSuccess() {\n if (onLoadSuccessProps) {\n if (!page || !scale) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n onLoadSuccessProps(makePageCallback(page, scale));\n }\n if (_enableRegisterUnregisterPage && registerPage) {\n if (!isProvided(pageIndex) || !pageElement.current) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n registerPage(pageIndex, pageElement.current);\n }\n }\n /**\n * Called when a page failed to load\n */\n function onLoadError() {\n if (!pageError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, pageError.toString());\n if (onLoadErrorProps) {\n onLoadErrorProps(pageError);\n }\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on pdf and pageIndex change\n useEffect(function resetPage() {\n pageDispatch({ type: 'RESET' });\n }, [pageDispatch, pdf, pageIndex]);\n useEffect(function loadPage() {\n if (!pdf || !pageNumber) {\n return;\n }\n const cancellable = makeCancellable(pdf.getPage(pageNumber));\n const runningTask = cancellable;\n cancellable.promise\n .then((nextPage) => {\n pageDispatch({ type: 'RESOLVE', value: nextPage });\n })\n .catch((error) => {\n pageDispatch({ type: 'REJECT', error });\n });\n return () => cancelRunningTask(runningTask);\n }, [pageDispatch, pdf, pageNumber]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (page === undefined) {\n return;\n }\n if (page === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, [page, scale]);\n const childContext = useMemo(() => \n // Technically there cannot be page without pageIndex, pageNumber, rotate and scale, but TypeScript doesn't know that\n page && isProvided(pageIndex) && pageNumber && isProvided(rotate) && isProvided(scale)\n ? {\n _className,\n canvasBackground,\n customTextRenderer,\n devicePixelRatio,\n onGetAnnotationsError: onGetAnnotationsErrorProps,\n onGetAnnotationsSuccess: onGetAnnotationsSuccessProps,\n onGetStructTreeError: onGetStructTreeErrorProps,\n onGetStructTreeSuccess: onGetStructTreeSuccessProps,\n onGetTextError: onGetTextErrorProps,\n onGetTextSuccess: onGetTextSuccessProps,\n onRenderAnnotationLayerError: onRenderAnnotationLayerErrorProps,\n onRenderAnnotationLayerSuccess: onRenderAnnotationLayerSuccessProps,\n onRenderError: onRenderErrorProps,\n onRenderSuccess: onRenderSuccessProps,\n onRenderTextLayerError: onRenderTextLayerErrorProps,\n onRenderTextLayerSuccess: onRenderTextLayerSuccessProps,\n page,\n pageIndex,\n pageNumber,\n renderForms,\n renderTextLayer: renderTextLayerProps,\n rotate,\n scale,\n }\n : null, [\n _className,\n canvasBackground,\n customTextRenderer,\n devicePixelRatio,\n onGetAnnotationsErrorProps,\n onGetAnnotationsSuccessProps,\n onGetStructTreeErrorProps,\n onGetStructTreeSuccessProps,\n onGetTextErrorProps,\n onGetTextSuccessProps,\n onRenderAnnotationLayerErrorProps,\n onRenderAnnotationLayerSuccessProps,\n onRenderErrorProps,\n onRenderSuccessProps,\n onRenderTextLayerErrorProps,\n onRenderTextLayerSuccessProps,\n page,\n pageIndex,\n pageNumber,\n renderForms,\n renderTextLayerProps,\n rotate,\n scale,\n ]);\n const eventProps = useMemo(() => makeEventProps(otherProps, () => page ? (scale ? makePageCallback(page, scale) : undefined) : page), \n // biome-ignore lint/correctness/useExhaustiveDependencies: FIXME\n [otherProps, page, scale]);\n const pageKey = `${pageIndex}@${scale}/${rotate}`;\n function renderMainLayer() {\n switch (renderMode) {\n case 'custom': {\n invariant(CustomRenderer, `renderMode was set to \"custom\", but no customRenderer was passed.`);\n return _jsx(CustomRenderer, {}, `${pageKey}_custom`);\n }\n case 'none':\n return null;\n case 'canvas':\n default:\n return _jsx(Canvas, { canvasRef: canvasRef }, `${pageKey}_canvas`);\n }\n }\n function renderTextLayer() {\n if (!renderTextLayerProps) {\n return null;\n }\n return _jsx(TextLayer, {}, `${pageKey}_text`);\n }\n function renderAnnotationLayer() {\n if (!renderAnnotationLayerProps) {\n return null;\n }\n return _jsx(AnnotationLayer, {}, `${pageKey}_annotations`);\n }\n function renderChildren() {\n return (_jsxs(PageContext.Provider, { value: childContext, children: [renderMainLayer(), renderTextLayer(), renderAnnotationLayer(), children] }));\n }\n function renderContent() {\n if (!pageNumber) {\n return _jsx(Message, { type: \"no-data\", children: typeof noData === 'function' ? noData() : noData });\n }\n if (pdf === null || page === undefined || page === null) {\n return (_jsx(Message, { type: \"loading\", children: typeof loading === 'function' ? loading() : loading }));\n }\n if (pdf === false || page === false) {\n return _jsx(Message, { type: \"error\", children: typeof error === 'function' ? error() : error });\n }\n return renderChildren();\n }\n return (_jsx(\"div\", Object.assign({ className: clsx(_className, className), \"data-page-number\": pageNumber, \n // Assertion is needed for React 18 compatibility\n ref: mergeRefs(inputRef, pageElement), style: {\n ['--scale-factor']: `${scale}`,\n backgroundColor: canvasBackground || 'white',\n position: 'relative',\n minWidth: 'min-content',\n minHeight: 'min-content',\n } }, eventProps, { children: renderContent() })));\n}\n","'use client';\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport clsx from 'clsx';\nimport invariant from 'tiny-invariant';\nimport Page from './Page.js';\nimport { isProvided } from './shared/utils.js';\nimport useDocumentContext from './shared/hooks/useDocumentContext.js';\n/**\n * Displays a thumbnail of a page. Does not render the annotation layer or the text layer. Does not register itself as a link target, so the user will not be scrolled to a Thumbnail component when clicked on an internal link (e.g. in Table of Contents). When clicked, attempts to navigate to the page clicked (similarly to a link in Outline).\n *\n * Should be placed inside `<Document />`. Alternatively, it can have `pdf` prop passed, which can be obtained from `<Document />`'s `onLoadSuccess` callback function.\n */\nexport default function Thumbnail(props) {\n const documentContext = useDocumentContext();\n const mergedProps = Object.assign(Object.assign({}, documentContext), props);\n const { className, linkService, onItemClick, pageIndex: pageIndexProps, pageNumber: pageNumberProps, pdf, } = mergedProps;\n invariant(pdf, 'Attempted to load a thumbnail, but no document was specified. Wrap <Thumbnail /> in a <Document /> or pass explicit `pdf` prop.');\n const pageIndex = isProvided(pageNumberProps) ? pageNumberProps - 1 : (pageIndexProps !== null && pageIndexProps !== void 0 ? pageIndexProps : null);\n const pageNumber = pageNumberProps !== null && pageNumberProps !== void 0 ? pageNumberProps : (isProvided(pageIndexProps) ? pageIndexProps + 1 : null);\n function onClick(event) {\n event.preventDefault();\n if (!isProvided(pageIndex) || !pageNumber) {\n return;\n }\n invariant(onItemClick || linkService, 'Either onItemClick callback or linkService must be defined in order to navigate to an outline item.');\n if (onItemClick) {\n onItemClick({\n pageIndex,\n pageNumber,\n });\n }\n else if (linkService) {\n linkService.goToPage(pageNumber);\n }\n }\n const { className: classNameProps, onItemClick: onItemClickProps } = props, pageProps = __rest(props, [\"className\", \"onItemClick\"]);\n return (_jsx(\"a\", { className: clsx('react-pdf__Thumbnail', className), href: pageNumber ? '#' : undefined, onClick: onClick, children: _jsx(Page, Object.assign({}, pageProps, { _className: \"react-pdf__Thumbnail__page\", _enableRegisterUnregisterPage: false, renderAnnotationLayer: false, renderTextLayer: false })) }));\n}\n","import * as pdfjs from 'pdfjs-dist';\nimport Document from './Document.js';\nimport Outline from './Outline.js';\nimport Page from './Page.js';\nimport Thumbnail from './Thumbnail.js';\nimport useDocumentContext from './shared/hooks/useDocumentContext.js';\nimport useOutlineContext from './shared/hooks/useOutlineContext.js';\nimport usePageContext from './shared/hooks/usePageContext.js';\nimport PasswordResponses from './PasswordResponses.js';\nimport { displayWorkerWarning } from './shared/utils.js';\ndisplayWorkerWarning();\npdfjs.GlobalWorkerOptions.workerSrc = 'pdf.worker.mjs';\nexport { pdfjs, Document, Outline, Page, Thumbnail, useDocumentContext, useOutlineContext, usePageContext, PasswordResponses, };\n"],"names":["__webpack_require__","exports","definition","key","obj","prop","__webpack_exports__","AbortException","AnnotationEditorLayer","AnnotationEditorParamsType","AnnotationEditorType","AnnotationEditorUIManager","AnnotationLayer","AnnotationMode","ColorPicker","DOMSVGFactory","DrawLayer","util_FeatureTest","GlobalWorkerOptions","util_ImageKind","InvalidPDFException","MissingPDFException","OPS","OutputScale","PDFDataRangeTransport","PDFDateString","PDFWorker","PasswordResponses","PermissionFlag","PixelsPerInch","RenderingCancelledException","TextLayer","UnexpectedResponseException","Util","VerbosityLevel","XfaLayer","build","createValidAbsoluteUrl","fetchData","getDocument","getFilenameFromUrl","getPdfFilenameFromUrl","getXfaPageViewport","isDataScheme","isPdfFile","noContextMenu","normalizeUnicode","setLayerDimensions","shadow","version","isNodeJS","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","MAX_IMAGE_SIZE_TO_CACHE","LINE_FACTOR","RenderingIntentFlag","AnnotationEditorPrefix","TextRenderingMode","AnnotationType","AnnotationBorderStyleType","verbosity","setVerbosityLevel","level","getVerbosityLevel","info","msg","warn","unreachable","assert","cond","_isValidProtocol","url","baseUrl","options","dots","stringToUTF8String","absoluteUrl","value","nonSerializable","BaseException","message","name","PasswordException","code","UnknownErrorException","details","status","FormatError","bytesToString","bytes","length","MAX_ARGUMENT_COUNT","strBuf","chunkEnd","chunk","stringToBytes","str","i","string32","objectFromMap","map","isLittleEndian","buffer8","isEvalSupported","_b","_a","hexNumbers","n","r","g","b","transform","minMax","temp","m1","m2","p","m","xt","yt","d","p1","p2","p3","p4","transpose","a","c","first","second","sx","sy","rect","rect1","rect2","xLow","xHigh","yLow","yHigh","x0","y0","x1","y1","x2","y2","x3","y3","__privateMethod","_Util_static","getExtremum_fn","getExtremumOnCurve_fn","t","mt","tt","ttt","x","delta","sqrtDelta","a2","__privateAdd","NormalizeRegex","NormalizationMap","_","getUuid","buf","AnnotationPrefix","FontRenderOps","toBase64Util","arr","SVG_NS","_PixelsPerInch","__publicField","type","isValidFetchUrl","response","resolve","reject","request","PageViewport","viewBox","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","width","height","y","topLeft","bottomRight","extraDelay","ii","filename","defaultFilename","reURI","reFilename","splitURI","suggestedFilename","StatTimer","outBuf","longest","start","end","protocol","e","deprecated","input","__privateGet","_regex","__privateSet","matches","year","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","xfaPage","getRGB","color","colorRGB","getColorValues","colors","span","computedColor","getCurrentTransform","ctx","f","getCurrentTransformInverse","div","viewport","mustFlip","mustRotate","pageWidth","pageHeight","style","useRound","w","h","widthStr","heightStr","pixelRatio","_EditorToolbar","editor","_EditorToolbar_instances","_toolbar","_colorPicker","_editor","_buttons","_altText","_l10nRemove","editToolbar","signal","_EditorToolbar_static","pointerDown_fn","buttons","position","addDeleteButton_fn","altText","button","addListenersToElement_fn","divider_get","colorPicker","focusIn_fn","focusOut_fn","element","editorType","_uiManager","divider","EditorToolbar","HighlightToolbar","uiManager","_HighlightToolbar_instances","parent","boxes","isLTR","getLastPoint_fn","render_fn","addHighlightButton_fn","lastY","lastX","box","bindEvents","names","opacityToHex","opacity","IdManager","_id","__privateWrapper","_ImageManager","_ImageManager_instances","_baseId","_cache","svg","image","promise","file","lastModified","size","get_fn","id","blobPromise","blob","data","canvas","offscreen","bitmap","rawData","mustRemoveAspectRatioPromise","fileReader","imageElement","imagePromise","ImageManager","CommandManager","maxSize","_commands","_locked","_maxSize","_position","cmd","undo","post","mustExec","overwriteIfSameType","keepUndo","save","next","KeyboardManager","callbacks","_KeyboardManager_instances","isMac","keys","callback","isMacKey","self","event","serialize_fn","bubbles","args","checker","_ColorManager","rgb","RGB","ColorManager","_AnnotationEditorUIManager","container","viewer","altTextManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","mlManager","_AnnotationEditorUIManager_instances","_abortController","_activeEditor","_allEditors","_allLayers","_altTextManager","_annotationStorage","_changedExistingAnnotations","_commandManager","_copyPasteAC","_currentPageIndex","_deletedAnnotationsElementIds","_draggingEditors","_editorTypes","_editorsToRescale","_enableHighlightFloatingButton","_enableUpdatedAddImage","_enableNewAltTextWhenAddingImage","_filterFactory","_focusMainContainerTimeoutId","_focusManagerAC","_highlightColors","_highlightWhenShiftUp","_highlightToolbar","_idManager","_isEnabled","_isWaiting","_keyboardManagerAC","_lastActiveElement","_mainHighlightColorPicker","_mlManager","_mode","_selectedEditors","_selectedTextNode","_pageColors","_showAllStates","_previousStates","_translation","_translationTimeoutId","_container","_viewer","_updateModeCapability","evt","addSelectionListener_fn","addDragAndDropListeners_fn","addKeyboardManager_fn","proto","arrowChecker","textInputChecker","_self","el","small","big","layer","_c","_d","ac","pair","firstTime","mode","pageNumber","layerX","layerY","pagesRotation","methodOfCreation","selection","anchorNode","anchorOffset","focusNode","focusOffset","text","textLayer","getAnchorElementForSelection_fn","getLayerForTextLayer_fn","isNoneMode","onSelectEnd_fn","activeElement","lastEditor","lastActiveElement","addCopyPasteListeners_fn","removeKeyboardManager_fn","removeCopyPasteListeners_fn","item","editors","serialized","clipboardData","ex","newEditors","deserializedEditor","addEditorToLayer_fn","selectEditors_fn","isEditing","addFocusManager_fn","dispatchUpdateStates_fn","isEmpty_fn","removeFocusManager_fn","types","dispatchUpdateUI_fn","pageIndex","editId","isFromKeyboard","disableAll_fn","enableAll_fn","visible","updateButton","mustWait","annotationElementId","lastSelectedEditor_get","ed","params","noCommit","totalX","totalY","TIME_TO_WAIT","mustBeAddedInUndoStack","move","newX","newY","newPageIndex","savedX","savedY","savedPageIndex","tx","ty","parentWidth","parentHeight","rotator","range","annotation","editorId","currentLayer","displayHighlightToolbar_fn","selectionChange_fn","activeLayer","pointerup","promises","_AltText","_AltText_instances","_altTextDecorative","_altTextButton","_altTextButtonLabel","_altTextTooltip","_altTextTooltipTimeout","_altTextWasFromKeyBoard","_badge","_guessedText","_textWithDisclaimer","_useNewAltTextFlow","_l10nNewButton","l10n","label","onClick","label_get","setState_fn","guessedText","visibility","badge","isForCopying","decorative","textWithDisclaimer","cancel","enabled","tooltip","DELAY_TO_SHOW_TOOLTIP","AltText","_AnnotationEditor","parameters","_AnnotationEditor_instances","_accessibilityData","_allResizerDivs","_disabled","_keepAspectRatio","_resizersDiv","_savedDimensions","_focusAC","_focusedResizerName","_hasBeenClicked","_initialPosition","_isEditing","_isInEditMode","_isResizerEnabledForKeyboard","_moveInDOMTimeout","_prevDragX","_prevDragY","_telemetryTimeouts","_isDraggable","_zIndex","pageX","pageY","resize","fakeEditor","FakeEditor","_type","_value","mime","stopResizing_fn","target","translate_fn","bx","by","_borderLineWidth","_AnnotationEditor_static","rotatePoint_fn","parentScale","widthPercent","heightPercent","editToolbarDiv","addFocusListeners_fn","setUpDragSession_fn","selectOnPointerEvent_fn","shiftX","shiftY","_angle","context","timeout","createResizers_fn","children","boundResizerKeydown","resizerKeydown_fn","boundResizerBlur","resizerBlur_fn","resizerFocus_fn","firstPosition","nextFirstPosition","child","setResizerTabIndex_fn","resizerPointermove_fn","_e","aspectRatio","action","content","firstChild","angle","getRotationMatrix_fn","classes","resizerPointerdown_fn","savedDraggable","savedWidth","savedHeight","savedParentCursor","savedCursor","pointerUpCallback","addResizeToUndoStack_fn","newWidth","newHeight","minWidth","minHeight","round","rotationMatrix","transf","invRotationMatrix","invTransf","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","deltaX","deltaY","oldDiag","isSelected","pointerMoveCallback","AnnotationEditor","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","blockCounts","tailLength","dataUint32","k1","k2","h1","h2","C1","C2","C1_LOW","C2_LOW","SerializableEmpty","AnnotationStorage","_AnnotationStorage_instances","_modified","_modifiedIds","_storage","defaultValue","modified","entry","val","setModified_fn","PrintAnnotationStorage","hash","transfer","hasBitmap","stats","typeToEditor","editorStats","counters","count","ids","_serializable","clone","FontLoader","ownerDocument","styleElement","_systemFonts","nativeFontFace","rule","styleSheet","_inspectFont","loadedName","src","fontFace","font","hasFonts","supported","completeRequest","loadingRequests","otherRequest","testFont","int32","offset","spliceString","s","remove","insert","chunk1","chunk2","called","isFontReady","loadTestFontId","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","FontFaceObject","translatedData","disableFontFace","inspectFont","css","objs","character","cmds","commands","BaseCanvasFactory","enableHWA","_enableHWA","canvasAndContext","DOMCanvasFactory","BaseCMapReaderFactory","isCompressed","cMapData","reason","DOMCMapReaderFactory","BaseFilterFactory","maps","fgColor","bgColor","filterName","newFgColor","newBgColor","keepHCM","DOMFilterFactory","docId","_DOMFilterFactory_instances","_baseUrl","__cache","__defs","_docId","_document","__hcmCache","cache_get","tableR","tableG","tableB","createTables_fn","createUrl_fn","filter","createFilter_fn","addTransferMapConversion_fn","hcmCache_get","fgRGB","getRGB_fn","bgRGB","defs_get","table","addGrayConversion_fn","getSteps","tableA","addTransferMapAlphaConversion_fn","addLuminosityConversion_fn","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","step","newStart","newStep","prev","k","j","mapR","buffer","mapG","mapB","bufferR","bufferG","bufferB","feColorMatrix","appendFeFunc_fn","feComponentTransfer","func","feFunc","rTable","gTable","bTable","aTable","BaseStandardFontDataFactory","DOMStandardFontDataFactory","packageCapability","packageMap","fs","http","https","path2d","NodePackages","node_utils_fetchData","NodeFilterFactory","NodeCanvasFactory","NodeCMapReaderFactory","NodeStandardFontDataFactory","PathType","applyBoundingBox","bbox","region","BaseShadingPattern","RadialAxialShadingPattern","IR","grad","colorStop","owner","inverse","pathType","pattern","ownerBBox","tmpCanvas","tmpCtx","domMatrix","drawTriangle","c1","c2","c3","coords","rowSize","tmp","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","combinedScale","backgroundColor","cachedCanvases","boundsWidth","boundsHeight","scaleX","scaleY","paddedWidth","paddedHeight","matrixScale","temporaryPatternCanvas","DummyShadingPattern","getShadingPattern","PaintType","_TilingPattern","canvasGraphicsFactory","baseTransform","operatorList","paintType","tilingType","xstep","ystep","curMatrixScale","combinedScaleX","combinedScaleY","canvasWidth","canvasHeight","redrawHorizontally","redrawVertically","xScaledStep","yScaledStep","xScaledWidth","yScaledHeight","dimx","dimy","graphics","dimx2","dimy2","xSize","ySize","tmpCanvas2","tmpCtx2","jj","realOutputSize","bboxWidth","bboxHeight","current","cssColor","matrix","TilingPattern","convertBlackAndWhiteToRGBA","srcPos","dest","nonBlackColor","inverseDecode","black","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","max","elem","MIN_FONT_SIZE","MAX_FONT_SIZE","EXECUTION_TIME","EXECUTION_STEPS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","mirrorContextOperations","destCtx","cp1x","cp1y","cp2x","cp2y","CachedCanvases","canvasFactory","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","compileType3Glyph","imgData","POINT_TO_PROCESS_LIMIT","POINT_TYPES","width1","points","j0","lineSize","pos","mask","sum","steps","path","p0","pp","CanvasExtraState","xStrokePad","yStrokePad","intersect","putBinaryImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","dest32","dest32DataLength","fullSrcDiff","white","srcDiff","kEnd","kEndUnrolled","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","properties","property","resetCtxToDefault","getImageSmoothingEnabled","interpolate","actualScale","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","_CanvasGraphics","canvasCtx","commonObjs","filterFactory","optionalContentConfig","markedContentStack","annotationCanvasMap","_CanvasGraphics_instances","fallback","transparency","background","savedFillStyle","transparentCanvas","executionStartIdx","continueCallback","stepper","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","fnId","depObjId","objsPool","restoreInitialState_fn","cache","drawFilter_fn","img","inverseTransform","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","fillColor","isPatternFill","currentTransform","cacheKey","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","minX","maxX","drawnWidth","drawnHeight","fillCanvas","fillCtx","limit","dashArray","dashPhase","intent","flatness","states","inSMaskMode","cacheId","scratchCanvas","dirtyBox","smask","suspendedCtx","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","maskCtx","subtype","backdrop","transferMap","maskOffsetX","maskOffsetY","maskX","maskY","backdropRGB","clip","old","ops","startX","startY","isScalingMatrix","minMaxForBezier","xw","yh","consumePath","strokeColor","needRestore","paths","spacing","leading","fontRefName","fontObj","typeface","bold","italic","browserFontSize","rise","patternTransform","textRenderingMode","fontSize","fillStrokeMode","isAddToPathSet","patternFill","addToPath","glyphs","fontSizeScale","charSpacing","wordSpacing","fontDirection","textHScale","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","lineWidth","chars","glyph","restoreNeeded","accent","scaledX","scaledY","vmetric","vx","vy","measuredWidth","characterScaleX","scaledAccentX","scaledAccentY","charWidth","fontMatrix","isTextInvisible","spacingLength","xWidth","yWidth","llx","lly","urx","ury","objId","inv","group","currentCtx","bounds","canvasBounds","groupCtx","currentMtx","hasOwnCanvas","viewportScale","skewX","skewY","positions","trans","images","imgToPaint","tag","clipBox","isEmpty","absDet","normX","normY","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","hcmFilterId","savedFilter","CanvasGraphics","op","_port","_src","CallbackKind","StreamKind","wrapReason","MessageHandler","sourceName","targetName","comObj","_MessageHandler_instances","_messageAC","onMessage_fn","actionName","handler","ah","transfers","callbackId","capability","queueingStrategy","streamId","controller","startCapability","pullCapability","cancelCapability","processStreamMessage_fn","result","createStreamSink_fn","streamSink","lastDesiredSize","streamController","deleteStreamController_fn","Metadata","parsedData","_metadataMap","_data","INTERNAL","OptionalContentGroup","renderingIntent","usage","rbGroups","_isDisplay","_isPrint","_userSet","_visible","print","view","internal","userSet","OptionalContentConfig","_OptionalContentConfig_instances","_cachedGetHash","_groups","_initialHash","_order","on","off","evaluateVisibilityExpression_fn","preserveRB","rbGroup","otherId","state","operator","array","PDFDataTransportStream","pdfDataRangeTransport","disableRange","disableStream","initialData","progressiveDone","contentDispositionFilename","begin","loaded","total","found","rangeReader","reader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","stream","requestCapability","getFilenameFromContentDispositionHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","contentDispositionStr","match","iter","quot","part","parts","quotindex","extvalue","encodingend","charset","hex","createHeaders","isHttp","httpHeaders","headers","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","returnValues","extractFilenameFromHeader","createResponseStatusError","validateResponseStatus","createFetchOptions","withCredentials","abortController","getArrayBuffer","PDFFetchStream","source","PDFFetchStreamReader","PDFFetchStreamRangeReader","allowRangeRequests","suggestedLength","done","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","network_getArrayBuffer","xhr","NetworkManager","listeners","xhrId","pendingRequest","xhrStatus","rangeHeader","PDFNetworkStream","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","manager","fullRequestXhrId","fullRequestXhr","urlRegex","parseUrlOrPath","sourceUrl","createRequest","PDFNodeStream","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","readableStream","BaseRangeReader","handleResponse","error","stat","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","DEFAULT_FONT_ASCENT","TextLayer$1","textContentSource","_TextLayer_instances","_capability","_disableProcessItems","_fontInspectorEnabled","_lang","_layoutTextParams","_pageHeight","_pageWidth","_reader","_rootContainer","_rotation","_scale","_styleCache","_textContentItemsStr","_textContentSource","_textDivs","_textDivProperties","_transform","_TextLayer_static","ensureMinFontSizeComputed_fn","_pendingTextLayers","isWindows","isFirefox","pump","processItems_fn","onBefore","getCtx_fn","layout_fn","abortEx","_ascentCache","_canvasContexts","_canvasCtxFonts","_minFontSize","items","textDivs","textContentItemsStr","appendText_fn","geom","textDiv","textDivProperties","fontFamily","fontHeight","fontAscent","getAscent_fn","left","top","scaleFactorStr","divStyle","shouldScaleText","absScaleX","absScaleY","br","ensureCtxFont_fn","lang","family","cached","cachedAscent","metrics","ascent","descent","ratio","pixels","XfaText","xfa","output","walk","node","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DELAYED_CLEANUP_TIMEOUT","DefaultCanvasFactory","DefaultCMapReaderFactory","DefaultFilterFactory","DefaultStandardFontDataFactory","task","PDFDocumentLoadingTask","getUrlProp","getDataProp","password","rangeTransport","worker","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","standardFontDataUrl","StandardFontDataFactory","ignoreErrors","maxImageSize","isOffscreenCanvasSupported","isChrome","canvasMaxAreaInBytes","fontExtraProperties","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","useSystemFonts","useWorkerFetch","transportFactory","workerParams","docParams","transportParams","workerIdPromise","networkStream","NetworkStream","workerId","messageHandler","transport","WorkerTransport","isRefProxy","ref","_PDFDocumentLoadingTask","PDFDataRangeTransport$1","listener","PDFDocumentProxy","pdfInfo","keepLoadedFonts","PDFPageProxy","pageInfo","_PDFPageProxy_instances","_delayedCleanupTimeout","_pendingCleanup","PDFObjects","canvasContext","annotationMode","optionalContentConfigPromise","printAnnotationStorage","intentArgs","abortDelayedCleanup_fn","intentState","intentPrint","complete","internalRenderTask","tryCleanup_fn","InternalRenderTask","renderTask","operatorListChanged","opListTask","includeMarkedContent","disableNormalization","textContent","waitOn","resetStats","success","operatorListChunk","annotationStorageSerializable","modifiedIds","force","delay","curCacheKey","curIntentState","delayed","renderTasks","LoopbackPort","_listeners","_deferred","rmAbort","onAbort","_PDFWorker","port","_PDFWorker_instances","_workerPorts","resolve_fn","_isWorkerDisabled","_PDFWorker_static","mainThreadWorkerMessageHandler_get","workerSrc","terminateEarly","sendTest","testObj","WorkerMessageHandler","_fakeWorkerId","workerHandler","cachedPort","otherUrl","base","other","wrapper","loadingTask","factory","_WorkerTransport_instances","_methodPromises","_pageCache","_pagePromises","_pageRefCache","_passwordCapability","isOpList","annotationStorage","modifiedIdsHash","cacheKeyBuf","page","terminated","sink","readyReason","isStreamingSupported","isRangeSupported","contentLength","exception","updatePassword","exportedData","exportedError","imageRef","pageProxy","imageData","cachedPromise","cacheSimpleMethod_fn","results","refStr","INITIAL_DATA","_PDFObjects_instances","_objs","ensureObj_fn","RenderTask","_internalRenderTask","separateAnnots","_InternalRenderTask","useRequestAnimationFrame","_rAF","_canvasInUse","makeColorComp","scaleAndClamp","ColorConverters","G","components","BaseSVGFactory","skipDimensions","html","storage","storedData","option","linkService","attributes","isHTMLAnchorElement","root","rootHtml","isNotForRichText","rootDiv","stack","childHtml","DEFAULT_TAB_INDEX","annotation_layer_DEFAULT_FONT_SIZE","GetElementsByNameSet","getRectDims","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","TextWidgetAnnotationElement","RadioButtonWidgetAnnotationElement","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","_AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","_AnnotationElement_instances","_updates","_hasBorder","_popupElement","titleObj","contentsObj","richText","setRectEdited_fn","horizontalRadius","verticalRadius","radius","borderColor","elementWidth","elementHeight","setColor","jsName","styleName","colorType","colorArray","display","hidden","actions","jsEvent","commonActions","detail","eventProxy","quadPoints","rectBlX","rectBlY","rectTrX","rectTrY","trX","trY","blX","blY","svgBuffer","borderWidth","svgFactory","defs","clipPath","rectWidth","rectHeight","popup","skipId","fields","fieldObj","exportValues","exportValue","domElement","triggers","currentRect","_LinkAnnotationElement_instances","link","isBound","bindAttachment_fn","bindSetOCGState_fn","destination","setInternalLink_fn","resetForm","otherClickAction","resetFormFields","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","attachment","elementData","baseName","eventName","valueGetter","getter","TEXT_ALIGNMENT","fontColor","computedFontSize","BORDER_SIZE","roundToOneDecimal","numberOfLines","lineHeight","isRequired","keyInStorage","maxLen","fieldFormattedValues","blurListener","formattedValue","charLimit","commitKey","_blurListener","selectionStart","selectionEnd","selStart","selEnd","combWidth","checked","checkbox","curChecked","radio","pdfButtonValue","linkElement","selectElement","addAnEmptyEntry","optionElement","removeEmptyEntry","noneOptionElement","getValue","isExport","multiple","selectedValues","getItems","values","index","displayValue","selectChild","indices","change","elements","PopupElement","elementIds","modificationDate","parentRect","open","_PopupElement_instances","_boundKeyDown","keyDown_fn","_boundHide","hide_fn","_boundShow","show_fn","_boundToggle","toggle_fn","_color","_contentsObj","_dateObj","_elements","_parent","_parentRect","_pinned","_popup","_rect","_richText","_titleObj","_wasVisible","baseColor","header","title","html_get","contents","dir","lines","line","popupContent","makePopupContent_fn","fontSize_get","fontColor_get","popupLines","lineAttributes","setPosition_fn","useParentRect","normalizedRect","popupLeft","popupTop","lineSpan","_line","_square","square","_circle","circle","_polyline","vertices","borderStyle","popupRef","polyline","_polylines","inkLists","inkList","_FileAttachmentAnnotationElement_instances","_trigger","trigger","download_fn","AnnotationLayer$1","accessibilityManager","annotationEditorUIManager","structTreeLayer","_AnnotationLayer_instances","_accessibilityManager","_annotationCanvasMap","_editableAnnotations","_structTreeLayer","annotations","popupToElements","elementParams","isPopupAnnotation","rendered","appendElement_fn","setAnnotationCanvasMap_fn","contentElement","annotationId","ariaAttributes","EOL_PATTERN","_FreeTextEditor","_FreeTextEditor_instances","_content","_editorDivId","_editModeAC","_fontSize","updateFontSize_fn","updateColor_fn","savedText","newText","extractText_fn","setText","setContent_fn","setEditorDimensions_fn","baseX","baseY","posX","posY","paste","_FreeTextEditor_static","deserializeContent_fn","startContainer","startOffset","bufferBefore","bufferAfter","getNodeContent_fn","newRange","beforeLength","acc","textPosition","padding","serializeContent_fn","hasElementChanged_fn","setFontsize","savedFontsize","col","savedColor","prevChild","savedDisplay","savedVisibility","FreeTextEditor","Outline$1","_bbox","_FreeDrawOutliner","scaleFactor","thickness","innerMargin","_FreeDrawOutliner_instances","_box","_bottom","_innerMargin","_isLTR","_top","_last","_lastX","_lastY","_min","_min_dist","_scaleFactor","_thickness","_points","_MIN_DIST","_MIN","diffX","diffY","diffD","K","nX","nY","thX","thY","bottom","toSVGPathTwoPoints_fn","toSVGPathEnd_fn","toSVGPathStart_fn","outline","FreeDrawOutline","last","getOutlineTwoPoints_fn","N","getOutlineEnd_fn","getOutlineStart_fn","_MIN_DIFF","getLastCoords_fn","lastTop","lastBottom","lastTopX","lastTopY","lastBottomX","lastBottomY","FreeDrawOutliner","Outline","_FreeDrawOutline_instances","_outline","computeMinMax_fn","rescale_fn","rescaleAndSwap_fn","outliner","lastPointX","lastPointY","ltrCallback","HighlightOutliner","_HighlightOutliner_instances","_verticalEdges","_intervals","EPSILON","right","shiftedMinX","shiftedMinY","lastEdge","lastPoint","edge","outlineVerticalEdges","breakEdge_fn","insert_fn","remove_fn","getOutlines_fn","edges","allEdges","edge1","edge2","outlines","HighlightOutline","binarySearch_fn","middle","y4","_outlines","polygon","prevX","prevY","FreeHighlightOutliner","FreeHighlightOutline","_ColorPicker","_ColorPicker_instances","_button","_buttonSwatch","_defaultColor","_dropdown","_dropdownWasFromKeyboard","_isMainColorPicker","_eventBus","_openDropdownAC","_l10nColor","openDropdown_fn","swatch","dropdown","getDropdownRoot_fn","colorSelect_fn","isDropdownVisible_get","_HighlightEditor","_HighlightEditor_instances","_anchorNode","_anchorOffset","_boxes","_clipPathId","_focusOutlines","_focusNode","_focusOffset","_highlightDiv","_highlightOutlines","_isFreeHighlight","_lastPoint","_opacity","_outlineId","_text","_methodOfCreation","createFreeOutlines_fn","addToDrawLayer_fn","createOutlines_fn","updateThickness_fn","toolbar","getRotation_fn","cleanDrawLayer_fn","mustBeSelected","drawLayer","_HighlightEditor_static","rotateBbox_fn","keydown_fn","highlightDiv","direction","setCaret_fn","pointerDown","endHighlight_fn","highlightMove_fn","clipPathId","serializeBoxes_fn","serializeOutlines_fn","outlinerForOutline","highlightOutlines","highlightId","setColorAndOpacity","opa","savedOpacity","savedThickness","setThickness","th","changeThickness_fn","HighlightEditor","_InkEditor","_InkEditor_instances","_baseHeight","_baseWidth","_canvasContextMenuTimeoutId","_currentPath2D","_disableEditing","_drawingAC","_hasSomethingToDraw","_isCanvasInitialized","_observer","_pointerdownAC","_realWidth","_realHeight","_requestFrameCallback","updateOpacity_fn","createCanvas_fn","createObserver_fn","setCanvasDims_fn","fitToContent_fn","addPointerdownListener_fn","removePointerdownListener_fn","startDrawing_fn","draw_fn","endDrawing_fn","getInitialBBox_fn","redraw_fn","roundedWidth","roundedHeight","setScaleFactor_fn","bezier","_InkEditor_static","fromPDFCoordinates_fn","p10","p11","p20","p21","p30","p31","path2D","buildPath2D_fn","getBbox_fn","serializePaths_fn","setOpacity","parentRotation","setStroke_fn","drawPoints_fn","currentPath","makeBezierCurve_fn","endPath_fn","stopDrawing_fn","generateBezierPoints_fn","xy","lastPoints","bezierPoints","control1","control2","updateTransform_fn","entries","getPadding_fn","scaleFactorW","scaleFactorH","toPDFCoordinates_fn","p40","p41","xMin","xMax","yMin","yMax","prevTranslationX","prevTranslationY","unscaledPadding","InkEditor","_StampEditor","_StampEditor_instances","_bitmap","_bitmapId","_bitmapPromise","_bitmapUrl","_bitmapFile","_bitmapFileName","_canvas","_resizeTimeoutId","_isSvg","_hasBeenAddedInUndoStack","hasAltTextStats","updateAltTextData","getBitmap_fn","maxDataDimension","maxPreviewDimension","createImageData","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","scaleBitmap_fn","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","structParent","bitmapUrl","bitmapId","isSvg","accessibilityData","serializeBitmap_fn","changes","area","prevData","getBitmapFetched_fn","fromId","getBitmapDone_fn","MAX_RATIO","factor","drawBitmap_fn","setDimensions_fn","prevWidth","prevHeight","toUrl","isSameRect","isSamePageIndex","isSameAltText","StampEditor","_AnnotationEditorLayer","annotationLayer","_AnnotationEditorLayer_instances","_allowClick","_annotationLayer","_clickAC","_editorFocusTimeoutId","_editors","_hadPointerDown","_isCleaningUp","_isDisabling","_textLayer","_textSelectionAC","editorTypes","cleanup_fn","classList","isCommitting","annotationElementIds","editables","editable","changedAnnotations","resetAnnotations","textLayerPointerDown_fn","currentEditorType_get","getCenterPoint_fn","createNewEditor_fn","isCentered","oldRotation","_DrawLayer","_DrawLayer_instances","_mapping","_toUpdate","isPathUpdatable","createSVG_fn","pathId","createClipPath_fn","use","maskId","use1","use2","_DrawLayer_static","setBox_fn","className","clipPathUse","__webpack_exports__AbortException","__webpack_exports__AnnotationEditorLayer","__webpack_exports__AnnotationEditorParamsType","__webpack_exports__AnnotationEditorType","__webpack_exports__AnnotationEditorUIManager","__webpack_exports__AnnotationLayer","__webpack_exports__AnnotationMode","__webpack_exports__ColorPicker","__webpack_exports__DOMSVGFactory","__webpack_exports__DrawLayer","__webpack_exports__FeatureTest","__webpack_exports__GlobalWorkerOptions","__webpack_exports__ImageKind","__webpack_exports__InvalidPDFException","__webpack_exports__MissingPDFException","__webpack_exports__OPS","__webpack_exports__OutputScale","__webpack_exports__PDFDataRangeTransport","__webpack_exports__PDFDateString","__webpack_exports__PDFWorker","__webpack_exports__PasswordResponses","__webpack_exports__PermissionFlag","__webpack_exports__PixelsPerInch","__webpack_exports__RenderingCancelledException","__webpack_exports__TextLayer","__webpack_exports__UnexpectedResponseException","__webpack_exports__Util","__webpack_exports__VerbosityLevel","__webpack_exports__XfaLayer","__webpack_exports__build","__webpack_exports__createValidAbsoluteUrl","__webpack_exports__fetchData","__webpack_exports__getDocument","__webpack_exports__getFilenameFromUrl","__webpack_exports__getPdfFilenameFromUrl","__webpack_exports__getXfaPageViewport","__webpack_exports__isDataScheme","__webpack_exports__isPdfFile","__webpack_exports__noContextMenu","__webpack_exports__normalizeUnicode","__webpack_exports__setLayerDimensions","__webpack_exports__shadow","__webpack_exports__version","__spreadArray","to","from","pack","l","ar","clipboardEvents","compositionEvents","focusEvents","formEvents","imageEvents","keyboardEvents","mediaEvents","mouseEvents","dragEvents","selectionEvents","touchEvents","pointerEvents","uiEvents","wheelEvents","animationEvents","transitionEvents","otherEvents","changeEvents","allEvents","makeEventProps","props","getArgs","eventProps","eventHandler","makeCancellablePromise","isCancelled","wrappedPromise","isProduction","prefix","invariant","condition","provided","__DEV__","warning","printWarning","format","len","argIndex","warning_1","has","find","tar","dequal","foo","bar","ctor","documentContext","createContext","Message","_jsx","DEFAULT_LINK_REL","LinkService","pdfViewer","externalLinkRel","externalLinkTarget","explicitDest","destRef","newWindow","isBrowser","isLocalFileSystem","isDefined","variable","isProvided","isString","isArrayBuffer","isBlob","isDataURI","dataURItoByteString","dataURI","headersString","dataString","getDevicePixelRatio","allowFileAccessFromFilesTip","displayCORSWarning","displayWorkerWarning","cancelRunningTask","runningTask","makePageCallback","isCancelException","loadFromFile","reducer","useResolver","useReducer","__awaiter","thisArg","_arguments","P","generator","adopt","fulfilled","rejected","__rest","pdfjs","defaultOnPassword","isParameterObject","Document","forwardRef","inputRef","imageResourcesPath","loading","noData","onItemClick","onLoadErrorProps","onLoadProgress","onLoadSuccessProps","onPassword","onSourceErrorProps","onSourceSuccessProps","renderMode","rotate","otherProps","sourceState","sourceDispatch","sourceError","pdfState","pdfDispatch","pdf","pdfError","useRef","pages","prevFile","prevOptions","useImperativeHandle","onSourceSuccess","onSourceError","resetSource","useEffect","findDocumentSource","useCallback","otherParams","fileByteString","cancellable","makeCancellable","nextSource","onLoadSuccess","onLoadError","documentInitParams","destroyable","pdfjs.getDocument","loadingPromise","nextPdf","registerPage","unregisterPage","childContext","useMemo","renderChildren","DocumentContext","renderContent","clsx","outlineContext","Ref","num","gen","useCachedValue","currentValue","useDocumentContext","useContext","useOutlineContext","OutlineContext","OutlineItem","mergedProps","getDestination","getPageIndex","getPageNumber","renderSubitems","subitems","subitem","subitemIndex","_jsxs","outlineState","outlineDispatch","outlineError","nextOutline","renderOutline","itemIndex","mergeRefs","inputRefs","_i","filteredInputRefs","firstRef","pageContext","PDF_ROLE_TO_HTML_ROLE","HEADING_PATTERN","isPdfRole","role","isStructTreeNode","isStructTreeNodeWithOnlyContentChild","getRoleAttributes","htmlRole","getBaseAttributes","childAttributes","getAttributes","StructTreeItem","usePageContext","PageContext","StructTree","onGetStructTreeErrorProps","onGetStructTreeSuccessProps","structTreeState","structTreeDispatch","structTree","structTreeError","customTextRenderer","nextStructTree","ANNOTATION_MODE","pdfjs.AnnotationMode","Canvas","_className","canvasBackground","devicePixelRatio","onRenderErrorProps","onRenderSuccessProps","renderForms","renderTextLayer","canvasRef","canvasElement","onRenderSuccess","onRenderError","renderViewport","renderContext","cleanup","isTextItem","onGetTextError","onGetTextSuccess","onRenderTextLayerError","onRenderTextLayerSuccess","textContentState","textContentDispatch","textContentError","layerElement","nextTextContent","onMouseDown","onMouseUp","useLayoutEffect","pdfjs.TextLayer","layerChildren","onGetAnnotationsErrorProps","onGetAnnotationsSuccessProps","onRenderAnnotationLayerErrorProps","onRenderAnnotationLayerSuccessProps","annotationsState","annotationsDispatch","annotationsError","nextAnnotations","clonedViewport","annotationLayerParameters","renderParameters","pdfjs.AnnotationLayer","defaultScale","Page","_enableRegisterUnregisterPage","CustomRenderer","onGetTextErrorProps","onGetTextSuccessProps","onRenderTextLayerErrorProps","onRenderTextLayerSuccessProps","pageIndexProps","pageNumberProps","renderAnnotationLayerProps","renderTextLayerProps","rotateProps","scaleProps","pageState","pageDispatch","pageError","pageElement","pageScale","scaleWithDefault","nextPage","pageKey","renderMainLayer","renderAnnotationLayer","Thumbnail","classNameProps","onItemClickProps","pageProps","pdfjs.GlobalWorkerOptions"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32]}