flipbookengine 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flipbook-engine.iife.js","sources":["../node_modules/pdfjs-dist/build/pdf.mjs","../node_modules/@serenity-is/domwise/dist/index.js","../node_modules/@preact/signals-core/dist/signals-core.module.js","../src/state/store.ts","../src/i18n/service.ts","../src/i18n/locales/en.ts","../src/i18n/locales/tr.ts","../src/components/Toolbar.tsx","../src/components/Thumbnails.tsx","../src/components/Viewer.tsx","../src/components/App.tsx","../node_modules/page-flip/dist/js/page-flip.browser.js","../src/adapters/PageFlipAdapter.ts","../src/core/LayoutManager.ts","../src/core/InteractionManager.ts","../src/model/pages.ts","../src/theme/theme.ts","../src/engine.ts"],"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/**\n * pdfjsVersion = 5.4.530\n * pdfjsBuild = 50cc4adac\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__ = {};\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 FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\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 POPUP: 16,\n SIGNATURE: 101,\n COMMENT: 102\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_THICKNESS: 32,\n HIGHLIGHT_FREE: 33,\n HIGHLIGHT_SHOW_ALL: 34,\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 MeshFigureType = {\n TRIANGLES: 1,\n LATTICE: 2,\n PATCH: 3\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 rawFillPath: 94\n};\nconst DrawOPS = {\n moveTo: 0,\n lineTo: 1,\n curveTo: 2,\n quadraticCurveTo: 3,\n closePath: 4\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.info(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.warn(`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 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 ? URL.parse(url, baseUrl) : URL.parse(url);\n return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\nfunction updateUrlHash(url, hash, allowRel = false) {\n const res = URL.parse(url);\n if (res) {\n res.hash = hash;\n return res.href;\n }\n if (allowRel && createValidAbsoluteUrl(url, \"http://example.com\")) {\n return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n }\n return \"\";\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 ResponseException extends BaseException {\n constructor(msg, status, missing) {\n super(msg, \"ResponseException\");\n this.status = status;\n this.missing = missing;\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 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 isFloat16ArraySupported() {\n return shadow(this, \"isFloat16ArraySupported\", typeof Float16Array !== \"undefined\");\n }\n static get isSanitizerSupported() {\n return shadow(this, \"isSanitizerSupported\", typeof Sanitizer !== \"undefined\");\n }\n static get platform() {\n const {\n platform,\n userAgent\n } = navigator;\n return shadow(this, \"platform\", {\n isAndroid: userAgent.includes(\"Android\"),\n isLinux: platform.includes(\"Linux\"),\n isMac: platform.includes(\"Mac\"),\n isWindows: platform.includes(\"Win\"),\n isFirefox: userAgent.includes(\"Firefox\")\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 domMatrixToTransform(dm) {\n return [dm.a, dm.b, dm.c, dm.d, dm.e, dm.f];\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 multiplyByDOMMatrix(m, md) {\n return [m[0] * md.a + m[2] * md.b, m[1] * md.a + m[3] * md.b, m[0] * md.c + m[2] * md.d, m[1] * md.c + m[3] * md.d, m[0] * md.e + m[2] * md.f + m[4], m[1] * md.e + m[3] * md.f + m[5]];\n }\n static applyTransform(p, m, pos = 0) {\n const p0 = p[pos];\n const p1 = p[pos + 1];\n p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n }\n static applyTransformToBezier(p, transform, pos = 0) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n for (let i = 0; i < 6; i += 2) {\n const pI = p[pos + i];\n const pI1 = p[pos + i + 1];\n p[pos + i] = pI * m0 + pI1 * m2 + m4;\n p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n }\n }\n static applyInverseTransform(p, m) {\n const p0 = p[0];\n const p1 = p[1];\n const d = m[0] * m[3] - m[1] * m[2];\n p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n }\n static axialAlignedBoundingBox(rect, transform, output) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n const r0 = rect[0];\n const r1 = rect[1];\n const r2 = rect[2];\n const r3 = rect[3];\n let a0 = m0 * r0 + m4;\n let a2 = a0;\n let a1 = m0 * r2 + m4;\n let a3 = a1;\n let b0 = m3 * r1 + m5;\n let b2 = b0;\n let b1 = m3 * r3 + m5;\n let b3 = b1;\n if (m1 !== 0 || m2 !== 0) {\n const m1r0 = m1 * r0;\n const m1r2 = m1 * r2;\n const m2r1 = m2 * r1;\n const m2r3 = m2 * r3;\n a0 += m2r1;\n a3 += m2r1;\n a1 += m2r3;\n a2 += m2r3;\n b0 += m1r0;\n b3 += m1r0;\n b1 += m1r2;\n b2 += m1r2;\n }\n output[0] = Math.min(output[0], a0, a1, a2, a3);\n output[1] = Math.min(output[1], b0, b1, b2, b3);\n output[2] = Math.max(output[2], a0, a1, a2, a3);\n output[3] = Math.max(output[3], b0, b1, b2, b3);\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(matrix, output) {\n const m0 = matrix[0];\n const m1 = matrix[1];\n const m2 = matrix[2];\n const m3 = matrix[3];\n const a = m0 ** 2 + m1 ** 2;\n const b = m0 * m2 + m1 * m3;\n const c = m2 ** 2 + m3 ** 2;\n const first = (a + c) / 2;\n const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n output[0] = Math.sqrt(first + second || 1);\n output[1] = Math.sqrt(first - second || 1);\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 pointBoundingBox(x, y, minMax) {\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 rectBoundingBox(x0, y0, x1, y1, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x1);\n minMax[1] = Math.min(minMax[1], y0, y1);\n minMax[2] = Math.max(minMax[2], x0, x1);\n minMax[3] = Math.max(minMax[3], y0, y1);\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 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 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 }\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, keepEscapeSequence = false) {\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 (keepEscapeSequence || !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 (!keepEscapeSequence && 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 if (!(date instanceof Date)) {\n date = new Date(date);\n }\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 _isValidExplicitDest(validRef, validName, dest) {\n if (!Array.isArray(dest) || dest.length < 2) {\n return false;\n }\n const [page, zoom, ...args] = dest;\n if (!validRef(page) && !Number.isInteger(page)) {\n return false;\n }\n if (!validName(zoom)) {\n return false;\n }\n const argsLen = args.length;\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (argsLen < 2 || argsLen > 3) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return argsLen === 0;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (argsLen > 1) {\n return false;\n }\n break;\n case \"FitR\":\n if (argsLen !== 4) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (const arg of args) {\n if (typeof arg === \"number\" || allowNull && arg === null) {\n continue;\n }\n return false;\n }\n return true;\n}\nfunction MathClamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\nfunction toHexUtil(arr) {\n if (Uint8Array.prototype.toHex) {\n return arr.toHex();\n }\n return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\nfunction toBase64Util(arr) {\n if (Uint8Array.prototype.toBase64) {\n return arr.toBase64();\n }\n return btoa(bytesToString(arr));\n}\nfunction fromBase64Util(str) {\n if (Uint8Array.fromBase64) {\n return Uint8Array.fromBase64(str);\n }\n return stringToBytes(atob(str));\n}\nif (typeof Promise.try !== \"function\") {\n Promise.try = function (fn, ...args) {\n return new Promise(resolve => {\n resolve(fn(...args));\n });\n };\n}\nif (typeof Math.sumPrecise !== \"function\") {\n Math.sumPrecise = function (numbers) {\n return numbers.reduce((a, b) => a + b, 0);\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/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/display_utils.js\n\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\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 dims = this.viewBox;\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 const p = [x, y];\n Util.applyTransform(p, this.transform);\n return p;\n }\n convertToViewportRectangle(rect) {\n const topLeft = [rect[0], rect[1]];\n Util.applyTransform(topLeft, this.transform);\n const bottomRight = [rect[2], rect[3]];\n Util.applyTransform(bottomRight, this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n const p = [x, y];\n Util.applyInverseTransform(p, this.transform);\n return p;\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 getURL = urlString => {\n try {\n return new URL(urlString);\n } catch {\n try {\n return new URL(decodeURIComponent(urlString));\n } catch {\n try {\n return new URL(urlString, \"https://foo.bar\");\n } catch {\n try {\n return new URL(decodeURIComponent(urlString), \"https://foo.bar\");\n } catch {\n return null;\n }\n }\n }\n }\n };\n const newURL = getURL(url);\n if (!newURL) {\n return defaultFilename;\n }\n const decode = name => {\n try {\n let decoded = decodeURIComponent(name);\n if (decoded.includes(\"/\")) {\n decoded = decoded.split(\"/\").at(-1);\n if (decoded.test(/^\\.pdf$/i)) {\n return decoded;\n }\n return name;\n }\n return decoded;\n } catch {\n return name;\n }\n };\n const pdfRegex = /\\.pdf$/i;\n const filename = newURL.pathname.split(\"/\").at(-1);\n if (pdfRegex.test(filename)) {\n return decode(filename);\n }\n if (newURL.searchParams.size > 0) {\n const values = Array.from(newURL.searchParams.values()).reverse();\n for (const value of values) {\n if (pdfRegex.test(value)) {\n return decode(value);\n }\n }\n const keys = Array.from(newURL.searchParams.keys()).reverse();\n for (const key of keys) {\n if (pdfRegex.test(key)) {\n return decode(key);\n }\n }\n }\n if (newURL.hash) {\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const hashFilename = reFilename.exec(newURL.hash);\n if (hashFilename) {\n return decode(hashFilename[0]);\n }\n }\n return 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 const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return res?.protocol === \"http:\" || res?.protocol === \"https:\";\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 instanceof Date) {\n return input;\n }\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 span.style.colorScheme = \"only light\";\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(--total-scale-factor) * ${pageWidth}px`,\n h = `var(--total-scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x))` : `calc(${w})`,\n heightStr = useRound ? `round(down, ${h}, var(--scale-round-y))` : `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 {\n pixelRatio\n } = OutputScale;\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 limitCanvas(width, height, maxPixels, maxDim, capAreaFactor = -1) {\n let maxAreaScale = Infinity,\n maxWidthScale = Infinity,\n maxHeightScale = Infinity;\n maxPixels = OutputScale.capPixels(maxPixels, capAreaFactor);\n if (maxPixels > 0) {\n maxAreaScale = Math.sqrt(maxPixels / (width * height));\n }\n if (maxDim !== -1) {\n maxWidthScale = maxDim / width;\n maxHeightScale = maxDim / height;\n }\n const maxScale = Math.min(maxAreaScale, maxWidthScale, maxHeightScale);\n if (this.sx > maxScale || this.sy > maxScale) {\n this.sx = maxScale;\n this.sy = maxScale;\n return true;\n }\n return false;\n }\n static get pixelRatio() {\n return globalThis.devicePixelRatio || 1;\n }\n static capPixels(maxPixels, capAreaFactor) {\n if (capAreaFactor >= 0) {\n const winPixels = Math.ceil(window.screen.availWidth * window.screen.availHeight * this.pixelRatio ** 2 * (1 + capAreaFactor / 100));\n return maxPixels > 0 ? Math.min(maxPixels, winPixels) : winPixels;\n }\n return maxPixels;\n }\n}\nconst SupportedImageMimeTypes = [\"image/apng\", \"image/avif\", \"image/bmp\", \"image/gif\", \"image/jpeg\", \"image/png\", \"image/svg+xml\", \"image/webp\", \"image/x-icon\"];\nclass ColorScheme {\n static get isDarkMode() {\n return shadow(this, \"isDarkMode\", !!window?.matchMedia?.(\"(prefers-color-scheme: dark)\").matches);\n }\n}\nclass CSSConstants {\n static get commentForegroundColor() {\n const element = document.createElement(\"span\");\n element.classList.add(\"comment\", \"sidebar\");\n const {\n style\n } = element;\n style.width = style.height = \"0\";\n style.display = \"none\";\n style.color = \"var(--comment-fg-color)\";\n document.body.append(element);\n const {\n color\n } = window.getComputedStyle(element);\n element.remove();\n return shadow(this, \"commentForegroundColor\", getRGB(color));\n }\n}\nfunction applyOpacity(r, g, b, opacity) {\n opacity = Math.min(Math.max(opacity ?? 1, 0), 1);\n const white = 255 * (1 - opacity);\n r = Math.round(r * opacity + white);\n g = Math.round(g * opacity + white);\n b = Math.round(b * opacity + white);\n return [r, g, b];\n}\nfunction RGBToHSL(rgb, output) {\n const r = rgb[0] / 255;\n const g = rgb[1] / 255;\n const b = rgb[2] / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n if (max === min) {\n output[0] = output[1] = 0;\n } else {\n const d = max - min;\n output[1] = l < 0.5 ? d / (max + min) : d / (2 - max - min);\n switch (max) {\n case r:\n output[0] = ((g - b) / d + (g < b ? 6 : 0)) * 60;\n break;\n case g:\n output[0] = ((b - r) / d + 2) * 60;\n break;\n case b:\n output[0] = ((r - g) / d + 4) * 60;\n break;\n }\n }\n output[2] = l;\n}\nfunction HSLToRGB(hsl, output) {\n const h = hsl[0];\n const s = hsl[1];\n const l = hsl[2];\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs(h / 60 % 2 - 1));\n const m = l - c / 2;\n switch (Math.floor(h / 60)) {\n case 0:\n output[0] = c + m;\n output[1] = x + m;\n output[2] = m;\n break;\n case 1:\n output[0] = x + m;\n output[1] = c + m;\n output[2] = m;\n break;\n case 2:\n output[0] = m;\n output[1] = c + m;\n output[2] = x + m;\n break;\n case 3:\n output[0] = m;\n output[1] = x + m;\n output[2] = c + m;\n break;\n case 4:\n output[0] = x + m;\n output[1] = m;\n output[2] = c + m;\n break;\n case 5:\n case 6:\n output[0] = c + m;\n output[1] = m;\n output[2] = x + m;\n break;\n }\n}\nfunction computeLuminance(x) {\n return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n}\nfunction contrastRatio(hsl1, hsl2, output) {\n HSLToRGB(hsl1, output);\n output.map(computeLuminance);\n const lum1 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n HSLToRGB(hsl2, output);\n output.map(computeLuminance);\n const lum2 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n return lum1 > lum2 ? (lum1 + 0.05) / (lum2 + 0.05) : (lum2 + 0.05) / (lum1 + 0.05);\n}\nconst contrastCache = new Map();\nfunction findContrastColor(baseColor, fixedColor) {\n const key = baseColor[0] + baseColor[1] * 0x100 + baseColor[2] * 0x10000 + fixedColor[0] * 0x1000000 + fixedColor[1] * 0x100000000 + fixedColor[2] * 0x10000000000;\n let cachedValue = contrastCache.get(key);\n if (cachedValue) {\n return cachedValue;\n }\n const array = new Float32Array(9);\n const output = array.subarray(0, 3);\n const baseHSL = array.subarray(3, 6);\n RGBToHSL(baseColor, baseHSL);\n const fixedHSL = array.subarray(6, 9);\n RGBToHSL(fixedColor, fixedHSL);\n const isFixedColorDark = fixedHSL[2] < 0.5;\n const minContrast = isFixedColorDark ? 12 : 4.5;\n baseHSL[2] = isFixedColorDark ? Math.sqrt(baseHSL[2]) : 1 - Math.sqrt(1 - baseHSL[2]);\n if (contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n let start, end;\n if (isFixedColorDark) {\n start = baseHSL[2];\n end = 1;\n } else {\n start = 0;\n end = baseHSL[2];\n }\n const PRECISION = 0.005;\n while (end - start > PRECISION) {\n const mid = baseHSL[2] = (start + end) / 2;\n if (isFixedColorDark === contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n start = mid;\n } else {\n end = mid;\n }\n }\n baseHSL[2] = isFixedColorDark ? end : start;\n }\n HSLToRGB(baseHSL, output);\n cachedValue = Util.makeHexColor(Math.round(output[0] * 255), Math.round(output[1] * 255), Math.round(output[2] * 255));\n contrastCache.set(key, cachedValue);\n return cachedValue;\n}\nfunction renderRichText({\n html,\n dir,\n className\n}, container) {\n const fragment = document.createDocumentFragment();\n if (typeof html === \"string\") {\n const p = document.createElement(\"p\");\n p.dir = dir || \"auto\";\n const lines = html.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 fragment.append(p);\n } else {\n XfaLayer.render({\n xfaHtml: html,\n div: fragment,\n intent: \"richText\"\n });\n }\n fragment.firstElementChild.classList.add(\"richText\", className);\n container.append(fragment);\n}\nfunction makePathFromDrawOPS(data) {\n const path = new Path2D();\n if (!data) {\n return path;\n }\n for (let i = 0, ii = data.length; i < ii;) {\n switch (data[i++]) {\n case DrawOPS.moveTo:\n path.moveTo(data[i++], data[i++]);\n break;\n case DrawOPS.lineTo:\n path.lineTo(data[i++], data[i++]);\n break;\n case DrawOPS.curveTo:\n path.bezierCurveTo(data[i++], data[i++], data[i++], data[i++], data[i++], data[i++]);\n break;\n case DrawOPS.quadraticCurveTo:\n path.quadraticCurveTo(data[i++], data[i++], data[i++], data[i++]);\n break;\n case DrawOPS.closePath:\n path.closePath();\n break;\n default:\n warn(`Unrecognized drawing path operator: ${data[i - 1]}`);\n break;\n }\n }\n return path;\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 #comment = null;\n #commentButtonDivider = null;\n #signatureDescriptionButton = 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 signature: \"pdfjs-editor-remove-signature-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 if (signal instanceof AbortSignal && !signal.aborted) {\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\n });\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 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 if (!(signal instanceof AbortSignal) || signal.aborted) {\n return false;\n }\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 return true;\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 this.#comment?.shown();\n }\n addDeleteButton() {\n const {\n editorType,\n _uiManager\n } = this.#editor;\n const button = document.createElement(\"button\");\n button.classList.add(\"basic\", \"deleteButton\");\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n if (this.#addListenersToElement(button)) {\n button.addEventListener(\"click\", e => {\n _uiManager.delete();\n }, {\n signal: _uiManager._signal\n });\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.append(button, this.#divider);\n this.#altText = altText;\n }\n addComment(comment, beforeElement = null) {\n if (this.#comment) {\n return;\n }\n const button = comment.renderForToolbar();\n if (!button) {\n return;\n }\n this.#addListenersToElement(button);\n const divider = this.#commentButtonDivider = this.#divider;\n if (!beforeElement) {\n this.#buttons.append(button, divider);\n } else {\n this.#buttons.insertBefore(button, beforeElement);\n this.#buttons.insertBefore(divider, beforeElement);\n }\n this.#comment = comment;\n comment.toolbar = this;\n }\n addColorPicker(colorPicker) {\n if (this.#colorPicker) {\n return;\n }\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n async addEditSignatureButton(signatureManager) {\n const button = this.#signatureDescriptionButton = await signatureManager.renderEditButton(this.#editor);\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n removeButton(name) {\n switch (name) {\n case \"comment\":\n this.#comment?.removeToolbarCommentButton();\n this.#comment = null;\n this.#commentButtonDivider?.remove();\n this.#commentButtonDivider = null;\n break;\n }\n }\n async addButton(name, tool) {\n switch (name) {\n case \"colorPicker\":\n if (tool) {\n this.addColorPicker(tool);\n }\n break;\n case \"altText\":\n if (tool) {\n await this.addAltText(tool);\n }\n break;\n case \"editSignature\":\n if (tool) {\n await this.addEditSignatureButton(tool);\n }\n break;\n case \"delete\":\n this.addDeleteButton();\n break;\n case \"comment\":\n if (tool) {\n this.addComment(tool);\n }\n break;\n }\n }\n async addButtonBefore(name, tool, beforeSelector) {\n if (!tool && name === \"comment\") {\n return;\n }\n const beforeElement = this.#buttons.querySelector(beforeSelector);\n if (!beforeElement) {\n return;\n }\n if (name === \"comment\") {\n this.addComment(tool, beforeElement);\n }\n }\n updateEditSignatureButton(description) {\n if (this.#signatureDescriptionButton) {\n this.#signatureDescriptionButton.title = description;\n }\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass FloatingToolbar {\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 const signal = this.#uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n }\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n if (this.#uiManager.hasCommentManager()) {\n this.#makeButton(\"commentButton\", `pdfjs-comment-floating-button`, \"pdfjs-comment-floating-button-label\", () => {\n this.#uiManager.commentSelection(\"floating_button\");\n });\n }\n this.#makeButton(\"highlightButton\", `pdfjs-highlight-floating-button1`, \"pdfjs-highlight-floating-button-label\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n });\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 #makeButton(buttonClass, l10nId, labelL10nId, clickHandler) {\n const button = document.createElement(\"button\");\n button.classList.add(\"basic\", buttonClass);\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", l10nId);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", labelL10nId);\n const signal = this.#uiManager._signal;\n if (signal instanceof AbortSignal && !signal.aborted) {\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", clickHandler, {\n signal\n });\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}\nclass CurrentPointers {\n static #pointerId = NaN;\n static #pointerIds = null;\n static #moveTimestamp = NaN;\n static #pointerType = null;\n static initializeAndAddPointerId(pointerId) {\n (CurrentPointers.#pointerIds ||= new Set()).add(pointerId);\n }\n static setPointer(pointerType, pointerId) {\n CurrentPointers.#pointerId ||= pointerId;\n CurrentPointers.#pointerType ??= pointerType;\n }\n static setTimeStamp(timeStamp) {\n CurrentPointers.#moveTimestamp = timeStamp;\n }\n static isSamePointerId(pointerId) {\n return CurrentPointers.#pointerId === pointerId;\n }\n static isSamePointerIdOrRemove(pointerId) {\n if (CurrentPointers.#pointerId === pointerId) {\n return true;\n }\n CurrentPointers.#pointerIds?.delete(pointerId);\n return false;\n }\n static isSamePointerType(pointerType) {\n return CurrentPointers.#pointerType === pointerType;\n }\n static isInitializedAndDifferentPointerType(pointerType) {\n return CurrentPointers.#pointerType !== null && !CurrentPointers.isSamePointerType(pointerType);\n }\n static isSameTimeStamp(timeStamp) {\n return CurrentPointers.#moveTimestamp === timeStamp;\n }\n static isUsingMultiplePointers() {\n return CurrentPointers.#pointerIds?.size >= 1;\n }\n static clearPointerType() {\n CurrentPointers.#pointerType = null;\n }\n static clearPointerIds() {\n CurrentPointers.#pointerId = NaN;\n CurrentPointers.#pointerIds = null;\n }\n static clearTimeStamp() {\n CurrentPointers.#moveTimestamp = NaN;\n }\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 #allEditableAnnotations = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #commentManager = null;\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 #floatingToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isPointerDown = false;\n #isWaiting = false;\n #keyboardManagerAC = null;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #missingCanvases = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #signatureManager = null;\n #pageColors = null;\n #showAllStates = null;\n #pdfDocument = 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 #viewerAlert = 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, viewerAlert, altTextManager, commentManager, signatureManager, 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.#viewerAlert = viewerAlert;\n this.#altTextManager = altTextManager;\n this.#commentManager = commentManager;\n this.#signatureManager = signatureManager;\n this.#pdfDocument = pdfDocument;\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 window.addEventListener(\"pointerdown\", () => {\n this.#isPointerDown = true;\n }, {\n capture: true,\n signal\n });\n window.addEventListener(\"pointerup\", () => {\n this.#isPointerDown = false;\n }, {\n capture: true,\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 commentManager?.setSidebarUiManager(this);\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.#missingCanvases?.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#commentManager?.destroy();\n this.#signatureManager?.destroy();\n this.#floatingToolbar?.hide();\n this.#floatingToolbar = null;\n this.#mainHighlightColorPicker?.destroy();\n this.#mainHighlightColorPicker = null;\n this.#allEditableAnnotations = 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 this.#pdfDocument = null;\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 => {\n pair = pair.split(\"=\").map(x => x.trim());\n pair[1] = pair[1].toUpperCase();\n return pair;\n })) : null);\n }\n get highlightColors() {\n const {\n _highlightColors\n } = this;\n if (!_highlightColors) {\n return shadow(this, \"highlightColors\", null);\n }\n const map = new Map();\n const hasHCM = !!this.#pageColors;\n for (const [name, color] of _highlightColors) {\n const isNameForHCM = name.endsWith(\"_HCM\");\n if (hasHCM && isNameForHCM) {\n map.set(name.replace(\"_HCM\", \"\"), color);\n continue;\n }\n if (!hasHCM && !isNameForHCM) {\n map.set(name, color);\n }\n }\n return shadow(this, \"highlightColors\", map);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n }\n getNonHCMColor(color) {\n if (!this._highlightColors) {\n return color;\n }\n const colorName = this.highlightColorNames.get(color);\n return this._highlightColors.get(colorName) || color;\n }\n getNonHCMColorName(color) {\n return this.highlightColorNames.get(color) || color;\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 hasCommentManager() {\n return !!this.#commentManager;\n }\n editComment(editor, posX, posY, options) {\n this.#commentManager?.showDialog(this, editor, posX, posY, options);\n }\n selectComment(pageIndex, uid) {\n const layer = this.#allLayers.get(pageIndex);\n const editor = layer?.getEditorByUID(uid);\n editor?.toggleComment(true, true);\n }\n updateComment(editor) {\n this.#commentManager?.updateComment(editor.getData());\n }\n updatePopupColor(editor) {\n this.#commentManager?.updatePopupColor(editor);\n }\n removeComment(editor) {\n this.#commentManager?.removeComments([editor.uid]);\n }\n toggleComment(editor, isSelected, visibility = undefined) {\n this.#commentManager?.toggleCommentPopup(editor, isSelected, visibility);\n }\n makeCommentColor(color, opacity) {\n return color && this.#commentManager?.makeCommentColor(color, opacity) || null;\n }\n getCommentDialogElement() {\n return this.#commentManager?.dialogElement || null;\n }\n async waitForEditorsRendered(pageNumber) {\n if (this.#allLayers.has(pageNumber - 1)) {\n return;\n }\n const {\n resolve,\n promise\n } = Promise.withResolvers();\n const onEditorsRendered = evt => {\n if (evt.pageNumber === pageNumber) {\n this._eventBus._off(\"editorsrendered\", onEditorsRendered);\n resolve();\n }\n };\n this._eventBus.on(\"editorsrendered\", onEditorsRendered);\n await promise;\n }\n getSignature(editor) {\n this.#signatureManager?.getSignature({\n uiManager: this,\n editor\n });\n }\n get signatureManager() {\n return this.#signatureManager;\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 = \"\", comment = false) {\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 const editor = 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 if (comment) {\n editor?.editComment();\n }\n };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n commentSelection(methodOfCreation = \"\") {\n this.highlightSelection(methodOfCreation, true);\n }\n #displayFloatingToolbar() {\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.#floatingToolbar ||= new FloatingToolbar(this);\n this.#floatingToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n getAndRemoveDataFromAnnotationStorage(annotationId) {\n if (!this.#annotationStorage) {\n return null;\n }\n const key = `${AnnotationEditorPrefix}${annotationId}`;\n const storedValue = this.#annotationStorage.getRawValue(key);\n if (storedValue) {\n this.#annotationStorage.remove(key);\n }\n return storedValue;\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 a11yAlert(messageId, args = null) {\n const viewerAlert = this.#viewerAlert;\n if (!viewerAlert) {\n return;\n }\n viewerAlert.setAttribute(\"data-l10n-id\", messageId);\n if (args) {\n viewerAlert.setAttribute(\"data-l10n-args\", JSON.stringify(args));\n } else {\n viewerAlert.removeAttribute(\"data-l10n-args\");\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#floatingToolbar?.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.#floatingToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#floatingToolbar?.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 if (this.#isPointerDown) {\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 } else {\n activeLayer?.toggleDrawing(true);\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayFloatingToolbar();\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.setEditingState(true);\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.setEditingState(false);\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 case \"commentSelection\":\n this.commentSelection(\"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, isFromUser = false, isFromKeyboard = false, mustEnterInEditMode = false, editComment = 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.#currentDrawingSession?.commitOrRemove();\n if (this.#mode === AnnotationEditorType.POPUP) {\n this.#commentManager?.hideSidebar();\n }\n this.#commentManager?.destroyPopup();\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n for (const editor of this.#allEditors.values()) {\n editor.hideStandaloneCommentButton();\n }\n this._editorUndoBar?.hide();\n this.toggleComment(null);\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n editor.addStandaloneCommentButton();\n }\n if (mode === AnnotationEditorType.SIGNATURE) {\n await this.#signatureManager?.loadSignatures();\n }\n if (isFromUser) {\n CurrentPointers.clearPointerType();\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 (mode === AnnotationEditorType.POPUP) {\n this.#allEditableAnnotations ||= await this.#pdfDocument.getAnnotationsByType(new Set(this.#editorTypes.map(editorClass => editorClass._editorType)));\n const elementIds = new Set();\n const allComments = [];\n for (const editor of this.#allEditors.values()) {\n const {\n annotationElementId,\n hasComment,\n deleted\n } = editor;\n if (annotationElementId) {\n elementIds.add(annotationElementId);\n }\n if (hasComment && !deleted) {\n allComments.push(editor.getData());\n }\n }\n for (const annotation of this.#allEditableAnnotations) {\n const {\n id,\n popupRef,\n contentsObj\n } = annotation;\n if (popupRef && contentsObj?.str && !elementIds.has(id) && !this.#deletedAnnotationsElementIds.has(id)) {\n allComments.push(annotation);\n }\n }\n this.#commentManager?.showSidebar(allComments);\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.uid === editId) {\n this.setSelected(editor);\n if (editComment) {\n editor.editComment();\n } else if (mustEnterInEditMode) {\n editor.enterInEditMode();\n } else {\n editor.focus();\n }\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(options) {\n if (options.mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n ...options\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor(value);\n return;\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 if (this.hasSelection) {\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n } else {\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\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 for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n yield editor;\n }\n }\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 if (editor.annotationElementId) {\n this.#missingCanvases?.delete(editor.annotationElementId);\n }\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.updateToolbar({\n mode: editor.mode,\n editId: editor.uid\n });\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 editor.translationDone();\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n editor.translationDone();\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n editor.translationDone();\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 isEditingMode() {\n return this.#mode !== AnnotationEditorType.NONE;\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 setMissingCanvas(annotationId, annotationElementId, canvas) {\n const editor = this.#missingCanvases?.get(annotationId);\n if (!editor) {\n return;\n }\n editor.setCanvas(annotationElementId, canvas);\n this.#missingCanvases.delete(annotationId);\n }\n addMissingCanvas(annotationId, editor) {\n (this.#missingCanvases ||= new Map()).set(annotationId, editor);\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.getElementForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n;// ./src/display/editor/comment.js\n\nclass Comment {\n #commentStandaloneButton = null;\n #commentToolbarButton = null;\n #commentWasFromKeyBoard = false;\n #editor = null;\n #initialText = null;\n #richText = null;\n #text = null;\n #date = null;\n #deleted = false;\n #popupPosition = null;\n constructor(editor) {\n this.#editor = editor;\n }\n renderForToolbar() {\n const button = this.#commentToolbarButton = document.createElement(\"button\");\n button.className = \"comment\";\n return this.#render(button, false);\n }\n renderForStandalone() {\n const button = this.#commentStandaloneButton = document.createElement(\"button\");\n button.className = \"annotationCommentButton\";\n const position = this.#editor.commentButtonPosition;\n if (position) {\n const {\n style\n } = button;\n style.insetInlineEnd = `calc(${100 * (this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0])}% - var(--comment-button-dim))`;\n style.top = `calc(${100 * position[1]}% - var(--comment-button-dim))`;\n const color = this.#editor.commentButtonColor;\n if (color) {\n style.backgroundColor = color;\n }\n }\n return this.#render(button, true);\n }\n focusButton() {\n setTimeout(() => {\n (this.#commentStandaloneButton ?? this.#commentToolbarButton)?.focus();\n }, 0);\n }\n onUpdatedColor() {\n if (!this.#commentStandaloneButton) {\n return;\n }\n const color = this.#editor.commentButtonColor;\n if (color) {\n this.#commentStandaloneButton.style.backgroundColor = color;\n }\n this.#editor._uiManager.updatePopupColor(this.#editor);\n }\n get commentButtonWidth() {\n return (this.#commentStandaloneButton?.getBoundingClientRect().width ?? 0) / this.#editor.parent.boundingClientRect.width;\n }\n get commentPopupPositionInLayer() {\n if (this.#popupPosition) {\n return this.#popupPosition;\n }\n if (!this.#commentStandaloneButton) {\n return null;\n }\n const {\n x,\n y,\n height\n } = this.#commentStandaloneButton.getBoundingClientRect();\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = this.#editor.parent.boundingClientRect;\n return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n }\n set commentPopupPositionInLayer(pos) {\n this.#popupPosition = pos;\n }\n hasDefaultPopupPosition() {\n return this.#popupPosition === null;\n }\n removeStandaloneCommentButton() {\n this.#commentStandaloneButton?.remove();\n this.#commentStandaloneButton = null;\n }\n removeToolbarCommentButton() {\n this.#commentToolbarButton?.remove();\n this.#commentToolbarButton = null;\n }\n setCommentButtonStates({\n selected,\n hasPopup\n }) {\n if (!this.#commentStandaloneButton) {\n return;\n }\n this.#commentStandaloneButton.classList.toggle(\"selected\", selected);\n this.#commentStandaloneButton.ariaExpanded = hasPopup;\n }\n #render(comment, isStandalone) {\n if (!this.#editor._uiManager.hasCommentManager()) {\n return null;\n }\n comment.tabIndex = \"0\";\n comment.ariaHasPopup = \"dialog\";\n if (isStandalone) {\n comment.ariaControls = \"commentPopup\";\n comment.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n } else {\n comment.ariaControlsElements = [this.#editor._uiManager.getCommentDialogElement()];\n comment.setAttribute(\"data-l10n-id\", \"pdfjs-editor-add-comment-button\");\n }\n const signal = this.#editor._uiManager._signal;\n if (!(signal instanceof AbortSignal) || signal.aborted) {\n return comment;\n }\n comment.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n if (isStandalone) {\n comment.addEventListener(\"focusin\", e => {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }, {\n capture: true,\n signal\n });\n comment.addEventListener(\"focusout\", e => {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }, {\n capture: true,\n signal\n });\n }\n comment.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n if (comment === this.#commentToolbarButton) {\n this.edit();\n } else {\n this.#editor.toggleComment(true);\n }\n };\n comment.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n comment.addEventListener(\"keydown\", event => {\n if (event.target === comment && event.key === \"Enter\") {\n this.#commentWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n comment.addEventListener(\"pointerenter\", () => {\n this.#editor.toggleComment(false, true);\n }, {\n signal\n });\n comment.addEventListener(\"pointerleave\", () => {\n this.#editor.toggleComment(false, false);\n }, {\n signal\n });\n return comment;\n }\n edit(options) {\n const position = this.commentPopupPositionInLayer;\n let posX, posY;\n if (position) {\n [posX, posY] = position;\n } else {\n [posX, posY] = this.#editor.commentButtonPosition;\n const {\n width,\n height,\n x,\n y\n } = this.#editor;\n posX = x + posX * width;\n posY = y + posY * height;\n }\n const parentDimensions = this.#editor.parent.boundingClientRect;\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = parentDimensions;\n this.#editor._uiManager.editComment(this.#editor, parentX + posX * parentWidth, parentY + posY * parentHeight, {\n ...options,\n parentDimensions\n });\n }\n finish() {\n if (!this.#commentToolbarButton) {\n return;\n }\n this.#commentToolbarButton.focus({\n focusVisible: this.#commentWasFromKeyBoard\n });\n this.#commentWasFromKeyBoard = false;\n }\n isDeleted() {\n return this.#deleted || this.#text === \"\";\n }\n isEmpty() {\n return this.#text === null;\n }\n hasBeenEdited() {\n return this.isDeleted() || this.#text !== this.#initialText;\n }\n serialize() {\n return this.data;\n }\n get data() {\n return {\n text: this.#text,\n richText: this.#richText,\n date: this.#date,\n deleted: this.isDeleted()\n };\n }\n set data(text) {\n if (text !== this.#text) {\n this.#richText = null;\n }\n if (text === null) {\n this.#text = \"\";\n this.#deleted = true;\n return;\n }\n this.#text = text;\n this.#date = new Date();\n this.#deleted = false;\n }\n setInitialText(text, richText = null) {\n this.#initialText = text;\n this.data = text;\n this.#date = null;\n this.#richText = richText;\n }\n shown() {}\n destroy() {\n this.#commentToolbarButton?.remove();\n this.#commentToolbarButton = null;\n this.#commentStandaloneButton?.remove();\n this.#commentStandaloneButton = null;\n this.#text = \"\";\n this.#richText = null;\n this.#date = null;\n this.#editor = null;\n this.#commentWasFromKeyBoard = false;\n this.#deleted = false;\n }\n}\n\n;// ./src/display/touch_manager.js\n\nclass TouchManager {\n #container;\n #isPinching = false;\n #isPinchingStopped = null;\n #isPinchingDisabled;\n #onPinchStart;\n #onPinching;\n #onPinchEnd;\n #pointerDownAC = null;\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 35 / OutputScale.pixelRatio;\n }\n #onTouchStart(evt) {\n if (this.#isPinchingDisabled?.()) {\n return;\n }\n if (evt.touches.length === 1) {\n if (this.#pointerDownAC) {\n return;\n }\n const pointerDownAC = this.#pointerDownAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, pointerDownAC.signal]);\n const container = this.#container;\n const opts = {\n capture: true,\n signal,\n passive: false\n };\n const cancelPointerDown = e => {\n if (e.pointerType === \"touch\") {\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n };\n container.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === \"touch\") {\n stopEvent(e);\n cancelPointerDown(e);\n }\n }, opts);\n container.addEventListener(\"pointerup\", cancelPointerDown, opts);\n container.addEventListener(\"pointercancel\", cancelPointerDown, opts);\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 capture: false,\n passive: false\n };\n container.addEventListener(\"touchmove\", this.#onTouchMove.bind(this), opt);\n const onTouchEnd = this.#onTouchEnd.bind(this);\n container.addEventListener(\"touchend\", onTouchEnd, opt);\n container.addEventListener(\"touchcancel\", onTouchEnd, opt);\n opt.capture = true;\n container.addEventListener(\"pointerdown\", stopEvent, opt);\n container.addEventListener(\"pointermove\", stopEvent, opt);\n container.addEventListener(\"pointercancel\", stopEvent, opt);\n container.addEventListener(\"pointerup\", stopEvent, 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 stopEvent(evt);\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 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 if (evt.touches.length >= 2) {\n return;\n }\n if (this.#touchMoveAC) {\n this.#touchMoveAC.abort();\n this.#touchMoveAC = null;\n this.#onPinchEnd?.();\n }\n if (!this.#touchInfo) {\n return;\n }\n stopEvent(evt);\n this.#touchInfo = null;\n this.#isPinching = false;\n }\n destroy() {\n this.#touchManagerAC?.abort();\n this.#touchManagerAC = null;\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #comment = null;\n #commentStandaloneButton = null;\n #disabled = false;\n #dragPointerId = null;\n #dragPointerType = \"\";\n #resizersDiv = null;\n #lastPointerCoords = null;\n #savedDimensions = null;\n #fakeAnnotation = 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 isSelected = false;\n _isCopy = false;\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 this.annotationElementId = parameters.annotationElementId || null;\n this.creationDate = parameters.creationDate || new Date();\n this.modificationDate = parameters.modificationDate || null;\n this.canAddComment = true;\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 get mode() {\n return Object.getPrototypeOf(this).constructor._editorType;\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 uid() {\n return this.annotationElementId || this.id;\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 this.#fakeAnnotation?.remove();\n this.#fakeAnnotation = null;\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 if (!this.isInEditMode()) {\n return;\n }\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 _moveAfterPaste(baseX, baseY) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this._onTranslated();\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 translationDone() {\n this._onTranslated(this.x, this.y);\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 = MathClamp(x, 0, pageWidth - width);\n y = MathClamp(y, 0, pageHeight - height);\n break;\n case 90:\n x = MathClamp(x, 0, pageWidth - height);\n y = MathClamp(y, width, pageHeight);\n break;\n case 180:\n x = MathClamp(x, width, pageWidth);\n y = MathClamp(y, height, pageHeight);\n break;\n case 270:\n x = MathClamp(x, height, pageWidth);\n y = MathClamp(y, 0, pageHeight - width);\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() {\n const {\n div: {\n style\n },\n width,\n height\n } = this;\n style.width = `${(100 * width).toFixed(2)}%`;\n style.height = `${(100 * height).toFixed(2)}%`;\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 this.setDims();\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 = MathClamp(Math.abs(oppositePoint[0] - point[0] - deltaX), minWidth, 1) / savedWidth;\n } else {\n ratioY = MathClamp(Math.abs(oppositePoint[1] - point[1] - deltaY), minHeight, 1) / 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();\n this.fixAndSetPosition();\n this._onResizing();\n }\n _onResizing() {}\n altTextFinish() {\n this.#altText?.finish();\n }\n get toolbarButtons() {\n return null;\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 const {\n toolbarButtons\n } = this;\n if (toolbarButtons) {\n for (const [name, tool] of toolbarButtons) {\n await this._editToolbar.addButton(name, tool);\n }\n }\n if (!this.hasComment) {\n this._editToolbar.addButton(\"comment\", this.addCommentButton());\n }\n this._editToolbar.addButton(\"delete\");\n return this._editToolbar;\n }\n addCommentButtonInToolbar() {\n this._editToolbar?.addButtonBefore(\"comment\", this.addCommentButton(), \".deleteButton\");\n }\n removeCommentButtonFromToolbar() {\n this._editToolbar?.removeButton(\"comment\");\n }\n removeEditToolbar() {\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 createAltText() {\n if (!this.#altText) {\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 }\n return this.#altText;\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 focusCommentButton() {\n this.#comment?.focusButton();\n }\n addCommentButton() {\n return this.canAddComment ? this.#comment ||= new Comment(this) : null;\n }\n addStandaloneCommentButton() {\n if (!this._uiManager.hasCommentManager()) {\n return;\n }\n if (this.#commentStandaloneButton) {\n if (this._uiManager.isEditingMode()) {\n this.#commentStandaloneButton.classList.remove(\"hidden\");\n }\n return;\n }\n if (!this.hasComment) {\n return;\n }\n this.#commentStandaloneButton = this.#comment.renderForStandalone();\n this.div.append(this.#commentStandaloneButton);\n }\n removeStandaloneCommentButton() {\n this.#comment.removeStandaloneCommentButton();\n this.#commentStandaloneButton = null;\n }\n hideStandaloneCommentButton() {\n this.#commentStandaloneButton?.classList.add(\"hidden\");\n }\n get comment() {\n const {\n data: {\n richText,\n text,\n date,\n deleted\n }\n } = this.#comment;\n return {\n text,\n richText,\n date,\n deleted,\n color: this.getNonHCMColor(),\n opacity: this.opacity ?? 1\n };\n }\n set comment(text) {\n this.#comment ||= new Comment(this);\n this.#comment.data = text;\n if (this.hasComment) {\n this.removeCommentButtonFromToolbar();\n this.addStandaloneCommentButton();\n this._uiManager.updateComment(this);\n } else {\n this.addCommentButtonInToolbar();\n this.removeStandaloneCommentButton();\n this._uiManager.removeComment(this);\n }\n }\n setCommentData({\n comment,\n popupRef,\n richText\n }) {\n if (!popupRef) {\n return;\n }\n this.#comment ||= new Comment(this);\n this.#comment.setInitialText(comment, richText);\n if (!this.annotationElementId) {\n return;\n }\n const storedData = this._uiManager.getAndRemoveDataFromAnnotationStorage(this.annotationElementId);\n if (storedData) {\n this.updateFromAnnotationLayer(storedData);\n }\n }\n get hasEditedComment() {\n return this.#comment?.hasBeenEdited();\n }\n get hasDeletedComment() {\n return this.#comment?.isDeleted();\n }\n get hasComment() {\n return !!this.#comment && !this.#comment.isEmpty() && !this.#comment.isDeleted();\n }\n async editComment(options) {\n this.#comment ||= new Comment(this);\n this.#comment.edit(options);\n }\n toggleComment(isSelected, visibility = undefined) {\n if (this.hasComment) {\n this._uiManager.toggleComment(this, isSelected, visibility);\n }\n }\n setSelectedCommentButton(selected) {\n this.#comment.setSelectedButton(selected);\n }\n addComment(serialized) {\n if (this.hasEditedComment) {\n const DEFAULT_POPUP_WIDTH = 180;\n const DEFAULT_POPUP_HEIGHT = 100;\n const [,,, trY] = serialized.rect;\n const [pageWidth] = this.pageDimensions;\n const [pageX] = this.pageTranslation;\n const blX = pageX + pageWidth + 1;\n const blY = trY - DEFAULT_POPUP_HEIGHT;\n const trX = blX + DEFAULT_POPUP_WIDTH;\n serialized.popup = {\n contents: this.comment.text,\n deleted: this.comment.deleted,\n rect: [blX, blY, trX, trY]\n };\n }\n }\n updateFromAnnotationLayer({\n popup: {\n contents,\n deleted\n }\n }) {\n this.#comment.data = deleted ? null : contents;\n }\n get parentBoundingClientRect() {\n return this.parent.boundingClientRect;\n }\n render() {\n const div = this.div = document.createElement(\"div\");\n div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n div.className = this.name;\n div.setAttribute(\"id\", this.id);\n div.tabIndex = this.#disabled ? -1 : 0;\n div.setAttribute(\"role\", \"application\");\n if (this.defaultL10nId) {\n div.setAttribute(\"data-l10n-id\", this.defaultL10nId);\n }\n if (!this._isVisible) {\n div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.#addFocusListeners();\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, div, [\"keydown\", \"pointerdown\", \"dblclick\"]);\n if (this.isResizable && this._uiManager._supportsPinchToZoom) {\n this.#touchManager ||= new TouchManager({\n container: 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.addStandaloneCommentButton();\n this._uiManager._editorUndoBar?.hide();\n return 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();\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 #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._uiManager.toggleComment(this, true, false);\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 getPDFRect() {\n return this.getRect(0, 0);\n }\n getNonHCMColor() {\n return this.color && AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color));\n }\n onUpdatedColor() {\n this.#comment?.onUpdatedColor();\n }\n getData() {\n const {\n comment: {\n text: str,\n color,\n date,\n opacity,\n deleted,\n richText\n },\n uid: id,\n pageIndex,\n creationDate,\n modificationDate\n } = this;\n return {\n id,\n pageIndex,\n rect: this.getPDFRect(),\n richText,\n contentsObj: {\n str\n },\n creationDate,\n modificationDate: date || modificationDate,\n popupRef: !deleted,\n color,\n opacity\n };\n }\n onceAdded(focus) {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(false);\n this.#isInEditMode = true;\n return true;\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(true);\n this.#isInEditMode = false;\n return true;\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 return {\n annotationType: this.mode,\n pageIndex: this.pageIndex,\n rect: this.getPDFRect(),\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n static async deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager,\n annotationElementId: data.annotationElementId,\n creationDate: data.creationDate,\n modificationDate: data.modificationDate\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\n editor._isCopy = data.isCopy || false;\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 this.hideCommentPopup();\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 this.#fakeAnnotation?.remove();\n this.#fakeAnnotation = 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 }\n }\n get toolbarPosition() {\n return null;\n }\n get commentButtonPosition() {\n return this._uiManager.direction === \"ltr\" ? [1, 0] : [0, 0];\n }\n get commentButtonPositionInPage() {\n const {\n commentButtonPosition: [posX, posY]\n } = this;\n const [blX, blY, trX, trY] = this.getPDFRect();\n return [AnnotationEditor._round(blX + (trX - blX) * posX), AnnotationEditor._round(blY + (trY - blY) * (1 - posY))];\n }\n get commentButtonColor() {\n return this._uiManager.makeCommentColor(this.getNonHCMColor(), this.opacity);\n }\n get commentPopupPosition() {\n return this.#comment.commentPopupPositionInLayer;\n }\n set commentPopupPosition(pos) {\n this.#comment.commentPopupPositionInLayer = pos;\n }\n hasDefaultPopupPosition() {\n return this.#comment.hasDefaultPopupPosition();\n }\n get commentButtonWidth() {\n return this.#comment.commentButtonWidth;\n }\n get elementBeforePopup() {\n return this.div;\n }\n setCommentButtonStates(options) {\n this.#comment?.setCommentButtonStates(options);\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.firstElementChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstElementChild.before(this.#resizersDiv.lastElementChild);\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.firstElementChild.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 if (this.isSelected && this._editToolbar) {\n this._editToolbar.show();\n return;\n }\n this.isSelected = true;\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 focus() {\n if (this.div && !this.div.contains(document.activeElement)) {\n setTimeout(() => this.div?.focus({\n preventScroll: true\n }), 0);\n }\n }\n unselect() {\n if (!this.isSelected) {\n return;\n }\n this.isSelected = false;\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 this.hideCommentPopup();\n }\n hideCommentPopup() {\n if (this.hasComment) {\n this._uiManager.toggleComment(null);\n }\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n get canChangeContent() {\n return false;\n }\n enterInEditMode() {\n if (!this.canChangeContent) {\n return;\n }\n this.enableEditMode();\n this.div.focus();\n }\n dblclick(event) {\n if (event.target.nodeName === \"BUTTON\") {\n return;\n }\n this.enterInEditMode();\n this.parent.updateToolbar({\n mode: this.constructor._editorType,\n editId: this.uid\n });\n }\n getElementForAltText() {\n return this.div;\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 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 updateFakeAnnotationElement(annotationLayer) {\n if (!this.#fakeAnnotation && !this.deleted) {\n this.#fakeAnnotation = annotationLayer.addFakeAnnotation(this);\n return;\n }\n if (this.deleted) {\n this.#fakeAnnotation.remove();\n this.#fakeAnnotation = null;\n return;\n }\n if (this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized) {\n this.#fakeAnnotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n }\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\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 firstElementChild\n } = annotation.container;\n if (firstElementChild?.nodeName === \"DIV\" && firstElementChild.classList.contains(\"annotationContent\")) {\n firstElementChild.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 #editorsMap = 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 const storedValue = this.#storage.get(key);\n if (storedValue === undefined) {\n return;\n }\n if (storedValue instanceof AnnotationEditor) {\n this.#editorsMap.delete(storedValue.annotationElementId);\n }\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) {\n (this.#editorsMap ||= new Map()).set(value.annotationElementId, value);\n if (typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n }\n has(key) {\n return this.#storage.has(key);\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 let numberOfEditedComments = 0;\n let numberOfDeletedComments = 0;\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n if (value.popup) {\n if (value.popup.deleted) {\n numberOfDeletedComments += 1;\n } else {\n numberOfEditedComments += 1;\n }\n }\n continue;\n }\n if (value.isCommentDeleted) {\n numberOfDeletedComments += 1;\n } else if (value.hasEditedComment) {\n numberOfEditedComments += 1;\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 if (numberOfDeletedComments > 0 || numberOfEditedComments > 0) {\n stats ||= Object.create(null);\n stats.comments = {\n deleted: numberOfDeletedComments,\n edited: numberOfEditedComments\n };\n }\n if (!stats) {\n return null;\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 updateEditor(annotationId, data) {\n const value = this.#editorsMap?.get(annotationId);\n if (value) {\n value.updateFromAnnotationLayer(data);\n return true;\n }\n return false;\n }\n getEditor(annotationId) {\n return this.#editorsMap?.get(annotationId) || null;\n }\n get modifiedIds() {\n if (this.#modifiedIds) {\n return this.#modifiedIds;\n }\n const ids = [];\n if (this.#editorsMap) {\n for (const value of this.#editorsMap.values()) {\n if (!value.serialize()) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash: ids.join(\",\")\n };\n }\n [Symbol.iterator]() {\n return this.#storage.entries();\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\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 disableFontFace,\n _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(!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 return shadow(this, \"isSyncFontLoadingSupported\", isNodeJS || util_FeatureTest.platform.isFirefox);\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 #fontData;\n constructor(translatedData, inspectFont = null, extra, charProcOperatorList) {\n this.compiledGlyphs = Object.create(null);\n this.#fontData = translatedData;\n this._inspectFont = inspectFont;\n if (extra) {\n Object.assign(this, extra);\n }\n if (charProcOperatorList) {\n this.charProcOperatorList = charProcOperatorList;\n }\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(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 = makePathFromDrawOPS(cmds?.path);\n if (!this.fontExtraProperties) {\n objs.delete(objId);\n }\n return this.compiledGlyphs[character] = path;\n }\n get black() {\n return this.#fontData.black;\n }\n get bold() {\n return this.#fontData.bold;\n }\n get disableFontFace() {\n return this.#fontData.disableFontFace ?? false;\n }\n set disableFontFace(value) {\n shadow(this, \"disableFontFace\", !!value);\n }\n get fontExtraProperties() {\n return this.#fontData.fontExtraProperties ?? false;\n }\n get isInvalidPDFjsFont() {\n return this.#fontData.isInvalidPDFjsFont;\n }\n get isType3Font() {\n return this.#fontData.isType3Font;\n }\n get italic() {\n return this.#fontData.italic;\n }\n get missingFile() {\n return this.#fontData.missingFile;\n }\n get remeasure() {\n return this.#fontData.remeasure;\n }\n get vertical() {\n return this.#fontData.vertical;\n }\n get ascent() {\n return this.#fontData.ascent;\n }\n get defaultWidth() {\n return this.#fontData.defaultWidth;\n }\n get descent() {\n return this.#fontData.descent;\n }\n get bbox() {\n return this.#fontData.bbox;\n }\n set bbox(bbox) {\n shadow(this, \"bbox\", bbox);\n }\n get fontMatrix() {\n return this.#fontData.fontMatrix;\n }\n get fallbackName() {\n return this.#fontData.fallbackName;\n }\n get loadedName() {\n return this.#fontData.loadedName;\n }\n get mimetype() {\n return this.#fontData.mimetype;\n }\n get name() {\n return this.#fontData.name;\n }\n get data() {\n return this.#fontData.data;\n }\n clearData() {\n this.#fontData.clearData();\n }\n get cssFontInfo() {\n return this.#fontData.cssFontInfo;\n }\n get systemFontInfo() {\n return this.#fontData.systemFontInfo;\n }\n get defaultVMetrics() {\n return this.#fontData.defaultVMetrics;\n }\n}\n\n;// ./src/shared/obj-bin-transform.js\n\nclass CssFontInfo {\n #buffer;\n #view;\n #decoder;\n static strings = [\"fontFamily\", \"fontWeight\", \"italicAngle\"];\n static write(info) {\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of CssFontInfo.strings) {\n const encoded = encoder.encode(info[prop]);\n encodedStrings[prop] = encoded;\n stringsLength += 4 + encoded.length;\n }\n const buffer = new ArrayBuffer(stringsLength);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n for (const prop of CssFontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n assert(offset === buffer.byteLength, \"CssFontInfo.write: Buffer overflow\");\n return buffer;\n }\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(this.#buffer);\n this.#decoder = new TextDecoder();\n }\n #readString(index) {\n assert(index < CssFontInfo.strings.length, \"Invalid string index\");\n let offset = 0;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get fontFamily() {\n return this.#readString(0);\n }\n get fontWeight() {\n return this.#readString(1);\n }\n get italicAngle() {\n return this.#readString(2);\n }\n}\nclass SystemFontInfo {\n #buffer;\n #view;\n #decoder;\n static strings = [\"css\", \"loadedName\", \"baseFontName\", \"src\"];\n static write(info) {\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of SystemFontInfo.strings) {\n const encoded = encoder.encode(info[prop]);\n encodedStrings[prop] = encoded;\n stringsLength += 4 + encoded.length;\n }\n stringsLength += 4;\n let encodedStyleStyle,\n encodedStyleWeight,\n lengthEstimate = 1 + stringsLength;\n if (info.style) {\n encodedStyleStyle = encoder.encode(info.style.style);\n encodedStyleWeight = encoder.encode(info.style.weight);\n lengthEstimate += 4 + encodedStyleStyle.length + 4 + encodedStyleWeight.length;\n }\n const buffer = new ArrayBuffer(lengthEstimate);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n view.setUint8(offset++, info.guessFallback ? 1 : 0);\n view.setUint32(offset, 0);\n offset += 4;\n stringsLength = 0;\n for (const prop of SystemFontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n stringsLength += 4 + length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n view.setUint32(offset - stringsLength - 4, stringsLength);\n if (info.style) {\n view.setUint32(offset, encodedStyleStyle.length);\n data.set(encodedStyleStyle, offset + 4);\n offset += 4 + encodedStyleStyle.length;\n view.setUint32(offset, encodedStyleWeight.length);\n data.set(encodedStyleWeight, offset + 4);\n offset += 4 + encodedStyleWeight.length;\n }\n assert(offset <= buffer.byteLength, \"SubstitionInfo.write: Buffer overflow\");\n return buffer.transferToFixedLength(offset);\n }\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(this.#buffer);\n this.#decoder = new TextDecoder();\n }\n get guessFallback() {\n return this.#view.getUint8(0) !== 0;\n }\n #readString(index) {\n assert(index < SystemFontInfo.strings.length, \"Invalid string index\");\n let offset = 5;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n return this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\n }\n get css() {\n return this.#readString(0);\n }\n get loadedName() {\n return this.#readString(1);\n }\n get baseFontName() {\n return this.#readString(2);\n }\n get src() {\n return this.#readString(3);\n }\n get style() {\n let offset = 1;\n offset += 4 + this.#view.getUint32(offset);\n const styleLength = this.#view.getUint32(offset);\n const style = this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, styleLength));\n offset += 4 + styleLength;\n const weightLength = this.#view.getUint32(offset);\n const weight = this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, weightLength));\n return {\n style,\n weight\n };\n }\n}\nclass FontInfo {\n static bools = [\"black\", \"bold\", \"disableFontFace\", \"fontExtraProperties\", \"isInvalidPDFjsFont\", \"isType3Font\", \"italic\", \"missingFile\", \"remeasure\", \"vertical\"];\n static numbers = [\"ascent\", \"defaultWidth\", \"descent\"];\n static strings = [\"fallbackName\", \"loadedName\", \"mimetype\", \"name\"];\n static #OFFSET_NUMBERS = Math.ceil(this.bools.length * 2 / 8);\n static #OFFSET_BBOX = this.#OFFSET_NUMBERS + this.numbers.length * 8;\n static #OFFSET_FONT_MATRIX = this.#OFFSET_BBOX + 1 + 2 * 4;\n static #OFFSET_DEFAULT_VMETRICS = this.#OFFSET_FONT_MATRIX + 1 + 8 * 6;\n static #OFFSET_STRINGS = this.#OFFSET_DEFAULT_VMETRICS + 1 + 2 * 3;\n #buffer;\n #decoder;\n #view;\n constructor({\n data,\n extra\n }) {\n this.#buffer = data;\n this.#decoder = new TextDecoder();\n this.#view = new DataView(this.#buffer);\n if (extra) {\n Object.assign(this, extra);\n }\n }\n #readBoolean(index) {\n assert(index < FontInfo.bools.length, \"Invalid boolean index\");\n const byteOffset = Math.floor(index / 4);\n const bitOffset = index * 2 % 8;\n const value = this.#view.getUint8(byteOffset) >> bitOffset & 0x03;\n return value === 0x00 ? undefined : value === 0x02;\n }\n get black() {\n return this.#readBoolean(0);\n }\n get bold() {\n return this.#readBoolean(1);\n }\n get disableFontFace() {\n return this.#readBoolean(2);\n }\n get fontExtraProperties() {\n return this.#readBoolean(3);\n }\n get isInvalidPDFjsFont() {\n return this.#readBoolean(4);\n }\n get isType3Font() {\n return this.#readBoolean(5);\n }\n get italic() {\n return this.#readBoolean(6);\n }\n get missingFile() {\n return this.#readBoolean(7);\n }\n get remeasure() {\n return this.#readBoolean(8);\n }\n get vertical() {\n return this.#readBoolean(9);\n }\n #readNumber(index) {\n assert(index < FontInfo.numbers.length, \"Invalid number index\");\n return this.#view.getFloat64(FontInfo.#OFFSET_NUMBERS + index * 8);\n }\n get ascent() {\n return this.#readNumber(0);\n }\n get defaultWidth() {\n return this.#readNumber(1);\n }\n get descent() {\n return this.#readNumber(2);\n }\n get bbox() {\n let offset = FontInfo.#OFFSET_BBOX;\n const numCoords = this.#view.getUint8(offset);\n if (numCoords === 0) {\n return undefined;\n }\n offset += 1;\n const bbox = [];\n for (let i = 0; i < 4; i++) {\n bbox.push(this.#view.getInt16(offset, true));\n offset += 2;\n }\n return bbox;\n }\n get fontMatrix() {\n let offset = FontInfo.#OFFSET_FONT_MATRIX;\n const numPoints = this.#view.getUint8(offset);\n if (numPoints === 0) {\n return undefined;\n }\n offset += 1;\n const fontMatrix = [];\n for (let i = 0; i < 6; i++) {\n fontMatrix.push(this.#view.getFloat64(offset, true));\n offset += 8;\n }\n return fontMatrix;\n }\n get defaultVMetrics() {\n let offset = FontInfo.#OFFSET_DEFAULT_VMETRICS;\n const numMetrics = this.#view.getUint8(offset);\n if (numMetrics === 0) {\n return undefined;\n }\n offset += 1;\n const defaultVMetrics = [];\n for (let i = 0; i < 3; i++) {\n defaultVMetrics.push(this.#view.getInt16(offset, true));\n offset += 2;\n }\n return defaultVMetrics;\n }\n #readString(index) {\n assert(index < FontInfo.strings.length, \"Invalid string index\");\n let offset = FontInfo.#OFFSET_STRINGS + 4;\n for (let i = 0; i < index; i++) {\n offset += this.#view.getUint32(offset) + 4;\n }\n const length = this.#view.getUint32(offset);\n const stringData = new Uint8Array(length);\n stringData.set(new Uint8Array(this.#buffer, offset + 4, length));\n return this.#decoder.decode(stringData);\n }\n get fallbackName() {\n return this.#readString(0);\n }\n get loadedName() {\n return this.#readString(1);\n }\n get mimetype() {\n return this.#readString(2);\n }\n get name() {\n return this.#readString(3);\n }\n get data() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + cssFontInfoLength;\n const length = this.#view.getUint32(offset);\n if (length === 0) {\n return undefined;\n }\n return new Uint8Array(this.#buffer, offset + 4, length);\n }\n clearData() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + cssFontInfoLength;\n const length = this.#view.getUint32(offset);\n const data = new Uint8Array(this.#buffer, offset + 4, length);\n data.fill(0);\n this.#view.setUint32(offset, 0);\n }\n get cssFontInfo() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n offset += 4 + systemFontInfoLength;\n const cssFontInfoLength = this.#view.getUint32(offset);\n if (cssFontInfoLength === 0) {\n return null;\n }\n const cssFontInfoData = new Uint8Array(cssFontInfoLength);\n cssFontInfoData.set(new Uint8Array(this.#buffer, offset + 4, cssFontInfoLength));\n return new CssFontInfo(cssFontInfoData.buffer);\n }\n get systemFontInfo() {\n let offset = FontInfo.#OFFSET_STRINGS;\n const stringsLength = this.#view.getUint32(offset);\n offset += 4 + stringsLength;\n const systemFontInfoLength = this.#view.getUint32(offset);\n if (systemFontInfoLength === 0) {\n return null;\n }\n const systemFontInfoData = new Uint8Array(systemFontInfoLength);\n systemFontInfoData.set(new Uint8Array(this.#buffer, offset + 4, systemFontInfoLength));\n return new SystemFontInfo(systemFontInfoData.buffer);\n }\n static write(font) {\n const systemFontInfoBuffer = font.systemFontInfo ? SystemFontInfo.write(font.systemFontInfo) : null;\n const cssFontInfoBuffer = font.cssFontInfo ? CssFontInfo.write(font.cssFontInfo) : null;\n const encoder = new TextEncoder();\n const encodedStrings = {};\n let stringsLength = 0;\n for (const prop of FontInfo.strings) {\n encodedStrings[prop] = encoder.encode(font[prop]);\n stringsLength += 4 + encodedStrings[prop].length;\n }\n const lengthEstimate = FontInfo.#OFFSET_STRINGS + 4 + stringsLength + 4 + (systemFontInfoBuffer ? systemFontInfoBuffer.byteLength : 0) + 4 + (cssFontInfoBuffer ? cssFontInfoBuffer.byteLength : 0) + 4 + (font.data ? font.data.length : 0);\n const buffer = new ArrayBuffer(lengthEstimate);\n const data = new Uint8Array(buffer);\n const view = new DataView(buffer);\n let offset = 0;\n const numBools = FontInfo.bools.length;\n let boolByte = 0,\n boolBit = 0;\n for (let i = 0; i < numBools; i++) {\n const value = font[FontInfo.bools[i]];\n const bits = value === undefined ? 0x00 : value ? 0x02 : 0x01;\n boolByte |= bits << boolBit;\n boolBit += 2;\n if (boolBit === 8 || i === numBools - 1) {\n view.setUint8(offset++, boolByte);\n boolByte = 0;\n boolBit = 0;\n }\n }\n assert(offset === FontInfo.#OFFSET_NUMBERS, \"FontInfo.write: Boolean properties offset mismatch\");\n for (const prop of FontInfo.numbers) {\n view.setFloat64(offset, font[prop]);\n offset += 8;\n }\n assert(offset === FontInfo.#OFFSET_BBOX, \"FontInfo.write: Number properties offset mismatch\");\n if (font.bbox) {\n view.setUint8(offset++, 4);\n for (const coord of font.bbox) {\n view.setInt16(offset, coord, true);\n offset += 2;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 2 * 4;\n }\n assert(offset === FontInfo.#OFFSET_FONT_MATRIX, \"FontInfo.write: BBox properties offset mismatch\");\n if (font.fontMatrix) {\n view.setUint8(offset++, 6);\n for (const point of font.fontMatrix) {\n view.setFloat64(offset, point, true);\n offset += 8;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 8 * 6;\n }\n assert(offset === FontInfo.#OFFSET_DEFAULT_VMETRICS, \"FontInfo.write: FontMatrix properties offset mismatch\");\n if (font.defaultVMetrics) {\n view.setUint8(offset++, 1);\n for (const metric of font.defaultVMetrics) {\n view.setInt16(offset, metric, true);\n offset += 2;\n }\n } else {\n view.setUint8(offset++, 0);\n offset += 3 * 2;\n }\n assert(offset === FontInfo.#OFFSET_STRINGS, \"FontInfo.write: DefaultVMetrics properties offset mismatch\");\n view.setUint32(FontInfo.#OFFSET_STRINGS, 0);\n offset += 4;\n for (const prop of FontInfo.strings) {\n const encoded = encodedStrings[prop];\n const length = encoded.length;\n view.setUint32(offset, length);\n data.set(encoded, offset + 4);\n offset += 4 + length;\n }\n view.setUint32(FontInfo.#OFFSET_STRINGS, offset - FontInfo.#OFFSET_STRINGS - 4);\n if (!systemFontInfoBuffer) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n const length = systemFontInfoBuffer.byteLength;\n view.setUint32(offset, length);\n assert(offset + 4 + length <= buffer.byteLength, \"FontInfo.write: Buffer overflow at systemFontInfo\");\n data.set(new Uint8Array(systemFontInfoBuffer), offset + 4);\n offset += 4 + length;\n }\n if (!cssFontInfoBuffer) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n const length = cssFontInfoBuffer.byteLength;\n view.setUint32(offset, length);\n assert(offset + 4 + length <= buffer.byteLength, \"FontInfo.write: Buffer overflow at cssFontInfo\");\n data.set(new Uint8Array(cssFontInfoBuffer), offset + 4);\n offset += 4 + length;\n }\n if (font.data === undefined) {\n view.setUint32(offset, 0);\n offset += 4;\n } else {\n view.setUint32(offset, font.data.length);\n data.set(font.data, offset + 4);\n offset += 4 + font.data.length;\n }\n assert(offset <= buffer.byteLength, \"FontInfo.write: Buffer overflow\");\n return buffer.transferToFixedLength(offset);\n }\n}\nclass PatternInfo {\n static #KIND = 0;\n static #HAS_BBOX = 1;\n static #HAS_BACKGROUND = 2;\n static #SHADING_TYPE = 3;\n static #N_COORD = 4;\n static #N_COLOR = 8;\n static #N_STOP = 12;\n static #N_FIGURES = 16;\n constructor(buffer) {\n this.buffer = buffer;\n this.view = new DataView(buffer);\n this.data = new Uint8Array(buffer);\n }\n static write(ir) {\n let kind,\n bbox = null,\n coords = [],\n colors = [],\n colorStops = [],\n figures = [],\n shadingType = null,\n background = null;\n switch (ir[0]) {\n case \"RadialAxial\":\n kind = ir[1] === \"axial\" ? 1 : 2;\n bbox = ir[2];\n colorStops = ir[3];\n if (kind === 1) {\n coords.push(...ir[4], ...ir[5]);\n } else {\n coords.push(ir[4][0], ir[4][1], ir[6], ir[5][0], ir[5][1], ir[7]);\n }\n break;\n case \"Mesh\":\n kind = 3;\n shadingType = ir[1];\n coords = ir[2];\n colors = ir[3];\n figures = ir[4] || [];\n bbox = ir[6];\n background = ir[7];\n break;\n default:\n throw new Error(`Unsupported pattern type: ${ir[0]}`);\n }\n const nCoord = Math.floor(coords.length / 2);\n const nColor = Math.floor(colors.length / 3);\n const nStop = colorStops.length;\n const nFigures = figures.length;\n let figuresSize = 0;\n for (const figure of figures) {\n figuresSize += 1;\n figuresSize = Math.ceil(figuresSize / 4) * 4;\n figuresSize += 4 + figure.coords.length * 4;\n figuresSize += 4 + figure.colors.length * 4;\n if (figure.verticesPerRow !== undefined) {\n figuresSize += 4;\n }\n }\n const byteLen = 20 + nCoord * 8 + nColor * 3 + nStop * 8 + (bbox ? 16 : 0) + (background ? 3 : 0) + figuresSize;\n const buffer = new ArrayBuffer(byteLen);\n const dataView = new DataView(buffer);\n const u8data = new Uint8Array(buffer);\n dataView.setUint8(PatternInfo.#KIND, kind);\n dataView.setUint8(PatternInfo.#HAS_BBOX, bbox ? 1 : 0);\n dataView.setUint8(PatternInfo.#HAS_BACKGROUND, background ? 1 : 0);\n dataView.setUint8(PatternInfo.#SHADING_TYPE, shadingType);\n dataView.setUint32(PatternInfo.#N_COORD, nCoord, true);\n dataView.setUint32(PatternInfo.#N_COLOR, nColor, true);\n dataView.setUint32(PatternInfo.#N_STOP, nStop, true);\n dataView.setUint32(PatternInfo.#N_FIGURES, nFigures, true);\n let offset = 20;\n const coordsView = new Float32Array(buffer, offset, nCoord * 2);\n coordsView.set(coords);\n offset += nCoord * 8;\n u8data.set(colors, offset);\n offset += nColor * 3;\n for (const [pos, hex] of colorStops) {\n dataView.setFloat32(offset, pos, true);\n offset += 4;\n dataView.setUint32(offset, parseInt(hex.slice(1), 16), true);\n offset += 4;\n }\n if (bbox) {\n for (const v of bbox) {\n dataView.setFloat32(offset, v, true);\n offset += 4;\n }\n }\n if (background) {\n u8data.set(background, offset);\n offset += 3;\n }\n for (let i = 0; i < figures.length; i++) {\n const figure = figures[i];\n dataView.setUint8(offset, figure.type);\n offset += 1;\n offset = Math.ceil(offset / 4) * 4;\n dataView.setUint32(offset, figure.coords.length, true);\n offset += 4;\n const figureCoordsView = new Int32Array(buffer, offset, figure.coords.length);\n figureCoordsView.set(figure.coords);\n offset += figure.coords.length * 4;\n dataView.setUint32(offset, figure.colors.length, true);\n offset += 4;\n const colorsView = new Int32Array(buffer, offset, figure.colors.length);\n colorsView.set(figure.colors);\n offset += figure.colors.length * 4;\n if (figure.verticesPerRow !== undefined) {\n dataView.setUint32(offset, figure.verticesPerRow, true);\n offset += 4;\n }\n }\n return buffer;\n }\n getIR() {\n const dataView = this.view;\n const kind = this.data[PatternInfo.#KIND];\n const hasBBox = !!this.data[PatternInfo.#HAS_BBOX];\n const hasBackground = !!this.data[PatternInfo.#HAS_BACKGROUND];\n const nCoord = dataView.getUint32(PatternInfo.#N_COORD, true);\n const nColor = dataView.getUint32(PatternInfo.#N_COLOR, true);\n const nStop = dataView.getUint32(PatternInfo.#N_STOP, true);\n const nFigures = dataView.getUint32(PatternInfo.#N_FIGURES, true);\n let offset = 20;\n const coords = new Float32Array(this.buffer, offset, nCoord * 2);\n offset += nCoord * 8;\n const colors = new Uint8Array(this.buffer, offset, nColor * 3);\n offset += nColor * 3;\n const stops = [];\n for (let i = 0; i < nStop; ++i) {\n const p = dataView.getFloat32(offset, true);\n offset += 4;\n const rgb = dataView.getUint32(offset, true);\n offset += 4;\n stops.push([p, `#${rgb.toString(16).padStart(6, \"0\")}`]);\n }\n let bbox = null;\n if (hasBBox) {\n bbox = [];\n for (let i = 0; i < 4; ++i) {\n bbox.push(dataView.getFloat32(offset, true));\n offset += 4;\n }\n }\n let background = null;\n if (hasBackground) {\n background = new Uint8Array(this.buffer, offset, 3);\n offset += 3;\n }\n const figures = [];\n for (let i = 0; i < nFigures; ++i) {\n const type = dataView.getUint8(offset);\n offset += 1;\n offset = Math.ceil(offset / 4) * 4;\n const coordsLength = dataView.getUint32(offset, true);\n offset += 4;\n const figureCoords = new Int32Array(this.buffer, offset, coordsLength);\n offset += coordsLength * 4;\n const colorsLength = dataView.getUint32(offset, true);\n offset += 4;\n const figureColors = new Int32Array(this.buffer, offset, colorsLength);\n offset += colorsLength * 4;\n const figure = {\n type,\n coords: figureCoords,\n colors: figureColors\n };\n if (type === MeshFigureType.LATTICE) {\n figure.verticesPerRow = dataView.getUint32(offset, true);\n offset += 4;\n }\n figures.push(figure);\n }\n if (kind === 1) {\n return [\"RadialAxial\", \"axial\", bbox, stops, Array.from(coords.slice(0, 2)), Array.from(coords.slice(2, 4)), null, null];\n }\n if (kind === 2) {\n return [\"RadialAxial\", \"radial\", bbox, stops, [coords[0], coords[1]], [coords[3], coords[4]], coords[2], coords[5]];\n }\n if (kind === 3) {\n const shadingType = this.data[PatternInfo.#SHADING_TYPE];\n let bounds = null;\n if (coords.length > 0) {\n let minX = coords[0],\n maxX = coords[0];\n let minY = coords[1],\n maxY = coords[1];\n for (let i = 0; i < coords.length; i += 2) {\n const x = coords[i],\n y = coords[i + 1];\n minX = minX > x ? x : minX;\n minY = minY > y ? y : minY;\n maxX = maxX < x ? x : maxX;\n maxY = maxY < y ? y : maxY;\n }\n bounds = [minX, minY, maxX, maxY];\n }\n return [\"Mesh\", shadingType, coords, colors, figures, bounds, bbox, background];\n }\n throw new Error(`Unsupported pattern kind: ${kind}`);\n }\n}\nclass FontPathInfo {\n static write(path) {\n let data;\n let buffer;\n if (util_FeatureTest.isFloat16ArraySupported) {\n buffer = new ArrayBuffer(path.length * 2);\n data = new Float16Array(buffer);\n } else {\n buffer = new ArrayBuffer(path.length * 4);\n data = new Float32Array(buffer);\n }\n data.set(path);\n return buffer;\n }\n #buffer;\n constructor(buffer) {\n this.#buffer = buffer;\n }\n get path() {\n if (util_FeatureTest.isFloat16ArraySupported) {\n return new Float16Array(this.#buffer);\n }\n return new Float32Array(this.#buffer);\n }\n}\n\n;// ./src/display/api_utils.js\n\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n if (typeof val === \"string\") {\n if (isNodeJS) {\n return val;\n }\n const url = URL.parse(val, window.location);\n if (url) {\n return url.href;\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 getFactoryUrlProp(val) {\n if (typeof val !== \"string\") {\n return null;\n }\n if (val.endsWith(\"/\")) {\n return val;\n }\n throw new Error(`Invalid factory url: \"${val}\" must include trailing slash.`);\n}\nconst isRefProxy = v => typeof v === \"object\" && Number.isInteger(v?.num) && v.num >= 0 && Number.isInteger(v?.gen) && v.gen >= 0;\nconst isNameProxy = v => typeof v === \"object\" && typeof v?.name === \"string\";\nconst isValidExplicitDest = _isValidExplicitDest.bind(null, isRefProxy, isNameProxy);\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}\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 PasswordException || ex instanceof ResponseException || 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 \"PasswordException\":\n return new PasswordException(ex.message, ex.code);\n case \"ResponseException\":\n return new ResponseException(ex.message, ex.status, ex.missing);\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 = updateUrlHash(url, \"\");\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/wasm_factory.js\n\n\nclass BaseWasmFactory {\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 `wasmUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Wasm 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 wasm data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMWasmFactory extends BaseWasmFactory {\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\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}\nclass NodeWasmFactory extends BaseWasmFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\n\n;// ./src/display/canvas_dependency_tracker.js\n\nconst FORCED_DEPENDENCY_LABEL = \"__forcedDependency\";\nconst {\n floor,\n ceil\n} = Math;\nfunction expandBBox(array, index, minX, minY, maxX, maxY) {\n array[index * 4 + 0] = Math.min(array[index * 4 + 0], minX);\n array[index * 4 + 1] = Math.min(array[index * 4 + 1], minY);\n array[index * 4 + 2] = Math.max(array[index * 4 + 2], maxX);\n array[index * 4 + 3] = Math.max(array[index * 4 + 3], maxY);\n}\nconst EMPTY_BBOX = new Uint32Array(new Uint8Array([255, 255, 0, 0]).buffer)[0];\nclass BBoxReader {\n #bboxes;\n #coords;\n constructor(bboxes, coords) {\n this.#bboxes = bboxes;\n this.#coords = coords;\n }\n get length() {\n return this.#bboxes.length;\n }\n isEmpty(i) {\n return this.#bboxes[i] === EMPTY_BBOX;\n }\n minX(i) {\n return this.#coords[i * 4 + 0] / 256;\n }\n minY(i) {\n return this.#coords[i * 4 + 1] / 256;\n }\n maxX(i) {\n return (this.#coords[i * 4 + 2] + 1) / 256;\n }\n maxY(i) {\n return (this.#coords[i * 4 + 3] + 1) / 256;\n }\n}\nconst ensureDebugMetadata = (map, key) => {\n if (!map) {\n return undefined;\n }\n let value = map.get(key);\n if (!value) {\n value = {\n dependencies: new Set(),\n isRenderingOperation: false\n };\n map.set(key, value);\n }\n return value;\n};\nclass CanvasDependencyTracker {\n #simple = {\n __proto__: null\n };\n #incremental = {\n __proto__: null,\n transform: [],\n moveText: [],\n sameLineText: [],\n [FORCED_DEPENDENCY_LABEL]: []\n };\n #namedDependencies = new Map();\n #savesStack = [];\n #markedContentStack = [];\n #baseTransformStack = [[1, 0, 0, 1, 0, 0]];\n #clipBox = [-Infinity, -Infinity, Infinity, Infinity];\n #pendingBBox = new Float64Array([Infinity, Infinity, -Infinity, -Infinity]);\n #pendingBBoxIdx = -1;\n #pendingDependencies = new Set();\n #operations = new Map();\n #fontBBoxTrustworthy = new Map();\n #canvasWidth;\n #canvasHeight;\n #bboxesCoords;\n #bboxes;\n #debugMetadata;\n constructor(canvas, operationsCount, recordDebugMetadata = false) {\n this.#canvasWidth = canvas.width;\n this.#canvasHeight = canvas.height;\n this.#initializeBBoxes(operationsCount);\n if (recordDebugMetadata) {\n this.#debugMetadata = new Map();\n }\n }\n growOperationsCount(operationsCount) {\n if (operationsCount >= this.#bboxes.length) {\n this.#initializeBBoxes(operationsCount, this.#bboxes);\n }\n }\n #initializeBBoxes(operationsCount, oldBBoxes) {\n const buffer = new ArrayBuffer(operationsCount * 4);\n this.#bboxesCoords = new Uint8ClampedArray(buffer);\n this.#bboxes = new Uint32Array(buffer);\n if (oldBBoxes && oldBBoxes.length > 0) {\n this.#bboxes.set(oldBBoxes);\n this.#bboxes.fill(EMPTY_BBOX, oldBBoxes.length);\n } else {\n this.#bboxes.fill(EMPTY_BBOX);\n }\n }\n save(opIdx) {\n this.#simple = {\n __proto__: this.#simple\n };\n this.#incremental = {\n __proto__: this.#incremental,\n transform: {\n __proto__: this.#incremental.transform\n },\n moveText: {\n __proto__: this.#incremental.moveText\n },\n sameLineText: {\n __proto__: this.#incremental.sameLineText\n },\n [FORCED_DEPENDENCY_LABEL]: {\n __proto__: this.#incremental[FORCED_DEPENDENCY_LABEL]\n }\n };\n this.#clipBox = {\n __proto__: this.#clipBox\n };\n this.#savesStack.push(opIdx);\n return this;\n }\n restore(opIdx) {\n const previous = Object.getPrototypeOf(this.#simple);\n if (previous === null) {\n return this;\n }\n this.#simple = previous;\n this.#incremental = Object.getPrototypeOf(this.#incremental);\n this.#clipBox = Object.getPrototypeOf(this.#clipBox);\n const lastSave = this.#savesStack.pop();\n if (lastSave !== undefined) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n recordOpenMarker(idx) {\n this.#savesStack.push(idx);\n return this;\n }\n getOpenMarker() {\n if (this.#savesStack.length === 0) {\n return null;\n }\n return this.#savesStack.at(-1);\n }\n recordCloseMarker(opIdx) {\n const lastSave = this.#savesStack.pop();\n if (lastSave !== undefined) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n beginMarkedContent(opIdx) {\n this.#markedContentStack.push(opIdx);\n return this;\n }\n endMarkedContent(opIdx) {\n const lastSave = this.#markedContentStack.pop();\n if (lastSave !== undefined) {\n ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(lastSave);\n this.#bboxes[opIdx] = this.#bboxes[lastSave];\n }\n return this;\n }\n pushBaseTransform(ctx) {\n this.#baseTransformStack.push(Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform()));\n return this;\n }\n popBaseTransform() {\n if (this.#baseTransformStack.length > 1) {\n this.#baseTransformStack.pop();\n }\n return this;\n }\n recordSimpleData(name, idx) {\n this.#simple[name] = idx;\n return this;\n }\n recordIncrementalData(name, idx) {\n this.#incremental[name].push(idx);\n return this;\n }\n resetIncrementalData(name, idx) {\n this.#incremental[name].length = 0;\n return this;\n }\n recordNamedData(name, idx) {\n this.#namedDependencies.set(name, idx);\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n this.#simple[name] = this.#namedDependencies.get(depName) ?? fallbackIdx;\n }\n recordFutureForcedDependency(name, idx) {\n this.recordIncrementalData(FORCED_DEPENDENCY_LABEL, idx);\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n for (const name of names) {\n if (name in this.#simple) {\n this.recordFutureForcedDependency(name, this.#simple[name]);\n }\n }\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n for (const dep of this.#pendingDependencies) {\n this.recordFutureForcedDependency(FORCED_DEPENDENCY_LABEL, dep);\n }\n return this;\n }\n resetBBox(idx) {\n if (this.#pendingBBoxIdx !== idx) {\n this.#pendingBBoxIdx = idx;\n this.#pendingBBox[0] = Infinity;\n this.#pendingBBox[1] = Infinity;\n this.#pendingBBox[2] = -Infinity;\n this.#pendingBBox[3] = -Infinity;\n }\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n const transform = Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform());\n const clipBox = [Infinity, Infinity, -Infinity, -Infinity];\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, clipBox);\n const intersection = Util.intersect(this.#clipBox, clipBox);\n if (intersection) {\n this.#clipBox[0] = intersection[0];\n this.#clipBox[1] = intersection[1];\n this.#clipBox[2] = intersection[2];\n this.#clipBox[3] = intersection[3];\n } else {\n this.#clipBox[0] = this.#clipBox[1] = Infinity;\n this.#clipBox[2] = this.#clipBox[3] = -Infinity;\n }\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n const clipBox = this.#clipBox;\n if (clipBox[0] === Infinity) {\n return this;\n }\n const transform = Util.multiplyByDOMMatrix(this.#baseTransformStack.at(-1), ctx.getTransform());\n if (clipBox[0] === -Infinity) {\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, this.#pendingBBox);\n return this;\n }\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, bbox);\n this.#pendingBBox[0] = Math.min(this.#pendingBBox[0], Math.max(bbox[0], clipBox[0]));\n this.#pendingBBox[1] = Math.min(this.#pendingBBox[1], Math.max(bbox[1], clipBox[1]));\n this.#pendingBBox[2] = Math.max(this.#pendingBBox[2], Math.min(bbox[2], clipBox[2]));\n this.#pendingBBox[3] = Math.max(this.#pendingBBox[3], Math.min(bbox[3], clipBox[3]));\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale = 1, x = 0, y = 0, getMeasure) {\n const fontBBox = font.bbox;\n let isBBoxTrustworthy;\n let computedBBox;\n if (fontBBox) {\n isBBoxTrustworthy = fontBBox[2] !== fontBBox[0] && fontBBox[3] !== fontBBox[1] && this.#fontBBoxTrustworthy.get(font);\n if (isBBoxTrustworthy !== false) {\n computedBBox = [0, 0, 0, 0];\n Util.axialAlignedBoundingBox(fontBBox, font.fontMatrix, computedBBox);\n if (scale !== 1 || x !== 0 || y !== 0) {\n Util.scaleMinMax([scale, 0, 0, -scale, x, y], computedBBox);\n }\n if (isBBoxTrustworthy) {\n return this.recordBBox(idx, ctx, computedBBox[0], computedBBox[2], computedBBox[1], computedBBox[3]);\n }\n }\n }\n if (!getMeasure) {\n return this.recordFullPageBBox(idx);\n }\n const measure = getMeasure();\n if (fontBBox && computedBBox && isBBoxTrustworthy === undefined) {\n isBBoxTrustworthy = computedBBox[0] <= x - measure.actualBoundingBoxLeft && computedBBox[2] >= x + measure.actualBoundingBoxRight && computedBBox[1] <= y - measure.actualBoundingBoxAscent && computedBBox[3] >= y + measure.actualBoundingBoxDescent;\n this.#fontBBoxTrustworthy.set(font, isBBoxTrustworthy);\n if (isBBoxTrustworthy) {\n return this.recordBBox(idx, ctx, computedBBox[0], computedBBox[2], computedBBox[1], computedBBox[3]);\n }\n }\n return this.recordBBox(idx, ctx, x - measure.actualBoundingBoxLeft, x + measure.actualBoundingBoxRight, y - measure.actualBoundingBoxAscent, y + measure.actualBoundingBoxDescent);\n }\n recordFullPageBBox(idx) {\n this.#pendingBBox[0] = Math.max(0, this.#clipBox[0]);\n this.#pendingBBox[1] = Math.max(0, this.#clipBox[1]);\n this.#pendingBBox[2] = Math.min(this.#canvasWidth, this.#clipBox[2]);\n this.#pendingBBox[3] = Math.min(this.#canvasHeight, this.#clipBox[3]);\n return this;\n }\n getSimpleIndex(dependencyName) {\n return this.#simple[dependencyName];\n }\n recordDependencies(idx, dependencyNames) {\n const pendingDependencies = this.#pendingDependencies;\n const simple = this.#simple;\n const incremental = this.#incremental;\n for (const name of dependencyNames) {\n if (name in this.#simple) {\n pendingDependencies.add(simple[name]);\n } else if (name in incremental) {\n incremental[name].forEach(pendingDependencies.add, pendingDependencies);\n }\n }\n return this;\n }\n recordNamedDependency(idx, name) {\n if (this.#namedDependencies.has(name)) {\n this.#pendingDependencies.add(this.#namedDependencies.get(name));\n }\n return this;\n }\n recordOperation(idx, preserve = false) {\n this.recordDependencies(idx, [FORCED_DEPENDENCY_LABEL]);\n if (this.#debugMetadata) {\n const metadata = ensureDebugMetadata(this.#debugMetadata, idx);\n const {\n dependencies\n } = metadata;\n this.#pendingDependencies.forEach(dependencies.add, dependencies);\n this.#savesStack.forEach(dependencies.add, dependencies);\n this.#markedContentStack.forEach(dependencies.add, dependencies);\n dependencies.delete(idx);\n metadata.isRenderingOperation = true;\n }\n if (this.#pendingBBoxIdx === idx) {\n const minX = floor(this.#pendingBBox[0] * 256 / this.#canvasWidth);\n const minY = floor(this.#pendingBBox[1] * 256 / this.#canvasHeight);\n const maxX = ceil(this.#pendingBBox[2] * 256 / this.#canvasWidth);\n const maxY = ceil(this.#pendingBBox[3] * 256 / this.#canvasHeight);\n expandBBox(this.#bboxesCoords, idx, minX, minY, maxX, maxY);\n for (const depIdx of this.#pendingDependencies) {\n if (depIdx !== idx) {\n expandBBox(this.#bboxesCoords, depIdx, minX, minY, maxX, maxY);\n }\n }\n for (const saveIdx of this.#savesStack) {\n if (saveIdx !== idx) {\n expandBBox(this.#bboxesCoords, saveIdx, minX, minY, maxX, maxY);\n }\n }\n for (const saveIdx of this.#markedContentStack) {\n if (saveIdx !== idx) {\n expandBBox(this.#bboxesCoords, saveIdx, minX, minY, maxX, maxY);\n }\n }\n if (!preserve) {\n this.#pendingDependencies.clear();\n this.#pendingBBoxIdx = -1;\n }\n }\n return this;\n }\n recordShowTextOperation(idx, preserve = false) {\n const deps = Array.from(this.#pendingDependencies);\n this.recordOperation(idx, preserve);\n this.recordIncrementalData(\"sameLineText\", idx);\n for (const dep of deps) {\n this.recordIncrementalData(\"sameLineText\", dep);\n }\n return this;\n }\n bboxToClipBoxDropOperation(idx, preserve = false) {\n if (this.#pendingBBoxIdx === idx) {\n this.#pendingBBoxIdx = -1;\n this.#clipBox[0] = Math.max(this.#clipBox[0], this.#pendingBBox[0]);\n this.#clipBox[1] = Math.max(this.#clipBox[1], this.#pendingBBox[1]);\n this.#clipBox[2] = Math.min(this.#clipBox[2], this.#pendingBBox[2]);\n this.#clipBox[3] = Math.min(this.#clipBox[3], this.#pendingBBox[3]);\n if (!preserve) {\n this.#pendingDependencies.clear();\n }\n }\n return this;\n }\n _takePendingDependencies() {\n const pendingDependencies = this.#pendingDependencies;\n this.#pendingDependencies = new Set();\n return pendingDependencies;\n }\n _extractOperation(idx) {\n const operation = this.#operations.get(idx);\n this.#operations.delete(idx);\n return operation;\n }\n _pushPendingDependencies(dependencies) {\n for (const dep of dependencies) {\n this.#pendingDependencies.add(dep);\n }\n }\n take() {\n this.#fontBBoxTrustworthy.clear();\n return new BBoxReader(this.#bboxes, this.#bboxesCoords);\n }\n takeDebugMetadata() {\n return this.#debugMetadata;\n }\n}\nclass CanvasNestedDependencyTracker {\n #dependencyTracker;\n #opIdx;\n #ignoreBBoxes;\n #nestingLevel = 0;\n #savesLevel = 0;\n constructor(dependencyTracker, opIdx, ignoreBBoxes) {\n if (dependencyTracker instanceof CanvasNestedDependencyTracker && dependencyTracker.#ignoreBBoxes === !!ignoreBBoxes) {\n return dependencyTracker;\n }\n this.#dependencyTracker = dependencyTracker;\n this.#opIdx = opIdx;\n this.#ignoreBBoxes = !!ignoreBBoxes;\n }\n growOperationsCount() {\n throw new Error(\"Unreachable\");\n }\n save(opIdx) {\n this.#savesLevel++;\n this.#dependencyTracker.save(this.#opIdx);\n return this;\n }\n restore(opIdx) {\n if (this.#savesLevel > 0) {\n this.#dependencyTracker.restore(this.#opIdx);\n this.#savesLevel--;\n }\n return this;\n }\n recordOpenMarker(idx) {\n this.#nestingLevel++;\n return this;\n }\n getOpenMarker() {\n return this.#nestingLevel > 0 ? this.#opIdx : this.#dependencyTracker.getOpenMarker();\n }\n recordCloseMarker(idx) {\n this.#nestingLevel--;\n return this;\n }\n beginMarkedContent(opIdx) {\n return this;\n }\n endMarkedContent(opIdx) {\n return this;\n }\n pushBaseTransform(ctx) {\n this.#dependencyTracker.pushBaseTransform(ctx);\n return this;\n }\n popBaseTransform() {\n this.#dependencyTracker.popBaseTransform();\n return this;\n }\n recordSimpleData(name, idx) {\n this.#dependencyTracker.recordSimpleData(name, this.#opIdx);\n return this;\n }\n recordIncrementalData(name, idx) {\n this.#dependencyTracker.recordIncrementalData(name, this.#opIdx);\n return this;\n }\n resetIncrementalData(name, idx) {\n this.#dependencyTracker.resetIncrementalData(name, this.#opIdx);\n return this;\n }\n recordNamedData(name, idx) {\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n this.#dependencyTracker.recordSimpleDataFromNamed(name, depName, this.#opIdx);\n return this;\n }\n recordFutureForcedDependency(name, idx) {\n this.#dependencyTracker.recordFutureForcedDependency(name, this.#opIdx);\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n this.#dependencyTracker.inheritSimpleDataAsFutureForcedDependencies(names);\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n this.#dependencyTracker.inheritPendingDependenciesAsFutureForcedDependencies();\n return this;\n }\n resetBBox(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.resetBBox(this.#opIdx);\n }\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordClipBox(this.#opIdx, ctx, minX, maxX, minY, maxY);\n }\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordBBox(this.#opIdx, ctx, minX, maxX, minY, maxY);\n }\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale, x, y, getMeasure) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordCharacterBBox(this.#opIdx, ctx, font, scale, x, y, getMeasure);\n }\n return this;\n }\n recordFullPageBBox(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.recordFullPageBBox(this.#opIdx);\n }\n return this;\n }\n getSimpleIndex(dependencyName) {\n return this.#dependencyTracker.getSimpleIndex(dependencyName);\n }\n recordDependencies(idx, dependencyNames) {\n this.#dependencyTracker.recordDependencies(this.#opIdx, dependencyNames);\n return this;\n }\n recordNamedDependency(idx, name) {\n this.#dependencyTracker.recordNamedDependency(this.#opIdx, name);\n return this;\n }\n recordOperation(idx) {\n this.#dependencyTracker.recordOperation(this.#opIdx, true);\n return this;\n }\n recordShowTextOperation(idx) {\n this.#dependencyTracker.recordShowTextOperation(this.#opIdx, true);\n return this;\n }\n bboxToClipBoxDropOperation(idx) {\n if (!this.#ignoreBBoxes) {\n this.#dependencyTracker.bboxToClipBoxDropOperation(this.#opIdx, true);\n }\n return this;\n }\n take() {\n throw new Error(\"Unreachable\");\n }\n takeDebugMetadata() {\n throw new Error(\"Unreachable\");\n }\n}\nconst Dependencies = {\n stroke: [\"path\", \"transform\", \"filter\", \"strokeColor\", \"strokeAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"dash\"],\n fill: [\"path\", \"transform\", \"filter\", \"fillColor\", \"fillAlpha\", \"globalCompositeOperation\", \"SMask\"],\n imageXObject: [\"transform\", \"SMask\", \"filter\", \"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\"],\n rawFillPath: [\"filter\", \"fillColor\", \"fillAlpha\"],\n showText: [\"transform\", \"leading\", \"charSpacing\", \"wordSpacing\", \"hScale\", \"textRise\", \"moveText\", \"textMatrix\", \"font\", \"fontObj\", \"filter\", \"fillColor\", \"textRenderingMode\", \"SMask\", \"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\", \"sameLineText\"],\n transform: [\"transform\"],\n transformAndFill: [\"transform\", \"fillColor\"]\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 isModifyingCurrentTransform() {\n return false;\n }\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n isOriginBased() {\n return this._p0[0] === 0 && this._p0[1] === 0 && (!this.isRadial() || this._p1[0] === 0 && this._p1[1] === 0);\n }\n isRadial() {\n return this._type === \"radial\";\n }\n _createGradient(ctx, transform = null) {\n let grad;\n let firstPoint = this._p0;\n let secondPoint = this._p1;\n if (transform) {\n firstPoint = firstPoint.slice();\n secondPoint = secondPoint.slice();\n Util.applyTransform(firstPoint, transform);\n Util.applyTransform(secondPoint, transform);\n }\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(firstPoint[0], firstPoint[1], secondPoint[0], secondPoint[1]);\n } else if (this._type === \"radial\") {\n let r0 = this._r0;\n let r1 = this._r1;\n if (transform) {\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(transform, scale);\n r0 *= scale[0];\n r1 *= scale[0];\n }\n grad = ctx.createRadialGradient(firstPoint[0], firstPoint[1], r0, secondPoint[0], secondPoint[1], 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 if (this.isOriginBased()) {\n let transf = Util.transform(inverse, owner.baseTransform);\n if (this.matrix) {\n transf = Util.transform(transf, this.matrix);\n }\n const precision = 1e-3;\n const n1 = Math.hypot(transf[0], transf[1]);\n const n2 = Math.hypot(transf[2], transf[3]);\n const ps = (transf[0] * transf[2] + transf[1] * transf[3]) / (n1 * n2);\n if (Math.abs(ps) < precision) {\n if (this.isRadial()) {\n if (Math.abs(n1 - n2) < precision) {\n return this._createGradient(ctx, transf);\n }\n } else {\n return this._createGradient(ctx, transf);\n }\n }\n }\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 MeshFigureType.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 MeshFigureType.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[6];\n this._background = IR[7];\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 isModifyingCurrentTransform() {\n return true;\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n const scale = new Float32Array(2);\n if (pathType === PathType.SHADING) {\n Util.singularValueDecompose2dScale(getCurrentTransform(ctx), scale);\n } else if (this.matrix) {\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n scale[0] *= matrixScaleX;\n scale[1] *= matrixScaleY;\n } else {\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\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, ctx, canvasGraphicsFactory, baseTransform) {\n this.color = IR[1];\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.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner, opIdx) {\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 scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(this.baseTransform, scale);\n const combinedScaleX = matrixScaleX * scale[0];\n const combinedScaleY = matrixScaleY * scale[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, opIdx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n graphics.transform(0, dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n graphics.dependencyTracker?.save();\n this.clipBbox(graphics, x0, y0, x1, y1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n graphics.dependencyTracker?.restore();\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 Util.axialAlignedBoundingBox([x0, y0, x1, y1], getCurrentTransform(graphics.ctx), graphics.current.minMax);\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 {\n fillStyle,\n strokeStyle\n } = this.ctx;\n context.fillStyle = current.fillColor = fillStyle;\n context.strokeStyle = current.strokeColor = strokeStyle;\n break;\n case PaintType.UNCOLORED:\n context.fillStyle = context.strokeStyle = color;\n current.fillColor = current.strokeColor = color;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern(ctx, owner, inverse, pathType, opIdx) {\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, opIdx);\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\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst FULL_CHUNK_HEIGHT = 16;\nconst SCALE_MATRIX = new DOMMatrix();\nconst XY = new Float32Array(2);\nconst MIN_MAX_INIT = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\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 () {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function () {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function (x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function (x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function (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 (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 () {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function (angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function (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}\nclass CanvasExtraState {\n alphaIsShape = false;\n fontSize = 0;\n fontSizeScale = 1;\n textMatrix = null;\n textMatrixScale = 1;\n fontMatrix = FONT_IDENTITY_MATRIX;\n leading = 0;\n x = 0;\n y = 0;\n lineX = 0;\n lineY = 0;\n charSpacing = 0;\n wordSpacing = 0;\n textHScale = 1;\n textRenderingMode = TextRenderingMode.FILL;\n textRise = 0;\n fillColor = \"#000000\";\n strokeColor = \"#000000\";\n patternFill = false;\n patternStroke = false;\n fillAlpha = 1;\n strokeAlpha = 1;\n lineWidth = 1;\n activeSMask = null;\n transferMaps = \"none\";\n constructor(width, height, preInit) {\n preInit?.(this);\n this.clipBox = new Float32Array([0, 0, width, height]);\n this.minMax = MIN_MAX_INIT.slice();\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n clone.minMax = this.minMax.slice();\n return clone;\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = this.minMax.slice();\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const xStrokePad = XY[0] * this.lineWidth / 2;\n const yStrokePad = XY[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.minMax[0] === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox.set(box, 0);\n this.minMax.set(MIN_MAX_INIT, 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 const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const actualScale = Math.fround(OutputScale.pixelRatio * PixelsPerInch.PDF_TO_CSS_UNITS);\n return XY[0] <= actualScale && XY[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, dependencyTracker) {\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.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 this.dependencyTracker = dependencyTracker ?? null;\n }\n getObject(opIdx, data, fallback = null) {\n if (typeof data === \"string\") {\n this.dependencyTracker?.recordNamedDependency(opIdx, data);\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, operationsFilter) {\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, fnArgs;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n if (!operationsFilter || operationsFilter(i)) {\n fnId = fnArray[i];\n fnArgs = argsArray[i] ?? null;\n if (fnId !== OPS.dependency) {\n if (fnArgs === null) {\n this[fnId](i);\n } else {\n this[fnId](i, ...fnArgs);\n }\n } else {\n for (const depObjId of fnArgs) {\n this.dependencyTracker?.recordNamedData(depObjId, 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 }\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(opIdx, 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 this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\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 minMax = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], maskToCanvas, minMax);\n const [minX, minY, maxX, maxY] = minMax;\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, opIdx) : 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 this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(opIdx, width) {\n this.dependencyTracker?.recordSimpleData(\"lineWidth\", opIdx);\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(opIdx, style) {\n this.dependencyTracker?.recordSimpleData(\"lineCap\", opIdx);\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(opIdx, style) {\n this.dependencyTracker?.recordSimpleData(\"lineJoin\", opIdx);\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(opIdx, limit) {\n this.dependencyTracker?.recordSimpleData(\"miterLimit\", opIdx);\n this.ctx.miterLimit = limit;\n }\n setDash(opIdx, dashArray, dashPhase) {\n this.dependencyTracker?.recordSimpleData(\"dash\", opIdx);\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(opIdx, intent) {}\n setFlatness(opIdx, flatness) {}\n setGState(opIdx, states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(opIdx, value);\n break;\n case \"LC\":\n this.setLineCap(opIdx, value);\n break;\n case \"LJ\":\n this.setLineJoin(opIdx, value);\n break;\n case \"ML\":\n this.setMiterLimit(opIdx, value);\n break;\n case \"D\":\n this.setDash(opIdx, value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(opIdx, value);\n break;\n case \"FL\":\n this.setFlatness(opIdx, value);\n break;\n case \"Font\":\n this.setFont(opIdx, value[0], value[1]);\n break;\n case \"CA\":\n this.dependencyTracker?.recordSimpleData(\"strokeAlpha\", opIdx);\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.dependencyTracker?.recordSimpleData(\"fillAlpha\", opIdx);\n this.ctx.globalAlpha = this.current.fillAlpha = value;\n break;\n case \"BM\":\n this.dependencyTracker?.recordSimpleData(\"globalCompositeOperation\", opIdx);\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.dependencyTracker?.recordSimpleData(\"SMask\", opIdx);\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.dependencyTracker?.recordSimpleData(\"filter\", opIdx);\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(opIdx) {\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 const ctx = this.ctx = scratchCanvas.context;\n ctx.setTransform(this.suspendedCtx.getTransform());\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState(opIdx, [[\"BM\", \"source-over\"]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n }\n genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n let maskCanvas = maskCtx.canvas;\n let maskX = layerOffsetX - maskOffsetX;\n let maskY = layerOffsetY - maskOffsetY;\n if (backdrop) {\n if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {\n const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n const ctx = canvas.context;\n ctx.drawImage(maskCanvas, -maskX, -maskY);\n ctx.globalCompositeOperation = \"destination-atop\";\n ctx.fillStyle = backdrop;\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 = backdrop;\n maskCtx.fillRect(maskX, maskY, width, height);\n maskCtx.restore();\n }\n }\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n if (subtype === \"Alpha\" && transferMap) {\n layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n } else if (subtype === \"Luminosity\") {\n layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n }\n const clip = new Path2D();\n clip.rect(layerOffsetX, layerOffsetY, width, height);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(maskCanvas, maskX, maskY, width, height, layerOffsetX, layerOffsetY, width, height);\n layerCtx.restore();\n }\n save(opIdx) {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n }\n this.ctx.save();\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n this.dependencyTracker?.save(opIdx);\n }\n restore(opIdx) {\n this.dependencyTracker?.restore(opIdx);\n if (this.stateStack.length === 0) {\n if (this.inSMaskMode) {\n this.endSMaskMode();\n }\n return;\n }\n this.current = this.stateStack.pop();\n this.ctx.restore();\n if (this.inSMaskMode) {\n copyCtxState(this.suspendedCtx, this.ctx);\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n transform(opIdx, a, b, c, d, e, f) {\n this.dependencyTracker?.recordIncrementalData(\"transform\", opIdx);\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(opIdx, op, data, minMax) {\n let [path] = data;\n if (!minMax) {\n path ||= data[0] = new Path2D();\n this[op](opIdx, path);\n return;\n }\n if (this.dependencyTracker !== null) {\n const outerExtraSize = op === OPS.stroke ? this.current.lineWidth / 2 : 0;\n this.dependencyTracker.resetBBox(opIdx).recordBBox(opIdx, this.ctx, minMax[0] - outerExtraSize, minMax[2] + outerExtraSize, minMax[1] - outerExtraSize, minMax[3] + outerExtraSize).recordDependencies(opIdx, [\"transform\"]);\n }\n if (!(path instanceof Path2D)) {\n path = data[0] = makePathFromDrawOPS(path);\n }\n Util.axialAlignedBoundingBox(minMax, getCurrentTransform(this.ctx), this.current.minMax);\n this[op](opIdx, path);\n this._pathStartIdx = opIdx;\n }\n closePath(opIdx) {\n this.ctx.closePath();\n }\n stroke(opIdx, path, 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 const baseTransform = strokeColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE, opIdx);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n this.rescaleAndStroke(path, false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(path, true);\n }\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.stroke);\n if (consumePath) {\n this.consumePath(opIdx, path, this.current.getClippedPathBoundingBox(PathType.STROKE, getCurrentTransform(this.ctx)));\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke(opIdx, path) {\n this.stroke(opIdx, path);\n }\n fill(opIdx, path, 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 const baseTransform = fillColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n this.dependencyTracker?.save(opIdx);\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(path, \"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill(path);\n }\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.fill);\n if (needRestore) {\n ctx.restore();\n this.dependencyTracker?.restore(opIdx);\n }\n if (consumePath) {\n this.consumePath(opIdx, path, intersect);\n }\n }\n eoFill(opIdx, path) {\n this.pendingEOFill = true;\n this.fill(opIdx, path);\n }\n fillStroke(opIdx, path) {\n this.fill(opIdx, path, false);\n this.stroke(opIdx, path, false);\n this.consumePath(opIdx, path);\n }\n eoFillStroke(opIdx, path) {\n this.pendingEOFill = true;\n this.fillStroke(opIdx, path);\n }\n closeFillStroke(opIdx, path) {\n this.fillStroke(opIdx, path);\n }\n closeEOFillStroke(opIdx, path) {\n this.pendingEOFill = true;\n this.fillStroke(opIdx, path);\n }\n endPath(opIdx, path) {\n this.consumePath(opIdx, path);\n }\n rawFillPath(opIdx, path) {\n this.ctx.fill(path);\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.rawFillPath).recordOperation(opIdx);\n }\n clip(opIdx) {\n this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip(opIdx) {\n this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n this.pendingClip = EO_CLIP;\n }\n beginText(opIdx) {\n this.current.textMatrix = null;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n this.dependencyTracker?.recordOpenMarker(opIdx).resetIncrementalData(\"sameLineText\").resetIncrementalData(\"moveText\", opIdx);\n }\n endText(opIdx) {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (this.dependencyTracker) {\n const {\n dependencyTracker\n } = this;\n if (paths !== undefined) {\n dependencyTracker.recordFutureForcedDependency(\"textClip\", dependencyTracker.getOpenMarker()).recordFutureForcedDependency(\"textClip\", opIdx);\n }\n dependencyTracker.recordCloseMarker(opIdx);\n }\n if (paths !== undefined) {\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 if (!path) {\n continue;\n }\n newPath.addPath(path, new DOMMatrix(transform).preMultiplySelf(invTransf).translate(x, y).scale(fontSize, -fontSize));\n }\n ctx.clip(newPath);\n }\n delete this.pendingTextPaths;\n }\n setCharSpacing(opIdx, spacing) {\n this.dependencyTracker?.recordSimpleData(\"charSpacing\", opIdx);\n this.current.charSpacing = spacing;\n }\n setWordSpacing(opIdx, spacing) {\n this.dependencyTracker?.recordSimpleData(\"wordSpacing\", opIdx);\n this.current.wordSpacing = spacing;\n }\n setHScale(opIdx, scale) {\n this.dependencyTracker?.recordSimpleData(\"hScale\", opIdx);\n this.current.textHScale = scale / 100;\n }\n setLeading(opIdx, leading) {\n this.dependencyTracker?.recordSimpleData(\"leading\", opIdx);\n this.current.leading = -leading;\n }\n setFont(opIdx, fontRefName, size) {\n this.dependencyTracker?.recordSimpleData(\"font\", opIdx).recordSimpleDataFromNamed(\"fontObj\", fontRefName, opIdx);\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(opIdx, mode) {\n this.dependencyTracker?.recordSimpleData(\"textRenderingMode\", opIdx);\n this.current.textRenderingMode = mode;\n }\n setTextRise(opIdx, rise) {\n this.dependencyTracker?.recordSimpleData(\"textRise\", opIdx);\n this.current.textRise = rise;\n }\n moveText(opIdx, x, y) {\n this.dependencyTracker?.resetIncrementalData(\"sameLineText\").recordIncrementalData(\"moveText\", opIdx);\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(opIdx, x, y) {\n this.setLeading(opIdx, -y);\n this.moveText(opIdx, x, y);\n }\n setTextMatrix(opIdx, matrix) {\n this.dependencyTracker?.resetIncrementalData(\"sameLineText\").recordSimpleData(\"textMatrix\", opIdx);\n const {\n current\n } = this;\n current.textMatrix = matrix;\n current.textMatrixScale = Math.hypot(matrix[0], matrix[1]);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n }\n nextLine(opIdx) {\n this.moveText(opIdx, 0, this.current.leading);\n this.dependencyTracker?.recordIncrementalData(\"moveText\", this.dependencyTracker.getSimpleIndex(\"leading\") ?? opIdx);\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(opIdx, 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) && !font.missingFile) {\n path = font.getPathGenerator(this.commonObjs, character);\n }\n if (path && (font.disableFontFace || patternFill || patternStroke)) {\n ctx.save();\n ctx.translate(x, y);\n ctx.scale(fontSize, -fontSize);\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font);\n let currentTransform;\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternFillTransform) {\n currentTransform = ctx.getTransform();\n ctx.setTransform(...patternFillTransform);\n const scaledPath = this.#getScaledPath(path, currentTransform, patternFillTransform);\n ctx.fill(scaledPath);\n } else {\n ctx.fill(path);\n }\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternStrokeTransform) {\n currentTransform ||= ctx.getTransform();\n ctx.setTransform(...patternStrokeTransform);\n const {\n a,\n b,\n c,\n d\n } = currentTransform;\n const invPatternTransform = Util.inverseTransform(patternStrokeTransform);\n const transf = Util.transform([a, b, c, d, 0, 0], invPatternTransform);\n Util.singularValueDecompose2dScale(transf, XY);\n ctx.lineWidth *= Math.max(XY[0], XY[1]) / fontSize;\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 this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () => ctx.measureText(character));\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (this.dependencyTracker) {\n this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () => ctx.measureText(character)).recordDependencies(opIdx, Dependencies.stroke);\n }\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 this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y);\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(opIdx, glyphs) {\n if (this.dependencyTracker) {\n this.dependencyTracker.recordDependencies(opIdx, Dependencies.showText).resetBBox(opIdx);\n if (this.current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG) {\n this.dependencyTracker.recordFutureForcedDependency(\"textClip\", opIdx).inheritPendingDependenciesAsFutureForcedDependencies();\n }\n }\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n this.showType3Text(opIdx, glyphs);\n this.dependencyTracker?.recordShowTextOperation(opIdx);\n return undefined;\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n this.dependencyTracker?.recordOperation(opIdx);\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 if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\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 const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const needsFill = fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE;\n const needsStroke = fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE;\n if (needsFill && current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx);\n patternFillTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n if (needsStroke && current.patternStroke) {\n ctx.save();\n const pattern = current.strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE, opIdx);\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 if (needsStroke) {\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 const joinedChars = chars.join(\"\");\n ctx.fillText(joinedChars, 0, 0);\n if (this.dependencyTracker !== null) {\n const measure = ctx.measureText(joinedChars);\n this.dependencyTracker.recordBBox(opIdx, this.ctx, -measure.actualBoundingBoxLeft, measure.actualBoundingBoxRight, -measure.actualBoundingBoxAscent, measure.actualBoundingBoxDescent).recordShowTextOperation(opIdx);\n }\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 let measure;\n if (font.remeasure && width > 0) {\n measure = ctx.measureText(character);\n const measuredWidth = measure.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 this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, measure ? {\n bbox: null\n } : font, fontSize / fontSizeScale, scaledX, scaledY, () => measure ?? ctx.measureText(character));\n } else {\n this.paintChar(opIdx, 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(opIdx, 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 this.dependencyTracker?.recordShowTextOperation(opIdx);\n return undefined;\n }\n showType3Text(opIdx, 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 if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n ctx.scale(textHScale, fontDirection);\n const dependencyTracker = this.dependencyTracker;\n this.dependencyTracker = dependencyTracker ? new CanvasNestedDependencyTracker(dependencyTracker, opIdx) : null;\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 } else if (this.contentVisible) {\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const p = [glyph.width, 0];\n Util.applyTransform(p, fontMatrix);\n width = p[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n if (dependencyTracker) {\n this.dependencyTracker = dependencyTracker;\n }\n }\n setCharWidth(opIdx, xWidth, yWidth) {}\n setCharWidthAndBounds(opIdx, xWidth, yWidth, llx, lly, urx, ury) {\n const clip = new Path2D();\n clip.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip(clip);\n this.dependencyTracker?.recordBBox(opIdx, this.ctx, llx, urx, lly, ury).recordClipBox(opIdx, this.ctx, llx, urx, lly, ury);\n this.endPath(opIdx);\n }\n getColorN_Pattern(opIdx, IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: (ctx, renderingOpIdx) => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n }, undefined, undefined, this.dependencyTracker ? new CanvasNestedDependencyTracker(this.dependencyTracker, renderingOpIdx, true) : null)\n };\n pattern = new TilingPattern(IR, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(opIdx, IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN(opIdx, ...args) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.current.strokeColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternStroke = true;\n }\n setFillColorN(opIdx, ...args) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.current.fillColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(opIdx, color) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.ctx.strokeStyle = this.current.strokeColor = color;\n this.current.patternStroke = false;\n }\n setStrokeTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n this.current.patternStroke = false;\n }\n setFillRGBColor(opIdx, color) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = color;\n this.current.patternFill = false;\n }\n setFillTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n }\n _getPattern(opIdx, 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(opIdx, objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(opIdx, objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save(opIdx);\n const pattern = this._getPattern(opIdx, objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING, opIdx);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const minMax = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], inv, minMax);\n const [x0, y0, x1, y1] = minMax;\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.dependencyTracker?.resetBBox(opIdx).recordFullPageBBox(opIdx).recordDependencies(opIdx, Dependencies.transform).recordDependencies(opIdx, Dependencies.fill).recordOperation(opIdx);\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore(opIdx);\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(opIdx, matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save(opIdx);\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(opIdx, ...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n Util.axialAlignedBoundingBox(bbox, this.baseTransform, this.current.minMax);\n const [x0, y0, x1, y1] = bbox;\n const clip = new Path2D();\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n this.ctx.clip(clip);\n this.dependencyTracker?.recordClipBox(opIdx, this.ctx, x0, x1, y0, y1);\n this.endPath(opIdx);\n }\n }\n paintFormXObjectEnd(opIdx) {\n if (!this.contentVisible) {\n return;\n }\n this.restore(opIdx);\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(opIdx, group) {\n if (!this.contentVisible) {\n return;\n }\n this.save(opIdx);\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 = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx), bounds);\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 let clip = new Path2D();\n const [x0, y0, x1, y1] = group.bbox;\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n if (group.matrix) {\n const path = new Path2D();\n path.addPath(clip, new DOMMatrix(group.matrix));\n clip = path;\n }\n groupCtx.clip(clip);\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 }\n if (!group.smask || this.dependencyTracker) {\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.dependencyTracker?.inheritSimpleDataAsFutureForcedDependencies([\"fillAlpha\", \"strokeAlpha\", \"globalCompositeOperation\"]).pushBaseTransform(currentCtx);\n this.setGState(opIdx, [[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(opIdx, 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 this.dependencyTracker?.popBaseTransform();\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore(opIdx);\n if (this.dependencyTracker) {\n this.ctx.restore();\n }\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore(opIdx);\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx, dirtyBox);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(opIdx, id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save(opIdx);\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 Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx), XY);\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(XY[0], 0, 0, -XY[1], 0, height * XY[1]);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.endPath(opIdx);\n const clip = new Path2D();\n clip.rect(rect[0], rect[1], width, height);\n this.ctx.clip(clip);\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(opIdx, ...transform);\n this.transform(opIdx, ...matrix);\n }\n endAnnotation(opIdx) {\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(opIdx, img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(opIdx, img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const mask = this._createMaskCanvas(opIdx, 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 this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, this.ctx, mask.offsetX, mask.offsetX + maskCanvas.width, mask.offsetY, mask.offsetY + maskCanvas.height).recordOperation(opIdx);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(opIdx, img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(opIdx, 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(opIdx, img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n this.dependencyTracker?.resetBBox(opIdx);\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 ctx.drawImage(mask.canvas, trans[4], trans[5]);\n this.dependencyTracker?.recordBBox(opIdx, this.ctx, trans[4], trans[4] + mask.canvas.width, trans[5], trans[5] + mask.canvas.height);\n }\n ctx.restore();\n this.compose();\n this.dependencyTracker?.recordOperation(opIdx);\n }\n paintImageMaskXObjectGroup(opIdx, 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 this.dependencyTracker?.resetBBox(opIdx).recordDependencies(opIdx, Dependencies.transformAndFill);\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(opIdx, data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL, opIdx) : 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 this.dependencyTracker?.recordBBox(opIdx, ctx, 0, width, 0, height);\n ctx.restore();\n }\n this.compose();\n this.dependencyTracker?.recordOperation(opIdx);\n }\n paintImageXObject(opIdx, objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(opIdx, objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(opIdx, imgData);\n }\n paintImageXObjectRepeat(opIdx, objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(opIdx, 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(opIdx, 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(opIdx, 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(opIdx);\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\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 this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, ctx, 0, width, -height, 0).recordDependencies(opIdx, Dependencies.imageXObject).recordOperation(opIdx);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore(opIdx);\n }\n paintInlineImageXObjectGroup(opIdx, 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 this.dependencyTracker?.resetBBox(opIdx);\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 this.dependencyTracker?.recordBBox(opIdx, ctx, 0, 1, -1, 0);\n ctx.restore();\n }\n this.dependencyTracker?.recordOperation(opIdx);\n this.compose();\n }\n paintSolidColorImageMask(opIdx) {\n if (!this.contentVisible) {\n return;\n }\n this.dependencyTracker?.resetBBox(opIdx).recordBBox(opIdx, this.ctx, 0, 1, 0, 1).recordDependencies(opIdx, Dependencies.fill).recordOperation(opIdx);\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(opIdx, tag) {}\n markPointProps(opIdx, tag, properties) {}\n beginMarkedContent(opIdx, tag) {\n this.dependencyTracker?.beginMarkedContent(opIdx);\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(opIdx, tag, properties) {\n this.dependencyTracker?.beginMarkedContent(opIdx);\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(opIdx) {\n this.dependencyTracker?.endMarkedContent(opIdx);\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat(opIdx) {}\n endCompat(opIdx) {}\n consumePath(opIdx, path, 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(path, \"evenodd\");\n } else {\n ctx.clip(path);\n }\n }\n this.pendingClip = null;\n this.dependencyTracker?.bboxToClipBoxDropOperation(opIdx).recordFutureForcedDependency(\"clipPath\", opIdx);\n } else {\n this.dependencyTracker?.recordOperation(opIdx);\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\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(path, saveRestore) {\n const {\n ctx,\n current: {\n lineWidth\n }\n } = this;\n const [scaleX, scaleY] = this.getScaleForStroking();\n if (scaleX === scaleY) {\n ctx.lineWidth = (lineWidth || 1) * scaleX;\n ctx.stroke(path);\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n SCALE_MATRIX.a = 1 / scaleX;\n SCALE_MATRIX.d = 1 / scaleY;\n const newPath = new Path2D();\n newPath.addPath(path, SCALE_MATRIX);\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.lineWidth = lineWidth || 1;\n ctx.stroke(newPath);\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\nclass Metadata {\n #map;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#map = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#map.get(name) ?? null;\n }\n [Symbol.iterator]() {\n return this.#map.entries();\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 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 [Symbol.iterator]() {\n return this.#groups.entries();\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 return URL.parse(url)?.origin ?? 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 createResponseError(status, url) {\n return new ResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status, status === 404 || status === 0 && url.startsWith(\"file:\"));\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 createResponseError(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 createResponseError(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 = createResponseError(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 ??= createResponseError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\n;// ./src/display/node_stream.js\n\n\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 = createResponseError(0, this._url.href);\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/pdf_objects.js\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}\n\n;// ./src/display/text_layer.js\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\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 * OutputScale.pixelRatio;\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 container.style.setProperty(\"--min-font-size\", TextLayer.#minFontSize);\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 * OutputScale.pixelRatio;\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) {\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, style, 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 divStyle = textDiv.style;\n divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n divStyle.setProperty(\"--font-height\", `${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 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 style.setProperty(\"--scale-x\", canvasWidth * this.#scale / width);\n }\n }\n if (properties.angle !== 0) {\n style.setProperty(\"--rotate\", `${properties.angle}deg`);\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, style, 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 const ascent = metrics.fontBoundingBoxAscent;\n const descent = Math.abs(metrics.fontBoundingBoxDescent);\n ctx.canvas.width = ctx.canvas.height = 0;\n let ratio = 0.8;\n if (ascent) {\n ratio = ascent / (ascent + descent);\n } else {\n if (util_FeatureTest.platform.isFirefox) {\n warn(\"Enable the `dom.textMetrics.fontBoundingBox.enabled` preference \" + \"in `about:config` to improve TextLayer rendering.\");\n }\n if (style.ascent) {\n ratio = style.ascent;\n } else if (style.descent) {\n ratio = 1 + style.descent;\n }\n }\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\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\n\n\n\n\n\nconst RENDERING_CANCELLED_TIMEOUT = 100;\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 : 2 ** 16;\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 = getFactoryUrlProp(src.cMapUrl);\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || (isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory);\n const iccUrl = getFactoryUrlProp(src.iccUrl);\n const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);\n const StandardFontDataFactory = src.StandardFontDataFactory || (isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory);\n const wasmUrl = getFactoryUrlProp(src.wasmUrl);\n const WasmFactory = src.WasmFactory || (isNodeJS ? NodeWasmFactory : DOMWasmFactory);\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 || (isNodeJS ? NodeCanvasFactory : DOMCanvasFactory);\n const FilterFactory = src.FilterFactory || (isNodeJS ? NodeFilterFactory : DOMFilterFactory);\n const enableHWA = src.enableHWA === true;\n const useWasm = src.useWasm !== false;\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 && WasmFactory === DOMWasmFactory && cMapUrl && standardFontDataUrl && wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI) && isValidFetchUrl(wasmUrl, 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 wasmFactory: useWorkerFetch ? null : new WasmFactory({\n baseUrl: wasmUrl\n })\n };\n if (!worker) {\n worker = PDFWorker.create({\n verbosity,\n port: GlobalWorkerOptions.workerPort\n });\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"5.4.530\",\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 useWasm,\n useWorkerFetch,\n cMapUrl,\n iccUrl,\n standardFontDataUrl,\n wasmUrl\n }\n };\n const transportParams = {\n ownerDocument,\n pdfBug,\n styleElement,\n loadingParams: {\n disableAutoFetch,\n enableXfa\n }\n };\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(rangeTransport, {\n disableRange,\n disableStream\n });\n } else if (!data) {\n if (!url) {\n throw new Error(\"getDocument - no `url` parameter provided.\");\n }\n const NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : isNodeJS ? PDFNodeStream : PDFNetworkStream;\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, enableHWA);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n _capability = Promise.withResolvers();\n _transport = null;\n _worker = null;\n docId = `d${PDFDocumentLoadingTask.#docId++}`;\n destroyed = false;\n onPassword = null;\n onProgress = null;\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 async getData() {\n return this._transport.getData();\n }\n}\nclass PDFDataRangeTransport {\n #capability = Promise.withResolvers();\n #progressiveDoneListeners = [];\n #progressiveReadListeners = [];\n #progressListeners = [];\n #rangeListeners = [];\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 }\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.#capability.promise.then(() => {\n for (const listener of this.#progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this.#capability.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 getAnnotationsByType(types, pageIndexesToSkip) {\n return this._transport.getAnnotationsByType(types, pageIndexesToSkip);\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 extractPages(pageInfos) {\n return this._transport.extractPages(pageInfos);\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 #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._intentStates = new Map();\n this.destroyed = false;\n this.recordedBBoxes = null;\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 canvas = canvasContext.canvas,\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 recordOperations = false,\n operationsFilter = null\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 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 recordForDebugger = Boolean(this._pdfBug && globalThis.StepperManager?.enabled);\n const shouldRecordOperations = !this.recordedBBoxes && (recordOperations || recordForDebugger);\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (shouldRecordOperations) {\n const recordedBBoxes = internalRenderTask.gfx?.dependencyTracker.take();\n if (recordedBBoxes) {\n if (internalRenderTask.stepper) {\n internalRenderTask.stepper.setOperatorBBoxes(recordedBBoxes, internalRenderTask.gfx.dependencyTracker.takeDebugMetadata());\n }\n if (recordOperations) {\n this.recordedBBoxes = recordedBBoxes;\n }\n }\n }\n if (intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup();\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 canvas,\n canvasContext,\n dependencyTracker: shouldRecordOperations ? new CanvasDependencyTracker(canvas, intentState.operatorList.length, recordForDebugger) : null,\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 enableHWA: this._transport.enableHWA,\n operationsFilter\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 return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup();\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup() {\n if (!this.#pendingCleanup || this.destroyed) {\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 _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();\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();\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 PDFWorker {\n #capability = Promise.withResolvers();\n #messageHandler = null;\n #port = null;\n #webWorker = null;\n static #fakeWorkerId = 0;\n static #isWorkerDisabled = false;\n static #workerPorts = new WeakMap();\n static {\n if (isNodeJS) {\n this.#isWorkerDisabled = true;\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n this._isSameOrigin = (baseUrl, otherUrl) => {\n const base = URL.parse(baseUrl);\n if (!base?.origin || base.origin === \"null\") {\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 this.fromPort = params => {\n deprecated(\"`PDFWorker.fromPort` - please use `PDFWorker.create` instead.\");\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n return this.create(params);\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 if (port) {\n if (PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n PDFWorker.#workerPorts.set(port, this);\n this.#initializeFromPort(port);\n } else {\n this.#initialize();\n }\n }\n get promise() {\n return this.#capability.promise;\n }\n #resolve() {\n this.#capability.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\", () => {});\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, 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.#capability.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.#capability.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.#capability.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 create(params) {\n const cachedPort = this.#workerPorts.get(params?.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.create - 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(\n /*webpackIgnore: true*/\n /*@vite-ignore*/\n 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, enableHWA) {\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.wasmFactory = factory.wasmFactory;\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.enableHWA = enableHWA;\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 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 fontData = new FontInfo(exportedData);\n const inspectFont = this._params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new FontFaceObject(fontData, inspectFont, exportedData.extra, exportedData.charProcOperatorList);\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!font.fontExtraProperties && font.data) {\n font.clearData();\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 this.commonObjs.resolve(id, new FontPathInfo(exportedData));\n break;\n case \"Image\":\n this.commonObjs.resolve(id, exportedData);\n break;\n case \"Pattern\":\n const pattern = new PatternInfo(exportedData);\n this.commonObjs.resolve(id, pattern.getIR());\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 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(\"FetchBinaryData\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n const factory = this[data.type];\n if (!factory) {\n throw new Error(`${data.type} not initialized, see the \\`useWorkerFetch\\` parameter.`);\n }\n return factory.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 extractPages(pageInfos) {\n return this.messageHandler.sendWithPromise(\"ExtractPages\", {\n pageInfos\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 getAnnotationsByType(types, pageIndexesToSkip) {\n return this.messageHandler.sendWithPromise(\"GetAnnotationsByType\", {\n types,\n pageIndexesToSkip\n });\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 hasStructTree: results[2]\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}\nclass RenderTask {\n #internalRenderTask = null;\n onContinue = null;\n onError = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\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 enableHWA = false,\n operationsFilter = 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.canvas;\n this._canvasContext = params.canvas ? null : params.canvasContext;\n this._enableHWA = enableHWA;\n this._dependencyTracker = params.dependencyTracker;\n this._operationsFilter = operationsFilter;\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 viewport,\n transform,\n background,\n dependencyTracker\n } = this.params;\n const canvasContext = this._canvasContext || this._canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: !this._enableHWA\n });\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors, dependencyTracker);\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 error ||= new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay);\n this.callback(error);\n this.task.onError?.(error);\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.gfx.dependencyTracker?.growOperationsCount(this.operatorList.fnArray.length);\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, this._operationsFilter);\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 = \"5.4.530\";\nconst build = \"50cc4adac\";\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 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.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color?.toUpperCase() || 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.ariaHasPopup = \"true\";\n if (this.#editor) {\n button.ariaControls = `${this.#editor.id}_colorpicker_dropdown`;\n }\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.ariaHidden = \"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.ariaOrientation = \"horizontal\";\n dropdown.ariaLabelledBy = \"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.ariaMultiSelectable = \"false\";\n div.ariaOrientation = \"vertical\";\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n if (this.#editor) {\n div.id = `${this.#editor.id}_colorpicker_dropdown`;\n }\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.ariaSelected = 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: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n value: color\n });\n this.updateColor(color);\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.firstElementChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstElementChild || 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.firstElementChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastElementChild?.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 this.#button.ariaExpanded = \"true\";\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.#button.ariaExpanded = \"false\";\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.ariaSelected = i.next().value === color.toUpperCase();\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}\nclass BasicColorPicker {\n #input = null;\n #editor = null;\n #uiManager = null;\n static #l10nColor = null;\n constructor(editor) {\n this.#editor = editor;\n this.#uiManager = editor._uiManager;\n BasicColorPicker.#l10nColor ||= Object.freeze({\n freetext: \"pdfjs-editor-color-picker-free-text-input\",\n ink: \"pdfjs-editor-color-picker-ink-input\"\n });\n }\n renderButton() {\n if (this.#input) {\n return this.#input;\n }\n const {\n editorType,\n colorType,\n color\n } = this.#editor;\n const input = this.#input = document.createElement(\"input\");\n input.type = \"color\";\n input.value = color || \"#000000\";\n input.className = \"basicColorPicker\";\n input.tabIndex = 0;\n input.setAttribute(\"data-l10n-id\", BasicColorPicker.#l10nColor[editorType]);\n input.addEventListener(\"input\", () => {\n this.#uiManager.updateParams(colorType, input.value);\n }, {\n signal: this.#uiManager._signal\n });\n return input;\n }\n update(value) {\n if (!this.#input) {\n return;\n }\n this.#input.value = value;\n }\n destroy() {\n this.#input?.remove();\n this.#input = null;\n }\n hideDropdown() {}\n}\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}\nconst DateFormats = (/* unused pure expression or super */ null && ([\"m/d\", \"m/d/yy\", \"mm/dd/yy\", \"mm/yy\", \"d-mmm\", \"d-mmm-yy\", \"dd-mmm-yy\", \"yy-mm-dd\", \"mmm-yy\", \"mmmm-yy\", \"mmm d, yyyy\", \"mmmm d, yyyy\", \"m/d/yy h:MM tt\", \"m/d/yy HH:MM\"]));\nconst TimeFormats = (/* unused pure expression or super */ null && ([\"HH:MM\", \"h:MM tt\", \"HH:MM:ss\", \"h:MM:ss tt\"]));\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/annotation_layer.js\n\n\n\n\n\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nconst TIMEZONE_OFFSET = new Date().getTimezoneOffset() * 60 * 1000;\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.enableComment = parameters.enableComment;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n this.hasOwnCommentButton = false;\n if (isRenderable) {\n this.contentElement = this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n contentsObj,\n richText\n }) {\n return !!(contentsObj?.str || richText?.str);\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data) || this.enableComment && !!this.commentText;\n }\n get commentData() {\n const {\n data\n } = this;\n const editor = this.annotationStorage?.getEditor(data.id);\n if (editor) {\n return editor.getData();\n }\n return data;\n }\n get hasCommentButton() {\n return this.enableComment && this.hasPopupElement;\n }\n get commentButtonPosition() {\n const editor = this.annotationStorage?.getEditor(this.data.id);\n if (editor) {\n return editor.commentButtonPositionInPage;\n }\n const {\n quadPoints,\n inkLists,\n rect\n } = this.data;\n let maxX = -Infinity;\n let maxY = -Infinity;\n if (quadPoints?.length >= 8) {\n for (let i = 0; i < quadPoints.length; i += 8) {\n if (quadPoints[i + 1] > maxY) {\n maxY = quadPoints[i + 1];\n maxX = quadPoints[i + 2];\n } else if (quadPoints[i + 1] === maxY) {\n maxX = Math.max(maxX, quadPoints[i + 2]);\n }\n }\n return [maxX, maxY];\n }\n if (inkLists?.length >= 1) {\n for (const inkList of inkLists) {\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n if (inkList[i + 1] > maxY) {\n maxY = inkList[i + 1];\n maxX = inkList[i];\n } else if (inkList[i + 1] === maxY) {\n maxX = Math.max(maxX, inkList[i]);\n }\n }\n }\n if (maxX !== Infinity) {\n return [maxX, maxY];\n }\n }\n if (rect) {\n return [rect[2], rect[3]];\n }\n return null;\n }\n _normalizePoint(point) {\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 point[1] = view[3] - point[1] + view[1];\n point[0] = 100 * (point[0] - pageX) / pageWidth;\n point[1] = 100 * (point[1] - pageY) / pageHeight;\n return point;\n }\n get commentText() {\n const {\n data\n } = this;\n return this.annotationStorage.getRawValue(`${AnnotationEditorPrefix}${data.id}`)?.popup?.contents || data.contentsObj?.str || \"\";\n }\n set commentText(text) {\n const {\n data\n } = this;\n const popup = {\n deleted: !text,\n contents: text || \"\"\n };\n if (!this.annotationStorage.updateEditor(data.id, {\n popup\n })) {\n this.annotationStorage.setValue(`${AnnotationEditorPrefix}${data.id}`, {\n id: data.id,\n annotationType: data.annotationType,\n pageIndex: this.parent.page._pageIndex,\n popup,\n popupRef: data.popupRef,\n modificationDate: new Date()\n });\n }\n if (!text) {\n this.removePopup();\n }\n }\n removePopup() {\n (this.#popupElement?.popup || this.popup)?.remove();\n this.#popupElement = this.popup = null;\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n if (params.rect) {\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n }\n const {\n rect,\n popup: newPopup\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n let popup = this.#popupElement?.popup || this.popup;\n if (!popup && newPopup?.text) {\n this._createPopup(newPopup);\n popup = this.#popupElement.popup;\n }\n if (!popup) {\n return;\n }\n popup.updateEdited(params);\n if (newPopup?.deleted) {\n popup.remove();\n this.#popupElement = null;\n this.popup = null;\n }\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 style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * (rect[2] - rect[0]) / pageWidth}%`;\n style.height = `${100 * (rect[3] - rect[1]) / 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) && !(this instanceof LinkAnnotationElement)) {\n container.tabIndex = 0;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex;\n this.parent.zIndex += 2;\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 } = this;\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(--total-scale-factor)) / calc(${verticalRadius}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--total-scale-factor)) / calc(${height}px * var(--total-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 let {\n width,\n height\n } = this;\n if (angle % 180 !== 0) {\n [width, height] = [height, width];\n }\n container.style.width = `${100 * width / pageWidth}%`;\n container.style.height = `${100 * height / pageHeight}%`;\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 svg.role = \"none\";\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(popupData = null) {\n const {\n data\n } = this;\n let contentsObj, modificationDate;\n if (popupData) {\n contentsObj = {\n str: popupData.text\n };\n modificationDate = popupData.date;\n } else {\n contentsObj = data.contentsObj;\n modificationDate = data.modificationDate;\n }\n this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate,\n contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation,\n noRotate: true\n },\n linkService: this.linkService,\n parent: this.parent,\n elements: [this]\n });\n }\n get hasPopupElement() {\n return !!(this.#popupElement || this.popup || this.data.popupRef);\n }\n get extraPopupElement() {\n return this.#popupElement;\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 mustEnterInEditMode: true\n });\n });\n }\n get width() {\n return this.data.rect[2] - this.data.rect[0];\n }\n get height() {\n return this.data.rect[3] - this.data.rect[1];\n }\n}\nclass EditorAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.editor = parameters.editor;\n }\n render() {\n this.container.className = \"editorAnnotation\";\n return this.container;\n }\n createOrUpdatePopup() {\n const {\n editor\n } = this;\n if (!editor.hasComment) {\n return;\n }\n this._createPopup(editor.comment);\n }\n get hasCommentButton() {\n return this.enableComment && this.editor.hasComment;\n }\n get commentButtonPosition() {\n return this.editor.commentButtonPositionInPage;\n }\n get commentText() {\n return this.editor.comment.text;\n }\n set commentText(text) {\n this.editor.comment = text;\n if (!text) {\n this.removePopup();\n }\n }\n get commentData() {\n return this.editor.getData();\n }\n remove() {\n this.parent.removeAnnotation(this.data.id);\n this.container.remove();\n this.container = null;\n this.removePopup();\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, data.overlaidText);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.overlaidText, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState, data.overlaidText);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest, data.overlaidText);\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.contentElement = link;\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, overlaidText = \"\") {\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 if (overlaidText) {\n link.title = overlaidText;\n }\n }\n _bindNamedAction(link, action, overlaidText = \"\") {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n if (overlaidText) {\n link.title = overlaidText;\n }\n this.#setInternalLink();\n }\n #bindAttachment(link, attachment, overlaidText = \"\", dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n } else if (overlaidText) {\n link.title = overlaidText;\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, overlaidText = \"\") {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n if (overlaidText) {\n link.title = overlaidText;\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 (data.overlaidText) {\n link.title = data.overlaidText;\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.hasOwnCommentButton = true;\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(--total-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 = this.data.password ? \"password\" : \"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 this.contentElement = element;\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = 0;\n const {\n datetimeFormat,\n datetimeType,\n timeStep\n } = this.data;\n const hasDateOrTime = !!datetimeType && this.enableScripting;\n if (datetimeFormat) {\n element.title = datetimeFormat;\n }\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 (hasDateOrTime) {\n target.type = datetimeType;\n if (timeStep) {\n target.step = timeStep;\n }\n }\n if (elementData.userValue) {\n const value = elementData.userValue;\n if (hasDateOrTime) {\n if (datetimeType === \"time\") {\n const date = new Date(value);\n const parts = [date.getHours(), date.getMinutes(), date.getSeconds()];\n target.value = parts.map(v => v.toString().padStart(2, \"0\")).join(\":\");\n } else {\n target.value = new Date(value - TIMEZONE_OFFSET).toISOString().split(datetimeType === \"date\" ? \"T\" : \".\", 1)[0];\n }\n } else {\n target.value = value;\n }\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 if (!hasDateOrTime) {\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\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 const data = {\n formattedValue\n };\n if (hasDateOrTime) {\n data.value = formattedValue;\n }\n storage.setValue(id, data);\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 target\n } = event;\n let {\n value\n } = target;\n if (hasDateOrTime) {\n if (value && datetimeType === \"time\") {\n const parts = value.split(\":\").map(v => parseInt(v, 10));\n value = new Date(2000, 0, 1, parts[0], parts[1], parts[2] || 0).valueOf();\n target.step = \"\";\n } else {\n if (!value.includes(\"T\")) {\n value = `${value}T00:00`;\n }\n value = new Date(value).valueOf();\n }\n target.type = \"text\";\n }\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(--total-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 = 0;\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 = 0;\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 = 0;\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 parent\n } = parameters;\n const hasCommentManager = !!parent._commentManager;\n super(parameters, {\n isRenderable: !hasCommentManager && AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n if (hasCommentManager && AnnotationElement._hasPopupData(data)) {\n const popup = this.popup = this.#createPopup();\n for (const element of elements) {\n element.popup = popup;\n }\n } else {\n this.popup = null;\n }\n }\n #createPopup() {\n return new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate || this.data.creationDate,\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 commentManager: this.parent._commentManager\n });\n }\n render() {\n const {\n container\n } = this;\n container.classList.add(\"popupAnnotation\");\n container.role = \"comment\";\n const popup = this.popup = this.#createPopup();\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 #commentManager = null;\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 #popupAbortController = null;\n #position = null;\n #commentButton = null;\n #commentButtonPosition = null;\n #popupPosition = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\n #firstElement = null;\n #commentText = null;\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 commentManager = null\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.#commentManager = commentManager;\n this.#firstElement = elements[0];\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n if (!commentManager) {\n this.#addEventListeners();\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n }\n #addEventListeners() {\n if (this.#popupAbortController) {\n return;\n }\n this.#popupAbortController = new AbortController();\n const {\n signal\n } = this.#popupAbortController;\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle, {\n signal\n });\n element.addEventListener(\"pointerenter\", this.#boundShow, {\n signal\n });\n element.addEventListener(\"pointerleave\", this.#boundHide, {\n signal\n });\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of this.#elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n }\n }\n #setCommentButtonPosition() {\n const element = this.#elements.find(e => e.hasCommentButton);\n if (!element) {\n return;\n }\n this.#commentButtonPosition = element._normalizePoint(element.commentButtonPosition);\n }\n renderCommentButton() {\n if (this.#commentButton) {\n if (!this.#commentButton.parentNode) {\n this.#firstElement.container.after(this.#commentButton);\n }\n return;\n }\n if (!this.#commentButtonPosition) {\n this.#setCommentButtonPosition();\n }\n if (!this.#commentButtonPosition) {\n return;\n }\n const {\n signal\n } = this.#popupAbortController = new AbortController();\n const hasOwnButton = this.#firstElement.hasOwnCommentButton;\n const togglePopup = () => {\n this.#commentManager.toggleCommentPopup(this, true, undefined, !hasOwnButton);\n };\n const showPopup = () => {\n this.#commentManager.toggleCommentPopup(this, false, true, !hasOwnButton);\n };\n const hidePopup = () => {\n this.#commentManager.toggleCommentPopup(this, false, false);\n };\n if (!hasOwnButton) {\n const button = this.#commentButton = document.createElement(\"button\");\n button.className = \"annotationCommentButton\";\n const parentContainer = this.#firstElement.container;\n button.style.zIndex = parentContainer.style.zIndex + 1;\n button.tabIndex = 0;\n button.ariaHasPopup = \"dialog\";\n button.ariaControls = \"commentPopup\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n this.#updateColor();\n this.#updateCommentButtonPosition();\n button.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n button.addEventListener(\"click\", togglePopup, {\n signal\n });\n button.addEventListener(\"pointerenter\", showPopup, {\n signal\n });\n button.addEventListener(\"pointerleave\", hidePopup, {\n signal\n });\n parentContainer.after(button);\n } else {\n this.#commentButton = this.#firstElement.container;\n for (const element of this.trigger) {\n element.ariaHasPopup = \"dialog\";\n element.ariaControls = \"commentPopup\";\n element.addEventListener(\"keydown\", this.#boundKeyDown, {\n signal\n });\n element.addEventListener(\"click\", togglePopup, {\n signal\n });\n element.addEventListener(\"pointerenter\", showPopup, {\n signal\n });\n element.addEventListener(\"pointerleave\", hidePopup, {\n signal\n });\n element.classList.add(\"popupTriggerArea\");\n }\n }\n }\n #updateCommentButtonPosition() {\n if (this.#firstElement.extraPopupElement && !this.#firstElement.editor) {\n return;\n }\n if (!this.#commentButton) {\n this.renderCommentButton();\n }\n const [x, y] = this.#commentButtonPosition;\n const {\n style\n } = this.#commentButton;\n style.left = `calc(${x}%)`;\n style.top = `calc(${y}% - var(--comment-button-dim))`;\n }\n #updateColor() {\n if (this.#firstElement.extraPopupElement) {\n return;\n }\n if (!this.#commentButton) {\n this.renderCommentButton();\n }\n this.#commentButton.style.backgroundColor = this.commentButtonColor || \"\";\n }\n get commentButtonColor() {\n const {\n color,\n opacity\n } = this.#firstElement.commentData;\n if (!color) {\n return null;\n }\n return this.#parent._commentManager.makeCommentColor(color, opacity);\n }\n focusCommentButton() {\n setTimeout(() => {\n this.#commentButton?.focus();\n }, 0);\n }\n getData() {\n const {\n richText,\n color,\n opacity,\n creationDate,\n modificationDate\n } = this.#firstElement.commentData;\n return {\n contentsObj: {\n str: this.comment\n },\n richText,\n color,\n opacity,\n creationDate,\n modificationDate\n };\n }\n get elementBeforePopup() {\n return this.#commentButton;\n }\n get comment() {\n this.#commentText ||= this.#firstElement.commentText;\n return this.#commentText;\n }\n set comment(text) {\n if (text === this.comment) {\n return;\n }\n this.#firstElement.commentText = this.#commentText = text;\n }\n focus() {\n this.#firstElement.container?.focus();\n }\n get parentBoundingClientRect() {\n return this.#firstElement.layer.getBoundingClientRect();\n }\n setCommentButtonStates({\n selected,\n hasPopup\n }) {\n if (!this.#commentButton) {\n return;\n }\n this.#commentButton.classList.toggle(\"selected\", selected);\n this.#commentButton.ariaExpanded = hasPopup;\n }\n setSelectedCommentButton(selected) {\n this.#commentButton.classList.toggle(\"selected\", selected);\n }\n get commentPopupPosition() {\n if (this.#popupPosition) {\n return this.#popupPosition;\n }\n const {\n x,\n y,\n height\n } = this.#commentButton.getBoundingClientRect();\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = this.#firstElement.layer.getBoundingClientRect();\n return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n }\n set commentPopupPosition(pos) {\n this.#popupPosition = pos;\n }\n hasDefaultPopupPosition() {\n return this.#popupPosition === null;\n }\n get commentButtonPosition() {\n return this.#commentButtonPosition;\n }\n get commentButtonWidth() {\n return this.#commentButton.getBoundingClientRect().width / this.parentBoundingClientRect.width;\n }\n editComment(options) {\n const [posX, posY] = this.#popupPosition || this.commentButtonPosition.map(x => x / 100);\n const parentDimensions = this.parentBoundingClientRect;\n const {\n x: parentX,\n y: parentY,\n width: parentWidth,\n height: parentHeight\n } = parentDimensions;\n this.#commentManager.showDialog(null, this, parentX + posX * parentWidth, parentY + posY * parentHeight, {\n ...options,\n parentDimensions\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 popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n if (this.#titleObj?.str) {\n const title = document.createElement(\"span\");\n title.className = \"title\";\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n }\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"time\");\n modificationDate.className = \"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 modificationDate.dateTime = this.#dateObj.toISOString();\n header.append(modificationDate);\n }\n renderRichText({\n html: this.#html || this.#contentsObj.str,\n dir: this.#contentsObj?.dir,\n className: \"popupContent\"\n }, popup);\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(--total-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 #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 popup,\n deleted\n }) {\n if (this.#commentManager) {\n if (deleted) {\n this.remove();\n this.#commentText = null;\n } else if (popup) {\n if (popup.deleted) {\n this.remove();\n } else {\n this.#updateColor();\n this.#commentText = popup.text;\n }\n }\n if (rect) {\n this.#commentButtonPosition = null;\n this.#setCommentButtonPosition();\n this.#updateCommentButtonPosition();\n }\n return;\n }\n if (deleted || popup?.deleted) {\n this.remove();\n return;\n }\n this.#addEventListeners();\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popup && popup.text) {\n this.#richText = this.#makePopupContent(popup.text);\n this.#dateObj = PDFDateString.toDateObject(popup.date);\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 remove() {\n this.#popupAbortController?.abort();\n this.#popupAbortController = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#wasVisible = false;\n this.#pinned = false;\n this.#commentButton?.remove();\n this.#commentButton = null;\n if (this.trigger) {\n for (const element of this.trigger) {\n element.classList.remove(\"popupTriggerArea\");\n }\n }\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 if (this.#commentManager) {\n this.#commentManager.toggleCommentPopup(this, false);\n return;\n }\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.#commentManager) {\n return;\n }\n this.#addEventListeners();\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 if (this.#commentManager) {\n return false;\n }\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 = this.contentElement = 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.hasOwnCommentButton = true;\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 {\n data,\n width,\n height\n } = this;\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.hasOwnCommentButton = true;\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 {\n data,\n width,\n height\n } = this;\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.hasOwnCommentButton = true;\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 {\n data,\n width,\n height\n } = this;\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.hasOwnCommentButton = true;\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 width,\n height\n } = this;\n if (!vertices) {\n return this.container;\n }\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.hasOwnCommentButton = true;\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.hasOwnCommentButton = true;\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.hasOwnCommentButton = true;\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 const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n this._editOnDoubleClick();\n if (overlaidText) {\n const mark = document.createElement(\"mark\");\n mark.classList.add(\"overlaidText\");\n mark.textContent = overlaidText;\n this.container.append(mark);\n }\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 const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\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 const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\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 const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this.hasOwnCommentButton = true;\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n if (overlaidText) {\n const strikeout = document.createElement(\"s\");\n strikeout.classList.add(\"overlaidText\");\n strikeout.textContent = overlaidText;\n this.container.append(strikeout);\n }\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.hasOwnCommentButton = true;\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.hasOwnCommentButton = true;\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 #annotationStorage = null;\n #editableAnnotations = new Map();\n #structTreeLayer = null;\n #linkService = null;\n #elements = [];\n #hasAriaAttributesFromStructTree = false;\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport,\n structTreeLayer,\n commentManager,\n linkService,\n annotationStorage\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.#structTreeLayer = structTreeLayer || null;\n this.#linkService = linkService || null;\n this.#annotationStorage = annotationStorage || new AnnotationStorage();\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n this._commentManager = commentManager || null;\n }\n hasEditableAnnotations() {\n return this.#editableAnnotations.size > 0;\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 popupAnnotations = [];\n const elementParams = {\n data: null,\n layer,\n linkService: this.#linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: this.#annotationStorage,\n enableComment: params.enableComment === true,\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 if (data.rect[2] === data.rect[0] || data.rect[3] === data.rect[1]) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n if (!this._commentManager) {\n popupAnnotations.push(data);\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) {\n this.#elements.push(element);\n if (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 }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n if (element._isEditable) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n await this.#addElementsToDOM();\n for (const data of popupAnnotations) {\n const elements = elementParams.elements = popupToElements.get(data.id);\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n const rendered = element.render();\n element.contentElement.id = `${AnnotationPrefix}${data.id}`;\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n elements.at(-1).container.after(rendered);\n }\n this.#setAnnotationCanvasMap();\n }\n async #addElementsToDOM() {\n if (this.#elements.length === 0) {\n return;\n }\n this.div.replaceChildren();\n const promises = [];\n if (!this.#hasAriaAttributesFromStructTree) {\n this.#hasAriaAttributesFromStructTree = true;\n for (const {\n contentElement,\n data: {\n id\n }\n } of this.#elements) {\n const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n promises.push(this.#structTreeLayer?.getAriaAttributes(annotationId).then(ariaAttributes => {\n if (ariaAttributes) {\n for (const [key, value] of ariaAttributes) {\n contentElement.setAttribute(key, value);\n }\n }\n }));\n }\n }\n this.#elements.sort(({\n data: {\n rect: [a0, a1, a2, a3]\n }\n }, {\n data: {\n rect: [b0, b1, b2, b3]\n }\n }) => {\n if (a0 === a2 && a1 === a3) {\n return +1;\n }\n if (b0 === b2 && b1 === b3) {\n return -1;\n }\n const top1 = a3;\n const bot1 = a1;\n const mid1 = (a1 + a3) / 2;\n const top2 = b3;\n const bot2 = b1;\n const mid2 = (b1 + b3) / 2;\n if (mid1 >= top2 && mid2 <= bot1) {\n return -1;\n }\n if (mid2 >= top1 && mid1 <= bot2) {\n return +1;\n }\n const centerX1 = (a0 + a2) / 2;\n const centerX2 = (b0 + b2) / 2;\n return centerX1 - centerX2;\n });\n const fragment = document.createDocumentFragment();\n for (const element of this.#elements) {\n fragment.append(element.container);\n if (this._commentManager) {\n (element.extraPopupElement?.popup || element.popup)?.renderCommentButton();\n } else if (element.extraPopupElement) {\n fragment.append(element.extraPopupElement.render());\n }\n }\n this.div.append(fragment);\n await Promise.all(promises);\n if (this.#accessibilityManager) {\n for (const element of this.#elements) {\n this.#accessibilityManager.addPointerInTextLayer(element.contentElement, false);\n }\n }\n }\n async addLinkAnnotations(annotations) {\n const elementParams = {\n data: null,\n layer: this.div,\n linkService: this.#linkService,\n svgFactory: new DOMSVGFactory(),\n parent: this\n };\n for (const data of annotations) {\n data.borderStyle ||= AnnotationLayer._defaultBorderStyle;\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n element.render();\n element.contentElement.id = `${AnnotationPrefix}${data.id}`;\n this.#elements.push(element);\n }\n await this.#addElementsToDOM();\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 const editableAnnotation = this.#editableAnnotations.get(id);\n if (!editableAnnotation) {\n continue;\n }\n if (editableAnnotation._hasNoCanvas) {\n this._annotationEditorUIManager?.setMissingCanvas(id, element.id, canvas);\n editableAnnotation._hasNoCanvas = false;\n } else {\n editableAnnotation.canvas = 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 addFakeAnnotation(editor) {\n const {\n div\n } = this;\n const {\n id,\n rotation\n } = editor;\n const element = new EditorAnnotationElement({\n data: {\n id,\n rect: editor.getPDFRect(),\n rotation\n },\n editor,\n layer: div,\n parent: this,\n enableComment: !!this._commentManager,\n linkService: this.#linkService,\n annotationStorage: this.#annotationStorage\n });\n element.render();\n element.contentElement.id = `${AnnotationPrefix}${id}`;\n element.createOrUpdatePopup();\n this.#elements.push(element);\n return element;\n }\n removeAnnotation(id) {\n const index = this.#elements.findIndex(el => el.data.id === id);\n if (index < 0) {\n return;\n }\n const [element] = this.#elements.splice(index, 1);\n this.#accessibilityManager?.removePointerInTextLayer(element.contentElement);\n }\n updateFakeAnnotations(editors) {\n if (editors.length === 0) {\n return;\n }\n for (const editor of editors) {\n editor.updateFakeAnnotationElement(this);\n }\n this.#addElementsToDOM();\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n static get _defaultBorderStyle() {\n return shadow(this, \"_defaultBorderStyle\", Object.freeze({\n width: 1,\n rawWidth: 1,\n style: AnnotationBorderStyleType.SOLID,\n dashArray: [3],\n horizontalCornerRadius: 0,\n verticalCornerRadius: 0\n }));\n }\n}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #editModeAC = null;\n #fontSize;\n _colorPicker = null;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = self => self.isEmpty();\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n static _editorType = AnnotationEditorType.FREETEXT;\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-freetext-added-alert\");\n }\n this.canAddComment = false;\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 get toolbarButtons() {\n this._colorPicker ||= new BasicColorPicker(this);\n return [[\"colorPicker\", this._colorPicker]];\n }\n get colorType() {\n return AnnotationEditorParamsType.FREETEXT_COLOR;\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--total-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 onUpdatedColor() {\n this.editorDiv.style.color = this.color;\n this._colorPicker?.update(this.color);\n super.onUpdatedColor();\n }\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.onUpdatedColor();\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 (!super.enableEditMode()) {\n return false;\n }\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 return true;\n }\n disableEditMode() {\n if (!super.disableEditMode()) {\n return false;\n }\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 return true;\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 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 get canChangeContent() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy || this.annotationElementId) {\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(--total-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 if (this._isCopy || this.annotationElementId) {\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._moveAfterPaste(baseX, baseY);\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 = Math.sumPrecise(bufferBefore.map(line => line.length));\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 getPDFRect() {\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n return this.getRect(padding, padding);\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 richText,\n contentsObj,\n creationDate,\n modificationDate\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 annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n comment: contentsObj?.str || null,\n richText,\n creationDate,\n modificationDate\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._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\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 color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.color);\n const serialized = Object.assign(super.serialize(isForCopying), {\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent()\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.isCopy = true;\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.hasEditedComment || 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 (!content) {\n return null;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-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 annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this._uiManager.hasCommentManager() || this.hasEditedComment ? this.comment : {\n text: this.#content\n }\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.firstPoint = [NaN, NaN];\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 const minMax = [lastX, lastY, lastX, lastY];\n let firstPointX = lastX;\n let firstPointY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n const bezierBbox = new Float32Array(4);\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n const x = outline[i + 4],\n y = outline[i + 5];\n if (isNaN(outline[i])) {\n Util.pointBoundingBox(x, y, minMax);\n if (firstPointY > y) {\n firstPointX = x;\n firstPointY = y;\n } else if (firstPointY === y) {\n firstPointX = ltrCallback(firstPointX, x);\n }\n if (lastPointY < y) {\n lastPointX = x;\n lastPointY = y;\n } else if (lastPointY === y) {\n lastPointX = ltrCallback(lastPointX, x);\n }\n } else {\n bezierBbox[0] = bezierBbox[1] = Infinity;\n bezierBbox[2] = bezierBbox[3] = -Infinity;\n Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6), bezierBbox);\n Util.rectBoundingBox(bezierBbox[0], bezierBbox[1], bezierBbox[2], bezierBbox[3], minMax);\n if (firstPointY > bezierBbox[1]) {\n firstPointX = bezierBbox[0];\n firstPointY = bezierBbox[1];\n } else if (firstPointY === bezierBbox[1]) {\n firstPointX = ltrCallback(firstPointX, bezierBbox[0]);\n }\n if (lastPointY < bezierBbox[3]) {\n lastPointX = bezierBbox[2];\n lastPointY = bezierBbox[3];\n } else if (lastPointY === bezierBbox[3]) {\n lastPointX = ltrCallback(lastPointX, bezierBbox[2]);\n }\n }\n lastX = x;\n lastY = y;\n }\n const bbox = this.#bbox;\n bbox[0] = minMax[0] - this.#innerMargin;\n bbox[1] = minMax[1] - this.#innerMargin;\n bbox[2] = minMax[2] - minMax[0] + 2 * this.#innerMargin;\n bbox[3] = minMax[3] - minMax[1] + 2 * this.#innerMargin;\n this.firstPoint = [firstPointX, firstPointY];\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\n\nclass HighlightOutliner {\n #box;\n #firstPoint;\n #lastPoint;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n const minMax = [Infinity, Infinity, -Infinity, -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 Util.rectBoundingBox(x1, y1, x2, y2, minMax);\n }\n const bboxWidth = minMax[2] - minMax[0] + 2 * innerMargin;\n const bboxHeight = minMax[3] - minMax[1] + 2 * innerMargin;\n const shiftedMinX = minMax[0] - innerMargin;\n const shiftedMinY = minMax[1] - innerMargin;\n let firstPointX = isLTR ? -Infinity : Infinity;\n let firstPointY = Infinity;\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, left] = edge;\n if (!left && isLTR) {\n if (y1 < firstPointY) {\n firstPointY = y1;\n firstPointX = x;\n } else if (y1 === firstPointY) {\n firstPointX = Math.max(firstPointX, x);\n }\n } else if (left && !isLTR) {\n if (y1 < firstPointY) {\n firstPointY = y1;\n firstPointX = x;\n } else if (y1 === firstPointY) {\n firstPointX = Math.min(firstPointX, x);\n }\n }\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.#firstPoint = [firstPointX, firstPointY];\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.#firstPoint, 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, firstPoint, lastPoint) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n this.firstPoint = firstPoint;\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/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 #firstPoint = null;\n #lastPoint = null;\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 this.defaultL10nId = \"pdfjs-editor-highlight-editor\";\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 if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-highlight-added-alert\");\n }\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.getNonHCMColorName(this.color),\n thickness: this.#thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.getNonHCMColorName(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 firstPoint\n } = this.#highlightOutlines;\n this.#firstPoint = [(firstPoint[0] - this.x) / this.width, (firstPoint[1] - this.y) / this.height];\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 firstPoint\n } = highlightOutlines;\n this.#firstPoint = [(firstPoint[0] - x) / width, (firstPoint[1] - y) / height];\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_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 get commentButtonPosition() {\n return this.#firstPoint;\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_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 onUpdatedColor() {\n this.parent?.drawLayer.updateProperties(this.#id, {\n root: {\n fill: this.color,\n \"fill-opacity\": this.opacity\n }\n });\n this.#colorPicker?.updateColor(this.color);\n super.onUpdatedColor();\n }\n #updateColor(color) {\n const setColorAndOpacity = (col, opa) => {\n this.color = col;\n this.opacity = opa;\n this.onUpdatedColor();\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.getNonHCMColorName(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 get toolbarButtons() {\n if (this._uiManager.highlightColors) {\n const colorPicker = this.#colorPicker = new ColorPicker({\n editor: this\n });\n return [[\"colorPicker\", colorPicker]];\n }\n return super.toolbarButtons;\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 this.setDims();\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 this.setDims();\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 richText,\n contentsObj,\n creationDate,\n modificationDate\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 annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\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 richText,\n contentsObj,\n creationDate,\n modificationDate\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 annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\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._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\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 editor.rotate(editor.parentRotation);\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 color = AnnotationEditor._colorManager.convert(this._uiManager.getNonHCMColor(this.color));\n const serialized = super.serialize(isForCopying);\n Object.assign(serialized, {\n color,\n opacity: this.opacity,\n thickness: this.#thickness,\n quadPoints: this.#serializeBoxes(),\n outlines: this.#serializeOutlines(serialized.rect)\n });\n this.addComment(serialized);\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 this.hasEditedComment || serialized.color.some((c, i) => c !== color[i]);\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/draw.js\n\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 if (!name.startsWith(\"_\")) {\n this.updateProperty(name, value);\n }\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 _colorPicker = null;\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 _INNER_MARGIN = 3;\n constructor(params) {\n super(params);\n this.#mustBeCommitted = params.mustBeCommitted || false;\n this._addOutlines(params);\n }\n onUpdatedColor() {\n this._colorPicker?.update(this.color);\n super.onUpdatedColor();\n }\n _addOutlines(params) {\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 (!this.annotationElementId) {\n this._uiManager.a11yAlert(`pdfjs-editor-${this.editorType}-added-alert`);\n }\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 if (type === this.colorType) {\n this.onUpdatedColor();\n }\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()\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 this.setDims();\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 let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\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 this.setDims();\n this._uiManager.addShouldRescale(this);\n this.disableEditing();\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\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 (CurrentPointers.isInitializedAndDifferentPointerType(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 CurrentPointers.setPointer(pointerType, pointerId);\n window.addEventListener(\"pointerup\", e => {\n if (CurrentPointers.isSamePointerIdOrRemove(e.pointerId)) {\n this._endDraw(e);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointercancel\", e => {\n if (CurrentPointers.isSamePointerIdOrRemove(e.pointerId)) {\n this._currentParent.endDrawingSession();\n }\n }, {\n signal\n });\n window.addEventListener(\"pointerdown\", e => {\n if (!CurrentPointers.isSamePointerType(e.pointerType)) {\n return;\n }\n CurrentPointers.initializeAndAddPointerId(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 (CurrentPointers.isSameTimeStamp(e.timeStamp)) {\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 CurrentPointers.isSameTimeStamp(event.timeStamp);\n if (!DrawingEditor.#currentDraw) {\n return;\n }\n const {\n offsetX,\n offsetY,\n pointerId\n } = event;\n if (!CurrentPointers.isSamePointerId(pointerId)) {\n return;\n }\n if (CurrentPointers.isUsingMultiplePointers()) {\n this._endDraw(event);\n return;\n }\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.add(offsetX, offsetY));\n CurrentPointers.setTimeStamp(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 CurrentPointers.clearTimeStamp();\n }\n if (DrawingEditor.#currentDrawingAC) {\n DrawingEditor.#currentDrawingAC.abort();\n DrawingEditor.#currentDrawingAC = null;\n CurrentPointers.clearPointerIds();\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?.target === parent.div) {\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.getPDFRect()\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 get thickness() {\n return this.#thickness;\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 && isNaN(line[6])) {\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 this.prototype.constructor();\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 Util.pointBoundingBox(line[i], line[i + 1], bbox);\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] = MathClamp(bbox[0] - marginX, 0, 1);\n bbox[1] = MathClamp(bbox[1] - marginY, 0, 1);\n bbox[2] = MathClamp(bbox[2] + marginX, 0, 1);\n bbox[3] = MathClamp(bbox[3] + marginY, 0, 1);\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\n\nclass InkDrawingOptions extends DrawingOptions {\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 this.defaultL10nId = \"pdfjs-editor-ink-editor\";\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 richText,\n contentsObj,\n creationDate,\n modificationDate\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 annotationElementId: id,\n id,\n deleted: false,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\n return editor;\n }\n get toolbarButtons() {\n this._colorPicker ||= new BasicColorPicker(this);\n return [[\"colorPicker\", this._colorPicker]];\n }\n get colorType() {\n return AnnotationEditorParamsType.INK_COLOR;\n }\n get color() {\n return this._drawingOptions.stroke;\n }\n get opacity() {\n return this._drawingOptions[\"stroke-opacity\"];\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 } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n stroke,\n \"stroke-opacity\": opacity,\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = Object.assign(super.serialize(isForCopying), {\n color: AnnotationEditor._colorManager.convert(stroke),\n opacity,\n thickness,\n paths: {\n lines,\n points\n }\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.isCopy = true;\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.hasEditedComment || 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 if (this.deleted) {\n annotation.hide();\n return null;\n }\n const {\n points,\n rect\n } = this.serializeDraw(false);\n annotation.updateEdited({\n rect,\n thickness: this._drawingOptions[\"stroke-width\"],\n points,\n popup: this.comment\n });\n return null;\n }\n}\n\n;// ./src/display/editor/drawers/contour.js\n\nclass ContourDrawOutline extends InkDrawOutline {\n toSVGPath() {\n let path = super.toSVGPath();\n if (!path.endsWith(\"Z\")) {\n path += \"Z\";\n }\n return path;\n }\n}\n\n;// ./src/display/editor/drawers/signaturedraw.js\n\n\n\n\nconst BASE_HEADER_LENGTH = 8;\nconst POINTS_PROPERTIES_NUMBER = 3;\nclass SignatureExtractor {\n static #PARAMETERS = {\n maxDim: 512,\n sigmaSFactor: 0.02,\n sigmaR: 25,\n kernelSize: 16\n };\n static #neighborIndexToId(i0, j0, i, j) {\n i -= i0;\n j -= j0;\n if (i === 0) {\n return j > 0 ? 0 : 4;\n }\n if (i === 1) {\n return j + 6;\n }\n return 2 - j;\n }\n static #neighborIdToIndex = new Int32Array([0, 1, -1, 1, -1, 0, -1, -1, 0, -1, 1, -1, 1, 0, 1, 1]);\n static #clockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (-k + id - offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #counterClockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (k + id + offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #findContours(buf, width, height, threshold) {\n const N = buf.length;\n const types = new Int32Array(N);\n for (let i = 0; i < N; i++) {\n types[i] = buf[i] <= threshold ? 1 : 0;\n }\n for (let i = 1; i < height - 1; i++) {\n types[i * width] = types[i * width + width - 1] = 0;\n }\n for (let i = 0; i < width; i++) {\n types[i] = types[width * height - 1 - i] = 0;\n }\n let nbd = 1;\n let lnbd;\n const contours = [];\n for (let i = 1; i < height - 1; i++) {\n lnbd = 1;\n for (let j = 1; j < width - 1; j++) {\n const ij = i * width + j;\n const pix = types[ij];\n if (pix === 0) {\n continue;\n }\n let i2 = i;\n let j2 = j;\n if (pix === 1 && types[ij - 1] === 0) {\n nbd += 1;\n j2 -= 1;\n } else if (pix >= 1 && types[ij + 1] === 0) {\n nbd += 1;\n j2 += 1;\n if (pix > 1) {\n lnbd = pix;\n }\n } else {\n if (pix !== 1) {\n lnbd = Math.abs(pix);\n }\n continue;\n }\n const points = [j, i];\n const isHole = j2 === j + 1;\n const contour = {\n isHole,\n points,\n id: nbd,\n parent: 0\n };\n contours.push(contour);\n let contour0;\n for (const c of contours) {\n if (c.id === lnbd) {\n contour0 = c;\n break;\n }\n }\n if (!contour0) {\n contour.parent = isHole ? lnbd : 0;\n } else if (contour0.isHole) {\n contour.parent = isHole ? contour0.parent : lnbd;\n } else {\n contour.parent = isHole ? lnbd : contour0.parent;\n }\n const k = this.#clockwiseNonZero(types, width, i, j, i2, j2, 0);\n if (k === -1) {\n types[ij] = -nbd;\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n continue;\n }\n let shiftI = this.#neighborIdToIndex[2 * k];\n let shiftJ = this.#neighborIdToIndex[2 * k + 1];\n const i1 = i + shiftI;\n const j1 = j + shiftJ;\n i2 = i1;\n j2 = j1;\n let i3 = i;\n let j3 = j;\n while (true) {\n const kk = this.#counterClockwiseNonZero(types, width, i3, j3, i2, j2, 1);\n shiftI = this.#neighborIdToIndex[2 * kk];\n shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n const i4 = i3 + shiftI;\n const j4 = j3 + shiftJ;\n points.push(j4, i4);\n const ij3 = i3 * width + j3;\n if (types[ij3 + 1] === 0) {\n types[ij3] = -nbd;\n } else if (types[ij3] === 1) {\n types[ij3] = nbd;\n }\n if (i4 === i && j4 === j && i3 === i1 && j3 === j1) {\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n break;\n } else {\n i2 = i3;\n j2 = j3;\n i3 = i4;\n j3 = j4;\n }\n }\n }\n }\n return contours;\n }\n static #douglasPeuckerHelper(points, start, end, output) {\n if (end - start <= 4) {\n for (let i = start; i < end - 2; i += 2) {\n output.push(points[i], points[i + 1]);\n }\n return;\n }\n const ax = points[start];\n const ay = points[start + 1];\n const abx = points[end - 4] - ax;\n const aby = points[end - 3] - ay;\n const dist = Math.hypot(abx, aby);\n const nabx = abx / dist;\n const naby = aby / dist;\n const aa = nabx * ay - naby * ax;\n const m = aby / abx;\n const invS = 1 / dist;\n const phi = Math.atan(m);\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const tmax = invS * (Math.abs(cosPhi) + Math.abs(sinPhi));\n const poly = invS * (1 - tmax + tmax ** 2);\n const partialPhi = Math.max(Math.atan(Math.abs(sinPhi + cosPhi) * poly), Math.atan(Math.abs(sinPhi - cosPhi) * poly));\n let dmax = 0;\n let index = start;\n for (let i = start + 2; i < end - 2; i += 2) {\n const d = Math.abs(aa - nabx * points[i + 1] + naby * points[i]);\n if (d > dmax) {\n index = i;\n dmax = d;\n }\n }\n if (dmax > (dist * partialPhi) ** 2) {\n this.#douglasPeuckerHelper(points, start, index + 2, output);\n this.#douglasPeuckerHelper(points, index, end, output);\n } else {\n output.push(ax, ay);\n }\n }\n static #douglasPeucker(points) {\n const output = [];\n const len = points.length;\n this.#douglasPeuckerHelper(points, 0, len, output);\n output.push(points[len - 2], points[len - 1]);\n return output.length <= 4 ? null : output;\n }\n static #bilateralFilter(buf, width, height, sigmaS, sigmaR, kernelSize) {\n const kernel = new Float32Array(kernelSize ** 2);\n const sigmaS2 = -2 * sigmaS ** 2;\n const halfSize = kernelSize >> 1;\n for (let i = 0; i < kernelSize; i++) {\n const x = (i - halfSize) ** 2;\n for (let j = 0; j < kernelSize; j++) {\n kernel[i * kernelSize + j] = Math.exp((x + (j - halfSize) ** 2) / sigmaS2);\n }\n }\n const rangeValues = new Float32Array(256);\n const sigmaR2 = -2 * sigmaR ** 2;\n for (let i = 0; i < 256; i++) {\n rangeValues[i] = Math.exp(i ** 2 / sigmaR2);\n }\n const N = buf.length;\n const out = new Uint8Array(N);\n const histogram = new Uint32Array(256);\n for (let i = 0; i < height; i++) {\n for (let j = 0; j < width; j++) {\n const ij = i * width + j;\n const center = buf[ij];\n let sum = 0;\n let norm = 0;\n for (let k = 0; k < kernelSize; k++) {\n const y = i + k - halfSize;\n if (y < 0 || y >= height) {\n continue;\n }\n for (let l = 0; l < kernelSize; l++) {\n const x = j + l - halfSize;\n if (x < 0 || x >= width) {\n continue;\n }\n const neighbour = buf[y * width + x];\n const w = kernel[k * kernelSize + l] * rangeValues[Math.abs(neighbour - center)];\n sum += neighbour * w;\n norm += w;\n }\n }\n const pix = out[ij] = Math.round(sum / norm);\n histogram[pix]++;\n }\n }\n return [out, histogram];\n }\n static #getHistogram(buf) {\n const histogram = new Uint32Array(256);\n for (const g of buf) {\n histogram[g]++;\n }\n return histogram;\n }\n static #toUint8(buf) {\n const N = buf.length;\n const out = new Uint8ClampedArray(N >> 2);\n let max = -Infinity;\n let min = Infinity;\n for (let i = 0, ii = out.length; i < ii; i++) {\n const pix = out[i] = buf[i << 2];\n max = Math.max(max, pix);\n min = Math.min(min, pix);\n }\n const ratio = 255 / (max - min);\n for (let i = 0, ii = out.length; i < ii; i++) {\n out[i] = (out[i] - min) * ratio;\n }\n return out;\n }\n static #guessThreshold(histogram) {\n let i;\n let M = -Infinity;\n let L = -Infinity;\n const min = histogram.findIndex(v => v !== 0);\n let pos = min;\n let spos = min;\n for (i = min; i < 256; i++) {\n const v = histogram[i];\n if (v > M) {\n if (i - pos > L) {\n L = i - pos;\n spos = i - 1;\n }\n M = v;\n pos = i;\n }\n }\n for (i = spos - 1; i >= 0; i--) {\n if (histogram[i] > histogram[i + 1]) {\n break;\n }\n }\n return i;\n }\n static #getGrayPixels(bitmap) {\n const originalBitmap = bitmap;\n const {\n width,\n height\n } = bitmap;\n const {\n maxDim\n } = this.#PARAMETERS;\n let newWidth = width;\n let newHeight = height;\n if (width > maxDim || height > maxDim) {\n let prevWidth = width;\n let prevHeight = height;\n let steps = Math.log2(Math.max(width, height) / maxDim);\n const isteps = Math.floor(steps);\n steps = steps === isteps ? isteps - 1 : isteps;\n for (let i = 0; i < steps; i++) {\n newWidth = Math.ceil(prevWidth / 2);\n newHeight = Math.ceil(prevHeight / 2);\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 prevWidth = newWidth;\n prevHeight = newHeight;\n if (bitmap !== originalBitmap) {\n bitmap.close();\n }\n bitmap = offscreen.transferToImageBitmap();\n }\n const ratio = Math.min(maxDim / newWidth, maxDim / newHeight);\n newWidth = Math.round(newWidth * ratio);\n newHeight = Math.round(newHeight * ratio);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, newWidth, newHeight);\n ctx.filter = \"grayscale(1)\";\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, newWidth, newHeight);\n const grayImage = ctx.getImageData(0, 0, newWidth, newHeight).data;\n const uint8Buf = this.#toUint8(grayImage);\n return [uint8Buf, newWidth, newHeight];\n }\n static extractContoursFromText(text, {\n fontFamily,\n fontStyle,\n fontWeight\n }, pageWidth, pageHeight, rotation, innerMargin) {\n let canvas = new OffscreenCanvas(1, 1);\n let ctx = canvas.getContext(\"2d\", {\n alpha: false\n });\n const fontSize = 200;\n const font = ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n const {\n actualBoundingBoxLeft,\n actualBoundingBoxRight,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n fontBoundingBoxAscent,\n fontBoundingBoxDescent,\n width\n } = ctx.measureText(text);\n const SCALE = 1.5;\n const canvasWidth = Math.ceil(Math.max(Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0, width) * SCALE);\n const canvasHeight = Math.ceil(Math.max(Math.abs(actualBoundingBoxAscent) + Math.abs(actualBoundingBoxDescent) || fontSize, Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) || fontSize) * SCALE);\n canvas = new OffscreenCanvas(canvasWidth, canvasHeight);\n ctx = canvas.getContext(\"2d\", {\n alpha: true,\n willReadFrequently: true\n });\n ctx.font = font;\n ctx.filter = \"grayscale(1)\";\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, canvasWidth, canvasHeight);\n ctx.fillStyle = \"black\";\n ctx.fillText(text, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);\n const uint8Buf = this.#toUint8(ctx.getImageData(0, 0, canvasWidth, canvasHeight).data);\n const histogram = this.#getHistogram(uint8Buf);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(uint8Buf, canvasWidth, canvasHeight, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width: canvasWidth,\n height: canvasHeight\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) {\n const [uint8Buf, width, height] = this.#getGrayPixels(bitmap);\n const [buffer, histogram] = this.#bilateralFilter(uint8Buf, width, height, Math.hypot(width, height) * this.#PARAMETERS.sigmaSFactor, this.#PARAMETERS.sigmaR, this.#PARAMETERS.kernelSize);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(buffer, width, height, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width,\n height\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth,\n areContours\n }) {\n if (rotation % 180 !== 0) {\n [pageWidth, pageHeight] = [pageHeight, pageWidth];\n }\n const {\n curves,\n width,\n height\n } = lines;\n const thickness = lines.thickness ?? 0;\n const linesAndPoints = [];\n const ratio = Math.min(pageWidth / width, pageHeight / height);\n const xScale = ratio / pageWidth;\n const yScale = ratio / pageHeight;\n const newCurves = [];\n for (const {\n points\n } of curves) {\n const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points;\n if (!reducedPoints) {\n continue;\n }\n newCurves.push(reducedPoints);\n const len = reducedPoints.length;\n const newPoints = new Float32Array(len);\n const line = new Float32Array(3 * (len === 2 ? 2 : len - 2));\n linesAndPoints.push({\n line,\n points: newPoints\n });\n if (len === 2) {\n newPoints[0] = reducedPoints[0] * xScale;\n newPoints[1] = reducedPoints[1] * yScale;\n line.set([NaN, NaN, NaN, NaN, newPoints[0], newPoints[1]], 0);\n continue;\n }\n let [x1, y1, x2, y2] = reducedPoints;\n x1 *= xScale;\n y1 *= yScale;\n x2 *= xScale;\n y2 *= yScale;\n newPoints.set([x1, y1, x2, y2], 0);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = newPoints[i] = reducedPoints[i] * xScale;\n const y = newPoints[i + 1] = reducedPoints[i + 1] * yScale;\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 if (linesAndPoints.length === 0) {\n return null;\n }\n const outline = areContours ? new ContourDrawOutline() : new InkDrawOutline();\n outline.build(linesAndPoints, pageWidth, pageHeight, 1, rotation, areContours ? 0 : thickness, innerMargin);\n return {\n outline,\n newCurves,\n areContours,\n thickness,\n width,\n height\n };\n }\n static async compressSignature({\n outlines,\n areContours,\n thickness,\n width,\n height\n }) {\n let minDiff = Infinity;\n let maxDiff = -Infinity;\n let outlinesLength = 0;\n for (const points of outlines) {\n outlinesLength += points.length;\n for (let i = 2, ii = points.length; i < ii; i++) {\n const dx = points[i] - points[i - 2];\n minDiff = Math.min(minDiff, dx);\n maxDiff = Math.max(maxDiff, dx);\n }\n }\n let bufferType;\n if (minDiff >= -128 && maxDiff <= 127) {\n bufferType = Int8Array;\n } else if (minDiff >= -32768 && maxDiff <= 32767) {\n bufferType = Int16Array;\n } else {\n bufferType = Int32Array;\n }\n const len = outlines.length;\n const headerLength = BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * len;\n const header = new Uint32Array(headerLength);\n let offset = 0;\n header[offset++] = headerLength * Uint32Array.BYTES_PER_ELEMENT + (outlinesLength - 2 * len) * bufferType.BYTES_PER_ELEMENT;\n header[offset++] = 0;\n header[offset++] = width;\n header[offset++] = height;\n header[offset++] = areContours ? 0 : 1;\n header[offset++] = Math.max(0, Math.floor(thickness ?? 0));\n header[offset++] = len;\n header[offset++] = bufferType.BYTES_PER_ELEMENT;\n for (const points of outlines) {\n header[offset++] = points.length - 2;\n header[offset++] = points[0];\n header[offset++] = points[1];\n }\n const cs = new CompressionStream(\"deflate-raw\");\n const writer = cs.writable.getWriter();\n await writer.ready;\n writer.write(header);\n const BufferCtor = bufferType.prototype.constructor;\n for (const points of outlines) {\n const diffs = new BufferCtor(points.length - 2);\n for (let i = 2, ii = points.length; i < ii; i++) {\n diffs[i - 2] = points[i] - points[i - 2];\n }\n writer.write(diffs);\n }\n writer.close();\n const buf = await new Response(cs.readable).arrayBuffer();\n const bytes = new Uint8Array(buf);\n return toBase64Util(bytes);\n }\n static async decompressSignature(signatureData) {\n try {\n const bytes = fromBase64Util(signatureData);\n const {\n readable,\n writable\n } = new DecompressionStream(\"deflate-raw\");\n const writer = writable.getWriter();\n await writer.ready;\n writer.write(bytes).then(async () => {\n await writer.ready;\n await writer.close();\n }).catch(() => {});\n let data = null;\n let offset = 0;\n for await (const chunk of readable) {\n data ||= new Uint8Array(new Uint32Array(chunk.buffer, 0, 4)[0]);\n data.set(chunk, offset);\n offset += chunk.length;\n }\n const header = new Uint32Array(data.buffer, 0, data.length >> 2);\n const version = header[1];\n if (version !== 0) {\n throw new Error(`Invalid version: ${version}`);\n }\n const width = header[2];\n const height = header[3];\n const areContours = header[4] === 0;\n const thickness = header[5];\n const numberOfDrawings = header[6];\n const bufferType = header[7];\n const outlines = [];\n const diffsOffset = (BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * numberOfDrawings) * Uint32Array.BYTES_PER_ELEMENT;\n let diffs;\n switch (bufferType) {\n case Int8Array.BYTES_PER_ELEMENT:\n diffs = new Int8Array(data.buffer, diffsOffset);\n break;\n case Int16Array.BYTES_PER_ELEMENT:\n diffs = new Int16Array(data.buffer, diffsOffset);\n break;\n case Int32Array.BYTES_PER_ELEMENT:\n diffs = new Int32Array(data.buffer, diffsOffset);\n break;\n }\n offset = 0;\n for (let i = 0; i < numberOfDrawings; i++) {\n const len = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH];\n const points = new Float32Array(len + 2);\n outlines.push(points);\n for (let j = 0; j < POINTS_PROPERTIES_NUMBER - 1; j++) {\n points[j] = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH + j + 1];\n }\n for (let j = 0; j < len; j++) {\n points[j + 2] = points[j] + diffs[offset++];\n }\n }\n return {\n areContours,\n thickness,\n outlines,\n width,\n height\n };\n } catch (e) {\n warn(`decompressSignature: ${e}`);\n return null;\n }\n }\n}\n\n;// ./src/display/editor/signature.js\n\n\n\n\n\n\n\nclass SignatureOptions extends DrawingOptions {\n constructor() {\n super();\n super.updateProperties({\n fill: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 0\n });\n }\n clone() {\n const clone = new SignatureOptions();\n clone.updateAll(this);\n return clone;\n }\n}\nclass DrawnSignatureOptions extends InkDrawingOptions {\n constructor(viewerParameters) {\n super(viewerParameters);\n super.updateProperties({\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 1\n });\n }\n clone() {\n const clone = new DrawnSignatureOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass SignatureEditor extends DrawingEditor {\n #isExtracted = false;\n #description = null;\n #signatureData = null;\n #signatureUUID = null;\n static _type = \"signature\";\n static _editorType = AnnotationEditorType.SIGNATURE;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n mustBeCommitted: true,\n name: \"signatureEditor\"\n });\n this._willKeepAspectRatio = true;\n this.#signatureData = params.signatureData || null;\n this.#description = null;\n this.defaultL10nId = \"pdfjs-editor-signature-editor1\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new SignatureOptions();\n this._defaultDrawnSignatureOptions = new DrawnSignatureOptions(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 false;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map());\n }\n static get isDrawer() {\n return false;\n }\n get telemetryFinalData() {\n return {\n type: \"signature\",\n hasDescription: !!this.#description\n };\n }\n static computeTelemetryFinalData(data) {\n const hasDescriptionStats = data.get(\"hasDescription\");\n return {\n hasAltText: hasDescriptionStats.get(true) ?? 0,\n hasNoAltText: hasDescriptionStats.get(false) ?? 0\n };\n }\n get isResizable() {\n return true;\n }\n onScaleChanging() {\n if (this._drawId === null) {\n return;\n }\n super.onScaleChanging();\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n const {\n _isCopy\n } = this;\n if (_isCopy) {\n this._isCopy = false;\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n if (this._drawId === null) {\n if (this.#signatureData) {\n const {\n lines,\n mustSmooth,\n areContours,\n description,\n uuid,\n heightInPage\n } = this.#signatureData;\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n const outline = SignatureExtractor.processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth,\n areContours\n });\n this.addSignature(outline, heightInPage, description, uuid);\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: \"\"\n }));\n this.div.hidden = true;\n this._uiManager.getSignature(this);\n }\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: this.#description || \"\"\n }));\n }\n if (_isCopy) {\n this._isCopy = true;\n this._moveAfterPaste(baseX, baseY);\n }\n return this.div;\n }\n setUuid(uuid) {\n this.#signatureUUID = uuid;\n this.addEditToolbar();\n }\n getUuid() {\n return this.#signatureUUID;\n }\n get description() {\n return this.#description;\n }\n set description(description) {\n this.#description = description;\n if (!this.div) {\n return;\n }\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description\n }));\n super.addEditToolbar().then(toolbar => {\n toolbar?.updateEditSignatureButton(description);\n });\n }\n getSignaturePreview() {\n const {\n newCurves,\n areContours,\n thickness,\n width,\n height\n } = this.#signatureData;\n const maxDim = Math.max(width, height);\n const outlineData = SignatureExtractor.processDrawnLines({\n lines: {\n curves: newCurves.map(points => ({\n points\n })),\n thickness,\n width,\n height\n },\n pageWidth: maxDim,\n pageHeight: maxDim,\n rotation: 0,\n innerMargin: 0,\n mustSmooth: false,\n areContours\n });\n return {\n areContours,\n outline: outlineData.outline\n };\n }\n get toolbarButtons() {\n if (this._uiManager.signatureManager) {\n return [[\"editSignature\", this._uiManager.signatureManager]];\n }\n return super.toolbarButtons;\n }\n addSignature(data, heightInPage, description, uuid) {\n const {\n x: savedX,\n y: savedY\n } = this;\n const {\n outline\n } = this.#signatureData = data;\n this.#isExtracted = outline instanceof ContourDrawOutline;\n this.description = description;\n let drawingOptions;\n if (this.#isExtracted) {\n drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n drawingOptions.updateProperties({\n \"stroke-width\": outline.thickness\n });\n }\n this._addOutlines({\n drawOutlines: outline,\n drawingOptions\n });\n const [, pageHeight] = this.pageDimensions;\n let newHeight = heightInPage / pageHeight;\n newHeight = newHeight >= 1 ? 0.5 : newHeight;\n this.width *= newHeight / this.height;\n if (this.width >= 1) {\n newHeight *= 0.9 / this.width;\n this.width = 0.9;\n }\n this.height = newHeight;\n this.setDims();\n this.x = savedX;\n this.y = savedY;\n this.center();\n this._onResized();\n this.onScaleChanging();\n this.rotate();\n this._uiManager.addToAnnotationStorage(this);\n this.setUuid(uuid);\n this._reportTelemetry({\n action: \"pdfjs.signature.inserted\",\n data: {\n hasBeenSaved: !!uuid,\n hasDescription: !!description\n }\n });\n this.div.hidden = false;\n }\n getFromImage(bitmap) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.process(bitmap, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getFromText(text, fontInfo) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.extractContoursFromText(text, fontInfo, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getDrawnSignature(curves) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.processDrawnLines({\n lines: curves,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth: false,\n areContours: false\n });\n }\n createDrawingOptions({\n areContours,\n thickness\n }) {\n if (areContours) {\n this._drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n this._drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n this._drawingOptions.updateProperties({\n \"stroke-width\": thickness\n });\n }\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n const {\n lines,\n points\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = Object.assign(super.serialize(isForCopying), {\n isSignature: true,\n areContours: this.#isExtracted,\n color: [0, 0, 0],\n thickness: this.#isExtracted ? 0 : thickness\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.paths = {\n lines,\n points\n };\n serialized.uuid = this.#signatureUUID;\n serialized.isCopy = true;\n } else {\n serialized.lines = lines;\n }\n if (this.#description) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: this.#description\n };\n }\n return serialized;\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n if (data.areContours) {\n return ContourDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#isExtracted = data.areContours;\n editor.description = data.accessibilityData?.alt || \"\";\n editor.#signatureUUID = data.uuid;\n return editor;\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 #missingCanvas = false;\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 this.defaultL10nId = \"pdfjs-editor-stamp-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static isHandlingMimeForPasting(mime) {\n return SupportedImageMimeTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor({\n mode: AnnotationEditorType.STAMP\n }, {\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.addEditToolbar().then(() => {\n this._editToolbar.hide();\n this._uiManager.editAltText(this, true);\n });\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 = SupportedImageMimeTypes.join(\",\");\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 || this.#missingCanvas);\n }\n get toolbarButtons() {\n return [[\"altText\", this.createAltText()]];\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._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.createAltText();\n if (!this.#missingCanvas) {\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n }\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n this._uiManager.addShouldRescale(this);\n return this.div;\n }\n setCanvas(annotationElementId, canvas) {\n const {\n id: bitmapId,\n bitmap\n } = this._uiManager.imageManager.getFromCanvas(annotationElementId, canvas);\n canvas.remove();\n if (bitmapId && this._uiManager.imageManager.isValidId(bitmapId)) {\n this.#bitmapId = bitmapId;\n if (bitmap) {\n this.#bitmap = bitmap;\n }\n this.#missingCanvas = false;\n this.#createCanvas();\n }\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 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 this.setDims();\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 this.div.setAttribute(\"aria-description\", this.#bitmapFileName);\n }\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-stamp-added-alert\");\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 (ColorScheme.isDarkMode) {\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 #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 let missingCanvas = false;\n if (data instanceof StampAnnotationElement) {\n const {\n data: {\n rect,\n rotation,\n id,\n structParent,\n popupRef,\n richText,\n contentsObj,\n creationDate,\n modificationDate\n },\n container,\n parent: {\n page: {\n pageNumber\n }\n },\n canvas\n } = data;\n let bitmapId, bitmap;\n if (canvas) {\n delete data.canvas;\n ({\n id: bitmapId,\n bitmap\n } = uiManager.imageManager.getFromCanvas(container.id, canvas));\n canvas.remove();\n } else {\n missingCanvas = true;\n data._hasNoCanvas = true;\n }\n const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n initialData = data = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId,\n bitmap,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n accessibilityData: {\n decorative: false,\n altText\n },\n isSvg: false,\n structParent,\n popupRef,\n richText,\n comment: contentsObj?.str || null,\n creationDate,\n modificationDate\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 (missingCanvas) {\n uiManager.addMissingCanvas(data.id, editor);\n editor.#missingCanvas = true;\n } else 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 if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n editor._initialData = initialData;\n if (data.comment) {\n editor.setCommentData(data);\n }\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 = Object.assign(super.serialize(isForCopying), {\n bitmapId: this.#bitmapId,\n isSvg: this.#isSvg\n });\n this.addComment(serialized);\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.serializeAltText(true);\n serialized.isCopy = 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 serialized.id = this.annotationElementId;\n delete serialized.bitmapId;\n return serialized;\n }\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n #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.hasEditedComment && !this._hasBeenMoved && !this._hasBeenResized && isSamePageIndex && isSameAltText,\n isSameAltText\n };\n }\n renderAnnotationElement(annotation) {\n if (this.deleted) {\n annotation.hide();\n return null;\n }\n annotation.updateEdited({\n rect: this.getPDFRect(),\n popup: this.comment\n });\n return null;\n }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\n\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 #textLayerDblClickAC = null;\n #lastPointerDownTimestamp = -1;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor, SignatureEditor].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(options) {\n this.#uiManager.updateToolbar(options);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.div.classList.toggle(\"nonEditing\", true);\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 classList.toggle(\"nonEditing\", false);\n if (mode === AnnotationEditorType.POPUP) {\n classList.toggle(\"commentEditing\", true);\n } else {\n classList.toggle(\"commentEditing\", false);\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\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?.togglePointerEvents(enabled);\n }\n get #allEditorsIterator() {\n return this.#editors.size !== 0 ? this.#editors.values() : this.#uiManager.getEditors(this.pageIndex);\n }\n async enable() {\n this.#isEnabling = true;\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n this.div.classList.toggle(\"nonEditing\", false);\n this.#textLayerDblClickAC?.abort();\n this.#textLayerDblClickAC = null;\n const annotationElementIds = new Set();\n for (const editor of this.#allEditorsIterator) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n const annotationLayer = this.#annotationLayer;\n if (annotationLayer) {\n for (const editable of annotationLayer.getEditableAnnotations()) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = await this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n this.#isEnabling = false;\n this.#uiManager._eventBus.dispatch(\"editorsrendered\", {\n source: this,\n pageNumber: this.pageIndex + 1\n });\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n this.div.classList.toggle(\"nonEditing\", true);\n if (this.#textLayer && !this.#textLayerDblClickAC) {\n this.#textLayerDblClickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textLayerDblClickAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", e => {\n const DBL_CLICK_THRESHOLD = 500;\n const {\n clientX,\n clientY,\n timeStamp\n } = e;\n const lastPointerDownTimestamp = this.#lastPointerDownTimestamp;\n if (timeStamp - lastPointerDownTimestamp > DBL_CLICK_THRESHOLD) {\n this.#lastPointerDownTimestamp = timeStamp;\n return;\n }\n this.#lastPointerDownTimestamp = -1;\n const {\n classList\n } = this.div;\n classList.toggle(\"getElements\", true);\n const elements = document.elementsFromPoint(clientX, clientY);\n classList.toggle(\"getElements\", false);\n if (!this.div.contains(elements[0])) {\n return;\n }\n let id;\n const regex = new RegExp(`^${AnnotationEditorPrefix}[0-9]+$`);\n for (const element of elements) {\n if (regex.test(element.id)) {\n id = element.id;\n break;\n }\n }\n if (!id) {\n return;\n }\n const editor = this.#editors.get(id);\n if (editor?.annotationElementId === null) {\n e.stopPropagation();\n e.preventDefault();\n editor.dblclick(e);\n }\n }, {\n signal,\n capture: true\n });\n }\n const annotationLayer = this.#annotationLayer;\n const needFakeAnnotation = [];\n if (annotationLayer) {\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#allEditorsIterator) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n needFakeAnnotation.push(editor);\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 const editables = annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n editable.updateEdited({\n deleted: true\n });\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 annotationLayer?.updateFakeAnnotations(needFakeAnnotation);\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);\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 getEditorByUID(uid) {\n for (const editor of this.#editors.values()) {\n if (editor.uid === uid) {\n return editor;\n }\n }\n return null;\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 async pasteEditor(options, params) {\n this.updateToolbar(options);\n await this.#uiManager.updateMode(options.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 get boundingClientRect() {\n return this.div.getBoundingClientRect();\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.boundingClientRect;\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(data = {}) {\n this.createAndAddNewEditor(this.#getCenterPoint(), true, data);\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 const currentMode = this.#uiManager.getMode();\n if (currentMode === AnnotationEditorType.STAMP || currentMode === AnnotationEditorType.SIGNATURE) {\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 preventScroll: true\n });\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 #mapping = new Map();\n #toUpdate = new Map();\n static #id = 0;\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 = DrawLayer.#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 = DrawLayer.#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.firstElementChild;\n const pathElement = defs.firstElementChild;\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\n\n\n{\n globalThis._pdfjsTestingUtils = {\n HighlightOutliner: HighlightOutliner\n };\n}\nglobalThis.pdfjsLib = {\n AbortException: AbortException,\n AnnotationEditorLayer: AnnotationEditorLayer,\n AnnotationEditorParamsType: AnnotationEditorParamsType,\n AnnotationEditorType: AnnotationEditorType,\n AnnotationEditorUIManager: AnnotationEditorUIManager,\n AnnotationLayer: AnnotationLayer,\n AnnotationMode: AnnotationMode,\n AnnotationType: AnnotationType,\n applyOpacity: applyOpacity,\n build: build,\n ColorPicker: ColorPicker,\n createValidAbsoluteUrl: createValidAbsoluteUrl,\n CSSConstants: CSSConstants,\n DOMSVGFactory: DOMSVGFactory,\n DrawLayer: DrawLayer,\n FeatureTest: util_FeatureTest,\n fetchData: fetchData,\n findContrastColor: findContrastColor,\n getDocument: getDocument,\n getFilenameFromUrl: getFilenameFromUrl,\n getPdfFilenameFromUrl: getPdfFilenameFromUrl,\n getRGB: getRGB,\n getUuid: getUuid,\n getXfaPageViewport: getXfaPageViewport,\n GlobalWorkerOptions: GlobalWorkerOptions,\n ImageKind: util_ImageKind,\n InvalidPDFException: InvalidPDFException,\n isDataScheme: isDataScheme,\n isPdfFile: isPdfFile,\n isValidExplicitDest: isValidExplicitDest,\n MathClamp: MathClamp,\n noContextMenu: noContextMenu,\n normalizeUnicode: normalizeUnicode,\n OPS: OPS,\n OutputScale: OutputScale,\n PasswordResponses: PasswordResponses,\n PDFDataRangeTransport: PDFDataRangeTransport,\n PDFDateString: PDFDateString,\n PDFWorker: PDFWorker,\n PermissionFlag: PermissionFlag,\n PixelsPerInch: PixelsPerInch,\n RenderingCancelledException: RenderingCancelledException,\n renderRichText: renderRichText,\n ResponseException: ResponseException,\n setLayerDimensions: setLayerDimensions,\n shadow: shadow,\n SignatureExtractor: SignatureExtractor,\n stopEvent: stopEvent,\n SupportedImageMimeTypes: SupportedImageMimeTypes,\n TextLayer: TextLayer,\n TouchManager: TouchManager,\n updateUrlHash: updateUrlHash,\n Util: Util,\n VerbosityLevel: VerbosityLevel,\n version: version,\n XfaLayer: XfaLayer\n};\n\nexport { AbortException, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, AnnotationEditorUIManager, AnnotationLayer, AnnotationMode, AnnotationType, CSSConstants, ColorPicker, DOMSVGFactory, DrawLayer, util_FeatureTest as FeatureTest, GlobalWorkerOptions, util_ImageKind as ImageKind, InvalidPDFException, MathClamp, OPS, OutputScale, PDFDataRangeTransport, PDFDateString, PDFWorker, PasswordResponses, PermissionFlag, PixelsPerInch, RenderingCancelledException, ResponseException, SignatureExtractor, SupportedImageMimeTypes, TextLayer, TouchManager, Util, VerbosityLevel, XfaLayer, applyOpacity, build, createValidAbsoluteUrl, fetchData, findContrastColor, getDocument, getFilenameFromUrl, getPdfFilenameFromUrl, getRGB, getUuid, getXfaPageViewport, isDataScheme, isPdfFile, isValidExplicitDest, noContextMenu, normalizeUnicode, renderRichText, setLayerDimensions, shadow, stopEvent, updateUrlHash, version };\n\n//# sourceMappingURL=pdf.mjs.map","// src/bind-this.ts\nvar hasOwnProperty = Object.hasOwnProperty;\nvar bindThisHandler = {\n get: (target, property) => {\n if (hasOwnProperty.call(target, property)) {\n return target[property];\n }\n const m2 = target[property];\n if (typeof m2 === \"function\") {\n return target[property] = m2.bind(target);\n }\n return m2;\n }\n};\nvar bindThisProxyMap = /* @__PURE__ */ new WeakMap();\nfunction bindThis(obj) {\n let proxy = bindThisProxyMap.get(obj);\n if (!proxy) {\n proxy = new Proxy(obj, bindThisHandler);\n bindThisProxyMap.set(obj, proxy);\n }\n return proxy;\n}\n\n// src/prop-hook.ts\nvar initPropHookSymbol = /* @__PURE__ */ Symbol.for(\"Serenity.initPropHook\");\n\n// src/util.ts\nfunction isElement(val) {\n return !!(val && typeof val.nodeType === \"number\");\n}\nfunction isString(val) {\n return typeof val === \"string\";\n}\nfunction isNumber(val) {\n return typeof val === \"number\";\n}\nfunction isObject(val) {\n return typeof val === \"object\" && val !== null;\n}\nfunction isComponentClass(val) {\n return !!(val && val.isComponent);\n}\nfunction isArrayLike(val) {\n return isObject(val) && typeof val.length === \"number\" && typeof val.nodeType !== \"number\";\n}\nfunction isPropHook(value) {\n return typeof value === \"function\" && typeof value[initPropHookSymbol] === \"function\";\n}\nfunction isVisibleChild(val) {\n return val != null && typeof val !== \"boolean\";\n}\n\n// src/class-name.ts\nfunction className(value) {\n if (Array.isArray(value)) {\n return value.map(className).filter(Boolean).join(\" \");\n } else if (isObject(value)) {\n if (Symbol.iterator in value) {\n return className(Array.from(value));\n }\n return Object.keys(value).filter((k) => value[k]).join(\" \");\n } else if (isVisibleChild(value)) {\n return \"\" + value;\n } else {\n return \"\";\n }\n}\n\n// src/ref.ts\nfunction createRef() {\n return Object.seal({ current: null });\n}\nfunction isRefObject(maybeRef) {\n return maybeRef != null && typeof maybeRef === \"object\" && \"current\" in maybeRef;\n}\nfunction setRef(ref, current) {\n if (isRefObject(ref)) {\n ref.current = current;\n } else if (typeof ref === \"function\") {\n ref(current);\n }\n}\n\n// src/component.ts\nvar Component = class {\n static {\n this.isComponent = true;\n }\n constructor(props) {\n this.props = props;\n }\n render() {\n return null;\n }\n};\nfunction initComponentClass(Class, attr, children) {\n attr = { ...attr, children };\n const instance = new Class(attr);\n const node = instance.render();\n if (\"ref\" in attr) {\n setRef(attr.ref, instance);\n }\n return node;\n}\n\n// src/mathml-consts.ts\nvar MathMLNamespace = \"http://www.w3.org/1998/Math/MathML\";\nvar mathMLOnlyTags = /* @__PURE__ */ new Set([\"math\", \"annotation\", \"annotation-xml\", \"maction\", \"merror\", \"mfrac\", \"mi\", \"mmultiscripts\", \"mn\", \"mo\", \"mover\", \"mpadded\", \"mphantom\", \"mprescripts\", \"mroot\", \"mrow\", \"ms\", \"mspace\", \"msqrt\", \"mstyle\", \"msub\", \"msubsup\", \"msup\", \"mtable\", \"mtd\", \"mtext\", \"mtr\", \"munder\", \"munderover\", \"semantics\", \"menclose\", \"mfenced\"]);\n\n// src/svg-consts.ts\nvar svgOnlyTags = /* @__PURE__ */ new Set([\n // \"a\",\n \"animate\",\n \"animateMotion\",\n \"animateTransform\",\n \"circle\",\n \"clipPath\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"filter\",\n \"foreignObject\",\n \"g\",\n \"image\",\n \"line\",\n \"linearGradient\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"mpath\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"radialGradient\",\n \"rect\",\n // \"script\",\n \"set\",\n \"stop\",\n // \"style\",\n \"svg\",\n \"switch\",\n \"symbol\",\n \"text\",\n \"textPath\",\n // \"title\",\n \"tref\",\n \"tspan\",\n \"use\",\n \"view\"\n]);\nvar nonPresentationSVGAttributes = /^(a(ll|t|u)|base[FP]|c(al|lipPathU|on)|di|ed|ex|filter[RU]|g(lyphR|r)|ke|l(en|im)|ma(rker[HUW]|s)|n|pat|pr|point[^e]|re[^n]|s[puy]|st[^or]|ta|textL|vi|xC|y|z)/;\nvar SVGNamespace = \"http://www.w3.org/2000/svg\";\n\n// src/in-namespace-uri.ts\nvar jsxNamespaceURISymbol = /* @__PURE__ */ Symbol.for(\"Serenity.jsxNamespaceURI\");\nfunction currentNamespaceURI(value) {\n const current = globalThis[jsxNamespaceURISymbol];\n if (!arguments.length) {\n return current;\n }\n globalThis[jsxNamespaceURISymbol] = value;\n return current;\n}\nfunction inNamespaceURI(namespaceURI, children) {\n const prev = currentNamespaceURI(namespaceURI);\n let result;\n try {\n result = children();\n } finally {\n currentNamespaceURI(prev);\n }\n return result;\n}\nfunction inSVGNamespace(fn) {\n return inNamespaceURI(SVGNamespace, fn);\n}\nfunction inMathMLNamespace(fn) {\n return inNamespaceURI(MathMLNamespace, fn);\n}\nfunction inHTMLNamespace(fn) {\n return inNamespaceURI(null, fn);\n}\n\n// src/shadow.ts\nvar jsxTypeKeySymbol = /* @__PURE__ */ Symbol.for(\"Serenity.jsxTypeKey\");\nvar shadowRootKey = \"ShadowRoot\";\nfunction ShadowRootNode({\n children,\n ref,\n ...attr\n}) {\n return {\n [jsxTypeKeySymbol]: shadowRootKey,\n ref,\n attr,\n children\n };\n}\nfunction isShadowRoot(el) {\n return el != null && el[jsxTypeKeySymbol] === shadowRootKey;\n}\n\n// src/disposing-listener.ts\nvar disposingListenersSymbol = /* @__PURE__ */ Symbol.for(\"Serenity.disposingListeners\");\nvar lifecycleRootSymbol = /* @__PURE__ */ Symbol.for(\"Serenity.lifecycleRoot\");\nfunction getDisposingListeners() {\n return globalThis[disposingListenersSymbol] ||= /* @__PURE__ */ new WeakMap();\n}\nfunction disposingEventListener(ev) {\n if (ev && ev.target && (!ev.currentTarget || ev.currentTarget === ev.target))\n invokeDisposingListeners(ev?.target);\n}\nfunction dispatchDisposingEvent(target, opt) {\n if (!target || typeof CustomEvent !== \"function\")\n return;\n const event = new CustomEvent(\"disposing\", {\n bubbles: opt?.bubbles ?? false,\n cancelable: opt?.cancelable ?? false\n });\n target.dispatchEvent(event);\n}\nfunction invokeDisposingListeners(node, opt) {\n if (!node)\n return;\n const disposingListeners = getDisposingListeners();\n function invokeFor(el) {\n const listeners = disposingListeners.get(el);\n if (!listeners)\n return;\n disposingListeners.delete(el);\n el.removeEventListener(\"disposing\", disposingEventListener);\n for (const disposer of listeners) {\n try {\n disposer.callback(el);\n } catch {\n }\n }\n }\n if (opt?.descendants && node instanceof Element && node.hasChildNodes()) {\n const descendants = [];\n const iterator = document.createNodeIterator(\n node,\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT\n );\n let currentNode;\n while (currentNode = iterator.nextNode()) {\n if (currentNode !== node) {\n descendants.push(currentNode);\n }\n }\n for (let i2 = 0; i2 < descendants.length; i2++) {\n invokeFor(descendants[i2]);\n }\n }\n if (!opt?.excludeSelf) {\n invokeFor(node);\n }\n}\nfunction addDisposingListener(target, handler, regKey) {\n if (!target || !handler)\n return target;\n const disposingListeners = getDisposingListeners();\n let listeners = disposingListeners.get(target);\n if (!listeners) {\n if (typeof target.addEventListener !== \"function\")\n return target;\n disposingListeners.set(target, listeners = [{\n callback: handler,\n regKey\n }]);\n target.addEventListener(\"disposing\", disposingEventListener, { once: true });\n return target;\n }\n const existing = listeners.find((x2) => x2.callback === handler);\n if (existing) {\n if (existing.regKey && regKey && existing.regKey !== regKey) {\n throw new Error(\"A disposing listener with the same callback but different regKey is already registered on the target element.\");\n }\n if (regKey && !existing.regKey) {\n existing.regKey = regKey;\n }\n return target;\n }\n listeners.push({ callback: handler, regKey });\n return target;\n}\nfunction removeDisposingListener(target, handler, regKey) {\n if (!target || !handler && !regKey)\n return target;\n const disposingListeners = getDisposingListeners();\n const listeners = disposingListeners.get(target);\n if (listeners) {\n for (let index = listeners.length - 1; index >= 0; index--) {\n const listener = listeners[index];\n if (regKey && listener.regKey === regKey || handler && handler === listener.callback) {\n listeners.splice(index, 1);\n }\n }\n if (listeners.length === 0) {\n disposingListeners.delete(target);\n if (typeof target.removeEventListener === \"function\") {\n target.removeEventListener(\"disposing\", disposingEventListener);\n }\n }\n }\n return target;\n}\nfunction currentLifecycleRoot(...args) {\n if (args.length > 0) {\n const prev = globalThis[lifecycleRootSymbol] || null;\n globalThis[lifecycleRootSymbol] = args[0] || null;\n return prev;\n }\n return globalThis[lifecycleRootSymbol] || null;\n}\n\n// src/signal-util.ts\nfunction isSignalLike(obj) {\n return obj != null && typeof obj === \"object\" && typeof obj.subscribe === \"function\" && typeof obj.peek === \"function\" && \"value\" in obj;\n}\nvar SignalObserveArgsImpl = class {\n #dispose;\n #node;\n constructor(signal2, lifecycleRoot, lifecycleNode) {\n this.signal = signal2;\n this.isInitial = true;\n this.hasChanged = false;\n this.lifecycleRoot = lifecycleRoot;\n this.#node = lifecycleNode;\n }\n get lifecycleNode() {\n return this.#node;\n }\n #delDispose() {\n removeDisposingListener(this.#node, this.effectDisposer);\n removeDisposingListener(this.#node, this.signal?.derivedDisposer);\n }\n #addDispose() {\n addDisposingListener(this.#node, this.effectDisposer);\n addDisposingListener(this.#node, this.signal?.derivedDisposer);\n }\n get effectDisposer() {\n return this.#dispose;\n }\n set effectDisposer(value) {\n this.#delDispose();\n this.#dispose = value;\n this.#addDispose();\n }\n set lifecycleNode(value) {\n if (value !== this.#node) {\n this.#delDispose();\n this.#node = value;\n this.#addDispose();\n }\n }\n};\nfunction observeSignal(signal2, callback, opt) {\n const lifecycleRoot = opt?.useLifecycleRoot ? currentLifecycleRoot() : void 0;\n const args = new SignalObserveArgsImpl(signal2, lifecycleRoot, opt?.lifecycleNode);\n const disposer = args.signal.subscribe(function(value) {\n args.newValue = value;\n if (args.isInitial && this?.dispose) {\n args.effectDisposer = this.dispose.bind(this);\n }\n args.hasChanged = !args.isInitial && args.prevValue !== args.newValue;\n try {\n callback(args);\n } finally {\n args.prevValue = args.newValue;\n args.isInitial = false;\n }\n });\n if (disposer && !args.effectDisposer) {\n args.effectDisposer = disposer;\n }\n return args.effectDisposer;\n}\nfunction derivedSignal(input, fn) {\n if (!isSignalLike(input)) {\n throw new Error(\"Input must be a SignalLike\");\n }\n const callback = () => fn(input.value);\n if (typeof input.constructor === \"function\" && input.constructor !== {}.constructor) {\n try {\n let derived = new input.constructor(callback);\n let disposer2;\n if (isSignalLike(derived)) {\n if (derived.peek() === callback) {\n disposer2 = input.subscribe(() => {\n derived.value = callback();\n });\n }\n if (disposer2) {\n derived.derivedDisposer = function() {\n disposer2();\n delete derived.derivedDisposer;\n };\n }\n return derived;\n }\n } catch (error) {\n }\n }\n let primitive;\n const disposer = input.subscribe(() => {\n if (!primitive) {\n primitive = new PrimitiveComputed(callback);\n return;\n }\n primitive.update();\n });\n if (disposer) {\n primitive.derivedDisposer = function() {\n disposer();\n delete primitive.derivedDisposer;\n };\n }\n return primitive;\n}\nvar PrimitiveComputed = class {\n #subs = /* @__PURE__ */ new Set();\n #value;\n #fn;\n constructor(fn) {\n this.#fn = fn;\n this.update(true);\n }\n update(force) {\n const newValue = this.#fn();\n if (newValue !== this.#value || force) {\n this.#value = newValue;\n this.#subs.forEach((sub) => sub(newValue));\n }\n }\n subscribe(callback) {\n callback(this.#value);\n this.#subs.add(callback);\n return () => this.#subs.delete(callback);\n }\n peek() {\n return this.#value;\n }\n get value() {\n return this.#value;\n }\n};\n\n// src/jsx-append-children.ts\nfunction appendChild(parent, child) {\n if (parent instanceof window.HTMLTemplateElement) {\n parent.content.appendChild(child);\n } else {\n parent.appendChild(child);\n }\n}\nvar fragmentPlaceholderIdx = 0;\nvar placeholderPrefix = \"__domwisefrag_\";\nfunction isPlaceholder(node) {\n return node instanceof Comment && node.data.startsWith(placeholderPrefix);\n}\nfunction isFragmentWithPlaceholder(node) {\n return node instanceof DocumentFragment && isPlaceholder(node.firstChild);\n}\nfunction replaceNode(oldNode, newNode) {\n if (typeof oldNode.replaceWith === \"function\")\n oldNode.replaceWith(newNode);\n else\n oldNode.parentNode?.replaceChild(newNode, oldNode);\n}\nfunction wrapAsNode(value) {\n if (value instanceof DocumentFragment) {\n ++fragmentPlaceholderIdx;\n value.prepend(document.createComment(placeholderPrefix + fragmentPlaceholderIdx));\n value.append(document.createComment(placeholderPrefix + fragmentPlaceholderIdx));\n return value;\n }\n if (value instanceof Node) {\n return value;\n }\n if (!isVisibleChild(value)) {\n return document.createComment(\"\");\n }\n return document.createTextNode(value);\n}\nfunction appendChildrenWithSignal(parent, signal2) {\n let prevNode;\n observeSignal(signal2, (args) => {\n if (args.isInitial) {\n prevNode = wrapAsNode(args.newValue);\n let prevNodeNew2 = isFragmentWithPlaceholder(prevNode) ? prevNode.firstChild : prevNode;\n appendChildren(parent, prevNode);\n args.lifecycleNode = (prevNode = prevNodeNew2) ?? parent;\n return;\n }\n if (!args.hasChanged) {\n return;\n }\n const newNode = wrapAsNode(args.newValue);\n if (isPlaceholder(prevNode)) {\n let n2;\n while (n2 = prevNode.nextSibling) {\n n2.parentNode?.removeChild(n2);\n if (n2 instanceof Comment && n2.data === prevNode.data) {\n break;\n }\n }\n }\n let prevNodeNew = isFragmentWithPlaceholder(newNode) ? newNode.firstChild : newNode;\n replaceNode(prevNode, newNode);\n args.lifecycleNode = (prevNode = prevNodeNew) ?? parent;\n });\n}\nfunction appendChildren(parent, children) {\n if (!isVisibleChild(children)) return;\n if (isArrayLike(children)) {\n for (const child of [...children]) {\n appendChildren(parent, child);\n }\n } else if (isString(children) || isNumber(children)) {\n appendChild(parent, document.createTextNode(children));\n } else if (isElement(children)) {\n appendChild(parent, children);\n } else if (isShadowRoot(children)) {\n const shadowRoot = parent.attachShadow(children.attr);\n appendChildren(shadowRoot, children.children);\n setRef(children.ref, shadowRoot);\n } else if (isSignalLike(children)) {\n appendChildrenWithSignal(parent, children);\n }\n}\n\n// src/jsx-assign-class.ts\nfunction unsignalizePrevClass(prev) {\n if (prev == null)\n return prev;\n if (isArrayLike(prev)) {\n prev = Array.from(prev).map((item) => {\n if (isSignalLike(item))\n return item.peek();\n return item;\n });\n } else if (isObject(prev)) {\n prev = { ...prev };\n Object.entries(prev).forEach(([key, val]) => {\n if (isSignalLike(val))\n prev[key] = val.peek();\n });\n }\n return prev;\n}\nfunction clearPrevClass(node, prev) {\n if (prev == null || prev === false || prev === true)\n return;\n prev = unsignalizePrevClass(prev);\n const prevClassNames = (className(prev) ?? \"\").split(\" \");\n for (let cls of prevClassNames) {\n if (cls) {\n node.classList.remove(cls);\n }\n }\n}\nfunction assignClass(node, value, prev) {\n if (value == null || value === false) {\n clearPrevClass(node, prev);\n return;\n }\n prev = unsignalizePrevClass(prev);\n if (isArrayLike(value)) {\n value = Array.from(value).map((x2) => {\n let val = x2;\n if (isSignalLike(x2)) {\n observeSignal(x2, (args) => {\n if (args.isInitial) {\n val = args.newValue;\n return;\n }\n applyClassName(node, args.newValue, args.prevValue);\n }, {\n lifecycleNode: node\n });\n }\n return val;\n });\n } else if (isObject(value)) {\n value = { ...value };\n Object.entries(value).forEach(([key, val]) => {\n if (isSignalLike(val)) {\n observeSignal(val, (args) => {\n if (args.isInitial) {\n value[key] = args.newValue;\n return;\n }\n applyClassName(node, Boolean(args.newValue) && key, Boolean(args.prevValue) && key);\n }, {\n lifecycleNode: node\n });\n }\n });\n }\n applyClassName(node, value, prev);\n}\nfunction applyClassName(node, value, prev) {\n const newList = (className(value) ?? \"\").split(\" \");\n if (prev) {\n const prevList = (className(prev) ?? \"\").split(\" \");\n for (let cls of prevList) {\n if (cls && !newList.includes(cls)) {\n node.classList.remove(cls);\n }\n }\n }\n for (let cls of newList) {\n cls && node.classList.add(cls);\n }\n}\n\n// src/jsx-assign-style.ts\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\nvar isUnitlessNumber = /* @__PURE__ */ (() => {\n let rec = {\n animationIterationCount: 0,\n borderImageOutset: 0,\n borderImageSlice: 0,\n borderImageWidth: 0,\n boxFlex: 0,\n boxFlexGroup: 0,\n boxOrdinalGroup: 0,\n columnCount: 0,\n columns: 0,\n flex: 0,\n flexGrow: 0,\n flexPositive: 0,\n flexShrink: 0,\n flexNegative: 0,\n flexOrder: 0,\n gridArea: 0,\n gridRow: 0,\n gridRowEnd: 0,\n gridRowSpan: 0,\n gridRowStart: 0,\n gridColumn: 0,\n gridColumnEnd: 0,\n gridColumnSpan: 0,\n gridColumnStart: 0,\n fontWeight: 0,\n lineClamp: 0,\n lineHeight: 0,\n opacity: 0,\n order: 0,\n orphans: 0,\n tabSize: 0,\n widows: 0,\n zIndex: 0,\n zoom: 0,\n // SVG-related properties\n fillOpacity: 0,\n floodOpacity: 0,\n stopOpacity: 0,\n strokeDasharray: 0,\n strokeDashoffset: 0,\n strokeMiterlimit: 0,\n strokeOpacity: 0,\n strokeWidth: 0\n };\n const prefixes = [\"Webkit\", \"ms\", \"Moz\", \"O\"];\n Object.keys(rec).forEach((prop) => {\n prefixes.forEach((prefix) => {\n rec[prefixKey(prefix, prop)] = 0;\n });\n });\n return rec;\n})();\nfunction setStylePropValue(node, key, val) {\n if (key.indexOf(\"-\") === 0) {\n node.style.setProperty(key, val);\n } else if (isNumber(val) && isUnitlessNumber[key] !== 0) {\n node.style[key] = val + \"px\";\n } else {\n node.style[key] = val;\n }\n}\nfunction clearPrevStyle(node, prev) {\n if (prev == null || prev === false || prev === true)\n return;\n if (isString(prev)) {\n node.removeAttribute(\"style\");\n return;\n }\n if (isObject(prev)) {\n Object.keys(prev).forEach((key) => {\n setStylePropValue(node, key, \"\");\n });\n }\n}\nfunction assignStyle(node, value, prev) {\n if (value == null || value === false || value === true) {\n clearPrevStyle(node, prev);\n return;\n }\n if (isString(value)) {\n node.setAttribute(\"style\", value);\n return;\n }\n if (isObject(value)) {\n if (isObject(prev)) {\n value = { ...value };\n Object.keys(prev).forEach((key) => {\n if (!(key in value))\n value[key] = \"\";\n });\n } else\n clearPrevStyle(node, prev);\n Object.entries(value).forEach(([key, val]) => {\n if (isSignalLike(val)) {\n observeSignal(val, (args) => setStylePropValue(node, key, args.newValue), {\n lifecycleNode: node\n });\n } else {\n setStylePropValue(node, key, val);\n }\n });\n return;\n }\n}\n\n// src/jsx-assign-props.ts\nvar XLinkNamespace = \"http://www.w3.org/1999/xlink\";\nvar XMLNamespace = \"http://www.w3.org/XML/1998/namespace\";\nfunction normalizeAttribute(s2, separator) {\n return s2.replace(/[A-Z]/g, (match) => separator + match.toLowerCase());\n}\nvar mappedKeys = /* @__PURE__ */ new Map([\n [\"autoComplete\", \"autocomplete\"],\n [\"autoFocus\", \"autofocus\"],\n [\"className\", \"class\"],\n [\"colSpan\", \"colspan\"],\n [\"contentEditable\", \"contenteditable\"],\n [\"formNoValidate\", \"formnovalidate\"],\n [\"htmlFor\", \"for\"],\n [\"innerText\", \"textContent\"],\n [\"minLength\", \"minlength\"],\n [\"maxLength\", \"maxlength\"],\n [\"readOnly\", \"readonly\"],\n [\"reffererPolicy\", \"referrerpolicy\"],\n [\"rowSpan\", \"rowspan\"],\n [\"spellCheck\", \"spellcheck\"],\n [\"tabIndex\", \"tabindex\"],\n [\"onDoubleClick\", \"onDblClick\"],\n [\"onDoubleClickCapture\", \"onDblClickCapture\"]\n]);\nfunction assignProp(node, key, value, prev) {\n switch (key) {\n case \"dataset\":\n if (prev != null) {\n Object.entries(prev).forEach(([k, v2]) => {\n if (v2 != null) {\n delete node.dataset[k];\n }\n });\n }\n Object.entries(value).forEach(([dataKey, dataValue]) => {\n if (dataValue != null) {\n node.dataset[dataKey] = dataValue;\n }\n });\n return;\n case \"textContent\":\n if (isVisibleChild(value)) {\n node[key] = value;\n } else if (isVisibleChild(prev)) {\n node[key] = \"\";\n }\n return;\n case \"dangerouslySetInnerHTML\":\n if (isObject(value)) {\n node.innerHTML = value[\"__html\"];\n } else if (isObject(prev)) {\n node.innerHTML = \"\";\n }\n return;\n case \"value\":\n if (value == null) {\n if (prev != null) {\n node[key] = null;\n }\n return;\n } else if (node instanceof window.HTMLSelectElement) {\n return;\n } else if (node instanceof window.HTMLTextAreaElement) {\n node.value = value;\n return;\n }\n break;\n case \"class\":\n assignClass(node, value, prev);\n return;\n case \"spellcheck\":\n node.spellcheck = value === \"\" || value === true || value === \"true\" ? true : value === false || value === \"false\" ? false : value;\n return;\n case \"draggable\":\n if (value === false || value === \"false\")\n value = \"false\";\n else if (value === \"\")\n value = null;\n else if (value === true || value === \"true\")\n value = \"true\";\n break;\n case \"contenteditable\":\n if (value === false)\n value = \"false\";\n else if (value === \"\" || value === true)\n value = \"true\";\n break;\n case \"ref\":\n case \"namespaceURI\":\n return;\n case \"style\":\n assignStyle(node, value, prev);\n return;\n case \"on\":\n case \"onCapture\":\n const useCapture = key === \"onCapture\";\n if (prev != null) {\n Object.entries(prev).forEach(([eventName, eventHandler]) => {\n if (value == null || value[eventName] !== eventHandler) {\n node.removeEventListener(eventName, eventHandler, useCapture);\n }\n });\n }\n Object.entries(value).forEach(([eventName, eventHandler]) => {\n if (prev == null || prev[eventName] !== eventHandler) {\n node.addEventListener(eventName, eventHandler, useCapture);\n }\n });\n return;\n case \"xlinkActuate\":\n case \"xlinkArcrole\":\n case \"xlinkHref\":\n case \"xlinkRole\":\n case \"xlinkShow\":\n case \"xlinkTitle\":\n case \"xlinkType\":\n node.setAttributeNS(XLinkNamespace, normalizeAttribute(key, \":\"), value);\n return;\n case \"xmlnsXlink\":\n node.setAttribute(\"xmlns:xlink\", value);\n return;\n case \"xmlBase\":\n case \"xmlLang\":\n case \"xmlSpace\":\n node.setAttributeNS(XMLNamespace, normalizeAttribute(key, \":\"), value);\n return;\n }\n if (typeof value === \"function\") {\n if (key[0] === \"o\" && key[1] === \"n\") {\n if (prev != null && prev === value)\n return;\n let attribute = key.toLowerCase();\n const useCapture = attribute.endsWith(\"capture\");\n let eventName;\n if (!useCapture && (node[attribute] === null || prev != null && node[attribute] === prev)) {\n node[attribute] = value;\n addDisposingListener(node, nodeEventPropDisposer.bind(node, attribute));\n } else if (useCapture) {\n eventName = attribute.substring(2, attribute.length - 7);\n if (prev != null) {\n node.removeEventListener(eventName, prev, true);\n }\n node.addEventListener(eventName, value, true);\n } else {\n if (attribute in window) {\n const standardEventName = attribute.substring(2);\n eventName = standardEventName;\n } else {\n const customEventName = attribute[2] + key.slice(3);\n eventName = customEventName;\n }\n if (prev != null) {\n node.removeEventListener(eventName, prev);\n }\n node.addEventListener(eventName, value);\n }\n } else {\n console.warn(`A function was provided for JSX ${node.tagName} element ${key} which does not start with \"on\":`, value, node.tagName);\n }\n return;\n }\n if (isObject(prev)) {\n if (prev === value) {\n return;\n }\n delete node[key];\n }\n if (prev === true) {\n if (prev === value) {\n return;\n }\n node.removeAttribute(key);\n }\n if (prev !== false && prev != null) {\n if (prev === value) {\n return;\n }\n if (node instanceof SVGElement && !nonPresentationSVGAttributes.test(key)) {\n node.removeAttributeNS(normalizeAttribute(key, \"-\"), value);\n } else {\n node.removeAttribute(key);\n }\n }\n if (isObject(value)) {\n node[key] = value;\n return;\n }\n if (value === true) {\n node.setAttribute(key, \"\");\n return;\n }\n if (value !== false && value != null) {\n if (node instanceof SVGElement && !nonPresentationSVGAttributes.test(key)) {\n node.setAttribute(normalizeAttribute(key, \"-\"), value);\n } else {\n node.setAttribute(key, value);\n }\n }\n}\nfunction assignProps(node, props) {\n for (let [key, value] of Object.entries(props)) {\n key = mappedKeys.get(key) ?? key;\n if (isSignalLike(value)) {\n observeSignal(value, (args) => assignProp(node, key, args.newValue, args.prevValue), {\n lifecycleNode: node\n });\n } else if (isPropHook(value)) {\n value[initPropHookSymbol](node, key);\n } else {\n assignProp(node, key, value);\n }\n }\n return node;\n}\nfunction nodeEventPropDisposer(key) {\n this[key] = null;\n}\n\n// src/jsx-factory.ts\nfunction jsx(tag, props) {\n let { children, ...attr } = props || {};\n let ns = attr.namespaceURI;\n if (!ns) {\n if (svgOnlyTags.has(tag))\n ns = SVGNamespace;\n else if (mathMLOnlyTags.has(tag))\n ns = MathMLNamespace;\n else\n ns = currentNamespaceURI();\n }\n let node;\n if (isString(tag)) {\n node = ns ? document.createElementNS(ns, tag) : document.createElement(tag);\n assignProps(node, attr);\n appendChildren(node, children);\n if (node instanceof window.HTMLSelectElement && attr.value != null) {\n if (attr.multiple === true && Array.isArray(attr.value)) {\n const values = attr.value.map((value) => String(value));\n node.querySelectorAll(\"option\").forEach((option) => option.selected = values.includes(option.value));\n } else {\n node.value = attr.value;\n }\n }\n setRef(attr.ref, node);\n } else if (typeof tag === \"function\") {\n if (isObject(tag.defaultProps)) {\n attr = { ...tag.defaultProps, ...attr };\n }\n node = isComponentClass(tag) ? initComponentClass(tag, attr, children) : tag({ ...attr, children });\n } else {\n throw new TypeError(`Invalid JSX element type: ${tag}`);\n }\n return node;\n}\n\n// src/compat-api.ts\nfunction createElement(tag, attr, ...children) {\n if (isString(attr) || Array.isArray(attr)) {\n children.unshift(attr);\n attr = {};\n }\n attr = attr || {};\n if (attr.children != null && !children.length) {\n ({ children, ...attr } = attr);\n }\n return jsx(tag, { ...attr, children });\n}\nfunction useImperativeHandle(ref, init) {\n setRef(ref, init());\n}\n\n// src/fragment.ts\nfunction Fragment(attr) {\n const fragment = document.createDocumentFragment();\n appendChildren(fragment, attr.children);\n return fragment;\n}\n\n// src/hooks.ts\nfunction useClassList(initialValue) {\n let temp = document.createElement(\"div\");\n if (initialValue != null) {\n temp.className = className(initialValue);\n }\n let list = temp.classList;\n function ClassList() {\n return list;\n }\n function dispose() {\n list = null;\n temp = null;\n }\n Object.defineProperties(\n ClassList,\n Object.getOwnPropertyDescriptors({\n [initPropHookSymbol](node, prop) {\n if (prop !== \"class\")\n throw new Error(\"useClassList can only be used for 'class' attribute.\");\n temp && removeDisposingListener(temp, dispose);\n list && node?.setAttribute(\"class\", list.value);\n addDisposingListener(temp = node, dispose);\n list = node?.classList ?? list;\n },\n get size() {\n return list.length;\n },\n get value() {\n return list.value;\n },\n add(...tokens) {\n list.add(...tokens);\n },\n remove(...tokens) {\n list.remove(...tokens);\n },\n toggle(token, force) {\n list.toggle(token, force);\n },\n contains(token) {\n return list.contains(token);\n }\n })\n );\n return ClassList;\n}\nfunction propBinding(value) {\n if (arguments.length && value !== this.value) {\n this.node && this.prop && assignProp(this.node, this.prop, value, this.value);\n this.value = value;\n }\n return this.value;\n}\nfunction propBindingDispose() {\n delete this.node;\n}\nfunction propBindingInit(el, key) {\n if (this.node && el && this.node !== el || this.prop && key && this.prop !== key) {\n throw new Error(\"usePropBinding can only be used with one element and one attribute. Create a new setter for each element / prop.\");\n }\n if (this.node)\n removeDisposingListener(this.node, this.dispose);\n this.node = el;\n if (this.node) {\n addDisposingListener(this.node, this.dispose);\n assignProp(this.node, this.prop ??= key, this.value);\n }\n}\nfunction usePropBinding(initialValue) {\n const accessorThis = {\n value: initialValue\n };\n accessorThis.dispose = propBindingDispose.bind(accessorThis);\n const hook = propBinding.bind(accessorThis);\n hook[initPropHookSymbol] = propBindingInit.bind(accessorThis);\n return hook;\n}\nfunction useText(initialValue) {\n const text = new Text();\n Object.defineProperty(text, \"toString\", {\n value() {\n return this.textContent;\n }\n });\n function setText(value) {\n text.textContent = value;\n }\n if (initialValue != null) {\n setText(initialValue);\n }\n return [text, setText];\n}\n\n// ../../node_modules/.pnpm/@preact+signals-core@1.14.1/node_modules/@preact/signals-core/dist/signals-core.module.js\nvar i = /* @__PURE__ */ Symbol.for(\"preact-signals\");\nfunction t() {\n if (!(s > 1)) {\n var i2, t2 = false;\n !(function() {\n var i3 = c;\n c = void 0;\n while (void 0 !== i3) {\n if (i3.S.v === i3.v) i3.S.i = i3.i;\n i3 = i3.o;\n }\n })();\n while (void 0 !== h) {\n var n2 = h;\n h = void 0;\n v++;\n while (void 0 !== n2) {\n var r2 = n2.u;\n n2.u = void 0;\n n2.f &= -3;\n if (!(8 & n2.f) && w(n2)) try {\n n2.c();\n } catch (n3) {\n if (!t2) {\n i2 = n3;\n t2 = true;\n }\n }\n n2 = r2;\n }\n }\n v = 0;\n s--;\n if (t2) throw i2;\n } else s--;\n}\nfunction n(i2) {\n if (s > 0) return i2();\n e = ++u;\n s++;\n try {\n return i2();\n } finally {\n t();\n }\n}\nvar r = void 0;\nfunction o(i2) {\n var t2 = r;\n r = void 0;\n try {\n return i2();\n } finally {\n r = t2;\n }\n}\nvar f;\nvar h = void 0;\nvar s = 0;\nvar v = 0;\nvar u = 0;\nvar e = 0;\nvar c = void 0;\nvar d = 0;\nfunction a(i2) {\n if (void 0 !== r) {\n var t2 = i2.n;\n if (void 0 === t2 || t2.t !== r) {\n t2 = { i: 0, S: i2, p: r.s, n: void 0, t: r, e: void 0, x: void 0, r: t2 };\n if (void 0 !== r.s) r.s.n = t2;\n r.s = t2;\n i2.n = t2;\n if (32 & r.f) i2.S(t2);\n return t2;\n } else if (-1 === t2.i) {\n t2.i = 0;\n if (void 0 !== t2.n) {\n t2.n.p = t2.p;\n if (void 0 !== t2.p) t2.p.n = t2.n;\n t2.p = r.s;\n t2.n = void 0;\n r.s.n = t2;\n r.s = t2;\n }\n return t2;\n }\n }\n}\nfunction l(i2, t2) {\n this.v = i2;\n this.i = 0;\n this.n = void 0;\n this.t = void 0;\n this.l = 0;\n this.W = null == t2 ? void 0 : t2.watched;\n this.Z = null == t2 ? void 0 : t2.unwatched;\n this.name = null == t2 ? void 0 : t2.name;\n}\nl.prototype.brand = i;\nl.prototype.h = function() {\n return true;\n};\nl.prototype.S = function(i2) {\n var t2 = this, n2 = this.t;\n if (n2 !== i2 && void 0 === i2.e) {\n i2.x = n2;\n this.t = i2;\n if (void 0 !== n2) n2.e = i2;\n else o(function() {\n var i3;\n null == (i3 = t2.W) || i3.call(t2);\n });\n }\n};\nl.prototype.U = function(i2) {\n var t2 = this;\n if (void 0 !== this.t) {\n var n2 = i2.e, r2 = i2.x;\n if (void 0 !== n2) {\n n2.x = r2;\n i2.e = void 0;\n }\n if (void 0 !== r2) {\n r2.e = n2;\n i2.x = void 0;\n }\n if (i2 === this.t) {\n this.t = r2;\n if (void 0 === r2) o(function() {\n var i3;\n null == (i3 = t2.Z) || i3.call(t2);\n });\n }\n }\n};\nl.prototype.subscribe = function(i2) {\n var t2 = this;\n return j(function() {\n var n2 = t2.value, o2 = r;\n r = void 0;\n try {\n i2(n2);\n } finally {\n r = o2;\n }\n }, { name: \"sub\" });\n};\nl.prototype.valueOf = function() {\n return this.value;\n};\nl.prototype.toString = function() {\n return this.value + \"\";\n};\nl.prototype.toJSON = function() {\n return this.value;\n};\nl.prototype.peek = function() {\n var i2 = r;\n r = void 0;\n try {\n return this.value;\n } finally {\n r = i2;\n }\n};\nObject.defineProperty(l.prototype, \"value\", { get: function() {\n var i2 = a(this);\n if (void 0 !== i2) i2.i = this.i;\n return this.v;\n}, set: function(i2) {\n if (i2 !== this.v) {\n if (v > 100) throw new Error(\"Cycle detected\");\n !(function(i3) {\n if (0 !== s && 0 === v) {\n if (i3.l !== e) {\n i3.l = e;\n c = { S: i3, v: i3.v, i: i3.i, o: c };\n }\n }\n })(this);\n this.v = i2;\n this.i++;\n d++;\n s++;\n try {\n for (var n2 = this.t; void 0 !== n2; n2 = n2.x) n2.t.N();\n } finally {\n t();\n }\n }\n} });\nfunction y(i2, t2) {\n return new l(i2, t2);\n}\nfunction w(i2) {\n for (var t2 = i2.s; void 0 !== t2; t2 = t2.n) if (t2.S.i !== t2.i || !t2.S.h() || t2.S.i !== t2.i) return true;\n return false;\n}\nfunction _(i2) {\n for (var t2 = i2.s; void 0 !== t2; t2 = t2.n) {\n var n2 = t2.S.n;\n if (void 0 !== n2) t2.r = n2;\n t2.S.n = t2;\n t2.i = -1;\n if (void 0 === t2.n) {\n i2.s = t2;\n break;\n }\n }\n}\nfunction b(i2) {\n var t2 = i2.s, n2 = void 0;\n while (void 0 !== t2) {\n var r2 = t2.p;\n if (-1 === t2.i) {\n t2.S.U(t2);\n if (void 0 !== r2) r2.n = t2.n;\n if (void 0 !== t2.n) t2.n.p = r2;\n } else n2 = t2;\n t2.S.n = t2.r;\n if (void 0 !== t2.r) t2.r = void 0;\n t2 = r2;\n }\n i2.s = n2;\n}\nfunction p(i2, t2) {\n l.call(this, void 0);\n this.x = i2;\n this.s = void 0;\n this.g = d - 1;\n this.f = 4;\n this.W = null == t2 ? void 0 : t2.watched;\n this.Z = null == t2 ? void 0 : t2.unwatched;\n this.name = null == t2 ? void 0 : t2.name;\n}\np.prototype = new l();\np.prototype.h = function() {\n this.f &= -3;\n if (1 & this.f) return false;\n if (32 == (36 & this.f)) return true;\n this.f &= -5;\n if (this.g === d) return true;\n this.g = d;\n this.f |= 1;\n if (this.i > 0 && !w(this)) {\n this.f &= -2;\n return true;\n }\n var i2 = r;\n try {\n _(this);\n r = this;\n var t2 = this.x();\n if (16 & this.f || this.v !== t2 || 0 === this.i) {\n this.v = t2;\n this.f &= -17;\n this.i++;\n }\n } catch (i3) {\n this.v = i3;\n this.f |= 16;\n this.i++;\n }\n r = i2;\n b(this);\n this.f &= -2;\n return true;\n};\np.prototype.S = function(i2) {\n if (void 0 === this.t) {\n this.f |= 36;\n for (var t2 = this.s; void 0 !== t2; t2 = t2.n) t2.S.S(t2);\n }\n l.prototype.S.call(this, i2);\n};\np.prototype.U = function(i2) {\n if (void 0 !== this.t) {\n l.prototype.U.call(this, i2);\n if (void 0 === this.t) {\n this.f &= -33;\n for (var t2 = this.s; void 0 !== t2; t2 = t2.n) t2.S.U(t2);\n }\n }\n};\np.prototype.N = function() {\n if (!(2 & this.f)) {\n this.f |= 6;\n for (var i2 = this.t; void 0 !== i2; i2 = i2.x) i2.t.N();\n }\n};\nObject.defineProperty(p.prototype, \"value\", { get: function() {\n if (1 & this.f) throw new Error(\"Cycle detected\");\n var i2 = a(this);\n this.h();\n if (void 0 !== i2) i2.i = this.i;\n if (16 & this.f) throw this.v;\n return this.v;\n} });\nfunction g(i2, t2) {\n return new p(i2, t2);\n}\nfunction S(i2) {\n var n2 = i2.m;\n i2.m = void 0;\n if (\"function\" == typeof n2) {\n s++;\n var o2 = r;\n r = void 0;\n try {\n n2();\n } catch (t2) {\n i2.f &= -2;\n i2.f |= 8;\n m(i2);\n throw t2;\n } finally {\n r = o2;\n t();\n }\n }\n}\nfunction m(i2) {\n for (var t2 = i2.s; void 0 !== t2; t2 = t2.n) t2.S.U(t2);\n i2.x = void 0;\n i2.s = void 0;\n S(i2);\n}\nfunction x(i2) {\n if (r !== this) throw new Error(\"Out-of-order effect\");\n b(this);\n r = i2;\n this.f &= -2;\n if (8 & this.f) m(this);\n t();\n}\nfunction E(i2, t2) {\n this.x = i2;\n this.m = void 0;\n this.s = void 0;\n this.u = void 0;\n this.f = 32;\n this.name = null == t2 ? void 0 : t2.name;\n if (f) f.push(this);\n}\nE.prototype.c = function() {\n var i2 = this.S();\n try {\n if (8 & this.f) return;\n if (void 0 === this.x) return;\n var t2 = this.x();\n if (\"function\" == typeof t2) this.m = t2;\n } finally {\n i2();\n }\n};\nE.prototype.S = function() {\n if (1 & this.f) throw new Error(\"Cycle detected\");\n this.f |= 1;\n this.f &= -9;\n S(this);\n _(this);\n s++;\n var i2 = r;\n r = this;\n return x.bind(this, i2);\n};\nE.prototype.N = function() {\n if (!(2 & this.f)) {\n this.f |= 2;\n this.u = h;\n h = this;\n }\n};\nE.prototype.d = function() {\n this.f |= 8;\n if (!(1 & this.f)) m(this);\n};\nE.prototype.dispose = function() {\n this.d();\n};\nfunction j(i2, t2) {\n var n2 = new E(i2, t2);\n try {\n n2.c();\n } catch (i3) {\n n2.d();\n throw i3;\n }\n var r2 = n2.d.bind(n2);\n r2[Symbol.dispose] = r2;\n return r2;\n}\n\n// src/signals.ts\nvar signal = y;\nvar computed = g;\nvar effect = j;\nvar batch = n;\nvar untracked = o;\nfunction useSignal(initialValue) {\n return signal(initialValue);\n}\nfunction useUpdatableComputed() {\n const updater = signal(0);\n const factory = (fn) => {\n return computed(() => {\n updater.value;\n return fn();\n });\n };\n const update = () => {\n updater.value++;\n };\n return { computed: factory, update };\n}\nexport {\n Component,\n Fragment,\n MathMLNamespace,\n SVGNamespace,\n ShadowRootNode,\n addDisposingListener,\n batch,\n bindThis,\n className,\n computed,\n createElement,\n createRef,\n currentLifecycleRoot,\n currentNamespaceURI,\n derivedSignal,\n dispatchDisposingEvent,\n effect,\n createElement as h,\n inHTMLNamespace,\n inMathMLNamespace,\n inNamespaceURI,\n inSVGNamespace,\n initPropHookSymbol,\n invokeDisposingListeners,\n isSignalLike,\n jsx,\n jsx as jsxs,\n observeSignal,\n removeDisposingListener,\n setRef,\n signal,\n untracked,\n useClassList,\n useImperativeHandle,\n usePropBinding,\n createRef as useRef,\n useSignal,\n useText,\n useUpdatableComputed\n};\n//# sourceMappingURL=index.js.map\n","var i=Symbol.for(\"preact-signals\");function t(){if(!(s>1)){var i,t=!1;!function(){var i=c;c=void 0;while(void 0!==i){if(i.S.v===i.v)i.S.i=i.i;i=i.o}}();while(void 0!==h){var n=h;h=void 0;v++;while(void 0!==n){var r=n.u;n.u=void 0;n.f&=-3;if(!(8&n.f)&&w(n))try{n.c()}catch(n){if(!t){i=n;t=!0}}n=r}}v=0;s--;if(t)throw i}else s--}function n(i){if(s>0)return i();e=++u;s++;try{return i()}finally{t()}}var r=void 0;function o(i){var t=r;r=void 0;try{return i()}finally{r=t}}var f,h=void 0,s=0,v=0,u=0,e=0,c=void 0,d=0;function a(i){if(void 0!==r){var t=i.n;if(void 0===t||t.t!==r){t={i:0,S:i,p:r.s,n:void 0,t:r,e:void 0,x:void 0,r:t};if(void 0!==r.s)r.s.n=t;r.s=t;i.n=t;if(32&r.f)i.S(t);return t}else if(-1===t.i){t.i=0;if(void 0!==t.n){t.n.p=t.p;if(void 0!==t.p)t.p.n=t.n;t.p=r.s;t.n=void 0;r.s.n=t;r.s=t}return t}}}function l(i,t){this.v=i;this.i=0;this.n=void 0;this.t=void 0;this.l=0;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name}l.prototype.brand=i;l.prototype.h=function(){return!0};l.prototype.S=function(i){var t=this,n=this.t;if(n!==i&&void 0===i.e){i.x=n;this.t=i;if(void 0!==n)n.e=i;else o(function(){var i;null==(i=t.W)||i.call(t)})}};l.prototype.U=function(i){var t=this;if(void 0!==this.t){var n=i.e,r=i.x;if(void 0!==n){n.x=r;i.e=void 0}if(void 0!==r){r.e=n;i.x=void 0}if(i===this.t){this.t=r;if(void 0===r)o(function(){var i;null==(i=t.Z)||i.call(t)})}}};l.prototype.subscribe=function(i){var t=this;return j(function(){var n=t.value;o(function(){return i(n)})},{name:\"sub\"})};l.prototype.valueOf=function(){return this.value};l.prototype.toString=function(){return this.value+\"\"};l.prototype.toJSON=function(){return this.value};l.prototype.peek=function(){var i=this;return o(function(){return i.value})};Object.defineProperty(l.prototype,\"value\",{get:function(){var i=a(this);if(void 0!==i)i.i=this.i;return this.v},set:function(i){if(i!==this.v){if(v>100)throw new Error(\"Cycle detected\");!function(i){if(0!==s&&0===v)if(i.l!==e){i.l=e;c={S:i,v:i.v,i:i.i,o:c}}}(this);this.v=i;this.i++;d++;s++;try{for(var n=this.t;void 0!==n;n=n.x)n.t.N()}finally{t()}}}});function y(i,t){return new l(i,t)}function w(i){for(var t=i.s;void 0!==t;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function _(i){for(var t=i.s;void 0!==t;t=t.n){var n=t.S.n;if(void 0!==n)t.r=n;t.S.n=t;t.i=-1;if(void 0===t.n){i.s=t;break}}}function b(i){var t=i.s,n=void 0;while(void 0!==t){var r=t.p;if(-1===t.i){t.S.U(t);if(void 0!==r)r.n=t.n;if(void 0!==t.n)t.n.p=r}else n=t;t.S.n=t.r;if(void 0!==t.r)t.r=void 0;t=r}i.s=n}function p(i,t){l.call(this,void 0,t);this.x=i;this.s=void 0;this.g=d-1;this.f=4}p.prototype=new l;p.prototype.h=function(){this.f&=-3;if(1&this.f)return!1;if(32==(36&this.f))return!0;this.f&=-5;if(this.g===d)return!0;this.g=d;this.f|=1;if(this.i>0&&!w(this)){this.f&=-2;return!0}var i=r;try{_(this);r=this;var t=this.x();if(16&this.f||this.v!==t||0===this.i){this.v=t;this.f&=-17;this.i++}}catch(i){this.v=i;this.f|=16;this.i++}r=i;b(this);this.f&=-2;return!0};p.prototype.S=function(i){if(void 0===this.t){this.f|=36;for(var t=this.s;void 0!==t;t=t.n)t.S.S(t)}l.prototype.S.call(this,i)};p.prototype.U=function(i){if(void 0!==this.t){l.prototype.U.call(this,i);if(void 0===this.t){this.f&=-33;for(var t=this.s;void 0!==t;t=t.n)t.S.U(t)}}};p.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var i=this.t;void 0!==i;i=i.x)i.t.N()}};Object.defineProperty(p.prototype,\"value\",{get:function(){if(1&this.f)throw new Error(\"Cycle detected\");var i=a(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v}});function g(i,t){return new p(i,t)}function S(i){var n=i.m;i.m=void 0;if(\"function\"==typeof n){s++;var o=r;r=void 0;try{n()}catch(t){i.f&=-2;i.f|=8;m(i);throw t}finally{r=o;t()}}}function m(i){for(var t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;S(i)}function x(i){if(r!==this)throw new Error(\"Out-of-order effect\");b(this);r=i;this.f&=-2;if(8&this.f)m(this);t()}function E(i,t){this.x=i;this.m=void 0;this.s=void 0;this.u=void 0;this.f=32;this.name=null==t?void 0:t.name;if(f)f.push(this)}E.prototype.c=function(){var i=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var t=this.x();if(\"function\"==typeof t)this.m=t}finally{i()}};E.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1;this.f&=-9;S(this);_(this);s++;var i=r;r=this;return x.bind(this,i)};E.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.u=h;h=this}};E.prototype.d=function(){this.f|=8;if(!(1&this.f))m(this)};E.prototype.dispose=function(){this.d()};function j(i,t){var n=new E(i,t);try{n.c()}catch(i){n.d();throw i}var r=n.d.bind(n);r[Symbol.dispose]=r;return r}function C(i){return function(){var t=arguments,r=this;return n(function(){return o(function(){return i.apply(r,[].slice.call(t))})})}}function O(){var i=f;f=[];return function(){var t=f;if(f&&i)i=i.concat(f);f=i;return t}}var k=function(i){for(var t in i){var n=i[t];if(\"function\"==typeof n)i[t]=C(n);else if(\"object\"==typeof n&&null!==n&&!(\"brand\"in n))k(n)}};function T(i){return function(){var t,n,r=O();try{n=i.apply(void 0,[].slice.call(arguments))}catch(i){f=void 0;throw i}finally{t=r()}k(n);n[Symbol.dispose]=C(function(){if(t)for(var i=0;i<t.length;i++)t[i].dispose();t=void 0});return n}}export{p as Computed,E as Effect,l as Signal,C as action,n as batch,g as computed,T as createModel,j as effect,y as signal,o as untracked};//# sourceMappingURL=signals-core.module.js.map\n","import { signal, computed } from '@preact/signals-core';\nimport type { FlipbookThemeMode } from '../theme/theme';\nimport type { NormalizedFlipbookPage } from '../model/pages';\nimport type { FlipbookEngineOptions } from '../engine';\n\n// Signals hold the reactive state of the application.\n// Any DOMWise component that accesses `.value` will automatically re-render when the value changes.\n\nexport const currentPage = signal<number>(0);\nexport const totalPages = signal<number>(0);\nexport const isSingleMode = signal<boolean>(false);\nexport const showThumbs = signal<boolean>(true);\nexport const orientation = signal<'landscape' | 'portrait'>('landscape');\nexport const flipState = signal<'read' | 'fold_corner' | 'flipping'>('read');\nexport const themeMode = signal<FlipbookThemeMode>('auto');\nexport const allowDownload = signal<boolean>(true);\nexport const hasDownloadUrl = signal<boolean>(false);\nexport const primaryColor = signal<string>('#7367f0');\nexport const whiteLabel = signal<boolean>(false);\nexport const isZoomed = signal<boolean>(false);\nexport const isAutoPlaying = signal<boolean>(false);\nexport const autoPlayInterval = signal<number>(3000);\nexport const soundEnabled = signal<boolean>(true);\n\nexport const zoomState = signal<{\n isActive: boolean;\n translateX: number;\n translateY: number;\n isDragging: boolean;\n scale: number;\n}>({\n isActive: false,\n translateX: 0,\n translateY: 0,\n isDragging: false,\n scale: 1\n});\n\nexport const pages = signal<NormalizedFlipbookPage[]>([]);\n\n// Computed values automatically update when their dependencies change.\nexport const isDoublePageLayout = computed(() => {\n return !isSingleMode.value && orientation.value === 'landscape';\n});\n\nexport const isFrontCover = computed(() => {\n return isDoublePageLayout.value && currentPage.value === 0;\n});\n\nexport const isBackCover = computed(() => {\n if (!isDoublePageLayout.value) return false;\n // In page-flip, the back cover is the last page if it's an even number of pages, etc.\n // For simplicity, if currentPage is >= totalPages - 1\n return currentPage.value >= totalPages.value - 1;\n});\n\n// A simple initialization function to inject options into state\nexport function initStore(options: FlipbookEngineOptions, total: number, mappedPages: NormalizedFlipbookPage[], hasPdfUrl: boolean) {\n totalPages.value = total;\n pages.value = mappedPages;\n hasDownloadUrl.value = hasPdfUrl;\n \n if (options.theme !== undefined) themeMode.value = options.theme;\n if (options.primaryColor !== undefined) primaryColor.value = options.primaryColor;\n if (options.showThumbs !== undefined) showThumbs.value = options.showThumbs;\n if (options.allowDownload !== undefined) allowDownload.value = options.allowDownload;\n if (options.whiteLabel !== undefined) whiteLabel.value = options.whiteLabel;\n if (options.soundEnabled !== undefined) soundEnabled.value = options.soundEnabled;\n if (options.isSingleMode !== undefined) isSingleMode.value = options.isSingleMode;\n if (options.singleMode !== undefined) isSingleMode.value = options.singleMode;\n if (options.autoPlay !== undefined) isAutoPlaying.value = options.autoPlay;\n if (options.autoPlayInterval !== undefined) autoPlayInterval.value = options.autoPlayInterval;\n \n currentPage.value = 0;\n}\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nimport { enMessages } from './locales/en';\nimport { trMessages } from './locales/tr';\n\nexport interface FlipbookMessages {\n emptyStateTitle: string;\n thumbnails: string;\n singlePageMode: string;\n pages: string;\n previous: string;\n next: string;\n zoomOut: string;\n zoomIn: string;\n fullscreen: string;\n settings: string;\n downloadCatalog: string;\n play: string;\n pause: string;\n}\n\nexport const builtInMessages = {\n en: enMessages,\n tr: trMessages\n} as const;\n\nexport type FlipbookLocale = keyof typeof builtInMessages;\nexport type PartialFlipbookMessages = Partial<FlipbookMessages>;\n\nexport interface I18nConfiguration {\n locale?: FlipbookLocale | string;\n messages?: Partial<Record<string, PartialFlipbookMessages>>;\n}\n\nexport function resolveMessages(config: I18nConfiguration = {}): FlipbookMessages {\n const locale = config.locale ?? 'en';\n const builtIn = builtInMessages[locale as FlipbookLocale] ?? builtInMessages.en;\n const custom = config.messages?.[locale] ?? {};\n return {\n ...builtInMessages.en,\n ...builtIn,\n ...custom\n };\n}\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nexport const enMessages = {\n emptyStateTitle: 'No data available.',\n thumbnails: 'Thumbnails',\n singlePageMode: 'Single Page Mode',\n pages: 'Pages',\n previous: 'Previous',\n next: 'Next',\n zoomOut: 'Zoom Out',\n zoomIn: 'Zoom In',\n fullscreen: 'Fullscreen',\n settings: 'Settings',\n downloadCatalog: 'Download Catalog',\n play: 'Play',\n pause: 'Pause'\n} as const;\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nexport const trMessages = {\n emptyStateTitle: 'Veri bulunamadi.',\n thumbnails: 'Küçük Resimler',\n singlePageMode: 'Tek Sayfa Modu',\n pages: 'Sayfalar',\n previous: 'Önceki',\n next: 'Sonraki',\n zoomOut: 'Uzaklaş',\n zoomIn: 'Yaklaş',\n fullscreen: 'Tam Ekran',\n settings: 'Ayarlar',\n downloadCatalog: 'Kataloğu İndir',\n play: 'Otomatik Oynat',\n pause: 'Duraklat'\n} as const;\n","import { computed } from '@preact/signals-core';\nimport { \n showThumbs, \n isSingleMode, \n currentPage, \n totalPages, \n isZoomed, \n allowDownload, \n hasDownloadUrl,\n isDoublePageLayout,\n soundEnabled,\n isAutoPlaying\n} from '../state/store';\nimport { resolveMessages } from '../i18n/service';\n\ninterface ToolbarProps {\n onToggleThumbs: () => void;\n onToggleSingleMode: () => void;\n onZoomIn: () => void;\n onZoomOut: () => void;\n onDownload?: () => void;\n onSoundToggle: () => void;\n onNextPage: () => void;\n onPrevPage: () => void;\n onToggleAutoPlay: () => void;\n onToggleFullscreen: () => void;\n}\n\nexport function Toolbar(props: ToolbarProps) {\n const messages = resolveMessages();\n\n return (\n <div class=\"bk-toolbar\">\n <div class=\"bk-btn-group\">\n <button \n class={computed(() => `bk-btn ${showThumbs.value ? 'active' : ''}`)} \n onClick={props.onToggleThumbs}\n title={messages.thumbnails || 'Thumbnails'}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect></svg>\n </button>\n\n <button \n class={computed(() => `bk-btn bz-hide-mobile ${isSingleMode.value ? 'active' : ''}`)} \n onClick={props.onToggleSingleMode}\n title={messages.singlePageMode || 'Single Page'}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"></line><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"></line><polyline points=\"10 9 9 9 8 9\"></polyline></svg>\n </button>\n\n <button \n class={computed(() => `bk-btn ${isAutoPlaying.value ? 'active' : ''}`)} \n onClick={props.onToggleAutoPlay}\n title={computed(() => isAutoPlaying.value ? (messages.pause || 'Pause') : (messages.play || 'Play'))}\n >\n {computed(() => isAutoPlaying.value ? (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"6\" y=\"4\" width=\"4\" height=\"16\"></rect><rect x=\"14\" y=\"4\" width=\"4\" height=\"16\"></rect></svg>\n ) : (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"5 3 19 12 5 21 5 3\"></polygon></svg>\n ))}\n </button>\n </div>\n\n <div class=\"bk-btn-group bk-btn-group--center\">\n <button class=\"bk-btn\" onClick={props.onPrevPage} title={messages.previous || 'Previous'}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"15 18 9 12 15 6\"></polyline></svg>\n </button>\n <span class=\"bz-page-info\">\n {computed(() => {\n const current = currentPage.value;\n const total = totalPages.value;\n if (isSingleMode.value || current === 0 || current >= total - 1) {\n return `${current + 1} / ${total}`;\n }\n const left = current % 2 === 1 ? current : current - 1;\n return `${left + 1}-${left + 2} / ${total}`;\n })}\n </span>\n <button class=\"bk-btn\" onClick={props.onNextPage} title={messages.next || 'Next'}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"9 18 15 12 9 6\"></polyline></svg>\n </button>\n </div>\n\n <div class=\"bk-btn-group\">\n <button class=\"bk-btn\" onClick={props.onZoomIn} title={messages.zoomIn || 'Zoom In'}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line></svg>\n </button>\n <button \n class={computed(() => `bk-btn ${isZoomed.value ? 'active' : ''}`)} \n onClick={props.onZoomOut} \n title={messages.zoomOut || 'Zoom Out'}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line></svg>\n </button>\n \n <button class=\"bk-btn bk-btn--fullscreen\" onClick={props.onToggleFullscreen} title={messages.fullscreen || 'Fullscreen'}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\"></path></svg>\n </button>\n\n {computed(() => {\n if (allowDownload.value && props.onDownload) {\n return (\n <button class=\"bk-btn bk-btn--download\" onClick={props.onDownload} title={messages.downloadCatalog || 'Download'}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path><polyline points=\"7 10 12 15 17 10\"></polyline><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"></line></svg>\n </button>\n );\n }\n return null;\n })}\n\n <button \n // @ts-ignore\n class={computed(() => `bk-btn ${!soundEnabled.value ? 'muted' : ''}`)}\n onClick={() => {\n soundEnabled.value = !soundEnabled.value;\n props.onSoundToggle();\n }} \n title=\"Sound\"\n >\n {computed(() => soundEnabled.value ? (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon><path d=\"M15.54 8.46a5 5 0 0 1 0 7.07\"></path><path d=\"M19.07 4.93a10 10 0 0 1 0 14.14\"></path></svg>\n ) : (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon><line x1=\"23\" y1=\"9\" x2=\"17\" y2=\"15\"></line><line x1=\"17\" y1=\"9\" x2=\"23\" y2=\"15\"></line></svg>\n ))}\n </button>\n </div>\n </div>\n );\n}\n","import { computed } from '@preact/signals-core';\nimport { pages, showThumbs, currentPage, isSingleMode } from '../state/store';\n\ninterface ThumbnailsProps {\n onThumbClick: (pageIndex: number) => void;\n}\n\nexport function Thumbnails(props: ThumbnailsProps) {\n return (\n <div class=\"bk-thumbs\" style={computed(() => showThumbs.value ? 'display:flex;' : 'display:none;')}>\n {pages.value.map((page, index) => {\n const isActive = () => {\n const current = currentPage.value;\n if (isSingleMode.value || current === 0 || current >= pages.value.length - 1) {\n return current === index;\n }\n const left = current % 2 === 1 ? current : current - 1;\n return index === left || index === left + 1;\n };\n \n return (\n <div \n // @ts-ignore\n class={computed(() => `thumb-item ${isActive() ? 'active' : ''}`)}\n onClick={() => props.onThumbClick(index)}\n >\n <div class=\"thumb-img-wrapper\">\n <img \n class=\"thumb-img\" \n src={page.thumb || page.low || page.normal} \n alt={`Page ${index + 1}`} \n loading=\"lazy\" \n onError={(e: any) => { e.currentTarget.style.display = 'none'; }}\n />\n </div>\n <span>{index + 1}</span>\n </div>\n );\n })}\n </div>\n );\n}\n","import { computed } from '@preact/signals-core';\nimport { pages, zoomState, isFrontCover, isBackCover, isDoublePageLayout, flipState, isSingleMode, currentPage } from '../state/store';\n\ninterface ViewerProps {\n bookWrapperRef: (el: HTMLElement) => void;\n bookSizerRef: (el: HTMLElement) => void;\n bookContainerRef: (el: HTMLElement) => void;\n}\n\nexport function Viewer(props: ViewerProps) {\n return (\n <div \n id=\"bk-book-wrapper\"\n class={computed(() => {\n let classes = '';\n if (isDoublePageLayout.value) classes += 'double-mode ';\n if (isFrontCover.value) classes += 'bk-is-cover ';\n if (isBackCover.value) classes += 'bk-is-back-cover ';\n if (zoomState.value.isActive) classes += 'zoomed ';\n return classes.trim();\n })}\n ref={props.bookWrapperRef}\n >\n <div \n id=\"bk-book-sizer\" \n ref={props.bookSizerRef}\n >\n <div \n id=\"bk-book\" \n ref={props.bookContainerRef}\n class={computed(() => flipState.value !== 'read' ? 'is-flipping' : '')}\n style={computed(() => `display: ${isSingleMode.value ? 'none' : 'block'};`)}\n >\n {pages.value.map((page, index) => {\n const isHard = index === 0 || index === pages.value.length - 1;\n \n return (\n <div \n // @ts-ignore\n class={`bz-page ${index === 0 ? 'bz-page--cover' : ''} ${index === pages.value.length - 1 ? 'bz-page--back' : ''}`}\n data-density={isHard ? \"hard\" : \"soft\"}\n data-idx={index}\n >\n <div class=\"bz-page-content\" style=\"position:relative; width:100%; height:100%; overflow:hidden;\">\n <img \n src={page.low || page.normal} \n data-src={page.normal} \n class={`page-content ${page.cropMode !== 'full' ? 'page-content--split page-content--' + page.cropMode : ''}`}\n alt={`Page ${index + 1}`} \n loading=\"lazy\" \n />\n <div class=\"page-shadow\"></div>\n </div>\n </div>\n );\n })}\n </div>\n \n <div \n id=\"bk-single-view\"\n style={computed(() => `display: ${isSingleMode.value ? 'flex' : 'none'}; width: 100%; height: 100%; justify-content: center; align-items: center; position: absolute; top: 0; left: 0; z-index: 10;`)}\n >\n {computed(() => {\n const page = pages.value[currentPage.value];\n if (!page) return null;\n return (\n <img \n id=\"bk-single-img\"\n class={`page-content ${page.cropMode !== 'full' ? 'page-content--split page-content--' + page.cropMode : ''}`}\n src={zoomState.value.isActive ? page.normal : (page.low || page.normal)}\n style=\"opacity: 1; transition: opacity 0.3s; box-shadow: var(--flipbook-shadow);\"\n />\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n","import { computed } from '@preact/signals-core';\nimport { Toolbar } from './Toolbar';\nimport { Thumbnails } from './Thumbnails';\nimport { Viewer } from './Viewer';\nimport { \n themeMode, \n whiteLabel, \n showThumbs, \n isSingleMode,\n currentPage,\n isAutoPlaying,\n soundEnabled\n} from '../state/store';\nimport type { PageFlipAdapter } from '../adapters/PageFlipAdapter';\nimport type { InteractionManager } from '../core/InteractionManager';\n\ninterface AppProps {\n pageFlipAdapterRef: { current: PageFlipAdapter | null };\n interactionManagerRef: { current: InteractionManager | null };\n bookWrapperRef: (el: HTMLElement) => void;\n bookSizerRef: (el: HTMLElement) => void;\n bookContainerRef: (el: HTMLElement) => void;\n className?: string;\n onDownload: () => void;\n}\n\nexport function App(props: AppProps) {\n const handleToggleThumbs = () => {\n showThumbs.value = !showThumbs.value;\n };\n\n const handleToggleSingleMode = () => {\n isSingleMode.value = !isSingleMode.value;\n };\n\n const handleToggleAutoPlay = () => {\n isAutoPlaying.value = !isAutoPlaying.value;\n };\n\n const handleZoomIn = () => {\n props.interactionManagerRef.current?.zoomIn();\n };\n\n const handleZoomOut = () => {\n props.interactionManagerRef.current?.zoomOut();\n };\n\n const handleToggleFullscreen = () => {\n if (!document.fullscreenElement) {\n // Find the closest container or just use documentElement\n const el = document.querySelector('.bk-wrapper')?.parentElement || document.documentElement;\n el.requestFullscreen().catch(err => console.warn('Fullscreen err:', err));\n } else {\n document.exitFullscreen().catch(err => console.warn('Exit fullscreen err:', err));\n }\n };\n\n const handleThumbClick = (index: number) => {\n if (currentPage.value !== index) {\n currentPage.value = index;\n props.pageFlipAdapterRef.current?.playSound();\n }\n };\n\n const handleNextPage = () => {\n props.pageFlipAdapterRef.current?.turnToNextPage();\n };\n\n const handlePrevPage = () => {\n props.pageFlipAdapterRef.current?.turnToPrevPage();\n };\n\n return (\n <div \n class={computed(() => `bk-wrapper bk-theme-${themeMode.value} ${props.className || ''}`)}\n >\n <div class=\"bk-main-area\">\n <Viewer \n bookWrapperRef={props.bookWrapperRef}\n bookSizerRef={props.bookSizerRef}\n bookContainerRef={props.bookContainerRef}\n />\n \n {!whiteLabel.value ? (\n <div class=\"bk-watermark\">\n Powered by <a href=\"https://flipbookengine.com\" target=\"_blank\" rel=\"noopener\" style=\"text-decoration: underline;\">FlipbookEngine</a>\n </div>\n ) : null}\n </div>\n\n <Toolbar \n onToggleThumbs={handleToggleThumbs}\n onToggleSingleMode={handleToggleSingleMode}\n onZoomIn={handleZoomIn}\n onZoomOut={handleZoomOut}\n onDownload={props.onDownload}\n onNextPage={handleNextPage}\n onPrevPage={handlePrevPage}\n onSoundToggle={() => soundEnabled.value = !soundEnabled.value}\n onToggleAutoPlay={handleToggleAutoPlay}\n onToggleFullscreen={handleToggleFullscreen}\n />\n \n <Thumbnails \n onThumbClick={handleThumbClick}\n />\n </div>\n );\n}\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):e((t=t||self).St={})}(this,(function(t){\"use strict\";class e{constructor(t,e){this.state={angle:0,area:[],position:{x:0,y:0},hardAngle:0,hardDrawingAngle:0},this.createdDensity=e,this.nowDrawingDensity=this.createdDensity,this.render=t}setDensity(t){this.createdDensity=t,this.nowDrawingDensity=t}setDrawingDensity(t){this.nowDrawingDensity=t}setPosition(t){this.state.position=t}setAngle(t){this.state.angle=t}setArea(t){this.state.area=t}setHardDrawingAngle(t){this.state.hardDrawingAngle=t}setHardAngle(t){this.state.hardAngle=t,this.state.hardDrawingAngle=t}setOrientation(t){this.orientation=t}getDrawingDensity(){return this.nowDrawingDensity}getDensity(){return this.createdDensity}getHardAngle(){return this.state.hardAngle}}class i extends e{constructor(t,e,i){super(t,i),this.image=null,this.isLoad=!1,this.loadingAngle=0,this.image=new Image,this.image.src=e}draw(t){const e=this.render.getContext(),i=this.render.convertToGlobal(this.state.position),s=this.render.getRect().pageWidth,n=this.render.getRect().height;e.save(),e.translate(i.x,i.y),e.beginPath();for(let t of this.state.area)null!==t&&(t=this.render.convertToGlobal(t),e.lineTo(t.x-i.x,t.y-i.y));e.rotate(this.state.angle),e.clip(),this.isLoad?e.drawImage(this.image,0,0,s,n):this.drawLoader(e,{x:0,y:0},s,n),e.restore()}simpleDraw(t){const e=this.render.getRect(),i=this.render.getContext(),s=e.pageWidth,n=e.height,h=1===t?e.left+e.pageWidth:e.left,r=e.top;this.isLoad?i.drawImage(this.image,h,r,s,n):this.drawLoader(i,{x:h,y:r},s,n)}drawLoader(t,e,i,s){t.beginPath(),t.strokeStyle=\"rgb(200, 200, 200)\",t.fillStyle=\"rgb(255, 255, 255)\",t.lineWidth=1,t.rect(e.x+1,e.y+1,i-1,s-1),t.stroke(),t.fill();const n={x:e.x+i/2,y:e.y+s/2};t.beginPath(),t.lineWidth=10,t.arc(n.x,n.y,20,this.loadingAngle,3*Math.PI/2+this.loadingAngle),t.stroke(),t.closePath(),this.loadingAngle+=.07,this.loadingAngle>=2*Math.PI&&(this.loadingAngle=0)}load(){this.isLoad||(this.image.onload=()=>{this.isLoad=!0})}newTemporaryCopy(){return this}getTemporaryCopy(){return this}hideTemporaryCopy(){}}class s{constructor(t,e){this.pages=[],this.currentPageIndex=0,this.currentSpreadIndex=0,this.landscapeSpread=[],this.portraitSpread=[],this.render=e,this.app=t,this.currentPageIndex=0,this.isShowCover=this.app.getSettings().showCover}destroy(){this.pages=[]}createSpread(){this.landscapeSpread=[],this.portraitSpread=[];for(let t=0;t<this.pages.length;t++)this.portraitSpread.push([t]);let t=0;this.isShowCover&&(this.pages[0].setDensity(\"hard\"),this.landscapeSpread.push([t]),t++);for(let e=t;e<this.pages.length;e+=2)e<this.pages.length-1?this.landscapeSpread.push([e,e+1]):(this.landscapeSpread.push([e]),this.pages[e].setDensity(\"hard\"))}getSpread(){return\"landscape\"===this.render.getOrientation()?this.landscapeSpread:this.portraitSpread}getSpreadIndexByPage(t){const e=this.getSpread();for(let i=0;i<e.length;i++)if(t===e[i][0]||t===e[i][1])return i;return null}getPageCount(){return this.pages.length}getPages(){return this.pages}getPage(t){if(t>=0&&t<this.pages.length)return this.pages[t];throw new Error(\"Invalid page number\")}nextBy(t){const e=this.pages.indexOf(t);return e<this.pages.length-1?this.pages[e+1]:null}prevBy(t){const e=this.pages.indexOf(t);return e>0?this.pages[e-1]:null}getFlippingPage(t){const e=this.currentSpreadIndex;if(\"portrait\"===this.render.getOrientation())return 0===t?this.pages[e].newTemporaryCopy():this.pages[e-1];{const i=0===t?this.getSpread()[e+1]:this.getSpread()[e-1];return 1===i.length||0===t?this.pages[i[0]]:this.pages[i[1]]}}getBottomPage(t){const e=this.currentSpreadIndex;if(\"portrait\"===this.render.getOrientation())return 0===t?this.pages[e+1]:this.pages[e-1];{const i=0===t?this.getSpread()[e+1]:this.getSpread()[e-1];return 1===i.length?this.pages[i[0]]:0===t?this.pages[i[1]]:this.pages[i[0]]}}showNext(){this.currentSpreadIndex<this.getSpread().length&&(this.currentSpreadIndex++,this.showSpread())}showPrev(){this.currentSpreadIndex>0&&(this.currentSpreadIndex--,this.showSpread())}getCurrentPageIndex(){return this.currentPageIndex}show(t=null){if(null===t&&(t=this.currentPageIndex),t<0||t>=this.pages.length)return;const e=this.getSpreadIndexByPage(t);null!==e&&(this.currentSpreadIndex=e,this.showSpread())}getCurrentSpreadIndex(){return this.currentSpreadIndex}setCurrentSpreadIndex(t){if(!(t>=0&&t<this.getSpread().length))throw new Error(\"Invalid page\");this.currentSpreadIndex=t}showSpread(){const t=this.getSpread()[this.currentSpreadIndex];2===t.length?(this.render.setLeftPage(this.pages[t[0]]),this.render.setRightPage(this.pages[t[1]])):\"landscape\"===this.render.getOrientation()&&t[0]===this.pages.length-1?(this.render.setLeftPage(this.pages[t[0]]),this.render.setRightPage(null)):(this.render.setLeftPage(null),this.render.setRightPage(this.pages[t[0]])),this.currentPageIndex=t[0],this.app.updatePageIndex(this.currentPageIndex)}}class n extends s{constructor(t,e,i){super(t,e),this.imagesHref=i}load(){for(const t of this.imagesHref){const e=new i(this.render,t,\"soft\");e.load(),this.pages.push(e)}this.createSpread()}}class h{static GetDistanceBetweenTwoPoint(t,e){return null===t||null===e?1/0:Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}static GetSegmentLength(t){return h.GetDistanceBetweenTwoPoint(t[0],t[1])}static GetAngleBetweenTwoLine(t,e){const i=t[0].y-t[1].y,s=e[0].y-e[1].y,n=t[1].x-t[0].x,h=e[1].x-e[0].x;return Math.acos((i*s+n*h)/(Math.sqrt(i*i+n*n)*Math.sqrt(s*s+h*h)))}static PointInRect(t,e){return null===e?null:e.x>=t.left&&e.x<=t.width+t.left&&e.y>=t.top&&e.y<=t.top+t.height?e:null}static GetRotatedPoint(t,e,i){return{x:t.x*Math.cos(i)+t.y*Math.sin(i)+e.x,y:t.y*Math.cos(i)-t.x*Math.sin(i)+e.y}}static LimitPointToCircle(t,e,i){if(h.GetDistanceBetweenTwoPoint(t,i)<=e)return i;const s=t.x,n=t.y,r=i.x,o=i.y;let a=Math.sqrt(Math.pow(e,2)*Math.pow(s-r,2)/(Math.pow(s-r,2)+Math.pow(n-o,2)))+s;i.x<0&&(a*=-1);let g=(a-s)*(n-o)/(s-r)+n;return s-r+n===0&&(g=e),{x:a,y:g}}static GetIntersectBetweenTwoSegment(t,e,i){return h.PointInRect(t,h.GetIntersectBeetwenTwoLine(e,i))}static GetIntersectBeetwenTwoLine(t,e){const i=t[0].y-t[1].y,s=e[0].y-e[1].y,n=t[1].x-t[0].x,h=e[1].x-e[0].x,r=t[0].x*t[1].y-t[1].x*t[0].y,o=e[0].x*e[1].y-e[1].x*e[0].y,a=i*o-s*r,g=n*o-h*r,l=-(r*h-o*n)/(i*h-s*n),d=-(i*o-s*r)/(i*h-s*n);if(isFinite(l)&&isFinite(d))return{x:l,y:d};if(Math.abs(a-g)<.1)throw new Error(\"Segment included\");return null}static GetCordsFromTwoPoint(t,e){const i=Math.abs(t.x-e.x),s=Math.abs(t.y-e.y),n=Math.max(i,s),h=[t];function r(t,e,i,s,n){return e>t?t+n*(i/s):e<t?t-n*(i/s):t}for(let o=1;o<=n;o+=1)h.push({x:r(t.x,e.x,i,n,o),y:r(t.y,e.y,s,n,o)});return h}}class r extends e{constructor(t,e,i){super(t,i),this.copiedElement=null,this.temporaryCopy=null,this.isLoad=!1,this.element=e,this.element.classList.add(\"stf__item\"),this.element.classList.add(\"--\"+i)}newTemporaryCopy(){return\"hard\"===this.nowDrawingDensity?this:(null===this.temporaryCopy&&(this.copiedElement=this.element.cloneNode(!0),this.element.parentElement.appendChild(this.copiedElement),this.temporaryCopy=new r(this.render,this.copiedElement,this.nowDrawingDensity)),this.getTemporaryCopy())}getTemporaryCopy(){return this.temporaryCopy}hideTemporaryCopy(){null!==this.temporaryCopy&&(this.copiedElement.remove(),this.copiedElement=null,this.temporaryCopy=null)}draw(t){const e=t||this.nowDrawingDensity,i=this.render.convertToGlobal(this.state.position),s=this.render.getRect().pageWidth,n=this.render.getRect().height;this.element.classList.remove(\"--simple\");const h=`\\n display: block;\\n z-index: ${this.element.style.zIndex};\\n left: 0;\\n top: 0;\\n width: ${s}px;\\n height: ${n}px;\\n `;\"hard\"===e?this.drawHard(h):this.drawSoft(i,h)}drawHard(t=\"\"){const e=this.render.getRect().left+this.render.getRect().width/2,i=this.state.hardDrawingAngle,s=t+\"\\n backface-visibility: hidden;\\n -webkit-backface-visibility: hidden;\\n clip-path: none;\\n -webkit-clip-path: none;\\n \"+(0===this.orientation?`transform-origin: ${this.render.getRect().pageWidth}px 0; \\n transform: translate3d(0, 0, 0) rotateY(${i}deg);`:`transform-origin: 0 0; \\n transform: translate3d(${e}px, 0, 0) rotateY(${i}deg);`);this.element.style.cssText=s}drawSoft(t,e=\"\"){let i=\"polygon( \";for(const t of this.state.area)if(null!==t){let e=1===this.render.getDirection()?{x:-t.x+this.state.position.x,y:t.y-this.state.position.y}:{x:t.x-this.state.position.x,y:t.y-this.state.position.y};e=h.GetRotatedPoint(e,{x:0,y:0},this.state.angle),i+=e.x+\"px \"+e.y+\"px, \"}i=i.slice(0,-2),i+=\")\";const s=e+`transform-origin: 0 0; clip-path: ${i}; -webkit-clip-path: ${i};`+(this.render.isSafari()&&0===this.state.angle?`transform: translate(${t.x}px, ${t.y}px);`:`transform: translate3d(${t.x}px, ${t.y}px, 0) rotate(${this.state.angle}rad);`);this.element.style.cssText=s}simpleDraw(t){const e=this.render.getRect(),i=e.pageWidth,s=e.height,n=1===t?e.left+e.pageWidth:e.left,h=e.top;this.element.classList.add(\"--simple\"),this.element.style.cssText=`\\n position: absolute; \\n display: block; \\n height: ${s}px; \\n left: ${n}px; \\n top: ${h}px; \\n width: ${i}px; \\n z-index: ${this.render.getSettings().startZIndex+1};`}getElement(){return this.element}load(){this.isLoad=!0}setOrientation(t){super.setOrientation(t),this.element.classList.remove(\"--left\",\"--right\"),this.element.classList.add(1===t?\"--right\":\"--left\")}setDrawingDensity(t){this.element.classList.remove(\"--soft\",\"--hard\"),this.element.classList.add(\"--\"+t),super.setDrawingDensity(t)}}class o extends s{constructor(t,e,i,s){super(t,e),this.element=i,this.pagesElement=s}load(){for(const t of this.pagesElement){const e=new r(this.render,t,\"hard\"===t.dataset.density?\"hard\":\"soft\");e.load(),this.pages.push(e)}this.createSpread()}}class a{constructor(t,e,i,s){this.direction=t,this.corner=e,this.topIntersectPoint=null,this.sideIntersectPoint=null,this.bottomIntersectPoint=null,this.pageWidth=parseInt(i,10),this.pageHeight=parseInt(s,10)}calc(t){try{return this.position=this.calcAngleAndPosition(t),this.calculateIntersectPoint(this.position),!0}catch(t){return!1}}getFlippingClipArea(){const t=[];let e=!1;return t.push(this.rect.topLeft),t.push(this.topIntersectPoint),null===this.sideIntersectPoint?e=!0:(t.push(this.sideIntersectPoint),null===this.bottomIntersectPoint&&(e=!1)),t.push(this.bottomIntersectPoint),(e||\"bottom\"===this.corner)&&t.push(this.rect.bottomLeft),t}getBottomClipArea(){const t=[];return t.push(this.topIntersectPoint),\"top\"===this.corner?t.push({x:this.pageWidth,y:0}):(null!==this.topIntersectPoint&&t.push({x:this.pageWidth,y:0}),t.push({x:this.pageWidth,y:this.pageHeight})),null!==this.sideIntersectPoint?h.GetDistanceBetweenTwoPoint(this.sideIntersectPoint,this.topIntersectPoint)>=10&&t.push(this.sideIntersectPoint):\"top\"===this.corner&&t.push({x:this.pageWidth,y:this.pageHeight}),t.push(this.bottomIntersectPoint),t.push(this.topIntersectPoint),t}getAngle(){return 0===this.direction?-this.angle:this.angle}getRect(){return this.rect}getPosition(){return this.position}getActiveCorner(){return 0===this.direction?this.rect.topLeft:this.rect.topRight}getDirection(){return this.direction}getFlippingProgress(){return Math.abs((this.position.x-this.pageWidth)/(2*this.pageWidth)*100)}getCorner(){return this.corner}getBottomPagePosition(){return 1===this.direction?{x:this.pageWidth,y:0}:{x:0,y:0}}getShadowStartPoint(){return\"top\"===this.corner?this.topIntersectPoint:null!==this.sideIntersectPoint?this.sideIntersectPoint:this.topIntersectPoint}getShadowAngle(){const t=h.GetAngleBetweenTwoLine(this.getSegmentToShadowLine(),[{x:0,y:0},{x:this.pageWidth,y:0}]);return 0===this.direction?t:Math.PI-t}calcAngleAndPosition(t){let e=t;if(this.updateAngleAndGeometry(e),e=\"top\"===this.corner?this.checkPositionAtCenterLine(e,{x:0,y:0},{x:0,y:this.pageHeight}):this.checkPositionAtCenterLine(e,{x:0,y:this.pageHeight},{x:0,y:0}),Math.abs(e.x-this.pageWidth)<1&&Math.abs(e.y)<1)throw new Error(\"Point is too small\");return e}updateAngleAndGeometry(t){this.angle=this.calculateAngle(t),this.rect=this.getPageRect(t)}calculateAngle(t){const e=this.pageWidth-t.x+1,i=\"bottom\"===this.corner?this.pageHeight-t.y:t.y;let s=2*Math.acos(e/Math.sqrt(i*i+e*e));i<0&&(s=-s);const n=Math.PI-s;if(!isFinite(s)||n>=0&&n<.003)throw new Error(\"The G point is too small\");return\"bottom\"===this.corner&&(s=-s),s}getPageRect(t){return\"top\"===this.corner?this.getRectFromBasePoint([{x:0,y:0},{x:this.pageWidth,y:0},{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}],t):this.getRectFromBasePoint([{x:0,y:-this.pageHeight},{x:this.pageWidth,y:-this.pageHeight},{x:0,y:0},{x:this.pageWidth,y:0}],t)}getRectFromBasePoint(t,e){return{topLeft:this.getRotatedPoint(t[0],e),topRight:this.getRotatedPoint(t[1],e),bottomLeft:this.getRotatedPoint(t[2],e),bottomRight:this.getRotatedPoint(t[3],e)}}getRotatedPoint(t,e){return{x:t.x*Math.cos(this.angle)+t.y*Math.sin(this.angle)+e.x,y:t.y*Math.cos(this.angle)-t.x*Math.sin(this.angle)+e.y}}calculateIntersectPoint(t){const e={left:-1,top:-1,width:this.pageWidth+2,height:this.pageHeight+2};\"top\"===this.corner?(this.topIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[t,this.rect.topRight],[{x:0,y:0},{x:this.pageWidth,y:0}]),this.sideIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[t,this.rect.bottomLeft],[{x:this.pageWidth,y:0},{x:this.pageWidth,y:this.pageHeight}]),this.bottomIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[this.rect.bottomLeft,this.rect.bottomRight],[{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}])):(this.topIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[this.rect.topLeft,this.rect.topRight],[{x:0,y:0},{x:this.pageWidth,y:0}]),this.sideIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[t,this.rect.topLeft],[{x:this.pageWidth,y:0},{x:this.pageWidth,y:this.pageHeight}]),this.bottomIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[this.rect.bottomLeft,this.rect.bottomRight],[{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}]))}checkPositionAtCenterLine(t,e,i){let s=t;const n=h.LimitPointToCircle(e,this.pageWidth,s);s!==n&&(s=n,this.updateAngleAndGeometry(s));const r=Math.sqrt(Math.pow(this.pageWidth,2)+Math.pow(this.pageHeight,2));let o=this.rect.bottomRight,a=this.rect.topLeft;if(\"bottom\"===this.corner&&(o=this.rect.topRight,a=this.rect.bottomLeft),o.x<=0){const t=h.LimitPointToCircle(i,r,a);t!==s&&(s=t,this.updateAngleAndGeometry(s))}return s}getSegmentToShadowLine(){const t=this.getShadowStartPoint();return[t,t!==this.sideIntersectPoint&&null!==this.sideIntersectPoint?this.sideIntersectPoint:this.bottomIntersectPoint]}}class g{constructor(t,e){this.flippingPage=null,this.bottomPage=null,this.calc=null,this.state=\"read\",this.render=t,this.app=e}fold(t){this.setState(\"user_fold\"),null===this.calc&&this.start(t),this.do(this.render.convertToPage(t))}flip(t){if(this.app.getSettings().disableFlipByClick&&!this.isPointOnCorners(t))return;if(null!==this.calc&&this.render.finishAnimation(),!this.start(t))return;const e=this.getBoundsRect();this.setState(\"flipping\");const i=e.height/10,s=\"bottom\"===this.calc.getCorner()?e.height-i:i,n=\"bottom\"===this.calc.getCorner()?e.height:0;this.calc.calc({x:e.pageWidth-i,y:s}),this.animateFlippingTo({x:e.pageWidth-i,y:s},{x:-e.pageWidth,y:n},!0)}start(t){this.reset();const e=this.render.convertToBook(t),i=this.getBoundsRect(),s=this.getDirectionByPoint(e),n=e.y>=i.height/2?\"bottom\":\"top\";if(!this.checkDirection(s))return!1;try{if(this.flippingPage=this.app.getPageCollection().getFlippingPage(s),this.bottomPage=this.app.getPageCollection().getBottomPage(s),\"landscape\"===this.render.getOrientation())if(1===s){const t=this.app.getPageCollection().nextBy(this.flippingPage);null!==t&&this.flippingPage.getDensity()!==t.getDensity()&&(this.flippingPage.setDrawingDensity(\"hard\"),t.setDrawingDensity(\"hard\"))}else{const t=this.app.getPageCollection().prevBy(this.flippingPage);null!==t&&this.flippingPage.getDensity()!==t.getDensity()&&(this.flippingPage.setDrawingDensity(\"hard\"),t.setDrawingDensity(\"hard\"))}return this.render.setDirection(s),this.calc=new a(s,n,i.pageWidth.toString(10),i.height.toString(10)),!0}catch(t){return!1}}do(t){if(null!==this.calc&&this.calc.calc(t)){const t=this.calc.getFlippingProgress();this.bottomPage.setArea(this.calc.getBottomClipArea()),this.bottomPage.setPosition(this.calc.getBottomPagePosition()),this.bottomPage.setAngle(0),this.bottomPage.setHardAngle(0),this.flippingPage.setArea(this.calc.getFlippingClipArea()),this.flippingPage.setPosition(this.calc.getActiveCorner()),this.flippingPage.setAngle(this.calc.getAngle()),0===this.calc.getDirection()?this.flippingPage.setHardAngle(90*(200-2*t)/100):this.flippingPage.setHardAngle(-90*(200-2*t)/100),this.render.setPageRect(this.calc.getRect()),this.render.setBottomPage(this.bottomPage),this.render.setFlippingPage(this.flippingPage),this.render.setShadowData(this.calc.getShadowStartPoint(),this.calc.getShadowAngle(),t,this.calc.getDirection())}}flipToPage(t,e){const i=this.app.getPageCollection().getCurrentSpreadIndex(),s=this.app.getPageCollection().getSpreadIndexByPage(t);try{s>i&&(this.app.getPageCollection().setCurrentSpreadIndex(s-1),this.flipNext(e)),s<i&&(this.app.getPageCollection().setCurrentSpreadIndex(s+1),this.flipPrev(e))}catch(t){}}flipNext(t){this.flip({x:this.render.getRect().left+2*this.render.getRect().pageWidth-10,y:\"top\"===t?1:this.render.getRect().height-2})}flipPrev(t){this.flip({x:10,y:\"top\"===t?1:this.render.getRect().height-2})}stopMove(){if(null===this.calc)return;const t=this.calc.getPosition(),e=this.getBoundsRect(),i=\"bottom\"===this.calc.getCorner()?e.height:0;t.x<=0?this.animateFlippingTo(t,{x:-e.pageWidth,y:i},!0):this.animateFlippingTo(t,{x:e.pageWidth,y:i},!1)}showCorner(t){if(!this.checkState(\"read\",\"fold_corner\"))return;const e=this.getBoundsRect(),i=e.pageWidth;if(this.isPointOnCorners(t))if(null===this.calc){if(!this.start(t))return;this.setState(\"fold_corner\"),this.calc.calc({x:i-1,y:1});const s=50,n=\"bottom\"===this.calc.getCorner()?e.height-1:1,h=\"bottom\"===this.calc.getCorner()?e.height-s:s;this.animateFlippingTo({x:i-1,y:n},{x:i-s,y:h},!1,!1)}else this.do(this.render.convertToPage(t));else this.setState(\"read\"),this.render.finishAnimation(),this.stopMove()}animateFlippingTo(t,e,i,s=!0){const n=h.GetCordsFromTwoPoint(t,e),r=[];for(const t of n)r.push(()=>this.do(t));const o=this.getAnimationDuration(n.length);this.render.startAnimation(r,o,()=>{this.calc&&(i&&(1===this.calc.getDirection()?this.app.turnToPrevPage():this.app.turnToNextPage()),s&&(this.render.setBottomPage(null),this.render.setFlippingPage(null),this.render.clearShadow(),this.setState(\"read\"),this.reset()))})}getCalculation(){return this.calc}getState(){return this.state}setState(t){this.state!==t&&(this.app.updateState(t),this.state=t)}getDirectionByPoint(t){const e=this.getBoundsRect();if(\"portrait\"===this.render.getOrientation()){if(t.x-e.pageWidth<=e.width/5)return 1}else if(t.x<e.width/2)return 1;return 0}getAnimationDuration(t){const e=this.app.getSettings().flippingTime;return t>=1e3?e:t/1e3*e}checkDirection(t){return 0===t?this.app.getCurrentPageIndex()<this.app.getPageCount()-1:this.app.getCurrentPageIndex()>=1}reset(){this.calc=null,this.flippingPage=null,this.bottomPage=null}getBoundsRect(){return this.render.getRect()}checkState(...t){for(const e of t)if(this.state===e)return!0;return!1}isPointOnCorners(t){const e=this.getBoundsRect(),i=e.pageWidth,s=Math.sqrt(Math.pow(i,2)+Math.pow(e.height,2))/5,n=this.render.convertToBook(t);return n.x>0&&n.y>0&&n.x<e.width&&n.y<e.height&&(n.x<s||n.x>e.width-s)&&(n.y<s||n.y>e.height-s)}}class l{constructor(t,e){this.leftPage=null,this.rightPage=null,this.flippingPage=null,this.bottomPage=null,this.direction=null,this.orientation=null,this.shadow=null,this.animation=null,this.pageRect=null,this.boundsRect=null,this.timer=0,this.safari=!1,this.setting=e,this.app=t;const i=new RegExp(\"Version\\\\/[\\\\d\\\\.]+.*Safari/\");this.safari=null!==i.exec(window.navigator.userAgent)}render(t){if(null!==this.animation){const e=Math.round((t-this.animation.startedAt)/this.animation.durationFrame);e<this.animation.frames.length?this.animation.frames[e]():(this.animation.onAnimateEnd(),this.animation=null)}this.timer=t,this.drawFrame()}start(){this.update();const t=e=>{this.render(e),requestAnimationFrame(t)};requestAnimationFrame(t)}startAnimation(t,e,i){this.finishAnimation(),this.animation={frames:t,duration:e,durationFrame:e/t.length,onAnimateEnd:i,startedAt:this.timer}}finishAnimation(){null!==this.animation&&(this.animation.frames[this.animation.frames.length-1](),null!==this.animation.onAnimateEnd&&this.animation.onAnimateEnd()),this.animation=null}update(){this.boundsRect=null;const t=this.calculateBoundsRect();this.orientation!==t&&(this.orientation=t,this.app.updateOrientation(t))}calculateBoundsRect(){let t=\"landscape\";const e=this.getBlockWidth(),i=e/2,s=this.getBlockHeight()/2,n=this.setting.width/this.setting.height;let h=this.setting.width,r=this.setting.height,o=i-h;return\"stretch\"===this.setting.size?(e<2*this.setting.minWidth&&this.app.getSettings().usePortrait&&(t=\"portrait\"),h=\"portrait\"===t?this.getBlockWidth():this.getBlockWidth()/2,h>this.setting.maxWidth&&(h=this.setting.maxWidth),r=h/n,r>this.getBlockHeight()&&(r=this.getBlockHeight(),h=r*n),o=\"portrait\"===t?i-h/2-h:i-h):e<2*h&&this.app.getSettings().usePortrait&&(t=\"portrait\",o=i-h/2-h),this.boundsRect={left:o,top:s-r/2,width:2*h,height:r,pageWidth:h},t}setShadowData(t,e,i,s){if(!this.app.getSettings().drawShadow)return;const n=100*this.getSettings().maxShadowOpacity;this.shadow={pos:t,angle:e,width:3*this.getRect().pageWidth/4*i/100,opacity:(100-i)*n/100/100,direction:s,progress:2*i}}clearShadow(){this.shadow=null}getBlockWidth(){return this.app.getUI().getDistElement().offsetWidth}getBlockHeight(){return this.app.getUI().getDistElement().offsetHeight}getDirection(){return this.direction}getRect(){return null===this.boundsRect&&this.calculateBoundsRect(),this.boundsRect}getSettings(){return this.app.getSettings()}getOrientation(){return this.orientation}setPageRect(t){this.pageRect=t}setDirection(t){this.direction=t}setRightPage(t){null!==t&&t.setOrientation(1),this.rightPage=t}setLeftPage(t){null!==t&&t.setOrientation(0),this.leftPage=t}setBottomPage(t){null!==t&&t.setOrientation(1===this.direction?0:1),this.bottomPage=t}setFlippingPage(t){null!==t&&t.setOrientation(0===this.direction&&\"portrait\"!==this.orientation?0:1),this.flippingPage=t}convertToBook(t){const e=this.getRect();return{x:t.x-e.left,y:t.y-e.top}}isSafari(){return this.safari}convertToPage(t,e){e||(e=this.direction);const i=this.getRect();return{x:0===e?t.x-i.left-i.width/2:i.width/2-t.x+i.left,y:t.y-i.top}}convertToGlobal(t,e){if(e||(e=this.direction),null==t)return null;const i=this.getRect();return{x:0===e?t.x+i.left+i.width/2:i.width/2-t.x+i.left,y:t.y+i.top}}convertRectToGlobal(t,e){return e||(e=this.direction),{topLeft:this.convertToGlobal(t.topLeft,e),topRight:this.convertToGlobal(t.topRight,e),bottomLeft:this.convertToGlobal(t.bottomLeft,e),bottomRight:this.convertToGlobal(t.bottomRight,e)}}}class d extends l{constructor(t,e,i){super(t,e),this.canvas=i,this.ctx=i.getContext(\"2d\")}getContext(){return this.ctx}reload(){}drawFrame(){this.clear(),\"portrait\"!==this.orientation&&null!=this.leftPage&&this.leftPage.simpleDraw(0),null!=this.rightPage&&this.rightPage.simpleDraw(1),null!=this.bottomPage&&this.bottomPage.draw(),this.drawBookShadow(),null!=this.flippingPage&&this.flippingPage.draw(),null!=this.shadow&&(this.drawOuterShadow(),this.drawInnerShadow());const t=this.getRect();\"portrait\"===this.orientation&&(this.ctx.beginPath(),this.ctx.rect(t.left+t.pageWidth,t.top,t.width,t.height),this.ctx.clip())}drawBookShadow(){const t=this.getRect();this.ctx.save(),this.ctx.beginPath();const e=t.width/20;this.ctx.rect(t.left,t.top,t.width,t.height);const i={x:t.left+t.width/2-e/2,y:0};this.ctx.translate(i.x,i.y);const s=this.ctx.createLinearGradient(0,0,e,0);s.addColorStop(0,\"rgba(0, 0, 0, 0)\"),s.addColorStop(.4,\"rgba(0, 0, 0, 0.2)\"),s.addColorStop(.49,\"rgba(0, 0, 0, 0.1)\"),s.addColorStop(.5,\"rgba(0, 0, 0, 0.5)\"),s.addColorStop(.51,\"rgba(0, 0, 0, 0.4)\"),s.addColorStop(1,\"rgba(0, 0, 0, 0)\"),this.ctx.clip(),this.ctx.fillStyle=s,this.ctx.fillRect(0,0,e,2*t.height),this.ctx.restore()}drawOuterShadow(){const t=this.getRect();this.ctx.save(),this.ctx.beginPath(),this.ctx.rect(t.left,t.top,t.width,t.height);const e=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y});this.ctx.translate(e.x,e.y),this.ctx.rotate(Math.PI+this.shadow.angle+Math.PI/2);const i=this.ctx.createLinearGradient(0,0,this.shadow.width,0);0===this.shadow.direction?(this.ctx.translate(0,-100),i.addColorStop(0,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),i.addColorStop(1,\"rgba(0, 0, 0, 0)\")):(this.ctx.translate(-this.shadow.width,-100),i.addColorStop(0,\"rgba(0, 0, 0, 0)\"),i.addColorStop(1,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\")),this.ctx.clip(),this.ctx.fillStyle=i,this.ctx.fillRect(0,0,this.shadow.width,2*t.height),this.ctx.restore()}drawInnerShadow(){const t=this.getRect();this.ctx.save(),this.ctx.beginPath();const e=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y}),i=this.convertRectToGlobal(this.pageRect);this.ctx.moveTo(i.topLeft.x,i.topLeft.y),this.ctx.lineTo(i.topRight.x,i.topRight.y),this.ctx.lineTo(i.bottomRight.x,i.bottomRight.y),this.ctx.lineTo(i.bottomLeft.x,i.bottomLeft.y),this.ctx.translate(e.x,e.y),this.ctx.rotate(Math.PI+this.shadow.angle+Math.PI/2);const s=3*this.shadow.width/4,n=this.ctx.createLinearGradient(0,0,s,0);0===this.shadow.direction?(this.ctx.translate(-s,-100),n.addColorStop(1,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(.9,\"rgba(0, 0, 0, 0.05)\"),n.addColorStop(.7,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(0,\"rgba(0, 0, 0, 0)\")):(this.ctx.translate(0,-100),n.addColorStop(0,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(.1,\"rgba(0, 0, 0, 0.05)\"),n.addColorStop(.3,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(1,\"rgba(0, 0, 0, 0)\")),this.ctx.clip(),this.ctx.fillStyle=n,this.ctx.fillRect(0,0,s,2*t.height),this.ctx.restore()}clear(){this.ctx.fillStyle=\"white\",this.ctx.fillRect(0,0,this.canvas.width,this.canvas.height)}}class p{constructor(t,e,i){this.touchPoint=null,this.swipeTimeout=250,this.onResize=()=>{this.update()},this.onMouseDown=t=>{if(this.checkTarget(t.target)){const e=this.getMousePos(t.clientX,t.clientY);this.app.startUserTouch(e),t.preventDefault()}},this.onTouchStart=t=>{if(this.checkTarget(t.target)&&t.changedTouches.length>0){const e=t.changedTouches[0],i=this.getMousePos(e.clientX,e.clientY);this.touchPoint={point:i,time:Date.now()},setTimeout(()=>{null!==this.touchPoint&&this.app.startUserTouch(i)},this.swipeTimeout),this.app.getSettings().mobileScrollSupport||t.preventDefault()}},this.onMouseUp=t=>{const e=this.getMousePos(t.clientX,t.clientY);this.app.userStop(e)},this.onMouseMove=t=>{const e=this.getMousePos(t.clientX,t.clientY);this.app.userMove(e,!1)},this.onTouchMove=t=>{if(t.changedTouches.length>0){const e=t.changedTouches[0],i=this.getMousePos(e.clientX,e.clientY);this.app.getSettings().mobileScrollSupport?(null!==this.touchPoint&&(Math.abs(this.touchPoint.point.x-i.x)>10||\"read\"!==this.app.getState())&&t.cancelable&&this.app.userMove(i,!0),\"read\"!==this.app.getState()&&t.preventDefault()):this.app.userMove(i,!0)}},this.onTouchEnd=t=>{if(t.changedTouches.length>0){const e=t.changedTouches[0],i=this.getMousePos(e.clientX,e.clientY);let s=!1;if(null!==this.touchPoint){const t=i.x-this.touchPoint.point.x,e=Math.abs(i.y-this.touchPoint.point.y);Math.abs(t)>this.swipeDistance&&e<2*this.swipeDistance&&Date.now()-this.touchPoint.time<this.swipeTimeout&&(t>0?this.app.flipPrev(this.touchPoint.point.y<this.app.getRender().getRect().height/2?\"top\":\"bottom\"):this.app.flipNext(this.touchPoint.point.y<this.app.getRender().getRect().height/2?\"top\":\"bottom\"),s=!0),this.touchPoint=null}this.app.userStop(i,s)}},this.parentElement=t,t.classList.add(\"stf__parent\"),t.insertAdjacentHTML(\"afterbegin\",'<div class=\"stf__wrapper\"></div>'),this.wrapper=t.querySelector(\".stf__wrapper\"),this.app=e;const s=this.app.getSettings().usePortrait?1:2;t.style.minWidth=i.minWidth*s+\"px\",t.style.minHeight=i.minHeight+\"px\",\"fixed\"===i.size&&(t.style.minWidth=i.width*s+\"px\",t.style.minHeight=i.height+\"px\"),i.autoSize&&(t.style.width=\"100%\",t.style.maxWidth=2*i.maxWidth+\"px\"),t.style.display=\"block\",window.addEventListener(\"resize\",this.onResize,!1),this.swipeDistance=i.swipeDistance}destroy(){this.app.getSettings().useMouseEvents&&this.removeHandlers(),this.distElement.remove(),this.wrapper.remove()}getDistElement(){return this.distElement}getWrapper(){return this.wrapper}setOrientationStyle(t){this.wrapper.classList.remove(\"--portrait\",\"--landscape\"),\"portrait\"===t?(this.app.getSettings().autoSize&&(this.wrapper.style.paddingBottom=this.app.getSettings().height/this.app.getSettings().width*100+\"%\"),this.wrapper.classList.add(\"--portrait\")):(this.app.getSettings().autoSize&&(this.wrapper.style.paddingBottom=this.app.getSettings().height/(2*this.app.getSettings().width)*100+\"%\"),this.wrapper.classList.add(\"--landscape\")),this.update()}removeHandlers(){window.removeEventListener(\"resize\",this.onResize),this.distElement.removeEventListener(\"mousedown\",this.onMouseDown),this.distElement.removeEventListener(\"touchstart\",this.onTouchStart),window.removeEventListener(\"mousemove\",this.onMouseMove),window.removeEventListener(\"touchmove\",this.onTouchMove),window.removeEventListener(\"mouseup\",this.onMouseUp),window.removeEventListener(\"touchend\",this.onTouchEnd)}setHandlers(){window.addEventListener(\"resize\",this.onResize,!1),this.app.getSettings().useMouseEvents&&(this.distElement.addEventListener(\"mousedown\",this.onMouseDown),this.distElement.addEventListener(\"touchstart\",this.onTouchStart),window.addEventListener(\"mousemove\",this.onMouseMove),window.addEventListener(\"touchmove\",this.onTouchMove,{passive:!this.app.getSettings().mobileScrollSupport}),window.addEventListener(\"mouseup\",this.onMouseUp),window.addEventListener(\"touchend\",this.onTouchEnd))}getMousePos(t,e){const i=this.distElement.getBoundingClientRect();return{x:t-i.left,y:e-i.top}}checkTarget(t){return!this.app.getSettings().clickEventForward||![\"a\",\"button\"].includes(t.tagName.toLowerCase())}}class c extends p{constructor(t,e,i,s){super(t,e,i),this.wrapper.insertAdjacentHTML(\"afterbegin\",'<div class=\"stf__block\"></div>'),this.distElement=t.querySelector(\".stf__block\"),this.items=s;for(const t of s)this.distElement.appendChild(t);this.setHandlers()}clear(){for(const t of this.items)this.parentElement.appendChild(t)}updateItems(t){this.removeHandlers(),this.distElement.innerHTML=\"\";for(const e of t)this.distElement.appendChild(e);this.items=t,this.setHandlers()}update(){this.app.getRender().update()}}class u extends p{constructor(t,e,i){super(t,e,i),this.wrapper.innerHTML='<canvas class=\"stf__canvas\"></canvas>',this.canvas=t.querySelectorAll(\"canvas\")[0],this.distElement=this.canvas,this.resizeCanvas(),this.setHandlers()}resizeCanvas(){const t=getComputedStyle(this.canvas),e=parseInt(t.getPropertyValue(\"width\"),10),i=parseInt(t.getPropertyValue(\"height\"),10);this.canvas.width=e,this.canvas.height=i}getCanvas(){return this.canvas}update(){this.resizeCanvas(),this.app.getRender().update()}}class w extends l{constructor(t,e,i){super(t,e),this.outerShadow=null,this.innerShadow=null,this.hardShadow=null,this.hardInnerShadow=null,this.element=i,this.createShadows()}createShadows(){this.element.insertAdjacentHTML(\"beforeend\",'<div class=\"stf__outerShadow\"></div>\\n <div class=\"stf__innerShadow\"></div>\\n <div class=\"stf__hardShadow\"></div>\\n <div class=\"stf__hardInnerShadow\"></div>'),this.outerShadow=this.element.querySelector(\".stf__outerShadow\"),this.innerShadow=this.element.querySelector(\".stf__innerShadow\"),this.hardShadow=this.element.querySelector(\".stf__hardShadow\"),this.hardInnerShadow=this.element.querySelector(\".stf__hardInnerShadow\")}clearShadow(){super.clearShadow(),this.outerShadow.style.cssText=\"display: none\",this.innerShadow.style.cssText=\"display: none\",this.hardShadow.style.cssText=\"display: none\",this.hardInnerShadow.style.cssText=\"display: none\"}reload(){this.element.querySelector(\".stf__outerShadow\")||this.createShadows()}drawHardInnerShadow(){const t=this.getRect(),e=this.shadow.progress>100?200-this.shadow.progress:this.shadow.progress;let i=(100-e)*(2.5*t.pageWidth)/100+20;i>t.pageWidth&&(i=t.pageWidth);let s=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+5).toString(10)};\\n width: ${i}px;\\n height: ${t.height}px;\\n background: linear-gradient(to right,\\n rgba(0, 0, 0, ${this.shadow.opacity*e/100}) 5%,\\n rgba(0, 0, 0, 0) 100%);\\n left: ${t.left+t.width/2}px;\\n transform-origin: 0 0;\\n `;s+=0===this.getDirection()&&this.shadow.progress>100||1===this.getDirection()&&this.shadow.progress<=100?\"transform: translate3d(0, 0, 0);\":\"transform: translate3d(0, 0, 0) rotateY(180deg);\",this.hardInnerShadow.style.cssText=s}drawHardOuterShadow(){const t=this.getRect();let e=(100-(this.shadow.progress>100?200-this.shadow.progress:this.shadow.progress))*(2.5*t.pageWidth)/100+20;e>t.pageWidth&&(e=t.pageWidth);let i=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+4).toString(10)};\\n width: ${e}px;\\n height: ${t.height}px;\\n background: linear-gradient(to left, rgba(0, 0, 0, ${this.shadow.opacity}) 5%, rgba(0, 0, 0, 0) 100%);\\n left: ${t.left+t.width/2}px;\\n transform-origin: 0 0;\\n `;i+=0===this.getDirection()&&this.shadow.progress>100||1===this.getDirection()&&this.shadow.progress<=100?\"transform: translate3d(0, 0, 0) rotateY(180deg);\":\"transform: translate3d(0, 0, 0);\",this.hardShadow.style.cssText=i}drawInnerShadow(){const t=this.getRect(),e=3*this.shadow.width/4,i=0===this.getDirection()?e:0,s=0===this.getDirection()?\"to left\":\"to right\",n=this.convertToGlobal(this.shadow.pos),r=this.shadow.angle+3*Math.PI/2,o=[this.pageRect.topLeft,this.pageRect.topRight,this.pageRect.bottomRight,this.pageRect.bottomLeft];let a=\"polygon( \";for(const t of o){let e=1===this.getDirection()?{x:-t.x+this.shadow.pos.x,y:t.y-this.shadow.pos.y}:{x:t.x-this.shadow.pos.x,y:t.y-this.shadow.pos.y};e=h.GetRotatedPoint(e,{x:i,y:100},r),a+=e.x+\"px \"+e.y+\"px, \"}a=a.slice(0,-2),a+=\")\";const g=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+10).toString(10)};\\n width: ${e}px;\\n height: ${2*t.height}px;\\n background: linear-gradient(${s},\\n rgba(0, 0, 0, ${this.shadow.opacity}) 5%,\\n rgba(0, 0, 0, 0.05) 15%,\\n rgba(0, 0, 0, ${this.shadow.opacity}) 35%,\\n rgba(0, 0, 0, 0) 100%);\\n transform-origin: ${i}px 100px;\\n transform: translate3d(${n.x-i}px, ${n.y-100}px, 0) rotate(${r}rad);\\n clip-path: ${a};\\n -webkit-clip-path: ${a};\\n `;this.innerShadow.style.cssText=g}drawOuterShadow(){const t=this.getRect(),e=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y}),i=this.shadow.angle+3*Math.PI/2,s=1===this.getDirection()?this.shadow.width:0,n=0===this.getDirection()?\"to right\":\"to left\",r=[{x:0,y:0},{x:t.pageWidth,y:0},{x:t.pageWidth,y:t.height},{x:0,y:t.height}];let o=\"polygon( \";for(const t of r)if(null!==t){let e=1===this.getDirection()?{x:-t.x+this.shadow.pos.x,y:t.y-this.shadow.pos.y}:{x:t.x-this.shadow.pos.x,y:t.y-this.shadow.pos.y};e=h.GetRotatedPoint(e,{x:s,y:100},i),o+=e.x+\"px \"+e.y+\"px, \"}o=o.slice(0,-2),o+=\")\";const a=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+10).toString(10)};\\n width: ${this.shadow.width}px;\\n height: ${2*t.height}px;\\n background: linear-gradient(${n}, rgba(0, 0, 0, ${this.shadow.opacity}), rgba(0, 0, 0, 0));\\n transform-origin: ${s}px 100px;\\n transform: translate3d(${e.x-s}px, ${e.y-100}px, 0) rotate(${i}rad);\\n clip-path: ${o};\\n -webkit-clip-path: ${o};\\n `;this.outerShadow.style.cssText=a}drawLeftPage(){\"portrait\"!==this.orientation&&null!==this.leftPage&&(1===this.direction&&null!==this.flippingPage&&\"hard\"===this.flippingPage.getDrawingDensity()?(this.leftPage.getElement().style.zIndex=(this.getSettings().startZIndex+5).toString(10),this.leftPage.setHardDrawingAngle(180+this.flippingPage.getHardAngle()),this.leftPage.draw(this.flippingPage.getDrawingDensity())):this.leftPage.simpleDraw(0))}drawRightPage(){null!==this.rightPage&&(0===this.direction&&null!==this.flippingPage&&\"hard\"===this.flippingPage.getDrawingDensity()?(this.rightPage.getElement().style.zIndex=(this.getSettings().startZIndex+5).toString(10),this.rightPage.setHardDrawingAngle(180+this.flippingPage.getHardAngle()),this.rightPage.draw(this.flippingPage.getDrawingDensity())):this.rightPage.simpleDraw(1))}drawBottomPage(){if(null===this.bottomPage)return;const t=null!=this.flippingPage?this.flippingPage.getDrawingDensity():null;\"portrait\"===this.orientation&&1===this.direction||(this.bottomPage.getElement().style.zIndex=(this.getSettings().startZIndex+3).toString(10),this.bottomPage.draw(t))}drawFrame(){this.clear(),this.drawLeftPage(),this.drawRightPage(),this.drawBottomPage(),null!=this.flippingPage&&(this.flippingPage.getElement().style.zIndex=(this.getSettings().startZIndex+5).toString(10),this.flippingPage.draw()),null!=this.shadow&&null!==this.flippingPage&&(\"soft\"===this.flippingPage.getDrawingDensity()?(this.drawOuterShadow(),this.drawInnerShadow()):(this.drawHardOuterShadow(),this.drawHardInnerShadow()))}clear(){for(const t of this.app.getPageCollection().getPages())t!==this.leftPage&&t!==this.rightPage&&t!==this.flippingPage&&t!==this.bottomPage&&(t.getElement().style.cssText=\"display: none\"),t.getTemporaryCopy()!==this.flippingPage&&t.hideTemporaryCopy()}update(){super.update(),null!==this.rightPage&&this.rightPage.setOrientation(1),null!==this.leftPage&&this.leftPage.setOrientation(0)}}class x{constructor(){this._default={startPage:0,size:\"fixed\",width:0,height:0,minWidth:0,maxWidth:0,minHeight:0,maxHeight:0,drawShadow:!0,flippingTime:1e3,usePortrait:!0,startZIndex:0,autoSize:!0,maxShadowOpacity:1,showCover:!1,mobileScrollSupport:!0,swipeDistance:30,clickEventForward:!0,useMouseEvents:!0,showPageCorners:!0,disableFlipByClick:!1}}getSettings(t){const e=this._default;if(Object.assign(e,t),\"stretch\"!==e.size&&\"fixed\"!==e.size)throw new Error('Invalid size type. Available only \"fixed\" and \"stretch\" value');if(e.width<=0||e.height<=0)throw new Error(\"Invalid width or height\");if(e.flippingTime<=0)throw new Error(\"Invalid flipping time\");return\"stretch\"===e.size?(e.minWidth<=0&&(e.minWidth=100),e.maxWidth<e.minWidth&&(e.maxWidth=2e3),e.minHeight<=0&&(e.minHeight=100),e.maxHeight<e.minHeight&&(e.maxHeight=2e3)):(e.minWidth=e.width,e.maxWidth=e.width,e.minHeight=e.height,e.maxHeight=e.height),e}}!function(t,e){void 0===e&&(e={});var i=e.insertAt;if(t&&\"undefined\"!=typeof document){var s=document.head||document.getElementsByTagName(\"head\")[0],n=document.createElement(\"style\");n.type=\"text/css\",\"top\"===i&&s.firstChild?s.insertBefore(n,s.firstChild):s.appendChild(n),n.styleSheet?n.styleSheet.cssText=t:n.appendChild(document.createTextNode(t))}}(\".stf__parent {\\n position: relative;\\n display: block;\\n box-sizing: border-box;\\n transform: translateZ(0);\\n\\n -ms-touch-action: pan-y;\\n touch-action: pan-y;\\n}\\n\\n.sft__wrapper {\\n position: relative;\\n width: 100%;\\n box-sizing: border-box;\\n}\\n\\n.stf__parent canvas {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__block {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n box-sizing: border-box;\\n perspective: 2000px;\\n}\\n\\n.stf__item {\\n display: none;\\n position: absolute;\\n transform-style: preserve-3d;\\n}\\n\\n.stf__outerShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__innerShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__hardShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__hardInnerShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\");t.PageFlip=class extends class{constructor(){this.events=new Map}on(t,e){return this.events.has(t)?this.events.get(t).push(e):this.events.set(t,[e]),this}off(t){this.events.delete(t)}trigger(t,e,i=null){if(this.events.has(t))for(const s of this.events.get(t))s({data:i,object:e})}}{constructor(t,e){super(),this.isUserTouch=!1,this.isUserMove=!1,this.setting=null,this.pages=null,this.setting=(new x).getSettings(e),this.block=t}destroy(){this.ui.destroy(),this.block.remove()}update(){this.render.update(),this.pages.show()}loadFromImages(t){this.ui=new u(this.block,this,this.setting);const e=this.ui.getCanvas();this.render=new d(this,this.setting,e),this.flipController=new g(this.render,this),this.pages=new n(this,this.render,t),this.pages.load(),this.render.start(),this.pages.show(this.setting.startPage),setTimeout(()=>{this.ui.update(),this.trigger(\"init\",this,{page:this.setting.startPage,mode:this.render.getOrientation()})},1)}loadFromHTML(t){this.ui=new c(this.block,this,this.setting,t),this.render=new w(this,this.setting,this.ui.getDistElement()),this.flipController=new g(this.render,this),this.pages=new o(this,this.render,this.ui.getDistElement(),t),this.pages.load(),this.render.start(),this.pages.show(this.setting.startPage),setTimeout(()=>{this.ui.update(),this.trigger(\"init\",this,{page:this.setting.startPage,mode:this.render.getOrientation()})},1)}updateFromImages(t){const e=this.pages.getCurrentPageIndex();this.pages.destroy(),this.pages=new n(this,this.render,t),this.pages.load(),this.pages.show(e),this.trigger(\"update\",this,{page:e,mode:this.render.getOrientation()})}updateFromHtml(t){const e=this.pages.getCurrentPageIndex();this.pages.destroy(),this.pages=new o(this,this.render,this.ui.getDistElement(),t),this.pages.load(),this.ui.updateItems(t),this.render.reload(),this.pages.show(e),this.trigger(\"update\",this,{page:e,mode:this.render.getOrientation()})}clear(){this.pages.destroy(),this.ui.clear()}turnToPrevPage(){this.pages.showPrev()}turnToNextPage(){this.pages.showNext()}turnToPage(t){this.pages.show(t)}flipNext(t=\"top\"){this.flipController.flipNext(t)}flipPrev(t=\"top\"){this.flipController.flipPrev(t)}flip(t,e=\"top\"){this.flipController.flipToPage(t,e)}updateState(t){this.trigger(\"changeState\",this,t)}updatePageIndex(t){this.trigger(\"flip\",this,t)}updateOrientation(t){this.ui.setOrientationStyle(t),this.update(),this.trigger(\"changeOrientation\",this,t)}getPageCount(){return this.pages.getPageCount()}getCurrentPageIndex(){return this.pages.getCurrentPageIndex()}getPage(t){return this.pages.getPage(t)}getRender(){return this.render}getFlipController(){return this.flipController}getOrientation(){return this.render.getOrientation()}getBoundsRect(){return this.render.getRect()}getSettings(){return this.setting}getUI(){return this.ui}getState(){return this.flipController.getState()}getPageCollection(){return this.pages}startUserTouch(t){this.mousePosition=t,this.isUserTouch=!0,this.isUserMove=!1}userMove(t,e){this.isUserTouch||e||!this.setting.showPageCorners?this.isUserTouch&&h.GetDistanceBetweenTwoPoint(this.mousePosition,t)>5&&(this.isUserMove=!0,this.flipController.fold(t)):this.flipController.showCorner(t)}userStop(t,e=!1){this.isUserTouch&&(this.isUserTouch=!1,e||(this.isUserMove?this.flipController.stopMove():this.flipController.flip(t)))}},Object.defineProperty(t,\"__esModule\",{value:!0})}));\n","import { PageFlip } from 'page-flip';\nimport { effect } from '@preact/signals-core';\nimport { currentPage, orientation, flipState, pages, isSingleMode, soundEnabled, isAutoPlaying, autoPlayInterval } from '../state/store';\nimport type { FlipbookEngineOptions } from '../engine';\n\nexport class PageFlipAdapter {\n private pageFlip: any = null;\n private bookContainer: HTMLElement;\n private options: FlipbookEngineOptions;\n private unsubs: Array<() => void> = [];\n private audioEl: HTMLAudioElement | null = null;\n private isLibraryFlipping = false;\n private autoPlayTimer: any = null;\n\n constructor(bookContainer: HTMLElement, options: FlipbookEngineOptions) {\n this.bookContainer = bookContainer;\n this.options = options;\n if (options.soundUrl) {\n this.audioEl = new Audio(options.soundUrl);\n }\n }\n\n public init(viewportWidth: number, viewportHeight: number) {\n this.pageFlip = new PageFlip(this.bookContainer, {\n width: viewportWidth,\n height: viewportHeight,\n size: \"stretch\" as any,\n minWidth: 100,\n maxWidth: 3000,\n minHeight: 100,\n maxHeight: 3000,\n drawShadow: true,\n showCover: true,\n usePortrait: true,\n mobileScrollSupport: false,\n maxShadowOpacity: this.options.maxShadowOpacity || 0.5,\n flippingTime: this.options.flippingTime || 1000\n });\n\n // Load the HTML pages from the DOM\n const pageElements = this.bookContainer.querySelectorAll('.bz-page');\n this.pageFlip.loadFromHTML(Array.from(pageElements));\n\n this.bindEvents();\n this.setupSignalSync();\n }\n\n private bindEvents() {\n // When the library flips a page, update our signal\n this.pageFlip.on('flip', (e: any) => {\n // Check if we are not just initializing\n if (currentPage.value !== e.data) {\n this.isLibraryFlipping = true;\n currentPage.value = e.data;\n this.playSound();\n this.isLibraryFlipping = false;\n }\n });\n\n // When the library changes state, update our signal\n this.pageFlip.on('changeState', (e: any) => {\n flipState.value = e.data;\n });\n\n // When the library changes orientation, update our signal\n this.pageFlip.on('changeOrientation', (e: any) => {\n if (orientation.value !== e.data) {\n orientation.value = e.data;\n }\n });\n }\n\n private setupSignalSync() {\n // When our signal changes, tell the library to flip (if needed)\n this.unsubs.push(\n effect(() => {\n const targetPage = currentPage.value;\n const state = flipState.peek();\n if (!this.pageFlip || this.isLibraryFlipping || state !== 'read') return;\n \n const libCurrentPage = this.pageFlip.getCurrentPageIndex();\n if (libCurrentPage !== targetPage && !isSingleMode.value) {\n const getSpreadIndex = (p: number) => p === 0 ? 0 : Math.ceil(p / 2);\n const targetSpread = getSpreadIndex(targetPage);\n const currentSpread = getSpreadIndex(libCurrentPage);\n \n if (targetSpread === currentSpread + 1) {\n this.pageFlip.flipNext();\n } else if (targetSpread === currentSpread - 1) {\n this.pageFlip.flipPrev();\n } else if (targetSpread !== currentSpread) {\n this.pageFlip.turnToPage(targetPage);\n }\n }\n })\n );\n\n // Watch for singleMode changes from DOMWise UI to trigger layout updates\n this.unsubs.push(\n effect(() => {\n isSingleMode.value;\n if (!this.pageFlip) return;\n \n // We use setTimeout to wait for LayoutManager to update the container dimensions first\n setTimeout(() => {\n if (this.pageFlip) {\n this.pageFlip.update();\n }\n window.dispatchEvent(new Event('resize'));\n }, 50);\n })\n );\n \n // AutoPlay loop\n this.unsubs.push(\n effect(() => {\n const playing = isAutoPlaying.value;\n const interval = autoPlayInterval.value || 3000;\n \n if (this.autoPlayTimer) {\n clearInterval(this.autoPlayTimer);\n this.autoPlayTimer = null;\n }\n \n if (playing) {\n this.autoPlayTimer = setInterval(() => {\n // Check if we are at the end\n const maxIndex = pages.value.length - 1;\n if (currentPage.peek() >= maxIndex || (currentPage.peek() >= maxIndex - 1 && !isSingleMode.peek())) {\n // If at end, pause or loop\n // Let's just pause\n isAutoPlaying.value = false;\n return;\n }\n this.turnToNextPage();\n }, interval);\n }\n })\n );\n }\n\n public turnToNextPage() {\n if (isSingleMode.value) {\n const nextIdx = currentPage.value + 1;\n if (nextIdx < pages.value.length) {\n currentPage.value = nextIdx;\n this.playSound();\n }\n } else if (this.pageFlip) {\n this.pageFlip.flipNext();\n }\n }\n\n public turnToPrevPage() {\n if (isSingleMode.value) {\n const prevIdx = currentPage.value - 1;\n if (prevIdx >= 0) {\n currentPage.value = prevIdx;\n this.playSound();\n }\n } else if (this.pageFlip) {\n this.pageFlip.flipPrev();\n }\n }\n\n public playSound() {\n if (soundEnabled.value && this.audioEl) {\n this.audioEl.currentTime = 0;\n this.audioEl.play().catch(err => console.warn('Flipbook Audio Play Error:', err));\n }\n }\n\n public update() {\n if (this.pageFlip) {\n this.pageFlip.update();\n }\n }\n\n public destroy() {\n this.unsubs.forEach(unsub => unsub());\n this.unsubs = [];\n if (this.pageFlip) {\n this.pageFlip.destroy();\n this.pageFlip = null;\n }\n }\n}\n","import { effect } from '@preact/signals-core';\nimport { isSingleMode, isDoublePageLayout, orientation } from '../state/store';\n\nexport class LayoutManager {\n private wrapperElement: HTMLElement | null = null;\n private sizerElement: HTMLElement | null = null;\n private pageViewport: { width: number; height: number };\n private resizeObserver: ResizeObserver | null = null;\n private orientationMediaQuery: MediaQueryList | null = null;\n private unsubs: Array<() => void> = [];\n public onResizeCallback?: () => void;\n\n constructor(pageViewport: { width: number; height: number }) {\n this.pageViewport = pageViewport;\n }\n\n public init(wrapperElement: HTMLElement, sizerElement: HTMLElement) {\n this.wrapperElement = wrapperElement;\n this.sizerElement = sizerElement;\n\n this.setupResizeObserver();\n this.setupOrientationMedia();\n this.setupStateSync();\n\n // Initial update\n this.updateBookAspectRatio();\n }\n\n private setupStateSync() {\n // When single mode or orientation changes, we need to recalculate the aspect ratio\n this.unsubs.push(\n effect(() => {\n // Accessing signals to track dependencies\n isSingleMode.value;\n orientation.value;\n \n // Debounce slightly to allow DOM to settle if classes were added\n setTimeout(() => this.updateBookAspectRatio(), 10);\n })\n );\n }\n\n private setupResizeObserver() {\n if (typeof ResizeObserver !== 'undefined' && this.wrapperElement) {\n this.resizeObserver = new ResizeObserver(() => {\n this.updateBookAspectRatio();\n });\n this.resizeObserver.observe(this.wrapperElement);\n }\n }\n\n private setupOrientationMedia() {\n if (typeof window !== 'undefined' && window.matchMedia) {\n this.orientationMediaQuery = window.matchMedia(\"(orientation: portrait)\");\n \n const handleOrientationChange = (e: MediaQueryListEvent | MediaQueryList) => {\n if (e.matches) {\n // Mobile device turned to portrait -> force single mode? \n // This can be decided by the business logic, for now we just recalculate\n }\n this.updateBookAspectRatio();\n };\n\n // Add listener\n if (this.orientationMediaQuery.addEventListener) {\n this.orientationMediaQuery.addEventListener('change', handleOrientationChange);\n } else {\n this.orientationMediaQuery.addListener(handleOrientationChange);\n }\n \n // Call once\n handleOrientationChange(this.orientationMediaQuery);\n }\n }\n\n public updateBookAspectRatio() {\n if (!this.wrapperElement || !this.sizerElement) return;\n\n const availWidth = this.wrapperElement.clientWidth;\n const availHeight = this.wrapperElement.clientHeight;\n\n if (availWidth === 0 || availHeight === 0) return;\n\n const width = this.pageViewport.width;\n const height = this.pageViewport.height;\n\n // Standard aspect ratio calculation\n const isPhysicalPortrait = availWidth < availHeight;\n \n // If the library is in landscape mode AND we are not in forced single mode, we need double width\n const isDouble = isDoublePageLayout.value;\n const targetRatio = isDouble ? (width * 2) / height : width / height;\n\n let bookWidth = availWidth;\n let bookHeight = availWidth / targetRatio;\n\n // We must fit the entire book on the screen to prevent unwanted vertical scrolling.\n if (bookHeight > availHeight) {\n bookHeight = availHeight;\n bookWidth = availHeight * targetRatio;\n }\n\n // Apply exact pixel sizes.\n // Ensure the width is ALWAYS an EVEN number to prevent sub-pixel rendering gaps.\n let finalWidth = Math.ceil(bookWidth);\n if (finalWidth % 2 !== 0) finalWidth += 1;\n\n this.sizerElement.style.width = `${finalWidth}px`;\n this.sizerElement.style.height = `${Math.floor(bookHeight)}px`;\n this.sizerElement.style.aspectRatio = '';\n\n if (this.onResizeCallback) {\n this.onResizeCallback();\n }\n }\n\n public destroy() {\n this.unsubs.forEach(unsub => unsub());\n this.unsubs = [];\n\n if (this.resizeObserver && this.wrapperElement) {\n this.resizeObserver.unobserve(this.wrapperElement);\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n\n if (this.orientationMediaQuery) {\n // Remove listeners (safely ignoring for brevity)\n this.orientationMediaQuery = null;\n }\n }\n}\n","import { effect } from '@preact/signals-core';\nimport { zoomState, isZoomed, isSingleMode, currentPage, totalPages } from '../state/store';\nimport type { PageFlipAdapter } from '../adapters/PageFlipAdapter';\n\nexport class InteractionManager {\n private container: HTMLElement;\n private pageFlipAdapter: PageFlipAdapter;\n private touchStartX: number | null = null;\n private unsubs: Array<() => void> = [];\n\n constructor(container: HTMLElement, pageFlipAdapter: PageFlipAdapter) {\n this.container = container;\n this.pageFlipAdapter = pageFlipAdapter;\n }\n\n public init() {\n this.bindWheel();\n this.bindMouseDrag();\n this.bindTouch();\n this.setupStateSync();\n }\n\n private setupStateSync() {\n this.unsubs.push(\n effect(() => {\n isZoomed.value = zoomState.value.isActive;\n \n if (zoomState.value.isActive) {\n this.container.style.transform = `translate(${zoomState.value.translateX}px, ${zoomState.value.translateY}px) scale(${zoomState.value.scale})`;\n this.container.style.transition = 'none';\n } else {\n this.container.style.transform = '';\n this.container.style.transition = 'transform 0.3s ease';\n }\n })\n );\n }\n\n private bindWheel() {\n this.container.addEventListener('wheel', (e) => {\n if (zoomState.value.isActive) {\n e.preventDefault();\n this.updateZoomPan(\n zoomState.value.translateX - e.deltaX,\n zoomState.value.translateY - e.deltaY\n );\n }\n }, { passive: false });\n }\n\n private bindMouseDrag() {\n let isDragging = false;\n let startX = 0;\n let startY = 0;\n let initialTx = 0;\n let initialTy = 0;\n\n this.container.addEventListener('mousedown', (e) => {\n if (zoomState.value.isActive) {\n isDragging = true;\n startX = e.clientX;\n startY = e.clientY;\n initialTx = zoomState.value.translateX;\n initialTy = zoomState.value.translateY;\n this.container.style.cursor = 'grabbing';\n }\n });\n\n window.addEventListener('mousemove', (e) => {\n if (!isDragging || !zoomState.value.isActive) return;\n const dx = e.clientX - startX;\n const dy = e.clientY - startY;\n this.updateZoomPan(initialTx + dx, initialTy + dy);\n });\n\n window.addEventListener('mouseup', () => {\n if (isDragging) {\n isDragging = false;\n this.container.style.cursor = zoomState.value.isActive ? 'grab' : '';\n }\n });\n }\n\n private bindTouch() {\n let isDragging = false;\n let startTx = 0;\n let startTy = 0;\n\n this.container.addEventListener('touchstart', (e) => {\n if (e.touches.length === 1) {\n if (!zoomState.value.isActive) {\n this.touchStartX = e.touches[0].clientX;\n } else {\n isDragging = true;\n this.touchStartX = e.touches[0].clientX;\n const touchStartY = e.touches[0].clientY;\n startTx = zoomState.value.translateX;\n startTy = zoomState.value.translateY;\n (this.container as any)._touchStartY = touchStartY;\n }\n }\n }, { passive: true });\n\n this.container.addEventListener('touchmove', (e) => {\n if (isDragging && zoomState.value.isActive && e.touches.length === 1 && this.touchStartX !== null) {\n e.preventDefault();\n const dx = e.touches[0].clientX - this.touchStartX;\n const dy = e.touches[0].clientY - (this.container as any)._touchStartY;\n this.updateZoomPan(startTx + dx, startTy + dy);\n }\n }, { passive: false });\n\n this.container.addEventListener('touchend', (e) => {\n if (this.touchStartX !== null && !zoomState.value.isActive && isSingleMode.value && e.changedTouches.length === 1) {\n const diffX = e.changedTouches[0].clientX - this.touchStartX;\n if (diffX > 50 && currentPage.value > 0) {\n this.pageFlipAdapter.turnToPrevPage();\n } else if (diffX < -50 && currentPage.value < totalPages.value - 1) {\n this.pageFlipAdapter.turnToNextPage();\n }\n }\n this.touchStartX = null;\n isDragging = false;\n }, { passive: true });\n }\n\n public zoomIn() {\n let newScale = zoomState.value.scale + 0.5;\n if (newScale > 3) newScale = 3;\n \n zoomState.value = { \n ...zoomState.value, \n isActive: newScale > 1, \n scale: newScale \n };\n if (newScale > 1) {\n this.container.style.cursor = 'grab';\n }\n }\n\n public zoomOut() {\n let newScale = zoomState.value.scale - 0.5;\n if (newScale <= 1) {\n newScale = 1;\n zoomState.value = { ...zoomState.value, isActive: false, translateX: 0, translateY: 0, scale: 1 };\n this.container.style.cursor = '';\n } else {\n zoomState.value = { ...zoomState.value, isActive: true, scale: newScale };\n }\n }\n\n private updateZoomPan(x: number, y: number) {\n zoomState.value = {\n ...zoomState.value,\n translateX: x,\n translateY: y\n };\n }\n\n public destroy() {\n this.unsubs.forEach(unsub => unsub());\n this.unsubs = [];\n }\n}\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nexport type FlipbookPageKind = 'single' | 'spread' | 'cover';\nexport type FlipbookCropMode = 'full' | 'left' | 'right';\nexport type FlipbookSplitDirection = 'ltr' | 'rtl';\n\nexport interface FlipbookPageAsset {\n id?: string;\n pageNumber?: number;\n pageNumbers?: number[];\n kind?: FlipbookPageKind;\n splitDirection?: FlipbookSplitDirection;\n normal: string;\n low: string;\n thumb: string;\n}\n\nexport interface NormalizedFlipbookPage {\n index: number;\n assetId: string;\n pageNumber: number;\n cropMode: FlipbookCropMode;\n normal: string;\n low: string;\n thumb: string;\n}\n\nexport function isFlipbookPageAsset(value: unknown): value is FlipbookPageAsset {\n if (!value || typeof value !== 'object') return false;\n const candidate = value as FlipbookPageAsset;\n return typeof candidate.normal === 'string'\n && typeof candidate.low === 'string'\n && typeof candidate.thumb === 'string';\n}\n\nfunction getAssetPageNumbers(asset: FlipbookPageAsset): number[] {\n if (Array.isArray(asset.pageNumbers) && asset.pageNumbers.length > 0) {\n return asset.pageNumbers;\n }\n\n if (typeof asset.pageNumber === 'number') {\n if (asset.kind === 'spread') return [asset.pageNumber, asset.pageNumber + 1];\n return [asset.pageNumber];\n }\n\n return [];\n}\n\nfunction getSpreadCropModes(splitDirection: FlipbookSplitDirection): FlipbookCropMode[] {\n return splitDirection === 'rtl' ? ['right', 'left'] : ['left', 'right'];\n}\n\nexport function normalizeFlipbookPages(assets: FlipbookPageAsset[]): NormalizedFlipbookPage[] {\n const normalized: NormalizedFlipbookPage[] = [];\n let fallbackPageNumber = 1;\n\n assets.forEach((asset, assetIndex) => {\n const kind = asset.kind ?? 'single';\n const assetId = asset.id ?? `asset-${assetIndex}`;\n const splitDirection = asset.splitDirection ?? 'ltr';\n const pageNumbers = getAssetPageNumbers(asset);\n\n if (kind === 'spread') {\n const spreadNumbers = pageNumbers.length >= 2 ? pageNumbers.slice(0, 2) : [fallbackPageNumber, fallbackPageNumber + 1];\n const cropModes = getSpreadCropModes(splitDirection);\n\n spreadNumbers.forEach((pageNumber, spreadIndex) => {\n normalized.push({\n index: normalized.length,\n assetId,\n pageNumber,\n cropMode: cropModes[spreadIndex] ?? 'full',\n normal: asset.normal,\n low: asset.low,\n thumb: asset.thumb\n });\n });\n\n fallbackPageNumber = spreadNumbers[spreadNumbers.length - 1] + 1;\n return;\n }\n\n const pageNumber = pageNumbers[0] ?? fallbackPageNumber;\n normalized.push({\n index: normalized.length,\n assetId,\n pageNumber,\n cropMode: 'full',\n normal: asset.normal,\n low: asset.low,\n thumb: asset.thumb\n });\n fallbackPageNumber = pageNumber + 1;\n });\n\n return normalized;\n}\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nimport flipbookEngineStyles from '../styles/flipbook-engine.css?inline';\n\nexport type FlipbookThemeMode = 'auto' | 'light' | 'dark';\n\nexport interface ThemeConfiguration {\n theme?: FlipbookThemeMode;\n primaryColor?: string;\n cssVariables?: Record<string, string>;\n}\n\nlet styleInjected = false;\n\nexport function ensureRuntimeStyles() {\n if (typeof document === 'undefined' || styleInjected) return;\n\n const styleId = 'flipbook-engine-runtime-styles';\n if (document.getElementById(styleId)) {\n styleInjected = true;\n return;\n }\n\n const styleEl = document.createElement('style');\n styleEl.id = styleId;\n styleEl.textContent = flipbookEngineStyles;\n document.head.appendChild(styleEl);\n styleInjected = true;\n}\n\nexport function applyThemeConfiguration(container: HTMLElement, config: ThemeConfiguration) {\n container.classList.add('bk-container');\n container.classList.remove('bk-theme-light', 'bk-theme-dark');\n\n if (config.theme === 'light') container.classList.add('bk-theme-light');\n if (config.theme === 'dark') container.classList.add('bk-theme-dark');\n\n if (config.primaryColor) {\n container.style.setProperty('--accentcolor', config.primaryColor);\n }\n\n const userVariables = config.cssVariables ?? {};\n Object.entries(userVariables).forEach(([name, value]) => {\n const variableName = name.startsWith('--') ? name : `--${name}`;\n container.style.setProperty(variableName, value);\n });\n}\n","import * as pdfjsLib from 'pdfjs-dist';\nimport { App } from './components/App';\nimport { PageFlipAdapter } from './adapters/PageFlipAdapter';\nimport { LayoutManager } from './core/LayoutManager';\nimport { InteractionManager } from './core/InteractionManager';\nimport { \n initStore, \n currentPage, \n isSingleMode, \n zoomState,\n themeMode,\n primaryColor,\n showThumbs,\n allowDownload,\n whiteLabel,\n soundEnabled,\n isAutoPlaying,\n autoPlayInterval\n} from './state/store';\nimport { isFlipbookPageAsset, normalizeFlipbookPages, type FlipbookPageAsset, type NormalizedFlipbookPage } from './model/pages';\nimport { applyThemeConfiguration, ensureRuntimeStyles, type FlipbookThemeMode } from './theme/theme';\nimport { resolveMessages, type FlipbookLocale, type PartialFlipbookMessages } from './i18n/service';\nimport './styles/flipbook-engine.css';\n\n// @ts-ignore\nconst pdfWorkerUrl = new URL('pdfjs-dist/build/pdf.worker.mjs', import.meta.url).href;\npdfjsLib.GlobalWorkerOptions.workerSrc = pdfWorkerUrl;\n\nexport interface FlipbookEngineOptions {\n allowDownload?: boolean;\n showThumbs?: boolean;\n primaryColor?: string;\n soundEnabled?: boolean;\n soundUrl?: string;\n flippingTime?: number;\n maxShadowOpacity?: number;\n backgroundColor?: string;\n backgroundImage?: string;\n whiteLabel?: boolean;\n watermarkUrl?: string;\n theme?: FlipbookThemeMode;\n locale?: FlipbookLocale | string;\n messages?: Partial<Record<string, PartialFlipbookMessages>>;\n className?: string;\n cssVariables?: Record<string, string>;\n onDownload?: (url: string) => void;\n singleMode?: boolean;\n isSingleMode?: boolean;\n autoPlay?: boolean;\n autoPlayInterval?: number;\n}\n\nexport interface PageImages extends FlipbookPageAsset {\n pageNumber: number;\n normal: string;\n low: string;\n thumb: string;\n}\n\nexport interface FlipbookEngineEventMap {\n init: { totalPages: number };\n destroy: undefined;\n pageChange: { currentPage: number; pageNumber: number; totalPages: number; isSingle: boolean };\n zoomChange: { zoom: number; isActive: boolean };\n thumbsToggle: { showThumbs: boolean };\n singlePageModeChange: { isSingle: boolean };\n orientationChange: { orientation: 'landscape' | 'portrait' };\n}\n\nexport type FlipbookEngineEventName = keyof FlipbookEngineEventMap;\ntype FlipbookEventHandler<T extends FlipbookEngineEventName> = (payload: FlipbookEngineEventMap[T]) => void;\ntype AnyFlipbookEventHandler = (payload: FlipbookEngineEventMap[FlipbookEngineEventName]) => void;\n\nexport class FlipbookEngine {\n private static readonly DEFAULT_PAGE_VIEWPORT = { width: 420, height: 594 };\n private container: HTMLElement | null = null;\n private options: FlipbookEngineOptions;\n \n // Core Managers\n private pageFlipAdapter: PageFlipAdapter | null = null;\n private layoutManager: LayoutManager | null = null;\n private interactionManager: InteractionManager | null = null;\n \n private pdfDoc: any = null;\n private listeners: Partial<Record<FlipbookEngineEventName, Set<AnyFlipbookEventHandler>>> = {};\n\n constructor(private selector: string | HTMLElement, options: FlipbookEngineOptions = {}) {\n this.options = { \n allowDownload: true, \n showThumbs: true, \n primaryColor: '#7367f0', \n theme: 'auto', \n soundUrl: 'https://flipbookengine.com/Content/page-flip.mp3',\n autoPlayInterval: 3000,\n ...options \n };\n }\n\n public async init(pdfUrl: string, imageList?: Array<PageImages | FlipbookPageAsset>) {\n if (typeof this.selector === 'string') {\n this.container = document.querySelector(this.selector) as HTMLElement;\n } else {\n this.container = this.selector;\n }\n\n if (!this.container) return;\n\n this.destroy(true);\n\n let resolvedPages: NormalizedFlipbookPage[] = [];\n let viewport = { ...FlipbookEngine.DEFAULT_PAGE_VIEWPORT };\n\n if (imageList && imageList.length > 0) {\n const sourceAssets = imageList.filter(isFlipbookPageAsset);\n resolvedPages = normalizeFlipbookPages(sourceAssets);\n \n // Resolve aspect ratio from first page\n const referencePage = resolvedPages[0];\n if (referencePage) {\n const size = await this.loadImageSize(referencePage.low || referencePage.normal);\n if (size) {\n const actualWidth = referencePage.cropMode !== 'full' ? size.width / 2 : size.width;\n const aspectRatio = actualWidth / size.height;\n const baseShortSide = 420;\n viewport = aspectRatio >= 1\n ? { width: Math.round(baseShortSide * aspectRatio), height: baseShortSide }\n : { width: baseShortSide, height: Math.round(baseShortSide / aspectRatio) };\n }\n }\n } else if (pdfUrl) {\n try {\n const loadingTask = pdfjsLib.getDocument(pdfUrl);\n this.pdfDoc = await loadingTask.promise;\n \n for (let i = 1; i <= this.pdfDoc.numPages; i++) {\n resolvedPages.push({\n index: i - 1,\n assetId: `pdf-page-${i}`,\n pageNumber: i,\n cropMode: 'full',\n normal: '',\n low: '',\n thumb: ''\n });\n }\n\n const firstPage = await this.pdfDoc.getPage(1);\n const vp = firstPage.getViewport({ scale: 1.0 });\n const aspectRatio = vp.width / vp.height;\n\n const baseShortSide = 420;\n viewport = aspectRatio >= 1\n ? { width: Math.round(baseShortSide * aspectRatio), height: baseShortSide }\n : { width: baseShortSide, height: Math.round(baseShortSide / aspectRatio) };\n } catch (e) {\n console.error(\"PDF load failed:\", e);\n return;\n }\n }\n\n if (!resolvedPages.length) return;\n\n // 1. Initialize State\n initStore(this.options, resolvedPages.length, resolvedPages, !!pdfUrl);\n\n // 2. Setup DOM container\n ensureRuntimeStyles();\n applyThemeConfiguration(this.container, this.options);\n this.container.innerHTML = '';\n\n // 3. Mount App Component\n // In DOMWise, TSX returns actual DOM nodes\n let bookWrapperEl: HTMLElement;\n let bookSizerEl: HTMLElement;\n let bookContainerEl: HTMLElement;\n \n const pageFlipAdapterRef = { current: null as any };\n const interactionManagerRef = { current: null as any };\n\n // Pass refs to capture DOM elements created by DOMWise\n const appNode = App({\n pageFlipAdapterRef,\n interactionManagerRef,\n bookWrapperRef: (el) => bookWrapperEl = el,\n bookSizerRef: (el) => bookSizerEl = el,\n bookContainerRef: (el) => bookContainerEl = el,\n className: this.options.className,\n onDownload: () => {\n if (this.options.onDownload) this.options.onDownload(pdfUrl);\n else window.open(pdfUrl, '_blank');\n }\n });\n\n this.container.appendChild(appNode as unknown as Node);\n\n // 4. Initialize Core Managers\n this.layoutManager = new LayoutManager(viewport);\n this.layoutManager.onResizeCallback = () => {\n if (this.pageFlipAdapter) {\n this.pageFlipAdapter.update();\n }\n };\n this.layoutManager.init(bookWrapperEl!, bookSizerEl!);\n\n this.pageFlipAdapter = new PageFlipAdapter(bookContainerEl!, this.options);\n pageFlipAdapterRef.current = this.pageFlipAdapter;\n \n // Wait a tick for styles to apply before initializing PageFlip\n setTimeout(() => {\n this.pageFlipAdapter!.init(viewport.width, viewport.height);\n \n this.interactionManager = new InteractionManager(bookWrapperEl!, this.pageFlipAdapter!);\n this.interactionManager.init();\n interactionManagerRef.current = this.interactionManager;\n\n this.emit('init', { totalPages: resolvedPages.length });\n }, 10);\n }\n\n private loadImageSize(src: string): Promise<{ width: number; height: number } | null> {\n return new Promise(resolve => {\n const image = new Image();\n image.onload = () => resolve({ width: image.naturalWidth || image.width, height: image.naturalHeight || image.height });\n image.onerror = () => resolve(null);\n image.src = src;\n });\n }\n\n public goToPage(targetIdx: number) {\n currentPage.value = targetIdx;\n }\n\n public nextPage() {\n if (this.pageFlipAdapter) this.pageFlipAdapter.turnToNextPage();\n }\n\n public prevPage() {\n if (this.pageFlipAdapter) this.pageFlipAdapter.turnToPrevPage();\n }\n\n public setSingleMode(isSingle: boolean) {\n isSingleMode.value = isSingle;\n }\n\n public updateOptions(options: Partial<FlipbookEngineOptions>) {\n this.options = { ...this.options, ...options };\n if (options.theme !== undefined) themeMode.value = options.theme;\n if (options.primaryColor !== undefined) primaryColor.value = options.primaryColor;\n if (options.showThumbs !== undefined) showThumbs.value = options.showThumbs;\n if (options.allowDownload !== undefined) allowDownload.value = options.allowDownload;\n if (options.whiteLabel !== undefined) whiteLabel.value = options.whiteLabel;\n if (options.soundEnabled !== undefined) soundEnabled.value = options.soundEnabled;\n if (options.singleMode !== undefined) isSingleMode.value = options.singleMode;\n if (options.autoPlay !== undefined) isAutoPlaying.value = options.autoPlay;\n if (options.autoPlayInterval !== undefined) autoPlayInterval.value = options.autoPlayInterval;\n\n if (this.container) {\n applyThemeConfiguration(this.container, this.options);\n }\n }\n\n public setPages(imageList: Array<PageImages | FlipbookPageAsset>, pdfUrl?: string) {\n // Just recall init, for simplicity in this facade\n this.init(pdfUrl || '', imageList);\n }\n\n public destroy(clearMarkup = true) {\n if (this.pageFlipAdapter) this.pageFlipAdapter.destroy();\n if (this.layoutManager) this.layoutManager.destroy();\n if (this.interactionManager) this.interactionManager.destroy();\n\n this.pageFlipAdapter = null;\n this.layoutManager = null;\n this.interactionManager = null;\n this.pdfDoc = null;\n\n if (clearMarkup && this.container) {\n this.container.innerHTML = '';\n }\n\n this.emit('destroy', undefined);\n }\n\n public on<T extends FlipbookEngineEventName>(eventName: T, handler: FlipbookEventHandler<T>) {\n const listeners = this.listeners[eventName] ?? new Set<AnyFlipbookEventHandler>();\n listeners.add(handler as AnyFlipbookEventHandler);\n this.listeners[eventName] = listeners;\n return () => this.off(eventName, handler);\n }\n\n public off<T extends FlipbookEngineEventName>(eventName: T, handler: FlipbookEventHandler<T>) {\n this.listeners[eventName]?.delete(handler as AnyFlipbookEventHandler);\n }\n\n private emit<T extends FlipbookEngineEventName>(eventName: T, payload: FlipbookEngineEventMap[T]) {\n this.listeners[eventName]?.forEach((listener) => {\n (listener as FlipbookEventHandler<T>)(payload);\n });\n }\n}\n\nconst globalScope = globalThis as any;\nconst flipbookNamespace = globalScope.FlipbookEngine || {};\nflipbookNamespace.FlipbookEngine = FlipbookEngine;\nglobalScope.FlipbookEngine = flipbookNamespace;\n"],"names":["isNodeJS","FONT_IDENTITY_MATRIX","LINE_FACTOR","RenderingIntentFlag","AnnotationMode","AnnotationEditorPrefix","AnnotationEditorType","AnnotationEditorParamsType","PermissionFlag","MeshFigureType","TextRenderingMode","util_ImageKind","AnnotationType","AnnotationBorderStyleType","VerbosityLevel","OPS","DrawOPS","PasswordResponses","verbosity","setVerbosityLevel","level","getVerbosityLevel","info","msg","warn","unreachable","assert","cond","_isValidProtocol","url","createValidAbsoluteUrl","baseUrl","options","dots","stringToUTF8String","absoluteUrl","updateUrlHash","hash","allowRel","res","shadow","obj","prop","value","nonSerializable","BaseException","message","name","PasswordException","code","UnknownErrorException","details","InvalidPDFException","ResponseException","status","missing","FormatError","AbortException","bytesToString","bytes","length","MAX_ARGUMENT_COUNT","strBuf","i","chunkEnd","chunk","stringToBytes","str","string32","isLittleEndian","buffer8","isEvalSupported","util_FeatureTest","platform","userAgent","_b","_a","hexNumbers","n","Util","r","b","dm","transform","minMax","temp","m1","m2","m","md","p","pos","p0","p1","m0","m3","m4","m5","pI","pI1","d","rect","output","r0","r1","r2","r3","a0","a2","a1","a3","b0","b2","b1","b3","m1r0","m1r2","m2r1","m2r3","matrix","a","c","first","second","rect1","rect2","xLow","xHigh","yLow","yHigh","x","y","x0","y0","x1","y1","x2","y2","x3","y3","__privateMethod","_Util_static","getExtremum_fn","getExtremumOnCurve_fn","t","mt","tt","ttt","delta","sqrtDelta","__privateAdd","NormalizeRegex","NormalizationMap","normalizeUnicode","_","p2","getUuid","buf","AnnotationPrefix","_isValidExplicitDest","validRef","validName","dest","page","zoom","args","argsLen","allowNull","arg","MathClamp","v","min","max","toBase64Util","arr","fromBase64Util","fn","resolve","numbers","XfaText","xfa","items","walk","node","child","XfaLayer","html","id","element","storage","intent","storedData","event","option","linkService","attributes","isHTMLAnchorElement","key","parameters","root","rootHtml","isNotForRichText","rootDiv","textDivs","stack","parent","childHtml","el","SVG_NS","_PixelsPerInch","__publicField","PixelsPerInch","fetchData","type","isValidFetchUrl","response","reject","request","PageViewport","viewBox","userUnit","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","width","height","dims","topLeft","bottomRight","RenderingCancelledException","extraDelay","isDataScheme","ii","isPdfFile","filename","getFilenameFromUrl","getPdfFilenameFromUrl","defaultFilename","newURL","urlString","decode","decoded","pdfRegex","values","keys","hashFilename","StatTimer","outBuf","longest","start","end","noContextMenu","e","stopEvent","deprecated","PDFDateString","input","__privateGet","_regex","__privateSet","matches","year","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","getXfaPageViewport","xfaPage","getRGB","color","colorRGB","getColorValues","colors","span","computedColor","getCurrentTransform","ctx","f","getCurrentTransformInverse","setLayerDimensions","div","viewport","mustFlip","mustRotate","pageWidth","pageHeight","style","useRound","w","h","widthStr","heightStr","OutputScale","pixelRatio","maxPixels","maxDim","capAreaFactor","maxAreaScale","maxWidthScale","maxHeightScale","maxScale","winPixels","SupportedImageMimeTypes","ColorScheme","CSSConstants","applyOpacity","g","opacity","white","RGBToHSL","rgb","l","HSLToRGB","hsl","s","computeLuminance","contrastRatio","hsl1","hsl2","lum1","lum2","contrastCache","findContrastColor","baseColor","fixedColor","cachedValue","array","baseHSL","fixedHSL","isFixedColorDark","minContrast","PRECISION","mid","renderRichText","dir","className","container","fragment","lines","line","makePathFromDrawOPS","data","path","_EditorToolbar","editor","_EditorToolbar_instances","_toolbar","_colorPicker","_editor","_buttons","_altText","_comment","_commentButtonDivider","_signatureDescriptionButton","_l10nRemove","editToolbar","signal","_EditorToolbar_static","pointerDown_fn","buttons","position","editorType","_uiManager","button","addListenersToElement_fn","altText","divider_get","comment","beforeElement","divider","colorPicker","signatureManager","tool","beforeSelector","description","focusIn_fn","focusOut_fn","EditorToolbar","FloatingToolbar","uiManager","_FloatingToolbar_instances","boxes","isLTR","getLastPoint_fn","render_fn","makeButton_fn","lastY","lastX","box","buttonClass","l10nId","labelL10nId","clickHandler","bindEvents","names","_CurrentPointers","pointerId","_pointerIds","pointerType","_pointerId","_pointerType","timeStamp","_moveTimestamp","CurrentPointers","IdManager","_id","__privateWrapper","_ImageManager","_ImageManager_instances","_baseId","_cache","svg","image","promise","file","lastModified","size","get_fn","blobPromise","blob","canvas","offscreen","bitmap","rawData","mustRemoveAspectRatioPromise","fileReader","imageElement","imagePromise","ImageManager","CommandManager","maxSize","_commands","_locked","_maxSize","_position","cmd","undo","post","mustExec","overwriteIfSameType","keepUndo","save","next","KeyboardManager","callbacks","_KeyboardManager_instances","isMac","callback","isMacKey","self","serialize_fn","bubbles","checker","_ColorManager","RGB","ColorManager","_AnnotationEditorUIManager","viewer","viewerAlert","altTextManager","commentManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","mlManager","editorUndoBar","supportsPinchToZoom","_AnnotationEditorUIManager_instances","_abortController","_activeEditor","_allEditableAnnotations","_allEditors","_allLayers","_altTextManager","_annotationStorage","_changedExistingAnnotations","_commandManager","_commentManager","_copyPasteAC","_currentDrawingSession","_currentPageIndex","_deletedAnnotationsElementIds","_draggingEditors","_editorTypes","_editorsToRescale","_enableHighlightFloatingButton","_enableUpdatedAddImage","_enableNewAltTextWhenAddingImage","_filterFactory","_focusMainContainerTimeoutId","_focusManagerAC","_highlightColors","_highlightWhenShiftUp","_floatingToolbar","_idManager","_isEnabled","_isPointerDown","_isWaiting","_keyboardManagerAC","_lastActiveElement","_mainHighlightColorPicker","_missingCanvases","_mlManager","_mode","_selectedEditors","_selectedTextNode","_signatureManager","_pageColors","_showAllStates","_pdfDocument","_previousStates","_translation","_translationTimeoutId","_container","_viewer","_viewerAlert","_updateModeCapability","evt","addSelectionListener_fn","addDragAndDropListeners_fn","addKeyboardManager_fn","proto","arrowChecker","textInputChecker","_self","small","big","layer","_c","_d","_e","_f","_g","_h","_i","ac","pair","map","hasHCM","isNameForHCM","colorName","firstTime","posX","posY","pageIndex","uid","isSelected","visibility","pageNumber","onEditorsRendered","mode","layerX","layerY","pagesRotation","methodOfCreation","selection","anchorNode","anchorOffset","focusNode","focusOffset","text","textLayer","getAnchorElementForSelection_fn","getLayerForTextLayer_fn","isNoneMode","annotationId","storedValue","messageId","onSelectEnd_fn","activeElement","lastEditor","lastActiveElement","removeKeyboardManager_fn","item","editors","serialized","clipboardData","ex","newEditors","deserializedEditor","addEditorToLayer_fn","selectEditors_fn","isEditing","addFocusManager_fn","addCopyPasteListeners_fn","dispatchUpdateStates_fn","isEmpty_fn","removeFocusManager_fn","removeCopyPasteListeners_fn","types","dispatchUpdateUI_fn","editId","isFromUser","isFromKeyboard","mustEnterInEditMode","editComment","disableAll_fn","enableAll_fn","editorClass","elementIds","allComments","annotationElementId","hasComment","deleted","annotation","popupRef","contentsObj","visible","updateButton","mustWait","lastSelectedEditor_get","ed","params","drawingEditor","noCommit","totalX","totalY","TIME_TO_WAIT","mustBeAddedInUndoStack","move","newX","newY","newPageIndex","savedX","savedY","savedPageIndex","tx","ty","parentWidth","parentHeight","rotator","range","editorId","currentLayer","displayFloatingToolbar_fn","selectionChange_fn","activeLayer","pointerup","promises","AnnotationEditorUIManager","_AltText","_AltText_instances","_altTextDecorative","_altTextButton","_altTextButtonLabel","_altTextTooltip","_altTextTooltipTimeout","_altTextWasFromKeyBoard","_badge","_guessedText","_textWithDisclaimer","_useNewAltTextFlow","_l10nNewButton","l10n","label","onClick","label_get","setState_fn","guessedText","badge","isForCopying","decorative","textWithDisclaimer","cancel","enabled","tooltip","DELAY_TO_SHOW_TOOLTIP","AltText","Comment$1","_Comment_instances","_commentStandaloneButton","_commentToolbarButton","_commentWasFromKeyBoard","_initialText","_richText","_text","_date","_deleted","_popupPosition","parentX","parentY","selected","hasPopup","parentDimensions","richText","isStandalone","_TouchManager","isPinchingDisabled","isPinchingStopped","onPinchStart","onPinching","onPinchEnd","_TouchManager_instances","_isPinching","_isPinchingStopped","_isPinchingDisabled","_onPinchStart","_onPinching","_onPinchEnd","_pointerDownAC","_signal","_touchInfo","_touchManagerAC","_touchMoveAC","onTouchStart_fn","pointerDownAC","opts","cancelPointerDown","opt","onTouchMove_fn","onTouchEnd","onTouchEnd_fn","touch0","touch1","screen0X","screen0Y","screen1X","screen1Y","touchInfo","pTouch0X","pTouch0Y","pTouch1X","pTouch1Y","prevGapX","prevGapY","currGapX","currGapY","distance","pDistance","origin","TouchManager","_AnnotationEditor","_AnnotationEditor_instances","_accessibilityData","_allResizerDivs","_disabled","_dragPointerId","_dragPointerType","_resizersDiv","_lastPointerCoords","_savedDimensions","_fakeAnnotation","_focusAC","_focusedResizerName","_hasBeenClicked","_initialRect","_isEditing","_isInEditMode","_isResizerEnabledForKeyboard","_moveInDOMTimeout","_prevDragX","_prevDragY","_telemetryTimeouts","_touchManager","_isDraggable","_zIndex","pageX","pageY","resize","fakeEditor","FakeEditor","_type","_value","mime","stopResizing_fn","target","baseX","baseY","translate_fn","bx","by","_borderLineWidth","_AnnotationEditor_static","rotatePoint_fn","parentScale","toolbarButtons","editToolbarDiv","Comment","date","trY","blX","blY","trX","contents","addFocusListeners_fn","touchPinchStartCallback_fn","touchPinchCallback_fn","touchPinchEndCallback_fn","setUpDragSession_fn","selectOnPointerEvent_fn","shiftX","shiftY","creationDate","modificationDate","focus","top","left","bottom","right","innerHeight","innerWidth","_angle","context","timeout","createResizers_fn","children","boundResizerKeydown","resizerKeydown_fn","boundResizerBlur","resizerBlur_fn","resizerFocus_fn","firstPosition","nextFirstPosition","setResizerTabIndex_fn","resizerPointermove_fn","action","annotationLayer","content","firstElementChild","angle","getRotationMatrix_fn","classes","resizerPointerdown_fn","savedDraggable","savedParentCursor","savedCursor","pointerUpCallback","addResizeToUndoStack_fn","resize_fn","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","hasDraggingStarted","cancelDrag","AnnotationEditor","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","blockCounts","tailLength","dataUint32","k1","k2","h1","h2","C1","C2","C1_LOW","C2_LOW","SerializableEmpty","AnnotationStorage","_AnnotationStorage_instances","_modified","_modifiedIds","_editorsMap","_storage","defaultValue","modified","entry","val","setModified_fn","PrintAnnotationStorage","transfer","hasBitmap","stats","typeToEditor","numberOfEditedComments","numberOfDeletedComments","editorStats","counters","count","ids","_serializable","clone","FontLoader","ownerDocument","styleElement","_systemFonts","nativeFontFace","rule","styleSheet","disableFontFace","_inspectFont","loadedName","src","fontFace","font","hasFonts","completeRequest","loadingRequests","otherRequest","testFont","int32","offset","spliceString","remove","insert","chunk1","chunk2","called","isFontReady","loadTestFontId","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","FontFaceObject","translatedData","inspectFont","extra","charProcOperatorList","_fontData","css","objs","character","objId","cmds","bbox","_CssFontInfo","buffer","_CssFontInfo_instances","_buffer","_view","_decoder","encoder","encodedStrings","stringsLength","encoded","view","readString_fn","index","CssFontInfo","_SystemFontInfo","_SystemFontInfo_instances","encodedStyleStyle","encodedStyleWeight","lengthEstimate","styleLength","weightLength","weight","SystemFontInfo","_FontInfo","_FontInfo_instances","readBoolean_fn","readNumber_fn","_OFFSET_BBOX","_OFFSET_FONT_MATRIX","fontMatrix","_OFFSET_DEFAULT_VMETRICS","defaultVMetrics","_OFFSET_STRINGS","systemFontInfoLength","cssFontInfoLength","cssFontInfoData","systemFontInfoData","systemFontInfoBuffer","cssFontInfoBuffer","numBools","boolByte","boolBit","_OFFSET_NUMBERS","coord","metric","byteOffset","bitOffset","stringData","FontInfo","_PatternInfo","ir","kind","coords","colorStops","figures","shadingType","background","nCoord","nColor","nStop","nFigures","figuresSize","figure","byteLen","dataView","u8data","_KIND","_HAS_BBOX","_HAS_BACKGROUND","_SHADING_TYPE","_N_COORD","_N_COLOR","_N_STOP","_N_FIGURES","hex","hasBBox","hasBackground","stops","coordsLength","figureCoords","colorsLength","figureColors","bounds","minX","maxX","minY","maxY","PatternInfo","FontPathInfo","getUrlProp","getDataProp","getFactoryUrlProp","isRefProxy","isNameProxy","isValidExplicitDest","LoopbackPort","_listeners","_deferred","listener","rmAbort","onAbort","CallbackKind","StreamKind","onFn","wrapReason","MessageHandler","sourceName","targetName","comObj","_MessageHandler_instances","_messageAC","onMessage_fn","actionName","handler","ah","transfers","callbackId","capability","queueingStrategy","streamId","controller","startCapability","pullCapability","reason","cancelCapability","processStreamMessage_fn","result","createStreamSink_fn","streamSink","lastDesiredSize","streamController","deleteStreamController_fn","dataReason","BaseCanvasFactory","enableHWA","_enableHWA","canvasAndContext","DOMCanvasFactory","BaseCMapReaderFactory","isCompressed","cMapData","DOMCMapReaderFactory","BaseFilterFactory","maps","fgColor","bgColor","filterName","newFgColor","newBgColor","keepHCM","DOMFilterFactory","docId","_DOMFilterFactory_instances","_baseUrl","__cache","__defs","_docId","_document","__hcmCache","cache_get","tableR","tableG","tableB","createTables_fn","createUrl_fn","filter","createFilter_fn","addTransferMapConversion_fn","hcmCache_get","fgRGB","getRGB_fn","bgRGB","defs_get","table","addGrayConversion_fn","getSteps","tableA","addTransferMapAlphaConversion_fn","addLuminosityConversion_fn","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","step","newStart","newStep","prev","j","mapR","mapG","mapB","bufferR","bufferG","bufferB","feColorMatrix","appendFeFunc_fn","feComponentTransfer","func","feFunc","rTable","gTable","bTable","aTable","BaseStandardFontDataFactory","DOMStandardFontDataFactory","BaseWasmFactory","DOMWasmFactory","node_utils_fetchData","NodeFilterFactory","NodeCanvasFactory","NodeCMapReaderFactory","NodeStandardFontDataFactory","NodeWasmFactory","FORCED_DEPENDENCY_LABEL","floor","ceil","expandBBox","EMPTY_BBOX","BBoxReader","bboxes","_bboxes","_coords","ensureDebugMetadata","CanvasDependencyTracker","operationsCount","recordDebugMetadata","_CanvasDependencyTracker_instances","_simple","_incremental","_namedDependencies","_savesStack","_markedContentStack","_baseTransformStack","_clipBox","_pendingBBox","_pendingBBoxIdx","_pendingDependencies","_operations","_fontBBoxTrustworthy","_canvasWidth","_canvasHeight","_bboxesCoords","_debugMetadata","initializeBBoxes_fn","opIdx","previous","lastSave","idx","depName","fallbackIdx","dep","clipBox","intersection","getMeasure","fontBBox","isBBoxTrustworthy","computedBBox","measure","dependencyName","dependencyNames","pendingDependencies","simple","incremental","preserve","metadata","dependencies","depIdx","saveIdx","deps","operation","oldBBoxes","_CanvasNestedDependencyTracker","dependencyTracker","ignoreBBoxes","_dependencyTracker","_opIdx","_ignoreBBoxes","_nestingLevel","_savesLevel","CanvasNestedDependencyTracker","Dependencies","PathType","applyBoundingBox","region","BaseShadingPattern","RadialAxialShadingPattern","IR","grad","firstPoint","secondPoint","colorStop","owner","inverse","pathType","pattern","precision","n1","n2","ps","ownerBBox","tmpCanvas","tmpCtx","domMatrix","drawTriangle","p3","c1","c2","c3","rowSize","tmp","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","xa","car","cag","cab","xb","cbr","cbg","cbb","k","x1_","x2_","drawFigure","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","combinedScale","backgroundColor","cachedCanvases","boundsWidth","boundsHeight","scaleX","scaleY","paddedWidth","paddedHeight","matrixScaleX","matrixScaleY","temporaryPatternCanvas","DummyShadingPattern","getShadingPattern","PaintType","_TilingPattern","canvasGraphicsFactory","baseTransform","operatorList","paintType","tilingType","xstep","ystep","combinedScaleX","combinedScaleY","canvasWidth","canvasHeight","redrawHorizontally","redrawVertically","xScaledStep","yScaledStep","xScaledWidth","yScaledHeight","dimx","dimy","graphics","dimx2","dimy2","xSize","ySize","tmpCanvas2","tmpCtx2","jj","realOutputSize","bboxWidth","bboxHeight","current","fillStyle","strokeStyle","TilingPattern","convertBlackAndWhiteToRGBA","srcPos","nonBlackColor","inverseDecode","black","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","elem","MIN_FONT_SIZE","MAX_FONT_SIZE","EXECUTION_TIME","EXECUTION_STEPS","FULL_CHUNK_HEIGHT","SCALE_MATRIX","XY","MIN_MAX_INIT","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","CanvasExtraState","preInit","xStrokePad","yStrokePad","intersect","putBinaryImageData","imgData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","dest32","dest32DataLength","fullSrcDiff","srcDiff","kEnd","kEndUnrolled","mask","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","properties","property","resetCtxToDefault","getImageSmoothingEnabled","interpolate","actualScale","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","_CanvasGraphics","canvasCtx","commonObjs","filterFactory","optionalContentConfig","markedContentStack","annotationCanvasMap","_CanvasGraphics_instances","fallback","transparency","savedFillStyle","transparentCanvas","executionStartIdx","continueCallback","stepper","operationsFilter","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","steps","fnId","fnArgs","depObjId","objsPool","restoreInitialState_fn","cache","drawFilter_fn","img","inverseTransform","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","fillColor","isPatternFill","currentTransform","cacheKey","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","drawnWidth","drawnHeight","fillCanvas","fillCtx","limit","dashArray","dashPhase","flatness","states","inSMaskMode","cacheId","scratchCanvas","dirtyBox","smask","suspendedCtx","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","maskCtx","subtype","backdrop","transferMap","maskOffsetX","maskOffsetY","maskX","maskY","clip","old","op","outerExtraSize","consumePath","strokeColor","newPath","needRestore","paths","fontSize","spacing","leading","fontRefName","fontObj","typeface","bold","italic","browserFontSize","rise","patternFillTransform","patternStrokeTransform","textRenderingMode","fillStrokeMode","isAddToPathSet","patternFill","patternStroke","scaledPath","getScaledPath_fn","invPatternTransform","glyphs","fontSizeScale","charSpacing","wordSpacing","fontDirection","textHScale","glyphsLength","vertical","spacingDir","widthAdvanceScale","simpleFillText","needsFill","needsStroke","lineWidth","chars","glyph","joinedChars","restoreNeeded","accent","scaledX","scaledY","vmetric","vx","vy","measuredWidth","characterScaleX","scaledAccentX","scaledAccentY","charWidth","isTextInvisible","spacingLength","xWidth","yWidth","llx","lly","urx","ury","renderingOpIdx","inv","group","currentCtx","canvasBounds","groupCtx","currentMtx","hasOwnCanvas","viewportScale","skewX","skewY","positions","trans","images","imgToPaint","tag","isEmpty","absDet","normX","normY","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","hcmFilterId","savedFilter","CanvasGraphics","GlobalWorkerOptions","_port","_src","Metadata","parsedData","_map","_data","INTERNAL","OptionalContentGroup","renderingIntent","usage","rbGroups","_isDisplay","_isPrint","_userSet","_visible","print","internal","userSet","OptionalContentConfig","_OptionalContentConfig_instances","_cachedGetHash","_groups","_initialHash","_order","on","off","evaluateVisibilityExpression_fn","preserveRB","rbGroup","otherId","state","operator","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","createHeaders","isHttp","httpHeaders","headers","getResponseOrigin","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","returnValues","extractFilenameFromHeader","createResponseError","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","INITIAL_DATA","PDFObjects","_PDFObjects_instances","_objs","ensureObj_fn","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","_TextLayer","textContentSource","_TextLayer_instances","_capability","_disableProcessItems","_fontInspectorEnabled","_lang","_layoutTextParams","_pageHeight","_pageWidth","_reader","_rootContainer","_rotation","_scale","_styleCache","_textContentItemsStr","_textContentSource","_textDivs","_textDivProperties","_transform","_TextLayer_static","ensureMinFontSizeComputed_fn","_minFontSize","_pendingTextLayers","isWindows","isFirefox","pump","processItems_fn","onBefore","getCtx_fn","layout_fn","abortEx","_ascentCache","_canvasContexts","_canvasCtxFonts","textContentItemsStr","appendText_fn","geom","textDiv","textDivProperties","fontFamily","fontHeight","fontAscent","getAscent_fn","divStyle","shouldScaleText","absScaleX","absScaleY","br","ensureCtxFont_fn","lang","family","cached","cachedAscent","metrics","ascent","descent","ratio","TextLayer","RENDERING_CANCELLED_TIMEOUT","getDocument","task","PDFDocumentLoadingTask","password","rangeTransport","PDFDataRangeTransport","worker","PDFWorker","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","iccUrl","standardFontDataUrl","StandardFontDataFactory","wasmUrl","WasmFactory","ignoreErrors","maxImageSize","isOffscreenCanvasSupported","isImageDecoderSupported","canvasMaxAreaInBytes","fontExtraProperties","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","useWasm","useSystemFonts","useWorkerFetch","transportFactory","docParams","transportParams","workerIdPromise","networkStream","NetworkStream","workerId","messageHandler","transport","WorkerTransport","_PDFDocumentLoadingTask","_progressiveDoneListeners","_progressiveReadListeners","_progressListeners","_rangeListeners","PDFDocumentProxy","pdfInfo","ref","pageIndexesToSkip","pageInfos","keepLoadedFonts","PDFPageProxy","pageInfo","_PDFPageProxy_instances","_pendingCleanup","canvasContext","annotationMode","optionalContentConfigPromise","printAnnotationStorage","recordOperations","intentArgs","intentState","intentPrint","recordForDebugger","shouldRecordOperations","complete","internalRenderTask","recordedBBoxes","tryCleanup_fn","InternalRenderTask","renderTask","operatorListChanged","opListTask","includeMarkedContent","disableNormalization","textContent","waitOn","resetStats","success","operatorListChunk","annotationStorageSerializable","modifiedIds","force","delay","curCacheKey","curIntentState","renderTasks","_PDFWorker","port","_PDFWorker_instances","_messageHandler","_webWorker","_workerPorts","initializeFromPort_fn","initialize_fn","cachedPort","_PDFWorker_static","mainThreadWorkerMessageHandler_get","_fakeWorkerId","_isWorkerDisabled","resolve_fn","setupFakeWorker_fn","workerSrc","terminateEarly","sendTest","testObj","WorkerMessageHandler","workerHandler","otherUrl","base","other","wrapper","loadingTask","factory","_WorkerTransport_instances","_methodPromises","_pageCache","_pagePromises","_pageRefCache","_passwordCapability","isOpList","annotationStorage","modifiedIdsHash","cacheKeyBuf","terminated","sink","readyReason","isStreamingSupported","isRangeSupported","contentLength","updatePassword","err","exportedData","exportedError","fontData","imageRef","pageProxy","imageData","cachedPromise","cacheSimpleMethod_fn","results","refStr","RenderTask","_internalRenderTask","separateAnnots","_InternalRenderTask","useRequestAnimationFrame","_rAF","_canvasInUse","version","build","_ColorPicker","_ColorPicker_instances","_button","_buttonSwatch","_defaultColor","_dropdown","_dropdownWasFromKeyboard","_isMainColorPicker","_eventBus","_openDropdownAC","_l10nColor","openDropdown_fn","keyDown_fn","swatch","dropdown","getDropdownRoot_fn","colorSelect_fn","isDropdownVisible_get","ColorPicker","_BasicColorPicker","_input","colorType","BasicColorPicker","makeColorComp","scaleAndClamp","ColorConverters","G","components","BaseSVGFactory","skipDimensions","DOMSVGFactory","annotation_layer_DEFAULT_FONT_SIZE","GetElementsByNameSet","TIMEZONE_OFFSET","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","TextWidgetAnnotationElement","RadioButtonWidgetAnnotationElement","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","_AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","_AnnotationElement_instances","_updates","_hasBorder","_popupElement","quadPoints","inkLists","inkList","popup","newPopup","setRectEdited_fn","horizontalRadius","verticalRadius","radius","borderColor","setColor","jsName","styleName","colorArray","display","hidden","actions","jsEvent","commonActions","detail","eventProxy","rectBlX","rectBlY","rectTrX","rectTrY","svgBuffer","borderWidth","svgFactory","defs","clipPath","rectWidth","rectHeight","popupData","skipId","fields","fieldObj","exportValues","exportValue","domElement","triggers","currentRect","EditorAnnotationElement","_LinkAnnotationElement_instances","link","isBound","bindAttachment_fn","bindSetOCGState_fn","destination","overlaidText","setInternalLink_fn","resetForm","otherClickAction","resetFormFields","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","attachment","elementData","baseName","eventName","valueGetter","getter","TEXT_ALIGNMENT","fontColor","computedFontSize","BORDER_SIZE","roundToOneDecimal","numberOfLines","lineHeight","isRequired","keyInStorage","maxLen","fieldFormattedValues","datetimeFormat","datetimeType","timeStep","hasDateOrTime","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","displayValue","selectChild","indices","change","elements","hasCommentManager","_PopupAnnotationElement_instances","createPopup_fn","PopupElement","titleObj","parentRect","open","_PopupElement_instances","_boundKeyDown","_boundHide","hide_fn","_boundShow","show_fn","_boundToggle","toggle_fn","_color","_contentsObj","_dateObj","_elements","_parent","_parentRect","_pinned","_popup","_popupAbortController","_commentButton","_commentButtonPosition","_rect","_titleObj","_wasVisible","_firstElement","_commentText","addEventListeners_fn","setCommentButtonPosition_fn","hasOwnButton","togglePopup","showPopup","hidePopup","parentContainer","updateColor_fn","updateCommentButtonPosition_fn","header","title","html_get","makePopupContent_fn","fontSize_get","fontColor_get","popupLines","popupContent","lineAttributes","setPosition_fn","useParentRect","normalizedRect","popupLeft","popupTop","lineSpan","_line","_square","square","_circle","circle","_polyline","vertices","borderStyle","points","polyline","_InkAnnotationElement_instances","_polylinesGroupElement","_polylines","getTransform_fn","thickness","mark","underline","strikeout","_FileAttachmentAnnotationElement_instances","_trigger","trigger","download_fn","_AnnotationLayer","accessibilityManager","annotationEditorUIManager","structTreeLayer","_AnnotationLayer_instances","_accessibilityManager","_annotationCanvasMap","_editableAnnotations","_structTreeLayer","_linkService","_hasAriaAttributesFromStructTree","annotations","popupToElements","popupAnnotations","elementParams","isPopupAnnotation","rendered","addElementsToDOM_fn","setAnnotationCanvasMap_fn","contentElement","ariaAttributes","top1","bot1","mid1","top2","bot2","mid2","centerX1","centerX2","firstChild","editableAnnotation","AnnotationLayer","EOL_PATTERN","_FreeTextEditor","_FreeTextEditor_instances","_content","_editorDivId","_editModeAC","_fontSize","updateFontSize_fn","savedText","newText","extractText_fn","setText","setContent_fn","setEditorDimensions_fn","paste","_FreeTextEditor_static","deserializeContent_fn","startContainer","startOffset","bufferBefore","bufferAfter","getNodeContent_fn","newRange","beforeLength","padding","textPosition","serializeContent_fn","hasElementChanged_fn","setFontsize","savedFontsize","col","savedColor","prevChild","savedDisplay","savedVisibility","FreeTextEditor","Outline","_bbox","sx","sy","_FreeDrawOutliner","scaleFactor","innerMargin","_FreeDrawOutliner_instances","_box","_bottom","_innerMargin","_isLTR","_top","_last","_lastX","_lastY","_min","_min_dist","_scaleFactor","_thickness","_points","_MIN_DIST","_MIN","diffX","diffY","diffD","K","nX","nY","thX","thY","toSVGPathTwoPoints_fn","toSVGPathEnd_fn","toSVGPathStart_fn","outline","FreeDrawOutline","last","getOutlineTwoPoints_fn","N","getOutlineEnd_fn","getOutlineStart_fn","_MIN_DIFF","getLastCoords_fn","lastTop","lastBottom","lastTopX","lastTopY","lastBottomX","lastBottomY","FreeDrawOutliner","_FreeDrawOutline_instances","_outline","computeMinMax_fn","outliner","firstPointX","firstPointY","lastPointX","lastPointY","ltrCallback","bezierBbox","HighlightOutliner","_HighlightOutliner_instances","_firstPoint","_lastPoint","_verticalEdges","_intervals","EPSILON","shiftedMinX","shiftedMinY","lastEdge","lastPoint","edge","outlineVerticalEdges","breakEdge_fn","insert_fn","remove_fn","getOutlines_fn","edges","allEdges","edge1","edge2","outlines","HighlightOutline","binarySearch_fn","middle","y4","_outlines","polygon","prevX","prevY","FreeHighlightOutliner","FreeHighlightOutline","_HighlightEditor","_HighlightEditor_instances","_anchorNode","_anchorOffset","_boxes","_clipPathId","_focusOutlines","_focusNode","_focusOffset","_highlightDiv","_highlightOutlines","_isFreeHighlight","_outlineId","_methodOfCreation","createFreeOutlines_fn","addToDrawLayer_fn","createOutlines_fn","updateThickness_fn","getRotation_fn","cleanDrawLayer_fn","mustBeSelected","drawLayer","_HighlightEditor_static","rotateBbox_fn","keydown_fn","highlightDiv","direction","setCaret_fn","endHighlight_fn","highlightMove_fn","clipPathId","serializeBoxes_fn","serializeOutlines_fn","outlinerForOutline","highlightOutlines","highlightId","setColorAndOpacity","opa","savedOpacity","savedThickness","setThickness","th","changeThickness_fn","HighlightEditor","DrawingOptions","_svgProperties","_DrawingEditor","_DrawingEditor_instances","_drawOutlines","_mustBeCommitted","createDrawOutlines_fn","p1Keys","_options","propertyName","_currentDraw","_drawingOptions","savedValue","setter","updateBbox_fn","convertToDrawSpace_fn","rotateBox_fn","_x","_y","drawDiv","_parentWidth","_parentHeight","_currentDrawingAC","_currentDrawingOptions","all","draw","drawId","lastElement","isAborted","_pageX","_pageY","_innerWidth","drawOutlines","drawingOptions","createDrawing_fn","convertToParentSpace_fn","pW","pH","parentRotation","DrawingEditor","InkDrawOutliner","_InkDrawOutliner_instances","_lines","_lastSVGPath","_lastIndex","InkDrawOutline","normalizePoint_fn","firstX","firstY","secondX","secondY","c1x","c1y","c2x","c2y","_InkDrawOutline_instances","_currentRotation","_parentScale","computeBbox_fn","serializedLines","serializedPoints","getBBoxWithNoMargin_fn","rescaleFn","newLines","len","oldMarginX","oldMarginY","getMarginComponents_fn","newMarginX","newMarginY","diffMarginX","diffMarginY","marginX","marginY","s1x","s1y","s2x","s2y","newParentWidth","newParentHeight","margin","InkDrawingOptions","viewerParameters","_InkEditor","_InkEditor_instances","_drawId","stroke","InkEditor","ContourDrawOutline","BASE_HEADER_LENGTH","POINTS_PROPERTIES_NUMBER","SignatureExtractor","fontStyle","fontWeight","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","fontBoundingBoxAscent","fontBoundingBoxDescent","SCALE","uint8Buf","_SignatureExtractor_static","toUint8_fn","histogram","getHistogram_fn","threshold","guessThreshold_fn","contourList","findContours_fn","getGrayPixels_fn","bilateralFilter_fn","_PARAMETERS","mustSmooth","areContours","curves","linesAndPoints","xScale","yScale","newCurves","reducedPoints","douglasPeucker_fn","newPoints","minDiff","maxDiff","outlinesLength","dx","bufferType","headerLength","writer","BufferCtor","diffs","signatureData","readable","writable","numberOfDrawings","diffsOffset","neighborIndexToId_fn","i0","j0","_neighborIdToIndex","clockwiseNonZero_fn","kk","shiftI","shiftJ","counterClockwiseNonZero_fn","nbd","lnbd","contours","ij","pix","i2","j2","isHole","contour","contour0","i1","j1","i3","j3","i4","j4","ij3","douglasPeuckerHelper_fn","ax","ay","abx","aby","dist","nabx","naby","aa","invS","phi","cosPhi","sinPhi","tmax","poly","partialPhi","dmax","sigmaS","sigmaR","kernelSize","kernel","sigmaS2","halfSize","rangeValues","sigmaR2","out","center","sum","norm","neighbour","M","L","spos","originalBitmap","prevWidth","prevHeight","isteps","grayImage","SignatureOptions","DrawnSignatureOptions","_SignatureEditor","_isExtracted","_description","_signatureData","_signatureUUID","hasDescriptionStats","_isCopy","uuid","heightInPage","toolbar","outlineData","fontInfo","SignatureEditor","StampEditor","_StampEditor_instances","_bitmap","_bitmapId","_bitmapPromise","_bitmapUrl","_bitmapFile","_bitmapFileName","_canvas","_missingCanvas","_resizeTimeoutId","_isSvg","_hasBeenAddedInUndoStack","hasAltTextStats","updateAltTextData","getBitmap_fn","createCanvas_fn","bitmapId","drawBitmap_fn","maxDataDimension","maxPreviewDimension","createImageData","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","scaleBitmap_fn","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","missingCanvas","structParent","bitmapUrl","isSvg","accessibilityData","serializeBitmap_fn","changes","area","prevData","getBitmapFetched_fn","fromId","getBitmapDone_fn","MAX_RATIO","toUrl","isSamePageIndex","isSameAltText","_AnnotationEditorLayer","_AnnotationEditorLayer_instances","_allowClick","_annotationLayer","_clickAC","_editorFocusTimeoutId","_editors","_hadPointerDown","_isDisabling","_isEnabling","_drawingAC","_focusedElement","_textLayer","_textSelectionAC","_textLayerDblClickAC","_lastPointerDownTimestamp","editorTypes","cleanup_fn","classList","annotationElementIds","allEditorsIterator_get","editable","clientX","clientY","lastPointerDownTimestamp","regex","needFakeAnnotation","changedAnnotations","resetAnnotations","editables","textLayerPointerDown_fn","currentEditorType_get","getCenterPoint_fn","createNewEditor_fn","isCentered","currentMode","relatedTarget","oldRotation","AnnotationEditorLayer","_DrawLayer","_DrawLayer_instances","_mapping","_toUpdate","isPathUpdatable","hasClip","createSVG_fn","pathId","createClipPath_fn","use","mustRemoveSelfIntersections","maskId","use1","use2","elementOrId","rootClass","updateProperties_fn","_DrawLayer_static","setBox_fn","pathElement","clipPathUse","DrawLayer","initPropHookSymbol","isElement","isString","isNumber","isObject","isComponentClass","isArrayLike","isPropHook","isVisibleChild","isRefObject","maybeRef","setRef","initComponentClass","Class","attr","instance","MathMLNamespace","mathMLOnlyTags","svgOnlyTags","nonPresentationSVGAttributes","SVGNamespace","jsxNamespaceURISymbol","currentNamespaceURI","jsxTypeKeySymbol","shadowRootKey","isShadowRoot","disposingListenersSymbol","lifecycleRootSymbol","getDisposingListeners","disposingEventListener","ev","invokeDisposingListeners","disposingListeners","invokeFor","listeners","disposer","addDisposingListener","regKey","existing","removeDisposingListener","currentLifecycleRoot","isSignalLike","SignalObserveArgsImpl","signal2","lifecycleRoot","lifecycleNode","_SignalObserveArgsImpl_instances","_dispose","_node","delDispose_fn","addDispose_fn","observeSignal","appendChild","fragmentPlaceholderIdx","placeholderPrefix","isPlaceholder","isFragmentWithPlaceholder","replaceNode","oldNode","newNode","wrapAsNode","appendChildrenWithSignal","prevNode","prevNodeNew2","appendChildren","prevNodeNew","shadowRoot","unsignalizePrevClass","clearPrevClass","prevClassNames","cls","assignClass","applyClassName","newList","prevList","prefixKey","prefix","isUnitlessNumber","rec","prefixes","setStylePropValue","clearPrevStyle","assignStyle","XLinkNamespace","XMLNamespace","normalizeAttribute","s2","separator","mappedKeys","assignProp","v2","dataKey","dataValue","useCapture","eventHandler","attribute","nodeEventPropDisposer","assignProps","props","jsx","ns","t2","n3","o","o2","S","E","currentPage","totalPages","isSingleMode","showThumbs","orientation","flipState","themeMode","allowDownload","hasDownloadUrl","primaryColor","whiteLabel","isZoomed","isAutoPlaying","autoPlayInterval","soundEnabled","zoomState","pages","isDoublePageLayout","computed","isFrontCover","isBackCover","initStore","mappedPages","hasPdfUrl","builtInMessages","resolveMessages","config","locale","builtIn","custom","Toolbar","messages","jsxs","Thumbnails","isActive","Viewer","isHard","App","handleToggleThumbs","handleToggleSingleMode","handleToggleAutoPlay","handleZoomIn","handleZoomOut","handleToggleFullscreen","handleThumbClick","handleNextPage","handlePrevPage","exports","this","u","PageFlipAdapter","bookContainer","viewportWidth","viewportHeight","PageFlip","pageElements","effect","targetPage","libCurrentPage","getSpreadIndex","targetSpread","currentSpread","playing","interval","maxIndex","nextIdx","prevIdx","unsub","LayoutManager","pageViewport","wrapperElement","sizerElement","handleOrientationChange","availWidth","availHeight","targetRatio","bookWidth","bookHeight","finalWidth","InteractionManager","pageFlipAdapter","isDragging","startX","startY","initialTx","initialTy","dy","startTx","startTy","touchStartY","newScale","isFlipbookPageAsset","candidate","getAssetPageNumbers","asset","getSpreadCropModes","splitDirection","normalizeFlipbookPages","assets","normalized","fallbackPageNumber","assetIndex","assetId","pageNumbers","spreadNumbers","cropModes","spreadIndex","styleInjected","ensureRuntimeStyles","styleId","styleEl","flipbookEngineStyles","applyThemeConfiguration","userVariables","variableName","pdfWorkerUrl","_documentCurrentScript","pdfjsLib.GlobalWorkerOptions","_FlipbookEngine","selector","pdfUrl","imageList","resolvedPages","sourceAssets","referencePage","aspectRatio","baseShortSide","pdfjsLib.getDocument","vp","bookWrapperEl","bookSizerEl","bookContainerEl","pageFlipAdapterRef","interactionManagerRef","appNode","targetIdx","isSingle","clearMarkup","payload","FlipbookEngine","globalScope","flipbookNamespace"],"mappings":"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","x_google_ignoreList":[0,1,2,11]}
|