rich-react-component 0.3.2 → 0.4.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.
- package/README.md +125 -1
- package/dist/base/AreaChart.d.ts +4 -0
- package/dist/base/BarChart.d.ts +4 -0
- package/dist/base/Calendar.d.ts +54 -0
- package/dist/base/Chart.d.ts +26 -0
- package/dist/base/ChartLegend.d.ts +22 -0
- package/dist/base/DocumentViewer.d.ts +57 -0
- package/dist/base/DonutChart.d.ts +4 -0
- package/dist/base/LineChart.d.ts +9 -0
- package/dist/base/PieChart.d.ts +4 -0
- package/dist/base/StackedBarChart.d.ts +4 -0
- package/dist/base/chart/CartesianChart.d.ts +31 -0
- package/dist/base/chart/ChartSliceSummary.d.ts +13 -0
- package/dist/base/chart/ChartStatus.d.ts +16 -0
- package/dist/base/chart/ChartTooltip.d.ts +22 -0
- package/dist/base/chart/CircularChartBase.d.ts +18 -0
- package/dist/base/chart/chartColors.d.ts +4 -0
- package/dist/base/chart/chartScales.d.ts +15 -0
- package/dist/base/chart/chartTypes.d.ts +58 -0
- package/dist/base/chart/useChartDimensions.d.ts +13 -0
- package/dist/base/chart/useChartIndexNavigation.d.ts +23 -0
- package/dist/base/index.d.ts +28 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3270 -2136
- package/dist/index.js.map +1 -1
- package/dist/pdf-04d5ad63.js +14755 -0
- package/dist/pdf-04d5ad63.js.map +1 -0
- package/dist/pdf-c22cffd3.cjs +13 -0
- package/dist/pdf-c22cffd3.cjs.map +1 -0
- package/dist/pdf.worker.min-ab9f616e.cjs +2 -0
- package/dist/pdf.worker.min-ab9f616e.cjs.map +1 -0
- package/dist/pdf.worker.min-e6e7e836.js +5 -0
- package/dist/pdf.worker.min-e6e7e836.js.map +1 -0
- package/dist/style.css +1 -1
- package/package.json +75 -72
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-04d5ad63.js","sources":["../node_modules/pdfjs-dist/build/pdf.mjs"],"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 TouchManager: () => (/* reexport */ TouchManager),\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 stopEvent: () => (/* reexport */ stopEvent),\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 DRAW_STEP: 41\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 isImageDecoderSupported() {\n return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"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.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n crypto.getRandomValues(buf);\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\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}\nif (typeof Promise.try !== \"function\") {\n Promise.try = function (fn, ...args) {\n return new Promise(resolve => {\n resolve(fn(...args));\n });\n };\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 userUnit,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.userUnit = userUnit;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n scale *= userUnit;\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 userUnit,\n viewBox\n } = this;\n const dims = viewBox.map(x => x * userUnit);\n return shadow(this, \"rawDims\", {\n pageWidth: dims[2] - dims[0],\n pageHeight: dims[3] - dims[1],\n pageX: dims[0],\n pageY: dims[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 userUnit: this.userUnit,\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 stopEvent(e) {\n e.preventDefault();\n e.stopPropagation();\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 userUnit: 1,\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 stopEvent(e);\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\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 warn(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 cleanType(type) {\n if (this.#position === -1) {\n return;\n }\n for (let i = this.#position; i >= 0; i--) {\n if (this.#commands[i].type !== type) {\n this.#commands.splice(i + 1, this.#position - i);\n this.#position = i;\n return;\n }\n }\n this.#commands.length = 0;\n this.#position = -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 stopEvent(event);\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 #currentDrawingSession = null;\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n _editorUndoBar = null;\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, editorUndoBar, supportsPinchToZoom) {\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 this._editorUndoBar = editorUndoBar || null;\n this._supportsPinchToZoom = supportsPinchToZoom !== 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 this._editorUndoBar?.destroy();\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 setCurrentDrawingSession(layer) {\n if (layer) {\n this.unselectAll();\n this.disableUserSelect(true);\n } else {\n this.disableUserSelect(false);\n }\n this.#currentDrawingSession = layer;\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 this.#currentDrawingSession?.onScaleChanging();\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._editorUndoBar?.hide();\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 updateUIForDefaultProperties(editorType) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\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 this.#currentDrawingSession?.commitOrRemove();\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 this._editorUndoBar?.hide();\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 cleanUndoStack(type) {\n this.#commandManager.cleanType(type);\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 const drawingEditor = this.currentLayer?.endDrawingSession(true);\n if (!this.hasSelection && !drawingEditor) {\n return;\n }\n const editors = drawingEditor ? [drawingEditor] : [...this.#selectedEditors];\n const cmd = () => {\n this._editorUndoBar?.show(undo, editors.length === 1 ? editors[0].editorType : editors.length);\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.#currentDrawingSession?.commitOrRemove()) {\n return;\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/touch_manager.js\n\n\nclass TouchManager {\n #container;\n #isPinching = false;\n #isPinchingStopped = null;\n #isPinchingDisabled;\n #onPinchStart;\n #onPinching;\n #onPinchEnd;\n #signal;\n #touchInfo = null;\n #touchManagerAC;\n #touchMoveAC = null;\n constructor({\n container,\n isPinchingDisabled = null,\n isPinchingStopped = null,\n onPinchStart = null,\n onPinching = null,\n onPinchEnd = null,\n signal\n }) {\n this.#container = container;\n this.#isPinchingStopped = isPinchingStopped;\n this.#isPinchingDisabled = isPinchingDisabled;\n this.#onPinchStart = onPinchStart;\n this.#onPinching = onPinching;\n this.#onPinchEnd = onPinchEnd;\n this.#touchManagerAC = new AbortController();\n this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]);\n container.addEventListener(\"touchstart\", this.#onTouchStart.bind(this), {\n passive: false,\n signal: this.#signal\n });\n }\n get MIN_TOUCH_DISTANCE_TO_PINCH() {\n return shadow(this, \"MIN_TOUCH_DISTANCE_TO_PINCH\", 35 / (window.devicePixelRatio || 1));\n }\n #onTouchStart(evt) {\n if (this.#isPinchingDisabled?.() || evt.touches.length < 2) {\n return;\n }\n if (!this.#touchMoveAC) {\n this.#touchMoveAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]);\n const container = this.#container;\n const opt = {\n signal,\n passive: false\n };\n container.addEventListener(\"touchmove\", this.#onTouchMove.bind(this), opt);\n container.addEventListener(\"touchend\", this.#onTouchEnd.bind(this), opt);\n container.addEventListener(\"touchcancel\", this.#onTouchEnd.bind(this), opt);\n this.#onPinchStart?.();\n }\n stopEvent(evt);\n if (evt.touches.length !== 2 || this.#isPinchingStopped?.()) {\n this.#touchInfo = null;\n return;\n }\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n this.#touchInfo = {\n touch0X: touch0.screenX,\n touch0Y: touch0.screenY,\n touch1X: touch1.screenX,\n touch1Y: touch1.screenY\n };\n }\n #onTouchMove(evt) {\n if (!this.#touchInfo || evt.touches.length !== 2) {\n return;\n }\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n const {\n screenX: screen0X,\n screenY: screen0Y\n } = touch0;\n const {\n screenX: screen1X,\n screenY: screen1Y\n } = touch1;\n const touchInfo = this.#touchInfo;\n const {\n touch0X: pTouch0X,\n touch0Y: pTouch0Y,\n touch1X: pTouch1X,\n touch1Y: pTouch1Y\n } = touchInfo;\n const prevGapX = pTouch1X - pTouch0X;\n const prevGapY = pTouch1Y - pTouch0Y;\n const currGapX = screen1X - screen0X;\n const currGapY = screen1Y - screen0Y;\n const distance = Math.hypot(currGapX, currGapY) || 1;\n const pDistance = Math.hypot(prevGapX, prevGapY) || 1;\n if (!this.#isPinching && Math.abs(pDistance - distance) <= TouchManager.MIN_TOUCH_DISTANCE_TO_PINCH) {\n return;\n }\n touchInfo.touch0X = screen0X;\n touchInfo.touch0Y = screen0Y;\n touchInfo.touch1X = screen1X;\n touchInfo.touch1Y = screen1Y;\n evt.preventDefault();\n if (!this.#isPinching) {\n this.#isPinching = true;\n return;\n }\n const origin = [(screen0X + screen1X) / 2, (screen0Y + screen1Y) / 2];\n this.#onPinching?.(origin, pDistance, distance);\n }\n #onTouchEnd(evt) {\n this.#touchMoveAC.abort();\n this.#touchMoveAC = null;\n this.#onPinchEnd?.();\n if (!this.#touchInfo) {\n return;\n }\n evt.preventDefault();\n this.#touchInfo = null;\n this.#isPinching = false;\n }\n destroy() {\n this.#touchManagerAC?.abort();\n this.#touchManagerAC = null;\n }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #disabled = false;\n #dragPointerId = null;\n #dragPointerType = \"\";\n #keepAspectRatio = false;\n #resizersDiv = null;\n #lastPointerCoords = null;\n #savedDimensions = null;\n #focusAC = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialRect = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n #touchManager = 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 isDrawer() {\n return false;\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._onTranslating(this.x, this.y);\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n drag(tx, ty) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n const {\n div,\n parentDimensions: [parentWidth, parentHeight]\n } = this;\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 const {\n style\n } = div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this._onTranslating(x, y);\n div.scrollIntoView({\n block: \"nearest\"\n });\n }\n _onTranslating(x, y) {}\n _onTranslated(x, y) {}\n get _hasBeenMoved() {\n return !!this.#initialRect && (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y);\n }\n get _hasBeenResized() {\n return !!this.#initialRect && (this.#initialRect[2] !== this.width || this.#initialRect[3] !== this.height);\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 {\n div: {\n style\n },\n pageDimensions: [pageWidth, pageHeight]\n } = this;\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 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 const {\n style\n } = this.div;\n style.width = `${(100 * width / parentWidth).toFixed(2)}%`;\n if (!this.#keepAspectRatio) {\n 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 this.#lastPointerCoords = [event.screenX, event.screenY];\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(\"touchmove\", stopEvent, {\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\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();\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n #resize(x, y, width, height) {\n this.width = width;\n this.height = height;\n this.x = x;\n this.y = y;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * width, parentHeight * height);\n this.fixAndSetPosition();\n this._onResized();\n }\n _onResized() {}\n #addResizeToUndoStack() {\n if (!this.#savedDimensions) {\n return;\n }\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#savedDimensions = null;\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: this.#resize.bind(this, newX, newY, newWidth, newHeight),\n undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\n mustExec: true\n });\n }\n static _round(x) {\n return Math.round(x * 10000) / 10000;\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 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 = AnnotationEditor._round(savedX + transfOppositePoint[0]);\n const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let deltaX, deltaY;\n if (!event.fromKeyboard) {\n const {\n screenX,\n screenY\n } = event;\n const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\n [deltaX, deltaY] = this.screenToPageTranslation(screenX - lastScreenX, screenY - lastScreenY);\n this.#lastPointerCoords[0] = screenX;\n this.#lastPointerCoords[1] = screenY;\n } else {\n ({\n deltaX,\n deltaY\n } = event);\n }\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 = AnnotationEditor._round(savedWidth * ratioX);\n const newHeight = AnnotationEditor._round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\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 this._onResizing();\n }\n _onResizing() {}\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 if (this.isResizable && this._uiManager._supportsPinchToZoom) {\n this.#touchManager ||= new TouchManager({\n container: this.div,\n isPinchingDisabled: () => !this.isSelected,\n onPinchStart: this.#touchPinchStartCallback.bind(this),\n onPinching: this.#touchPinchCallback.bind(this),\n onPinchEnd: this.#touchPinchEndCallback.bind(this),\n signal: this._uiManager._signal\n });\n }\n this._uiManager._editorUndoBar?.hide();\n return this.div;\n }\n #touchPinchStartCallback() {\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n this.#altText?.toggle(false);\n this.parent.togglePointerEvents(false);\n }\n #touchPinchCallback(_origin, prevDistance, distance) {\n const slowDownFactor = 0.7;\n let factor = slowDownFactor * (distance / prevDistance) + 1 - slowDownFactor;\n if (factor === 1) {\n return;\n }\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 [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 factor = Math.max(Math.min(factor, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n const newWidth = AnnotationEditor._round(savedWidth * factor);\n const newHeight = AnnotationEditor._round(savedHeight * factor);\n if (newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight];\n const transfCenterPoint = transf(savedWidth / 2, savedHeight / 2);\n const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]);\n const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]);\n const newTransfCenterPoint = transf(newWidth / 2, newHeight / 2);\n this.x = centerX - newTransfCenterPoint[0];\n this.y = centerY - newTransfCenterPoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n this._onResizing();\n }\n #touchPinchEndCallback() {\n this.#altText?.toggle(true);\n this.parent.togglePointerEvents(true);\n this.#addResizeToUndoStack();\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 let hasDraggingStarted = false;\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n const opts = {\n capture: true,\n passive: false,\n signal\n };\n const cancelDrag = e => {\n ac.abort();\n this.#dragPointerId = null;\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(e);\n }\n if (hasDraggingStarted) {\n this._onStopDragging();\n }\n };\n if (isSelected) {\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n this.#dragPointerId = event.pointerId;\n this.#dragPointerType = event.pointerType;\n window.addEventListener(\"pointermove\", e => {\n if (!hasDraggingStarted) {\n hasDraggingStarted = true;\n this._onStartDragging();\n }\n const {\n clientX: x,\n clientY: y,\n pointerId\n } = e;\n if (pointerId !== this.#dragPointerId) {\n stopEvent(e);\n return;\n }\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 }, opts);\n window.addEventListener(\"touchmove\", stopEvent, opts);\n window.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === this.#dragPointerType) {\n if (this.#touchManager || e.isPrimary) {\n cancelDrag(e);\n }\n }\n stopEvent(e);\n }, opts);\n }\n const pointerUpCallback = e => {\n if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\n cancelDrag(e);\n return;\n }\n stopEvent(e);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n _onStartDragging() {}\n _onStopDragging() {}\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 this._onTranslated();\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(focus) {}\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 get isOnScreen() {\n const {\n top,\n left,\n bottom,\n right\n } = this.getClientDimensions();\n const {\n innerHeight,\n innerWidth\n } = window;\n return left < innerWidth && right > 0 && top < innerHeight && bottom > 0;\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 resize() {}\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 this.#touchManager?.destroy();\n this.#touchManager = 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 deltaX: x,\n deltaY: y,\n fromKeyboard: true\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n this.#addResizeToUndoStack();\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 fontExtraProperties = 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.fontExtraProperties = fontExtraProperties === 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 const objId = this.loadedName + \"_path_\" + character;\n let cmds;\n try {\n cmds = objs.get(objId);\n } catch (ex) {\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n const path = new Path2D(cmds || \"\");\n if (!this.fontExtraProperties) {\n objs.delete(objId);\n }\n return this.compiledGlyphs[character] = path;\n }\n}\n\n;// ./src/shared/message_handler.js\n\nconst CallbackKind = {\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\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 onFn() {}\nfunction wrapReason(ex) {\n if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof MissingPDFException || ex instanceof PasswordException || ex instanceof UnexpectedResponseException || ex instanceof UnknownErrorException) {\n return ex;\n }\n if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (ex.name) {\n case \"AbortException\":\n return new AbortException(ex.message);\n case \"InvalidPDFException\":\n return new InvalidPDFException(ex.message);\n case \"MissingPDFException\":\n return new MissingPDFException(ex.message);\n case \"PasswordException\":\n return new PasswordException(ex.message, ex.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(ex.message, ex.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(ex.message, ex.details);\n }\n return new UnknownErrorException(ex.message, ex.toString());\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 Promise.try(action, data.data).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 Promise.try(action, data.data, streamSink).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 Promise.try(streamSink.onPull || onFn).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 const dataReason = wrapReason(data.reason);\n Promise.try(streamSink.onCancel || onFn, dataReason).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(dataReason);\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/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) {\n return;\n }\n this.#_defs?.parentNode.parentNode.remove();\n this.#_defs = null;\n this.#_cache?.clear();\n this.#_cache = null;\n this.#_hcmCache?.clear();\n this.#_hcmCache = null;\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 warn(\"Please use the `legacy` build in Node.js environments.\");\n}\nasync function node_utils_fetchData(url) {\n const fs = process.getBuiltinModule(\"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 require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n const canvas = require(\"@napi-rs/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 len = width * height * 3;\n const len32 = len >> 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 = srcPos + len; 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 = srcPos + len; 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: srcPos + len,\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.patternStroke = 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 (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 const newPath = new Path2D();\n const invTransf = ctx.getTransform().invertSelf();\n for (const {\n transform,\n x,\n y,\n fontSize,\n path\n } of paths) {\n newPath.addPath(path, new DOMMatrix(transform).preMultiplySelf(invTransf).translate(x, y).scale(fontSize, -fontSize));\n }\n ctx.clip(newPath);\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 #getScaledPath(path, currentTransform, transform) {\n const newPath = new Path2D();\n newPath.addPath(path, new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform));\n return newPath;\n }\n paintChar(character, x, y, patternFillTransform, patternStrokeTransform) {\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 const patternStroke = current.patternStroke && !font.missingFile;\n let path;\n if (font.disableFontFace || isAddToPathSet || patternFill || patternStroke) {\n path = font.getPathGenerator(this.commonObjs, character);\n }\n if (font.disableFontFace || patternFill || patternStroke) {\n ctx.save();\n ctx.translate(x, y);\n ctx.scale(fontSize, -fontSize);\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternFillTransform) {\n const currentTransform = ctx.getTransform();\n ctx.setTransform(...patternFillTransform);\n ctx.fill(this.#getScaledPath(path, currentTransform, patternFillTransform));\n } else {\n ctx.fill(path);\n }\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternStrokeTransform) {\n const currentTransform = ctx.getTransform();\n ctx.setTransform(...patternStrokeTransform);\n ctx.stroke(this.#getScaledPath(path, currentTransform, patternStrokeTransform));\n } else {\n ctx.lineWidth /= fontSize;\n ctx.stroke(path);\n }\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 path\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 patternFillTransform, patternStrokeTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n patternFillTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n if (current.patternStroke) {\n ctx.save();\n const pattern = current.strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n patternStrokeTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.strokeStyle = 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, patternFillTransform, patternStrokeTransform);\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, patternFillTransform, patternStrokeTransform);\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 this.current.patternStroke = true;\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 this.current.patternStroke = false;\n }\n setStrokeTransparent() {\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n this.current.patternStroke = false;\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/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 getResponseOrigin(url) {\n try {\n return new URL(url).origin;\n } catch {}\n return null;\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 _responseOrigin = null;\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 stream._responseOrigin = getResponseOrigin(response.url);\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 const responseOrigin = getResponseOrigin(response.url);\n if (responseOrigin !== stream._responseOrigin) {\n throw new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${stream._responseOrigin}\".`);\n }\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 _responseOrigin = null;\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 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 assert(args.onError, \"Expected `onError` callback to be provided.\");\n xhr.onerror = () => {\n args.onError(xhr.status);\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 if (matches) {\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else {\n warn(`Missing or invalid \"Content-Range\" header.`);\n pendingRequest.onError(0);\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 this._url = source.url;\n this._fullRequestId = manager.request({\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._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 this._manager._responseOrigin = getResponseOrigin(fullRequestXhr.responseURL);\n const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\n const responseHeaders = new Headers(rawResponseHeaders ? rawResponseHeaders.trimStart().replace(/[^\\S ]+$/, \"\").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 await this._headersCapability.promise;\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 this._url = manager.url;\n this._requestId = manager.request({\n begin,\n end,\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._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n _onHeadersReceived() {\n const responseOrigin = getResponseOrigin(this._manager.getRequestXhr(this._requestId)?.responseURL);\n if (responseOrigin !== this._manager._responseOrigin) {\n this._storedError = new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${this._manager._responseOrigin}\".`);\n this._onError(0);\n }\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\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 = process.getBuiltinModule(\"url\");\n return new URL(url.pathToFileURL(sourceUrl));\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrlOrPath(source.url);\n assert(this.url.protocol === \"file:\", \"PDFNodeStream only supports file:// URLs.\");\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 = new PDFNodeStreamFsFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = new PDFNodeStreamFsRangeReader(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 PDFNodeStreamFsFullReader {\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 const fs = process.getBuiltinModule(\"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 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 PDFNodeStreamFsRangeReader {\n constructor(stream, start, end) {\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 const fs = process.getBuiltinModule(\"fs\");\n this._setReadableStream(fs.createReadStream(this._url, {\n start,\n end: end - 1\n }));\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}\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 isImageDecoderSupported = typeof src.isImageDecoderSupported === \"boolean\" ? src.isImageDecoderSupported : !isNodeJS && (util_FeatureTest.platform.isFirefox || !globalThis.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 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.10.38\",\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 isImageDecoderSupported,\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 if (isValidFetchUrl(url)) {\n if (typeof fetch === \"undefined\" || typeof Response === \"undefined\" || !(\"body\" in Response.prototype)) {\n throw new Error(\"getDocument - the Fetch API was disabled in Node.js, see `--no-experimental-fetch`.\");\n }\n NetworkStream = PDFFetchStream;\n } else {\n NetworkStream = PDFNodeStream;\n }\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 this._worker?.destroy();\n this._worker = null;\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 userUnit: this.userUnit,\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 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 this._webWorker?.terminate();\n this._webWorker = null;\n PDFWorker.#workerPorts?.delete(this._port);\n this._port = null;\n this._messageHandler?.destroy();\n this._messageHandler = null;\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 this.messageHandler?.destroy();\n this.messageHandler = null;\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\", ex => {\n loadingTask._capability.reject(wrapReason(ex));\n });\n messageHandler.on(\"PasswordRequest\", ex => {\n this.#passwordCapability = Promise.withResolvers();\n try {\n if (!loadingTask.onPassword) {\n throw wrapReason(ex);\n }\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 loadingTask.onPassword(updatePassword, ex.code);\n } catch (err) {\n this.#passwordCapability.reject(err);\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 fontExtraProperties,\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 delete(objId) {\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n return false;\n }\n delete this.#objs[objId];\n return true;\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.10.38\";\nconst build = \"f9bea397f\";\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 #polylinesGroupElement = null;\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 #getTransform(rotation, rect) {\n switch (rotation) {\n case 90:\n return {\n transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n case 180:\n return {\n transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n case 270:\n return {\n transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n default:\n return {\n transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n }\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n rotation,\n inkLists,\n borderStyle,\n popupRef\n }\n } = this;\n const {\n transform,\n width,\n height\n } = this.#getTransform(rotation, rect);\n const svg = this.svgFactory.create(width, height, true);\n const g = this.#polylinesGroupElement = this.svgFactory.createElement(\"svg:g\");\n svg.append(g);\n g.setAttribute(\"stroke-width\", borderStyle.width || 1);\n g.setAttribute(\"stroke-linecap\", \"round\");\n g.setAttribute(\"stroke-linejoin\", \"round\");\n g.setAttribute(\"stroke-miterlimit\", 10);\n g.setAttribute(\"stroke\", \"transparent\");\n g.setAttribute(\"fill\", \"transparent\");\n g.setAttribute(\"transform\", transform);\n for (let i = 0, ii = inkLists.length; i < ii; i++) {\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", inkLists[i].join(\",\"));\n g.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 updateEdited(params) {\n super.updateEdited(params);\n const {\n thickness,\n points,\n rect\n } = params;\n const g = this.#polylinesGroupElement;\n if (thickness >= 0) {\n g.setAttribute(\"stroke-width\", thickness || 1);\n }\n if (points) {\n for (let i = 0, ii = this.#polylines.length; i < ii; i++) {\n this.#polylines[i].setAttribute(\"points\", points[i].join(\",\"));\n }\n }\n if (rect) {\n const {\n transform,\n width,\n height\n } = this.#getTransform(this.data.rotation, rect);\n const root = g.parentElement;\n root.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n g.setAttribute(\"transform\", transform);\n }\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(focus) {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n if (focus) {\n this.editorDiv.focus();\n }\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 static PRECISION = 1e-4;\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 static _rescale(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(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 static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(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 static _translate(src, tx, ty, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i];\n dest[i + 1] = ty + src[i + 1];\n }\n return dest;\n }\n static svgRound(x) {\n return Math.round(x * 10000);\n }\n static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y / parentWidth, x / parentHeight];\n case 180:\n return [1 - x / parentWidth, 1 - y / parentHeight];\n case 270:\n return [y / parentWidth, 1 - x / parentHeight];\n default:\n return [x / parentWidth, y / parentHeight];\n }\n }\n static _normalizePagePoint(x, y, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y, x];\n case 180:\n return [1 - x, 1 - y];\n case 270:\n return [y, 1 - x];\n default:\n return [x, y];\n }\n }\n static createBezierPoints(x1, y1, x2, y2, x3, y3) {\n return [(x1 + 5 * x2) / 6, (y1 + 5 * y2) / 6, (5 * x2 + x3) / 6, (5 * y2 + y3) / 6, (x2 + x3) / 2, (y2 + y3) / 2];\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 Float32Array(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 Float32Array((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 Float32Array(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 Float32Array(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 = new Float32Array(4);\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.lastPoint = [NaN, NaN];\n this.#computeMinMax(isLTR);\n const [x, y, width, height] = 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 = Outline._rescale(this.#outline, blX, trY, width, -height);\n points = Outline._rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = Outline._rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = Outline._rescale(this.#outline, trX, blY, -width, height);\n points = Outline._rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = Outline._rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = Outline._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 #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 bbox = this.#bbox;\n bbox[0] = minX - this.#innerMargin;\n bbox[1] = minY - this.#innerMargin;\n bbox[2] = maxX - minX + 2 * this.#innerMargin;\n bbox[3] = maxY - minY + 2 * this.#innerMargin;\n this.lastPoint = [lastPointX, lastPointY];\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 [x, y, width, height] = 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}\n\n;// ./src/display/editor/drawers/highlight.js\n\n\nclass HighlightOutliner {\n #box;\n #lastPoint;\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 = new Float32Array([shiftedMinX, shiftedMinY, bboxWidth, bboxHeight]);\n this.#lastPoint = lastPoint;\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, this.#lastPoint);\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, lastPoint) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n this.lastPoint = lastPoint;\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 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}\nclass FreeHighlightOutline extends FreeDrawOutline {\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 [this.x, this.y, this.width, this.height] = 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;\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.finalizeDraw(highlightId, {\n bbox: highlightOutlines.box,\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.#outlineId = this.parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: true\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, true);\n } else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateProperties(this.#id, {\n bbox: HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360),\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n });\n }\n const [x, y, width, height] = 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;\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.#opacity = opa;\n this.parent?.drawLayer.updateProperties(this.#id, {\n root: {\n fill: col,\n \"fill-opacity\": opa\n }\n });\n this.#colorPicker?.updateColor(col);\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(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n if (focus) {\n this.div.focus();\n }\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({\n bbox: this.#highlightOutlines.box,\n root: {\n viewBox: \"0 0 1 1\",\n fill: this.color,\n \"fill-opacity\": this.#opacity\n },\n rootClass: {\n highlight: true,\n free: this.#isFreeHighlight\n },\n path: {\n d: this.#highlightOutlines.toSVGPath()\n }\n }, false, true));\n this.#outlineId = parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: this.#isFreeHighlight\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, this.#isFreeHighlight);\n if (this.#highlightDiv) {\n this.#highlightDiv.style.clipPath = this.#clipPathId;\n }\n }\n static #rotateBbox([x, y, width, height], angle) {\n switch (angle) {\n case 90:\n return [1 - y - height, x, height, width];\n case 180:\n return [1 - x - width, 1 - y - height, width, height];\n case 270:\n return [y, 1 - x - width, height, width];\n }\n return [x, y, width, height];\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.x, this.y, this.width, this.height], angle);\n }\n drawLayer.updateProperties(this.#id, {\n bbox: box,\n root: {\n \"data-main-rotation\": angle\n }\n });\n drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n root: {\n \"data-main-rotation\": angle\n }\n });\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.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: true\n }\n });\n }\n }\n pointerleave() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false\n }\n });\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.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false,\n selected: true\n }\n });\n }\n unselect() {\n super.unselect();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n selected: false\n }\n });\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.updateProperties(this.#id, {\n rootClass: {\n hidden: !visible\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hidden: !visible\n }\n });\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) * 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 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\", stopEvent, {\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({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: this._defaultColor,\n \"fill-opacity\": this._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n }, true, true));\n }\n static #highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n parent.drawLayer.updateProperties(this._freeHighlightId, {\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n });\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({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: editor.color,\n \"fill-opacity\": editor._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: outliner.toSVGPath()\n }\n }, true, 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/draw.js\n\n\n\nclass DrawingOptions {\n #svgProperties = Object.create(null);\n updateProperty(name, value) {\n this[name] = value;\n this.updateSVGProperty(name, value);\n }\n updateProperties(properties) {\n if (!properties) {\n return;\n }\n for (const [name, value] of Object.entries(properties)) {\n this.updateProperty(name, value);\n }\n }\n updateSVGProperty(name, value) {\n this.#svgProperties[name] = value;\n }\n toSVGProperties() {\n const root = this.#svgProperties;\n this.#svgProperties = Object.create(null);\n return {\n root\n };\n }\n reset() {\n this.#svgProperties = Object.create(null);\n }\n updateAll(options = this) {\n this.updateProperties(options);\n }\n clone() {\n unreachable(\"Not implemented\");\n }\n}\nclass DrawingEditor extends AnnotationEditor {\n #drawOutlines = null;\n #mustBeCommitted;\n _drawId = null;\n static _currentDrawId = -1;\n static _currentParent = null;\n static #currentDraw = null;\n static #currentDrawingAC = null;\n static #currentDrawingOptions = null;\n static #currentPointerId = NaN;\n static #currentPointerType = null;\n static #currentPointerIds = null;\n static #currentMoveTimestamp = NaN;\n static _INNER_MARGIN = 3;\n constructor(params) {\n super(params);\n this.#mustBeCommitted = params.mustBeCommitted || false;\n if (params.drawOutlines) {\n this.#createDrawOutlines(params);\n this.#addToDrawLayer();\n }\n }\n #createDrawOutlines({\n drawOutlines,\n drawId,\n drawingOptions\n }) {\n this.#drawOutlines = drawOutlines;\n this._drawingOptions ||= drawingOptions;\n if (drawId >= 0) {\n this._drawId = drawId;\n this.parent.drawLayer.finalizeDraw(drawId, drawOutlines.defaultProperties);\n } else {\n this._drawId = this.#createDrawing(drawOutlines, this.parent);\n }\n this.#updateBbox(drawOutlines.box);\n }\n #createDrawing(drawOutlines, parent) {\n const {\n id\n } = parent.drawLayer.draw(DrawingEditor._mergeSVGProperties(this._drawingOptions.toSVGProperties(), drawOutlines.defaultSVGProperties), false, false);\n return id;\n }\n static _mergeSVGProperties(p1, p2) {\n const p1Keys = new Set(Object.keys(p1));\n for (const [key, value] of Object.entries(p2)) {\n if (p1Keys.has(key)) {\n Object.assign(p1[key], value);\n } else {\n p1[key] = value;\n }\n }\n return p1;\n }\n static getDefaultDrawingOptions(_options) {\n unreachable(\"Not implemented\");\n }\n static get typesMap() {\n unreachable(\"Not implemented\");\n }\n static get isDrawer() {\n return true;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static updateDefaultParams(type, value) {\n const propertyName = this.typesMap.get(type);\n if (propertyName) {\n this._defaultDrawingOptions.updateProperty(propertyName, value);\n }\n if (this._currentParent) {\n DrawingEditor.#currentDraw.updateProperty(propertyName, value);\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n }\n updateParams(type, value) {\n const propertyName = this.constructor.typesMap.get(type);\n if (propertyName) {\n this._updateProperty(type, propertyName, value);\n }\n }\n static get defaultPropertiesToUpdate() {\n const properties = [];\n const options = this._defaultDrawingOptions;\n for (const [type, name] of this.typesMap) {\n properties.push([type, options[name]]);\n }\n return properties;\n }\n get propertiesToUpdate() {\n const properties = [];\n const {\n _drawingOptions\n } = this;\n for (const [type, name] of this.constructor.typesMap) {\n properties.push([type, _drawingOptions[name]]);\n }\n return properties;\n }\n _updateProperty(type, name, value) {\n const options = this._drawingOptions;\n const savedValue = options[name];\n const setter = val => {\n options.updateProperty(name, val);\n const bbox = this.#drawOutlines.updateProperty(name, val);\n if (bbox) {\n this.#updateBbox(bbox);\n }\n this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n };\n this.addCommands({\n cmd: setter.bind(this, value),\n undo: setter.bind(this, savedValue),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _onResizing() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizingSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onResized() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizedSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onTranslating(x, y) {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n bbox: this.#rotateBox(x, y)\n });\n }\n _onTranslated() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathTranslatedSVGProperties(this.#convertToDrawSpace(), this.parentDimensions), {\n bbox: this.#rotateBox()\n }));\n }\n _onStartDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: true\n }\n });\n }\n _onStopDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: false\n }\n });\n }\n commit() {\n super.commit();\n this.disableEditMode();\n this.disableEditing();\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 getBaseTranslation() {\n return [0, 0];\n }\n get isResizable() {\n return true;\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n this._isDraggable = true;\n if (this.#mustBeCommitted) {\n this.#mustBeCommitted = false;\n this.commit();\n this.parent.setSelected(this);\n if (focus && this.isOnScreen) {\n this.div.focus();\n }\n }\n }\n remove() {\n this.#cleanDrawLayer();\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 this.#updateBbox(this.#drawOutlines.box);\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._uiManager.removeShouldRescale(this);\n this.#cleanDrawLayer();\n } else if (parent) {\n this._uiManager.addShouldRescale(this);\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n if (mustBeSelected) {\n this.select();\n }\n }\n #cleanDrawLayer() {\n if (this._drawId === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this._drawId);\n this._drawId = null;\n this._drawingOptions.reset();\n }\n #addToDrawLayer(parent = this.parent) {\n if (this._drawId !== null && this.parent === parent) {\n return;\n }\n if (this._drawId !== null) {\n this.parent.drawLayer.updateParent(this._drawId, parent.drawLayer);\n return;\n }\n this._drawingOptions.updateAll();\n this._drawId = this.#createDrawing(this.#drawOutlines, parent);\n }\n #convertToParentSpace([x, y, width, height]) {\n const {\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [y, 1 - x, width * (pH / pW), height * (pW / pH)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [1 - y, x, width * (pH / pW), height * (pW / pH)];\n default:\n return [x, y, width, height];\n }\n }\n #convertToDrawSpace() {\n const {\n x,\n y,\n width,\n height,\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n #updateBbox(bbox) {\n [this.x, this.y, this.width, this.height] = this.#convertToParentSpace(bbox);\n if (this.div) {\n this.fixAndSetPosition();\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n }\n this._onResized();\n }\n #rotateBox() {\n const {\n x,\n y,\n width,\n height,\n rotation,\n parentRotation,\n parentDimensions: [pW, pH]\n } = this;\n switch ((rotation * 4 + parentRotation) / 90) {\n case 1:\n return [1 - y - height, x, height, width];\n case 2:\n return [1 - x - width, 1 - y - height, width, height];\n case 3:\n return [y, 1 - x - width, height, width];\n case 4:\n return [x, y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 5:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 6:\n return [1 - x - height * (pH / pW), 1 - y, height * (pH / pW), width * (pW / pH)];\n case 7:\n return [y - width * (pW / pH), 1 - x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 8:\n return [x - width, y - height, width, height];\n case 9:\n return [1 - y, x - width, height, width];\n case 10:\n return [1 - x, 1 - y, width, height];\n case 11:\n return [y - height, 1 - x, height, width];\n case 12:\n return [x - height * (pH / pW), y, height * (pH / pW), width * (pW / pH)];\n case 13:\n return [1 - y - width * (pW / pH), x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 14:\n return [1 - x, 1 - y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 15:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n rotate() {\n if (!this.parent) {\n return;\n }\n this.parent.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties({\n bbox: this.#rotateBox()\n }, this.#drawOutlines.updateRotation((this.parentRotation - this.rotation + 360) % 360)));\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n this.#updateBbox(this.#drawOutlines.updateParentDimensions(this.parentDimensions, this.parent.scale));\n }\n static onScaleChangingWhenDrawing() {}\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n div.classList.add(\"draw\");\n const drawDiv = document.createElement(\"div\");\n div.append(drawDiv);\n drawDiv.setAttribute(\"aria-hidden\", \"true\");\n drawDiv.className = \"internal\";\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this._uiManager.addShouldRescale(this);\n this.disableEditing();\n return div;\n }\n static createDrawerInstance(_x, _y, _parentWidth, _parentHeight, _rotation) {\n unreachable(\"Not implemented\");\n }\n static startDrawing(parent, uiManager, _isLTR, event) {\n const {\n target,\n offsetX: x,\n offsetY: y,\n pointerId,\n pointerType\n } = event;\n if (DrawingEditor.#currentPointerType && DrawingEditor.#currentPointerType !== pointerType) {\n return;\n }\n const {\n viewport: {\n rotation\n }\n } = parent;\n const {\n width: parentWidth,\n height: parentHeight\n } = target.getBoundingClientRect();\n const ac = DrawingEditor.#currentDrawingAC = new AbortController();\n const signal = parent.combinedSignal(ac);\n DrawingEditor.#currentPointerId ||= pointerId;\n DrawingEditor.#currentPointerType ??= pointerType;\n window.addEventListener(\"pointerup\", e => {\n if (DrawingEditor.#currentPointerId === e.pointerId) {\n this._endDraw(e);\n } else {\n DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointercancel\", e => {\n if (DrawingEditor.#currentPointerId === e.pointerId) {\n this._currentParent.endDrawingSession();\n } else {\n DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointerdown\", e => {\n if (DrawingEditor.#currentPointerType !== e.pointerType) {\n return;\n }\n (DrawingEditor.#currentPointerIds ||= new Set()).add(e.pointerId);\n if (DrawingEditor.#currentDraw.isCancellable()) {\n DrawingEditor.#currentDraw.removeLastElement();\n if (DrawingEditor.#currentDraw.isEmpty()) {\n this._currentParent.endDrawingSession(true);\n } else {\n this._endDraw(null);\n }\n }\n }, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n target.addEventListener(\"pointermove\", this._drawMove.bind(this), {\n signal\n });\n target.addEventListener(\"touchmove\", e => {\n if (e.timeStamp === DrawingEditor.#currentMoveTimestamp) {\n stopEvent(e);\n }\n }, {\n signal\n });\n parent.toggleDrawing();\n uiManager._editorUndoBar?.hide();\n if (DrawingEditor.#currentDraw) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.startNew(x, y, parentWidth, parentHeight, rotation));\n return;\n }\n uiManager.updateUIForDefaultProperties(this);\n DrawingEditor.#currentDraw = this.createDrawerInstance(x, y, parentWidth, parentHeight, rotation);\n DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions();\n this._currentParent = parent;\n ({\n id: this._currentDrawId\n } = parent.drawLayer.draw(this._mergeSVGProperties(DrawingEditor.#currentDrawingOptions.toSVGProperties(), DrawingEditor.#currentDraw.defaultSVGProperties), true, false));\n }\n static _drawMove(event) {\n DrawingEditor.#currentMoveTimestamp = -1;\n if (!DrawingEditor.#currentDraw) {\n return;\n }\n const {\n offsetX,\n offsetY,\n pointerId\n } = event;\n if (DrawingEditor.#currentPointerId !== pointerId) {\n return;\n }\n if (DrawingEditor.#currentPointerIds?.size >= 1) {\n this._endDraw(event);\n return;\n }\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.add(offsetX, offsetY));\n DrawingEditor.#currentMoveTimestamp = event.timeStamp;\n stopEvent(event);\n }\n static _cleanup(all) {\n if (all) {\n this._currentDrawId = -1;\n this._currentParent = null;\n DrawingEditor.#currentDraw = null;\n DrawingEditor.#currentDrawingOptions = null;\n DrawingEditor.#currentPointerType = null;\n DrawingEditor.#currentMoveTimestamp = NaN;\n }\n if (DrawingEditor.#currentDrawingAC) {\n DrawingEditor.#currentDrawingAC.abort();\n DrawingEditor.#currentDrawingAC = null;\n DrawingEditor.#currentPointerId = NaN;\n DrawingEditor.#currentPointerIds = null;\n }\n }\n static _endDraw(event) {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n parent.toggleDrawing(true);\n this._cleanup(false);\n if (event) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.end(event.offsetX, event.offsetY));\n }\n if (this.supportMultipleDrawings) {\n const draw = DrawingEditor.#currentDraw;\n const drawId = this._currentDrawId;\n const lastElement = draw.getLastElement();\n parent.addCommands({\n cmd: () => {\n parent.drawLayer.updateProperties(drawId, draw.setLastElement(lastElement));\n },\n undo: () => {\n parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\n },\n mustExec: false,\n type: AnnotationEditorParamsType.DRAW_STEP\n });\n return;\n }\n this.endDrawing(false);\n }\n static endDrawing(isAborted) {\n const parent = this._currentParent;\n if (!parent) {\n return null;\n }\n parent.toggleDrawing(true);\n parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\n if (!DrawingEditor.#currentDraw.isEmpty()) {\n const {\n pageDimensions: [pageWidth, pageHeight],\n scale\n } = parent;\n const editor = parent.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false, {\n drawId: this._currentDrawId,\n drawOutlines: DrawingEditor.#currentDraw.getOutlines(pageWidth * scale, pageHeight * scale, scale, this._INNER_MARGIN),\n drawingOptions: DrawingEditor.#currentDrawingOptions,\n mustBeCommitted: !isAborted\n });\n this._cleanup(true);\n return editor;\n }\n parent.drawLayer.remove(this._currentDrawId);\n this._cleanup(true);\n return null;\n }\n createDrawingOptions(_data) {}\n static deserializeDraw(_pageX, _pageY, _pageWidth, _pageHeight, _innerWidth, _data) {\n unreachable(\"Not implemented\");\n }\n static async deserialize(data, parent, uiManager) {\n const {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = parent.viewport;\n const drawOutlines = this.deserializeDraw(pageX, pageY, pageWidth, pageHeight, this._INNER_MARGIN, data);\n const editor = await super.deserialize(data, parent, uiManager);\n editor.createDrawingOptions(data);\n editor.#createDrawOutlines({\n drawOutlines\n });\n editor.#addToDrawLayer();\n editor.onScaleChanging();\n editor.rotate();\n return editor;\n }\n serializeDraw(isForCopying) {\n const [pageX, pageY] = this.pageTranslation;\n const [pageWidth, pageHeight] = this.pageDimensions;\n return this.#drawOutlines.serialize([pageX, pageY, pageWidth, pageHeight], isForCopying);\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/drawers/inkdraw.js\n\n\nclass InkDrawOutliner {\n #last = new Float64Array(6);\n #line;\n #lines;\n #rotation;\n #thickness;\n #points;\n #lastSVGPath = \"\";\n #lastIndex = 0;\n #outlines = new InkDrawOutline();\n #parentWidth;\n #parentHeight;\n constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n this.#thickness = thickness;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n this.#lines = [{\n line,\n points: this.#points\n }];\n this.#last.set(line, 0);\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n this.#thickness = value;\n }\n }\n #normalizePoint(x, y) {\n return Outline._normalizePoint(x, y, this.#parentWidth, this.#parentHeight, this.#rotation);\n }\n isEmpty() {\n return !this.#lines || this.#lines.length === 0;\n }\n isCancellable() {\n return this.#points.length <= 10;\n }\n add(x, y) {\n [x, y] = this.#normalizePoint(x, y);\n const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\n if (d <= 2) {\n return null;\n }\n this.#points.push(x, y);\n if (isNaN(x1)) {\n this.#last.set([x2, y2, x, y], 2);\n this.#line.push(NaN, NaN, NaN, NaN, x, y);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n if (isNaN(this.#last[0])) {\n this.#line.splice(6, 6);\n }\n this.#last.set([x1, y1, x2, y2, x, y], 0);\n this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n end(x, y) {\n const change = this.add(x, y);\n if (change) {\n return change;\n }\n if (this.#points.length === 2) {\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n return null;\n }\n startNew(x, y, parentWidth, parentHeight, rotation) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n const last = this.#lines.at(-1);\n if (last) {\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n }\n this.#lines.push({\n line,\n points: this.#points\n });\n this.#last.set(line, 0);\n this.#lastIndex = 0;\n this.toSVGPath();\n return null;\n }\n getLastElement() {\n return this.#lines.at(-1);\n }\n setLastElement(element) {\n if (!this.#lines) {\n return this.#outlines.setLastElement(element);\n }\n this.#lines.push(element);\n this.#line = element.line;\n this.#points = element.points;\n this.#lastIndex = 0;\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n if (!this.#lines) {\n return this.#outlines.removeLastElement();\n }\n this.#lines.pop();\n this.#lastSVGPath = \"\";\n for (let i = 0, ii = this.#lines.length; i < ii; i++) {\n const {\n line,\n points\n } = this.#lines[i];\n this.#line = line;\n this.#points = points;\n this.#lastIndex = 0;\n this.toSVGPath();\n }\n return {\n path: {\n d: this.#lastSVGPath\n }\n };\n }\n toSVGPath() {\n const firstX = Outline.svgRound(this.#line[4]);\n const firstY = Outline.svgRound(this.#line[5]);\n if (this.#points.length === 2) {\n this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\n return this.#lastSVGPath;\n }\n if (this.#points.length <= 6) {\n const i = this.#lastSVGPath.lastIndexOf(\"M\");\n this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\n this.#lastIndex = 6;\n }\n if (this.#points.length === 4) {\n const secondX = Outline.svgRound(this.#line[10]);\n const secondY = Outline.svgRound(this.#line[11]);\n this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\n this.#lastIndex = 12;\n return this.#lastSVGPath;\n }\n const buffer = [];\n if (this.#lastIndex === 0) {\n buffer.push(`M ${firstX} ${firstY}`);\n this.#lastIndex = 6;\n }\n for (let i = this.#lastIndex, ii = this.#line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = this.#line.slice(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n this.#lastSVGPath += buffer.join(\" \");\n this.#lastIndex = this.#line.length;\n return this.#lastSVGPath;\n }\n getOutlines(parentWidth, parentHeight, scale, innerMargin) {\n const last = this.#lines.at(-1);\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n this.#outlines.build(this.#lines, parentWidth, parentHeight, scale, this.#rotation, this.#thickness, innerMargin);\n this.#last = null;\n this.#line = null;\n this.#lines = null;\n this.#lastSVGPath = null;\n return this.#outlines;\n }\n get defaultSVGProperties() {\n return {\n root: {\n viewBox: \"0 0 10000 10000\"\n },\n rootClass: {\n draw: true\n },\n bbox: [0, 0, 1, 1]\n };\n }\n}\nclass InkDrawOutline extends Outline {\n #bbox;\n #currentRotation = 0;\n #innerMargin;\n #lines;\n #parentWidth;\n #parentHeight;\n #parentScale;\n #rotation;\n #thickness;\n build(lines, parentWidth, parentHeight, parentScale, rotation, thickness, innerMargin) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#parentScale = parentScale;\n this.#rotation = rotation;\n this.#thickness = thickness;\n this.#innerMargin = innerMargin ?? 0;\n this.#lines = lines;\n this.#computeBbox();\n }\n setLastElement(element) {\n this.#lines.push(element);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n this.#lines.pop();\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n toSVGPath() {\n const buffer = [];\n for (const {\n line\n } of this.#lines) {\n buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\n if (line.length === 6) {\n buffer.push(\"Z\");\n continue;\n }\n if (line.length === 12) {\n buffer.push(`L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`);\n continue;\n }\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n }\n return buffer.join(\"\");\n }\n serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\n const serializedLines = [];\n const serializedPoints = [];\n const [x, y, width, height] = this.#getBBoxWithNoMargin();\n let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\n switch (this.#rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = pageX;\n ty = pageY + pageHeight;\n sx = pageWidth;\n sy = -pageHeight;\n x1 = pageX + x * pageWidth;\n y1 = pageY + (1 - y - height) * pageHeight;\n x2 = pageX + (x + width) * pageWidth;\n y2 = pageY + (1 - y) * pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX;\n ty = pageY;\n sx = pageWidth;\n sy = pageHeight;\n x1 = pageX + y * pageWidth;\n y1 = pageY + x * pageHeight;\n x2 = pageX + (y + height) * pageWidth;\n y2 = pageY + (x + width) * pageHeight;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX + pageWidth;\n ty = pageY;\n sx = -pageWidth;\n sy = pageHeight;\n x1 = pageX + (1 - x - width) * pageWidth;\n y1 = pageY + y * pageHeight;\n x2 = pageX + (1 - x) * pageWidth;\n y2 = pageY + (y + height) * pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX + pageWidth;\n ty = pageY + pageHeight;\n sx = -pageWidth;\n sy = -pageHeight;\n x1 = pageX + (1 - y - height) * pageWidth;\n y1 = pageY + (1 - x - width) * pageHeight;\n x2 = pageX + (1 - y) * pageWidth;\n y2 = pageY + (1 - x) * pageHeight;\n break;\n }\n for (const {\n line,\n points\n } of this.#lines) {\n serializedLines.push(rescaleFn(line, tx, ty, sx, sy, isForCopying ? new Array(line.length) : null));\n serializedPoints.push(rescaleFn(points, tx, ty, sx, sy, isForCopying ? new Array(points.length) : null));\n }\n return {\n lines: serializedLines,\n points: serializedPoints,\n rect: [x1, y1, x2, y2]\n };\n }\n static deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, {\n paths: {\n lines,\n points\n },\n rotation,\n thickness\n }) {\n const newLines = [];\n let tx, ty, sx, sy, rescaleFn;\n switch (rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = -pageX / pageWidth;\n ty = pageY / pageHeight + 1;\n sx = 1 / pageWidth;\n sy = -1 / pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = -pageY / pageHeight;\n ty = -pageX / pageWidth;\n sx = 1 / pageHeight;\n sy = 1 / pageWidth;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX / pageWidth + 1;\n ty = -pageY / pageHeight;\n sx = -1 / pageWidth;\n sy = 1 / pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageY / pageHeight + 1;\n ty = pageX / pageWidth + 1;\n sx = -1 / pageHeight;\n sy = -1 / pageWidth;\n break;\n }\n if (!lines) {\n lines = [];\n for (const point of points) {\n const len = point.length;\n if (len === 2) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]]));\n continue;\n }\n if (len === 4) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1], NaN, NaN, NaN, NaN, point[2], point[3]]));\n continue;\n }\n const line = new Float32Array(3 * (len - 2));\n lines.push(line);\n let [x1, y1, x2, y2] = point.subarray(0, 4);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = point[i];\n const y = point[i + 1];\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n }\n for (let i = 0, ii = lines.length; i < ii; i++) {\n newLines.push({\n line: rescaleFn(lines[i].map(x => x ?? NaN), tx, ty, sx, sy),\n points: rescaleFn(points[i].map(x => x ?? NaN), tx, ty, sx, sy)\n });\n }\n const outlines = new InkDrawOutline();\n outlines.build(newLines, pageWidth, pageHeight, 1, rotation, thickness, innerMargin);\n return outlines;\n }\n #getMarginComponents(thickness = this.#thickness) {\n const margin = this.#innerMargin + thickness / 2 * this.#parentScale;\n return this.#rotation % 180 === 0 ? [margin / this.#parentWidth, margin / this.#parentHeight] : [margin / this.#parentHeight, margin / this.#parentWidth];\n }\n #getBBoxWithNoMargin() {\n const [x, y, width, height] = this.#bbox;\n const [marginX, marginY] = this.#getMarginComponents(0);\n return [x + marginX, y + marginY, width - 2 * marginX, height - 2 * marginY];\n }\n #computeBbox() {\n const bbox = this.#bbox = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n for (const {\n line\n } of this.#lines) {\n if (line.length <= 12) {\n for (let i = 4, ii = line.length; i < ii; i += 6) {\n const [x, y] = line.subarray(i, i + 2);\n bbox[0] = Math.min(bbox[0], x);\n bbox[1] = Math.min(bbox[1], y);\n bbox[2] = Math.max(bbox[2], x);\n bbox[3] = Math.max(bbox[3], y);\n }\n continue;\n }\n let lastX = line[4],\n lastY = line[5];\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\n Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\n lastX = x;\n lastY = y;\n }\n }\n const [marginX, marginY] = this.#getMarginComponents();\n bbox[0] = Math.min(1, Math.max(0, bbox[0] - marginX));\n bbox[1] = Math.min(1, Math.max(0, bbox[1] - marginY));\n bbox[2] = Math.min(1, Math.max(0, bbox[2] + marginX));\n bbox[3] = Math.min(1, Math.max(0, bbox[3] + marginY));\n bbox[2] -= bbox[0];\n bbox[3] -= bbox[1];\n }\n get box() {\n return this.#bbox;\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n return this.#updateThickness(value);\n }\n return null;\n }\n #updateThickness(thickness) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#thickness = thickness;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const [diffMarginX, diffMarginY] = [newMarginX - oldMarginX, newMarginY - oldMarginY];\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateParentDimensions([width, height], scale) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#parentWidth = width;\n this.#parentHeight = height;\n this.#parentScale = scale;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const diffMarginX = newMarginX - oldMarginX;\n const diffMarginY = newMarginY - oldMarginY;\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateRotation(rotation) {\n this.#currentRotation = rotation;\n return {\n path: {\n transform: this.rotationTransform\n }\n };\n }\n get viewBox() {\n return this.#bbox.map(Outline.svgRound).join(\" \");\n }\n get defaultProperties() {\n const [x, y] = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`\n }\n };\n }\n get rotationTransform() {\n const [,, width, height] = this.#bbox;\n let a = 0,\n b = 0,\n c = 0,\n d = 0,\n e = 0,\n f = 0;\n switch (this.#currentRotation) {\n case 90:\n b = height / width;\n c = -width / height;\n e = width;\n break;\n case 180:\n a = -1;\n d = -1;\n e = width;\n f = height;\n break;\n case 270:\n b = -height / width;\n c = width / height;\n f = height;\n break;\n default:\n return \"\";\n }\n return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\n }\n getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const [x, y, width, height] = this.#bbox;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: `${this.rotationTransform} translate(${tx} ${ty})`\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const s2x = width / newWidth;\n const s2y = height / newHeight;\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n transform: `${this.rotationTransform} scale(${s2x} ${s2y}) ` + `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` + `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`\n }\n };\n }\n getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const bbox = this.#bbox;\n const [x, y, width, height] = bbox;\n bbox[0] = newX;\n bbox[1] = newY;\n bbox[2] = newWidth;\n bbox[3] = newHeight;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const tx = -s1x * (x + marginX) + newX + marginX;\n const ty = -s1y * (y + marginY) + newY + marginY;\n if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, s1x, s1y, line);\n Outline._rescale(points, tx, ty, s1x, s1y, points);\n }\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\n const [newParentWidth, newParentHeight] = parentDimensions;\n const bbox = this.#bbox;\n const tx = newX - bbox[0];\n const ty = newY - bbox[1];\n if (this.#parentWidth === newParentWidth && this.#parentHeight === newParentHeight) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n } else {\n const sx = this.#parentWidth / newParentWidth;\n const sy = this.#parentHeight / newParentHeight;\n this.#parentWidth = newParentWidth;\n this.#parentHeight = newParentHeight;\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, sx, sy, line);\n Outline._rescale(points, tx, ty, sx, sy, points);\n }\n bbox[2] *= sx;\n bbox[3] *= sy;\n }\n bbox[0] = newX;\n bbox[1] = newY;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`\n }\n };\n }\n get defaultSVGProperties() {\n const bbox = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n rootClass: {\n draw: true\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\n transform: this.rotationTransform || null\n },\n bbox\n };\n }\n}\n\n;// ./src/display/editor/ink.js\n\n\n\n\n\nclass InkDrawingOptions extends DrawingOptions {\n #viewParameters;\n constructor(viewerParameters) {\n super();\n this.#viewParameters = viewerParameters;\n super.updateProperties({\n fill: \"none\",\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-opacity\": 1,\n \"stroke-width\": 1,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": 10\n });\n }\n updateSVGProperty(name, value) {\n if (name === \"stroke-width\") {\n value ??= this[\"stroke-width\"];\n value *= this.#viewParameters.realScale;\n }\n super.updateSVGProperty(name, value);\n }\n clone() {\n const clone = new InkDrawingOptions(this.#viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass InkEditor extends DrawingEditor {\n static _type = \"ink\";\n static _editorType = AnnotationEditorType.INK;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this._willKeepAspectRatio = true;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new InkDrawingOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return true;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map([[AnnotationEditorParamsType.INK_THICKNESS, \"stroke-width\"], [AnnotationEditorParamsType.INK_COLOR, \"stroke\"], [AnnotationEditorParamsType.INK_OPACITY, \"stroke-opacity\"]]));\n }\n static createDrawerInstance(x, y, parentWidth, parentHeight, rotation) {\n return new InkDrawOutliner(x, y, parentWidth, parentHeight, rotation, this._defaultDrawingOptions[\"stroke-width\"]);\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n opacity,\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.INK,\n color: Array.from(color),\n thickness,\n opacity,\n paths: {\n points: inkLists\n },\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 editor = await super.deserialize(data, parent, uiManager);\n editor.annotationElementId = data.id || null;\n editor._initialData = initialData;\n return editor;\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n super.onScaleChanging();\n const {\n _drawId,\n _drawingOptions,\n parent\n } = this;\n _drawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(_drawId, _drawingOptions.toSVGProperties());\n }\n static onScaleChangingWhenDrawing() {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n super.onScaleChangingWhenDrawing();\n this._defaultDrawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n createDrawingOptions({\n color,\n thickness,\n opacity\n }) {\n this._drawingOptions = InkEditor.getDefaultDrawingOptions({\n stroke: Util.makeHexColor(...color),\n \"stroke-width\": thickness,\n \"stroke-opacity\": opacity\n });\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const {\n lines,\n points,\n rect\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n stroke,\n \"stroke-opacity\": opacity,\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = {\n annotationType: AnnotationEditorType.INK,\n color: AnnotationEditor._colorManager.convert(stroke),\n opacity,\n thickness,\n paths: {\n lines,\n points\n },\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 color,\n thickness,\n opacity,\n pageIndex\n } = this._initialData;\n return this._hasBeenMoved || this._hasBeenResized || serialized.color.some((c, i) => c !== color[i]) || serialized.thickness !== thickness || serialized.opacity !== opacity || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const {\n points,\n rect\n } = this.serializeDraw(false);\n annotation.updateEdited({\n rect,\n thickness: this._drawingOptions[\"stroke-width\"],\n points\n });\n return null;\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 #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 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(focus) {\n this._isDraggable = true;\n if (focus) {\n this.div.focus();\n }\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 this._uiManager.addShouldRescale(this);\n return this.div;\n }\n _onResized() {\n this.onScaleChanging();\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\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();\n }, TIME_TO_WAIT);\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 this.width = width / pageWidth;\n this.height = height / pageHeight;\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n div.hidden = false;\n }\n this.#drawBitmap();\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 #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() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n width,\n height\n } = this;\n const outputScale = new OutputScale();\n const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx);\n const scaledHeight = Math.ceil(height * parentHeight * 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 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 pageIndex,\n accessibilityData: {\n altText\n }\n } = this._initialData;\n const isSamePageIndex = serialized.pageIndex === pageIndex;\n const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n return {\n isSame: !this._hasBeenMoved && !this._hasBeenResized && 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 #isDisabling = false;\n #isEnabling = false;\n #drawingAC = null;\n #focusedElement = null;\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.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\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 setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n cleanUndoStack(type) {\n this.#uiManager.cleanUndoStack(type);\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.#isEnabling = true;\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 this.#isEnabling = false;\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 this.#isEnabling = false;\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 const pointerup = this.pointerup.bind(this);\n this.div.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n this.div.addEventListener(\"pointercancel\", pointerup, {\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 }\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(!this.#isEnabling);\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.#currentEditorType?.isDrawer && this.#currentEditorType.supportMultipleDrawings) {\n return;\n }\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 if (this.#currentEditorType?.isDrawer) {\n this.startDrawingSession(event);\n return;\n }\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n startDrawingSession(event) {\n this.div.focus();\n if (this.#drawingAC) {\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n return;\n }\n this.#uiManager.setCurrentDrawingSession(this);\n this.#drawingAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#drawingAC);\n this.div.addEventListener(\"blur\", ({\n relatedTarget\n }) => {\n if (relatedTarget && !this.div.contains(relatedTarget)) {\n this.#focusedElement = null;\n this.commitOrRemove();\n }\n }, {\n signal\n });\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n }\n pause(on) {\n if (on) {\n const {\n activeElement\n } = document;\n if (this.div.contains(activeElement)) {\n this.#focusedElement = activeElement;\n }\n return;\n }\n if (this.#focusedElement) {\n setTimeout(() => {\n this.#focusedElement?.focus();\n this.#focusedElement = null;\n }, 0);\n }\n }\n endDrawingSession(isAborted = false) {\n if (!this.#drawingAC) {\n return null;\n }\n this.#uiManager.setCurrentDrawingSession(null);\n this.#drawingAC.abort();\n this.#drawingAC = null;\n this.#focusedElement = null;\n return this.#currentEditorType.endDrawing(isAborted);\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 commitOrRemove() {\n if (this.#drawingAC) {\n this.endDrawingSession();\n return true;\n }\n return false;\n }\n onScaleChanging() {\n if (!this.#drawingAC) {\n return;\n }\n this.#currentEditorType.onScaleChangingWhenDrawing(this);\n }\n destroy() {\n this.commitOrRemove();\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 for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\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 }\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, [x, y, width, height]) {\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() {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", true);\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 #updateProperties(element, properties) {\n for (const [key, value] of Object.entries(properties)) {\n if (value === null) {\n element.removeAttribute(key);\n } else {\n element.setAttribute(key, value);\n }\n }\n }\n draw(properties, isPathUpdatable = false, hasClip = false) {\n const id = this.#id++;\n const root = this.#createSVG();\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(\"vector-effect\", \"non-scaling-stroke\");\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n drawOutline(properties, mustRemoveSelfIntersections) {\n const id = this.#id++;\n const root = this.#createSVG();\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(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (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.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return id;\n }\n finalizeDraw(id, properties) {\n this.#toUpdate.delete(id);\n this.updateProperties(id, properties);\n }\n updateProperties(elementOrId, properties) {\n if (!properties) {\n return;\n }\n const {\n root,\n bbox,\n rootClass,\n path\n } = properties;\n const element = typeof elementOrId === \"number\" ? this.#mapping.get(elementOrId) : elementOrId;\n if (!element) {\n return;\n }\n if (root) {\n this.#updateProperties(element, root);\n }\n if (bbox) {\n DrawLayer.#setBox(element, bbox);\n }\n if (rootClass) {\n const {\n classList\n } = element;\n for (const [className, value] of Object.entries(rootClass)) {\n classList.toggle(className, value);\n }\n }\n if (path) {\n const defs = element.firstChild;\n const pathElement = defs.firstChild;\n this.#updateProperties(pathElement, path);\n }\n }\n updateParent(id, layer) {\n if (layer === this) {\n return;\n }\n const root = this.#mapping.get(id);\n if (!root) {\n return;\n }\n layer.#parent.append(root);\n this.#mapping.delete(id);\n layer.#mapping.set(id, root);\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\n\nconst pdfjsVersion = \"4.10.38\";\nconst pdfjsBuild = \"f9bea397f\";\n{\n globalThis.pdfjsTestingUtils = {\n HighlightOutliner: HighlightOutliner\n };\n}\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__TouchManager = __webpack_exports__.TouchManager;\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__stopEvent = __webpack_exports__.stopEvent;\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__TouchManager as TouchManager, __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__stopEvent as stopEvent, __webpack_exports__version as version };\n\n//# sourceMappingURL=pdf.mjs.map"],"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","TouchManager","UnexpectedResponseException","Util","VerbosityLevel","XfaLayer","build","createValidAbsoluteUrl","fetchData","getDocument","getFilenameFromUrl","getPdfFilenameFromUrl","getXfaPageViewport","isDataScheme","isPdfFile","noContextMenu","normalizeUnicode","setLayerDimensions","shadow","stopEvent","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","_a","_b","hexNumbers","n","_getExtremumOnCurve","getExtremumOnCurve_fn","_getExtremum","getExtremum_fn","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","t","mt","tt","ttt","x","delta","sqrtDelta","a2","__privateAdd","NormalizeRegex","NormalizationMap","_","getUuid","buf","AnnotationPrefix","toBase64Util","arr","fn","args","resolve","SVG_NS","_PixelsPerInch","__publicField","type","isValidFetchUrl","response","reject","request","PageViewport","viewBox","userUnit","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","width","height","dims","y","topLeft","bottomRight","extraDelay","ii","filename","defaultFilename","reURI","reFilename","splitURI","suggestedFilename","StatTimer","outBuf","longest","start","end","protocol","e","_regex","input","__privateGet","__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","widthStr","heightStr","pixelRatio","_toolbar","_colorPicker","_editor","_buttons","_altText","_l10nRemove","_pointerDown","pointerDown_fn","_focusIn","focusIn_fn","_focusOut","focusOut_fn","_addListenersToElement","addListenersToElement_fn","_addDeleteButton","addDeleteButton_fn","_divider","divider_get","_EditorToolbar","editor","editToolbar","signal","buttons","position","altText","button","colorPicker","element","editorType","_uiManager","divider","EditorToolbar","_render","render_fn","_getLastPoint","getLastPoint_fn","_addHighlightButton","addHighlightButton_fn","HighlightToolbar","uiManager","parent","boxes","isLTR","lastY","lastX","box","bindEvents","names","_id","IdManager","__privateWrapper","_baseId","_cache","_get","get_fn","_ImageManager","svg","image","promise","file","lastModified","size","id","blobPromise","blob","data","canvas","offscreen","bitmap","rawData","mustRemoveAspectRatioPromise","fileReader","imageElement","imagePromise","ImageManager","_commands","_locked","_maxSize","_position","CommandManager","maxSize","cmd","undo","post","mustExec","overwriteIfSameType","keepUndo","save","next","_serialize","serialize_fn","KeyboardManager","callbacks","isMac","keys","callback","isMacKey","self","event","bubbles","checker","_ColorManager","rgb","RGB","ColorManager","_abortController","_activeEditor","_allEditors","_allLayers","_altTextManager","_annotationStorage","_changedExistingAnnotations","_commandManager","_copyPasteAC","_currentDrawingSession","_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","_getAnchorElementForSelection","getAnchorElementForSelection_fn","_getLayerForTextLayer","getLayerForTextLayer_fn","_displayHighlightToolbar","displayHighlightToolbar_fn","_selectionChange","selectionChange_fn","_onSelectEnd","onSelectEnd_fn","_addSelectionListener","addSelectionListener_fn","_addFocusManager","addFocusManager_fn","_removeFocusManager","removeFocusManager_fn","_addKeyboardManager","addKeyboardManager_fn","_removeKeyboardManager","removeKeyboardManager_fn","_addCopyPasteListeners","addCopyPasteListeners_fn","_removeCopyPasteListeners","removeCopyPasteListeners_fn","_addDragAndDropListeners","addDragAndDropListeners_fn","_dispatchUpdateStates","dispatchUpdateStates_fn","_dispatchUpdateUI","dispatchUpdateUI_fn","_enableAll","enableAll_fn","_disableAll","disableAll_fn","_addEditorToLayer","addEditorToLayer_fn","_lastSelectedEditor","lastSelectedEditor_get","_isEmpty","isEmpty_fn","_selectEditors","selectEditors_fn","_AnnotationEditorUIManager","container","viewer","altTextManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","mlManager","editorUndoBar","supportsPinchToZoom","evt","proto","arrowChecker","textInputChecker","_self","el","small","big","_c","_d","_e","layer","ac","pair","firstTime","mode","pageNumber","layerX","layerY","pagesRotation","methodOfCreation","selection","anchorNode","anchorOffset","focusNode","focusOffset","text","textLayer","isNoneMode","activeElement","lastEditor","lastActiveElement","item","editors","serialized","clipboardData","ex","newEditors","deserializedEditor","isEditing","types","pageIndex","editId","isFromKeyboard","visible","updateButton","mustWait","annotationElementId","ed","params","drawingEditor","noCommit","totalX","totalY","TIME_TO_WAIT","mustBeAddedInUndoStack","move","newX","newY","newPageIndex","savedX","savedY","savedPageIndex","tx","ty","parentWidth","parentHeight","rotator","h","range","annotation","editorId","currentLayer","activeLayer","pointerup","promises","_altTextDecorative","_altTextButton","_altTextButtonLabel","_altTextTooltip","_altTextTooltipTimeout","_altTextWasFromKeyBoard","_badge","_guessedText","_textWithDisclaimer","_useNewAltTextFlow","_l10nNewButton","_label","label_get","_setState","setState_fn","_AltText","l10n","label","onClick","guessedText","visibility","badge","isForCopying","decorative","textWithDisclaimer","cancel","enabled","tooltip","DELAY_TO_SHOW_TOOLTIP","AltText","_isPinching","_isPinchingStopped","_isPinchingDisabled","_onPinchStart","_onPinching","_onPinchEnd","_signal","_touchInfo","_touchManagerAC","_touchMoveAC","_onTouchStart","onTouchStart_fn","_onTouchMove","onTouchMove_fn","_onTouchEnd","onTouchEnd_fn","_TouchManager","isPinchingDisabled","isPinchingStopped","onPinchStart","onPinching","onPinchEnd","opt","touch0","touch1","screen0X","screen0Y","screen1X","screen1Y","touchInfo","pTouch0X","pTouch0Y","pTouch1X","pTouch1Y","prevGapX","prevGapY","currGapX","currGapY","distance","pDistance","origin","_accessibilityData","_allResizerDivs","_disabled","_dragPointerId","_dragPointerType","_keepAspectRatio","_resizersDiv","_lastPointerCoords","_savedDimensions","_focusAC","_focusedResizerName","_hasBeenClicked","_initialRect","_isEditing","_isInEditMode","_isResizerEnabledForKeyboard","_moveInDOMTimeout","_prevDragX","_prevDragY","_telemetryTimeouts","_touchManager","_isDraggable","_zIndex","_translate","translate_fn","_rotatePoint","rotatePoint_fn","_getRotationMatrix","getRotationMatrix_fn","_createResizers","createResizers_fn","_resizerPointerdown","resizerPointerdown_fn","_resize","resize_fn","_addResizeToUndoStack","addResizeToUndoStack_fn","_resizerPointermove","resizerPointermove_fn","_touchPinchStartCallback","touchPinchStartCallback_fn","_touchPinchCallback","touchPinchCallback_fn","_touchPinchEndCallback","touchPinchEndCallback_fn","_selectOnPointerEvent","selectOnPointerEvent_fn","_setUpDragSession","setUpDragSession_fn","_addFocusListeners","addFocusListeners_fn","_resizerKeydown","resizerKeydown_fn","_resizerBlur","resizerBlur_fn","_resizerFocus","resizerFocus_fn","_setResizerTabIndex","setResizerTabIndex_fn","_stopResizing","stopResizing_fn","_AnnotationEditor","parameters","pageX","pageY","resize","fakeEditor","FakeEditor","_type","_value","mime","target","bx","by","_borderLineWidth","parentScale","widthPercent","heightPercent","editToolbarDiv","shiftX","shiftY","focus","top","left","bottom","right","innerHeight","innerWidth","_angle","context","timeout","children","boundResizerKeydown","boundResizerBlur","firstPosition","nextFirstPosition","child","aspectRatio","action","content","firstChild","angle","classes","savedDraggable","savedParentCursor","savedCursor","pointerUpCallback","savedWidth","savedHeight","newWidth","newHeight","minWidth","minHeight","rotationMatrix","transf","invRotationMatrix","invTransf","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","deltaX","deltaY","screenX","screenY","lastScreenX","lastScreenY","oldDiag","_origin","prevDistance","factor","transfCenterPoint","newTransfCenterPoint","isSelected","hasDraggingStarted","opts","cancelDrag","pointerId","AnnotationEditor","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","blockCounts","tailLength","dataUint32","k1","k2","h1","h2","C1","C2","C1_LOW","C2_LOW","SerializableEmpty","_modified","_modifiedIds","_storage","_setModified","setModified_fn","AnnotationStorage","defaultValue","modified","entry","val","PrintAnnotationStorage","hash","transfer","hasBitmap","stats","typeToEditor","editorStats","counters","count","ids","_serializable","clone","_systemFonts","FontLoader","ownerDocument","styleElement","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","fontExtraProperties","inspectFont","css","objs","character","objId","cmds","path","CallbackKind","StreamKind","onFn","wrapReason","_messageAC","_onMessage","onMessage_fn","_createStreamSink","createStreamSink_fn","_processStreamMessage","processStreamMessage_fn","_deleteStreamController","deleteStreamController_fn","MessageHandler","sourceName","targetName","comObj","actionName","handler","ah","transfers","callbackId","capability","queueingStrategy","streamId","controller","startCapability","pullCapability","reason","cancelCapability","result","streamSink","lastDesiredSize","streamController","dataReason","_enableHWA","BaseCanvasFactory","enableHWA","canvasAndContext","DOMCanvasFactory","BaseCMapReaderFactory","isCompressed","cMapData","DOMCMapReaderFactory","BaseFilterFactory","maps","fgColor","bgColor","filterName","newFgColor","newBgColor","keepHCM","_baseUrl","__cache","__defs","_docId","_document","__hcmCache","cache_get","_hcmCache","hcmCache_get","_defs","defs_get","_createTables","createTables_fn","_createUrl","createUrl_fn","_addLuminosityConversion","addLuminosityConversion_fn","_addGrayConversion","addGrayConversion_fn","_createFilter","createFilter_fn","_appendFeFunc","appendFeFunc_fn","_addTransferMapConversion","addTransferMapConversion_fn","_addTransferMapAlphaConversion","addTransferMapAlphaConversion_fn","_getRGB","getRGB_fn","DOMFilterFactory","docId","tableR","tableG","tableB","filter","fgRGB","bgRGB","table","getSteps","tableA","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","step","newStart","newStep","prev","k","j","mapR","buffer","mapG","mapB","bufferR","bufferG","bufferB","feColorMatrix","feComponentTransfer","func","feFunc","rTable","gTable","bTable","aTable","BaseStandardFontDataFactory","DOMStandardFontDataFactory","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","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","_restoreInitialState","restoreInitialState_fn","_drawFilter","drawFilter_fn","_getScaledPath","getScaledPath_fn","_CanvasGraphics","canvasCtx","commonObjs","filterFactory","optionalContentConfig","markedContentStack","annotationCanvasMap","fallback","transparency","background","savedFillStyle","transparentCanvas","executionStartIdx","continueCallback","stepper","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","fnId","depObjId","objsPool","cache","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","newPath","fontSize","spacing","leading","fontRefName","fontObj","typeface","bold","italic","browserFontSize","rise","patternFillTransform","patternStrokeTransform","textRenderingMode","fillStrokeMode","isAddToPathSet","patternFill","patternStroke","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","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","_metadataMap","_data","Metadata","parsedData","INTERNAL","_isDisplay","_isPrint","_userSet","_visible","OptionalContentGroup","renderingIntent","usage","rbGroups","print","view","internal","userSet","_cachedGetHash","_groups","_initialHash","_order","_evaluateVisibilityExpression","evaluateVisibilityExpression_fn","OptionalContentConfig","on","off","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","getResponseOrigin","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","returnValues","extractFilenameFromHeader","createResponseStatusError","validateResponseStatus","createFetchOptions","withCredentials","abortController","getArrayBuffer","PDFFetchStream","source","PDFFetchStreamReader","PDFFetchStreamRangeReader","allowRangeRequests","suggestedLength","done","responseOrigin","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","network_getArrayBuffer","xhr","NetworkManager","xhrId","pendingRequest","xhrStatus","rangeHeader","PDFNetworkStream","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","manager","fullRequestXhrId","fullRequestXhr","rawResponseHeaders","urlRegex","parseUrlOrPath","sourceUrl","PDFNodeStream","PDFNodeStreamFsFullReader","PDFNodeStreamFsRangeReader","fs","stat","error","readableStream","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","DEFAULT_FONT_ASCENT","_capability","_disableProcessItems","_fontInspectorEnabled","_lang","_layoutTextParams","_pageHeight","_pageWidth","_reader","_rootContainer","_rotation","_scale","_styleCache","_textContentItemsStr","_textContentSource","_textDivs","_textDivProperties","_transform","_ascentCache","_canvasContexts","_canvasCtxFonts","_minFontSize","_pendingTextLayers","_processItems","processItems_fn","_appendText","appendText_fn","_layout","layout_fn","_getCtx","getCtx_fn","_ensureCtxFont","ensureCtxFont_fn","_ensureMinFontSizeComputed","ensureMinFontSizeComputed_fn","_getAscent","getAscent_fn","_TextLayer","textContentSource","isWindows","isFirefox","pump","onBefore","abortEx","items","textDivs","textContentItemsStr","geom","textDiv","textDivProperties","fontFamily","fontHeight","fontAscent","scaleFactorStr","divStyle","shouldScaleText","absScaleX","absScaleY","br","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","isImageDecoderSupported","canvasMaxAreaInBytes","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","useSystemFonts","useWorkerFetch","transportFactory","workerParams","docParams","transportParams","workerIdPromise","networkStream","NetworkStream","workerId","messageHandler","transport","WorkerTransport","isRefProxy","ref","_PDFDocumentLoadingTask","listener","PDFDocumentProxy","pdfInfo","keepLoadedFonts","_delayedCleanupTimeout","_pendingCleanup","_tryCleanup","tryCleanup_fn","_abortDelayedCleanup","abortDelayedCleanup_fn","PDFPageProxy","pageInfo","PDFObjects","canvasContext","annotationMode","optionalContentConfigPromise","printAnnotationStorage","intentArgs","intentState","intentPrint","complete","internalRenderTask","InternalRenderTask","renderTask","operatorListChanged","opListTask","includeMarkedContent","disableNormalization","textContent","waitOn","resetStats","success","operatorListChunk","annotationStorageSerializable","modifiedIds","force","delay","curCacheKey","curIntentState","delayed","renderTasks","_listeners","_deferred","LoopbackPort","rmAbort","onAbort","_fakeWorkerId","_isWorkerDisabled","_workerPorts","_resolve","resolve_fn","_mainThreadWorkerMessageHandler","mainThreadWorkerMessageHandler_get","_PDFWorker","port","workerSrc","terminateEarly","sendTest","testObj","WorkerMessageHandler","workerHandler","cachedPort","otherUrl","base","other","wrapper","_methodPromises","_pageCache","_pagePromises","_pageRefCache","_passwordCapability","_cacheSimpleMethod","cacheSimpleMethod_fn","loadingTask","factory","isOpList","annotationStorage","modifiedIdsHash","cacheKeyBuf","page","terminated","sink","readyReason","isStreamingSupported","isRangeSupported","contentLength","updatePassword","err","exportedData","exportedError","imageRef","pageProxy","imageData","cachedPromise","results","refStr","INITIAL_DATA","_objs","_ensureObj","ensureObj_fn","_internalRenderTask","RenderTask","separateAnnots","_rAF","_canvasInUse","_InternalRenderTask","useRequestAnimationFrame","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","_updates","_hasBorder","_popupElement","_setRectEdited","setRectEdited_fn","_AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","titleObj","contentsObj","richText","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","_setInternalLink","setInternalLink_fn","_bindAttachment","bindAttachment_fn","_bindSetOCGState","bindSetOCGState_fn","link","isBound","destination","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","_boundKeyDown","_boundHide","_boundShow","_boundToggle","_color","_contentsObj","_dateObj","_elements","_parent","_parentRect","_pinned","_popup","_rect","_richText","_titleObj","_wasVisible","_html","html_get","_fontSize","fontSize_get","_fontColor","fontColor_get","_makePopupContent","makePopupContent_fn","_keyDown","keyDown_fn","_setPosition","setPosition_fn","_toggle","toggle_fn","_show","show_fn","_hide","hide_fn","modificationDate","parentRect","open","baseColor","header","title","contents","dir","lines","line","popupContent","popupLines","lineAttributes","useParentRect","normalizedRect","HORIZONTAL_SPACE_AFTER_ANNOTATION","popupLeft","popupTop","lineSpan","_line","_square","square","_circle","circle","_polyline","vertices","borderStyle","popupRef","polyline","_polylinesGroupElement","_polylines","_getTransform","getTransform_fn","inkLists","thickness","_trigger","_download","download_fn","trigger","_accessibilityManager","_annotationCanvasMap","_editableAnnotations","_structTreeLayer","_appendElement","appendElement_fn","_setAnnotationCanvasMap","setAnnotationCanvasMap_fn","accessibilityManager","annotationEditorUIManager","structTreeLayer","annotations","popupToElements","elementParams","isPopupAnnotation","rendered","contentElement","annotationId","ariaAttributes","EOL_PATTERN","_content","_editorDivId","_editModeAC","_updateFontSize","updateFontSize_fn","_updateColor","updateColor_fn","_extractText","extractText_fn","_setEditorDimensions","setEditorDimensions_fn","_getNodeContent","getNodeContent_fn","_setContent","setContent_fn","_serializeContent","serializeContent_fn","_deserializeContent","deserializeContent_fn","_hasElementChanged","hasElementChanged_fn","_FreeTextEditor","savedText","newText","setText","baseX","baseY","posX","posY","paste","startContainer","startOffset","bufferBefore","bufferAfter","newRange","beforeLength","acc","textPosition","padding","setFontsize","savedFontsize","col","savedColor","prevChild","savedDisplay","savedVisibility","FreeTextEditor","Outline","_bbox","_box","_bottom","_innerMargin","_isLTR","_top","_last","_lastX","_lastY","_min","_min_dist","_scaleFactor","_thickness","_points","_MIN_DIST","_MIN_DIFF","_MIN","_getLastCoords","getLastCoords_fn","_toSVGPathTwoPoints","toSVGPathTwoPoints_fn","_toSVGPathStart","toSVGPathStart_fn","_toSVGPathEnd","toSVGPathEnd_fn","_getOutlineTwoPoints","getOutlineTwoPoints_fn","_getOutlineStart","getOutlineStart_fn","_getOutlineEnd","getOutlineEnd_fn","_FreeDrawOutliner","scaleFactor","innerMargin","diffX","diffY","diffD","K","nX","nY","thX","thY","outline","FreeDrawOutline","last","N","lastTop","lastBottom","lastTopX","lastTopY","lastBottomX","lastBottomY","FreeDrawOutliner","_outline","_computeMinMax","computeMinMax_fn","outliner","lastPointX","lastPointY","ltrCallback","_lastPoint","_verticalEdges","_intervals","_getOutlines","getOutlines_fn","_binarySearch","binarySearch_fn","_insert","insert_fn","_remove","remove_fn","_breakEdge","breakEdge_fn","HighlightOutliner","EPSILON","shiftedMinX","shiftedMinY","lastEdge","lastPoint","edge","outlineVerticalEdges","edges","allEdges","edge1","edge2","outlines","HighlightOutline","middle","y4","_outlines","polygon","prevX","prevY","FreeHighlightOutliner","FreeHighlightOutline","_button","_buttonSwatch","_defaultColor","_dropdown","_dropdownWasFromKeyboard","_isMainColorPicker","_eventBus","_openDropdownAC","_l10nColor","_getDropdownRoot","getDropdownRoot_fn","_colorSelect","colorSelect_fn","_openDropdown","openDropdown_fn","_isDropdownVisible","isDropdownVisible_get","_ColorPicker","swatch","dropdown","_anchorNode","_anchorOffset","_boxes","_clipPathId","_focusOutlines","_focusNode","_focusOffset","_highlightDiv","_highlightOutlines","_isFreeHighlight","_opacity","_outlineId","_text","_methodOfCreation","_createOutlines","createOutlines_fn","_createFreeOutlines","createFreeOutlines_fn","_updateThickness","updateThickness_fn","_changeThickness","changeThickness_fn","_cleanDrawLayer","cleanDrawLayer_fn","_addToDrawLayer","addToDrawLayer_fn","_rotateBbox","rotateBbox_fn","_keydown","keydown_fn","_setCaret","setCaret_fn","_getRotation","getRotation_fn","_serializeBoxes","serializeBoxes_fn","_serializeOutlines","serializeOutlines_fn","_highlightMove","highlightMove_fn","_endHighlight","endHighlight_fn","_HighlightEditor","toolbar","mustBeSelected","drawLayer","highlightDiv","direction","opacity","clipPathId","outlinerForOutline","highlightOutlines","highlightId","extraThickness","setColorAndOpacity","opa","savedOpacity","savedThickness","setThickness","th","HighlightEditor","_svgProperties","DrawingOptions","_drawOutlines","_mustBeCommitted","_currentDraw","_currentDrawingAC","_currentDrawingOptions","_currentPointerId","_currentPointerType","_currentPointerIds","_currentMoveTimestamp","_createDrawOutlines","createDrawOutlines_fn","_createDrawing","createDrawing_fn","_convertToParentSpace","convertToParentSpace_fn","_convertToDrawSpace","convertToDrawSpace_fn","_updateBbox","updateBbox_fn","_rotateBox","rotateBox_fn","_DrawingEditor","p1Keys","_options","propertyName","_drawingOptions","savedValue","setter","drawDiv","_x","_y","_parentWidth","_parentHeight","pointerType","all","draw","drawId","lastElement","isAborted","_pageX","_pageY","_innerWidth","drawOutlines","drawingOptions","pW","pH","parentRotation","DrawingEditor","_lines","_lastSVGPath","_lastIndex","_normalizePoint","normalizePoint_fn","InkDrawOutliner","InkDrawOutline","firstX","firstY","secondX","secondY","c1x","c1y","c2x","c2y","_currentRotation","_parentScale","_getMarginComponents","getMarginComponents_fn","_getBBoxWithNoMargin","getBBoxWithNoMargin_fn","_computeBbox","computeBbox_fn","_InkDrawOutline","serializedLines","serializedPoints","rescaleFn","newLines","len","oldMarginX","oldMarginY","newMarginX","newMarginY","diffMarginX","diffMarginY","marginX","marginY","s1x","s1y","s2x","s2y","parentDimensions","newParentWidth","newParentHeight","margin","_viewParameters","_InkDrawingOptions","viewerParameters","InkDrawingOptions","_InkEditor","_drawId","stroke","InkEditor","_bitmap","_bitmapId","_bitmapPromise","_bitmapUrl","_bitmapFile","_bitmapFileName","_canvas","_resizeTimeoutId","_isSvg","_hasBeenAddedInUndoStack","_getBitmapFetched","getBitmapFetched_fn","_getBitmapDone","getBitmapDone_fn","_getBitmap","getBitmap_fn","_createCanvas","createCanvas_fn","_scaleBitmap","scaleBitmap_fn","_drawBitmap","drawBitmap_fn","_serializeBitmap","serializeBitmap_fn","_StampEditor","hasAltTextStats","updateAltTextData","maxDataDimension","maxPreviewDimension","createImageData","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","structParent","bitmapUrl","bitmapId","isSvg","accessibilityData","changes","area","prevData","fromId","MAX_RATIO","prevWidth","prevHeight","toUrl","isSamePageIndex","isSameAltText","StampEditor","_allowClick","_annotationLayer","_clickAC","_editorFocusTimeoutId","_editors","_hadPointerDown","_isDisabling","_isEnabling","_drawingAC","_focusedElement","_textLayer","_textSelectionAC","_textLayerPointerDown","textLayerPointerDown_fn","_currentEditorType","currentEditorType_get","_createNewEditor","createNewEditor_fn","_getCenterPoint","getCenterPoint_fn","_cleanup","cleanup_fn","_AnnotationEditorLayer","annotationLayer","editorTypes","classList","annotationElementIds","editables","editable","changedAnnotations","resetAnnotations","isCentered","relatedTarget","oldRotation","_mapping","_toUpdate","_setBox","setBox_fn","_createSVG","createSVG_fn","_createClipPath","createClipPath_fn","_updateProperties","updateProperties_fn","_DrawLayer","isPathUpdatable","hasClip","pathId","use","mustRemoveSelfIntersections","maskId","use1","use2","elementOrId","rootClass","className","pathElement","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__TouchManager","__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__stopEvent","__webpack_exports__version"],"mappings":"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","x_google_ignoreList":[0]}
|