@monime/pdfio 0.1.15 → 0.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +92 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27551 -403
- package/dist/index.js.map +1 -1
- package/dist/ocr.d.ts +2 -0
- package/dist/ocr.d.ts.map +1 -0
- package/package.json +3 -2
- package/dist/es-BUAA9hkm.js +0 -10467
- package/dist/es-BUAA9hkm.js.map +0 -1
- package/dist/es-D3nZzP9k.cjs +0 -39
- package/dist/es-D3nZzP9k.cjs.map +0 -1
- package/dist/pdf-Cf2mwsHu.js +0 -15778
- package/dist/pdf-Cf2mwsHu.js.map +0 -1
- package/dist/pdf-WmQPUN0h.cjs +0 -55
- package/dist/pdf-WmQPUN0h.cjs.map +0 -1
package/dist/pdf-Cf2mwsHu.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-Cf2mwsHu.js","names":["#getExtremumOnCurve","#getExtremum","#started","#regex","#l10nRemove","#editor","#toolbar","#pointerDown","#buttons","#focusIn","#focusOut","#colorPicker","#altText","#comment","#addListenersToElement","#divider","#commentButtonDivider","#signatureDescriptionButton","#uiManager","#makeButton","#getLastPoint","#render","#pointerId","#pointerIds","#moveTimestamp","#pointerType","#id","#get","#cache","#baseId","#maxSize","#locked","#position","#commands","#serialize","#container","#abortController","#viewer","#viewerAlert","#altTextManager","#commentManager","#signatureManager","#pdfDocument","#isPointerDown","#beforeUnload","#addSelectionListener","#addDragAndDropListeners","#addKeyboardManager","#annotationStorage","#filterFactory","#pageColors","#highlightColors","#enableHighlightFloatingButton","#enableUpdatedAddImage","#enableNewAltTextWhenAddingImage","#mlManager","#updateModeCapability","#allLayers","#allEditors","#editorsToRescale","#missingCanvases","#activeEditor","#selectedEditors","#commandManager","#floatingToolbar","#mainHighlightColorPicker","#allEditableAnnotations","#focusMainContainerTimeoutId","#translationTimeoutId","#currentDrawingSession","#currentPageIndex","#getAnchorElementForSelection","#getLayerForTextLayer","#mode","#selectedTextNode","#dispatchUpdateStates","#highlightWhenShiftUp","#onSelectEnd","#displayFloatingToolbar","#selectionChange","#focusManagerAC","#lastActiveElement","#keyboardManagerAC","#copyPasteAC","#removeKeyboardManager","#editorTypes","#addEditorToLayer","#selectEditors","#savedAllLayers","#isEnabled","#previousStates","#dispatchUpdateUI","#addFocusManager","#addCopyPasteListeners","#isEmpty","#removeFocusManager","#removeCopyPasteListeners","#idManager","#disableAll","#enableAll","#deletedAnnotationsElementIds","#showAllStates","#isWaiting","#lastSelectedEditor","#translation","#draggingEditors","#changedExistingAnnotations","#l10nNewButton","#useNewAltTextFlow","#altTextButton","#altTextButtonLabel","#label","#altTextWasFromKeyBoard","#setState","#altTextDecorative","#guessedText","#textWithDisclaimer","#badge","#altTextTooltipTimeout","#altTextTooltip","#commentToolbarButton","#commentStandaloneButton","#popupPosition","#commentWasFromKeyBoard","#deleted","#text","#initialText","#richText","#date","#isPinchingStopped","#isPinchingDisabled","#onPinchStart","#onPinching","#onPinchEnd","#touchManagerAC","#signal","#onTouchStart","#pointerDownAC","#touchMoveAC","#onTouchMove","#onTouchEnd","#touchInfo","#isPinching","#isDraggable","#zIndex","#stopResizing","#fakeAnnotation","#hasBeenClicked","#translate","#initialRect","#rotatePoint","#resizersDiv","#resizerPointerdown","#lastPointerCoords","#resizerPointermove","#savedDimensions","#addResizeToUndoStack","#resize","#getRotationMatrix","#isInEditMode","#accessibilityData","#disabled","#addFocusListeners","#touchManager","#touchPinchStartCallback","#touchPinchCallback","#touchPinchEndCallback","#setUpDragSession","#selectOnPointerEvent","#dragPointerId","#prevDragX","#prevDragY","#dragPointerType","#moveInDOMTimeout","#isResizerEnabledForKeyboard","#focusAC","#telemetryTimeouts","#createResizers","#allResizerDivs","#resizerKeydown","#resizerBlur","#resizerFocus","#setResizerTabIndex","#focusedResizerName","#isEditing","#storage","#editorsMap","#setModified","#modified","#modifiedIds","#serializable","#bboxes","#coords","#canvasWidth","#canvasHeight","#initializeBBoxes","#bboxesCoords","#clipBox","#baseTransformStack","#pendingBBox","#bboxTracker","#debugMetadata","#recordDebugMetadataDepenencyAfterRestore","#simple","#incremental","#namedDependencies","#pendingDependencies","#fontBBoxTrustworthy","#ignoreBBoxes","#dependencyTracker","#opIdx","#savesLevel","#nestingLevel","#CoordsArray","#capacity","#count","#systemFonts","#fontData","#buffer","#view","#decoder","#readString","#readBoolean","#readNumber","#readArray","#getDataOffsets","#deferred","#listeners","#onMessage","#messageAC","#processStreamMessage","#createStreamSink","#deleteStreamController","#errorStr","#enableHWA","#docId","#document","#_cache","#hcmCache","#_hcmCache","#defs","#_defs","#baseUrl","#createTables","#createUrl","#createFilter","#addTransferMapConversion","#getRGB","#addGrayConversion","#addTransferMapAlphaConversion","#addLuminosityConversion","#appendFeFunc","#initGPU","#preferredFormat","#device","#initPromise","#meshPipeline","#restoreInitialState","#drawFilter","#getScaledPath","#PDFStreamReader","#PDFStreamRangeReader","#onReceiveData","#endRequests","#pendingRequests","#onStateChange","#onProgress","#onHeadersReceived","#onDone","#onError","#port","#src","#map","#data","#isDisplay","#isPrint","#userSet","#visible","#order","#groups","#initialHash","#evaluateVisibilityExpression","#cachedGetHash","#pagesNumber","#pageNumberToId","#prevPageNumbers","#ensureInit","#buildIdToPageNumber","#updatePrevPageNumbers","#savedData","#clipboard","#objs","#ascentCache","#canvasContexts","#canvasCtxFonts","#minFontSize","#pendingTextLayers","#textContentSource","#rootContainer","#imagesHandler","#scale","#rotation","#layoutTextParams","#transform","#pageWidth","#pageHeight","#ensureMinFontSizeComputed","#capability","#styleCache","#reader","#lang","#processItems","#getCtx","#textDivs","#textDivProperties","#layout","#textContentItemsStr","#disableProcessItems","#appendText","#fontInspectorEnabled","#getAscent","#ensureCtxFont","#listener","#pagesMapper","#pendingCleanup","#tryCleanup","#fakeWorkerId","#isWorkerDisabled","#workerPorts","#initializeFromPort","#initialize","#messageHandler","#resolve","#mainThreadWorkerMessageHandler","#setupFakeWorker","#webWorker","#networkStream","#pageCache","#pagePromises","#methodPromises","#passwordCapability","#pageRefCache","#fullReader","#cacheSimpleMethod","#canvasInUse","#rAF","#l10nColor","#isMainColorPicker","#eventBus","#defaultColor","#button","#openDropdown","#keyDown","#buttonSwatch","#dropdown","#getDropdownRoot","#colorSelect","#isDropdownVisible","#dropdownWasFromKeyboard","#openDropdownAC","#input","#hasAlpha","#popupElement","#updates","#setRectEdited","#hasBorder","#bindAttachment","#bindSetOCGState","#setInternalLink","#createPopup","#hide","#show","#toggle","#titleObj","#contentsObj","#parent","#color","#rect","#parentRect","#elements","#firstElement","#dateObj","#addEventListeners","#popupAbortController","#boundToggle","#boundShow","#boundHide","#boundKeyDown","#commentButtonPosition","#commentButton","#setCommentButtonPosition","#updateColor","#updateCommentButtonPosition","#commentText","#popup","#html","#fontSize","#fontColor","#pinned","#makePopupContent","#wasVisible","#setPosition","#line","#square","#circle","#polyline","#getTransform","#polylinesGroupElement","#polylines","#download","#trigger","#accessibilityManager","#annotationCanvasMap","#structTreeLayer","#linkService","#editableAnnotations","#addElementsToDOM","#setAnnotationCanvasMap","#hasAriaAttributesFromStructTree","#updateFontSize","#setEditorDimensions","#editModeAC","#editorDivId","#getNodeContent","#content","#extractText","#setContent","#deserializeContent","#serializeContent","#hasElementChanged","#MIN_DIST","#MIN_DIFF","#MIN","#box","#thickness","#isLTR","#last","#innerMargin","#min_dist","#min","#scaleFactor","#points","#lastX","#lastY","#top","#bottom","#toSVGPathTwoPoints","#toSVGPathEnd","#toSVGPathStart","#getLastCoords","#getOutlineTwoPoints","#getOutlineEnd","#getOutlineStart","#outline","#computeMinMax","#bbox","#verticalEdges","#firstPoint","#lastPoint","#breakEdge","#insert","#remove","#getOutlines","#intervals","#binarySearch","#outlines","#boxes","#methodOfCreation","#isFreeHighlight","#createFreeOutlines","#addToDrawLayer","#anchorNode","#anchorOffset","#focusNode","#focusOffset","#createOutlines","#highlightOutlines","#focusOutlines","#clipPathId","#outlineId","#rotateBbox","#updateThickness","#changeThickness","#getRotation","#cleanDrawLayer","#highlightDiv","#keydown","#setCaret","#endHighlight","#highlightMove","#serializeBoxes","#serializeOutlines","#svgProperties","#currentDraw","#currentDrawingAC","#currentDrawingOptions","#mustBeCommitted","#createDrawOutlines","#drawOutlines","#createDrawing","#updateBbox","#convertToDrawSpace","#rotateBox","#convertToParentSpace","#parentWidth","#parentHeight","#normalizePoint","#lines","#lastIndex","#lastSVGPath","#parentScale","#computeBbox","#getBBoxWithNoMargin","#getMarginComponents","#currentRotation","#PARAMETERS","#neighborIndexToId","#neighborIdToIndex","#clockwiseNonZero","#counterClockwiseNonZero","#findContours","#douglasPeuckerHelper","#douglasPeucker","#bilateralFilter","#getHistogram","#toUint8","#guessThreshold","#getGrayPixels","#signatureData","#description","#signatureUUID","#isExtracted","#bitmapUrl","#bitmapFile","#bitmap","#bitmapId","#isSvg","#bitmapFileName","#createCanvas","#bitmapPromise","#canvas","#getBitmapFetched","#getBitmapDone","#resizeTimeoutId","#getBitmap","#missingCanvas","#drawBitmap","#hasBeenAddedInUndoStack","#scaleBitmap","#serializeBitmap","#annotationLayer","#textLayer","#editors","#cleanup","#allEditorsIterator","#isEnabling","#textLayerDblClickAC","#isDisabling","#lastPointerDownTimestamp","#textSelectionAC","#textLayerPointerDown","#clickAC","#editorFocusTimeoutId","#currentEditorType","#getCenterPoint","#createNewEditor","#hadPointerDown","#allowClick","#drawingAC","#focusedElement","#mapping","#setBox","#createSVG","#toUpdate","#createClipPath","#updateProperties","#activeImage","#minSize","#coordinates","#getPageCanvas","#createImagePlaceholder","#coordinatesByElement"],"sources":["../node_modules/.pnpm/pdfjs-dist@5.7.284/node_modules/pdfjs-dist/build/pdf.mjs"],"sourcesContent":["/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/**\n * pdfjsVersion = 5.7.284\n * pdfjsBuild = 7e5b36c2d\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/************************************************************************/\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 BBOX_INIT = [Infinity, Infinity, -Infinity, -Infinity];\nconst F32_BBOX_INIT = new Float32Array(BBOX_INIT);\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 INK_COLOR_AND_OPACITY: 24,\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 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 stripPath(str) {\n return str.substring(str.lastIndexOf(\"/\") + 1);\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 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}\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\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 static get isAlphaColorInputSupported() {\n return shadow(this, \"isAlphaColorInputSupported\", (() => {\n if (typeof document === \"undefined\") {\n return false;\n }\n const input = document.createElement(\"input\");\n input.type = \"color\";\n input.setAttribute(\"alpha\", \"\");\n input.value = \"#ff000080\";\n return input.value !== \"#ff0000\";\n })());\n }\n}\nclass Util {\n static get hexNums() {\n return shadow(this, \"hexNums\", Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\")));\n }\n static makeHexColor(r, g, b) {\n return `#${this.hexNums[r]}${this.hexNums[g]}${this.hexNums[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}\nconst makeArr = () => [];\nconst makeMap = () => new Map();\nconst makeObj = () => Object.create(null);\n\n;// ./src/shared/math_clamp.js\nfunction MathClamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\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 (Object.hasOwn(option.attributes, \"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\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 \"blob\":\n return response.blob();\n case \"bytes\":\n return response.bytes();\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 === \"bytes\" ? \"arraybuffer\" : 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 \"bytes\":\n resolve(new Uint8Array(request.response));\n return;\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 stripPath(url);\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 = stripPath(decoded);\n if (/^\\.pdf$/i.test(decoded)) {\n return name;\n }\n }\n return decoded;\n } catch {\n return name;\n }\n };\n const pdfRegex = /\\.pdf$/i;\n const filename = stripPath(newURL.pathname);\n if (pdfRegex.test(filename)) {\n return decode(filename);\n }\n if (newURL.searchParams.size > 0) {\n const getLast = iterator => [...iterator].findLast(v => pdfRegex.test(v));\n const name = getLast(newURL.searchParams.values()) ?? getLast(newURL.searchParams.keys());\n if (name) {\n return decode(name);\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 = new Map();\n times = [];\n time(name) {\n if (this.#started.has(name)) {\n warn(`Timer is already running for ${name}`);\n }\n this.#started.set(name, Date.now());\n }\n timeEnd(name) {\n if (!this.#started.has(name)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.#started.get(name),\n end: Date.now()\n });\n this.#started.delete(name);\n }\n toString() {\n const longest = Math.max(...this.times.map(t => t.name.length));\n return this.times.map(t => `${t.name.padEnd(longest)} ${t.end - t.start}ms\\n`).join(\"\");\n }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return /https?:/.test(res?.protocol ?? \"\");\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, 10), parseInt(height, 10)];\n return new PageViewport({\n viewBox,\n userUnit: 1,\n scale,\n rotation\n });\n}\nfunction getRGBA(color) {\n if (color.startsWith(\"#\")) {\n const hex = color.slice(1);\n return [parseInt(hex.slice(0, 2), 16), parseInt(hex.slice(2, 4), 16), parseInt(hex.slice(4, 6), 16), hex.length >= 8 ? parseInt(hex.slice(6, 8), 16) / 255 : 1];\n }\n if (color.startsWith(\"rgb(\")) {\n const [r, g, b] = color.slice(4, -1).split(\",\").map(x => parseInt(x, 10));\n return [r, g, b, 1];\n }\n if (color.startsWith(\"rgba(\")) {\n const parts = color.slice(5, -1).split(\",\");\n return [parseInt(parts[0], 10), parseInt(parts[1], 10), parseInt(parts[2], 10), parseFloat(parts[3])];\n }\n const m = color.match(/^color\\(srgb\\s+([\\d.]+)\\s+([\\d.]+)\\s+([\\d.]+)(?:\\s*\\/\\s*([\\d.]+|none))?\\)$/);\n if (m) {\n return [Math.round(parseFloat(m[1]) * 255), Math.round(parseFloat(m[2]) * 255), Math.round(parseFloat(m[3]) * 255), m[4] !== undefined && m[4] !== \"none\" ? parseFloat(m[4]) : 1];\n }\n return null;\n}\nfunction getRGB(color) {\n const rgba = getRGBA(color);\n if (!rgba) {\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n }\n return rgba.slice(0, 3);\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 = 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(color, opacity) {\n opacity = MathClamp(opacity ?? 1, 0, 1);\n const white = 255 * (1 - opacity);\n return color.map(c => Math.round(c * opacity + white));\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 } = 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 #savedAllLayers = null;\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 window.addEventListener(\"beforeunload\", this.#beforeUnload.bind(this), {\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 deleteComment(editor, savedData) {\n const undo = () => {\n editor.comment = savedData;\n };\n const cmd = () => {\n this._editorUndoBar?.show(undo, \"comment\");\n this.toggleComment(null);\n editor.comment = null;\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\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 deletePage(id) {\n for (const editor of this.getEditors(id)) {\n editor.remove();\n }\n this.#allLayers.delete(id);\n if (this.#currentPageIndex === id) {\n this.#currentPageIndex = 0;\n }\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 #beforeUnload(e) {\n this.commitOrRemove();\n this.currentLayer?.endDrawingSession(false);\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 updatePageIndex(oldPageIndex, newPageIndex) {\n for (const editor of this.getEditors(oldPageIndex)) {\n editor.pageIndex = newPageIndex;\n }\n const layer = this.#savedAllLayers.get(oldPageIndex);\n if (layer) {\n layer.pageIndex = newPageIndex;\n this.#allLayers.set(newPageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n }\n startUpdatePages() {\n this.#savedAllLayers = new Map(this.#allLayers);\n this.#allLayers.clear();\n }\n endUpdatePages() {\n this.#savedAllLayers = null;\n }\n clonePage(pageIndex, newPageIndex) {\n for (const editor of this.getEditors(pageIndex)) {\n const serialized = editor.serialize(editor.mode !== AnnotationEditorType.HIGHLIGHT);\n if (!serialized) {\n continue;\n }\n serialized.pageIndex = newPageIndex;\n serialized.id = this.getId();\n serialized.isClone = true;\n delete serialized.popupRef;\n this.#annotationStorage.setValue(serialized.id, serialized);\n }\n }\n findClonesForPage(layer) {\n const promises = [];\n const {\n pageIndex\n } = layer;\n for (const [id, editor] of this.#annotationStorage) {\n if (editor.pageIndex === pageIndex && editor.isClone) {\n this.#annotationStorage.remove(id);\n promises.push(layer.deserialize(editor).then(deserializedEditor => {\n if (deserializedEditor) {\n deserializedEditor.isClone = true;\n layer.addOrRebuild(deserializedEditor);\n }\n }));\n }\n }\n return Promise.all(promises);\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"editingstateschanged\", {\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.#commentManager?.destroyPopup();\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 this.#commentManager?.destroyPopup();\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 restoreData({\n text,\n richText,\n date\n }) {\n this.#text = text;\n this.#richText = richText;\n this.#date = 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\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 updatePageIndex(newPageIndex) {\n this.pageIndex = newPageIndex;\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._uiManager.getId(),\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 if (this.isClone) {\n delete this.isClone;\n return;\n }\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 } = 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 if (!this.#comment) {\n return null;\n }\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(value) {\n this.#comment ||= new Comment(this);\n if (typeof value === \"object\" && value !== null) {\n this.#comment.restoreData(value);\n } else {\n this.#comment.data = value;\n }\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 } = 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 } = 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: uiManager.getId(),\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 onSetModified = null;\n onResetModified = null;\n onAnnotationEditor = null;\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 (this.#storage.values().some(v => v instanceof AnnotationEditor)) {\n return;\n }\n this.onAnnotationEditor?.(null);\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 this.onAnnotationEditor?.(value.constructor._type);\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 this.onSetModified?.();\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n this.onResetModified?.();\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 (val.page) {\n val.pageIndex = val.page._pageIndex;\n delete val.page;\n }\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 const counters = map.getOrInsertComputed(key, makeMap);\n counters.set(val, (counters.get(val) ?? 0) + 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 let hash = \"\";\n if (ids.length) {\n const h = new MurmurHash3_64();\n h.update(ids.join(\",\"));\n hash = h.hexdigest();\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash\n };\n }\n [Symbol.iterator]() {\n return this.#storage.entries();\n }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable = SerializableEmpty;\n constructor(parent) {\n super();\n const {\n serializable\n } = parent;\n if (serializable === SerializableEmpty) {\n return;\n }\n const {\n map,\n hash,\n transfer\n } = 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/canvas_dependency_tracker.js\n\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) => map?.getOrInsertComputed(key, () => ({\n dependencies: new Set(),\n isRenderingOperation: false\n}));\nclass CanvasBBoxTracker {\n #baseTransformStack = [[1, 0, 0, 1, 0, 0]];\n #clipBox = [-Infinity, -Infinity, Infinity, Infinity];\n #pendingBBox = new Float64Array(BBOX_INIT);\n _pendingBBoxIdx = -1;\n #canvasWidth;\n #canvasHeight;\n #bboxesCoords;\n #bboxes;\n _savesStack = [];\n _markedContentStack = [];\n constructor(canvas, operationsCount) {\n this.#canvasWidth = canvas.width;\n this.#canvasHeight = canvas.height;\n this.#initializeBBoxes(operationsCount);\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 get clipBox() {\n return this.#clipBox;\n }\n save(opIdx) {\n this.#clipBox = {\n __proto__: this.#clipBox\n };\n this._savesStack.push(opIdx);\n return this;\n }\n restore(opIdx, onSavePopped) {\n const previous = Object.getPrototypeOf(this.#clipBox);\n if (previous === null) {\n return this;\n }\n this.#clipBox = previous;\n const lastSave = this._savesStack.pop();\n if (lastSave !== undefined) {\n onSavePopped?.(lastSave, opIdx);\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, onSavePopped) {\n const lastSave = this._savesStack.pop();\n if (lastSave !== undefined) {\n onSavePopped?.(lastSave, opIdx);\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, onSavePopped) {\n const lastSave = this._markedContentStack.pop();\n if (lastSave !== undefined) {\n onSavePopped?.(lastSave, opIdx);\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 resetBBox(idx) {\n if (this._pendingBBoxIdx !== idx) {\n this._pendingBBoxIdx = idx;\n this.#pendingBBox.set(BBOX_INIT, 0);\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 = BBOX_INIT.slice();\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 = BBOX_INIT.slice();\n Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, bbox);\n this.#pendingBBox[0] = MathClamp(bbox[0], clipBox[0], this.#pendingBBox[0]);\n this.#pendingBBox[1] = MathClamp(bbox[1], clipBox[1], this.#pendingBBox[1]);\n this.#pendingBBox[2] = MathClamp(bbox[2], this.#pendingBBox[2], clipBox[2]);\n this.#pendingBBox[3] = MathClamp(bbox[3], this.#pendingBBox[3], clipBox[3]);\n return this;\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 recordOperation(idx, preserve = false, dependencyLists) {\n if (this._pendingBBoxIdx !== idx) {\n return this;\n }\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 if (dependencyLists) {\n for (const dependencies of dependencyLists) {\n for (const depIdx of dependencies) {\n if (depIdx !== idx) {\n expandBBox(this.#bboxesCoords, depIdx, minX, minY, maxX, maxY);\n }\n }\n }\n }\n if (!preserve) {\n this._pendingBBoxIdx = -1;\n }\n return this;\n }\n bboxToClipBoxDropOperation(idx) {\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 }\n return this;\n }\n take() {\n return new BBoxReader(this.#bboxes, this.#bboxesCoords);\n }\n takeDebugMetadata() {\n throw new Error(\"Unreachable\");\n }\n recordSimpleData(name, idx) {\n return this;\n }\n recordIncrementalData(name, idx) {\n return this;\n }\n resetIncrementalData(name, idx) {\n return this;\n }\n recordNamedData(name, idx) {\n return this;\n }\n recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n return this;\n }\n recordFutureForcedDependency(name, idx) {\n return this;\n }\n inheritSimpleDataAsFutureForcedDependencies(names) {\n return this;\n }\n inheritPendingDependenciesAsFutureForcedDependencies() {\n return this;\n }\n recordCharacterBBox(idx, ctx, font, scale = 1, x = 0, y = 0, getMeasure) {\n return this;\n }\n getSimpleIndex(dependencyName) {\n return undefined;\n }\n recordDependencies(idx, dependencyNames) {\n return this;\n }\n recordNamedDependency(idx, name) {\n return this;\n }\n recordShowTextOperation(idx, preserve = false) {\n return this;\n }\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 #pendingDependencies = new Set();\n #fontBBoxTrustworthy = new Map();\n #debugMetadata;\n #recordDebugMetadataDepenencyAfterRestore;\n #bboxTracker;\n constructor(bboxTracker, recordDebugMetadata = false) {\n this.#bboxTracker = bboxTracker;\n if (recordDebugMetadata) {\n this.#debugMetadata = new Map();\n this.#recordDebugMetadataDepenencyAfterRestore = (lastSave, opIdx) => {\n ensureDebugMetadata(this.#debugMetadata, opIdx).dependencies.add(lastSave);\n };\n }\n }\n get clipBox() {\n return this.#bboxTracker.clipBox;\n }\n growOperationsCount(operationsCount) {\n this.#bboxTracker.growOperationsCount(operationsCount);\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.#bboxTracker.save(opIdx);\n return this;\n }\n restore(opIdx) {\n this.#bboxTracker.restore(opIdx, this.#recordDebugMetadataDepenencyAfterRestore);\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 return this;\n }\n recordOpenMarker(opIdx) {\n this.#bboxTracker.recordOpenMarker(opIdx, this.#recordDebugMetadataDepenencyAfterRestore);\n return this;\n }\n getOpenMarker() {\n return this.#bboxTracker.getOpenMarker();\n }\n recordCloseMarker(opIdx) {\n this.#bboxTracker.recordCloseMarker(opIdx, this.#recordDebugMetadataDepenencyAfterRestore);\n return this;\n }\n beginMarkedContent(opIdx) {\n this.#bboxTracker.beginMarkedContent(opIdx);\n return this;\n }\n endMarkedContent(opIdx) {\n this.#bboxTracker.endMarkedContent(opIdx, this.#recordDebugMetadataDepenencyAfterRestore);\n return this;\n }\n pushBaseTransform(ctx) {\n this.#bboxTracker.pushBaseTransform(ctx);\n return this;\n }\n popBaseTransform() {\n this.#bboxTracker.popBaseTransform();\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 this.#bboxTracker.resetBBox(idx);\n return this;\n }\n recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n this.#bboxTracker.recordClipBox(idx, ctx, minX, maxX, minY, maxY);\n return this;\n }\n recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n this.#bboxTracker.recordBBox(idx, ctx, minX, maxX, minY, maxY);\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.#bboxTracker.recordFullPageBBox(idx);\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.#bboxTracker._savesStack.forEach(dependencies.add, dependencies);\n this.#bboxTracker._markedContentStack.forEach(dependencies.add, dependencies);\n dependencies.delete(idx);\n metadata.isRenderingOperation = true;\n }\n const needsCleanup = !preserve && idx === this.#bboxTracker._pendingBBoxIdx;\n this.#bboxTracker.recordOperation(idx, preserve, [this.#pendingDependencies, this.#bboxTracker._savesStack, this.#bboxTracker._markedContentStack]);\n if (needsCleanup) {\n this.#pendingDependencies.clear();\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 const needsCleanup = !preserve && idx === this.#bboxTracker._pendingBBoxIdx;\n this.#bboxTracker.bboxToClipBoxDropOperation(idx);\n if (needsCleanup) {\n this.#pendingDependencies.clear();\n }\n return this;\n }\n take() {\n this.#fontBBoxTrustworthy.clear();\n return this.#bboxTracker.take();\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 get clipBox() {\n return this.#dependencyTracker.clipBox;\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};\nclass CanvasImagesTracker {\n #canvasWidth;\n #canvasHeight;\n #capacity = 4;\n #count = 0;\n #coords = new CanvasImagesTracker.#CoordsArray(this.#capacity * 6);\n static #CoordsArray = FeatureTest.isFloat16ArraySupported ? Float16Array : Float32Array;\n constructor(canvas) {\n this.#canvasWidth = canvas.width;\n this.#canvasHeight = canvas.height;\n }\n record(ctx, width, height, clipBox) {\n if (this.#count === this.#capacity) {\n this.#capacity *= 2;\n const newCoords = new CanvasImagesTracker.#CoordsArray(this.#capacity * 6);\n newCoords.set(this.#coords);\n this.#coords = newCoords;\n }\n const transform = Util.domMatrixToTransform(ctx.getTransform());\n let coords;\n if (clipBox[0] !== Infinity) {\n const bbox = BBOX_INIT.slice();\n Util.axialAlignedBoundingBox([0, -height, width, 0], transform, bbox);\n const finalBBox = Util.intersect(clipBox, bbox);\n if (!finalBBox) {\n return;\n }\n const [minX, minY, maxX, maxY] = finalBBox;\n if (minX !== bbox[0] || minY !== bbox[1] || maxX !== bbox[2] || maxY !== bbox[3]) {\n const rotationAngle = Math.atan2(transform[1], transform[0]);\n const sin = Math.abs(Math.sin(rotationAngle));\n const cos = Math.abs(Math.cos(rotationAngle));\n if (sin < 1e-6 || cos < 1e-6 || Math.abs(sin - cos) < 1e-6) {\n coords = [minX, minY, minX, maxY, maxX, minY];\n } else {\n const finalBBoxWidth = maxX - minX;\n const finalBBoxHeight = maxY - minY;\n const sin2 = sin * sin;\n const cos2 = cos * cos;\n const cosSin = cos * sin;\n const denom = cos2 - sin2;\n const a = (finalBBoxHeight * cos2 - finalBBoxWidth * cosSin) / denom;\n const b = (finalBBoxHeight * cosSin - finalBBoxWidth * sin2) / denom;\n coords = [minX + b, minY, minX, minY + a, maxX, maxY - a];\n }\n }\n }\n if (!coords) {\n coords = [0, -height, 0, 0, width, -height];\n Util.applyTransform(coords, transform, 0);\n Util.applyTransform(coords, transform, 2);\n Util.applyTransform(coords, transform, 4);\n }\n coords[0] /= this.#canvasWidth;\n coords[1] /= this.#canvasHeight;\n coords[2] /= this.#canvasWidth;\n coords[3] /= this.#canvasHeight;\n coords[4] /= this.#canvasWidth;\n coords[5] /= this.#canvasHeight;\n this.#coords.set(coords, this.#count * 6);\n this.#count++;\n }\n take() {\n return this.#coords.subarray(0, this.#count * 6);\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 || 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 string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 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 compiledGlyphs = Object.create(null);\n #fontData;\n constructor(translatedData, inspectFont = null, charProcOperatorList, extra) {\n this.#fontData = translatedData;\n this._inspectFont = inspectFont;\n if (charProcOperatorList) {\n this.charProcOperatorList = charProcOperatorList;\n }\n if (extra) {\n Object.assign(this, extra);\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,${this.data.toBase64()});`;\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;\n }\n set disableFontFace(value) {\n shadow(this, \"disableFontFace\", !!value);\n }\n get fontExtraProperties() {\n return this.#fontData.fontExtraProperties;\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 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_utils.js\nclass CSS_FONT_INFO {\n static strings = [\"fontFamily\", \"fontWeight\", \"italicAngle\"];\n}\nclass SYSTEM_FONT_INFO {\n static strings = [\"css\", \"loadedName\", \"baseFontName\", \"src\"];\n}\nclass FONT_INFO {\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}\nclass PATTERN_INFO {\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}\n\n;// ./src/display/obj_bin_transform_display.js\n\n\nclass CssFontInfo {\n #buffer;\n #decoder = new TextDecoder();\n #view;\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(buffer);\n }\n #readString(index) {\n assert(index < CSS_FONT_INFO.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 #decoder = new TextDecoder();\n #view;\n constructor(buffer) {\n this.#buffer = buffer;\n this.#view = new DataView(buffer);\n }\n get guessFallback() {\n return this.#view.getUint8(0) !== 0;\n }\n #readString(index) {\n assert(index < SYSTEM_FONT_INFO.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 #buffer;\n #decoder = new TextDecoder();\n #view;\n constructor({\n buffer,\n extra\n }) {\n this.#buffer = buffer;\n this.#view = new DataView(buffer);\n if (extra) {\n Object.assign(this, extra);\n }\n }\n #readBoolean(index) {\n assert(index < FONT_INFO.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 < FONT_INFO.numbers.length, \"Invalid number index\");\n return this.#view.getFloat64(FONT_INFO.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 #readArray(offset, arrLen, lookupName, increment) {\n const len = this.#view.getUint8(offset);\n if (len === 0) {\n return undefined;\n }\n assert(len === arrLen, \"Invalid array length.\");\n offset += 1;\n const arr = new Array(len);\n for (let i = 0; i < len; i++) {\n arr[i] = this.#view[lookupName](offset, true);\n offset += increment;\n }\n return arr;\n }\n get bbox() {\n return this.#readArray(FONT_INFO.OFFSET_BBOX, 4, \"getInt16\", 2);\n }\n get fontMatrix() {\n return this.#readArray(FONT_INFO.OFFSET_FONT_MATRIX, 6, \"getFloat64\", 8);\n }\n get defaultVMetrics() {\n return this.#readArray(FONT_INFO.OFFSET_DEFAULT_VMETRICS, 3, \"getInt16\", 2);\n }\n #readString(index) {\n assert(index < FONT_INFO.strings.length, \"Invalid string index\");\n let offset = FONT_INFO.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 return this.#decoder.decode(new Uint8Array(this.#buffer, offset + 4, length));\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 #getDataOffsets() {\n let offset = FONT_INFO.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 return {\n offset,\n length\n };\n }\n get data() {\n const {\n offset,\n length\n } = this.#getDataOffsets();\n return length === 0 ? undefined : new Uint8Array(this.#buffer, offset + 4, length);\n }\n clearData() {\n const {\n offset,\n length\n } = this.#getDataOffsets();\n if (length === 0) {\n return;\n }\n this.#view.setUint32(offset, 0);\n this.#buffer = new Uint8Array(this.#buffer, 0, offset + 4).slice().buffer;\n this.#view = new DataView(this.#buffer);\n }\n get cssFontInfo() {\n let offset = FONT_INFO.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 = FONT_INFO.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}\nclass PatternInfo {\n constructor(buffer) {\n this.buffer = buffer;\n this.view = new DataView(buffer);\n this.data = new Uint8Array(buffer);\n }\n getIR() {\n const dataView = this.view;\n const kind = this.data[PATTERN_INFO.KIND];\n const hasBBox = !!this.data[PATTERN_INFO.HAS_BBOX];\n const hasBackground = !!this.data[PATTERN_INFO.HAS_BACKGROUND];\n const nCoord = dataView.getUint32(PATTERN_INFO.N_COORD, true);\n const nColor = dataView.getUint32(PATTERN_INFO.N_COLOR, true);\n const nStop = dataView.getUint32(PATTERN_INFO.N_STOP, 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 * 4);\n offset += nColor * 4;\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 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[PATTERN_INFO.SHADING_TYPE];\n let bounds = null;\n if (coords.length > 0) {\n bounds = BBOX_INIT.slice();\n for (let i = 0, ii = coords.length; i < ii; i += 2) {\n Util.pointBoundingBox(coords[i], coords[i + 1], bounds);\n }\n }\n return [\"Mesh\", shadingType, coords, colors, nCoord, bounds, bbox, background];\n }\n throw new Error(`Unsupported pattern kind: ${kind}`);\n }\n}\nclass FontPathInfo {\n #buffer;\n constructor(buffer) {\n this.#buffer = buffer;\n }\n get path() {\n if (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;\n }\n if (typeof val === \"string\") {\n if (isNodeJS) {\n if (/^[a-z][a-z0-9\\-+.]+:/i.test(val)) {\n return new URL(val);\n }\n const url = process.getBuiltinModule(\"url\");\n return new URL(url.pathToFileURL(val));\n }\n const url = URL.parse(val, window.location);\n if (url) {\n return url;\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/binary_data_factory.js\n\n\nclass BaseBinaryDataFactory {\n #errorStr = Object.freeze({\n cMapUrl: \"CMap\",\n standardFontDataUrl: \"font\",\n wasmUrl: \"wasm\"\n });\n constructor({\n cMapUrl = null,\n standardFontDataUrl = null,\n wasmUrl = null\n }) {\n this.cMapUrl = cMapUrl;\n this.standardFontDataUrl = standardFontDataUrl;\n this.wasmUrl = wasmUrl;\n }\n async fetch({\n kind,\n filename\n }) {\n switch (kind) {\n case \"cMapUrl\":\n case \"standardFontDataUrl\":\n case \"wasmUrl\":\n break;\n default:\n unreachable(`Not implemented: ${kind}`);\n }\n const baseUrl = this[kind];\n if (!baseUrl) {\n throw new Error(`Ensure that the \\`${kind}\\` API parameter is provided.`);\n }\n const url = `${baseUrl}${filename}`;\n return this._fetch(url, kind).catch(reason => {\n throw new Error(`Unable to load ${this.#errorStr[kind]} data at: ${url}`);\n });\n }\n async _fetch(url, kind) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMBinaryDataFactory extends BaseBinaryDataFactory {\n async _fetch(url, kind) {\n const type = kind === \"cMapUrl\" && !url.endsWith(\".bcmap\") ? \"text\" : \"bytes\";\n const data = await fetchData(url, type);\n return data instanceof Uint8Array ? data : stringToBytes(data);\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({\n canvas\n }, width, height) {\n if (!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 canvas.width = width;\n canvas.height = height;\n }\n destroy(canvasAndContext) {\n const {\n canvas\n } = canvasAndContext;\n if (!canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvas.width = 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/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/node_utils.js\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/promises\");\n const data = await fs.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 NodeBinaryDataFactory extends BaseBinaryDataFactory {\n async _fetch(url, kind) {\n return node_utils_fetchData(url);\n }\n}\n\n;// ./src/display/webgpu.js\nconst MESH_WGSL = `\nstruct Uniforms {\n offsetX : f32,\n offsetY : f32,\n scaleX : f32,\n scaleY : f32,\n paddedWidth : f32,\n paddedHeight : f32,\n borderSize : f32,\n _pad : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : Uniforms;\n\nstruct VertexInput {\n @location(0) position : vec2<f32>,\n @location(1) color : vec4<f32>,\n};\n\nstruct VertexOutput {\n @builtin(position) position : vec4<f32>,\n @location(0) color : vec3<f32>,\n};\n\n@vertex\nfn vs_main(in : VertexInput) -> VertexOutput {\n var out : VertexOutput;\n let cx = (in.position.x + u.offsetX) * u.scaleX;\n let cy = (in.position.y + u.offsetY) * u.scaleY;\n out.position = vec4<f32>(\n ((cx + u.borderSize) / u.paddedWidth) * 2.0 - 1.0,\n 1.0 - ((cy + u.borderSize) / u.paddedHeight) * 2.0,\n 0.0,\n 1.0\n );\n out.color = in.color.rgb;\n return out;\n}\n\n@fragment\nfn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {\n return vec4<f32>(in.color, 1.0);\n}\n`;\nclass WebGPU {\n #initPromise = null;\n #device = null;\n #meshPipeline = null;\n #preferredFormat = null;\n async #initGPU() {\n if (!globalThis.navigator?.gpu) {\n return false;\n }\n try {\n const adapter = await navigator.gpu.requestAdapter();\n if (!adapter) {\n return false;\n }\n this.#preferredFormat = navigator.gpu.getPreferredCanvasFormat();\n this.#device = await adapter.requestDevice();\n return true;\n } catch {\n return false;\n }\n }\n init() {\n return this.#initPromise ||= this.#initGPU();\n }\n get isReady() {\n return this.#device !== null;\n }\n loadMeshShader() {\n if (!this.#device || this.#meshPipeline) {\n return;\n }\n const shaderModule = this.#device.createShaderModule({\n code: MESH_WGSL\n });\n this.#meshPipeline = this.#device.createRenderPipeline({\n layout: \"auto\",\n vertex: {\n module: shaderModule,\n entryPoint: \"vs_main\",\n buffers: [{\n arrayStride: 2 * 4,\n attributes: [{\n shaderLocation: 0,\n offset: 0,\n format: \"float32x2\"\n }]\n }, {\n arrayStride: 4,\n attributes: [{\n shaderLocation: 1,\n offset: 0,\n format: \"unorm8x4\"\n }]\n }]\n },\n fragment: {\n module: shaderModule,\n entryPoint: \"fs_main\",\n targets: [{\n format: this.#preferredFormat\n }]\n },\n primitive: {\n topology: \"triangle-list\"\n }\n });\n }\n draw(posData, colData, vertexCount, context, backgroundColor, paddedWidth, paddedHeight, borderSize) {\n this.loadMeshShader();\n const device = this.#device;\n const {\n offsetX,\n offsetY,\n scaleX,\n scaleY\n } = context;\n const posBuffer = device.createBuffer({\n size: Math.max(posData.byteLength, 4),\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST\n });\n if (posData.byteLength > 0) {\n device.queue.writeBuffer(posBuffer, 0, posData);\n }\n const colBuffer = device.createBuffer({\n size: Math.max(colData.byteLength, 4),\n usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST\n });\n if (colData.byteLength > 0) {\n device.queue.writeBuffer(colBuffer, 0, colData);\n }\n const uniformBuffer = device.createBuffer({\n size: 8 * 4,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST\n });\n device.queue.writeBuffer(uniformBuffer, 0, new Float32Array([offsetX, offsetY, scaleX, scaleY, paddedWidth, paddedHeight, borderSize, 0]));\n const bindGroup = device.createBindGroup({\n layout: this.#meshPipeline.getBindGroupLayout(0),\n entries: [{\n binding: 0,\n resource: {\n buffer: uniformBuffer\n }\n }]\n });\n const offscreen = new OffscreenCanvas(paddedWidth, paddedHeight);\n const gpuCtx = offscreen.getContext(\"webgpu\");\n gpuCtx.configure({\n device,\n format: this.#preferredFormat,\n alphaMode: backgroundColor ? \"opaque\" : \"premultiplied\"\n });\n const clearValue = backgroundColor ? {\n r: backgroundColor[0] / 255,\n g: backgroundColor[1] / 255,\n b: backgroundColor[2] / 255,\n a: 1\n } : {\n r: 0,\n g: 0,\n b: 0,\n a: 0\n };\n const commandEncoder = device.createCommandEncoder();\n const renderPass = commandEncoder.beginRenderPass({\n colorAttachments: [{\n view: gpuCtx.getCurrentTexture().createView(),\n clearValue,\n loadOp: \"clear\",\n storeOp: \"store\"\n }]\n });\n if (vertexCount > 0) {\n renderPass.setPipeline(this.#meshPipeline);\n renderPass.setBindGroup(0, bindGroup);\n renderPass.setVertexBuffer(0, posBuffer);\n renderPass.setVertexBuffer(1, colBuffer);\n renderPass.draw(vertexCount);\n }\n renderPass.end();\n device.queue.submit([commandEncoder.finish()]);\n posBuffer.destroy();\n colBuffer.destroy();\n uniformBuffer.destroy();\n return offscreen.transferToImageBitmap();\n }\n}\nconst _webGPU = new WebGPU();\nfunction initGPU() {\n return _webGPU.init();\n}\nfunction isGPUReady() {\n return _webGPU.isReady;\n}\nfunction loadMeshShader() {\n _webGPU.loadMeshShader();\n}\nfunction drawMeshWithGPU(posData, colData, vertexCount, context, backgroundColor, paddedWidth, paddedHeight, borderSize) {\n return _webGPU.draw(posData, colData, vertexCount, context, backgroundColor, paddedWidth, paddedHeight, borderSize);\n}\n\n;// ./src/display/pattern_helper.js\n\n\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 areConic() {\n if (!this.isRadial()) {\n return false;\n }\n const dist = Math.hypot(this._p0[0] - this._p1[0], this._p0[1] - this._p1[1]);\n return dist + this._r1 > this._r0 && dist + this._r0 > this._r1;\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 _createReversedGradient(ctx, transform = null) {\n let firstPoint = this._p1;\n let secondPoint = this._p0;\n if (transform) {\n firstPoint = firstPoint.slice();\n secondPoint = secondPoint.slice();\n Util.applyTransform(firstPoint, transform);\n Util.applyTransform(secondPoint, transform);\n }\n let r0 = this._r1;\n let r1 = this._r0;\n if (transform) {\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(transform, scale);\n r0 *= scale[0];\n r1 *= scale[0];\n }\n const grad = ctx.createRadialGradient(firstPoint[0], firstPoint[1], r0, secondPoint[0], secondPoint[1], r1);\n const reversedStops = this._colorStops.map(([t, c]) => [1 - t, c]).reverse();\n for (const [t, c] of reversedStops) {\n grad.addColorStop(t, c);\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.canvasFactory.create(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 if (this.areConic()) {\n tmpCtx.fillStyle = this._createReversedGradient(tmpCtx);\n tmpCtx.fill();\n }\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n owner.canvasFactory.destroy(tmpCanvas);\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n if (this.areConic()) {\n ctx.save();\n applyBoundingBox(ctx, this._bbox);\n ctx.fillStyle = this._createReversedGradient(ctx);\n ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n ctx.restore();\n }\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 * 2 + 1] > coords[p2 * 2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 * 2 + 1] > coords[p3 * 2 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 * 2 + 1] > coords[p2 * 2 + 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 * 2] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 * 2 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2 * 2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 * 2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3 * 2] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 * 2 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1 * 4],\n c1g = colors[c1 * 4 + 1],\n c1b = colors[c1 * 4 + 2];\n const c2r = colors[c2 * 4],\n c2g = colors[c2 * 4 + 1],\n c2b = colors[c2 * 4 + 2];\n const c3r = colors[c3 * 4],\n c3g = colors[c3 * 4 + 1],\n c3b = colors[c3 * 4 + 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}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._posData = IR[2];\n this._colData = IR[3];\n this._vertexCount = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[6];\n this._background = IR[7];\n this.matrix = null;\n loadMeshShader();\n }\n _createMeshCanvas(combinedScale, backgroundColor, canvasFactory) {\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) || 1;\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE) || 1;\n const scaleX = boundsWidth ? boundsWidth / width : 1;\n const scaleY = boundsHeight ? boundsHeight / height : 1;\n const context = {\n coords: this._posData,\n colors: this._colData,\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 = canvasFactory.create(paddedWidth, paddedHeight);\n if (isGPUReady() && this._vertexCount > 48) {\n tmpCanvas.context.drawImage(drawMeshWithGPU(this._posData, this._colData, this._vertexCount, context, backgroundColor, paddedWidth, paddedHeight, BORDER_SIZE), 0, 0);\n } else {\n const data = tmpCanvas.context.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 (let i = 0, ii = this._vertexCount; i < ii; i += 3) {\n drawTriangle(data, context, i, i + 1, i + 2, i, i + 1, i + 2);\n }\n tmpCanvas.context.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n }\n return {\n canvas: tmpCanvas.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.canvasFactory);\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 const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n owner.canvasFactory.destroy(temporaryPatternCanvas);\n return pattern;\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.needsIsolation = IR[9] ?? true;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n this.patternBaseMatrix = this.matrix ? Util.transform(baseTransform, this.matrix) : baseTransform;\n }\n canSkipPatternCanvas([width, height, offsetX, offsetY]) {\n const [x0, y0, x1, y1] = this.bbox;\n const absXStep = Math.abs(this.xstep);\n const absYStep = Math.abs(this.ystep);\n if (width > absXStep + 1e-6 || height > absYStep + 1e-6) {\n return null;\n }\n const nXFirst = Math.floor((offsetX - x1) / absXStep) + 1;\n const nXLast = Math.ceil((offsetX + width - x0) / absXStep) - 1;\n const nYFirst = Math.floor((offsetY - y1) / absYStep) + 1;\n const nYLast = Math.ceil((offsetY + height - y0) / absYStep) - 1;\n return nXLast <= nXFirst && nYLast <= nYFirst ? [nXFirst, nYFirst] : null;\n }\n updatePatternDims(clippedBBox, dims) {\n const inv = Util.inverseTransform(this.patternBaseMatrix);\n const c1 = [clippedBBox[0], clippedBBox[1]];\n const c2 = [clippedBBox[2], clippedBBox[3]];\n Util.applyTransform(c1, inv);\n Util.applyTransform(c2, inv);\n dims[0] = Math.abs(c2[0] - c1[0]);\n dims[1] = Math.abs(c2[1] - c1[1]);\n dims[2] = Math.min(c1[0], c2[0]);\n dims[3] = Math.min(c1[1], c2[1]);\n }\n _renderTileCanvas(owner, opIdx, dimx, dimy) {\n const [x0, y0, x1, y1] = this.bbox;\n const tmpCanvas = owner.canvasFactory.create(dimx.size, dimy.size);\n const tmpCtx = tmpCanvas.context;\n const graphics = this.canvasGraphicsFactory.createCanvasGraphics(tmpCtx, opIdx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, this.paintType, this.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(this.operatorList);\n graphics.endDrawing();\n graphics.dependencyTracker?.restore();\n tmpCtx.restore();\n return tmpCanvas;\n }\n _getCombinedScales() {\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(this.baseTransform, scale);\n return [matrixScaleX * scale[0], matrixScaleY * scale[1]];\n }\n drawPattern(owner, path, useEOFill = false, [n, m], opIdx) {\n const [x0, y0, x1, y1] = this.bbox;\n const dependencyTracker = owner.dependencyTracker;\n if (dependencyTracker) {\n owner.dependencyTracker = new CanvasNestedDependencyTracker(dependencyTracker, opIdx);\n }\n owner.save();\n if (useEOFill) {\n owner.ctx.clip(path, \"evenodd\");\n } else {\n owner.ctx.clip(path);\n }\n owner.ctx.setTransform(...this.patternBaseMatrix);\n owner.ctx.translate(n * this.xstep, m * this.ystep);\n if (this.needsIsolation || owner.ctx.globalAlpha !== 1 || owner.ctx.globalCompositeOperation !== \"source-over\" || owner.inSMaskMode) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n const [combinedScaleX, combinedScaleY] = this._getCombinedScales();\n const dimx = this.getSizeAndScale(bboxWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy = this.getSizeAndScale(bboxHeight, this.ctx.canvas.height, combinedScaleY);\n const tmpCanvas = this._renderTileCanvas(owner, opIdx, dimx, dimy);\n owner.ctx.drawImage(tmpCanvas.canvas, x0, y0, bboxWidth, bboxHeight);\n owner.canvasFactory.destroy(tmpCanvas);\n } else {\n this.setFillAndStrokeStyleToContext(owner, this.paintType, this.color);\n this.clipBbox(owner, x0, y0, x1, y1);\n owner.baseTransformStack.push(owner.baseTransform);\n owner.baseTransform = getCurrentTransform(owner.ctx);\n owner.executeOperatorList(this.operatorList);\n owner.baseTransform = owner.baseTransformStack.pop();\n }\n owner.restore();\n if (dependencyTracker) {\n owner.dependencyTracker = dependencyTracker;\n }\n }\n createPatternCanvas(owner, opIdx) {\n const [x0, y0, x1, y1] = this.bbox;\n const width = x1 - x0;\n const height = y1 - y0;\n let {\n xstep,\n ystep\n } = this;\n xstep = Math.abs(xstep);\n ystep = Math.abs(ystep);\n info(\"TilingType: \" + this.tilingType);\n const [combinedScaleX, combinedScaleY] = this._getCombinedScales();\n let canvasWidth = width,\n canvasHeight = height,\n redrawHorizontally = false,\n redrawVertically = false;\n if (Math.ceil(xstep * combinedScaleX) >= Math.ceil(width * combinedScaleX)) {\n canvasWidth = xstep;\n } else {\n redrawHorizontally = true;\n }\n if (Math.ceil(ystep * combinedScaleY) >= Math.ceil(height * combinedScaleY)) {\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 = this._renderTileCanvas(owner, opIdx, dimx, dimy);\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.canvasFactory.create(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 owner.canvasFactory.destroy(tmpCanvas);\n return {\n canvas: tmpCanvas2.canvas,\n canvasEntry: tmpCanvas2,\n scaleX: dimx2.scale,\n scaleY: dimy2.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n return {\n canvas: tmpCanvas.canvas,\n canvasEntry: tmpCanvas,\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 const clip = new Path2D();\n clip.rect(x0, y0, bboxWidth, bboxHeight);\n Util.axialAlignedBoundingBox([x0, y0, x1, y1], getCurrentTransform(graphics.ctx), graphics.current.minMax);\n graphics.ctx.clip(clip);\n graphics.current.updateClipFromPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n current.patternFill = current.patternStroke = false;\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 const matrix = pathType !== PathType.SHADING ? Util.transform(inverse, this.patternBaseMatrix) : inverse;\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 owner.canvasFactory.destroy(temporaryPatternCanvas.canvasEntry);\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\n\n;// ./src/shared/image_utils.js\n/* unused harmony import specifier */ var image_utils_ImageKind;\n/* unused harmony import specifier */ var image_utils_FeatureTest;\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case image_utils_ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case image_utils_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 = 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 xorMask = zeroMapping ^ oneMapping;\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, destPos += 8) {\n const elem = src[srcPos];\n dest[destPos] = zeroMapping ^ -(elem >> 7 & 1) & xorMask;\n dest[destPos + 1] = zeroMapping ^ -(elem >> 6 & 1) & xorMask;\n dest[destPos + 2] = zeroMapping ^ -(elem >> 5 & 1) & xorMask;\n dest[destPos + 3] = zeroMapping ^ -(elem >> 4 & 1) & xorMask;\n dest[destPos + 4] = zeroMapping ^ -(elem >> 3 & 1) & xorMask;\n dest[destPos + 5] = zeroMapping ^ -(elem >> 2 & 1) & xorMask;\n dest[destPos + 6] = zeroMapping ^ -(elem >> 1 & 1) & xorMask;\n dest[destPos + 7] = zeroMapping ^ -(elem & 1) & xorMask;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; ++j, ++destPos) {\n dest[destPos] = zeroMapping ^ -(elem >> 7 - j & 1) & xorMask;\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 const alphaMask = image_utils_FeatureTest.isLittleEndian ? 0xff000000 : 0xff;\n if (image_utils_FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i],\n s2 = src32[i + 1],\n s3 = src32[i + 2];\n dest[destPos] = s1 | alphaMask;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | alphaMask;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | alphaMask;\n dest[destPos + 3] = s3 >>> 8 | alphaMask;\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 | alphaMask;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i],\n s2 = src32[i + 1],\n s3 = src32[i + 2];\n dest[destPos] = s1 | alphaMask;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | alphaMask;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | alphaMask;\n dest[destPos + 3] = s3 << 8 | alphaMask;\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 | alphaMask;\n }\n }\n return {\n srcPos: srcPos + len,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (image_utils_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);\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 if (b === undefined) {\n destCtx.setTransform(a);\n this.__originalSetTransform(a);\n } else {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n }\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}\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 tilingPatternDims = null;\n patternFill = false;\n patternStroke = false;\n fillAlpha = 1;\n strokeAlpha = 1;\n lineWidth = 1;\n activeSMask = null;\n transferMaps = \"none\";\n minMax = F32_BBOX_INIT.slice();\n constructor(width, height) {\n this.clipBox = new Float32Array([0, 0, width, height]);\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n clone.minMax = this.minMax.slice();\n clone.tilingPatternDims = this.tilingPatternDims?.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(F32_BBOX_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 === 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 = 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 === 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 === 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, imagesTracker) {\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.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.tempSMask = null;\n this.smaskGroupCanvases = [];\n this.smaskPreparedEntry = null;\n this.smaskPreparedFor = null;\n this.smaskPreparedOffsetX = 0;\n this.smaskPreparedOffsetY = 0;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\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 this.imagesTracker = imagesTracker ?? 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.transparentCanvasEntry = this.canvasFactory.create(width, height);\n this.compositeCtx = this.ctx;\n ({\n canvas: this.transparentCanvas,\n context: this.ctx\n } = transparentCanvas);\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[3];\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) {\n if (i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n if (stepper.shouldSkip(i)) {\n if (++i === argsArrayLen) {\n return i;\n }\n continue;\n }\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.canvasFactory.destroy(this.transparentCanvasEntry);\n this.transparentCanvas = null;\n this.transparentCanvasEntry = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n for (const canvas of this.smaskGroupCanvases) {\n this.canvasFactory.destroy(canvas);\n }\n this.smaskGroupCanvases.length = 0;\n this._clearPreparedSMask();\n this.tempSMask = null;\n this.smaskStack.length = 0;\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 const widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n const heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n const scaleSteps = [];\n let ws = widthScale,\n hs = heightScale,\n pw = width,\n ph = height;\n while (ws > 2 && pw > 1 || hs > 2 && ph > 1) {\n let nw = pw,\n nh = ph;\n if (ws > 2 && pw > 1) {\n nw = Math.ceil(pw / 2);\n ws /= pw / nw;\n }\n if (hs > 2 && ph > 1) {\n nh = Math.ceil(ph / 2);\n hs /= ph / nh;\n }\n scaleSteps.push({\n newWidth: nw,\n newHeight: nh\n });\n pw = nw;\n ph = nh;\n }\n if (scaleSteps.length === 0) {\n return {\n img,\n paintWidth: width,\n paintHeight: height,\n tmpCanvas: null\n };\n }\n if (scaleSteps.length === 1) {\n const {\n newWidth,\n newHeight\n } = scaleSteps[0];\n const tmpCanvas = this.canvasFactory.create(newWidth, newHeight);\n tmpCanvas.context.drawImage(img, 0, 0, width, height, 0, 0, newWidth, newHeight);\n return {\n img: tmpCanvas.canvas,\n paintWidth: newWidth,\n paintHeight: newHeight,\n tmpCanvas\n };\n }\n let readEntry = this.canvasFactory.create(1, 1);\n let writeEntry = this.canvasFactory.create(1, 1);\n let paintWidth = width,\n paintHeight = height;\n let source = img;\n for (const {\n newWidth,\n newHeight\n } of scaleSteps) {\n this.canvasFactory.reset(writeEntry, newWidth, newHeight);\n writeEntry.context.drawImage(source, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n [readEntry, writeEntry] = [writeEntry, readEntry];\n source = readEntry.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n }\n this.canvasFactory.destroy(writeEntry);\n return {\n img: readEntry.canvas,\n paintWidth,\n paintHeight,\n tmpCanvas: readEntry\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.getOrInsertComputed(mainKey, makeMap);\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.canvasFactory.create(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 = F32_BBOX_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.canvasFactory.create(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 let scaledEntry = null;\n if (!scaled) {\n const scaleResult = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n scaled = scaleResult.img;\n scaledEntry = scaleResult.tmpCanvas;\n if (scaled !== maskCanvas.canvas) {\n this.canvasFactory.destroy(maskCanvas);\n maskCanvas = null;\n }\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n scaledEntry = null;\n maskCanvas = null;\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 if (scaledEntry) {\n this.canvasFactory.destroy(scaledEntry);\n }\n if (maskCanvas) {\n this.canvasFactory.destroy(maskCanvas);\n }\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 cache.set(cacheKey, fillCanvas.canvas);\n }\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.transformAndFill);\n return {\n canvas: fillCanvas.canvas,\n canvasEntry: cache && !isPatternFill ? null : fillCanvas,\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 if (this.current.activeSMask) {\n this.current.activeSMask.blendMode = this.ctx.globalCompositeOperation;\n }\n this.tempSMask = null;\n this.checkSMaskState(opIdx);\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 _clearPreparedSMask() {\n if (this.smaskPreparedEntry) {\n this.canvasFactory.destroy(this.smaskPreparedEntry);\n this.smaskPreparedEntry = null;\n }\n this.smaskPreparedFor = null;\n this.smaskPreparedOffsetX = 0;\n this.smaskPreparedOffsetY = 0;\n }\n _ensurePreparedSMask(smask, width, height) {\n if (smask === this.smaskPreparedFor) {\n return;\n }\n this._clearPreparedSMask();\n this._prepareSMaskCanvas(smask, width, height);\n }\n checkSMaskState(opIdx) {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode(opIdx);\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n } else if (this.current.activeSMask && inSMaskMode) {\n this._ensurePreparedSMask(this.current.activeSMask, this.ctx.canvas.width, this.ctx.canvas.height);\n }\n }\n _prepareSMaskCanvas(smask, width, height) {\n const {\n canvas: maskCanvas,\n subtype,\n backdrop,\n transferMap\n } = smask;\n const hasFilter = subtype === \"Luminosity\" || subtype === \"Alpha\" && transferMap;\n if (!backdrop && !hasFilter) {\n this.smaskPreparedFor = smask;\n return;\n }\n let preparedEntry, offsetX, offsetY;\n if (backdrop && hasFilter) {\n const srcEntry = this.canvasFactory.create(width, height);\n const sCtx = srcEntry.context;\n sCtx.drawImage(maskCanvas, smask.offsetX, smask.offsetY);\n sCtx.globalCompositeOperation = \"destination-atop\";\n sCtx.fillStyle = backdrop;\n sCtx.fillRect(0, 0, width, height);\n sCtx.globalCompositeOperation = \"source-over\";\n preparedEntry = this.canvasFactory.create(width, height);\n const pCtx = preparedEntry.context;\n pCtx.filter = subtype === \"Alpha\" ? this.filterFactory.addAlphaFilter(transferMap) : this.filterFactory.addLuminosityFilter(transferMap);\n pCtx.drawImage(srcEntry.canvas, 0, 0);\n pCtx.filter = \"none\";\n this.canvasFactory.destroy(srcEntry);\n offsetX = offsetY = 0;\n } else if (hasFilter) {\n preparedEntry = this.canvasFactory.create(maskCanvas.width, maskCanvas.height);\n const pCtx = preparedEntry.context;\n pCtx.filter = subtype === \"Alpha\" ? this.filterFactory.addAlphaFilter(transferMap) : this.filterFactory.addLuminosityFilter(transferMap);\n pCtx.drawImage(maskCanvas, 0, 0);\n pCtx.filter = \"none\";\n ({\n offsetX,\n offsetY\n } = smask);\n } else {\n preparedEntry = this.canvasFactory.create(width, height);\n const pCtx = preparedEntry.context;\n pCtx.drawImage(maskCanvas, smask.offsetX, smask.offsetY);\n pCtx.globalCompositeOperation = \"destination-atop\";\n pCtx.fillStyle = backdrop;\n pCtx.fillRect(0, 0, width, height);\n pCtx.globalCompositeOperation = \"source-over\";\n offsetX = offsetY = 0;\n }\n this.smaskPreparedEntry = preparedEntry;\n this.smaskPreparedFor = smask;\n this.smaskPreparedOffsetX = offsetX;\n this.smaskPreparedOffsetY = offsetY;\n }\n beginSMaskMode(opIdx) {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const {\n width: drawnWidth,\n height: drawnHeight\n } = this.ctx.canvas;\n const scratchCanvas = this.canvasFactory.create(drawnWidth, drawnHeight);\n this.smaskScratchCanvas = scratchCanvas;\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._ensurePreparedSMask(this.current.activeSMask, drawnWidth, drawnHeight);\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 this.canvasFactory.destroy(this.smaskScratchCanvas);\n this.smaskScratchCanvas = null;\n this._clearPreparedSMask();\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(dirtyBox[0], dirtyBox[1], dirtyBox[2] - dirtyBox[0], dirtyBox[3] - dirtyBox[1]);\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 const preparedEntry = this.smaskPreparedEntry;\n if (preparedEntry) {\n const srcX = layerOffsetX - this.smaskPreparedOffsetX;\n const srcY = layerOffsetY - this.smaskPreparedOffsetY;\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip = new Path2D();\n clip.rect(layerOffsetX, layerOffsetY, layerWidth, layerHeight);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(preparedEntry.canvas, srcX, srcY, layerWidth, layerHeight, layerOffsetX, layerOffsetY, layerWidth, layerHeight);\n layerCtx.restore();\n } else {\n this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n }\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = smask.blendMode || \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, layerOffsetX, layerOffsetY, layerWidth, layerHeight, layerOffsetX, layerOffsetY, layerWidth, layerHeight);\n ctx.restore();\n }\n genericComposeSMask(maskCtx, layerCtx, width, height, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n const maskCanvas = maskCtx.canvas;\n const maskX = layerOffsetX - maskOffsetX;\n const maskY = layerOffsetY - maskOffsetY;\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\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 this.ctx.setTransform(this.suspendedCtx.getTransform());\n }\n this.checkSMaskState(opIdx);\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 if (op !== OPS.stroke && op !== OPS.closeStroke) {\n this.current.tilingPatternDims = null;\n }\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 const tilingDims = this.current.tilingPatternDims;\n if (tilingDims && op !== OPS.stroke && op !== OPS.closeStroke && this.current.fillColor instanceof TilingPattern) {\n const clippedBBox = Util.intersect(this.current.clipBox, this.current.minMax);\n if (!clippedBBox) {\n this.current.tilingPatternDims = null;\n } else {\n this.current.fillColor.updatePatternDims(clippedBBox, tilingDims);\n }\n }\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 const intersect = this.current.getClippedPathBoundingBox();\n this.dependencyTracker?.recordDependencies(opIdx, Dependencies.fill);\n if (isPatternFill) {\n const dims = this.current.tilingPatternDims;\n const tileIdx = dims && fillColor.canSkipPatternCanvas(dims);\n if (tileIdx) {\n fillColor.drawPattern(this, path, this.pendingEOFill, tileIdx, opIdx);\n this.pendingEOFill = false;\n if (consumePath) {\n this.consumePath(opIdx, path, intersect);\n }\n this.current.tilingPatternDims = null;\n return;\n }\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 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 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 tmpCanvas = this.canvasFactory.create(10, 10);\n const ctx = tmpCanvas.context;\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n this.canvasFactory.destroy(tmpCanvas);\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 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 (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 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 const pattern = this.current.fillColor = this.getColorN_Pattern(opIdx, args);\n this.current.patternFill = true;\n this.current.tilingPatternDims = pattern instanceof TilingPattern ? [0, 0, 0, 0] : null;\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 this.current.tilingPatternDims = null;\n }\n setFillTransparent(opIdx) {\n this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n this.current.tilingPatternDims = null;\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 = F32_BBOX_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 const {\n inSMaskMode\n } = this;\n if (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 if (!group.needsIsolation && currentCtx.globalAlpha === 1 && currentCtx.globalCompositeOperation === \"source-over\" && !inSMaskMode) {\n if (group.bbox) {\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 currentCtx.clip(clip);\n }\n this.groupStack.push(null);\n this.groupLevel++;\n return;\n }\n const currentTransform = getCurrentTransform(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n let bounds;\n if (group.bbox) {\n bounds = F32_BBOX_INIT.slice();\n Util.axialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx), bounds);\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n } else {\n bounds = canvasBounds;\n }\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 const scratchCanvas = this.canvasFactory.create(drawnWidth, drawnHeight);\n if (group.smask) {\n this.smaskGroupCanvases.push(scratchCanvas);\n }\n const groupCtx = scratchCanvas.context;\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n if (!group.isolated && !group.smask && inSMaskMode && group.needsIsolation) {\n groupCtx.save();\n groupCtx.setTransform(1, 0, 0, 1, 0, 0);\n groupCtx.drawImage(currentCtx.canvas, -offsetX, -offsetY);\n groupCtx.restore();\n }\n if (group.bbox) {\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 }\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 });\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], [\"TR\", null]]);\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 if (ctx === null) {\n this.restore(opIdx);\n return;\n }\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 if (this.inSMaskMode) {\n this.ctx.setTransform(this.suspendedCtx.getTransform());\n }\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 = F32_BBOX_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.canvasFactory.destroy({\n canvas: groupCtx.canvas,\n context: groupCtx\n });\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.baseTransformStack.push(this.baseTransform);\n this.transform(opIdx, ...transform);\n this.transform(opIdx, ...matrix);\n this.baseTransform = getCurrentTransform(this.ctx);\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 this.baseTransform = this.baseTransformStack.pop();\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 if (mask.canvasEntry) {\n this.canvasFactory.destroy(mask.canvasEntry);\n }\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 if (mask.canvasEntry) {\n this.canvasFactory.destroy(mask.canvasEntry);\n }\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.canvasFactory.create(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.canvasFactory.destroy(maskCanvas);\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 {\n img: imgData.bitmap,\n canvasEntry: null\n };\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.canvasFactory.create(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 {\n img: tmpCanvas.canvas,\n canvasEntry: tmpCanvas\n };\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 let inlineImgCanvas = null;\n if (imgData.bitmap) {\n const result = this.applyTransferMapsToBitmap(imgData);\n imgToPaint = result.img;\n inlineImgCanvas = result.canvasEntry;\n } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.canvasFactory.create(width, height);\n putBinaryImageData(tmpCanvas.context, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCanvas.context);\n inlineImgCanvas = tmpCanvas;\n }\n const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n if (this.dependencyTracker) {\n this.dependencyTracker.resetBBox(opIdx).recordBBox(opIdx, ctx, 0, width, -height, 0).recordDependencies(opIdx, Dependencies.imageXObject).recordOperation(opIdx);\n this.imagesTracker?.record(ctx, width, height, this.dependencyTracker.clipBox);\n }\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n if (scaled.tmpCanvas) {\n this.canvasFactory.destroy(scaled.tmpCanvas);\n }\n if (inlineImgCanvas) {\n this.canvasFactory.destroy(inlineImgCanvas);\n }\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 let inlineImgCanvas = null;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.canvasFactory.create(w, h);\n putBinaryImageData(tmpCanvas.context, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCanvas.context);\n inlineImgCanvas = tmpCanvas;\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 if (inlineImgCanvas) {\n this.canvasFactory.destroy(inlineImgCanvas);\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/shared/base_pdf_stream.js\n\nclass BasePDFStream {\n #PDFStreamReader = null;\n #PDFStreamRangeReader = null;\n _fullReader = null;\n _rangeReaders = new Set();\n _source = null;\n constructor(source, PDFStreamReader, PDFStreamRangeReader) {\n this._source = source;\n this.#PDFStreamReader = PDFStreamReader;\n this.#PDFStreamRangeReader = PDFStreamRangeReader;\n }\n get _progressiveDataLength() {\n return this._fullReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullReader, \"BasePDFStream.getFullReader can only be called once.\");\n return this._fullReader = new this.#PDFStreamReader(this);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new this.#PDFStreamRangeReader(this, begin, end);\n this._rangeReaders.add(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullReader?.cancel(reason);\n for (const reader of new Set(this._rangeReaders)) {\n reader.cancel(reason);\n }\n }\n}\nclass BasePDFStreamReader {\n onProgress = null;\n _contentLength = 0;\n _filename = null;\n _headersCapability = Promise.withResolvers();\n _isRangeSupported = false;\n _isStreamingSupported = false;\n _loaded = 0;\n _stream = null;\n constructor(stream) {\n this._stream = stream;\n }\n _callOnProgress() {\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\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 unreachable(\"Abstract method `read` called\");\n }\n cancel(reason) {\n unreachable(\"Abstract method `cancel` called\");\n }\n}\nclass BasePDFStreamRangeReader {\n _stream = null;\n constructor(stream, begin, end) {\n this._stream = stream;\n }\n async read() {\n unreachable(\"Abstract method `read` called\");\n }\n cancel(reason) {\n unreachable(\"Abstract method `cancel` called\");\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 rv = {\n contentLength: 0,\n isRangeSupported: false\n };\n const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return rv;\n }\n rv.contentLength = length;\n if (length <= 2 * rangeChunkSize) {\n return rv;\n }\n if (disableRange || !isHttp) {\n return rv;\n }\n if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n return rv;\n }\n const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n if (contentEncoding === \"identity\") {\n rv.isRangeSupported = true;\n }\n return rv;\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.href}\".`, status, status === 404 || status === 0 && url.protocol === \"file:\");\n}\nfunction ensureResponseOrigin(rangeOrigin, origin) {\n if (rangeOrigin !== origin) {\n throw new Error(`Expected range response-origin \"${rangeOrigin}\" to match \"${origin}\".`);\n }\n}\n\n;// ./src/display/fetch_stream.js\n\n\n\nfunction fetchUrl(url, headers, withCredentials, abortController) {\n return fetch(url, {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n });\n}\nfunction ensureResponseStatus(status, url) {\n if (status !== 200 && status !== 206) {\n throw createResponseError(status, url);\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 throw new Error(`getArrayBuffer - unexpected data: ${val}`);\n}\nclass PDFFetchStream extends BasePDFStream {\n _responseOrigin = null;\n constructor(source) {\n super(source, PDFFetchStreamReader, PDFFetchStreamRangeReader);\n const {\n httpHeaders,\n url\n } = source;\n assert(/https?:/.test(url.protocol), \"PDFFetchStream only supports http(s):// URLs.\");\n this.headers = createHeaders(true, httpHeaders);\n }\n}\nclass PDFFetchStreamReader extends BasePDFStreamReader {\n _abortController = new AbortController();\n _reader = null;\n constructor(stream) {\n super(stream);\n const {\n disableRange,\n disableStream,\n rangeChunkSize,\n url,\n withCredentials\n } = stream._source;\n this._isStreamingSupported = !disableStream;\n const headers = new Headers(stream.headers);\n fetchUrl(url, headers, withCredentials, this._abortController).then(response => {\n stream._responseOrigin = getResponseOrigin(response.url);\n ensureResponseStatus(response.status, url);\n this._reader = response.body.getReader();\n const responseHeaders = response.headers;\n const {\n contentLength,\n isRangeSupported\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: true,\n rangeChunkSize,\n disableRange\n });\n this._contentLength = contentLength;\n this._isRangeSupported = isRangeSupported;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n this._headersCapability.resolve();\n }).catch(this._headersCapability.reject);\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._callOnProgress();\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 extends BasePDFStreamRangeReader {\n _abortController = new AbortController();\n _readCapability = Promise.withResolvers();\n _reader = null;\n constructor(stream, begin, end) {\n super(stream, begin, end);\n const {\n url,\n withCredentials\n } = stream._source;\n const headers = new Headers(stream.headers);\n headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n fetchUrl(url, headers, withCredentials, this._abortController).then(response => {\n const responseOrigin = getResponseOrigin(response.url);\n ensureResponseOrigin(responseOrigin, stream._responseOrigin);\n ensureResponseStatus(response.status, url);\n this._reader = response.body.getReader();\n this._readCapability.resolve();\n }).catch(this._readCapability.reject);\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 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/transport_stream.js\n\n\n\nfunction transport_stream_getArrayBuffer(val) {\n return val instanceof Uint8Array && val.byteLength === val.buffer.byteLength ? val.buffer : new Uint8Array(val).buffer;\n}\nfunction endRequests() {\n for (const capability of this._requests) {\n capability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n}\nclass PDFDataTransportStream extends BasePDFStream {\n _progressiveDone = false;\n _queuedChunks = [];\n constructor(source) {\n super(source, PDFDataTransportStreamReader, PDFDataTransportStreamRangeReader);\n const {\n pdfDataRangeTransport\n } = source;\n const {\n initialData,\n progressiveDone\n } = pdfDataRangeTransport;\n if (initialData?.length > 0) {\n const buffer = transport_stream_getArrayBuffer(initialData);\n this._queuedChunks.push(buffer);\n }\n this._progressiveDone = progressiveDone;\n const listener = args => {\n switch (args.type) {\n case \"range\":\n case \"progressiveRead\":\n this.#onReceiveData(args.begin, args.chunk);\n break;\n case \"progressiveDone\":\n this._fullReader?.progressiveDone();\n this._progressiveDone = true;\n break;\n }\n };\n pdfDataRangeTransport.transportReady(listener);\n }\n #onReceiveData(begin, chunk) {\n const buffer = transport_stream_getArrayBuffer(chunk);\n if (begin === undefined) {\n if (this._fullReader) {\n this._fullReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const rangeReader = this._rangeReaders.keys().find(r => r._begin === begin);\n assert(rangeReader, \"#onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n rangeReader._enqueue(buffer);\n }\n }\n getFullReader() {\n const reader = super.getFullReader();\n this._queuedChunks = null;\n return reader;\n }\n getRangeReader(begin, end) {\n const reader = super.getRangeReader(begin, end);\n if (reader) {\n reader.onDone = () => this._rangeReaders.delete(reader);\n this._source.pdfDataRangeTransport.requestDataRange(begin, end);\n }\n return reader;\n }\n cancelAllRequests(reason) {\n super.cancelAllRequests(reason);\n this._source.pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader extends BasePDFStreamReader {\n #endRequests = endRequests.bind(this);\n _done = false;\n _queuedChunks = null;\n _requests = [];\n constructor(stream) {\n super(stream);\n const {\n pdfDataRangeTransport,\n disableRange,\n disableStream\n } = stream._source;\n const {\n length,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = stream._queuedChunks || [];\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._done = stream._progressiveDone;\n this._contentLength = length;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n if (isPdfFile(contentDispositionFilename)) {\n this._filename = contentDispositionFilename;\n }\n this._headersCapability.resolve();\n const loaded = this._loaded;\n Promise.resolve().then(() => {\n if (loaded > 0 && this._loaded === loaded) {\n this._callOnProgress();\n }\n });\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const capability = this._requests.shift();\n capability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n this._callOnProgress();\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 capability = Promise.withResolvers();\n this._requests.push(capability);\n return capability.promise;\n }\n cancel(reason) {\n this._done = true;\n this.#endRequests();\n }\n progressiveDone() {\n this._done ||= true;\n if (this._queuedChunks.length === 0) {\n this.#endRequests();\n }\n }\n}\nclass PDFDataTransportStreamRangeReader extends BasePDFStreamRangeReader {\n #endRequests = endRequests.bind(this);\n onDone = null;\n _begin = -1;\n _done = false;\n _queuedChunk = null;\n _requests = [];\n constructor(stream, begin, end) {\n super(stream, begin, end);\n this._begin = begin;\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 capability = this._requests.shift();\n capability.resolve({\n value: chunk,\n done: false\n });\n this.#endRequests();\n }\n this._done = true;\n this.onDone?.();\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 capability = Promise.withResolvers();\n this._requests.push(capability);\n return capability.promise;\n }\n cancel(reason) {\n this._done = true;\n this.#endRequests();\n this.onDone?.();\n }\n}\n\n;// ./src/display/network.js\n\n\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(val) {\n return typeof val !== \"string\" ? val : stringToBytes(val).buffer;\n}\nclass PDFNetworkStream extends BasePDFStream {\n #pendingRequests = new WeakMap();\n _responseOrigin = null;\n constructor(source) {\n super(source, PDFNetworkStreamReader, PDFNetworkStreamRangeReader);\n const {\n httpHeaders,\n url\n } = source;\n this.url = url;\n this.isHttp = /https?:/.test(url.protocol);\n this.headers = createHeaders(this.isHttp, httpHeaders);\n }\n _request(args) {\n const xhr = new XMLHttpRequest();\n const pendingRequest = {\n validateStatus: null,\n onHeadersReceived: args.onHeadersReceived,\n onDone: args.onDone,\n onError: args.onError,\n onProgress: args.onProgress\n };\n this.#pendingRequests.set(xhr, pendingRequest);\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this._source.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.validateStatus = status => status === PARTIAL_CONTENT_RESPONSE || status === OK_RESPONSE;\n } else {\n pendingRequest.validateStatus = status => status === OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n assert(args.onError, \"Expected `onError` callback to be provided.\");\n xhr.onerror = () => args.onError(xhr.status);\n xhr.onreadystatechange = this.#onStateChange.bind(this, xhr);\n xhr.onprogress = this.#onProgress.bind(this, xhr);\n xhr.send(null);\n return xhr;\n }\n #onProgress(xhr, evt) {\n const pendingRequest = this.#pendingRequests.get(xhr);\n pendingRequest?.onProgress?.(evt);\n }\n #onStateChange(xhr, evt) {\n const pendingRequest = this.#pendingRequests.get(xhr);\n if (!pendingRequest) {\n return;\n }\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 (!this.#pendingRequests.has(xhr)) {\n return;\n }\n this.#pendingRequests.delete(xhr);\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n if (!pendingRequest.validateStatus(xhrStatus)) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const chunk = network_getArrayBuffer(xhr.response);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n if (/bytes (\\d+)-(\\d+)\\/(\\d+)/.test(rangeHeader)) {\n pendingRequest.onDone(chunk);\n } else {\n warn(`Missing or invalid \"Content-Range\" header.`);\n pendingRequest.onError(0);\n }\n } else if (chunk) {\n pendingRequest.onDone(chunk);\n } else {\n pendingRequest.onError(xhr.status);\n }\n }\n _abortRequest(xhr) {\n if (this.#pendingRequests.has(xhr)) {\n this.#pendingRequests.delete(xhr);\n xhr.abort();\n }\n }\n getRangeReader(begin, end) {\n const reader = super.getRangeReader(begin, end);\n if (reader) {\n reader.onClosed = () => this._rangeReaders.delete(reader);\n }\n return reader;\n }\n}\nclass PDFNetworkStreamReader extends BasePDFStreamReader {\n #endRequests = endRequests.bind(this);\n _cachedChunks = [];\n _done = false;\n _requests = [];\n _storedError = null;\n constructor(stream) {\n super(stream);\n this._fullRequestXhr = stream._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 }\n #onHeadersReceived() {\n const stream = this._stream;\n const {\n disableRange,\n rangeChunkSize\n } = stream._source;\n const fullRequestXhr = this._fullRequestXhr;\n stream._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 contentLength,\n isRangeSupported\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize,\n disableRange\n });\n this._contentLength = contentLength;\n this._isRangeSupported = isRangeSupported;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (this._isRangeSupported) {\n stream._abortRequest(fullRequestXhr);\n }\n this._headersCapability.resolve();\n }\n #onDone(chunk) {\n if (this._requests.length > 0) {\n const capability = this._requests.shift();\n capability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(chunk);\n }\n this._done = true;\n if (this._cachedChunks.length === 0) {\n this.#endRequests();\n }\n }\n #onError(status) {\n this._storedError = createResponseError(status, this._stream.url);\n this._headersCapability.reject(this._storedError);\n for (const capability of this._requests) {\n capability.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 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 capability = Promise.withResolvers();\n this._requests.push(capability);\n return capability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersCapability.reject(reason);\n this.#endRequests();\n this._stream._abortRequest(this._fullRequestXhr);\n this._fullRequestXhr = null;\n }\n}\nclass PDFNetworkStreamRangeReader extends BasePDFStreamRangeReader {\n #endRequests = endRequests.bind(this);\n onClosed = null;\n _done = false;\n _queuedChunk = null;\n _requests = [];\n _storedError = null;\n constructor(stream, begin, end) {\n super(stream, begin, end);\n this._requestXhr = stream._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: null\n });\n }\n #onHeadersReceived() {\n const responseOrigin = getResponseOrigin(this._requestXhr?.responseURL);\n try {\n ensureResponseOrigin(responseOrigin, this._stream._responseOrigin);\n } catch (ex) {\n this._storedError = ex;\n this.#onError(0);\n }\n }\n #onDone(chunk) {\n if (this._requests.length > 0) {\n const capability = this._requests.shift();\n capability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n this.#endRequests();\n this.onClosed?.();\n }\n #onError(status) {\n this._storedError ??= createResponseError(status, this._stream.url);\n for (const capability of this._requests) {\n capability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\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 capability = Promise.withResolvers();\n this._requests.push(capability);\n return capability.promise;\n }\n cancel(reason) {\n this._done = true;\n this.#endRequests();\n this._stream._abortRequest(this._requestXhr);\n this.onClosed?.();\n }\n}\n\n;// ./src/display/node_stream.js\n\n\n\n\nfunction getReadableStream(url, opts = null) {\n const fs = process.getBuiltinModule(\"fs\");\n const {\n Readable\n } = process.getBuiltinModule(\"stream\");\n const readStream = fs.createReadStream(url, opts);\n return Readable.toWeb(readStream);\n}\nclass PDFNodeStream extends BasePDFStream {\n constructor(source) {\n super(source, PDFNodeStreamReader, PDFNodeStreamRangeReader);\n const {\n url\n } = source;\n assert(url.protocol === \"file:\", \"PDFNodeStream only supports file:// URLs.\");\n }\n}\nclass PDFNodeStreamReader extends BasePDFStreamReader {\n _reader = null;\n constructor(stream) {\n super(stream);\n const {\n disableRange,\n disableStream,\n rangeChunkSize,\n url\n } = stream._source;\n this._isStreamingSupported = !disableStream;\n const fs = process.getBuiltinModule(\"fs/promises\");\n fs.lstat(url).then(stat => {\n const readableStream = getReadableStream(url);\n this._reader = readableStream.getReader();\n const {\n size\n } = stat;\n this._contentLength = size;\n this._isRangeSupported = !disableRange && size > 2 * rangeChunkSize;\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n this._headersCapability.resolve();\n }).catch(error => {\n if (error.code === \"ENOENT\") {\n error = createResponseError(0, url);\n }\n this._headersCapability.reject(error);\n });\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._callOnProgress();\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n }\n}\nclass PDFNodeStreamRangeReader extends BasePDFStreamRangeReader {\n _readCapability = Promise.withResolvers();\n _reader = null;\n constructor(stream, begin, end) {\n super(stream, begin, end);\n const {\n url\n } = stream._source;\n try {\n const readableStream = getReadableStream(url, {\n start: begin,\n end: end - 1\n });\n this._reader = readableStream.getReader();\n this._readCapability.resolve();\n } catch (error) {\n this._readCapability.reject(error);\n }\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 return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n }\n}\n\n;// ./src/display/network_stream.js\n\n\n\n\n\nfunction getNetworkStream(url) {\n return isValidFetchUrl(url) ? PDFFetchStream : isNodeJS ? PDFNodeStream : PDFNetworkStream;\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/pages_mapper.js\n\n\nclass PagesMapper {\n #pageNumberToId = null;\n #prevPageNumbers = null;\n #pagesNumber = 0;\n #clipboard = null;\n #savedData = null;\n get pagesNumber() {\n return this.#pagesNumber;\n }\n set pagesNumber(n) {\n if (this.#pagesNumber === n) {\n return;\n }\n this.#pagesNumber = n;\n this.#pageNumberToId = null;\n this.#prevPageNumbers = null;\n }\n #ensureInit() {\n if (this.#pageNumberToId) {\n return;\n }\n const n = this.#pagesNumber;\n const pageNumberToId = this.#pageNumberToId = new Uint32Array(n);\n for (let i = 0; i < n; i++) {\n pageNumberToId[i] = i + 1;\n }\n this.#prevPageNumbers = new Int32Array(pageNumberToId);\n }\n #buildIdToPageNumber() {\n const idToPageNumber = new Map();\n const pageNumberToId = this.#pageNumberToId;\n for (let i = 0, ii = this.#pagesNumber; i < ii; i++) {\n const id = pageNumberToId[i];\n const pageNumbers = idToPageNumber.get(id);\n if (pageNumbers) {\n pageNumbers.push(i + 1);\n } else {\n idToPageNumber.set(id, [i + 1]);\n }\n }\n return idToPageNumber;\n }\n movePages(selectedPages, pagesToMove, index) {\n this.#ensureInit();\n const pageNumberToId = this.#pageNumberToId;\n const prevIdToPageNumber = this.#buildIdToPageNumber();\n const movedCount = pagesToMove.length;\n const mappedPagesToMove = new Uint32Array(movedCount);\n let removedBeforeTarget = 0;\n for (let i = 0; i < movedCount; i++) {\n const pageIndex = pagesToMove[i] - 1;\n mappedPagesToMove[i] = pageNumberToId[pageIndex];\n if (pageIndex < index) {\n removedBeforeTarget++;\n }\n }\n const pagesNumber = this.#pagesNumber;\n const remainingLen = pagesNumber - movedCount;\n const adjustedTarget = MathClamp(index - removedBeforeTarget, 0, remainingLen);\n for (let i = 0, r = 0; i < pagesNumber; i++) {\n if (!selectedPages.has(i + 1)) {\n pageNumberToId[r++] = pageNumberToId[i];\n }\n }\n pageNumberToId.copyWithin(adjustedTarget + movedCount, adjustedTarget, remainingLen);\n pageNumberToId.set(mappedPagesToMove, adjustedTarget);\n this.#updatePrevPageNumbers(prevIdToPageNumber);\n if (pageNumberToId.every((id, i) => id === i + 1)) {\n this.#pageNumberToId = null;\n }\n }\n deletePages(pagesToDelete) {\n this.#ensureInit();\n const pageNumberToId = this.#pageNumberToId;\n const prevIdToPageNumber = this.#buildIdToPageNumber();\n this.#savedData = {\n pageNumberToId: pageNumberToId.slice(),\n pagesNumber: this.#pagesNumber,\n prevPageNumbers: this.#prevPageNumbers.slice()\n };\n const newN = this.#pagesNumber - pagesToDelete.length;\n this.#pagesNumber = newN;\n const newPageNumberToId = this.#pageNumberToId = new Uint32Array(newN);\n this.#prevPageNumbers = new Int32Array(newN);\n let sourceIndex = 0;\n let destIndex = 0;\n for (const pageNumber of pagesToDelete) {\n const pageIndex = pageNumber - 1;\n if (pageIndex !== sourceIndex) {\n newPageNumberToId.set(pageNumberToId.subarray(sourceIndex, pageIndex), destIndex);\n destIndex += pageIndex - sourceIndex;\n }\n sourceIndex = pageIndex + 1;\n }\n if (sourceIndex < pageNumberToId.length) {\n newPageNumberToId.set(pageNumberToId.subarray(sourceIndex), destIndex);\n }\n this.#updatePrevPageNumbers(prevIdToPageNumber, new Set(pagesToDelete));\n }\n cancelDelete() {\n if (this.#savedData) {\n this.#pageNumberToId = this.#savedData.pageNumberToId;\n this.#pagesNumber = this.#savedData.pagesNumber;\n this.#prevPageNumbers = this.#savedData.prevPageNumbers;\n this.#savedData = null;\n }\n }\n cleanSavedData() {\n this.#savedData = null;\n }\n copyPages(pagesToCopy) {\n this.#ensureInit();\n this.#clipboard = {\n pageNumbers: pagesToCopy,\n pageIds: pagesToCopy.map(n => this.#pageNumberToId[n - 1])\n };\n }\n cancelCopy() {\n this.#clipboard = null;\n }\n pastePages(index) {\n this.#ensureInit();\n const pageNumberToId = this.#pageNumberToId;\n const prevIdToPageNumber = this.#buildIdToPageNumber();\n const {\n pageNumbers: copiedPageNumbers,\n pageIds: copiedPageIds\n } = this.#clipboard;\n const newN = this.#pagesNumber + copiedPageNumbers.length;\n this.#pagesNumber = newN;\n const newPageNumberToId = this.#pageNumberToId = new Uint32Array(newN);\n this.#prevPageNumbers = new Int32Array(newN);\n newPageNumberToId.set(pageNumberToId.subarray(0, index), 0);\n newPageNumberToId.set(copiedPageIds, index);\n newPageNumberToId.set(pageNumberToId.subarray(index), index + copiedPageNumbers.length);\n this.#updatePrevPageNumbers(prevIdToPageNumber, null, index, copiedPageNumbers);\n this.#clipboard = null;\n }\n #updatePrevPageNumbers(prevIdToPageNumber, deletedPageNumbers = null, pasteIndex = -1, copiedPageNumbers = null) {\n const prevPageNumbers = this.#prevPageNumbers;\n const newPageNumberToId = this.#pageNumberToId;\n const pasteEnd = pasteIndex + (copiedPageNumbers?.length ?? 0);\n const idsIndices = new Map();\n for (let i = 0, ii = this.#pagesNumber; i < ii; i++) {\n if (i >= pasteIndex && i < pasteEnd) {\n prevPageNumbers[i] = -copiedPageNumbers[i - pasteIndex];\n continue;\n }\n const id = newPageNumberToId[i];\n const oldPositions = prevIdToPageNumber.get(id);\n let j = idsIndices.get(id) || 0;\n if (deletedPageNumbers && oldPositions) {\n while (j < oldPositions.length && deletedPageNumbers.has(oldPositions[j])) {\n j++;\n }\n }\n prevPageNumbers[i] = oldPositions?.[j];\n idsIndices.set(id, j + 1);\n }\n }\n hasBeenAltered() {\n return this.#pageNumberToId !== null;\n }\n getPageMappingForSaving(idToPageNumber = null) {\n idToPageNumber ??= this.#buildIdToPageNumber();\n let nCopy = 0;\n for (const pageNumbers of idToPageNumber.values()) {\n nCopy = Math.max(nCopy, pageNumbers.length);\n }\n const extractParams = new Array(nCopy);\n for (let i = 0; i < nCopy; i++) {\n extractParams[i] = {\n document: null,\n pageIndices: [],\n includePages: []\n };\n }\n for (const [id, pageNumbers] of idToPageNumber) {\n for (let i = 0, ii = pageNumbers.length; i < ii; i++) {\n extractParams[i].includePages.push([id - 1, pageNumbers[i] - 1]);\n }\n }\n for (const {\n includePages,\n pageIndices\n } of extractParams) {\n includePages.sort((a, b) => a[0] - b[0]);\n for (let i = 0, ii = includePages.length; i < ii; i++) {\n pageIndices.push(includePages[i][1]);\n includePages[i] = includePages[i][0];\n }\n }\n return extractParams;\n }\n extractPages(extractedPageNumbers) {\n extractedPageNumbers = Array.from(extractedPageNumbers).sort((a, b) => a - b);\n const usedIds = new Map();\n for (let i = 0, ii = extractedPageNumbers.length; i < ii; i++) {\n const id = this.getPageId(extractedPageNumbers[i]);\n const usedPageNumbers = usedIds.getOrInsertComputed(id, makeArr);\n usedPageNumbers.push(i + 1);\n }\n return this.getPageMappingForSaving(usedIds);\n }\n getPrevPageNumber(pageNumber) {\n return this.#prevPageNumbers?.[pageNumber - 1] ?? 0;\n }\n getPageNumber(id) {\n if (!this.#pageNumberToId) {\n return id;\n }\n const pageNumberToId = this.#pageNumberToId;\n for (let i = 0, ii = this.#pagesNumber; i < ii; i++) {\n if (pageNumberToId[i] === id) {\n return i + 1;\n }\n }\n return 0;\n }\n getPageId(pageNumber) {\n return this.#pageNumberToId?.[pageNumber - 1] ?? pageNumber;\n }\n getMapping() {\n return this.#pageNumberToId?.subarray(0, this.pagesNumber);\n }\n}\n\n;// ./src/display/pdf_objects.js\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nconst dataObj = () => ({\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n});\nclass PDFObjects {\n #objs = new Map();\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#objs.getOrInsertComputed(objId, dataObj);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs.get(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.get(objId);\n return !!obj && obj.data !== INITIAL_DATA;\n }\n delete(objId) {\n const obj = this.#objs.get(objId);\n if (!obj || obj.data === INITIAL_DATA) {\n return false;\n }\n this.#objs.delete(objId);\n return true;\n }\n resolve(objId, data = null) {\n const obj = this.#objs.getOrInsertComputed(objId, dataObj);\n if (obj.data !== INITIAL_DATA) {\n throw new Error(`Object already resolved ${objId}.`);\n }\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const {\n data\n } of this.#objs.values()) {\n data?.bitmap?.close();\n }\n this.#objs.clear();\n }\n *[Symbol.iterator]() {\n for (const [objId, {\n data\n }] of this.#objs) {\n if (data !== INITIAL_DATA) {\n yield [objId, data];\n }\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 #imagesHandler = null;\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 images,\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.#imagesHandler = images;\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 } = 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 if (this.#imagesHandler) {\n this.#container.append(this.#imagesHandler.render());\n }\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 if (item.tag === \"Artifact\") {\n this.#container.ariaHidden = true;\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 (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\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 iccUrl = getFactoryUrlProp(src.iccUrl);\n const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);\n const wasmUrl = getFactoryUrlProp(src.wasmUrl);\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n const isImageDecoderSupported = typeof src.isImageDecoderSupported === \"boolean\" ? src.isImageDecoderSupported : !isNodeJS && (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 BinaryDataFactory = src.BinaryDataFactory || (isNodeJS ? NodeBinaryDataFactory : DOMBinaryDataFactory);\n const enableHWA = src.enableHWA === true;\n const enableWebGPU = src.enableWebGPU === true;\n const gpuPromise = enableWebGPU ? initGPU() : Promise.resolve(false);\n const useWasm = src.useWasm !== false;\n const pagesMapper = src.pagesMapper || new PagesMapper();\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : !!(BinaryDataFactory === DOMBinaryDataFactory && cMapUrl && cMapPacked && 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 binaryDataFactory: useWorkerFetch ? null : new BinaryDataFactory({\n cMapUrl,\n standardFontDataUrl,\n 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.7.284\",\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isOffscreenCanvasSupported,\n isImageDecoderSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n useWasm,\n useWorkerFetch,\n cMapUrl,\n cMapPacked,\n iccUrl,\n standardFontDataUrl,\n wasmUrl,\n hasGPU: false\n }\n };\n const transportParams = {\n ownerDocument,\n pdfBug,\n styleElement,\n enableHWA,\n loadingParams: {\n disableAutoFetch,\n enableXfa\n }\n };\n Promise.all([worker.promise, gpuPromise]).then(function ([, hasGPU]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n docParams.evaluatorOptions.hasGPU = hasGPU;\n const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n let networkStream;\n if (data) {} else if (rangeTransport) {\n networkStream = new PDFDataTransportStream({\n pdfDataRangeTransport: rangeTransport,\n disableRange,\n disableStream\n });\n } else if (url) {\n const NetworkStream = getNetworkStream(url);\n networkStream = new NetworkStream({\n url,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n } else {\n throw new Error(\"getDocument - expected either `data`, `range`, or `url` parameter.\");\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, pagesMapper);\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 #listener = null;\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 Object.defineProperty(this, \"onDataProgress\", {\n value: () => {\n deprecated(\"`PDFDataRangeTransport.prototype.onDataProgress` - method was \" + \"removed, since loading progress is now reported automatically \" + \"through the `PDFDataTransportStream` class (and related code).\");\n }\n });\n }\n onDataRange(begin, chunk) {\n this.#listener({\n type: \"range\",\n begin,\n chunk\n });\n }\n onDataProgressiveRead(chunk) {\n this.#capability.promise.then(() => {\n this.#listener({\n type: \"progressiveRead\",\n chunk\n });\n });\n }\n onDataProgressiveDone() {\n this.#capability.promise.then(() => {\n this.#listener({\n type: \"progressiveDone\"\n });\n });\n }\n transportReady(listener) {\n this.#listener = listener;\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 pagesMapper() {\n return this._transport.pagesMapper;\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 getRawData(data) {\n return this._transport.getRawData(data);\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 #pagesMapper = null;\n constructor(pageIndex, pageInfo, transport, pagesMapper, 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 this.#pagesMapper = pagesMapper;\n this.imageCoordinates = null;\n }\n clone(id) {\n const clone = new PDFPageProxy(id, this._pageInfo, this._transport, this.#pagesMapper, this._pdfBug);\n clone.clonedFromIndex = this.clonedFromIndex ?? this._pageIndex;\n this._transport.updatePage(clone);\n return clone;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n set pageNumber(value) {\n this._pageIndex = value - 1;\n this._transport.updatePage(this);\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 recordImages = 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 const intentState = this._intentStates.getOrInsertComputed(cacheKey, makeObj);\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 = !!(this._pdfBug && globalThis.StepperManager?.enabled);\n const shouldRecordOperations = !!canvas && !this.recordedBBoxes && (recordOperations || recordForDebugger);\n const shouldRecordImages = !!canvas && !this.imageCoordinates && recordImages;\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (shouldRecordOperations) {\n const recordedBBoxes = internalRenderTask.gfx?.dependencyTracker.take();\n if (recordedBBoxes) {\n internalRenderTask.stepper?.setOperatorBBoxes(recordedBBoxes, internalRenderTask.gfx.dependencyTracker.takeDebugMetadata());\n if (recordOperations) {\n this.recordedBBoxes = recordedBBoxes;\n }\n }\n }\n if (shouldRecordImages && !error) {\n this.imageCoordinates = internalRenderTask.gfx?.imagesTracker.take();\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 let dependencyTracker = null;\n let bboxTracker = null;\n if (shouldRecordOperations || shouldRecordImages) {\n bboxTracker = new CanvasBBoxTracker(canvas, intentState.operatorList.length);\n }\n if (shouldRecordOperations) {\n dependencyTracker = new CanvasDependencyTracker(bboxTracker, recordForDebugger);\n }\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvas,\n canvasContext,\n dependencyTracker: dependencyTracker ?? bboxTracker,\n imagesTracker: shouldRecordImages ? new CanvasImagesTracker(canvas) : 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 const intentState = this._intentStates.getOrInsertComputed(intentArgs.cacheKey, makeObj);\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 pageId: this.#pagesMapper.getPageId(this._pageIndex + 1) - 1,\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 async getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang: null\n };\n for await (const value of readableStream) {\n textContent.lang ??= value.lang;\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n }\n return textContent;\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 pageId: this.#pagesMapper.getPageId(this._pageIndex + 1) - 1,\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n modifiedIds\n }, undefined, 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 }\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 downloadInfoCapability = Promise.withResolvers();\n #fullReader = null;\n #methodPromises = new Map();\n #networkStream = null;\n #pageCache = new Map();\n #pagePromises = new Map();\n #pageRefCache = new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory, pagesMapper) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.#networkStream = networkStream;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this.enableHWA = params.enableHWA;\n this.loadingParams = params.loadingParams;\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.binaryDataFactory = factory.binaryDataFactory;\n this.pagesMapper = pagesMapper;\n this.destroyed = false;\n this.destroyCapability = null;\n this.setupMessageHandler();\n }\n updatePage(page) {\n const {\n _pageIndex\n } = page;\n this.#pageCache.set(_pageIndex, page);\n this.#pagePromises.set(_pageIndex, Promise.resolve(page));\n }\n #cacheSimpleMethod(name, data = null) {\n return this.#methodPromises.getOrInsertComputed(name, () => this.messageHandler.sendWithPromise(name, data));\n }\n #onProgress({\n loaded,\n total\n }) {\n this.loadingTask.onProgress?.({\n loaded,\n total,\n percent: total ? MathClamp(Math.round(loaded / total * 100), 0, 100) : NaN\n });\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 (Object.hasOwn(this, \"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 `BasePDFStream` instance available.\");\n this.#fullReader = this.#networkStream.getFullReader();\n this.#fullReader.onProgress = evt => this.#onProgress(evt);\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 this.#fullReader.onProgress = null;\n }\n return {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n };\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this.#networkStream, \"GetRangeReader - no `BasePDFStream` 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.pagesMapper.pagesNumber = pdfInfo.numPages;\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 this.#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.charProcOperatorList, exportedData.extra);\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!font.fontExtraProperties) {\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 const copy = structuredClone(data);\n this.commonObjs.resolve(id, copy);\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 this.#onProgress(data);\n });\n messageHandler.on(\"FetchBinaryData\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n if (!this.binaryDataFactory) {\n throw new Error(\"`BinaryDataFactory` not initialized, see the `useWorkerFetch` parameter.\");\n }\n return this.binaryDataFactory.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 const params = {\n pageInfos\n };\n let transfer;\n if (this.annotationStorage.size > 0) {\n const {\n map,\n transfer: t\n } = this.annotationStorage.serializable;\n params.annotationStorage = map;\n transfer = t;\n }\n return this.messageHandler.sendWithPromise(\"ExtractPages\", params, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this.pagesMapper.pagesNumber) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1;\n const newPageIndex = this.pagesMapper.getPageId(pageNumber) - 1;\n const cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex: newPageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n if (pageInfo.refStr) {\n this.#pageRefCache.set(pageInfo.refStr, newPageIndex);\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this.pagesMapper, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n async getPageIndex(ref) {\n if (!isRefProxy(ref)) {\n throw new Error(\"Invalid pageIndex request.\");\n }\n const index = await this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n const pageNumber = this.pagesMapper.getPageNumber(index + 1);\n if (pageNumber === 0) {\n throw new Error(\"GetPageIndex: page has been removed.\");\n }\n return pageNumber - 1;\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex: this.pagesMapper.getPageId(pageIndex + 1) - 1,\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: this.pagesMapper.getPageId(pageIndex + 1) - 1\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex: this.pagesMapper.getPageId(pageIndex + 1) - 1\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 return this.#methodPromises.getOrInsertComputed(name, () => 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 }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n getRawData(data) {\n return this.messageHandler.sendWithPromise(\"GetRawData\", data);\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 const pageIndex = this.#pageRefCache.get(refStr);\n if (pageIndex >= 0) {\n const pageNumber = this.pagesMapper.getPageNumber(pageIndex + 1);\n if (pageNumber !== 0) {\n return pageNumber;\n }\n }\n return 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 get imageCoordinates() {\n return this._internalRenderTask.imageCoordinates || null;\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._imagesTracker = params.imagesTracker;\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 imagesTracker\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, imagesTracker);\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.7.284\";\nconst build = \"7e5b36c2d\";\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 #hasAlpha = false;\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 colorAndOpacityType,\n opacityType,\n color,\n opacity\n } = this.#editor;\n const hasAlpha = this.#hasAlpha = FeatureTest.isAlphaColorInputSupported && opacityType !== undefined;\n const input = this.#input = document.createElement(\"input\");\n input.type = \"color\";\n if (hasAlpha) {\n input.setAttribute(\"alpha\", \"\");\n const alphaHex = Util.hexNums[Math.round((opacity ?? 1) * 255)];\n input.value = (color || \"#000000\") + alphaHex;\n } else {\n input.value = color || \"#000000\";\n }\n input.className = \"basicColorPicker\";\n input.tabIndex = 0;\n input.setAttribute(\"data-l10n-id\", BasicColorPicker.#l10nColor[editorType]);\n input.addEventListener(\"input\", () => {\n if (hasAlpha) {\n const rgba = getRGBA(input.value);\n if (!rgba) {\n return;\n }\n const [r, g, b, op] = rgba;\n const hex = Util.makeHexColor(r, g, b);\n if (colorAndOpacityType !== undefined) {\n this.#uiManager.updateParams(colorAndOpacityType, {\n color: hex,\n opacity: op\n });\n } else {\n this.#uiManager.updateParams(colorType, hex);\n this.#uiManager.updateParams(opacityType, op);\n }\n } else {\n this.#uiManager.updateParams(colorType, input.value);\n }\n }, {\n signal: this.#uiManager._signal\n });\n return input;\n }\n update(value) {\n if (!this.#input) {\n return;\n }\n if (this.#hasAlpha) {\n const alphaHex = Util.hexNums[Math.round(this.#editor.opacity * 255)];\n this.#input.value = value + alphaHex;\n } else {\n this.#input.value = value;\n }\n }\n updateOpacity(value) {\n if (!this.#input || !this.#hasAlpha) {\n return;\n }\n const alphaHex = Util.hexNums[Math.round(value * 255)];\n this.#input.value = this.#editor.color + alphaHex;\n }\n destroy() {\n this.#input?.remove();\n this.#input = null;\n }\n hideDropdown() {}\n}\n\n;// ./src/shared/scripting_utils.js\n\nfunction makeColorComp(n) {\n return Math.floor(MathClamp(n, 0, 1) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return MathClamp(x, 0, 1) * 255;\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 page: this.parent.page,\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);\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 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);\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);\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 const fixDisplayValue = (option, value) => {\n const newValue = value.replaceAll(\" \", \"\\u00A0\");\n option.textContent = newValue;\n if (newValue !== value) {\n option.setAttribute(\"display-value\", value);\n }\n };\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n fixDisplayValue(optionElement, 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.getAttribute(\"display-value\") || 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 fixDisplayValue(optionElement, 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 fixDisplayValue(optionElement, 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 = parseInt(parentContainer.style.zIndex, 10) + 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, 10) + 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, 10) - 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 } = 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 zIndex = 0;\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._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 popupToElements.getOrInsertComputed(data.popupRef, makeArr).push(element);\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 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.set(BBOX_INIT, 0);\n Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6), bezierBbox);\n Util.rectBoundingBox(...bezierBbox, 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 = BBOX_INIT.slice();\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 outlines,\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 || outlines) {\n editor.#isFreeHighlight = true;\n const points = (inkLists || outlines.points)[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 onUpdatedOpacity() {\n this._colorPicker?.updateOpacity?.(this.opacity);\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 } else if (type === this.opacityType) {\n this.onUpdatedOpacity();\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 _updateColorAndOpacity(color, opacity) {\n const colorName = this.constructor.typesMap.get(this.colorType);\n const opacityName = this.constructor.typesMap.get(this.opacityType);\n const options = this._drawingOptions;\n const savedColor = options[colorName];\n const savedOpacity = options[opacityName];\n const setter = (c, op) => {\n options.updateProperty(colorName, c);\n options.updateProperty(opacityName, op);\n this.#drawOutlines.updateProperty(colorName, c);\n this.#drawOutlines.updateProperty(opacityName, op);\n this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n this.onUpdatedColor();\n this.onUpdatedOpacity();\n };\n this.addCommands({\n cmd: setter.bind(this, color, opacity),\n undo: setter.bind(this, savedColor, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_COLOR_AND_OPACITY,\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\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 = F32_BBOX_INIT.slice();\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 colorAndOpacityType() {\n return AnnotationEditorParamsType.INK_COLOR_AND_OPACITY;\n }\n get opacityType() {\n return AnnotationEditorParamsType.INK_OPACITY;\n }\n updateParams(type, value) {\n if (type === AnnotationEditorParamsType.INK_COLOR_AND_OPACITY) {\n this._updateColorAndOpacity(value.color, value.opacity);\n return;\n }\n super.updateParams(type, value);\n }\n static updateDefaultParams(type, value) {\n if (type === AnnotationEditorParamsType.INK_COLOR_AND_OPACITY) {\n super.updateDefaultParams(AnnotationEditorParamsType.INK_COLOR, value.color);\n super.updateDefaultParams(AnnotationEditorParamsType.INK_OPACITY, value.opacity);\n return;\n }\n super.updateDefaultParams(type, value);\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 bytes = await new Response(cs.readable).bytes();\n return bytes.toBase64();\n }\n static async decompressSignature(signatureData) {\n try {\n const bytes = Uint8Array.fromBase64(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 = Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = 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 stopEvent(e);\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 for (const editable of annotationLayer.getEditableAnnotations()) {\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\") || target.classList.contains(\"textLayerImagePlaceholder\")) && this.#textLayer.div.contains(target)) {\n const {\n isMac\n } = 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 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.#uiManager.getId();\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.#uiManager.getId();\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 } = 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.POPUP || 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 } = 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 async 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 await this.#uiManager.findClonesForPage(this);\n this.div.hidden = this.isEmpty;\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 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_${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_${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_${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/display/text_layer_images.js\n\nfunction percentage(value) {\n return `${(value * 100).toFixed(2)}%`;\n}\nclass TextLayerImages {\n #coordinates = [];\n #coordinatesByElement = new Map();\n #getPageCanvas = null;\n #minSize = 0;\n #pageWidth = 0;\n #pageHeight = 0;\n static #activeImage = null;\n constructor(minSize, coordinates, viewport, getPageCanvas) {\n this.#minSize = minSize;\n this.#coordinates = coordinates;\n this.#pageWidth = viewport.rawDims.pageWidth;\n this.#pageHeight = viewport.rawDims.pageHeight;\n this.#getPageCanvas = getPageCanvas;\n }\n render() {\n const container = document.createElement(\"div\");\n container.className = \"textLayerImages\";\n for (let i = 0; i < this.#coordinates.length; i += 6) {\n const el = this.#createImagePlaceholder(this.#coordinates.subarray(i, i + 6));\n if (el) {\n container.append(el);\n }\n }\n container.addEventListener(\"contextmenu\", event => {\n if (!(event.target instanceof HTMLCanvasElement)) {\n return;\n }\n const imgElement = event.target;\n const coords = this.#coordinatesByElement.get(imgElement);\n if (!coords) {\n return;\n }\n const activeImage = TextLayerImages.#activeImage?.deref();\n if (activeImage === imgElement) {\n return;\n }\n if (activeImage) {\n activeImage.width = 0;\n activeImage.height = 0;\n }\n TextLayerImages.#activeImage = new WeakRef(imgElement);\n const {\n inverseTransform,\n x1,\n y1,\n width,\n height\n } = coords;\n const pageCanvas = this.#getPageCanvas();\n const imageX1 = Math.ceil(x1 * pageCanvas.width);\n const imageY1 = Math.ceil(y1 * pageCanvas.height);\n const imageX2 = Math.floor((x1 + width / this.#pageWidth) * pageCanvas.width);\n const imageY2 = Math.floor((y1 + height / this.#pageHeight) * pageCanvas.height);\n imgElement.width = imageX2 - imageX1;\n imgElement.height = imageY2 - imageY1;\n const ctx = imgElement.getContext(\"2d\");\n ctx.setTransform(...inverseTransform);\n ctx.translate(-imageX1, -imageY1);\n ctx.drawImage(pageCanvas, 0, 0);\n });\n return container;\n }\n #createImagePlaceholder([x1, y1, x2, y2, x3, y3]) {\n const width = Math.hypot((x3 - x1) * this.#pageWidth, (y3 - y1) * this.#pageHeight);\n const height = Math.hypot((x2 - x1) * this.#pageWidth, (y2 - y1) * this.#pageHeight);\n if (width < this.#minSize || height < this.#minSize) {\n return null;\n }\n const transform = [(x3 - x1) * this.#pageWidth / width, (y3 - y1) * this.#pageHeight / width, (x2 - x1) * this.#pageWidth / height, (y2 - y1) * this.#pageHeight / height, 0, 0];\n const inverseTransform = Util.inverseTransform(transform);\n const imgElement = document.createElement(\"canvas\");\n imgElement.className = \"textLayerImagePlaceholder\";\n imgElement.width = 0;\n imgElement.height = 0;\n Object.assign(imgElement.style, {\n opacity: 0,\n position: \"absolute\",\n left: percentage(x1),\n top: percentage(y1),\n width: percentage(width / this.#pageWidth),\n height: percentage(height / this.#pageHeight),\n transformOrigin: \"0% 0%\",\n transform: `matrix(${transform.join(\",\")})`\n });\n this.#coordinatesByElement.set(imgElement, {\n inverseTransform,\n width,\n height,\n x1,\n y1\n });\n return imgElement;\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\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: FeatureTest,\n fetchData: fetchData,\n findContrastColor: findContrastColor,\n getDocument: getDocument,\n getFilenameFromUrl: getFilenameFromUrl,\n getPdfFilenameFromUrl: getPdfFilenameFromUrl,\n getRGB: getRGB,\n getRGBA: getRGBA,\n getUuid: getUuid,\n getXfaPageViewport: getXfaPageViewport,\n GlobalWorkerOptions: GlobalWorkerOptions,\n ImageKind: ImageKind,\n InvalidPDFException: InvalidPDFException,\n isDataScheme: isDataScheme,\n isPdfFile: isPdfFile,\n isValidExplicitDest: isValidExplicitDest,\n makeArr: makeArr,\n makeMap: makeMap,\n makeObj: makeObj,\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 TextLayerImages: TextLayerImages,\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, FeatureTest, GlobalWorkerOptions, ImageKind, InvalidPDFException, MathClamp, OPS, OutputScale, PDFDataRangeTransport, PDFDateString, PDFWorker, PasswordResponses, PermissionFlag, PixelsPerInch, RenderingCancelledException, ResponseException, SignatureExtractor, SupportedImageMimeTypes, TextLayer, TextLayerImages, TouchManager, Util, VerbosityLevel, XfaLayer, applyOpacity, build, createValidAbsoluteUrl, fetchData, findContrastColor, getDocument, getFilenameFromUrl, getPdfFilenameFromUrl, getRGB, getRGBA, getUuid, getXfaPageViewport, isDataScheme, isPdfFile, isValidExplicitDest, makeArr, makeMap, makeObj, noContextMenu, normalizeUnicode, renderRichText, setLayerDimensions, shadow, stopEvent, updateUrlHash, version };\n\n//# sourceMappingURL=pdf.mjs.map"],"x_google_ignoreList":[0],"mappings":"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"}
|