{"version":3,"file":"js-respond/2025.04.02.6/pdfjs.0ef3a64658f1032ee7fb.js","mappings":"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","sources":["webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/Page/AnnotationLayer.css","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/Page/TextLayer.css","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/Page/AnnotationLayer.css?00b4","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/Page/TextLayer.css?fd30","webpack://pc-frontend-respond/./node_modules/pdfjs-dist/build/pdf.mjs","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/LinkService.js","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/PasswordResponses.js","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/Document.js","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/DocumentContext.js","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/Message.js","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/PageContext.js","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/shared/constants.js","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/shared/structTreeUtils.js","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/StructTreeItem.js","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/shared/hooks/usePageContext.js","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/StructTree.js","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/Page/Canvas.js","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/Page/TextLayer.js","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/shared/hooks/useDocumentContext.js","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/Page/AnnotationLayer.js","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/Page.js","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/shared/hooks/useResolver.js","webpack://pc-frontend-respond/./node_modules/react-pdf/dist/esm/shared/utils.js"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n:root {\n --react-pdf-annotation-layer: 1;\n --annotation-unfocused-field-background: url(\"data:image/svg+xml;charset=UTF-8,\");\n --input-focus-border-color: Highlight;\n --input-focus-outline: 1px solid Canvas;\n --input-unfocused-border-color: transparent;\n --input-disabled-border-color: transparent;\n --input-hover-border-color: black;\n --link-outline: none;\n}\n\n@media screen and (forced-colors: active) {\n :root {\n --input-focus-border-color: CanvasText;\n --input-unfocused-border-color: ActiveText;\n --input-disabled-border-color: GrayText;\n --input-hover-border-color: Highlight;\n --link-outline: 1.5px solid LinkText;\n }\n .annotationLayer .textWidgetAnnotation :is(input, textarea):required,\n .annotationLayer .choiceWidgetAnnotation select:required,\n .annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input:required {\n outline: 1.5px solid selectedItem;\n }\n\n .annotationLayer .linkAnnotation:hover {\n backdrop-filter: invert(100%);\n }\n}\n\n.annotationLayer {\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n transform-origin: 0 0;\n z-index: 3;\n}\n\n.annotationLayer[data-main-rotation='90'] .norotate {\n transform: rotate(270deg) translateX(-100%);\n}\n.annotationLayer[data-main-rotation='180'] .norotate {\n transform: rotate(180deg) translate(-100%, -100%);\n}\n.annotationLayer[data-main-rotation='270'] .norotate {\n transform: rotate(90deg) translateY(-100%);\n}\n\n.annotationLayer canvas {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n\n.annotationLayer section {\n position: absolute;\n text-align: initial;\n pointer-events: auto;\n box-sizing: border-box;\n margin: 0;\n transform-origin: 0 0;\n}\n\n.annotationLayer .linkAnnotation {\n outline: var(--link-outline);\n}\n\n.textLayer.selecting ~ .annotationLayer section {\n pointer-events: none;\n}\n\n.annotationLayer :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton) > a {\n position: absolute;\n font-size: 1em;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.annotationLayer :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton) > a:hover {\n opacity: 0.2;\n background: rgba(255, 255, 0, 1);\n box-shadow: 0 2px 10px rgba(255, 255, 0, 1);\n}\n\n.annotationLayer .textAnnotation img {\n position: absolute;\n cursor: pointer;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n}\n\n.annotationLayer .textWidgetAnnotation :is(input, textarea),\n.annotationLayer .choiceWidgetAnnotation select,\n.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input {\n background-image: var(--annotation-unfocused-field-background);\n border: 2px solid var(--input-unfocused-border-color);\n box-sizing: border-box;\n font: calc(9px * var(--scale-factor)) sans-serif;\n height: 100%;\n margin: 0;\n vertical-align: top;\n width: 100%;\n}\n\n.annotationLayer .textWidgetAnnotation :is(input, textarea):required,\n.annotationLayer .choiceWidgetAnnotation select:required,\n.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input:required {\n outline: 1.5px solid red;\n}\n\n.annotationLayer .choiceWidgetAnnotation select option {\n padding: 0;\n}\n\n.annotationLayer .buttonWidgetAnnotation.radioButton input {\n border-radius: 50%;\n}\n\n.annotationLayer .textWidgetAnnotation textarea {\n resize: none;\n}\n\n.annotationLayer .textWidgetAnnotation :is(input, textarea)[disabled],\n.annotationLayer .choiceWidgetAnnotation select[disabled],\n.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input[disabled] {\n background: none;\n border: 2px solid var(--input-disabled-border-color);\n cursor: not-allowed;\n}\n\n.annotationLayer .textWidgetAnnotation :is(input, textarea):hover,\n.annotationLayer .choiceWidgetAnnotation select:hover,\n.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input:hover {\n border: 2px solid var(--input-hover-border-color);\n}\n.annotationLayer .textWidgetAnnotation :is(input, textarea):hover,\n.annotationLayer .choiceWidgetAnnotation select:hover,\n.annotationLayer .buttonWidgetAnnotation.checkBox input:hover {\n border-radius: 2px;\n}\n\n.annotationLayer .textWidgetAnnotation :is(input, textarea):focus,\n.annotationLayer .choiceWidgetAnnotation select:focus {\n background: none;\n border: 2px solid var(--input-focus-border-color);\n border-radius: 2px;\n outline: var(--input-focus-outline);\n}\n\n.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) :focus {\n background-image: none;\n background-color: transparent;\n}\n\n.annotationLayer .buttonWidgetAnnotation.checkBox :focus {\n border: 2px solid var(--input-focus-border-color);\n border-radius: 2px;\n outline: var(--input-focus-outline);\n}\n\n.annotationLayer .buttonWidgetAnnotation.radioButton :focus {\n border: 2px solid var(--input-focus-border-color);\n outline: var(--input-focus-outline);\n}\n\n.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before,\n.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after,\n.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before {\n background-color: CanvasText;\n content: '';\n display: block;\n position: absolute;\n}\n\n.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before,\n.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after {\n height: 80%;\n left: 45%;\n width: 1px;\n}\n\n.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before {\n transform: rotate(45deg);\n}\n\n.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after {\n transform: rotate(-45deg);\n}\n\n.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before {\n border-radius: 50%;\n height: 50%;\n left: 30%;\n top: 20%;\n width: 50%;\n}\n\n.annotationLayer .textWidgetAnnotation input.comb {\n font-family: monospace;\n padding-left: 2px;\n padding-right: 0;\n}\n\n.annotationLayer .textWidgetAnnotation input.comb:focus {\n /*\n * Letter spacing is placed on the right side of each character. Hence, the\n * letter spacing of the last character may be placed outside the visible\n * area, causing horizontal scrolling. We avoid this by extending the width\n * when the element has focus and revert this when it loses focus.\n */\n width: 103%;\n}\n\n.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input {\n appearance: none;\n}\n\n.annotationLayer .popupTriggerArea {\n height: 100%;\n width: 100%;\n}\n\n.annotationLayer .fileAttachmentAnnotation .popupTriggerArea {\n position: absolute;\n}\n\n.annotationLayer .popupWrapper {\n position: absolute;\n font-size: calc(9px * var(--scale-factor));\n width: 100%;\n min-width: calc(180px * var(--scale-factor));\n pointer-events: none;\n}\n\n.annotationLayer .popup {\n position: absolute;\n max-width: calc(180px * var(--scale-factor));\n background-color: rgba(255, 255, 153, 1);\n box-shadow: 0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor))\n rgba(136, 136, 136, 1);\n border-radius: calc(2px * var(--scale-factor));\n padding: calc(6px * var(--scale-factor));\n margin-left: calc(5px * var(--scale-factor));\n cursor: pointer;\n font: message-box;\n white-space: normal;\n word-wrap: break-word;\n pointer-events: auto;\n}\n\n.annotationLayer .popup > * {\n font-size: calc(9px * var(--scale-factor));\n}\n\n.annotationLayer .popup h1 {\n display: inline-block;\n}\n\n.annotationLayer .popupDate {\n display: inline-block;\n margin-left: calc(5px * var(--scale-factor));\n}\n\n.annotationLayer .popupContent {\n border-top: 1px solid rgba(51, 51, 51, 1);\n margin-top: calc(2px * var(--scale-factor));\n padding-top: calc(2px * var(--scale-factor));\n}\n\n.annotationLayer .richText > * {\n white-space: pre-wrap;\n font-size: calc(9px * var(--scale-factor));\n}\n\n.annotationLayer .highlightAnnotation,\n.annotationLayer .underlineAnnotation,\n.annotationLayer .squigglyAnnotation,\n.annotationLayer .strikeoutAnnotation,\n.annotationLayer .freeTextAnnotation,\n.annotationLayer .lineAnnotation svg line,\n.annotationLayer .squareAnnotation svg rect,\n.annotationLayer .circleAnnotation svg ellipse,\n.annotationLayer .polylineAnnotation svg polyline,\n.annotationLayer .polygonAnnotation svg polygon,\n.annotationLayer .caretAnnotation,\n.annotationLayer .inkAnnotation svg polyline,\n.annotationLayer .stampAnnotation,\n.annotationLayer .fileAttachmentAnnotation {\n cursor: pointer;\n}\n\n.annotationLayer section svg {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n}\n\n.annotationLayer .annotationTextContent {\n position: absolute;\n width: 100%;\n height: 100%;\n opacity: 0;\n color: transparent;\n user-select: none;\n pointer-events: none;\n}\n\n.annotationLayer .annotationTextContent span {\n width: 100%;\n display: inline-block;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/react-pdf/dist/esm/Page/AnnotationLayer.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"/* Copyright 2014 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\n:root {\\n --react-pdf-annotation-layer: 1;\\n --annotation-unfocused-field-background: url(\\\"data:image/svg+xml;charset=UTF-8,\\\");\\n --input-focus-border-color: Highlight;\\n --input-focus-outline: 1px solid Canvas;\\n --input-unfocused-border-color: transparent;\\n --input-disabled-border-color: transparent;\\n --input-hover-border-color: black;\\n --link-outline: none;\\n}\\n\\n@media screen and (forced-colors: active) {\\n :root {\\n --input-focus-border-color: CanvasText;\\n --input-unfocused-border-color: ActiveText;\\n --input-disabled-border-color: GrayText;\\n --input-hover-border-color: Highlight;\\n --link-outline: 1.5px solid LinkText;\\n }\\n .annotationLayer .textWidgetAnnotation :is(input, textarea):required,\\n .annotationLayer .choiceWidgetAnnotation select:required,\\n .annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input:required {\\n outline: 1.5px solid selectedItem;\\n }\\n\\n .annotationLayer .linkAnnotation:hover {\\n backdrop-filter: invert(100%);\\n }\\n}\\n\\n.annotationLayer {\\n position: absolute;\\n top: 0;\\n left: 0;\\n pointer-events: none;\\n transform-origin: 0 0;\\n z-index: 3;\\n}\\n\\n.annotationLayer[data-main-rotation='90'] .norotate {\\n transform: rotate(270deg) translateX(-100%);\\n}\\n.annotationLayer[data-main-rotation='180'] .norotate {\\n transform: rotate(180deg) translate(-100%, -100%);\\n}\\n.annotationLayer[data-main-rotation='270'] .norotate {\\n transform: rotate(90deg) translateY(-100%);\\n}\\n\\n.annotationLayer canvas {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n}\\n\\n.annotationLayer section {\\n position: absolute;\\n text-align: initial;\\n pointer-events: auto;\\n box-sizing: border-box;\\n margin: 0;\\n transform-origin: 0 0;\\n}\\n\\n.annotationLayer .linkAnnotation {\\n outline: var(--link-outline);\\n}\\n\\n.textLayer.selecting ~ .annotationLayer section {\\n pointer-events: none;\\n}\\n\\n.annotationLayer :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton) > a {\\n position: absolute;\\n font-size: 1em;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n}\\n\\n.annotationLayer :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton) > a:hover {\\n opacity: 0.2;\\n background: rgba(255, 255, 0, 1);\\n box-shadow: 0 2px 10px rgba(255, 255, 0, 1);\\n}\\n\\n.annotationLayer .textAnnotation img {\\n position: absolute;\\n cursor: pointer;\\n width: 100%;\\n height: 100%;\\n top: 0;\\n left: 0;\\n}\\n\\n.annotationLayer .textWidgetAnnotation :is(input, textarea),\\n.annotationLayer .choiceWidgetAnnotation select,\\n.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input {\\n background-image: var(--annotation-unfocused-field-background);\\n border: 2px solid var(--input-unfocused-border-color);\\n box-sizing: border-box;\\n font: calc(9px * var(--scale-factor)) sans-serif;\\n height: 100%;\\n margin: 0;\\n vertical-align: top;\\n width: 100%;\\n}\\n\\n.annotationLayer .textWidgetAnnotation :is(input, textarea):required,\\n.annotationLayer .choiceWidgetAnnotation select:required,\\n.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input:required {\\n outline: 1.5px solid red;\\n}\\n\\n.annotationLayer .choiceWidgetAnnotation select option {\\n padding: 0;\\n}\\n\\n.annotationLayer .buttonWidgetAnnotation.radioButton input {\\n border-radius: 50%;\\n}\\n\\n.annotationLayer .textWidgetAnnotation textarea {\\n resize: none;\\n}\\n\\n.annotationLayer .textWidgetAnnotation :is(input, textarea)[disabled],\\n.annotationLayer .choiceWidgetAnnotation select[disabled],\\n.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input[disabled] {\\n background: none;\\n border: 2px solid var(--input-disabled-border-color);\\n cursor: not-allowed;\\n}\\n\\n.annotationLayer .textWidgetAnnotation :is(input, textarea):hover,\\n.annotationLayer .choiceWidgetAnnotation select:hover,\\n.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input:hover {\\n border: 2px solid var(--input-hover-border-color);\\n}\\n.annotationLayer .textWidgetAnnotation :is(input, textarea):hover,\\n.annotationLayer .choiceWidgetAnnotation select:hover,\\n.annotationLayer .buttonWidgetAnnotation.checkBox input:hover {\\n border-radius: 2px;\\n}\\n\\n.annotationLayer .textWidgetAnnotation :is(input, textarea):focus,\\n.annotationLayer .choiceWidgetAnnotation select:focus {\\n background: none;\\n border: 2px solid var(--input-focus-border-color);\\n border-radius: 2px;\\n outline: var(--input-focus-outline);\\n}\\n\\n.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) :focus {\\n background-image: none;\\n background-color: transparent;\\n}\\n\\n.annotationLayer .buttonWidgetAnnotation.checkBox :focus {\\n border: 2px solid var(--input-focus-border-color);\\n border-radius: 2px;\\n outline: var(--input-focus-outline);\\n}\\n\\n.annotationLayer .buttonWidgetAnnotation.radioButton :focus {\\n border: 2px solid var(--input-focus-border-color);\\n outline: var(--input-focus-outline);\\n}\\n\\n.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before,\\n.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after,\\n.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before {\\n background-color: CanvasText;\\n content: '';\\n display: block;\\n position: absolute;\\n}\\n\\n.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before,\\n.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after {\\n height: 80%;\\n left: 45%;\\n width: 1px;\\n}\\n\\n.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before {\\n transform: rotate(45deg);\\n}\\n\\n.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after {\\n transform: rotate(-45deg);\\n}\\n\\n.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before {\\n border-radius: 50%;\\n height: 50%;\\n left: 30%;\\n top: 20%;\\n width: 50%;\\n}\\n\\n.annotationLayer .textWidgetAnnotation input.comb {\\n font-family: monospace;\\n padding-left: 2px;\\n padding-right: 0;\\n}\\n\\n.annotationLayer .textWidgetAnnotation input.comb:focus {\\n /*\\n * Letter spacing is placed on the right side of each character. Hence, the\\n * letter spacing of the last character may be placed outside the visible\\n * area, causing horizontal scrolling. We avoid this by extending the width\\n * when the element has focus and revert this when it loses focus.\\n */\\n width: 103%;\\n}\\n\\n.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input {\\n appearance: none;\\n}\\n\\n.annotationLayer .popupTriggerArea {\\n height: 100%;\\n width: 100%;\\n}\\n\\n.annotationLayer .fileAttachmentAnnotation .popupTriggerArea {\\n position: absolute;\\n}\\n\\n.annotationLayer .popupWrapper {\\n position: absolute;\\n font-size: calc(9px * var(--scale-factor));\\n width: 100%;\\n min-width: calc(180px * var(--scale-factor));\\n pointer-events: none;\\n}\\n\\n.annotationLayer .popup {\\n position: absolute;\\n max-width: calc(180px * var(--scale-factor));\\n background-color: rgba(255, 255, 153, 1);\\n box-shadow: 0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor))\\n rgba(136, 136, 136, 1);\\n border-radius: calc(2px * var(--scale-factor));\\n padding: calc(6px * var(--scale-factor));\\n margin-left: calc(5px * var(--scale-factor));\\n cursor: pointer;\\n font: message-box;\\n white-space: normal;\\n word-wrap: break-word;\\n pointer-events: auto;\\n}\\n\\n.annotationLayer .popup > * {\\n font-size: calc(9px * var(--scale-factor));\\n}\\n\\n.annotationLayer .popup h1 {\\n display: inline-block;\\n}\\n\\n.annotationLayer .popupDate {\\n display: inline-block;\\n margin-left: calc(5px * var(--scale-factor));\\n}\\n\\n.annotationLayer .popupContent {\\n border-top: 1px solid rgba(51, 51, 51, 1);\\n margin-top: calc(2px * var(--scale-factor));\\n padding-top: calc(2px * var(--scale-factor));\\n}\\n\\n.annotationLayer .richText > * {\\n white-space: pre-wrap;\\n font-size: calc(9px * var(--scale-factor));\\n}\\n\\n.annotationLayer .highlightAnnotation,\\n.annotationLayer .underlineAnnotation,\\n.annotationLayer .squigglyAnnotation,\\n.annotationLayer .strikeoutAnnotation,\\n.annotationLayer .freeTextAnnotation,\\n.annotationLayer .lineAnnotation svg line,\\n.annotationLayer .squareAnnotation svg rect,\\n.annotationLayer .circleAnnotation svg ellipse,\\n.annotationLayer .polylineAnnotation svg polyline,\\n.annotationLayer .polygonAnnotation svg polygon,\\n.annotationLayer .caretAnnotation,\\n.annotationLayer .inkAnnotation svg polyline,\\n.annotationLayer .stampAnnotation,\\n.annotationLayer .fileAttachmentAnnotation {\\n cursor: pointer;\\n}\\n\\n.annotationLayer section svg {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n top: 0;\\n left: 0;\\n}\\n\\n.annotationLayer .annotationTextContent {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n opacity: 0;\\n color: transparent;\\n user-select: none;\\n pointer-events: none;\\n}\\n\\n.annotationLayer .annotationTextContent span {\\n width: 100%;\\n display: inline-block;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n:root {\n --react-pdf-text-layer: 1;\n --highlight-bg-color: rgba(180, 0, 170, 1);\n --highlight-selected-bg-color: rgba(0, 100, 0, 1);\n}\n\n@media screen and (forced-colors: active) {\n :root {\n --highlight-bg-color: Highlight;\n --highlight-selected-bg-color: ButtonText;\n }\n}\n\n[data-main-rotation='90'] {\n transform: rotate(90deg) translateY(-100%);\n}\n[data-main-rotation='180'] {\n transform: rotate(180deg) translate(-100%, -100%);\n}\n[data-main-rotation='270'] {\n transform: rotate(270deg) translateX(-100%);\n}\n\n.textLayer {\n position: absolute;\n text-align: initial;\n inset: 0;\n overflow: hidden;\n line-height: 1;\n text-size-adjust: none;\n forced-color-adjust: none;\n transform-origin: 0 0;\n z-index: 2;\n}\n\n.textLayer :is(span, br) {\n color: transparent;\n position: absolute;\n white-space: pre;\n cursor: text;\n margin: 0;\n transform-origin: 0 0;\n}\n\n/* Only necessary in Google Chrome, see issue 14205, and most unfortunately\n * the problem doesn't show up in \"text\" reference tests. */\n.textLayer span.markedContent {\n top: 0;\n height: 0;\n}\n\n.textLayer .highlight {\n margin: -1px;\n padding: 1px;\n background-color: var(--highlight-bg-color);\n border-radius: 4px;\n}\n\n.textLayer .highlight.appended {\n position: initial;\n}\n\n.textLayer .highlight.begin {\n border-radius: 4px 0 0 4px;\n}\n\n.textLayer .highlight.end {\n border-radius: 0 4px 4px 0;\n}\n\n.textLayer .highlight.middle {\n border-radius: 0;\n}\n\n.textLayer .highlight.selected {\n background-color: var(--highlight-selected-bg-color);\n}\n\n/* Avoids https://github.com/mozilla/pdf.js/issues/13840 in Chrome */\n.textLayer br::selection {\n background: transparent;\n}\n\n.textLayer .endOfContent {\n display: block;\n position: absolute;\n inset: 100% 0 0;\n z-index: -1;\n cursor: default;\n user-select: none;\n}\n\n.textLayer.selecting .endOfContent {\n top: 0;\n}\n\n.hiddenCanvasElement {\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 0;\n display: none;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/react-pdf/dist/esm/Page/TextLayer.css\"],\"names\":[],\"mappings\":\"AAAA;;;;;;;;;;;;;EAaE;;AAEF;EACE,yBAAyB;EACzB,0CAA0C;EAC1C,iDAAiD;AACnD;;AAEA;EACE;IACE,+BAA+B;IAC/B,yCAAyC;EAC3C;AACF;;AAEA;EACE,0CAA0C;AAC5C;AACA;EACE,iDAAiD;AACnD;AACA;EACE,2CAA2C;AAC7C;;AAEA;EACE,kBAAkB;EAClB,mBAAmB;EACnB,QAAQ;EACR,gBAAgB;EAChB,cAAc;EACd,sBAAsB;EACtB,yBAAyB;EACzB,qBAAqB;EACrB,UAAU;AACZ;;AAEA;EACE,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;EAChB,YAAY;EACZ,SAAS;EACT,qBAAqB;AACvB;;AAEA;2DAC2D;AAC3D;EACE,MAAM;EACN,SAAS;AACX;;AAEA;EACE,YAAY;EACZ,YAAY;EACZ,2CAA2C;EAC3C,kBAAkB;AACpB;;AAEA;EACE,iBAAiB;AACnB;;AAEA;EACE,0BAA0B;AAC5B;;AAEA;EACE,0BAA0B;AAC5B;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,oDAAoD;AACtD;;AAEA,oEAAoE;AACpE;EACE,uBAAuB;AACzB;;AAEA;EACE,cAAc;EACd,kBAAkB;EAClB,eAAe;EACf,WAAW;EACX,eAAe;EACf,iBAAiB;AACnB;;AAEA;EACE,MAAM;AACR;;AAEA;EACE,kBAAkB;EAClB,MAAM;EACN,OAAO;EACP,QAAQ;EACR,SAAS;EACT,aAAa;AACf\",\"sourcesContent\":[\"/* Copyright 2014 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\n:root {\\n --react-pdf-text-layer: 1;\\n --highlight-bg-color: rgba(180, 0, 170, 1);\\n --highlight-selected-bg-color: rgba(0, 100, 0, 1);\\n}\\n\\n@media screen and (forced-colors: active) {\\n :root {\\n --highlight-bg-color: Highlight;\\n --highlight-selected-bg-color: ButtonText;\\n }\\n}\\n\\n[data-main-rotation='90'] {\\n transform: rotate(90deg) translateY(-100%);\\n}\\n[data-main-rotation='180'] {\\n transform: rotate(180deg) translate(-100%, -100%);\\n}\\n[data-main-rotation='270'] {\\n transform: rotate(270deg) translateX(-100%);\\n}\\n\\n.textLayer {\\n position: absolute;\\n text-align: initial;\\n inset: 0;\\n overflow: hidden;\\n line-height: 1;\\n text-size-adjust: none;\\n forced-color-adjust: none;\\n transform-origin: 0 0;\\n z-index: 2;\\n}\\n\\n.textLayer :is(span, br) {\\n color: transparent;\\n position: absolute;\\n white-space: pre;\\n cursor: text;\\n margin: 0;\\n transform-origin: 0 0;\\n}\\n\\n/* Only necessary in Google Chrome, see issue 14205, and most unfortunately\\n * the problem doesn't show up in \\\"text\\\" reference tests. */\\n.textLayer span.markedContent {\\n top: 0;\\n height: 0;\\n}\\n\\n.textLayer .highlight {\\n margin: -1px;\\n padding: 1px;\\n background-color: var(--highlight-bg-color);\\n border-radius: 4px;\\n}\\n\\n.textLayer .highlight.appended {\\n position: initial;\\n}\\n\\n.textLayer .highlight.begin {\\n border-radius: 4px 0 0 4px;\\n}\\n\\n.textLayer .highlight.end {\\n border-radius: 0 4px 4px 0;\\n}\\n\\n.textLayer .highlight.middle {\\n border-radius: 0;\\n}\\n\\n.textLayer .highlight.selected {\\n background-color: var(--highlight-selected-bg-color);\\n}\\n\\n/* Avoids https://github.com/mozilla/pdf.js/issues/13840 in Chrome */\\n.textLayer br::selection {\\n background: transparent;\\n}\\n\\n.textLayer .endOfContent {\\n display: block;\\n position: absolute;\\n inset: 100% 0 0;\\n z-index: -1;\\n cursor: default;\\n user-select: none;\\n}\\n\\n.textLayer.selecting .endOfContent {\\n top: 0;\\n}\\n\\n.hiddenCanvasElement {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 0;\\n height: 0;\\n display: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./AnnotationLayer.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./AnnotationLayer.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./TextLayer.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./TextLayer.css\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/******/ // The require scope\n/******/ var __webpack_require__ = {};\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__webpack_require__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = globalThis.pdfjsLib = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n AbortException: () => (/* reexport */ AbortException),\n AnnotationEditorLayer: () => (/* reexport */ AnnotationEditorLayer),\n AnnotationEditorParamsType: () => (/* reexport */ AnnotationEditorParamsType),\n AnnotationEditorType: () => (/* reexport */ AnnotationEditorType),\n AnnotationEditorUIManager: () => (/* reexport */ AnnotationEditorUIManager),\n AnnotationLayer: () => (/* reexport */ AnnotationLayer),\n AnnotationMode: () => (/* reexport */ AnnotationMode),\n ColorPicker: () => (/* reexport */ ColorPicker),\n DOMSVGFactory: () => (/* reexport */ DOMSVGFactory),\n DrawLayer: () => (/* reexport */ DrawLayer),\n FeatureTest: () => (/* reexport */ util_FeatureTest),\n GlobalWorkerOptions: () => (/* reexport */ GlobalWorkerOptions),\n ImageKind: () => (/* reexport */ util_ImageKind),\n InvalidPDFException: () => (/* reexport */ InvalidPDFException),\n MissingPDFException: () => (/* reexport */ MissingPDFException),\n OPS: () => (/* reexport */ OPS),\n OutputScale: () => (/* reexport */ OutputScale),\n PDFDataRangeTransport: () => (/* reexport */ PDFDataRangeTransport),\n PDFDateString: () => (/* reexport */ PDFDateString),\n PDFWorker: () => (/* reexport */ PDFWorker),\n PasswordResponses: () => (/* reexport */ PasswordResponses),\n PermissionFlag: () => (/* reexport */ PermissionFlag),\n PixelsPerInch: () => (/* reexport */ PixelsPerInch),\n RenderingCancelledException: () => (/* reexport */ RenderingCancelledException),\n TextLayer: () => (/* reexport */ TextLayer),\n UnexpectedResponseException: () => (/* reexport */ UnexpectedResponseException),\n Util: () => (/* reexport */ Util),\n VerbosityLevel: () => (/* reexport */ VerbosityLevel),\n XfaLayer: () => (/* reexport */ XfaLayer),\n build: () => (/* reexport */ build),\n createValidAbsoluteUrl: () => (/* reexport */ createValidAbsoluteUrl),\n fetchData: () => (/* reexport */ fetchData),\n getDocument: () => (/* reexport */ getDocument),\n getFilenameFromUrl: () => (/* reexport */ getFilenameFromUrl),\n getPdfFilenameFromUrl: () => (/* reexport */ getPdfFilenameFromUrl),\n getXfaPageViewport: () => (/* reexport */ getXfaPageViewport),\n isDataScheme: () => (/* reexport */ isDataScheme),\n isPdfFile: () => (/* reexport */ isPdfFile),\n noContextMenu: () => (/* reexport */ noContextMenu),\n normalizeUnicode: () => (/* reexport */ normalizeUnicode),\n setLayerDimensions: () => (/* reexport */ setLayerDimensions),\n shadow: () => (/* reexport */ shadow),\n version: () => (/* reexport */ version)\n});\n\n;// ./src/shared/util.js\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6;\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n IS_EDITING: 0x80,\n OPLIST: 0x100\n};\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_DEFAULT_COLOR: 32,\n HIGHLIGHT_THICKNESS: 33,\n HIGHLIGHT_FREE: 34,\n HIGHLIGHT_SHOW_ALL: 35\n};\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nconst util_ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n setStrokeTransparent: 92,\n setFillTransparent: 93\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch {}\n return null;\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch {\n return false;\n }\n}\nclass util_FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get platform() {\n if (typeof navigator !== \"undefined\" && typeof navigator?.platform === \"string\") {\n return shadow(this, \"platform\", {\n isMac: navigator.platform.includes(\"Mac\"),\n isWindows: navigator.platform.includes(\"Win\"),\n isFirefox: typeof navigator?.userAgent === \"string\" && navigator.userAgent.includes(\"Firefox\")\n });\n }\n return shadow(this, \"platform\", {\n isMac: false,\n isWindows: false,\n isFirefox: false\n });\n }\n static get isCSSRoundSupported() {\n return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[0];\n minMax[2] *= transform[0];\n if (transform[3] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n if (transform[1] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[1];\n minMax[3] *= transform[1];\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[2];\n minMax[2] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[5];\n minMax[2] += transform[4];\n minMax[3] += transform[5];\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = this.applyTransform(r, m);\n const p2 = this.applyTransform(r.slice(2, 4), m);\n const p3 = this.applyTransform([r[0], r[3]], m);\n const p4 = this.applyTransform([r[2], r[1]], m);\n return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n if (minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n } else {\n minMax = [Math.min(x0, x3), Math.min(y0, y3), Math.max(x0, x3), Math.max(y0, y3)];\n }\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n return minMax;\n }\n}\nconst PDFStringTranslateTable = (/* unused pure expression or super */ null && ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]));\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (!decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const charCode = str.charCodeAt(i);\n if (charCode === 0x1b) {\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction getModificationDate(date = new Date()) {\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ļ¬…\", \"Åæt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto?.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n if (typeof crypto !== \"undefined\" && typeof crypto?.getRandomValues === \"function\") {\n crypto.getRandomValues(buf);\n } else {\n for (let i = 0; i < 32; i++) {\n buf[i] = Math.floor(Math.random() * 255);\n }\n }\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nconst FontRenderOps = {\n BEZIER_CURVE_TO: 0,\n MOVE_TO: 1,\n LINE_TO: 2,\n QUADRATIC_CURVE_TO: 3,\n RESTORE: 4,\n SAVE: 5,\n SCALE: 6,\n TRANSFORM: 7,\n TRANSLATE: 8\n};\nfunction toHexUtil(arr) {\n if (Uint8Array.prototype.toHex) {\n return arr.toHex();\n }\n return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\nfunction toBase64Util(arr) {\n if (Uint8Array.prototype.toBase64) {\n return arr.toBase64();\n }\n return btoa(bytesToString(arr));\n}\nfunction fromBase64Util(str) {\n if (Uint8Array.fromBase64) {\n return Uint8Array.fromBase64(str);\n }\n return stringToBytes(atob(str));\n}\n\n;// ./src/display/display_utils.js\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nasync function fetchData(url, type = \"text\") {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = type;\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n switch (type) {\n case \"arraybuffer\":\n case \"blob\":\n case \"json\":\n resolve(request.response);\n return;\n }\n resolve(request.responseText);\n return;\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass PageViewport {\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const {\n viewBox\n } = this;\n return shadow(this, \"rawDims\", {\n pageWidth: viewBox[2] - viewBox[0],\n pageHeight: viewBox[3] - viewBox[1],\n pageX: viewBox[0],\n pageY: viewBox[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n convertToViewportRectangle(rect) {\n const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n [url] = url.split(/[#?]/, 1);\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n try {\n suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n } catch {}\n }\n }\n return suggestedFilename || defaultFilename;\n}\nclass StatTimer {\n started = Object.create(null);\n times = [];\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n toString() {\n const outBuf = [];\n let longest = 0;\n for (const {\n name\n } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const {\n name,\n start,\n end\n } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const {\n protocol\n } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n return protocol === \"http:\" || protocol === \"https:\";\n } catch {\n return false;\n }\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nclass PDFDateString {\n static #regex;\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n this.#regex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = this.#regex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n scale,\n rotation\n });\n}\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n }\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const useRound = util_FeatureTest.isCSSRoundSupported;\n const w = `var(--scale-factor) * ${pageWidth}px`,\n h = `var(--scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x, 1px))` : `calc(${w})`,\n heightStr = useRound ? `round(down, ${h}, var(--scale-round-y, 1px))` : `calc(${h})`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\nclass OutputScale {\n constructor() {\n const pixelRatio = window.devicePixelRatio || 1;\n this.sx = pixelRatio;\n this.sy = pixelRatio;\n }\n get scaled() {\n return this.sx !== 1 || this.sy !== 1;\n }\n get symmetric() {\n return this.sx === this.sy;\n }\n}\n\n;// ./src/display/editor/toolbar.js\n\nclass EditorToolbar {\n #toolbar = null;\n #colorPicker = null;\n #editor;\n #buttons = null;\n #altText = null;\n static #l10nRemove = null;\n constructor(editor) {\n this.#editor = editor;\n EditorToolbar.#l10nRemove ||= Object.freeze({\n freetext: \"pdfjs-editor-remove-freetext-button\",\n highlight: \"pdfjs-editor-remove-highlight-button\",\n ink: \"pdfjs-editor-remove-ink-button\",\n stamp: \"pdfjs-editor-remove-stamp-button\"\n });\n }\n render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.classList.add(\"editToolbar\", \"hidden\");\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#editor._uiManager._signal;\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n const position = this.#editor.toolbarPosition;\n if (position) {\n const {\n style\n } = editToolbar;\n const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n }\n this.#addDeleteButton();\n return editToolbar;\n }\n get div() {\n return this.#toolbar;\n }\n static #pointerDown(e) {\n e.stopPropagation();\n }\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n e.preventDefault();\n e.stopPropagation();\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n e.preventDefault();\n e.stopPropagation();\n }\n #addListenersToElement(element) {\n const signal = this.#editor._uiManager._signal;\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n }\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n this.#colorPicker?.hideDropdown();\n }\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n this.#altText?.shown();\n }\n #addDeleteButton() {\n const {\n editorType,\n _uiManager\n } = this.#editor;\n const button = document.createElement(\"button\");\n button.className = \"delete\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n this.#addListenersToElement(button);\n button.addEventListener(\"click\", e => {\n _uiManager.delete();\n }, {\n signal: _uiManager._signal\n });\n this.#buttons.append(button);\n }\n get #divider() {\n const divider = document.createElement(\"div\");\n divider.className = \"divider\";\n return divider;\n }\n async addAltText(altText) {\n const button = await altText.render();\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n this.#altText = altText;\n }\n addColorPicker(colorPicker) {\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass HighlightToolbar {\n #buttons = null;\n #toolbar = null;\n #uiManager;\n constructor(uiManager) {\n this.#uiManager = uiManager;\n }\n #render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal: this.#uiManager._signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n this.#addHighlightButton();\n return editToolbar;\n }\n #getLastPoint(boxes, isLTR) {\n let lastY = 0;\n let lastX = 0;\n for (const box of boxes) {\n const y = box.y + box.height;\n if (y < lastY) {\n continue;\n }\n const x = box.x + (isLTR ? box.width : 0);\n if (y > lastY) {\n lastX = x;\n lastY = y;\n continue;\n }\n if (isLTR) {\n if (x > lastX) {\n lastX = x;\n }\n } else if (x < lastX) {\n lastX = x;\n }\n }\n return [isLTR ? 1 - lastX : lastX, lastY];\n }\n show(parent, boxes, isLTR) {\n const [x, y] = this.#getLastPoint(boxes, isLTR);\n const {\n style\n } = this.#toolbar ||= this.#render();\n parent.append(this.#toolbar);\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n }\n hide() {\n this.#toolbar.remove();\n }\n #addHighlightButton() {\n const button = document.createElement(\"button\");\n button.className = \"highlightButton\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", `pdfjs-highlight-floating-button1`);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", \"pdfjs-highlight-floating-button-label\");\n const signal = this.#uiManager._signal;\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n }, {\n signal\n });\n this.#buttons.append(button);\n }\n}\n\n;// ./src/display/editor/tools.js\n\n\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nfunction opacityToHex(opacity) {\n return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, \"0\");\n}\nclass IdManager {\n #id = 0;\n get id() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass ImageManager {\n #baseId = getUuid();\n #id = 0;\n #cache = null;\n static get _isSVGFittingCanvas() {\n const svg = `data:image/svg+xml;charset=UTF-8,`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n image = await fetchData(rawData, \"blob\");\n } else if (rawData instanceof File) {\n image = data.file = rawData;\n } else if (rawData instanceof Blob) {\n image = rawData;\n }\n if (image.type === \"image/svg+xml\") {\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = data.svgUrl = fileReader.result;\n imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n console.error(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromBlob(id, blobPromise) {\n const blob = await blobPromise;\n return this.#get(id, blob);\n }\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n if (data.blobPromise) {\n const {\n blobPromise\n } = data;\n delete data.blobPromise;\n return this.getFromBlob(data.id, blobPromise);\n }\n return this.getFromUrl(data.url);\n }\n getFromCanvas(id, canvas) {\n this.#cache ||= new Map();\n let data = this.#cache.get(id);\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(canvas, 0, 0);\n data = {\n bitmap: offscreen.transferToImageBitmap(),\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 1,\n isSvg: false\n };\n this.#cache.set(id, data);\n this.#cache.set(data.id, data);\n return data;\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n const {\n bitmap\n } = data;\n if (!data.url && !data.file) {\n const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n const ctx = canvas.getContext(\"bitmaprenderer\");\n ctx.transferFromImageBitmap(bitmap);\n data.blobPromise = canvas.convertToBlob();\n }\n bitmap.close?.();\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n post,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n post,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n const {\n undo,\n post\n } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n const {\n cmd,\n post\n } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac\n } = util_FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info = this.callbacks.get(this.#serialize(event));\n if (!info) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info;\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args, event)();\n if (!bubbles) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n}\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\nclass AnnotationEditorUIManager {\n #abortController = new AbortController();\n #activeEditor = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #copyPasteAC = null;\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n #enableHighlightFloatingButton = false;\n #enableUpdatedAddImage = false;\n #enableNewAltTextWhenAddingImage = false;\n #filterFactory = null;\n #focusMainContainerTimeoutId = null;\n #focusManagerAC = null;\n #highlightColors = null;\n #highlightWhenShiftUp = false;\n #highlightToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isWaiting = false;\n #keyboardManagerAC = null;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #pageColors = null;\n #showAllStates = null;\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false\n };\n #translation = [0, 0];\n #translationTimeoutId = null;\n #container = null;\n #viewer = null;\n #updateModeCapability = null;\n static TRANSLATE_SMALL = 1;\n static TRANSLATE_BIG = 10;\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n const textInputChecker = (_self, {\n target: el\n }) => {\n if (el instanceof HTMLInputElement) {\n const {\n type\n } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n checker: textInputChecker\n }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n checker: textInputChecker\n }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n checker: textInputChecker\n }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n checker: textInputChecker\n }], [[\"Enter\", \"mac+Enter\"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n }], [[\" \", \"mac+ \"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n }], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n constructor(container, viewer, altTextManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager) {\n const signal = this._signal = this.#abortController.signal;\n this.#container = container;\n this.#viewer = viewer;\n this.#altTextManager = altTextManager;\n this._eventBus = eventBus;\n eventBus._on(\"editingaction\", this.onEditingAction.bind(this), {\n signal\n });\n eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), {\n signal\n });\n eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), {\n signal\n });\n eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n signal\n });\n eventBus._on(\"setpreference\", this.onSetPreference.bind(this), {\n signal\n });\n eventBus._on(\"switchannotationeditorparams\", evt => this.updateParams(evt.type, evt.value), {\n signal\n });\n this.#addSelectionListener();\n this.#addDragAndDropListeners();\n this.#addKeyboardManager();\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.#highlightColors = highlightColors || null;\n this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n this.#enableUpdatedAddImage = enableUpdatedAddImage;\n this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n this.isShiftKeyDown = false;\n }\n destroy() {\n this.#updateModeCapability?.resolve();\n this.#updateModeCapability = null;\n this.#abortController?.abort();\n this.#abortController = null;\n this._signal = null;\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#highlightToolbar?.hide();\n this.#highlightToolbar = null;\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n }\n combinedSignal(ac) {\n return AbortSignal.any([this._signal, ac.signal]);\n }\n get mlManager() {\n return this.#mlManager;\n }\n get useNewAltTextFlow() {\n return this.#enableUpdatedAddImage;\n }\n get useNewAltTextWhenAddingImage() {\n return this.#enableNewAltTextWhenAddingImage;\n }\n get hcmFilter() {\n return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n }\n get direction() {\n return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n }\n get highlightColors() {\n return shadow(this, \"highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => pair.split(\"=\").map(x => x.trim()))) : null);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n }\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n editAltText(editor, firstTime = false) {\n this.#altTextManager?.editAltText(this, editor, firstTime);\n }\n switchToMode(mode, callback) {\n this._eventBus.on(\"annotationeditormodechanged\", callback, {\n once: true,\n signal: this._signal\n });\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode\n });\n }\n setPreference(name, value) {\n this._eventBus.dispatch(\"setpreference\", {\n source: this,\n name,\n value\n });\n }\n onSetPreference({\n name,\n value\n }) {\n switch (name) {\n case \"enableNewAltTextWhenAddingImage\":\n this.#enableNewAltTextWhenAddingImage = value;\n break;\n }\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n #getAnchorElementForSelection({\n anchorNode\n }) {\n return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n }\n #getLayerForTextLayer(textLayer) {\n const {\n currentLayer\n } = this;\n if (currentLayer.hasTextLayer(textLayer)) {\n return currentLayer;\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n return layer;\n }\n }\n return null;\n }\n highlightSelection(methodOfCreation = \"\") {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const text = selection.toString();\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n selection.empty();\n const layer = this.#getLayerForTextLayer(textLayer);\n const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n const callback = () => {\n layer?.createAndAddNewEditor({\n x: 0,\n y: 0\n }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text\n });\n if (isNoneMode) {\n this.showAllEditors(\"highlight\", true, true);\n }\n };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n #displayHighlightToolbar() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n this.#highlightToolbar ||= new HighlightToolbar(this);\n this.#highlightToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n const {\n anchorNode\n } = selection;\n if (anchorNode === this.#selectedTextNode) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n if (!textLayer) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = anchorNode;\n this.#dispatchUpdateStates({\n hasSelectedText: true\n });\n if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.showAllEditors(\"highlight\", true, true);\n }\n this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n activeLayer?.toggleDrawing();\n const ac = new AbortController();\n const signal = this.combinedSignal(ac);\n const pointerup = e => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n return;\n }\n ac.abort();\n activeLayer?.toggleDrawing(true);\n if (e.type === \"pointerup\") {\n this.#onSelectEnd(\"main_toolbar\");\n }\n };\n window.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n window.addEventListener(\"blur\", pointerup, {\n signal\n });\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayHighlightToolbar();\n }\n }\n #addSelectionListener() {\n document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n signal: this._signal\n });\n }\n #addFocusManager() {\n if (this.#focusManagerAC) {\n return;\n }\n this.#focusManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#focusManagerAC);\n window.addEventListener(\"focus\", this.focus.bind(this), {\n signal\n });\n window.addEventListener(\"blur\", this.blur.bind(this), {\n signal\n });\n }\n #removeFocusManager() {\n this.#focusManagerAC?.abort();\n this.#focusManagerAC = null;\n }\n blur() {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n if (!this.hasSelection) {\n return;\n }\n const {\n activeElement\n } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this._signal\n });\n lastActiveElement.focus();\n }\n #addKeyboardManager() {\n if (this.#keyboardManagerAC) {\n return;\n }\n this.#keyboardManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#keyboardManagerAC);\n window.addEventListener(\"keydown\", this.keydown.bind(this), {\n signal\n });\n window.addEventListener(\"keyup\", this.keyup.bind(this), {\n signal\n });\n }\n #removeKeyboardManager() {\n this.#keyboardManagerAC?.abort();\n this.#keyboardManagerAC = null;\n }\n #addCopyPasteListeners() {\n if (this.#copyPasteAC) {\n return;\n }\n this.#copyPasteAC = new AbortController();\n const signal = this.combinedSignal(this.#copyPasteAC);\n document.addEventListener(\"copy\", this.copy.bind(this), {\n signal\n });\n document.addEventListener(\"cut\", this.cut.bind(this), {\n signal\n });\n document.addEventListener(\"paste\", this.paste.bind(this), {\n signal\n });\n }\n #removeCopyPasteListeners() {\n this.#copyPasteAC?.abort();\n this.#copyPasteAC = null;\n }\n #addDragAndDropListeners() {\n const signal = this._signal;\n document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n signal\n });\n document.addEventListener(\"drop\", this.drop.bind(this), {\n signal\n });\n }\n addEditListeners() {\n this.#addKeyboardManager();\n this.#addCopyPasteListeners();\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n }\n dragOver(event) {\n for (const {\n type\n } of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(type)) {\n event.dataTransfer.dropEffect = \"copy\";\n event.preventDefault();\n return;\n }\n }\n }\n }\n drop(event) {\n for (const item of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n event.preventDefault();\n return;\n }\n }\n }\n }\n copy(event) {\n event.preventDefault();\n this.#activeEditor?.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n async paste(event) {\n event.preventDefault();\n const {\n clipboardData\n } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = await layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = true;\n }\n if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n keyup(event) {\n if (this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n onEditingAction({\n name\n }) {\n switch (name) {\n case \"undo\":\n case \"redo\":\n case \"delete\":\n case \"selectAll\":\n this[name]();\n break;\n case \"highlightSelection\":\n this.highlightSelection(\"context_menu\");\n break;\n }\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n }\n }\n }\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false\n });\n } else {\n this.#removeFocusManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.id;\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n async updateMode(mode, editId = null, isFromKeyboard = false) {\n if (this.#mode === mode) {\n return;\n }\n if (this.#updateModeCapability) {\n await this.#updateModeCapability.promise;\n if (!this.#updateModeCapability) {\n return;\n }\n }\n this.#updateModeCapability = Promise.withResolvers();\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n this.#updateModeCapability.resolve();\n return;\n }\n this.setEditingState(true);\n await this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (!editId) {\n if (isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n }\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.annotationElementId === editId) {\n this.setSelected(editor);\n editor.enterInEditMode();\n } else {\n editor.unselect();\n }\n }\n this.#updateModeCapability.resolve();\n }\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n updateToolbar(mode) {\n if (mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor();\n return;\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n this.#mainHighlightColorPicker?.updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n this._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data: {\n type: \"highlight\",\n action: \"toggle_visibility\"\n }\n }\n });\n (this.#showAllStates ||= new Map()).set(type, value);\n this.showAllEditors(\"highlight\", value);\n break;\n }\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n if (state !== visible) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n }\n }\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n async #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n const promises = [];\n for (const layer of this.#allLayers.values()) {\n promises.push(layer.enable());\n }\n await Promise.all(promises);\n for (const editor of this.#allEditors.values()) {\n editor.enable();\n }\n }\n }\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.disable();\n }\n }\n }\n getEditors(pageIndex) {\n const editors = [];\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n editors.push(editor);\n }\n }\n return editors;\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n if (editor.div.contains(document.activeElement)) {\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n }\n this.#focusMainContainerTimeoutId = setTimeout(() => {\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {}\n return ed;\n }\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n get isEnterHandled() {\n return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [...this.#selectedEditors];\n const cmd = () => {\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n }\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1000;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n }\n }\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1\n });\n }\n }\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n for (const [{\n x,\n y,\n pageIndex\n }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, {\n newX,\n newY,\n newPageIndex\n }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, {\n savedX,\n savedY,\n savedPageIndex\n }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true\n });\n return true;\n }\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n get isEditorHandlingKeyboard() {\n return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\n getSelectionBoxes(textLayer) {\n if (!textLayer) {\n return null;\n }\n const selection = document.getSelection();\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n return null;\n }\n }\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n let rotator;\n switch (textLayer.getAttribute(\"data-main-rotation\")) {\n case \"90\":\n rotator = (x, y, w, h) => ({\n x: (y - layerY) / parentHeight,\n y: 1 - (x + w - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n case \"180\":\n rotator = (x, y, w, h) => ({\n x: 1 - (x + w - layerX) / parentWidth,\n y: 1 - (y + h - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n case \"270\":\n rotator = (x, y, w, h) => ({\n x: 1 - (y + h - layerY) / parentHeight,\n y: (x - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n default:\n rotator = (x, y, w, h) => ({\n x: (x - layerX) / parentWidth,\n y: (y - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n }\n const boxes = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n for (const {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n boxes.push(rotator(x, y, width, height));\n }\n }\n return boxes.length === 0 ? null : boxes;\n }\n addChangedExistingAnnotation({\n annotationElementId,\n id\n }) {\n (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n }\n removeChangedExistingAnnotation({\n annotationElementId\n }) {\n this.#changedExistingAnnotations?.delete(annotationElementId);\n }\n renderAnnotationElement(annotation) {\n const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n if (!editorId) {\n return;\n }\n const editor = this.#annotationStorage.getRawValue(editorId);\n if (!editor) {\n return;\n }\n if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n return;\n }\n editor.renderAnnotationElement(annotation);\n }\n}\n\n;// ./src/display/editor/alt_text.js\n\nclass AltText {\n #altText = null;\n #altTextDecorative = false;\n #altTextButton = null;\n #altTextButtonLabel = null;\n #altTextTooltip = null;\n #altTextTooltipTimeout = null;\n #altTextWasFromKeyBoard = false;\n #badge = null;\n #editor = null;\n #guessedText = null;\n #textWithDisclaimer = null;\n #useNewAltTextFlow = false;\n static #l10nNewButton = null;\n static _l10n = null;\n constructor(editor) {\n this.#editor = editor;\n this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n AltText.#l10nNewButton ||= Object.freeze({\n added: \"pdfjs-editor-new-alt-text-added-button\",\n \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n missing: \"pdfjs-editor-new-alt-text-missing-button\",\n \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n review: \"pdfjs-editor-new-alt-text-to-review-button\",\n \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\"\n });\n }\n static initialize(l10n) {\n AltText._l10n ??= l10n;\n }\n async render() {\n const altText = this.#altTextButton = document.createElement(\"button\");\n altText.className = \"altText\";\n altText.tabIndex = \"0\";\n const label = this.#altTextButtonLabel = document.createElement(\"span\");\n altText.append(label);\n if (this.#useNewAltTextFlow) {\n altText.classList.add(\"new\");\n altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n label.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[\"missing-label\"]);\n } else {\n altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n }\n const signal = this.#editor._uiManager._signal;\n altText.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n this.#editor._uiManager.editAltText(this.#editor);\n if (this.#useNewAltTextFlow) {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n data: {\n label: this.#label\n }\n });\n }\n };\n altText.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n await this.#setState();\n return altText;\n }\n get #label() {\n return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n }\n finish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.focus({\n focusVisible: this.#altTextWasFromKeyBoard\n });\n this.#altTextWasFromKeyBoard = false;\n }\n isEmpty() {\n if (this.#useNewAltTextFlow) {\n return this.#altText === null;\n }\n return !this.#altText && !this.#altTextDecorative;\n }\n hasData() {\n if (this.#useNewAltTextFlow) {\n return this.#altText !== null || !!this.#guessedText;\n }\n return this.isEmpty();\n }\n get guessedText() {\n return this.#guessedText;\n }\n async setGuessedText(guessedText) {\n if (this.#altText !== null) {\n return;\n }\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = await AltText._l10n.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\", {\n generatedAltText: guessedText\n });\n this.#setState();\n }\n toggleAltTextBadge(visibility = false) {\n if (!this.#useNewAltTextFlow || this.#altText) {\n this.#badge?.remove();\n this.#badge = null;\n return;\n }\n if (!this.#badge) {\n const badge = this.#badge = document.createElement(\"div\");\n badge.className = \"noAltTextBadge\";\n this.#editor.div.append(badge);\n }\n this.#badge.classList.toggle(\"hidden\", !visibility);\n }\n serialize(isForCopying) {\n let altText = this.#altText;\n if (!isForCopying && this.#guessedText === altText) {\n altText = this.#textWithDisclaimer;\n }\n return {\n altText,\n decorative: this.#altTextDecorative,\n guessedText: this.#guessedText,\n textWithDisclaimer: this.#textWithDisclaimer\n };\n }\n get data() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative\n };\n }\n set data({\n altText,\n decorative,\n guessedText,\n textWithDisclaimer,\n cancel = false\n }) {\n if (guessedText) {\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = textWithDisclaimer;\n }\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n if (!cancel) {\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n }\n this.#setState();\n }\n toggle(enabled = false) {\n if (!this.#altTextButton) {\n return;\n }\n if (!enabled && this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextButton.disabled = !enabled;\n }\n shown() {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n data: {\n label: this.#label\n }\n });\n }\n destroy() {\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextButtonLabel = null;\n this.#altTextTooltip = null;\n this.#badge?.remove();\n this.#badge = null;\n }\n async #setState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (this.#useNewAltTextFlow) {\n button.classList.toggle(\"done\", !!this.#altText);\n button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n this.#altTextButtonLabel?.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[`${this.#label}-label`]);\n if (!this.#altText) {\n this.#altTextTooltip?.remove();\n return;\n }\n } else {\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\n }\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n const DELAY_TO_SHOW_TOOLTIP = 100;\n const signal = this.#editor._uiManager._signal;\n signal.addEventListener(\"abort\", () => {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }, {\n once: true\n });\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this.#editor._reportTelemetry({\n action: \"alt_text_tooltip\"\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n }, {\n signal\n });\n button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n }, {\n signal\n });\n }\n if (this.#altTextDecorative) {\n tooltip.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-decorative-tooltip\");\n } else {\n tooltip.removeAttribute(\"data-l10n-id\");\n tooltip.textContent = this.#altText;\n }\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n const element = this.#editor.getImageForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #disabled = false;\n #keepAspectRatio = false;\n #resizersDiv = null;\n #savedDimensions = null;\n #focusAC = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialPosition = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n _editToolbar = null;\n _initialOptions = Object.create(null);\n _initialData = null;\n _isVisible = true;\n _uiManager = null;\n _focusEventsAllowed = true;\n static _l10n = null;\n static _l10nResizer = null;\n #isDraggable = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _borderLineWidth = -1;\n static _colorManager = new ColorManager();\n static _zIndex = 1;\n static _telemetryTimeout = 1000;\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, {\n args: [-small, 0]\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n args: [-big, 0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], resize, {\n args: [small, 0]\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n args: [big, 0]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], resize, {\n args: [0, -small]\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n args: [0, -big]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], resize, {\n args: [0, small]\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n args: [0, big]\n }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n }\n constructor(parameters) {\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n static get _defaultLineColor() {\n return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager) {\n AnnotationEditor._l10n ??= l10n;\n AnnotationEditor._l10nResizer ||= Object.freeze({\n topLeft: \"pdfjs-editor-resizer-top-left\",\n topMiddle: \"pdfjs-editor-resizer-top-middle\",\n topRight: \"pdfjs-editor-resizer-top-right\",\n middleRight: \"pdfjs-editor-resizer-middle-right\",\n bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n middleLeft: \"pdfjs-editor-resizer-middle-left\"\n });\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n get isEnterHandled() {\n return true;\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= this.height * pageHeight / (pageWidth * 2);\n this.y += this.width * pageWidth / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += this.height * pageHeight / (pageWidth * 2);\n this.y -= this.width * pageWidth / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n this.#stopResizing();\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialPosition ||= [this.x, this.y];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n drag(tx, ty) {\n this.#initialPosition ||= [this.x, this.y];\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x,\n y\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n this.div.style.left = `${(100 * x).toFixed(2)}%`;\n this.div.style.top = `${(100 * y).toFixed(2)}%`;\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n get _hasBeenMoved() {\n return !!this.#initialPosition && (this.#initialPosition[0] !== this.x || this.#initialPosition[1] !== this.y);\n }\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n get _mustFixPosition() {\n return true;\n }\n fixAndSetPosition(rotation = this.rotation) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = Math.max(0, Math.min(pageWidth - width, x));\n y = Math.max(0, Math.min(pageHeight - height, y));\n break;\n case 90:\n x = Math.max(0, Math.min(pageWidth - height, x));\n y = Math.min(pageHeight, Math.max(width, y));\n break;\n case 180:\n x = Math.min(pageWidth, Math.max(width, x));\n y = Math.min(pageHeight, Math.max(height, y));\n break;\n case 270:\n x = Math.min(pageWidth, Math.max(height, x));\n y = Math.max(0, Math.min(pageHeight - width, y));\n break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = this.div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n return [pageWidth * parentScale, pageHeight * parentScale];\n }\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.div.style.width = `${(100 * width / parentWidth).toFixed(2)}%`;\n if (!this.#keepAspectRatio) {\n this.div.style.height = `${(100 * height / parentHeight).toFixed(2)}%`;\n }\n }\n fixDims() {\n const {\n style\n } = this.div;\n const {\n height,\n width\n } = style;\n const widthPercent = width.endsWith(\"%\");\n const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n if (widthPercent && heightPercent) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (!widthPercent) {\n style.width = `${(100 * parseFloat(width) / parentWidth).toFixed(2)}%`;\n }\n if (!this.#keepAspectRatio && !heightPercent) {\n style.height = `${(100 * parseFloat(height) / parentHeight).toFixed(2)}%`;\n }\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n const signal = this._uiManager._signal;\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n signal\n });\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#altText?.toggle(false);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n this.parent.togglePointerEvents(false);\n window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n passive: true,\n capture: true,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n ac.abort();\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n #addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight) {\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: () => {\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n },\n undo: () => {\n this.width = savedWidth;\n this.height = savedHeight;\n this.x = savedX;\n this.y = savedY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * savedWidth, parentHeight * savedHeight);\n this.fixAndSetPosition();\n },\n mustExec: true\n });\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const round = x => Math.round(x * 10000) / 10000;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = round(savedX + transfOppositePoint[0]);\n const oppositeY = round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let [deltaX, deltaY] = this.screenToPageTranslation(event.movementX, event.movementY);\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = Math.max(minWidth, Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))) / savedWidth;\n } else {\n ratioY = Math.max(minHeight, Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))) / savedHeight;\n }\n const newWidth = round(savedWidth * ratioX);\n const newHeight = round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n }\n altTextFinish() {\n this.#altText?.finish();\n }\n async addEditToolbar() {\n if (this._editToolbar || this.#isInEditMode) {\n return this._editToolbar;\n }\n this._editToolbar = new EditorToolbar(this);\n this.div.append(this._editToolbar.render());\n if (this.#altText) {\n await this._editToolbar.addAltText(this.#altText);\n }\n return this._editToolbar;\n }\n removeEditToolbar() {\n if (!this._editToolbar) {\n return;\n }\n this._editToolbar.remove();\n this._editToolbar = null;\n this.#altText?.destroy();\n }\n addContainer(container) {\n const editToolbarDiv = this._editToolbar?.div;\n if (editToolbarDiv) {\n editToolbarDiv.before(container);\n } else {\n this.div.append(container);\n }\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n async addAltTextButton() {\n if (this.#altText) {\n return;\n }\n AltText.initialize(AnnotationEditor._l10n);\n this.#altText = new AltText(this);\n if (this.#accessibilityData) {\n this.#altText.data = this.#accessibilityData;\n this.#accessibilityData = null;\n }\n await this.addEditToolbar();\n }\n get altTextData() {\n return this.#altText?.data;\n }\n set altTextData(data) {\n if (!this.#altText) {\n return;\n }\n this.#altText.data = data;\n }\n get guessedAltText() {\n return this.#altText?.guessedText;\n }\n async setGuessedAltText(text) {\n await this.#altText?.setGuessedText(text);\n }\n serializeAltText(isForCopying) {\n return this.#altText?.serialize(isForCopying);\n }\n hasAltText() {\n return !!this.#altText && !this.#altText.isEmpty();\n }\n hasAltTextData() {\n return this.#altText?.hasData() ?? false;\n }\n render() {\n this.div = document.createElement(\"div\");\n this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n this.div.className = this.name;\n this.div.setAttribute(\"id\", this.id);\n this.div.tabIndex = this.#disabled ? -1 : 0;\n if (!this._isVisible) {\n this.div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.#addFocusListeners();\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n this.div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n this.div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, this.div, [\"pointerdown\"]);\n return this.div;\n }\n pointerdown(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n this.#selectOnPointerEvent(event);\n }\n get isSelected() {\n return this._uiManager.isSelected(this);\n }\n #selectOnPointerEvent(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n #setUpDragSession(event) {\n const {\n isSelected\n } = this;\n this._uiManager.setUpDragSession();\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n if (isSelected) {\n this.div.classList.add(\"moving\");\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n const pointerMoveCallback = e => {\n const {\n clientX: x,\n clientY: y\n } = e;\n const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n };\n window.addEventListener(\"pointermove\", pointerMoveCallback, {\n passive: true,\n capture: true,\n signal\n });\n }\n const pointerUpCallback = () => {\n ac.abort();\n if (isSelected) {\n this.div.classList.remove(\"moving\");\n }\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(event);\n }\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n moveInDOM() {\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n }\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n onceAdded() {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n this.#isInEditMode = true;\n }\n disableEditMode() {\n this.#isInEditMode = false;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n #addFocusListeners() {\n if (this.#focusAC || !this.div) {\n return;\n }\n this.#focusAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#focusAC);\n this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n signal\n });\n this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n signal\n });\n }\n rebuild() {\n this.#addFocusListeners();\n }\n rotate(_angle) {}\n serializeDeleted() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n serialize(isForCopying = false, context = null) {\n unreachable(\"An editor must be serializable\");\n }\n static async deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n get hasBeenModified() {\n return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n }\n remove() {\n this.#focusAC?.abort();\n this.#focusAC = null;\n if (!this.isEmpty()) {\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n if (this.#telemetryTimeouts) {\n for (const timeout of this.#telemetryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.#telemetryTimeouts = null;\n }\n this.parent = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n bindEvents(this, this.div, [\"keydown\"]);\n }\n }\n get toolbarPosition() {\n return null;\n }\n keydown(event) {\n if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n const signal = this._uiManager._signal;\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown, {\n signal\n });\n div.addEventListener(\"blur\", boundResizerBlur, {\n signal\n });\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n signal\n });\n div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n if (nextFirstPosition !== firstPosition) {\n if (nextFirstPosition < firstPosition) {\n for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n this.#resizersDiv.append(this.#resizersDiv.firstChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\n }\n }\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstChild.focus({\n focusVisible: true\n });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n #resizerBlur(event) {\n if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n this.#stopResizing();\n }\n }\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n movementX: x,\n movementY: y\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n if (this.#savedDimensions) {\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n this.#savedDimensions = null;\n }\n }\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n select() {\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n if (!this._editToolbar) {\n this.addEditToolbar().then(() => {\n if (this.div?.classList.contains(\"selectedEditor\")) {\n this._editToolbar?.show();\n }\n });\n return;\n }\n this._editToolbar?.show();\n this.#altText?.toggleAltTextBadge(false);\n }\n unselect() {\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n this._uiManager.currentLayer.div.focus({\n preventScroll: true\n });\n }\n this._editToolbar?.hide();\n this.#altText?.toggleAltTextBadge(true);\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n enterInEditMode() {}\n getImageForAltText() {\n return null;\n }\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n setAspectRatio(width, height) {\n this.#keepAspectRatio = true;\n const aspectRatio = width / height;\n const {\n style\n } = this.div;\n style.aspectRatio = aspectRatio;\n style.height = \"auto\";\n }\n static get MIN_SIZE() {\n return 16;\n }\n static canCreateNewEmptyEditor() {\n return true;\n }\n get telemetryInitialData() {\n return {\n action: \"added\"\n };\n }\n get telemetryFinalData() {\n return null;\n }\n _reportTelemetry(data, mustWait = false) {\n if (mustWait) {\n this.#telemetryTimeouts ||= new Map();\n const {\n action\n } = data;\n let timeout = this.#telemetryTimeouts.get(action);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n this._reportTelemetry(data);\n this.#telemetryTimeouts.delete(action);\n if (this.#telemetryTimeouts.size === 0) {\n this.#telemetryTimeouts = null;\n }\n }, AnnotationEditor._telemetryTimeout);\n this.#telemetryTimeouts.set(action, timeout);\n return;\n }\n data.type ||= this.editorType;\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data\n }\n });\n }\n show(visible = this._isVisible) {\n this.div.classList.toggle(\"hidden\", !visible);\n this._isVisible = visible;\n }\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n this.#disabled = false;\n }\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n this.#disabled = true;\n }\n renderAnnotationElement(annotation) {\n let content = annotation.container.querySelector(\".annotationContent\");\n if (!content) {\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n annotation.container.prepend(content);\n } else if (content.nodeName === \"CANVAS\") {\n const canvas = content;\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n canvas.before(content);\n }\n return content;\n }\n resetAnnotationElement(annotation) {\n const {\n firstChild\n } = annotation.container;\n if (firstChild?.nodeName === \"DIV\" && firstChild.classList.contains(\"annotationContent\")) {\n firstChild.remove();\n }\n }\n}\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return this.serializeDeleted();\n }\n}\n\n;// ./src/shared/murmurhash3.js\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n;// ./src/display/annotation_storage.js\n\n\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined\n});\nclass AnnotationStorage {\n #modified = false;\n #modifiedIds = null;\n #storage = new Map();\n constructor() {\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n if (value instanceof AnnotationEditor && typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n getAll() {\n return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n }\n setAll(obj) {\n for (const [key, val] of Object.entries(obj)) {\n this.setValue(key, val);\n }\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new MurmurHash3_64(),\n transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n if (hasBitmap) {\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n return map.size > 0 ? {\n map,\n hash: hash.hexdigest(),\n transfer\n } : SerializableEmpty;\n }\n get editorStats() {\n let stats = null;\n const typeToEditor = new Map();\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n continue;\n }\n const editorStats = value.telemetryFinalData;\n if (!editorStats) {\n continue;\n }\n const {\n type\n } = editorStats;\n if (!typeToEditor.has(type)) {\n typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n }\n stats ||= Object.create(null);\n const map = stats[type] ||= new Map();\n for (const [key, val] of Object.entries(editorStats)) {\n if (key === \"type\") {\n continue;\n }\n let counters = map.get(key);\n if (!counters) {\n counters = new Map();\n map.set(key, counters);\n }\n const count = counters.get(val) ?? 0;\n counters.set(val, count + 1);\n }\n }\n for (const [type, editor] of typeToEditor) {\n stats[type] = editor.computeTelemetryFinalData(stats[type]);\n }\n return stats;\n }\n resetModifiedIds() {\n this.#modifiedIds = null;\n }\n get modifiedIds() {\n if (this.#modifiedIds) {\n return this.#modifiedIds;\n }\n const ids = [];\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor) || !value.annotationElementId || !value.serialize()) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash: ids.join(\",\")\n };\n }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n constructor(parent) {\n super();\n const {\n map,\n hash,\n transfer\n } = parent.serializable;\n const clone = structuredClone(map, transfer ? {\n transfer\n } : null);\n this.#serializable = {\n map: clone,\n hash,\n transfer\n };\n }\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n get modifiedIds() {\n return shadow(this, \"modifiedIds\", {\n ids: new Set(),\n hash: \"\"\n });\n }\n}\n\n;// ./src/display/font_loader.js\n\nclass FontLoader {\n #systemFonts = new Set();\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont({\n systemFontInfo: info,\n _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(!this.disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n _inspectFont?.(info);\n } catch {\n warn(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n let supported = false;\n if (isNodeJS) {\n supported = true;\n } else if (typeof navigator !== \"undefined\" && typeof navigator?.userAgent === \"string\" && /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)) {\n supported = true;\n }\n return shadow(this, \"isSyncFontLoadingSupported\", supported);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return shadow(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\n if (++called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nclass FontFaceObject {\n constructor(translatedData, {\n disableFontFace = false,\n inspectFont = null\n }) {\n this.compiledGlyphs = Object.create(null);\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.disableFontFace = disableFontFace === true;\n this._inspectFont = inspectFont;\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const url = `url(data:${this.mimetype};base64,${toBase64Util(this.data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n let cmds;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n if (!Array.isArray(cmds) || cmds.length === 0) {\n return this.compiledGlyphs[character] = function (c, size) {};\n }\n const commands = [];\n for (let i = 0, ii = cmds.length; i < ii;) {\n switch (cmds[i++]) {\n case FontRenderOps.BEZIER_CURVE_TO:\n {\n const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\n commands.push(ctx => ctx.bezierCurveTo(a, b, c, d, e, f));\n i += 6;\n }\n break;\n case FontRenderOps.MOVE_TO:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.moveTo(a, b));\n i += 2;\n }\n break;\n case FontRenderOps.LINE_TO:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.lineTo(a, b));\n i += 2;\n }\n break;\n case FontRenderOps.QUADRATIC_CURVE_TO:\n {\n const [a, b, c, d] = cmds.slice(i, i + 4);\n commands.push(ctx => ctx.quadraticCurveTo(a, b, c, d));\n i += 4;\n }\n break;\n case FontRenderOps.RESTORE:\n commands.push(ctx => ctx.restore());\n break;\n case FontRenderOps.SAVE:\n commands.push(ctx => ctx.save());\n break;\n case FontRenderOps.SCALE:\n assert(commands.length === 2, \"Scale command is only valid at the third position.\");\n break;\n case FontRenderOps.TRANSFORM:\n {\n const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\n commands.push(ctx => ctx.transform(a, b, c, d, e, f));\n i += 6;\n }\n break;\n case FontRenderOps.TRANSLATE:\n {\n const [a, b] = cmds.slice(i, i + 2);\n commands.push(ctx => ctx.translate(a, b));\n i += 2;\n }\n break;\n }\n }\n return this.compiledGlyphs[character] = function glyphDrawer(ctx, size) {\n commands[0](ctx);\n commands[1](ctx);\n ctx.scale(size, -size);\n for (let i = 2, ii = commands.length; i < ii; i++) {\n commands[i](ctx);\n }\n };\n }\n}\n\n;// ./src/display/canvas_factory.js\n\nclass BaseCanvasFactory {\n #enableHWA = false;\n constructor({\n enableHWA = false\n }) {\n this.#enableHWA = enableHWA;\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\", {\n willReadFrequently: !this.#enableHWA\n })\n };\n }\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document,\n enableHWA = false\n }) {\n super({\n enableHWA\n });\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\n;// ./src/display/cmap_reader_factory.js\n\n\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = true\n }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\");\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n return this._fetch(url).then(cMapData => ({\n cMapData,\n isCompressed: this.isCompressed\n })).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n const data = await fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\");\n return data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data);\n }\n}\n\n;// ./src/display/filter_factory.js\n\n\nclass BaseFilterFactory {\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addAlphaFilter(map) {\n return \"none\";\n }\n addLuminosityFilter(map) {\n return \"none\";\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n destroy(keepHCM = false) {}\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n #baseUrl;\n #_cache;\n #_defs;\n #docId;\n #document;\n #_hcmCache;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n }) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #hcmCache() {\n return this.#_hcmCache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n #createTables(maps) {\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n const table = buffer.join(\",\");\n return [table, table, table];\n }\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n }\n #createUrl(id) {\n if (this.#baseUrl === undefined) {\n this.#baseUrl = \"\";\n const url = this.#document.URL;\n if (url !== this.#document.baseURI) {\n if (isDataScheme(url)) {\n warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n } else {\n this.#baseUrl = url.split(\"#\", 1)[0];\n }\n }\n }\n return `url(${this.#baseUrl}#${id})`;\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n const [tableR, tableG, tableB] = this.#createTables(maps);\n const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n const filterName = \"base\";\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return info.url;\n }\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n addAlphaFilter(map) {\n let value = this.#cache.get(map);\n if (value) {\n return value;\n }\n const [tableA] = this.#createTables([map]);\n const key = `alpha_${tableA}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapAlphaConversion(tableA, filter);\n return url;\n }\n addLuminosityFilter(map) {\n let value = this.#cache.get(map || \"luminosity\");\n if (value) {\n return value;\n }\n let tableA, key;\n if (map) {\n [tableA] = this.#createTables([map]);\n key = `luminosity_${tableA}`;\n } else {\n key = \"luminosity\";\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addLuminosityConversion(filter);\n if (map) {\n this.#addTransferMapAlphaConversion(tableA, filter);\n }\n return url;\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#defs.style.color = \"\";\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#hcmCache.size !== 0) {\n return;\n }\n if (this.#_defs) {\n this.#_defs.parentNode.parentNode.remove();\n this.#_defs = null;\n }\n if (this.#_cache) {\n this.#_cache.clear();\n this.#_cache = null;\n }\n this.#id = 0;\n }\n #addLuminosityConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n filter.append(feColorMatrix);\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #addTransferMapAlphaConversion(aTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n }\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\n\n;// ./src/display/standard_fontdata_factory.js\n\n\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `standardFontDataUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/node_utils.js\n\n\n\n\n\nif (isNodeJS) {\n var packageCapability = Promise.withResolvers();\n var packageMap = null;\n const loadPackages = async () => {\n const fs = await import(/*webpackIgnore: true*/\"fs\"),\n http = await import(/*webpackIgnore: true*/\"http\"),\n https = await import(/*webpackIgnore: true*/\"https\"),\n url = await import(/*webpackIgnore: true*/\"url\");\n let canvas, path2d;\n return new Map(Object.entries({\n fs,\n http,\n https,\n url,\n canvas,\n path2d\n }));\n };\n loadPackages().then(map => {\n packageMap = map;\n packageCapability.resolve();\n }, reason => {\n warn(`loadPackages: ${reason}`);\n packageMap = new Map();\n packageCapability.resolve();\n });\n}\nclass NodePackages {\n static get promise() {\n return packageCapability.promise;\n }\n static get(name) {\n return packageMap?.get(name);\n }\n}\nasync function node_utils_fetchData(url) {\n const fs = NodePackages.get(\"fs\");\n const data = await fs.promises.readFile(url);\n return new Uint8Array(data);\n}\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const canvas = NodePackages.get(\"canvas\");\n return canvas.createCanvas(width, height);\n }\n}\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\n\n;// ./src/display/pattern_helper.js\n\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\nclass BaseShadingPattern {\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[7];\n this._background = IR[8];\n this.matrix = null;\n }\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight);\n const tmpCtx = tmpCanvas.context;\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n if (pathType === PathType.SHADING) {\n scale = Util.singularValueDecompose2dScale(getCurrentTransform(ctx));\n } else {\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (this.matrix) {\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3000;\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner) {\n const {\n bbox,\n operatorList,\n paintType,\n tilingType,\n color,\n canvasGraphicsFactory\n } = this;\n let {\n xstep,\n ystep\n } = this;\n xstep = Math.abs(xstep);\n ystep = Math.abs(ystep);\n info(\"TilingType: \" + tilingType);\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n const width = x1 - x0;\n const height = y1 - y0;\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = Util.singularValueDecompose2dScale(this.baseTransform);\n const combinedScaleX = matrixScale[0] * curMatrixScale[0];\n const combinedScaleY = matrixScale[1] * curMatrixScale[1];\n let canvasWidth = width,\n canvasHeight = height,\n redrawHorizontally = false,\n redrawVertically = false;\n const xScaledStep = Math.ceil(xstep * combinedScaleX);\n const yScaledStep = Math.ceil(ystep * combinedScaleY);\n const xScaledWidth = Math.ceil(width * combinedScaleX);\n const yScaledHeight = Math.ceil(height * combinedScaleY);\n if (xScaledStep >= xScaledWidth) {\n canvasWidth = xstep;\n } else {\n redrawHorizontally = true;\n }\n if (yScaledStep >= yScaledHeight) {\n canvasHeight = ystep;\n } else {\n redrawVertically = true;\n }\n const dimx = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n this.clipBbox(graphics, x0, y0, x1, y1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n tmpCtx.restore();\n if (redrawHorizontally || redrawVertically) {\n const image = tmpCanvas.canvas;\n if (redrawHorizontally) {\n canvasWidth = xstep;\n }\n if (redrawVertically) {\n canvasHeight = ystep;\n }\n const dimx2 = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy2 = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const xSize = dimx2.size;\n const ySize = dimy2.size;\n const tmpCanvas2 = owner.cachedCanvases.getCanvas(\"pattern-workaround\", xSize, ySize);\n const tmpCtx2 = tmpCanvas2.context;\n const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n for (let i = 0; i <= ii; i++) {\n for (let j = 0; j <= jj; j++) {\n tmpCtx2.drawImage(image, xSize * i, ySize * j, xSize, ySize, 0, 0, xSize, ySize);\n }\n }\n return {\n canvas: tmpCanvas2.canvas,\n scaleX: dimx2.scale,\n scaleY: dimy2.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return {\n scale,\n size\n };\n }\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.current.updateRectMinMax(getCurrentTransform(graphics.ctx), [x0, y0, x1, y1]);\n graphics.clip();\n graphics.endPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n getPattern(ctx, owner, inverse, pathType) {\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\n\n;// ./src/shared/image_utils.js\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len32 = src.length >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n }\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n dest[destPos + 3] = s3 << 8 | 0xff;\n }\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// ./src/display/canvas.js\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst MAX_SIZE_TO_COMPILE = 1000;\nconst FULL_CHUNK_HEIGHT = 16;\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n return canvasEntry;\n }\n delete(id) {\n delete this.cache[id];\n }\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nfunction compileType3Glyph(imgData) {\n const {\n width,\n height\n } = imgData;\n if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n const width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n const lineSize = width + 7 & ~7;\n let data = new Uint8Array(lineSize * height),\n pos = 0;\n for (const elem of imgData.data) {\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const path = new Path2D();\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n path.moveTo(p % width1, i);\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n path.lineTo(p % width1, p / width1 | 0);\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n --i;\n }\n data = null;\n points = null;\n const drawOutline = function (c) {\n c.save();\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.fill(path);\n c.beginPath();\n c.restore();\n };\n return drawOutline;\n}\nclass CanvasExtraState {\n constructor(width, height) {\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = \"none\";\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n updatePathMinMax(transform, x, y) {\n [x, y] = Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n updateRectMinMax(transform, rect) {\n const p1 = Util.applyTransform(rect, transform);\n const p2 = Util.applyTransform(rect.slice(2), transform);\n const p3 = Util.applyTransform([rect[0], rect[3]], transform);\n const p4 = Util.applyTransform([rect[2], rect[1]], transform);\n this.minX = Math.min(this.minX, p1[0], p2[0], p3[0], p4[0]);\n this.minY = Math.min(this.minY, p1[1], p2[1], p3[1], p4[1]);\n this.maxX = Math.max(this.maxX, p1[0], p2[0], p3[0], p4[0]);\n this.maxY = Math.max(this.maxY, p1[1], p2[1], p3[1], p4[1]);\n }\n updateScalingPathMinMax(transform, minMax) {\n Util.scaleMinMax(transform, minMax);\n this.minX = Math.min(this.minX, minMax[0]);\n this.minY = Math.min(this.minY, minMax[1]);\n this.maxX = Math.max(this.maxX, minMax[2]);\n this.maxY = Math.max(this.maxY, minMax[3]);\n }\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax);\n if (minMax) {\n return;\n }\n this.updateRectMinMax(transform, box);\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n const scale = Util.singularValueDecompose2dScale(transform);\n const xStrokePad = scale[0] * this.lineWidth / 2;\n const yStrokePad = scale[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minX === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n if (imgData.kind === util_ImageKind.GRAYSCALE_1BPP) {\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = width + 7 >> 3;\n const white = 0xffffffff;\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === util_ImageKind.RGBA_32BPP) {\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === util_ImageKind.RGB_24BPP) {\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n if (!isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n const scale = Util.singularValueDecompose2dScale(transform);\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS);\n return scale[0] <= actualScale && scale[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.processingType3 = null;\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n fnId = fnArray[i];\n if (fnId !== OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.current.activeSMask = null;\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width ?? img.displayWidth;\n const height = img.height ?? img.displayHeight;\n let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight\n };\n }\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox([0, 0, width, height], maskToCanvas);\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(width) {\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(intent) {}\n setFlatness(flatness) {}\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.current.fillAlpha = value;\n this.ctx.globalAlpha = value;\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform(...getCurrentTransform(this.suspendedCtx));\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n }\n genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n let maskCanvas = maskCtx.canvas;\n let maskX = layerOffsetX - maskOffsetX;\n let maskY = layerOffsetY - maskOffsetY;\n if (backdrop) {\n const backdropRGB = Util.makeHexColor(...backdrop);\n if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {\n const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n const ctx = canvas.context;\n ctx.drawImage(maskCanvas, -maskX, -maskY);\n ctx.globalCompositeOperation = \"destination-atop\";\n ctx.fillStyle = backdropRGB;\n ctx.fillRect(0, 0, width, height);\n ctx.globalCompositeOperation = \"source-over\";\n maskCanvas = canvas.canvas;\n maskX = maskY = 0;\n } else {\n maskCtx.save();\n maskCtx.globalAlpha = 1;\n maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip = new Path2D();\n clip.rect(maskX, maskY, width, height);\n maskCtx.clip(clip);\n maskCtx.globalCompositeOperation = \"destination-atop\";\n maskCtx.fillStyle = backdropRGB;\n maskCtx.fillRect(maskX, maskY, width, height);\n maskCtx.restore();\n }\n }\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n if (subtype === \"Alpha\" && transferMap) {\n layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n } else if (subtype === \"Luminosity\") {\n layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n }\n const clip = new Path2D();\n clip.rect(layerOffsetX, layerOffsetY, width, height);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(maskCanvas, maskX, maskY, width, height, layerOffsetX, layerOffsetY, width, height);\n layerCtx.restore();\n }\n save() {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n restore() {\n if (this.stateStack.length === 0 && this.inSMaskMode) {\n this.endSMaskMode();\n }\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(ops, args, minMax) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n const currentTransform = getCurrentTransform(ctx);\n const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n if (!isScalingMatrix) {\n current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n }\n ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);\n j += 6;\n break;\n case OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n }\n current.setCurrentPoint(x, y);\n }\n closePath() {\n this.ctx.closePath();\n }\n stroke(consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n this.rescaleAndStroke(false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(true);\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n fill(consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n this.consumePath();\n }\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n endPath() {\n this.consumePath();\n }\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n ctx.save();\n ctx.beginPath();\n for (const path of paths) {\n ctx.setTransform(...path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n setLeading(leading) {\n this.current.leading = -leading;\n }\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n paintChar(character, x, y, patternTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n let addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (patternTransform) {\n ctx.setTransform(...patternTransform);\n }\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fill();\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n addToPath\n });\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n patternTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n ctx.fillText(chars.join(\"\"), 0, 0);\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n return undefined;\n }\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n if (font.remeasure && width > 0) {\n const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n return undefined;\n }\n showType3Text(glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y);\n ctx.scale(textHScale, fontDirection);\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n setCharWidth(xWidth, yWidth) {}\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip();\n this.endPath();\n }\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n })\n };\n pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(r, g, b) {\n this.ctx.strokeStyle = this.current.strokeColor = Util.makeHexColor(r, g, b);\n }\n setStrokeTransparent() {\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n }\n setFillRGBColor(r, g, b) {\n this.ctx.fillStyle = this.current.fillColor = Util.makeHexColor(r, g, b);\n this.current.patternFill = false;\n }\n setFillTransparent() {\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n }\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.getObject(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox([0, 0, width, height], inv);\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updateRectMinMax(getCurrentTransform(this.ctx), bbox);\n this.clip();\n this.endPath();\n }\n }\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n const currentTransform = getCurrentTransform(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n let bounds = Util.getAxialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx));\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n const groupCtx = scratchCanvas.context;\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n } else {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore();\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (rect) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx));\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.endPath();\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.clip();\n this.ctx.beginPath();\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(...transform);\n this.transform(...matrix);\n }\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const glyph = this.processingType3;\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\n if (glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n }\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(img.data, img);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = getCurrentTransform(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n const [x, y] = Util.applyTransform([0, 0], trans);\n ctx.drawImage(mask.canvas, x, y);\n }\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return tmpCanvas.canvas;\n }\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save();\n if (!isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore();\n }\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(tag) {}\n markPointProps(tag, properties) {}\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat() {}\n endCompat() {}\n consumePath(clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(saveRestore) {\n const {\n ctx\n } = this;\n const {\n lineWidth\n } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n ctx.lineWidth = lineWidth || 1;\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.stroke();\n if (saveRestore) {\n ctx.restore();\n }\n }\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n;// ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n static #port = null;\n static #src = \"\";\n static get workerPort() {\n return this.#port;\n }\n static set workerPort(val) {\n if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n static get workerSrc() {\n return this.#src;\n }\n static set workerSrc(val) {\n if (typeof val !== \"string\") {\n throw new Error(\"Invalid `workerSrc` type.\");\n }\n this.#src = val;\n }\n}\n\n;// ./src/shared/message_handler.js\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction wrapReason(reason) {\n if (!(reason instanceof Error || typeof reason === \"object\" && reason !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\nclass MessageHandler {\n #messageAC = new AbortController();\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n signal: this.#messageAC.signal\n });\n }\n #onMessage({\n data\n }) {\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(function (result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n new Promise(function (resolve) {\n resolve(streamSink.onPull?.());\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n new Promise(function (resolve) {\n resolve(streamSink.onCancel?.(wrapReason(data.reason)));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.#messageAC?.abort();\n this.#messageAC = null;\n }\n}\n\n;// ./src/display/metadata.js\n\nclass Metadata {\n #metadataMap;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n getAll() {\n return objectFromMap(this.#metadataMap);\n }\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\n\n;// ./src/display/optional_content_config.js\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #isDisplay = false;\n #isPrint = false;\n #userSet = false;\n #visible = true;\n constructor(renderingIntent, {\n name,\n intent,\n usage,\n rbGroups\n }) {\n this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n this.name = name;\n this.intent = intent;\n this.usage = usage;\n this.rbGroups = rbGroups;\n }\n get visible() {\n if (this.#userSet) {\n return this.#visible;\n }\n if (!this.#visible) {\n return false;\n }\n const {\n print,\n view\n } = this.usage;\n if (this.#isDisplay) {\n return view?.viewState !== \"OFF\";\n } else if (this.#isPrint) {\n return print?.printState !== \"OFF\";\n }\n return true;\n }\n _setVisible(internal, visible, userSet = false) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#userSet = userSet;\n this.#visible = visible;\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = new Map();\n #initialHash = null;\n #order = null;\n constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n this.renderingIntent = renderingIntent;\n this.name = null;\n this.creator = null;\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(renderingIntent, group));\n }\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n this.#initialHash = this.getHash();\n }\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n info(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n setVisibility(id, visible = true, preserveRB = true) {\n const group = this.#groups.get(id);\n if (!group) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n if (preserveRB && visible && group.rbGroups.length) {\n for (const rbGroup of group.rbGroups) {\n for (const otherId of rbGroup) {\n if (otherId !== id) {\n this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n }\n }\n }\n }\n group._setVisible(INTERNAL, !!visible, true);\n this.#cachedGetHash = null;\n }\n setOCGState({\n state,\n preserveRB\n }) {\n let operator;\n for (const elem of state) {\n switch (elem) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n operator = elem;\n continue;\n }\n const group = this.#groups.get(elem);\n if (!group) {\n continue;\n }\n switch (operator) {\n case \"ON\":\n this.setVisibility(elem, true, preserveRB);\n break;\n case \"OFF\":\n this.setVisibility(elem, false, preserveRB);\n break;\n case \"Toggle\":\n this.setVisibility(elem, !group.visible, preserveRB);\n break;\n }\n }\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n getGroups() {\n return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\n }\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n}\n\n;// ./src/display/transport_stream.js\n\n\nclass PDFDataTransportStream {\n constructor(pdfDataRangeTransport, {\n disableRange = false,\n disableStream = false\n }) {\n assert(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n const {\n length,\n initialData,\n progressiveDone,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n if (initialData?.length > 0) {\n const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n pdfDataRangeTransport.transportReady();\n }\n _onReceiveData({\n begin,\n chunk\n }) {\n const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n if (begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n _onProgress(evt) {\n if (evt.total === undefined) {\n this._rangeReaders[0]?.onProgress?.({\n loaded: evt.loaded\n });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\n;// ./src/display/content_disposition.js\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n;// ./src/display/network_utils.js\n\n\n\nfunction createHeaders(isHttp, httpHeaders) {\n const headers = new Headers();\n if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n return headers;\n }\n for (const key in httpHeaders) {\n const val = httpHeaders[key];\n if (val !== undefined) {\n headers.append(key, val);\n }\n }\n return headers;\n}\nfunction validateRangeRequestCapabilities({\n responseHeaders,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n returnValues.suggestedLength = length;\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\nfunction extractFilenameFromHeader(responseHeaders) {\n const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseStatusError(status, url) {\n if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n return new MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status);\n}\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n;// ./src/display/fetch_stream.js\n\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n warn(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.headers = createHeaders(this.isHttp, source.httpHeaders);\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n const headers = new Headers(stream.headers);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n const responseHeaders = response.headers;\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = Promise.withResolvers();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n const headers = new Headers(stream.headers);\n headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n;// ./src/display/network.js\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\nclass NetworkManager {\n constructor({\n url,\n httpHeaders,\n withCredentials\n }) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.headers = createHeaders(this.isHttp, httpHeaders);\n this.withCredentials = withCredentials || false;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end\n };\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n }\n requestFull(listeners) {\n return this.request(listeners);\n }\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const [key, val] of this.headers) {\n xhr.setRequestHeader(key, val);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n pendingRequest.onProgress?.(evt);\n }\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n delete this.pendingRequests[xhrId];\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const chunk = network_getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source);\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n const responseHeaders = new Headers(fullRequestXhr.getAllResponseHeaders().trim().split(/[\\r\\n]+/).map(x => {\n const [key, ...val] = x.split(\": \");\n return [key, val.join(\": \")];\n }));\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n this._headersCapability.resolve();\n }\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n this._headersCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n const args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n _close() {\n this.onClosed?.(this);\n }\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._close();\n }\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\n;// ./src/display/node_stream.js\n\n\n\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\nfunction parseUrlOrPath(sourceUrl) {\n if (urlRegex.test(sourceUrl)) {\n return new URL(sourceUrl);\n }\n const url = NodePackages.get(\"url\");\n return new URL(url.pathToFileURL(sourceUrl));\n}\nfunction createRequest(url, headers, callback) {\n if (url.protocol === \"http:\") {\n const http = NodePackages.get(\"http\");\n return http.request(url, {\n headers\n }, callback);\n }\n const https = NodePackages.get(\"https\");\n return https.request(url, {\n headers\n }, callback);\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrlOrPath(source.url);\n this.isHttp = this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n this.isFsUrl = this.url.protocol === \"file:\";\n this.headers = createHeaders(this.isHttp, source.httpHeaders);\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n this._headersCapability = Promise.withResolvers();\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n const headers = Object.fromEntries(stream.headers);\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(response);\n const responseHeaders = new Headers(this._readableStream.headers);\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n };\n this._request = createRequest(this._url, headers, handleResponse);\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n this._request.end();\n }\n}\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n const headers = Object.fromEntries(stream.headers);\n headers.Range = `bytes=${start}-${end - 1}`;\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n this._setReadableStream(response);\n };\n this._request = createRequest(this._url, headers, handleResponse);\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n const fs = NodePackages.get(\"fs\");\n fs.promises.lstat(this._url).then(stat => {\n this._contentLength = stat.size;\n this._setReadableStream(fs.createReadStream(this._url));\n this._headersCapability.resolve();\n }, error => {\n if (error.code === \"ENOENT\") {\n error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n });\n }\n}\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n const fs = NodePackages.get(\"fs\");\n this._setReadableStream(fs.createReadStream(this._url, {\n start,\n end: end - 1\n }));\n }\n}\n\n;// ./src/display/text_layer.js\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nclass TextLayer {\n #capability = Promise.withResolvers();\n #container = null;\n #disableProcessItems = false;\n #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n #lang = null;\n #layoutTextParams = null;\n #pageHeight = 0;\n #pageWidth = 0;\n #reader = null;\n #rootContainer = null;\n #rotation = 0;\n #scale = 0;\n #styleCache = Object.create(null);\n #textContentItemsStr = [];\n #textContentSource = null;\n #textDivs = [];\n #textDivProperties = new WeakMap();\n #transform = null;\n static #ascentCache = new Map();\n static #canvasContexts = new Map();\n static #canvasCtxFonts = new WeakMap();\n static #minFontSize = null;\n static #pendingTextLayers = new Set();\n constructor({\n textContentSource,\n container,\n viewport\n }) {\n if (textContentSource instanceof ReadableStream) {\n this.#textContentSource = textContentSource;\n } else if (typeof textContentSource === \"object\") {\n this.#textContentSource = new ReadableStream({\n start(controller) {\n controller.enqueue(textContentSource);\n controller.close();\n }\n });\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n this.#container = this.#rootContainer = container;\n this.#scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n this.#rotation = viewport.rotation;\n this.#layoutTextParams = {\n div: null,\n properties: null,\n ctx: null\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this.#pageWidth = pageWidth;\n this.#pageHeight = pageHeight;\n TextLayer.#ensureMinFontSizeComputed();\n setLayerDimensions(container, viewport);\n this.#capability.promise.finally(() => {\n TextLayer.#pendingTextLayers.delete(this);\n this.#layoutTextParams = null;\n this.#styleCache = null;\n }).catch(() => {});\n }\n static get fontFamilyMap() {\n const {\n isWindows,\n isFirefox\n } = util_FeatureTest.platform;\n return shadow(this, \"fontFamilyMap\", new Map([[\"sans-serif\", `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`], [\"monospace\", `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`]]));\n }\n render() {\n const pump = () => {\n this.#reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n this.#capability.resolve();\n return;\n }\n this.#lang ??= value.lang;\n Object.assign(this.#styleCache, value.styles);\n this.#processItems(value.items);\n pump();\n }, this.#capability.reject);\n };\n this.#reader = this.#textContentSource.getReader();\n TextLayer.#pendingTextLayers.add(this);\n pump();\n return this.#capability.promise;\n }\n update({\n viewport,\n onBefore = null\n }) {\n const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n const rotation = viewport.rotation;\n if (rotation !== this.#rotation) {\n onBefore?.();\n this.#rotation = rotation;\n setLayerDimensions(this.#rootContainer, {\n rotation\n });\n }\n if (scale !== this.#scale) {\n onBefore?.();\n this.#scale = scale;\n const params = {\n div: null,\n properties: null,\n ctx: TextLayer.#getCtx(this.#lang)\n };\n for (const div of this.#textDivs) {\n params.properties = this.#textDivProperties.get(div);\n params.div = div;\n this.#layout(params);\n }\n }\n }\n cancel() {\n const abortEx = new AbortException(\"TextLayer task cancelled.\");\n this.#reader?.cancel(abortEx).catch(() => {});\n this.#reader = null;\n this.#capability.reject(abortEx);\n }\n get textDivs() {\n return this.#textDivs;\n }\n get textContentItemsStr() {\n return this.#textContentItemsStr;\n }\n #processItems(items) {\n if (this.#disableProcessItems) {\n return;\n }\n this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n const textDivs = this.#textDivs,\n textContentItemsStr = this.#textContentItemsStr;\n for (const item of items) {\n if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n warn(\"Ignoring additional textDivs for performance reasons.\");\n this.#disableProcessItems = true;\n return;\n }\n if (item.str === undefined) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this.#container;\n this.#container = document.createElement(\"span\");\n this.#container.classList.add(\"markedContent\");\n if (item.id !== null) {\n this.#container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this.#container);\n } else if (item.type === \"endMarkedContent\") {\n this.#container = this.#container.parentNode;\n }\n continue;\n }\n textContentItemsStr.push(item.str);\n this.#appendText(item);\n }\n }\n #appendText(geom) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n this.#textDivs.push(textDiv);\n const tx = Util.transform(this.#transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = this.#styleCache[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n let fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, this.#lang);\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n const scaleFactorStr = \"calc(var(--scale-factor)*\";\n const divStyle = textDiv.style;\n if (this.#container === this.#rootContainer) {\n divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n } else {\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${(TextLayer.#minFontSize * fontHeight).toFixed(2)}px)`;\n divStyle.fontFamily = fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (this.#fontInspectorEnabled) {\n textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n this.#textDivProperties.set(textDiv, textDivProperties);\n this.#layoutTextParams.div = textDiv;\n this.#layoutTextParams.properties = textDivProperties;\n this.#layout(this.#layoutTextParams);\n if (textDivProperties.hasText) {\n this.#container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this.#container.append(br);\n }\n }\n #layout(params) {\n const {\n div,\n properties,\n ctx\n } = params;\n const {\n style\n } = div;\n let transform = \"\";\n if (TextLayer.#minFontSize > 1) {\n transform = `scale(${1 / TextLayer.#minFontSize})`;\n }\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n transform = `scaleX(${canvasWidth * this.#scale / width}) ${transform}`;\n }\n }\n if (properties.angle !== 0) {\n transform = `rotate(${properties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n style.transform = transform;\n }\n }\n static cleanup() {\n if (this.#pendingTextLayers.size > 0) {\n return;\n }\n this.#ascentCache.clear();\n for (const {\n canvas\n } of this.#canvasContexts.values()) {\n canvas.remove();\n }\n this.#canvasContexts.clear();\n }\n static #getCtx(lang = null) {\n let ctx = this.#canvasContexts.get(lang ||= \"\");\n if (!ctx) {\n const canvas = document.createElement(\"canvas\");\n canvas.className = \"hiddenCanvasElement\";\n canvas.lang = lang;\n document.body.append(canvas);\n ctx = canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: true\n });\n this.#canvasContexts.set(lang, ctx);\n this.#canvasCtxFonts.set(ctx, {\n size: 0,\n family: \"\"\n });\n }\n return ctx;\n }\n static #ensureCtxFont(ctx, size, family) {\n const cached = this.#canvasCtxFonts.get(ctx);\n if (size === cached.size && family === cached.family) {\n return;\n }\n ctx.font = `${size}px ${family}`;\n cached.size = size;\n cached.family = family;\n }\n static #ensureMinFontSizeComputed() {\n if (this.#minFontSize !== null) {\n return;\n }\n const div = document.createElement(\"div\");\n div.style.opacity = 0;\n div.style.lineHeight = 1;\n div.style.fontSize = \"1px\";\n div.style.position = \"absolute\";\n div.textContent = \"X\";\n document.body.append(div);\n this.#minFontSize = div.getBoundingClientRect().height;\n div.remove();\n }\n static #getAscent(fontFamily, lang) {\n const cachedAscent = this.#ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = this.#getCtx(lang);\n ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n const metrics = ctx.measureText(\"\");\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n this.#ascentCache.set(fontFamily, ratio);\n ctx.canvas.width = ctx.canvas.height = 0;\n return ratio;\n }\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n descent = 0;\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.canvas.width = ctx.canvas.height = 0;\n const ratio = ascent ? ascent / (ascent + descent) : DEFAULT_FONT_ASCENT;\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n}\n\n;// ./src/display/xfa_text.js\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\n\n;// ./src/display/api.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nconst DELAYED_CLEANUP_TIMEOUT = 5000;\nconst DefaultCanvasFactory = isNodeJS ? NodeCanvasFactory : DOMCanvasFactory;\nconst DefaultCMapReaderFactory = isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory;\nconst DefaultFilterFactory = isNodeJS ? NodeFilterFactory : DOMFilterFactory;\nconst DefaultStandardFontDataFactory = isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory;\nfunction getDocument(src = {}) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = {\n url: src\n };\n } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n src = {\n data: src\n };\n }\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;\n const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n const standardFontDataUrl = typeof src.standardFontDataUrl === \"string\" ? src.standardFontDataUrl : null;\n const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n const isChrome = typeof src.isChrome === \"boolean\" ? src.isChrome : !util_FeatureTest.platform.isFirefox && typeof window !== \"undefined\" && !!window?.chrome;\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const CanvasFactory = src.CanvasFactory || DefaultCanvasFactory;\n const FilterFactory = src.FilterFactory || DefaultFilterFactory;\n const enableHWA = src.enableHWA === true;\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && cMapUrl && standardFontDataUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI);\n if (src.canvasFactory) {\n deprecated(\"`canvasFactory`-instance option, please use `CanvasFactory` instead.\");\n }\n if (src.filterFactory) {\n deprecated(\"`filterFactory`-instance option, please use `FilterFactory` instead.\");\n }\n const styleElement = null;\n setVerbosityLevel(verbosity);\n const transportFactory = {\n canvasFactory: new CanvasFactory({\n ownerDocument,\n enableHWA\n }),\n filterFactory: new FilterFactory({\n docId,\n ownerDocument\n }),\n cMapReaderFactory: useWorkerFetch ? null : new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked\n }),\n standardFontDataFactory: useWorkerFetch ? null : new StandardFontDataFactory({\n baseUrl: standardFontDataUrl\n })\n };\n if (!worker) {\n const workerParams = {\n verbosity,\n port: GlobalWorkerOptions.workerPort\n };\n worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"4.8.69\",\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n isChrome,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null\n }\n };\n const transportParams = {\n disableFontFace,\n fontExtraProperties,\n ownerDocument,\n pdfBug,\n styleElement,\n loadingParams: {\n disableAutoFetch,\n enableXfa\n }\n };\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(rangeTransport, {\n disableRange,\n disableStream\n });\n } else if (!data) {\n if (!url) {\n throw new Error(\"getDocument - no `url` parameter provided.\");\n }\n let NetworkStream;\n if (isNodeJS) {\n const isFetchSupported = typeof fetch !== \"undefined\" && typeof Response !== \"undefined\" && \"body\" in Response.prototype;\n NetworkStream = isFetchSupported && isValidFetchUrl(url) ? PDFFetchStream : PDFNodeStream;\n } else {\n NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : PDFNetworkStream;\n }\n networkStream = new NetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n }\n return workerIdPromise.then(workerId => {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const messageHandler = new MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n try {\n return new URL(val, window.location).href;\n } catch {\n if (isNodeJS && typeof val === \"string\") {\n return val;\n }\n }\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction isRefProxy(ref) {\n return typeof ref === \"object\" && Number.isInteger(ref?.num) && ref.num >= 0 && Number.isInteger(ref?.gen) && ref.gen >= 0;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n constructor() {\n this._capability = Promise.withResolvers();\n this._transport = null;\n this._worker = null;\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n this.destroyed = false;\n this.onPassword = null;\n this.onProgress = null;\n }\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\nclass PDFDataRangeTransport {\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = Promise.withResolvers();\n }\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this._readyCapability.resolve();\n }\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n}\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get canvasFactory() {\n return this._transport.canvasFactory;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getOptionalContentConfig(renderingIntent);\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n cachedPageNumber(ref) {\n return this._transport.cachedPageNumber(ref);\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nclass PDFPageProxy {\n #delayedCleanupTimeout = null;\n #pendingCleanup = false;\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._maybeCleanupAfterRender = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n isEditing = false\n }) {\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n const {\n renderingIntent,\n cacheKey\n } = intentArgs;\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n let intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(cacheKey, intentState);\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = Promise.withResolvers();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (this._maybeCleanupAfterRender || intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup(!intentPrint);\n if (error) {\n internalRenderTask.capability.reject(error);\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n if (globalThis.Stats?.enabled) {\n globalThis.Stats.add(this.pageNumber, this._stats);\n }\n }\n };\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext,\n viewport,\n transform,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isEditing = false\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = Promise.withResolvers();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n textContent.lang ??= value.lang;\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang: null\n };\n pump();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n if (intentState.opListReadCapability) {\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup(false);\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup(delayed = false) {\n this.#abortDelayedCleanup();\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n if (delayed) {\n this.#delayedCleanupTimeout = setTimeout(() => {\n this.#delayedCleanupTimeout = null;\n this.#tryCleanup(false);\n }, DELAYED_CLEANUP_TIMEOUT);\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n #abortDelayedCleanup() {\n if (this.#delayedCleanupTimeout) {\n clearTimeout(this.#delayedCleanupTimeout);\n this.#delayedCleanupTimeout = null;\n }\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup(true);\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n modifiedIds\n }) {\n const {\n map,\n transfer\n } = annotationStorageSerializable;\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n modifiedIds\n }, transfer);\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, reason => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup(true);\n }\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nclass LoopbackPort {\n #listeners = new Map();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const [listener] of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener, options = null) {\n let rmAbort = null;\n if (options?.signal instanceof AbortSignal) {\n const {\n signal\n } = options;\n if (signal.aborted) {\n warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n return;\n }\n const onAbort = () => this.removeEventListener(name, listener);\n rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n signal.addEventListener(\"abort\", onAbort);\n }\n this.#listeners.set(listener, rmAbort);\n }\n removeEventListener(name, listener) {\n const rmAbort = this.#listeners.get(listener);\n rmAbort?.();\n this.#listeners.delete(listener);\n }\n terminate() {\n for (const [, rmAbort] of this.#listeners) {\n rmAbort?.();\n }\n this.#listeners.clear();\n }\n}\nclass PDFWorker {\n static #fakeWorkerId = 0;\n static #isWorkerDisabled = false;\n static #workerPorts;\n static {\n if (isNodeJS) {\n this.#isWorkerDisabled = true;\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n this._isSameOrigin = (baseUrl, otherUrl) => {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false;\n }\n } catch {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n this._createCDNWrapper = url => {\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper], {\n type: \"text/javascript\"\n }));\n };\n }\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel()\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n this._readyCapability = Promise.withResolvers();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n if (port) {\n if (PDFWorker.#workerPorts?.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n get promise() {\n if (isNodeJS) {\n return Promise.all([NodePackages.promise, this._readyCapability.promise]);\n }\n return this._readyCapability.promise;\n }\n #resolve() {\n this._readyCapability.resolve();\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n get port() {\n return this._port;\n }\n get messageHandler() {\n return this._messageHandler;\n }\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {});\n this.#resolve();\n }\n _initialize() {\n if (PDFWorker.#isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n this._setupFakeWorker();\n return;\n }\n let {\n workerSrc\n } = PDFWorker;\n try {\n if (!PDFWorker._isSameOrigin(window.location.href, workerSrc)) {\n workerSrc = PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc, {\n type: \"module\"\n });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n ac.abort();\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this._setupFakeWorker();\n }\n };\n const ac = new AbortController();\n worker.addEventListener(\"error\", () => {\n if (!this._webWorker) {\n terminateEarly();\n }\n }, {\n signal: ac.signal\n });\n messageHandler.on(\"test\", data => {\n ac.abort();\n if (this.destroyed || !data) {\n terminateEarly();\n return;\n }\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n this.#resolve();\n });\n messageHandler.on(\"ready\", data => {\n ac.abort();\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch {\n this._setupFakeWorker();\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n this._setupFakeWorker();\n }\n _setupFakeWorker() {\n if (!PDFWorker.#isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorker.#isWorkerDisabled = true;\n }\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n const id = `fake${PDFWorker.#fakeWorkerId++}`;\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n this._messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this.#resolve();\n }).catch(reason => {\n this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts?.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n const cachedPort = this.#workerPorts?.get(params.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.fromPort - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n return this.#mainThreadWorkerMessageHandler;\n }\n const worker = await import(/*webpackIgnore: true*/this.workerSrc);\n return worker.WorkerMessageHandler;\n };\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nclass WorkerTransport {\n #methodPromises = new Map();\n #pageCache = new Map();\n #pagePromises = new Map();\n #pageRefCache = new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this.loadingParams = params.loadingParams;\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n this.destroyed = false;\n this.destroyCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = Promise.withResolvers();\n this.setupMessageHandler();\n }\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n this.#methodPromises.set(name, promise);\n return promise;\n }\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n let renderingIntent = RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = SerializableEmpty;\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isEditing) {\n renderingIntent += RenderingIntentFlag.IS_EDITING;\n }\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n const {\n ids: modifiedIds,\n hash: modifiedIdsHash\n } = annotationStorage.modifiedIds;\n const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n return {\n renderingIntent,\n cacheKey: cacheKeyBuf.join(\"_\"),\n annotationStorageSerializable,\n modifiedIds\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n this.#pageRefCache.clear();\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n TextLayer.cleanup();\n this._networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", async data => {\n await this._fullReader.headersReady;\n const {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n } = this._fullReader;\n if (!isStreamingSupported || !isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n this._fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n return {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n };\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n switch (ex.name) {\n case \"PasswordException\":\n reason = new PasswordException(ex.message, ex.code);\n break;\n case \"InvalidPDFException\":\n reason = new InvalidPDFException(ex.message);\n break;\n case \"MissingPDFException\":\n reason = new MissingPDFException(ex.message);\n break;\n case \"UnexpectedResponseException\":\n reason = new UnexpectedResponseException(ex.message, ex.status);\n break;\n case \"UnknownErrorException\":\n reason = new UnknownErrorException(ex.message, ex.details);\n break;\n default:\n unreachable(\"DocException - expected a valid Error.\");\n }\n loadingTask._capability.reject(reason);\n });\n messageHandler.on(\"PasswordRequest\", exception => {\n this.#passwordCapability = Promise.withResolvers();\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this.#passwordCapability.reject(ex);\n }\n } else {\n this.#passwordCapability.reject(new PasswordException(exception.message, exception.code));\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null;\n }\n if (this.commonObjs.has(id)) {\n return null;\n }\n switch (type) {\n case \"Font\":\n const {\n disableFontFace,\n fontExtraProperties,\n pdfBug\n } = this._params;\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n const inspectFont = pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new FontFaceObject(exportedData, {\n disableFontFace,\n inspectFont\n });\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!fontExtraProperties && font.data) {\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"CopyLocalImage\":\n const {\n imageRef\n } = exportedData;\n assert(imageRef, \"The imageRef must be defined.\");\n for (const pageProxy of this.#pageCache.values()) {\n for (const [, data] of pageProxy.objs) {\n if (data?.ref !== imageRef) {\n continue;\n }\n if (!data.dataLen) {\n return null;\n }\n this.commonObjs.resolve(id, structuredClone(data));\n return data.dataLen;\n }\n }\n break;\n case \"FontPath\":\n case \"Image\":\n case \"Pattern\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n return null;\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close();\n return;\n }\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n if (imageData?.dataLen > MAX_IMAGE_SIZE_TO_CACHE) {\n pageProxy._maybeCleanupAfterRender = true;\n }\n break;\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"FetchBuiltInCMap\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n if (!this.cMapReaderFactory) {\n throw new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\");\n }\n return this.cMapReaderFactory.fetch(data);\n });\n messageHandler.on(\"FetchStandardFontData\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n if (!this.standardFontDataFactory) {\n throw new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\");\n }\n return this.standardFontDataFactory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n const {\n map,\n transfer\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null\n }, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n if (pageInfo.refStr) {\n this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n getPageIndex(ref) {\n if (!isRefProxy(ref)) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig(renderingIntent) {\n return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new OptionalContentConfig(data, renderingIntent));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\",\n cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, null).then(results => ({\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null\n }));\n this.#methodPromises.set(name, promise);\n return promise;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n TextLayer.cleanup();\n }\n cachedPageNumber(ref) {\n if (!isRefProxy(ref)) {\n return null;\n }\n const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n return this.#pageRefCache.get(refStr) ?? null;\n }\n}\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n #objs = Object.create(null);\n #ensureObj(objId) {\n return this.#objs[objId] ||= {\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n };\n }\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs[objId];\n return !!obj && obj.data !== INITIAL_DATA;\n }\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n data?.bitmap?.close();\n }\n this.#objs = Object.create(null);\n }\n *[Symbol.iterator]() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n if (data === INITIAL_DATA) {\n continue;\n }\n yield [objId, data];\n }\n }\n}\nclass RenderTask {\n #internalRenderTask = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n this.onContinue = null;\n }\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n}\nclass InternalRenderTask {\n #rAF = null;\n static #canvasInUse = new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = Promise.withResolvers();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n canvasContext,\n viewport,\n transform,\n background\n } = this.params;\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n if (this.#rAF) {\n window.cancelAnimationFrame(this.#rAF);\n this.#rAF = null;\n }\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback(error || new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay));\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\n }\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n this.#rAF = window.requestAnimationFrame(() => {\n this.#rAF = null;\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback();\n }\n }\n }\n}\nconst version = \"4.8.69\";\nconst build = \"3634dab10\";\n\n;// ./src/shared/scripting_utils.js\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\n\n;// ./src/display/svg_factory.js\n\n\nclass BaseSVGFactory {\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n;// ./src/display/xfa_layer.js\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (option.attributes.hasOwnProperty(\"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n Object.assign(html.style, value);\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n }\n }\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n const isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n if (root.children.length === 0) {\n if (root.value) {\n const node = document.createTextNode(root.value);\n rootHtml.append(node);\n if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n textDivs.push(node);\n }\n }\n return {\n textDivs\n };\n }\n const stack = [[root, -1, rootHtml]];\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n if (child.children?.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (isNotForRichText && XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\n }\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\n;// ./src/display/annotation_layer.js\n\n\n\n\n\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n}\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n #updates = null;\n #hasBorder = false;\n #popupElement = null;\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n titleObj,\n contentsObj,\n richText\n }) {\n return !!(titleObj?.str || contentsObj?.str || richText?.str);\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data);\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n const {\n rect\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n this.#popupElement?.popup.updateEdited(params);\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n this.#setRectEdited(this.#updates.rect);\n this.#popupElement?.popup.resetEdited();\n this.#updates = null;\n }\n #setRectEdited(rect) {\n const {\n container: {\n style\n },\n data: {\n rect: currentRect,\n rotation\n },\n parent: {\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n }\n } = this;\n currentRect?.splice(0, 4, ...rect);\n const {\n width,\n height\n } = getRectDims(rect);\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation);\n }\n }\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: {\n page,\n viewport\n }\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement)) {\n container.tabIndex = DEFAULT_TAB_INDEX;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex++;\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation\n } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n const {\n width,\n height\n } = getRectDims(data.rect);\n if (!ignoreBorder && data.borderStyle.width > 0) {\n style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;\n style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n style.borderStyle = \"solid\";\n break;\n case AnnotationBorderStyleType.DASHED:\n style.borderStyle = \"dashed\";\n break;\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n case AnnotationBorderStyleType.UNDERLINE:\n style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n style.borderColor = Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n style.borderWidth = 0;\n }\n }\n const rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const {\n pageWidth,\n pageHeight\n } = this.parent.viewport.rawDims;\n const {\n width,\n height\n } = getRectDims(this.data.rect);\n let elementWidth, elementHeight;\n if (angle % 180 === 0) {\n elementWidth = 100 * width / pageWidth;\n elementHeight = 100 * height / pageHeight;\n } else {\n elementWidth = 100 * height / pageWidth;\n elementHeight = 100 * width / pageHeight;\n }\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n });\n };\n return shadow(this, \"_commonActions\", {\n display: event => {\n const {\n display\n } = event.detail;\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print\n });\n },\n hidden: event => {\n const {\n hidden\n } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail\n },\n target: element\n };\n action(eventProxy);\n delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const {\n quadPoints\n } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x => Math.fround(x));\n if (quadPoints.length === 8) {\n const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n return;\n }\n }\n const {\n style\n } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const {\n borderColor,\n borderWidth\n } = style;\n style.borderWidth = 0;\n svgBuffer = [\"url('data:image/svg+xml;utf8,\", ``, ``];\n this.container.classList.add(\"hasBorder\");\n }\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n const {\n svgFactory\n } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n const trX = quadPoints[i];\n const trY = quadPoints[i + 1];\n const blX = quadPoints[i + 2];\n const blY = quadPoints[i + 3];\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(``);\n }\n if (this.#hasBorder) {\n svgBuffer.push(`')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup() {\n const {\n data\n } = this;\n const popup = this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation\n },\n parent: this.parent,\n elements: [this]\n });\n this.parent.div.append(popup.render());\n }\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: {\n id: editId\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId\n });\n });\n }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n isBound = true;\n } else {\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === \"\") {\n this.#setInternalLink();\n }\n }\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n this.#setInternalLink();\n }\n #bindAttachment(link, attachment, dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n }\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n this.#setInternalLink();\n }\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name\n }\n });\n return false;\n };\n }\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n warn(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\"data-l10n-args\", JSON.stringify({\n type: this.data.name\n }));\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n _getKeyModifier(event) {\n return util_FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n _setEventListeners(element, elementData, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= {\n focused: false\n };\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(color[0], color[1], color[2]);\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / LINE_FACTOR));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const {\n target\n } = event;\n if (elementData.userValue) {\n target.value = elementData.userValue;\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n if (!this.data.actions?.Focus) {\n elementData.focused = true;\n }\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n storage.setValue(id, {\n formattedValue\n });\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, {\n value\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd\n }\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n if (!this.data.actions?.Blur) {\n elementData.focused = false;\n }\n const {\n value\n } = event.target;\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.hasOwnCanvas\n });\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n if (value) {\n for (const radio of this._getElementsByName(data.fieldName, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => ({\n displayValue: option.textContent,\n exportValue: option.value\n }));\n };\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(true);\n const change = getValue(false);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n change,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const {\n data,\n elements\n } = parameters;\n super(parameters, {\n isRenderable: AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n this.popup = null;\n }\n render() {\n this.container.classList.add(\"popupAnnotation\");\n const popup = this.popup = new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open\n });\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n element.container.ariaHasPopup = \"dialog\";\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n #boundKeyDown = this.#keyDown.bind(this);\n #boundHide = this.#hide.bind(this);\n #boundShow = this.#show.bind(this);\n #boundToggle = this.#toggle.bind(this);\n #color = null;\n #container = null;\n #contentsObj = null;\n #dateObj = null;\n #elements = null;\n #parent = null;\n #parentRect = null;\n #pinned = false;\n #popup = null;\n #position = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle);\n element.addEventListener(\"mouseenter\", this.#boundShow);\n element.addEventListener(\"mouseleave\", this.#boundHide);\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n }\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n render() {\n if (this.#popup) {\n return;\n }\n const popup = this.#popup = document.createElement(\"div\");\n popup.className = \"popup\";\n if (this.#color) {\n const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n if (CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")) {\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n } else {\n const BACKGROUND_ENLIGHT = 0.7;\n popup.style.backgroundColor = Util.makeHexColor(...this.#color.map(c => Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)));\n }\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n const title = document.createElement(\"h1\");\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"popupDate\");\n modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n dateObj: this.#dateObj.valueOf()\n }));\n header.append(modificationDate);\n }\n const html = this.#html;\n if (html) {\n XfaLayer.render({\n xfaHtml: html,\n intent: \"richText\",\n div: popup\n });\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n } else {\n const contents = this._formatContents(this.#contentsObj);\n popup.append(contents);\n }\n this.#container.append(popup);\n }\n get #html() {\n const richText = this.#richText;\n const contentsObj = this.#contentsObj;\n if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n return this.#richText.html || null;\n }\n return null;\n }\n get #fontSize() {\n return this.#html?.attributes?.style?.fontSize || 0;\n }\n get #fontColor() {\n return this.#html?.attributes?.style?.color || null;\n }\n #makePopupContent(text) {\n const popupLines = [];\n const popupContent = {\n str: text,\n html: {\n name: \"div\",\n attributes: {\n dir: \"auto\"\n },\n children: [{\n name: \"p\",\n children: popupLines\n }]\n }\n };\n const lineAttributes = {\n style: {\n color: this.#fontColor,\n fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--scale-factor))` : \"\"\n }\n };\n for (const line of text.split(\"\\n\")) {\n popupLines.push({\n name: \"span\",\n value: line,\n attributes: lineAttributes\n });\n }\n return popupContent;\n }\n _formatContents({\n str,\n dir\n }) {\n const p = document.createElement(\"p\");\n p.classList.add(\"popupContent\");\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n return p;\n }\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n this.#toggle();\n }\n }\n updateEdited({\n rect,\n popupContent\n }) {\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popupContent) {\n this.#richText = this.#makePopupContent(popupContent);\n this.#contentsObj = null;\n }\n this.#popup?.remove();\n this.#popup = null;\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n ({\n contentsObj: this.#contentsObj,\n richText: this.#richText\n } = this.#updates);\n this.#updates = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#position = null;\n }\n #setPosition() {\n if (this.#position !== null) {\n return;\n }\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.#parent;\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n const {\n style\n } = this.#container;\n style.left = `${this.#position[0]}%`;\n style.top = `${this.#position[1]}%`;\n }\n #toggle() {\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#setPosition();\n this.#container.hidden = false;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000;\n }\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n maybeShow() {\n if (!this.#wasVisible) {\n return;\n }\n if (!this.#popup) {\n this.#show();\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n get isVisible() {\n return this.#container.hidden === false;\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#line;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#square;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n vertices,\n borderStyle,\n popupRef\n }\n } = this;\n if (!vertices) {\n return this.container;\n }\n const {\n width,\n height\n } = getRectDims(rect);\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n const x = vertices[i] - rect[0];\n const y = rect[3] - vertices[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n inkLists,\n borderStyle,\n popupRef\n }\n } = this;\n const {\n width,\n height\n } = getRectDims(rect);\n const svg = this.svgFactory.create(width, height, true);\n for (const inkList of inkLists) {\n let points = [];\n for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n const x = inkList[i] - rect[0];\n const y = rect[3] - inkList[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n }\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(svg);\n this._editOnDoubleClick();\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.annotationEditorType = AnnotationEditorType.STAMP;\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n this.container.setAttribute(\"role\", \"img\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n file\n } = this.data;\n this.filename = file.filename;\n this.content = file.content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n ...file\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n const {\n container,\n data\n } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n const {\n isMac\n } = util_FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n container.append(trigger);\n return container;\n }\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\nclass AnnotationLayer {\n #accessibilityManager = null;\n #annotationCanvasMap = null;\n #editableAnnotations = new Map();\n #structTreeLayer = null;\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport,\n structTreeLayer\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.#structTreeLayer = structTreeLayer || null;\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n }\n hasEditableAnnotations() {\n return this.#editableAnnotations.size > 0;\n }\n async #appendElement(element, id) {\n const contentElement = element.firstChild || element;\n const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n const ariaAttributes = await this.#structTreeLayer?.getAriaAttributes(annotationId);\n if (ariaAttributes) {\n for (const [key, value] of ariaAttributes) {\n contentElement.setAttribute(key, value);\n }\n }\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);\n }\n async render(params) {\n const {\n annotations\n } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n const popupToElements = new Map();\n const elementParams = {\n data: null,\n layer,\n linkService: params.linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: params.annotationStorage || new AnnotationStorage(),\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n const {\n width,\n height\n } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation && data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n await this.#appendElement(rendered, data.id);\n if (element._isEditable) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n this.#setAnnotationCanvasMap();\n }\n update({\n viewport\n }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, {\n rotation: viewport.rotation\n });\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n canvas.className = \"annotationContent\";\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else if (!firstChild.classList.contains(\"annotationContent\")) {\n firstChild.before(canvas);\n } else {\n firstChild.after(canvas);\n }\n }\n this.#annotationCanvasMap.clear();\n }\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #color;\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #editModeAC = null;\n #fontSize;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = self => self.isEmpty();\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n static _editorType = AnnotationEditorType.FREETEXT;\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.#color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]];\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: setFontsize.bind(this, fontSize),\n undo: setFontsize.bind(this, savedFontsize),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const setColor = col => {\n this.#color = this.editorDiv.style.color = col;\n };\n const savedColor = this.#color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, true);\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(false);\n this.parent.updateToolbar(AnnotationEditorType.FREETEXT);\n super.enableEditMode();\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.#editModeAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#editModeAC);\n this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n signal\n });\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(true);\n super.disableEditMode();\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.#editModeAC?.abort();\n this.#editModeAC = null;\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded() {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n this.editorDiv.focus();\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const buffer = [];\n this.editorDiv.normalize();\n let prevChild = null;\n for (const child of this.editorDiv.childNodes) {\n if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n prevChild = child;\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\");\n div.classList.remove(\"hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n div.classList.toggle(\"hidden\", savedVisibility);\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n dblclick(event) {\n this.enterInEditMode();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n event.preventDefault();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n this.enableEditing();\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position\n } = this._initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n }\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n static #getNodeContent(node) {\n return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n }\n editorDivPaste(event) {\n const clipboardData = event.clipboardData || window.clipboardData;\n const {\n types\n } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n event.preventDefault();\n const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n if (!paste) {\n return;\n }\n const selection = window.getSelection();\n if (!selection.rangeCount) {\n return;\n }\n this.editorDiv.normalize();\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n if (!paste.includes(\"\\n\")) {\n range.insertNode(document.createTextNode(paste));\n this.editorDiv.normalize();\n selection.collapseToStart();\n return;\n }\n const {\n startContainer,\n startOffset\n } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n if (parent !== this.editorDiv) {\n let buffer = bufferBefore;\n for (const child of this.editorDiv.childNodes) {\n if (child === parent) {\n buffer = bufferAfter;\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n } else if (startContainer === this.editorDiv) {\n let buffer = bufferBefore;\n let i = 0;\n for (const child of this.editorDiv.childNodes) {\n if (i++ === startOffset) {\n buffer = bufferAfter;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n this.#setContent();\n const newRange = new Range();\n let beforeLength = bufferBefore.reduce((acc, line) => acc + line.length, 0);\n for (const {\n firstChild\n } of this.editorDiv.childNodes) {\n if (firstChild.nodeType === Node.TEXT_NODE) {\n const length = firstChild.nodeValue.length;\n if (beforeLength <= length) {\n newRange.setStart(firstChild, beforeLength);\n newRange.setEnd(firstChild, beforeLength);\n break;\n }\n beforeLength -= length;\n }\n }\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n }\n #serializeContent() {\n return this.#content.replaceAll(\"\\xa0\", \" \");\n }\n static #deserializeContent(content) {\n return content.replaceAll(\" \", \"\\xa0\");\n }\n get contentDiv() {\n return this.editorDiv;\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize,\n fontColor\n },\n rect,\n rotation,\n id,\n popupRef\n },\n textContent,\n textPosition,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n if (!textContent || textContent.length === 0) {\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.#color = Util.makeHexColor(...data.color);\n editor.#content = FreeTextEditor.#deserializeContent(data.value);\n editor.annotationElementId = data.id || null;\n editor._initialData = initialData;\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n const rect = this.getRect(padding, padding);\n const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color);\n const serialized = {\n annotationType: AnnotationEditorType.FREETEXT,\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent(),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n value,\n fontSize,\n color,\n pageIndex\n } = this._initialData;\n return this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const content = super.renderAnnotationElement(annotation);\n if (this.deleted) {\n return content;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n content.replaceChildren();\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n content.append(div);\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n annotation.updateEdited({\n rect: this.getRect(padding, padding),\n popupContent: this.#content\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n}\n\n;// ./src/display/editor/drawers/outline.js\n\nclass Outline {\n toSVGPath() {\n unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n }\n get box() {\n unreachable(\"Abstract getter `box` must be implemented.\");\n }\n serialize(_bbox, _rotation) {\n unreachable(\"Abstract method `serialize` must be implemented.\");\n }\n get classNamesForDrawing() {\n unreachable(\"Abstract getter `classNamesForDrawing` must be implemented.\");\n }\n get classNamesForOutlining() {\n unreachable(\"Abstract getter `classNamesForOutlining` must be implemented.\");\n }\n get mustRemoveSelfIntersections() {\n return false;\n }\n}\n\n;// ./src/display/editor/drawers/freedraw.js\n\n\nclass FreeDrawOutliner {\n #box;\n #bottom = [];\n #innerMargin;\n #isLTR;\n #top = [];\n #last = new Float64Array(18);\n #lastX;\n #lastY;\n #min;\n #min_dist;\n #scaleFactor;\n #thickness;\n #points = [];\n static #MIN_DIST = 8;\n static #MIN_DIFF = 2;\n static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n constructor({\n x,\n y\n }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n this.#box = box;\n this.#thickness = thickness * scaleFactor;\n this.#isLTR = isLTR;\n this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n this.#innerMargin = innerMargin;\n this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n isEmpty() {\n return isNaN(this.#last[8]);\n }\n #getLastCoords() {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n }\n add({\n x,\n y\n }) {\n this.#lastX = x;\n this.#lastY = y;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < this.#min) {\n return false;\n }\n const diffD = d - this.#min_dist;\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n this.#points?.push(x, y);\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * this.#thickness;\n const thY = nY * this.#thickness;\n this.#last.set(this.#last.subarray(2, 8), 0);\n this.#last.set([x2 + thX, y2 + thY], 4);\n this.#last.set(this.#last.subarray(14, 18), 12);\n this.#last.set([x2 - thX, y2 - thY], 16);\n if (isNaN(this.#last[6])) {\n if (this.#top.length === 0) {\n this.#last.set([x1 + thX, y1 + thY], 2);\n this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n return this.#toSVGPathTwoPoints();\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n } else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n this.#toSVGPathEnd(buffer);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n } else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n this.#toSVGPathStart(buffer);\n return buffer.join(\" \");\n }\n #toSVGPathTwoPoints() {\n const [x, y, width, height] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n }\n #toSVGPathStart(buffer) {\n const bottom = this.#bottom;\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n }\n #toSVGPathEnd(buffer) {\n const [x, y, width, height] = this.#box;\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n }\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const points = new Float64Array((this.#points?.length ?? 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (this.#points[i] - layerX) / layerWidth;\n points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n if (isNaN(last[6]) && !this.isEmpty()) {\n return this.#getOutlineTwoPoints(points);\n }\n const outline = new Float64Array(this.#top.length + 24 + this.#bottom.length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n N = this.#getOutlineEnd(outline, N);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n this.#getOutlineStart(outline, N);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineTwoPoints(points) {\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n const outline = new Float64Array(36);\n outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineStart(outline, pos) {\n const bottom = this.#bottom;\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n return pos += 6;\n }\n #getOutlineEnd(outline, pos) {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], pos);\n return pos += 24;\n }\n}\nclass FreeDrawOutline extends Outline {\n #box;\n #bbox = null;\n #innerMargin;\n #isLTR;\n #points;\n #scaleFactor;\n #outline;\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n this.#outline = outline;\n this.#points = points;\n this.#box = box;\n this.#scaleFactor = scaleFactor;\n this.#innerMargin = innerMargin;\n this.#isLTR = isLTR;\n this.#computeMinMax(isLTR);\n const {\n x,\n y,\n width,\n height\n } = this.#bbox;\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n if (isNaN(this.#outline[i])) {\n buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n continue;\n }\n buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = this.#rescale(this.#outline, blX, trY, width, -height);\n points = this.#rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = this.#rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = this.#rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = this.#rescale(this.#outline, trX, blY, -width, height);\n points = this.#rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = this.#rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = this.#rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return {\n outline: Array.from(outline),\n points: [Array.from(points)]\n };\n }\n #rescale(src, tx, ty, sx, sy) {\n const dest = new Float64Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n }\n #rescaleAndSwap(src, tx, ty, sx, sy) {\n const dest = new Float64Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n }\n #computeMinMax(isLTR) {\n const outline = this.#outline;\n let lastX = outline[4];\n let lastY = outline[5];\n let minX = lastX;\n let minY = lastY;\n let maxX = lastX;\n let maxY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n if (isNaN(outline[i])) {\n minX = Math.min(minX, outline[i + 4]);\n minY = Math.min(minY, outline[i + 5]);\n maxX = Math.max(maxX, outline[i + 4]);\n maxY = Math.max(maxY, outline[i + 5]);\n if (lastPointY < outline[i + 5]) {\n lastPointX = outline[i + 4];\n lastPointY = outline[i + 5];\n } else if (lastPointY === outline[i + 5]) {\n lastPointX = ltrCallback(lastPointX, outline[i + 4]);\n }\n } else {\n const bbox = Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6));\n minX = Math.min(minX, bbox[0]);\n minY = Math.min(minY, bbox[1]);\n maxX = Math.max(maxX, bbox[2]);\n maxY = Math.max(maxY, bbox[3]);\n if (lastPointY < bbox[3]) {\n lastPointX = bbox[2];\n lastPointY = bbox[3];\n } else if (lastPointY === bbox[3]) {\n lastPointX = ltrCallback(lastPointX, bbox[2]);\n }\n }\n lastX = outline[i + 4];\n lastY = outline[i + 5];\n }\n const x = minX - this.#innerMargin,\n y = minY - this.#innerMargin,\n width = maxX - minX + 2 * this.#innerMargin,\n height = maxY - minY + 2 * this.#innerMargin;\n this.#bbox = {\n x,\n y,\n width,\n height,\n lastPoint: [lastPointX, lastPointY]\n };\n }\n get box() {\n return this.#bbox;\n }\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeDrawOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n getNewOutline(thickness, innerMargin) {\n const {\n x,\n y,\n width,\n height\n } = this.#bbox;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const outliner = this.newOutliner({\n x: this.#points[0] * sx + tx,\n y: this.#points[1] * sy + ty\n }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n for (let i = 2; i < this.#points.length; i += 2) {\n outliner.add({\n x: this.#points[i] * sx + tx,\n y: this.#points[i + 1] * sy + ty\n });\n }\n return outliner.getOutlines();\n }\n get mustRemoveSelfIntersections() {\n return true;\n }\n}\n\n;// ./src/display/editor/drawers/highlight.js\n\n\nclass HighlightOutliner {\n #box;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n this.#verticalEdges.push(left, right);\n minX = Math.min(minX, x1);\n maxX = Math.max(maxX, x2);\n minY = Math.min(minY, y1);\n maxY = Math.max(maxY, y2);\n }\n const bboxWidth = maxX - minX + 2 * innerMargin;\n const bboxHeight = maxY - minY + 2 * innerMargin;\n const shiftedMinX = minX - innerMargin;\n const shiftedMinY = minY - innerMargin;\n const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n for (const edge of this.#verticalEdges) {\n const [x, y1, y2] = edge;\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n this.#box = {\n x: shiftedMinX,\n y: shiftedMinY,\n width: bboxWidth,\n height: bboxHeight,\n lastPoint\n };\n }\n getOutlines() {\n this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, this.#box);\n }\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = start + end >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\nclass HighlightOutline extends Outline {\n #box;\n #outlines;\n constructor(outlines, box) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of this.#outlines) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], _rotation) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of this.#outlines) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return this.#box;\n }\n get classNamesForDrawing() {\n return [\"highlight\"];\n }\n get classNamesForOutlining() {\n return [\"highlightOutline\"];\n }\n}\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeHighlightOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n get classNamesForDrawing() {\n return [\"highlight\", \"free\"];\n }\n}\nclass FreeHighlightOutline extends FreeDrawOutline {\n get classNamesForDrawing() {\n return [\"highlight\", \"free\"];\n }\n get classNamesForOutlining() {\n return [\"highlightOutline\", \"free\"];\n }\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeHighlightOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n}\n\n;// ./src/display/editor/color_picker.js\n\n\n\nclass ColorPicker {\n #button = null;\n #buttonSwatch = null;\n #defaultColor;\n #dropdown = null;\n #dropdownWasFromKeyboard = false;\n #isMainColorPicker = false;\n #editor = null;\n #eventBus;\n #openDropdownAC = null;\n #uiManager = null;\n #type;\n static #l10nColor = null;\n static get _keyboardManager() {\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n }\n constructor({\n editor = null,\n uiManager = null\n }) {\n if (editor) {\n this.#isMainColorPicker = false;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_COLOR;\n this.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n ColorPicker.#l10nColor ||= Object.freeze({\n blue: \"pdfjs-editor-colorpicker-blue\",\n green: \"pdfjs-editor-colorpicker-green\",\n pink: \"pdfjs-editor-colorpicker-pink\",\n red: \"pdfjs-editor-colorpicker-red\",\n yellow: \"pdfjs-editor-colorpicker-yellow\"\n });\n }\n renderButton() {\n const button = this.#button = document.createElement(\"button\");\n button.className = \"colorPicker\";\n button.tabIndex = \"0\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n button.setAttribute(\"aria-haspopup\", true);\n const signal = this.#uiManager._signal;\n button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n signal\n });\n button.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n const swatch = this.#buttonSwatch = document.createElement(\"span\");\n swatch.className = \"swatch\";\n swatch.setAttribute(\"aria-hidden\", true);\n swatch.style.backgroundColor = this.#defaultColor;\n button.append(swatch);\n return button;\n }\n renderMainDropdown() {\n const dropdown = this.#dropdown = this.#getDropdownRoot();\n dropdown.setAttribute(\"aria-orientation\", \"horizontal\");\n dropdown.setAttribute(\"aria-labelledby\", \"highlightColorPickerLabel\");\n return dropdown;\n }\n #getDropdownRoot() {\n const div = document.createElement(\"div\");\n const signal = this.#uiManager._signal;\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.className = \"dropdown\";\n div.role = \"listbox\";\n div.setAttribute(\"aria-multiselectable\", false);\n div.setAttribute(\"aria-orientation\", \"vertical\");\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n for (const [name, color] of this.#uiManager.highlightColors) {\n const button = document.createElement(\"button\");\n button.tabIndex = \"0\";\n button.role = \"option\";\n button.setAttribute(\"data-color\", color);\n button.title = name;\n button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n const swatch = document.createElement(\"span\");\n button.append(swatch);\n swatch.className = \"swatch\";\n swatch.style.backgroundColor = color;\n button.setAttribute(\"aria-selected\", color === this.#defaultColor);\n button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n signal\n });\n div.append(button);\n }\n div.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n return div;\n }\n #colorSelect(color, event) {\n event.stopPropagation();\n this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n source: this,\n type: this.#type,\n value: color\n });\n }\n _colorSelectFromKeyboard(event) {\n if (event.target === this.#button) {\n this.#openDropdown(event);\n return;\n }\n const color = event.target.getAttribute(\"data-color\");\n if (!color) {\n return;\n }\n this.#colorSelect(color, event);\n }\n _moveToNext(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n if (event.target === this.#button) {\n this.#dropdown.firstChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstChild || event.target === this.#button) {\n if (this.#isDropdownVisible) {\n this._hideDropdownFromKeyboard();\n }\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n }\n event.target.previousSibling?.focus();\n }\n _moveToBeginning(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.firstChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastChild?.focus();\n }\n #keyDown(event) {\n ColorPicker._keyboardManager.exec(this, event);\n }\n #openDropdown(event) {\n if (this.#isDropdownVisible) {\n this.hideDropdown();\n return;\n }\n this.#dropdownWasFromKeyboard = event.detail === 0;\n if (!this.#openDropdownAC) {\n this.#openDropdownAC = new AbortController();\n window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n signal: this.#uiManager.combinedSignal(this.#openDropdownAC)\n });\n }\n if (this.#dropdown) {\n this.#dropdown.classList.remove(\"hidden\");\n return;\n }\n const root = this.#dropdown = this.#getDropdownRoot();\n this.#button.append(root);\n }\n #pointerDown(event) {\n if (this.#dropdown?.contains(event.target)) {\n return;\n }\n this.hideDropdown();\n }\n hideDropdown() {\n this.#dropdown?.classList.add(\"hidden\");\n this.#openDropdownAC?.abort();\n this.#openDropdownAC = null;\n }\n get #isDropdownVisible() {\n return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n }\n _hideDropdownFromKeyboard() {\n if (this.#isMainColorPicker) {\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#editor?.unselect();\n return;\n }\n this.hideDropdown();\n this.#button.focus({\n preventScroll: true,\n focusVisible: this.#dropdownWasFromKeyboard\n });\n }\n updateColor(color) {\n if (this.#buttonSwatch) {\n this.#buttonSwatch.style.backgroundColor = color;\n }\n if (!this.#dropdown) {\n return;\n }\n const i = this.#uiManager.highlightColors.values();\n for (const child of this.#dropdown.children) {\n child.setAttribute(\"aria-selected\", i.next().value === color);\n }\n }\n destroy() {\n this.#button?.remove();\n this.#button = null;\n this.#buttonSwatch = null;\n this.#dropdown?.remove();\n this.#dropdown = null;\n }\n}\n\n;// ./src/display/editor/highlight.js\n\n\n\n\n\n\n\nclass HighlightEditor extends AnnotationEditor {\n #anchorNode = null;\n #anchorOffset = 0;\n #boxes;\n #clipPathId = null;\n #colorPicker = null;\n #focusOutlines = null;\n #focusNode = null;\n #focusOffset = 0;\n #highlightDiv = null;\n #highlightOutlines = null;\n #id = null;\n #isFreeHighlight = false;\n #lastPoint = null;\n #opacity;\n #outlineId = null;\n #text = \"\";\n #thickness;\n #methodOfCreation = \"\";\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 12;\n static _type = \"highlight\";\n static _editorType = AnnotationEditorType.HIGHLIGHT;\n static _freeHighlightId = -1;\n static _freeHighlight = null;\n static _freeHighlightClipId = \"\";\n static get _keyboardManager() {\n const proto = HighlightEditor.prototype;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, {\n args: [0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, {\n args: [1]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, {\n args: [2]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, {\n args: [3]\n }]]));\n }\n constructor(params) {\n super({\n ...params,\n name: \"highlightEditor\"\n });\n this.color = params.color || HighlightEditor._defaultColor;\n this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n this.#opacity = params.opacity || HighlightEditor._defaultOpacity;\n this.#boxes = params.boxes || null;\n this.#methodOfCreation = params.methodOfCreation || \"\";\n this.#text = params.text || \"\";\n this._isDraggable = false;\n if (params.highlightId > -1) {\n this.#isFreeHighlight = true;\n this.#createFreeOutlines(params);\n this.#addToDrawLayer();\n } else if (this.#boxes) {\n this.#anchorNode = params.anchorNode;\n this.#anchorOffset = params.anchorOffset;\n this.#focusNode = params.focusNode;\n this.#focusOffset = params.focusOffset;\n this.#createOutlines();\n this.#addToDrawLayer();\n this.rotate(this.rotation);\n }\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color),\n thickness: this.#thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color)\n };\n }\n static computeTelemetryFinalData(data) {\n return {\n numberOfColors: data.get(\"color\").size\n };\n }\n #createOutlines() {\n const outliner = new HighlightOutliner(this.#boxes, 0.001);\n this.#highlightOutlines = outliner.getOutlines();\n ({\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height\n } = this.#highlightOutlines.box);\n const outlinerForOutline = new HighlightOutliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n this.#focusOutlines = outlinerForOutline.getOutlines();\n const {\n lastPoint\n } = this.#focusOutlines.box;\n this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n }\n #createFreeOutlines({\n highlightOutlines,\n highlightId,\n clipPathId\n }) {\n this.#highlightOutlines = highlightOutlines;\n const extraThickness = 1.5;\n this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 0.0025);\n if (highlightId >= 0) {\n this.#id = highlightId;\n this.#clipPathId = clipPathId;\n this.parent.drawLayer.finalizeLine(highlightId, highlightOutlines);\n this.#outlineId = this.parent.drawLayer.drawOutline(this.#focusOutlines);\n } else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateLine(this.#id, highlightOutlines);\n this.parent.drawLayer.updateBox(this.#id, HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360));\n this.parent.drawLayer.updateLine(this.#outlineId, this.#focusOutlines);\n this.parent.drawLayer.updateBox(this.#outlineId, HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle));\n }\n const {\n x,\n y,\n width,\n height\n } = highlightOutlines.box;\n switch (this.rotation) {\n case 0:\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n break;\n case 90:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = y;\n this.y = 1 - x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n case 180:\n this.x = 1 - x;\n this.y = 1 - y;\n this.width = width;\n this.height = height;\n break;\n case 270:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = 1 - y;\n this.y = x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n }\n const {\n lastPoint\n } = this.#focusOutlines.box;\n this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n HighlightEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n HighlightEditor._defaultThickness = value;\n break;\n }\n }\n translateInPage(x, y) {}\n get toolbarPosition() {\n return this.#lastPoint;\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n this.#updateThickness(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR, HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, HighlightEditor._defaultThickness]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n }\n #updateColor(color) {\n const setColorAndOpacity = (col, opa) => {\n this.color = col;\n this.parent?.drawLayer.changeColor(this.#id, col);\n this.#colorPicker?.updateColor(col);\n this.#opacity = opa;\n this.parent?.drawLayer.changeOpacity(this.#id, opa);\n };\n const savedColor = this.color;\n const savedOpacity = this.#opacity;\n this.addCommands({\n cmd: setColorAndOpacity.bind(this, color, HighlightEditor._defaultOpacity),\n undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"color_changed\",\n color: this._uiManager.highlightColorNames.get(color)\n }, true);\n }\n #updateThickness(thickness) {\n const savedThickness = this.#thickness;\n const setThickness = th => {\n this.#thickness = th;\n this.#changeThickness(th);\n };\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"thickness_changed\",\n thickness\n }, true);\n }\n async addEditToolbar() {\n const toolbar = await super.addEditToolbar();\n if (!toolbar) {\n return null;\n }\n if (this._uiManager.highlightColors) {\n this.#colorPicker = new ColorPicker({\n editor: this\n });\n toolbar.addColorPicker(this.#colorPicker);\n }\n return toolbar;\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n fixAndSetPosition() {\n return super.fixAndSetPosition(this.#getRotation());\n }\n getBaseTranslation() {\n return [0, 0];\n }\n getRect(tx, ty) {\n return super.getRect(tx, ty, this.#getRotation());\n }\n onceAdded() {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n this.div.focus();\n }\n remove() {\n this.#cleanDrawLayer();\n this._reportTelemetry({\n action: \"deleted\"\n });\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this.#cleanDrawLayer();\n } else if (parent) {\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.show(this._isVisible);\n if (mustBeSelected) {\n this.select();\n }\n }\n #changeThickness(thickness) {\n if (!this.#isFreeHighlight) {\n return;\n }\n this.#createFreeOutlines({\n highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n });\n this.fixAndSetPosition();\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n }\n #cleanDrawLayer() {\n if (this.#id === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this.#id);\n this.#id = null;\n this.parent.drawLayer.remove(this.#outlineId);\n this.#outlineId = null;\n }\n #addToDrawLayer(parent = this.parent) {\n if (this.#id !== null) {\n return;\n }\n ({\n id: this.#id,\n clipPathId: this.#clipPathId\n } = parent.drawLayer.draw(this.#highlightOutlines, this.color, this.#opacity));\n this.#outlineId = parent.drawLayer.drawOutline(this.#focusOutlines);\n if (this.#highlightDiv) {\n this.#highlightDiv.style.clipPath = this.#clipPathId;\n }\n }\n static #rotateBbox({\n x,\n y,\n width,\n height\n }, angle) {\n switch (angle) {\n case 90:\n return {\n x: 1 - y - height,\n y: x,\n width: height,\n height: width\n };\n case 180:\n return {\n x: 1 - x - width,\n y: 1 - y - height,\n width,\n height\n };\n case 270:\n return {\n x: y,\n y: 1 - x - width,\n width: height,\n height: width\n };\n }\n return {\n x,\n y,\n width,\n height\n };\n }\n rotate(angle) {\n const {\n drawLayer\n } = this.parent;\n let box;\n if (this.#isFreeHighlight) {\n angle = (angle - this.rotation + 360) % 360;\n box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n } else {\n box = HighlightEditor.#rotateBbox(this, angle);\n }\n drawLayer.rotate(this.#id, angle);\n drawLayer.rotate(this.#outlineId, angle);\n drawLayer.updateBox(this.#id, box);\n drawLayer.updateBox(this.#outlineId, HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle));\n }\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (this.#text) {\n div.setAttribute(\"aria-label\", this.#text);\n div.setAttribute(\"role\", \"mark\");\n }\n if (this.#isFreeHighlight) {\n div.classList.add(\"free\");\n } else {\n this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n signal: this._uiManager._signal\n });\n }\n const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n div.append(highlightDiv);\n highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n highlightDiv.className = \"internal\";\n highlightDiv.style.clipPath = this.#clipPathId;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n this.enableEditing();\n return div;\n }\n pointerover() {\n if (!this.isSelected) {\n this.parent.drawLayer.addClass(this.#outlineId, \"hovered\");\n }\n }\n pointerleave() {\n if (!this.isSelected) {\n this.parent.drawLayer.removeClass(this.#outlineId, \"hovered\");\n }\n }\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0:\n case 2:\n this.#setCaret(true);\n break;\n case 1:\n case 3:\n this.#setCaret(false);\n break;\n }\n }\n #setCaret(start) {\n if (!this.#anchorNode) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(this.#anchorNode, this.#anchorOffset);\n } else {\n selection.setPosition(this.#focusNode, this.#focusOffset);\n }\n }\n select() {\n super.select();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.removeClass(this.#outlineId, \"hovered\");\n this.parent?.drawLayer.addClass(this.#outlineId, \"selected\");\n }\n unselect() {\n super.unselect();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.removeClass(this.#outlineId, \"selected\");\n if (!this.#isFreeHighlight) {\n this.#setCaret(false);\n }\n }\n get _mustFixPosition() {\n return !this.#isFreeHighlight;\n }\n show(visible = this._isVisible) {\n super.show(visible);\n if (this.parent) {\n this.parent.drawLayer.show(this.#id, visible);\n this.parent.drawLayer.show(this.#outlineId, visible);\n }\n }\n #getRotation() {\n return this.#isFreeHighlight ? this.rotation : 0;\n }\n #serializeBoxes() {\n if (this.#isFreeHighlight) {\n return null;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const boxes = this.#boxes;\n const quadPoints = new Float32Array(boxes.length * 8);\n let i = 0;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const sx = x * pageWidth + pageX;\n const sy = (1 - y - height) * pageHeight + pageY;\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy + height * pageHeight;\n i += 8;\n }\n return quadPoints;\n }\n #serializeOutlines(rect) {\n return this.#highlightOutlines.serialize(rect, this.#getRotation());\n }\n static startHighlighting(parent, isLTR, {\n target: textLayer,\n x,\n y\n }) {\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n const ac = new AbortController();\n const signal = parent.combinedSignal(ac);\n const pointerDown = e => {\n e.preventDefault();\n e.stopPropagation();\n };\n const pointerUpCallback = e => {\n ac.abort();\n this.#endHighlight(parent, e);\n };\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerdown\", pointerDown, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n textLayer.addEventListener(\"pointermove\", this.#highlightMove.bind(this, parent), {\n signal\n });\n this._freeHighlight = new FreeHighlightOutliner({\n x,\n y\n }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 0.001);\n ({\n id: this._freeHighlightId,\n clipPathId: this._freeHighlightClipId\n } = parent.drawLayer.draw(this._freeHighlight, this._defaultColor, this._defaultOpacity, true));\n }\n static #highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n parent.drawLayer.updatePath(this._freeHighlightId, this._freeHighlight);\n }\n }\n static #endHighlight(parent, event) {\n if (!this._freeHighlight.isEmpty()) {\n parent.createAndAddNewEditor(event, false, {\n highlightId: this._freeHighlightId,\n highlightOutlines: this._freeHighlight.getOutlines(),\n clipPathId: this._freeHighlightClipId,\n methodOfCreation: \"main_toolbar\"\n });\n } else {\n parent.drawLayer.remove(this._freeHighlightId);\n }\n this._freeHighlightId = -1;\n this._freeHighlight = null;\n this._freeHighlightClipId = \"\";\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof HighlightAnnotationElement) {\n const {\n data: {\n quadPoints,\n rect,\n rotation,\n id,\n color,\n opacity,\n popupRef\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n opacity,\n quadPoints,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n } else if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n thickness,\n inkLists,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n }\n const {\n color,\n quadPoints,\n inkLists,\n opacity\n } = data;\n const editor = await super.deserialize(data, parent, uiManager);\n editor.color = Util.makeHexColor(...color);\n editor.#opacity = opacity || 1;\n if (inkLists) {\n editor.#thickness = data.thickness;\n }\n editor.annotationElementId = data.id || null;\n editor._initialData = initialData;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [pageX, pageY] = editor.pageTranslation;\n if (quadPoints) {\n const boxes = editor.#boxes = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n boxes.push({\n x: (quadPoints[i] - pageX) / pageWidth,\n y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight\n });\n }\n editor.#createOutlines();\n editor.#addToDrawLayer();\n editor.rotate(editor.rotation);\n } else if (inkLists) {\n editor.#isFreeHighlight = true;\n const points = inkLists[0];\n const point = {\n x: points[0] - pageX,\n y: pageHeight - (points[1] - pageY)\n };\n const outliner = new FreeHighlightOutliner(point, [0, 0, pageWidth, pageHeight], 1, editor.#thickness / 2, true, 0.001);\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n point.x = points[i] - pageX;\n point.y = pageHeight - (points[i + 1] - pageY);\n outliner.add(point);\n }\n const {\n id,\n clipPathId\n } = parent.drawLayer.draw(outliner, editor.color, editor._defaultOpacity, true);\n editor.#createFreeOutlines({\n highlightOutlines: outliner.getOutlines(),\n highlightId: id,\n clipPathId\n });\n editor.#addToDrawLayer();\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.color);\n const serialized = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color,\n opacity: this.#opacity,\n thickness: this.#thickness,\n quadPoints: this.#serializeBoxes(),\n outlines: this.#serializeOutlines(rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.#getRotation(),\n structTreeParentId: this._structTreeParentId\n };\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color\n } = this._initialData;\n return serialized.color.some((c, i) => c !== color[i]);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/ink.js\n\n\n\n\n\nclass InkEditor extends AnnotationEditor {\n #baseHeight = 0;\n #baseWidth = 0;\n #canvasContextMenuTimeoutId = null;\n #currentPath2D = new Path2D();\n #disableEditing = false;\n #drawingAC = null;\n #hasSomethingToDraw = false;\n #isCanvasInitialized = false;\n #observer = null;\n #pointerdownAC = null;\n #realWidth = 0;\n #realHeight = 0;\n #requestFrameCallback = null;\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 1;\n static _type = \"ink\";\n static _editorType = AnnotationEditorType.INK;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this.color = params.color || null;\n this.thickness = params.thickness || null;\n this.opacity = params.opacity || null;\n this.paths = [];\n this.bezierPath2D = [];\n this.allRawPaths = [];\n this.currentPath = [];\n this.scaleFactor = 1;\n this.translationX = this.translationY = 0;\n this.x = 0;\n this.y = 0;\n this._willKeepAspectRatio = true;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.INK_THICKNESS:\n InkEditor._defaultThickness = value;\n break;\n case AnnotationEditorParamsType.INK_COLOR:\n InkEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.INK_OPACITY:\n InkEditor._defaultOpacity = value / 100;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.INK_THICKNESS:\n this.#updateThickness(value);\n break;\n case AnnotationEditorParamsType.INK_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.INK_OPACITY:\n this.#updateOpacity(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || AnnotationEditor._defaultLineColor], [AnnotationEditorParamsType.INK_OPACITY, Math.round(InkEditor._defaultOpacity * 100)]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || AnnotationEditor._defaultLineColor], [AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity))]];\n }\n #updateThickness(thickness) {\n const setThickness = th => {\n this.thickness = th;\n this.#fitToContent();\n };\n const savedThickness = this.thickness;\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const setColor = col => {\n this.color = col;\n this.#redraw();\n };\n const savedColor = this.color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateOpacity(opacity) {\n const setOpacity = op => {\n this.opacity = op;\n this.#redraw();\n };\n opacity /= 100;\n const savedOpacity = this.opacity;\n this.addCommands({\n cmd: setOpacity.bind(this, opacity),\n undo: setOpacity.bind(this, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_OPACITY,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n this.#setCanvasDims();\n }\n this.#fitToContent();\n }\n remove() {\n if (this.canvas === null) {\n return;\n }\n if (!this.isEmpty()) {\n this.commit();\n }\n this.canvas.width = this.canvas.height = 0;\n this.canvas.remove();\n this.canvas = null;\n if (this.#canvasContextMenuTimeoutId) {\n clearTimeout(this.#canvasContextMenuTimeoutId);\n this.#canvasContextMenuTimeoutId = null;\n }\n this.#observer?.disconnect();\n this.#observer = null;\n super.remove();\n }\n setParent(parent) {\n if (!this.parent && parent) {\n this._uiManager.removeShouldRescale(this);\n } else if (this.parent && parent === null) {\n this._uiManager.addShouldRescale(this);\n }\n super.setParent(parent);\n }\n onScaleChanging() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const width = this.width * parentWidth;\n const height = this.height * parentHeight;\n this.setDimensions(width, height);\n }\n enableEditMode() {\n if (this.#disableEditing || this.canvas === null) {\n return;\n }\n super.enableEditMode();\n this._isDraggable = false;\n this.#addPointerdownListener();\n }\n disableEditMode() {\n if (!this.isInEditMode() || this.canvas === null) {\n return;\n }\n super.disableEditMode();\n this._isDraggable = !this.isEmpty();\n this.div.classList.remove(\"editing\");\n this.#removePointerdownListener();\n }\n onceAdded() {\n this._isDraggable = !this.isEmpty();\n }\n isEmpty() {\n return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0;\n }\n #getInitialBBox() {\n const {\n parentRotation,\n parentDimensions: [width, height]\n } = this;\n switch (parentRotation) {\n case 90:\n return [0, height, height, width];\n case 180:\n return [width, height, width, height];\n case 270:\n return [width, 0, height, width];\n default:\n return [0, 0, width, height];\n }\n }\n #setStroke() {\n const {\n ctx,\n color,\n opacity,\n thickness,\n parentScale,\n scaleFactor\n } = this;\n ctx.lineWidth = thickness * parentScale / scaleFactor;\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.miterLimit = 10;\n ctx.strokeStyle = `${color}${opacityToHex(opacity)}`;\n }\n #startDrawing(x, y) {\n this.canvas.addEventListener(\"contextmenu\", noContextMenu, {\n signal: this._uiManager._signal\n });\n this.#removePointerdownListener();\n this.#drawingAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#drawingAC);\n this.canvas.addEventListener(\"pointerleave\", this.canvasPointerleave.bind(this), {\n signal\n });\n this.canvas.addEventListener(\"pointermove\", this.canvasPointermove.bind(this), {\n signal\n });\n this.canvas.addEventListener(\"pointerup\", this.canvasPointerup.bind(this), {\n signal\n });\n this.isEditing = true;\n if (!this.#isCanvasInitialized) {\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.thickness ||= InkEditor._defaultThickness;\n this.color ||= InkEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.opacity ??= InkEditor._defaultOpacity;\n }\n this.currentPath.push([x, y]);\n this.#hasSomethingToDraw = false;\n this.#setStroke();\n this.#requestFrameCallback = () => {\n this.#drawPoints();\n if (this.#requestFrameCallback) {\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n };\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n #draw(x, y) {\n const [lastX, lastY] = this.currentPath.at(-1);\n if (this.currentPath.length > 1 && x === lastX && y === lastY) {\n return;\n }\n const currentPath = this.currentPath;\n let path2D = this.#currentPath2D;\n currentPath.push([x, y]);\n this.#hasSomethingToDraw = true;\n if (currentPath.length <= 2) {\n path2D.moveTo(...currentPath[0]);\n path2D.lineTo(x, y);\n return;\n }\n if (currentPath.length === 3) {\n this.#currentPath2D = path2D = new Path2D();\n path2D.moveTo(...currentPath[0]);\n }\n this.#makeBezierCurve(path2D, ...currentPath.at(-3), ...currentPath.at(-2), x, y);\n }\n #endPath() {\n if (this.currentPath.length === 0) {\n return;\n }\n const lastPoint = this.currentPath.at(-1);\n this.#currentPath2D.lineTo(...lastPoint);\n }\n #stopDrawing(x, y) {\n this.#requestFrameCallback = null;\n x = Math.min(Math.max(x, 0), this.canvas.width);\n y = Math.min(Math.max(y, 0), this.canvas.height);\n this.#draw(x, y);\n this.#endPath();\n let bezier;\n if (this.currentPath.length !== 1) {\n bezier = this.#generateBezierPoints();\n } else {\n const xy = [x, y];\n bezier = [[xy, xy.slice(), xy.slice(), xy]];\n }\n const path2D = this.#currentPath2D;\n const currentPath = this.currentPath;\n this.currentPath = [];\n this.#currentPath2D = new Path2D();\n const cmd = () => {\n this.allRawPaths.push(currentPath);\n this.paths.push(bezier);\n this.bezierPath2D.push(path2D);\n this._uiManager.rebuild(this);\n };\n const undo = () => {\n this.allRawPaths.pop();\n this.paths.pop();\n this.bezierPath2D.pop();\n if (this.paths.length === 0) {\n this.remove();\n } else {\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n this.#fitToContent();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n #drawPoints() {\n if (!this.#hasSomethingToDraw) {\n return;\n }\n this.#hasSomethingToDraw = false;\n const thickness = Math.ceil(this.thickness * this.parentScale);\n const lastPoints = this.currentPath.slice(-3);\n const x = lastPoints.map(xy => xy[0]);\n const y = lastPoints.map(xy => xy[1]);\n const xMin = Math.min(...x) - thickness;\n const xMax = Math.max(...x) + thickness;\n const yMin = Math.min(...y) - thickness;\n const yMax = Math.max(...y) + thickness;\n const {\n ctx\n } = this;\n ctx.save();\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n ctx.stroke(this.#currentPath2D);\n ctx.restore();\n }\n #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) {\n const prevX = (x0 + x1) / 2;\n const prevY = (y0 + y1) / 2;\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n path2D.bezierCurveTo(prevX + 2 * (x1 - prevX) / 3, prevY + 2 * (y1 - prevY) / 3, x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3, x3, y3);\n }\n #generateBezierPoints() {\n const path = this.currentPath;\n if (path.length <= 2) {\n return [[path[0], path[0], path.at(-1), path.at(-1)]];\n }\n const bezierPoints = [];\n let i;\n let [x0, y0] = path[0];\n for (i = 1; i < path.length - 2; i++) {\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];\n const control2 = [x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3];\n bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);\n [x0, y0] = [x3, y3];\n }\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];\n const control2 = [x2 + 2 * (x1 - x2) / 3, y2 + 2 * (y1 - y2) / 3];\n bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);\n return bezierPoints;\n }\n #redraw() {\n if (this.isEmpty()) {\n this.#updateTransform();\n return;\n }\n this.#setStroke();\n const {\n canvas,\n ctx\n } = this;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n this.#updateTransform();\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n }\n commit() {\n if (this.#disableEditing) {\n return;\n }\n super.commit();\n this.isEditing = false;\n this.disableEditMode();\n this.setInForeground();\n this.#disableEditing = true;\n this.div.classList.add(\"disabled\");\n this.#fitToContent(true);\n this.select();\n this.parent.addInkEditorIfNeeded(true);\n this.moveInDOM();\n this.div.focus({\n preventScroll: true\n });\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n this.enableEditMode();\n }\n #addPointerdownListener() {\n if (this.#pointerdownAC) {\n return;\n }\n this.#pointerdownAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#pointerdownAC);\n this.canvas.addEventListener(\"pointerdown\", this.canvasPointerdown.bind(this), {\n signal\n });\n }\n #removePointerdownListener() {\n this.pointerdownAC?.abort();\n this.pointerdownAC = null;\n }\n canvasPointerdown(event) {\n if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n return;\n }\n this.setInForeground();\n event.preventDefault();\n if (!this.div.contains(document.activeElement)) {\n this.div.focus({\n preventScroll: true\n });\n }\n this.#startDrawing(event.offsetX, event.offsetY);\n }\n canvasPointermove(event) {\n event.preventDefault();\n this.#draw(event.offsetX, event.offsetY);\n }\n canvasPointerup(event) {\n event.preventDefault();\n this.#endDrawing(event);\n }\n canvasPointerleave(event) {\n this.#endDrawing(event);\n }\n #endDrawing(event) {\n this.#drawingAC?.abort();\n this.#drawingAC = null;\n this.#addPointerdownListener();\n if (this.#canvasContextMenuTimeoutId) {\n clearTimeout(this.#canvasContextMenuTimeoutId);\n }\n this.#canvasContextMenuTimeoutId = setTimeout(() => {\n this.#canvasContextMenuTimeoutId = null;\n this.canvas.removeEventListener(\"contextmenu\", noContextMenu);\n }, 10);\n this.#stopDrawing(event.offsetX, event.offsetY);\n this.addToAnnotationStorage();\n this.setInBackground();\n }\n #createCanvas() {\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = this.canvas.height = 0;\n this.canvas.className = \"inkEditorCanvas\";\n this.canvas.setAttribute(\"data-l10n-id\", \"pdfjs-ink-canvas\");\n this.div.append(this.canvas);\n this.ctx = this.canvas.getContext(\"2d\");\n }\n #createObserver() {\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n this._uiManager._signal.addEventListener(\"abort\", () => {\n this.#observer?.disconnect();\n this.#observer = null;\n }, {\n once: true\n });\n }\n get isResizable() {\n return !this.isEmpty() && this.#disableEditing;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.setAttribute(\"data-l10n-id\", \"pdfjs-ink\");\n const [x, y, w, h] = this.#getInitialBBox();\n this.setAt(x, y, 0, 0);\n this.setDims(w, h);\n this.#createCanvas();\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAspectRatio(this.width * parentWidth, this.height * parentHeight);\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this.#redraw();\n this.div.classList.add(\"disabled\");\n } else {\n this.div.classList.add(\"editing\");\n this.enableEditMode();\n }\n this.#createObserver();\n return this.div;\n }\n #setCanvasDims() {\n if (!this.#isCanvasInitialized) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.canvas.width = Math.ceil(this.width * parentWidth);\n this.canvas.height = Math.ceil(this.height * parentHeight);\n this.#updateTransform();\n }\n setDimensions(width, height) {\n const roundedWidth = Math.round(width);\n const roundedHeight = Math.round(height);\n if (this.#realWidth === roundedWidth && this.#realHeight === roundedHeight) {\n return;\n }\n this.#realWidth = roundedWidth;\n this.#realHeight = roundedHeight;\n this.canvas.style.visibility = \"hidden\";\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.fixAndSetPosition();\n if (this.#disableEditing) {\n this.#setScaleFactor(width, height);\n }\n this.#setCanvasDims();\n this.#redraw();\n this.canvas.style.visibility = \"visible\";\n this.fixDims();\n }\n #setScaleFactor(width, height) {\n const padding = this.#getPadding();\n const scaleFactorW = (width - padding) / this.#baseWidth;\n const scaleFactorH = (height - padding) / this.#baseHeight;\n this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\n }\n #updateTransform() {\n const padding = this.#getPadding() / 2;\n this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding);\n }\n static #buildPath2D(bezier) {\n const path2D = new Path2D();\n for (let i = 0, ii = bezier.length; i < ii; i++) {\n const [first, control1, control2, second] = bezier[i];\n if (i === 0) {\n path2D.moveTo(...first);\n }\n path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]);\n }\n return path2D;\n }\n static #toPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] += blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] + blX;\n points[i + 1] = x + blY;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] += blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trX - points[i + 1];\n points[i + 1] = trY - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n static #fromPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] -= blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] - blY;\n points[i + 1] = x - blX;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] -= blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trY - points[i + 1];\n points[i + 1] = trX - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n #serializePaths(s, tx, ty, rect) {\n const paths = [];\n const padding = this.thickness / 2;\n const shiftX = s * tx + padding;\n const shiftY = s * ty + padding;\n for (const bezier of this.paths) {\n const buffer = [];\n const points = [];\n for (let j = 0, jj = bezier.length; j < jj; j++) {\n const [first, control1, control2, second] = bezier[j];\n if (first[0] === second[0] && first[1] === second[1] && jj === 1) {\n const p0 = s * first[0] + shiftX;\n const p1 = s * first[1] + shiftY;\n buffer.push(p0, p1);\n points.push(p0, p1);\n break;\n }\n const p10 = s * first[0] + shiftX;\n const p11 = s * first[1] + shiftY;\n const p20 = s * control1[0] + shiftX;\n const p21 = s * control1[1] + shiftY;\n const p30 = s * control2[0] + shiftX;\n const p31 = s * control2[1] + shiftY;\n const p40 = s * second[0] + shiftX;\n const p41 = s * second[1] + shiftY;\n if (j === 0) {\n buffer.push(p10, p11);\n points.push(p10, p11);\n }\n buffer.push(p20, p21, p30, p31, p40, p41);\n points.push(p20, p21);\n if (j === jj - 1) {\n points.push(p40, p41);\n }\n }\n paths.push({\n bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation),\n points: InkEditor.#toPDFCoordinates(points, rect, this.rotation)\n });\n }\n return paths;\n }\n #getBbox() {\n let xMin = Infinity;\n let xMax = -Infinity;\n let yMin = Infinity;\n let yMax = -Infinity;\n for (const path of this.paths) {\n for (const [first, control1, control2, second] of path) {\n const bbox = Util.bezierBoundingBox(...first, ...control1, ...control2, ...second);\n xMin = Math.min(xMin, bbox[0]);\n yMin = Math.min(yMin, bbox[1]);\n xMax = Math.max(xMax, bbox[2]);\n yMax = Math.max(yMax, bbox[3]);\n }\n }\n return [xMin, yMin, xMax, yMax];\n }\n #getPadding() {\n return this.#disableEditing ? Math.ceil(this.thickness * this.parentScale) : 0;\n }\n #fitToContent(firstTime = false) {\n if (this.isEmpty()) {\n return;\n }\n if (!this.#disableEditing) {\n this.#redraw();\n return;\n }\n const bbox = this.#getBbox();\n const padding = this.#getPadding();\n this.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n this.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.setAspectRatio(width, height);\n const prevTranslationX = this.translationX;\n const prevTranslationY = this.translationY;\n this.translationX = -bbox[0];\n this.translationY = -bbox[1];\n this.#setCanvasDims();\n this.#redraw();\n this.#realWidth = width;\n this.#realHeight = height;\n this.setDims(width, height);\n const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;\n this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding);\n }\n static async deserialize(data, parent, uiManager) {\n if (data instanceof InkAnnotationElement) {\n return null;\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.thickness = data.thickness;\n editor.color = Util.makeHexColor(...data.color);\n editor.opacity = data.opacity;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const width = editor.width * pageWidth;\n const height = editor.height * pageHeight;\n const scaleFactor = editor.parentScale;\n const padding = data.thickness / 2;\n editor.#disableEditing = true;\n editor.#realWidth = Math.round(width);\n editor.#realHeight = Math.round(height);\n const {\n paths,\n rect,\n rotation\n } = data;\n for (let {\n bezier\n } of paths) {\n bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation);\n const path = [];\n editor.paths.push(path);\n let p0 = scaleFactor * (bezier[0] - padding);\n let p1 = scaleFactor * (bezier[1] - padding);\n for (let i = 2, ii = bezier.length; i < ii; i += 6) {\n const p10 = scaleFactor * (bezier[i] - padding);\n const p11 = scaleFactor * (bezier[i + 1] - padding);\n const p20 = scaleFactor * (bezier[i + 2] - padding);\n const p21 = scaleFactor * (bezier[i + 3] - padding);\n const p30 = scaleFactor * (bezier[i + 4] - padding);\n const p31 = scaleFactor * (bezier[i + 5] - padding);\n path.push([[p0, p1], [p10, p11], [p20, p21], [p30, p31]]);\n p0 = p30;\n p1 = p31;\n }\n const path2D = this.#buildPath2D(path);\n editor.bezierPath2D.push(path2D);\n }\n const bbox = editor.#getBbox();\n editor.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n editor.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n editor.#setScaleFactor(width, height);\n return editor;\n }\n serialize() {\n if (this.isEmpty()) {\n return null;\n }\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n return {\n annotationType: AnnotationEditorType.INK,\n color,\n thickness: this.thickness,\n opacity: this.opacity,\n paths: this.#serializePaths(this.scaleFactor / this.parentScale, this.translationX, this.translationY, rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n }\n}\n\n;// ./src/display/editor/stamp.js\n\n\n\n\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n #bitmapId = null;\n #bitmapPromise = null;\n #bitmapUrl = null;\n #bitmapFile = null;\n #bitmapFileName = \"\";\n #canvas = null;\n #observer = null;\n #resizeTimeoutId = null;\n #isSvg = false;\n #hasBeenAddedInUndoStack = false;\n static _type = \"stamp\";\n static _editorType = AnnotationEditorType.STAMP;\n constructor(params) {\n super({\n ...params,\n name: \"stampEditor\"\n });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static get supportedTypes() {\n const types = [\"apng\", \"avif\", \"bmp\", \"gif\", \"jpeg\", \"png\", \"svg+xml\", \"webp\", \"x-icon\"];\n return shadow(this, \"supportedTypes\", types.map(type => `image/${type}`));\n }\n static get supportedTypesStr() {\n return shadow(this, \"supportedTypesStr\", this.supportedTypes.join(\",\"));\n }\n static isHandlingMimeForPasting(mime) {\n return this.supportedTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor(AnnotationEditorType.STAMP, {\n bitmapFile: item.getAsFile()\n });\n }\n altTextFinish() {\n if (this._uiManager.useNewAltTextFlow) {\n this.div.hidden = false;\n }\n super.altTextFinish();\n }\n get telemetryFinalData() {\n return {\n type: \"stamp\",\n hasAltText: !!this.altTextData?.altText\n };\n }\n static computeTelemetryFinalData(data) {\n const hasAltTextStats = data.get(\"hasAltText\");\n return {\n hasAltText: hasAltTextStats.get(true) ?? 0,\n hasNoAltText: hasAltTextStats.get(false) ?? 0\n };\n }\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n if (data.file) {\n this.#bitmapFileName = data.file.name;\n }\n this.#createCanvas();\n }\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (!this.#canvas) {\n return;\n }\n if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._editToolbar.hide();\n this._uiManager.editAltText(this, true);\n return;\n }\n if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._reportTelemetry({\n action: \"pdfjs.image.image_added\",\n data: {\n alt_text_modal: false,\n alt_text_type: \"empty\"\n }\n });\n try {\n this.mlGuessAltText();\n } catch {}\n }\n this.div.focus();\n }\n async mlGuessAltText(imageData = null, updateAltTextData = true) {\n if (this.hasAltTextData()) {\n return null;\n }\n const {\n mlManager\n } = this._uiManager;\n if (!mlManager) {\n throw new Error(\"No ML.\");\n }\n if (!(await mlManager.isEnabledFor(\"altText\"))) {\n throw new Error(\"ML isn't enabled for alt text.\");\n }\n const {\n data,\n width,\n height\n } = imageData || this.copyCanvas(null, null, true).imageData;\n const response = await mlManager.guess({\n name: \"altText\",\n request: {\n data,\n width,\n height,\n channels: data.length / (width * height)\n }\n });\n if (!response) {\n throw new Error(\"No response from the AI service.\");\n }\n if (response.error) {\n throw new Error(\"Error from the AI service.\");\n }\n if (response.cancel) {\n return null;\n }\n if (!response.output) {\n throw new Error(\"No valid response from the AI service.\");\n }\n const altText = response.output;\n await this.setGuessedAltText(altText);\n if (updateAltTextData && !this.hasAltTextData()) {\n this.altTextData = {\n alt: altText,\n decorative: false\n };\n }\n return altText;\n }\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = StampEditor.supportedTypesStr;\n const signal = this._uiManager._signal;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this._reportTelemetry({\n action: \"pdfjs.image.image_selected\",\n data: {\n alt_text_modal: this._uiManager.useNewAltTextFlow\n }\n });\n this.#getBitmapFetched(data);\n }\n resolve();\n }, {\n signal\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n }, {\n signal\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n this.#observer?.disconnect();\n this.#observer = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded() {\n this._isDraggable = true;\n this.div.focus();\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId);\n }\n get isResizable() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.div.setAttribute(\"role\", \"figure\");\n this.addAltTextButton();\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n if (this.width && !this.annotationElementId) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n }\n return this.div;\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(width * parentWidth / pageWidth, height * parentHeight / pageHeight);\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n canvas.setAttribute(\"role\", \"img\");\n this.addContainer(canvas);\n if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n div.hidden = false;\n }\n this.#drawBitmap(width, height);\n this.#createObserver();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._reportTelemetry({\n action: \"inserted_image\"\n });\n if (this.#bitmapFileName) {\n canvas.setAttribute(\"aria-label\", this.#bitmapFileName);\n }\n }\n copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n if (!maxDataDimension) {\n maxDataDimension = 224;\n }\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n const outputScale = new OutputScale();\n let bitmap = this.#bitmap;\n let width = bitmapWidth,\n height = bitmapHeight;\n let canvas = null;\n if (maxPreviewDimension) {\n if (bitmapWidth > maxPreviewDimension || bitmapHeight > maxPreviewDimension) {\n const ratio = Math.min(maxPreviewDimension / bitmapWidth, maxPreviewDimension / bitmapHeight);\n width = Math.floor(bitmapWidth * ratio);\n height = Math.floor(bitmapHeight * ratio);\n }\n canvas = document.createElement(\"canvas\");\n const scaledWidth = canvas.width = Math.ceil(width * outputScale.sx);\n const scaledHeight = canvas.height = Math.ceil(height * outputScale.sy);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n }\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n let white = \"white\",\n black = \"#cfcfd8\";\n if (this._uiManager.hcmFilter !== \"none\") {\n black = \"black\";\n } else if (window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches) {\n white = \"#8f8f9d\";\n black = \"#42414d\";\n }\n const boxDim = 15;\n const boxDimWidth = boxDim * outputScale.sx;\n const boxDimHeight = boxDim * outputScale.sy;\n const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n const patternCtx = pattern.getContext(\"2d\");\n patternCtx.fillStyle = white;\n patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n patternCtx.fillStyle = black;\n patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n let imageData = null;\n if (createImageData) {\n let dataWidth, dataHeight;\n if (outputScale.symmetric && bitmap.width < maxDataDimension && bitmap.height < maxDataDimension) {\n dataWidth = bitmap.width;\n dataHeight = bitmap.height;\n } else {\n bitmap = this.#bitmap;\n if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n const ratio = Math.min(maxDataDimension / bitmapWidth, maxDataDimension / bitmapHeight);\n dataWidth = Math.floor(bitmapWidth * ratio);\n dataHeight = Math.floor(bitmapHeight * ratio);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n }\n }\n }\n const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n const offscreenCtx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n imageData = {\n width: dataWidth,\n height: dataHeight,\n data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n };\n }\n return {\n canvas,\n width,\n height,\n imageData\n };\n }\n #setDimensions(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap(width, height);\n }, TIME_TO_WAIT);\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap(width, height) {\n const outputScale = new OutputScale();\n const scaledWidth = Math.ceil(width * outputScale.sx);\n const scaledHeight = Math.ceil(height * outputScale.sy);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n return;\n }\n canvas.width = scaledWidth;\n canvas.height = scaledHeight;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n getImageForAltText() {\n return this.#canvas;\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n #createObserver() {\n if (!this._uiManager._signal) {\n return;\n }\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.#setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n this._uiManager._signal.addEventListener(\"abort\", () => {\n this.#observer?.disconnect();\n this.#observer = null;\n }, {\n once: true\n });\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof StampAnnotationElement) {\n const {\n data: {\n rect,\n rotation,\n id,\n structParent,\n popupRef\n },\n container,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n const canvas = container.querySelector(\"canvas\");\n const imageData = uiManager.imageManager.getFromCanvas(container.id, canvas);\n canvas.remove();\n const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n initialData = data = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId: imageData.id,\n bitmap: imageData.bitmap,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n accessibilityData: {\n decorative: false,\n altText\n },\n isSvg: false,\n structParent,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n const {\n rect,\n bitmap,\n bitmapUrl,\n bitmapId,\n isSvg,\n accessibilityData\n } = data;\n if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n if (bitmap) {\n editor.#bitmap = bitmap;\n }\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n editor.annotationElementId = data.id || null;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n editor._initialData = initialData;\n editor.#hasBeenAddedInUndoStack = !!initialData;\n return editor;\n }\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const serialized = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId: this.#bitmapId,\n pageIndex: this.pageIndex,\n rect: this.getRect(0, 0),\n rotation: this.rotation,\n isSvg: this.#isSvg,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.serializeAltText(true);\n return serialized;\n }\n const {\n decorative,\n altText\n } = this.serializeAltText(false);\n if (!decorative && altText) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: altText\n };\n }\n if (this.annotationElementId) {\n const changes = this.#hasElementChanged(serialized);\n if (changes.isSame) {\n return null;\n }\n if (changes.isSameAltText) {\n delete serialized.accessibilityData;\n } else {\n serialized.accessibilityData.structParent = this._initialData.structParent ?? -1;\n }\n }\n serialized.id = this.annotationElementId;\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n rect,\n pageIndex,\n accessibilityData: {\n altText\n }\n } = this._initialData;\n const isSameRect = serialized.rect.every((x, i) => Math.abs(x - rect[i]) < 1);\n const isSamePageIndex = serialized.pageIndex === pageIndex;\n const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n return {\n isSame: isSameRect && isSamePageIndex && isSameAltText,\n isSameAltText\n };\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #clickAC = null;\n #editorFocusTimeoutId = null;\n #editors = new Map();\n #hadPointerDown = false;\n #isCleaningUp = false;\n #isDisabling = false;\n #textLayer = null;\n #textSelectionAC = null;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor].map(type => [type._editorType, type]));\n constructor({\n uiManager,\n pageIndex,\n div,\n structTreeLayer,\n accessibilityManager,\n annotationLayer,\n drawLayer,\n textLayer,\n viewport,\n l10n\n }) {\n const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n, uiManager);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n this.#textLayer = textLayer;\n this.drawLayer = drawLayer;\n this._structTree = structTreeLayer;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n get isInvisible() {\n return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n }\n updateToolbar(mode) {\n this.#uiManager.updateToolbar(mode);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case AnnotationEditorType.INK:\n this.addInkEditorIfNeeded(false);\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.disableClick();\n break;\n case AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n addInkEditorIfNeeded(isCommitting) {\n if (this.#uiManager.getMode() !== AnnotationEditorType.INK) {\n return;\n }\n if (!isCommitting) {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.setInBackground();\n return;\n }\n }\n }\n const editor = this.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false);\n editor.setInBackground();\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n toggleDrawing(enabled = false) {\n this.div.classList.toggle(\"drawing\", !enabled);\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n }\n async enable() {\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n const annotationElementIds = new Set();\n for (const editor of this.#editors.values()) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n if (!this.#annotationLayer) {\n return;\n }\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = await this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n continue;\n }\n if (editor.serialize() !== null) {\n changedAnnotations.set(editor.annotationElementId, editor);\n continue;\n } else {\n resetAnnotations.set(editor.annotationElementId, editor);\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n if (this.#annotationLayer) {\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n this.#uiManager.addChangedExistingAnnotation(editor);\n if (editor.renderAnnotationElement(editable)) {\n editor.show(false);\n }\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#textSelectionAC) {\n this.#textSelectionAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n signal\n });\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#textSelectionAC) {\n this.#textSelectionAC.abort();\n this.#textSelectionAC = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n #textLayerPointerDown(event) {\n this.#uiManager.unselectAll();\n const {\n target\n } = event;\n if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\")) && this.#textLayer.div.contains(target)) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#uiManager.showAllEditors(\"highlight\", true, true);\n this.#textLayer.div.classList.add(\"free\");\n this.toggleDrawing();\n HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", {\n target: this.#textLayer.div,\n x: event.x,\n y: event.y\n });\n this.#textLayer.div.addEventListener(\"pointerup\", () => {\n this.#textLayer.div.classList.remove(\"free\");\n this.toggleDrawing(true);\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n event.preventDefault();\n }\n }\n enableClick() {\n if (this.#clickAC) {\n return;\n }\n this.#clickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#clickAC);\n this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n signal\n });\n this.div.addEventListener(\"pointerup\", this.pointerup.bind(this), {\n signal\n });\n }\n disableClick() {\n this.#clickAC?.abort();\n this.#clickAC = null;\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n if (!this.#isCleaningUp) {\n this.addInkEditorIfNeeded(false);\n }\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded();\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n editor.show();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getNextId() {\n return this.#uiManager.getId();\n }\n get #currentEditorType() {\n return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n }\n combinedSignal(ac) {\n return this.#uiManager.combinedSignal(ac);\n }\n #createNewEditor(params) {\n const editorType = this.#currentEditorType;\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n canCreateNewEmptyEditor() {\n return this.#currentEditorType?.canCreateNewEmptyEditor();\n }\n pasteEditor(mode, params) {\n this.#uiManager.updateToolbar(mode);\n this.#uiManager.updateMode(mode);\n const {\n offsetX,\n offsetY\n } = this.#getCenterPoint();\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params\n });\n if (editor) {\n this.add(editor);\n }\n }\n async deserialize(data) {\n return (await AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager)) || null;\n }\n createAndAddNewEditor(event, isCentered, data = {}) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n ...data\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.div.getBoundingClientRect();\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n return {\n offsetX,\n offsetY\n };\n }\n addNewEditor() {\n this.createAndAddNewEditor(this.#getCenterPoint(), true);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n if (this.#uiManager.getMode() === AnnotationEditorType.STAMP) {\n this.#uiManager.unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n destroy() {\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n this.#isCleaningUp = true;\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n this.#isCleaningUp = false;\n }\n render({\n viewport\n }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n setLayerDimensions(this.div, {\n rotation\n });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n this.addInkEditorIfNeeded(false);\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\n\n;// ./src/display/draw_layer.js\n\n\nclass DrawLayer {\n #parent = null;\n #id = 0;\n #mapping = new Map();\n #toUpdate = new Map();\n constructor({\n pageIndex\n }) {\n this.pageIndex = pageIndex;\n }\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n return;\n }\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n static #setBox(element, {\n x = 0,\n y = 0,\n width = 1,\n height = 1\n } = {}) {\n const {\n style\n } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n #createSVG(box) {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", true);\n DrawLayer.#setBox(svg, box);\n return svg;\n }\n #createClipPath(defs, pathId) {\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n return clipPathId;\n }\n draw(outlines, color, opacity, isPathUpdatable = false) {\n const id = this.#id++;\n const root = this.#createSVG(outlines.box);\n root.classList.add(...outlines.classNamesForDrawing);\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"d\", outlines.toSVGPath());\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = this.#createClipPath(defs, pathId);\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n root.setAttribute(\"fill\", color);\n root.setAttribute(\"fill-opacity\", opacity);\n use.setAttribute(\"href\", `#${pathId}`);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n drawOutline(outlines) {\n const id = this.#id++;\n const root = this.#createSVG(outlines.box);\n root.classList.add(...outlines.classNamesForOutlining);\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"d\", outlines.toSVGPath());\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (outlines.mustRemoveSelfIntersections) {\n const mask = DrawLayer._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_p${this.pageIndex}_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = DrawLayer._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = DrawLayer._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n use.classList.add(\"mask\");\n }\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n this.#mapping.set(id, root);\n return id;\n }\n finalizeLine(id, line) {\n const path = this.#toUpdate.get(id);\n this.#toUpdate.delete(id);\n this.updateBox(id, line.box);\n path.setAttribute(\"d\", line.toSVGPath());\n }\n updateLine(id, line) {\n const root = this.#mapping.get(id);\n const defs = root.firstChild;\n const path = defs.firstChild;\n path.setAttribute(\"d\", line.toSVGPath());\n }\n updatePath(id, line) {\n this.#toUpdate.get(id).setAttribute(\"d\", line.toSVGPath());\n }\n updateBox(id, box) {\n DrawLayer.#setBox(this.#mapping.get(id), box);\n }\n show(id, visible) {\n this.#mapping.get(id).classList.toggle(\"hidden\", !visible);\n }\n rotate(id, angle) {\n this.#mapping.get(id).setAttribute(\"data-main-rotation\", angle);\n }\n changeColor(id, color) {\n this.#mapping.get(id).setAttribute(\"fill\", color);\n }\n changeOpacity(id, opacity) {\n this.#mapping.get(id).setAttribute(\"fill-opacity\", opacity);\n }\n addClass(id, className) {\n this.#mapping.get(id).classList.add(className);\n }\n removeClass(id, className) {\n this.#mapping.get(id).classList.remove(className);\n }\n getSVGRoot(id) {\n return this.#mapping.get(id);\n }\n remove(id) {\n this.#toUpdate.delete(id);\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n this.#toUpdate.clear();\n }\n}\n\n;// ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst pdfjsVersion = \"4.8.69\";\nconst pdfjsBuild = \"3634dab10\";\n\nvar __webpack_exports__AbortException = __webpack_exports__.AbortException;\nvar __webpack_exports__AnnotationEditorLayer = __webpack_exports__.AnnotationEditorLayer;\nvar __webpack_exports__AnnotationEditorParamsType = __webpack_exports__.AnnotationEditorParamsType;\nvar __webpack_exports__AnnotationEditorType = __webpack_exports__.AnnotationEditorType;\nvar __webpack_exports__AnnotationEditorUIManager = __webpack_exports__.AnnotationEditorUIManager;\nvar __webpack_exports__AnnotationLayer = __webpack_exports__.AnnotationLayer;\nvar __webpack_exports__AnnotationMode = __webpack_exports__.AnnotationMode;\nvar __webpack_exports__ColorPicker = __webpack_exports__.ColorPicker;\nvar __webpack_exports__DOMSVGFactory = __webpack_exports__.DOMSVGFactory;\nvar __webpack_exports__DrawLayer = __webpack_exports__.DrawLayer;\nvar __webpack_exports__FeatureTest = __webpack_exports__.FeatureTest;\nvar __webpack_exports__GlobalWorkerOptions = __webpack_exports__.GlobalWorkerOptions;\nvar __webpack_exports__ImageKind = __webpack_exports__.ImageKind;\nvar __webpack_exports__InvalidPDFException = __webpack_exports__.InvalidPDFException;\nvar __webpack_exports__MissingPDFException = __webpack_exports__.MissingPDFException;\nvar __webpack_exports__OPS = __webpack_exports__.OPS;\nvar __webpack_exports__OutputScale = __webpack_exports__.OutputScale;\nvar __webpack_exports__PDFDataRangeTransport = __webpack_exports__.PDFDataRangeTransport;\nvar __webpack_exports__PDFDateString = __webpack_exports__.PDFDateString;\nvar __webpack_exports__PDFWorker = __webpack_exports__.PDFWorker;\nvar __webpack_exports__PasswordResponses = __webpack_exports__.PasswordResponses;\nvar __webpack_exports__PermissionFlag = __webpack_exports__.PermissionFlag;\nvar __webpack_exports__PixelsPerInch = __webpack_exports__.PixelsPerInch;\nvar __webpack_exports__RenderingCancelledException = __webpack_exports__.RenderingCancelledException;\nvar __webpack_exports__TextLayer = __webpack_exports__.TextLayer;\nvar __webpack_exports__UnexpectedResponseException = __webpack_exports__.UnexpectedResponseException;\nvar __webpack_exports__Util = __webpack_exports__.Util;\nvar __webpack_exports__VerbosityLevel = __webpack_exports__.VerbosityLevel;\nvar __webpack_exports__XfaLayer = __webpack_exports__.XfaLayer;\nvar __webpack_exports__build = __webpack_exports__.build;\nvar __webpack_exports__createValidAbsoluteUrl = __webpack_exports__.createValidAbsoluteUrl;\nvar __webpack_exports__fetchData = __webpack_exports__.fetchData;\nvar __webpack_exports__getDocument = __webpack_exports__.getDocument;\nvar __webpack_exports__getFilenameFromUrl = __webpack_exports__.getFilenameFromUrl;\nvar __webpack_exports__getPdfFilenameFromUrl = __webpack_exports__.getPdfFilenameFromUrl;\nvar __webpack_exports__getXfaPageViewport = __webpack_exports__.getXfaPageViewport;\nvar __webpack_exports__isDataScheme = __webpack_exports__.isDataScheme;\nvar __webpack_exports__isPdfFile = __webpack_exports__.isPdfFile;\nvar __webpack_exports__noContextMenu = __webpack_exports__.noContextMenu;\nvar __webpack_exports__normalizeUnicode = __webpack_exports__.normalizeUnicode;\nvar __webpack_exports__setLayerDimensions = __webpack_exports__.setLayerDimensions;\nvar __webpack_exports__shadow = __webpack_exports__.shadow;\nvar __webpack_exports__version = __webpack_exports__.version;\nexport { __webpack_exports__AbortException as AbortException, __webpack_exports__AnnotationEditorLayer as AnnotationEditorLayer, __webpack_exports__AnnotationEditorParamsType as AnnotationEditorParamsType, __webpack_exports__AnnotationEditorType as AnnotationEditorType, __webpack_exports__AnnotationEditorUIManager as AnnotationEditorUIManager, __webpack_exports__AnnotationLayer as AnnotationLayer, __webpack_exports__AnnotationMode as AnnotationMode, __webpack_exports__ColorPicker as ColorPicker, __webpack_exports__DOMSVGFactory as DOMSVGFactory, __webpack_exports__DrawLayer as DrawLayer, __webpack_exports__FeatureTest as FeatureTest, __webpack_exports__GlobalWorkerOptions as GlobalWorkerOptions, __webpack_exports__ImageKind as ImageKind, __webpack_exports__InvalidPDFException as InvalidPDFException, __webpack_exports__MissingPDFException as MissingPDFException, __webpack_exports__OPS as OPS, __webpack_exports__OutputScale as OutputScale, __webpack_exports__PDFDataRangeTransport as PDFDataRangeTransport, __webpack_exports__PDFDateString as PDFDateString, __webpack_exports__PDFWorker as PDFWorker, __webpack_exports__PasswordResponses as PasswordResponses, __webpack_exports__PermissionFlag as PermissionFlag, __webpack_exports__PixelsPerInch as PixelsPerInch, __webpack_exports__RenderingCancelledException as RenderingCancelledException, __webpack_exports__TextLayer as TextLayer, __webpack_exports__UnexpectedResponseException as UnexpectedResponseException, __webpack_exports__Util as Util, __webpack_exports__VerbosityLevel as VerbosityLevel, __webpack_exports__XfaLayer as XfaLayer, __webpack_exports__build as build, __webpack_exports__createValidAbsoluteUrl as createValidAbsoluteUrl, __webpack_exports__fetchData as fetchData, __webpack_exports__getDocument as getDocument, __webpack_exports__getFilenameFromUrl as getFilenameFromUrl, __webpack_exports__getPdfFilenameFromUrl as getPdfFilenameFromUrl, __webpack_exports__getXfaPageViewport as getXfaPageViewport, __webpack_exports__isDataScheme as isDataScheme, __webpack_exports__isPdfFile as isPdfFile, __webpack_exports__noContextMenu as noContextMenu, __webpack_exports__normalizeUnicode as normalizeUnicode, __webpack_exports__setLayerDimensions as setLayerDimensions, __webpack_exports__shadow as shadow, __webpack_exports__version as version };\n\n//# sourceMappingURL=pdf.mjs.map","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport invariant from 'tiny-invariant';\nconst DEFAULT_LINK_REL = 'noopener noreferrer nofollow';\nexport default class LinkService {\n constructor() {\n this.externalLinkEnabled = true;\n this.externalLinkRel = undefined;\n this.externalLinkTarget = undefined;\n this.isInPresentationMode = false;\n this.pdfDocument = undefined;\n this.pdfViewer = undefined;\n }\n setDocument(pdfDocument) {\n this.pdfDocument = pdfDocument;\n }\n setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n setExternalLinkRel(externalLinkRel) {\n this.externalLinkRel = externalLinkRel;\n }\n setExternalLinkTarget(externalLinkTarget) {\n this.externalLinkTarget = externalLinkTarget;\n }\n setHistory() {\n // Intentionally empty\n }\n get pagesCount() {\n return this.pdfDocument ? this.pdfDocument.numPages : 0;\n }\n get page() {\n invariant(this.pdfViewer, 'PDF viewer is not initialized.');\n return this.pdfViewer.currentPageNumber || 0;\n }\n set page(value) {\n invariant(this.pdfViewer, 'PDF viewer is not initialized.');\n this.pdfViewer.currentPageNumber = value;\n }\n get rotation() {\n return 0;\n }\n set rotation(_value) {\n // Intentionally empty\n }\n goToDestination(dest) {\n return new Promise((resolve) => {\n invariant(this.pdfDocument, 'PDF document not loaded.');\n invariant(dest, 'Destination is not specified.');\n if (typeof dest === 'string') {\n this.pdfDocument.getDestination(dest).then(resolve);\n }\n else if (Array.isArray(dest)) {\n resolve(dest);\n }\n else {\n dest.then(resolve);\n }\n }).then((explicitDest) => {\n invariant(Array.isArray(explicitDest), `\"${explicitDest}\" is not a valid destination array.`);\n const destRef = explicitDest[0];\n new Promise((resolve) => {\n invariant(this.pdfDocument, 'PDF document not loaded.');\n if (destRef instanceof Object) {\n this.pdfDocument\n .getPageIndex(destRef)\n .then((pageIndex) => {\n resolve(pageIndex);\n })\n .catch(() => {\n invariant(false, `\"${destRef}\" is not a valid page reference.`);\n });\n }\n else if (typeof destRef === 'number') {\n resolve(destRef);\n }\n else {\n invariant(false, `\"${destRef}\" is not a valid destination reference.`);\n }\n }).then((pageIndex) => {\n const pageNumber = pageIndex + 1;\n invariant(this.pdfViewer, 'PDF viewer is not initialized.');\n invariant(pageNumber >= 1 && pageNumber <= this.pagesCount, `\"${pageNumber}\" is not a valid page number.`);\n this.pdfViewer.scrollPageIntoView({\n dest: explicitDest,\n pageIndex,\n pageNumber,\n });\n });\n });\n }\n navigateTo(dest) {\n this.goToDestination(dest);\n }\n goToPage(pageNumber) {\n const pageIndex = pageNumber - 1;\n invariant(this.pdfViewer, 'PDF viewer is not initialized.');\n invariant(pageNumber >= 1 && pageNumber <= this.pagesCount, `\"${pageNumber}\" is not a valid page number.`);\n this.pdfViewer.scrollPageIntoView({\n pageIndex,\n pageNumber,\n });\n }\n addLinkAttributes(link, url, newWindow) {\n link.href = url;\n link.rel = this.externalLinkRel || DEFAULT_LINK_REL;\n link.target = newWindow ? '_blank' : this.externalLinkTarget || '';\n }\n getDestinationHash() {\n return '#';\n }\n getAnchorUrl() {\n return '#';\n }\n setHash() {\n // Intentionally empty\n }\n executeNamedAction() {\n // Intentionally empty\n }\n cachePageRef() {\n // Intentionally empty\n }\n isPageVisible() {\n return true;\n }\n isPageCached() {\n return true;\n }\n executeSetOCGState() {\n // Intentionally empty\n }\n}\n","// As defined in https://github.com/mozilla/pdf.js/blob/d9fac3459609a807be6506fb3441b5da4b154d14/src/shared/util.js#L371-L374\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\nexport default PasswordResponses;\n","'use client';\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react';\nimport makeEventProps from 'make-event-props';\nimport makeCancellable from 'make-cancellable-promise';\nimport clsx from 'clsx';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport { dequal } from 'dequal';\nimport * as pdfjs from 'pdfjs-dist';\nimport DocumentContext from './DocumentContext.js';\nimport Message from './Message.js';\nimport LinkService from './LinkService.js';\nimport PasswordResponses from './PasswordResponses.js';\nimport { cancelRunningTask, dataURItoByteString, displayCORSWarning, isArrayBuffer, isBlob, isBrowser, isDataURI, loadFromFile, } from './shared/utils.js';\nimport useResolver from './shared/hooks/useResolver.js';\nconst { PDFDataRangeTransport } = pdfjs;\nconst defaultOnPassword = (callback, reason) => {\n switch (reason) {\n case PasswordResponses.NEED_PASSWORD: {\n const password = prompt('Enter the password to open this PDF file.');\n callback(password);\n break;\n }\n case PasswordResponses.INCORRECT_PASSWORD: {\n const password = prompt('Invalid password. Please try again.');\n callback(password);\n break;\n }\n default:\n }\n};\nfunction isParameterObject(file) {\n return (typeof file === 'object' &&\n file !== null &&\n ('data' in file || 'range' in file || 'url' in file));\n}\n/**\n * Loads a document passed using `file` prop.\n */\nconst Document = forwardRef(function Document(_a, ref) {\n var { children, className, error = 'Failed to load PDF file.', externalLinkRel, externalLinkTarget, file, inputRef, imageResourcesPath, loading = 'Loading PDFā€¦', noData = 'No PDF file specified.', onItemClick, onLoadError: onLoadErrorProps, onLoadProgress, onLoadSuccess: onLoadSuccessProps, onPassword = defaultOnPassword, onSourceError: onSourceErrorProps, onSourceSuccess: onSourceSuccessProps, options, renderMode, rotate } = _a, otherProps = __rest(_a, [\"children\", \"className\", \"error\", \"externalLinkRel\", \"externalLinkTarget\", \"file\", \"inputRef\", \"imageResourcesPath\", \"loading\", \"noData\", \"onItemClick\", \"onLoadError\", \"onLoadProgress\", \"onLoadSuccess\", \"onPassword\", \"onSourceError\", \"onSourceSuccess\", \"options\", \"renderMode\", \"rotate\"]);\n const [sourceState, sourceDispatch] = useResolver();\n const { value: source, error: sourceError } = sourceState;\n const [pdfState, pdfDispatch] = useResolver();\n const { value: pdf, error: pdfError } = pdfState;\n const linkService = useRef(new LinkService());\n const pages = useRef([]);\n const prevFile = useRef(undefined);\n const prevOptions = useRef(undefined);\n if (file && file !== prevFile.current && isParameterObject(file)) {\n warning(!dequal(file, prevFile.current), `File prop passed to changed, but it's equal to previous one. This might result in unnecessary reloads. Consider memoizing the value passed to \"file\" prop.`);\n prevFile.current = file;\n }\n // Detect non-memoized changes in options prop\n if (options && options !== prevOptions.current) {\n warning(!dequal(options, prevOptions.current), `Options prop passed to changed, but it's equal to previous one. This might result in unnecessary reloads. Consider memoizing the value passed to \"options\" prop.`);\n prevOptions.current = options;\n }\n const viewer = useRef({\n // Handling jumping to internal links target\n scrollPageIntoView: (args) => {\n const { dest, pageNumber, pageIndex = pageNumber - 1 } = args;\n // First, check if custom handling of onItemClick was provided\n if (onItemClick) {\n onItemClick({ dest, pageIndex, pageNumber });\n return;\n }\n // If not, try to look for target page within the .\n const page = pages.current[pageIndex];\n if (page) {\n // Scroll to the page automatically\n page.scrollIntoView();\n return;\n }\n warning(false, `An internal link leading to page ${pageNumber} was clicked, but neither was provided with onItemClick nor it was able to find the page within itself. Either provide onItemClick to and handle navigating by yourself or ensure that all pages are rendered within .`);\n },\n });\n useImperativeHandle(ref, () => ({\n linkService,\n pages,\n viewer,\n }), []);\n /**\n * Called when a document source is resolved correctly\n */\n function onSourceSuccess() {\n if (onSourceSuccessProps) {\n onSourceSuccessProps();\n }\n }\n /**\n * Called when a document source failed to be resolved correctly\n */\n function onSourceError() {\n if (!sourceError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, sourceError.toString());\n if (onSourceErrorProps) {\n onSourceErrorProps(sourceError);\n }\n }\n function resetSource() {\n sourceDispatch({ type: 'RESET' });\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: See https://github.com/biomejs/biome/issues/3080\n useEffect(resetSource, [file, sourceDispatch]);\n const findDocumentSource = useCallback(() => __awaiter(this, void 0, void 0, function* () {\n if (!file) {\n return null;\n }\n // File is a string\n if (typeof file === 'string') {\n if (isDataURI(file)) {\n const fileByteString = dataURItoByteString(file);\n return { data: fileByteString };\n }\n displayCORSWarning();\n return { url: file };\n }\n // File is PDFDataRangeTransport\n if (file instanceof PDFDataRangeTransport) {\n return { range: file };\n }\n // File is an ArrayBuffer\n if (isArrayBuffer(file)) {\n return { data: file };\n }\n /**\n * The cases below are browser-only.\n * If you're running on a non-browser environment, these cases will be of no use.\n */\n if (isBrowser) {\n // File is a Blob\n if (isBlob(file)) {\n const data = yield loadFromFile(file);\n return { data };\n }\n }\n // At this point, file must be an object\n invariant(typeof file === 'object', 'Invalid parameter in file, need either Uint8Array, string or a parameter object');\n invariant(isParameterObject(file), 'Invalid parameter object: need either .data, .range or .url');\n // File .url is a string\n if ('url' in file && typeof file.url === 'string') {\n if (isDataURI(file.url)) {\n const { url } = file, otherParams = __rest(file, [\"url\"]);\n const fileByteString = dataURItoByteString(url);\n return Object.assign({ data: fileByteString }, otherParams);\n }\n displayCORSWarning();\n }\n return file;\n }), [file]);\n useEffect(() => {\n const cancellable = makeCancellable(findDocumentSource());\n cancellable.promise\n .then((nextSource) => {\n sourceDispatch({ type: 'RESOLVE', value: nextSource });\n })\n .catch((error) => {\n sourceDispatch({ type: 'REJECT', error });\n });\n return () => {\n cancelRunningTask(cancellable);\n };\n }, [findDocumentSource, sourceDispatch]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (typeof source === 'undefined') {\n return;\n }\n if (source === false) {\n onSourceError();\n return;\n }\n onSourceSuccess();\n }, [source]);\n /**\n * Called when a document is read successfully\n */\n function onLoadSuccess() {\n if (!pdf) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onLoadSuccessProps) {\n onLoadSuccessProps(pdf);\n }\n pages.current = new Array(pdf.numPages);\n linkService.current.setDocument(pdf);\n }\n /**\n * Called when a document failed to read successfully\n */\n function onLoadError() {\n if (!pdfError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, pdfError.toString());\n if (onLoadErrorProps) {\n onLoadErrorProps(pdfError);\n }\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on source change\n useEffect(function resetDocument() {\n pdfDispatch({ type: 'RESET' });\n }, [pdfDispatch, source]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(function loadDocument() {\n if (!source) {\n return;\n }\n const documentInitParams = options\n ? Object.assign(Object.assign({}, source), options) : source;\n const destroyable = pdfjs.getDocument(documentInitParams);\n if (onLoadProgress) {\n destroyable.onProgress = onLoadProgress;\n }\n if (onPassword) {\n destroyable.onPassword = onPassword;\n }\n const loadingTask = destroyable;\n const loadingPromise = loadingTask.promise\n .then((nextPdf) => {\n pdfDispatch({ type: 'RESOLVE', value: nextPdf });\n })\n .catch((error) => {\n if (loadingTask.destroyed) {\n return;\n }\n pdfDispatch({ type: 'REJECT', error });\n });\n return () => {\n loadingPromise.finally(() => loadingTask.destroy());\n };\n }, [options, pdfDispatch, source]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (typeof pdf === 'undefined') {\n return;\n }\n if (pdf === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, [pdf]);\n useEffect(function setupLinkService() {\n linkService.current.setViewer(viewer.current);\n linkService.current.setExternalLinkRel(externalLinkRel);\n linkService.current.setExternalLinkTarget(externalLinkTarget);\n }, [externalLinkRel, externalLinkTarget]);\n const registerPage = useCallback((pageIndex, ref) => {\n pages.current[pageIndex] = ref;\n }, []);\n const unregisterPage = useCallback((pageIndex) => {\n delete pages.current[pageIndex];\n }, []);\n const childContext = useMemo(() => ({\n imageResourcesPath,\n linkService: linkService.current,\n onItemClick,\n pdf,\n registerPage,\n renderMode,\n rotate,\n unregisterPage,\n }), [imageResourcesPath, onItemClick, pdf, registerPage, renderMode, rotate, unregisterPage]);\n const eventProps = useMemo(() => makeEventProps(otherProps, () => pdf), \n // biome-ignore lint/correctness/useExhaustiveDependencies: FIXME\n [otherProps, pdf]);\n function renderChildren() {\n return _jsx(DocumentContext.Provider, { value: childContext, children: children });\n }\n function renderContent() {\n if (!file) {\n return _jsx(Message, { type: \"no-data\", children: typeof noData === 'function' ? noData() : noData });\n }\n if (pdf === undefined || pdf === null) {\n return (_jsx(Message, { type: \"loading\", children: typeof loading === 'function' ? loading() : loading }));\n }\n if (pdf === false) {\n return _jsx(Message, { type: \"error\", children: typeof error === 'function' ? error() : error });\n }\n return renderChildren();\n }\n return (_jsx(\"div\", Object.assign({ className: clsx('react-pdf__Document', className), \n // Assertion is needed for React 18 compatibility\n ref: inputRef, style: {\n ['--scale-factor']: '1',\n } }, eventProps, { children: renderContent() })));\n});\nexport default Document;\n","'use client';\nimport { createContext } from 'react';\nconst documentContext = createContext(null);\nexport default documentContext;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function Message({ children, type }) {\n return _jsx(\"div\", { className: `react-pdf__message react-pdf__message--${type}`, children: children });\n}\n","'use client';\nimport { createContext } from 'react';\nconst pageContext = createContext(null);\nexport default pageContext;\n","// From pdfjs-dist/lib/web/struct_tree_layer_builder.js\nexport const PDF_ROLE_TO_HTML_ROLE = {\n // Document level structure types\n Document: null, // There's a \"document\" role, but it doesn't make sense here.\n DocumentFragment: null,\n // Grouping level structure types\n Part: 'group',\n Sect: 'group', // XXX: There's a \"section\" role, but it's abstract.\n Div: 'group',\n Aside: 'note',\n NonStruct: 'none',\n // Block level structure types\n P: null,\n // H,\n H: 'heading',\n Title: null,\n FENote: 'note',\n // Sub-block level structure type\n Sub: 'group',\n // General inline level structure types\n Lbl: null,\n Span: null,\n Em: null,\n Strong: null,\n Link: 'link',\n Annot: 'note',\n Form: 'form',\n // Ruby and Warichu structure types\n Ruby: null,\n RB: null,\n RT: null,\n RP: null,\n Warichu: null,\n WT: null,\n WP: null,\n // List standard structure types\n L: 'list',\n LI: 'listitem',\n LBody: null,\n // Table standard structure types\n Table: 'table',\n TR: 'row',\n TH: 'columnheader',\n TD: 'cell',\n THead: 'columnheader',\n TBody: null,\n TFoot: null,\n // Standard structure type Caption\n Caption: null,\n // Standard structure type Figure\n Figure: 'figure',\n // Standard structure type Formula\n Formula: null,\n // standard structure type Artifact\n Artifact: null,\n};\nexport const HEADING_PATTERN = /^H(\\d+)$/;\n","import { HEADING_PATTERN, PDF_ROLE_TO_HTML_ROLE } from './constants.js';\nexport function isPdfRole(role) {\n return role in PDF_ROLE_TO_HTML_ROLE;\n}\nexport function isStructTreeNode(node) {\n return 'children' in node;\n}\nexport function isStructTreeNodeWithOnlyContentChild(node) {\n if (!isStructTreeNode(node)) {\n return false;\n }\n return node.children.length === 1 && 0 in node.children && 'id' in node.children[0];\n}\nexport function getRoleAttributes(node) {\n const attributes = {};\n if (isStructTreeNode(node)) {\n const { role } = node;\n const matches = role.match(HEADING_PATTERN);\n if (matches) {\n attributes.role = 'heading';\n attributes['aria-level'] = Number(matches[1]);\n }\n else if (isPdfRole(role)) {\n const htmlRole = PDF_ROLE_TO_HTML_ROLE[role];\n if (htmlRole) {\n attributes.role = htmlRole;\n }\n }\n }\n return attributes;\n}\nexport function getBaseAttributes(node) {\n const attributes = {};\n if (isStructTreeNode(node)) {\n if (node.alt !== undefined) {\n attributes['aria-label'] = node.alt;\n }\n if (node.lang !== undefined) {\n attributes.lang = node.lang;\n }\n if (isStructTreeNodeWithOnlyContentChild(node)) {\n const [child] = node.children;\n if (child) {\n const childAttributes = getBaseAttributes(child);\n return Object.assign(Object.assign({}, attributes), childAttributes);\n }\n }\n }\n else {\n if ('id' in node) {\n attributes['aria-owns'] = node.id;\n }\n }\n return attributes;\n}\nexport function getAttributes(node) {\n if (!node) {\n return null;\n }\n return Object.assign(Object.assign({}, getRoleAttributes(node)), getBaseAttributes(node));\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useMemo } from 'react';\nimport { getAttributes, isStructTreeNode, isStructTreeNodeWithOnlyContentChild, } from './shared/structTreeUtils.js';\nexport default function StructTreeItem({ className, node, }) {\n const attributes = useMemo(() => getAttributes(node), [node]);\n const children = useMemo(() => {\n if (!isStructTreeNode(node)) {\n return null;\n }\n if (isStructTreeNodeWithOnlyContentChild(node)) {\n return null;\n }\n return node.children.map((child, index) => {\n return (\n // biome-ignore lint/suspicious/noArrayIndexKey: index is stable here\n _jsx(StructTreeItem, { node: child }, index));\n });\n }, [node]);\n return (_jsx(\"span\", Object.assign({ className: className }, attributes, { children: children })));\n}\n","import { useContext } from 'react';\nimport PageContext from '../../PageContext.js';\nexport default function usePageContext() {\n return useContext(PageContext);\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect } from 'react';\nimport makeCancellable from 'make-cancellable-promise';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport StructTreeItem from './StructTreeItem.js';\nimport usePageContext from './shared/hooks/usePageContext.js';\nimport useResolver from './shared/hooks/useResolver.js';\nimport { cancelRunningTask } from './shared/utils.js';\nexport default function StructTree() {\n const pageContext = usePageContext();\n invariant(pageContext, 'Unable to find Page context.');\n const { onGetStructTreeError: onGetStructTreeErrorProps, onGetStructTreeSuccess: onGetStructTreeSuccessProps, } = pageContext;\n const [structTreeState, structTreeDispatch] = useResolver();\n const { value: structTree, error: structTreeError } = structTreeState;\n const { customTextRenderer, page } = pageContext;\n function onLoadSuccess() {\n if (!structTree) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onGetStructTreeSuccessProps) {\n onGetStructTreeSuccessProps(structTree);\n }\n }\n function onLoadError() {\n if (!structTreeError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, structTreeError.toString());\n if (onGetStructTreeErrorProps) {\n onGetStructTreeErrorProps(structTreeError);\n }\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on page change\n useEffect(function resetStructTree() {\n structTreeDispatch({ type: 'RESET' });\n }, [structTreeDispatch, page]);\n useEffect(function loadStructTree() {\n if (customTextRenderer) {\n // TODO: Document why this is necessary\n return;\n }\n if (!page) {\n return;\n }\n const cancellable = makeCancellable(page.getStructTree());\n const runningTask = cancellable;\n cancellable.promise\n .then((nextStructTree) => {\n structTreeDispatch({ type: 'RESOLVE', value: nextStructTree });\n })\n .catch((error) => {\n structTreeDispatch({ type: 'REJECT', error });\n });\n return () => cancelRunningTask(runningTask);\n }, [customTextRenderer, page, structTreeDispatch]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (structTree === undefined) {\n return;\n }\n if (structTree === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, [structTree]);\n if (!structTree) {\n return null;\n }\n return _jsx(StructTreeItem, { className: \"react-pdf__Page__structTree structTree\", node: structTree });\n}\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport mergeRefs from 'merge-refs';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport * as pdfjs from 'pdfjs-dist';\nimport StructTree from '../StructTree.js';\nimport usePageContext from '../shared/hooks/usePageContext.js';\nimport { cancelRunningTask, getDevicePixelRatio, isCancelException, makePageCallback, } from '../shared/utils.js';\nconst ANNOTATION_MODE = pdfjs.AnnotationMode;\nexport default function Canvas(props) {\n const pageContext = usePageContext();\n invariant(pageContext, 'Unable to find Page context.');\n const mergedProps = Object.assign(Object.assign({}, pageContext), props);\n const { _className, canvasBackground, devicePixelRatio = getDevicePixelRatio(), onRenderError: onRenderErrorProps, onRenderSuccess: onRenderSuccessProps, page, renderForms, renderTextLayer, rotate, scale, } = mergedProps;\n const { canvasRef } = props;\n invariant(page, 'Attempted to render page canvas, but no page was specified.');\n const canvasElement = useRef(null);\n /**\n * Called when a page is rendered successfully.\n */\n function onRenderSuccess() {\n if (!page) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onRenderSuccessProps) {\n onRenderSuccessProps(makePageCallback(page, scale));\n }\n }\n /**\n * Called when a page fails to render.\n */\n function onRenderError(error) {\n if (isCancelException(error)) {\n return;\n }\n warning(false, error.toString());\n if (onRenderErrorProps) {\n onRenderErrorProps(error);\n }\n }\n const renderViewport = useMemo(() => page.getViewport({ scale: scale * devicePixelRatio, rotation: rotate }), [devicePixelRatio, page, rotate, scale]);\n const viewport = useMemo(() => page.getViewport({ scale, rotation: rotate }), [page, rotate, scale]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(function drawPageOnCanvas() {\n if (!page) {\n return;\n }\n // Ensures the canvas will be re-rendered from scratch. Otherwise all form data will stay.\n page.cleanup();\n const { current: canvas } = canvasElement;\n if (!canvas) {\n return;\n }\n canvas.width = renderViewport.width;\n canvas.height = renderViewport.height;\n canvas.style.width = `${Math.floor(viewport.width)}px`;\n canvas.style.height = `${Math.floor(viewport.height)}px`;\n canvas.style.visibility = 'hidden';\n const renderContext = {\n annotationMode: renderForms ? ANNOTATION_MODE.ENABLE_FORMS : ANNOTATION_MODE.ENABLE,\n canvasContext: canvas.getContext('2d', { alpha: false }),\n viewport: renderViewport,\n };\n if (canvasBackground) {\n renderContext.background = canvasBackground;\n }\n const cancellable = page.render(renderContext);\n const runningTask = cancellable;\n cancellable.promise\n .then(() => {\n canvas.style.visibility = '';\n onRenderSuccess();\n })\n .catch(onRenderError);\n return () => cancelRunningTask(runningTask);\n }, [canvasBackground, page, renderForms, renderViewport, viewport]);\n const cleanup = useCallback(() => {\n const { current: canvas } = canvasElement;\n /**\n * Zeroing the width and height cause most browsers to release graphics\n * resources immediately, which can greatly reduce memory consumption.\n */\n if (canvas) {\n canvas.width = 0;\n canvas.height = 0;\n }\n }, []);\n useEffect(() => cleanup, [cleanup]);\n return (_jsx(\"canvas\", { className: `${_className}__canvas`, dir: \"ltr\", ref: mergeRefs(canvasRef, canvasElement), style: {\n display: 'block',\n userSelect: 'none',\n }, children: renderTextLayer ? _jsx(StructTree, {}) : null }));\n}\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';\nimport makeCancellable from 'make-cancellable-promise';\nimport clsx from 'clsx';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport * as pdfjs from 'pdfjs-dist';\nimport usePageContext from '../shared/hooks/usePageContext.js';\nimport useResolver from '../shared/hooks/useResolver.js';\nimport { cancelRunningTask } from '../shared/utils.js';\nfunction isTextItem(item) {\n return 'str' in item;\n}\nexport default function TextLayer() {\n const pageContext = usePageContext();\n invariant(pageContext, 'Unable to find Page context.');\n const { customTextRenderer, onGetTextError, onGetTextSuccess, onRenderTextLayerError, onRenderTextLayerSuccess, page, pageIndex, pageNumber, rotate, scale, } = pageContext;\n invariant(page, 'Attempted to load page text content, but no page was specified.');\n const [textContentState, textContentDispatch] = useResolver();\n const { value: textContent, error: textContentError } = textContentState;\n const layerElement = useRef(null);\n warning(Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--react-pdf-text-layer'), 10) === 1, 'TextLayer styles not found. Read more: https://github.com/wojtekmaj/react-pdf#support-for-text-layer');\n /**\n * Called when a page text content is read successfully\n */\n function onLoadSuccess() {\n if (!textContent) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onGetTextSuccess) {\n onGetTextSuccess(textContent);\n }\n }\n /**\n * Called when a page text content failed to read successfully\n */\n function onLoadError() {\n if (!textContentError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, textContentError.toString());\n if (onGetTextError) {\n onGetTextError(textContentError);\n }\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on page change\n useEffect(function resetTextContent() {\n textContentDispatch({ type: 'RESET' });\n }, [page, textContentDispatch]);\n useEffect(function loadTextContent() {\n if (!page) {\n return;\n }\n const cancellable = makeCancellable(page.getTextContent());\n const runningTask = cancellable;\n cancellable.promise\n .then((nextTextContent) => {\n textContentDispatch({ type: 'RESOLVE', value: nextTextContent });\n })\n .catch((error) => {\n textContentDispatch({ type: 'REJECT', error });\n });\n return () => cancelRunningTask(runningTask);\n }, [page, textContentDispatch]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (textContent === undefined) {\n return;\n }\n if (textContent === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, [textContent]);\n /**\n * Called when a text layer is rendered successfully\n */\n const onRenderSuccess = useCallback(() => {\n if (onRenderTextLayerSuccess) {\n onRenderTextLayerSuccess();\n }\n }, [onRenderTextLayerSuccess]);\n /**\n * Called when a text layer failed to render successfully\n */\n const onRenderError = useCallback((error) => {\n warning(false, error.toString());\n if (onRenderTextLayerError) {\n onRenderTextLayerError(error);\n }\n }, [onRenderTextLayerError]);\n function onMouseDown() {\n const layer = layerElement.current;\n if (!layer) {\n return;\n }\n layer.classList.add('selecting');\n }\n function onMouseUp() {\n const layer = layerElement.current;\n if (!layer) {\n return;\n }\n layer.classList.remove('selecting');\n }\n const viewport = useMemo(() => page.getViewport({ scale, rotation: rotate }), [page, rotate, scale]);\n useLayoutEffect(function renderTextLayer() {\n if (!page || !textContent) {\n return;\n }\n const { current: layer } = layerElement;\n if (!layer) {\n return;\n }\n layer.innerHTML = '';\n const textContentSource = page.streamTextContent({ includeMarkedContent: true });\n const parameters = {\n container: layer,\n textContentSource,\n viewport,\n };\n const cancellable = new pdfjs.TextLayer(parameters);\n const runningTask = cancellable;\n cancellable\n .render()\n .then(() => {\n const end = document.createElement('div');\n end.className = 'endOfContent';\n layer.append(end);\n const layerChildren = layer.querySelectorAll('[role=\"presentation\"]');\n if (customTextRenderer) {\n let index = 0;\n textContent.items.forEach((item, itemIndex) => {\n if (!isTextItem(item)) {\n return;\n }\n const child = layerChildren[index];\n if (!child) {\n return;\n }\n const content = customTextRenderer(Object.assign({ pageIndex,\n pageNumber,\n itemIndex }, item));\n child.innerHTML = content;\n index += item.str && item.hasEOL ? 2 : 1;\n });\n }\n // Intentional immediate callback\n onRenderSuccess();\n })\n .catch(onRenderError);\n return () => cancelRunningTask(runningTask);\n }, [\n customTextRenderer,\n onRenderError,\n onRenderSuccess,\n page,\n pageIndex,\n pageNumber,\n textContent,\n viewport,\n ]);\n return (_jsx(\"div\", { className: clsx('react-pdf__Page__textContent', 'textLayer'), onMouseUp: onMouseUp, onMouseDown: onMouseDown, ref: layerElement }));\n}\n","import { useContext } from 'react';\nimport DocumentContext from '../../DocumentContext.js';\nexport default function useDocumentContext() {\n return useContext(DocumentContext);\n}\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect, useMemo, useRef } from 'react';\nimport makeCancellable from 'make-cancellable-promise';\nimport clsx from 'clsx';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport * as pdfjs from 'pdfjs-dist';\nimport useDocumentContext from '../shared/hooks/useDocumentContext.js';\nimport usePageContext from '../shared/hooks/usePageContext.js';\nimport useResolver from '../shared/hooks/useResolver.js';\nimport { cancelRunningTask } from '../shared/utils.js';\nexport default function AnnotationLayer() {\n const documentContext = useDocumentContext();\n const pageContext = usePageContext();\n invariant(pageContext, 'Unable to find Page context.');\n const mergedProps = Object.assign(Object.assign({}, documentContext), pageContext);\n const { imageResourcesPath, linkService, onGetAnnotationsError: onGetAnnotationsErrorProps, onGetAnnotationsSuccess: onGetAnnotationsSuccessProps, onRenderAnnotationLayerError: onRenderAnnotationLayerErrorProps, onRenderAnnotationLayerSuccess: onRenderAnnotationLayerSuccessProps, page, pdf, renderForms, rotate, scale = 1, } = mergedProps;\n invariant(pdf, 'Attempted to load page annotations, but no document was specified. Wrap in a or pass explicit `pdf` prop.');\n invariant(page, 'Attempted to load page annotations, but no page was specified.');\n invariant(linkService, 'Attempted to load page annotations, but no linkService was specified.');\n const [annotationsState, annotationsDispatch] = useResolver();\n const { value: annotations, error: annotationsError } = annotationsState;\n const layerElement = useRef(null);\n warning(Number.parseInt(window.getComputedStyle(document.body).getPropertyValue('--react-pdf-annotation-layer'), 10) === 1, 'AnnotationLayer styles not found. Read more: https://github.com/wojtekmaj/react-pdf#support-for-annotations');\n function onLoadSuccess() {\n if (!annotations) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (onGetAnnotationsSuccessProps) {\n onGetAnnotationsSuccessProps(annotations);\n }\n }\n function onLoadError() {\n if (!annotationsError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, annotationsError.toString());\n if (onGetAnnotationsErrorProps) {\n onGetAnnotationsErrorProps(annotationsError);\n }\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on page change\n useEffect(function resetAnnotations() {\n annotationsDispatch({ type: 'RESET' });\n }, [annotationsDispatch, page]);\n useEffect(function loadAnnotations() {\n if (!page) {\n return;\n }\n const cancellable = makeCancellable(page.getAnnotations());\n const runningTask = cancellable;\n cancellable.promise\n .then((nextAnnotations) => {\n annotationsDispatch({ type: 'RESOLVE', value: nextAnnotations });\n })\n .catch((error) => {\n annotationsDispatch({ type: 'REJECT', error });\n });\n return () => {\n cancelRunningTask(runningTask);\n };\n }, [annotationsDispatch, page]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (annotations === undefined) {\n return;\n }\n if (annotations === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, [annotations]);\n function onRenderSuccess() {\n if (onRenderAnnotationLayerSuccessProps) {\n onRenderAnnotationLayerSuccessProps();\n }\n }\n function onRenderError(error) {\n warning(false, `${error}`);\n if (onRenderAnnotationLayerErrorProps) {\n onRenderAnnotationLayerErrorProps(error);\n }\n }\n const viewport = useMemo(() => page.getViewport({ scale, rotation: rotate }), [page, rotate, scale]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(function renderAnnotationLayer() {\n if (!pdf || !page || !linkService || !annotations) {\n return;\n }\n const { current: layer } = layerElement;\n if (!layer) {\n return;\n }\n const clonedViewport = viewport.clone({ dontFlip: true });\n const annotationLayerParameters = {\n accessibilityManager: null, // TODO: Implement this\n annotationCanvasMap: null, // TODO: Implement this\n annotationEditorUIManager: null, // TODO: Implement this\n div: layer,\n l10n: null, // TODO: Implement this\n page,\n structTreeLayer: null, // TODO: Implement this\n viewport: clonedViewport,\n };\n const renderParameters = {\n annotations,\n annotationStorage: pdf.annotationStorage,\n div: layer,\n imageResourcesPath,\n linkService,\n page,\n renderForms,\n viewport: clonedViewport,\n };\n layer.innerHTML = '';\n try {\n new pdfjs.AnnotationLayer(annotationLayerParameters).render(renderParameters);\n // Intentional immediate callback\n onRenderSuccess();\n }\n catch (error) {\n onRenderError(error);\n }\n return () => {\n // TODO: Cancel running task?\n };\n }, [annotations, imageResourcesPath, linkService, page, pdf, renderForms, viewport]);\n return (_jsx(\"div\", { className: clsx('react-pdf__Page__annotations', 'annotationLayer'), ref: layerElement }));\n}\n","'use client';\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useEffect, useMemo, useRef } from 'react';\nimport makeCancellable from 'make-cancellable-promise';\nimport makeEventProps from 'make-event-props';\nimport clsx from 'clsx';\nimport mergeRefs from 'merge-refs';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport PageContext from './PageContext.js';\nimport Message from './Message.js';\nimport Canvas from './Page/Canvas.js';\nimport TextLayer from './Page/TextLayer.js';\nimport AnnotationLayer from './Page/AnnotationLayer.js';\nimport { cancelRunningTask, isProvided, makePageCallback } from './shared/utils.js';\nimport useDocumentContext from './shared/hooks/useDocumentContext.js';\nimport useResolver from './shared/hooks/useResolver.js';\nconst defaultScale = 1;\n/**\n * Displays a page.\n *\n * Should be placed inside ``. Alternatively, it can have `pdf` prop passed, which can be obtained from ``'s `onLoadSuccess` callback function, however some advanced functions like linking between pages inside a document may not be working correctly.\n */\nexport default function Page(props) {\n const documentContext = useDocumentContext();\n const mergedProps = Object.assign(Object.assign({}, documentContext), props);\n const { _className = 'react-pdf__Page', _enableRegisterUnregisterPage = true, canvasBackground, canvasRef, children, className, customRenderer: CustomRenderer, customTextRenderer, devicePixelRatio, error = 'Failed to load the page.', height, inputRef, loading = 'Loading pageā€¦', noData = 'No page specified.', onGetAnnotationsError: onGetAnnotationsErrorProps, onGetAnnotationsSuccess: onGetAnnotationsSuccessProps, onGetStructTreeError: onGetStructTreeErrorProps, onGetStructTreeSuccess: onGetStructTreeSuccessProps, onGetTextError: onGetTextErrorProps, onGetTextSuccess: onGetTextSuccessProps, onLoadError: onLoadErrorProps, onLoadSuccess: onLoadSuccessProps, onRenderAnnotationLayerError: onRenderAnnotationLayerErrorProps, onRenderAnnotationLayerSuccess: onRenderAnnotationLayerSuccessProps, onRenderError: onRenderErrorProps, onRenderSuccess: onRenderSuccessProps, onRenderTextLayerError: onRenderTextLayerErrorProps, onRenderTextLayerSuccess: onRenderTextLayerSuccessProps, pageIndex: pageIndexProps, pageNumber: pageNumberProps, pdf, registerPage, renderAnnotationLayer: renderAnnotationLayerProps = true, renderForms = false, renderMode = 'canvas', renderTextLayer: renderTextLayerProps = true, rotate: rotateProps, scale: scaleProps = defaultScale, unregisterPage, width } = mergedProps, otherProps = __rest(mergedProps, [\"_className\", \"_enableRegisterUnregisterPage\", \"canvasBackground\", \"canvasRef\", \"children\", \"className\", \"customRenderer\", \"customTextRenderer\", \"devicePixelRatio\", \"error\", \"height\", \"inputRef\", \"loading\", \"noData\", \"onGetAnnotationsError\", \"onGetAnnotationsSuccess\", \"onGetStructTreeError\", \"onGetStructTreeSuccess\", \"onGetTextError\", \"onGetTextSuccess\", \"onLoadError\", \"onLoadSuccess\", \"onRenderAnnotationLayerError\", \"onRenderAnnotationLayerSuccess\", \"onRenderError\", \"onRenderSuccess\", \"onRenderTextLayerError\", \"onRenderTextLayerSuccess\", \"pageIndex\", \"pageNumber\", \"pdf\", \"registerPage\", \"renderAnnotationLayer\", \"renderForms\", \"renderMode\", \"renderTextLayer\", \"rotate\", \"scale\", \"unregisterPage\", \"width\"]);\n const [pageState, pageDispatch] = useResolver();\n const { value: page, error: pageError } = pageState;\n const pageElement = useRef(null);\n invariant(pdf, 'Attempted to load a page, but no document was specified. Wrap in a or pass explicit `pdf` prop.');\n const pageIndex = isProvided(pageNumberProps) ? pageNumberProps - 1 : (pageIndexProps !== null && pageIndexProps !== void 0 ? pageIndexProps : null);\n const pageNumber = pageNumberProps !== null && pageNumberProps !== void 0 ? pageNumberProps : (isProvided(pageIndexProps) ? pageIndexProps + 1 : null);\n const rotate = rotateProps !== null && rotateProps !== void 0 ? rotateProps : (page ? page.rotate : null);\n const scale = useMemo(() => {\n if (!page) {\n return null;\n }\n // Be default, we'll render page at 100% * scale width.\n let pageScale = 1;\n // Passing scale explicitly null would cause the page not to render\n const scaleWithDefault = scaleProps !== null && scaleProps !== void 0 ? scaleProps : defaultScale;\n // If width/height is defined, calculate the scale of the page so it could be of desired width.\n if (width || height) {\n const viewport = page.getViewport({ scale: 1, rotation: rotate });\n if (width) {\n pageScale = width / viewport.width;\n }\n else if (height) {\n pageScale = height / viewport.height;\n }\n }\n return scaleWithDefault * pageScale;\n }, [height, page, rotate, scaleProps, width]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on pdf change\n useEffect(function hook() {\n return () => {\n if (!isProvided(pageIndex)) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n if (_enableRegisterUnregisterPage && unregisterPage) {\n unregisterPage(pageIndex);\n }\n };\n }, [_enableRegisterUnregisterPage, pdf, pageIndex, unregisterPage]);\n /**\n * Called when a page is loaded successfully\n */\n function onLoadSuccess() {\n if (onLoadSuccessProps) {\n if (!page || !scale) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n onLoadSuccessProps(makePageCallback(page, scale));\n }\n if (_enableRegisterUnregisterPage && registerPage) {\n if (!isProvided(pageIndex) || !pageElement.current) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n registerPage(pageIndex, pageElement.current);\n }\n }\n /**\n * Called when a page failed to load\n */\n function onLoadError() {\n if (!pageError) {\n // Impossible, but TypeScript doesn't know that\n return;\n }\n warning(false, pageError.toString());\n if (onLoadErrorProps) {\n onLoadErrorProps(pageError);\n }\n }\n // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on pdf and pageIndex change\n useEffect(function resetPage() {\n pageDispatch({ type: 'RESET' });\n }, [pageDispatch, pdf, pageIndex]);\n useEffect(function loadPage() {\n if (!pdf || !pageNumber) {\n return;\n }\n const cancellable = makeCancellable(pdf.getPage(pageNumber));\n const runningTask = cancellable;\n cancellable.promise\n .then((nextPage) => {\n pageDispatch({ type: 'RESOLVE', value: nextPage });\n })\n .catch((error) => {\n pageDispatch({ type: 'REJECT', error });\n });\n return () => cancelRunningTask(runningTask);\n }, [pageDispatch, pdf, pageNumber]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Ommitted callbacks so they are not called every time they change\n useEffect(() => {\n if (page === undefined) {\n return;\n }\n if (page === false) {\n onLoadError();\n return;\n }\n onLoadSuccess();\n }, [page, scale]);\n const childContext = useMemo(() => \n // Technically there cannot be page without pageIndex, pageNumber, rotate and scale, but TypeScript doesn't know that\n page && isProvided(pageIndex) && pageNumber && isProvided(rotate) && isProvided(scale)\n ? {\n _className,\n canvasBackground,\n customTextRenderer,\n devicePixelRatio,\n onGetAnnotationsError: onGetAnnotationsErrorProps,\n onGetAnnotationsSuccess: onGetAnnotationsSuccessProps,\n onGetStructTreeError: onGetStructTreeErrorProps,\n onGetStructTreeSuccess: onGetStructTreeSuccessProps,\n onGetTextError: onGetTextErrorProps,\n onGetTextSuccess: onGetTextSuccessProps,\n onRenderAnnotationLayerError: onRenderAnnotationLayerErrorProps,\n onRenderAnnotationLayerSuccess: onRenderAnnotationLayerSuccessProps,\n onRenderError: onRenderErrorProps,\n onRenderSuccess: onRenderSuccessProps,\n onRenderTextLayerError: onRenderTextLayerErrorProps,\n onRenderTextLayerSuccess: onRenderTextLayerSuccessProps,\n page,\n pageIndex,\n pageNumber,\n renderForms,\n renderTextLayer: renderTextLayerProps,\n rotate,\n scale,\n }\n : null, [\n _className,\n canvasBackground,\n customTextRenderer,\n devicePixelRatio,\n onGetAnnotationsErrorProps,\n onGetAnnotationsSuccessProps,\n onGetStructTreeErrorProps,\n onGetStructTreeSuccessProps,\n onGetTextErrorProps,\n onGetTextSuccessProps,\n onRenderAnnotationLayerErrorProps,\n onRenderAnnotationLayerSuccessProps,\n onRenderErrorProps,\n onRenderSuccessProps,\n onRenderTextLayerErrorProps,\n onRenderTextLayerSuccessProps,\n page,\n pageIndex,\n pageNumber,\n renderForms,\n renderTextLayerProps,\n rotate,\n scale,\n ]);\n const eventProps = useMemo(() => makeEventProps(otherProps, () => page ? (scale ? makePageCallback(page, scale) : undefined) : page), \n // biome-ignore lint/correctness/useExhaustiveDependencies: FIXME\n [otherProps, page, scale]);\n const pageKey = `${pageIndex}@${scale}/${rotate}`;\n function renderMainLayer() {\n switch (renderMode) {\n case 'custom': {\n invariant(CustomRenderer, `renderMode was set to \"custom\", but no customRenderer was passed.`);\n return _jsx(CustomRenderer, {}, `${pageKey}_custom`);\n }\n case 'none':\n return null;\n case 'canvas':\n default:\n return _jsx(Canvas, { canvasRef: canvasRef }, `${pageKey}_canvas`);\n }\n }\n function renderTextLayer() {\n if (!renderTextLayerProps) {\n return null;\n }\n return _jsx(TextLayer, {}, `${pageKey}_text`);\n }\n function renderAnnotationLayer() {\n if (!renderAnnotationLayerProps) {\n return null;\n }\n return _jsx(AnnotationLayer, {}, `${pageKey}_annotations`);\n }\n function renderChildren() {\n return (_jsxs(PageContext.Provider, { value: childContext, children: [renderMainLayer(), renderTextLayer(), renderAnnotationLayer(), children] }));\n }\n function renderContent() {\n if (!pageNumber) {\n return _jsx(Message, { type: \"no-data\", children: typeof noData === 'function' ? noData() : noData });\n }\n if (pdf === null || page === undefined || page === null) {\n return (_jsx(Message, { type: \"loading\", children: typeof loading === 'function' ? loading() : loading }));\n }\n if (pdf === false || page === false) {\n return _jsx(Message, { type: \"error\", children: typeof error === 'function' ? error() : error });\n }\n return renderChildren();\n }\n return (_jsx(\"div\", Object.assign({ className: clsx(_className, className), \"data-page-number\": pageNumber, \n // Assertion is needed for React 18 compatibility\n ref: mergeRefs(inputRef, pageElement), style: {\n ['--scale-factor']: `${scale}`,\n backgroundColor: canvasBackground || 'white',\n position: 'relative',\n minWidth: 'min-content',\n minHeight: 'min-content',\n } }, eventProps, { children: renderContent() })));\n}\n","import { useReducer } from 'react';\nfunction reducer(state, action) {\n switch (action.type) {\n case 'RESOLVE':\n return { value: action.value, error: undefined };\n case 'REJECT':\n return { value: false, error: action.error };\n case 'RESET':\n return { value: undefined, error: undefined };\n default:\n return state;\n }\n}\nexport default function useResolver() {\n return useReducer((reducer), { value: undefined, error: undefined });\n}\n","import invariant from 'tiny-invariant';\nimport warning from 'warning';\n/**\n * Checks if we're running in a browser environment.\n */\nexport const isBrowser = typeof window !== 'undefined';\n/**\n * Checks whether we're running from a local file system.\n */\nexport const isLocalFileSystem = isBrowser && window.location.protocol === 'file:';\n/**\n * Checks whether a variable is defined.\n *\n * @param {*} variable Variable to check\n */\nexport function isDefined(variable) {\n return typeof variable !== 'undefined';\n}\n/**\n * Checks whether a variable is defined and not null.\n *\n * @param {*} variable Variable to check\n */\nexport function isProvided(variable) {\n return isDefined(variable) && variable !== null;\n}\n/**\n * Checks whether a variable provided is a string.\n *\n * @param {*} variable Variable to check\n */\nexport function isString(variable) {\n return typeof variable === 'string';\n}\n/**\n * Checks whether a variable provided is an ArrayBuffer.\n *\n * @param {*} variable Variable to check\n */\nexport function isArrayBuffer(variable) {\n return variable instanceof ArrayBuffer;\n}\n/**\n * Checks whether a variable provided is a Blob.\n *\n * @param {*} variable Variable to check\n */\nexport function isBlob(variable) {\n invariant(isBrowser, 'isBlob can only be used in a browser environment');\n return variable instanceof Blob;\n}\n/**\n * Checks whether a variable provided is a data URI.\n *\n * @param {*} variable String to check\n */\nexport function isDataURI(variable) {\n return isString(variable) && /^data:/.test(variable);\n}\nexport function dataURItoByteString(dataURI) {\n invariant(isDataURI(dataURI), 'Invalid data URI.');\n const [headersString = '', dataString = ''] = dataURI.split(',');\n const headers = headersString.split(';');\n if (headers.indexOf('base64') !== -1) {\n return atob(dataString);\n }\n return unescape(dataString);\n}\nexport function getDevicePixelRatio() {\n return (isBrowser && window.devicePixelRatio) || 1;\n}\nconst allowFileAccessFromFilesTip = 'On Chromium based browsers, you can use --allow-file-access-from-files flag for debugging purposes.';\nexport function displayCORSWarning() {\n warning(!isLocalFileSystem, `Loading PDF as base64 strings/URLs may not work on protocols other than HTTP/HTTPS. ${allowFileAccessFromFilesTip}`);\n}\nexport function displayWorkerWarning() {\n warning(!isLocalFileSystem, `Loading PDF.js worker may not work on protocols other than HTTP/HTTPS. ${allowFileAccessFromFilesTip}`);\n}\nexport function cancelRunningTask(runningTask) {\n if (runningTask === null || runningTask === void 0 ? void 0 : runningTask.cancel)\n runningTask.cancel();\n}\nexport function makePageCallback(page, scale) {\n Object.defineProperty(page, 'width', {\n get() {\n return this.view[2] * scale;\n },\n configurable: true,\n });\n Object.defineProperty(page, 'height', {\n get() {\n return this.view[3] * scale;\n },\n configurable: true,\n });\n Object.defineProperty(page, 'originalWidth', {\n get() {\n return this.view[2];\n },\n configurable: true,\n });\n Object.defineProperty(page, 'originalHeight', {\n get() {\n return this.view[3];\n },\n configurable: true,\n });\n return page;\n}\nexport function isCancelException(error) {\n return error.name === 'RenderingCancelledException';\n}\nexport function loadFromFile(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n if (!reader.result) {\n return reject(new Error('Error while reading a file.'));\n }\n resolve(reader.result);\n };\n reader.onerror = (event) => {\n if (!event.target) {\n return reject(new Error('Error while reading a file.'));\n }\n const { error } = event.target;\n if (!error) {\n return reject(new Error('Error while reading a file.'));\n }\n switch (error.code) {\n case error.NOT_FOUND_ERR:\n return reject(new Error('Error while reading a file: File not found.'));\n case error.SECURITY_ERR:\n return reject(new Error('Error while reading a file: Security error.'));\n case error.ABORT_ERR:\n return reject(new Error('Error while reading a file: Aborted.'));\n default:\n return reject(new Error('Error while reading a file.'));\n }\n };\n reader.readAsArrayBuffer(file);\n });\n}\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","globalThis","pdfjsLib","d","AbortException","AnnotationEditorLayer","AnnotationEditorParamsType","AnnotationEditorType","AnnotationEditorUIManager","AnnotationLayer","AnnotationMode","ColorPicker","DOMSVGFactory","DrawLayer","FeatureTest","GlobalWorkerOptions","ImageKind","InvalidPDFException","MissingPDFException","OPS","OutputScale","PDFDataRangeTransport","PDFDateString","PDFWorker","PasswordResponses","PermissionFlag","PixelsPerInch","RenderingCancelledException","TextLayer","UnexpectedResponseException","Util","VerbosityLevel","XfaLayer","build","createValidAbsoluteUrl","fetchData","getDocument","getFilenameFromUrl","getPdfFilenameFromUrl","getXfaPageViewport","isDataScheme","isPdfFile","noContextMenu","normalizeUnicode","setLayerDimensions","shadow","version","isNodeJS","process","versions","nw","electron","type","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","LINE_FACTOR","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","NONE","FREETEXT","HIGHLIGHT","STAMP","INK","RESIZE","CREATE","FREETEXT_SIZE","FREETEXT_COLOR","FREETEXT_OPACITY","INK_COLOR","INK_THICKNESS","INK_OPACITY","HIGHLIGHT_COLOR","HIGHLIGHT_DEFAULT_COLOR","HIGHLIGHT_THICKNESS","HIGHLIGHT_FREE","HIGHLIGHT_SHOW_ALL","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","util_ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","ERRORS","WARNINGS","INFOS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotation","endAnnotation","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","setStrokeTransparent","setFillTransparent","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","setVerbosityLevel","level","Number","isInteger","getVerbosityLevel","info","msg","console","log","warn","unreachable","Error","assert","cond","url","baseUrl","addDefaultProtocol","startsWith","dots","match","length","tryConvertEncoding","decodeURIComponent","escape","absoluteUrl","URL","protocol","_isValidProtocol","value","nonSerializable","configurable","writable","BaseException","message","name","this","constructor","PasswordException","code","super","UnknownErrorException","details","status","FormatError","bytesToString","bytes","undefined","MAX_ARGUMENT_COUNT","String","fromCharCode","apply","strBuf","i","chunkEnd","Math","min","chunk","subarray","join","stringToBytes","str","Uint8Array","charCodeAt","objectFromMap","map","create","util_FeatureTest","isLittleEndian","buffer8","Uint32Array","buffer","isEvalSupported","Function","isOffscreenCanvasSupported","OffscreenCanvas","platform","navigator","isMac","includes","isWindows","isFirefox","userAgent","isCSSRoundSupported","CSS","supports","hexNumbers","Array","from","keys","n","toString","padStart","makeHexColor","r","g","b","scaleMinMax","minMax","temp","m1","m2","applyTransform","p","m","applyInverseTransform","getAxialAlignedBoundingBox","p1","p2","slice","p3","p4","max","inverseTransform","singularValueDecompose2dScale","transpose","a","c","first","second","sqrt","sx","sy","normalizeRect","rect","intersect","rect1","rect2","xLow","xHigh","yLow","yHigh","x0","x1","x2","x3","y0","y1","y2","y3","t","mt","tt","ttt","x","y","abs","delta","sqrtDelta","a2","bezierBoundingBox","NormalizeRegex","NormalizationMap","Map","replaceAll","_","normalize","AnnotationPrefix","SVG_NS","static","PDF","async","isValidFetchUrl","document","baseURI","response","fetch","ok","statusText","arrayBuffer","blob","json","text","Promise","resolve","reject","request","XMLHttpRequest","open","responseType","onreadystatechange","readyState","DONE","responseText","send","PageViewport","viewBox","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","width","height","rawDims","pageWidth","pageHeight","pageX","pageY","clone","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","extraDelay","ii","trim","substring","toLowerCase","filename","test","split","lastIndexOf","defaultFilename","reFilename","splitURI","exec","suggestedFilename","StatTimer","started","times","time","Date","now","timeEnd","start","end","outBuf","longest","padEnd","e","preventDefault","deprecated","toDateObject","input","RegExp","matches","year","parseInt","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","UTC","xfaPage","attributes","style","getRGB","color","colorRGB","getCurrentTransform","ctx","f","getTransform","getCurrentTransformInverse","invertSelf","div","viewport","mustFlip","mustRotate","useRound","w","h","widthStr","heightStr","setAttribute","pixelRatio","window","devicePixelRatio","scaled","symmetric","EditorToolbar","editor","freeze","freetext","highlight","ink","stamp","render","editToolbar","createElement","classList","add","signal","_uiManager","_signal","addEventListener","buttons","className","append","position","toolbarPosition","direction","insetInlineEnd","top","stopPropagation","_focusEventsAllowed","element","bind","capture","hide","hideDropdown","show","remove","shown","editorType","button","tabIndex","delete","divider","addAltText","altText","prepend","addColorPicker","colorPicker","renderButton","destroy","HighlightToolbar","uiManager","boxes","isLTR","lastY","lastX","box","parent","span","highlightSelection","bindEvents","names","IdManager","ImageManager","crypto","randomUUID","buf","getRandomValues","floor","random","getUuid","_isSVGFittingCanvas","getContext","willReadFrequently","image","Image","src","decode","then","drawImage","getImageData","data","rawData","bitmap","refCounter","isSvg","File","file","Blob","mustRemoveAspectRatioPromise","fileReader","FileReader","imageElement","imagePromise","onload","svgUrl","result","onerror","readAsDataURL","createImageBitmap","error","set","getFromFile","lastModified","size","getFromUrl","getFromBlob","blobPromise","getFromId","getFromCanvas","canvas","offscreen","transferToImageBitmap","getSvgUrl","deleteId","transferFromImageBitmap","convertToBlob","close","isValidId","CommandManager","maxSize","cmd","undo","post","mustExec","NaN","overwriteIfSameType","keepUndo","next","splice","redo","hasSomethingToUndo","hasSomethingToRedo","KeyboardManager","callbacks","allKeys","Set","callback","isMacKey","at","event","altKey","ctrlKey","metaKey","shiftKey","self","has","bubbles","args","checker","ColorManager","_colors","colors","visibility","body","computedColor","getComputedStyle","getColorValues","convert","rgb","matchMedia","RGB","every","_colorsMapping","getHexCode","AbortController","isEditing","isEmpty","hasSelectedEditor","hasSelectedText","_keyboardManager","proto","arrowChecker","contains","activeElement","tagName","hasSomethingToControl","textInputChecker","_self","target","el","HTMLInputElement","small","TRANSLATE_SMALL","big","TRANSLATE_BIG","selectAll","addNewEditorFromKeyboard","HTMLButtonElement","isEnterHandled","unselectAll","translateSelectedEditors","container","viewer","altTextManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","mlManager","_eventBus","_on","onEditingAction","onPageChanging","onScaleChanging","onRotationChanging","onSetPreference","evt","updateParams","annotationStorage","filterFactory","viewParameters","realScale","PDF_TO_CSS_UNITS","isShiftKeyDown","abort","layer","values","clear","clearTimeout","combinedSignal","ac","AbortSignal","any","useNewAltTextFlow","useNewAltTextWhenAddingImage","hcmFilter","addHCMFilter","foreground","background","pair","highlightColorNames","reverse","setMainHighlightColorPicker","editAltText","firstTime","switchToMode","mode","on","once","dispatch","source","setPreference","pageNumber","focusMainContainer","focus","findParent","layerX","layerY","getBoundingClientRect","disableUserSelect","toggle","addShouldRescale","removeShouldRescale","commitOrRemove","pagesRotation","anchorNode","nodeType","Node","TEXT_NODE","parentElement","textLayer","currentLayer","hasTextLayer","methodOfCreation","selection","getSelection","isCollapsed","anchorOffset","focusNode","focusOffset","closest","getSelectionBoxes","empty","isNoneMode","createAndAddNewEditor","showAllEditors","addToAnnotationStorage","setValue","activeLayer","toggleDrawing","pointerup","blur","hasSelection","lastEditor","lastActiveElement","keydown","keyup","copy","cut","paste","dragOver","drop","addEditListeners","removeEditListeners","dataTransfer","items","isHandlingMimeForPasting","dropEffect","item","editors","serialized","serialize","clipboardData","setData","JSON","stringify","getData","parse","ex","isArray","newEditors","deserializedEditor","deserialize","addCommands","isEditorHandlingKeyboard","entries","some","assign","setEditingState","registerEditorTypes","types","defaultPropertiesToUpdate","getId","getLayer","pageIndex","currentPageIndex","addLayer","enable","disable","removeLayer","updateMode","editId","isFromKeyboard","promise","withResolvers","annotationElementId","setSelected","enterInEditMode","unselect","canCreateNewEmptyEditor","addNewEditor","updateToolbar","updateColor","action","updateDefaultParams","visible","updateButton","enableWaiting","mustWait","disableClick","enableClick","promises","all","getEditors","getEditor","addEditor","removeEditor","setTimeout","addDeletedAnnotationElement","addChangedExistingAnnotation","deleted","isDeletedAnnotationElement","removeDeletedAnnotationElement","removeChangedExistingAnnotation","addOrRebuild","setActiveEditor","propertiesToUpdate","ed","updateUI","toggleSelected","select","isSelected","firstSelectedEditor","params","commit","noCommit","totalX","totalY","translateInPage","setUpDragSession","savedX","savedY","savedPageIndex","newX","newY","newPageIndex","endDragSession","mustBeAddedInUndoStack","move","_setParentAndPosition","dragSelectedEditors","tx","ty","drag","rebuild","changeParent","getActive","shouldGetKeyboardEvents","isActive","getMode","imageManager","rangeCount","getRangeAt","commonAncestorContainer","parentWidth","parentHeight","rotator","getAttribute","range","collapsed","getClientRects","renderAnnotationElement","annotation","editorId","getRawValue","hasBeenModified","AltText","added","missing","review","initialize","l10n","_l10n","label","onClick","_reportTelemetry","guessedText","finish","focusVisible","hasData","setGuessedText","generatedAltText","toggleAltTextBadge","badge","isForCopying","decorative","textWithDisclaimer","cancel","enabled","disabled","tooltip","DELAY_TO_SHOW_TOOLTIP","removeAttribute","textContent","parentNode","getImageForAltText","AnnotationEditor","_editToolbar","_initialOptions","_initialData","_isVisible","_zIndex","_resizerKeyboardManager","resize","_resizeWithKeyboard","_stopResizingWithKeyboard","parameters","_willKeepAspectRatio","isCentered","_structTreeParentId","pageRotation","pageDimensions","pageTranslation","parentDimensions","isAttachedToDOM","getPrototypeOf","_type","_defaultLineColor","_colorManager","deleteAnnotationElement","fakeEditor","FakeEditor","getNextId","_l10nResizer","topMiddle","topRight","middleRight","bottomMiddle","bottomLeft","middleLeft","_borderLineWidth","documentElement","parseFloat","getPropertyValue","_value","mime","_isDraggable","center","parentRotation","fixAndSetPosition","setInBackground","zIndex","setInForeground","setParent","focusin","focusout","relatedTarget","isMultipleSelection","setAt","screenToPageTranslation","translate","scrollIntoView","block","findNewParent","bx","by","getBaseTranslation","left","toFixed","_hasBeenMoved","_mustFixPosition","moveInDOM","angle","pageTranslationToScreen","parentScale","setDims","fixDims","widthPercent","endsWith","heightPercent","getInitialTranslation","classes","savedDraggable","togglePointerEvents","passive","savedWidth","savedHeight","savedParentCursor","cursor","savedCursor","pointerUpCallback","newWidth","newHeight","minWidth","MIN_SIZE","minHeight","round","rotationMatrix","transf","invRotationMatrix","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","deltaX","deltaY","movementX","movementY","oldDiag","hypot","altTextFinish","addEditToolbar","removeEditToolbar","addContainer","editToolbarDiv","before","getClientDimensions","addAltTextButton","altTextData","guessedAltText","setGuessedAltText","serializeAltText","hasAltText","hasAltTextData","maxWidth","maxHeight","pointerdown","clientX","clientY","pointerMoveCallback","moveEditorInDOM","getRect","shiftX","shiftY","getRectInCurrentCoords","onceAdded","enableEditMode","disableEditMode","isInEditMode","needsToBeRebuilt","rotate","_angle","serializeDeleted","popupRef","context","accessibilityData","timeout","isResizable","makeResizable","children","boundResizerKeydown","boundResizerBlur","firstPosition","nextFirstPosition","firstChild","lastChild","child","stopImmediatePropagation","preventScroll","disableEditing","enableEditing","contentDiv","setAspectRatio","aspectRatio","telemetryInitialData","telemetryFinalData","_telemetryTimeout","content","querySelector","nodeName","resetAnnotationElement","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","h1","h2","update","ArrayBuffer","isView","byteLength","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hexdigest","SerializableEmpty","hash","transfer","AnnotationStorage","onSetModified","onResetModified","onAnnotationEditor","getValue","defaultValue","resetModified","modified","entry","val","getAll","setAll","print","PrintAnnotationStorage","serializable","hasBitmap","editorStats","stats","typeToEditor","counters","count","computeTelemetryFinalData","resetModifiedIds","modifiedIds","ids","structuredClone","FontLoader","ownerDocument","styleElement","_document","nativeFontFaces","loadingRequests","loadTestFontId","addNativeFontFace","nativeFontFace","fonts","removeNativeFontFace","insertRule","rule","getElementsByTagName","styleSheet","sheet","cssRules","loadSystemFont","systemFontInfo","_inspectFont","loadedName","disableFontFace","isFontLoadingAPISupported","fontFace","FontFace","load","baseFontName","font","attached","missingFile","createNativeFontFace","loaded","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","supported","done","complete","otherRequest","shift","_loadTestFont","atob","int32","offset","spliceString","s","called","XXXX_VALUE","checksum","btoa","fontFamily","isFontReady","fillText","FontFaceObject","translatedData","inspectFont","compiledGlyphs","cssFontInfo","css","weight","fontWeight","italicAngle","mimetype","arr","toBase64","getPathGenerator","objs","character","cmds","commands","bezierCurveTo","quadraticCurveTo","BaseCanvasFactory","enableHWA","_createCanvas","reset","canvasAndContext","BaseCMapReaderFactory","isCompressed","_fetch","cMapData","catch","reason","DOMCMapReaderFactory","BaseFilterFactory","addFilter","maps","fgColor","bgColor","addAlphaFilter","addLuminosityFilter","addHighlightHCMFilter","filterName","newFgColor","newBgColor","keepHCM","BaseStandardFontDataFactory","DOMStandardFontDataFactory","packageCapability","packageMap","fs","import","http","https","path2d","loadPackages","NodePackages","node_utils_fetchData","readFile","PathType","applyBoundingBox","bbox","region","Path2D","BaseShadingPattern","getPattern","RadialAxialShadingPattern","IR","_bbox","_colorStops","_p0","_p1","_r0","_r1","matrix","_createGradient","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","inverse","pathType","pattern","ownerBBox","current","getClippedPathBoundingBox","ceil","tmpCanvas","cachedCanvases","getCanvas","tmpCtx","clearRect","beginPath","baseTransform","fillStyle","createPattern","domMatrix","DOMMatrix","setTransform","drawTriangle","c1","c2","c3","coords","rowSize","tmp","scaleX","scaleY","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","k","x1_","x2_","j","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","_coords","_figures","_bounds","_background","_createMeshCanvas","combinedScale","backgroundColor","boundsWidth","boundsHeight","paddedWidth","BORDER_SIZE","paddedHeight","createImageData","putImageData","matrixScale","temporaryPatternCanvas","DummyShadingPattern","TilingPattern","canvasGraphicsFactory","operatorList","xstep","ystep","paintType","tilingType","createPatternCanvas","curMatrixScale","combinedScaleX","combinedScaleY","canvasWidth","canvasHeight","redrawHorizontally","redrawVertically","xScaledStep","yScaledStep","dimx","getSizeAndScale","dimy","graphics","createCanvasGraphics","groupLevel","setFillAndStrokeStyleToContext","clipBbox","executeOperatorList","endDrawing","dimx2","dimy2","xSize","ySize","tmpCanvas2","tmpCtx2","jj","step","realOutputSize","MAX_PATTERN_SIZE","bboxWidth","bboxHeight","updateRectMinMax","strokeStyle","fillColor","strokeColor","cssColor","convertBlackAndWhiteToRGBA","srcPos","dest","nonBlackColor","inverseDecode","black","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","elem","FULL_CHUNK_HEIGHT","CachedCanvases","canvasFactory","cache","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","sign","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","patternFill","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","startNewPathAndClipBox","clipBox","setCurrentPoint","updatePathMinMax","minX","maxX","updateScalingPathMinMax","updateCurvePathMinMax","getPathBoundingBox","xStrokePad","yStrokePad","updateClipFromPath","isEmptyClip","Infinity","putBinaryImageData","imgData","ImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","kind","dest32","dest32DataLength","fullSrcDiff","white","srcDiff","kEnd","kEndUnrolled","mask","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","destCtx","properties","property","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","filter","getImageSmoothingEnabled","interpolate","fround","actualScale","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","CanvasGraphics","canvasCtx","commonObjs","optionalContentConfig","markedContentStack","annotationCanvasMap","stateStack","pendingClip","pendingEOFill","res","xobjs","groupStack","processingType3","baseTransformStack","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","fallback","beginDrawing","transparency","savedFillStyle","fillRect","transparentCanvas","compositeCtx","executionStartIdx","continueCallback","stepper","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","steps","fnId","nextBreakPoint","breakIt","depObjId","objsPool","inSMaskMode","HTMLCanvasElement","hcmFilterId","savedFilter","_scaleImage","img","displayWidth","displayHeight","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","_createMaskCanvas","isPatternFill","currentTransform","cacheKey","maskCanvas","mainKey","cachedImage","maskToCanvas","drawnWidth","drawnHeight","fillCanvas","fillCtx","imageSmoothingEnabled","limit","dashArray","dashPhase","intent","flatness","states","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","cp1x","cp1y","cp2x","cp2y","mirrorContextOperations","compose","dirtyBox","smask","composeSMask","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","genericComposeSMask","subtype","backdrop","transferMap","maskCtx","maskOffsetX","maskOffsetY","maskX","maskY","backdropRGB","old","pop","ops","startX","startY","isScalingMatrix","minMaxForBezier","xw","yh","consumePath","rescaleAndStroke","needRestore","paths","pendingTextPaths","path","addToPath","spacing","fontRefName","fontObj","fontDirection","isType3Font","typeface","fallbackName","bold","italic","browserFontSize","rise","paintChar","patternTransform","fillStrokeMode","isAddToPathSet","strokeText","isFontSubpixelAAEnabled","glyphs","showType3Text","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","getSinglePixelWidth","isInvalidPDFjsFont","chars","glyph","unicode","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","remeasure","measuredWidth","measureText","characterScaleX","isInFont","scaledAccentX","scaledAccentY","spacingLength","charProcOperatorList","operatorListId","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","_getPattern","arguments","objId","getShadingPattern","inv","group","currentCtx","isolated","knockout","bounds","canvasBounds","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","annotationCanvas","savedCtx","compiled","POINT_TYPES","width1","j0","points","lineSize","pos","sum","Int32Array","p0","pp","compileType3Glyph","skewX","skewY","positions","trans","images","applyTransferMapsToCanvas","applyTransferMapsToBitmap","imgToPaint","HTMLElement","tag","isVisible","isContentVisible","absDet","normX","normY","getScaleForStroking","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","op","workerPort","Worker","workerSrc","wrapReason","MessageHandler","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","stream","capability","postMessage","actionName","handler","ah","transfers","sendWithPromise","sendWithStream","queueingStrategy","ReadableStream","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","streamSink","enqueue","isCancelled","lastDesiredSize","sinkCapability","ready","onPull","onCancel","success","streamController","allSettled","Metadata","parsedData","getRaw","INTERNAL","Symbol","OptionalContentGroup","renderingIntent","usage","rbGroups","view","viewState","printState","_setVisible","internal","userSet","OptionalContentConfig","creator","order","groups","baseState","off","getHash","array","operator","state","expression","policy","setVisibility","preserveRB","rbGroup","otherId","setOCGState","hasInitialVisibility","getOrder","getGroups","getGroup","PDFDataTransportStream","pdfDataRangeTransport","disableRange","disableStream","initialData","progressiveDone","contentDispositionFilename","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","addRangeListener","begin","_onReceiveData","addProgressListener","total","_onProgress","addProgressiveReadListener","addProgressiveDoneListener","_onProgressiveDone","transportReady","_enqueue","rangeReader","_begin","_progressiveDataLength","_loaded","onProgress","_removeRangeReader","reader","indexOf","getFullReader","queuedChunks","PDFDataTransportStreamReader","getRangeReader","PDFDataTransportStreamRangeReader","requestDataRange","cancelAllRequests","_stream","_done","_filename","_requests","_headersReady","headersReady","isRangeSupported","isStreamingSupported","contentLength","read","requestCapability","_end","_queuedChunk","createHeaders","isHttp","httpHeaders","headers","Headers","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","returnValues","allowRangeRequests","suggestedLength","extractFilenameFromHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","unescape","rfc5987decode","rfc2047decode","fixupEncoding","contentDispositionStr","iter","quot","part","parts","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","TextDecoder","fatal","quotindex","extvalue","encodingend","replace","charset","hex","getFilenameFromContentDispositionHeader","createResponseStatusError","validateResponseStatus","createFetchOptions","withCredentials","abortController","method","credentials","redirect","getArrayBuffer","PDFFetchStream","_rangeRequestReaders","PDFFetchStreamReader","PDFFetchStreamRangeReader","_reader","_withCredentials","_headersCapability","_disableRange","_rangeChunkSize","_abortController","getReader","_readCapability","NetworkManager","currXhrId","pendingRequests","requestRange","listeners","requestFull","xhr","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","network_getArrayBuffer","rangeHeader","getResponseHeader","getRequestXhr","isPendingRequest","abortRequest","PDFNetworkStream","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_onHeadersReceived","_onDone","_onError","_url","_fullRequestId","_cachedChunks","_storedError","fullRequestXhrId","fullRequestXhr","getAllResponseHeaders","lengthComputable","_requestId","_close","urlRegex","createRequest","PDFNodeStream","sourceUrl","pathToFileURL","parseUrlOrPath","isFsUrl","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_readableStream","_error","_setReadableStream","readableStream","BaseRangeReader","fromEntries","_request","statusCode","Range","lstat","stat","createReadStream","DEFAULT_FONT_SIZE","FontInspector","WeakMap","textContentSource","finally","fontFamilyMap","pump","lang","styles","onBefore","abortEx","textDivs","textContentItemsStr","geom","textDiv","textDivProperties","hasText","hasEOL","atan2","fontName","PI","fontSubstitution","fontHeight","fontAscent","sin","cos","scaleFactorStr","divStyle","dir","dataset","fontSubstitutionLoadedName","shouldScaleText","absScaleX","absScaleY","br","cleanup","alpha","cached","opacity","lineHeight","cachedAscent","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","pixels","XfaText","xfa","output","walk","node","shouldBuildText","DEFAULT_RANGE_CHUNK_SIZE","DefaultCanvasFactory","createCanvas","DefaultCMapReaderFactory","DefaultFilterFactory","docId","contain","svg","createElementNS","mapR","table","mapG","mapB","bufferR","bufferG","bufferB","tableR","tableG","tableB","fgRGB","bgRGB","getSteps","tableA","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","newStart","newStep","prev","feColorMatrix","feComponentTransfer","func","feFunc","rTable","gTable","bTable","aTable","DefaultStandardFontDataFactory","task","PDFDocumentLoadingTask","href","location","getUrlProp","Buffer","isNaN","getDataProp","password","rangeTransport","worker","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","standardFontDataUrl","StandardFontDataFactory","ignoreErrors","stopAtErrors","maxImageSize","isChrome","chrome","canvasMaxAreaInBytes","fontExtraProperties","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","useSystemFonts","useWorkerFetch","transportFactory","cMapReaderFactory","standardFontDataFactory","workerParams","port","fromPort","_worker","docParams","apiVersion","evaluatorOptions","transportParams","loadingParams","destroyed","workerIdPromise","messageHandler","networkStream","NetworkStream","Response","workerId","transport","WorkerTransport","_transport","_capability","isRefProxy","ref","num","gen","onPassword","_pendingDestroy","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","listener","onDataRange","onDataProgress","onDataProgressiveRead","onDataProgressiveDone","PDFDocumentProxy","pdfInfo","_pdfInfo","numPages","fingerprints","isPureXfa","_htmlForXfa","allXfaHtml","getPage","getPageIndex","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getRenderingIntent","getPermissions","getMetadata","getMarkInfo","saveDocument","getDownloadInfo","downloadInfoCapability","keepLoadedFonts","startCleanup","loadingTask","cachedPageNumber","getFieldObjects","hasJSActions","getCalculationOrderIds","PDFPageProxy","pageInfo","_pageIndex","_pageInfo","_stats","_pdfBug","PDFObjects","_maybeCleanupAfterRender","_intentStates","userUnit","getViewport","getAnnotations","getPageJSActions","getXfa","canvasContext","annotationMode","optionalContentConfigPromise","printAnnotationStorage","intentArgs","intentState","streamReaderCancelTimeout","intentPrint","displayReadyCapability","lastChunk","separateAnnots","_pumpOperatorList","renderTasks","internalRenderTask","_abortOperatorList","Stats","InternalRenderTask","useRequestAnimationFrame","renderTask","initializeGraphics","operatorListChanged","getOperatorList","opListTask","opListReadCapability","streamTextContent","includeMarkedContent","disableNormalization","highWaterMark","getTextContent","getStructTree","_destroy","waitOn","force","completed","resetStats","delayed","_startRenderPage","_renderPageChunk","operatorListChunk","annotationStorageSerializable","streamReader","delay","curCacheKey","curIntentState","LoopbackPort","rmAbort","aborted","onAbort","removeEventListener","terminate","_isSameOrigin","otherUrl","base","origin","other","_createCDNWrapper","wrapper","createObjectURL","_port","_webWorker","_messageHandler","_initializeFromPort","_initialize","_setupFakeWorker","terminateEarly","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","cachedPort","pdfjsWorker","loader","factory","fontLoader","_params","destroyCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","cachedPromise","isOpList","modifiedIdsHash","page","terminated","sink","readyReason","_numPages","htmlForXfa","exception","updatePassword","exportedData","exportedError","fontAdded","imageRef","pageProxy","dataLen","imageData","refStr","results","metadata","INITIAL_DATA","iterator","RenderTask","onContinue","form","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","_canvas","StepperManager","init","getNextBreakPoint","gfx","cancelAnimationFrame","updateOperatorList","requestAnimationFrame","makeColorComp","scaleAndClamp","ColorConverters","CMYK_G","G_CMYK","G_RGB","G_rgb","G_HTML","G","RGB_G","RGB_rgb","RGB_HTML","T_HTML","T_rgb","CMYK_RGB","CMYK_rgb","CMYK_HTML","components","RGB_CMYK","BaseSVGFactory","skipDimensions","_createSVG","setupStorage","html","storage","storedData","xfaOn","xfaOff","checked","option","selected","selectedIndex","linkService","isHTMLAnchorElement","HTMLAnchorElement","addLinkAttributes","newWindow","dataId","root","xfaHtml","rootHtml","isNotForRichText","rootDiv","createTextNode","stack","childHtml","xmlns","querySelectorAll","hidden","DEFAULT_TAB_INDEX","GetElementsByNameSet","getRectDims","AnnotationElementFactory","annotationType","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","downloadManager","imageResourcesPath","renderForms","svgFactory","enableScripting","_fieldObjects","fieldObjects","_createContainer","_createQuadrilaterals","_hasPopupData","titleObj","contentsObj","richText","_isEditable","isEditable","hasPopupData","updateEdited","popup","resetEdited","currentRect","setRotation","alternativeText","title","noRotate","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","elementWidth","elementHeight","_commonActions","setColor","jsName","styleName","detail","colorType","colorArray","display","noView","noPrint","userName","readonly","required","_setRequired","textColor","_dispatchEventFromSandbox","actions","jsEvent","commonActions","_setDefaultPropertiesFromJS","quadPoints","rectBlX","rectBlY","rectTrX","rectTrY","trX","trY","blX","blY","svgBuffer","defs","clipPath","rectWidth","rectHeight","backgroundImage","_createPopup","modificationDate","parentRect","elements","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","getElementsByName","maybeShow","forceHide","getElementsToTriggerPopup","addHighlightArea","triggers","_editOnDoubleClick","annotationEditorType","isTooltipOnly","link","isBound","_bindNamedAction","attachment","attachmentDest","_bindLink","Action","_bindJSAction","resetForm","_bindResetFormAction","destination","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","description","openOrDownloadData","executeSetOCGState","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","dispatchEvent","Event","showElementAndHideCanvas","previousSibling","_getKeyModifier","_setEventListener","elementData","baseName","eventName","valueGetter","modifier","focused","_setEventListeners","getter","Blur","Focus","_setBackgroundColor","_setTextStyle","fontColor","defaultAppearanceData","computedFontSize","roundToOneDecimal","multiLine","textAlignment","textAlign","isRequired","hasAppearance","fieldValue","setPropertyOnSiblings","keyInStorage","maxLen","charLimit","fieldFormattedValues","formattedValue","comb","userValue","lastCommittedValue","commitKey","doNotScroll","overflowY","overflowX","readOnly","maxLength","defaultFieldValue","blurListener","scrollLeft","selRange","setSelectionRange","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","Keystroke","inputType","change","combWidth","letterSpacing","verticalAlign","checkbox","curChecked","buttonValue","radio","pdfButtonValue","linkElement","selectElement","addAnEmptyEntry","combo","multiSelect","multiple","optionElement","displayValue","removeEmptyEntry","noneOptionElement","isExport","selectedValues","getItems","multipleSelection","index","findIndex","selectChild","indices","editable","changeEx","keyDown","PopupElement","elementIds","ariaHasPopup","trigger","flatMap","baseColor","outlineColor","BACKGROUND_ENLIGHT","header","dateObj","valueOf","contents","_formatContents","popupLines","popupContent","lineAttributes","line","lines","useParentRect","normalizedRect","popupLeft","popupTop","textPosition","lineSpan","lineCoordinates","square","circle","containerClassName","svgElementName","vertices","polyline","it","inkLists","inkList","accessibilityManager","annotationEditorUIManager","structTreeLayer","_annotationEditorUIManager","hasEditableAnnotations","contentElement","annotationId","ariaAttributes","getAriaAttributes","moveElementInDOM","annotations","popupToElements","elementParams","noHTML","isPopupAnnotation","rendered","replaceWith","after","getEditableAnnotations","getEditableAnnotation","EOL_PATTERN","FreeTextEditor","_translateEmpty","_defaultColor","_defaultFontSize","_internalPadding","setFontsize","editorDiv","savedFontsize","col","savedColor","overlayDiv","contentEditable","editorDivKeydown","editorDivFocus","editorDivBlur","editorDivInput","editorDivPaste","innerText","prevChild","childNodes","savedDisplay","savedVisibility","savedText","newText","trimEnd","setText","dblclick","baseX","baseY","posX","posY","nodeValue","deleteFromDocument","insertNode","collapseToStart","startContainer","startOffset","bufferBefore","bufferAfter","newRange","beforeLength","reduce","acc","setStart","setEnd","removeAllRanges","addRange","replaceChildren","padding","structTreeParentId","Outline","toSVGPath","_rotation","classNamesForDrawing","classNamesForOutlining","mustRemoveSelfIntersections","FreeDrawOutliner","Float64Array","scaleFactor","thickness","innerMargin","lastTop","lastBottom","diffX","diffY","diffD","K","nY","thX","thY","bottom","lastTopX","lastTopY","lastBottomX","lastBottomY","newFreeDrawOutline","outline","FreeDrawOutline","getOutlines","last","N","lastPointX","lastPointY","ltrCallback","lastPoint","newOutliner","getNewOutline","outliner","HighlightOutliner","EPSILON","right","shiftedMinX","shiftedMinY","lastEdge","edge","sort","outlineVerticalEdges","edges","allEdges","edge1","edge2","outlines","HighlightOutline","middle","y4","polygon","prevX","prevY","FreeHighlightOutliner","FreeHighlightOutline","_hideDropdownFromKeyboard","_colorSelectFromKeyboard","_moveToNext","_moveToPrevious","_moveToBeginning","_moveToEnd","blue","green","pink","red","yellow","swatch","renderMainDropdown","dropdown","role","nextSibling","HighlightEditor","_moveCaret","_defaultThickness","_defaultOpacity","highlightId","numberOfColors","outlinerForOutline","highlightOutlines","clipPathId","drawLayer","finalizeLine","drawOutline","updateLine","updateBox","setColorAndOpacity","opa","changeColor","changeOpacity","savedOpacity","savedThickness","setThickness","th","toolbar","addUndoableEditor","mustBeSelected","draw","highlightDiv","pointerover","addClass","pointerleave","removeClass","setPosition","Float32Array","startHighlighting","_freeHighlight","_freeHighlightId","_freeHighlightClipId","updatePath","rawWidth","InkEditor","bezierPath2D","allRawPaths","currentPath","translationX","translationY","setOpacity","disconnect","setDimensions","opacityToHex","canvasPointerleave","canvasPointermove","canvasPointerup","path2D","bezier","xy","lastPoints","bezierPoints","control1","control2","addInkEditorIfNeeded","canvasPointerdown","pointerdownAC","ResizeObserver","contentRect","observe","roundedWidth","roundedHeight","scaleFactorW","scaleFactorH","p10","p11","p20","p21","p30","p31","p40","p41","xMin","xMax","yMin","yMax","prevTranslationX","prevTranslationY","unscaledPadding","StampEditor","bitmapUrl","bitmapFile","supportedTypes","supportedTypesStr","pasteEditor","getAsFile","hasAltTextStats","hasNoAltText","fromId","alt_text_modal","alt_text_type","mlGuessAltText","updateAltTextData","isEnabledFor","copyCanvas","guess","channels","alt","accept","files","click","MAX_RATIO","factor","maxDataDimension","maxPreviewDimension","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","prevWidth","prevHeight","toUrl","toDataURL","structParent","_structTree","bitmapId","changes","isSame","isSameAltText","stamps","area","prevData","isSameRect","isSamePageIndex","_editorType","annotationLayer","editorTypes","_initialized","isInvisible","disableTextSelection","toggleAnnotationLayerPointerEvents","enableTextSelection","isCommitting","annotationElementIds","editables","changedAnnotations","resetAnnotations","attach","detach","removePointerInTextLayer","innerWidth","innerHeight","oldRotation","_svgFactory","pathId","clipPathUse","isPathUpdatable","use","maskId","use1","use2","cloneNode","getSVGRoot","__webpack_exports__AnnotationLayer","__webpack_exports__AnnotationMode","__webpack_exports__GlobalWorkerOptions","__webpack_exports__PDFDataRangeTransport","__webpack_exports__TextLayer","__webpack_exports__getDocument","LinkService","externalLinkEnabled","externalLinkRel","externalLinkTarget","isInPresentationMode","pdfViewer","setDocument","setViewer","setExternalLinkRel","setExternalLinkTarget","setHistory","pagesCount","currentPageNumber","explicitDest","destRef","scrollPageIntoView","navigateTo","goToPage","rel","setHash","cachePageRef","isPageVisible","isPageCached","__rest","getOwnPropertySymbols","propertyIsEnumerable","defaultOnPassword","prompt","isParameterObject","forwardRef","_a","inputRef","loading","noData","onItemClick","onLoadError","onLoadErrorProps","onLoadProgress","onLoadSuccess","onLoadSuccessProps","onSourceError","onSourceErrorProps","onSourceSuccess","onSourceSuccessProps","renderMode","otherProps","sourceState","sourceDispatch","useResolver","sourceError","pdfState","pdfDispatch","pdf","pdfError","useRef","pages","prevFile","prevOptions","warning","useImperativeHandle","useEffect","findDocumentSource","useCallback","__awaiter","thisArg","_arguments","generator","otherParams","fileByteString","P","fulfilled","rejected","cancellable","nextSource","documentInitParams","destroyable","loadingPromise","nextPdf","registerPage","unregisterPage","childContext","useMemo","eventProps","clsx","Message","DocumentContext","Provider","createContext","PDF_ROLE_TO_HTML_ROLE","Document","DocumentFragment","Part","Sect","Div","Aside","NonStruct","H","Title","FENote","Sub","Lbl","Span","Em","Strong","Link","Annot","Form","Ruby","RB","RT","RP","Warichu","WT","WP","L","LI","LBody","Table","TR","TH","TD","THead","TBody","TFoot","Caption","Figure","Formula","Artifact","HEADING_PATTERN","isStructTreeNode","isStructTreeNodeWithOnlyContentChild","getBaseAttributes","childAttributes","getAttributes","isPdfRole","htmlRole","getRoleAttributes","StructTreeItem","usePageContext","useContext","PageContext","StructTree","pageContext","onGetStructTreeError","onGetStructTreeErrorProps","onGetStructTreeSuccess","onGetStructTreeSuccessProps","structTreeState","structTreeDispatch","structTree","structTreeError","customTextRenderer","runningTask","nextStructTree","ANNOTATION_MODE","Canvas","props","mergedProps","_className","canvasBackground","onRenderError","onRenderErrorProps","onRenderSuccess","onRenderSuccessProps","renderTextLayer","canvasRef","canvasElement","renderViewport","renderContext","userSelect","onGetTextError","onGetTextSuccess","onRenderTextLayerError","onRenderTextLayerSuccess","textContentState","textContentDispatch","textContentError","layerElement","nextTextContent","useLayoutEffect","innerHTML","layerChildren","forEach","itemIndex","isTextItem","onMouseUp","onMouseDown","useDocumentContext","documentContext","onGetAnnotationsError","onGetAnnotationsErrorProps","onGetAnnotationsSuccess","onGetAnnotationsSuccessProps","onRenderAnnotationLayerError","onRenderAnnotationLayerErrorProps","onRenderAnnotationLayerSuccess","onRenderAnnotationLayerSuccessProps","annotationsState","annotationsDispatch","annotationsError","nextAnnotations","clonedViewport","annotationLayerParameters","renderParameters","defaultScale","Page","_enableRegisterUnregisterPage","customRenderer","CustomRenderer","onGetTextErrorProps","onGetTextSuccessProps","onRenderTextLayerErrorProps","onRenderTextLayerSuccessProps","pageIndexProps","pageNumberProps","renderAnnotationLayer","renderAnnotationLayerProps","renderTextLayerProps","rotateProps","scaleProps","pageState","pageDispatch","pageError","pageElement","pageScale","scaleWithDefault","nextPage","pageKey","renderMainLayer","reducer","useReducer","isBrowser","isLocalFileSystem","isProvided","variable","isDefined","isArrayBuffer","isBlob","isDataURI","isString","dataURItoByteString","dataURI","headersString","dataString","getDevicePixelRatio","allowFileAccessFromFilesTip","displayCORSWarning","cancelRunningTask","makePageCallback","isCancelException","loadFromFile","NOT_FOUND_ERR","SECURITY_ERR","ABORT_ERR","readAsArrayBuffer"],"sourceRoot":""}