diff --git a/static/ips/assets/js/pdf-js/LICENSE b/static/ips/assets/js/pdf-js/LICENSE
new file mode 100644
index 00000000..f433b1a5
--- /dev/null
+++ b/static/ips/assets/js/pdf-js/LICENSE
@@ -0,0 +1,177 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
diff --git a/static/ips/assets/js/pdf-js/build/pdf.mjs b/static/ips/assets/js/pdf-js/build/pdf.mjs
new file mode 100644
index 00000000..0eefce53
--- /dev/null
+++ b/static/ips/assets/js/pdf-js/build/pdf.mjs
@@ -0,0 +1,18151 @@
+/**
+ * @licstart The following is the entire license notice for the
+ * JavaScript code in this page
+ *
+ * Copyright 2023 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @licend The above is the entire license notice for the
+ * JavaScript code in this page
+ */
+
+/******/ var __webpack_modules__ = ({
+
+/***/ 640:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, {
+ AnnotationLayer: () => (/* binding */ AnnotationLayer),
+ FreeTextAnnotationElement: () => (/* binding */ FreeTextAnnotationElement),
+ InkAnnotationElement: () => (/* binding */ InkAnnotationElement),
+ StampAnnotationElement: () => (/* binding */ StampAnnotationElement)
+});
+
+// EXTERNAL MODULE: ./src/shared/util.js
+var util = __webpack_require__(266);
+// EXTERNAL MODULE: ./src/display/display_utils.js
+var display_utils = __webpack_require__(473);
+// EXTERNAL MODULE: ./src/display/annotation_storage.js
+var annotation_storage = __webpack_require__(780);
+;// CONCATENATED MODULE: ./src/shared/scripting_utils.js
+function makeColorComp(n) {
+ return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0");
+}
+function scaleAndClamp(x) {
+ return Math.max(0, Math.min(255, 255 * x));
+}
+class ColorConverters {
+ static CMYK_G([c, y, m, k]) {
+ return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];
+ }
+ static G_CMYK([g]) {
+ return ["CMYK", 0, 0, 0, 1 - g];
+ }
+ static G_RGB([g]) {
+ return ["RGB", g, g, g];
+ }
+ static G_rgb([g]) {
+ g = scaleAndClamp(g);
+ return [g, g, g];
+ }
+ static G_HTML([g]) {
+ const G = makeColorComp(g);
+ return `#${G}${G}${G}`;
+ }
+ static RGB_G([r, g, b]) {
+ return ["G", 0.3 * r + 0.59 * g + 0.11 * b];
+ }
+ static RGB_rgb(color) {
+ return color.map(scaleAndClamp);
+ }
+ static RGB_HTML(color) {
+ return `#${color.map(makeColorComp).join("")}`;
+ }
+ static T_HTML() {
+ return "#00000000";
+ }
+ static T_rgb() {
+ return [null];
+ }
+ static CMYK_RGB([c, y, m, k]) {
+ return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];
+ }
+ static CMYK_rgb([c, y, m, k]) {
+ return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];
+ }
+ static CMYK_HTML(components) {
+ const rgb = this.CMYK_RGB(components).slice(1);
+ return this.RGB_HTML(rgb);
+ }
+ static RGB_CMYK([r, g, b]) {
+ const c = 1 - r;
+ const m = 1 - g;
+ const y = 1 - b;
+ const k = Math.min(c, m, y);
+ return ["CMYK", c, m, y, k];
+ }
+}
+
+// EXTERNAL MODULE: ./src/display/xfa_layer.js
+var xfa_layer = __webpack_require__(160);
+;// CONCATENATED MODULE: ./src/display/annotation_layer.js
+
+
+
+
+
+const DEFAULT_TAB_INDEX = 1000;
+const DEFAULT_FONT_SIZE = 9;
+const GetElementsByNameSet = new WeakSet();
+function getRectDims(rect) {
+ return {
+ width: rect[2] - rect[0],
+ height: rect[3] - rect[1]
+ };
+}
+class AnnotationElementFactory {
+ static create(parameters) {
+ const subtype = parameters.data.annotationType;
+ switch (subtype) {
+ case util.AnnotationType.LINK:
+ return new LinkAnnotationElement(parameters);
+ case util.AnnotationType.TEXT:
+ return new TextAnnotationElement(parameters);
+ case util.AnnotationType.WIDGET:
+ const fieldType = parameters.data.fieldType;
+ switch (fieldType) {
+ case "Tx":
+ return new TextWidgetAnnotationElement(parameters);
+ case "Btn":
+ if (parameters.data.radioButton) {
+ return new RadioButtonWidgetAnnotationElement(parameters);
+ } else if (parameters.data.checkBox) {
+ return new CheckboxWidgetAnnotationElement(parameters);
+ }
+ return new PushButtonWidgetAnnotationElement(parameters);
+ case "Ch":
+ return new ChoiceWidgetAnnotationElement(parameters);
+ case "Sig":
+ return new SignatureWidgetAnnotationElement(parameters);
+ }
+ return new WidgetAnnotationElement(parameters);
+ case util.AnnotationType.POPUP:
+ return new PopupAnnotationElement(parameters);
+ case util.AnnotationType.FREETEXT:
+ return new FreeTextAnnotationElement(parameters);
+ case util.AnnotationType.LINE:
+ return new LineAnnotationElement(parameters);
+ case util.AnnotationType.SQUARE:
+ return new SquareAnnotationElement(parameters);
+ case util.AnnotationType.CIRCLE:
+ return new CircleAnnotationElement(parameters);
+ case util.AnnotationType.POLYLINE:
+ return new PolylineAnnotationElement(parameters);
+ case util.AnnotationType.CARET:
+ return new CaretAnnotationElement(parameters);
+ case util.AnnotationType.INK:
+ return new InkAnnotationElement(parameters);
+ case util.AnnotationType.POLYGON:
+ return new PolygonAnnotationElement(parameters);
+ case util.AnnotationType.HIGHLIGHT:
+ return new HighlightAnnotationElement(parameters);
+ case util.AnnotationType.UNDERLINE:
+ return new UnderlineAnnotationElement(parameters);
+ case util.AnnotationType.SQUIGGLY:
+ return new SquigglyAnnotationElement(parameters);
+ case util.AnnotationType.STRIKEOUT:
+ return new StrikeOutAnnotationElement(parameters);
+ case util.AnnotationType.STAMP:
+ return new StampAnnotationElement(parameters);
+ case util.AnnotationType.FILEATTACHMENT:
+ return new FileAttachmentAnnotationElement(parameters);
+ default:
+ return new AnnotationElement(parameters);
+ }
+ }
+}
+class AnnotationElement {
+ #hasBorder = false;
+ constructor(parameters, {
+ isRenderable = false,
+ ignoreBorder = false,
+ createQuadrilaterals = false
+ } = {}) {
+ this.isRenderable = isRenderable;
+ this.data = parameters.data;
+ this.layer = parameters.layer;
+ this.linkService = parameters.linkService;
+ this.downloadManager = parameters.downloadManager;
+ this.imageResourcesPath = parameters.imageResourcesPath;
+ this.renderForms = parameters.renderForms;
+ this.svgFactory = parameters.svgFactory;
+ this.annotationStorage = parameters.annotationStorage;
+ this.enableScripting = parameters.enableScripting;
+ this.hasJSActions = parameters.hasJSActions;
+ this._fieldObjects = parameters.fieldObjects;
+ this.parent = parameters.parent;
+ if (isRenderable) {
+ this.container = this._createContainer(ignoreBorder);
+ }
+ if (createQuadrilaterals) {
+ this._createQuadrilaterals();
+ }
+ }
+ static _hasPopupData({
+ titleObj,
+ contentsObj,
+ richText
+ }) {
+ return !!(titleObj?.str || contentsObj?.str || richText?.str);
+ }
+ get hasPopupData() {
+ return AnnotationElement._hasPopupData(this.data);
+ }
+ _createContainer(ignoreBorder) {
+ const {
+ data,
+ parent: {
+ page,
+ viewport
+ }
+ } = this;
+ const container = document.createElement("section");
+ container.setAttribute("data-annotation-id", data.id);
+ if (!(this instanceof WidgetAnnotationElement)) {
+ container.tabIndex = DEFAULT_TAB_INDEX;
+ }
+ container.style.zIndex = this.parent.zIndex++;
+ if (this.data.popupRef) {
+ container.setAttribute("aria-haspopup", "dialog");
+ }
+ if (data.noRotate) {
+ container.classList.add("norotate");
+ }
+ const {
+ pageWidth,
+ pageHeight,
+ pageX,
+ pageY
+ } = viewport.rawDims;
+ if (!data.rect || this instanceof PopupAnnotationElement) {
+ const {
+ rotation
+ } = data;
+ if (!data.hasOwnCanvas && rotation !== 0) {
+ this.setRotation(rotation, container);
+ }
+ return container;
+ }
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
+ const rect = util.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]]);
+ if (!ignoreBorder && data.borderStyle.width > 0) {
+ container.style.borderWidth = `${data.borderStyle.width}px`;
+ const horizontalRadius = data.borderStyle.horizontalCornerRadius;
+ const verticalRadius = data.borderStyle.verticalCornerRadius;
+ if (horizontalRadius > 0 || verticalRadius > 0) {
+ const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;
+ container.style.borderRadius = radius;
+ } else if (this instanceof RadioButtonWidgetAnnotationElement) {
+ const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;
+ container.style.borderRadius = radius;
+ }
+ switch (data.borderStyle.style) {
+ case util.AnnotationBorderStyleType.SOLID:
+ container.style.borderStyle = "solid";
+ break;
+ case util.AnnotationBorderStyleType.DASHED:
+ container.style.borderStyle = "dashed";
+ break;
+ case util.AnnotationBorderStyleType.BEVELED:
+ (0,util.warn)("Unimplemented border style: beveled");
+ break;
+ case util.AnnotationBorderStyleType.INSET:
+ (0,util.warn)("Unimplemented border style: inset");
+ break;
+ case util.AnnotationBorderStyleType.UNDERLINE:
+ container.style.borderBottomStyle = "solid";
+ break;
+ default:
+ break;
+ }
+ const borderColor = data.borderColor || null;
+ if (borderColor) {
+ this.#hasBorder = true;
+ container.style.borderColor = util.Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);
+ } else {
+ container.style.borderWidth = 0;
+ }
+ }
+ container.style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;
+ container.style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;
+ const {
+ rotation
+ } = data;
+ if (data.hasOwnCanvas || rotation === 0) {
+ container.style.width = `${100 * width / pageWidth}%`;
+ container.style.height = `${100 * height / pageHeight}%`;
+ } else {
+ this.setRotation(rotation, container);
+ }
+ return container;
+ }
+ setRotation(angle, container = this.container) {
+ if (!this.data.rect) {
+ return;
+ }
+ const {
+ pageWidth,
+ pageHeight
+ } = this.parent.viewport.rawDims;
+ const {
+ width,
+ height
+ } = getRectDims(this.data.rect);
+ let elementWidth, elementHeight;
+ if (angle % 180 === 0) {
+ elementWidth = 100 * width / pageWidth;
+ elementHeight = 100 * height / pageHeight;
+ } else {
+ elementWidth = 100 * height / pageWidth;
+ elementHeight = 100 * width / pageHeight;
+ }
+ container.style.width = `${elementWidth}%`;
+ container.style.height = `${elementHeight}%`;
+ container.setAttribute("data-main-rotation", (360 - angle) % 360);
+ }
+ get _commonActions() {
+ const setColor = (jsName, styleName, event) => {
+ const color = event.detail[jsName];
+ const colorType = color[0];
+ const colorArray = color.slice(1);
+ event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);
+ this.annotationStorage.setValue(this.data.id, {
+ [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)
+ });
+ };
+ return (0,util.shadow)(this, "_commonActions", {
+ display: event => {
+ const {
+ display
+ } = event.detail;
+ const hidden = display % 2 === 1;
+ this.container.style.visibility = hidden ? "hidden" : "visible";
+ this.annotationStorage.setValue(this.data.id, {
+ noView: hidden,
+ noPrint: display === 1 || display === 2
+ });
+ },
+ print: event => {
+ this.annotationStorage.setValue(this.data.id, {
+ noPrint: !event.detail.print
+ });
+ },
+ hidden: event => {
+ const {
+ hidden
+ } = event.detail;
+ this.container.style.visibility = hidden ? "hidden" : "visible";
+ this.annotationStorage.setValue(this.data.id, {
+ noPrint: hidden,
+ noView: hidden
+ });
+ },
+ focus: event => {
+ setTimeout(() => event.target.focus({
+ preventScroll: false
+ }), 0);
+ },
+ userName: event => {
+ event.target.title = event.detail.userName;
+ },
+ readonly: event => {
+ event.target.disabled = event.detail.readonly;
+ },
+ required: event => {
+ this._setRequired(event.target, event.detail.required);
+ },
+ bgColor: event => {
+ setColor("bgColor", "backgroundColor", event);
+ },
+ fillColor: event => {
+ setColor("fillColor", "backgroundColor", event);
+ },
+ fgColor: event => {
+ setColor("fgColor", "color", event);
+ },
+ textColor: event => {
+ setColor("textColor", "color", event);
+ },
+ borderColor: event => {
+ setColor("borderColor", "borderColor", event);
+ },
+ strokeColor: event => {
+ setColor("strokeColor", "borderColor", event);
+ },
+ rotation: event => {
+ const angle = event.detail.rotation;
+ this.setRotation(angle);
+ this.annotationStorage.setValue(this.data.id, {
+ rotation: angle
+ });
+ }
+ });
+ }
+ _dispatchEventFromSandbox(actions, jsEvent) {
+ const commonActions = this._commonActions;
+ for (const name of Object.keys(jsEvent.detail)) {
+ const action = actions[name] || commonActions[name];
+ action?.(jsEvent);
+ }
+ }
+ _setDefaultPropertiesFromJS(element) {
+ if (!this.enableScripting) {
+ return;
+ }
+ const storedData = this.annotationStorage.getRawValue(this.data.id);
+ if (!storedData) {
+ return;
+ }
+ const commonActions = this._commonActions;
+ for (const [actionName, detail] of Object.entries(storedData)) {
+ const action = commonActions[actionName];
+ if (action) {
+ const eventProxy = {
+ detail: {
+ [actionName]: detail
+ },
+ target: element
+ };
+ action(eventProxy);
+ delete storedData[actionName];
+ }
+ }
+ }
+ _createQuadrilaterals() {
+ if (!this.container) {
+ return;
+ }
+ const {
+ quadPoints
+ } = this.data;
+ if (!quadPoints) {
+ return;
+ }
+ const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect;
+ if (quadPoints.length === 1) {
+ const [, {
+ x: trX,
+ y: trY
+ }, {
+ x: blX,
+ y: blY
+ }] = quadPoints[0];
+ if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {
+ return;
+ }
+ }
+ const {
+ style
+ } = this.container;
+ let svgBuffer;
+ if (this.#hasBorder) {
+ const {
+ borderColor,
+ borderWidth
+ } = style;
+ style.borderWidth = 0;
+ svgBuffer = ["url('data:image/svg+xml;utf8,", `')`);
+ style.backgroundImage = svgBuffer.join("");
+ }
+ this.container.append(svg);
+ this.container.style.clipPath = `url(#${id})`;
+ }
+ _createPopup() {
+ const {
+ container,
+ data
+ } = this;
+ container.setAttribute("aria-haspopup", "dialog");
+ const popup = new PopupAnnotationElement({
+ data: {
+ color: data.color,
+ titleObj: data.titleObj,
+ modificationDate: data.modificationDate,
+ contentsObj: data.contentsObj,
+ richText: data.richText,
+ parentRect: data.rect,
+ borderStyle: 0,
+ id: `popup_${data.id}`,
+ rotation: data.rotation
+ },
+ parent: this.parent,
+ elements: [this]
+ });
+ this.parent.div.append(popup.render());
+ }
+ render() {
+ (0,util.unreachable)("Abstract method `AnnotationElement.render` called");
+ }
+ _getElementsByName(name, skipId = null) {
+ const fields = [];
+ if (this._fieldObjects) {
+ const fieldObj = this._fieldObjects[name];
+ if (fieldObj) {
+ for (const {
+ page,
+ id,
+ exportValues
+ } of fieldObj) {
+ if (page === -1) {
+ continue;
+ }
+ if (id === skipId) {
+ continue;
+ }
+ const exportValue = typeof exportValues === "string" ? exportValues : null;
+ const domElement = document.querySelector(`[data-element-id="${id}"]`);
+ if (domElement && !GetElementsByNameSet.has(domElement)) {
+ (0,util.warn)(`_getElementsByName - element not allowed: ${id}`);
+ continue;
+ }
+ fields.push({
+ id,
+ exportValue,
+ domElement
+ });
+ }
+ }
+ return fields;
+ }
+ for (const domElement of document.getElementsByName(name)) {
+ const {
+ exportValue
+ } = domElement;
+ const id = domElement.getAttribute("data-element-id");
+ if (id === skipId) {
+ continue;
+ }
+ if (!GetElementsByNameSet.has(domElement)) {
+ continue;
+ }
+ fields.push({
+ id,
+ exportValue,
+ domElement
+ });
+ }
+ return fields;
+ }
+ show() {
+ if (this.container) {
+ this.container.hidden = false;
+ }
+ this.popup?.maybeShow();
+ }
+ hide() {
+ if (this.container) {
+ this.container.hidden = true;
+ }
+ this.popup?.forceHide();
+ }
+ getElementsToTriggerPopup() {
+ return this.container;
+ }
+ addHighlightArea() {
+ const triggers = this.getElementsToTriggerPopup();
+ if (Array.isArray(triggers)) {
+ for (const element of triggers) {
+ element.classList.add("highlightArea");
+ }
+ } else {
+ triggers.classList.add("highlightArea");
+ }
+ }
+ get _isEditable() {
+ return false;
+ }
+ _editOnDoubleClick() {
+ if (!this._isEditable) {
+ return;
+ }
+ const {
+ annotationEditorType: mode,
+ data: {
+ id: editId
+ }
+ } = this;
+ this.container.addEventListener("dblclick", () => {
+ this.linkService.eventBus?.dispatch("switchannotationeditormode", {
+ source: this,
+ mode,
+ editId
+ });
+ });
+ }
+}
+class LinkAnnotationElement extends AnnotationElement {
+ constructor(parameters, options = null) {
+ super(parameters, {
+ isRenderable: true,
+ ignoreBorder: !!options?.ignoreBorder,
+ createQuadrilaterals: true
+ });
+ this.isTooltipOnly = parameters.data.isTooltipOnly;
+ }
+ render() {
+ const {
+ data,
+ linkService
+ } = this;
+ const link = document.createElement("a");
+ link.setAttribute("data-element-id", data.id);
+ let isBound = false;
+ if (data.url) {
+ linkService.addLinkAttributes(link, data.url, data.newWindow);
+ isBound = true;
+ } else if (data.action) {
+ this._bindNamedAction(link, data.action);
+ isBound = true;
+ } else if (data.attachment) {
+ this.#bindAttachment(link, data.attachment, data.attachmentDest);
+ isBound = true;
+ } else if (data.setOCGState) {
+ this.#bindSetOCGState(link, data.setOCGState);
+ isBound = true;
+ } else if (data.dest) {
+ this._bindLink(link, data.dest);
+ isBound = true;
+ } else {
+ if (data.actions && (data.actions.Action || data.actions["Mouse Up"] || data.actions["Mouse Down"]) && this.enableScripting && this.hasJSActions) {
+ this._bindJSAction(link, data);
+ isBound = true;
+ }
+ if (data.resetForm) {
+ this._bindResetFormAction(link, data.resetForm);
+ isBound = true;
+ } else if (this.isTooltipOnly && !isBound) {
+ this._bindLink(link, "");
+ isBound = true;
+ }
+ }
+ this.container.classList.add("linkAnnotation");
+ if (isBound) {
+ this.container.append(link);
+ }
+ return this.container;
+ }
+ #setInternalLink() {
+ this.container.setAttribute("data-internal-link", "");
+ }
+ _bindLink(link, destination) {
+ link.href = this.linkService.getDestinationHash(destination);
+ link.onclick = () => {
+ if (destination) {
+ this.linkService.goToDestination(destination);
+ }
+ return false;
+ };
+ if (destination || destination === "") {
+ this.#setInternalLink();
+ }
+ }
+ _bindNamedAction(link, action) {
+ link.href = this.linkService.getAnchorUrl("");
+ link.onclick = () => {
+ this.linkService.executeNamedAction(action);
+ return false;
+ };
+ this.#setInternalLink();
+ }
+ #bindAttachment(link, attachment, dest = null) {
+ link.href = this.linkService.getAnchorUrl("");
+ link.onclick = () => {
+ this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);
+ return false;
+ };
+ this.#setInternalLink();
+ }
+ #bindSetOCGState(link, action) {
+ link.href = this.linkService.getAnchorUrl("");
+ link.onclick = () => {
+ this.linkService.executeSetOCGState(action);
+ return false;
+ };
+ this.#setInternalLink();
+ }
+ _bindJSAction(link, data) {
+ link.href = this.linkService.getAnchorUrl("");
+ const map = new Map([["Action", "onclick"], ["Mouse Up", "onmouseup"], ["Mouse Down", "onmousedown"]]);
+ for (const name of Object.keys(data.actions)) {
+ const jsName = map.get(name);
+ if (!jsName) {
+ continue;
+ }
+ link[jsName] = () => {
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id: data.id,
+ name
+ }
+ });
+ return false;
+ };
+ }
+ if (!link.onclick) {
+ link.onclick = () => false;
+ }
+ this.#setInternalLink();
+ }
+ _bindResetFormAction(link, resetForm) {
+ const otherClickAction = link.onclick;
+ if (!otherClickAction) {
+ link.href = this.linkService.getAnchorUrl("");
+ }
+ this.#setInternalLink();
+ if (!this._fieldObjects) {
+ (0,util.warn)(`_bindResetFormAction - "resetForm" action not supported, ` + "ensure that the `fieldObjects` parameter is provided.");
+ if (!otherClickAction) {
+ link.onclick = () => false;
+ }
+ return;
+ }
+ link.onclick = () => {
+ otherClickAction?.();
+ const {
+ fields: resetFormFields,
+ refs: resetFormRefs,
+ include
+ } = resetForm;
+ const allFields = [];
+ if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {
+ const fieldIds = new Set(resetFormRefs);
+ for (const fieldName of resetFormFields) {
+ const fields = this._fieldObjects[fieldName] || [];
+ for (const {
+ id
+ } of fields) {
+ fieldIds.add(id);
+ }
+ }
+ for (const fields of Object.values(this._fieldObjects)) {
+ for (const field of fields) {
+ if (fieldIds.has(field.id) === include) {
+ allFields.push(field);
+ }
+ }
+ }
+ } else {
+ for (const fields of Object.values(this._fieldObjects)) {
+ allFields.push(...fields);
+ }
+ }
+ const storage = this.annotationStorage;
+ const allIds = [];
+ for (const field of allFields) {
+ const {
+ id
+ } = field;
+ allIds.push(id);
+ switch (field.type) {
+ case "text":
+ {
+ const value = field.defaultValue || "";
+ storage.setValue(id, {
+ value
+ });
+ break;
+ }
+ case "checkbox":
+ case "radiobutton":
+ {
+ const value = field.defaultValue === field.exportValues;
+ storage.setValue(id, {
+ value
+ });
+ break;
+ }
+ case "combobox":
+ case "listbox":
+ {
+ const value = field.defaultValue || "";
+ storage.setValue(id, {
+ value
+ });
+ break;
+ }
+ default:
+ continue;
+ }
+ const domElement = document.querySelector(`[data-element-id="${id}"]`);
+ if (!domElement) {
+ continue;
+ } else if (!GetElementsByNameSet.has(domElement)) {
+ (0,util.warn)(`_bindResetFormAction - element not allowed: ${id}`);
+ continue;
+ }
+ domElement.dispatchEvent(new Event("resetform"));
+ }
+ if (this.enableScripting) {
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id: "app",
+ ids: allIds,
+ name: "ResetForm"
+ }
+ });
+ }
+ return false;
+ };
+ }
+}
+class TextAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: true
+ });
+ }
+ render() {
+ this.container.classList.add("textAnnotation");
+ const image = document.createElement("img");
+ image.src = this.imageResourcesPath + "annotation-" + this.data.name.toLowerCase() + ".svg";
+ image.setAttribute("data-l10n-id", "pdfjs-text-annotation-type");
+ image.setAttribute("data-l10n-args", JSON.stringify({
+ type: this.data.name
+ }));
+ if (!this.data.popupRef && this.hasPopupData) {
+ this._createPopup();
+ }
+ this.container.append(image);
+ return this.container;
+ }
+}
+class WidgetAnnotationElement extends AnnotationElement {
+ render() {
+ if (this.data.alternativeText) {
+ this.container.title = this.data.alternativeText;
+ }
+ return this.container;
+ }
+ showElementAndHideCanvas(element) {
+ if (this.data.hasOwnCanvas) {
+ if (element.previousSibling?.nodeName === "CANVAS") {
+ element.previousSibling.hidden = true;
+ }
+ element.hidden = false;
+ }
+ }
+ _getKeyModifier(event) {
+ return util.FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;
+ }
+ _setEventListener(element, elementData, baseName, eventName, valueGetter) {
+ if (baseName.includes("mouse")) {
+ element.addEventListener(baseName, event => {
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id: this.data.id,
+ name: eventName,
+ value: valueGetter(event),
+ shift: event.shiftKey,
+ modifier: this._getKeyModifier(event)
+ }
+ });
+ });
+ } else {
+ element.addEventListener(baseName, event => {
+ if (baseName === "blur") {
+ if (!elementData.focused || !event.relatedTarget) {
+ return;
+ }
+ elementData.focused = false;
+ } else if (baseName === "focus") {
+ if (elementData.focused) {
+ return;
+ }
+ elementData.focused = true;
+ }
+ if (!valueGetter) {
+ return;
+ }
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id: this.data.id,
+ name: eventName,
+ value: valueGetter(event)
+ }
+ });
+ });
+ }
+ }
+ _setEventListeners(element, elementData, names, getter) {
+ for (const [baseName, eventName] of names) {
+ if (eventName === "Action" || this.data.actions?.[eventName]) {
+ if (eventName === "Focus" || eventName === "Blur") {
+ elementData ||= {
+ focused: false
+ };
+ }
+ this._setEventListener(element, elementData, baseName, eventName, getter);
+ if (eventName === "Focus" && !this.data.actions?.Blur) {
+ this._setEventListener(element, elementData, "blur", "Blur", null);
+ } else if (eventName === "Blur" && !this.data.actions?.Focus) {
+ this._setEventListener(element, elementData, "focus", "Focus", null);
+ }
+ }
+ }
+ }
+ _setBackgroundColor(element) {
+ const color = this.data.backgroundColor || null;
+ element.style.backgroundColor = color === null ? "transparent" : util.Util.makeHexColor(color[0], color[1], color[2]);
+ }
+ _setTextStyle(element) {
+ const TEXT_ALIGNMENT = ["left", "center", "right"];
+ const {
+ fontColor
+ } = this.data.defaultAppearanceData;
+ const fontSize = this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;
+ const style = element.style;
+ let computedFontSize;
+ const BORDER_SIZE = 2;
+ const roundToOneDecimal = x => Math.round(10 * x) / 10;
+ if (this.data.multiLine) {
+ const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);
+ const numberOfLines = Math.round(height / (util.LINE_FACTOR * fontSize)) || 1;
+ const lineHeight = height / numberOfLines;
+ computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / util.LINE_FACTOR));
+ } else {
+ const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);
+ computedFontSize = Math.min(fontSize, roundToOneDecimal(height / util.LINE_FACTOR));
+ }
+ style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;
+ style.color = util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);
+ if (this.data.textAlignment !== null) {
+ style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];
+ }
+ }
+ _setRequired(element, isRequired) {
+ if (isRequired) {
+ element.setAttribute("required", true);
+ } else {
+ element.removeAttribute("required");
+ }
+ element.setAttribute("aria-required", isRequired);
+ }
+}
+class TextWidgetAnnotationElement extends WidgetAnnotationElement {
+ constructor(parameters) {
+ const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;
+ super(parameters, {
+ isRenderable
+ });
+ }
+ setPropertyOnSiblings(base, key, value, keyInStorage) {
+ const storage = this.annotationStorage;
+ for (const element of this._getElementsByName(base.name, base.id)) {
+ if (element.domElement) {
+ element.domElement[key] = value;
+ }
+ storage.setValue(element.id, {
+ [keyInStorage]: value
+ });
+ }
+ }
+ render() {
+ const storage = this.annotationStorage;
+ const id = this.data.id;
+ this.container.classList.add("textWidgetAnnotation");
+ let element = null;
+ if (this.renderForms) {
+ const storedData = storage.getValue(id, {
+ value: this.data.fieldValue
+ });
+ let textContent = storedData.value || "";
+ const maxLen = storage.getValue(id, {
+ charLimit: this.data.maxLen
+ }).charLimit;
+ if (maxLen && textContent.length > maxLen) {
+ textContent = textContent.slice(0, maxLen);
+ }
+ let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join("\n") || null;
+ if (fieldFormattedValues && this.data.comb) {
+ fieldFormattedValues = fieldFormattedValues.replaceAll(/\s+/g, "");
+ }
+ const elementData = {
+ userValue: textContent,
+ formattedValue: fieldFormattedValues,
+ lastCommittedValue: null,
+ commitKey: 1,
+ focused: false
+ };
+ if (this.data.multiLine) {
+ element = document.createElement("textarea");
+ element.textContent = fieldFormattedValues ?? textContent;
+ if (this.data.doNotScroll) {
+ element.style.overflowY = "hidden";
+ }
+ } else {
+ element = document.createElement("input");
+ element.type = "text";
+ element.setAttribute("value", fieldFormattedValues ?? textContent);
+ if (this.data.doNotScroll) {
+ element.style.overflowX = "hidden";
+ }
+ }
+ if (this.data.hasOwnCanvas) {
+ element.hidden = true;
+ }
+ GetElementsByNameSet.add(element);
+ element.setAttribute("data-element-id", id);
+ element.disabled = this.data.readOnly;
+ element.name = this.data.fieldName;
+ element.tabIndex = DEFAULT_TAB_INDEX;
+ this._setRequired(element, this.data.required);
+ if (maxLen) {
+ element.maxLength = maxLen;
+ }
+ element.addEventListener("input", event => {
+ storage.setValue(id, {
+ value: event.target.value
+ });
+ this.setPropertyOnSiblings(element, "value", event.target.value, "value");
+ elementData.formattedValue = null;
+ });
+ element.addEventListener("resetform", event => {
+ const defaultValue = this.data.defaultFieldValue ?? "";
+ element.value = elementData.userValue = defaultValue;
+ elementData.formattedValue = null;
+ });
+ let blurListener = event => {
+ const {
+ formattedValue
+ } = elementData;
+ if (formattedValue !== null && formattedValue !== undefined) {
+ event.target.value = formattedValue;
+ }
+ event.target.scrollLeft = 0;
+ };
+ if (this.enableScripting && this.hasJSActions) {
+ element.addEventListener("focus", event => {
+ if (elementData.focused) {
+ return;
+ }
+ const {
+ target
+ } = event;
+ if (elementData.userValue) {
+ target.value = elementData.userValue;
+ }
+ elementData.lastCommittedValue = target.value;
+ elementData.commitKey = 1;
+ if (!this.data.actions?.Focus) {
+ elementData.focused = true;
+ }
+ });
+ element.addEventListener("updatefromsandbox", jsEvent => {
+ this.showElementAndHideCanvas(jsEvent.target);
+ const actions = {
+ value(event) {
+ elementData.userValue = event.detail.value ?? "";
+ storage.setValue(id, {
+ value: elementData.userValue.toString()
+ });
+ event.target.value = elementData.userValue;
+ },
+ formattedValue(event) {
+ const {
+ formattedValue
+ } = event.detail;
+ elementData.formattedValue = formattedValue;
+ if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {
+ event.target.value = formattedValue;
+ }
+ storage.setValue(id, {
+ formattedValue
+ });
+ },
+ selRange(event) {
+ event.target.setSelectionRange(...event.detail.selRange);
+ },
+ charLimit: event => {
+ const {
+ charLimit
+ } = event.detail;
+ const {
+ target
+ } = event;
+ if (charLimit === 0) {
+ target.removeAttribute("maxLength");
+ return;
+ }
+ target.setAttribute("maxLength", charLimit);
+ let value = elementData.userValue;
+ if (!value || value.length <= charLimit) {
+ return;
+ }
+ value = value.slice(0, charLimit);
+ target.value = elementData.userValue = value;
+ storage.setValue(id, {
+ value
+ });
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id,
+ name: "Keystroke",
+ value,
+ willCommit: true,
+ commitKey: 1,
+ selStart: target.selectionStart,
+ selEnd: target.selectionEnd
+ }
+ });
+ }
+ };
+ this._dispatchEventFromSandbox(actions, jsEvent);
+ });
+ element.addEventListener("keydown", event => {
+ elementData.commitKey = 1;
+ let commitKey = -1;
+ if (event.key === "Escape") {
+ commitKey = 0;
+ } else if (event.key === "Enter" && !this.data.multiLine) {
+ commitKey = 2;
+ } else if (event.key === "Tab") {
+ elementData.commitKey = 3;
+ }
+ if (commitKey === -1) {
+ return;
+ }
+ const {
+ value
+ } = event.target;
+ if (elementData.lastCommittedValue === value) {
+ return;
+ }
+ elementData.lastCommittedValue = value;
+ elementData.userValue = value;
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id,
+ name: "Keystroke",
+ value,
+ willCommit: true,
+ commitKey,
+ selStart: event.target.selectionStart,
+ selEnd: event.target.selectionEnd
+ }
+ });
+ });
+ const _blurListener = blurListener;
+ blurListener = null;
+ element.addEventListener("blur", event => {
+ if (!elementData.focused || !event.relatedTarget) {
+ return;
+ }
+ if (!this.data.actions?.Blur) {
+ elementData.focused = false;
+ }
+ const {
+ value
+ } = event.target;
+ elementData.userValue = value;
+ if (elementData.lastCommittedValue !== value) {
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id,
+ name: "Keystroke",
+ value,
+ willCommit: true,
+ commitKey: elementData.commitKey,
+ selStart: event.target.selectionStart,
+ selEnd: event.target.selectionEnd
+ }
+ });
+ }
+ _blurListener(event);
+ });
+ if (this.data.actions?.Keystroke) {
+ element.addEventListener("beforeinput", event => {
+ elementData.lastCommittedValue = null;
+ const {
+ data,
+ target
+ } = event;
+ const {
+ value,
+ selectionStart,
+ selectionEnd
+ } = target;
+ let selStart = selectionStart,
+ selEnd = selectionEnd;
+ switch (event.inputType) {
+ case "deleteWordBackward":
+ {
+ const match = value.substring(0, selectionStart).match(/\w*[^\w]*$/);
+ if (match) {
+ selStart -= match[0].length;
+ }
+ break;
+ }
+ case "deleteWordForward":
+ {
+ const match = value.substring(selectionStart).match(/^[^\w]*\w*/);
+ if (match) {
+ selEnd += match[0].length;
+ }
+ break;
+ }
+ case "deleteContentBackward":
+ if (selectionStart === selectionEnd) {
+ selStart -= 1;
+ }
+ break;
+ case "deleteContentForward":
+ if (selectionStart === selectionEnd) {
+ selEnd += 1;
+ }
+ break;
+ }
+ event.preventDefault();
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id,
+ name: "Keystroke",
+ value,
+ change: data || "",
+ willCommit: false,
+ selStart,
+ selEnd
+ }
+ });
+ });
+ }
+ this._setEventListeners(element, elementData, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.value);
+ }
+ if (blurListener) {
+ element.addEventListener("blur", blurListener);
+ }
+ if (this.data.comb) {
+ const fieldWidth = this.data.rect[2] - this.data.rect[0];
+ const combWidth = fieldWidth / maxLen;
+ element.classList.add("comb");
+ element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;
+ }
+ } else {
+ element = document.createElement("div");
+ element.textContent = this.data.fieldValue;
+ element.style.verticalAlign = "middle";
+ element.style.display = "table-cell";
+ if (this.data.hasOwnCanvas) {
+ element.hidden = true;
+ }
+ }
+ this._setTextStyle(element);
+ this._setBackgroundColor(element);
+ this._setDefaultPropertiesFromJS(element);
+ this.container.append(element);
+ return this.container;
+ }
+}
+class SignatureWidgetAnnotationElement extends WidgetAnnotationElement {
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: !!parameters.data.hasOwnCanvas
+ });
+ }
+}
+class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: parameters.renderForms
+ });
+ }
+ render() {
+ const storage = this.annotationStorage;
+ const data = this.data;
+ const id = data.id;
+ let value = storage.getValue(id, {
+ value: data.exportValue === data.fieldValue
+ }).value;
+ if (typeof value === "string") {
+ value = value !== "Off";
+ storage.setValue(id, {
+ value
+ });
+ }
+ this.container.classList.add("buttonWidgetAnnotation", "checkBox");
+ const element = document.createElement("input");
+ GetElementsByNameSet.add(element);
+ element.setAttribute("data-element-id", id);
+ element.disabled = data.readOnly;
+ this._setRequired(element, this.data.required);
+ element.type = "checkbox";
+ element.name = data.fieldName;
+ if (value) {
+ element.setAttribute("checked", true);
+ }
+ element.setAttribute("exportValue", data.exportValue);
+ element.tabIndex = DEFAULT_TAB_INDEX;
+ element.addEventListener("change", event => {
+ const {
+ name,
+ checked
+ } = event.target;
+ for (const checkbox of this._getElementsByName(name, id)) {
+ const curChecked = checked && checkbox.exportValue === data.exportValue;
+ if (checkbox.domElement) {
+ checkbox.domElement.checked = curChecked;
+ }
+ storage.setValue(checkbox.id, {
+ value: curChecked
+ });
+ }
+ storage.setValue(id, {
+ value: checked
+ });
+ });
+ element.addEventListener("resetform", event => {
+ const defaultValue = data.defaultFieldValue || "Off";
+ event.target.checked = defaultValue === data.exportValue;
+ });
+ if (this.enableScripting && this.hasJSActions) {
+ element.addEventListener("updatefromsandbox", jsEvent => {
+ const actions = {
+ value(event) {
+ event.target.checked = event.detail.value !== "Off";
+ storage.setValue(id, {
+ value: event.target.checked
+ });
+ }
+ };
+ this._dispatchEventFromSandbox(actions, jsEvent);
+ });
+ 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);
+ }
+ this._setBackgroundColor(element);
+ this._setDefaultPropertiesFromJS(element);
+ this.container.append(element);
+ return this.container;
+ }
+}
+class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: parameters.renderForms
+ });
+ }
+ render() {
+ this.container.classList.add("buttonWidgetAnnotation", "radioButton");
+ const storage = this.annotationStorage;
+ const data = this.data;
+ const id = data.id;
+ let value = storage.getValue(id, {
+ value: data.fieldValue === data.buttonValue
+ }).value;
+ if (typeof value === "string") {
+ value = value !== data.buttonValue;
+ storage.setValue(id, {
+ value
+ });
+ }
+ if (value) {
+ for (const radio of this._getElementsByName(data.fieldName, id)) {
+ storage.setValue(radio.id, {
+ value: false
+ });
+ }
+ }
+ const element = document.createElement("input");
+ GetElementsByNameSet.add(element);
+ element.setAttribute("data-element-id", id);
+ element.disabled = data.readOnly;
+ this._setRequired(element, this.data.required);
+ element.type = "radio";
+ element.name = data.fieldName;
+ if (value) {
+ element.setAttribute("checked", true);
+ }
+ element.tabIndex = DEFAULT_TAB_INDEX;
+ element.addEventListener("change", event => {
+ const {
+ name,
+ checked
+ } = event.target;
+ for (const radio of this._getElementsByName(name, id)) {
+ storage.setValue(radio.id, {
+ value: false
+ });
+ }
+ storage.setValue(id, {
+ value: checked
+ });
+ });
+ element.addEventListener("resetform", event => {
+ const defaultValue = data.defaultFieldValue;
+ event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;
+ });
+ if (this.enableScripting && this.hasJSActions) {
+ const pdfButtonValue = data.buttonValue;
+ element.addEventListener("updatefromsandbox", jsEvent => {
+ const actions = {
+ value: event => {
+ const checked = pdfButtonValue === event.detail.value;
+ for (const radio of this._getElementsByName(event.target.name)) {
+ const curChecked = checked && radio.id === id;
+ if (radio.domElement) {
+ radio.domElement.checked = curChecked;
+ }
+ storage.setValue(radio.id, {
+ value: curChecked
+ });
+ }
+ }
+ };
+ this._dispatchEventFromSandbox(actions, jsEvent);
+ });
+ 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);
+ }
+ this._setBackgroundColor(element);
+ this._setDefaultPropertiesFromJS(element);
+ this.container.append(element);
+ return this.container;
+ }
+}
+class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {
+ constructor(parameters) {
+ super(parameters, {
+ ignoreBorder: parameters.data.hasAppearance
+ });
+ }
+ render() {
+ const container = super.render();
+ container.classList.add("buttonWidgetAnnotation", "pushButton");
+ if (this.data.alternativeText) {
+ container.title = this.data.alternativeText;
+ }
+ const linkElement = container.lastChild;
+ if (this.enableScripting && this.hasJSActions && linkElement) {
+ this._setDefaultPropertiesFromJS(linkElement);
+ linkElement.addEventListener("updatefromsandbox", jsEvent => {
+ this._dispatchEventFromSandbox({}, jsEvent);
+ });
+ }
+ return container;
+ }
+}
+class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: parameters.renderForms
+ });
+ }
+ render() {
+ this.container.classList.add("choiceWidgetAnnotation");
+ const storage = this.annotationStorage;
+ const id = this.data.id;
+ const storedData = storage.getValue(id, {
+ value: this.data.fieldValue
+ });
+ const selectElement = document.createElement("select");
+ GetElementsByNameSet.add(selectElement);
+ selectElement.setAttribute("data-element-id", id);
+ selectElement.disabled = this.data.readOnly;
+ this._setRequired(selectElement, this.data.required);
+ selectElement.name = this.data.fieldName;
+ selectElement.tabIndex = DEFAULT_TAB_INDEX;
+ let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;
+ if (!this.data.combo) {
+ selectElement.size = this.data.options.length;
+ if (this.data.multiSelect) {
+ selectElement.multiple = true;
+ }
+ }
+ selectElement.addEventListener("resetform", event => {
+ const defaultValue = this.data.defaultFieldValue;
+ for (const option of selectElement.options) {
+ option.selected = option.value === defaultValue;
+ }
+ });
+ for (const option of this.data.options) {
+ const optionElement = document.createElement("option");
+ optionElement.textContent = option.displayValue;
+ optionElement.value = option.exportValue;
+ if (storedData.value.includes(option.exportValue)) {
+ optionElement.setAttribute("selected", true);
+ addAnEmptyEntry = false;
+ }
+ selectElement.append(optionElement);
+ }
+ let removeEmptyEntry = null;
+ if (addAnEmptyEntry) {
+ const noneOptionElement = document.createElement("option");
+ noneOptionElement.value = " ";
+ noneOptionElement.setAttribute("hidden", true);
+ noneOptionElement.setAttribute("selected", true);
+ selectElement.prepend(noneOptionElement);
+ removeEmptyEntry = () => {
+ noneOptionElement.remove();
+ selectElement.removeEventListener("input", removeEmptyEntry);
+ removeEmptyEntry = null;
+ };
+ selectElement.addEventListener("input", removeEmptyEntry);
+ }
+ const getValue = isExport => {
+ const name = isExport ? "value" : "textContent";
+ const {
+ options,
+ multiple
+ } = selectElement;
+ if (!multiple) {
+ return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];
+ }
+ return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);
+ };
+ let selectedValues = getValue(false);
+ const getItems = event => {
+ const options = event.target.options;
+ return Array.prototype.map.call(options, option => {
+ return {
+ displayValue: option.textContent,
+ exportValue: option.value
+ };
+ });
+ };
+ if (this.enableScripting && this.hasJSActions) {
+ selectElement.addEventListener("updatefromsandbox", jsEvent => {
+ const actions = {
+ value(event) {
+ removeEmptyEntry?.();
+ const value = event.detail.value;
+ const values = new Set(Array.isArray(value) ? value : [value]);
+ for (const option of selectElement.options) {
+ option.selected = values.has(option.value);
+ }
+ storage.setValue(id, {
+ value: getValue(true)
+ });
+ selectedValues = getValue(false);
+ },
+ multipleSelection(event) {
+ selectElement.multiple = true;
+ },
+ remove(event) {
+ const options = selectElement.options;
+ const index = event.detail.remove;
+ options[index].selected = false;
+ selectElement.remove(index);
+ if (options.length > 0) {
+ const i = Array.prototype.findIndex.call(options, option => option.selected);
+ if (i === -1) {
+ options[0].selected = true;
+ }
+ }
+ storage.setValue(id, {
+ value: getValue(true),
+ items: getItems(event)
+ });
+ selectedValues = getValue(false);
+ },
+ clear(event) {
+ while (selectElement.length !== 0) {
+ selectElement.remove(0);
+ }
+ storage.setValue(id, {
+ value: null,
+ items: []
+ });
+ selectedValues = getValue(false);
+ },
+ insert(event) {
+ const {
+ index,
+ displayValue,
+ exportValue
+ } = event.detail.insert;
+ const selectChild = selectElement.children[index];
+ const optionElement = document.createElement("option");
+ optionElement.textContent = displayValue;
+ optionElement.value = exportValue;
+ if (selectChild) {
+ selectChild.before(optionElement);
+ } else {
+ selectElement.append(optionElement);
+ }
+ storage.setValue(id, {
+ value: getValue(true),
+ items: getItems(event)
+ });
+ selectedValues = getValue(false);
+ },
+ items(event) {
+ const {
+ items
+ } = event.detail;
+ while (selectElement.length !== 0) {
+ selectElement.remove(0);
+ }
+ for (const item of items) {
+ const {
+ displayValue,
+ exportValue
+ } = item;
+ const optionElement = document.createElement("option");
+ optionElement.textContent = displayValue;
+ optionElement.value = exportValue;
+ selectElement.append(optionElement);
+ }
+ if (selectElement.options.length > 0) {
+ selectElement.options[0].selected = true;
+ }
+ storage.setValue(id, {
+ value: getValue(true),
+ items: getItems(event)
+ });
+ selectedValues = getValue(false);
+ },
+ indices(event) {
+ const indices = new Set(event.detail.indices);
+ for (const option of event.target.options) {
+ option.selected = indices.has(option.index);
+ }
+ storage.setValue(id, {
+ value: getValue(true)
+ });
+ selectedValues = getValue(false);
+ },
+ editable(event) {
+ event.target.disabled = !event.detail.editable;
+ }
+ };
+ this._dispatchEventFromSandbox(actions, jsEvent);
+ });
+ selectElement.addEventListener("input", event => {
+ const exportValue = getValue(true);
+ storage.setValue(id, {
+ value: exportValue
+ });
+ event.preventDefault();
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id,
+ name: "Keystroke",
+ value: selectedValues,
+ changeEx: exportValue,
+ willCommit: false,
+ commitKey: 1,
+ keyDown: false
+ }
+ });
+ });
+ 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);
+ } else {
+ selectElement.addEventListener("input", function (event) {
+ storage.setValue(id, {
+ value: getValue(true)
+ });
+ });
+ }
+ if (this.data.combo) {
+ this._setTextStyle(selectElement);
+ } else {}
+ this._setBackgroundColor(selectElement);
+ this._setDefaultPropertiesFromJS(selectElement);
+ this.container.append(selectElement);
+ return this.container;
+ }
+}
+class PopupAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ const {
+ data,
+ elements
+ } = parameters;
+ super(parameters, {
+ isRenderable: AnnotationElement._hasPopupData(data)
+ });
+ this.elements = elements;
+ }
+ render() {
+ this.container.classList.add("popupAnnotation");
+ const popup = new PopupElement({
+ container: this.container,
+ color: this.data.color,
+ titleObj: this.data.titleObj,
+ modificationDate: this.data.modificationDate,
+ contentsObj: this.data.contentsObj,
+ richText: this.data.richText,
+ rect: this.data.rect,
+ parentRect: this.data.parentRect || null,
+ parent: this.parent,
+ elements: this.elements,
+ open: this.data.open
+ });
+ const elementIds = [];
+ for (const element of this.elements) {
+ element.popup = popup;
+ elementIds.push(element.data.id);
+ element.addHighlightArea();
+ }
+ this.container.setAttribute("aria-controls", elementIds.map(id => `${util.AnnotationPrefix}${id}`).join(","));
+ return this.container;
+ }
+}
+class PopupElement {
+ #boundKeyDown = this.#keyDown.bind(this);
+ #boundHide = this.#hide.bind(this);
+ #boundShow = this.#show.bind(this);
+ #boundToggle = this.#toggle.bind(this);
+ #color = null;
+ #container = null;
+ #contentsObj = null;
+ #dateObj = null;
+ #elements = null;
+ #parent = null;
+ #parentRect = null;
+ #pinned = false;
+ #popup = null;
+ #rect = null;
+ #richText = null;
+ #titleObj = null;
+ #wasVisible = false;
+ constructor({
+ container,
+ color,
+ elements,
+ titleObj,
+ modificationDate,
+ contentsObj,
+ richText,
+ parent,
+ rect,
+ parentRect,
+ open
+ }) {
+ this.#container = container;
+ this.#titleObj = titleObj;
+ this.#contentsObj = contentsObj;
+ this.#richText = richText;
+ this.#parent = parent;
+ this.#color = color;
+ this.#rect = rect;
+ this.#parentRect = parentRect;
+ this.#elements = elements;
+ this.#dateObj = display_utils.PDFDateString.toDateObject(modificationDate);
+ this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());
+ for (const element of this.trigger) {
+ element.addEventListener("click", this.#boundToggle);
+ element.addEventListener("mouseenter", this.#boundShow);
+ element.addEventListener("mouseleave", this.#boundHide);
+ element.classList.add("popupTriggerArea");
+ }
+ for (const element of elements) {
+ element.container?.addEventListener("keydown", this.#boundKeyDown);
+ }
+ this.#container.hidden = true;
+ if (open) {
+ this.#toggle();
+ }
+ }
+ render() {
+ if (this.#popup) {
+ return;
+ }
+ const {
+ page: {
+ view
+ },
+ viewport: {
+ rawDims: {
+ pageWidth,
+ pageHeight,
+ pageX,
+ pageY
+ }
+ }
+ } = this.#parent;
+ const popup = this.#popup = document.createElement("div");
+ popup.className = "popup";
+ if (this.#color) {
+ const baseColor = popup.style.outlineColor = util.Util.makeHexColor(...this.#color);
+ if (CSS.supports("background-color", "color-mix(in srgb, red 30%, white)")) {
+ popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;
+ } else {
+ const BACKGROUND_ENLIGHT = 0.7;
+ popup.style.backgroundColor = util.Util.makeHexColor(...this.#color.map(c => Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)));
+ }
+ }
+ const header = document.createElement("span");
+ header.className = "header";
+ const title = document.createElement("h1");
+ header.append(title);
+ ({
+ dir: title.dir,
+ str: title.textContent
+ } = this.#titleObj);
+ popup.append(header);
+ if (this.#dateObj) {
+ const modificationDate = document.createElement("span");
+ modificationDate.classList.add("popupDate");
+ modificationDate.setAttribute("data-l10n-id", "pdfjs-annotation-date-string");
+ modificationDate.setAttribute("data-l10n-args", JSON.stringify({
+ date: this.#dateObj.toLocaleDateString(),
+ time: this.#dateObj.toLocaleTimeString()
+ }));
+ header.append(modificationDate);
+ }
+ const contentsObj = this.#contentsObj;
+ const richText = this.#richText;
+ if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {
+ xfa_layer.XfaLayer.render({
+ xfaHtml: richText.html,
+ intent: "richText",
+ div: popup
+ });
+ popup.lastChild.classList.add("richText", "popupContent");
+ } else {
+ const contents = this._formatContents(contentsObj);
+ popup.append(contents);
+ }
+ let useParentRect = !!this.#parentRect;
+ let rect = useParentRect ? this.#parentRect : this.#rect;
+ for (const element of this.#elements) {
+ if (!rect || util.Util.intersect(element.data.rect, rect) !== null) {
+ rect = element.data.rect;
+ useParentRect = true;
+ break;
+ }
+ }
+ const normalizedRect = util.Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);
+ const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;
+ const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;
+ const popupLeft = normalizedRect[0] + parentWidth;
+ const popupTop = normalizedRect[1];
+ const {
+ style
+ } = this.#container;
+ style.left = `${100 * (popupLeft - pageX) / pageWidth}%`;
+ style.top = `${100 * (popupTop - pageY) / pageHeight}%`;
+ this.#container.append(popup);
+ }
+ _formatContents({
+ str,
+ dir
+ }) {
+ const p = document.createElement("p");
+ p.classList.add("popupContent");
+ p.dir = dir;
+ const lines = str.split(/(?:\r\n?|\n)/);
+ for (let i = 0, ii = lines.length; i < ii; ++i) {
+ const line = lines[i];
+ p.append(document.createTextNode(line));
+ if (i < ii - 1) {
+ p.append(document.createElement("br"));
+ }
+ }
+ return p;
+ }
+ #keyDown(event) {
+ if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {
+ return;
+ }
+ if (event.key === "Enter" || event.key === "Escape" && this.#pinned) {
+ this.#toggle();
+ }
+ }
+ #toggle() {
+ this.#pinned = !this.#pinned;
+ if (this.#pinned) {
+ this.#show();
+ this.#container.addEventListener("click", this.#boundToggle);
+ this.#container.addEventListener("keydown", this.#boundKeyDown);
+ } else {
+ this.#hide();
+ this.#container.removeEventListener("click", this.#boundToggle);
+ this.#container.removeEventListener("keydown", this.#boundKeyDown);
+ }
+ }
+ #show() {
+ if (!this.#popup) {
+ this.render();
+ }
+ if (!this.isVisible) {
+ this.#container.hidden = false;
+ this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;
+ } else if (this.#pinned) {
+ this.#container.classList.add("focused");
+ }
+ }
+ #hide() {
+ this.#container.classList.remove("focused");
+ if (this.#pinned || !this.isVisible) {
+ return;
+ }
+ this.#container.hidden = true;
+ this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000;
+ }
+ forceHide() {
+ this.#wasVisible = this.isVisible;
+ if (!this.#wasVisible) {
+ return;
+ }
+ this.#container.hidden = true;
+ }
+ maybeShow() {
+ if (!this.#wasVisible) {
+ return;
+ }
+ this.#wasVisible = false;
+ this.#container.hidden = false;
+ }
+ get isVisible() {
+ return this.#container.hidden === false;
+ }
+}
+class FreeTextAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: true,
+ ignoreBorder: true
+ });
+ this.textContent = parameters.data.textContent;
+ this.textPosition = parameters.data.textPosition;
+ this.annotationEditorType = util.AnnotationEditorType.FREETEXT;
+ }
+ render() {
+ this.container.classList.add("freeTextAnnotation");
+ if (this.textContent) {
+ const content = document.createElement("div");
+ content.classList.add("annotationTextContent");
+ content.setAttribute("role", "comment");
+ for (const line of this.textContent) {
+ const lineSpan = document.createElement("span");
+ lineSpan.textContent = line;
+ content.append(lineSpan);
+ }
+ this.container.append(content);
+ }
+ if (!this.data.popupRef && this.hasPopupData) {
+ this._createPopup();
+ }
+ this._editOnDoubleClick();
+ return this.container;
+ }
+ get _isEditable() {
+ return this.data.hasOwnCanvas;
+ }
+}
+class LineAnnotationElement extends AnnotationElement {
+ #line = null;
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: true,
+ ignoreBorder: true
+ });
+ }
+ render() {
+ this.container.classList.add("lineAnnotation");
+ const data = this.data;
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
+ const svg = this.svgFactory.create(width, height, true);
+ const line = this.#line = this.svgFactory.createElement("svg:line");
+ line.setAttribute("x1", data.rect[2] - data.lineCoordinates[0]);
+ line.setAttribute("y1", data.rect[3] - data.lineCoordinates[1]);
+ line.setAttribute("x2", data.rect[2] - data.lineCoordinates[2]);
+ line.setAttribute("y2", data.rect[3] - data.lineCoordinates[3]);
+ line.setAttribute("stroke-width", data.borderStyle.width || 1);
+ line.setAttribute("stroke", "transparent");
+ line.setAttribute("fill", "transparent");
+ svg.append(line);
+ this.container.append(svg);
+ if (!data.popupRef && this.hasPopupData) {
+ this._createPopup();
+ }
+ return this.container;
+ }
+ getElementsToTriggerPopup() {
+ return this.#line;
+ }
+ addHighlightArea() {
+ this.container.classList.add("highlightArea");
+ }
+}
+class SquareAnnotationElement extends AnnotationElement {
+ #square = null;
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: true,
+ ignoreBorder: true
+ });
+ }
+ render() {
+ this.container.classList.add("squareAnnotation");
+ const data = this.data;
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
+ const svg = this.svgFactory.create(width, height, true);
+ const borderWidth = data.borderStyle.width;
+ const square = this.#square = this.svgFactory.createElement("svg:rect");
+ square.setAttribute("x", borderWidth / 2);
+ square.setAttribute("y", borderWidth / 2);
+ square.setAttribute("width", width - borderWidth);
+ square.setAttribute("height", height - borderWidth);
+ square.setAttribute("stroke-width", borderWidth || 1);
+ square.setAttribute("stroke", "transparent");
+ square.setAttribute("fill", "transparent");
+ svg.append(square);
+ this.container.append(svg);
+ if (!data.popupRef && this.hasPopupData) {
+ this._createPopup();
+ }
+ return this.container;
+ }
+ getElementsToTriggerPopup() {
+ return this.#square;
+ }
+ addHighlightArea() {
+ this.container.classList.add("highlightArea");
+ }
+}
+class CircleAnnotationElement extends AnnotationElement {
+ #circle = null;
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: true,
+ ignoreBorder: true
+ });
+ }
+ render() {
+ this.container.classList.add("circleAnnotation");
+ const data = this.data;
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
+ const svg = this.svgFactory.create(width, height, true);
+ const borderWidth = data.borderStyle.width;
+ const circle = this.#circle = this.svgFactory.createElement("svg:ellipse");
+ circle.setAttribute("cx", width / 2);
+ circle.setAttribute("cy", height / 2);
+ circle.setAttribute("rx", width / 2 - borderWidth / 2);
+ circle.setAttribute("ry", height / 2 - borderWidth / 2);
+ circle.setAttribute("stroke-width", borderWidth || 1);
+ circle.setAttribute("stroke", "transparent");
+ circle.setAttribute("fill", "transparent");
+ svg.append(circle);
+ this.container.append(svg);
+ if (!data.popupRef && this.hasPopupData) {
+ this._createPopup();
+ }
+ return this.container;
+ }
+ getElementsToTriggerPopup() {
+ return this.#circle;
+ }
+ addHighlightArea() {
+ this.container.classList.add("highlightArea");
+ }
+}
+class PolylineAnnotationElement extends AnnotationElement {
+ #polyline = null;
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: true,
+ ignoreBorder: true
+ });
+ this.containerClassName = "polylineAnnotation";
+ this.svgElementName = "svg:polyline";
+ }
+ render() {
+ this.container.classList.add(this.containerClassName);
+ const data = this.data;
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
+ const svg = this.svgFactory.create(width, height, true);
+ let points = [];
+ for (const coordinate of data.vertices) {
+ const x = coordinate.x - data.rect[0];
+ const y = data.rect[3] - coordinate.y;
+ points.push(x + "," + y);
+ }
+ points = points.join(" ");
+ const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);
+ polyline.setAttribute("points", points);
+ polyline.setAttribute("stroke-width", data.borderStyle.width || 1);
+ polyline.setAttribute("stroke", "transparent");
+ polyline.setAttribute("fill", "transparent");
+ svg.append(polyline);
+ this.container.append(svg);
+ if (!data.popupRef && this.hasPopupData) {
+ this._createPopup();
+ }
+ return this.container;
+ }
+ getElementsToTriggerPopup() {
+ return this.#polyline;
+ }
+ addHighlightArea() {
+ this.container.classList.add("highlightArea");
+ }
+}
+class PolygonAnnotationElement extends PolylineAnnotationElement {
+ constructor(parameters) {
+ super(parameters);
+ this.containerClassName = "polygonAnnotation";
+ this.svgElementName = "svg:polygon";
+ }
+}
+class CaretAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: true,
+ ignoreBorder: true
+ });
+ }
+ render() {
+ this.container.classList.add("caretAnnotation");
+ if (!this.data.popupRef && this.hasPopupData) {
+ this._createPopup();
+ }
+ return this.container;
+ }
+}
+class InkAnnotationElement extends AnnotationElement {
+ #polylines = [];
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: true,
+ ignoreBorder: true
+ });
+ this.containerClassName = "inkAnnotation";
+ this.svgElementName = "svg:polyline";
+ this.annotationEditorType = util.AnnotationEditorType.INK;
+ }
+ render() {
+ this.container.classList.add(this.containerClassName);
+ const data = this.data;
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
+ const svg = this.svgFactory.create(width, height, true);
+ for (const inkList of data.inkLists) {
+ let points = [];
+ for (const coordinate of inkList) {
+ const x = coordinate.x - data.rect[0];
+ const y = data.rect[3] - coordinate.y;
+ points.push(`${x},${y}`);
+ }
+ points = points.join(" ");
+ const polyline = this.svgFactory.createElement(this.svgElementName);
+ this.#polylines.push(polyline);
+ polyline.setAttribute("points", points);
+ polyline.setAttribute("stroke-width", data.borderStyle.width || 1);
+ polyline.setAttribute("stroke", "transparent");
+ polyline.setAttribute("fill", "transparent");
+ if (!data.popupRef && this.hasPopupData) {
+ this._createPopup();
+ }
+ svg.append(polyline);
+ }
+ this.container.append(svg);
+ return this.container;
+ }
+ getElementsToTriggerPopup() {
+ return this.#polylines;
+ }
+ addHighlightArea() {
+ this.container.classList.add("highlightArea");
+ }
+}
+class HighlightAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: true,
+ ignoreBorder: true,
+ createQuadrilaterals: true
+ });
+ }
+ render() {
+ if (!this.data.popupRef && this.hasPopupData) {
+ this._createPopup();
+ }
+ this.container.classList.add("highlightAnnotation");
+ return this.container;
+ }
+}
+class UnderlineAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: true,
+ ignoreBorder: true,
+ createQuadrilaterals: true
+ });
+ }
+ render() {
+ if (!this.data.popupRef && this.hasPopupData) {
+ this._createPopup();
+ }
+ this.container.classList.add("underlineAnnotation");
+ return this.container;
+ }
+}
+class SquigglyAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: true,
+ ignoreBorder: true,
+ createQuadrilaterals: true
+ });
+ }
+ render() {
+ if (!this.data.popupRef && this.hasPopupData) {
+ this._createPopup();
+ }
+ this.container.classList.add("squigglyAnnotation");
+ return this.container;
+ }
+}
+class StrikeOutAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: true,
+ ignoreBorder: true,
+ createQuadrilaterals: true
+ });
+ }
+ render() {
+ if (!this.data.popupRef && this.hasPopupData) {
+ this._createPopup();
+ }
+ this.container.classList.add("strikeoutAnnotation");
+ return this.container;
+ }
+}
+class StampAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: true,
+ ignoreBorder: true
+ });
+ }
+ render() {
+ this.container.classList.add("stampAnnotation");
+ if (!this.data.popupRef && this.hasPopupData) {
+ this._createPopup();
+ }
+ return this.container;
+ }
+}
+class FileAttachmentAnnotationElement extends AnnotationElement {
+ #trigger = null;
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: true
+ });
+ const {
+ filename,
+ content
+ } = this.data.file;
+ this.filename = (0,display_utils.getFilenameFromUrl)(filename, true);
+ this.content = content;
+ this.linkService.eventBus?.dispatch("fileattachmentannotation", {
+ source: this,
+ filename,
+ content
+ });
+ }
+ render() {
+ this.container.classList.add("fileAttachmentAnnotation");
+ const {
+ container,
+ data
+ } = this;
+ let trigger;
+ if (data.hasAppearance || data.fillAlpha === 0) {
+ trigger = document.createElement("div");
+ } else {
+ trigger = document.createElement("img");
+ trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? "paperclip" : "pushpin"}.svg`;
+ if (data.fillAlpha && data.fillAlpha < 1) {
+ trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;
+ }
+ }
+ trigger.addEventListener("dblclick", this.#download.bind(this));
+ this.#trigger = trigger;
+ const {
+ isMac
+ } = util.FeatureTest.platform;
+ container.addEventListener("keydown", evt => {
+ if (evt.key === "Enter" && (isMac ? evt.metaKey : evt.ctrlKey)) {
+ this.#download();
+ }
+ });
+ if (!data.popupRef && this.hasPopupData) {
+ this._createPopup();
+ } else {
+ trigger.classList.add("popupTriggerArea");
+ }
+ container.append(trigger);
+ return container;
+ }
+ getElementsToTriggerPopup() {
+ return this.#trigger;
+ }
+ addHighlightArea() {
+ this.container.classList.add("highlightArea");
+ }
+ #download() {
+ this.downloadManager?.openOrDownloadData(this.content, this.filename);
+ }
+}
+class AnnotationLayer {
+ #accessibilityManager = null;
+ #annotationCanvasMap = null;
+ #editableAnnotations = new Map();
+ constructor({
+ div,
+ accessibilityManager,
+ annotationCanvasMap,
+ page,
+ viewport
+ }) {
+ this.div = div;
+ this.#accessibilityManager = accessibilityManager;
+ this.#annotationCanvasMap = annotationCanvasMap;
+ this.page = page;
+ this.viewport = viewport;
+ this.zIndex = 0;
+ }
+ #appendElement(element, id) {
+ const contentElement = element.firstChild || element;
+ contentElement.id = `${util.AnnotationPrefix}${id}`;
+ this.div.append(element);
+ this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);
+ }
+ async render(params) {
+ const {
+ annotations
+ } = params;
+ const layer = this.div;
+ (0,display_utils.setLayerDimensions)(layer, this.viewport);
+ const popupToElements = new Map();
+ const elementParams = {
+ data: null,
+ layer,
+ linkService: params.linkService,
+ downloadManager: params.downloadManager,
+ imageResourcesPath: params.imageResourcesPath || "",
+ renderForms: params.renderForms !== false,
+ svgFactory: new display_utils.DOMSVGFactory(),
+ annotationStorage: params.annotationStorage || new annotation_storage.AnnotationStorage(),
+ enableScripting: params.enableScripting === true,
+ hasJSActions: params.hasJSActions,
+ fieldObjects: params.fieldObjects,
+ parent: this,
+ elements: null
+ };
+ for (const data of annotations) {
+ if (data.noHTML) {
+ continue;
+ }
+ const isPopupAnnotation = data.annotationType === util.AnnotationType.POPUP;
+ if (!isPopupAnnotation) {
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
+ if (width <= 0 || height <= 0) {
+ continue;
+ }
+ } else {
+ const elements = popupToElements.get(data.id);
+ if (!elements) {
+ continue;
+ }
+ elementParams.elements = elements;
+ }
+ elementParams.data = data;
+ const element = AnnotationElementFactory.create(elementParams);
+ if (!element.isRenderable) {
+ continue;
+ }
+ if (!isPopupAnnotation && data.popupRef) {
+ const elements = popupToElements.get(data.popupRef);
+ if (!elements) {
+ popupToElements.set(data.popupRef, [element]);
+ } else {
+ elements.push(element);
+ }
+ }
+ if (element.annotationEditorType > 0) {
+ this.#editableAnnotations.set(element.data.id, element);
+ }
+ const rendered = element.render();
+ if (data.hidden) {
+ rendered.style.visibility = "hidden";
+ }
+ this.#appendElement(rendered, data.id);
+ }
+ this.#setAnnotationCanvasMap();
+ }
+ update({
+ viewport
+ }) {
+ const layer = this.div;
+ this.viewport = viewport;
+ (0,display_utils.setLayerDimensions)(layer, {
+ rotation: viewport.rotation
+ });
+ this.#setAnnotationCanvasMap();
+ layer.hidden = false;
+ }
+ #setAnnotationCanvasMap() {
+ if (!this.#annotationCanvasMap) {
+ return;
+ }
+ const layer = this.div;
+ for (const [id, canvas] of this.#annotationCanvasMap) {
+ const element = layer.querySelector(`[data-annotation-id="${id}"]`);
+ if (!element) {
+ continue;
+ }
+ const {
+ firstChild
+ } = element;
+ if (!firstChild) {
+ element.append(canvas);
+ } else if (firstChild.nodeName === "CANVAS") {
+ firstChild.replaceWith(canvas);
+ } else {
+ firstChild.before(canvas);
+ }
+ }
+ this.#annotationCanvasMap.clear();
+ }
+ getEditableAnnotations() {
+ return Array.from(this.#editableAnnotations.values());
+ }
+ getEditableAnnotation(id) {
+ return this.#editableAnnotations.get(id);
+ }
+}
+
+
+/***/ }),
+
+/***/ 780:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ AnnotationStorage: () => (/* binding */ AnnotationStorage),
+/* harmony export */ PrintAnnotationStorage: () => (/* binding */ PrintAnnotationStorage),
+/* harmony export */ SerializableEmpty: () => (/* binding */ SerializableEmpty)
+/* harmony export */ });
+/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266);
+/* harmony import */ var _editor_editor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(115);
+/* harmony import */ var _shared_murmurhash3_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(825);
+
+
+
+const SerializableEmpty = Object.freeze({
+ map: null,
+ hash: "",
+ transfer: undefined
+});
+class AnnotationStorage {
+ #modified = false;
+ #storage = new Map();
+ constructor() {
+ this.onSetModified = null;
+ this.onResetModified = null;
+ this.onAnnotationEditor = null;
+ }
+ getValue(key, defaultValue) {
+ const value = this.#storage.get(key);
+ if (value === undefined) {
+ return defaultValue;
+ }
+ return Object.assign(defaultValue, value);
+ }
+ getRawValue(key) {
+ return this.#storage.get(key);
+ }
+ remove(key) {
+ this.#storage.delete(key);
+ if (this.#storage.size === 0) {
+ this.resetModified();
+ }
+ if (typeof this.onAnnotationEditor === "function") {
+ for (const value of this.#storage.values()) {
+ if (value instanceof _editor_editor_js__WEBPACK_IMPORTED_MODULE_1__.AnnotationEditor) {
+ return;
+ }
+ }
+ this.onAnnotationEditor(null);
+ }
+ }
+ setValue(key, value) {
+ const obj = this.#storage.get(key);
+ let modified = false;
+ if (obj !== undefined) {
+ for (const [entry, val] of Object.entries(value)) {
+ if (obj[entry] !== val) {
+ modified = true;
+ obj[entry] = val;
+ }
+ }
+ } else {
+ modified = true;
+ this.#storage.set(key, value);
+ }
+ if (modified) {
+ this.#setModified();
+ }
+ if (value instanceof _editor_editor_js__WEBPACK_IMPORTED_MODULE_1__.AnnotationEditor && typeof this.onAnnotationEditor === "function") {
+ this.onAnnotationEditor(value.constructor._type);
+ }
+ }
+ has(key) {
+ return this.#storage.has(key);
+ }
+ getAll() {
+ return this.#storage.size > 0 ? (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.objectFromMap)(this.#storage) : null;
+ }
+ setAll(obj) {
+ for (const [key, val] of Object.entries(obj)) {
+ this.setValue(key, val);
+ }
+ }
+ get size() {
+ return this.#storage.size;
+ }
+ #setModified() {
+ if (!this.#modified) {
+ this.#modified = true;
+ if (typeof this.onSetModified === "function") {
+ this.onSetModified();
+ }
+ }
+ }
+ resetModified() {
+ if (this.#modified) {
+ this.#modified = false;
+ if (typeof this.onResetModified === "function") {
+ this.onResetModified();
+ }
+ }
+ }
+ get print() {
+ return new PrintAnnotationStorage(this);
+ }
+ get serializable() {
+ if (this.#storage.size === 0) {
+ return SerializableEmpty;
+ }
+ const map = new Map(),
+ hash = new _shared_murmurhash3_js__WEBPACK_IMPORTED_MODULE_2__.MurmurHash3_64(),
+ transfer = [];
+ const context = Object.create(null);
+ let hasBitmap = false;
+ for (const [key, val] of this.#storage) {
+ const serialized = val instanceof _editor_editor_js__WEBPACK_IMPORTED_MODULE_1__.AnnotationEditor ? val.serialize(false, context) : val;
+ if (serialized) {
+ map.set(key, serialized);
+ hash.update(`${key}:${JSON.stringify(serialized)}`);
+ hasBitmap ||= !!serialized.bitmap;
+ }
+ }
+ if (hasBitmap) {
+ for (const value of map.values()) {
+ if (value.bitmap) {
+ transfer.push(value.bitmap);
+ }
+ }
+ }
+ return map.size > 0 ? {
+ map,
+ hash: hash.hexdigest(),
+ transfer
+ } : SerializableEmpty;
+ }
+}
+class PrintAnnotationStorage extends AnnotationStorage {
+ #serializable;
+ constructor(parent) {
+ super();
+ const {
+ map,
+ hash,
+ transfer
+ } = parent.serializable;
+ const clone = structuredClone(map, transfer ? {
+ transfer
+ } : null);
+ this.#serializable = {
+ map: clone,
+ hash,
+ transfer
+ };
+ }
+ get print() {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Should not call PrintAnnotationStorage.print");
+ }
+ get serializable() {
+ return this.#serializable;
+ }
+}
+
+
+/***/ }),
+
+/***/ 406:
+/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ PDFDataRangeTransport: () => (/* binding */ PDFDataRangeTransport),
+/* harmony export */ PDFWorker: () => (/* binding */ PDFWorker),
+/* harmony export */ build: () => (/* binding */ build),
+/* harmony export */ getDocument: () => (/* binding */ getDocument),
+/* harmony export */ version: () => (/* binding */ version)
+/* harmony export */ });
+/* unused harmony exports DefaultCanvasFactory, DefaultCMapReaderFactory, DefaultFilterFactory, DefaultStandardFontDataFactory, LoopbackPort, PDFDocumentLoadingTask, PDFDocumentProxy, PDFPageProxy, PDFWorkerUtil, RenderTask */
+/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266);
+/* harmony import */ var _annotation_storage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(780);
+/* harmony import */ var _display_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(473);
+/* harmony import */ var _font_loader_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(742);
+/* harmony import */ var display_node_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(738);
+/* harmony import */ var _canvas_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(250);
+/* harmony import */ var _worker_options_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(368);
+/* harmony import */ var _shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(694);
+/* harmony import */ var _metadata_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(472);
+/* harmony import */ var _optional_content_config_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(890);
+/* harmony import */ var _transport_stream_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(92);
+/* harmony import */ var display_fetch_stream__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(171);
+/* harmony import */ var display_network__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(474);
+/* harmony import */ var display_node_stream__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(498);
+/* harmony import */ var _xfa_text_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(521);
+var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([display_node_utils__WEBPACK_IMPORTED_MODULE_4__, display_node_stream__WEBPACK_IMPORTED_MODULE_13__]);
+([display_node_utils__WEBPACK_IMPORTED_MODULE_4__, display_node_stream__WEBPACK_IMPORTED_MODULE_13__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+const DEFAULT_RANGE_CHUNK_SIZE = 65536;
+const RENDERING_CANCELLED_TIMEOUT = 100;
+const DELAYED_CLEANUP_TIMEOUT = 5000;
+const DefaultCanvasFactory = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS ? display_node_utils__WEBPACK_IMPORTED_MODULE_4__.NodeCanvasFactory : _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMCanvasFactory;
+const DefaultCMapReaderFactory = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS ? display_node_utils__WEBPACK_IMPORTED_MODULE_4__.NodeCMapReaderFactory : _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMCMapReaderFactory;
+const DefaultFilterFactory = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS ? display_node_utils__WEBPACK_IMPORTED_MODULE_4__.NodeFilterFactory : _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMFilterFactory;
+const DefaultStandardFontDataFactory = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS ? display_node_utils__WEBPACK_IMPORTED_MODULE_4__.NodeStandardFontDataFactory : _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMStandardFontDataFactory;
+function getDocument(src) {
+ if (typeof src === "string" || src instanceof URL) {
+ src = {
+ url: src
+ };
+ } else if ((0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isArrayBuffer)(src)) {
+ src = {
+ data: src
+ };
+ }
+ if (typeof src !== "object") {
+ throw new Error("Invalid parameter in getDocument, need parameter object.");
+ }
+ if (!src.url && !src.data && !src.range) {
+ throw new Error("Invalid parameter object: need either .data, .range or .url");
+ }
+ const task = new PDFDocumentLoadingTask();
+ const {
+ docId
+ } = task;
+ const url = src.url ? getUrlProp(src.url) : null;
+ const data = src.data ? getDataProp(src.data) : null;
+ const httpHeaders = src.httpHeaders || null;
+ const withCredentials = src.withCredentials === true;
+ const password = src.password ?? null;
+ const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;
+ const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;
+ let worker = src.worker instanceof PDFWorker ? src.worker : null;
+ const verbosity = src.verbosity;
+ const docBaseUrl = typeof src.docBaseUrl === "string" && !(0,_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isDataScheme)(src.docBaseUrl) ? src.docBaseUrl : null;
+ const cMapUrl = typeof src.cMapUrl === "string" ? src.cMapUrl : null;
+ const cMapPacked = src.cMapPacked !== false;
+ const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;
+ const standardFontDataUrl = typeof src.standardFontDataUrl === "string" ? src.standardFontDataUrl : null;
+ const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory;
+ const ignoreErrors = src.stopAtErrors !== true;
+ const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;
+ const isEvalSupported = src.isEvalSupported !== false;
+ const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === "boolean" ? src.isOffscreenCanvasSupported : !_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS;
+ const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;
+ const disableFontFace = typeof src.disableFontFace === "boolean" ? src.disableFontFace : _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS;
+ const fontExtraProperties = src.fontExtraProperties === true;
+ const enableXfa = src.enableXfa === true;
+ const ownerDocument = src.ownerDocument || globalThis.document;
+ const disableRange = src.disableRange === true;
+ const disableStream = src.disableStream === true;
+ const disableAutoFetch = src.disableAutoFetch === true;
+ const pdfBug = src.pdfBug === true;
+ const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;
+ const useSystemFonts = typeof src.useSystemFonts === "boolean" ? src.useSystemFonts : !_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS && !disableFontFace;
+ const useWorkerFetch = typeof src.useWorkerFetch === "boolean" ? src.useWorkerFetch : CMapReaderFactory === _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMCMapReaderFactory && StandardFontDataFactory === _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMStandardFontDataFactory && cMapUrl && standardFontDataUrl && (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isValidFetchUrl)(cMapUrl, document.baseURI) && (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isValidFetchUrl)(standardFontDataUrl, document.baseURI);
+ const canvasFactory = src.canvasFactory || new DefaultCanvasFactory({
+ ownerDocument
+ });
+ const filterFactory = src.filterFactory || new DefaultFilterFactory({
+ docId,
+ ownerDocument
+ });
+ const styleElement = null;
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.setVerbosityLevel)(verbosity);
+ const transportFactory = {
+ canvasFactory,
+ filterFactory
+ };
+ if (!useWorkerFetch) {
+ transportFactory.cMapReaderFactory = new CMapReaderFactory({
+ baseUrl: cMapUrl,
+ isCompressed: cMapPacked
+ });
+ transportFactory.standardFontDataFactory = new StandardFontDataFactory({
+ baseUrl: standardFontDataUrl
+ });
+ }
+ if (!worker) {
+ const workerParams = {
+ verbosity,
+ port: _worker_options_js__WEBPACK_IMPORTED_MODULE_6__.GlobalWorkerOptions.workerPort
+ };
+ worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);
+ task._worker = worker;
+ }
+ const fetchDocParams = {
+ docId,
+ apiVersion: '4.0.379',
+ data,
+ password,
+ disableAutoFetch,
+ rangeChunkSize,
+ length,
+ docBaseUrl,
+ enableXfa,
+ evaluatorOptions: {
+ maxImageSize,
+ disableFontFace,
+ ignoreErrors,
+ isEvalSupported,
+ isOffscreenCanvasSupported,
+ canvasMaxAreaInBytes,
+ fontExtraProperties,
+ useSystemFonts,
+ cMapUrl: useWorkerFetch ? cMapUrl : null,
+ standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null
+ }
+ };
+ const transportParams = {
+ ignoreErrors,
+ isEvalSupported,
+ disableFontFace,
+ fontExtraProperties,
+ enableXfa,
+ ownerDocument,
+ disableAutoFetch,
+ pdfBug,
+ styleElement
+ };
+ worker.promise.then(function () {
+ if (task.destroyed) {
+ throw new Error("Loading aborted");
+ }
+ const workerIdPromise = _fetchDocument(worker, fetchDocParams);
+ const networkStreamPromise = new Promise(function (resolve) {
+ let networkStream;
+ if (rangeTransport) {
+ networkStream = new _transport_stream_js__WEBPACK_IMPORTED_MODULE_10__.PDFDataTransportStream({
+ length,
+ initialData: rangeTransport.initialData,
+ progressiveDone: rangeTransport.progressiveDone,
+ contentDispositionFilename: rangeTransport.contentDispositionFilename,
+ disableRange,
+ disableStream
+ }, rangeTransport);
+ } else if (!data) {
+ const createPDFNetworkStream = params => {
+ if (_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS) {
+ return new display_node_stream__WEBPACK_IMPORTED_MODULE_13__.PDFNodeStream(params);
+ }
+ return (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isValidFetchUrl)(params.url) ? new display_fetch_stream__WEBPACK_IMPORTED_MODULE_11__.PDFFetchStream(params) : new display_network__WEBPACK_IMPORTED_MODULE_12__.PDFNetworkStream(params);
+ };
+ networkStream = createPDFNetworkStream({
+ url,
+ length,
+ httpHeaders,
+ withCredentials,
+ rangeChunkSize,
+ disableRange,
+ disableStream
+ });
+ }
+ resolve(networkStream);
+ });
+ return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) {
+ if (task.destroyed) {
+ throw new Error("Loading aborted");
+ }
+ const messageHandler = new _shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__.MessageHandler(docId, workerId, worker.port);
+ const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory);
+ task._transport = transport;
+ messageHandler.send("Ready", null);
+ });
+ }).catch(task._capability.reject);
+ return task;
+}
+async function _fetchDocument(worker, source) {
+ if (worker.destroyed) {
+ throw new Error("Worker was destroyed");
+ }
+ const workerId = await worker.messageHandler.sendWithPromise("GetDocRequest", source, source.data ? [source.data.buffer] : null);
+ if (worker.destroyed) {
+ throw new Error("Worker was destroyed");
+ }
+ return workerId;
+}
+function getUrlProp(val) {
+ if (val instanceof URL) {
+ return val.href;
+ }
+ try {
+ return new URL(val, window.location).href;
+ } catch {
+ if (_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS && typeof val === "string") {
+ return val;
+ }
+ }
+ throw new Error("Invalid PDF url data: " + "either string or URL-object is expected in the url property.");
+}
+function getDataProp(val) {
+ if (_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS && typeof Buffer !== "undefined" && val instanceof Buffer) {
+ throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`.");
+ }
+ if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {
+ return val;
+ }
+ if (typeof val === "string") {
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.stringToBytes)(val);
+ }
+ if (typeof val === "object" && !isNaN(val?.length) || (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isArrayBuffer)(val)) {
+ return new Uint8Array(val);
+ }
+ throw new Error("Invalid PDF binary data: either TypedArray, " + "string, or array-like object is expected in the data property.");
+}
+class PDFDocumentLoadingTask {
+ static #docId = 0;
+ constructor() {
+ this._capability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this._transport = null;
+ this._worker = null;
+ this.docId = `d${PDFDocumentLoadingTask.#docId++}`;
+ this.destroyed = false;
+ this.onPassword = null;
+ this.onProgress = null;
+ }
+ get promise() {
+ return this._capability.promise;
+ }
+ async destroy() {
+ this.destroyed = true;
+ try {
+ if (this._worker?.port) {
+ this._worker._pendingDestroy = true;
+ }
+ await this._transport?.destroy();
+ } catch (ex) {
+ if (this._worker?.port) {
+ delete this._worker._pendingDestroy;
+ }
+ throw ex;
+ }
+ this._transport = null;
+ if (this._worker) {
+ this._worker.destroy();
+ this._worker = null;
+ }
+ }
+}
+class PDFDataRangeTransport {
+ constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {
+ this.length = length;
+ this.initialData = initialData;
+ this.progressiveDone = progressiveDone;
+ this.contentDispositionFilename = contentDispositionFilename;
+ this._rangeListeners = [];
+ this._progressListeners = [];
+ this._progressiveReadListeners = [];
+ this._progressiveDoneListeners = [];
+ this._readyCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ }
+ addRangeListener(listener) {
+ this._rangeListeners.push(listener);
+ }
+ addProgressListener(listener) {
+ this._progressListeners.push(listener);
+ }
+ addProgressiveReadListener(listener) {
+ this._progressiveReadListeners.push(listener);
+ }
+ addProgressiveDoneListener(listener) {
+ this._progressiveDoneListeners.push(listener);
+ }
+ onDataRange(begin, chunk) {
+ for (const listener of this._rangeListeners) {
+ listener(begin, chunk);
+ }
+ }
+ onDataProgress(loaded, total) {
+ this._readyCapability.promise.then(() => {
+ for (const listener of this._progressListeners) {
+ listener(loaded, total);
+ }
+ });
+ }
+ onDataProgressiveRead(chunk) {
+ this._readyCapability.promise.then(() => {
+ for (const listener of this._progressiveReadListeners) {
+ listener(chunk);
+ }
+ });
+ }
+ onDataProgressiveDone() {
+ this._readyCapability.promise.then(() => {
+ for (const listener of this._progressiveDoneListeners) {
+ listener();
+ }
+ });
+ }
+ transportReady() {
+ this._readyCapability.resolve();
+ }
+ requestDataRange(begin, end) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange");
+ }
+ abort() {}
+}
+class PDFDocumentProxy {
+ constructor(pdfInfo, transport) {
+ this._pdfInfo = pdfInfo;
+ this._transport = transport;
+ }
+ get annotationStorage() {
+ return this._transport.annotationStorage;
+ }
+ get filterFactory() {
+ return this._transport.filterFactory;
+ }
+ get numPages() {
+ return this._pdfInfo.numPages;
+ }
+ get fingerprints() {
+ return this._pdfInfo.fingerprints;
+ }
+ get isPureXfa() {
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "isPureXfa", !!this._transport._htmlForXfa);
+ }
+ get allXfaHtml() {
+ return this._transport._htmlForXfa;
+ }
+ getPage(pageNumber) {
+ return this._transport.getPage(pageNumber);
+ }
+ getPageIndex(ref) {
+ return this._transport.getPageIndex(ref);
+ }
+ getDestinations() {
+ return this._transport.getDestinations();
+ }
+ getDestination(id) {
+ return this._transport.getDestination(id);
+ }
+ getPageLabels() {
+ return this._transport.getPageLabels();
+ }
+ getPageLayout() {
+ return this._transport.getPageLayout();
+ }
+ getPageMode() {
+ return this._transport.getPageMode();
+ }
+ getViewerPreferences() {
+ return this._transport.getViewerPreferences();
+ }
+ getOpenAction() {
+ return this._transport.getOpenAction();
+ }
+ getAttachments() {
+ return this._transport.getAttachments();
+ }
+ getJSActions() {
+ return this._transport.getDocJSActions();
+ }
+ getOutline() {
+ return this._transport.getOutline();
+ }
+ getOptionalContentConfig() {
+ return this._transport.getOptionalContentConfig();
+ }
+ getPermissions() {
+ return this._transport.getPermissions();
+ }
+ getMetadata() {
+ return this._transport.getMetadata();
+ }
+ getMarkInfo() {
+ return this._transport.getMarkInfo();
+ }
+ getData() {
+ return this._transport.getData();
+ }
+ saveDocument() {
+ return this._transport.saveDocument();
+ }
+ getDownloadInfo() {
+ return this._transport.downloadInfoCapability.promise;
+ }
+ cleanup(keepLoadedFonts = false) {
+ return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);
+ }
+ destroy() {
+ return this.loadingTask.destroy();
+ }
+ get loadingParams() {
+ return this._transport.loadingParams;
+ }
+ get loadingTask() {
+ return this._transport.loadingTask;
+ }
+ getFieldObjects() {
+ return this._transport.getFieldObjects();
+ }
+ hasJSActions() {
+ return this._transport.hasJSActions();
+ }
+ getCalculationOrderIds() {
+ return this._transport.getCalculationOrderIds();
+ }
+}
+class PDFPageProxy {
+ #delayedCleanupTimeout = null;
+ #pendingCleanup = false;
+ constructor(pageIndex, pageInfo, transport, pdfBug = false) {
+ this._pageIndex = pageIndex;
+ this._pageInfo = pageInfo;
+ this._transport = transport;
+ this._stats = pdfBug ? new _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.StatTimer() : null;
+ this._pdfBug = pdfBug;
+ this.commonObjs = transport.commonObjs;
+ this.objs = new PDFObjects();
+ this._maybeCleanupAfterRender = false;
+ this._intentStates = new Map();
+ this.destroyed = false;
+ }
+ get pageNumber() {
+ return this._pageIndex + 1;
+ }
+ get rotate() {
+ return this._pageInfo.rotate;
+ }
+ get ref() {
+ return this._pageInfo.ref;
+ }
+ get userUnit() {
+ return this._pageInfo.userUnit;
+ }
+ get view() {
+ return this._pageInfo.view;
+ }
+ getViewport({
+ scale,
+ rotation = this.rotate,
+ offsetX = 0,
+ offsetY = 0,
+ dontFlip = false
+ } = {}) {
+ return new _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.PageViewport({
+ viewBox: this.view,
+ scale,
+ rotation,
+ offsetX,
+ offsetY,
+ dontFlip
+ });
+ }
+ getAnnotations({
+ intent = "display"
+ } = {}) {
+ const intentArgs = this._transport.getRenderingIntent(intent);
+ return this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent);
+ }
+ getJSActions() {
+ return this._transport.getPageJSActions(this._pageIndex);
+ }
+ get filterFactory() {
+ return this._transport.filterFactory;
+ }
+ get isPureXfa() {
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "isPureXfa", !!this._transport._htmlForXfa);
+ }
+ async getXfa() {
+ return this._transport._htmlForXfa?.children[this._pageIndex] || null;
+ }
+ render({
+ canvasContext,
+ viewport,
+ intent = "display",
+ annotationMode = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.ENABLE,
+ transform = null,
+ background = null,
+ optionalContentConfigPromise = null,
+ annotationCanvasMap = null,
+ pageColors = null,
+ printAnnotationStorage = null
+ }) {
+ this._stats?.time("Overall");
+ const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage);
+ this.#pendingCleanup = false;
+ this.#abortDelayedCleanup();
+ if (!optionalContentConfigPromise) {
+ optionalContentConfigPromise = this._transport.getOptionalContentConfig();
+ }
+ let intentState = this._intentStates.get(intentArgs.cacheKey);
+ if (!intentState) {
+ intentState = Object.create(null);
+ this._intentStates.set(intentArgs.cacheKey, intentState);
+ }
+ if (intentState.streamReaderCancelTimeout) {
+ clearTimeout(intentState.streamReaderCancelTimeout);
+ intentState.streamReaderCancelTimeout = null;
+ }
+ const intentPrint = !!(intentArgs.renderingIntent & _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.PRINT);
+ if (!intentState.displayReadyCapability) {
+ intentState.displayReadyCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ intentState.operatorList = {
+ fnArray: [],
+ argsArray: [],
+ lastChunk: false,
+ separateAnnots: null
+ };
+ this._stats?.time("Page Request");
+ this._pumpOperatorList(intentArgs);
+ }
+ const complete = error => {
+ intentState.renderTasks.delete(internalRenderTask);
+ if (this._maybeCleanupAfterRender || intentPrint) {
+ this.#pendingCleanup = true;
+ }
+ this.#tryCleanup(!intentPrint);
+ if (error) {
+ internalRenderTask.capability.reject(error);
+ this._abortOperatorList({
+ intentState,
+ reason: error instanceof Error ? error : new Error(error)
+ });
+ } else {
+ internalRenderTask.capability.resolve();
+ }
+ this._stats?.timeEnd("Rendering");
+ this._stats?.timeEnd("Overall");
+ };
+ const internalRenderTask = new InternalRenderTask({
+ callback: complete,
+ params: {
+ canvasContext,
+ viewport,
+ transform,
+ background
+ },
+ objs: this.objs,
+ commonObjs: this.commonObjs,
+ annotationCanvasMap,
+ operatorList: intentState.operatorList,
+ pageIndex: this._pageIndex,
+ canvasFactory: this._transport.canvasFactory,
+ filterFactory: this._transport.filterFactory,
+ useRequestAnimationFrame: !intentPrint,
+ pdfBug: this._pdfBug,
+ pageColors
+ });
+ (intentState.renderTasks ||= new Set()).add(internalRenderTask);
+ const renderTask = internalRenderTask.task;
+ Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {
+ if (this.destroyed) {
+ complete();
+ return;
+ }
+ this._stats?.time("Rendering");
+ internalRenderTask.initializeGraphics({
+ transparency,
+ optionalContentConfig
+ });
+ internalRenderTask.operatorListChanged();
+ }).catch(complete);
+ return renderTask;
+ }
+ getOperatorList({
+ intent = "display",
+ annotationMode = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.ENABLE,
+ printAnnotationStorage = null
+ } = {}) {
+ function operatorListChanged() {
+ if (intentState.operatorList.lastChunk) {
+ intentState.opListReadCapability.resolve(intentState.operatorList);
+ intentState.renderTasks.delete(opListTask);
+ }
+ }
+ const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, true);
+ let intentState = this._intentStates.get(intentArgs.cacheKey);
+ if (!intentState) {
+ intentState = Object.create(null);
+ this._intentStates.set(intentArgs.cacheKey, intentState);
+ }
+ let opListTask;
+ if (!intentState.opListReadCapability) {
+ opListTask = Object.create(null);
+ opListTask.operatorListChanged = operatorListChanged;
+ intentState.opListReadCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ (intentState.renderTasks ||= new Set()).add(opListTask);
+ intentState.operatorList = {
+ fnArray: [],
+ argsArray: [],
+ lastChunk: false,
+ separateAnnots: null
+ };
+ this._stats?.time("Page Request");
+ this._pumpOperatorList(intentArgs);
+ }
+ return intentState.opListReadCapability.promise;
+ }
+ streamTextContent({
+ includeMarkedContent = false,
+ disableNormalization = false
+ } = {}) {
+ const TEXT_CONTENT_CHUNK_SIZE = 100;
+ return this._transport.messageHandler.sendWithStream("GetTextContent", {
+ pageIndex: this._pageIndex,
+ includeMarkedContent: includeMarkedContent === true,
+ disableNormalization: disableNormalization === true
+ }, {
+ highWaterMark: TEXT_CONTENT_CHUNK_SIZE,
+ size(textContent) {
+ return textContent.items.length;
+ }
+ });
+ }
+ getTextContent(params = {}) {
+ if (this._transport._htmlForXfa) {
+ return this.getXfa().then(xfa => {
+ return _xfa_text_js__WEBPACK_IMPORTED_MODULE_14__.XfaText.textContent(xfa);
+ });
+ }
+ const readableStream = this.streamTextContent(params);
+ return new Promise(function (resolve, reject) {
+ function pump() {
+ reader.read().then(function ({
+ value,
+ done
+ }) {
+ if (done) {
+ resolve(textContent);
+ return;
+ }
+ Object.assign(textContent.styles, value.styles);
+ textContent.items.push(...value.items);
+ pump();
+ }, reject);
+ }
+ const reader = readableStream.getReader();
+ const textContent = {
+ items: [],
+ styles: Object.create(null)
+ };
+ pump();
+ });
+ }
+ getStructTree() {
+ return this._transport.getStructTree(this._pageIndex);
+ }
+ _destroy() {
+ this.destroyed = true;
+ const waitOn = [];
+ for (const intentState of this._intentStates.values()) {
+ this._abortOperatorList({
+ intentState,
+ reason: new Error("Page was destroyed."),
+ force: true
+ });
+ if (intentState.opListReadCapability) {
+ continue;
+ }
+ for (const internalRenderTask of intentState.renderTasks) {
+ waitOn.push(internalRenderTask.completed);
+ internalRenderTask.cancel();
+ }
+ }
+ this.objs.clear();
+ this.#pendingCleanup = false;
+ this.#abortDelayedCleanup();
+ return Promise.all(waitOn);
+ }
+ cleanup(resetStats = false) {
+ this.#pendingCleanup = true;
+ const success = this.#tryCleanup(false);
+ if (resetStats && success) {
+ this._stats &&= new _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.StatTimer();
+ }
+ return success;
+ }
+ #tryCleanup(delayed = false) {
+ this.#abortDelayedCleanup();
+ if (!this.#pendingCleanup || this.destroyed) {
+ return false;
+ }
+ if (delayed) {
+ this.#delayedCleanupTimeout = setTimeout(() => {
+ this.#delayedCleanupTimeout = null;
+ this.#tryCleanup(false);
+ }, DELAYED_CLEANUP_TIMEOUT);
+ return false;
+ }
+ for (const {
+ renderTasks,
+ operatorList
+ } of this._intentStates.values()) {
+ if (renderTasks.size > 0 || !operatorList.lastChunk) {
+ return false;
+ }
+ }
+ this._intentStates.clear();
+ this.objs.clear();
+ this.#pendingCleanup = false;
+ return true;
+ }
+ #abortDelayedCleanup() {
+ if (this.#delayedCleanupTimeout) {
+ clearTimeout(this.#delayedCleanupTimeout);
+ this.#delayedCleanupTimeout = null;
+ }
+ }
+ _startRenderPage(transparency, cacheKey) {
+ const intentState = this._intentStates.get(cacheKey);
+ if (!intentState) {
+ return;
+ }
+ this._stats?.timeEnd("Page Request");
+ intentState.displayReadyCapability?.resolve(transparency);
+ }
+ _renderPageChunk(operatorListChunk, intentState) {
+ for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {
+ intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);
+ intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);
+ }
+ intentState.operatorList.lastChunk = operatorListChunk.lastChunk;
+ intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;
+ for (const internalRenderTask of intentState.renderTasks) {
+ internalRenderTask.operatorListChanged();
+ }
+ if (operatorListChunk.lastChunk) {
+ this.#tryCleanup(true);
+ }
+ }
+ _pumpOperatorList({
+ renderingIntent,
+ cacheKey,
+ annotationStorageSerializable
+ }) {
+ const {
+ map,
+ transfer
+ } = annotationStorageSerializable;
+ const readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", {
+ pageIndex: this._pageIndex,
+ intent: renderingIntent,
+ cacheKey,
+ annotationStorage: map
+ }, transfer);
+ const reader = readableStream.getReader();
+ const intentState = this._intentStates.get(cacheKey);
+ intentState.streamReader = reader;
+ const pump = () => {
+ reader.read().then(({
+ value,
+ done
+ }) => {
+ if (done) {
+ intentState.streamReader = null;
+ return;
+ }
+ if (this._transport.destroyed) {
+ return;
+ }
+ this._renderPageChunk(value, intentState);
+ pump();
+ }, reason => {
+ intentState.streamReader = null;
+ if (this._transport.destroyed) {
+ return;
+ }
+ if (intentState.operatorList) {
+ intentState.operatorList.lastChunk = true;
+ for (const internalRenderTask of intentState.renderTasks) {
+ internalRenderTask.operatorListChanged();
+ }
+ this.#tryCleanup(true);
+ }
+ if (intentState.displayReadyCapability) {
+ intentState.displayReadyCapability.reject(reason);
+ } else if (intentState.opListReadCapability) {
+ intentState.opListReadCapability.reject(reason);
+ } else {
+ throw reason;
+ }
+ });
+ };
+ pump();
+ }
+ _abortOperatorList({
+ intentState,
+ reason,
+ force = false
+ }) {
+ if (!intentState.streamReader) {
+ return;
+ }
+ if (intentState.streamReaderCancelTimeout) {
+ clearTimeout(intentState.streamReaderCancelTimeout);
+ intentState.streamReaderCancelTimeout = null;
+ }
+ if (!force) {
+ if (intentState.renderTasks.size > 0) {
+ return;
+ }
+ if (reason instanceof _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.RenderingCancelledException) {
+ let delay = RENDERING_CANCELLED_TIMEOUT;
+ if (reason.extraDelay > 0 && reason.extraDelay < 1000) {
+ delay += reason.extraDelay;
+ }
+ intentState.streamReaderCancelTimeout = setTimeout(() => {
+ intentState.streamReaderCancelTimeout = null;
+ this._abortOperatorList({
+ intentState,
+ reason,
+ force: true
+ });
+ }, delay);
+ return;
+ }
+ }
+ intentState.streamReader.cancel(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException(reason.message)).catch(() => {});
+ intentState.streamReader = null;
+ if (this._transport.destroyed) {
+ return;
+ }
+ for (const [curCacheKey, curIntentState] of this._intentStates) {
+ if (curIntentState === intentState) {
+ this._intentStates.delete(curCacheKey);
+ break;
+ }
+ }
+ this.cleanup();
+ }
+ get stats() {
+ return this._stats;
+ }
+}
+class LoopbackPort {
+ #listeners = new Set();
+ #deferred = Promise.resolve();
+ postMessage(obj, transfer) {
+ const event = {
+ data: structuredClone(obj, transfer ? {
+ transfer
+ } : null)
+ };
+ this.#deferred.then(() => {
+ for (const listener of this.#listeners) {
+ listener.call(this, event);
+ }
+ });
+ }
+ addEventListener(name, listener) {
+ this.#listeners.add(listener);
+ }
+ removeEventListener(name, listener) {
+ this.#listeners.delete(listener);
+ }
+ terminate() {
+ this.#listeners.clear();
+ }
+}
+const PDFWorkerUtil = {
+ isWorkerDisabled: false,
+ fakeWorkerId: 0
+};
+{
+ if (_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS) {
+ PDFWorkerUtil.isWorkerDisabled = true;
+ _worker_options_js__WEBPACK_IMPORTED_MODULE_6__.GlobalWorkerOptions.workerSrc ||= "./pdf.worker.mjs";
+ }
+ PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {
+ let base;
+ try {
+ base = new URL(baseUrl);
+ if (!base.origin || base.origin === "null") {
+ return false;
+ }
+ } catch {
+ return false;
+ }
+ const other = new URL(otherUrl, base);
+ return base.origin === other.origin;
+ };
+ PDFWorkerUtil.createCDNWrapper = function (url) {
+ const wrapper = `await import("${url}");`;
+ return URL.createObjectURL(new Blob([wrapper], {
+ type: "text/javascript"
+ }));
+ };
+}
+class PDFWorker {
+ static #workerPorts;
+ constructor({
+ name = null,
+ port = null,
+ verbosity = (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.getVerbosityLevel)()
+ } = {}) {
+ this.name = name;
+ this.destroyed = false;
+ this.verbosity = verbosity;
+ this._readyCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this._port = null;
+ this._webWorker = null;
+ this._messageHandler = null;
+ if (port) {
+ if (PDFWorker.#workerPorts?.has(port)) {
+ throw new Error("Cannot use more than one PDFWorker per port.");
+ }
+ (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);
+ this._initializeFromPort(port);
+ return;
+ }
+ this._initialize();
+ }
+ get promise() {
+ return this._readyCapability.promise;
+ }
+ get port() {
+ return this._port;
+ }
+ get messageHandler() {
+ return this._messageHandler;
+ }
+ _initializeFromPort(port) {
+ this._port = port;
+ this._messageHandler = new _shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__.MessageHandler("main", "worker", port);
+ this._messageHandler.on("ready", function () {});
+ this._readyCapability.resolve();
+ this._messageHandler.send("configure", {
+ verbosity: this.verbosity
+ });
+ }
+ _initialize() {
+ if (!PDFWorkerUtil.isWorkerDisabled && !PDFWorker.#mainThreadWorkerMessageHandler) {
+ let {
+ workerSrc
+ } = PDFWorker;
+ try {
+ if (!PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)) {
+ workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href);
+ }
+ const worker = new Worker(workerSrc, {
+ type: "module"
+ });
+ const messageHandler = new _shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__.MessageHandler("main", "worker", worker);
+ const terminateEarly = () => {
+ worker.removeEventListener("error", onWorkerError);
+ messageHandler.destroy();
+ worker.terminate();
+ if (this.destroyed) {
+ this._readyCapability.reject(new Error("Worker was destroyed"));
+ } else {
+ this._setupFakeWorker();
+ }
+ };
+ const onWorkerError = () => {
+ if (!this._webWorker) {
+ terminateEarly();
+ }
+ };
+ worker.addEventListener("error", onWorkerError);
+ messageHandler.on("test", data => {
+ worker.removeEventListener("error", onWorkerError);
+ if (this.destroyed) {
+ terminateEarly();
+ return;
+ }
+ if (data) {
+ this._messageHandler = messageHandler;
+ this._port = worker;
+ this._webWorker = worker;
+ this._readyCapability.resolve();
+ messageHandler.send("configure", {
+ verbosity: this.verbosity
+ });
+ } else {
+ this._setupFakeWorker();
+ messageHandler.destroy();
+ worker.terminate();
+ }
+ });
+ messageHandler.on("ready", data => {
+ worker.removeEventListener("error", onWorkerError);
+ if (this.destroyed) {
+ terminateEarly();
+ return;
+ }
+ try {
+ sendTest();
+ } catch {
+ this._setupFakeWorker();
+ }
+ });
+ const sendTest = () => {
+ const testObj = new Uint8Array();
+ messageHandler.send("test", testObj, [testObj.buffer]);
+ };
+ sendTest();
+ return;
+ } catch {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.info)("The worker has been disabled.");
+ }
+ }
+ this._setupFakeWorker();
+ }
+ _setupFakeWorker() {
+ if (!PDFWorkerUtil.isWorkerDisabled) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)("Setting up fake worker.");
+ PDFWorkerUtil.isWorkerDisabled = true;
+ }
+ PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {
+ if (this.destroyed) {
+ this._readyCapability.reject(new Error("Worker was destroyed"));
+ return;
+ }
+ const port = new LoopbackPort();
+ this._port = port;
+ const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;
+ const workerHandler = new _shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__.MessageHandler(id + "_worker", id, port);
+ WorkerMessageHandler.setup(workerHandler, port);
+ const messageHandler = new _shared_message_handler_js__WEBPACK_IMPORTED_MODULE_7__.MessageHandler(id, id + "_worker", port);
+ this._messageHandler = messageHandler;
+ this._readyCapability.resolve();
+ messageHandler.send("configure", {
+ verbosity: this.verbosity
+ });
+ }).catch(reason => {
+ this._readyCapability.reject(new Error(`Setting up fake worker failed: "${reason.message}".`));
+ });
+ }
+ destroy() {
+ this.destroyed = true;
+ if (this._webWorker) {
+ this._webWorker.terminate();
+ this._webWorker = null;
+ }
+ PDFWorker.#workerPorts?.delete(this._port);
+ this._port = null;
+ if (this._messageHandler) {
+ this._messageHandler.destroy();
+ this._messageHandler = null;
+ }
+ }
+ static fromPort(params) {
+ if (!params?.port) {
+ throw new Error("PDFWorker.fromPort - invalid method signature.");
+ }
+ const cachedPort = this.#workerPorts?.get(params.port);
+ if (cachedPort) {
+ if (cachedPort._pendingDestroy) {
+ throw new Error("PDFWorker.fromPort - the worker is being destroyed.\n" + "Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.");
+ }
+ return cachedPort;
+ }
+ return new PDFWorker(params);
+ }
+ static get workerSrc() {
+ if (_worker_options_js__WEBPACK_IMPORTED_MODULE_6__.GlobalWorkerOptions.workerSrc) {
+ return _worker_options_js__WEBPACK_IMPORTED_MODULE_6__.GlobalWorkerOptions.workerSrc;
+ }
+ throw new Error('No "GlobalWorkerOptions.workerSrc" specified.');
+ }
+ static get #mainThreadWorkerMessageHandler() {
+ try {
+ return globalThis.pdfjsWorker?.WorkerMessageHandler || null;
+ } catch {
+ return null;
+ }
+ }
+ static get _setupFakeWorkerGlobal() {
+ const loader = async () => {
+ if (this.#mainThreadWorkerMessageHandler) {
+ return this.#mainThreadWorkerMessageHandler;
+ }
+ const worker = await import(/* webpackIgnore: true */ this.workerSrc);
+ return worker.WorkerMessageHandler;
+ };
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "_setupFakeWorkerGlobal", loader());
+ }
+}
+class WorkerTransport {
+ #methodPromises = new Map();
+ #pageCache = new Map();
+ #pagePromises = new Map();
+ #passwordCapability = null;
+ constructor(messageHandler, loadingTask, networkStream, params, factory) {
+ this.messageHandler = messageHandler;
+ this.loadingTask = loadingTask;
+ this.commonObjs = new PDFObjects();
+ this.fontLoader = new _font_loader_js__WEBPACK_IMPORTED_MODULE_3__.FontLoader({
+ ownerDocument: params.ownerDocument,
+ styleElement: params.styleElement
+ });
+ this._params = params;
+ this.canvasFactory = factory.canvasFactory;
+ this.filterFactory = factory.filterFactory;
+ this.cMapReaderFactory = factory.cMapReaderFactory;
+ this.standardFontDataFactory = factory.standardFontDataFactory;
+ this.destroyed = false;
+ this.destroyCapability = null;
+ this._networkStream = networkStream;
+ this._fullReader = null;
+ this._lastProgress = null;
+ this.downloadInfoCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this.setupMessageHandler();
+ }
+ #cacheSimpleMethod(name, data = null) {
+ const cachedPromise = this.#methodPromises.get(name);
+ if (cachedPromise) {
+ return cachedPromise;
+ }
+ const promise = this.messageHandler.sendWithPromise(name, data);
+ this.#methodPromises.set(name, promise);
+ return promise;
+ }
+ get annotationStorage() {
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "annotationStorage", new _annotation_storage_js__WEBPACK_IMPORTED_MODULE_1__.AnnotationStorage());
+ }
+ getRenderingIntent(intent, annotationMode = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.ENABLE, printAnnotationStorage = null, isOpList = false) {
+ let renderingIntent = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.DISPLAY;
+ let annotationStorageSerializable = _annotation_storage_js__WEBPACK_IMPORTED_MODULE_1__.SerializableEmpty;
+ switch (intent) {
+ case "any":
+ renderingIntent = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.ANY;
+ break;
+ case "display":
+ break;
+ case "print":
+ renderingIntent = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.PRINT;
+ break;
+ default:
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`getRenderingIntent - invalid intent: ${intent}`);
+ }
+ switch (annotationMode) {
+ case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.DISABLE:
+ renderingIntent += _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.ANNOTATIONS_DISABLE;
+ break;
+ case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.ENABLE:
+ break;
+ case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.ENABLE_FORMS:
+ renderingIntent += _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.ANNOTATIONS_FORMS;
+ break;
+ case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode.ENABLE_STORAGE:
+ renderingIntent += _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.ANNOTATIONS_STORAGE;
+ const annotationStorage = renderingIntent & _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.PRINT && printAnnotationStorage instanceof _annotation_storage_js__WEBPACK_IMPORTED_MODULE_1__.PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;
+ annotationStorageSerializable = annotationStorage.serializable;
+ break;
+ default:
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);
+ }
+ if (isOpList) {
+ renderingIntent += _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.RenderingIntentFlag.OPLIST;
+ }
+ return {
+ renderingIntent,
+ cacheKey: `${renderingIntent}_${annotationStorageSerializable.hash}`,
+ annotationStorageSerializable
+ };
+ }
+ destroy() {
+ if (this.destroyCapability) {
+ return this.destroyCapability.promise;
+ }
+ this.destroyed = true;
+ this.destroyCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this.#passwordCapability?.reject(new Error("Worker was destroyed during onPassword callback"));
+ const waitOn = [];
+ for (const page of this.#pageCache.values()) {
+ waitOn.push(page._destroy());
+ }
+ this.#pageCache.clear();
+ this.#pagePromises.clear();
+ if (this.hasOwnProperty("annotationStorage")) {
+ this.annotationStorage.resetModified();
+ }
+ const terminated = this.messageHandler.sendWithPromise("Terminate", null);
+ waitOn.push(terminated);
+ Promise.all(waitOn).then(() => {
+ this.commonObjs.clear();
+ this.fontLoader.clear();
+ this.#methodPromises.clear();
+ this.filterFactory.destroy();
+ this._networkStream?.cancelAllRequests(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException("Worker was terminated."));
+ if (this.messageHandler) {
+ this.messageHandler.destroy();
+ this.messageHandler = null;
+ }
+ this.destroyCapability.resolve();
+ }, this.destroyCapability.reject);
+ return this.destroyCapability.promise;
+ }
+ setupMessageHandler() {
+ const {
+ messageHandler,
+ loadingTask
+ } = this;
+ messageHandler.on("GetReader", (data, sink) => {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(this._networkStream, "GetReader - no `IPDFStream` instance available.");
+ this._fullReader = this._networkStream.getFullReader();
+ this._fullReader.onProgress = evt => {
+ this._lastProgress = {
+ loaded: evt.loaded,
+ total: evt.total
+ };
+ };
+ sink.onPull = () => {
+ this._fullReader.read().then(function ({
+ value,
+ done
+ }) {
+ if (done) {
+ sink.close();
+ return;
+ }
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(value instanceof ArrayBuffer, "GetReader - expected an ArrayBuffer.");
+ sink.enqueue(new Uint8Array(value), 1, [value]);
+ }).catch(reason => {
+ sink.error(reason);
+ });
+ };
+ sink.onCancel = reason => {
+ this._fullReader.cancel(reason);
+ sink.ready.catch(readyReason => {
+ if (this.destroyed) {
+ return;
+ }
+ throw readyReason;
+ });
+ };
+ });
+ messageHandler.on("ReaderHeadersReady", data => {
+ const headersCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ const fullReader = this._fullReader;
+ fullReader.headersReady.then(() => {
+ if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {
+ if (this._lastProgress) {
+ loadingTask.onProgress?.(this._lastProgress);
+ }
+ fullReader.onProgress = evt => {
+ loadingTask.onProgress?.({
+ loaded: evt.loaded,
+ total: evt.total
+ });
+ };
+ }
+ headersCapability.resolve({
+ isStreamingSupported: fullReader.isStreamingSupported,
+ isRangeSupported: fullReader.isRangeSupported,
+ contentLength: fullReader.contentLength
+ });
+ }, headersCapability.reject);
+ return headersCapability.promise;
+ });
+ messageHandler.on("GetRangeReader", (data, sink) => {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(this._networkStream, "GetRangeReader - no `IPDFStream` instance available.");
+ const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);
+ if (!rangeReader) {
+ sink.close();
+ return;
+ }
+ sink.onPull = () => {
+ rangeReader.read().then(function ({
+ value,
+ done
+ }) {
+ if (done) {
+ sink.close();
+ return;
+ }
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(value instanceof ArrayBuffer, "GetRangeReader - expected an ArrayBuffer.");
+ sink.enqueue(new Uint8Array(value), 1, [value]);
+ }).catch(reason => {
+ sink.error(reason);
+ });
+ };
+ sink.onCancel = reason => {
+ rangeReader.cancel(reason);
+ sink.ready.catch(readyReason => {
+ if (this.destroyed) {
+ return;
+ }
+ throw readyReason;
+ });
+ };
+ });
+ messageHandler.on("GetDoc", ({
+ pdfInfo
+ }) => {
+ this._numPages = pdfInfo.numPages;
+ this._htmlForXfa = pdfInfo.htmlForXfa;
+ delete pdfInfo.htmlForXfa;
+ loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));
+ });
+ messageHandler.on("DocException", function (ex) {
+ let reason;
+ switch (ex.name) {
+ case "PasswordException":
+ reason = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PasswordException(ex.message, ex.code);
+ break;
+ case "InvalidPDFException":
+ reason = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.InvalidPDFException(ex.message);
+ break;
+ case "MissingPDFException":
+ reason = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.MissingPDFException(ex.message);
+ break;
+ case "UnexpectedResponseException":
+ reason = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseException(ex.message, ex.status);
+ break;
+ case "UnknownErrorException":
+ reason = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.UnknownErrorException(ex.message, ex.details);
+ break;
+ default:
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("DocException - expected a valid Error.");
+ }
+ loadingTask._capability.reject(reason);
+ });
+ messageHandler.on("PasswordRequest", exception => {
+ this.#passwordCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ if (loadingTask.onPassword) {
+ const updatePassword = password => {
+ if (password instanceof Error) {
+ this.#passwordCapability.reject(password);
+ } else {
+ this.#passwordCapability.resolve({
+ password
+ });
+ }
+ };
+ try {
+ loadingTask.onPassword(updatePassword, exception.code);
+ } catch (ex) {
+ this.#passwordCapability.reject(ex);
+ }
+ } else {
+ this.#passwordCapability.reject(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PasswordException(exception.message, exception.code));
+ }
+ return this.#passwordCapability.promise;
+ });
+ messageHandler.on("DataLoaded", data => {
+ loadingTask.onProgress?.({
+ loaded: data.length,
+ total: data.length
+ });
+ this.downloadInfoCapability.resolve(data);
+ });
+ messageHandler.on("StartRenderPage", data => {
+ if (this.destroyed) {
+ return;
+ }
+ const page = this.#pageCache.get(data.pageIndex);
+ page._startRenderPage(data.transparency, data.cacheKey);
+ });
+ messageHandler.on("commonobj", ([id, type, exportedData]) => {
+ if (this.destroyed) {
+ return null;
+ }
+ if (this.commonObjs.has(id)) {
+ return null;
+ }
+ switch (type) {
+ case "Font":
+ const params = this._params;
+ if ("error" in exportedData) {
+ const exportedError = exportedData.error;
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Error during font loading: ${exportedError}`);
+ this.commonObjs.resolve(id, exportedError);
+ break;
+ }
+ const inspectFont = params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;
+ const font = new _font_loader_js__WEBPACK_IMPORTED_MODULE_3__.FontFaceObject(exportedData, {
+ isEvalSupported: params.isEvalSupported,
+ disableFontFace: params.disableFontFace,
+ ignoreErrors: params.ignoreErrors,
+ inspectFont
+ });
+ this.fontLoader.bind(font).catch(reason => {
+ return messageHandler.sendWithPromise("FontFallback", {
+ id
+ });
+ }).finally(() => {
+ if (!params.fontExtraProperties && font.data) {
+ font.data = null;
+ }
+ this.commonObjs.resolve(id, font);
+ });
+ break;
+ case "CopyLocalImage":
+ const {
+ imageRef
+ } = exportedData;
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(imageRef, "The imageRef must be defined.");
+ for (const pageProxy of this.#pageCache.values()) {
+ for (const [, data] of pageProxy.objs) {
+ if (data.ref !== imageRef) {
+ continue;
+ }
+ if (!data.dataLen) {
+ return null;
+ }
+ this.commonObjs.resolve(id, structuredClone(data));
+ return data.dataLen;
+ }
+ }
+ break;
+ case "FontPath":
+ case "Image":
+ case "Pattern":
+ this.commonObjs.resolve(id, exportedData);
+ break;
+ default:
+ throw new Error(`Got unknown common object type ${type}`);
+ }
+ return null;
+ });
+ messageHandler.on("obj", ([id, pageIndex, type, imageData]) => {
+ if (this.destroyed) {
+ return;
+ }
+ const pageProxy = this.#pageCache.get(pageIndex);
+ if (pageProxy.objs.has(id)) {
+ return;
+ }
+ if (pageProxy._intentStates.size === 0) {
+ imageData?.bitmap?.close();
+ return;
+ }
+ switch (type) {
+ case "Image":
+ pageProxy.objs.resolve(id, imageData);
+ if (imageData?.dataLen > _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.MAX_IMAGE_SIZE_TO_CACHE) {
+ pageProxy._maybeCleanupAfterRender = true;
+ }
+ break;
+ case "Pattern":
+ pageProxy.objs.resolve(id, imageData);
+ break;
+ default:
+ throw new Error(`Got unknown object type ${type}`);
+ }
+ });
+ messageHandler.on("DocProgress", data => {
+ if (this.destroyed) {
+ return;
+ }
+ loadingTask.onProgress?.({
+ loaded: data.loaded,
+ total: data.total
+ });
+ });
+ messageHandler.on("FetchBuiltInCMap", data => {
+ if (this.destroyed) {
+ return Promise.reject(new Error("Worker was destroyed."));
+ }
+ if (!this.cMapReaderFactory) {
+ return Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter."));
+ }
+ return this.cMapReaderFactory.fetch(data);
+ });
+ messageHandler.on("FetchStandardFontData", data => {
+ if (this.destroyed) {
+ return Promise.reject(new Error("Worker was destroyed."));
+ }
+ if (!this.standardFontDataFactory) {
+ return Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter."));
+ }
+ return this.standardFontDataFactory.fetch(data);
+ });
+ }
+ getData() {
+ return this.messageHandler.sendWithPromise("GetData", null);
+ }
+ saveDocument() {
+ if (this.annotationStorage.size <= 0) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)("saveDocument called while `annotationStorage` is empty, " + "please use the getData-method instead.");
+ }
+ const {
+ map,
+ transfer
+ } = this.annotationStorage.serializable;
+ return this.messageHandler.sendWithPromise("SaveDocument", {
+ isPureXfa: !!this._htmlForXfa,
+ numPages: this._numPages,
+ annotationStorage: map,
+ filename: this._fullReader?.filename ?? null
+ }, transfer).finally(() => {
+ this.annotationStorage.resetModified();
+ });
+ }
+ getPage(pageNumber) {
+ if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {
+ return Promise.reject(new Error("Invalid page request."));
+ }
+ const pageIndex = pageNumber - 1,
+ cachedPromise = this.#pagePromises.get(pageIndex);
+ if (cachedPromise) {
+ return cachedPromise;
+ }
+ const promise = this.messageHandler.sendWithPromise("GetPage", {
+ pageIndex
+ }).then(pageInfo => {
+ if (this.destroyed) {
+ throw new Error("Transport destroyed");
+ }
+ const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);
+ this.#pageCache.set(pageIndex, page);
+ return page;
+ });
+ this.#pagePromises.set(pageIndex, promise);
+ return promise;
+ }
+ getPageIndex(ref) {
+ if (typeof ref !== "object" || ref === null || !Number.isInteger(ref.num) || ref.num < 0 || !Number.isInteger(ref.gen) || ref.gen < 0) {
+ return Promise.reject(new Error("Invalid pageIndex request."));
+ }
+ return this.messageHandler.sendWithPromise("GetPageIndex", {
+ num: ref.num,
+ gen: ref.gen
+ });
+ }
+ getAnnotations(pageIndex, intent) {
+ return this.messageHandler.sendWithPromise("GetAnnotations", {
+ pageIndex,
+ intent
+ });
+ }
+ getFieldObjects() {
+ return this.#cacheSimpleMethod("GetFieldObjects");
+ }
+ hasJSActions() {
+ return this.#cacheSimpleMethod("HasJSActions");
+ }
+ getCalculationOrderIds() {
+ return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null);
+ }
+ getDestinations() {
+ return this.messageHandler.sendWithPromise("GetDestinations", null);
+ }
+ getDestination(id) {
+ if (typeof id !== "string") {
+ return Promise.reject(new Error("Invalid destination request."));
+ }
+ return this.messageHandler.sendWithPromise("GetDestination", {
+ id
+ });
+ }
+ getPageLabels() {
+ return this.messageHandler.sendWithPromise("GetPageLabels", null);
+ }
+ getPageLayout() {
+ return this.messageHandler.sendWithPromise("GetPageLayout", null);
+ }
+ getPageMode() {
+ return this.messageHandler.sendWithPromise("GetPageMode", null);
+ }
+ getViewerPreferences() {
+ return this.messageHandler.sendWithPromise("GetViewerPreferences", null);
+ }
+ getOpenAction() {
+ return this.messageHandler.sendWithPromise("GetOpenAction", null);
+ }
+ getAttachments() {
+ return this.messageHandler.sendWithPromise("GetAttachments", null);
+ }
+ getDocJSActions() {
+ return this.#cacheSimpleMethod("GetDocJSActions");
+ }
+ getPageJSActions(pageIndex) {
+ return this.messageHandler.sendWithPromise("GetPageJSActions", {
+ pageIndex
+ });
+ }
+ getStructTree(pageIndex) {
+ return this.messageHandler.sendWithPromise("GetStructTree", {
+ pageIndex
+ });
+ }
+ getOutline() {
+ return this.messageHandler.sendWithPromise("GetOutline", null);
+ }
+ getOptionalContentConfig() {
+ return this.messageHandler.sendWithPromise("GetOptionalContentConfig", null).then(results => {
+ return new _optional_content_config_js__WEBPACK_IMPORTED_MODULE_9__.OptionalContentConfig(results);
+ });
+ }
+ getPermissions() {
+ return this.messageHandler.sendWithPromise("GetPermissions", null);
+ }
+ getMetadata() {
+ const name = "GetMetadata",
+ cachedPromise = this.#methodPromises.get(name);
+ if (cachedPromise) {
+ return cachedPromise;
+ }
+ const promise = this.messageHandler.sendWithPromise(name, null).then(results => {
+ return {
+ info: results[0],
+ metadata: results[1] ? new _metadata_js__WEBPACK_IMPORTED_MODULE_8__.Metadata(results[1]) : null,
+ contentDispositionFilename: this._fullReader?.filename ?? null,
+ contentLength: this._fullReader?.contentLength ?? null
+ };
+ });
+ this.#methodPromises.set(name, promise);
+ return promise;
+ }
+ getMarkInfo() {
+ return this.messageHandler.sendWithPromise("GetMarkInfo", null);
+ }
+ async startCleanup(keepLoadedFonts = false) {
+ if (this.destroyed) {
+ return;
+ }
+ await this.messageHandler.sendWithPromise("Cleanup", null);
+ for (const page of this.#pageCache.values()) {
+ const cleanupSuccessful = page.cleanup();
+ if (!cleanupSuccessful) {
+ throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);
+ }
+ }
+ this.commonObjs.clear();
+ if (!keepLoadedFonts) {
+ this.fontLoader.clear();
+ }
+ this.#methodPromises.clear();
+ this.filterFactory.destroy(true);
+ }
+ get loadingParams() {
+ const {
+ disableAutoFetch,
+ enableXfa
+ } = this._params;
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "loadingParams", {
+ disableAutoFetch,
+ enableXfa
+ });
+ }
+}
+class PDFObjects {
+ #objs = Object.create(null);
+ #ensureObj(objId) {
+ return this.#objs[objId] ||= {
+ capability: new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(),
+ data: null
+ };
+ }
+ get(objId, callback = null) {
+ if (callback) {
+ const obj = this.#ensureObj(objId);
+ obj.capability.promise.then(() => callback(obj.data));
+ return null;
+ }
+ const obj = this.#objs[objId];
+ if (!obj?.capability.settled) {
+ throw new Error(`Requesting object that isn't resolved yet ${objId}.`);
+ }
+ return obj.data;
+ }
+ has(objId) {
+ const obj = this.#objs[objId];
+ return obj?.capability.settled ?? false;
+ }
+ resolve(objId, data = null) {
+ const obj = this.#ensureObj(objId);
+ obj.data = data;
+ obj.capability.resolve();
+ }
+ clear() {
+ for (const objId in this.#objs) {
+ const {
+ data
+ } = this.#objs[objId];
+ data?.bitmap?.close();
+ }
+ this.#objs = Object.create(null);
+ }
+ *[Symbol.iterator]() {
+ for (const objId in this.#objs) {
+ const {
+ capability,
+ data
+ } = this.#objs[objId];
+ if (!capability.settled) {
+ continue;
+ }
+ yield [objId, data];
+ }
+ }
+}
+class RenderTask {
+ #internalRenderTask = null;
+ constructor(internalRenderTask) {
+ this.#internalRenderTask = internalRenderTask;
+ this.onContinue = null;
+ }
+ get promise() {
+ return this.#internalRenderTask.capability.promise;
+ }
+ cancel(extraDelay = 0) {
+ this.#internalRenderTask.cancel(null, extraDelay);
+ }
+ get separateAnnots() {
+ const {
+ separateAnnots
+ } = this.#internalRenderTask.operatorList;
+ if (!separateAnnots) {
+ return false;
+ }
+ const {
+ annotationCanvasMap
+ } = this.#internalRenderTask;
+ return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;
+ }
+}
+class InternalRenderTask {
+ static #canvasInUse = new WeakSet();
+ constructor({
+ callback,
+ params,
+ objs,
+ commonObjs,
+ annotationCanvasMap,
+ operatorList,
+ pageIndex,
+ canvasFactory,
+ filterFactory,
+ useRequestAnimationFrame = false,
+ pdfBug = false,
+ pageColors = null
+ }) {
+ this.callback = callback;
+ this.params = params;
+ this.objs = objs;
+ this.commonObjs = commonObjs;
+ this.annotationCanvasMap = annotationCanvasMap;
+ this.operatorListIdx = null;
+ this.operatorList = operatorList;
+ this._pageIndex = pageIndex;
+ this.canvasFactory = canvasFactory;
+ this.filterFactory = filterFactory;
+ this._pdfBug = pdfBug;
+ this.pageColors = pageColors;
+ this.running = false;
+ this.graphicsReadyCallback = null;
+ this.graphicsReady = false;
+ this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== "undefined";
+ this.cancelled = false;
+ this.capability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this.task = new RenderTask(this);
+ this._cancelBound = this.cancel.bind(this);
+ this._continueBound = this._continue.bind(this);
+ this._scheduleNextBound = this._scheduleNext.bind(this);
+ this._nextBound = this._next.bind(this);
+ this._canvas = params.canvasContext.canvas;
+ }
+ get completed() {
+ return this.capability.promise.catch(function () {});
+ }
+ initializeGraphics({
+ transparency = false,
+ optionalContentConfig
+ }) {
+ if (this.cancelled) {
+ return;
+ }
+ if (this._canvas) {
+ if (InternalRenderTask.#canvasInUse.has(this._canvas)) {
+ throw new Error("Cannot use the same canvas during multiple render() operations. " + "Use different canvas or ensure previous operations were " + "cancelled or completed.");
+ }
+ InternalRenderTask.#canvasInUse.add(this._canvas);
+ }
+ if (this._pdfBug && globalThis.StepperManager?.enabled) {
+ this.stepper = globalThis.StepperManager.create(this._pageIndex);
+ this.stepper.init(this.operatorList);
+ this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
+ }
+ const {
+ canvasContext,
+ viewport,
+ transform,
+ background
+ } = this.params;
+ this.gfx = new _canvas_js__WEBPACK_IMPORTED_MODULE_5__.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {
+ optionalContentConfig
+ }, this.annotationCanvasMap, this.pageColors);
+ this.gfx.beginDrawing({
+ transform,
+ viewport,
+ transparency,
+ background
+ });
+ this.operatorListIdx = 0;
+ this.graphicsReady = true;
+ this.graphicsReadyCallback?.();
+ }
+ cancel(error = null, extraDelay = 0) {
+ this.running = false;
+ this.cancelled = true;
+ this.gfx?.endDrawing();
+ InternalRenderTask.#canvasInUse.delete(this._canvas);
+ this.callback(error || new _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay));
+ }
+ operatorListChanged() {
+ if (!this.graphicsReady) {
+ this.graphicsReadyCallback ||= this._continueBound;
+ return;
+ }
+ this.stepper?.updateOperatorList(this.operatorList);
+ if (this.running) {
+ return;
+ }
+ this._continue();
+ }
+ _continue() {
+ this.running = true;
+ if (this.cancelled) {
+ return;
+ }
+ if (this.task.onContinue) {
+ this.task.onContinue(this._scheduleNextBound);
+ } else {
+ this._scheduleNext();
+ }
+ }
+ _scheduleNext() {
+ if (this._useRequestAnimationFrame) {
+ window.requestAnimationFrame(() => {
+ this._nextBound().catch(this._cancelBound);
+ });
+ } else {
+ Promise.resolve().then(this._nextBound).catch(this._cancelBound);
+ }
+ }
+ async _next() {
+ if (this.cancelled) {
+ return;
+ }
+ this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);
+ if (this.operatorListIdx === this.operatorList.argsArray.length) {
+ this.running = false;
+ if (this.operatorList.lastChunk) {
+ this.gfx.endDrawing();
+ InternalRenderTask.#canvasInUse.delete(this._canvas);
+ this.callback();
+ }
+ }
+ }
+}
+const version = '4.0.379';
+const build = '9e14d04fd';
+
+__webpack_async_result__();
+} catch(e) { __webpack_async_result__(e); } });
+
+/***/ }),
+
+/***/ 822:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ BaseCMapReaderFactory: () => (/* binding */ BaseCMapReaderFactory),
+/* harmony export */ BaseCanvasFactory: () => (/* binding */ BaseCanvasFactory),
+/* harmony export */ BaseFilterFactory: () => (/* binding */ BaseFilterFactory),
+/* harmony export */ BaseSVGFactory: () => (/* binding */ BaseSVGFactory),
+/* harmony export */ BaseStandardFontDataFactory: () => (/* binding */ BaseStandardFontDataFactory)
+/* harmony export */ });
+/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266);
+
+class BaseFilterFactory {
+ constructor() {
+ if (this.constructor === BaseFilterFactory) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Cannot initialize BaseFilterFactory.");
+ }
+ }
+ addFilter(maps) {
+ return "none";
+ }
+ addHCMFilter(fgColor, bgColor) {
+ return "none";
+ }
+ addHighlightHCMFilter(fgColor, bgColor, newFgColor, newBgColor) {
+ return "none";
+ }
+ destroy(keepHCM = false) {}
+}
+class BaseCanvasFactory {
+ constructor() {
+ if (this.constructor === BaseCanvasFactory) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Cannot initialize BaseCanvasFactory.");
+ }
+ }
+ create(width, height) {
+ if (width <= 0 || height <= 0) {
+ throw new Error("Invalid canvas size");
+ }
+ const canvas = this._createCanvas(width, height);
+ return {
+ canvas,
+ context: canvas.getContext("2d")
+ };
+ }
+ reset(canvasAndContext, width, height) {
+ if (!canvasAndContext.canvas) {
+ throw new Error("Canvas is not specified");
+ }
+ if (width <= 0 || height <= 0) {
+ throw new Error("Invalid canvas size");
+ }
+ canvasAndContext.canvas.width = width;
+ canvasAndContext.canvas.height = height;
+ }
+ destroy(canvasAndContext) {
+ if (!canvasAndContext.canvas) {
+ throw new Error("Canvas is not specified");
+ }
+ canvasAndContext.canvas.width = 0;
+ canvasAndContext.canvas.height = 0;
+ canvasAndContext.canvas = null;
+ canvasAndContext.context = null;
+ }
+ _createCanvas(width, height) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Abstract method `_createCanvas` called.");
+ }
+}
+class BaseCMapReaderFactory {
+ constructor({
+ baseUrl = null,
+ isCompressed = true
+ }) {
+ if (this.constructor === BaseCMapReaderFactory) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Cannot initialize BaseCMapReaderFactory.");
+ }
+ this.baseUrl = baseUrl;
+ this.isCompressed = isCompressed;
+ }
+ async fetch({
+ name
+ }) {
+ if (!this.baseUrl) {
+ throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.');
+ }
+ if (!name) {
+ throw new Error("CMap name must be specified.");
+ }
+ const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : "");
+ const compressionType = this.isCompressed ? _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.CMapCompressionType.BINARY : _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.CMapCompressionType.NONE;
+ return this._fetchData(url, compressionType).catch(reason => {
+ throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}`);
+ });
+ }
+ _fetchData(url, compressionType) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Abstract method `_fetchData` called.");
+ }
+}
+class BaseStandardFontDataFactory {
+ constructor({
+ baseUrl = null
+ }) {
+ if (this.constructor === BaseStandardFontDataFactory) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Cannot initialize BaseStandardFontDataFactory.");
+ }
+ this.baseUrl = baseUrl;
+ }
+ async fetch({
+ filename
+ }) {
+ if (!this.baseUrl) {
+ throw new Error('The standard font "baseUrl" parameter must be specified, ensure that ' + 'the "standardFontDataUrl" API parameter is provided.');
+ }
+ if (!filename) {
+ throw new Error("Font filename must be specified.");
+ }
+ const url = `${this.baseUrl}${filename}`;
+ return this._fetchData(url).catch(reason => {
+ throw new Error(`Unable to load font data at: ${url}`);
+ });
+ }
+ _fetchData(url) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Abstract method `_fetchData` called.");
+ }
+}
+class BaseSVGFactory {
+ constructor() {
+ if (this.constructor === BaseSVGFactory) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Cannot initialize BaseSVGFactory.");
+ }
+ }
+ create(width, height, skipDimensions = false) {
+ if (width <= 0 || height <= 0) {
+ throw new Error("Invalid SVG dimensions");
+ }
+ const svg = this._createSVG("svg:svg");
+ svg.setAttribute("version", "1.1");
+ if (!skipDimensions) {
+ svg.setAttribute("width", `${width}px`);
+ svg.setAttribute("height", `${height}px`);
+ }
+ svg.setAttribute("preserveAspectRatio", "none");
+ svg.setAttribute("viewBox", `0 0 ${width} ${height}`);
+ return svg;
+ }
+ createElement(type) {
+ if (typeof type !== "string") {
+ throw new Error("Invalid SVG element type");
+ }
+ return this._createSVG(type);
+ }
+ _createSVG(type) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Abstract method `_createSVG` called.");
+ }
+}
+
+
+/***/ }),
+
+/***/ 250:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, {
+ CanvasGraphics: () => (/* binding */ CanvasGraphics)
+});
+
+// EXTERNAL MODULE: ./src/shared/util.js
+var util = __webpack_require__(266);
+// EXTERNAL MODULE: ./src/display/display_utils.js
+var display_utils = __webpack_require__(473);
+;// CONCATENATED MODULE: ./src/display/pattern_helper.js
+
+
+const PathType = {
+ FILL: "Fill",
+ STROKE: "Stroke",
+ SHADING: "Shading"
+};
+function applyBoundingBox(ctx, bbox) {
+ if (!bbox) {
+ return;
+ }
+ const width = bbox[2] - bbox[0];
+ const height = bbox[3] - bbox[1];
+ const region = new Path2D();
+ region.rect(bbox[0], bbox[1], width, height);
+ ctx.clip(region);
+}
+class BaseShadingPattern {
+ constructor() {
+ if (this.constructor === BaseShadingPattern) {
+ (0,util.unreachable)("Cannot initialize BaseShadingPattern.");
+ }
+ }
+ getPattern() {
+ (0,util.unreachable)("Abstract method `getPattern` called.");
+ }
+}
+class RadialAxialShadingPattern extends BaseShadingPattern {
+ constructor(IR) {
+ super();
+ this._type = IR[1];
+ this._bbox = IR[2];
+ this._colorStops = IR[3];
+ this._p0 = IR[4];
+ this._p1 = IR[5];
+ this._r0 = IR[6];
+ this._r1 = IR[7];
+ this.matrix = null;
+ }
+ _createGradient(ctx) {
+ let grad;
+ if (this._type === "axial") {
+ grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);
+ } else if (this._type === "radial") {
+ grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);
+ }
+ for (const colorStop of this._colorStops) {
+ grad.addColorStop(colorStop[0], colorStop[1]);
+ }
+ return grad;
+ }
+ getPattern(ctx, owner, inverse, pathType) {
+ let pattern;
+ if (pathType === PathType.STROKE || pathType === PathType.FILL) {
+ const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, (0,display_utils.getCurrentTransform)(ctx)) || [0, 0, 0, 0];
+ const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;
+ const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;
+ const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", width, height, true);
+ const tmpCtx = tmpCanvas.context;
+ tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);
+ tmpCtx.beginPath();
+ tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);
+ tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);
+ inverse = util.Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);
+ tmpCtx.transform(...owner.baseTransform);
+ if (this.matrix) {
+ tmpCtx.transform(...this.matrix);
+ }
+ applyBoundingBox(tmpCtx, this._bbox);
+ tmpCtx.fillStyle = this._createGradient(tmpCtx);
+ tmpCtx.fill();
+ pattern = ctx.createPattern(tmpCanvas.canvas, "no-repeat");
+ const domMatrix = new DOMMatrix(inverse);
+ pattern.setTransform(domMatrix);
+ } else {
+ applyBoundingBox(ctx, this._bbox);
+ pattern = this._createGradient(ctx);
+ }
+ return pattern;
+ }
+}
+function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {
+ const coords = context.coords,
+ colors = context.colors;
+ const bytes = data.data,
+ rowSize = data.width * 4;
+ let tmp;
+ if (coords[p1 + 1] > coords[p2 + 1]) {
+ tmp = p1;
+ p1 = p2;
+ p2 = tmp;
+ tmp = c1;
+ c1 = c2;
+ c2 = tmp;
+ }
+ if (coords[p2 + 1] > coords[p3 + 1]) {
+ tmp = p2;
+ p2 = p3;
+ p3 = tmp;
+ tmp = c2;
+ c2 = c3;
+ c3 = tmp;
+ }
+ if (coords[p1 + 1] > coords[p2 + 1]) {
+ tmp = p1;
+ p1 = p2;
+ p2 = tmp;
+ tmp = c1;
+ c1 = c2;
+ c2 = tmp;
+ }
+ const x1 = (coords[p1] + context.offsetX) * context.scaleX;
+ const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;
+ const x2 = (coords[p2] + context.offsetX) * context.scaleX;
+ const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;
+ const x3 = (coords[p3] + context.offsetX) * context.scaleX;
+ const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;
+ if (y1 >= y3) {
+ return;
+ }
+ const c1r = colors[c1],
+ c1g = colors[c1 + 1],
+ c1b = colors[c1 + 2];
+ const c2r = colors[c2],
+ c2g = colors[c2 + 1],
+ c2b = colors[c2 + 2];
+ const c3r = colors[c3],
+ c3g = colors[c3 + 1],
+ c3b = colors[c3 + 2];
+ const minY = Math.round(y1),
+ maxY = Math.round(y3);
+ let xa, car, cag, cab;
+ let xb, cbr, cbg, cbb;
+ for (let y = minY; y <= maxY; y++) {
+ if (y < y2) {
+ const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);
+ xa = x1 - (x1 - x2) * k;
+ car = c1r - (c1r - c2r) * k;
+ cag = c1g - (c1g - c2g) * k;
+ cab = c1b - (c1b - c2b) * k;
+ } else {
+ let k;
+ if (y > y3) {
+ k = 1;
+ } else if (y2 === y3) {
+ k = 0;
+ } else {
+ k = (y2 - y) / (y2 - y3);
+ }
+ xa = x2 - (x2 - x3) * k;
+ car = c2r - (c2r - c3r) * k;
+ cag = c2g - (c2g - c3g) * k;
+ cab = c2b - (c2b - c3b) * k;
+ }
+ let k;
+ if (y < y1) {
+ k = 0;
+ } else if (y > y3) {
+ k = 1;
+ } else {
+ k = (y1 - y) / (y1 - y3);
+ }
+ xb = x1 - (x1 - x3) * k;
+ cbr = c1r - (c1r - c3r) * k;
+ cbg = c1g - (c1g - c3g) * k;
+ cbb = c1b - (c1b - c3b) * k;
+ const x1_ = Math.round(Math.min(xa, xb));
+ const x2_ = Math.round(Math.max(xa, xb));
+ let j = rowSize * y + x1_ * 4;
+ for (let x = x1_; x <= x2_; x++) {
+ k = (xa - x) / (xa - xb);
+ if (k < 0) {
+ k = 0;
+ } else if (k > 1) {
+ k = 1;
+ }
+ bytes[j++] = car - (car - cbr) * k | 0;
+ bytes[j++] = cag - (cag - cbg) * k | 0;
+ bytes[j++] = cab - (cab - cbb) * k | 0;
+ bytes[j++] = 255;
+ }
+ }
+}
+function drawFigure(data, figure, context) {
+ const ps = figure.coords;
+ const cs = figure.colors;
+ let i, ii;
+ switch (figure.type) {
+ case "lattice":
+ const verticesPerRow = figure.verticesPerRow;
+ const rows = Math.floor(ps.length / verticesPerRow) - 1;
+ const cols = verticesPerRow - 1;
+ for (i = 0; i < rows; i++) {
+ let q = i * verticesPerRow;
+ for (let j = 0; j < cols; j++, q++) {
+ drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);
+ drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);
+ }
+ }
+ break;
+ case "triangles":
+ for (i = 0, ii = ps.length; i < ii; i += 3) {
+ drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);
+ }
+ break;
+ default:
+ throw new Error("illegal figure");
+ }
+}
+class MeshShadingPattern extends BaseShadingPattern {
+ constructor(IR) {
+ super();
+ this._coords = IR[2];
+ this._colors = IR[3];
+ this._figures = IR[4];
+ this._bounds = IR[5];
+ this._bbox = IR[7];
+ this._background = IR[8];
+ this.matrix = null;
+ }
+ _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {
+ const EXPECTED_SCALE = 1.1;
+ const MAX_PATTERN_SIZE = 3000;
+ const BORDER_SIZE = 2;
+ const offsetX = Math.floor(this._bounds[0]);
+ const offsetY = Math.floor(this._bounds[1]);
+ const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;
+ const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;
+ const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);
+ const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);
+ const scaleX = boundsWidth / width;
+ const scaleY = boundsHeight / height;
+ const context = {
+ coords: this._coords,
+ colors: this._colors,
+ offsetX: -offsetX,
+ offsetY: -offsetY,
+ scaleX: 1 / scaleX,
+ scaleY: 1 / scaleY
+ };
+ const paddedWidth = width + BORDER_SIZE * 2;
+ const paddedHeight = height + BORDER_SIZE * 2;
+ const tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false);
+ const tmpCtx = tmpCanvas.context;
+ const data = tmpCtx.createImageData(width, height);
+ if (backgroundColor) {
+ const bytes = data.data;
+ for (let i = 0, ii = bytes.length; i < ii; i += 4) {
+ bytes[i] = backgroundColor[0];
+ bytes[i + 1] = backgroundColor[1];
+ bytes[i + 2] = backgroundColor[2];
+ bytes[i + 3] = 255;
+ }
+ }
+ for (const figure of this._figures) {
+ drawFigure(data, figure, context);
+ }
+ tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);
+ const canvas = tmpCanvas.canvas;
+ return {
+ canvas,
+ offsetX: offsetX - BORDER_SIZE * scaleX,
+ offsetY: offsetY - BORDER_SIZE * scaleY,
+ scaleX,
+ scaleY
+ };
+ }
+ getPattern(ctx, owner, inverse, pathType) {
+ applyBoundingBox(ctx, this._bbox);
+ let scale;
+ if (pathType === PathType.SHADING) {
+ scale = util.Util.singularValueDecompose2dScale((0,display_utils.getCurrentTransform)(ctx));
+ } else {
+ scale = util.Util.singularValueDecompose2dScale(owner.baseTransform);
+ if (this.matrix) {
+ const matrixScale = util.Util.singularValueDecompose2dScale(this.matrix);
+ scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];
+ }
+ }
+ const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);
+ if (pathType !== PathType.SHADING) {
+ ctx.setTransform(...owner.baseTransform);
+ if (this.matrix) {
+ ctx.transform(...this.matrix);
+ }
+ }
+ ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);
+ ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);
+ return ctx.createPattern(temporaryPatternCanvas.canvas, "no-repeat");
+ }
+}
+class DummyShadingPattern extends BaseShadingPattern {
+ getPattern() {
+ return "hotpink";
+ }
+}
+function getShadingPattern(IR) {
+ switch (IR[0]) {
+ case "RadialAxial":
+ return new RadialAxialShadingPattern(IR);
+ case "Mesh":
+ return new MeshShadingPattern(IR);
+ case "Dummy":
+ return new DummyShadingPattern();
+ }
+ throw new Error(`Unknown IR type: ${IR[0]}`);
+}
+const PaintType = {
+ COLORED: 1,
+ UNCOLORED: 2
+};
+class TilingPattern {
+ static MAX_PATTERN_SIZE = 3000;
+ constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {
+ this.operatorList = IR[2];
+ this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];
+ this.bbox = IR[4];
+ this.xstep = IR[5];
+ this.ystep = IR[6];
+ this.paintType = IR[7];
+ this.tilingType = IR[8];
+ this.color = color;
+ this.ctx = ctx;
+ this.canvasGraphicsFactory = canvasGraphicsFactory;
+ this.baseTransform = baseTransform;
+ }
+ createPatternCanvas(owner) {
+ const operatorList = this.operatorList;
+ const bbox = this.bbox;
+ const xstep = this.xstep;
+ const ystep = this.ystep;
+ const paintType = this.paintType;
+ const tilingType = this.tilingType;
+ const color = this.color;
+ const canvasGraphicsFactory = this.canvasGraphicsFactory;
+ (0,util.info)("TilingType: " + tilingType);
+ const x0 = bbox[0],
+ y0 = bbox[1],
+ x1 = bbox[2],
+ y1 = bbox[3];
+ const matrixScale = util.Util.singularValueDecompose2dScale(this.matrix);
+ const curMatrixScale = util.Util.singularValueDecompose2dScale(this.baseTransform);
+ const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];
+ const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);
+ const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);
+ const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true);
+ const tmpCtx = tmpCanvas.context;
+ const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);
+ graphics.groupLevel = owner.groupLevel;
+ this.setFillAndStrokeStyleToContext(graphics, paintType, color);
+ let adjustedX0 = x0;
+ let adjustedY0 = y0;
+ let adjustedX1 = x1;
+ let adjustedY1 = y1;
+ if (x0 < 0) {
+ adjustedX0 = 0;
+ adjustedX1 += Math.abs(x0);
+ }
+ if (y0 < 0) {
+ adjustedY0 = 0;
+ adjustedY1 += Math.abs(y0);
+ }
+ tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));
+ graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);
+ tmpCtx.save();
+ this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);
+ graphics.baseTransform = (0,display_utils.getCurrentTransform)(graphics.ctx);
+ graphics.executeOperatorList(operatorList);
+ graphics.endDrawing();
+ return {
+ canvas: tmpCanvas.canvas,
+ scaleX: dimx.scale,
+ scaleY: dimy.scale,
+ offsetX: adjustedX0,
+ offsetY: adjustedY0
+ };
+ }
+ getSizeAndScale(step, realOutputSize, scale) {
+ step = Math.abs(step);
+ const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);
+ let size = Math.ceil(step * scale);
+ if (size >= maxSize) {
+ size = maxSize;
+ } else {
+ scale = size / step;
+ }
+ return {
+ scale,
+ size
+ };
+ }
+ clipBbox(graphics, x0, y0, x1, y1) {
+ const bboxWidth = x1 - x0;
+ const bboxHeight = y1 - y0;
+ graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);
+ graphics.current.updateRectMinMax((0,display_utils.getCurrentTransform)(graphics.ctx), [x0, y0, x1, y1]);
+ graphics.clip();
+ graphics.endPath();
+ }
+ setFillAndStrokeStyleToContext(graphics, paintType, color) {
+ const context = graphics.ctx,
+ current = graphics.current;
+ switch (paintType) {
+ case PaintType.COLORED:
+ const ctx = this.ctx;
+ context.fillStyle = ctx.fillStyle;
+ context.strokeStyle = ctx.strokeStyle;
+ current.fillColor = ctx.fillStyle;
+ current.strokeColor = ctx.strokeStyle;
+ break;
+ case PaintType.UNCOLORED:
+ const cssColor = util.Util.makeHexColor(color[0], color[1], color[2]);
+ context.fillStyle = cssColor;
+ context.strokeStyle = cssColor;
+ current.fillColor = cssColor;
+ current.strokeColor = cssColor;
+ break;
+ default:
+ throw new util.FormatError(`Unsupported paint type: ${paintType}`);
+ }
+ }
+ getPattern(ctx, owner, inverse, pathType) {
+ let matrix = inverse;
+ if (pathType !== PathType.SHADING) {
+ matrix = util.Util.transform(matrix, owner.baseTransform);
+ if (this.matrix) {
+ matrix = util.Util.transform(matrix, this.matrix);
+ }
+ }
+ const temporaryPatternCanvas = this.createPatternCanvas(owner);
+ let domMatrix = new DOMMatrix(matrix);
+ domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);
+ domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);
+ const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, "repeat");
+ pattern.setTransform(domMatrix);
+ return pattern;
+ }
+}
+
+;// CONCATENATED MODULE: ./src/shared/image_utils.js
+
+function convertToRGBA(params) {
+ switch (params.kind) {
+ case ImageKind.GRAYSCALE_1BPP:
+ return convertBlackAndWhiteToRGBA(params);
+ case ImageKind.RGB_24BPP:
+ return convertRGBToRGBA(params);
+ }
+ return null;
+}
+function convertBlackAndWhiteToRGBA({
+ src,
+ srcPos = 0,
+ dest,
+ width,
+ height,
+ nonBlackColor = 0xffffffff,
+ inverseDecode = false
+}) {
+ const black = util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;
+ const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];
+ const widthInSource = width >> 3;
+ const widthRemainder = width & 7;
+ const srcLength = src.length;
+ dest = new Uint32Array(dest.buffer);
+ let destPos = 0;
+ for (let i = 0; i < height; i++) {
+ for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {
+ const elem = srcPos < srcLength ? src[srcPos] : 255;
+ dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;
+ dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;
+ }
+ if (widthRemainder === 0) {
+ continue;
+ }
+ const elem = srcPos < srcLength ? src[srcPos++] : 255;
+ for (let j = 0; j < widthRemainder; j++) {
+ dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;
+ }
+ }
+ return {
+ srcPos,
+ destPos
+ };
+}
+function convertRGBToRGBA({
+ src,
+ srcPos = 0,
+ dest,
+ destPos = 0,
+ width,
+ height
+}) {
+ let i = 0;
+ const len32 = src.length >> 2;
+ const src32 = new Uint32Array(src.buffer, srcPos, len32);
+ if (FeatureTest.isLittleEndian) {
+ for (; i < len32 - 2; i += 3, destPos += 4) {
+ const s1 = src32[i];
+ const s2 = src32[i + 1];
+ const s3 = src32[i + 2];
+ dest[destPos] = s1 | 0xff000000;
+ dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;
+ dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;
+ dest[destPos + 3] = s3 >>> 8 | 0xff000000;
+ }
+ for (let j = i * 4, jj = src.length; j < jj; j += 3) {
+ dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;
+ }
+ } else {
+ for (; i < len32 - 2; i += 3, destPos += 4) {
+ const s1 = src32[i];
+ const s2 = src32[i + 1];
+ const s3 = src32[i + 2];
+ dest[destPos] = s1 | 0xff;
+ dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;
+ dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;
+ dest[destPos + 3] = s3 << 8 | 0xff;
+ }
+ for (let j = i * 4, jj = src.length; j < jj; j += 3) {
+ dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;
+ }
+ }
+ return {
+ srcPos,
+ destPos
+ };
+}
+function grayToRGBA(src, dest) {
+ if (FeatureTest.isLittleEndian) {
+ for (let i = 0, ii = src.length; i < ii; i++) {
+ dest[i] = src[i] * 0x10101 | 0xff000000;
+ }
+ } else {
+ for (let i = 0, ii = src.length; i < ii; i++) {
+ dest[i] = src[i] * 0x1010100 | 0x000000ff;
+ }
+ }
+}
+
+;// CONCATENATED MODULE: ./src/display/canvas.js
+
+
+
+
+const MIN_FONT_SIZE = 16;
+const MAX_FONT_SIZE = 100;
+const MAX_GROUP_SIZE = 4096;
+const EXECUTION_TIME = 15;
+const EXECUTION_STEPS = 10;
+const MAX_SIZE_TO_COMPILE = 1000;
+const FULL_CHUNK_HEIGHT = 16;
+function mirrorContextOperations(ctx, destCtx) {
+ if (ctx._removeMirroring) {
+ throw new Error("Context is already forwarding operations.");
+ }
+ ctx.__originalSave = ctx.save;
+ ctx.__originalRestore = ctx.restore;
+ ctx.__originalRotate = ctx.rotate;
+ ctx.__originalScale = ctx.scale;
+ ctx.__originalTranslate = ctx.translate;
+ ctx.__originalTransform = ctx.transform;
+ ctx.__originalSetTransform = ctx.setTransform;
+ ctx.__originalResetTransform = ctx.resetTransform;
+ ctx.__originalClip = ctx.clip;
+ ctx.__originalMoveTo = ctx.moveTo;
+ ctx.__originalLineTo = ctx.lineTo;
+ ctx.__originalBezierCurveTo = ctx.bezierCurveTo;
+ ctx.__originalRect = ctx.rect;
+ ctx.__originalClosePath = ctx.closePath;
+ ctx.__originalBeginPath = ctx.beginPath;
+ ctx._removeMirroring = () => {
+ ctx.save = ctx.__originalSave;
+ ctx.restore = ctx.__originalRestore;
+ ctx.rotate = ctx.__originalRotate;
+ ctx.scale = ctx.__originalScale;
+ ctx.translate = ctx.__originalTranslate;
+ ctx.transform = ctx.__originalTransform;
+ ctx.setTransform = ctx.__originalSetTransform;
+ ctx.resetTransform = ctx.__originalResetTransform;
+ ctx.clip = ctx.__originalClip;
+ ctx.moveTo = ctx.__originalMoveTo;
+ ctx.lineTo = ctx.__originalLineTo;
+ ctx.bezierCurveTo = ctx.__originalBezierCurveTo;
+ ctx.rect = ctx.__originalRect;
+ ctx.closePath = ctx.__originalClosePath;
+ ctx.beginPath = ctx.__originalBeginPath;
+ delete ctx._removeMirroring;
+ };
+ ctx.save = function ctxSave() {
+ destCtx.save();
+ this.__originalSave();
+ };
+ ctx.restore = function ctxRestore() {
+ destCtx.restore();
+ this.__originalRestore();
+ };
+ ctx.translate = function ctxTranslate(x, y) {
+ destCtx.translate(x, y);
+ this.__originalTranslate(x, y);
+ };
+ ctx.scale = function ctxScale(x, y) {
+ destCtx.scale(x, y);
+ this.__originalScale(x, y);
+ };
+ ctx.transform = function ctxTransform(a, b, c, d, e, f) {
+ destCtx.transform(a, b, c, d, e, f);
+ this.__originalTransform(a, b, c, d, e, f);
+ };
+ ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {
+ destCtx.setTransform(a, b, c, d, e, f);
+ this.__originalSetTransform(a, b, c, d, e, f);
+ };
+ ctx.resetTransform = function ctxResetTransform() {
+ destCtx.resetTransform();
+ this.__originalResetTransform();
+ };
+ ctx.rotate = function ctxRotate(angle) {
+ destCtx.rotate(angle);
+ this.__originalRotate(angle);
+ };
+ ctx.clip = function ctxRotate(rule) {
+ destCtx.clip(rule);
+ this.__originalClip(rule);
+ };
+ ctx.moveTo = function (x, y) {
+ destCtx.moveTo(x, y);
+ this.__originalMoveTo(x, y);
+ };
+ ctx.lineTo = function (x, y) {
+ destCtx.lineTo(x, y);
+ this.__originalLineTo(x, y);
+ };
+ ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {
+ destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);
+ this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);
+ };
+ ctx.rect = function (x, y, width, height) {
+ destCtx.rect(x, y, width, height);
+ this.__originalRect(x, y, width, height);
+ };
+ ctx.closePath = function () {
+ destCtx.closePath();
+ this.__originalClosePath();
+ };
+ ctx.beginPath = function () {
+ destCtx.beginPath();
+ this.__originalBeginPath();
+ };
+}
+class CachedCanvases {
+ constructor(canvasFactory) {
+ this.canvasFactory = canvasFactory;
+ this.cache = Object.create(null);
+ }
+ getCanvas(id, width, height) {
+ let canvasEntry;
+ if (this.cache[id] !== undefined) {
+ canvasEntry = this.cache[id];
+ this.canvasFactory.reset(canvasEntry, width, height);
+ } else {
+ canvasEntry = this.canvasFactory.create(width, height);
+ this.cache[id] = canvasEntry;
+ }
+ return canvasEntry;
+ }
+ delete(id) {
+ delete this.cache[id];
+ }
+ clear() {
+ for (const id in this.cache) {
+ const canvasEntry = this.cache[id];
+ this.canvasFactory.destroy(canvasEntry);
+ delete this.cache[id];
+ }
+ }
+}
+function drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {
+ const [a, b, c, d, tx, ty] = (0,display_utils.getCurrentTransform)(ctx);
+ if (b === 0 && c === 0) {
+ const tlX = destX * a + tx;
+ const rTlX = Math.round(tlX);
+ const tlY = destY * d + ty;
+ const rTlY = Math.round(tlY);
+ const brX = (destX + destW) * a + tx;
+ const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;
+ const brY = (destY + destH) * d + ty;
+ const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;
+ ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);
+ ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);
+ ctx.setTransform(a, b, c, d, tx, ty);
+ return [rWidth, rHeight];
+ }
+ if (a === 0 && d === 0) {
+ const tlX = destY * c + tx;
+ const rTlX = Math.round(tlX);
+ const tlY = destX * b + ty;
+ const rTlY = Math.round(tlY);
+ const brX = (destY + destH) * c + tx;
+ const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;
+ const brY = (destX + destW) * b + ty;
+ const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;
+ ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);
+ ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);
+ ctx.setTransform(a, b, c, d, tx, ty);
+ return [rHeight, rWidth];
+ }
+ ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);
+ const scaleX = Math.hypot(a, b);
+ const scaleY = Math.hypot(c, d);
+ return [scaleX * destW, scaleY * destH];
+}
+function compileType3Glyph(imgData) {
+ const {
+ width,
+ height
+ } = imgData;
+ if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {
+ return null;
+ }
+ const POINT_TO_PROCESS_LIMIT = 1000;
+ const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);
+ const width1 = width + 1;
+ let points = new Uint8Array(width1 * (height + 1));
+ let i, j, j0;
+ const lineSize = width + 7 & ~7;
+ let data = new Uint8Array(lineSize * height),
+ pos = 0;
+ for (const elem of imgData.data) {
+ let mask = 128;
+ while (mask > 0) {
+ data[pos++] = elem & mask ? 0 : 255;
+ mask >>= 1;
+ }
+ }
+ let count = 0;
+ pos = 0;
+ if (data[pos] !== 0) {
+ points[0] = 1;
+ ++count;
+ }
+ for (j = 1; j < width; j++) {
+ if (data[pos] !== data[pos + 1]) {
+ points[j] = data[pos] ? 2 : 1;
+ ++count;
+ }
+ pos++;
+ }
+ if (data[pos] !== 0) {
+ points[j] = 2;
+ ++count;
+ }
+ for (i = 1; i < height; i++) {
+ pos = i * lineSize;
+ j0 = i * width1;
+ if (data[pos - lineSize] !== data[pos]) {
+ points[j0] = data[pos] ? 1 : 8;
+ ++count;
+ }
+ let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);
+ for (j = 1; j < width; j++) {
+ sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);
+ if (POINT_TYPES[sum]) {
+ points[j0 + j] = POINT_TYPES[sum];
+ ++count;
+ }
+ pos++;
+ }
+ if (data[pos - lineSize] !== data[pos]) {
+ points[j0 + j] = data[pos] ? 2 : 4;
+ ++count;
+ }
+ if (count > POINT_TO_PROCESS_LIMIT) {
+ return null;
+ }
+ }
+ pos = lineSize * (height - 1);
+ j0 = i * width1;
+ if (data[pos] !== 0) {
+ points[j0] = 8;
+ ++count;
+ }
+ for (j = 1; j < width; j++) {
+ if (data[pos] !== data[pos + 1]) {
+ points[j0 + j] = data[pos] ? 4 : 8;
+ ++count;
+ }
+ pos++;
+ }
+ if (data[pos] !== 0) {
+ points[j0 + j] = 4;
+ ++count;
+ }
+ if (count > POINT_TO_PROCESS_LIMIT) {
+ return null;
+ }
+ const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);
+ const path = new Path2D();
+ for (i = 0; count && i <= height; i++) {
+ let p = i * width1;
+ const end = p + width;
+ while (p < end && !points[p]) {
+ p++;
+ }
+ if (p === end) {
+ continue;
+ }
+ path.moveTo(p % width1, i);
+ const p0 = p;
+ let type = points[p];
+ do {
+ const step = steps[type];
+ do {
+ p += step;
+ } while (!points[p]);
+ const pp = points[p];
+ if (pp !== 5 && pp !== 10) {
+ type = pp;
+ points[p] = 0;
+ } else {
+ type = pp & 0x33 * type >> 4;
+ points[p] &= type >> 2 | type << 2;
+ }
+ path.lineTo(p % width1, p / width1 | 0);
+ if (!points[p]) {
+ --count;
+ }
+ } while (p0 !== p);
+ --i;
+ }
+ data = null;
+ points = null;
+ const drawOutline = function (c) {
+ c.save();
+ c.scale(1 / width, -1 / height);
+ c.translate(0, -height);
+ c.fill(path);
+ c.beginPath();
+ c.restore();
+ };
+ return drawOutline;
+}
+class CanvasExtraState {
+ constructor(width, height) {
+ this.alphaIsShape = false;
+ this.fontSize = 0;
+ this.fontSizeScale = 1;
+ this.textMatrix = util.IDENTITY_MATRIX;
+ this.textMatrixScale = 1;
+ this.fontMatrix = util.FONT_IDENTITY_MATRIX;
+ this.leading = 0;
+ this.x = 0;
+ this.y = 0;
+ this.lineX = 0;
+ this.lineY = 0;
+ this.charSpacing = 0;
+ this.wordSpacing = 0;
+ this.textHScale = 1;
+ this.textRenderingMode = util.TextRenderingMode.FILL;
+ this.textRise = 0;
+ this.fillColor = "#000000";
+ this.strokeColor = "#000000";
+ this.patternFill = false;
+ this.fillAlpha = 1;
+ this.strokeAlpha = 1;
+ this.lineWidth = 1;
+ this.activeSMask = null;
+ this.transferMaps = "none";
+ this.startNewPathAndClipBox([0, 0, width, height]);
+ }
+ clone() {
+ const clone = Object.create(this);
+ clone.clipBox = this.clipBox.slice();
+ return clone;
+ }
+ setCurrentPoint(x, y) {
+ this.x = x;
+ this.y = y;
+ }
+ updatePathMinMax(transform, x, y) {
+ [x, y] = util.Util.applyTransform([x, y], transform);
+ this.minX = Math.min(this.minX, x);
+ this.minY = Math.min(this.minY, y);
+ this.maxX = Math.max(this.maxX, x);
+ this.maxY = Math.max(this.maxY, y);
+ }
+ updateRectMinMax(transform, rect) {
+ const p1 = util.Util.applyTransform(rect, transform);
+ const p2 = util.Util.applyTransform(rect.slice(2), transform);
+ const p3 = util.Util.applyTransform([rect[0], rect[3]], transform);
+ const p4 = util.Util.applyTransform([rect[2], rect[1]], transform);
+ this.minX = Math.min(this.minX, p1[0], p2[0], p3[0], p4[0]);
+ this.minY = Math.min(this.minY, p1[1], p2[1], p3[1], p4[1]);
+ this.maxX = Math.max(this.maxX, p1[0], p2[0], p3[0], p4[0]);
+ this.maxY = Math.max(this.maxY, p1[1], p2[1], p3[1], p4[1]);
+ }
+ updateScalingPathMinMax(transform, minMax) {
+ util.Util.scaleMinMax(transform, minMax);
+ this.minX = Math.min(this.minX, minMax[0]);
+ this.maxX = Math.max(this.maxX, minMax[1]);
+ this.minY = Math.min(this.minY, minMax[2]);
+ this.maxY = Math.max(this.maxY, minMax[3]);
+ }
+ updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {
+ const box = util.Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);
+ if (minMax) {
+ minMax[0] = Math.min(minMax[0], box[0], box[2]);
+ minMax[1] = Math.max(minMax[1], box[0], box[2]);
+ minMax[2] = Math.min(minMax[2], box[1], box[3]);
+ minMax[3] = Math.max(minMax[3], box[1], box[3]);
+ return;
+ }
+ this.updateRectMinMax(transform, box);
+ }
+ getPathBoundingBox(pathType = PathType.FILL, transform = null) {
+ const box = [this.minX, this.minY, this.maxX, this.maxY];
+ if (pathType === PathType.STROKE) {
+ if (!transform) {
+ (0,util.unreachable)("Stroke bounding box must include transform.");
+ }
+ const scale = util.Util.singularValueDecompose2dScale(transform);
+ const xStrokePad = scale[0] * this.lineWidth / 2;
+ const yStrokePad = scale[1] * this.lineWidth / 2;
+ box[0] -= xStrokePad;
+ box[1] -= yStrokePad;
+ box[2] += xStrokePad;
+ box[3] += yStrokePad;
+ }
+ return box;
+ }
+ updateClipFromPath() {
+ const intersect = util.Util.intersect(this.clipBox, this.getPathBoundingBox());
+ this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);
+ }
+ isEmptyClip() {
+ return this.minX === Infinity;
+ }
+ startNewPathAndClipBox(box) {
+ this.clipBox = box;
+ this.minX = Infinity;
+ this.minY = Infinity;
+ this.maxX = 0;
+ this.maxY = 0;
+ }
+ getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {
+ return util.Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));
+ }
+}
+function putBinaryImageData(ctx, imgData) {
+ if (typeof ImageData !== "undefined" && imgData instanceof ImageData) {
+ ctx.putImageData(imgData, 0, 0);
+ return;
+ }
+ const height = imgData.height,
+ width = imgData.width;
+ const partialChunkHeight = height % FULL_CHUNK_HEIGHT;
+ const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
+ const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
+ const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
+ let srcPos = 0,
+ destPos;
+ const src = imgData.data;
+ const dest = chunkImgData.data;
+ let i, j, thisChunkHeight, elemsInThisChunk;
+ if (imgData.kind === util.ImageKind.GRAYSCALE_1BPP) {
+ const srcLength = src.byteLength;
+ const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);
+ const dest32DataLength = dest32.length;
+ const fullSrcDiff = width + 7 >> 3;
+ const white = 0xffffffff;
+ const black = util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;
+ for (i = 0; i < totalChunks; i++) {
+ thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
+ destPos = 0;
+ for (j = 0; j < thisChunkHeight; j++) {
+ const srcDiff = srcLength - srcPos;
+ let k = 0;
+ const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;
+ const kEndUnrolled = kEnd & ~7;
+ let mask = 0;
+ let srcByte = 0;
+ for (; k < kEndUnrolled; k += 8) {
+ srcByte = src[srcPos++];
+ dest32[destPos++] = srcByte & 128 ? white : black;
+ dest32[destPos++] = srcByte & 64 ? white : black;
+ dest32[destPos++] = srcByte & 32 ? white : black;
+ dest32[destPos++] = srcByte & 16 ? white : black;
+ dest32[destPos++] = srcByte & 8 ? white : black;
+ dest32[destPos++] = srcByte & 4 ? white : black;
+ dest32[destPos++] = srcByte & 2 ? white : black;
+ dest32[destPos++] = srcByte & 1 ? white : black;
+ }
+ for (; k < kEnd; k++) {
+ if (mask === 0) {
+ srcByte = src[srcPos++];
+ mask = 128;
+ }
+ dest32[destPos++] = srcByte & mask ? white : black;
+ mask >>= 1;
+ }
+ }
+ while (destPos < dest32DataLength) {
+ dest32[destPos++] = 0;
+ }
+ ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
+ }
+ } else if (imgData.kind === util.ImageKind.RGBA_32BPP) {
+ j = 0;
+ elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;
+ for (i = 0; i < fullChunks; i++) {
+ dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
+ srcPos += elemsInThisChunk;
+ ctx.putImageData(chunkImgData, 0, j);
+ j += FULL_CHUNK_HEIGHT;
+ }
+ if (i < totalChunks) {
+ elemsInThisChunk = width * partialChunkHeight * 4;
+ dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
+ ctx.putImageData(chunkImgData, 0, j);
+ }
+ } else if (imgData.kind === util.ImageKind.RGB_24BPP) {
+ thisChunkHeight = FULL_CHUNK_HEIGHT;
+ elemsInThisChunk = width * thisChunkHeight;
+ for (i = 0; i < totalChunks; i++) {
+ if (i >= fullChunks) {
+ thisChunkHeight = partialChunkHeight;
+ elemsInThisChunk = width * thisChunkHeight;
+ }
+ destPos = 0;
+ for (j = elemsInThisChunk; j--;) {
+ dest[destPos++] = src[srcPos++];
+ dest[destPos++] = src[srcPos++];
+ dest[destPos++] = src[srcPos++];
+ dest[destPos++] = 255;
+ }
+ ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
+ }
+ } else {
+ throw new Error(`bad image kind: ${imgData.kind}`);
+ }
+}
+function putBinaryImageMask(ctx, imgData) {
+ if (imgData.bitmap) {
+ ctx.drawImage(imgData.bitmap, 0, 0);
+ return;
+ }
+ const height = imgData.height,
+ width = imgData.width;
+ const partialChunkHeight = height % FULL_CHUNK_HEIGHT;
+ const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
+ const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
+ const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
+ let srcPos = 0;
+ const src = imgData.data;
+ const dest = chunkImgData.data;
+ for (let i = 0; i < totalChunks; i++) {
+ const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
+ ({
+ srcPos
+ } = convertBlackAndWhiteToRGBA({
+ src,
+ srcPos,
+ dest,
+ width,
+ height: thisChunkHeight,
+ nonBlackColor: 0
+ }));
+ ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
+ }
+}
+function copyCtxState(sourceCtx, destCtx) {
+ const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font", "filter"];
+ for (const property of properties) {
+ if (sourceCtx[property] !== undefined) {
+ destCtx[property] = sourceCtx[property];
+ }
+ }
+ if (sourceCtx.setLineDash !== undefined) {
+ destCtx.setLineDash(sourceCtx.getLineDash());
+ destCtx.lineDashOffset = sourceCtx.lineDashOffset;
+ }
+}
+function resetCtxToDefault(ctx) {
+ ctx.strokeStyle = ctx.fillStyle = "#000000";
+ ctx.fillRule = "nonzero";
+ ctx.globalAlpha = 1;
+ ctx.lineWidth = 1;
+ ctx.lineCap = "butt";
+ ctx.lineJoin = "miter";
+ ctx.miterLimit = 10;
+ ctx.globalCompositeOperation = "source-over";
+ ctx.font = "10px sans-serif";
+ if (ctx.setLineDash !== undefined) {
+ ctx.setLineDash([]);
+ ctx.lineDashOffset = 0;
+ }
+ if (!util.isNodeJS) {
+ const {
+ filter
+ } = ctx;
+ if (filter !== "none" && filter !== "") {
+ ctx.filter = "none";
+ }
+ }
+}
+function composeSMaskBackdrop(bytes, r0, g0, b0) {
+ const length = bytes.length;
+ for (let i = 3; i < length; i += 4) {
+ const alpha = bytes[i];
+ if (alpha === 0) {
+ bytes[i - 3] = r0;
+ bytes[i - 2] = g0;
+ bytes[i - 1] = b0;
+ } else if (alpha < 255) {
+ const alpha_ = 255 - alpha;
+ bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;
+ bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;
+ bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;
+ }
+ }
+}
+function composeSMaskAlpha(maskData, layerData, transferMap) {
+ const length = maskData.length;
+ const scale = 1 / 255;
+ for (let i = 3; i < length; i += 4) {
+ const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];
+ layerData[i] = layerData[i] * alpha * scale | 0;
+ }
+}
+function composeSMaskLuminosity(maskData, layerData, transferMap) {
+ const length = maskData.length;
+ for (let i = 3; i < length; i += 4) {
+ const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;
+ layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;
+ }
+}
+function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {
+ const hasBackdrop = !!backdrop;
+ const r0 = hasBackdrop ? backdrop[0] : 0;
+ const g0 = hasBackdrop ? backdrop[1] : 0;
+ const b0 = hasBackdrop ? backdrop[2] : 0;
+ const composeFn = subtype === "Luminosity" ? composeSMaskLuminosity : composeSMaskAlpha;
+ const PIXELS_TO_PROCESS = 1048576;
+ const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));
+ for (let row = 0; row < height; row += chunkSize) {
+ const chunkHeight = Math.min(chunkSize, height - row);
+ const maskData = maskCtx.getImageData(layerOffsetX - maskOffsetX, row + (layerOffsetY - maskOffsetY), width, chunkHeight);
+ const layerData = layerCtx.getImageData(layerOffsetX, row + layerOffsetY, width, chunkHeight);
+ if (hasBackdrop) {
+ composeSMaskBackdrop(maskData.data, r0, g0, b0);
+ }
+ composeFn(maskData.data, layerData.data, transferMap);
+ layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);
+ }
+}
+function composeSMask(ctx, smask, layerCtx, layerBox) {
+ const layerOffsetX = layerBox[0];
+ const layerOffsetY = layerBox[1];
+ const layerWidth = layerBox[2] - layerOffsetX;
+ const layerHeight = layerBox[3] - layerOffsetY;
+ if (layerWidth === 0 || layerHeight === 0) {
+ return;
+ }
+ genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);
+ ctx.save();
+ ctx.globalAlpha = 1;
+ ctx.globalCompositeOperation = "source-over";
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
+ ctx.drawImage(layerCtx.canvas, 0, 0);
+ ctx.restore();
+}
+function getImageSmoothingEnabled(transform, interpolate) {
+ const scale = util.Util.singularValueDecompose2dScale(transform);
+ scale[0] = Math.fround(scale[0]);
+ scale[1] = Math.fround(scale[1]);
+ const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * display_utils.PixelsPerInch.PDF_TO_CSS_UNITS);
+ if (interpolate !== undefined) {
+ return interpolate;
+ } else if (scale[0] <= actualScale || scale[1] <= actualScale) {
+ return true;
+ }
+ return false;
+}
+const LINE_CAP_STYLES = ["butt", "round", "square"];
+const LINE_JOIN_STYLES = ["miter", "round", "bevel"];
+const NORMAL_CLIP = {};
+const EO_CLIP = {};
+class CanvasGraphics {
+ constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {
+ optionalContentConfig,
+ markedContentStack = null
+ }, annotationCanvasMap, pageColors) {
+ this.ctx = canvasCtx;
+ this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);
+ this.stateStack = [];
+ this.pendingClip = null;
+ this.pendingEOFill = false;
+ this.res = null;
+ this.xobjs = null;
+ this.commonObjs = commonObjs;
+ this.objs = objs;
+ this.canvasFactory = canvasFactory;
+ this.filterFactory = filterFactory;
+ this.groupStack = [];
+ this.processingType3 = null;
+ this.baseTransform = null;
+ this.baseTransformStack = [];
+ this.groupLevel = 0;
+ this.smaskStack = [];
+ this.smaskCounter = 0;
+ this.tempSMask = null;
+ this.suspendedCtx = null;
+ this.contentVisible = true;
+ this.markedContentStack = markedContentStack || [];
+ this.optionalContentConfig = optionalContentConfig;
+ this.cachedCanvases = new CachedCanvases(this.canvasFactory);
+ this.cachedPatterns = new Map();
+ this.annotationCanvasMap = annotationCanvasMap;
+ this.viewportScale = 1;
+ this.outputScaleX = 1;
+ this.outputScaleY = 1;
+ this.pageColors = pageColors;
+ this._cachedScaleForStroking = [-1, 0];
+ this._cachedGetSinglePixelWidth = null;
+ this._cachedBitmapsMap = new Map();
+ }
+ getObject(data, fallback = null) {
+ if (typeof data === "string") {
+ return data.startsWith("g_") ? this.commonObjs.get(data) : this.objs.get(data);
+ }
+ return fallback;
+ }
+ beginDrawing({
+ transform,
+ viewport,
+ transparency = false,
+ background = null
+ }) {
+ const width = this.ctx.canvas.width;
+ const height = this.ctx.canvas.height;
+ const savedFillStyle = this.ctx.fillStyle;
+ this.ctx.fillStyle = background || "#ffffff";
+ this.ctx.fillRect(0, 0, width, height);
+ this.ctx.fillStyle = savedFillStyle;
+ if (transparency) {
+ const transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height);
+ this.compositeCtx = this.ctx;
+ this.transparentCanvas = transparentCanvas.canvas;
+ this.ctx = transparentCanvas.context;
+ this.ctx.save();
+ this.ctx.transform(...(0,display_utils.getCurrentTransform)(this.compositeCtx));
+ }
+ this.ctx.save();
+ resetCtxToDefault(this.ctx);
+ if (transform) {
+ this.ctx.transform(...transform);
+ this.outputScaleX = transform[0];
+ this.outputScaleY = transform[0];
+ }
+ this.ctx.transform(...viewport.transform);
+ this.viewportScale = viewport.scale;
+ this.baseTransform = (0,display_utils.getCurrentTransform)(this.ctx);
+ }
+ executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {
+ const argsArray = operatorList.argsArray;
+ const fnArray = operatorList.fnArray;
+ let i = executionStartIdx || 0;
+ const argsArrayLen = argsArray.length;
+ if (argsArrayLen === i) {
+ return i;
+ }
+ const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function";
+ const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;
+ let steps = 0;
+ const commonObjs = this.commonObjs;
+ const objs = this.objs;
+ let fnId;
+ while (true) {
+ if (stepper !== undefined && i === stepper.nextBreakPoint) {
+ stepper.breakIt(i, continueCallback);
+ return i;
+ }
+ fnId = fnArray[i];
+ if (fnId !== util.OPS.dependency) {
+ this[fnId].apply(this, argsArray[i]);
+ } else {
+ for (const depObjId of argsArray[i]) {
+ const objsPool = depObjId.startsWith("g_") ? commonObjs : objs;
+ if (!objsPool.has(depObjId)) {
+ objsPool.get(depObjId, continueCallback);
+ return i;
+ }
+ }
+ }
+ i++;
+ if (i === argsArrayLen) {
+ return i;
+ }
+ if (chunkOperations && ++steps > EXECUTION_STEPS) {
+ if (Date.now() > endTime) {
+ continueCallback();
+ return i;
+ }
+ steps = 0;
+ }
+ }
+ }
+ #restoreInitialState() {
+ while (this.stateStack.length || this.inSMaskMode) {
+ this.restore();
+ }
+ this.ctx.restore();
+ if (this.transparentCanvas) {
+ this.ctx = this.compositeCtx;
+ this.ctx.save();
+ this.ctx.setTransform(1, 0, 0, 1, 0, 0);
+ this.ctx.drawImage(this.transparentCanvas, 0, 0);
+ this.ctx.restore();
+ this.transparentCanvas = null;
+ }
+ }
+ endDrawing() {
+ this.#restoreInitialState();
+ this.cachedCanvases.clear();
+ this.cachedPatterns.clear();
+ for (const cache of this._cachedBitmapsMap.values()) {
+ for (const canvas of cache.values()) {
+ if (typeof HTMLCanvasElement !== "undefined" && canvas instanceof HTMLCanvasElement) {
+ canvas.width = canvas.height = 0;
+ }
+ }
+ cache.clear();
+ }
+ this._cachedBitmapsMap.clear();
+ this.#drawFilter();
+ }
+ #drawFilter() {
+ if (this.pageColors) {
+ const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);
+ if (hcmFilterId !== "none") {
+ const savedFilter = this.ctx.filter;
+ this.ctx.filter = hcmFilterId;
+ this.ctx.drawImage(this.ctx.canvas, 0, 0);
+ this.ctx.filter = savedFilter;
+ }
+ }
+ }
+ _scaleImage(img, inverseTransform) {
+ const width = img.width;
+ const height = img.height;
+ let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);
+ let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);
+ let paintWidth = width,
+ paintHeight = height;
+ let tmpCanvasId = "prescale1";
+ let tmpCanvas, tmpCtx;
+ while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {
+ let newWidth = paintWidth,
+ newHeight = paintHeight;
+ if (widthScale > 2 && paintWidth > 1) {
+ newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);
+ widthScale /= paintWidth / newWidth;
+ }
+ if (heightScale > 2 && paintHeight > 1) {
+ newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;
+ heightScale /= paintHeight / newHeight;
+ }
+ tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);
+ tmpCtx = tmpCanvas.context;
+ tmpCtx.clearRect(0, 0, newWidth, newHeight);
+ tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);
+ img = tmpCanvas.canvas;
+ paintWidth = newWidth;
+ paintHeight = newHeight;
+ tmpCanvasId = tmpCanvasId === "prescale1" ? "prescale2" : "prescale1";
+ }
+ return {
+ img,
+ paintWidth,
+ paintHeight
+ };
+ }
+ _createMaskCanvas(img) {
+ const ctx = this.ctx;
+ const {
+ width,
+ height
+ } = img;
+ const fillColor = this.current.fillColor;
+ const isPatternFill = this.current.patternFill;
+ const currentTransform = (0,display_utils.getCurrentTransform)(ctx);
+ let cache, cacheKey, scaled, maskCanvas;
+ if ((img.bitmap || img.data) && img.count > 1) {
+ const mainKey = img.bitmap || img.data.buffer;
+ cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);
+ cache = this._cachedBitmapsMap.get(mainKey);
+ if (!cache) {
+ cache = new Map();
+ this._cachedBitmapsMap.set(mainKey, cache);
+ }
+ const cachedImage = cache.get(cacheKey);
+ if (cachedImage && !isPatternFill) {
+ const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);
+ const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);
+ return {
+ canvas: cachedImage,
+ offsetX,
+ offsetY
+ };
+ }
+ scaled = cachedImage;
+ }
+ if (!scaled) {
+ maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
+ putBinaryImageMask(maskCanvas.context, img);
+ }
+ let maskToCanvas = util.Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);
+ maskToCanvas = util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);
+ const [minX, minY, maxX, maxY] = util.Util.getAxialAlignedBoundingBox([0, 0, width, height], maskToCanvas);
+ const drawnWidth = Math.round(maxX - minX) || 1;
+ const drawnHeight = Math.round(maxY - minY) || 1;
+ const fillCanvas = this.cachedCanvases.getCanvas("fillCanvas", drawnWidth, drawnHeight);
+ const fillCtx = fillCanvas.context;
+ const offsetX = minX;
+ const offsetY = minY;
+ fillCtx.translate(-offsetX, -offsetY);
+ fillCtx.transform(...maskToCanvas);
+ if (!scaled) {
+ scaled = this._scaleImage(maskCanvas.canvas, (0,display_utils.getCurrentTransformInverse)(fillCtx));
+ scaled = scaled.img;
+ if (cache && isPatternFill) {
+ cache.set(cacheKey, scaled);
+ }
+ }
+ fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled((0,display_utils.getCurrentTransform)(fillCtx), img.interpolate);
+ drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);
+ fillCtx.globalCompositeOperation = "source-in";
+ const inverse = util.Util.transform((0,display_utils.getCurrentTransformInverse)(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);
+ fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL) : fillColor;
+ fillCtx.fillRect(0, 0, width, height);
+ if (cache && !isPatternFill) {
+ this.cachedCanvases.delete("fillCanvas");
+ cache.set(cacheKey, fillCanvas.canvas);
+ }
+ return {
+ canvas: fillCanvas.canvas,
+ offsetX: Math.round(offsetX),
+ offsetY: Math.round(offsetY)
+ };
+ }
+ setLineWidth(width) {
+ if (width !== this.current.lineWidth) {
+ this._cachedScaleForStroking[0] = -1;
+ }
+ this.current.lineWidth = width;
+ this.ctx.lineWidth = width;
+ }
+ setLineCap(style) {
+ this.ctx.lineCap = LINE_CAP_STYLES[style];
+ }
+ setLineJoin(style) {
+ this.ctx.lineJoin = LINE_JOIN_STYLES[style];
+ }
+ setMiterLimit(limit) {
+ this.ctx.miterLimit = limit;
+ }
+ setDash(dashArray, dashPhase) {
+ const ctx = this.ctx;
+ if (ctx.setLineDash !== undefined) {
+ ctx.setLineDash(dashArray);
+ ctx.lineDashOffset = dashPhase;
+ }
+ }
+ setRenderingIntent(intent) {}
+ setFlatness(flatness) {}
+ setGState(states) {
+ for (const [key, value] of states) {
+ switch (key) {
+ case "LW":
+ this.setLineWidth(value);
+ break;
+ case "LC":
+ this.setLineCap(value);
+ break;
+ case "LJ":
+ this.setLineJoin(value);
+ break;
+ case "ML":
+ this.setMiterLimit(value);
+ break;
+ case "D":
+ this.setDash(value[0], value[1]);
+ break;
+ case "RI":
+ this.setRenderingIntent(value);
+ break;
+ case "FL":
+ this.setFlatness(value);
+ break;
+ case "Font":
+ this.setFont(value[0], value[1]);
+ break;
+ case "CA":
+ this.current.strokeAlpha = value;
+ break;
+ case "ca":
+ this.current.fillAlpha = value;
+ this.ctx.globalAlpha = value;
+ break;
+ case "BM":
+ this.ctx.globalCompositeOperation = value;
+ break;
+ case "SMask":
+ this.current.activeSMask = value ? this.tempSMask : null;
+ this.tempSMask = null;
+ this.checkSMaskState();
+ break;
+ case "TR":
+ this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);
+ break;
+ }
+ }
+ }
+ get inSMaskMode() {
+ return !!this.suspendedCtx;
+ }
+ checkSMaskState() {
+ const inSMaskMode = this.inSMaskMode;
+ if (this.current.activeSMask && !inSMaskMode) {
+ this.beginSMaskMode();
+ } else if (!this.current.activeSMask && inSMaskMode) {
+ this.endSMaskMode();
+ }
+ }
+ beginSMaskMode() {
+ if (this.inSMaskMode) {
+ throw new Error("beginSMaskMode called while already in smask mode");
+ }
+ const drawnWidth = this.ctx.canvas.width;
+ const drawnHeight = this.ctx.canvas.height;
+ const cacheId = "smaskGroupAt" + this.groupLevel;
+ const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);
+ this.suspendedCtx = this.ctx;
+ this.ctx = scratchCanvas.context;
+ const ctx = this.ctx;
+ ctx.setTransform(...(0,display_utils.getCurrentTransform)(this.suspendedCtx));
+ copyCtxState(this.suspendedCtx, ctx);
+ mirrorContextOperations(ctx, this.suspendedCtx);
+ this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]);
+ }
+ endSMaskMode() {
+ if (!this.inSMaskMode) {
+ throw new Error("endSMaskMode called while not in smask mode");
+ }
+ this.ctx._removeMirroring();
+ copyCtxState(this.ctx, this.suspendedCtx);
+ this.ctx = this.suspendedCtx;
+ this.suspendedCtx = null;
+ }
+ compose(dirtyBox) {
+ if (!this.current.activeSMask) {
+ return;
+ }
+ if (!dirtyBox) {
+ dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];
+ } else {
+ dirtyBox[0] = Math.floor(dirtyBox[0]);
+ dirtyBox[1] = Math.floor(dirtyBox[1]);
+ dirtyBox[2] = Math.ceil(dirtyBox[2]);
+ dirtyBox[3] = Math.ceil(dirtyBox[3]);
+ }
+ const smask = this.current.activeSMask;
+ const suspendedCtx = this.suspendedCtx;
+ composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);
+ this.ctx.save();
+ this.ctx.setTransform(1, 0, 0, 1, 0, 0);
+ this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);
+ this.ctx.restore();
+ }
+ save() {
+ if (this.inSMaskMode) {
+ copyCtxState(this.ctx, this.suspendedCtx);
+ this.suspendedCtx.save();
+ } else {
+ this.ctx.save();
+ }
+ const old = this.current;
+ this.stateStack.push(old);
+ this.current = old.clone();
+ }
+ restore() {
+ if (this.stateStack.length === 0 && this.inSMaskMode) {
+ this.endSMaskMode();
+ }
+ if (this.stateStack.length !== 0) {
+ this.current = this.stateStack.pop();
+ if (this.inSMaskMode) {
+ this.suspendedCtx.restore();
+ copyCtxState(this.suspendedCtx, this.ctx);
+ } else {
+ this.ctx.restore();
+ }
+ this.checkSMaskState();
+ this.pendingClip = null;
+ this._cachedScaleForStroking[0] = -1;
+ this._cachedGetSinglePixelWidth = null;
+ }
+ }
+ transform(a, b, c, d, e, f) {
+ this.ctx.transform(a, b, c, d, e, f);
+ this._cachedScaleForStroking[0] = -1;
+ this._cachedGetSinglePixelWidth = null;
+ }
+ constructPath(ops, args, minMax) {
+ const ctx = this.ctx;
+ const current = this.current;
+ let x = current.x,
+ y = current.y;
+ let startX, startY;
+ const currentTransform = (0,display_utils.getCurrentTransform)(ctx);
+ const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;
+ const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;
+ for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {
+ switch (ops[i] | 0) {
+ case util.OPS.rectangle:
+ x = args[j++];
+ y = args[j++];
+ const width = args[j++];
+ const height = args[j++];
+ const xw = x + width;
+ const yh = y + height;
+ ctx.moveTo(x, y);
+ if (width === 0 || height === 0) {
+ ctx.lineTo(xw, yh);
+ } else {
+ ctx.lineTo(xw, y);
+ ctx.lineTo(xw, yh);
+ ctx.lineTo(x, yh);
+ }
+ if (!isScalingMatrix) {
+ current.updateRectMinMax(currentTransform, [x, y, xw, yh]);
+ }
+ ctx.closePath();
+ break;
+ case util.OPS.moveTo:
+ x = args[j++];
+ y = args[j++];
+ ctx.moveTo(x, y);
+ if (!isScalingMatrix) {
+ current.updatePathMinMax(currentTransform, x, y);
+ }
+ break;
+ case util.OPS.lineTo:
+ x = args[j++];
+ y = args[j++];
+ ctx.lineTo(x, y);
+ if (!isScalingMatrix) {
+ current.updatePathMinMax(currentTransform, x, y);
+ }
+ break;
+ case util.OPS.curveTo:
+ startX = x;
+ startY = y;
+ x = args[j + 4];
+ y = args[j + 5];
+ ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);
+ current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);
+ j += 6;
+ break;
+ case util.OPS.curveTo2:
+ startX = x;
+ startY = y;
+ ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);
+ current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);
+ x = args[j + 2];
+ y = args[j + 3];
+ j += 4;
+ break;
+ case util.OPS.curveTo3:
+ startX = x;
+ startY = y;
+ x = args[j + 2];
+ y = args[j + 3];
+ ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);
+ current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);
+ j += 4;
+ break;
+ case util.OPS.closePath:
+ ctx.closePath();
+ break;
+ }
+ }
+ if (isScalingMatrix) {
+ current.updateScalingPathMinMax(currentTransform, minMaxForBezier);
+ }
+ current.setCurrentPoint(x, y);
+ }
+ closePath() {
+ this.ctx.closePath();
+ }
+ stroke(consumePath = true) {
+ const ctx = this.ctx;
+ const strokeColor = this.current.strokeColor;
+ ctx.globalAlpha = this.current.strokeAlpha;
+ if (this.contentVisible) {
+ if (typeof strokeColor === "object" && strokeColor?.getPattern) {
+ ctx.save();
+ ctx.strokeStyle = strokeColor.getPattern(ctx, this, (0,display_utils.getCurrentTransformInverse)(ctx), PathType.STROKE);
+ this.rescaleAndStroke(false);
+ ctx.restore();
+ } else {
+ this.rescaleAndStroke(true);
+ }
+ }
+ if (consumePath) {
+ this.consumePath(this.current.getClippedPathBoundingBox());
+ }
+ ctx.globalAlpha = this.current.fillAlpha;
+ }
+ closeStroke() {
+ this.closePath();
+ this.stroke();
+ }
+ fill(consumePath = true) {
+ const ctx = this.ctx;
+ const fillColor = this.current.fillColor;
+ const isPatternFill = this.current.patternFill;
+ let needRestore = false;
+ if (isPatternFill) {
+ ctx.save();
+ ctx.fillStyle = fillColor.getPattern(ctx, this, (0,display_utils.getCurrentTransformInverse)(ctx), PathType.FILL);
+ needRestore = true;
+ }
+ const intersect = this.current.getClippedPathBoundingBox();
+ if (this.contentVisible && intersect !== null) {
+ if (this.pendingEOFill) {
+ ctx.fill("evenodd");
+ this.pendingEOFill = false;
+ } else {
+ ctx.fill();
+ }
+ }
+ if (needRestore) {
+ ctx.restore();
+ }
+ if (consumePath) {
+ this.consumePath(intersect);
+ }
+ }
+ eoFill() {
+ this.pendingEOFill = true;
+ this.fill();
+ }
+ fillStroke() {
+ this.fill(false);
+ this.stroke(false);
+ this.consumePath();
+ }
+ eoFillStroke() {
+ this.pendingEOFill = true;
+ this.fillStroke();
+ }
+ closeFillStroke() {
+ this.closePath();
+ this.fillStroke();
+ }
+ closeEOFillStroke() {
+ this.pendingEOFill = true;
+ this.closePath();
+ this.fillStroke();
+ }
+ endPath() {
+ this.consumePath();
+ }
+ clip() {
+ this.pendingClip = NORMAL_CLIP;
+ }
+ eoClip() {
+ this.pendingClip = EO_CLIP;
+ }
+ beginText() {
+ this.current.textMatrix = util.IDENTITY_MATRIX;
+ this.current.textMatrixScale = 1;
+ this.current.x = this.current.lineX = 0;
+ this.current.y = this.current.lineY = 0;
+ }
+ endText() {
+ const paths = this.pendingTextPaths;
+ const ctx = this.ctx;
+ if (paths === undefined) {
+ ctx.beginPath();
+ return;
+ }
+ ctx.save();
+ ctx.beginPath();
+ for (const path of paths) {
+ ctx.setTransform(...path.transform);
+ ctx.translate(path.x, path.y);
+ path.addToPath(ctx, path.fontSize);
+ }
+ ctx.restore();
+ ctx.clip();
+ ctx.beginPath();
+ delete this.pendingTextPaths;
+ }
+ setCharSpacing(spacing) {
+ this.current.charSpacing = spacing;
+ }
+ setWordSpacing(spacing) {
+ this.current.wordSpacing = spacing;
+ }
+ setHScale(scale) {
+ this.current.textHScale = scale / 100;
+ }
+ setLeading(leading) {
+ this.current.leading = -leading;
+ }
+ setFont(fontRefName, size) {
+ const fontObj = this.commonObjs.get(fontRefName);
+ const current = this.current;
+ if (!fontObj) {
+ throw new Error(`Can't find font for ${fontRefName}`);
+ }
+ current.fontMatrix = fontObj.fontMatrix || util.FONT_IDENTITY_MATRIX;
+ if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {
+ (0,util.warn)("Invalid font matrix for font " + fontRefName);
+ }
+ if (size < 0) {
+ size = -size;
+ current.fontDirection = -1;
+ } else {
+ current.fontDirection = 1;
+ }
+ this.current.font = fontObj;
+ this.current.fontSize = size;
+ if (fontObj.isType3Font) {
+ return;
+ }
+ const name = fontObj.loadedName || "sans-serif";
+ const typeface = fontObj.systemFontInfo?.css || `"${name}", ${fontObj.fallbackName}`;
+ let bold = "normal";
+ if (fontObj.black) {
+ bold = "900";
+ } else if (fontObj.bold) {
+ bold = "bold";
+ }
+ const italic = fontObj.italic ? "italic" : "normal";
+ let browserFontSize = size;
+ if (size < MIN_FONT_SIZE) {
+ browserFontSize = MIN_FONT_SIZE;
+ } else if (size > MAX_FONT_SIZE) {
+ browserFontSize = MAX_FONT_SIZE;
+ }
+ this.current.fontSizeScale = size / browserFontSize;
+ this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;
+ }
+ setTextRenderingMode(mode) {
+ this.current.textRenderingMode = mode;
+ }
+ setTextRise(rise) {
+ this.current.textRise = rise;
+ }
+ moveText(x, y) {
+ this.current.x = this.current.lineX += x;
+ this.current.y = this.current.lineY += y;
+ }
+ setLeadingMoveText(x, y) {
+ this.setLeading(-y);
+ this.moveText(x, y);
+ }
+ setTextMatrix(a, b, c, d, e, f) {
+ this.current.textMatrix = [a, b, c, d, e, f];
+ this.current.textMatrixScale = Math.hypot(a, b);
+ this.current.x = this.current.lineX = 0;
+ this.current.y = this.current.lineY = 0;
+ }
+ nextLine() {
+ this.moveText(0, this.current.leading);
+ }
+ paintChar(character, x, y, patternTransform) {
+ const ctx = this.ctx;
+ const current = this.current;
+ const font = current.font;
+ const textRenderingMode = current.textRenderingMode;
+ const fontSize = current.fontSize / current.fontSizeScale;
+ const fillStrokeMode = textRenderingMode & util.TextRenderingMode.FILL_STROKE_MASK;
+ const isAddToPathSet = !!(textRenderingMode & util.TextRenderingMode.ADD_TO_PATH_FLAG);
+ const patternFill = current.patternFill && !font.missingFile;
+ let addToPath;
+ if (font.disableFontFace || isAddToPathSet || patternFill) {
+ addToPath = font.getPathGenerator(this.commonObjs, character);
+ }
+ if (font.disableFontFace || patternFill) {
+ ctx.save();
+ ctx.translate(x, y);
+ ctx.beginPath();
+ addToPath(ctx, fontSize);
+ if (patternTransform) {
+ ctx.setTransform(...patternTransform);
+ }
+ if (fillStrokeMode === util.TextRenderingMode.FILL || fillStrokeMode === util.TextRenderingMode.FILL_STROKE) {
+ ctx.fill();
+ }
+ if (fillStrokeMode === util.TextRenderingMode.STROKE || fillStrokeMode === util.TextRenderingMode.FILL_STROKE) {
+ ctx.stroke();
+ }
+ ctx.restore();
+ } else {
+ if (fillStrokeMode === util.TextRenderingMode.FILL || fillStrokeMode === util.TextRenderingMode.FILL_STROKE) {
+ ctx.fillText(character, x, y);
+ }
+ if (fillStrokeMode === util.TextRenderingMode.STROKE || fillStrokeMode === util.TextRenderingMode.FILL_STROKE) {
+ ctx.strokeText(character, x, y);
+ }
+ }
+ if (isAddToPathSet) {
+ const paths = this.pendingTextPaths ||= [];
+ paths.push({
+ transform: (0,display_utils.getCurrentTransform)(ctx),
+ x,
+ y,
+ fontSize,
+ addToPath
+ });
+ }
+ }
+ get isFontSubpixelAAEnabled() {
+ const {
+ context: ctx
+ } = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10);
+ ctx.scale(1.5, 1);
+ ctx.fillText("I", 0, 10);
+ const data = ctx.getImageData(0, 0, 10, 10).data;
+ let enabled = false;
+ for (let i = 3; i < data.length; i += 4) {
+ if (data[i] > 0 && data[i] < 255) {
+ enabled = true;
+ break;
+ }
+ }
+ return (0,util.shadow)(this, "isFontSubpixelAAEnabled", enabled);
+ }
+ showText(glyphs) {
+ const current = this.current;
+ const font = current.font;
+ if (font.isType3Font) {
+ return this.showType3Text(glyphs);
+ }
+ const fontSize = current.fontSize;
+ if (fontSize === 0) {
+ return undefined;
+ }
+ const ctx = this.ctx;
+ const fontSizeScale = current.fontSizeScale;
+ const charSpacing = current.charSpacing;
+ const wordSpacing = current.wordSpacing;
+ const fontDirection = current.fontDirection;
+ const textHScale = current.textHScale * fontDirection;
+ const glyphsLength = glyphs.length;
+ const vertical = font.vertical;
+ const spacingDir = vertical ? 1 : -1;
+ const defaultVMetrics = font.defaultVMetrics;
+ const widthAdvanceScale = fontSize * current.fontMatrix[0];
+ const simpleFillText = current.textRenderingMode === util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;
+ ctx.save();
+ ctx.transform(...current.textMatrix);
+ ctx.translate(current.x, current.y + current.textRise);
+ if (fontDirection > 0) {
+ ctx.scale(textHScale, -1);
+ } else {
+ ctx.scale(textHScale, 1);
+ }
+ let patternTransform;
+ if (current.patternFill) {
+ ctx.save();
+ const pattern = current.fillColor.getPattern(ctx, this, (0,display_utils.getCurrentTransformInverse)(ctx), PathType.FILL);
+ patternTransform = (0,display_utils.getCurrentTransform)(ctx);
+ ctx.restore();
+ ctx.fillStyle = pattern;
+ }
+ let lineWidth = current.lineWidth;
+ const scale = current.textMatrixScale;
+ if (scale === 0 || lineWidth === 0) {
+ const fillStrokeMode = current.textRenderingMode & util.TextRenderingMode.FILL_STROKE_MASK;
+ if (fillStrokeMode === util.TextRenderingMode.STROKE || fillStrokeMode === util.TextRenderingMode.FILL_STROKE) {
+ lineWidth = this.getSinglePixelWidth();
+ }
+ } else {
+ lineWidth /= scale;
+ }
+ if (fontSizeScale !== 1.0) {
+ ctx.scale(fontSizeScale, fontSizeScale);
+ lineWidth /= fontSizeScale;
+ }
+ ctx.lineWidth = lineWidth;
+ if (font.isInvalidPDFjsFont) {
+ const chars = [];
+ let width = 0;
+ for (const glyph of glyphs) {
+ chars.push(glyph.unicode);
+ width += glyph.width;
+ }
+ ctx.fillText(chars.join(""), 0, 0);
+ current.x += width * widthAdvanceScale * textHScale;
+ ctx.restore();
+ this.compose();
+ return undefined;
+ }
+ let x = 0,
+ i;
+ for (i = 0; i < glyphsLength; ++i) {
+ const glyph = glyphs[i];
+ if (typeof glyph === "number") {
+ x += spacingDir * glyph * fontSize / 1000;
+ continue;
+ }
+ let restoreNeeded = false;
+ const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
+ const character = glyph.fontChar;
+ const accent = glyph.accent;
+ let scaledX, scaledY;
+ let width = glyph.width;
+ if (vertical) {
+ const vmetric = glyph.vmetric || defaultVMetrics;
+ const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;
+ const vy = vmetric[2] * widthAdvanceScale;
+ width = vmetric ? -vmetric[0] : width;
+ scaledX = vx / fontSizeScale;
+ scaledY = (x + vy) / fontSizeScale;
+ } else {
+ scaledX = x / fontSizeScale;
+ scaledY = 0;
+ }
+ if (font.remeasure && width > 0) {
+ const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;
+ if (width < measuredWidth && this.isFontSubpixelAAEnabled) {
+ const characterScaleX = width / measuredWidth;
+ restoreNeeded = true;
+ ctx.save();
+ ctx.scale(characterScaleX, 1);
+ scaledX /= characterScaleX;
+ } else if (width !== measuredWidth) {
+ scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;
+ }
+ }
+ if (this.contentVisible && (glyph.isInFont || font.missingFile)) {
+ if (simpleFillText && !accent) {
+ ctx.fillText(character, scaledX, scaledY);
+ } else {
+ this.paintChar(character, scaledX, scaledY, patternTransform);
+ if (accent) {
+ const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;
+ const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;
+ this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);
+ }
+ }
+ }
+ const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;
+ x += charWidth;
+ if (restoreNeeded) {
+ ctx.restore();
+ }
+ }
+ if (vertical) {
+ current.y -= x;
+ } else {
+ current.x += x * textHScale;
+ }
+ ctx.restore();
+ this.compose();
+ return undefined;
+ }
+ showType3Text(glyphs) {
+ const ctx = this.ctx;
+ const current = this.current;
+ const font = current.font;
+ const fontSize = current.fontSize;
+ const fontDirection = current.fontDirection;
+ const spacingDir = font.vertical ? 1 : -1;
+ const charSpacing = current.charSpacing;
+ const wordSpacing = current.wordSpacing;
+ const textHScale = current.textHScale * fontDirection;
+ const fontMatrix = current.fontMatrix || util.FONT_IDENTITY_MATRIX;
+ const glyphsLength = glyphs.length;
+ const isTextInvisible = current.textRenderingMode === util.TextRenderingMode.INVISIBLE;
+ let i, glyph, width, spacingLength;
+ if (isTextInvisible || fontSize === 0) {
+ return;
+ }
+ this._cachedScaleForStroking[0] = -1;
+ this._cachedGetSinglePixelWidth = null;
+ ctx.save();
+ ctx.transform(...current.textMatrix);
+ ctx.translate(current.x, current.y);
+ ctx.scale(textHScale, fontDirection);
+ for (i = 0; i < glyphsLength; ++i) {
+ glyph = glyphs[i];
+ if (typeof glyph === "number") {
+ spacingLength = spacingDir * glyph * fontSize / 1000;
+ this.ctx.translate(spacingLength, 0);
+ current.x += spacingLength * textHScale;
+ continue;
+ }
+ const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
+ const operatorList = font.charProcOperatorList[glyph.operatorListId];
+ if (!operatorList) {
+ (0,util.warn)(`Type3 character "${glyph.operatorListId}" is not available.`);
+ continue;
+ }
+ if (this.contentVisible) {
+ this.processingType3 = glyph;
+ this.save();
+ ctx.scale(fontSize, fontSize);
+ ctx.transform(...fontMatrix);
+ this.executeOperatorList(operatorList);
+ this.restore();
+ }
+ const transformed = util.Util.applyTransform([glyph.width, 0], fontMatrix);
+ width = transformed[0] * fontSize + spacing;
+ ctx.translate(width, 0);
+ current.x += width * textHScale;
+ }
+ ctx.restore();
+ this.processingType3 = null;
+ }
+ setCharWidth(xWidth, yWidth) {}
+ setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {
+ this.ctx.rect(llx, lly, urx - llx, ury - lly);
+ this.ctx.clip();
+ this.endPath();
+ }
+ getColorN_Pattern(IR) {
+ let pattern;
+ if (IR[0] === "TilingPattern") {
+ const color = IR[1];
+ const baseTransform = this.baseTransform || (0,display_utils.getCurrentTransform)(this.ctx);
+ const canvasGraphicsFactory = {
+ createCanvasGraphics: ctx => {
+ return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {
+ optionalContentConfig: this.optionalContentConfig,
+ markedContentStack: this.markedContentStack
+ });
+ }
+ };
+ pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);
+ } else {
+ pattern = this._getPattern(IR[1], IR[2]);
+ }
+ return pattern;
+ }
+ setStrokeColorN() {
+ this.current.strokeColor = this.getColorN_Pattern(arguments);
+ }
+ setFillColorN() {
+ this.current.fillColor = this.getColorN_Pattern(arguments);
+ this.current.patternFill = true;
+ }
+ setStrokeRGBColor(r, g, b) {
+ const color = util.Util.makeHexColor(r, g, b);
+ this.ctx.strokeStyle = color;
+ this.current.strokeColor = color;
+ }
+ setFillRGBColor(r, g, b) {
+ const color = util.Util.makeHexColor(r, g, b);
+ this.ctx.fillStyle = color;
+ this.current.fillColor = color;
+ this.current.patternFill = false;
+ }
+ _getPattern(objId, matrix = null) {
+ let pattern;
+ if (this.cachedPatterns.has(objId)) {
+ pattern = this.cachedPatterns.get(objId);
+ } else {
+ pattern = getShadingPattern(this.getObject(objId));
+ this.cachedPatterns.set(objId, pattern);
+ }
+ if (matrix) {
+ pattern.matrix = matrix;
+ }
+ return pattern;
+ }
+ shadingFill(objId) {
+ if (!this.contentVisible) {
+ return;
+ }
+ const ctx = this.ctx;
+ this.save();
+ const pattern = this._getPattern(objId);
+ ctx.fillStyle = pattern.getPattern(ctx, this, (0,display_utils.getCurrentTransformInverse)(ctx), PathType.SHADING);
+ const inv = (0,display_utils.getCurrentTransformInverse)(ctx);
+ if (inv) {
+ const {
+ width,
+ height
+ } = ctx.canvas;
+ const [x0, y0, x1, y1] = util.Util.getAxialAlignedBoundingBox([0, 0, width, height], inv);
+ this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);
+ } else {
+ this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
+ }
+ this.compose(this.current.getClippedPathBoundingBox());
+ this.restore();
+ }
+ beginInlineImage() {
+ (0,util.unreachable)("Should not call beginInlineImage");
+ }
+ beginImageData() {
+ (0,util.unreachable)("Should not call beginImageData");
+ }
+ paintFormXObjectBegin(matrix, bbox) {
+ if (!this.contentVisible) {
+ return;
+ }
+ this.save();
+ this.baseTransformStack.push(this.baseTransform);
+ if (Array.isArray(matrix) && matrix.length === 6) {
+ this.transform(...matrix);
+ }
+ this.baseTransform = (0,display_utils.getCurrentTransform)(this.ctx);
+ if (bbox) {
+ const width = bbox[2] - bbox[0];
+ const height = bbox[3] - bbox[1];
+ this.ctx.rect(bbox[0], bbox[1], width, height);
+ this.current.updateRectMinMax((0,display_utils.getCurrentTransform)(this.ctx), bbox);
+ this.clip();
+ this.endPath();
+ }
+ }
+ paintFormXObjectEnd() {
+ if (!this.contentVisible) {
+ return;
+ }
+ this.restore();
+ this.baseTransform = this.baseTransformStack.pop();
+ }
+ beginGroup(group) {
+ if (!this.contentVisible) {
+ return;
+ }
+ this.save();
+ if (this.inSMaskMode) {
+ this.endSMaskMode();
+ this.current.activeSMask = null;
+ }
+ const currentCtx = this.ctx;
+ if (!group.isolated) {
+ (0,util.info)("TODO: Support non-isolated groups.");
+ }
+ if (group.knockout) {
+ (0,util.warn)("Knockout groups not supported.");
+ }
+ const currentTransform = (0,display_utils.getCurrentTransform)(currentCtx);
+ if (group.matrix) {
+ currentCtx.transform(...group.matrix);
+ }
+ if (!group.bbox) {
+ throw new Error("Bounding box is required.");
+ }
+ let bounds = util.Util.getAxialAlignedBoundingBox(group.bbox, (0,display_utils.getCurrentTransform)(currentCtx));
+ const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];
+ bounds = util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];
+ const offsetX = Math.floor(bounds[0]);
+ const offsetY = Math.floor(bounds[1]);
+ let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);
+ let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);
+ let scaleX = 1,
+ scaleY = 1;
+ if (drawnWidth > MAX_GROUP_SIZE) {
+ scaleX = drawnWidth / MAX_GROUP_SIZE;
+ drawnWidth = MAX_GROUP_SIZE;
+ }
+ if (drawnHeight > MAX_GROUP_SIZE) {
+ scaleY = drawnHeight / MAX_GROUP_SIZE;
+ drawnHeight = MAX_GROUP_SIZE;
+ }
+ this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);
+ let cacheId = "groupAt" + this.groupLevel;
+ if (group.smask) {
+ cacheId += "_smask_" + this.smaskCounter++ % 2;
+ }
+ const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);
+ const groupCtx = scratchCanvas.context;
+ groupCtx.scale(1 / scaleX, 1 / scaleY);
+ groupCtx.translate(-offsetX, -offsetY);
+ groupCtx.transform(...currentTransform);
+ if (group.smask) {
+ this.smaskStack.push({
+ canvas: scratchCanvas.canvas,
+ context: groupCtx,
+ offsetX,
+ offsetY,
+ scaleX,
+ scaleY,
+ subtype: group.smask.subtype,
+ backdrop: group.smask.backdrop,
+ transferMap: group.smask.transferMap || null,
+ startTransformInverse: null
+ });
+ } else {
+ currentCtx.setTransform(1, 0, 0, 1, 0, 0);
+ currentCtx.translate(offsetX, offsetY);
+ currentCtx.scale(scaleX, scaleY);
+ currentCtx.save();
+ }
+ copyCtxState(currentCtx, groupCtx);
+ this.ctx = groupCtx;
+ this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]);
+ this.groupStack.push(currentCtx);
+ this.groupLevel++;
+ }
+ endGroup(group) {
+ if (!this.contentVisible) {
+ return;
+ }
+ this.groupLevel--;
+ const groupCtx = this.ctx;
+ const ctx = this.groupStack.pop();
+ this.ctx = ctx;
+ this.ctx.imageSmoothingEnabled = false;
+ if (group.smask) {
+ this.tempSMask = this.smaskStack.pop();
+ this.restore();
+ } else {
+ this.ctx.restore();
+ const currentMtx = (0,display_utils.getCurrentTransform)(this.ctx);
+ this.restore();
+ this.ctx.save();
+ this.ctx.setTransform(...currentMtx);
+ const dirtyBox = util.Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);
+ this.ctx.drawImage(groupCtx.canvas, 0, 0);
+ this.ctx.restore();
+ this.compose(dirtyBox);
+ }
+ }
+ beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {
+ this.#restoreInitialState();
+ resetCtxToDefault(this.ctx);
+ this.ctx.save();
+ this.save();
+ if (this.baseTransform) {
+ this.ctx.setTransform(...this.baseTransform);
+ }
+ if (Array.isArray(rect) && rect.length === 4) {
+ const width = rect[2] - rect[0];
+ const height = rect[3] - rect[1];
+ if (hasOwnCanvas && this.annotationCanvasMap) {
+ transform = transform.slice();
+ transform[4] -= rect[0];
+ transform[5] -= rect[1];
+ rect = rect.slice();
+ rect[0] = rect[1] = 0;
+ rect[2] = width;
+ rect[3] = height;
+ const [scaleX, scaleY] = util.Util.singularValueDecompose2dScale((0,display_utils.getCurrentTransform)(this.ctx));
+ const {
+ viewportScale
+ } = this;
+ const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);
+ const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);
+ this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);
+ const {
+ canvas,
+ context
+ } = this.annotationCanvas;
+ this.annotationCanvasMap.set(id, canvas);
+ this.annotationCanvas.savedCtx = this.ctx;
+ this.ctx = context;
+ this.ctx.save();
+ this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);
+ resetCtxToDefault(this.ctx);
+ } else {
+ resetCtxToDefault(this.ctx);
+ this.ctx.rect(rect[0], rect[1], width, height);
+ this.ctx.clip();
+ this.endPath();
+ }
+ }
+ this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);
+ this.transform(...transform);
+ this.transform(...matrix);
+ }
+ endAnnotation() {
+ if (this.annotationCanvas) {
+ this.ctx.restore();
+ this.#drawFilter();
+ this.ctx = this.annotationCanvas.savedCtx;
+ delete this.annotationCanvas.savedCtx;
+ delete this.annotationCanvas;
+ }
+ }
+ paintImageMaskXObject(img) {
+ if (!this.contentVisible) {
+ return;
+ }
+ const count = img.count;
+ img = this.getObject(img.data, img);
+ img.count = count;
+ const ctx = this.ctx;
+ const glyph = this.processingType3;
+ if (glyph) {
+ if (glyph.compiled === undefined) {
+ glyph.compiled = compileType3Glyph(img);
+ }
+ if (glyph.compiled) {
+ glyph.compiled(ctx);
+ return;
+ }
+ }
+ const mask = this._createMaskCanvas(img);
+ const maskCanvas = mask.canvas;
+ ctx.save();
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
+ ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);
+ ctx.restore();
+ this.compose();
+ }
+ paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {
+ if (!this.contentVisible) {
+ return;
+ }
+ img = this.getObject(img.data, img);
+ const ctx = this.ctx;
+ ctx.save();
+ const currentTransform = (0,display_utils.getCurrentTransform)(ctx);
+ ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);
+ const mask = this._createMaskCanvas(img);
+ ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);
+ for (let i = 0, ii = positions.length; i < ii; i += 2) {
+ const trans = util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);
+ const [x, y] = util.Util.applyTransform([0, 0], trans);
+ ctx.drawImage(mask.canvas, x, y);
+ }
+ ctx.restore();
+ this.compose();
+ }
+ paintImageMaskXObjectGroup(images) {
+ if (!this.contentVisible) {
+ return;
+ }
+ const ctx = this.ctx;
+ const fillColor = this.current.fillColor;
+ const isPatternFill = this.current.patternFill;
+ for (const image of images) {
+ const {
+ data,
+ width,
+ height,
+ transform
+ } = image;
+ const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
+ const maskCtx = maskCanvas.context;
+ maskCtx.save();
+ const img = this.getObject(data, image);
+ putBinaryImageMask(maskCtx, img);
+ maskCtx.globalCompositeOperation = "source-in";
+ maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, (0,display_utils.getCurrentTransformInverse)(ctx), PathType.FILL) : fillColor;
+ maskCtx.fillRect(0, 0, width, height);
+ maskCtx.restore();
+ ctx.save();
+ ctx.transform(...transform);
+ ctx.scale(1, -1);
+ drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
+ ctx.restore();
+ }
+ this.compose();
+ }
+ paintImageXObject(objId) {
+ if (!this.contentVisible) {
+ return;
+ }
+ const imgData = this.getObject(objId);
+ if (!imgData) {
+ (0,util.warn)("Dependent image isn't ready yet");
+ return;
+ }
+ this.paintInlineImageXObject(imgData);
+ }
+ paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {
+ if (!this.contentVisible) {
+ return;
+ }
+ const imgData = this.getObject(objId);
+ if (!imgData) {
+ (0,util.warn)("Dependent image isn't ready yet");
+ return;
+ }
+ const width = imgData.width;
+ const height = imgData.height;
+ const map = [];
+ for (let i = 0, ii = positions.length; i < ii; i += 2) {
+ map.push({
+ transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],
+ x: 0,
+ y: 0,
+ w: width,
+ h: height
+ });
+ }
+ this.paintInlineImageXObjectGroup(imgData, map);
+ }
+ applyTransferMapsToCanvas(ctx) {
+ if (this.current.transferMaps !== "none") {
+ ctx.filter = this.current.transferMaps;
+ ctx.drawImage(ctx.canvas, 0, 0);
+ ctx.filter = "none";
+ }
+ return ctx.canvas;
+ }
+ applyTransferMapsToBitmap(imgData) {
+ if (this.current.transferMaps === "none") {
+ return imgData.bitmap;
+ }
+ const {
+ bitmap,
+ width,
+ height
+ } = imgData;
+ const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height);
+ const tmpCtx = tmpCanvas.context;
+ tmpCtx.filter = this.current.transferMaps;
+ tmpCtx.drawImage(bitmap, 0, 0);
+ tmpCtx.filter = "none";
+ return tmpCanvas.canvas;
+ }
+ paintInlineImageXObject(imgData) {
+ if (!this.contentVisible) {
+ return;
+ }
+ const width = imgData.width;
+ const height = imgData.height;
+ const ctx = this.ctx;
+ this.save();
+ if (!util.isNodeJS) {
+ const {
+ filter
+ } = ctx;
+ if (filter !== "none" && filter !== "") {
+ ctx.filter = "none";
+ }
+ }
+ ctx.scale(1 / width, -1 / height);
+ let imgToPaint;
+ if (imgData.bitmap) {
+ imgToPaint = this.applyTransferMapsToBitmap(imgData);
+ } else if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) {
+ imgToPaint = imgData;
+ } else {
+ const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height);
+ const tmpCtx = tmpCanvas.context;
+ putBinaryImageData(tmpCtx, imgData);
+ imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);
+ }
+ const scaled = this._scaleImage(imgToPaint, (0,display_utils.getCurrentTransformInverse)(ctx));
+ ctx.imageSmoothingEnabled = getImageSmoothingEnabled((0,display_utils.getCurrentTransform)(ctx), imgData.interpolate);
+ drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);
+ this.compose();
+ this.restore();
+ }
+ paintInlineImageXObjectGroup(imgData, map) {
+ if (!this.contentVisible) {
+ return;
+ }
+ const ctx = this.ctx;
+ let imgToPaint;
+ if (imgData.bitmap) {
+ imgToPaint = imgData.bitmap;
+ } else {
+ const w = imgData.width;
+ const h = imgData.height;
+ const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h);
+ const tmpCtx = tmpCanvas.context;
+ putBinaryImageData(tmpCtx, imgData);
+ imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);
+ }
+ for (const entry of map) {
+ ctx.save();
+ ctx.transform(...entry.transform);
+ ctx.scale(1, -1);
+ drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);
+ ctx.restore();
+ }
+ this.compose();
+ }
+ paintSolidColorImageMask() {
+ if (!this.contentVisible) {
+ return;
+ }
+ this.ctx.fillRect(0, 0, 1, 1);
+ this.compose();
+ }
+ markPoint(tag) {}
+ markPointProps(tag, properties) {}
+ beginMarkedContent(tag) {
+ this.markedContentStack.push({
+ visible: true
+ });
+ }
+ beginMarkedContentProps(tag, properties) {
+ if (tag === "OC") {
+ this.markedContentStack.push({
+ visible: this.optionalContentConfig.isVisible(properties)
+ });
+ } else {
+ this.markedContentStack.push({
+ visible: true
+ });
+ }
+ this.contentVisible = this.isContentVisible();
+ }
+ endMarkedContent() {
+ this.markedContentStack.pop();
+ this.contentVisible = this.isContentVisible();
+ }
+ beginCompat() {}
+ endCompat() {}
+ consumePath(clipBox) {
+ const isEmpty = this.current.isEmptyClip();
+ if (this.pendingClip) {
+ this.current.updateClipFromPath();
+ }
+ if (!this.pendingClip) {
+ this.compose(clipBox);
+ }
+ const ctx = this.ctx;
+ if (this.pendingClip) {
+ if (!isEmpty) {
+ if (this.pendingClip === EO_CLIP) {
+ ctx.clip("evenodd");
+ } else {
+ ctx.clip();
+ }
+ }
+ this.pendingClip = null;
+ }
+ this.current.startNewPathAndClipBox(this.current.clipBox);
+ ctx.beginPath();
+ }
+ getSinglePixelWidth() {
+ if (!this._cachedGetSinglePixelWidth) {
+ const m = (0,display_utils.getCurrentTransform)(this.ctx);
+ if (m[1] === 0 && m[2] === 0) {
+ this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));
+ } else {
+ const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);
+ const normX = Math.hypot(m[0], m[2]);
+ const normY = Math.hypot(m[1], m[3]);
+ this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;
+ }
+ }
+ return this._cachedGetSinglePixelWidth;
+ }
+ getScaleForStroking() {
+ if (this._cachedScaleForStroking[0] === -1) {
+ const {
+ lineWidth
+ } = this.current;
+ const {
+ a,
+ b,
+ c,
+ d
+ } = this.ctx.getTransform();
+ let scaleX, scaleY;
+ if (b === 0 && c === 0) {
+ const normX = Math.abs(a);
+ const normY = Math.abs(d);
+ if (normX === normY) {
+ if (lineWidth === 0) {
+ scaleX = scaleY = 1 / normX;
+ } else {
+ const scaledLineWidth = normX * lineWidth;
+ scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;
+ }
+ } else if (lineWidth === 0) {
+ scaleX = 1 / normX;
+ scaleY = 1 / normY;
+ } else {
+ const scaledXLineWidth = normX * lineWidth;
+ const scaledYLineWidth = normY * lineWidth;
+ scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;
+ scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;
+ }
+ } else {
+ const absDet = Math.abs(a * d - b * c);
+ const normX = Math.hypot(a, b);
+ const normY = Math.hypot(c, d);
+ if (lineWidth === 0) {
+ scaleX = normY / absDet;
+ scaleY = normX / absDet;
+ } else {
+ const baseArea = lineWidth * absDet;
+ scaleX = normY > baseArea ? normY / baseArea : 1;
+ scaleY = normX > baseArea ? normX / baseArea : 1;
+ }
+ }
+ this._cachedScaleForStroking[0] = scaleX;
+ this._cachedScaleForStroking[1] = scaleY;
+ }
+ return this._cachedScaleForStroking;
+ }
+ rescaleAndStroke(saveRestore) {
+ const {
+ ctx
+ } = this;
+ const {
+ lineWidth
+ } = this.current;
+ const [scaleX, scaleY] = this.getScaleForStroking();
+ ctx.lineWidth = lineWidth || 1;
+ if (scaleX === 1 && scaleY === 1) {
+ ctx.stroke();
+ return;
+ }
+ const dashes = ctx.getLineDash();
+ if (saveRestore) {
+ ctx.save();
+ }
+ ctx.scale(scaleX, scaleY);
+ if (dashes.length > 0) {
+ const scale = Math.max(scaleX, scaleY);
+ ctx.setLineDash(dashes.map(x => x / scale));
+ ctx.lineDashOffset /= scale;
+ }
+ ctx.stroke();
+ if (saveRestore) {
+ ctx.restore();
+ }
+ }
+ isContentVisible() {
+ for (let i = this.markedContentStack.length - 1; i >= 0; i--) {
+ if (!this.markedContentStack[i].visible) {
+ return false;
+ }
+ }
+ return true;
+ }
+}
+for (const op in util.OPS) {
+ if (CanvasGraphics.prototype[op] !== undefined) {
+ CanvasGraphics.prototype[util.OPS[op]] = CanvasGraphics.prototype[op];
+ }
+}
+
+
+/***/ }),
+
+/***/ 473:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ DOMCMapReaderFactory: () => (/* binding */ DOMCMapReaderFactory),
+/* harmony export */ DOMCanvasFactory: () => (/* binding */ DOMCanvasFactory),
+/* harmony export */ DOMFilterFactory: () => (/* binding */ DOMFilterFactory),
+/* harmony export */ DOMSVGFactory: () => (/* binding */ DOMSVGFactory),
+/* harmony export */ DOMStandardFontDataFactory: () => (/* binding */ DOMStandardFontDataFactory),
+/* harmony export */ PDFDateString: () => (/* binding */ PDFDateString),
+/* harmony export */ PageViewport: () => (/* binding */ PageViewport),
+/* harmony export */ PixelsPerInch: () => (/* binding */ PixelsPerInch),
+/* harmony export */ RenderingCancelledException: () => (/* binding */ RenderingCancelledException),
+/* harmony export */ StatTimer: () => (/* binding */ StatTimer),
+/* harmony export */ fetchData: () => (/* binding */ fetchData),
+/* harmony export */ getColorValues: () => (/* binding */ getColorValues),
+/* harmony export */ getCurrentTransform: () => (/* binding */ getCurrentTransform),
+/* harmony export */ getCurrentTransformInverse: () => (/* binding */ getCurrentTransformInverse),
+/* harmony export */ getFilenameFromUrl: () => (/* binding */ getFilenameFromUrl),
+/* harmony export */ getPdfFilenameFromUrl: () => (/* binding */ getPdfFilenameFromUrl),
+/* harmony export */ getRGB: () => (/* binding */ getRGB),
+/* harmony export */ getXfaPageViewport: () => (/* binding */ getXfaPageViewport),
+/* harmony export */ isDataScheme: () => (/* binding */ isDataScheme),
+/* harmony export */ isPdfFile: () => (/* binding */ isPdfFile),
+/* harmony export */ isValidFetchUrl: () => (/* binding */ isValidFetchUrl),
+/* harmony export */ noContextMenu: () => (/* binding */ noContextMenu),
+/* harmony export */ setLayerDimensions: () => (/* binding */ setLayerDimensions)
+/* harmony export */ });
+/* unused harmony export deprecated */
+/* harmony import */ var _base_factory_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(822);
+/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(266);
+
+
+const SVG_NS = "http://www.w3.org/2000/svg";
+class PixelsPerInch {
+ static CSS = 96.0;
+ static PDF = 72.0;
+ static PDF_TO_CSS_UNITS = this.CSS / this.PDF;
+}
+class DOMFilterFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseFilterFactory {
+ #_cache;
+ #_defs;
+ #docId;
+ #document;
+ #hcmFilter;
+ #hcmKey;
+ #hcmUrl;
+ #hcmHighlightFilter;
+ #hcmHighlightKey;
+ #hcmHighlightUrl;
+ #id = 0;
+ constructor({
+ docId,
+ ownerDocument = globalThis.document
+ } = {}) {
+ super();
+ this.#docId = docId;
+ this.#document = ownerDocument;
+ }
+ get #cache() {
+ return this.#_cache ||= new Map();
+ }
+ get #defs() {
+ if (!this.#_defs) {
+ const div = this.#document.createElement("div");
+ const {
+ style
+ } = div;
+ style.visibility = "hidden";
+ style.contain = "strict";
+ style.width = style.height = 0;
+ style.position = "absolute";
+ style.top = style.left = 0;
+ style.zIndex = -1;
+ const svg = this.#document.createElementNS(SVG_NS, "svg");
+ svg.setAttribute("width", 0);
+ svg.setAttribute("height", 0);
+ this.#_defs = this.#document.createElementNS(SVG_NS, "defs");
+ div.append(svg);
+ svg.append(this.#_defs);
+ this.#document.body.append(div);
+ }
+ return this.#_defs;
+ }
+ addFilter(maps) {
+ if (!maps) {
+ return "none";
+ }
+ let value = this.#cache.get(maps);
+ if (value) {
+ return value;
+ }
+ let tableR, tableG, tableB, key;
+ if (maps.length === 1) {
+ const mapR = maps[0];
+ const buffer = new Array(256);
+ for (let i = 0; i < 256; i++) {
+ buffer[i] = mapR[i] / 255;
+ }
+ key = tableR = tableG = tableB = buffer.join(",");
+ } else {
+ const [mapR, mapG, mapB] = maps;
+ const bufferR = new Array(256);
+ const bufferG = new Array(256);
+ const bufferB = new Array(256);
+ for (let i = 0; i < 256; i++) {
+ bufferR[i] = mapR[i] / 255;
+ bufferG[i] = mapG[i] / 255;
+ bufferB[i] = mapB[i] / 255;
+ }
+ tableR = bufferR.join(",");
+ tableG = bufferG.join(",");
+ tableB = bufferB.join(",");
+ key = `${tableR}${tableG}${tableB}`;
+ }
+ value = this.#cache.get(key);
+ if (value) {
+ this.#cache.set(maps, value);
+ return value;
+ }
+ const id = `g_${this.#docId}_transfer_map_${this.#id++}`;
+ const url = `url(#${id})`;
+ this.#cache.set(maps, url);
+ this.#cache.set(key, url);
+ const filter = this.#createFilter(id);
+ this.#addTransferMapConversion(tableR, tableG, tableB, filter);
+ return url;
+ }
+ addHCMFilter(fgColor, bgColor) {
+ const key = `${fgColor}-${bgColor}`;
+ if (this.#hcmKey === key) {
+ return this.#hcmUrl;
+ }
+ this.#hcmKey = key;
+ this.#hcmUrl = "none";
+ this.#hcmFilter?.remove();
+ if (!fgColor || !bgColor) {
+ return this.#hcmUrl;
+ }
+ const fgRGB = this.#getRGB(fgColor);
+ fgColor = _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.Util.makeHexColor(...fgRGB);
+ const bgRGB = this.#getRGB(bgColor);
+ bgColor = _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.Util.makeHexColor(...bgRGB);
+ this.#defs.style.color = "";
+ if (fgColor === "#000000" && bgColor === "#ffffff" || fgColor === bgColor) {
+ return this.#hcmUrl;
+ }
+ const map = new Array(256);
+ for (let i = 0; i <= 255; i++) {
+ const x = i / 255;
+ map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;
+ }
+ const table = map.join(",");
+ const id = `g_${this.#docId}_hcm_filter`;
+ const filter = this.#hcmHighlightFilter = this.#createFilter(id);
+ this.#addTransferMapConversion(table, table, table, filter);
+ this.#addGrayConversion(filter);
+ const getSteps = (c, n) => {
+ const start = fgRGB[c] / 255;
+ const end = bgRGB[c] / 255;
+ const arr = new Array(n + 1);
+ for (let i = 0; i <= n; i++) {
+ arr[i] = start + i / n * (end - start);
+ }
+ return arr.join(",");
+ };
+ this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);
+ this.#hcmUrl = `url(#${id})`;
+ return this.#hcmUrl;
+ }
+ addHighlightHCMFilter(fgColor, bgColor, newFgColor, newBgColor) {
+ const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;
+ if (this.#hcmHighlightKey === key) {
+ return this.#hcmHighlightUrl;
+ }
+ this.#hcmHighlightKey = key;
+ this.#hcmHighlightUrl = "none";
+ this.#hcmHighlightFilter?.remove();
+ if (!fgColor || !bgColor) {
+ return this.#hcmHighlightUrl;
+ }
+ const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));
+ let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);
+ let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);
+ let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));
+ if (bgGray < fgGray) {
+ [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];
+ }
+ this.#defs.style.color = "";
+ const getSteps = (fg, bg, n) => {
+ const arr = new Array(256);
+ const step = (bgGray - fgGray) / n;
+ const newStart = fg / 255;
+ const newStep = (bg - fg) / (255 * n);
+ let prev = 0;
+ for (let i = 0; i <= n; i++) {
+ const k = Math.round(fgGray + i * step);
+ const value = newStart + i * newStep;
+ for (let j = prev; j <= k; j++) {
+ arr[j] = value;
+ }
+ prev = k + 1;
+ }
+ for (let i = prev; i < 256; i++) {
+ arr[i] = arr[prev - 1];
+ }
+ return arr.join(",");
+ };
+ const id = `g_${this.#docId}_hcm_highlight_filter`;
+ const filter = this.#hcmHighlightFilter = this.#createFilter(id);
+ this.#addGrayConversion(filter);
+ this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);
+ this.#hcmHighlightUrl = `url(#${id})`;
+ return this.#hcmHighlightUrl;
+ }
+ destroy(keepHCM = false) {
+ if (keepHCM && (this.#hcmUrl || this.#hcmHighlightUrl)) {
+ return;
+ }
+ if (this.#_defs) {
+ this.#_defs.parentNode.parentNode.remove();
+ this.#_defs = null;
+ }
+ if (this.#_cache) {
+ this.#_cache.clear();
+ this.#_cache = null;
+ }
+ this.#id = 0;
+ }
+ #addGrayConversion(filter) {
+ const feColorMatrix = this.#document.createElementNS(SVG_NS, "feColorMatrix");
+ feColorMatrix.setAttribute("type", "matrix");
+ 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");
+ filter.append(feColorMatrix);
+ }
+ #createFilter(id) {
+ const filter = this.#document.createElementNS(SVG_NS, "filter");
+ filter.setAttribute("color-interpolation-filters", "sRGB");
+ filter.setAttribute("id", id);
+ this.#defs.append(filter);
+ return filter;
+ }
+ #appendFeFunc(feComponentTransfer, func, table) {
+ const feFunc = this.#document.createElementNS(SVG_NS, func);
+ feFunc.setAttribute("type", "discrete");
+ feFunc.setAttribute("tableValues", table);
+ feComponentTransfer.append(feFunc);
+ }
+ #addTransferMapConversion(rTable, gTable, bTable, filter) {
+ const feComponentTransfer = this.#document.createElementNS(SVG_NS, "feComponentTransfer");
+ filter.append(feComponentTransfer);
+ this.#appendFeFunc(feComponentTransfer, "feFuncR", rTable);
+ this.#appendFeFunc(feComponentTransfer, "feFuncG", gTable);
+ this.#appendFeFunc(feComponentTransfer, "feFuncB", bTable);
+ }
+ #getRGB(color) {
+ this.#defs.style.color = color;
+ return getRGB(getComputedStyle(this.#defs).getPropertyValue("color"));
+ }
+}
+class DOMCanvasFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseCanvasFactory {
+ constructor({
+ ownerDocument = globalThis.document
+ } = {}) {
+ super();
+ this._document = ownerDocument;
+ }
+ _createCanvas(width, height) {
+ const canvas = this._document.createElement("canvas");
+ canvas.width = width;
+ canvas.height = height;
+ return canvas;
+ }
+}
+async function fetchData(url, type = "text") {
+ if (isValidFetchUrl(url, document.baseURI)) {
+ const response = await fetch(url);
+ if (!response.ok) {
+ throw new Error(response.statusText);
+ }
+ switch (type) {
+ case "arraybuffer":
+ return response.arrayBuffer();
+ case "blob":
+ return response.blob();
+ case "json":
+ return response.json();
+ }
+ return response.text();
+ }
+ return new Promise((resolve, reject) => {
+ const request = new XMLHttpRequest();
+ request.open("GET", url, true);
+ request.responseType = type;
+ request.onreadystatechange = () => {
+ if (request.readyState !== XMLHttpRequest.DONE) {
+ return;
+ }
+ if (request.status === 200 || request.status === 0) {
+ let data;
+ switch (type) {
+ case "arraybuffer":
+ case "blob":
+ case "json":
+ data = request.response;
+ break;
+ default:
+ data = request.responseText;
+ break;
+ }
+ if (data) {
+ resolve(data);
+ return;
+ }
+ }
+ reject(new Error(request.statusText));
+ };
+ request.send(null);
+ });
+}
+class DOMCMapReaderFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseCMapReaderFactory {
+ _fetchData(url, compressionType) {
+ return fetchData(url, this.isCompressed ? "arraybuffer" : "text").then(data => {
+ return {
+ cMapData: data instanceof ArrayBuffer ? new Uint8Array(data) : (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.stringToBytes)(data),
+ compressionType
+ };
+ });
+ }
+}
+class DOMStandardFontDataFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseStandardFontDataFactory {
+ _fetchData(url) {
+ return fetchData(url, "arraybuffer").then(data => {
+ return new Uint8Array(data);
+ });
+ }
+}
+class DOMSVGFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseSVGFactory {
+ _createSVG(type) {
+ return document.createElementNS(SVG_NS, type);
+ }
+}
+class PageViewport {
+ constructor({
+ viewBox,
+ scale,
+ rotation,
+ offsetX = 0,
+ offsetY = 0,
+ dontFlip = false
+ }) {
+ this.viewBox = viewBox;
+ this.scale = scale;
+ this.rotation = rotation;
+ this.offsetX = offsetX;
+ this.offsetY = offsetY;
+ const centerX = (viewBox[2] + viewBox[0]) / 2;
+ const centerY = (viewBox[3] + viewBox[1]) / 2;
+ let rotateA, rotateB, rotateC, rotateD;
+ rotation %= 360;
+ if (rotation < 0) {
+ rotation += 360;
+ }
+ switch (rotation) {
+ case 180:
+ rotateA = -1;
+ rotateB = 0;
+ rotateC = 0;
+ rotateD = 1;
+ break;
+ case 90:
+ rotateA = 0;
+ rotateB = 1;
+ rotateC = 1;
+ rotateD = 0;
+ break;
+ case 270:
+ rotateA = 0;
+ rotateB = -1;
+ rotateC = -1;
+ rotateD = 0;
+ break;
+ case 0:
+ rotateA = 1;
+ rotateB = 0;
+ rotateC = 0;
+ rotateD = -1;
+ break;
+ default:
+ throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.");
+ }
+ if (dontFlip) {
+ rotateC = -rotateC;
+ rotateD = -rotateD;
+ }
+ let offsetCanvasX, offsetCanvasY;
+ let width, height;
+ if (rotateA === 0) {
+ offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
+ offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;
+ width = (viewBox[3] - viewBox[1]) * scale;
+ height = (viewBox[2] - viewBox[0]) * scale;
+ } else {
+ offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;
+ offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;
+ width = (viewBox[2] - viewBox[0]) * scale;
+ height = (viewBox[3] - viewBox[1]) * scale;
+ }
+ this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];
+ this.width = width;
+ this.height = height;
+ }
+ get rawDims() {
+ const {
+ viewBox
+ } = this;
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.shadow)(this, "rawDims", {
+ pageWidth: viewBox[2] - viewBox[0],
+ pageHeight: viewBox[3] - viewBox[1],
+ pageX: viewBox[0],
+ pageY: viewBox[1]
+ });
+ }
+ clone({
+ scale = this.scale,
+ rotation = this.rotation,
+ offsetX = this.offsetX,
+ offsetY = this.offsetY,
+ dontFlip = false
+ } = {}) {
+ return new PageViewport({
+ viewBox: this.viewBox.slice(),
+ scale,
+ rotation,
+ offsetX,
+ offsetY,
+ dontFlip
+ });
+ }
+ convertToViewportPoint(x, y) {
+ return _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.Util.applyTransform([x, y], this.transform);
+ }
+ convertToViewportRectangle(rect) {
+ const topLeft = _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.Util.applyTransform([rect[0], rect[1]], this.transform);
+ const bottomRight = _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.Util.applyTransform([rect[2], rect[3]], this.transform);
+ return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];
+ }
+ convertToPdfPoint(x, y) {
+ return _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.Util.applyInverseTransform([x, y], this.transform);
+ }
+}
+class RenderingCancelledException extends _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.BaseException {
+ constructor(msg, extraDelay = 0) {
+ super(msg, "RenderingCancelledException");
+ this.extraDelay = extraDelay;
+ }
+}
+function isDataScheme(url) {
+ const ii = url.length;
+ let i = 0;
+ while (i < ii && url[i].trim() === "") {
+ i++;
+ }
+ return url.substring(i, i + 5).toLowerCase() === "data:";
+}
+function isPdfFile(filename) {
+ return typeof filename === "string" && /\.pdf$/i.test(filename);
+}
+function getFilenameFromUrl(url, onlyStripPath = false) {
+ if (!onlyStripPath) {
+ [url] = url.split(/[#?]/, 1);
+ }
+ return url.substring(url.lastIndexOf("/") + 1);
+}
+function getPdfFilenameFromUrl(url, defaultFilename = "document.pdf") {
+ if (typeof url !== "string") {
+ return defaultFilename;
+ }
+ if (isDataScheme(url)) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.');
+ return defaultFilename;
+ }
+ const reURI = /^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
+ const reFilename = /[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
+ const splitURI = reURI.exec(url);
+ let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);
+ if (suggestedFilename) {
+ suggestedFilename = suggestedFilename[0];
+ if (suggestedFilename.includes("%")) {
+ try {
+ suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];
+ } catch {}
+ }
+ }
+ return suggestedFilename || defaultFilename;
+}
+class StatTimer {
+ started = Object.create(null);
+ times = [];
+ time(name) {
+ if (name in this.started) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.warn)(`Timer is already running for ${name}`);
+ }
+ this.started[name] = Date.now();
+ }
+ timeEnd(name) {
+ if (!(name in this.started)) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.warn)(`Timer has not been started for ${name}`);
+ }
+ this.times.push({
+ name,
+ start: this.started[name],
+ end: Date.now()
+ });
+ delete this.started[name];
+ }
+ toString() {
+ const outBuf = [];
+ let longest = 0;
+ for (const {
+ name
+ } of this.times) {
+ longest = Math.max(name.length, longest);
+ }
+ for (const {
+ name,
+ start,
+ end
+ } of this.times) {
+ outBuf.push(`${name.padEnd(longest)} ${end - start}ms\n`);
+ }
+ return outBuf.join("");
+ }
+}
+function isValidFetchUrl(url, baseUrl) {
+ try {
+ const {
+ protocol
+ } = baseUrl ? new URL(url, baseUrl) : new URL(url);
+ return protocol === "http:" || protocol === "https:";
+ } catch {
+ return false;
+ }
+}
+function noContextMenu(e) {
+ e.preventDefault();
+}
+function deprecated(details) {
+ console.log("Deprecated API usage: " + details);
+}
+let pdfDateStringRegex;
+class PDFDateString {
+ static toDateObject(input) {
+ if (!input || typeof input !== "string") {
+ return null;
+ }
+ pdfDateStringRegex ||= new RegExp("^D:" + "(\\d{4})" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "([Z|+|-])?" + "(\\d{2})?" + "'?" + "(\\d{2})?" + "'?");
+ const matches = pdfDateStringRegex.exec(input);
+ if (!matches) {
+ return null;
+ }
+ const year = parseInt(matches[1], 10);
+ let month = parseInt(matches[2], 10);
+ month = month >= 1 && month <= 12 ? month - 1 : 0;
+ let day = parseInt(matches[3], 10);
+ day = day >= 1 && day <= 31 ? day : 1;
+ let hour = parseInt(matches[4], 10);
+ hour = hour >= 0 && hour <= 23 ? hour : 0;
+ let minute = parseInt(matches[5], 10);
+ minute = minute >= 0 && minute <= 59 ? minute : 0;
+ let second = parseInt(matches[6], 10);
+ second = second >= 0 && second <= 59 ? second : 0;
+ const universalTimeRelation = matches[7] || "Z";
+ let offsetHour = parseInt(matches[8], 10);
+ offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;
+ let offsetMinute = parseInt(matches[9], 10) || 0;
+ offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;
+ if (universalTimeRelation === "-") {
+ hour += offsetHour;
+ minute += offsetMinute;
+ } else if (universalTimeRelation === "+") {
+ hour -= offsetHour;
+ minute -= offsetMinute;
+ }
+ return new Date(Date.UTC(year, month, day, hour, minute, second));
+ }
+}
+function getXfaPageViewport(xfaPage, {
+ scale = 1,
+ rotation = 0
+}) {
+ const {
+ width,
+ height
+ } = xfaPage.attributes.style;
+ const viewBox = [0, 0, parseInt(width), parseInt(height)];
+ return new PageViewport({
+ viewBox,
+ scale,
+ rotation
+ });
+}
+function getRGB(color) {
+ if (color.startsWith("#")) {
+ const colorRGB = parseInt(color.slice(1), 16);
+ return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];
+ }
+ if (color.startsWith("rgb(")) {
+ return color.slice(4, -1).split(",").map(x => parseInt(x));
+ }
+ if (color.startsWith("rgba(")) {
+ return color.slice(5, -1).split(",").map(x => parseInt(x)).slice(0, 3);
+ }
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.warn)(`Not a valid color format: "${color}"`);
+ return [0, 0, 0];
+}
+function getColorValues(colors) {
+ const span = document.createElement("span");
+ span.style.visibility = "hidden";
+ document.body.append(span);
+ for (const name of colors.keys()) {
+ span.style.color = name;
+ const computedColor = window.getComputedStyle(span).color;
+ colors.set(name, getRGB(computedColor));
+ }
+ span.remove();
+}
+function getCurrentTransform(ctx) {
+ const {
+ a,
+ b,
+ c,
+ d,
+ e,
+ f
+ } = ctx.getTransform();
+ return [a, b, c, d, e, f];
+}
+function getCurrentTransformInverse(ctx) {
+ const {
+ a,
+ b,
+ c,
+ d,
+ e,
+ f
+ } = ctx.getTransform().invertSelf();
+ return [a, b, c, d, e, f];
+}
+function setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {
+ if (viewport instanceof PageViewport) {
+ const {
+ pageWidth,
+ pageHeight
+ } = viewport.rawDims;
+ const {
+ style
+ } = div;
+ const useRound = _shared_util_js__WEBPACK_IMPORTED_MODULE_1__.FeatureTest.isCSSRoundSupported;
+ const w = `var(--scale-factor) * ${pageWidth}px`,
+ h = `var(--scale-factor) * ${pageHeight}px`;
+ const widthStr = useRound ? `round(${w}, 1px)` : `calc(${w})`,
+ heightStr = useRound ? `round(${h}, 1px)` : `calc(${h})`;
+ if (!mustFlip || viewport.rotation % 180 === 0) {
+ style.width = widthStr;
+ style.height = heightStr;
+ } else {
+ style.width = heightStr;
+ style.height = widthStr;
+ }
+ }
+ if (mustRotate) {
+ div.setAttribute("data-main-rotation", viewport.rotation);
+ }
+}
+
+
+/***/ }),
+
+/***/ 423:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ DrawLayer: () => (/* binding */ DrawLayer)
+/* harmony export */ });
+/* harmony import */ var _display_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(473);
+/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(266);
+
+
+class DrawLayer {
+ #parent = null;
+ #id = 0;
+ #mapping = new Map();
+ constructor({
+ pageIndex
+ }) {
+ this.pageIndex = pageIndex;
+ }
+ setParent(parent) {
+ if (!this.#parent) {
+ this.#parent = parent;
+ return;
+ }
+ if (this.#parent !== parent) {
+ if (this.#mapping.size > 0) {
+ for (const root of this.#mapping.values()) {
+ root.remove();
+ parent.append(root);
+ }
+ }
+ this.#parent = parent;
+ }
+ }
+ static get _svgFactory() {
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.shadow)(this, "_svgFactory", new _display_utils_js__WEBPACK_IMPORTED_MODULE_0__.DOMSVGFactory());
+ }
+ static #setBox(element, {
+ x,
+ y,
+ width,
+ height
+ }) {
+ const {
+ style
+ } = element;
+ style.top = `${100 * y}%`;
+ style.left = `${100 * x}%`;
+ style.width = `${100 * width}%`;
+ style.height = `${100 * height}%`;
+ }
+ #createSVG(box) {
+ const svg = DrawLayer._svgFactory.create(1, 1, true);
+ this.#parent.append(svg);
+ DrawLayer.#setBox(svg, box);
+ return svg;
+ }
+ highlight({
+ outlines,
+ box
+ }, color, opacity) {
+ const id = this.#id++;
+ const root = this.#createSVG(box);
+ root.classList.add("highlight");
+ const defs = DrawLayer._svgFactory.createElement("defs");
+ root.append(defs);
+ const path = DrawLayer._svgFactory.createElement("path");
+ defs.append(path);
+ const pathId = `path_p${this.pageIndex}_${id}`;
+ path.setAttribute("id", pathId);
+ path.setAttribute("d", DrawLayer.#extractPathFromHighlightOutlines(outlines));
+ const clipPath = DrawLayer._svgFactory.createElement("clipPath");
+ defs.append(clipPath);
+ const clipPathId = `clip_${pathId}`;
+ clipPath.setAttribute("id", clipPathId);
+ clipPath.setAttribute("clipPathUnits", "objectBoundingBox");
+ const clipPathUse = DrawLayer._svgFactory.createElement("use");
+ clipPath.append(clipPathUse);
+ clipPathUse.setAttribute("href", `#${pathId}`);
+ clipPathUse.classList.add("clip");
+ const use = DrawLayer._svgFactory.createElement("use");
+ root.append(use);
+ root.setAttribute("fill", color);
+ root.setAttribute("fill-opacity", opacity);
+ use.setAttribute("href", `#${pathId}`);
+ this.#mapping.set(id, root);
+ return {
+ id,
+ clipPathId: `url(#${clipPathId})`
+ };
+ }
+ highlightOutline({
+ outlines,
+ box
+ }) {
+ const id = this.#id++;
+ const root = this.#createSVG(box);
+ root.classList.add("highlightOutline");
+ const defs = DrawLayer._svgFactory.createElement("defs");
+ root.append(defs);
+ const path = DrawLayer._svgFactory.createElement("path");
+ defs.append(path);
+ const pathId = `path_p${this.pageIndex}_${id}`;
+ path.setAttribute("id", pathId);
+ path.setAttribute("d", DrawLayer.#extractPathFromHighlightOutlines(outlines));
+ path.setAttribute("vector-effect", "non-scaling-stroke");
+ const use1 = DrawLayer._svgFactory.createElement("use");
+ root.append(use1);
+ use1.setAttribute("href", `#${pathId}`);
+ const use2 = use1.cloneNode();
+ root.append(use2);
+ use1.classList.add("mainOutline");
+ use2.classList.add("secondaryOutline");
+ this.#mapping.set(id, root);
+ return id;
+ }
+ static #extractPathFromHighlightOutlines(polygons) {
+ const buffer = [];
+ for (const polygon of polygons) {
+ let [prevX, prevY] = polygon;
+ buffer.push(`M${prevX} ${prevY}`);
+ for (let i = 2; i < polygon.length; i += 2) {
+ const x = polygon[i];
+ const y = polygon[i + 1];
+ if (x === prevX) {
+ buffer.push(`V${y}`);
+ prevY = y;
+ } else if (y === prevY) {
+ buffer.push(`H${x}`);
+ prevX = x;
+ }
+ }
+ buffer.push("Z");
+ }
+ return buffer.join(" ");
+ }
+ updateBox(id, box) {
+ DrawLayer.#setBox(this.#mapping.get(id), box);
+ }
+ rotate(id, angle) {
+ this.#mapping.get(id).setAttribute("data-main-rotation", angle);
+ }
+ changeColor(id, color) {
+ this.#mapping.get(id).setAttribute("fill", color);
+ }
+ changeOpacity(id, opacity) {
+ this.#mapping.get(id).setAttribute("fill-opacity", opacity);
+ }
+ addClass(id, className) {
+ this.#mapping.get(id).classList.add(className);
+ }
+ removeClass(id, className) {
+ this.#mapping.get(id).classList.remove(className);
+ }
+ remove(id) {
+ if (this.#parent === null) {
+ return;
+ }
+ this.#mapping.get(id).remove();
+ this.#mapping.delete(id);
+ }
+ destroy() {
+ this.#parent = null;
+ for (const root of this.#mapping.values()) {
+ root.remove();
+ }
+ this.#mapping.clear();
+ }
+}
+
+
+/***/ }),
+
+/***/ 629:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, {
+ AnnotationEditorLayer: () => (/* binding */ AnnotationEditorLayer)
+});
+
+// EXTERNAL MODULE: ./src/shared/util.js
+var util = __webpack_require__(266);
+// EXTERNAL MODULE: ./src/display/editor/editor.js + 2 modules
+var editor_editor = __webpack_require__(115);
+// EXTERNAL MODULE: ./src/display/editor/tools.js
+var tools = __webpack_require__(812);
+// EXTERNAL MODULE: ./src/display/annotation_layer.js + 1 modules
+var annotation_layer = __webpack_require__(640);
+;// CONCATENATED MODULE: ./src/display/editor/freetext.js
+
+
+
+
+class FreeTextEditor extends editor_editor.AnnotationEditor {
+ #boundEditorDivBlur = this.editorDivBlur.bind(this);
+ #boundEditorDivFocus = this.editorDivFocus.bind(this);
+ #boundEditorDivInput = this.editorDivInput.bind(this);
+ #boundEditorDivKeydown = this.editorDivKeydown.bind(this);
+ #color;
+ #content = "";
+ #editorDivId = `${this.id}-editor`;
+ #fontSize;
+ #initialData = null;
+ static _freeTextDefaultContent = "";
+ static _internalPadding = 0;
+ static _defaultColor = null;
+ static _defaultFontSize = 10;
+ static get _keyboardManager() {
+ const proto = FreeTextEditor.prototype;
+ const arrowChecker = self => self.isEmpty();
+ const small = tools.AnnotationEditorUIManager.TRANSLATE_SMALL;
+ const big = tools.AnnotationEditorUIManager.TRANSLATE_BIG;
+ return (0,util.shadow)(this, "_keyboardManager", new tools.KeyboardManager([[["ctrl+s", "mac+meta+s", "ctrl+p", "mac+meta+p"], proto.commitOrRemove, {
+ bubbles: true
+ }], [["ctrl+Enter", "mac+meta+Enter", "Escape", "mac+Escape"], proto.commitOrRemove], [["ArrowLeft", "mac+ArrowLeft"], proto._translateEmpty, {
+ args: [-small, 0],
+ checker: arrowChecker
+ }], [["ctrl+ArrowLeft", "mac+shift+ArrowLeft"], proto._translateEmpty, {
+ args: [-big, 0],
+ checker: arrowChecker
+ }], [["ArrowRight", "mac+ArrowRight"], proto._translateEmpty, {
+ args: [small, 0],
+ checker: arrowChecker
+ }], [["ctrl+ArrowRight", "mac+shift+ArrowRight"], proto._translateEmpty, {
+ args: [big, 0],
+ checker: arrowChecker
+ }], [["ArrowUp", "mac+ArrowUp"], proto._translateEmpty, {
+ args: [0, -small],
+ checker: arrowChecker
+ }], [["ctrl+ArrowUp", "mac+shift+ArrowUp"], proto._translateEmpty, {
+ args: [0, -big],
+ checker: arrowChecker
+ }], [["ArrowDown", "mac+ArrowDown"], proto._translateEmpty, {
+ args: [0, small],
+ checker: arrowChecker
+ }], [["ctrl+ArrowDown", "mac+shift+ArrowDown"], proto._translateEmpty, {
+ args: [0, big],
+ checker: arrowChecker
+ }]]));
+ }
+ static _type = "freetext";
+ static _editorType = util.AnnotationEditorType.FREETEXT;
+ constructor(params) {
+ super({
+ ...params,
+ name: "freeTextEditor"
+ });
+ this.#color = params.color || FreeTextEditor._defaultColor || editor_editor.AnnotationEditor._defaultLineColor;
+ this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;
+ }
+ static initialize(l10n) {
+ editor_editor.AnnotationEditor.initialize(l10n, {
+ strings: ["pdfjs-free-text-default-content"]
+ });
+ const style = getComputedStyle(document.documentElement);
+ this._internalPadding = parseFloat(style.getPropertyValue("--freetext-padding"));
+ }
+ static updateDefaultParams(type, value) {
+ switch (type) {
+ case util.AnnotationEditorParamsType.FREETEXT_SIZE:
+ FreeTextEditor._defaultFontSize = value;
+ break;
+ case util.AnnotationEditorParamsType.FREETEXT_COLOR:
+ FreeTextEditor._defaultColor = value;
+ break;
+ }
+ }
+ updateParams(type, value) {
+ switch (type) {
+ case util.AnnotationEditorParamsType.FREETEXT_SIZE:
+ this.#updateFontSize(value);
+ break;
+ case util.AnnotationEditorParamsType.FREETEXT_COLOR:
+ this.#updateColor(value);
+ break;
+ }
+ }
+ static get defaultPropertiesToUpdate() {
+ return [[util.AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [util.AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || editor_editor.AnnotationEditor._defaultLineColor]];
+ }
+ get propertiesToUpdate() {
+ return [[util.AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [util.AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]];
+ }
+ #updateFontSize(fontSize) {
+ const setFontsize = size => {
+ this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;
+ this.translate(0, -(size - this.#fontSize) * this.parentScale);
+ this.#fontSize = size;
+ this.#setEditorDimensions();
+ };
+ const savedFontsize = this.#fontSize;
+ this.addCommands({
+ cmd: () => {
+ setFontsize(fontSize);
+ },
+ undo: () => {
+ setFontsize(savedFontsize);
+ },
+ mustExec: true,
+ type: util.AnnotationEditorParamsType.FREETEXT_SIZE,
+ overwriteIfSameType: true,
+ keepUndo: true
+ });
+ }
+ #updateColor(color) {
+ const savedColor = this.#color;
+ this.addCommands({
+ cmd: () => {
+ this.#color = this.editorDiv.style.color = color;
+ },
+ undo: () => {
+ this.#color = this.editorDiv.style.color = savedColor;
+ },
+ mustExec: true,
+ type: util.AnnotationEditorParamsType.FREETEXT_COLOR,
+ overwriteIfSameType: true,
+ keepUndo: true
+ });
+ }
+ _translateEmpty(x, y) {
+ this._uiManager.translateSelectedEditors(x, y, true);
+ }
+ getInitialTranslation() {
+ const scale = this.parentScale;
+ return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];
+ }
+ rebuild() {
+ if (!this.parent) {
+ return;
+ }
+ super.rebuild();
+ if (this.div === null) {
+ return;
+ }
+ if (!this.isAttachedToDOM) {
+ this.parent.add(this);
+ }
+ }
+ enableEditMode() {
+ if (this.isInEditMode()) {
+ return;
+ }
+ this.parent.setEditingState(false);
+ this.parent.updateToolbar(util.AnnotationEditorType.FREETEXT);
+ super.enableEditMode();
+ this.overlayDiv.classList.remove("enabled");
+ this.editorDiv.contentEditable = true;
+ this._isDraggable = false;
+ this.div.removeAttribute("aria-activedescendant");
+ this.editorDiv.addEventListener("keydown", this.#boundEditorDivKeydown);
+ this.editorDiv.addEventListener("focus", this.#boundEditorDivFocus);
+ this.editorDiv.addEventListener("blur", this.#boundEditorDivBlur);
+ this.editorDiv.addEventListener("input", this.#boundEditorDivInput);
+ }
+ disableEditMode() {
+ if (!this.isInEditMode()) {
+ return;
+ }
+ this.parent.setEditingState(true);
+ super.disableEditMode();
+ this.overlayDiv.classList.add("enabled");
+ this.editorDiv.contentEditable = false;
+ this.div.setAttribute("aria-activedescendant", this.#editorDivId);
+ this._isDraggable = true;
+ this.editorDiv.removeEventListener("keydown", this.#boundEditorDivKeydown);
+ this.editorDiv.removeEventListener("focus", this.#boundEditorDivFocus);
+ this.editorDiv.removeEventListener("blur", this.#boundEditorDivBlur);
+ this.editorDiv.removeEventListener("input", this.#boundEditorDivInput);
+ this.div.focus({
+ preventScroll: true
+ });
+ this.isEditing = false;
+ this.parent.div.classList.add("freetextEditing");
+ }
+ focusin(event) {
+ if (!this._focusEventsAllowed) {
+ return;
+ }
+ super.focusin(event);
+ if (event.target !== this.editorDiv) {
+ this.editorDiv.focus();
+ }
+ }
+ onceAdded() {
+ if (this.width) {
+ this.#cheatInitialRect();
+ return;
+ }
+ this.enableEditMode();
+ this.editorDiv.focus();
+ if (this._initialOptions?.isCentered) {
+ this.center();
+ }
+ this._initialOptions = null;
+ }
+ isEmpty() {
+ return !this.editorDiv || this.editorDiv.innerText.trim() === "";
+ }
+ remove() {
+ this.isEditing = false;
+ if (this.parent) {
+ this.parent.setEditingState(true);
+ this.parent.div.classList.add("freetextEditing");
+ }
+ super.remove();
+ }
+ #extractText() {
+ const divs = this.editorDiv.getElementsByTagName("div");
+ if (divs.length === 0) {
+ return this.editorDiv.innerText;
+ }
+ const buffer = [];
+ for (const div of divs) {
+ buffer.push(div.innerText.replace(/\r\n?|\n/, ""));
+ }
+ return buffer.join("\n");
+ }
+ #setEditorDimensions() {
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ let rect;
+ if (this.isAttachedToDOM) {
+ rect = this.div.getBoundingClientRect();
+ } else {
+ const {
+ currentLayer,
+ div
+ } = this;
+ const savedDisplay = div.style.display;
+ div.style.display = "hidden";
+ currentLayer.div.append(this.div);
+ rect = div.getBoundingClientRect();
+ div.remove();
+ div.style.display = savedDisplay;
+ }
+ if (this.rotation % 180 === this.parentRotation % 180) {
+ this.width = rect.width / parentWidth;
+ this.height = rect.height / parentHeight;
+ } else {
+ this.width = rect.height / parentWidth;
+ this.height = rect.width / parentHeight;
+ }
+ this.fixAndSetPosition();
+ }
+ commit() {
+ if (!this.isInEditMode()) {
+ return;
+ }
+ super.commit();
+ this.disableEditMode();
+ const savedText = this.#content;
+ const newText = this.#content = this.#extractText().trimEnd();
+ if (savedText === newText) {
+ return;
+ }
+ const setText = text => {
+ this.#content = text;
+ if (!text) {
+ this.remove();
+ return;
+ }
+ this.#setContent();
+ this._uiManager.rebuild(this);
+ this.#setEditorDimensions();
+ };
+ this.addCommands({
+ cmd: () => {
+ setText(newText);
+ },
+ undo: () => {
+ setText(savedText);
+ },
+ mustExec: false
+ });
+ this.#setEditorDimensions();
+ }
+ shouldGetKeyboardEvents() {
+ return this.isInEditMode();
+ }
+ enterInEditMode() {
+ this.enableEditMode();
+ this.editorDiv.focus();
+ }
+ dblclick(event) {
+ this.enterInEditMode();
+ }
+ keydown(event) {
+ if (event.target === this.div && event.key === "Enter") {
+ this.enterInEditMode();
+ event.preventDefault();
+ }
+ }
+ editorDivKeydown(event) {
+ FreeTextEditor._keyboardManager.exec(this, event);
+ }
+ editorDivFocus(event) {
+ this.isEditing = true;
+ }
+ editorDivBlur(event) {
+ this.isEditing = false;
+ }
+ editorDivInput(event) {
+ this.parent.div.classList.toggle("freetextEditing", this.isEmpty());
+ }
+ disableEditing() {
+ this.editorDiv.setAttribute("role", "comment");
+ this.editorDiv.removeAttribute("aria-multiline");
+ }
+ enableEditing() {
+ this.editorDiv.setAttribute("role", "textbox");
+ this.editorDiv.setAttribute("aria-multiline", true);
+ }
+ render() {
+ if (this.div) {
+ return this.div;
+ }
+ let baseX, baseY;
+ if (this.width) {
+ baseX = this.x;
+ baseY = this.y;
+ }
+ super.render();
+ this.editorDiv = document.createElement("div");
+ this.editorDiv.className = "internal";
+ this.editorDiv.setAttribute("id", this.#editorDivId);
+ this.editorDiv.setAttribute("data-l10n-id", "pdfjs-free-text");
+ this.enableEditing();
+ editor_editor.AnnotationEditor._l10nPromise.get("pdfjs-free-text-default-content").then(msg => this.editorDiv?.setAttribute("default-content", msg));
+ this.editorDiv.contentEditable = true;
+ const {
+ style
+ } = this.editorDiv;
+ style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;
+ style.color = this.#color;
+ this.div.append(this.editorDiv);
+ this.overlayDiv = document.createElement("div");
+ this.overlayDiv.classList.add("overlay", "enabled");
+ this.div.append(this.overlayDiv);
+ (0,tools.bindEvents)(this, this.div, ["dblclick", "keydown"]);
+ if (this.width) {
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ if (this.annotationElementId) {
+ const {
+ position
+ } = this.#initialData;
+ let [tx, ty] = this.getInitialTranslation();
+ [tx, ty] = this.pageTranslationToScreen(tx, ty);
+ const [pageWidth, pageHeight] = this.pageDimensions;
+ const [pageX, pageY] = this.pageTranslation;
+ let posX, posY;
+ switch (this.rotation) {
+ case 0:
+ posX = baseX + (position[0] - pageX) / pageWidth;
+ posY = baseY + this.height - (position[1] - pageY) / pageHeight;
+ break;
+ case 90:
+ posX = baseX + (position[0] - pageX) / pageWidth;
+ posY = baseY - (position[1] - pageY) / pageHeight;
+ [tx, ty] = [ty, -tx];
+ break;
+ case 180:
+ posX = baseX - this.width + (position[0] - pageX) / pageWidth;
+ posY = baseY - (position[1] - pageY) / pageHeight;
+ [tx, ty] = [-tx, -ty];
+ break;
+ case 270:
+ posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;
+ posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;
+ [tx, ty] = [-ty, tx];
+ break;
+ }
+ this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);
+ } else {
+ this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);
+ }
+ this.#setContent();
+ this._isDraggable = true;
+ this.editorDiv.contentEditable = false;
+ } else {
+ this._isDraggable = false;
+ this.editorDiv.contentEditable = true;
+ }
+ return this.div;
+ }
+ #setContent() {
+ this.editorDiv.replaceChildren();
+ if (!this.#content) {
+ return;
+ }
+ for (const line of this.#content.split("\n")) {
+ const div = document.createElement("div");
+ div.append(line ? document.createTextNode(line) : document.createElement("br"));
+ this.editorDiv.append(div);
+ }
+ }
+ get contentDiv() {
+ return this.editorDiv;
+ }
+ static deserialize(data, parent, uiManager) {
+ let initialData = null;
+ if (data instanceof annotation_layer.FreeTextAnnotationElement) {
+ const {
+ data: {
+ defaultAppearanceData: {
+ fontSize,
+ fontColor
+ },
+ rect,
+ rotation,
+ id
+ },
+ textContent,
+ textPosition,
+ parent: {
+ page: {
+ pageNumber
+ }
+ }
+ } = data;
+ if (!textContent || textContent.length === 0) {
+ return null;
+ }
+ initialData = data = {
+ annotationType: util.AnnotationEditorType.FREETEXT,
+ color: Array.from(fontColor),
+ fontSize,
+ value: textContent.join("\n"),
+ position: textPosition,
+ pageIndex: pageNumber - 1,
+ rect,
+ rotation,
+ id,
+ deleted: false
+ };
+ }
+ const editor = super.deserialize(data, parent, uiManager);
+ editor.#fontSize = data.fontSize;
+ editor.#color = util.Util.makeHexColor(...data.color);
+ editor.#content = data.value;
+ editor.annotationElementId = data.id || null;
+ editor.#initialData = initialData;
+ return editor;
+ }
+ serialize(isForCopying = false) {
+ if (this.isEmpty()) {
+ return null;
+ }
+ if (this.deleted) {
+ return {
+ pageIndex: this.pageIndex,
+ id: this.annotationElementId,
+ deleted: true
+ };
+ }
+ const padding = FreeTextEditor._internalPadding * this.parentScale;
+ const rect = this.getRect(padding, padding);
+ const color = editor_editor.AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color);
+ const serialized = {
+ annotationType: util.AnnotationEditorType.FREETEXT,
+ color,
+ fontSize: this.#fontSize,
+ value: this.#content,
+ pageIndex: this.pageIndex,
+ rect,
+ rotation: this.rotation,
+ structTreeParentId: this._structTreeParentId
+ };
+ if (isForCopying) {
+ return serialized;
+ }
+ if (this.annotationElementId && !this.#hasElementChanged(serialized)) {
+ return null;
+ }
+ serialized.id = this.annotationElementId;
+ return serialized;
+ }
+ #hasElementChanged(serialized) {
+ const {
+ value,
+ fontSize,
+ color,
+ rect,
+ pageIndex
+ } = this.#initialData;
+ return serialized.value !== value || serialized.fontSize !== fontSize || serialized.rect.some((x, i) => Math.abs(x - rect[i]) >= 1) || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;
+ }
+ #cheatInitialRect(delayed = false) {
+ if (!this.annotationElementId) {
+ return;
+ }
+ this.#setEditorDimensions();
+ if (!delayed && (this.width === 0 || this.height === 0)) {
+ setTimeout(() => this.#cheatInitialRect(true), 0);
+ return;
+ }
+ const padding = FreeTextEditor._internalPadding * this.parentScale;
+ this.#initialData.rect = this.getRect(padding, padding);
+ }
+}
+
+// EXTERNAL MODULE: ./src/display/editor/color_picker.js
+var color_picker = __webpack_require__(97);
+// EXTERNAL MODULE: ./src/display/editor/outliner.js
+var editor_outliner = __webpack_require__(405);
+;// CONCATENATED MODULE: ./src/display/editor/highlight.js
+
+
+
+
+
+class HighlightEditor extends editor_editor.AnnotationEditor {
+ #boxes;
+ #clipPathId = null;
+ #colorPicker = null;
+ #focusOutlines = null;
+ #highlightDiv = null;
+ #highlightOutlines = null;
+ #id = null;
+ #lastPoint = null;
+ #opacity;
+ #outlineId = null;
+ static _defaultColor = null;
+ static _defaultOpacity = 1;
+ static _l10nPromise;
+ static _type = "highlight";
+ static _editorType = util.AnnotationEditorType.HIGHLIGHT;
+ constructor(params) {
+ super({
+ ...params,
+ name: "highlightEditor"
+ });
+ HighlightEditor._defaultColor ||= this._uiManager.highlightColors?.values().next().value || "#fff066";
+ this.color = params.color || HighlightEditor._defaultColor;
+ this.#opacity = params.opacity || HighlightEditor._defaultOpacity;
+ this.#boxes = params.boxes || null;
+ this._isDraggable = false;
+ this.#createOutlines();
+ this.#addToDrawLayer();
+ this.rotate(this.rotation);
+ }
+ #createOutlines() {
+ const outliner = new editor_outliner.Outliner(this.#boxes, 0.001);
+ this.#highlightOutlines = outliner.getOutlines();
+ ({
+ x: this.x,
+ y: this.y,
+ width: this.width,
+ height: this.height
+ } = this.#highlightOutlines.box);
+ const outlinerForOutline = new editor_outliner.Outliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === "ltr");
+ this.#focusOutlines = outlinerForOutline.getOutlines();
+ const {
+ lastPoint
+ } = this.#focusOutlines.box;
+ this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];
+ }
+ static initialize(l10n) {
+ editor_editor.AnnotationEditor.initialize(l10n);
+ }
+ static updateDefaultParams(type, value) {
+ switch (type) {
+ case util.AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:
+ HighlightEditor._defaultColor = value;
+ break;
+ }
+ }
+ get toolbarPosition() {
+ return this.#lastPoint;
+ }
+ updateParams(type, value) {
+ switch (type) {
+ case util.AnnotationEditorParamsType.HIGHLIGHT_COLOR:
+ this.#updateColor(value);
+ break;
+ }
+ }
+ static get defaultPropertiesToUpdate() {
+ return [[util.AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR, HighlightEditor._defaultColor]];
+ }
+ get propertiesToUpdate() {
+ return [[util.AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor]];
+ }
+ #updateColor(color) {
+ const savedColor = this.color;
+ this.addCommands({
+ cmd: () => {
+ this.color = color;
+ this.parent.drawLayer.changeColor(this.#id, color);
+ this.#colorPicker?.updateColor(color);
+ },
+ undo: () => {
+ this.color = savedColor;
+ this.parent.drawLayer.changeColor(this.#id, savedColor);
+ this.#colorPicker?.updateColor(savedColor);
+ },
+ mustExec: true,
+ type: util.AnnotationEditorParamsType.HIGHLIGHT_COLOR,
+ overwriteIfSameType: true,
+ keepUndo: true
+ });
+ }
+ async addEditToolbar() {
+ const toolbar = await super.addEditToolbar();
+ if (!toolbar) {
+ return null;
+ }
+ if (this._uiManager.highlightColors) {
+ this.#colorPicker = new color_picker.ColorPicker({
+ editor: this
+ });
+ toolbar.addColorPicker(this.#colorPicker);
+ }
+ return toolbar;
+ }
+ disableEditing() {
+ super.disableEditing();
+ this.div.classList.toggle("disabled", true);
+ }
+ enableEditing() {
+ super.enableEditing();
+ this.div.classList.toggle("disabled", false);
+ }
+ fixAndSetPosition() {
+ return super.fixAndSetPosition(0);
+ }
+ getRect(tx, ty) {
+ return super.getRect(tx, ty, 0);
+ }
+ onceAdded() {
+ this.parent.addUndoableEditor(this);
+ this.div.focus();
+ }
+ remove() {
+ super.remove();
+ this.#cleanDrawLayer();
+ }
+ rebuild() {
+ if (!this.parent) {
+ return;
+ }
+ super.rebuild();
+ if (this.div === null) {
+ return;
+ }
+ this.#addToDrawLayer();
+ if (!this.isAttachedToDOM) {
+ this.parent.add(this);
+ }
+ }
+ setParent(parent) {
+ let mustBeSelected = false;
+ if (this.parent && !parent) {
+ this.#cleanDrawLayer();
+ } else if (parent) {
+ this.#addToDrawLayer(parent);
+ mustBeSelected = !this.parent && this.div?.classList.contains("selectedEditor");
+ }
+ super.setParent(parent);
+ if (mustBeSelected) {
+ this.select();
+ }
+ }
+ #cleanDrawLayer() {
+ if (this.#id === null || !this.parent) {
+ return;
+ }
+ this.parent.drawLayer.remove(this.#id);
+ this.#id = null;
+ this.parent.drawLayer.remove(this.#outlineId);
+ this.#outlineId = null;
+ }
+ #addToDrawLayer(parent = this.parent) {
+ if (this.#id !== null) {
+ return;
+ }
+ ({
+ id: this.#id,
+ clipPathId: this.#clipPathId
+ } = parent.drawLayer.highlight(this.#highlightOutlines, this.color, this.#opacity));
+ if (this.#highlightDiv) {
+ this.#highlightDiv.style.clipPath = this.#clipPathId;
+ }
+ this.#outlineId = parent.drawLayer.highlightOutline(this.#focusOutlines);
+ }
+ static #rotateBbox({
+ x,
+ y,
+ width,
+ height
+ }, angle) {
+ switch (angle) {
+ case 90:
+ return {
+ x: 1 - y - height,
+ y: x,
+ width: height,
+ height: width
+ };
+ case 180:
+ return {
+ x: 1 - x - width,
+ y: 1 - y - height,
+ width,
+ height
+ };
+ case 270:
+ return {
+ x: y,
+ y: 1 - x - width,
+ width: height,
+ height: width
+ };
+ }
+ return {
+ x,
+ y,
+ width,
+ height
+ };
+ }
+ rotate(angle) {
+ const {
+ drawLayer
+ } = this.parent;
+ drawLayer.rotate(this.#id, angle);
+ drawLayer.rotate(this.#outlineId, angle);
+ drawLayer.updateBox(this.#id, HighlightEditor.#rotateBbox(this, angle));
+ drawLayer.updateBox(this.#outlineId, HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle));
+ }
+ render() {
+ if (this.div) {
+ return this.div;
+ }
+ const div = super.render();
+ const highlightDiv = this.#highlightDiv = document.createElement("div");
+ div.append(highlightDiv);
+ highlightDiv.className = "internal";
+ highlightDiv.style.clipPath = this.#clipPathId;
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ this.setDims(this.width * parentWidth, this.height * parentHeight);
+ (0,tools.bindEvents)(this, this.#highlightDiv, ["pointerover", "pointerleave"]);
+ this.enableEditing();
+ return div;
+ }
+ pointerover() {
+ this.parent.drawLayer.addClass(this.#outlineId, "hovered");
+ }
+ pointerleave() {
+ this.parent.drawLayer.removeClass(this.#outlineId, "hovered");
+ }
+ select() {
+ super.select();
+ this.parent?.drawLayer.removeClass(this.#outlineId, "hovered");
+ this.parent?.drawLayer.addClass(this.#outlineId, "selected");
+ }
+ unselect() {
+ super.unselect();
+ this.parent?.drawLayer.removeClass(this.#outlineId, "selected");
+ }
+ #serializeBoxes() {
+ const [pageWidth, pageHeight] = this.pageDimensions;
+ const boxes = this.#boxes;
+ const quadPoints = new Array(boxes.length * 8);
+ let i = 0;
+ for (const {
+ x,
+ y,
+ width,
+ height
+ } of boxes) {
+ const sx = x * pageWidth;
+ const sy = (1 - y - height) * pageHeight;
+ quadPoints[i] = quadPoints[i + 4] = sx;
+ quadPoints[i + 1] = quadPoints[i + 3] = sy;
+ quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;
+ quadPoints[i + 5] = quadPoints[i + 7] = sy + height * pageHeight;
+ i += 8;
+ }
+ return quadPoints;
+ }
+ #serializeOutlines() {
+ const [pageWidth, pageHeight] = this.pageDimensions;
+ const width = this.width * pageWidth;
+ const height = this.height * pageHeight;
+ const tx = this.x * pageWidth;
+ const ty = (1 - this.y - this.height) * pageHeight;
+ const outlines = [];
+ for (const outline of this.#highlightOutlines.outlines) {
+ const points = new Array(outline.length);
+ for (let i = 0; i < outline.length; i += 2) {
+ points[i] = tx + outline[i] * width;
+ points[i + 1] = ty + (1 - outline[i + 1]) * height;
+ }
+ outlines.push(points);
+ }
+ return outlines;
+ }
+ static deserialize(data, parent, uiManager) {
+ const editor = super.deserialize(data, parent, uiManager);
+ const {
+ rect,
+ color,
+ quadPoints
+ } = data;
+ editor.color = util.Util.makeHexColor(...color);
+ editor.#opacity = data.opacity;
+ const [pageWidth, pageHeight] = editor.pageDimensions;
+ editor.width = (rect[2] - rect[0]) / pageWidth;
+ editor.height = (rect[3] - rect[1]) / pageHeight;
+ const boxes = editor.#boxes = [];
+ for (let i = 0; i < quadPoints.length; i += 8) {
+ boxes.push({
+ x: quadPoints[4] / pageWidth,
+ y: 1 - quadPoints[i + 5] / pageHeight,
+ width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,
+ height: (quadPoints[i + 5] - quadPoints[i + 1]) / pageHeight
+ });
+ }
+ editor.#createOutlines();
+ return editor;
+ }
+ serialize(isForCopying = false) {
+ if (this.isEmpty() || isForCopying) {
+ return null;
+ }
+ const rect = this.getRect(0, 0);
+ const color = editor_editor.AnnotationEditor._colorManager.convert(this.color);
+ return {
+ annotationType: util.AnnotationEditorType.HIGHLIGHT,
+ color,
+ opacity: this.#opacity,
+ quadPoints: this.#serializeBoxes(),
+ outlines: this.#serializeOutlines(),
+ pageIndex: this.pageIndex,
+ rect,
+ rotation: 0,
+ structTreeParentId: this._structTreeParentId
+ };
+ }
+ static canCreateNewEmptyEditor() {
+ return false;
+ }
+}
+
+// EXTERNAL MODULE: ./src/display/display_utils.js
+var display_utils = __webpack_require__(473);
+;// CONCATENATED MODULE: ./src/display/editor/ink.js
+
+
+
+
+
+class InkEditor extends editor_editor.AnnotationEditor {
+ #baseHeight = 0;
+ #baseWidth = 0;
+ #boundCanvasPointermove = this.canvasPointermove.bind(this);
+ #boundCanvasPointerleave = this.canvasPointerleave.bind(this);
+ #boundCanvasPointerup = this.canvasPointerup.bind(this);
+ #boundCanvasPointerdown = this.canvasPointerdown.bind(this);
+ #canvasContextMenuTimeoutId = null;
+ #currentPath2D = new Path2D();
+ #disableEditing = false;
+ #hasSomethingToDraw = false;
+ #isCanvasInitialized = false;
+ #observer = null;
+ #realWidth = 0;
+ #realHeight = 0;
+ #requestFrameCallback = null;
+ static _defaultColor = null;
+ static _defaultOpacity = 1;
+ static _defaultThickness = 1;
+ static _type = "ink";
+ static _editorType = util.AnnotationEditorType.INK;
+ constructor(params) {
+ super({
+ ...params,
+ name: "inkEditor"
+ });
+ this.color = params.color || null;
+ this.thickness = params.thickness || null;
+ this.opacity = params.opacity || null;
+ this.paths = [];
+ this.bezierPath2D = [];
+ this.allRawPaths = [];
+ this.currentPath = [];
+ this.scaleFactor = 1;
+ this.translationX = this.translationY = 0;
+ this.x = 0;
+ this.y = 0;
+ this._willKeepAspectRatio = true;
+ }
+ static initialize(l10n) {
+ editor_editor.AnnotationEditor.initialize(l10n);
+ }
+ static updateDefaultParams(type, value) {
+ switch (type) {
+ case util.AnnotationEditorParamsType.INK_THICKNESS:
+ InkEditor._defaultThickness = value;
+ break;
+ case util.AnnotationEditorParamsType.INK_COLOR:
+ InkEditor._defaultColor = value;
+ break;
+ case util.AnnotationEditorParamsType.INK_OPACITY:
+ InkEditor._defaultOpacity = value / 100;
+ break;
+ }
+ }
+ updateParams(type, value) {
+ switch (type) {
+ case util.AnnotationEditorParamsType.INK_THICKNESS:
+ this.#updateThickness(value);
+ break;
+ case util.AnnotationEditorParamsType.INK_COLOR:
+ this.#updateColor(value);
+ break;
+ case util.AnnotationEditorParamsType.INK_OPACITY:
+ this.#updateOpacity(value);
+ break;
+ }
+ }
+ static get defaultPropertiesToUpdate() {
+ return [[util.AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [util.AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || editor_editor.AnnotationEditor._defaultLineColor], [util.AnnotationEditorParamsType.INK_OPACITY, Math.round(InkEditor._defaultOpacity * 100)]];
+ }
+ get propertiesToUpdate() {
+ return [[util.AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [util.AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || editor_editor.AnnotationEditor._defaultLineColor], [util.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity))]];
+ }
+ #updateThickness(thickness) {
+ const savedThickness = this.thickness;
+ this.addCommands({
+ cmd: () => {
+ this.thickness = thickness;
+ this.#fitToContent();
+ },
+ undo: () => {
+ this.thickness = savedThickness;
+ this.#fitToContent();
+ },
+ mustExec: true,
+ type: util.AnnotationEditorParamsType.INK_THICKNESS,
+ overwriteIfSameType: true,
+ keepUndo: true
+ });
+ }
+ #updateColor(color) {
+ const savedColor = this.color;
+ this.addCommands({
+ cmd: () => {
+ this.color = color;
+ this.#redraw();
+ },
+ undo: () => {
+ this.color = savedColor;
+ this.#redraw();
+ },
+ mustExec: true,
+ type: util.AnnotationEditorParamsType.INK_COLOR,
+ overwriteIfSameType: true,
+ keepUndo: true
+ });
+ }
+ #updateOpacity(opacity) {
+ opacity /= 100;
+ const savedOpacity = this.opacity;
+ this.addCommands({
+ cmd: () => {
+ this.opacity = opacity;
+ this.#redraw();
+ },
+ undo: () => {
+ this.opacity = savedOpacity;
+ this.#redraw();
+ },
+ mustExec: true,
+ type: util.AnnotationEditorParamsType.INK_OPACITY,
+ overwriteIfSameType: true,
+ keepUndo: true
+ });
+ }
+ rebuild() {
+ if (!this.parent) {
+ return;
+ }
+ super.rebuild();
+ if (this.div === null) {
+ return;
+ }
+ if (!this.canvas) {
+ this.#createCanvas();
+ this.#createObserver();
+ }
+ if (!this.isAttachedToDOM) {
+ this.parent.add(this);
+ this.#setCanvasDims();
+ }
+ this.#fitToContent();
+ }
+ remove() {
+ if (this.canvas === null) {
+ return;
+ }
+ if (!this.isEmpty()) {
+ this.commit();
+ }
+ this.canvas.width = this.canvas.height = 0;
+ this.canvas.remove();
+ this.canvas = null;
+ if (this.#canvasContextMenuTimeoutId) {
+ clearTimeout(this.#canvasContextMenuTimeoutId);
+ this.#canvasContextMenuTimeoutId = null;
+ }
+ this.#observer.disconnect();
+ this.#observer = null;
+ super.remove();
+ }
+ setParent(parent) {
+ if (!this.parent && parent) {
+ this._uiManager.removeShouldRescale(this);
+ } else if (this.parent && parent === null) {
+ this._uiManager.addShouldRescale(this);
+ }
+ super.setParent(parent);
+ }
+ onScaleChanging() {
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ const width = this.width * parentWidth;
+ const height = this.height * parentHeight;
+ this.setDimensions(width, height);
+ }
+ enableEditMode() {
+ if (this.#disableEditing || this.canvas === null) {
+ return;
+ }
+ super.enableEditMode();
+ this._isDraggable = false;
+ this.canvas.addEventListener("pointerdown", this.#boundCanvasPointerdown);
+ }
+ disableEditMode() {
+ if (!this.isInEditMode() || this.canvas === null) {
+ return;
+ }
+ super.disableEditMode();
+ this._isDraggable = !this.isEmpty();
+ this.div.classList.remove("editing");
+ this.canvas.removeEventListener("pointerdown", this.#boundCanvasPointerdown);
+ }
+ onceAdded() {
+ this._isDraggable = !this.isEmpty();
+ }
+ isEmpty() {
+ return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0;
+ }
+ #getInitialBBox() {
+ const {
+ parentRotation,
+ parentDimensions: [width, height]
+ } = this;
+ switch (parentRotation) {
+ case 90:
+ return [0, height, height, width];
+ case 180:
+ return [width, height, width, height];
+ case 270:
+ return [width, 0, height, width];
+ default:
+ return [0, 0, width, height];
+ }
+ }
+ #setStroke() {
+ const {
+ ctx,
+ color,
+ opacity,
+ thickness,
+ parentScale,
+ scaleFactor
+ } = this;
+ ctx.lineWidth = thickness * parentScale / scaleFactor;
+ ctx.lineCap = "round";
+ ctx.lineJoin = "round";
+ ctx.miterLimit = 10;
+ ctx.strokeStyle = `${color}${(0,tools.opacityToHex)(opacity)}`;
+ }
+ #startDrawing(x, y) {
+ this.canvas.addEventListener("contextmenu", display_utils.noContextMenu);
+ this.canvas.addEventListener("pointerleave", this.#boundCanvasPointerleave);
+ this.canvas.addEventListener("pointermove", this.#boundCanvasPointermove);
+ this.canvas.addEventListener("pointerup", this.#boundCanvasPointerup);
+ this.canvas.removeEventListener("pointerdown", this.#boundCanvasPointerdown);
+ this.isEditing = true;
+ if (!this.#isCanvasInitialized) {
+ this.#isCanvasInitialized = true;
+ this.#setCanvasDims();
+ this.thickness ||= InkEditor._defaultThickness;
+ this.color ||= InkEditor._defaultColor || editor_editor.AnnotationEditor._defaultLineColor;
+ this.opacity ??= InkEditor._defaultOpacity;
+ }
+ this.currentPath.push([x, y]);
+ this.#hasSomethingToDraw = false;
+ this.#setStroke();
+ this.#requestFrameCallback = () => {
+ this.#drawPoints();
+ if (this.#requestFrameCallback) {
+ window.requestAnimationFrame(this.#requestFrameCallback);
+ }
+ };
+ window.requestAnimationFrame(this.#requestFrameCallback);
+ }
+ #draw(x, y) {
+ const [lastX, lastY] = this.currentPath.at(-1);
+ if (this.currentPath.length > 1 && x === lastX && y === lastY) {
+ return;
+ }
+ const currentPath = this.currentPath;
+ let path2D = this.#currentPath2D;
+ currentPath.push([x, y]);
+ this.#hasSomethingToDraw = true;
+ if (currentPath.length <= 2) {
+ path2D.moveTo(...currentPath[0]);
+ path2D.lineTo(x, y);
+ return;
+ }
+ if (currentPath.length === 3) {
+ this.#currentPath2D = path2D = new Path2D();
+ path2D.moveTo(...currentPath[0]);
+ }
+ this.#makeBezierCurve(path2D, ...currentPath.at(-3), ...currentPath.at(-2), x, y);
+ }
+ #endPath() {
+ if (this.currentPath.length === 0) {
+ return;
+ }
+ const lastPoint = this.currentPath.at(-1);
+ this.#currentPath2D.lineTo(...lastPoint);
+ }
+ #stopDrawing(x, y) {
+ this.#requestFrameCallback = null;
+ x = Math.min(Math.max(x, 0), this.canvas.width);
+ y = Math.min(Math.max(y, 0), this.canvas.height);
+ this.#draw(x, y);
+ this.#endPath();
+ let bezier;
+ if (this.currentPath.length !== 1) {
+ bezier = this.#generateBezierPoints();
+ } else {
+ const xy = [x, y];
+ bezier = [[xy, xy.slice(), xy.slice(), xy]];
+ }
+ const path2D = this.#currentPath2D;
+ const currentPath = this.currentPath;
+ this.currentPath = [];
+ this.#currentPath2D = new Path2D();
+ const cmd = () => {
+ this.allRawPaths.push(currentPath);
+ this.paths.push(bezier);
+ this.bezierPath2D.push(path2D);
+ this.rebuild();
+ };
+ const undo = () => {
+ this.allRawPaths.pop();
+ this.paths.pop();
+ this.bezierPath2D.pop();
+ if (this.paths.length === 0) {
+ this.remove();
+ } else {
+ if (!this.canvas) {
+ this.#createCanvas();
+ this.#createObserver();
+ }
+ this.#fitToContent();
+ }
+ };
+ this.addCommands({
+ cmd,
+ undo,
+ mustExec: true
+ });
+ }
+ #drawPoints() {
+ if (!this.#hasSomethingToDraw) {
+ return;
+ }
+ this.#hasSomethingToDraw = false;
+ const thickness = Math.ceil(this.thickness * this.parentScale);
+ const lastPoints = this.currentPath.slice(-3);
+ const x = lastPoints.map(xy => xy[0]);
+ const y = lastPoints.map(xy => xy[1]);
+ const xMin = Math.min(...x) - thickness;
+ const xMax = Math.max(...x) + thickness;
+ const yMin = Math.min(...y) - thickness;
+ const yMax = Math.max(...y) + thickness;
+ const {
+ ctx
+ } = this;
+ ctx.save();
+ ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
+ for (const path of this.bezierPath2D) {
+ ctx.stroke(path);
+ }
+ ctx.stroke(this.#currentPath2D);
+ ctx.restore();
+ }
+ #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) {
+ const prevX = (x0 + x1) / 2;
+ const prevY = (y0 + y1) / 2;
+ const x3 = (x1 + x2) / 2;
+ const y3 = (y1 + y2) / 2;
+ path2D.bezierCurveTo(prevX + 2 * (x1 - prevX) / 3, prevY + 2 * (y1 - prevY) / 3, x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3, x3, y3);
+ }
+ #generateBezierPoints() {
+ const path = this.currentPath;
+ if (path.length <= 2) {
+ return [[path[0], path[0], path.at(-1), path.at(-1)]];
+ }
+ const bezierPoints = [];
+ let i;
+ let [x0, y0] = path[0];
+ for (i = 1; i < path.length - 2; i++) {
+ const [x1, y1] = path[i];
+ const [x2, y2] = path[i + 1];
+ const x3 = (x1 + x2) / 2;
+ const y3 = (y1 + y2) / 2;
+ const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];
+ const control2 = [x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3];
+ bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);
+ [x0, y0] = [x3, y3];
+ }
+ const [x1, y1] = path[i];
+ const [x2, y2] = path[i + 1];
+ const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];
+ const control2 = [x2 + 2 * (x1 - x2) / 3, y2 + 2 * (y1 - y2) / 3];
+ bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);
+ return bezierPoints;
+ }
+ #redraw() {
+ if (this.isEmpty()) {
+ this.#updateTransform();
+ return;
+ }
+ this.#setStroke();
+ const {
+ canvas,
+ ctx
+ } = this;
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
+ this.#updateTransform();
+ for (const path of this.bezierPath2D) {
+ ctx.stroke(path);
+ }
+ }
+ commit() {
+ if (this.#disableEditing) {
+ return;
+ }
+ super.commit();
+ this.isEditing = false;
+ this.disableEditMode();
+ this.setInForeground();
+ this.#disableEditing = true;
+ this.div.classList.add("disabled");
+ this.#fitToContent(true);
+ this.select();
+ this.parent.addInkEditorIfNeeded(true);
+ this.moveInDOM();
+ this.div.focus({
+ preventScroll: true
+ });
+ }
+ focusin(event) {
+ if (!this._focusEventsAllowed) {
+ return;
+ }
+ super.focusin(event);
+ this.enableEditMode();
+ }
+ canvasPointerdown(event) {
+ if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {
+ return;
+ }
+ this.setInForeground();
+ event.preventDefault();
+ if (!this.div.contains(document.activeElement)) {
+ this.div.focus({
+ preventScroll: true
+ });
+ }
+ this.#startDrawing(event.offsetX, event.offsetY);
+ }
+ canvasPointermove(event) {
+ event.preventDefault();
+ this.#draw(event.offsetX, event.offsetY);
+ }
+ canvasPointerup(event) {
+ event.preventDefault();
+ this.#endDrawing(event);
+ }
+ canvasPointerleave(event) {
+ this.#endDrawing(event);
+ }
+ #endDrawing(event) {
+ this.canvas.removeEventListener("pointerleave", this.#boundCanvasPointerleave);
+ this.canvas.removeEventListener("pointermove", this.#boundCanvasPointermove);
+ this.canvas.removeEventListener("pointerup", this.#boundCanvasPointerup);
+ this.canvas.addEventListener("pointerdown", this.#boundCanvasPointerdown);
+ if (this.#canvasContextMenuTimeoutId) {
+ clearTimeout(this.#canvasContextMenuTimeoutId);
+ }
+ this.#canvasContextMenuTimeoutId = setTimeout(() => {
+ this.#canvasContextMenuTimeoutId = null;
+ this.canvas.removeEventListener("contextmenu", display_utils.noContextMenu);
+ }, 10);
+ this.#stopDrawing(event.offsetX, event.offsetY);
+ this.addToAnnotationStorage();
+ this.setInBackground();
+ }
+ #createCanvas() {
+ this.canvas = document.createElement("canvas");
+ this.canvas.width = this.canvas.height = 0;
+ this.canvas.className = "inkEditorCanvas";
+ this.canvas.setAttribute("data-l10n-id", "pdfjs-ink-canvas");
+ this.div.append(this.canvas);
+ this.ctx = this.canvas.getContext("2d");
+ }
+ #createObserver() {
+ this.#observer = new ResizeObserver(entries => {
+ const rect = entries[0].contentRect;
+ if (rect.width && rect.height) {
+ this.setDimensions(rect.width, rect.height);
+ }
+ });
+ this.#observer.observe(this.div);
+ }
+ get isResizable() {
+ return !this.isEmpty() && this.#disableEditing;
+ }
+ render() {
+ if (this.div) {
+ return this.div;
+ }
+ let baseX, baseY;
+ if (this.width) {
+ baseX = this.x;
+ baseY = this.y;
+ }
+ super.render();
+ this.div.setAttribute("data-l10n-id", "pdfjs-ink");
+ const [x, y, w, h] = this.#getInitialBBox();
+ this.setAt(x, y, 0, 0);
+ this.setDims(w, h);
+ this.#createCanvas();
+ if (this.width) {
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ this.setAspectRatio(this.width * parentWidth, this.height * parentHeight);
+ this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);
+ this.#isCanvasInitialized = true;
+ this.#setCanvasDims();
+ this.setDims(this.width * parentWidth, this.height * parentHeight);
+ this.#redraw();
+ this.div.classList.add("disabled");
+ } else {
+ this.div.classList.add("editing");
+ this.enableEditMode();
+ }
+ this.#createObserver();
+ return this.div;
+ }
+ #setCanvasDims() {
+ if (!this.#isCanvasInitialized) {
+ return;
+ }
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ this.canvas.width = Math.ceil(this.width * parentWidth);
+ this.canvas.height = Math.ceil(this.height * parentHeight);
+ this.#updateTransform();
+ }
+ setDimensions(width, height) {
+ const roundedWidth = Math.round(width);
+ const roundedHeight = Math.round(height);
+ if (this.#realWidth === roundedWidth && this.#realHeight === roundedHeight) {
+ return;
+ }
+ this.#realWidth = roundedWidth;
+ this.#realHeight = roundedHeight;
+ this.canvas.style.visibility = "hidden";
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ this.width = width / parentWidth;
+ this.height = height / parentHeight;
+ this.fixAndSetPosition();
+ if (this.#disableEditing) {
+ this.#setScaleFactor(width, height);
+ }
+ this.#setCanvasDims();
+ this.#redraw();
+ this.canvas.style.visibility = "visible";
+ this.fixDims();
+ }
+ #setScaleFactor(width, height) {
+ const padding = this.#getPadding();
+ const scaleFactorW = (width - padding) / this.#baseWidth;
+ const scaleFactorH = (height - padding) / this.#baseHeight;
+ this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);
+ }
+ #updateTransform() {
+ const padding = this.#getPadding() / 2;
+ this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding);
+ }
+ static #buildPath2D(bezier) {
+ const path2D = new Path2D();
+ for (let i = 0, ii = bezier.length; i < ii; i++) {
+ const [first, control1, control2, second] = bezier[i];
+ if (i === 0) {
+ path2D.moveTo(...first);
+ }
+ path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]);
+ }
+ return path2D;
+ }
+ static #toPDFCoordinates(points, rect, rotation) {
+ const [blX, blY, trX, trY] = rect;
+ switch (rotation) {
+ case 0:
+ for (let i = 0, ii = points.length; i < ii; i += 2) {
+ points[i] += blX;
+ points[i + 1] = trY - points[i + 1];
+ }
+ break;
+ case 90:
+ for (let i = 0, ii = points.length; i < ii; i += 2) {
+ const x = points[i];
+ points[i] = points[i + 1] + blX;
+ points[i + 1] = x + blY;
+ }
+ break;
+ case 180:
+ for (let i = 0, ii = points.length; i < ii; i += 2) {
+ points[i] = trX - points[i];
+ points[i + 1] += blY;
+ }
+ break;
+ case 270:
+ for (let i = 0, ii = points.length; i < ii; i += 2) {
+ const x = points[i];
+ points[i] = trX - points[i + 1];
+ points[i + 1] = trY - x;
+ }
+ break;
+ default:
+ throw new Error("Invalid rotation");
+ }
+ return points;
+ }
+ static #fromPDFCoordinates(points, rect, rotation) {
+ const [blX, blY, trX, trY] = rect;
+ switch (rotation) {
+ case 0:
+ for (let i = 0, ii = points.length; i < ii; i += 2) {
+ points[i] -= blX;
+ points[i + 1] = trY - points[i + 1];
+ }
+ break;
+ case 90:
+ for (let i = 0, ii = points.length; i < ii; i += 2) {
+ const x = points[i];
+ points[i] = points[i + 1] - blY;
+ points[i + 1] = x - blX;
+ }
+ break;
+ case 180:
+ for (let i = 0, ii = points.length; i < ii; i += 2) {
+ points[i] = trX - points[i];
+ points[i + 1] -= blY;
+ }
+ break;
+ case 270:
+ for (let i = 0, ii = points.length; i < ii; i += 2) {
+ const x = points[i];
+ points[i] = trY - points[i + 1];
+ points[i + 1] = trX - x;
+ }
+ break;
+ default:
+ throw new Error("Invalid rotation");
+ }
+ return points;
+ }
+ #serializePaths(s, tx, ty, rect) {
+ const paths = [];
+ const padding = this.thickness / 2;
+ const shiftX = s * tx + padding;
+ const shiftY = s * ty + padding;
+ for (const bezier of this.paths) {
+ const buffer = [];
+ const points = [];
+ for (let j = 0, jj = bezier.length; j < jj; j++) {
+ const [first, control1, control2, second] = bezier[j];
+ const p10 = s * first[0] + shiftX;
+ const p11 = s * first[1] + shiftY;
+ const p20 = s * control1[0] + shiftX;
+ const p21 = s * control1[1] + shiftY;
+ const p30 = s * control2[0] + shiftX;
+ const p31 = s * control2[1] + shiftY;
+ const p40 = s * second[0] + shiftX;
+ const p41 = s * second[1] + shiftY;
+ if (j === 0) {
+ buffer.push(p10, p11);
+ points.push(p10, p11);
+ }
+ buffer.push(p20, p21, p30, p31, p40, p41);
+ points.push(p20, p21);
+ if (j === jj - 1) {
+ points.push(p40, p41);
+ }
+ }
+ paths.push({
+ bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation),
+ points: InkEditor.#toPDFCoordinates(points, rect, this.rotation)
+ });
+ }
+ return paths;
+ }
+ #getBbox() {
+ let xMin = Infinity;
+ let xMax = -Infinity;
+ let yMin = Infinity;
+ let yMax = -Infinity;
+ for (const path of this.paths) {
+ for (const [first, control1, control2, second] of path) {
+ const bbox = util.Util.bezierBoundingBox(...first, ...control1, ...control2, ...second);
+ xMin = Math.min(xMin, bbox[0]);
+ yMin = Math.min(yMin, bbox[1]);
+ xMax = Math.max(xMax, bbox[2]);
+ yMax = Math.max(yMax, bbox[3]);
+ }
+ }
+ return [xMin, yMin, xMax, yMax];
+ }
+ #getPadding() {
+ return this.#disableEditing ? Math.ceil(this.thickness * this.parentScale) : 0;
+ }
+ #fitToContent(firstTime = false) {
+ if (this.isEmpty()) {
+ return;
+ }
+ if (!this.#disableEditing) {
+ this.#redraw();
+ return;
+ }
+ const bbox = this.#getBbox();
+ const padding = this.#getPadding();
+ this.#baseWidth = Math.max(editor_editor.AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);
+ this.#baseHeight = Math.max(editor_editor.AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);
+ const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);
+ const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ this.width = width / parentWidth;
+ this.height = height / parentHeight;
+ this.setAspectRatio(width, height);
+ const prevTranslationX = this.translationX;
+ const prevTranslationY = this.translationY;
+ this.translationX = -bbox[0];
+ this.translationY = -bbox[1];
+ this.#setCanvasDims();
+ this.#redraw();
+ this.#realWidth = width;
+ this.#realHeight = height;
+ this.setDims(width, height);
+ const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;
+ this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding);
+ }
+ static deserialize(data, parent, uiManager) {
+ if (data instanceof annotation_layer.InkAnnotationElement) {
+ return null;
+ }
+ const editor = super.deserialize(data, parent, uiManager);
+ editor.thickness = data.thickness;
+ editor.color = util.Util.makeHexColor(...data.color);
+ editor.opacity = data.opacity;
+ const [pageWidth, pageHeight] = editor.pageDimensions;
+ const width = editor.width * pageWidth;
+ const height = editor.height * pageHeight;
+ const scaleFactor = editor.parentScale;
+ const padding = data.thickness / 2;
+ editor.#disableEditing = true;
+ editor.#realWidth = Math.round(width);
+ editor.#realHeight = Math.round(height);
+ const {
+ paths,
+ rect,
+ rotation
+ } = data;
+ for (let {
+ bezier
+ } of paths) {
+ bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation);
+ const path = [];
+ editor.paths.push(path);
+ let p0 = scaleFactor * (bezier[0] - padding);
+ let p1 = scaleFactor * (bezier[1] - padding);
+ for (let i = 2, ii = bezier.length; i < ii; i += 6) {
+ const p10 = scaleFactor * (bezier[i] - padding);
+ const p11 = scaleFactor * (bezier[i + 1] - padding);
+ const p20 = scaleFactor * (bezier[i + 2] - padding);
+ const p21 = scaleFactor * (bezier[i + 3] - padding);
+ const p30 = scaleFactor * (bezier[i + 4] - padding);
+ const p31 = scaleFactor * (bezier[i + 5] - padding);
+ path.push([[p0, p1], [p10, p11], [p20, p21], [p30, p31]]);
+ p0 = p30;
+ p1 = p31;
+ }
+ const path2D = this.#buildPath2D(path);
+ editor.bezierPath2D.push(path2D);
+ }
+ const bbox = editor.#getBbox();
+ editor.#baseWidth = Math.max(editor_editor.AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);
+ editor.#baseHeight = Math.max(editor_editor.AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);
+ editor.#setScaleFactor(width, height);
+ return editor;
+ }
+ serialize() {
+ if (this.isEmpty()) {
+ return null;
+ }
+ const rect = this.getRect(0, 0);
+ const color = editor_editor.AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);
+ return {
+ annotationType: util.AnnotationEditorType.INK,
+ color,
+ thickness: this.thickness,
+ opacity: this.opacity,
+ paths: this.#serializePaths(this.scaleFactor / this.parentScale, this.translationX, this.translationY, rect),
+ pageIndex: this.pageIndex,
+ rect,
+ rotation: this.rotation,
+ structTreeParentId: this._structTreeParentId
+ };
+ }
+}
+
+;// CONCATENATED MODULE: ./src/display/editor/stamp.js
+
+
+
+
+class StampEditor extends editor_editor.AnnotationEditor {
+ #bitmap = null;
+ #bitmapId = null;
+ #bitmapPromise = null;
+ #bitmapUrl = null;
+ #bitmapFile = null;
+ #bitmapFileName = "";
+ #canvas = null;
+ #observer = null;
+ #resizeTimeoutId = null;
+ #isSvg = false;
+ #hasBeenAddedInUndoStack = false;
+ static _type = "stamp";
+ static _editorType = util.AnnotationEditorType.STAMP;
+ constructor(params) {
+ super({
+ ...params,
+ name: "stampEditor"
+ });
+ this.#bitmapUrl = params.bitmapUrl;
+ this.#bitmapFile = params.bitmapFile;
+ }
+ static initialize(l10n) {
+ editor_editor.AnnotationEditor.initialize(l10n);
+ }
+ static get supportedTypes() {
+ const types = ["apng", "avif", "bmp", "gif", "jpeg", "png", "svg+xml", "webp", "x-icon"];
+ return (0,util.shadow)(this, "supportedTypes", types.map(type => `image/${type}`));
+ }
+ static get supportedTypesStr() {
+ return (0,util.shadow)(this, "supportedTypesStr", this.supportedTypes.join(","));
+ }
+ static isHandlingMimeForPasting(mime) {
+ return this.supportedTypes.includes(mime);
+ }
+ static paste(item, parent) {
+ parent.pasteEditor(util.AnnotationEditorType.STAMP, {
+ bitmapFile: item.getAsFile()
+ });
+ }
+ #getBitmapFetched(data, fromId = false) {
+ if (!data) {
+ this.remove();
+ return;
+ }
+ this.#bitmap = data.bitmap;
+ if (!fromId) {
+ this.#bitmapId = data.id;
+ this.#isSvg = data.isSvg;
+ }
+ if (data.file) {
+ this.#bitmapFileName = data.file.name;
+ }
+ this.#createCanvas();
+ }
+ #getBitmapDone() {
+ this.#bitmapPromise = null;
+ this._uiManager.enableWaiting(false);
+ if (this.#canvas) {
+ this.div.focus();
+ }
+ }
+ #getBitmap() {
+ if (this.#bitmapId) {
+ this._uiManager.enableWaiting(true);
+ this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());
+ return;
+ }
+ if (this.#bitmapUrl) {
+ const url = this.#bitmapUrl;
+ this.#bitmapUrl = null;
+ this._uiManager.enableWaiting(true);
+ this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());
+ return;
+ }
+ if (this.#bitmapFile) {
+ const file = this.#bitmapFile;
+ this.#bitmapFile = null;
+ this._uiManager.enableWaiting(true);
+ this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());
+ return;
+ }
+ const input = document.createElement("input");
+ input.type = "file";
+ input.accept = StampEditor.supportedTypesStr;
+ this.#bitmapPromise = new Promise(resolve => {
+ input.addEventListener("change", async () => {
+ if (!input.files || input.files.length === 0) {
+ this.remove();
+ } else {
+ this._uiManager.enableWaiting(true);
+ const data = await this._uiManager.imageManager.getFromFile(input.files[0]);
+ this.#getBitmapFetched(data);
+ }
+ resolve();
+ });
+ input.addEventListener("cancel", () => {
+ this.remove();
+ resolve();
+ });
+ }).finally(() => this.#getBitmapDone());
+ input.click();
+ }
+ remove() {
+ if (this.#bitmapId) {
+ this.#bitmap = null;
+ this._uiManager.imageManager.deleteId(this.#bitmapId);
+ this.#canvas?.remove();
+ this.#canvas = null;
+ this.#observer?.disconnect();
+ this.#observer = null;
+ if (this.#resizeTimeoutId) {
+ clearTimeout(this.#resizeTimeoutId);
+ this.#resizeTimeoutId = null;
+ }
+ }
+ super.remove();
+ }
+ rebuild() {
+ if (!this.parent) {
+ if (this.#bitmapId) {
+ this.#getBitmap();
+ }
+ return;
+ }
+ super.rebuild();
+ if (this.div === null) {
+ return;
+ }
+ if (this.#bitmapId) {
+ this.#getBitmap();
+ }
+ if (!this.isAttachedToDOM) {
+ this.parent.add(this);
+ }
+ }
+ onceAdded() {
+ this._isDraggable = true;
+ this.div.focus();
+ }
+ isEmpty() {
+ return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile);
+ }
+ get isResizable() {
+ return true;
+ }
+ render() {
+ if (this.div) {
+ return this.div;
+ }
+ let baseX, baseY;
+ if (this.width) {
+ baseX = this.x;
+ baseY = this.y;
+ }
+ super.render();
+ this.div.hidden = true;
+ if (this.#bitmap) {
+ this.#createCanvas();
+ } else {
+ this.#getBitmap();
+ }
+ if (this.width) {
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);
+ }
+ return this.div;
+ }
+ #createCanvas() {
+ const {
+ div
+ } = this;
+ let {
+ width,
+ height
+ } = this.#bitmap;
+ const [pageWidth, pageHeight] = this.pageDimensions;
+ const MAX_RATIO = 0.75;
+ if (this.width) {
+ width = this.width * pageWidth;
+ height = this.height * pageHeight;
+ } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {
+ const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);
+ width *= factor;
+ height *= factor;
+ }
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ this.setDims(width * parentWidth / pageWidth, height * parentHeight / pageHeight);
+ this._uiManager.enableWaiting(false);
+ const canvas = this.#canvas = document.createElement("canvas");
+ div.append(canvas);
+ div.hidden = false;
+ this.#drawBitmap(width, height);
+ this.#createObserver();
+ if (!this.#hasBeenAddedInUndoStack) {
+ this.parent.addUndoableEditor(this);
+ this.#hasBeenAddedInUndoStack = true;
+ }
+ this._uiManager._eventBus.dispatch("reporttelemetry", {
+ source: this,
+ details: {
+ type: "editing",
+ subtype: this.editorType,
+ data: {
+ action: "inserted_image"
+ }
+ }
+ });
+ this.addAltTextButton();
+ if (this.#bitmapFileName) {
+ canvas.setAttribute("aria-label", this.#bitmapFileName);
+ }
+ }
+ #setDimensions(width, height) {
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ this.width = width / parentWidth;
+ this.height = height / parentHeight;
+ this.setDims(width, height);
+ if (this._initialOptions?.isCentered) {
+ this.center();
+ } else {
+ this.fixAndSetPosition();
+ }
+ this._initialOptions = null;
+ if (this.#resizeTimeoutId !== null) {
+ clearTimeout(this.#resizeTimeoutId);
+ }
+ const TIME_TO_WAIT = 200;
+ this.#resizeTimeoutId = setTimeout(() => {
+ this.#resizeTimeoutId = null;
+ this.#drawBitmap(width, height);
+ }, TIME_TO_WAIT);
+ }
+ #scaleBitmap(width, height) {
+ const {
+ width: bitmapWidth,
+ height: bitmapHeight
+ } = this.#bitmap;
+ let newWidth = bitmapWidth;
+ let newHeight = bitmapHeight;
+ let bitmap = this.#bitmap;
+ while (newWidth > 2 * width || newHeight > 2 * height) {
+ const prevWidth = newWidth;
+ const prevHeight = newHeight;
+ if (newWidth > 2 * width) {
+ newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);
+ }
+ if (newHeight > 2 * height) {
+ newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);
+ }
+ const offscreen = new OffscreenCanvas(newWidth, newHeight);
+ const ctx = offscreen.getContext("2d");
+ ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);
+ bitmap = offscreen.transferToImageBitmap();
+ }
+ return bitmap;
+ }
+ #drawBitmap(width, height) {
+ width = Math.ceil(width);
+ height = Math.ceil(height);
+ const canvas = this.#canvas;
+ if (!canvas || canvas.width === width && canvas.height === height) {
+ return;
+ }
+ canvas.width = width;
+ canvas.height = height;
+ const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(width, height);
+ const ctx = canvas.getContext("2d");
+ ctx.filter = this._uiManager.hcmFilter;
+ ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, width, height);
+ }
+ getImageForAltText() {
+ return this.#canvas;
+ }
+ #serializeBitmap(toUrl) {
+ if (toUrl) {
+ if (this.#isSvg) {
+ const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);
+ if (url) {
+ return url;
+ }
+ }
+ const canvas = document.createElement("canvas");
+ ({
+ width: canvas.width,
+ height: canvas.height
+ } = this.#bitmap);
+ const ctx = canvas.getContext("2d");
+ ctx.drawImage(this.#bitmap, 0, 0);
+ return canvas.toDataURL();
+ }
+ if (this.#isSvg) {
+ const [pageWidth, pageHeight] = this.pageDimensions;
+ const width = Math.round(this.width * pageWidth * display_utils.PixelsPerInch.PDF_TO_CSS_UNITS);
+ const height = Math.round(this.height * pageHeight * display_utils.PixelsPerInch.PDF_TO_CSS_UNITS);
+ const offscreen = new OffscreenCanvas(width, height);
+ const ctx = offscreen.getContext("2d");
+ ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);
+ return offscreen.transferToImageBitmap();
+ }
+ return structuredClone(this.#bitmap);
+ }
+ #createObserver() {
+ this.#observer = new ResizeObserver(entries => {
+ const rect = entries[0].contentRect;
+ if (rect.width && rect.height) {
+ this.#setDimensions(rect.width, rect.height);
+ }
+ });
+ this.#observer.observe(this.div);
+ }
+ static deserialize(data, parent, uiManager) {
+ if (data instanceof annotation_layer.StampAnnotationElement) {
+ return null;
+ }
+ const editor = super.deserialize(data, parent, uiManager);
+ const {
+ rect,
+ bitmapUrl,
+ bitmapId,
+ isSvg,
+ accessibilityData
+ } = data;
+ if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {
+ editor.#bitmapId = bitmapId;
+ } else {
+ editor.#bitmapUrl = bitmapUrl;
+ }
+ editor.#isSvg = isSvg;
+ const [parentWidth, parentHeight] = editor.pageDimensions;
+ editor.width = (rect[2] - rect[0]) / parentWidth;
+ editor.height = (rect[3] - rect[1]) / parentHeight;
+ if (accessibilityData) {
+ editor.altTextData = accessibilityData;
+ }
+ return editor;
+ }
+ serialize(isForCopying = false, context = null) {
+ if (this.isEmpty()) {
+ return null;
+ }
+ const serialized = {
+ annotationType: util.AnnotationEditorType.STAMP,
+ bitmapId: this.#bitmapId,
+ pageIndex: this.pageIndex,
+ rect: this.getRect(0, 0),
+ rotation: this.rotation,
+ isSvg: this.#isSvg,
+ structTreeParentId: this._structTreeParentId
+ };
+ if (isForCopying) {
+ serialized.bitmapUrl = this.#serializeBitmap(true);
+ serialized.accessibilityData = this.altTextData;
+ return serialized;
+ }
+ const {
+ decorative,
+ altText
+ } = this.altTextData;
+ if (!decorative && altText) {
+ serialized.accessibilityData = {
+ type: "Figure",
+ alt: altText
+ };
+ }
+ if (context === null) {
+ return serialized;
+ }
+ context.stamps ||= new Map();
+ const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;
+ if (!context.stamps.has(this.#bitmapId)) {
+ context.stamps.set(this.#bitmapId, {
+ area,
+ serialized
+ });
+ serialized.bitmap = this.#serializeBitmap(false);
+ } else if (this.#isSvg) {
+ const prevData = context.stamps.get(this.#bitmapId);
+ if (area > prevData.area) {
+ prevData.area = area;
+ prevData.serialized.bitmap.close();
+ prevData.serialized.bitmap = this.#serializeBitmap(false);
+ }
+ }
+ return serialized;
+ }
+}
+
+;// CONCATENATED MODULE: ./src/display/editor/annotation_editor_layer.js
+
+
+
+
+
+
+
+class AnnotationEditorLayer {
+ #accessibilityManager;
+ #allowClick = false;
+ #annotationLayer = null;
+ #boundPointerup = this.pointerup.bind(this);
+ #boundPointerUpAfterSelection = this.pointerUpAfterSelection.bind(this);
+ #boundPointerdown = this.pointerdown.bind(this);
+ #editorFocusTimeoutId = null;
+ #boundSelectionStart = this.selectionStart.bind(this);
+ #editors = new Map();
+ #hadPointerDown = false;
+ #isCleaningUp = false;
+ #isDisabling = false;
+ #textLayer = null;
+ #uiManager;
+ static _initialized = false;
+ static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor].map(type => [type._editorType, type]));
+ constructor({
+ uiManager,
+ pageIndex,
+ div,
+ accessibilityManager,
+ annotationLayer,
+ drawLayer,
+ textLayer,
+ viewport,
+ l10n
+ }) {
+ const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];
+ if (!AnnotationEditorLayer._initialized) {
+ AnnotationEditorLayer._initialized = true;
+ for (const editorType of editorTypes) {
+ editorType.initialize(l10n);
+ }
+ }
+ uiManager.registerEditorTypes(editorTypes);
+ this.#uiManager = uiManager;
+ this.pageIndex = pageIndex;
+ this.div = div;
+ this.#accessibilityManager = accessibilityManager;
+ this.#annotationLayer = annotationLayer;
+ this.viewport = viewport;
+ this.#textLayer = textLayer;
+ this.drawLayer = drawLayer;
+ this.#uiManager.addLayer(this);
+ }
+ get isEmpty() {
+ return this.#editors.size === 0;
+ }
+ updateToolbar(mode) {
+ this.#uiManager.updateToolbar(mode);
+ }
+ updateMode(mode = this.#uiManager.getMode()) {
+ this.#cleanup();
+ switch (mode) {
+ case util.AnnotationEditorType.NONE:
+ this.disableTextSelection();
+ this.togglePointerEvents(false);
+ this.disableClick();
+ break;
+ case util.AnnotationEditorType.INK:
+ this.addInkEditorIfNeeded(false);
+ this.disableTextSelection();
+ this.togglePointerEvents(true);
+ this.disableClick();
+ break;
+ case util.AnnotationEditorType.HIGHLIGHT:
+ this.enableTextSelection();
+ this.togglePointerEvents(false);
+ this.disableClick();
+ break;
+ default:
+ this.disableTextSelection();
+ this.togglePointerEvents(true);
+ this.enableClick();
+ }
+ if (mode !== util.AnnotationEditorType.NONE) {
+ const {
+ classList
+ } = this.div;
+ for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {
+ classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);
+ }
+ this.div.hidden = false;
+ }
+ }
+ addInkEditorIfNeeded(isCommitting) {
+ if (this.#uiManager.getMode() !== util.AnnotationEditorType.INK) {
+ return;
+ }
+ if (!isCommitting) {
+ for (const editor of this.#editors.values()) {
+ if (editor.isEmpty()) {
+ editor.setInBackground();
+ return;
+ }
+ }
+ }
+ const editor = this.#createAndAddNewEditor({
+ offsetX: 0,
+ offsetY: 0
+ }, false);
+ editor.setInBackground();
+ }
+ setEditingState(isEditing) {
+ this.#uiManager.setEditingState(isEditing);
+ }
+ addCommands(params) {
+ this.#uiManager.addCommands(params);
+ }
+ togglePointerEvents(enabled = false) {
+ this.div.classList.toggle("disabled", !enabled);
+ }
+ enable() {
+ this.togglePointerEvents(true);
+ const annotationElementIds = new Set();
+ for (const editor of this.#editors.values()) {
+ editor.enableEditing();
+ if (editor.annotationElementId) {
+ annotationElementIds.add(editor.annotationElementId);
+ }
+ }
+ if (!this.#annotationLayer) {
+ return;
+ }
+ const editables = this.#annotationLayer.getEditableAnnotations();
+ for (const editable of editables) {
+ editable.hide();
+ if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {
+ continue;
+ }
+ if (annotationElementIds.has(editable.data.id)) {
+ continue;
+ }
+ const editor = this.deserialize(editable);
+ if (!editor) {
+ continue;
+ }
+ this.addOrRebuild(editor);
+ editor.enableEditing();
+ }
+ }
+ disable() {
+ this.#isDisabling = true;
+ this.togglePointerEvents(false);
+ const hiddenAnnotationIds = new Set();
+ for (const editor of this.#editors.values()) {
+ editor.disableEditing();
+ if (!editor.annotationElementId || editor.serialize() !== null) {
+ hiddenAnnotationIds.add(editor.annotationElementId);
+ continue;
+ }
+ this.getEditableAnnotation(editor.annotationElementId)?.show();
+ editor.remove();
+ }
+ if (this.#annotationLayer) {
+ const editables = this.#annotationLayer.getEditableAnnotations();
+ for (const editable of editables) {
+ const {
+ id
+ } = editable.data;
+ if (hiddenAnnotationIds.has(id) || this.#uiManager.isDeletedAnnotationElement(id)) {
+ continue;
+ }
+ editable.show();
+ }
+ }
+ this.#cleanup();
+ if (this.isEmpty) {
+ this.div.hidden = true;
+ }
+ const {
+ classList
+ } = this.div;
+ for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {
+ classList.remove(`${editorType._type}Editing`);
+ }
+ this.disableTextSelection();
+ this.#isDisabling = false;
+ }
+ getEditableAnnotation(id) {
+ return this.#annotationLayer?.getEditableAnnotation(id) || null;
+ }
+ setActiveEditor(editor) {
+ const currentActive = this.#uiManager.getActive();
+ if (currentActive === editor) {
+ return;
+ }
+ this.#uiManager.setActiveEditor(editor);
+ }
+ enableTextSelection() {
+ if (this.#textLayer?.div) {
+ document.addEventListener("selectstart", this.#boundSelectionStart);
+ }
+ }
+ disableTextSelection() {
+ if (this.#textLayer?.div) {
+ document.removeEventListener("selectstart", this.#boundSelectionStart);
+ }
+ }
+ enableClick() {
+ this.div.addEventListener("pointerdown", this.#boundPointerdown);
+ this.div.addEventListener("pointerup", this.#boundPointerup);
+ }
+ disableClick() {
+ this.div.removeEventListener("pointerdown", this.#boundPointerdown);
+ this.div.removeEventListener("pointerup", this.#boundPointerup);
+ }
+ attach(editor) {
+ this.#editors.set(editor.id, editor);
+ const {
+ annotationElementId
+ } = editor;
+ if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {
+ this.#uiManager.removeDeletedAnnotationElement(editor);
+ }
+ }
+ detach(editor) {
+ this.#editors.delete(editor.id);
+ this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);
+ if (!this.#isDisabling && editor.annotationElementId) {
+ this.#uiManager.addDeletedAnnotationElement(editor);
+ }
+ }
+ remove(editor) {
+ this.detach(editor);
+ this.#uiManager.removeEditor(editor);
+ editor.div.remove();
+ editor.isAttachedToDOM = false;
+ if (!this.#isCleaningUp) {
+ this.addInkEditorIfNeeded(false);
+ }
+ }
+ changeParent(editor) {
+ if (editor.parent === this) {
+ return;
+ }
+ if (editor.annotationElementId) {
+ this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);
+ editor_editor.AnnotationEditor.deleteAnnotationElement(editor);
+ editor.annotationElementId = null;
+ }
+ this.attach(editor);
+ editor.parent?.detach(editor);
+ editor.setParent(this);
+ if (editor.div && editor.isAttachedToDOM) {
+ editor.div.remove();
+ this.div.append(editor.div);
+ }
+ }
+ add(editor) {
+ this.changeParent(editor);
+ this.#uiManager.addEditor(editor);
+ this.attach(editor);
+ if (!editor.isAttachedToDOM) {
+ const div = editor.render();
+ this.div.append(div);
+ editor.isAttachedToDOM = true;
+ }
+ editor.fixAndSetPosition();
+ editor.onceAdded();
+ this.#uiManager.addToAnnotationStorage(editor);
+ }
+ moveEditorInDOM(editor) {
+ if (!editor.isAttachedToDOM) {
+ return;
+ }
+ const {
+ activeElement
+ } = document;
+ if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {
+ editor._focusEventsAllowed = false;
+ this.#editorFocusTimeoutId = setTimeout(() => {
+ this.#editorFocusTimeoutId = null;
+ if (!editor.div.contains(document.activeElement)) {
+ editor.div.addEventListener("focusin", () => {
+ editor._focusEventsAllowed = true;
+ }, {
+ once: true
+ });
+ activeElement.focus();
+ } else {
+ editor._focusEventsAllowed = true;
+ }
+ }, 0);
+ }
+ editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);
+ }
+ addOrRebuild(editor) {
+ if (editor.needsToBeRebuilt()) {
+ editor.parent ||= this;
+ editor.rebuild();
+ } else {
+ this.add(editor);
+ }
+ }
+ addUndoableEditor(editor) {
+ const cmd = () => editor._uiManager.rebuild(editor);
+ const undo = () => {
+ editor.remove();
+ };
+ this.addCommands({
+ cmd,
+ undo,
+ mustExec: false
+ });
+ }
+ getNextId() {
+ return this.#uiManager.getId();
+ }
+ get #currentEditorType() {
+ return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());
+ }
+ #createNewEditor(params) {
+ const editorType = this.#currentEditorType;
+ return editorType ? new editorType.prototype.constructor(params) : null;
+ }
+ canCreateNewEmptyEditor() {
+ return this.#currentEditorType?.canCreateNewEmptyEditor();
+ }
+ pasteEditor(mode, params) {
+ this.#uiManager.updateToolbar(mode);
+ this.#uiManager.updateMode(mode);
+ const {
+ offsetX,
+ offsetY
+ } = this.#getCenterPoint();
+ const id = this.getNextId();
+ const editor = this.#createNewEditor({
+ parent: this,
+ id,
+ x: offsetX,
+ y: offsetY,
+ uiManager: this.#uiManager,
+ isCentered: true,
+ ...params
+ });
+ if (editor) {
+ this.add(editor);
+ }
+ }
+ deserialize(data) {
+ return AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager) || null;
+ }
+ #createAndAddNewEditor(event, isCentered, data = {}) {
+ const id = this.getNextId();
+ const editor = this.#createNewEditor({
+ parent: this,
+ id,
+ x: event.offsetX,
+ y: event.offsetY,
+ uiManager: this.#uiManager,
+ isCentered,
+ ...data
+ });
+ if (editor) {
+ this.add(editor);
+ }
+ return editor;
+ }
+ #getCenterPoint() {
+ const {
+ x,
+ y,
+ width,
+ height
+ } = this.div.getBoundingClientRect();
+ const tlX = Math.max(0, x);
+ const tlY = Math.max(0, y);
+ const brX = Math.min(window.innerWidth, x + width);
+ const brY = Math.min(window.innerHeight, y + height);
+ const centerX = (tlX + brX) / 2 - x;
+ const centerY = (tlY + brY) / 2 - y;
+ const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];
+ return {
+ offsetX,
+ offsetY
+ };
+ }
+ addNewEditor() {
+ this.#createAndAddNewEditor(this.#getCenterPoint(), true);
+ }
+ setSelected(editor) {
+ this.#uiManager.setSelected(editor);
+ }
+ toggleSelected(editor) {
+ this.#uiManager.toggleSelected(editor);
+ }
+ isSelected(editor) {
+ return this.#uiManager.isSelected(editor);
+ }
+ unselect(editor) {
+ this.#uiManager.unselect(editor);
+ }
+ selectionStart(_event) {
+ this.#textLayer?.div.addEventListener("pointerup", this.#boundPointerUpAfterSelection, {
+ once: true
+ });
+ }
+ pointerUpAfterSelection(event) {
+ const selection = document.getSelection();
+ if (selection.rangeCount === 0) {
+ return;
+ }
+ const range = selection.getRangeAt(0);
+ if (range.collapsed) {
+ return;
+ }
+ if (!this.#textLayer?.div.contains(range.commonAncestorContainer)) {
+ return;
+ }
+ const {
+ x: layerX,
+ y: layerY,
+ width: parentWidth,
+ height: parentHeight
+ } = this.#textLayer.div.getBoundingClientRect();
+ const bboxes = range.getClientRects();
+ let rotator;
+ switch (this.viewport.rotation) {
+ case 90:
+ rotator = (x, y, w, h) => ({
+ x: (y - layerY) / parentHeight,
+ y: 1 - (x + w - layerX) / parentWidth,
+ width: h / parentHeight,
+ height: w / parentWidth
+ });
+ break;
+ case 180:
+ rotator = (x, y, w, h) => ({
+ x: 1 - (x + w - layerX) / parentWidth,
+ y: 1 - (y + h - layerY) / parentHeight,
+ width: w / parentWidth,
+ height: h / parentHeight
+ });
+ break;
+ case 270:
+ rotator = (x, y, w, h) => ({
+ x: 1 - (y + h - layerY) / parentHeight,
+ y: (x - layerX) / parentWidth,
+ width: h / parentHeight,
+ height: w / parentWidth
+ });
+ break;
+ default:
+ rotator = (x, y, w, h) => ({
+ x: (x - layerX) / parentWidth,
+ y: (y - layerY) / parentHeight,
+ width: w / parentWidth,
+ height: h / parentHeight
+ });
+ break;
+ }
+ const boxes = [];
+ for (const {
+ x,
+ y,
+ width,
+ height
+ } of bboxes) {
+ if (width === 0 || height === 0) {
+ continue;
+ }
+ boxes.push(rotator(x, y, width, height));
+ }
+ if (boxes.length !== 0) {
+ this.#createAndAddNewEditor(event, false, {
+ boxes
+ });
+ }
+ selection.empty();
+ }
+ pointerup(event) {
+ const {
+ isMac
+ } = util.FeatureTest.platform;
+ if (event.button !== 0 || event.ctrlKey && isMac) {
+ return;
+ }
+ if (event.target !== this.div) {
+ return;
+ }
+ if (!this.#hadPointerDown) {
+ return;
+ }
+ this.#hadPointerDown = false;
+ if (!this.#allowClick) {
+ this.#allowClick = true;
+ return;
+ }
+ if (this.#uiManager.getMode() === util.AnnotationEditorType.STAMP) {
+ this.#uiManager.unselectAll();
+ return;
+ }
+ this.#createAndAddNewEditor(event, false);
+ }
+ pointerdown(event) {
+ if (this.#uiManager.getMode() === util.AnnotationEditorType.HIGHLIGHT) {
+ this.enableTextSelection();
+ }
+ if (this.#hadPointerDown) {
+ this.#hadPointerDown = false;
+ return;
+ }
+ const {
+ isMac
+ } = util.FeatureTest.platform;
+ if (event.button !== 0 || event.ctrlKey && isMac) {
+ return;
+ }
+ if (event.target !== this.div) {
+ return;
+ }
+ this.#hadPointerDown = true;
+ const editor = this.#uiManager.getActive();
+ this.#allowClick = !editor || editor.isEmpty();
+ }
+ findNewParent(editor, x, y) {
+ const layer = this.#uiManager.findParent(x, y);
+ if (layer === null || layer === this) {
+ return false;
+ }
+ layer.changeParent(editor);
+ return true;
+ }
+ destroy() {
+ if (this.#uiManager.getActive()?.parent === this) {
+ this.#uiManager.commitOrRemove();
+ this.#uiManager.setActiveEditor(null);
+ }
+ if (this.#editorFocusTimeoutId) {
+ clearTimeout(this.#editorFocusTimeoutId);
+ this.#editorFocusTimeoutId = null;
+ }
+ for (const editor of this.#editors.values()) {
+ this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);
+ editor.setParent(null);
+ editor.isAttachedToDOM = false;
+ editor.div.remove();
+ }
+ this.div = null;
+ this.#editors.clear();
+ this.#uiManager.removeLayer(this);
+ }
+ #cleanup() {
+ this.#isCleaningUp = true;
+ for (const editor of this.#editors.values()) {
+ if (editor.isEmpty()) {
+ editor.remove();
+ }
+ }
+ this.#isCleaningUp = false;
+ }
+ render({
+ viewport
+ }) {
+ this.viewport = viewport;
+ (0,display_utils.setLayerDimensions)(this.div, viewport);
+ for (const editor of this.#uiManager.getEditors(this.pageIndex)) {
+ this.add(editor);
+ }
+ this.updateMode();
+ }
+ update({
+ viewport
+ }) {
+ this.#uiManager.commitOrRemove();
+ const oldRotation = this.viewport.rotation;
+ const rotation = viewport.rotation;
+ this.viewport = viewport;
+ (0,display_utils.setLayerDimensions)(this.div, {
+ rotation
+ });
+ if (oldRotation !== rotation) {
+ for (const editor of this.#editors.values()) {
+ editor.rotate(rotation);
+ }
+ }
+ this.updateMode();
+ }
+ get pageDimensions() {
+ const {
+ pageWidth,
+ pageHeight
+ } = this.viewport.rawDims;
+ return [pageWidth, pageHeight];
+ }
+}
+
+
+/***/ }),
+
+/***/ 97:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ ColorPicker: () => (/* binding */ ColorPicker)
+/* harmony export */ });
+/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266);
+/* harmony import */ var _tools_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(812);
+/* harmony import */ var _display_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(473);
+
+
+
+class ColorPicker {
+ #boundKeyDown = this.#keyDown.bind(this);
+ #button = null;
+ #buttonSwatch = null;
+ #defaultColor;
+ #dropdown = null;
+ #dropdownWasFromKeyboard = false;
+ #isMainColorPicker = false;
+ #eventBus;
+ #uiManager = null;
+ static get _keyboardManager() {
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "_keyboardManager", new _tools_js__WEBPACK_IMPORTED_MODULE_1__.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]]));
+ }
+ constructor({
+ editor = null,
+ uiManager = null
+ }) {
+ this.#isMainColorPicker = !editor;
+ this.#uiManager = editor?._uiManager || uiManager;
+ this.#eventBus = this.#uiManager._eventBus;
+ this.#defaultColor = editor?.color || this.#uiManager?.highlightColors.values().next().value || "#FFFF98";
+ }
+ renderButton() {
+ const button = this.#button = document.createElement("button");
+ button.className = "colorPicker";
+ button.tabIndex = "0";
+ button.setAttribute("data-l10n-id", "pdfjs-editor-colorpicker-button");
+ button.setAttribute("aria-haspopup", true);
+ button.addEventListener("click", this.#openDropdown.bind(this));
+ const swatch = this.#buttonSwatch = document.createElement("span");
+ swatch.className = "swatch";
+ swatch.style.backgroundColor = this.#defaultColor;
+ button.append(swatch);
+ return button;
+ }
+ renderMainDropdown() {
+ const dropdown = this.#dropdown = this.#getDropdownRoot(_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR);
+ dropdown.setAttribute("aria-orientation", "horizontal");
+ dropdown.setAttribute("aria-labelledby", "highlightColorPickerLabel");
+ return dropdown;
+ }
+ #getDropdownRoot(paramType) {
+ const div = document.createElement("div");
+ div.addEventListener("contextmenu", _display_utils_js__WEBPACK_IMPORTED_MODULE_2__.noContextMenu);
+ div.className = "dropdown";
+ div.role = "listbox";
+ div.setAttribute("aria-multiselectable", false);
+ div.setAttribute("aria-orientation", "vertical");
+ div.setAttribute("data-l10n-id", "pdfjs-editor-colorpicker-dropdown");
+ for (const [name, color] of this.#uiManager.highlightColors) {
+ const button = document.createElement("button");
+ button.tabIndex = "0";
+ button.role = "option";
+ button.setAttribute("data-color", color);
+ button.title = name;
+ button.setAttribute("data-l10n-id", `pdfjs-editor-colorpicker-${name}`);
+ const swatch = document.createElement("span");
+ button.append(swatch);
+ swatch.className = "swatch";
+ swatch.style.backgroundColor = color;
+ button.setAttribute("aria-selected", color === this.#defaultColor);
+ button.addEventListener("click", this.#colorSelect.bind(this, paramType, color));
+ div.append(button);
+ }
+ div.addEventListener("keydown", this.#boundKeyDown);
+ return div;
+ }
+ #colorSelect(type, color, event) {
+ event.stopPropagation();
+ this.#eventBus.dispatch("switchannotationeditorparams", {
+ source: this,
+ type,
+ value: color
+ });
+ }
+ _colorSelectFromKeyboard(event) {
+ const color = event.target.getAttribute("data-color");
+ if (!color) {
+ return;
+ }
+ this.#colorSelect(color, event);
+ }
+ _moveToNext(event) {
+ if (event.target === this.#button) {
+ this.#dropdown.firstChild?.focus();
+ return;
+ }
+ event.target.nextSibling?.focus();
+ }
+ _moveToPrevious(event) {
+ event.target.previousSibling?.focus();
+ }
+ _moveToBeginning() {
+ this.#dropdown.firstChild?.focus();
+ }
+ _moveToEnd() {
+ this.#dropdown.lastChild?.focus();
+ }
+ #keyDown(event) {
+ ColorPicker._keyboardManager.exec(this, event);
+ }
+ #openDropdown(event) {
+ if (this.#dropdown && !this.#dropdown.classList.contains("hidden")) {
+ this.hideDropdown();
+ return;
+ }
+ this.#button.addEventListener("keydown", this.#boundKeyDown);
+ this.#dropdownWasFromKeyboard = event.detail === 0;
+ if (this.#dropdown) {
+ this.#dropdown.classList.remove("hidden");
+ return;
+ }
+ const root = this.#dropdown = this.#getDropdownRoot(_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorParamsType.HIGHLIGHT_COLOR);
+ this.#button.append(root);
+ }
+ hideDropdown() {
+ this.#dropdown?.classList.add("hidden");
+ }
+ _hideDropdownFromKeyboard() {
+ if (this.#isMainColorPicker || !this.#dropdown || this.#dropdown.classList.contains("hidden")) {
+ return;
+ }
+ this.hideDropdown();
+ this.#button.removeEventListener("keydown", this.#boundKeyDown);
+ this.#button.focus({
+ preventScroll: true,
+ focusVisible: this.#dropdownWasFromKeyboard
+ });
+ }
+ updateColor(color) {
+ if (this.#buttonSwatch) {
+ this.#buttonSwatch.style.backgroundColor = color;
+ }
+ if (!this.#dropdown) {
+ return;
+ }
+ const i = this.#uiManager.highlightColors.values();
+ for (const child of this.#dropdown.children) {
+ child.setAttribute("aria-selected", i.next().value === color);
+ }
+ }
+ destroy() {
+ this.#button?.remove();
+ this.#button = null;
+ this.#buttonSwatch = null;
+ this.#dropdown?.remove();
+ this.#dropdown = null;
+ }
+}
+
+
+/***/ }),
+
+/***/ 115:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, {
+ AnnotationEditor: () => (/* binding */ AnnotationEditor)
+});
+
+// EXTERNAL MODULE: ./src/display/editor/tools.js
+var tools = __webpack_require__(812);
+// EXTERNAL MODULE: ./src/shared/util.js
+var util = __webpack_require__(266);
+// EXTERNAL MODULE: ./src/display/display_utils.js
+var display_utils = __webpack_require__(473);
+;// CONCATENATED MODULE: ./src/display/editor/alt_text.js
+
+class AltText {
+ #altText = "";
+ #altTextDecorative = false;
+ #altTextButton = null;
+ #altTextTooltip = null;
+ #altTextTooltipTimeout = null;
+ #altTextWasFromKeyBoard = false;
+ #editor = null;
+ static _l10nPromise = null;
+ constructor(editor) {
+ this.#editor = editor;
+ }
+ static initialize(l10nPromise) {
+ AltText._l10nPromise ||= l10nPromise;
+ }
+ async render() {
+ const altText = this.#altTextButton = document.createElement("button");
+ altText.className = "altText";
+ const msg = await AltText._l10nPromise.get("pdfjs-editor-alt-text-button-label");
+ altText.textContent = msg;
+ altText.setAttribute("aria-label", msg);
+ altText.tabIndex = "0";
+ altText.addEventListener("contextmenu", display_utils.noContextMenu);
+ altText.addEventListener("pointerdown", event => event.stopPropagation());
+ const onClick = event => {
+ event.preventDefault();
+ this.#editor._uiManager.editAltText(this.#editor);
+ };
+ altText.addEventListener("click", onClick, {
+ capture: true
+ });
+ altText.addEventListener("keydown", event => {
+ if (event.target === altText && event.key === "Enter") {
+ this.#altTextWasFromKeyBoard = true;
+ onClick(event);
+ }
+ });
+ await this.#setState();
+ return altText;
+ }
+ finish() {
+ if (!this.#altTextButton) {
+ return;
+ }
+ this.#altTextButton.focus({
+ focusVisible: this.#altTextWasFromKeyBoard
+ });
+ this.#altTextWasFromKeyBoard = false;
+ }
+ get data() {
+ return {
+ altText: this.#altText,
+ decorative: this.#altTextDecorative
+ };
+ }
+ set data({
+ altText,
+ decorative
+ }) {
+ if (this.#altText === altText && this.#altTextDecorative === decorative) {
+ return;
+ }
+ this.#altText = altText;
+ this.#altTextDecorative = decorative;
+ this.#setState();
+ }
+ toggle(enabled = false) {
+ if (!this.#altTextButton) {
+ return;
+ }
+ if (!enabled && this.#altTextTooltipTimeout) {
+ clearTimeout(this.#altTextTooltipTimeout);
+ this.#altTextTooltipTimeout = null;
+ }
+ this.#altTextButton.disabled = !enabled;
+ }
+ destroy() {
+ this.#altTextButton?.remove();
+ this.#altTextButton = null;
+ this.#altTextTooltip = null;
+ }
+ async #setState() {
+ const button = this.#altTextButton;
+ if (!button) {
+ return;
+ }
+ if (!this.#altText && !this.#altTextDecorative) {
+ button.classList.remove("done");
+ this.#altTextTooltip?.remove();
+ return;
+ }
+ button.classList.add("done");
+ AltText._l10nPromise.get("pdfjs-editor-alt-text-edit-button-label").then(msg => {
+ button.setAttribute("aria-label", msg);
+ });
+ let tooltip = this.#altTextTooltip;
+ if (!tooltip) {
+ this.#altTextTooltip = tooltip = document.createElement("span");
+ tooltip.className = "tooltip";
+ tooltip.setAttribute("role", "tooltip");
+ const id = tooltip.id = `alt-text-tooltip-${this.#editor.id}`;
+ button.setAttribute("aria-describedby", id);
+ const DELAY_TO_SHOW_TOOLTIP = 100;
+ button.addEventListener("mouseenter", () => {
+ this.#altTextTooltipTimeout = setTimeout(() => {
+ this.#altTextTooltipTimeout = null;
+ this.#altTextTooltip.classList.add("show");
+ this.#editor._uiManager._eventBus.dispatch("reporttelemetry", {
+ source: this,
+ details: {
+ type: "editing",
+ subtype: this.#editor.editorType,
+ data: {
+ action: "alt_text_tooltip"
+ }
+ }
+ });
+ }, DELAY_TO_SHOW_TOOLTIP);
+ });
+ button.addEventListener("mouseleave", () => {
+ if (this.#altTextTooltipTimeout) {
+ clearTimeout(this.#altTextTooltipTimeout);
+ this.#altTextTooltipTimeout = null;
+ }
+ this.#altTextTooltip?.classList.remove("show");
+ });
+ }
+ tooltip.innerText = this.#altTextDecorative ? await AltText._l10nPromise.get("pdfjs-editor-alt-text-decorative-tooltip") : this.#altText;
+ if (!tooltip.parentNode) {
+ button.append(tooltip);
+ }
+ const element = this.#editor.getImageForAltText();
+ element?.setAttribute("aria-describedby", tooltip.id);
+ }
+}
+
+;// CONCATENATED MODULE: ./src/display/editor/toolbar.js
+
+class EditorToolbar {
+ #toolbar = null;
+ #colorPicker = null;
+ #editor;
+ #buttons = null;
+ constructor(editor) {
+ this.#editor = editor;
+ }
+ render() {
+ const editToolbar = this.#toolbar = document.createElement("div");
+ editToolbar.className = "editToolbar";
+ editToolbar.addEventListener("contextmenu", display_utils.noContextMenu);
+ editToolbar.addEventListener("pointerdown", EditorToolbar.#pointerDown);
+ const buttons = this.#buttons = document.createElement("div");
+ buttons.className = "buttons";
+ editToolbar.append(buttons);
+ const position = this.#editor.toolbarPosition;
+ if (position) {
+ const {
+ style
+ } = editToolbar;
+ const x = this.#editor._uiManager.direction === "ltr" ? 1 - position[0] : position[0];
+ style.insetInlineEnd = `${100 * x}%`;
+ style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;
+ }
+ this.#addDeleteButton();
+ return editToolbar;
+ }
+ static #pointerDown(e) {
+ e.stopPropagation();
+ }
+ #focusIn(e) {
+ this.#editor._focusEventsAllowed = false;
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ #focusOut(e) {
+ this.#editor._focusEventsAllowed = true;
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ #addListenersToElement(element) {
+ element.addEventListener("focusin", this.#focusIn.bind(this), {
+ capture: true
+ });
+ element.addEventListener("focusout", this.#focusOut.bind(this), {
+ capture: true
+ });
+ element.addEventListener("contextmenu", display_utils.noContextMenu);
+ }
+ hide() {
+ this.#toolbar.classList.add("hidden");
+ this.#colorPicker?.hideDropdown();
+ }
+ show() {
+ this.#toolbar.classList.remove("hidden");
+ }
+ #addDeleteButton() {
+ const button = document.createElement("button");
+ button.className = "delete";
+ button.tabIndex = 0;
+ button.setAttribute("data-l10n-id", `pdfjs-editor-remove-${this.#editor.editorType}-button`);
+ this.#addListenersToElement(button);
+ button.addEventListener("click", e => {
+ this.#editor._uiManager.delete();
+ });
+ this.#buttons.append(button);
+ }
+ get #divider() {
+ const divider = document.createElement("div");
+ divider.className = "divider";
+ return divider;
+ }
+ addAltTextButton(button) {
+ this.#addListenersToElement(button);
+ this.#buttons.prepend(button, this.#divider);
+ }
+ addColorPicker(colorPicker) {
+ this.#colorPicker = colorPicker;
+ const button = colorPicker.renderButton();
+ this.#addListenersToElement(button);
+ this.#buttons.prepend(button, this.#divider);
+ }
+ remove() {
+ this.#toolbar.remove();
+ this.#colorPicker?.destroy();
+ this.#colorPicker = null;
+ }
+}
+
+;// CONCATENATED MODULE: ./src/display/editor/editor.js
+
+
+
+
+
+class AnnotationEditor {
+ #allResizerDivs = null;
+ #altText = null;
+ #keepAspectRatio = false;
+ #resizersDiv = null;
+ #savedDimensions = null;
+ #boundFocusin = this.focusin.bind(this);
+ #boundFocusout = this.focusout.bind(this);
+ #editToolbar = null;
+ #focusedResizerName = "";
+ #hasBeenClicked = false;
+ #isEditing = false;
+ #isInEditMode = false;
+ #isResizerEnabledForKeyboard = false;
+ #moveInDOMTimeout = null;
+ _initialOptions = Object.create(null);
+ _uiManager = null;
+ _focusEventsAllowed = true;
+ _l10nPromise = null;
+ #isDraggable = false;
+ #zIndex = AnnotationEditor._zIndex++;
+ static _borderLineWidth = -1;
+ static _colorManager = new tools.ColorManager();
+ static _zIndex = 1;
+ static get _resizerKeyboardManager() {
+ const resize = AnnotationEditor.prototype._resizeWithKeyboard;
+ const small = tools.AnnotationEditorUIManager.TRANSLATE_SMALL;
+ const big = tools.AnnotationEditorUIManager.TRANSLATE_BIG;
+ return (0,util.shadow)(this, "_resizerKeyboardManager", new tools.KeyboardManager([[["ArrowLeft", "mac+ArrowLeft"], resize, {
+ args: [-small, 0]
+ }], [["ctrl+ArrowLeft", "mac+shift+ArrowLeft"], resize, {
+ args: [-big, 0]
+ }], [["ArrowRight", "mac+ArrowRight"], resize, {
+ args: [small, 0]
+ }], [["ctrl+ArrowRight", "mac+shift+ArrowRight"], resize, {
+ args: [big, 0]
+ }], [["ArrowUp", "mac+ArrowUp"], resize, {
+ args: [0, -small]
+ }], [["ctrl+ArrowUp", "mac+shift+ArrowUp"], resize, {
+ args: [0, -big]
+ }], [["ArrowDown", "mac+ArrowDown"], resize, {
+ args: [0, small]
+ }], [["ctrl+ArrowDown", "mac+shift+ArrowDown"], resize, {
+ args: [0, big]
+ }], [["Escape", "mac+Escape"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));
+ }
+ constructor(parameters) {
+ if (this.constructor === AnnotationEditor) {
+ (0,util.unreachable)("Cannot initialize AnnotationEditor.");
+ }
+ this.parent = parameters.parent;
+ this.id = parameters.id;
+ this.width = this.height = null;
+ this.pageIndex = parameters.parent.pageIndex;
+ this.name = parameters.name;
+ this.div = null;
+ this._uiManager = parameters.uiManager;
+ this.annotationElementId = null;
+ this._willKeepAspectRatio = false;
+ this._initialOptions.isCentered = parameters.isCentered;
+ this._structTreeParentId = null;
+ const {
+ rotation,
+ rawDims: {
+ pageWidth,
+ pageHeight,
+ pageX,
+ pageY
+ }
+ } = this.parent.viewport;
+ this.rotation = rotation;
+ this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;
+ this.pageDimensions = [pageWidth, pageHeight];
+ this.pageTranslation = [pageX, pageY];
+ const [width, height] = this.parentDimensions;
+ this.x = parameters.x / width;
+ this.y = parameters.y / height;
+ this.isAttachedToDOM = false;
+ this.deleted = false;
+ }
+ get editorType() {
+ return Object.getPrototypeOf(this).constructor._type;
+ }
+ static get _defaultLineColor() {
+ return (0,util.shadow)(this, "_defaultLineColor", this._colorManager.getHexCode("CanvasText"));
+ }
+ static deleteAnnotationElement(editor) {
+ const fakeEditor = new FakeEditor({
+ id: editor.parent.getNextId(),
+ parent: editor.parent,
+ uiManager: editor._uiManager
+ });
+ fakeEditor.annotationElementId = editor.annotationElementId;
+ fakeEditor.deleted = true;
+ fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);
+ }
+ static initialize(l10n, options = null) {
+ AnnotationEditor._l10nPromise ||= new Map(["pdfjs-editor-alt-text-button-label", "pdfjs-editor-alt-text-edit-button-label", "pdfjs-editor-alt-text-decorative-tooltip", "pdfjs-editor-resizer-label-topLeft", "pdfjs-editor-resizer-label-topMiddle", "pdfjs-editor-resizer-label-topRight", "pdfjs-editor-resizer-label-middleRight", "pdfjs-editor-resizer-label-bottomRight", "pdfjs-editor-resizer-label-bottomMiddle", "pdfjs-editor-resizer-label-bottomLeft", "pdfjs-editor-resizer-label-middleLeft"].map(str => [str, l10n.get(str.replaceAll(/([A-Z])/g, c => `-${c.toLowerCase()}`))]));
+ if (options?.strings) {
+ for (const str of options.strings) {
+ AnnotationEditor._l10nPromise.set(str, l10n.get(str));
+ }
+ }
+ if (AnnotationEditor._borderLineWidth !== -1) {
+ return;
+ }
+ const style = getComputedStyle(document.documentElement);
+ AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue("--outline-width")) || 0;
+ }
+ static updateDefaultParams(_type, _value) {}
+ static get defaultPropertiesToUpdate() {
+ return [];
+ }
+ static isHandlingMimeForPasting(mime) {
+ return false;
+ }
+ static paste(item, parent) {
+ (0,util.unreachable)("Not implemented");
+ }
+ get propertiesToUpdate() {
+ return [];
+ }
+ get _isDraggable() {
+ return this.#isDraggable;
+ }
+ set _isDraggable(value) {
+ this.#isDraggable = value;
+ this.div?.classList.toggle("draggable", value);
+ }
+ get isEnterHandled() {
+ return true;
+ }
+ center() {
+ const [pageWidth, pageHeight] = this.pageDimensions;
+ switch (this.parentRotation) {
+ case 90:
+ this.x -= this.height * pageHeight / (pageWidth * 2);
+ this.y += this.width * pageWidth / (pageHeight * 2);
+ break;
+ case 180:
+ this.x += this.width / 2;
+ this.y += this.height / 2;
+ break;
+ case 270:
+ this.x += this.height * pageHeight / (pageWidth * 2);
+ this.y -= this.width * pageWidth / (pageHeight * 2);
+ break;
+ default:
+ this.x -= this.width / 2;
+ this.y -= this.height / 2;
+ break;
+ }
+ this.fixAndSetPosition();
+ }
+ addCommands(params) {
+ this._uiManager.addCommands(params);
+ }
+ get currentLayer() {
+ return this._uiManager.currentLayer;
+ }
+ setInBackground() {
+ this.div.style.zIndex = 0;
+ }
+ setInForeground() {
+ this.div.style.zIndex = this.#zIndex;
+ }
+ setParent(parent) {
+ if (parent !== null) {
+ this.pageIndex = parent.pageIndex;
+ this.pageDimensions = parent.pageDimensions;
+ } else {
+ this.#stopResizing();
+ }
+ this.parent = parent;
+ }
+ focusin(event) {
+ if (!this._focusEventsAllowed) {
+ return;
+ }
+ if (!this.#hasBeenClicked) {
+ this.parent.setSelected(this);
+ } else {
+ this.#hasBeenClicked = false;
+ }
+ }
+ focusout(event) {
+ if (!this._focusEventsAllowed) {
+ return;
+ }
+ if (!this.isAttachedToDOM) {
+ return;
+ }
+ const target = event.relatedTarget;
+ if (target?.closest(`#${this.id}`)) {
+ return;
+ }
+ event.preventDefault();
+ if (!this.parent?.isMultipleSelection) {
+ this.commitOrRemove();
+ }
+ }
+ commitOrRemove() {
+ if (this.isEmpty()) {
+ this.remove();
+ } else {
+ this.commit();
+ }
+ }
+ commit() {
+ this.addToAnnotationStorage();
+ }
+ addToAnnotationStorage() {
+ this._uiManager.addToAnnotationStorage(this);
+ }
+ setAt(x, y, tx, ty) {
+ const [width, height] = this.parentDimensions;
+ [tx, ty] = this.screenToPageTranslation(tx, ty);
+ this.x = (x + tx) / width;
+ this.y = (y + ty) / height;
+ this.fixAndSetPosition();
+ }
+ #translate([width, height], x, y) {
+ [x, y] = this.screenToPageTranslation(x, y);
+ this.x += x / width;
+ this.y += y / height;
+ this.fixAndSetPosition();
+ }
+ translate(x, y) {
+ this.#translate(this.parentDimensions, x, y);
+ }
+ translateInPage(x, y) {
+ this.#translate(this.pageDimensions, x, y);
+ this.div.scrollIntoView({
+ block: "nearest"
+ });
+ }
+ drag(tx, ty) {
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ this.x += tx / parentWidth;
+ this.y += ty / parentHeight;
+ if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {
+ const {
+ x,
+ y
+ } = this.div.getBoundingClientRect();
+ if (this.parent.findNewParent(this, x, y)) {
+ this.x -= Math.floor(this.x);
+ this.y -= Math.floor(this.y);
+ }
+ }
+ let {
+ x,
+ y
+ } = this;
+ const [bx, by] = this.#getBaseTranslation();
+ x += bx;
+ y += by;
+ this.div.style.left = `${(100 * x).toFixed(2)}%`;
+ this.div.style.top = `${(100 * y).toFixed(2)}%`;
+ this.div.scrollIntoView({
+ block: "nearest"
+ });
+ }
+ #getBaseTranslation() {
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ const {
+ _borderLineWidth
+ } = AnnotationEditor;
+ const x = _borderLineWidth / parentWidth;
+ const y = _borderLineWidth / parentHeight;
+ switch (this.rotation) {
+ case 90:
+ return [-x, y];
+ case 180:
+ return [x, y];
+ case 270:
+ return [x, -y];
+ default:
+ return [-x, -y];
+ }
+ }
+ fixAndSetPosition(rotation = this.rotation) {
+ const [pageWidth, pageHeight] = this.pageDimensions;
+ let {
+ x,
+ y,
+ width,
+ height
+ } = this;
+ width *= pageWidth;
+ height *= pageHeight;
+ x *= pageWidth;
+ y *= pageHeight;
+ switch (rotation) {
+ case 0:
+ x = Math.max(0, Math.min(pageWidth - width, x));
+ y = Math.max(0, Math.min(pageHeight - height, y));
+ break;
+ case 90:
+ x = Math.max(0, Math.min(pageWidth - height, x));
+ y = Math.min(pageHeight, Math.max(width, y));
+ break;
+ case 180:
+ x = Math.min(pageWidth, Math.max(width, x));
+ y = Math.min(pageHeight, Math.max(height, y));
+ break;
+ case 270:
+ x = Math.min(pageWidth, Math.max(height, x));
+ y = Math.max(0, Math.min(pageHeight - width, y));
+ break;
+ }
+ this.x = x /= pageWidth;
+ this.y = y /= pageHeight;
+ const [bx, by] = this.#getBaseTranslation();
+ x += bx;
+ y += by;
+ const {
+ style
+ } = this.div;
+ style.left = `${(100 * x).toFixed(2)}%`;
+ style.top = `${(100 * y).toFixed(2)}%`;
+ this.moveInDOM();
+ }
+ static #rotatePoint(x, y, angle) {
+ switch (angle) {
+ case 90:
+ return [y, -x];
+ case 180:
+ return [-x, -y];
+ case 270:
+ return [-y, x];
+ default:
+ return [x, y];
+ }
+ }
+ screenToPageTranslation(x, y) {
+ return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);
+ }
+ pageTranslationToScreen(x, y) {
+ return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);
+ }
+ #getRotationMatrix(rotation) {
+ switch (rotation) {
+ case 90:
+ {
+ const [pageWidth, pageHeight] = this.pageDimensions;
+ return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];
+ }
+ case 180:
+ return [-1, 0, 0, -1];
+ case 270:
+ {
+ const [pageWidth, pageHeight] = this.pageDimensions;
+ return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];
+ }
+ default:
+ return [1, 0, 0, 1];
+ }
+ }
+ get parentScale() {
+ return this._uiManager.viewParameters.realScale;
+ }
+ get parentRotation() {
+ return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;
+ }
+ get parentDimensions() {
+ const {
+ parentScale,
+ pageDimensions: [pageWidth, pageHeight]
+ } = this;
+ const scaledWidth = pageWidth * parentScale;
+ const scaledHeight = pageHeight * parentScale;
+ return util.FeatureTest.isCSSRoundSupported ? [Math.round(scaledWidth), Math.round(scaledHeight)] : [scaledWidth, scaledHeight];
+ }
+ setDims(width, height) {
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ this.div.style.width = `${(100 * width / parentWidth).toFixed(2)}%`;
+ if (!this.#keepAspectRatio) {
+ this.div.style.height = `${(100 * height / parentHeight).toFixed(2)}%`;
+ }
+ }
+ fixDims() {
+ const {
+ style
+ } = this.div;
+ const {
+ height,
+ width
+ } = style;
+ const widthPercent = width.endsWith("%");
+ const heightPercent = !this.#keepAspectRatio && height.endsWith("%");
+ if (widthPercent && heightPercent) {
+ return;
+ }
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ if (!widthPercent) {
+ style.width = `${(100 * parseFloat(width) / parentWidth).toFixed(2)}%`;
+ }
+ if (!this.#keepAspectRatio && !heightPercent) {
+ style.height = `${(100 * parseFloat(height) / parentHeight).toFixed(2)}%`;
+ }
+ }
+ getInitialTranslation() {
+ return [0, 0];
+ }
+ #createResizers() {
+ if (this.#resizersDiv) {
+ return;
+ }
+ this.#resizersDiv = document.createElement("div");
+ this.#resizersDiv.classList.add("resizers");
+ const classes = this._willKeepAspectRatio ? ["topLeft", "topRight", "bottomRight", "bottomLeft"] : ["topLeft", "topMiddle", "topRight", "middleRight", "bottomRight", "bottomMiddle", "bottomLeft", "middleLeft"];
+ for (const name of classes) {
+ const div = document.createElement("div");
+ this.#resizersDiv.append(div);
+ div.classList.add("resizer", name);
+ div.setAttribute("data-resizer-name", name);
+ div.addEventListener("pointerdown", this.#resizerPointerdown.bind(this, name));
+ div.addEventListener("contextmenu", display_utils.noContextMenu);
+ div.tabIndex = -1;
+ }
+ this.div.prepend(this.#resizersDiv);
+ }
+ #resizerPointerdown(name, event) {
+ event.preventDefault();
+ const {
+ isMac
+ } = util.FeatureTest.platform;
+ if (event.button !== 0 || event.ctrlKey && isMac) {
+ return;
+ }
+ this.#altText?.toggle(false);
+ const boundResizerPointermove = this.#resizerPointermove.bind(this, name);
+ const savedDraggable = this._isDraggable;
+ this._isDraggable = false;
+ const pointerMoveOptions = {
+ passive: true,
+ capture: true
+ };
+ this.parent.togglePointerEvents(false);
+ window.addEventListener("pointermove", boundResizerPointermove, pointerMoveOptions);
+ const savedX = this.x;
+ const savedY = this.y;
+ const savedWidth = this.width;
+ const savedHeight = this.height;
+ const savedParentCursor = this.parent.div.style.cursor;
+ const savedCursor = this.div.style.cursor;
+ this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;
+ const pointerUpCallback = () => {
+ this.parent.togglePointerEvents(true);
+ this.#altText?.toggle(true);
+ this._isDraggable = savedDraggable;
+ window.removeEventListener("pointerup", pointerUpCallback);
+ window.removeEventListener("blur", pointerUpCallback);
+ window.removeEventListener("pointermove", boundResizerPointermove, pointerMoveOptions);
+ this.parent.div.style.cursor = savedParentCursor;
+ this.div.style.cursor = savedCursor;
+ this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);
+ };
+ window.addEventListener("pointerup", pointerUpCallback);
+ window.addEventListener("blur", pointerUpCallback);
+ }
+ #addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight) {
+ const newX = this.x;
+ const newY = this.y;
+ const newWidth = this.width;
+ const newHeight = this.height;
+ if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {
+ return;
+ }
+ this.addCommands({
+ cmd: () => {
+ this.width = newWidth;
+ this.height = newHeight;
+ this.x = newX;
+ this.y = newY;
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ this.setDims(parentWidth * newWidth, parentHeight * newHeight);
+ this.fixAndSetPosition();
+ },
+ undo: () => {
+ this.width = savedWidth;
+ this.height = savedHeight;
+ this.x = savedX;
+ this.y = savedY;
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ this.setDims(parentWidth * savedWidth, parentHeight * savedHeight);
+ this.fixAndSetPosition();
+ },
+ mustExec: true
+ });
+ }
+ #resizerPointermove(name, event) {
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ const savedX = this.x;
+ const savedY = this.y;
+ const savedWidth = this.width;
+ const savedHeight = this.height;
+ const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;
+ const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;
+ const round = x => Math.round(x * 10000) / 10000;
+ const rotationMatrix = this.#getRotationMatrix(this.rotation);
+ const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];
+ const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);
+ const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];
+ let getPoint;
+ let getOpposite;
+ let isDiagonal = false;
+ let isHorizontal = false;
+ switch (name) {
+ case "topLeft":
+ isDiagonal = true;
+ getPoint = (w, h) => [0, 0];
+ getOpposite = (w, h) => [w, h];
+ break;
+ case "topMiddle":
+ getPoint = (w, h) => [w / 2, 0];
+ getOpposite = (w, h) => [w / 2, h];
+ break;
+ case "topRight":
+ isDiagonal = true;
+ getPoint = (w, h) => [w, 0];
+ getOpposite = (w, h) => [0, h];
+ break;
+ case "middleRight":
+ isHorizontal = true;
+ getPoint = (w, h) => [w, h / 2];
+ getOpposite = (w, h) => [0, h / 2];
+ break;
+ case "bottomRight":
+ isDiagonal = true;
+ getPoint = (w, h) => [w, h];
+ getOpposite = (w, h) => [0, 0];
+ break;
+ case "bottomMiddle":
+ getPoint = (w, h) => [w / 2, h];
+ getOpposite = (w, h) => [w / 2, 0];
+ break;
+ case "bottomLeft":
+ isDiagonal = true;
+ getPoint = (w, h) => [0, h];
+ getOpposite = (w, h) => [w, 0];
+ break;
+ case "middleLeft":
+ isHorizontal = true;
+ getPoint = (w, h) => [0, h / 2];
+ getOpposite = (w, h) => [w, h / 2];
+ break;
+ }
+ const point = getPoint(savedWidth, savedHeight);
+ const oppositePoint = getOpposite(savedWidth, savedHeight);
+ let transfOppositePoint = transf(...oppositePoint);
+ const oppositeX = round(savedX + transfOppositePoint[0]);
+ const oppositeY = round(savedY + transfOppositePoint[1]);
+ let ratioX = 1;
+ let ratioY = 1;
+ let [deltaX, deltaY] = this.screenToPageTranslation(event.movementX, event.movementY);
+ [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);
+ if (isDiagonal) {
+ const oldDiag = Math.hypot(savedWidth, savedHeight);
+ 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);
+ } else if (isHorizontal) {
+ ratioX = Math.max(minWidth, Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))) / savedWidth;
+ } else {
+ ratioY = Math.max(minHeight, Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))) / savedHeight;
+ }
+ const newWidth = round(savedWidth * ratioX);
+ const newHeight = round(savedHeight * ratioY);
+ transfOppositePoint = transf(...getOpposite(newWidth, newHeight));
+ const newX = oppositeX - transfOppositePoint[0];
+ const newY = oppositeY - transfOppositePoint[1];
+ this.width = newWidth;
+ this.height = newHeight;
+ this.x = newX;
+ this.y = newY;
+ this.setDims(parentWidth * newWidth, parentHeight * newHeight);
+ this.fixAndSetPosition();
+ }
+ altTextFinish() {
+ this.#altText?.finish();
+ }
+ async addEditToolbar() {
+ if (this.#editToolbar || this.#isInEditMode) {
+ return this.#editToolbar;
+ }
+ this.#editToolbar = new EditorToolbar(this);
+ this.div.append(this.#editToolbar.render());
+ if (this.#altText) {
+ this.#editToolbar.addAltTextButton(await this.#altText.render());
+ }
+ return this.#editToolbar;
+ }
+ removeEditToolbar() {
+ if (!this.#editToolbar) {
+ return;
+ }
+ this.#editToolbar.remove();
+ this.#editToolbar = null;
+ this.#altText?.destroy();
+ }
+ getClientDimensions() {
+ return this.div.getBoundingClientRect();
+ }
+ async addAltTextButton() {
+ if (this.#altText) {
+ return;
+ }
+ AltText.initialize(AnnotationEditor._l10nPromise);
+ this.#altText = new AltText(this);
+ await this.addEditToolbar();
+ }
+ get altTextData() {
+ return this.#altText?.data;
+ }
+ set altTextData(data) {
+ if (!this.#altText) {
+ return;
+ }
+ this.#altText.data = data;
+ }
+ render() {
+ this.div = document.createElement("div");
+ this.div.setAttribute("data-editor-rotation", (360 - this.rotation) % 360);
+ this.div.className = this.name;
+ this.div.setAttribute("id", this.id);
+ this.div.setAttribute("tabIndex", 0);
+ this.setInForeground();
+ this.div.addEventListener("focusin", this.#boundFocusin);
+ this.div.addEventListener("focusout", this.#boundFocusout);
+ const [parentWidth, parentHeight] = this.parentDimensions;
+ if (this.parentRotation % 180 !== 0) {
+ this.div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;
+ this.div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;
+ }
+ const [tx, ty] = this.getInitialTranslation();
+ this.translate(tx, ty);
+ (0,tools.bindEvents)(this, this.div, ["pointerdown"]);
+ return this.div;
+ }
+ pointerdown(event) {
+ const {
+ isMac
+ } = util.FeatureTest.platform;
+ if (event.button !== 0 || event.ctrlKey && isMac) {
+ event.preventDefault();
+ return;
+ }
+ this.#hasBeenClicked = true;
+ if (this._isDraggable) {
+ this.#setUpDragSession(event);
+ return;
+ }
+ this.#selectOnPointerEvent(event);
+ }
+ #selectOnPointerEvent(event) {
+ const {
+ isMac
+ } = util.FeatureTest.platform;
+ if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {
+ this.parent.toggleSelected(this);
+ } else {
+ this.parent.setSelected(this);
+ }
+ }
+ #setUpDragSession(event) {
+ const isSelected = this._uiManager.isSelected(this);
+ this._uiManager.setUpDragSession();
+ let pointerMoveOptions, pointerMoveCallback;
+ if (isSelected) {
+ pointerMoveOptions = {
+ passive: true,
+ capture: true
+ };
+ pointerMoveCallback = e => {
+ const [tx, ty] = this.screenToPageTranslation(e.movementX, e.movementY);
+ this._uiManager.dragSelectedEditors(tx, ty);
+ };
+ window.addEventListener("pointermove", pointerMoveCallback, pointerMoveOptions);
+ }
+ const pointerUpCallback = () => {
+ window.removeEventListener("pointerup", pointerUpCallback);
+ window.removeEventListener("blur", pointerUpCallback);
+ if (isSelected) {
+ window.removeEventListener("pointermove", pointerMoveCallback, pointerMoveOptions);
+ }
+ this.#hasBeenClicked = false;
+ if (!this._uiManager.endDragSession()) {
+ this.#selectOnPointerEvent(event);
+ }
+ };
+ window.addEventListener("pointerup", pointerUpCallback);
+ window.addEventListener("blur", pointerUpCallback);
+ }
+ moveInDOM() {
+ if (this.#moveInDOMTimeout) {
+ clearTimeout(this.#moveInDOMTimeout);
+ }
+ this.#moveInDOMTimeout = setTimeout(() => {
+ this.#moveInDOMTimeout = null;
+ this.parent?.moveEditorInDOM(this);
+ }, 0);
+ }
+ _setParentAndPosition(parent, x, y) {
+ parent.changeParent(this);
+ this.x = x;
+ this.y = y;
+ this.fixAndSetPosition();
+ }
+ getRect(tx, ty, rotation = this.rotation) {
+ const scale = this.parentScale;
+ const [pageWidth, pageHeight] = this.pageDimensions;
+ const [pageX, pageY] = this.pageTranslation;
+ const shiftX = tx / scale;
+ const shiftY = ty / scale;
+ const x = this.x * pageWidth;
+ const y = this.y * pageHeight;
+ const width = this.width * pageWidth;
+ const height = this.height * pageHeight;
+ switch (rotation) {
+ case 0:
+ return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];
+ case 90:
+ return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];
+ case 180:
+ return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];
+ case 270:
+ return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];
+ default:
+ throw new Error("Invalid rotation");
+ }
+ }
+ getRectInCurrentCoords(rect, pageHeight) {
+ const [x1, y1, x2, y2] = rect;
+ const width = x2 - x1;
+ const height = y2 - y1;
+ switch (this.rotation) {
+ case 0:
+ return [x1, pageHeight - y2, width, height];
+ case 90:
+ return [x1, pageHeight - y1, height, width];
+ case 180:
+ return [x2, pageHeight - y1, width, height];
+ case 270:
+ return [x2, pageHeight - y2, height, width];
+ default:
+ throw new Error("Invalid rotation");
+ }
+ }
+ onceAdded() {}
+ isEmpty() {
+ return false;
+ }
+ enableEditMode() {
+ this.#isInEditMode = true;
+ }
+ disableEditMode() {
+ this.#isInEditMode = false;
+ }
+ isInEditMode() {
+ return this.#isInEditMode;
+ }
+ shouldGetKeyboardEvents() {
+ return this.#isResizerEnabledForKeyboard;
+ }
+ needsToBeRebuilt() {
+ return this.div && !this.isAttachedToDOM;
+ }
+ rebuild() {
+ this.div?.addEventListener("focusin", this.#boundFocusin);
+ this.div?.addEventListener("focusout", this.#boundFocusout);
+ }
+ rotate(_angle) {}
+ serialize(isForCopying = false, context = null) {
+ (0,util.unreachable)("An editor must be serializable");
+ }
+ static deserialize(data, parent, uiManager) {
+ const editor = new this.prototype.constructor({
+ parent,
+ id: parent.getNextId(),
+ uiManager
+ });
+ editor.rotation = data.rotation;
+ const [pageWidth, pageHeight] = editor.pageDimensions;
+ const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);
+ editor.x = x / pageWidth;
+ editor.y = y / pageHeight;
+ editor.width = width / pageWidth;
+ editor.height = height / pageHeight;
+ return editor;
+ }
+ remove() {
+ this.div.removeEventListener("focusin", this.#boundFocusin);
+ this.div.removeEventListener("focusout", this.#boundFocusout);
+ if (!this.isEmpty()) {
+ this.commit();
+ }
+ if (this.parent) {
+ this.parent.remove(this);
+ } else {
+ this._uiManager.removeEditor(this);
+ }
+ if (this.#moveInDOMTimeout) {
+ clearTimeout(this.#moveInDOMTimeout);
+ this.#moveInDOMTimeout = null;
+ }
+ this.#stopResizing();
+ this.removeEditToolbar();
+ }
+ get isResizable() {
+ return false;
+ }
+ makeResizable() {
+ if (this.isResizable) {
+ this.#createResizers();
+ this.#resizersDiv.classList.remove("hidden");
+ (0,tools.bindEvents)(this, this.div, ["keydown"]);
+ }
+ }
+ get toolbarPosition() {
+ return null;
+ }
+ keydown(event) {
+ if (!this.isResizable || event.target !== this.div || event.key !== "Enter") {
+ return;
+ }
+ this._uiManager.setSelected(this);
+ this.#savedDimensions = {
+ savedX: this.x,
+ savedY: this.y,
+ savedWidth: this.width,
+ savedHeight: this.height
+ };
+ const children = this.#resizersDiv.children;
+ if (!this.#allResizerDivs) {
+ this.#allResizerDivs = Array.from(children);
+ const boundResizerKeydown = this.#resizerKeydown.bind(this);
+ const boundResizerBlur = this.#resizerBlur.bind(this);
+ for (const div of this.#allResizerDivs) {
+ const name = div.getAttribute("data-resizer-name");
+ div.setAttribute("role", "spinbutton");
+ div.addEventListener("keydown", boundResizerKeydown);
+ div.addEventListener("blur", boundResizerBlur);
+ div.addEventListener("focus", this.#resizerFocus.bind(this, name));
+ AnnotationEditor._l10nPromise.get(`pdfjs-editor-resizer-label-${name}`).then(msg => div.setAttribute("aria-label", msg));
+ }
+ }
+ const first = this.#allResizerDivs[0];
+ let firstPosition = 0;
+ for (const div of children) {
+ if (div === first) {
+ break;
+ }
+ firstPosition++;
+ }
+ const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);
+ if (nextFirstPosition !== firstPosition) {
+ if (nextFirstPosition < firstPosition) {
+ for (let i = 0; i < firstPosition - nextFirstPosition; i++) {
+ this.#resizersDiv.append(this.#resizersDiv.firstChild);
+ }
+ } else if (nextFirstPosition > firstPosition) {
+ for (let i = 0; i < nextFirstPosition - firstPosition; i++) {
+ this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);
+ }
+ }
+ let i = 0;
+ for (const child of children) {
+ const div = this.#allResizerDivs[i++];
+ const name = div.getAttribute("data-resizer-name");
+ AnnotationEditor._l10nPromise.get(`pdfjs-editor-resizer-label-${name}`).then(msg => child.setAttribute("aria-label", msg));
+ }
+ }
+ this.#setResizerTabIndex(0);
+ this.#isResizerEnabledForKeyboard = true;
+ this.#resizersDiv.firstChild.focus({
+ focusVisible: true
+ });
+ event.preventDefault();
+ event.stopImmediatePropagation();
+ }
+ #resizerKeydown(event) {
+ AnnotationEditor._resizerKeyboardManager.exec(this, event);
+ }
+ #resizerBlur(event) {
+ if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {
+ this.#stopResizing();
+ }
+ }
+ #resizerFocus(name) {
+ this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : "";
+ }
+ #setResizerTabIndex(value) {
+ if (!this.#allResizerDivs) {
+ return;
+ }
+ for (const div of this.#allResizerDivs) {
+ div.tabIndex = value;
+ }
+ }
+ _resizeWithKeyboard(x, y) {
+ if (!this.#isResizerEnabledForKeyboard) {
+ return;
+ }
+ this.#resizerPointermove(this.#focusedResizerName, {
+ movementX: x,
+ movementY: y
+ });
+ }
+ #stopResizing() {
+ this.#isResizerEnabledForKeyboard = false;
+ this.#setResizerTabIndex(-1);
+ if (this.#savedDimensions) {
+ const {
+ savedX,
+ savedY,
+ savedWidth,
+ savedHeight
+ } = this.#savedDimensions;
+ this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);
+ this.#savedDimensions = null;
+ }
+ }
+ _stopResizingWithKeyboard() {
+ this.#stopResizing();
+ this.div.focus();
+ }
+ select() {
+ this.makeResizable();
+ this.div?.classList.add("selectedEditor");
+ if (!this.#editToolbar) {
+ this.addEditToolbar().then(() => {
+ if (this.div?.classList.contains("selectedEditor")) {
+ this.#editToolbar?.show();
+ }
+ });
+ return;
+ }
+ this.#editToolbar?.show();
+ }
+ unselect() {
+ this.#resizersDiv?.classList.add("hidden");
+ this.div?.classList.remove("selectedEditor");
+ if (this.div?.contains(document.activeElement)) {
+ this._uiManager.currentLayer.div.focus();
+ }
+ this.#editToolbar?.hide();
+ }
+ updateParams(type, value) {}
+ disableEditing() {}
+ enableEditing() {}
+ enterInEditMode() {}
+ getImageForAltText() {
+ return null;
+ }
+ get contentDiv() {
+ return this.div;
+ }
+ get isEditing() {
+ return this.#isEditing;
+ }
+ set isEditing(value) {
+ this.#isEditing = value;
+ if (!this.parent) {
+ return;
+ }
+ if (value) {
+ this.parent.setSelected(this);
+ this.parent.setActiveEditor(this);
+ } else {
+ this.parent.setActiveEditor(null);
+ }
+ }
+ setAspectRatio(width, height) {
+ this.#keepAspectRatio = true;
+ const aspectRatio = width / height;
+ const {
+ style
+ } = this.div;
+ style.aspectRatio = aspectRatio;
+ style.height = "auto";
+ }
+ static get MIN_SIZE() {
+ return 16;
+ }
+ static canCreateNewEmptyEditor() {
+ return true;
+ }
+}
+class FakeEditor extends AnnotationEditor {
+ constructor(params) {
+ super(params);
+ this.annotationElementId = params.annotationElementId;
+ this.deleted = true;
+ }
+ serialize() {
+ return {
+ id: this.annotationElementId,
+ deleted: true,
+ pageIndex: this.pageIndex
+ };
+ }
+}
+
+
+/***/ }),
+
+/***/ 405:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ Outliner: () => (/* binding */ Outliner)
+/* harmony export */ });
+class Outliner {
+ #box;
+ #verticalEdges = [];
+ #intervals = [];
+ constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {
+ let minX = Infinity;
+ let maxX = -Infinity;
+ let minY = Infinity;
+ let maxY = -Infinity;
+ const NUMBER_OF_DIGITS = 4;
+ const EPSILON = 10 ** -NUMBER_OF_DIGITS;
+ for (const {
+ x,
+ y,
+ width,
+ height
+ } of boxes) {
+ const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;
+ const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;
+ const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;
+ const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;
+ const left = [x1, y1, y2, true];
+ const right = [x2, y1, y2, false];
+ this.#verticalEdges.push(left, right);
+ minX = Math.min(minX, x1);
+ maxX = Math.max(maxX, x2);
+ minY = Math.min(minY, y1);
+ maxY = Math.max(maxY, y2);
+ }
+ const bboxWidth = maxX - minX + 2 * innerMargin;
+ const bboxHeight = maxY - minY + 2 * innerMargin;
+ const shiftedMinX = minX - innerMargin;
+ const shiftedMinY = minY - innerMargin;
+ const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);
+ const lastPoint = [lastEdge[0], lastEdge[2]];
+ for (const edge of this.#verticalEdges) {
+ const [x, y1, y2] = edge;
+ edge[0] = (x - shiftedMinX) / bboxWidth;
+ edge[1] = (y1 - shiftedMinY) / bboxHeight;
+ edge[2] = (y2 - shiftedMinY) / bboxHeight;
+ }
+ this.#box = {
+ x: shiftedMinX,
+ y: shiftedMinY,
+ width: bboxWidth,
+ height: bboxHeight,
+ lastPoint
+ };
+ }
+ getOutlines() {
+ this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);
+ const outlineVerticalEdges = [];
+ for (const edge of this.#verticalEdges) {
+ if (edge[3]) {
+ outlineVerticalEdges.push(...this.#breakEdge(edge));
+ this.#insert(edge);
+ } else {
+ this.#remove(edge);
+ outlineVerticalEdges.push(...this.#breakEdge(edge));
+ }
+ }
+ return this.#getOutlines(outlineVerticalEdges);
+ }
+ #getOutlines(outlineVerticalEdges) {
+ const edges = [];
+ const allEdges = new Set();
+ for (const edge of outlineVerticalEdges) {
+ const [x, y1, y2] = edge;
+ edges.push([x, y1, edge], [x, y2, edge]);
+ }
+ edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);
+ for (let i = 0, ii = edges.length; i < ii; i += 2) {
+ const edge1 = edges[i][2];
+ const edge2 = edges[i + 1][2];
+ edge1.push(edge2);
+ edge2.push(edge1);
+ allEdges.add(edge1);
+ allEdges.add(edge2);
+ }
+ const outlines = [];
+ let outline;
+ while (allEdges.size > 0) {
+ const edge = allEdges.values().next().value;
+ let [x, y1, y2, edge1, edge2] = edge;
+ allEdges.delete(edge);
+ let lastPointX = x;
+ let lastPointY = y1;
+ outline = [x, y2];
+ outlines.push(outline);
+ while (true) {
+ let e;
+ if (allEdges.has(edge1)) {
+ e = edge1;
+ } else if (allEdges.has(edge2)) {
+ e = edge2;
+ } else {
+ break;
+ }
+ allEdges.delete(e);
+ [x, y1, y2, edge1, edge2] = e;
+ if (lastPointX !== x) {
+ outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);
+ lastPointX = x;
+ }
+ lastPointY = lastPointY === y1 ? y2 : y1;
+ }
+ outline.push(lastPointX, lastPointY);
+ }
+ return {
+ outlines,
+ box: this.#box
+ };
+ }
+ #binarySearch(y) {
+ const array = this.#intervals;
+ let start = 0;
+ let end = array.length - 1;
+ while (start <= end) {
+ const middle = start + end >> 1;
+ const y1 = array[middle][0];
+ if (y1 === y) {
+ return middle;
+ }
+ if (y1 < y) {
+ start = middle + 1;
+ } else {
+ end = middle - 1;
+ }
+ }
+ return end + 1;
+ }
+ #insert([, y1, y2]) {
+ const index = this.#binarySearch(y1);
+ this.#intervals.splice(index, 0, [y1, y2]);
+ }
+ #remove([, y1, y2]) {
+ const index = this.#binarySearch(y1);
+ for (let i = index; i < this.#intervals.length; i++) {
+ const [start, end] = this.#intervals[i];
+ if (start !== y1) {
+ break;
+ }
+ if (start === y1 && end === y2) {
+ this.#intervals.splice(i, 1);
+ return;
+ }
+ }
+ for (let i = index - 1; i >= 0; i--) {
+ const [start, end] = this.#intervals[i];
+ if (start !== y1) {
+ break;
+ }
+ if (start === y1 && end === y2) {
+ this.#intervals.splice(i, 1);
+ return;
+ }
+ }
+ }
+ #breakEdge(edge) {
+ const [x, y1, y2] = edge;
+ const results = [[x, y1, y2]];
+ const index = this.#binarySearch(y2);
+ for (let i = 0; i < index; i++) {
+ const [start, end] = this.#intervals[i];
+ for (let j = 0, jj = results.length; j < jj; j++) {
+ const [, y3, y4] = results[j];
+ if (end <= y3 || y4 <= start) {
+ continue;
+ }
+ if (y3 >= start) {
+ if (y4 > end) {
+ results[j][1] = end;
+ } else {
+ if (jj === 1) {
+ return [];
+ }
+ results.splice(j, 1);
+ j--;
+ jj--;
+ }
+ continue;
+ }
+ results[j][2] = start;
+ if (y4 > end) {
+ results.push([x, end, y4]);
+ }
+ }
+ }
+ return results;
+ }
+}
+
+
+/***/ }),
+
+/***/ 812:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ AnnotationEditorUIManager: () => (/* binding */ AnnotationEditorUIManager),
+/* harmony export */ ColorManager: () => (/* binding */ ColorManager),
+/* harmony export */ KeyboardManager: () => (/* binding */ KeyboardManager),
+/* harmony export */ bindEvents: () => (/* binding */ bindEvents),
+/* harmony export */ opacityToHex: () => (/* binding */ opacityToHex)
+/* harmony export */ });
+/* unused harmony export CommandManager */
+/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266);
+/* harmony import */ var _display_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(473);
+
+
+function bindEvents(obj, element, names) {
+ for (const name of names) {
+ element.addEventListener(name, obj[name].bind(obj));
+ }
+}
+function opacityToHex(opacity) {
+ return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, "0");
+}
+class IdManager {
+ #id = 0;
+ getId() {
+ return `${_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorPrefix}${this.#id++}`;
+ }
+}
+class ImageManager {
+ #baseId = (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.getUuid)();
+ #id = 0;
+ #cache = null;
+ static get _isSVGFittingCanvas() {
+ const svg = `data:image/svg+xml;charset=UTF-8,`;
+ const canvas = new OffscreenCanvas(1, 3);
+ const ctx = canvas.getContext("2d");
+ const image = new Image();
+ image.src = svg;
+ const promise = image.decode().then(() => {
+ ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);
+ return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;
+ });
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "_isSVGFittingCanvas", promise);
+ }
+ async #get(key, rawData) {
+ this.#cache ||= new Map();
+ let data = this.#cache.get(key);
+ if (data === null) {
+ return null;
+ }
+ if (data?.bitmap) {
+ data.refCounter += 1;
+ return data;
+ }
+ try {
+ data ||= {
+ bitmap: null,
+ id: `image_${this.#baseId}_${this.#id++}`,
+ refCounter: 0,
+ isSvg: false
+ };
+ let image;
+ if (typeof rawData === "string") {
+ data.url = rawData;
+ image = await (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_1__.fetchData)(rawData, "blob");
+ } else {
+ image = data.file = rawData;
+ }
+ if (image.type === "image/svg+xml") {
+ const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;
+ const fileReader = new FileReader();
+ const imageElement = new Image();
+ const imagePromise = new Promise((resolve, reject) => {
+ imageElement.onload = () => {
+ data.bitmap = imageElement;
+ data.isSvg = true;
+ resolve();
+ };
+ fileReader.onload = async () => {
+ const url = data.svgUrl = fileReader.result;
+ imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;
+ };
+ imageElement.onerror = fileReader.onerror = reject;
+ });
+ fileReader.readAsDataURL(image);
+ await imagePromise;
+ } else {
+ data.bitmap = await createImageBitmap(image);
+ }
+ data.refCounter = 1;
+ } catch (e) {
+ console.error(e);
+ data = null;
+ }
+ this.#cache.set(key, data);
+ if (data) {
+ this.#cache.set(data.id, data);
+ }
+ return data;
+ }
+ async getFromFile(file) {
+ const {
+ lastModified,
+ name,
+ size,
+ type
+ } = file;
+ return this.#get(`${lastModified}_${name}_${size}_${type}`, file);
+ }
+ async getFromUrl(url) {
+ return this.#get(url, url);
+ }
+ async getFromId(id) {
+ this.#cache ||= new Map();
+ const data = this.#cache.get(id);
+ if (!data) {
+ return null;
+ }
+ if (data.bitmap) {
+ data.refCounter += 1;
+ return data;
+ }
+ if (data.file) {
+ return this.getFromFile(data.file);
+ }
+ return this.getFromUrl(data.url);
+ }
+ getSvgUrl(id) {
+ const data = this.#cache.get(id);
+ if (!data?.isSvg) {
+ return null;
+ }
+ return data.svgUrl;
+ }
+ deleteId(id) {
+ this.#cache ||= new Map();
+ const data = this.#cache.get(id);
+ if (!data) {
+ return;
+ }
+ data.refCounter -= 1;
+ if (data.refCounter !== 0) {
+ return;
+ }
+ data.bitmap = null;
+ }
+ isValidId(id) {
+ return id.startsWith(`image_${this.#baseId}_`);
+ }
+}
+class CommandManager {
+ #commands = [];
+ #locked = false;
+ #maxSize;
+ #position = -1;
+ constructor(maxSize = 128) {
+ this.#maxSize = maxSize;
+ }
+ add({
+ cmd,
+ undo,
+ mustExec,
+ type = NaN,
+ overwriteIfSameType = false,
+ keepUndo = false
+ }) {
+ if (mustExec) {
+ cmd();
+ }
+ if (this.#locked) {
+ return;
+ }
+ const save = {
+ cmd,
+ undo,
+ type
+ };
+ if (this.#position === -1) {
+ if (this.#commands.length > 0) {
+ this.#commands.length = 0;
+ }
+ this.#position = 0;
+ this.#commands.push(save);
+ return;
+ }
+ if (overwriteIfSameType && this.#commands[this.#position].type === type) {
+ if (keepUndo) {
+ save.undo = this.#commands[this.#position].undo;
+ }
+ this.#commands[this.#position] = save;
+ return;
+ }
+ const next = this.#position + 1;
+ if (next === this.#maxSize) {
+ this.#commands.splice(0, 1);
+ } else {
+ this.#position = next;
+ if (next < this.#commands.length) {
+ this.#commands.splice(next);
+ }
+ }
+ this.#commands.push(save);
+ }
+ undo() {
+ if (this.#position === -1) {
+ return;
+ }
+ this.#locked = true;
+ this.#commands[this.#position].undo();
+ this.#locked = false;
+ this.#position -= 1;
+ }
+ redo() {
+ if (this.#position < this.#commands.length - 1) {
+ this.#position += 1;
+ this.#locked = true;
+ this.#commands[this.#position].cmd();
+ this.#locked = false;
+ }
+ }
+ hasSomethingToUndo() {
+ return this.#position !== -1;
+ }
+ hasSomethingToRedo() {
+ return this.#position < this.#commands.length - 1;
+ }
+ destroy() {
+ this.#commands = null;
+ }
+}
+class KeyboardManager {
+ constructor(callbacks) {
+ this.buffer = [];
+ this.callbacks = new Map();
+ this.allKeys = new Set();
+ const {
+ isMac
+ } = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.FeatureTest.platform;
+ for (const [keys, callback, options = {}] of callbacks) {
+ for (const key of keys) {
+ const isMacKey = key.startsWith("mac+");
+ if (isMac && isMacKey) {
+ this.callbacks.set(key.slice(4), {
+ callback,
+ options
+ });
+ this.allKeys.add(key.split("+").at(-1));
+ } else if (!isMac && !isMacKey) {
+ this.callbacks.set(key, {
+ callback,
+ options
+ });
+ this.allKeys.add(key.split("+").at(-1));
+ }
+ }
+ }
+ }
+ #serialize(event) {
+ if (event.altKey) {
+ this.buffer.push("alt");
+ }
+ if (event.ctrlKey) {
+ this.buffer.push("ctrl");
+ }
+ if (event.metaKey) {
+ this.buffer.push("meta");
+ }
+ if (event.shiftKey) {
+ this.buffer.push("shift");
+ }
+ this.buffer.push(event.key);
+ const str = this.buffer.join("+");
+ this.buffer.length = 0;
+ return str;
+ }
+ exec(self, event) {
+ if (!this.allKeys.has(event.key)) {
+ return;
+ }
+ const info = this.callbacks.get(this.#serialize(event));
+ if (!info) {
+ return;
+ }
+ const {
+ callback,
+ options: {
+ bubbles = false,
+ args = [],
+ checker = null
+ }
+ } = info;
+ if (checker && !checker(self, event)) {
+ return;
+ }
+ callback.bind(self, ...args, event)();
+ if (!bubbles) {
+ event.stopPropagation();
+ event.preventDefault();
+ }
+ }
+}
+class ColorManager {
+ static _colorsMapping = new Map([["CanvasText", [0, 0, 0]], ["Canvas", [255, 255, 255]]]);
+ get _colors() {
+ const colors = new Map([["CanvasText", null], ["Canvas", null]]);
+ (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_1__.getColorValues)(colors);
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "_colors", colors);
+ }
+ convert(color) {
+ const rgb = (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_1__.getRGB)(color);
+ if (!window.matchMedia("(forced-colors: active)").matches) {
+ return rgb;
+ }
+ for (const [name, RGB] of this._colors) {
+ if (RGB.every((x, i) => x === rgb[i])) {
+ return ColorManager._colorsMapping.get(name);
+ }
+ }
+ return rgb;
+ }
+ getHexCode(name) {
+ const rgb = this._colors.get(name);
+ if (!rgb) {
+ return name;
+ }
+ return _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.Util.makeHexColor(...rgb);
+ }
+}
+class AnnotationEditorUIManager {
+ #activeEditor = null;
+ #allEditors = new Map();
+ #allLayers = new Map();
+ #altTextManager = null;
+ #annotationStorage = null;
+ #commandManager = new CommandManager();
+ #currentPageIndex = 0;
+ #deletedAnnotationsElementIds = new Set();
+ #draggingEditors = null;
+ #editorTypes = null;
+ #editorsToRescale = new Set();
+ #filterFactory = null;
+ #focusMainContainerTimeoutId = null;
+ #highlightColors = null;
+ #idManager = new IdManager();
+ #isEnabled = false;
+ #isWaiting = false;
+ #lastActiveElement = null;
+ #mainHighlightColorPicker = null;
+ #mode = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.NONE;
+ #selectedEditors = new Set();
+ #pageColors = null;
+ #boundBlur = this.blur.bind(this);
+ #boundFocus = this.focus.bind(this);
+ #boundCopy = this.copy.bind(this);
+ #boundCut = this.cut.bind(this);
+ #boundPaste = this.paste.bind(this);
+ #boundKeydown = this.keydown.bind(this);
+ #boundOnEditingAction = this.onEditingAction.bind(this);
+ #boundOnPageChanging = this.onPageChanging.bind(this);
+ #boundOnScaleChanging = this.onScaleChanging.bind(this);
+ #boundOnRotationChanging = this.onRotationChanging.bind(this);
+ #previousStates = {
+ isEditing: false,
+ isEmpty: true,
+ hasSomethingToUndo: false,
+ hasSomethingToRedo: false,
+ hasSelectedEditor: false
+ };
+ #translation = [0, 0];
+ #translationTimeoutId = null;
+ #container = null;
+ #viewer = null;
+ static TRANSLATE_SMALL = 1;
+ static TRANSLATE_BIG = 10;
+ static get _keyboardManager() {
+ const proto = AnnotationEditorUIManager.prototype;
+ const arrowChecker = self => {
+ return self.#container.contains(document.activeElement) && document.activeElement.tagName !== "BUTTON" && self.hasSomethingToControl();
+ };
+ const textInputChecker = (_self, {
+ target: el
+ }) => {
+ if (el instanceof HTMLInputElement) {
+ const {
+ type
+ } = el;
+ return type !== "text" && type !== "number";
+ }
+ return true;
+ };
+ const small = this.TRANSLATE_SMALL;
+ const big = this.TRANSLATE_BIG;
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "_keyboardManager", new KeyboardManager([[["ctrl+a", "mac+meta+a"], proto.selectAll, {
+ checker: textInputChecker
+ }], [["ctrl+z", "mac+meta+z"], proto.undo, {
+ checker: textInputChecker
+ }], [["ctrl+y", "ctrl+shift+z", "mac+meta+shift+z", "ctrl+shift+Z", "mac+meta+shift+Z"], proto.redo, {
+ checker: textInputChecker
+ }], [["Backspace", "alt+Backspace", "ctrl+Backspace", "shift+Backspace", "mac+Backspace", "mac+alt+Backspace", "mac+ctrl+Backspace", "Delete", "ctrl+Delete", "shift+Delete", "mac+Delete"], proto.delete, {
+ checker: textInputChecker
+ }], [["Enter", "mac+Enter"], proto.addNewEditorFromKeyboard, {
+ checker: (self, {
+ target: el
+ }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled
+ }], [[" ", "mac+ "], proto.addNewEditorFromKeyboard, {
+ checker: self => self.#container.contains(document.activeElement)
+ }], [["Escape", "mac+Escape"], proto.unselectAll], [["ArrowLeft", "mac+ArrowLeft"], proto.translateSelectedEditors, {
+ args: [-small, 0],
+ checker: arrowChecker
+ }], [["ctrl+ArrowLeft", "mac+shift+ArrowLeft"], proto.translateSelectedEditors, {
+ args: [-big, 0],
+ checker: arrowChecker
+ }], [["ArrowRight", "mac+ArrowRight"], proto.translateSelectedEditors, {
+ args: [small, 0],
+ checker: arrowChecker
+ }], [["ctrl+ArrowRight", "mac+shift+ArrowRight"], proto.translateSelectedEditors, {
+ args: [big, 0],
+ checker: arrowChecker
+ }], [["ArrowUp", "mac+ArrowUp"], proto.translateSelectedEditors, {
+ args: [0, -small],
+ checker: arrowChecker
+ }], [["ctrl+ArrowUp", "mac+shift+ArrowUp"], proto.translateSelectedEditors, {
+ args: [0, -big],
+ checker: arrowChecker
+ }], [["ArrowDown", "mac+ArrowDown"], proto.translateSelectedEditors, {
+ args: [0, small],
+ checker: arrowChecker
+ }], [["ctrl+ArrowDown", "mac+shift+ArrowDown"], proto.translateSelectedEditors, {
+ args: [0, big],
+ checker: arrowChecker
+ }]]));
+ }
+ constructor(container, viewer, altTextManager, eventBus, pdfDocument, pageColors, highlightColors) {
+ this.#container = container;
+ this.#viewer = viewer;
+ this.#altTextManager = altTextManager;
+ this._eventBus = eventBus;
+ this._eventBus._on("editingaction", this.#boundOnEditingAction);
+ this._eventBus._on("pagechanging", this.#boundOnPageChanging);
+ this._eventBus._on("scalechanging", this.#boundOnScaleChanging);
+ this._eventBus._on("rotationchanging", this.#boundOnRotationChanging);
+ this.#annotationStorage = pdfDocument.annotationStorage;
+ this.#filterFactory = pdfDocument.filterFactory;
+ this.#pageColors = pageColors;
+ this.#highlightColors = highlightColors || null;
+ this.viewParameters = {
+ realScale: _display_utils_js__WEBPACK_IMPORTED_MODULE_1__.PixelsPerInch.PDF_TO_CSS_UNITS,
+ rotation: 0
+ };
+ }
+ destroy() {
+ this.#removeKeyboardManager();
+ this.#removeFocusManager();
+ this._eventBus._off("editingaction", this.#boundOnEditingAction);
+ this._eventBus._off("pagechanging", this.#boundOnPageChanging);
+ this._eventBus._off("scalechanging", this.#boundOnScaleChanging);
+ this._eventBus._off("rotationchanging", this.#boundOnRotationChanging);
+ for (const layer of this.#allLayers.values()) {
+ layer.destroy();
+ }
+ this.#allLayers.clear();
+ this.#allEditors.clear();
+ this.#editorsToRescale.clear();
+ this.#activeEditor = null;
+ this.#selectedEditors.clear();
+ this.#commandManager.destroy();
+ this.#altTextManager?.destroy();
+ if (this.#focusMainContainerTimeoutId) {
+ clearTimeout(this.#focusMainContainerTimeoutId);
+ this.#focusMainContainerTimeoutId = null;
+ }
+ if (this.#translationTimeoutId) {
+ clearTimeout(this.#translationTimeoutId);
+ this.#translationTimeoutId = null;
+ }
+ }
+ get hcmFilter() {
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "hcmFilter", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : "none");
+ }
+ get direction() {
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "direction", getComputedStyle(this.#container).direction);
+ }
+ get highlightColors() {
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "highlightColors", this.#highlightColors ? new Map(this.#highlightColors.split(",").map(pair => pair.split("=").map(x => x.trim()))) : null);
+ }
+ setMainHighlightColorPicker(colorPicker) {
+ this.#mainHighlightColorPicker = colorPicker;
+ }
+ editAltText(editor) {
+ this.#altTextManager?.editAltText(this, editor);
+ }
+ onPageChanging({
+ pageNumber
+ }) {
+ this.#currentPageIndex = pageNumber - 1;
+ }
+ focusMainContainer() {
+ this.#container.focus();
+ }
+ findParent(x, y) {
+ for (const layer of this.#allLayers.values()) {
+ const {
+ x: layerX,
+ y: layerY,
+ width,
+ height
+ } = layer.div.getBoundingClientRect();
+ if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {
+ return layer;
+ }
+ }
+ return null;
+ }
+ disableUserSelect(value = false) {
+ this.#viewer.classList.toggle("noUserSelect", value);
+ }
+ addShouldRescale(editor) {
+ this.#editorsToRescale.add(editor);
+ }
+ removeShouldRescale(editor) {
+ this.#editorsToRescale.delete(editor);
+ }
+ onScaleChanging({
+ scale
+ }) {
+ this.commitOrRemove();
+ this.viewParameters.realScale = scale * _display_utils_js__WEBPACK_IMPORTED_MODULE_1__.PixelsPerInch.PDF_TO_CSS_UNITS;
+ for (const editor of this.#editorsToRescale) {
+ editor.onScaleChanging();
+ }
+ }
+ onRotationChanging({
+ pagesRotation
+ }) {
+ this.commitOrRemove();
+ this.viewParameters.rotation = pagesRotation;
+ }
+ addToAnnotationStorage(editor) {
+ if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {
+ this.#annotationStorage.setValue(editor.id, editor);
+ }
+ }
+ #addFocusManager() {
+ window.addEventListener("focus", this.#boundFocus);
+ window.addEventListener("blur", this.#boundBlur);
+ }
+ #removeFocusManager() {
+ window.removeEventListener("focus", this.#boundFocus);
+ window.removeEventListener("blur", this.#boundBlur);
+ }
+ blur() {
+ if (!this.hasSelection) {
+ return;
+ }
+ const {
+ activeElement
+ } = document;
+ for (const editor of this.#selectedEditors) {
+ if (editor.div.contains(activeElement)) {
+ this.#lastActiveElement = [editor, activeElement];
+ editor._focusEventsAllowed = false;
+ break;
+ }
+ }
+ }
+ focus() {
+ if (!this.#lastActiveElement) {
+ return;
+ }
+ const [lastEditor, lastActiveElement] = this.#lastActiveElement;
+ this.#lastActiveElement = null;
+ lastActiveElement.addEventListener("focusin", () => {
+ lastEditor._focusEventsAllowed = true;
+ }, {
+ once: true
+ });
+ lastActiveElement.focus();
+ }
+ #addKeyboardManager() {
+ window.addEventListener("keydown", this.#boundKeydown);
+ }
+ #removeKeyboardManager() {
+ window.removeEventListener("keydown", this.#boundKeydown);
+ }
+ #addCopyPasteListeners() {
+ document.addEventListener("copy", this.#boundCopy);
+ document.addEventListener("cut", this.#boundCut);
+ document.addEventListener("paste", this.#boundPaste);
+ }
+ #removeCopyPasteListeners() {
+ document.removeEventListener("copy", this.#boundCopy);
+ document.removeEventListener("cut", this.#boundCut);
+ document.removeEventListener("paste", this.#boundPaste);
+ }
+ addEditListeners() {
+ this.#addKeyboardManager();
+ this.#addCopyPasteListeners();
+ }
+ removeEditListeners() {
+ this.#removeKeyboardManager();
+ this.#removeCopyPasteListeners();
+ }
+ copy(event) {
+ event.preventDefault();
+ this.#activeEditor?.commitOrRemove();
+ if (!this.hasSelection) {
+ return;
+ }
+ const editors = [];
+ for (const editor of this.#selectedEditors) {
+ const serialized = editor.serialize(true);
+ if (serialized) {
+ editors.push(serialized);
+ }
+ }
+ if (editors.length === 0) {
+ return;
+ }
+ event.clipboardData.setData("application/pdfjs", JSON.stringify(editors));
+ }
+ cut(event) {
+ this.copy(event);
+ this.delete();
+ }
+ paste(event) {
+ event.preventDefault();
+ const {
+ clipboardData
+ } = event;
+ for (const item of clipboardData.items) {
+ for (const editorType of this.#editorTypes) {
+ if (editorType.isHandlingMimeForPasting(item.type)) {
+ editorType.paste(item, this.currentLayer);
+ return;
+ }
+ }
+ }
+ let data = clipboardData.getData("application/pdfjs");
+ if (!data) {
+ return;
+ }
+ try {
+ data = JSON.parse(data);
+ } catch (ex) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`paste: "${ex.message}".`);
+ return;
+ }
+ if (!Array.isArray(data)) {
+ return;
+ }
+ this.unselectAll();
+ const layer = this.currentLayer;
+ try {
+ const newEditors = [];
+ for (const editor of data) {
+ const deserializedEditor = layer.deserialize(editor);
+ if (!deserializedEditor) {
+ return;
+ }
+ newEditors.push(deserializedEditor);
+ }
+ const cmd = () => {
+ for (const editor of newEditors) {
+ this.#addEditorToLayer(editor);
+ }
+ this.#selectEditors(newEditors);
+ };
+ const undo = () => {
+ for (const editor of newEditors) {
+ editor.remove();
+ }
+ };
+ this.addCommands({
+ cmd,
+ undo,
+ mustExec: true
+ });
+ } catch (ex) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`paste: "${ex.message}".`);
+ }
+ }
+ keydown(event) {
+ if (!this.isEditorHandlingKeyboard) {
+ AnnotationEditorUIManager._keyboardManager.exec(this, event);
+ }
+ }
+ onEditingAction(details) {
+ if (["undo", "redo", "delete", "selectAll"].includes(details.name)) {
+ this[details.name]();
+ }
+ }
+ #dispatchUpdateStates(details) {
+ const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);
+ if (hasChanged) {
+ this._eventBus.dispatch("annotationeditorstateschanged", {
+ source: this,
+ details: Object.assign(this.#previousStates, details)
+ });
+ }
+ }
+ #dispatchUpdateUI(details) {
+ this._eventBus.dispatch("annotationeditorparamschanged", {
+ source: this,
+ details
+ });
+ }
+ setEditingState(isEditing) {
+ if (isEditing) {
+ this.#addFocusManager();
+ this.#addKeyboardManager();
+ this.#addCopyPasteListeners();
+ this.#dispatchUpdateStates({
+ isEditing: this.#mode !== _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.NONE,
+ isEmpty: this.#isEmpty(),
+ hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),
+ hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),
+ hasSelectedEditor: false
+ });
+ } else {
+ this.#removeFocusManager();
+ this.#removeKeyboardManager();
+ this.#removeCopyPasteListeners();
+ this.#dispatchUpdateStates({
+ isEditing: false
+ });
+ this.disableUserSelect(false);
+ }
+ }
+ registerEditorTypes(types) {
+ if (this.#editorTypes) {
+ return;
+ }
+ this.#editorTypes = types;
+ for (const editorType of this.#editorTypes) {
+ this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);
+ }
+ }
+ getId() {
+ return this.#idManager.getId();
+ }
+ get currentLayer() {
+ return this.#allLayers.get(this.#currentPageIndex);
+ }
+ getLayer(pageIndex) {
+ return this.#allLayers.get(pageIndex);
+ }
+ get currentPageIndex() {
+ return this.#currentPageIndex;
+ }
+ addLayer(layer) {
+ this.#allLayers.set(layer.pageIndex, layer);
+ if (this.#isEnabled) {
+ layer.enable();
+ } else {
+ layer.disable();
+ }
+ }
+ removeLayer(layer) {
+ this.#allLayers.delete(layer.pageIndex);
+ }
+ updateMode(mode, editId = null, isFromKeyboard = false) {
+ if (this.#mode === mode) {
+ return;
+ }
+ this.#mode = mode;
+ if (mode === _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.NONE) {
+ this.setEditingState(false);
+ this.#disableAll();
+ return;
+ }
+ this.setEditingState(true);
+ this.#enableAll();
+ this.unselectAll();
+ for (const layer of this.#allLayers.values()) {
+ layer.updateMode(mode);
+ }
+ if (!editId && isFromKeyboard) {
+ this.addNewEditorFromKeyboard();
+ return;
+ }
+ if (!editId) {
+ return;
+ }
+ for (const editor of this.#allEditors.values()) {
+ if (editor.annotationElementId === editId) {
+ this.setSelected(editor);
+ editor.enterInEditMode();
+ break;
+ }
+ }
+ }
+ addNewEditorFromKeyboard() {
+ if (this.currentLayer.canCreateNewEmptyEditor()) {
+ this.currentLayer.addNewEditor();
+ }
+ }
+ updateToolbar(mode) {
+ if (mode === this.#mode) {
+ return;
+ }
+ this._eventBus.dispatch("switchannotationeditormode", {
+ source: this,
+ mode
+ });
+ }
+ updateParams(type, value) {
+ if (!this.#editorTypes) {
+ return;
+ }
+ switch (type) {
+ case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorParamsType.CREATE:
+ this.currentLayer.addNewEditor();
+ return;
+ case _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:
+ this.#mainHighlightColorPicker?.updateColor(value);
+ break;
+ }
+ for (const editor of this.#selectedEditors) {
+ editor.updateParams(type, value);
+ }
+ for (const editorType of this.#editorTypes) {
+ editorType.updateDefaultParams(type, value);
+ }
+ }
+ enableWaiting(mustWait = false) {
+ if (this.#isWaiting === mustWait) {
+ return;
+ }
+ this.#isWaiting = mustWait;
+ for (const layer of this.#allLayers.values()) {
+ if (mustWait) {
+ layer.disableClick();
+ } else {
+ layer.enableClick();
+ }
+ layer.div.classList.toggle("waiting", mustWait);
+ }
+ }
+ #enableAll() {
+ if (!this.#isEnabled) {
+ this.#isEnabled = true;
+ for (const layer of this.#allLayers.values()) {
+ layer.enable();
+ }
+ }
+ }
+ #disableAll() {
+ this.unselectAll();
+ if (this.#isEnabled) {
+ this.#isEnabled = false;
+ for (const layer of this.#allLayers.values()) {
+ layer.disable();
+ }
+ }
+ }
+ getEditors(pageIndex) {
+ const editors = [];
+ for (const editor of this.#allEditors.values()) {
+ if (editor.pageIndex === pageIndex) {
+ editors.push(editor);
+ }
+ }
+ return editors;
+ }
+ getEditor(id) {
+ return this.#allEditors.get(id);
+ }
+ addEditor(editor) {
+ this.#allEditors.set(editor.id, editor);
+ }
+ removeEditor(editor) {
+ if (editor.div.contains(document.activeElement)) {
+ if (this.#focusMainContainerTimeoutId) {
+ clearTimeout(this.#focusMainContainerTimeoutId);
+ }
+ this.#focusMainContainerTimeoutId = setTimeout(() => {
+ this.focusMainContainer();
+ this.#focusMainContainerTimeoutId = null;
+ }, 0);
+ }
+ this.#allEditors.delete(editor.id);
+ this.unselect(editor);
+ if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {
+ this.#annotationStorage?.remove(editor.id);
+ }
+ }
+ addDeletedAnnotationElement(editor) {
+ this.#deletedAnnotationsElementIds.add(editor.annotationElementId);
+ editor.deleted = true;
+ }
+ isDeletedAnnotationElement(annotationElementId) {
+ return this.#deletedAnnotationsElementIds.has(annotationElementId);
+ }
+ removeDeletedAnnotationElement(editor) {
+ this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);
+ editor.deleted = false;
+ }
+ #addEditorToLayer(editor) {
+ const layer = this.#allLayers.get(editor.pageIndex);
+ if (layer) {
+ layer.addOrRebuild(editor);
+ } else {
+ this.addEditor(editor);
+ }
+ }
+ setActiveEditor(editor) {
+ if (this.#activeEditor === editor) {
+ return;
+ }
+ this.#activeEditor = editor;
+ if (editor) {
+ this.#dispatchUpdateUI(editor.propertiesToUpdate);
+ }
+ }
+ toggleSelected(editor) {
+ if (this.#selectedEditors.has(editor)) {
+ this.#selectedEditors.delete(editor);
+ editor.unselect();
+ this.#dispatchUpdateStates({
+ hasSelectedEditor: this.hasSelection
+ });
+ return;
+ }
+ this.#selectedEditors.add(editor);
+ editor.select();
+ this.#dispatchUpdateUI(editor.propertiesToUpdate);
+ this.#dispatchUpdateStates({
+ hasSelectedEditor: true
+ });
+ }
+ setSelected(editor) {
+ for (const ed of this.#selectedEditors) {
+ if (ed !== editor) {
+ ed.unselect();
+ }
+ }
+ this.#selectedEditors.clear();
+ this.#selectedEditors.add(editor);
+ editor.select();
+ this.#dispatchUpdateUI(editor.propertiesToUpdate);
+ this.#dispatchUpdateStates({
+ hasSelectedEditor: true
+ });
+ }
+ isSelected(editor) {
+ return this.#selectedEditors.has(editor);
+ }
+ get firstSelectedEditor() {
+ return this.#selectedEditors.values().next().value;
+ }
+ unselect(editor) {
+ editor.unselect();
+ this.#selectedEditors.delete(editor);
+ this.#dispatchUpdateStates({
+ hasSelectedEditor: this.hasSelection
+ });
+ }
+ get hasSelection() {
+ return this.#selectedEditors.size !== 0;
+ }
+ get isEnterHandled() {
+ return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;
+ }
+ undo() {
+ this.#commandManager.undo();
+ this.#dispatchUpdateStates({
+ hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),
+ hasSomethingToRedo: true,
+ isEmpty: this.#isEmpty()
+ });
+ }
+ redo() {
+ this.#commandManager.redo();
+ this.#dispatchUpdateStates({
+ hasSomethingToUndo: true,
+ hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),
+ isEmpty: this.#isEmpty()
+ });
+ }
+ addCommands(params) {
+ this.#commandManager.add(params);
+ this.#dispatchUpdateStates({
+ hasSomethingToUndo: true,
+ hasSomethingToRedo: false,
+ isEmpty: this.#isEmpty()
+ });
+ }
+ #isEmpty() {
+ if (this.#allEditors.size === 0) {
+ return true;
+ }
+ if (this.#allEditors.size === 1) {
+ for (const editor of this.#allEditors.values()) {
+ return editor.isEmpty();
+ }
+ }
+ return false;
+ }
+ delete() {
+ this.commitOrRemove();
+ if (!this.hasSelection) {
+ return;
+ }
+ const editors = [...this.#selectedEditors];
+ const cmd = () => {
+ for (const editor of editors) {
+ editor.remove();
+ }
+ };
+ const undo = () => {
+ for (const editor of editors) {
+ this.#addEditorToLayer(editor);
+ }
+ };
+ this.addCommands({
+ cmd,
+ undo,
+ mustExec: true
+ });
+ }
+ commitOrRemove() {
+ this.#activeEditor?.commitOrRemove();
+ }
+ hasSomethingToControl() {
+ return this.#activeEditor || this.hasSelection;
+ }
+ #selectEditors(editors) {
+ this.#selectedEditors.clear();
+ for (const editor of editors) {
+ if (editor.isEmpty()) {
+ continue;
+ }
+ this.#selectedEditors.add(editor);
+ editor.select();
+ }
+ this.#dispatchUpdateStates({
+ hasSelectedEditor: true
+ });
+ }
+ selectAll() {
+ for (const editor of this.#selectedEditors) {
+ editor.commit();
+ }
+ this.#selectEditors(this.#allEditors.values());
+ }
+ unselectAll() {
+ if (this.#activeEditor) {
+ this.#activeEditor.commitOrRemove();
+ if (this.#mode !== _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType.NONE) {
+ return;
+ }
+ }
+ if (!this.hasSelection) {
+ return;
+ }
+ for (const editor of this.#selectedEditors) {
+ editor.unselect();
+ }
+ this.#selectedEditors.clear();
+ this.#dispatchUpdateStates({
+ hasSelectedEditor: false
+ });
+ }
+ translateSelectedEditors(x, y, noCommit = false) {
+ if (!noCommit) {
+ this.commitOrRemove();
+ }
+ if (!this.hasSelection) {
+ return;
+ }
+ this.#translation[0] += x;
+ this.#translation[1] += y;
+ const [totalX, totalY] = this.#translation;
+ const editors = [...this.#selectedEditors];
+ const TIME_TO_WAIT = 1000;
+ if (this.#translationTimeoutId) {
+ clearTimeout(this.#translationTimeoutId);
+ }
+ this.#translationTimeoutId = setTimeout(() => {
+ this.#translationTimeoutId = null;
+ this.#translation[0] = this.#translation[1] = 0;
+ this.addCommands({
+ cmd: () => {
+ for (const editor of editors) {
+ if (this.#allEditors.has(editor.id)) {
+ editor.translateInPage(totalX, totalY);
+ }
+ }
+ },
+ undo: () => {
+ for (const editor of editors) {
+ if (this.#allEditors.has(editor.id)) {
+ editor.translateInPage(-totalX, -totalY);
+ }
+ }
+ },
+ mustExec: false
+ });
+ }, TIME_TO_WAIT);
+ for (const editor of editors) {
+ editor.translateInPage(x, y);
+ }
+ }
+ setUpDragSession() {
+ if (!this.hasSelection) {
+ return;
+ }
+ this.disableUserSelect(true);
+ this.#draggingEditors = new Map();
+ for (const editor of this.#selectedEditors) {
+ this.#draggingEditors.set(editor, {
+ savedX: editor.x,
+ savedY: editor.y,
+ savedPageIndex: editor.pageIndex,
+ newX: 0,
+ newY: 0,
+ newPageIndex: -1
+ });
+ }
+ }
+ endDragSession() {
+ if (!this.#draggingEditors) {
+ return false;
+ }
+ this.disableUserSelect(false);
+ const map = this.#draggingEditors;
+ this.#draggingEditors = null;
+ let mustBeAddedInUndoStack = false;
+ for (const [{
+ x,
+ y,
+ pageIndex
+ }, value] of map) {
+ value.newX = x;
+ value.newY = y;
+ value.newPageIndex = pageIndex;
+ mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;
+ }
+ if (!mustBeAddedInUndoStack) {
+ return false;
+ }
+ const move = (editor, x, y, pageIndex) => {
+ if (this.#allEditors.has(editor.id)) {
+ const parent = this.#allLayers.get(pageIndex);
+ if (parent) {
+ editor._setParentAndPosition(parent, x, y);
+ } else {
+ editor.pageIndex = pageIndex;
+ editor.x = x;
+ editor.y = y;
+ }
+ }
+ };
+ this.addCommands({
+ cmd: () => {
+ for (const [editor, {
+ newX,
+ newY,
+ newPageIndex
+ }] of map) {
+ move(editor, newX, newY, newPageIndex);
+ }
+ },
+ undo: () => {
+ for (const [editor, {
+ savedX,
+ savedY,
+ savedPageIndex
+ }] of map) {
+ move(editor, savedX, savedY, savedPageIndex);
+ }
+ },
+ mustExec: true
+ });
+ return true;
+ }
+ dragSelectedEditors(tx, ty) {
+ if (!this.#draggingEditors) {
+ return;
+ }
+ for (const editor of this.#draggingEditors.keys()) {
+ editor.drag(tx, ty);
+ }
+ }
+ rebuild(editor) {
+ if (editor.parent === null) {
+ const parent = this.getLayer(editor.pageIndex);
+ if (parent) {
+ parent.changeParent(editor);
+ parent.addOrRebuild(editor);
+ } else {
+ this.addEditor(editor);
+ this.addToAnnotationStorage(editor);
+ editor.rebuild();
+ }
+ } else {
+ editor.parent.addOrRebuild(editor);
+ }
+ }
+ get isEditorHandlingKeyboard() {
+ return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();
+ }
+ isActive(editor) {
+ return this.#activeEditor === editor;
+ }
+ getActive() {
+ return this.#activeEditor;
+ }
+ getMode() {
+ return this.#mode;
+ }
+ get imageManager() {
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "imageManager", new ImageManager());
+ }
+}
+
+
+/***/ }),
+
+/***/ 171:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ PDFFetchStream: () => (/* binding */ PDFFetchStream)
+/* harmony export */ });
+/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266);
+/* harmony import */ var _network_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(253);
+
+
+;
+function createFetchOptions(headers, withCredentials, abortController) {
+ return {
+ method: "GET",
+ headers,
+ signal: abortController.signal,
+ mode: "cors",
+ credentials: withCredentials ? "include" : "same-origin",
+ redirect: "follow"
+ };
+}
+function createHeaders(httpHeaders) {
+ const headers = new Headers();
+ for (const property in httpHeaders) {
+ const value = httpHeaders[property];
+ if (value === undefined) {
+ continue;
+ }
+ headers.append(property, value);
+ }
+ return headers;
+}
+function getArrayBuffer(val) {
+ if (val instanceof Uint8Array) {
+ return val.buffer;
+ }
+ if (val instanceof ArrayBuffer) {
+ return val;
+ }
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`getArrayBuffer - unexpected data format: ${val}`);
+ return new Uint8Array(val).buffer;
+}
+class PDFFetchStream {
+ constructor(source) {
+ this.source = source;
+ this.isHttp = /^https?:/i.test(source.url);
+ this.httpHeaders = this.isHttp && source.httpHeaders || {};
+ this._fullRequestReader = null;
+ this._rangeRequestReaders = [];
+ }
+ get _progressiveDataLength() {
+ return this._fullRequestReader?._loaded ?? 0;
+ }
+ getFullReader() {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(!this._fullRequestReader, "PDFFetchStream.getFullReader can only be called once.");
+ this._fullRequestReader = new PDFFetchStreamReader(this);
+ return this._fullRequestReader;
+ }
+ getRangeReader(begin, end) {
+ if (end <= this._progressiveDataLength) {
+ return null;
+ }
+ const reader = new PDFFetchStreamRangeReader(this, begin, end);
+ this._rangeRequestReaders.push(reader);
+ return reader;
+ }
+ cancelAllRequests(reason) {
+ this._fullRequestReader?.cancel(reason);
+ for (const reader of this._rangeRequestReaders.slice(0)) {
+ reader.cancel(reason);
+ }
+ }
+}
+class PDFFetchStreamReader {
+ constructor(stream) {
+ this._stream = stream;
+ this._reader = null;
+ this._loaded = 0;
+ this._filename = null;
+ const source = stream.source;
+ this._withCredentials = source.withCredentials || false;
+ this._contentLength = source.length;
+ this._headersCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this._disableRange = source.disableRange || false;
+ this._rangeChunkSize = source.rangeChunkSize;
+ if (!this._rangeChunkSize && !this._disableRange) {
+ this._disableRange = true;
+ }
+ this._abortController = new AbortController();
+ this._isStreamingSupported = !source.disableStream;
+ this._isRangeSupported = !source.disableRange;
+ this._headers = createHeaders(this._stream.httpHeaders);
+ const url = source.url;
+ fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {
+ if (!(0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.validateResponseStatus)(response.status)) {
+ throw (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.createResponseStatusError)(response.status, url);
+ }
+ this._reader = response.body.getReader();
+ this._headersCapability.resolve();
+ const getResponseHeader = name => {
+ return response.headers.get(name);
+ };
+ const {
+ allowRangeRequests,
+ suggestedLength
+ } = (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.validateRangeRequestCapabilities)({
+ getResponseHeader,
+ isHttp: this._stream.isHttp,
+ rangeChunkSize: this._rangeChunkSize,
+ disableRange: this._disableRange
+ });
+ this._isRangeSupported = allowRangeRequests;
+ this._contentLength = suggestedLength || this._contentLength;
+ this._filename = (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.extractFilenameFromHeader)(getResponseHeader);
+ if (!this._isStreamingSupported && this._isRangeSupported) {
+ this.cancel(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException("Streaming is disabled."));
+ }
+ }).catch(this._headersCapability.reject);
+ this.onProgress = null;
+ }
+ get headersReady() {
+ return this._headersCapability.promise;
+ }
+ get filename() {
+ return this._filename;
+ }
+ get contentLength() {
+ return this._contentLength;
+ }
+ get isRangeSupported() {
+ return this._isRangeSupported;
+ }
+ get isStreamingSupported() {
+ return this._isStreamingSupported;
+ }
+ async read() {
+ await this._headersCapability.promise;
+ const {
+ value,
+ done
+ } = await this._reader.read();
+ if (done) {
+ return {
+ value,
+ done
+ };
+ }
+ this._loaded += value.byteLength;
+ this.onProgress?.({
+ loaded: this._loaded,
+ total: this._contentLength
+ });
+ return {
+ value: getArrayBuffer(value),
+ done: false
+ };
+ }
+ cancel(reason) {
+ this._reader?.cancel(reason);
+ this._abortController.abort();
+ }
+}
+class PDFFetchStreamRangeReader {
+ constructor(stream, begin, end) {
+ this._stream = stream;
+ this._reader = null;
+ this._loaded = 0;
+ const source = stream.source;
+ this._withCredentials = source.withCredentials || false;
+ this._readCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this._isStreamingSupported = !source.disableStream;
+ this._abortController = new AbortController();
+ this._headers = createHeaders(this._stream.httpHeaders);
+ this._headers.append("Range", `bytes=${begin}-${end - 1}`);
+ const url = source.url;
+ fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {
+ if (!(0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.validateResponseStatus)(response.status)) {
+ throw (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.createResponseStatusError)(response.status, url);
+ }
+ this._readCapability.resolve();
+ this._reader = response.body.getReader();
+ }).catch(this._readCapability.reject);
+ this.onProgress = null;
+ }
+ get isStreamingSupported() {
+ return this._isStreamingSupported;
+ }
+ async read() {
+ await this._readCapability.promise;
+ const {
+ value,
+ done
+ } = await this._reader.read();
+ if (done) {
+ return {
+ value,
+ done
+ };
+ }
+ this._loaded += value.byteLength;
+ this.onProgress?.({
+ loaded: this._loaded
+ });
+ return {
+ value: getArrayBuffer(value),
+ done: false
+ };
+ }
+ cancel(reason) {
+ this._reader?.cancel(reason);
+ this._abortController.abort();
+ }
+}
+
+
+/***/ }),
+
+/***/ 742:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ FontFaceObject: () => (/* binding */ FontFaceObject),
+/* harmony export */ FontLoader: () => (/* binding */ FontLoader)
+/* harmony export */ });
+/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266);
+
+class FontLoader {
+ #systemFonts = new Set();
+ constructor({
+ ownerDocument = globalThis.document,
+ styleElement = null
+ }) {
+ this._document = ownerDocument;
+ this.nativeFontFaces = new Set();
+ this.styleElement = null;
+ this.loadingRequests = [];
+ this.loadTestFontId = 0;
+ }
+ addNativeFontFace(nativeFontFace) {
+ this.nativeFontFaces.add(nativeFontFace);
+ this._document.fonts.add(nativeFontFace);
+ }
+ removeNativeFontFace(nativeFontFace) {
+ this.nativeFontFaces.delete(nativeFontFace);
+ this._document.fonts.delete(nativeFontFace);
+ }
+ insertRule(rule) {
+ if (!this.styleElement) {
+ this.styleElement = this._document.createElement("style");
+ this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement);
+ }
+ const styleSheet = this.styleElement.sheet;
+ styleSheet.insertRule(rule, styleSheet.cssRules.length);
+ }
+ clear() {
+ for (const nativeFontFace of this.nativeFontFaces) {
+ this._document.fonts.delete(nativeFontFace);
+ }
+ this.nativeFontFaces.clear();
+ this.#systemFonts.clear();
+ if (this.styleElement) {
+ this.styleElement.remove();
+ this.styleElement = null;
+ }
+ }
+ async loadSystemFont({
+ systemFontInfo: info,
+ _inspectFont
+ }) {
+ if (!info || this.#systemFonts.has(info.loadedName)) {
+ return;
+ }
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(!this.disableFontFace, "loadSystemFont shouldn't be called when `disableFontFace` is set.");
+ if (this.isFontLoadingAPISupported) {
+ const {
+ loadedName,
+ src,
+ style
+ } = info;
+ const fontFace = new FontFace(loadedName, src, style);
+ this.addNativeFontFace(fontFace);
+ try {
+ await fontFace.load();
+ this.#systemFonts.add(loadedName);
+ _inspectFont?.(info);
+ } catch {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);
+ this.removeNativeFontFace(fontFace);
+ }
+ return;
+ }
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Not implemented: loadSystemFont without the Font Loading API.");
+ }
+ async bind(font) {
+ if (font.attached || font.missingFile && !font.systemFontInfo) {
+ return;
+ }
+ font.attached = true;
+ if (font.systemFontInfo) {
+ await this.loadSystemFont(font);
+ return;
+ }
+ if (this.isFontLoadingAPISupported) {
+ const nativeFontFace = font.createNativeFontFace();
+ if (nativeFontFace) {
+ this.addNativeFontFace(nativeFontFace);
+ try {
+ await nativeFontFace.loaded;
+ } catch (ex) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);
+ font.disableFontFace = true;
+ throw ex;
+ }
+ }
+ return;
+ }
+ const rule = font.createFontFaceRule();
+ if (rule) {
+ this.insertRule(rule);
+ if (this.isSyncFontLoadingSupported) {
+ return;
+ }
+ await new Promise(resolve => {
+ const request = this._queueLoadingCallback(resolve);
+ this._prepareFontLoadEvent(font, request);
+ });
+ }
+ }
+ get isFontLoadingAPISupported() {
+ const hasFonts = !!this._document?.fonts;
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "isFontLoadingAPISupported", hasFonts);
+ }
+ get isSyncFontLoadingSupported() {
+ let supported = false;
+ if (_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS) {
+ supported = true;
+ } else if (typeof navigator !== "undefined" && typeof navigator?.userAgent === "string" && /Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent)) {
+ supported = true;
+ }
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "isSyncFontLoadingSupported", supported);
+ }
+ _queueLoadingCallback(callback) {
+ function completeRequest() {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(!request.done, "completeRequest() cannot be called twice.");
+ request.done = true;
+ while (loadingRequests.length > 0 && loadingRequests[0].done) {
+ const otherRequest = loadingRequests.shift();
+ setTimeout(otherRequest.callback, 0);
+ }
+ }
+ const {
+ loadingRequests
+ } = this;
+ const request = {
+ done: false,
+ complete: completeRequest,
+ callback
+ };
+ loadingRequests.push(request);
+ return request;
+ }
+ get _loadTestFont() {
+ 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==");
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow)(this, "_loadTestFont", testFont);
+ }
+ _prepareFontLoadEvent(font, request) {
+ function int32(data, offset) {
+ return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;
+ }
+ function spliceString(s, offset, remove, insert) {
+ const chunk1 = s.substring(0, offset);
+ const chunk2 = s.substring(offset + remove);
+ return chunk1 + insert + chunk2;
+ }
+ let i, ii;
+ const canvas = this._document.createElement("canvas");
+ canvas.width = 1;
+ canvas.height = 1;
+ const ctx = canvas.getContext("2d");
+ let called = 0;
+ function isFontReady(name, callback) {
+ if (++called > 30) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)("Load test font never loaded.");
+ callback();
+ return;
+ }
+ ctx.font = "30px " + name;
+ ctx.fillText(".", 0, 20);
+ const imageData = ctx.getImageData(0, 0, 1, 1);
+ if (imageData.data[3] > 0) {
+ callback();
+ return;
+ }
+ setTimeout(isFontReady.bind(null, name, callback));
+ }
+ const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;
+ let data = this._loadTestFont;
+ const COMMENT_OFFSET = 976;
+ data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);
+ const CFF_CHECKSUM_OFFSET = 16;
+ const XXXX_VALUE = 0x58585858;
+ let checksum = int32(data, CFF_CHECKSUM_OFFSET);
+ for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {
+ checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;
+ }
+ if (i < loadTestFontId.length) {
+ checksum = checksum - XXXX_VALUE + int32(loadTestFontId + "XXX", i) | 0;
+ }
+ data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.string32)(checksum));
+ const url = `url(data:font/opentype;base64,${btoa(data)});`;
+ const rule = `@font-face {font-family:"${loadTestFontId}";src:${url}}`;
+ this.insertRule(rule);
+ const div = this._document.createElement("div");
+ div.style.visibility = "hidden";
+ div.style.width = div.style.height = "10px";
+ div.style.position = "absolute";
+ div.style.top = div.style.left = "0px";
+ for (const name of [font.loadedName, loadTestFontId]) {
+ const span = this._document.createElement("span");
+ span.textContent = "Hi";
+ span.style.fontFamily = name;
+ div.append(span);
+ }
+ this._document.body.append(div);
+ isFontReady(loadTestFontId, () => {
+ div.remove();
+ request.complete();
+ });
+ }
+}
+class FontFaceObject {
+ constructor(translatedData, {
+ isEvalSupported = true,
+ disableFontFace = false,
+ ignoreErrors = false,
+ inspectFont = null
+ }) {
+ this.compiledGlyphs = Object.create(null);
+ for (const i in translatedData) {
+ this[i] = translatedData[i];
+ }
+ this.isEvalSupported = isEvalSupported !== false;
+ this.disableFontFace = disableFontFace === true;
+ this.ignoreErrors = ignoreErrors === true;
+ this._inspectFont = inspectFont;
+ }
+ createNativeFontFace() {
+ if (!this.data || this.disableFontFace) {
+ return null;
+ }
+ let nativeFontFace;
+ if (!this.cssFontInfo) {
+ nativeFontFace = new FontFace(this.loadedName, this.data, {});
+ } else {
+ const css = {
+ weight: this.cssFontInfo.fontWeight
+ };
+ if (this.cssFontInfo.italicAngle) {
+ css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;
+ }
+ nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);
+ }
+ this._inspectFont?.(this);
+ return nativeFontFace;
+ }
+ createFontFaceRule() {
+ if (!this.data || this.disableFontFace) {
+ return null;
+ }
+ const data = (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.bytesToString)(this.data);
+ const url = `url(data:${this.mimetype};base64,${btoa(data)});`;
+ let rule;
+ if (!this.cssFontInfo) {
+ rule = `@font-face {font-family:"${this.loadedName}";src:${url}}`;
+ } else {
+ let css = `font-weight: ${this.cssFontInfo.fontWeight};`;
+ if (this.cssFontInfo.italicAngle) {
+ css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;
+ }
+ rule = `@font-face {font-family:"${this.cssFontInfo.fontFamily}";${css}src:${url}}`;
+ }
+ this._inspectFont?.(this, url);
+ return rule;
+ }
+ getPathGenerator(objs, character) {
+ if (this.compiledGlyphs[character] !== undefined) {
+ return this.compiledGlyphs[character];
+ }
+ let cmds;
+ try {
+ cmds = objs.get(this.loadedName + "_path_" + character);
+ } catch (ex) {
+ if (!this.ignoreErrors) {
+ throw ex;
+ }
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`getPathGenerator - ignoring character: "${ex}".`);
+ return this.compiledGlyphs[character] = function (c, size) {};
+ }
+ if (this.isEvalSupported && _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.FeatureTest.isEvalSupported) {
+ const jsBuf = [];
+ for (const current of cmds) {
+ const args = current.args !== undefined ? current.args.join(",") : "";
+ jsBuf.push("c.", current.cmd, "(", args, ");\n");
+ }
+ return this.compiledGlyphs[character] = new Function("c", "size", jsBuf.join(""));
+ }
+ return this.compiledGlyphs[character] = function (c, size) {
+ for (const current of cmds) {
+ if (current.cmd === "scale") {
+ current.args = [size, -size];
+ }
+ c[current.cmd].apply(c, current.args);
+ }
+ };
+ }
+}
+
+
+/***/ }),
+
+/***/ 472:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ Metadata: () => (/* binding */ Metadata)
+/* harmony export */ });
+/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266);
+
+class Metadata {
+ #metadataMap;
+ #data;
+ constructor({
+ parsedData,
+ rawData
+ }) {
+ this.#metadataMap = parsedData;
+ this.#data = rawData;
+ }
+ getRaw() {
+ return this.#data;
+ }
+ get(name) {
+ return this.#metadataMap.get(name) ?? null;
+ }
+ getAll() {
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.objectFromMap)(this.#metadataMap);
+ }
+ has(name) {
+ return this.#metadataMap.has(name);
+ }
+}
+
+
+/***/ }),
+
+/***/ 474:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ PDFNetworkStream: () => (/* binding */ PDFNetworkStream)
+/* harmony export */ });
+/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266);
+/* harmony import */ var _network_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(253);
+
+
+;
+const OK_RESPONSE = 200;
+const PARTIAL_CONTENT_RESPONSE = 206;
+function getArrayBuffer(xhr) {
+ const data = xhr.response;
+ if (typeof data !== "string") {
+ return data;
+ }
+ return (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.stringToBytes)(data).buffer;
+}
+class NetworkManager {
+ constructor(url, args = {}) {
+ this.url = url;
+ this.isHttp = /^https?:/i.test(url);
+ this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null);
+ this.withCredentials = args.withCredentials || false;
+ this.currXhrId = 0;
+ this.pendingRequests = Object.create(null);
+ }
+ requestRange(begin, end, listeners) {
+ const args = {
+ begin,
+ end
+ };
+ for (const prop in listeners) {
+ args[prop] = listeners[prop];
+ }
+ return this.request(args);
+ }
+ requestFull(listeners) {
+ return this.request(listeners);
+ }
+ request(args) {
+ const xhr = new XMLHttpRequest();
+ const xhrId = this.currXhrId++;
+ const pendingRequest = this.pendingRequests[xhrId] = {
+ xhr
+ };
+ xhr.open("GET", this.url);
+ xhr.withCredentials = this.withCredentials;
+ for (const property in this.httpHeaders) {
+ const value = this.httpHeaders[property];
+ if (value === undefined) {
+ continue;
+ }
+ xhr.setRequestHeader(property, value);
+ }
+ if (this.isHttp && "begin" in args && "end" in args) {
+ xhr.setRequestHeader("Range", `bytes=${args.begin}-${args.end - 1}`);
+ pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;
+ } else {
+ pendingRequest.expectedStatus = OK_RESPONSE;
+ }
+ xhr.responseType = "arraybuffer";
+ if (args.onError) {
+ xhr.onerror = function (evt) {
+ args.onError(xhr.status);
+ };
+ }
+ xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);
+ xhr.onprogress = this.onProgress.bind(this, xhrId);
+ pendingRequest.onHeadersReceived = args.onHeadersReceived;
+ pendingRequest.onDone = args.onDone;
+ pendingRequest.onError = args.onError;
+ pendingRequest.onProgress = args.onProgress;
+ xhr.send(null);
+ return xhrId;
+ }
+ onProgress(xhrId, evt) {
+ const pendingRequest = this.pendingRequests[xhrId];
+ if (!pendingRequest) {
+ return;
+ }
+ pendingRequest.onProgress?.(evt);
+ }
+ onStateChange(xhrId, evt) {
+ const pendingRequest = this.pendingRequests[xhrId];
+ if (!pendingRequest) {
+ return;
+ }
+ const xhr = pendingRequest.xhr;
+ if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {
+ pendingRequest.onHeadersReceived();
+ delete pendingRequest.onHeadersReceived;
+ }
+ if (xhr.readyState !== 4) {
+ return;
+ }
+ if (!(xhrId in this.pendingRequests)) {
+ return;
+ }
+ delete this.pendingRequests[xhrId];
+ if (xhr.status === 0 && this.isHttp) {
+ pendingRequest.onError?.(xhr.status);
+ return;
+ }
+ const xhrStatus = xhr.status || OK_RESPONSE;
+ const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;
+ if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {
+ pendingRequest.onError?.(xhr.status);
+ return;
+ }
+ const chunk = getArrayBuffer(xhr);
+ if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {
+ const rangeHeader = xhr.getResponseHeader("Content-Range");
+ const matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader);
+ pendingRequest.onDone({
+ begin: parseInt(matches[1], 10),
+ chunk
+ });
+ } else if (chunk) {
+ pendingRequest.onDone({
+ begin: 0,
+ chunk
+ });
+ } else {
+ pendingRequest.onError?.(xhr.status);
+ }
+ }
+ getRequestXhr(xhrId) {
+ return this.pendingRequests[xhrId].xhr;
+ }
+ isPendingRequest(xhrId) {
+ return xhrId in this.pendingRequests;
+ }
+ abortRequest(xhrId) {
+ const xhr = this.pendingRequests[xhrId].xhr;
+ delete this.pendingRequests[xhrId];
+ xhr.abort();
+ }
+}
+class PDFNetworkStream {
+ constructor(source) {
+ this._source = source;
+ this._manager = new NetworkManager(source.url, {
+ httpHeaders: source.httpHeaders,
+ withCredentials: source.withCredentials
+ });
+ this._rangeChunkSize = source.rangeChunkSize;
+ this._fullRequestReader = null;
+ this._rangeRequestReaders = [];
+ }
+ _onRangeRequestReaderClosed(reader) {
+ const i = this._rangeRequestReaders.indexOf(reader);
+ if (i >= 0) {
+ this._rangeRequestReaders.splice(i, 1);
+ }
+ }
+ getFullReader() {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(!this._fullRequestReader, "PDFNetworkStream.getFullReader can only be called once.");
+ this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);
+ return this._fullRequestReader;
+ }
+ getRangeReader(begin, end) {
+ const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);
+ reader.onClosed = this._onRangeRequestReaderClosed.bind(this);
+ this._rangeRequestReaders.push(reader);
+ return reader;
+ }
+ cancelAllRequests(reason) {
+ this._fullRequestReader?.cancel(reason);
+ for (const reader of this._rangeRequestReaders.slice(0)) {
+ reader.cancel(reason);
+ }
+ }
+}
+class PDFNetworkStreamFullRequestReader {
+ constructor(manager, source) {
+ this._manager = manager;
+ const args = {
+ onHeadersReceived: this._onHeadersReceived.bind(this),
+ onDone: this._onDone.bind(this),
+ onError: this._onError.bind(this),
+ onProgress: this._onProgress.bind(this)
+ };
+ this._url = source.url;
+ this._fullRequestId = manager.requestFull(args);
+ this._headersReceivedCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this._disableRange = source.disableRange || false;
+ this._contentLength = source.length;
+ this._rangeChunkSize = source.rangeChunkSize;
+ if (!this._rangeChunkSize && !this._disableRange) {
+ this._disableRange = true;
+ }
+ this._isStreamingSupported = false;
+ this._isRangeSupported = false;
+ this._cachedChunks = [];
+ this._requests = [];
+ this._done = false;
+ this._storedError = undefined;
+ this._filename = null;
+ this.onProgress = null;
+ }
+ _onHeadersReceived() {
+ const fullRequestXhrId = this._fullRequestId;
+ const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);
+ const getResponseHeader = name => {
+ return fullRequestXhr.getResponseHeader(name);
+ };
+ const {
+ allowRangeRequests,
+ suggestedLength
+ } = (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.validateRangeRequestCapabilities)({
+ getResponseHeader,
+ isHttp: this._manager.isHttp,
+ rangeChunkSize: this._rangeChunkSize,
+ disableRange: this._disableRange
+ });
+ if (allowRangeRequests) {
+ this._isRangeSupported = true;
+ }
+ this._contentLength = suggestedLength || this._contentLength;
+ this._filename = (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.extractFilenameFromHeader)(getResponseHeader);
+ if (this._isRangeSupported) {
+ this._manager.abortRequest(fullRequestXhrId);
+ }
+ this._headersReceivedCapability.resolve();
+ }
+ _onDone(data) {
+ if (data) {
+ if (this._requests.length > 0) {
+ const requestCapability = this._requests.shift();
+ requestCapability.resolve({
+ value: data.chunk,
+ done: false
+ });
+ } else {
+ this._cachedChunks.push(data.chunk);
+ }
+ }
+ this._done = true;
+ if (this._cachedChunks.length > 0) {
+ return;
+ }
+ for (const requestCapability of this._requests) {
+ requestCapability.resolve({
+ value: undefined,
+ done: true
+ });
+ }
+ this._requests.length = 0;
+ }
+ _onError(status) {
+ this._storedError = (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.createResponseStatusError)(status, this._url);
+ this._headersReceivedCapability.reject(this._storedError);
+ for (const requestCapability of this._requests) {
+ requestCapability.reject(this._storedError);
+ }
+ this._requests.length = 0;
+ this._cachedChunks.length = 0;
+ }
+ _onProgress(evt) {
+ this.onProgress?.({
+ loaded: evt.loaded,
+ total: evt.lengthComputable ? evt.total : this._contentLength
+ });
+ }
+ get filename() {
+ return this._filename;
+ }
+ get isRangeSupported() {
+ return this._isRangeSupported;
+ }
+ get isStreamingSupported() {
+ return this._isStreamingSupported;
+ }
+ get contentLength() {
+ return this._contentLength;
+ }
+ get headersReady() {
+ return this._headersReceivedCapability.promise;
+ }
+ async read() {
+ if (this._storedError) {
+ throw this._storedError;
+ }
+ if (this._cachedChunks.length > 0) {
+ const chunk = this._cachedChunks.shift();
+ return {
+ value: chunk,
+ done: false
+ };
+ }
+ if (this._done) {
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+ const requestCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this._requests.push(requestCapability);
+ return requestCapability.promise;
+ }
+ cancel(reason) {
+ this._done = true;
+ this._headersReceivedCapability.reject(reason);
+ for (const requestCapability of this._requests) {
+ requestCapability.resolve({
+ value: undefined,
+ done: true
+ });
+ }
+ this._requests.length = 0;
+ if (this._manager.isPendingRequest(this._fullRequestId)) {
+ this._manager.abortRequest(this._fullRequestId);
+ }
+ this._fullRequestReader = null;
+ }
+}
+class PDFNetworkStreamRangeRequestReader {
+ constructor(manager, begin, end) {
+ this._manager = manager;
+ const args = {
+ onDone: this._onDone.bind(this),
+ onError: this._onError.bind(this),
+ onProgress: this._onProgress.bind(this)
+ };
+ this._url = manager.url;
+ this._requestId = manager.requestRange(begin, end, args);
+ this._requests = [];
+ this._queuedChunk = null;
+ this._done = false;
+ this._storedError = undefined;
+ this.onProgress = null;
+ this.onClosed = null;
+ }
+ _close() {
+ this.onClosed?.(this);
+ }
+ _onDone(data) {
+ const chunk = data.chunk;
+ if (this._requests.length > 0) {
+ const requestCapability = this._requests.shift();
+ requestCapability.resolve({
+ value: chunk,
+ done: false
+ });
+ } else {
+ this._queuedChunk = chunk;
+ }
+ this._done = true;
+ for (const requestCapability of this._requests) {
+ requestCapability.resolve({
+ value: undefined,
+ done: true
+ });
+ }
+ this._requests.length = 0;
+ this._close();
+ }
+ _onError(status) {
+ this._storedError = (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.createResponseStatusError)(status, this._url);
+ for (const requestCapability of this._requests) {
+ requestCapability.reject(this._storedError);
+ }
+ this._requests.length = 0;
+ this._queuedChunk = null;
+ }
+ _onProgress(evt) {
+ if (!this.isStreamingSupported) {
+ this.onProgress?.({
+ loaded: evt.loaded
+ });
+ }
+ }
+ get isStreamingSupported() {
+ return false;
+ }
+ async read() {
+ if (this._storedError) {
+ throw this._storedError;
+ }
+ if (this._queuedChunk !== null) {
+ const chunk = this._queuedChunk;
+ this._queuedChunk = null;
+ return {
+ value: chunk,
+ done: false
+ };
+ }
+ if (this._done) {
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+ const requestCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this._requests.push(requestCapability);
+ return requestCapability.promise;
+ }
+ cancel(reason) {
+ this._done = true;
+ for (const requestCapability of this._requests) {
+ requestCapability.resolve({
+ value: undefined,
+ done: true
+ });
+ }
+ this._requests.length = 0;
+ if (this._manager.isPendingRequest(this._requestId)) {
+ this._manager.abortRequest(this._requestId);
+ }
+ this._close();
+ }
+}
+
+
+/***/ }),
+
+/***/ 253:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, {
+ createResponseStatusError: () => (/* binding */ createResponseStatusError),
+ extractFilenameFromHeader: () => (/* binding */ extractFilenameFromHeader),
+ validateRangeRequestCapabilities: () => (/* binding */ validateRangeRequestCapabilities),
+ validateResponseStatus: () => (/* binding */ validateResponseStatus)
+});
+
+// EXTERNAL MODULE: ./src/shared/util.js
+var util = __webpack_require__(266);
+;// CONCATENATED MODULE: ./src/display/content_disposition.js
+
+function getFilenameFromContentDispositionHeader(contentDisposition) {
+ let needsEncodingFixup = true;
+ let tmp = toParamRegExp("filename\\*", "i").exec(contentDisposition);
+ if (tmp) {
+ tmp = tmp[1];
+ let filename = rfc2616unquote(tmp);
+ filename = unescape(filename);
+ filename = rfc5987decode(filename);
+ filename = rfc2047decode(filename);
+ return fixupEncoding(filename);
+ }
+ tmp = rfc2231getparam(contentDisposition);
+ if (tmp) {
+ const filename = rfc2047decode(tmp);
+ return fixupEncoding(filename);
+ }
+ tmp = toParamRegExp("filename", "i").exec(contentDisposition);
+ if (tmp) {
+ tmp = tmp[1];
+ let filename = rfc2616unquote(tmp);
+ filename = rfc2047decode(filename);
+ return fixupEncoding(filename);
+ }
+ function toParamRegExp(attributePattern, flags) {
+ return new RegExp("(?:^|;)\\s*" + attributePattern + "\\s*=\\s*" + "(" + '[^";\\s][^;\\s]*' + "|" + '"(?:[^"\\\\]|\\\\"?)+"?' + ")", flags);
+ }
+ function textdecode(encoding, value) {
+ if (encoding) {
+ if (!/^[\x00-\xFF]+$/.test(value)) {
+ return value;
+ }
+ try {
+ const decoder = new TextDecoder(encoding, {
+ fatal: true
+ });
+ const buffer = (0,util.stringToBytes)(value);
+ value = decoder.decode(buffer);
+ needsEncodingFixup = false;
+ } catch {}
+ }
+ return value;
+ }
+ function fixupEncoding(value) {
+ if (needsEncodingFixup && /[\x80-\xff]/.test(value)) {
+ value = textdecode("utf-8", value);
+ if (needsEncodingFixup) {
+ value = textdecode("iso-8859-1", value);
+ }
+ }
+ return value;
+ }
+ function rfc2231getparam(contentDispositionStr) {
+ const matches = [];
+ let match;
+ const iter = toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)", "ig");
+ while ((match = iter.exec(contentDispositionStr)) !== null) {
+ let [, n, quot, part] = match;
+ n = parseInt(n, 10);
+ if (n in matches) {
+ if (n === 0) {
+ break;
+ }
+ continue;
+ }
+ matches[n] = [quot, part];
+ }
+ const parts = [];
+ for (let n = 0; n < matches.length; ++n) {
+ if (!(n in matches)) {
+ break;
+ }
+ let [quot, part] = matches[n];
+ part = rfc2616unquote(part);
+ if (quot) {
+ part = unescape(part);
+ if (n === 0) {
+ part = rfc5987decode(part);
+ }
+ }
+ parts.push(part);
+ }
+ return parts.join("");
+ }
+ function rfc2616unquote(value) {
+ if (value.startsWith('"')) {
+ const parts = value.slice(1).split('\\"');
+ for (let i = 0; i < parts.length; ++i) {
+ const quotindex = parts[i].indexOf('"');
+ if (quotindex !== -1) {
+ parts[i] = parts[i].slice(0, quotindex);
+ parts.length = i + 1;
+ }
+ parts[i] = parts[i].replaceAll(/\\(.)/g, "$1");
+ }
+ value = parts.join('"');
+ }
+ return value;
+ }
+ function rfc5987decode(extvalue) {
+ const encodingend = extvalue.indexOf("'");
+ if (encodingend === -1) {
+ return extvalue;
+ }
+ const encoding = extvalue.slice(0, encodingend);
+ const langvalue = extvalue.slice(encodingend + 1);
+ const value = langvalue.replace(/^[^']*'/, "");
+ return textdecode(encoding, value);
+ }
+ function rfc2047decode(value) {
+ if (!value.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(value)) {
+ return value;
+ }
+ return value.replaceAll(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (matches, charset, encoding, text) {
+ if (encoding === "q" || encoding === "Q") {
+ text = text.replaceAll("_", " ");
+ text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {
+ return String.fromCharCode(parseInt(hex, 16));
+ });
+ return textdecode(charset, text);
+ }
+ try {
+ text = atob(text);
+ } catch {}
+ return textdecode(charset, text);
+ });
+ }
+ return "";
+}
+
+// EXTERNAL MODULE: ./src/display/display_utils.js
+var display_utils = __webpack_require__(473);
+;// CONCATENATED MODULE: ./src/display/network_utils.js
+
+
+
+function validateRangeRequestCapabilities({
+ getResponseHeader,
+ isHttp,
+ rangeChunkSize,
+ disableRange
+}) {
+ const returnValues = {
+ allowRangeRequests: false,
+ suggestedLength: undefined
+ };
+ const length = parseInt(getResponseHeader("Content-Length"), 10);
+ if (!Number.isInteger(length)) {
+ return returnValues;
+ }
+ returnValues.suggestedLength = length;
+ if (length <= 2 * rangeChunkSize) {
+ return returnValues;
+ }
+ if (disableRange || !isHttp) {
+ return returnValues;
+ }
+ if (getResponseHeader("Accept-Ranges") !== "bytes") {
+ return returnValues;
+ }
+ const contentEncoding = getResponseHeader("Content-Encoding") || "identity";
+ if (contentEncoding !== "identity") {
+ return returnValues;
+ }
+ returnValues.allowRangeRequests = true;
+ return returnValues;
+}
+function extractFilenameFromHeader(getResponseHeader) {
+ const contentDisposition = getResponseHeader("Content-Disposition");
+ if (contentDisposition) {
+ let filename = getFilenameFromContentDispositionHeader(contentDisposition);
+ if (filename.includes("%")) {
+ try {
+ filename = decodeURIComponent(filename);
+ } catch {}
+ }
+ if ((0,display_utils.isPdfFile)(filename)) {
+ return filename;
+ }
+ }
+ return null;
+}
+function createResponseStatusError(status, url) {
+ if (status === 404 || status === 0 && url.startsWith("file:")) {
+ return new util.MissingPDFException('Missing PDF "' + url + '".');
+ }
+ return new util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF "${url}".`, status);
+}
+function validateResponseStatus(status) {
+ return status === 200 || status === 206;
+}
+
+
+/***/ }),
+
+/***/ 498:
+/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ PDFNodeStream: () => (/* binding */ PDFNodeStream)
+/* harmony export */ });
+/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266);
+/* harmony import */ var _network_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(253);
+
+
+;
+let fs, http, https, url;
+if (_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.isNodeJS) {
+ fs = await import(/* webpackIgnore: true */ "fs");
+ http = await import(/* webpackIgnore: true */ "http");
+ https = await import(/* webpackIgnore: true */ "https");
+ url = await import(/* webpackIgnore: true */ "url");
+}
+const fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//;
+function parseUrl(sourceUrl) {
+ const parsedUrl = url.parse(sourceUrl);
+ if (parsedUrl.protocol === "file:" || parsedUrl.host) {
+ return parsedUrl;
+ }
+ if (/^[a-z]:[/\\]/i.test(sourceUrl)) {
+ return url.parse(`file:///${sourceUrl}`);
+ }
+ if (!parsedUrl.host) {
+ parsedUrl.protocol = "file:";
+ }
+ return parsedUrl;
+}
+class PDFNodeStream {
+ constructor(source) {
+ this.source = source;
+ this.url = parseUrl(source.url);
+ this.isHttp = this.url.protocol === "http:" || this.url.protocol === "https:";
+ this.isFsUrl = this.url.protocol === "file:";
+ this.httpHeaders = this.isHttp && source.httpHeaders || {};
+ this._fullRequestReader = null;
+ this._rangeRequestReaders = [];
+ }
+ get _progressiveDataLength() {
+ return this._fullRequestReader?._loaded ?? 0;
+ }
+ getFullReader() {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(!this._fullRequestReader, "PDFNodeStream.getFullReader can only be called once.");
+ this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);
+ return this._fullRequestReader;
+ }
+ getRangeReader(start, end) {
+ if (end <= this._progressiveDataLength) {
+ return null;
+ }
+ const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);
+ this._rangeRequestReaders.push(rangeReader);
+ return rangeReader;
+ }
+ cancelAllRequests(reason) {
+ this._fullRequestReader?.cancel(reason);
+ for (const reader of this._rangeRequestReaders.slice(0)) {
+ reader.cancel(reason);
+ }
+ }
+}
+class BaseFullReader {
+ constructor(stream) {
+ this._url = stream.url;
+ this._done = false;
+ this._storedError = null;
+ this.onProgress = null;
+ const source = stream.source;
+ this._contentLength = source.length;
+ this._loaded = 0;
+ this._filename = null;
+ this._disableRange = source.disableRange || false;
+ this._rangeChunkSize = source.rangeChunkSize;
+ if (!this._rangeChunkSize && !this._disableRange) {
+ this._disableRange = true;
+ }
+ this._isStreamingSupported = !source.disableStream;
+ this._isRangeSupported = !source.disableRange;
+ this._readableStream = null;
+ this._readCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this._headersCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ }
+ get headersReady() {
+ return this._headersCapability.promise;
+ }
+ get filename() {
+ return this._filename;
+ }
+ get contentLength() {
+ return this._contentLength;
+ }
+ get isRangeSupported() {
+ return this._isRangeSupported;
+ }
+ get isStreamingSupported() {
+ return this._isStreamingSupported;
+ }
+ async read() {
+ await this._readCapability.promise;
+ if (this._done) {
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+ if (this._storedError) {
+ throw this._storedError;
+ }
+ const chunk = this._readableStream.read();
+ if (chunk === null) {
+ this._readCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ return this.read();
+ }
+ this._loaded += chunk.length;
+ this.onProgress?.({
+ loaded: this._loaded,
+ total: this._contentLength
+ });
+ const buffer = new Uint8Array(chunk).buffer;
+ return {
+ value: buffer,
+ done: false
+ };
+ }
+ cancel(reason) {
+ if (!this._readableStream) {
+ this._error(reason);
+ return;
+ }
+ this._readableStream.destroy(reason);
+ }
+ _error(reason) {
+ this._storedError = reason;
+ this._readCapability.resolve();
+ }
+ _setReadableStream(readableStream) {
+ this._readableStream = readableStream;
+ readableStream.on("readable", () => {
+ this._readCapability.resolve();
+ });
+ readableStream.on("end", () => {
+ readableStream.destroy();
+ this._done = true;
+ this._readCapability.resolve();
+ });
+ readableStream.on("error", reason => {
+ this._error(reason);
+ });
+ if (!this._isStreamingSupported && this._isRangeSupported) {
+ this._error(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException("streaming is disabled"));
+ }
+ if (this._storedError) {
+ this._readableStream.destroy(this._storedError);
+ }
+ }
+}
+class BaseRangeReader {
+ constructor(stream) {
+ this._url = stream.url;
+ this._done = false;
+ this._storedError = null;
+ this.onProgress = null;
+ this._loaded = 0;
+ this._readableStream = null;
+ this._readCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ const source = stream.source;
+ this._isStreamingSupported = !source.disableStream;
+ }
+ get isStreamingSupported() {
+ return this._isStreamingSupported;
+ }
+ async read() {
+ await this._readCapability.promise;
+ if (this._done) {
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+ if (this._storedError) {
+ throw this._storedError;
+ }
+ const chunk = this._readableStream.read();
+ if (chunk === null) {
+ this._readCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ return this.read();
+ }
+ this._loaded += chunk.length;
+ this.onProgress?.({
+ loaded: this._loaded
+ });
+ const buffer = new Uint8Array(chunk).buffer;
+ return {
+ value: buffer,
+ done: false
+ };
+ }
+ cancel(reason) {
+ if (!this._readableStream) {
+ this._error(reason);
+ return;
+ }
+ this._readableStream.destroy(reason);
+ }
+ _error(reason) {
+ this._storedError = reason;
+ this._readCapability.resolve();
+ }
+ _setReadableStream(readableStream) {
+ this._readableStream = readableStream;
+ readableStream.on("readable", () => {
+ this._readCapability.resolve();
+ });
+ readableStream.on("end", () => {
+ readableStream.destroy();
+ this._done = true;
+ this._readCapability.resolve();
+ });
+ readableStream.on("error", reason => {
+ this._error(reason);
+ });
+ if (this._storedError) {
+ this._readableStream.destroy(this._storedError);
+ }
+ }
+}
+function createRequestOptions(parsedUrl, headers) {
+ return {
+ protocol: parsedUrl.protocol,
+ auth: parsedUrl.auth,
+ host: parsedUrl.hostname,
+ port: parsedUrl.port,
+ path: parsedUrl.path,
+ method: "GET",
+ headers
+ };
+}
+class PDFNodeStreamFullReader extends BaseFullReader {
+ constructor(stream) {
+ super(stream);
+ const handleResponse = response => {
+ if (response.statusCode === 404) {
+ const error = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.MissingPDFException(`Missing PDF "${this._url}".`);
+ this._storedError = error;
+ this._headersCapability.reject(error);
+ return;
+ }
+ this._headersCapability.resolve();
+ this._setReadableStream(response);
+ const getResponseHeader = name => {
+ return this._readableStream.headers[name.toLowerCase()];
+ };
+ const {
+ allowRangeRequests,
+ suggestedLength
+ } = (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.validateRangeRequestCapabilities)({
+ getResponseHeader,
+ isHttp: stream.isHttp,
+ rangeChunkSize: this._rangeChunkSize,
+ disableRange: this._disableRange
+ });
+ this._isRangeSupported = allowRangeRequests;
+ this._contentLength = suggestedLength || this._contentLength;
+ this._filename = (0,_network_utils_js__WEBPACK_IMPORTED_MODULE_1__.extractFilenameFromHeader)(getResponseHeader);
+ };
+ this._request = null;
+ if (this._url.protocol === "http:") {
+ this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);
+ } else {
+ this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);
+ }
+ this._request.on("error", reason => {
+ this._storedError = reason;
+ this._headersCapability.reject(reason);
+ });
+ this._request.end();
+ }
+}
+class PDFNodeStreamRangeReader extends BaseRangeReader {
+ constructor(stream, start, end) {
+ super(stream);
+ this._httpHeaders = {};
+ for (const property in stream.httpHeaders) {
+ const value = stream.httpHeaders[property];
+ if (value === undefined) {
+ continue;
+ }
+ this._httpHeaders[property] = value;
+ }
+ this._httpHeaders.Range = `bytes=${start}-${end - 1}`;
+ const handleResponse = response => {
+ if (response.statusCode === 404) {
+ const error = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.MissingPDFException(`Missing PDF "${this._url}".`);
+ this._storedError = error;
+ return;
+ }
+ this._setReadableStream(response);
+ };
+ this._request = null;
+ if (this._url.protocol === "http:") {
+ this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);
+ } else {
+ this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);
+ }
+ this._request.on("error", reason => {
+ this._storedError = reason;
+ });
+ this._request.end();
+ }
+}
+class PDFNodeStreamFsFullReader extends BaseFullReader {
+ constructor(stream) {
+ super(stream);
+ let path = decodeURIComponent(this._url.path);
+ if (fileUriRegex.test(this._url.href)) {
+ path = path.replace(/^\//, "");
+ }
+ fs.lstat(path, (error, stat) => {
+ if (error) {
+ if (error.code === "ENOENT") {
+ error = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.MissingPDFException(`Missing PDF "${path}".`);
+ }
+ this._storedError = error;
+ this._headersCapability.reject(error);
+ return;
+ }
+ this._contentLength = stat.size;
+ this._setReadableStream(fs.createReadStream(path));
+ this._headersCapability.resolve();
+ });
+ }
+}
+class PDFNodeStreamFsRangeReader extends BaseRangeReader {
+ constructor(stream, start, end) {
+ super(stream);
+ let path = decodeURIComponent(this._url.path);
+ if (fileUriRegex.test(this._url.href)) {
+ path = path.replace(/^\//, "");
+ }
+ this._setReadableStream(fs.createReadStream(path, {
+ start,
+ end: end - 1
+ }));
+ }
+}
+
+__webpack_async_result__();
+} catch(e) { __webpack_async_result__(e); } }, 1);
+
+/***/ }),
+
+/***/ 738:
+/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ NodeCMapReaderFactory: () => (/* binding */ NodeCMapReaderFactory),
+/* harmony export */ NodeCanvasFactory: () => (/* binding */ NodeCanvasFactory),
+/* harmony export */ NodeFilterFactory: () => (/* binding */ NodeFilterFactory),
+/* harmony export */ NodeStandardFontDataFactory: () => (/* binding */ NodeStandardFontDataFactory)
+/* harmony export */ });
+/* harmony import */ var _base_factory_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(822);
+/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(266);
+
+
+;
+let fs, canvas, path2d_polyfill;
+if (_shared_util_js__WEBPACK_IMPORTED_MODULE_1__.isNodeJS) {
+ fs = await import(/* webpackIgnore: true */ "fs");
+ try {
+ canvas = await import(/* webpackIgnore: true */ "canvas");
+ } catch {}
+ try {
+ path2d_polyfill = await import(/* webpackIgnore: true */ "path2d-polyfill");
+ } catch {}
+}
+;
+const fetchData = function (url) {
+ return new Promise((resolve, reject) => {
+ fs.readFile(url, (error, data) => {
+ if (error || !data) {
+ reject(new Error(error));
+ return;
+ }
+ resolve(new Uint8Array(data));
+ });
+ });
+};
+class NodeFilterFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseFilterFactory {}
+class NodeCanvasFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseCanvasFactory {
+ _createCanvas(width, height) {
+ return canvas.createCanvas(width, height);
+ }
+}
+class NodeCMapReaderFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseCMapReaderFactory {
+ _fetchData(url, compressionType) {
+ return fetchData(url).then(data => {
+ return {
+ cMapData: data,
+ compressionType
+ };
+ });
+ }
+}
+class NodeStandardFontDataFactory extends _base_factory_js__WEBPACK_IMPORTED_MODULE_0__.BaseStandardFontDataFactory {
+ _fetchData(url) {
+ return fetchData(url);
+ }
+}
+
+__webpack_async_result__();
+} catch(e) { __webpack_async_result__(e); } }, 1);
+
+/***/ }),
+
+/***/ 890:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ OptionalContentConfig: () => (/* binding */ OptionalContentConfig)
+/* harmony export */ });
+/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266);
+/* harmony import */ var _shared_murmurhash3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(825);
+
+
+const INTERNAL = Symbol("INTERNAL");
+class OptionalContentGroup {
+ #visible = true;
+ constructor(name, intent) {
+ this.name = name;
+ this.intent = intent;
+ }
+ get visible() {
+ return this.#visible;
+ }
+ _setVisible(internal, visible) {
+ if (internal !== INTERNAL) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)("Internal method `_setVisible` called.");
+ }
+ this.#visible = visible;
+ }
+}
+class OptionalContentConfig {
+ #cachedGetHash = null;
+ #groups = new Map();
+ #initialHash = null;
+ #order = null;
+ constructor(data) {
+ this.name = null;
+ this.creator = null;
+ if (data === null) {
+ return;
+ }
+ this.name = data.name;
+ this.creator = data.creator;
+ this.#order = data.order;
+ for (const group of data.groups) {
+ this.#groups.set(group.id, new OptionalContentGroup(group.name, group.intent));
+ }
+ if (data.baseState === "OFF") {
+ for (const group of this.#groups.values()) {
+ group._setVisible(INTERNAL, false);
+ }
+ }
+ for (const on of data.on) {
+ this.#groups.get(on)._setVisible(INTERNAL, true);
+ }
+ for (const off of data.off) {
+ this.#groups.get(off)._setVisible(INTERNAL, false);
+ }
+ this.#initialHash = this.getHash();
+ }
+ #evaluateVisibilityExpression(array) {
+ const length = array.length;
+ if (length < 2) {
+ return true;
+ }
+ const operator = array[0];
+ for (let i = 1; i < length; i++) {
+ const element = array[i];
+ let state;
+ if (Array.isArray(element)) {
+ state = this.#evaluateVisibilityExpression(element);
+ } else if (this.#groups.has(element)) {
+ state = this.#groups.get(element).visible;
+ } else {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Optional content group not found: ${element}`);
+ return true;
+ }
+ switch (operator) {
+ case "And":
+ if (!state) {
+ return false;
+ }
+ break;
+ case "Or":
+ if (state) {
+ return true;
+ }
+ break;
+ case "Not":
+ return !state;
+ default:
+ return true;
+ }
+ }
+ return operator === "And";
+ }
+ isVisible(group) {
+ if (this.#groups.size === 0) {
+ return true;
+ }
+ if (!group) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)("Optional content group not defined.");
+ return true;
+ }
+ if (group.type === "OCG") {
+ if (!this.#groups.has(group.id)) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Optional content group not found: ${group.id}`);
+ return true;
+ }
+ return this.#groups.get(group.id).visible;
+ } else if (group.type === "OCMD") {
+ if (group.expression) {
+ return this.#evaluateVisibilityExpression(group.expression);
+ }
+ if (!group.policy || group.policy === "AnyOn") {
+ for (const id of group.ids) {
+ if (!this.#groups.has(id)) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Optional content group not found: ${id}`);
+ return true;
+ }
+ if (this.#groups.get(id).visible) {
+ return true;
+ }
+ }
+ return false;
+ } else if (group.policy === "AllOn") {
+ for (const id of group.ids) {
+ if (!this.#groups.has(id)) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Optional content group not found: ${id}`);
+ return true;
+ }
+ if (!this.#groups.get(id).visible) {
+ return false;
+ }
+ }
+ return true;
+ } else if (group.policy === "AnyOff") {
+ for (const id of group.ids) {
+ if (!this.#groups.has(id)) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Optional content group not found: ${id}`);
+ return true;
+ }
+ if (!this.#groups.get(id).visible) {
+ return true;
+ }
+ }
+ return false;
+ } else if (group.policy === "AllOff") {
+ for (const id of group.ids) {
+ if (!this.#groups.has(id)) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Optional content group not found: ${id}`);
+ return true;
+ }
+ if (this.#groups.get(id).visible) {
+ return false;
+ }
+ }
+ return true;
+ }
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Unknown optional content policy ${group.policy}.`);
+ return true;
+ }
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Unknown group type ${group.type}.`);
+ return true;
+ }
+ setVisibility(id, visible = true) {
+ if (!this.#groups.has(id)) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.warn)(`Optional content group not found: ${id}`);
+ return;
+ }
+ this.#groups.get(id)._setVisible(INTERNAL, !!visible);
+ this.#cachedGetHash = null;
+ }
+ get hasInitialVisibility() {
+ return this.#initialHash === null || this.getHash() === this.#initialHash;
+ }
+ getOrder() {
+ if (!this.#groups.size) {
+ return null;
+ }
+ if (this.#order) {
+ return this.#order.slice();
+ }
+ return [...this.#groups.keys()];
+ }
+ getGroups() {
+ return this.#groups.size > 0 ? (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.objectFromMap)(this.#groups) : null;
+ }
+ getGroup(id) {
+ return this.#groups.get(id) || null;
+ }
+ getHash() {
+ if (this.#cachedGetHash !== null) {
+ return this.#cachedGetHash;
+ }
+ const hash = new _shared_murmurhash3_js__WEBPACK_IMPORTED_MODULE_1__.MurmurHash3_64();
+ for (const [id, group] of this.#groups) {
+ hash.update(`${id}:${group.visible}`);
+ }
+ return this.#cachedGetHash = hash.hexdigest();
+ }
+}
+
+
+/***/ }),
+
+/***/ 739:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ renderTextLayer: () => (/* binding */ renderTextLayer),
+/* harmony export */ updateTextLayer: () => (/* binding */ updateTextLayer)
+/* harmony export */ });
+/* unused harmony export TextLayerRenderTask */
+/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266);
+/* harmony import */ var _display_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(473);
+
+
+const MAX_TEXT_DIVS_TO_RENDER = 100000;
+const DEFAULT_FONT_SIZE = 30;
+const DEFAULT_FONT_ASCENT = 0.8;
+const ascentCache = new Map();
+function getCtx(size, isOffscreenCanvasSupported) {
+ let ctx;
+ if (isOffscreenCanvasSupported && _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.FeatureTest.isOffscreenCanvasSupported) {
+ ctx = new OffscreenCanvas(size, size).getContext("2d", {
+ alpha: false
+ });
+ } else {
+ const canvas = document.createElement("canvas");
+ canvas.width = canvas.height = size;
+ ctx = canvas.getContext("2d", {
+ alpha: false
+ });
+ }
+ return ctx;
+}
+function getAscent(fontFamily, isOffscreenCanvasSupported) {
+ const cachedAscent = ascentCache.get(fontFamily);
+ if (cachedAscent) {
+ return cachedAscent;
+ }
+ const ctx = getCtx(DEFAULT_FONT_SIZE, isOffscreenCanvasSupported);
+ ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;
+ const metrics = ctx.measureText("");
+ let ascent = metrics.fontBoundingBoxAscent;
+ let descent = Math.abs(metrics.fontBoundingBoxDescent);
+ if (ascent) {
+ const ratio = ascent / (ascent + descent);
+ ascentCache.set(fontFamily, ratio);
+ ctx.canvas.width = ctx.canvas.height = 0;
+ return ratio;
+ }
+ ctx.strokeStyle = "red";
+ ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);
+ ctx.strokeText("g", 0, 0);
+ let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;
+ descent = 0;
+ for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {
+ if (pixels[i] > 0) {
+ descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);
+ break;
+ }
+ }
+ ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);
+ ctx.strokeText("A", 0, DEFAULT_FONT_SIZE);
+ pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;
+ ascent = 0;
+ for (let i = 0, ii = pixels.length; i < ii; i += 4) {
+ if (pixels[i] > 0) {
+ ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);
+ break;
+ }
+ }
+ ctx.canvas.width = ctx.canvas.height = 0;
+ if (ascent) {
+ const ratio = ascent / (ascent + descent);
+ ascentCache.set(fontFamily, ratio);
+ return ratio;
+ }
+ ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);
+ return DEFAULT_FONT_ASCENT;
+}
+function appendText(task, geom, styles) {
+ const textDiv = document.createElement("span");
+ const textDivProperties = {
+ angle: 0,
+ canvasWidth: 0,
+ hasText: geom.str !== "",
+ hasEOL: geom.hasEOL,
+ fontSize: 0
+ };
+ task._textDivs.push(textDiv);
+ const tx = _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.Util.transform(task._transform, geom.transform);
+ let angle = Math.atan2(tx[1], tx[0]);
+ const style = styles[geom.fontName];
+ if (style.vertical) {
+ angle += Math.PI / 2;
+ }
+ const fontFamily = task._fontInspectorEnabled && style.fontSubstitution || style.fontFamily;
+ const fontHeight = Math.hypot(tx[2], tx[3]);
+ const fontAscent = fontHeight * getAscent(fontFamily, task._isOffscreenCanvasSupported);
+ let left, top;
+ if (angle === 0) {
+ left = tx[4];
+ top = tx[5] - fontAscent;
+ } else {
+ left = tx[4] + fontAscent * Math.sin(angle);
+ top = tx[5] - fontAscent * Math.cos(angle);
+ }
+ const scaleFactorStr = "calc(var(--scale-factor)*";
+ const divStyle = textDiv.style;
+ if (task._container === task._rootContainer) {
+ divStyle.left = `${(100 * left / task._pageWidth).toFixed(2)}%`;
+ divStyle.top = `${(100 * top / task._pageHeight).toFixed(2)}%`;
+ } else {
+ divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;
+ divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;
+ }
+ divStyle.fontSize = `${scaleFactorStr}${fontHeight.toFixed(2)}px)`;
+ divStyle.fontFamily = fontFamily;
+ textDivProperties.fontSize = fontHeight;
+ textDiv.setAttribute("role", "presentation");
+ textDiv.textContent = geom.str;
+ textDiv.dir = geom.dir;
+ if (task._fontInspectorEnabled) {
+ textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;
+ }
+ if (angle !== 0) {
+ textDivProperties.angle = angle * (180 / Math.PI);
+ }
+ let shouldScaleText = false;
+ if (geom.str.length > 1) {
+ shouldScaleText = true;
+ } else if (geom.str !== " " && geom.transform[0] !== geom.transform[3]) {
+ const absScaleX = Math.abs(geom.transform[0]),
+ absScaleY = Math.abs(geom.transform[3]);
+ if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {
+ shouldScaleText = true;
+ }
+ }
+ if (shouldScaleText) {
+ textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;
+ }
+ task._textDivProperties.set(textDiv, textDivProperties);
+ if (task._isReadableStream) {
+ task._layoutText(textDiv);
+ }
+}
+function layout(params) {
+ const {
+ div,
+ scale,
+ properties,
+ ctx,
+ prevFontSize,
+ prevFontFamily
+ } = params;
+ const {
+ style
+ } = div;
+ let transform = "";
+ if (properties.canvasWidth !== 0 && properties.hasText) {
+ const {
+ fontFamily
+ } = style;
+ const {
+ canvasWidth,
+ fontSize
+ } = properties;
+ if (prevFontSize !== fontSize || prevFontFamily !== fontFamily) {
+ ctx.font = `${fontSize * scale}px ${fontFamily}`;
+ params.prevFontSize = fontSize;
+ params.prevFontFamily = fontFamily;
+ }
+ const {
+ width
+ } = ctx.measureText(div.textContent);
+ if (width > 0) {
+ transform = `scaleX(${canvasWidth * scale / width})`;
+ }
+ }
+ if (properties.angle !== 0) {
+ transform = `rotate(${properties.angle}deg) ${transform}`;
+ }
+ if (transform.length > 0) {
+ style.transform = transform;
+ }
+}
+function render(task) {
+ if (task._canceled) {
+ return;
+ }
+ const textDivs = task._textDivs;
+ const capability = task._capability;
+ const textDivsLength = textDivs.length;
+ if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {
+ capability.resolve();
+ return;
+ }
+ if (!task._isReadableStream) {
+ for (const textDiv of textDivs) {
+ task._layoutText(textDiv);
+ }
+ }
+ capability.resolve();
+}
+class TextLayerRenderTask {
+ constructor({
+ textContentSource,
+ container,
+ viewport,
+ textDivs,
+ textDivProperties,
+ textContentItemsStr,
+ isOffscreenCanvasSupported
+ }) {
+ this._textContentSource = textContentSource;
+ this._isReadableStream = textContentSource instanceof ReadableStream;
+ this._container = this._rootContainer = container;
+ this._textDivs = textDivs || [];
+ this._textContentItemsStr = textContentItemsStr || [];
+ this._isOffscreenCanvasSupported = isOffscreenCanvasSupported;
+ this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;
+ this._reader = null;
+ this._textDivProperties = textDivProperties || new WeakMap();
+ this._canceled = false;
+ this._capability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this._layoutTextParams = {
+ prevFontSize: null,
+ prevFontFamily: null,
+ div: null,
+ scale: viewport.scale * (globalThis.devicePixelRatio || 1),
+ properties: null,
+ ctx: getCtx(0, isOffscreenCanvasSupported)
+ };
+ const {
+ pageWidth,
+ pageHeight,
+ pageX,
+ pageY
+ } = viewport.rawDims;
+ this._transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];
+ this._pageWidth = pageWidth;
+ this._pageHeight = pageHeight;
+ (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_1__.setLayerDimensions)(container, viewport);
+ this._capability.promise.finally(() => {
+ this._layoutTextParams = null;
+ }).catch(() => {});
+ }
+ get promise() {
+ return this._capability.promise;
+ }
+ cancel() {
+ this._canceled = true;
+ if (this._reader) {
+ this._reader.cancel(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException("TextLayer task cancelled.")).catch(() => {});
+ this._reader = null;
+ }
+ this._capability.reject(new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException("TextLayer task cancelled."));
+ }
+ _processItems(items, styleCache) {
+ for (const item of items) {
+ if (item.str === undefined) {
+ if (item.type === "beginMarkedContentProps" || item.type === "beginMarkedContent") {
+ const parent = this._container;
+ this._container = document.createElement("span");
+ this._container.classList.add("markedContent");
+ if (item.id !== null) {
+ this._container.setAttribute("id", `${item.id}`);
+ }
+ parent.append(this._container);
+ } else if (item.type === "endMarkedContent") {
+ this._container = this._container.parentNode;
+ }
+ continue;
+ }
+ this._textContentItemsStr.push(item.str);
+ appendText(this, item, styleCache);
+ }
+ }
+ _layoutText(textDiv) {
+ const textDivProperties = this._layoutTextParams.properties = this._textDivProperties.get(textDiv);
+ this._layoutTextParams.div = textDiv;
+ layout(this._layoutTextParams);
+ if (textDivProperties.hasText) {
+ this._container.append(textDiv);
+ }
+ if (textDivProperties.hasEOL) {
+ const br = document.createElement("br");
+ br.setAttribute("role", "presentation");
+ this._container.append(br);
+ }
+ }
+ _render() {
+ const capability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ let styleCache = Object.create(null);
+ if (this._isReadableStream) {
+ const pump = () => {
+ this._reader.read().then(({
+ value,
+ done
+ }) => {
+ if (done) {
+ capability.resolve();
+ return;
+ }
+ Object.assign(styleCache, value.styles);
+ this._processItems(value.items, styleCache);
+ pump();
+ }, capability.reject);
+ };
+ this._reader = this._textContentSource.getReader();
+ pump();
+ } else if (this._textContentSource) {
+ const {
+ items,
+ styles
+ } = this._textContentSource;
+ this._processItems(items, styles);
+ capability.resolve();
+ } else {
+ throw new Error('No "textContentSource" parameter specified.');
+ }
+ capability.promise.then(() => {
+ styleCache = null;
+ render(this);
+ }, this._capability.reject);
+ }
+}
+function renderTextLayer(params) {
+ const task = new TextLayerRenderTask(params);
+ task._render();
+ return task;
+}
+function updateTextLayer({
+ container,
+ viewport,
+ textDivs,
+ textDivProperties,
+ isOffscreenCanvasSupported,
+ mustRotate = true,
+ mustRescale = true
+}) {
+ if (mustRotate) {
+ (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_1__.setLayerDimensions)(container, {
+ rotation: viewport.rotation
+ });
+ }
+ if (mustRescale) {
+ const ctx = getCtx(0, isOffscreenCanvasSupported);
+ const scale = viewport.scale * (globalThis.devicePixelRatio || 1);
+ const params = {
+ prevFontSize: null,
+ prevFontFamily: null,
+ div: null,
+ scale,
+ properties: null,
+ ctx
+ };
+ for (const div of textDivs) {
+ params.properties = textDivProperties.get(div);
+ params.div = div;
+ layout(params);
+ }
+ }
+}
+
+
+/***/ }),
+
+/***/ 92:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ PDFDataTransportStream: () => (/* binding */ PDFDataTransportStream)
+/* harmony export */ });
+/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266);
+/* harmony import */ var _display_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(473);
+
+
+class PDFDataTransportStream {
+ constructor({
+ length,
+ initialData,
+ progressiveDone = false,
+ contentDispositionFilename = null,
+ disableRange = false,
+ disableStream = false
+ }, pdfDataRangeTransport) {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.');
+ this._queuedChunks = [];
+ this._progressiveDone = progressiveDone;
+ this._contentDispositionFilename = contentDispositionFilename;
+ if (initialData?.length > 0) {
+ const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;
+ this._queuedChunks.push(buffer);
+ }
+ this._pdfDataRangeTransport = pdfDataRangeTransport;
+ this._isStreamingSupported = !disableStream;
+ this._isRangeSupported = !disableRange;
+ this._contentLength = length;
+ this._fullRequestReader = null;
+ this._rangeReaders = [];
+ this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {
+ this._onReceiveData({
+ begin,
+ chunk
+ });
+ });
+ this._pdfDataRangeTransport.addProgressListener((loaded, total) => {
+ this._onProgress({
+ loaded,
+ total
+ });
+ });
+ this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {
+ this._onReceiveData({
+ chunk
+ });
+ });
+ this._pdfDataRangeTransport.addProgressiveDoneListener(() => {
+ this._onProgressiveDone();
+ });
+ this._pdfDataRangeTransport.transportReady();
+ }
+ _onReceiveData({
+ begin,
+ chunk
+ }) {
+ const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;
+ if (begin === undefined) {
+ if (this._fullRequestReader) {
+ this._fullRequestReader._enqueue(buffer);
+ } else {
+ this._queuedChunks.push(buffer);
+ }
+ } else {
+ const found = this._rangeReaders.some(function (rangeReader) {
+ if (rangeReader._begin !== begin) {
+ return false;
+ }
+ rangeReader._enqueue(buffer);
+ return true;
+ });
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(found, "_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.");
+ }
+ }
+ get _progressiveDataLength() {
+ return this._fullRequestReader?._loaded ?? 0;
+ }
+ _onProgress(evt) {
+ if (evt.total === undefined) {
+ this._rangeReaders[0]?.onProgress?.({
+ loaded: evt.loaded
+ });
+ } else {
+ this._fullRequestReader?.onProgress?.({
+ loaded: evt.loaded,
+ total: evt.total
+ });
+ }
+ }
+ _onProgressiveDone() {
+ this._fullRequestReader?.progressiveDone();
+ this._progressiveDone = true;
+ }
+ _removeRangeReader(reader) {
+ const i = this._rangeReaders.indexOf(reader);
+ if (i >= 0) {
+ this._rangeReaders.splice(i, 1);
+ }
+ }
+ getFullReader() {
+ (0,_shared_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(!this._fullRequestReader, "PDFDataTransportStream.getFullReader can only be called once.");
+ const queuedChunks = this._queuedChunks;
+ this._queuedChunks = null;
+ return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);
+ }
+ getRangeReader(begin, end) {
+ if (end <= this._progressiveDataLength) {
+ return null;
+ }
+ const reader = new PDFDataTransportStreamRangeReader(this, begin, end);
+ this._pdfDataRangeTransport.requestDataRange(begin, end);
+ this._rangeReaders.push(reader);
+ return reader;
+ }
+ cancelAllRequests(reason) {
+ this._fullRequestReader?.cancel(reason);
+ for (const reader of this._rangeReaders.slice(0)) {
+ reader.cancel(reason);
+ }
+ this._pdfDataRangeTransport.abort();
+ }
+}
+class PDFDataTransportStreamReader {
+ constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {
+ this._stream = stream;
+ this._done = progressiveDone || false;
+ this._filename = (0,_display_utils_js__WEBPACK_IMPORTED_MODULE_1__.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null;
+ this._queuedChunks = queuedChunks || [];
+ this._loaded = 0;
+ for (const chunk of this._queuedChunks) {
+ this._loaded += chunk.byteLength;
+ }
+ this._requests = [];
+ this._headersReady = Promise.resolve();
+ stream._fullRequestReader = this;
+ this.onProgress = null;
+ }
+ _enqueue(chunk) {
+ if (this._done) {
+ return;
+ }
+ if (this._requests.length > 0) {
+ const requestCapability = this._requests.shift();
+ requestCapability.resolve({
+ value: chunk,
+ done: false
+ });
+ } else {
+ this._queuedChunks.push(chunk);
+ }
+ this._loaded += chunk.byteLength;
+ }
+ get headersReady() {
+ return this._headersReady;
+ }
+ get filename() {
+ return this._filename;
+ }
+ get isRangeSupported() {
+ return this._stream._isRangeSupported;
+ }
+ get isStreamingSupported() {
+ return this._stream._isStreamingSupported;
+ }
+ get contentLength() {
+ return this._stream._contentLength;
+ }
+ async read() {
+ if (this._queuedChunks.length > 0) {
+ const chunk = this._queuedChunks.shift();
+ return {
+ value: chunk,
+ done: false
+ };
+ }
+ if (this._done) {
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+ const requestCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this._requests.push(requestCapability);
+ return requestCapability.promise;
+ }
+ cancel(reason) {
+ this._done = true;
+ for (const requestCapability of this._requests) {
+ requestCapability.resolve({
+ value: undefined,
+ done: true
+ });
+ }
+ this._requests.length = 0;
+ }
+ progressiveDone() {
+ if (this._done) {
+ return;
+ }
+ this._done = true;
+ }
+}
+class PDFDataTransportStreamRangeReader {
+ constructor(stream, begin, end) {
+ this._stream = stream;
+ this._begin = begin;
+ this._end = end;
+ this._queuedChunk = null;
+ this._requests = [];
+ this._done = false;
+ this.onProgress = null;
+ }
+ _enqueue(chunk) {
+ if (this._done) {
+ return;
+ }
+ if (this._requests.length === 0) {
+ this._queuedChunk = chunk;
+ } else {
+ const requestsCapability = this._requests.shift();
+ requestsCapability.resolve({
+ value: chunk,
+ done: false
+ });
+ for (const requestCapability of this._requests) {
+ requestCapability.resolve({
+ value: undefined,
+ done: true
+ });
+ }
+ this._requests.length = 0;
+ }
+ this._done = true;
+ this._stream._removeRangeReader(this);
+ }
+ get isStreamingSupported() {
+ return false;
+ }
+ async read() {
+ if (this._queuedChunk) {
+ const chunk = this._queuedChunk;
+ this._queuedChunk = null;
+ return {
+ value: chunk,
+ done: false
+ };
+ }
+ if (this._done) {
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+ const requestCapability = new _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this._requests.push(requestCapability);
+ return requestCapability.promise;
+ }
+ cancel(reason) {
+ this._done = true;
+ for (const requestCapability of this._requests) {
+ requestCapability.resolve({
+ value: undefined,
+ done: true
+ });
+ }
+ this._requests.length = 0;
+ this._stream._removeRangeReader(this);
+ }
+}
+
+
+/***/ }),
+
+/***/ 368:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ GlobalWorkerOptions: () => (/* binding */ GlobalWorkerOptions)
+/* harmony export */ });
+const GlobalWorkerOptions = Object.create(null);
+GlobalWorkerOptions.workerPort = null;
+GlobalWorkerOptions.workerSrc = "";
+
+
+/***/ }),
+
+/***/ 160:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ XfaLayer: () => (/* binding */ XfaLayer)
+/* harmony export */ });
+/* harmony import */ var _xfa_text_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(521);
+
+class XfaLayer {
+ static setupStorage(html, id, element, storage, intent) {
+ const storedData = storage.getValue(id, {
+ value: null
+ });
+ switch (element.name) {
+ case "textarea":
+ if (storedData.value !== null) {
+ html.textContent = storedData.value;
+ }
+ if (intent === "print") {
+ break;
+ }
+ html.addEventListener("input", event => {
+ storage.setValue(id, {
+ value: event.target.value
+ });
+ });
+ break;
+ case "input":
+ if (element.attributes.type === "radio" || element.attributes.type === "checkbox") {
+ if (storedData.value === element.attributes.xfaOn) {
+ html.setAttribute("checked", true);
+ } else if (storedData.value === element.attributes.xfaOff) {
+ html.removeAttribute("checked");
+ }
+ if (intent === "print") {
+ break;
+ }
+ html.addEventListener("change", event => {
+ storage.setValue(id, {
+ value: event.target.checked ? event.target.getAttribute("xfaOn") : event.target.getAttribute("xfaOff")
+ });
+ });
+ } else {
+ if (storedData.value !== null) {
+ html.setAttribute("value", storedData.value);
+ }
+ if (intent === "print") {
+ break;
+ }
+ html.addEventListener("input", event => {
+ storage.setValue(id, {
+ value: event.target.value
+ });
+ });
+ }
+ break;
+ case "select":
+ if (storedData.value !== null) {
+ html.setAttribute("value", storedData.value);
+ for (const option of element.children) {
+ if (option.attributes.value === storedData.value) {
+ option.attributes.selected = true;
+ } else if (option.attributes.hasOwnProperty("selected")) {
+ delete option.attributes.selected;
+ }
+ }
+ }
+ html.addEventListener("input", event => {
+ const options = event.target.options;
+ const value = options.selectedIndex === -1 ? "" : options[options.selectedIndex].value;
+ storage.setValue(id, {
+ value
+ });
+ });
+ break;
+ }
+ }
+ static setAttributes({
+ html,
+ element,
+ storage = null,
+ intent,
+ linkService
+ }) {
+ const {
+ attributes
+ } = element;
+ const isHTMLAnchorElement = html instanceof HTMLAnchorElement;
+ if (attributes.type === "radio") {
+ attributes.name = `${attributes.name}-${intent}`;
+ }
+ for (const [key, value] of Object.entries(attributes)) {
+ if (value === null || value === undefined) {
+ continue;
+ }
+ switch (key) {
+ case "class":
+ if (value.length) {
+ html.setAttribute(key, value.join(" "));
+ }
+ break;
+ case "dataId":
+ break;
+ case "id":
+ html.setAttribute("data-element-id", value);
+ break;
+ case "style":
+ Object.assign(html.style, value);
+ break;
+ case "textContent":
+ html.textContent = value;
+ break;
+ default:
+ if (!isHTMLAnchorElement || key !== "href" && key !== "newWindow") {
+ html.setAttribute(key, value);
+ }
+ }
+ }
+ if (isHTMLAnchorElement) {
+ linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);
+ }
+ if (storage && attributes.dataId) {
+ this.setupStorage(html, attributes.dataId, element, storage);
+ }
+ }
+ static render(parameters) {
+ const storage = parameters.annotationStorage;
+ const linkService = parameters.linkService;
+ const root = parameters.xfaHtml;
+ const intent = parameters.intent || "display";
+ const rootHtml = document.createElement(root.name);
+ if (root.attributes) {
+ this.setAttributes({
+ html: rootHtml,
+ element: root,
+ intent,
+ linkService
+ });
+ }
+ const isNotForRichText = intent !== "richText";
+ const rootDiv = parameters.div;
+ rootDiv.append(rootHtml);
+ if (parameters.viewport) {
+ const transform = `matrix(${parameters.viewport.transform.join(",")})`;
+ rootDiv.style.transform = transform;
+ }
+ if (isNotForRichText) {
+ rootDiv.setAttribute("class", "xfaLayer xfaFont");
+ }
+ const textDivs = [];
+ if (root.children.length === 0) {
+ if (root.value) {
+ const node = document.createTextNode(root.value);
+ rootHtml.append(node);
+ if (isNotForRichText && _xfa_text_js__WEBPACK_IMPORTED_MODULE_0__.XfaText.shouldBuildText(root.name)) {
+ textDivs.push(node);
+ }
+ }
+ return {
+ textDivs
+ };
+ }
+ const stack = [[root, -1, rootHtml]];
+ while (stack.length > 0) {
+ const [parent, i, html] = stack.at(-1);
+ if (i + 1 === parent.children.length) {
+ stack.pop();
+ continue;
+ }
+ const child = parent.children[++stack.at(-1)[1]];
+ if (child === null) {
+ continue;
+ }
+ const {
+ name
+ } = child;
+ if (name === "#text") {
+ const node = document.createTextNode(child.value);
+ textDivs.push(node);
+ html.append(node);
+ continue;
+ }
+ const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);
+ html.append(childHtml);
+ if (child.attributes) {
+ this.setAttributes({
+ html: childHtml,
+ element: child,
+ storage,
+ intent,
+ linkService
+ });
+ }
+ if (child.children?.length > 0) {
+ stack.push([child, -1, childHtml]);
+ } else if (child.value) {
+ const node = document.createTextNode(child.value);
+ if (isNotForRichText && _xfa_text_js__WEBPACK_IMPORTED_MODULE_0__.XfaText.shouldBuildText(name)) {
+ textDivs.push(node);
+ }
+ childHtml.append(node);
+ }
+ }
+ for (const el of rootDiv.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea")) {
+ el.setAttribute("readOnly", true);
+ }
+ return {
+ textDivs
+ };
+ }
+ static update(parameters) {
+ const transform = `matrix(${parameters.viewport.transform.join(",")})`;
+ parameters.div.style.transform = transform;
+ parameters.div.hidden = false;
+ }
+}
+
+
+/***/ }),
+
+/***/ 521:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ XfaText: () => (/* binding */ XfaText)
+/* harmony export */ });
+class XfaText {
+ static textContent(xfa) {
+ const items = [];
+ const output = {
+ items,
+ styles: Object.create(null)
+ };
+ function walk(node) {
+ if (!node) {
+ return;
+ }
+ let str = null;
+ const name = node.name;
+ if (name === "#text") {
+ str = node.value;
+ } else if (!XfaText.shouldBuildText(name)) {
+ return;
+ } else if (node?.attributes?.textContent) {
+ str = node.attributes.textContent;
+ } else if (node.value) {
+ str = node.value;
+ }
+ if (str !== null) {
+ items.push({
+ str
+ });
+ }
+ if (!node.children) {
+ return;
+ }
+ for (const child of node.children) {
+ walk(child);
+ }
+ }
+ walk(xfa);
+ return output;
+ }
+ static shouldBuildText(name) {
+ return !(name === "textarea" || name === "input" || name === "option" || name === "select");
+ }
+}
+
+
+/***/ }),
+
+/***/ 907:
+/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ AbortException: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException),
+/* harmony export */ AnnotationEditorLayer: () => (/* reexport safe */ _display_editor_annotation_editor_layer_js__WEBPACK_IMPORTED_MODULE_4__.AnnotationEditorLayer),
+/* harmony export */ AnnotationEditorParamsType: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorParamsType),
+/* harmony export */ AnnotationEditorType: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationEditorType),
+/* harmony export */ AnnotationEditorUIManager: () => (/* reexport safe */ _display_editor_tools_js__WEBPACK_IMPORTED_MODULE_5__.AnnotationEditorUIManager),
+/* harmony export */ AnnotationLayer: () => (/* reexport safe */ _display_annotation_layer_js__WEBPACK_IMPORTED_MODULE_6__.AnnotationLayer),
+/* harmony export */ AnnotationMode: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.AnnotationMode),
+/* harmony export */ CMapCompressionType: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.CMapCompressionType),
+/* harmony export */ ColorPicker: () => (/* reexport safe */ _display_editor_color_picker_js__WEBPACK_IMPORTED_MODULE_7__.ColorPicker),
+/* harmony export */ DOMSVGFactory: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.DOMSVGFactory),
+/* harmony export */ DrawLayer: () => (/* reexport safe */ _display_draw_layer_js__WEBPACK_IMPORTED_MODULE_8__.DrawLayer),
+/* harmony export */ FeatureTest: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.FeatureTest),
+/* harmony export */ GlobalWorkerOptions: () => (/* reexport safe */ _display_worker_options_js__WEBPACK_IMPORTED_MODULE_9__.GlobalWorkerOptions),
+/* harmony export */ ImageKind: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.ImageKind),
+/* harmony export */ InvalidPDFException: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.InvalidPDFException),
+/* harmony export */ MissingPDFException: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.MissingPDFException),
+/* harmony export */ OPS: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.OPS),
+/* harmony export */ Outliner: () => (/* reexport safe */ _display_editor_outliner_js__WEBPACK_IMPORTED_MODULE_10__.Outliner),
+/* harmony export */ PDFDataRangeTransport: () => (/* reexport safe */ _display_api_js__WEBPACK_IMPORTED_MODULE_1__.PDFDataRangeTransport),
+/* harmony export */ PDFDateString: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.PDFDateString),
+/* harmony export */ PDFWorker: () => (/* reexport safe */ _display_api_js__WEBPACK_IMPORTED_MODULE_1__.PDFWorker),
+/* harmony export */ PasswordResponses: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PasswordResponses),
+/* harmony export */ PermissionFlag: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PermissionFlag),
+/* harmony export */ PixelsPerInch: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.PixelsPerInch),
+/* harmony export */ PromiseCapability: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability),
+/* harmony export */ RenderingCancelledException: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.RenderingCancelledException),
+/* harmony export */ UnexpectedResponseException: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseException),
+/* harmony export */ Util: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.Util),
+/* harmony export */ VerbosityLevel: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.VerbosityLevel),
+/* harmony export */ XfaLayer: () => (/* reexport safe */ _display_xfa_layer_js__WEBPACK_IMPORTED_MODULE_11__.XfaLayer),
+/* harmony export */ build: () => (/* reexport safe */ _display_api_js__WEBPACK_IMPORTED_MODULE_1__.build),
+/* harmony export */ createValidAbsoluteUrl: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.createValidAbsoluteUrl),
+/* harmony export */ fetchData: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.fetchData),
+/* harmony export */ getDocument: () => (/* reexport safe */ _display_api_js__WEBPACK_IMPORTED_MODULE_1__.getDocument),
+/* harmony export */ getFilenameFromUrl: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.getFilenameFromUrl),
+/* harmony export */ getPdfFilenameFromUrl: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.getPdfFilenameFromUrl),
+/* harmony export */ getXfaPageViewport: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.getXfaPageViewport),
+/* harmony export */ isDataScheme: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isDataScheme),
+/* harmony export */ isPdfFile: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.isPdfFile),
+/* harmony export */ noContextMenu: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.noContextMenu),
+/* harmony export */ normalizeUnicode: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeUnicode),
+/* harmony export */ renderTextLayer: () => (/* reexport safe */ _display_text_layer_js__WEBPACK_IMPORTED_MODULE_3__.renderTextLayer),
+/* harmony export */ setLayerDimensions: () => (/* reexport safe */ _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__.setLayerDimensions),
+/* harmony export */ shadow: () => (/* reexport safe */ _shared_util_js__WEBPACK_IMPORTED_MODULE_0__.shadow),
+/* harmony export */ updateTextLayer: () => (/* reexport safe */ _display_text_layer_js__WEBPACK_IMPORTED_MODULE_3__.updateTextLayer),
+/* harmony export */ version: () => (/* reexport safe */ _display_api_js__WEBPACK_IMPORTED_MODULE_1__.version)
+/* harmony export */ });
+/* harmony import */ var _shared_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266);
+/* harmony import */ var _display_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(406);
+/* harmony import */ var _display_display_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(473);
+/* harmony import */ var _display_text_layer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(739);
+/* harmony import */ var _display_editor_annotation_editor_layer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(629);
+/* harmony import */ var _display_editor_tools_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(812);
+/* harmony import */ var _display_annotation_layer_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(640);
+/* harmony import */ var _display_editor_color_picker_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(97);
+/* harmony import */ var _display_draw_layer_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(423);
+/* harmony import */ var _display_worker_options_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(368);
+/* harmony import */ var _display_editor_outliner_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(405);
+/* harmony import */ var _display_xfa_layer_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(160);
+var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_display_api_js__WEBPACK_IMPORTED_MODULE_1__]);
+_display_api_js__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
+
+
+
+
+
+
+
+
+
+
+
+
+const pdfjsVersion = '4.0.379';
+const pdfjsBuild = '9e14d04fd';
+
+__webpack_async_result__();
+} catch(e) { __webpack_async_result__(e); } });
+
+/***/ }),
+
+/***/ 694:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ MessageHandler: () => (/* binding */ MessageHandler)
+/* harmony export */ });
+/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266);
+
+const CallbackKind = {
+ UNKNOWN: 0,
+ DATA: 1,
+ ERROR: 2
+};
+const StreamKind = {
+ UNKNOWN: 0,
+ CANCEL: 1,
+ CANCEL_COMPLETE: 2,
+ CLOSE: 3,
+ ENQUEUE: 4,
+ ERROR: 5,
+ PULL: 6,
+ PULL_COMPLETE: 7,
+ START_COMPLETE: 8
+};
+function wrapReason(reason) {
+ if (!(reason instanceof Error || typeof reason === "object" && reason !== null)) {
+ (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.');
+ }
+ switch (reason.name) {
+ case "AbortException":
+ return new _util_js__WEBPACK_IMPORTED_MODULE_0__.AbortException(reason.message);
+ case "MissingPDFException":
+ return new _util_js__WEBPACK_IMPORTED_MODULE_0__.MissingPDFException(reason.message);
+ case "PasswordException":
+ return new _util_js__WEBPACK_IMPORTED_MODULE_0__.PasswordException(reason.message, reason.code);
+ case "UnexpectedResponseException":
+ return new _util_js__WEBPACK_IMPORTED_MODULE_0__.UnexpectedResponseException(reason.message, reason.status);
+ case "UnknownErrorException":
+ return new _util_js__WEBPACK_IMPORTED_MODULE_0__.UnknownErrorException(reason.message, reason.details);
+ default:
+ return new _util_js__WEBPACK_IMPORTED_MODULE_0__.UnknownErrorException(reason.message, reason.toString());
+ }
+}
+class MessageHandler {
+ constructor(sourceName, targetName, comObj) {
+ this.sourceName = sourceName;
+ this.targetName = targetName;
+ this.comObj = comObj;
+ this.callbackId = 1;
+ this.streamId = 1;
+ this.streamSinks = Object.create(null);
+ this.streamControllers = Object.create(null);
+ this.callbackCapabilities = Object.create(null);
+ this.actionHandler = Object.create(null);
+ this._onComObjOnMessage = event => {
+ const data = event.data;
+ if (data.targetName !== this.sourceName) {
+ return;
+ }
+ if (data.stream) {
+ this.#processStreamMessage(data);
+ return;
+ }
+ if (data.callback) {
+ const callbackId = data.callbackId;
+ const capability = this.callbackCapabilities[callbackId];
+ if (!capability) {
+ throw new Error(`Cannot resolve callback ${callbackId}`);
+ }
+ delete this.callbackCapabilities[callbackId];
+ if (data.callback === CallbackKind.DATA) {
+ capability.resolve(data.data);
+ } else if (data.callback === CallbackKind.ERROR) {
+ capability.reject(wrapReason(data.reason));
+ } else {
+ throw new Error("Unexpected callback case");
+ }
+ return;
+ }
+ const action = this.actionHandler[data.action];
+ if (!action) {
+ throw new Error(`Unknown action from worker: ${data.action}`);
+ }
+ if (data.callbackId) {
+ const cbSourceName = this.sourceName;
+ const cbTargetName = data.sourceName;
+ new Promise(function (resolve) {
+ resolve(action(data.data));
+ }).then(function (result) {
+ comObj.postMessage({
+ sourceName: cbSourceName,
+ targetName: cbTargetName,
+ callback: CallbackKind.DATA,
+ callbackId: data.callbackId,
+ data: result
+ });
+ }, function (reason) {
+ comObj.postMessage({
+ sourceName: cbSourceName,
+ targetName: cbTargetName,
+ callback: CallbackKind.ERROR,
+ callbackId: data.callbackId,
+ reason: wrapReason(reason)
+ });
+ });
+ return;
+ }
+ if (data.streamId) {
+ this.#createStreamSink(data);
+ return;
+ }
+ action(data.data);
+ };
+ comObj.addEventListener("message", this._onComObjOnMessage);
+ }
+ on(actionName, handler) {
+ const ah = this.actionHandler;
+ if (ah[actionName]) {
+ throw new Error(`There is already an actionName called "${actionName}"`);
+ }
+ ah[actionName] = handler;
+ }
+ send(actionName, data, transfers) {
+ this.comObj.postMessage({
+ sourceName: this.sourceName,
+ targetName: this.targetName,
+ action: actionName,
+ data
+ }, transfers);
+ }
+ sendWithPromise(actionName, data, transfers) {
+ const callbackId = this.callbackId++;
+ const capability = new _util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this.callbackCapabilities[callbackId] = capability;
+ try {
+ this.comObj.postMessage({
+ sourceName: this.sourceName,
+ targetName: this.targetName,
+ action: actionName,
+ callbackId,
+ data
+ }, transfers);
+ } catch (ex) {
+ capability.reject(ex);
+ }
+ return capability.promise;
+ }
+ sendWithStream(actionName, data, queueingStrategy, transfers) {
+ const streamId = this.streamId++,
+ sourceName = this.sourceName,
+ targetName = this.targetName,
+ comObj = this.comObj;
+ return new ReadableStream({
+ start: controller => {
+ const startCapability = new _util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this.streamControllers[streamId] = {
+ controller,
+ startCall: startCapability,
+ pullCall: null,
+ cancelCall: null,
+ isClosed: false
+ };
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ action: actionName,
+ streamId,
+ data,
+ desiredSize: controller.desiredSize
+ }, transfers);
+ return startCapability.promise;
+ },
+ pull: controller => {
+ const pullCapability = new _util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this.streamControllers[streamId].pullCall = pullCapability;
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.PULL,
+ streamId,
+ desiredSize: controller.desiredSize
+ });
+ return pullCapability.promise;
+ },
+ cancel: reason => {
+ (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(reason instanceof Error, "cancel must have a valid reason");
+ const cancelCapability = new _util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this.streamControllers[streamId].cancelCall = cancelCapability;
+ this.streamControllers[streamId].isClosed = true;
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.CANCEL,
+ streamId,
+ reason: wrapReason(reason)
+ });
+ return cancelCapability.promise;
+ }
+ }, queueingStrategy);
+ }
+ #createStreamSink(data) {
+ const streamId = data.streamId,
+ sourceName = this.sourceName,
+ targetName = data.sourceName,
+ comObj = this.comObj;
+ const self = this,
+ action = this.actionHandler[data.action];
+ const streamSink = {
+ enqueue(chunk, size = 1, transfers) {
+ if (this.isCancelled) {
+ return;
+ }
+ const lastDesiredSize = this.desiredSize;
+ this.desiredSize -= size;
+ if (lastDesiredSize > 0 && this.desiredSize <= 0) {
+ this.sinkCapability = new _util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability();
+ this.ready = this.sinkCapability.promise;
+ }
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.ENQUEUE,
+ streamId,
+ chunk
+ }, transfers);
+ },
+ close() {
+ if (this.isCancelled) {
+ return;
+ }
+ this.isCancelled = true;
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.CLOSE,
+ streamId
+ });
+ delete self.streamSinks[streamId];
+ },
+ error(reason) {
+ (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(reason instanceof Error, "error must have a valid reason");
+ if (this.isCancelled) {
+ return;
+ }
+ this.isCancelled = true;
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.ERROR,
+ streamId,
+ reason: wrapReason(reason)
+ });
+ },
+ sinkCapability: new _util_js__WEBPACK_IMPORTED_MODULE_0__.PromiseCapability(),
+ onPull: null,
+ onCancel: null,
+ isCancelled: false,
+ desiredSize: data.desiredSize,
+ ready: null
+ };
+ streamSink.sinkCapability.resolve();
+ streamSink.ready = streamSink.sinkCapability.promise;
+ this.streamSinks[streamId] = streamSink;
+ new Promise(function (resolve) {
+ resolve(action(data.data, streamSink));
+ }).then(function () {
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.START_COMPLETE,
+ streamId,
+ success: true
+ });
+ }, function (reason) {
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.START_COMPLETE,
+ streamId,
+ reason: wrapReason(reason)
+ });
+ });
+ }
+ #processStreamMessage(data) {
+ const streamId = data.streamId,
+ sourceName = this.sourceName,
+ targetName = data.sourceName,
+ comObj = this.comObj;
+ const streamController = this.streamControllers[streamId],
+ streamSink = this.streamSinks[streamId];
+ switch (data.stream) {
+ case StreamKind.START_COMPLETE:
+ if (data.success) {
+ streamController.startCall.resolve();
+ } else {
+ streamController.startCall.reject(wrapReason(data.reason));
+ }
+ break;
+ case StreamKind.PULL_COMPLETE:
+ if (data.success) {
+ streamController.pullCall.resolve();
+ } else {
+ streamController.pullCall.reject(wrapReason(data.reason));
+ }
+ break;
+ case StreamKind.PULL:
+ if (!streamSink) {
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.PULL_COMPLETE,
+ streamId,
+ success: true
+ });
+ break;
+ }
+ if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {
+ streamSink.sinkCapability.resolve();
+ }
+ streamSink.desiredSize = data.desiredSize;
+ new Promise(function (resolve) {
+ resolve(streamSink.onPull?.());
+ }).then(function () {
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.PULL_COMPLETE,
+ streamId,
+ success: true
+ });
+ }, function (reason) {
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.PULL_COMPLETE,
+ streamId,
+ reason: wrapReason(reason)
+ });
+ });
+ break;
+ case StreamKind.ENQUEUE:
+ (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(streamController, "enqueue should have stream controller");
+ if (streamController.isClosed) {
+ break;
+ }
+ streamController.controller.enqueue(data.chunk);
+ break;
+ case StreamKind.CLOSE:
+ (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(streamController, "close should have stream controller");
+ if (streamController.isClosed) {
+ break;
+ }
+ streamController.isClosed = true;
+ streamController.controller.close();
+ this.#deleteStreamController(streamController, streamId);
+ break;
+ case StreamKind.ERROR:
+ (0,_util_js__WEBPACK_IMPORTED_MODULE_0__.assert)(streamController, "error should have stream controller");
+ streamController.controller.error(wrapReason(data.reason));
+ this.#deleteStreamController(streamController, streamId);
+ break;
+ case StreamKind.CANCEL_COMPLETE:
+ if (data.success) {
+ streamController.cancelCall.resolve();
+ } else {
+ streamController.cancelCall.reject(wrapReason(data.reason));
+ }
+ this.#deleteStreamController(streamController, streamId);
+ break;
+ case StreamKind.CANCEL:
+ if (!streamSink) {
+ break;
+ }
+ new Promise(function (resolve) {
+ resolve(streamSink.onCancel?.(wrapReason(data.reason)));
+ }).then(function () {
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.CANCEL_COMPLETE,
+ streamId,
+ success: true
+ });
+ }, function (reason) {
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.CANCEL_COMPLETE,
+ streamId,
+ reason: wrapReason(reason)
+ });
+ });
+ streamSink.sinkCapability.reject(wrapReason(data.reason));
+ streamSink.isCancelled = true;
+ delete this.streamSinks[streamId];
+ break;
+ default:
+ throw new Error("Unexpected stream case");
+ }
+ }
+ async #deleteStreamController(streamController, streamId) {
+ await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);
+ delete this.streamControllers[streamId];
+ }
+ destroy() {
+ this.comObj.removeEventListener("message", this._onComObjOnMessage);
+ }
+}
+
+
+/***/ }),
+
+/***/ 825:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ MurmurHash3_64: () => (/* binding */ MurmurHash3_64)
+/* harmony export */ });
+/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(266);
+
+const SEED = 0xc3d2e1f0;
+const MASK_HIGH = 0xffff0000;
+const MASK_LOW = 0xffff;
+class MurmurHash3_64 {
+ constructor(seed) {
+ this.h1 = seed ? seed & 0xffffffff : SEED;
+ this.h2 = seed ? seed & 0xffffffff : SEED;
+ }
+ update(input) {
+ let data, length;
+ if (typeof input === "string") {
+ data = new Uint8Array(input.length * 2);
+ length = 0;
+ for (let i = 0, ii = input.length; i < ii; i++) {
+ const code = input.charCodeAt(i);
+ if (code <= 0xff) {
+ data[length++] = code;
+ } else {
+ data[length++] = code >>> 8;
+ data[length++] = code & 0xff;
+ }
+ }
+ } else if ((0,_util_js__WEBPACK_IMPORTED_MODULE_0__.isArrayBuffer)(input)) {
+ data = input.slice();
+ length = data.byteLength;
+ } else {
+ throw new Error("Wrong data format in MurmurHash3_64_update. " + "Input must be a string or array.");
+ }
+ const blockCounts = length >> 2;
+ const tailLength = length - blockCounts * 4;
+ const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);
+ let k1 = 0,
+ k2 = 0;
+ let h1 = this.h1,
+ h2 = this.h2;
+ const C1 = 0xcc9e2d51,
+ C2 = 0x1b873593;
+ const C1_LOW = C1 & MASK_LOW,
+ C2_LOW = C2 & MASK_LOW;
+ for (let i = 0; i < blockCounts; i++) {
+ if (i & 1) {
+ k1 = dataUint32[i];
+ k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;
+ k1 = k1 << 15 | k1 >>> 17;
+ k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;
+ h1 ^= k1;
+ h1 = h1 << 13 | h1 >>> 19;
+ h1 = h1 * 5 + 0xe6546b64;
+ } else {
+ k2 = dataUint32[i];
+ k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;
+ k2 = k2 << 15 | k2 >>> 17;
+ k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;
+ h2 ^= k2;
+ h2 = h2 << 13 | h2 >>> 19;
+ h2 = h2 * 5 + 0xe6546b64;
+ }
+ }
+ k1 = 0;
+ switch (tailLength) {
+ case 3:
+ k1 ^= data[blockCounts * 4 + 2] << 16;
+ case 2:
+ k1 ^= data[blockCounts * 4 + 1] << 8;
+ case 1:
+ k1 ^= data[blockCounts * 4];
+ k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;
+ k1 = k1 << 15 | k1 >>> 17;
+ k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;
+ if (blockCounts & 1) {
+ h1 ^= k1;
+ } else {
+ h2 ^= k1;
+ }
+ }
+ this.h1 = h1;
+ this.h2 = h2;
+ }
+ hexdigest() {
+ let h1 = this.h1,
+ h2 = this.h2;
+ h1 ^= h2 >>> 1;
+ h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;
+ h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;
+ h1 ^= h2 >>> 1;
+ h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;
+ h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;
+ h1 ^= h2 >>> 1;
+ return (h1 >>> 0).toString(16).padStart(8, "0") + (h2 >>> 0).toString(16).padStart(8, "0");
+ }
+}
+
+
+/***/ }),
+
+/***/ 266:
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ AbortException: () => (/* binding */ AbortException),
+/* harmony export */ AnnotationBorderStyleType: () => (/* binding */ AnnotationBorderStyleType),
+/* harmony export */ AnnotationEditorParamsType: () => (/* binding */ AnnotationEditorParamsType),
+/* harmony export */ AnnotationEditorPrefix: () => (/* binding */ AnnotationEditorPrefix),
+/* harmony export */ AnnotationEditorType: () => (/* binding */ AnnotationEditorType),
+/* harmony export */ AnnotationMode: () => (/* binding */ AnnotationMode),
+/* harmony export */ AnnotationPrefix: () => (/* binding */ AnnotationPrefix),
+/* harmony export */ AnnotationType: () => (/* binding */ AnnotationType),
+/* harmony export */ BaseException: () => (/* binding */ BaseException),
+/* harmony export */ CMapCompressionType: () => (/* binding */ CMapCompressionType),
+/* harmony export */ FONT_IDENTITY_MATRIX: () => (/* binding */ FONT_IDENTITY_MATRIX),
+/* harmony export */ FeatureTest: () => (/* binding */ FeatureTest),
+/* harmony export */ FormatError: () => (/* binding */ FormatError),
+/* harmony export */ IDENTITY_MATRIX: () => (/* binding */ IDENTITY_MATRIX),
+/* harmony export */ ImageKind: () => (/* binding */ ImageKind),
+/* harmony export */ InvalidPDFException: () => (/* binding */ InvalidPDFException),
+/* harmony export */ LINE_FACTOR: () => (/* binding */ LINE_FACTOR),
+/* harmony export */ MAX_IMAGE_SIZE_TO_CACHE: () => (/* binding */ MAX_IMAGE_SIZE_TO_CACHE),
+/* harmony export */ MissingPDFException: () => (/* binding */ MissingPDFException),
+/* harmony export */ OPS: () => (/* binding */ OPS),
+/* harmony export */ PasswordException: () => (/* binding */ PasswordException),
+/* harmony export */ PasswordResponses: () => (/* binding */ PasswordResponses),
+/* harmony export */ PermissionFlag: () => (/* binding */ PermissionFlag),
+/* harmony export */ PromiseCapability: () => (/* binding */ PromiseCapability),
+/* harmony export */ RenderingIntentFlag: () => (/* binding */ RenderingIntentFlag),
+/* harmony export */ TextRenderingMode: () => (/* binding */ TextRenderingMode),
+/* harmony export */ UnexpectedResponseException: () => (/* binding */ UnexpectedResponseException),
+/* harmony export */ UnknownErrorException: () => (/* binding */ UnknownErrorException),
+/* harmony export */ Util: () => (/* binding */ Util),
+/* harmony export */ VerbosityLevel: () => (/* binding */ VerbosityLevel),
+/* harmony export */ assert: () => (/* binding */ assert),
+/* harmony export */ bytesToString: () => (/* binding */ bytesToString),
+/* harmony export */ createValidAbsoluteUrl: () => (/* binding */ createValidAbsoluteUrl),
+/* harmony export */ getUuid: () => (/* binding */ getUuid),
+/* harmony export */ getVerbosityLevel: () => (/* binding */ getVerbosityLevel),
+/* harmony export */ info: () => (/* binding */ info),
+/* harmony export */ isArrayBuffer: () => (/* binding */ isArrayBuffer),
+/* harmony export */ isNodeJS: () => (/* binding */ isNodeJS),
+/* harmony export */ normalizeUnicode: () => (/* binding */ normalizeUnicode),
+/* harmony export */ objectFromMap: () => (/* binding */ objectFromMap),
+/* harmony export */ setVerbosityLevel: () => (/* binding */ setVerbosityLevel),
+/* harmony export */ shadow: () => (/* binding */ shadow),
+/* harmony export */ string32: () => (/* binding */ string32),
+/* harmony export */ stringToBytes: () => (/* binding */ stringToBytes),
+/* harmony export */ unreachable: () => (/* binding */ unreachable),
+/* harmony export */ warn: () => (/* binding */ warn)
+/* harmony export */ });
+/* unused harmony exports AnnotationActionEventType, AnnotationFieldFlag, AnnotationFlag, AnnotationReplyType, BASELINE_FACTOR, DocumentActionEventType, getModificationDate, isArrayEqual, LINE_DESCENT_FACTOR, objectSize, PageActionEventType, stringToPDFString, stringToUTF8String, utf8StringToString */
+const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser");
+const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
+const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
+const MAX_IMAGE_SIZE_TO_CACHE = 10e6;
+const LINE_FACTOR = 1.35;
+const LINE_DESCENT_FACTOR = 0.35;
+const BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;
+const RenderingIntentFlag = {
+ ANY: 0x01,
+ DISPLAY: 0x02,
+ PRINT: 0x04,
+ SAVE: 0x08,
+ ANNOTATIONS_FORMS: 0x10,
+ ANNOTATIONS_STORAGE: 0x20,
+ ANNOTATIONS_DISABLE: 0x40,
+ OPLIST: 0x100
+};
+const AnnotationMode = {
+ DISABLE: 0,
+ ENABLE: 1,
+ ENABLE_FORMS: 2,
+ ENABLE_STORAGE: 3
+};
+const AnnotationEditorPrefix = "pdfjs_internal_editor_";
+const AnnotationEditorType = {
+ DISABLE: -1,
+ NONE: 0,
+ FREETEXT: 3,
+ HIGHLIGHT: 9,
+ STAMP: 13,
+ INK: 15
+};
+const AnnotationEditorParamsType = {
+ RESIZE: 1,
+ CREATE: 2,
+ FREETEXT_SIZE: 11,
+ FREETEXT_COLOR: 12,
+ FREETEXT_OPACITY: 13,
+ INK_COLOR: 21,
+ INK_THICKNESS: 22,
+ INK_OPACITY: 23,
+ HIGHLIGHT_COLOR: 31,
+ HIGHLIGHT_DEFAULT_COLOR: 32
+};
+const PermissionFlag = {
+ PRINT: 0x04,
+ MODIFY_CONTENTS: 0x08,
+ COPY: 0x10,
+ MODIFY_ANNOTATIONS: 0x20,
+ FILL_INTERACTIVE_FORMS: 0x100,
+ COPY_FOR_ACCESSIBILITY: 0x200,
+ ASSEMBLE: 0x400,
+ PRINT_HIGH_QUALITY: 0x800
+};
+const TextRenderingMode = {
+ FILL: 0,
+ STROKE: 1,
+ FILL_STROKE: 2,
+ INVISIBLE: 3,
+ FILL_ADD_TO_PATH: 4,
+ STROKE_ADD_TO_PATH: 5,
+ FILL_STROKE_ADD_TO_PATH: 6,
+ ADD_TO_PATH: 7,
+ FILL_STROKE_MASK: 3,
+ ADD_TO_PATH_FLAG: 4
+};
+const ImageKind = {
+ GRAYSCALE_1BPP: 1,
+ RGB_24BPP: 2,
+ RGBA_32BPP: 3
+};
+const AnnotationType = {
+ TEXT: 1,
+ LINK: 2,
+ FREETEXT: 3,
+ LINE: 4,
+ SQUARE: 5,
+ CIRCLE: 6,
+ POLYGON: 7,
+ POLYLINE: 8,
+ HIGHLIGHT: 9,
+ UNDERLINE: 10,
+ SQUIGGLY: 11,
+ STRIKEOUT: 12,
+ STAMP: 13,
+ CARET: 14,
+ INK: 15,
+ POPUP: 16,
+ FILEATTACHMENT: 17,
+ SOUND: 18,
+ MOVIE: 19,
+ WIDGET: 20,
+ SCREEN: 21,
+ PRINTERMARK: 22,
+ TRAPNET: 23,
+ WATERMARK: 24,
+ THREED: 25,
+ REDACT: 26
+};
+const AnnotationReplyType = {
+ GROUP: "Group",
+ REPLY: "R"
+};
+const AnnotationFlag = {
+ INVISIBLE: 0x01,
+ HIDDEN: 0x02,
+ PRINT: 0x04,
+ NOZOOM: 0x08,
+ NOROTATE: 0x10,
+ NOVIEW: 0x20,
+ READONLY: 0x40,
+ LOCKED: 0x80,
+ TOGGLENOVIEW: 0x100,
+ LOCKEDCONTENTS: 0x200
+};
+const AnnotationFieldFlag = {
+ READONLY: 0x0000001,
+ REQUIRED: 0x0000002,
+ NOEXPORT: 0x0000004,
+ MULTILINE: 0x0001000,
+ PASSWORD: 0x0002000,
+ NOTOGGLETOOFF: 0x0004000,
+ RADIO: 0x0008000,
+ PUSHBUTTON: 0x0010000,
+ COMBO: 0x0020000,
+ EDIT: 0x0040000,
+ SORT: 0x0080000,
+ FILESELECT: 0x0100000,
+ MULTISELECT: 0x0200000,
+ DONOTSPELLCHECK: 0x0400000,
+ DONOTSCROLL: 0x0800000,
+ COMB: 0x1000000,
+ RICHTEXT: 0x2000000,
+ RADIOSINUNISON: 0x2000000,
+ COMMITONSELCHANGE: 0x4000000
+};
+const AnnotationBorderStyleType = {
+ SOLID: 1,
+ DASHED: 2,
+ BEVELED: 3,
+ INSET: 4,
+ UNDERLINE: 5
+};
+const AnnotationActionEventType = {
+ E: "Mouse Enter",
+ X: "Mouse Exit",
+ D: "Mouse Down",
+ U: "Mouse Up",
+ Fo: "Focus",
+ Bl: "Blur",
+ PO: "PageOpen",
+ PC: "PageClose",
+ PV: "PageVisible",
+ PI: "PageInvisible",
+ K: "Keystroke",
+ F: "Format",
+ V: "Validate",
+ C: "Calculate"
+};
+const DocumentActionEventType = {
+ WC: "WillClose",
+ WS: "WillSave",
+ DS: "DidSave",
+ WP: "WillPrint",
+ DP: "DidPrint"
+};
+const PageActionEventType = {
+ O: "PageOpen",
+ C: "PageClose"
+};
+const VerbosityLevel = {
+ ERRORS: 0,
+ WARNINGS: 1,
+ INFOS: 5
+};
+const CMapCompressionType = {
+ NONE: 0,
+ BINARY: 1
+};
+const OPS = {
+ dependency: 1,
+ setLineWidth: 2,
+ setLineCap: 3,
+ setLineJoin: 4,
+ setMiterLimit: 5,
+ setDash: 6,
+ setRenderingIntent: 7,
+ setFlatness: 8,
+ setGState: 9,
+ save: 10,
+ restore: 11,
+ transform: 12,
+ moveTo: 13,
+ lineTo: 14,
+ curveTo: 15,
+ curveTo2: 16,
+ curveTo3: 17,
+ closePath: 18,
+ rectangle: 19,
+ stroke: 20,
+ closeStroke: 21,
+ fill: 22,
+ eoFill: 23,
+ fillStroke: 24,
+ eoFillStroke: 25,
+ closeFillStroke: 26,
+ closeEOFillStroke: 27,
+ endPath: 28,
+ clip: 29,
+ eoClip: 30,
+ beginText: 31,
+ endText: 32,
+ setCharSpacing: 33,
+ setWordSpacing: 34,
+ setHScale: 35,
+ setLeading: 36,
+ setFont: 37,
+ setTextRenderingMode: 38,
+ setTextRise: 39,
+ moveText: 40,
+ setLeadingMoveText: 41,
+ setTextMatrix: 42,
+ nextLine: 43,
+ showText: 44,
+ showSpacedText: 45,
+ nextLineShowText: 46,
+ nextLineSetSpacingShowText: 47,
+ setCharWidth: 48,
+ setCharWidthAndBounds: 49,
+ setStrokeColorSpace: 50,
+ setFillColorSpace: 51,
+ setStrokeColor: 52,
+ setStrokeColorN: 53,
+ setFillColor: 54,
+ setFillColorN: 55,
+ setStrokeGray: 56,
+ setFillGray: 57,
+ setStrokeRGBColor: 58,
+ setFillRGBColor: 59,
+ setStrokeCMYKColor: 60,
+ setFillCMYKColor: 61,
+ shadingFill: 62,
+ beginInlineImage: 63,
+ beginImageData: 64,
+ endInlineImage: 65,
+ paintXObject: 66,
+ markPoint: 67,
+ markPointProps: 68,
+ beginMarkedContent: 69,
+ beginMarkedContentProps: 70,
+ endMarkedContent: 71,
+ beginCompat: 72,
+ endCompat: 73,
+ paintFormXObjectBegin: 74,
+ paintFormXObjectEnd: 75,
+ beginGroup: 76,
+ endGroup: 77,
+ beginAnnotation: 80,
+ endAnnotation: 81,
+ paintImageMaskXObject: 83,
+ paintImageMaskXObjectGroup: 84,
+ paintImageXObject: 85,
+ paintInlineImageXObject: 86,
+ paintInlineImageXObjectGroup: 87,
+ paintImageXObjectRepeat: 88,
+ paintImageMaskXObjectRepeat: 89,
+ paintSolidColorImageMask: 90,
+ constructPath: 91
+};
+const PasswordResponses = {
+ NEED_PASSWORD: 1,
+ INCORRECT_PASSWORD: 2
+};
+let verbosity = VerbosityLevel.WARNINGS;
+function setVerbosityLevel(level) {
+ if (Number.isInteger(level)) {
+ verbosity = level;
+ }
+}
+function getVerbosityLevel() {
+ return verbosity;
+}
+function info(msg) {
+ if (verbosity >= VerbosityLevel.INFOS) {
+ console.log(`Info: ${msg}`);
+ }
+}
+function warn(msg) {
+ if (verbosity >= VerbosityLevel.WARNINGS) {
+ console.log(`Warning: ${msg}`);
+ }
+}
+function unreachable(msg) {
+ throw new Error(msg);
+}
+function assert(cond, msg) {
+ if (!cond) {
+ unreachable(msg);
+ }
+}
+function _isValidProtocol(url) {
+ switch (url?.protocol) {
+ case "http:":
+ case "https:":
+ case "ftp:":
+ case "mailto:":
+ case "tel:":
+ return true;
+ default:
+ return false;
+ }
+}
+function createValidAbsoluteUrl(url, baseUrl = null, options = null) {
+ if (!url) {
+ return null;
+ }
+ try {
+ if (options && typeof url === "string") {
+ if (options.addDefaultProtocol && url.startsWith("www.")) {
+ const dots = url.match(/\./g);
+ if (dots?.length >= 2) {
+ url = `http://${url}`;
+ }
+ }
+ if (options.tryConvertEncoding) {
+ try {
+ url = stringToUTF8String(url);
+ } catch {}
+ }
+ }
+ const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);
+ if (_isValidProtocol(absoluteUrl)) {
+ return absoluteUrl;
+ }
+ } catch {}
+ return null;
+}
+function shadow(obj, prop, value, nonSerializable = false) {
+ Object.defineProperty(obj, prop, {
+ value,
+ enumerable: !nonSerializable,
+ configurable: true,
+ writable: false
+ });
+ return value;
+}
+const BaseException = function BaseExceptionClosure() {
+ function BaseException(message, name) {
+ if (this.constructor === BaseException) {
+ unreachable("Cannot initialize BaseException.");
+ }
+ this.message = message;
+ this.name = name;
+ }
+ BaseException.prototype = new Error();
+ BaseException.constructor = BaseException;
+ return BaseException;
+}();
+class PasswordException extends BaseException {
+ constructor(msg, code) {
+ super(msg, "PasswordException");
+ this.code = code;
+ }
+}
+class UnknownErrorException extends BaseException {
+ constructor(msg, details) {
+ super(msg, "UnknownErrorException");
+ this.details = details;
+ }
+}
+class InvalidPDFException extends BaseException {
+ constructor(msg) {
+ super(msg, "InvalidPDFException");
+ }
+}
+class MissingPDFException extends BaseException {
+ constructor(msg) {
+ super(msg, "MissingPDFException");
+ }
+}
+class UnexpectedResponseException extends BaseException {
+ constructor(msg, status) {
+ super(msg, "UnexpectedResponseException");
+ this.status = status;
+ }
+}
+class FormatError extends BaseException {
+ constructor(msg) {
+ super(msg, "FormatError");
+ }
+}
+class AbortException extends BaseException {
+ constructor(msg) {
+ super(msg, "AbortException");
+ }
+}
+function bytesToString(bytes) {
+ if (typeof bytes !== "object" || bytes?.length === undefined) {
+ unreachable("Invalid argument for bytesToString");
+ }
+ const length = bytes.length;
+ const MAX_ARGUMENT_COUNT = 8192;
+ if (length < MAX_ARGUMENT_COUNT) {
+ return String.fromCharCode.apply(null, bytes);
+ }
+ const strBuf = [];
+ for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {
+ const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);
+ const chunk = bytes.subarray(i, chunkEnd);
+ strBuf.push(String.fromCharCode.apply(null, chunk));
+ }
+ return strBuf.join("");
+}
+function stringToBytes(str) {
+ if (typeof str !== "string") {
+ unreachable("Invalid argument for stringToBytes");
+ }
+ const length = str.length;
+ const bytes = new Uint8Array(length);
+ for (let i = 0; i < length; ++i) {
+ bytes[i] = str.charCodeAt(i) & 0xff;
+ }
+ return bytes;
+}
+function string32(value) {
+ return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);
+}
+function objectSize(obj) {
+ return Object.keys(obj).length;
+}
+function objectFromMap(map) {
+ const obj = Object.create(null);
+ for (const [key, value] of map) {
+ obj[key] = value;
+ }
+ return obj;
+}
+function isLittleEndian() {
+ const buffer8 = new Uint8Array(4);
+ buffer8[0] = 1;
+ const view32 = new Uint32Array(buffer8.buffer, 0, 1);
+ return view32[0] === 1;
+}
+function isEvalSupported() {
+ try {
+ new Function("");
+ return true;
+ } catch {
+ return false;
+ }
+}
+class FeatureTest {
+ static get isLittleEndian() {
+ return shadow(this, "isLittleEndian", isLittleEndian());
+ }
+ static get isEvalSupported() {
+ return shadow(this, "isEvalSupported", isEvalSupported());
+ }
+ static get isOffscreenCanvasSupported() {
+ return shadow(this, "isOffscreenCanvasSupported", typeof OffscreenCanvas !== "undefined");
+ }
+ static get platform() {
+ if (typeof navigator !== "undefined" && typeof navigator?.platform === "string") {
+ return shadow(this, "platform", {
+ isMac: navigator.platform.includes("Mac")
+ });
+ }
+ return shadow(this, "platform", {
+ isMac: false
+ });
+ }
+ static get isCSSRoundSupported() {
+ return shadow(this, "isCSSRoundSupported", globalThis.CSS?.supports?.("width: round(1.5px, 1px)"));
+ }
+}
+const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0"));
+class Util {
+ static makeHexColor(r, g, b) {
+ return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;
+ }
+ static scaleMinMax(transform, minMax) {
+ let temp;
+ if (transform[0]) {
+ if (transform[0] < 0) {
+ temp = minMax[0];
+ minMax[0] = minMax[1];
+ minMax[1] = temp;
+ }
+ minMax[0] *= transform[0];
+ minMax[1] *= transform[0];
+ if (transform[3] < 0) {
+ temp = minMax[2];
+ minMax[2] = minMax[3];
+ minMax[3] = temp;
+ }
+ minMax[2] *= transform[3];
+ minMax[3] *= transform[3];
+ } else {
+ temp = minMax[0];
+ minMax[0] = minMax[2];
+ minMax[2] = temp;
+ temp = minMax[1];
+ minMax[1] = minMax[3];
+ minMax[3] = temp;
+ if (transform[1] < 0) {
+ temp = minMax[2];
+ minMax[2] = minMax[3];
+ minMax[3] = temp;
+ }
+ minMax[2] *= transform[1];
+ minMax[3] *= transform[1];
+ if (transform[2] < 0) {
+ temp = minMax[0];
+ minMax[0] = minMax[1];
+ minMax[1] = temp;
+ }
+ minMax[0] *= transform[2];
+ minMax[1] *= transform[2];
+ }
+ minMax[0] += transform[4];
+ minMax[1] += transform[4];
+ minMax[2] += transform[5];
+ minMax[3] += transform[5];
+ }
+ static transform(m1, m2) {
+ 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]];
+ }
+ static applyTransform(p, m) {
+ const xt = p[0] * m[0] + p[1] * m[2] + m[4];
+ const yt = p[0] * m[1] + p[1] * m[3] + m[5];
+ return [xt, yt];
+ }
+ static applyInverseTransform(p, m) {
+ const d = m[0] * m[3] - m[1] * m[2];
+ const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;
+ const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
+ return [xt, yt];
+ }
+ static getAxialAlignedBoundingBox(r, m) {
+ const p1 = this.applyTransform(r, m);
+ const p2 = this.applyTransform(r.slice(2, 4), m);
+ const p3 = this.applyTransform([r[0], r[3]], m);
+ const p4 = this.applyTransform([r[2], r[1]], m);
+ 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])];
+ }
+ static inverseTransform(m) {
+ const d = m[0] * m[3] - m[1] * m[2];
+ 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];
+ }
+ static singularValueDecompose2dScale(m) {
+ const transpose = [m[0], m[2], m[1], m[3]];
+ const a = m[0] * transpose[0] + m[1] * transpose[2];
+ const b = m[0] * transpose[1] + m[1] * transpose[3];
+ const c = m[2] * transpose[0] + m[3] * transpose[2];
+ const d = m[2] * transpose[1] + m[3] * transpose[3];
+ const first = (a + d) / 2;
+ const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;
+ const sx = first + second || 1;
+ const sy = first - second || 1;
+ return [Math.sqrt(sx), Math.sqrt(sy)];
+ }
+ static normalizeRect(rect) {
+ const r = rect.slice(0);
+ if (rect[0] > rect[2]) {
+ r[0] = rect[2];
+ r[2] = rect[0];
+ }
+ if (rect[1] > rect[3]) {
+ r[1] = rect[3];
+ r[3] = rect[1];
+ }
+ return r;
+ }
+ static intersect(rect1, rect2) {
+ const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));
+ const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));
+ if (xLow > xHigh) {
+ return null;
+ }
+ const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));
+ const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));
+ if (yLow > yHigh) {
+ return null;
+ }
+ return [xLow, yLow, xHigh, yHigh];
+ }
+ static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {
+ const tvalues = [],
+ bounds = [[], []];
+ let a, b, c, t, t1, t2, b2ac, sqrtb2ac;
+ for (let i = 0; i < 2; ++i) {
+ if (i === 0) {
+ b = 6 * x0 - 12 * x1 + 6 * x2;
+ a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;
+ c = 3 * x1 - 3 * x0;
+ } else {
+ b = 6 * y0 - 12 * y1 + 6 * y2;
+ a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;
+ c = 3 * y1 - 3 * y0;
+ }
+ if (Math.abs(a) < 1e-12) {
+ if (Math.abs(b) < 1e-12) {
+ continue;
+ }
+ t = -c / b;
+ if (0 < t && t < 1) {
+ tvalues.push(t);
+ }
+ continue;
+ }
+ b2ac = b * b - 4 * c * a;
+ sqrtb2ac = Math.sqrt(b2ac);
+ if (b2ac < 0) {
+ continue;
+ }
+ t1 = (-b + sqrtb2ac) / (2 * a);
+ if (0 < t1 && t1 < 1) {
+ tvalues.push(t1);
+ }
+ t2 = (-b - sqrtb2ac) / (2 * a);
+ if (0 < t2 && t2 < 1) {
+ tvalues.push(t2);
+ }
+ }
+ let j = tvalues.length,
+ mt;
+ const jlen = j;
+ while (j--) {
+ t = tvalues[j];
+ mt = 1 - t;
+ bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;
+ bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;
+ }
+ bounds[0][jlen] = x0;
+ bounds[1][jlen] = y0;
+ bounds[0][jlen + 1] = x3;
+ bounds[1][jlen + 1] = y3;
+ bounds[0].length = bounds[1].length = jlen + 2;
+ return [Math.min(...bounds[0]), Math.min(...bounds[1]), Math.max(...bounds[0]), Math.max(...bounds[1])];
+ }
+}
+const 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]));
+function stringToPDFString(str) {
+ if (str[0] >= "\xEF") {
+ let encoding;
+ if (str[0] === "\xFE" && str[1] === "\xFF") {
+ encoding = "utf-16be";
+ if (str.length % 2 === 1) {
+ str = str.slice(0, -1);
+ }
+ } else if (str[0] === "\xFF" && str[1] === "\xFE") {
+ encoding = "utf-16le";
+ if (str.length % 2 === 1) {
+ str = str.slice(0, -1);
+ }
+ } else if (str[0] === "\xEF" && str[1] === "\xBB" && str[2] === "\xBF") {
+ encoding = "utf-8";
+ }
+ if (encoding) {
+ try {
+ const decoder = new TextDecoder(encoding, {
+ fatal: true
+ });
+ const buffer = stringToBytes(str);
+ const decoded = decoder.decode(buffer);
+ if (!decoded.includes("\x1b")) {
+ return decoded;
+ }
+ return decoded.replaceAll(/\x1b[^\x1b]*(?:\x1b|$)/g, "");
+ } catch (ex) {
+ warn(`stringToPDFString: "${ex}".`);
+ }
+ }
+ }
+ const strBuf = [];
+ for (let i = 0, ii = str.length; i < ii; i++) {
+ const charCode = str.charCodeAt(i);
+ if (charCode === 0x1b) {
+ while (++i < ii && str.charCodeAt(i) !== 0x1b) {}
+ continue;
+ }
+ const code = PDFStringTranslateTable[charCode];
+ strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));
+ }
+ return strBuf.join("");
+}
+function stringToUTF8String(str) {
+ return decodeURIComponent(escape(str));
+}
+function utf8StringToString(str) {
+ return unescape(encodeURIComponent(str));
+}
+function isArrayBuffer(v) {
+ return typeof v === "object" && v?.byteLength !== undefined;
+}
+function isArrayEqual(arr1, arr2) {
+ if (arr1.length !== arr2.length) {
+ return false;
+ }
+ for (let i = 0, ii = arr1.length; i < ii; i++) {
+ if (arr1[i] !== arr2[i]) {
+ return false;
+ }
+ }
+ return true;
+}
+function getModificationDate(date = new Date()) {
+ 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")];
+ return buffer.join("");
+}
+class PromiseCapability {
+ #settled = false;
+ constructor() {
+ this.promise = new Promise((resolve, reject) => {
+ this.resolve = data => {
+ this.#settled = true;
+ resolve(data);
+ };
+ this.reject = reason => {
+ this.#settled = true;
+ reject(reason);
+ };
+ });
+ }
+ get settled() {
+ return this.#settled;
+ }
+}
+let NormalizeRegex = null;
+let NormalizationMap = null;
+function normalizeUnicode(str) {
+ if (!NormalizeRegex) {
+ 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;
+ NormalizationMap = new Map([["ſt", "ſt"]]);
+ }
+ return str.replaceAll(NormalizeRegex, (_, p1, p2) => {
+ return p1 ? p1.normalize("NFKC") : NormalizationMap.get(p2);
+ });
+}
+function getUuid() {
+ if (typeof crypto !== "undefined" && typeof crypto?.randomUUID === "function") {
+ return crypto.randomUUID();
+ }
+ const buf = new Uint8Array(32);
+ if (typeof crypto !== "undefined" && typeof crypto?.getRandomValues === "function") {
+ crypto.getRandomValues(buf);
+ } else {
+ for (let i = 0; i < 32; i++) {
+ buf[i] = Math.floor(Math.random() * 255);
+ }
+ }
+ return bytesToString(buf);
+}
+const AnnotationPrefix = "pdfjs_internal_id_";
+
+
+/***/ })
+
+/******/ });
+/************************************************************************/
+/******/ // The module cache
+/******/ var __webpack_module_cache__ = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/ // Check if module is in cache
+/******/ var cachedModule = __webpack_module_cache__[moduleId];
+/******/ if (cachedModule !== undefined) {
+/******/ return cachedModule.exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = __webpack_module_cache__[moduleId] = {
+/******/ // no module.id needed
+/******/ // no module.loaded needed
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/************************************************************************/
+/******/ /* webpack/runtime/async module */
+/******/ (() => {
+/******/ var webpackQueues = typeof Symbol === "function" ? Symbol("webpack queues") : "__webpack_queues__";
+/******/ var webpackExports = typeof Symbol === "function" ? Symbol("webpack exports") : "__webpack_exports__";
+/******/ var webpackError = typeof Symbol === "function" ? Symbol("webpack error") : "__webpack_error__";
+/******/ var resolveQueue = (queue) => {
+/******/ if(queue && queue.d < 1) {
+/******/ queue.d = 1;
+/******/ queue.forEach((fn) => (fn.r--));
+/******/ queue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));
+/******/ }
+/******/ }
+/******/ var wrapDeps = (deps) => (deps.map((dep) => {
+/******/ if(dep !== null && typeof dep === "object") {
+/******/ if(dep[webpackQueues]) return dep;
+/******/ if(dep.then) {
+/******/ var queue = [];
+/******/ queue.d = 0;
+/******/ dep.then((r) => {
+/******/ obj[webpackExports] = r;
+/******/ resolveQueue(queue);
+/******/ }, (e) => {
+/******/ obj[webpackError] = e;
+/******/ resolveQueue(queue);
+/******/ });
+/******/ var obj = {};
+/******/ obj[webpackQueues] = (fn) => (fn(queue));
+/******/ return obj;
+/******/ }
+/******/ }
+/******/ var ret = {};
+/******/ ret[webpackQueues] = x => {};
+/******/ ret[webpackExports] = dep;
+/******/ return ret;
+/******/ }));
+/******/ __webpack_require__.a = (module, body, hasAwait) => {
+/******/ var queue;
+/******/ hasAwait && ((queue = []).d = -1);
+/******/ var depQueues = new Set();
+/******/ var exports = module.exports;
+/******/ var currentDeps;
+/******/ var outerResolve;
+/******/ var reject;
+/******/ var promise = new Promise((resolve, rej) => {
+/******/ reject = rej;
+/******/ outerResolve = resolve;
+/******/ });
+/******/ promise[webpackExports] = exports;
+/******/ promise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise["catch"](x => {}));
+/******/ module.exports = promise;
+/******/ body((deps) => {
+/******/ currentDeps = wrapDeps(deps);
+/******/ var fn;
+/******/ var getResult = () => (currentDeps.map((d) => {
+/******/ if(d[webpackError]) throw d[webpackError];
+/******/ return d[webpackExports];
+/******/ }))
+/******/ var promise = new Promise((resolve) => {
+/******/ fn = () => (resolve(getResult));
+/******/ fn.r = 0;
+/******/ var fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));
+/******/ currentDeps.map((dep) => (dep[webpackQueues](fnQueue)));
+/******/ });
+/******/ return fn.r ? promise : getResult();
+/******/ }, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));
+/******/ queue && queue.d < 0 && (queue.d = 0);
+/******/ };
+/******/ })();
+/******/
+/******/ /* webpack/runtime/define property getters */
+/******/ (() => {
+/******/ // define getter functions for harmony exports
+/******/ __webpack_require__.d = (exports, definition) => {
+/******/ for(var key in definition) {
+/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
+/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
+/******/ }
+/******/ }
+/******/ };
+/******/ })();
+/******/
+/******/ /* webpack/runtime/hasOwnProperty shorthand */
+/******/ (() => {
+/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
+/******/ })();
+/******/
+/************************************************************************/
+/******/
+/******/ // startup
+/******/ // Load entry module and return exports
+/******/ // This entry module used 'module' so it can't be inlined
+/******/ var __webpack_exports__ = __webpack_require__(907);
+/******/ __webpack_exports__ = globalThis.pdfjsLib = await (globalThis.pdfjsLibPromise = __webpack_exports__);
+/******/ var __webpack_exports__AbortException = __webpack_exports__.AbortException;
+/******/ var __webpack_exports__AnnotationEditorLayer = __webpack_exports__.AnnotationEditorLayer;
+/******/ var __webpack_exports__AnnotationEditorParamsType = __webpack_exports__.AnnotationEditorParamsType;
+/******/ var __webpack_exports__AnnotationEditorType = __webpack_exports__.AnnotationEditorType;
+/******/ var __webpack_exports__AnnotationEditorUIManager = __webpack_exports__.AnnotationEditorUIManager;
+/******/ var __webpack_exports__AnnotationLayer = __webpack_exports__.AnnotationLayer;
+/******/ var __webpack_exports__AnnotationMode = __webpack_exports__.AnnotationMode;
+/******/ var __webpack_exports__CMapCompressionType = __webpack_exports__.CMapCompressionType;
+/******/ var __webpack_exports__ColorPicker = __webpack_exports__.ColorPicker;
+/******/ var __webpack_exports__DOMSVGFactory = __webpack_exports__.DOMSVGFactory;
+/******/ var __webpack_exports__DrawLayer = __webpack_exports__.DrawLayer;
+/******/ var __webpack_exports__FeatureTest = __webpack_exports__.FeatureTest;
+/******/ var __webpack_exports__GlobalWorkerOptions = __webpack_exports__.GlobalWorkerOptions;
+/******/ var __webpack_exports__ImageKind = __webpack_exports__.ImageKind;
+/******/ var __webpack_exports__InvalidPDFException = __webpack_exports__.InvalidPDFException;
+/******/ var __webpack_exports__MissingPDFException = __webpack_exports__.MissingPDFException;
+/******/ var __webpack_exports__OPS = __webpack_exports__.OPS;
+/******/ var __webpack_exports__Outliner = __webpack_exports__.Outliner;
+/******/ var __webpack_exports__PDFDataRangeTransport = __webpack_exports__.PDFDataRangeTransport;
+/******/ var __webpack_exports__PDFDateString = __webpack_exports__.PDFDateString;
+/******/ var __webpack_exports__PDFWorker = __webpack_exports__.PDFWorker;
+/******/ var __webpack_exports__PasswordResponses = __webpack_exports__.PasswordResponses;
+/******/ var __webpack_exports__PermissionFlag = __webpack_exports__.PermissionFlag;
+/******/ var __webpack_exports__PixelsPerInch = __webpack_exports__.PixelsPerInch;
+/******/ var __webpack_exports__PromiseCapability = __webpack_exports__.PromiseCapability;
+/******/ var __webpack_exports__RenderingCancelledException = __webpack_exports__.RenderingCancelledException;
+/******/ var __webpack_exports__UnexpectedResponseException = __webpack_exports__.UnexpectedResponseException;
+/******/ var __webpack_exports__Util = __webpack_exports__.Util;
+/******/ var __webpack_exports__VerbosityLevel = __webpack_exports__.VerbosityLevel;
+/******/ var __webpack_exports__XfaLayer = __webpack_exports__.XfaLayer;
+/******/ var __webpack_exports__build = __webpack_exports__.build;
+/******/ var __webpack_exports__createValidAbsoluteUrl = __webpack_exports__.createValidAbsoluteUrl;
+/******/ var __webpack_exports__fetchData = __webpack_exports__.fetchData;
+/******/ var __webpack_exports__getDocument = __webpack_exports__.getDocument;
+/******/ var __webpack_exports__getFilenameFromUrl = __webpack_exports__.getFilenameFromUrl;
+/******/ var __webpack_exports__getPdfFilenameFromUrl = __webpack_exports__.getPdfFilenameFromUrl;
+/******/ var __webpack_exports__getXfaPageViewport = __webpack_exports__.getXfaPageViewport;
+/******/ var __webpack_exports__isDataScheme = __webpack_exports__.isDataScheme;
+/******/ var __webpack_exports__isPdfFile = __webpack_exports__.isPdfFile;
+/******/ var __webpack_exports__noContextMenu = __webpack_exports__.noContextMenu;
+/******/ var __webpack_exports__normalizeUnicode = __webpack_exports__.normalizeUnicode;
+/******/ var __webpack_exports__renderTextLayer = __webpack_exports__.renderTextLayer;
+/******/ var __webpack_exports__setLayerDimensions = __webpack_exports__.setLayerDimensions;
+/******/ var __webpack_exports__shadow = __webpack_exports__.shadow;
+/******/ var __webpack_exports__updateTextLayer = __webpack_exports__.updateTextLayer;
+/******/ var __webpack_exports__version = __webpack_exports__.version;
+/******/ export { __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__CMapCompressionType as CMapCompressionType, __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__Outliner as Outliner, __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__PromiseCapability as PromiseCapability, __webpack_exports__RenderingCancelledException as RenderingCancelledException, __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__renderTextLayer as renderTextLayer, __webpack_exports__setLayerDimensions as setLayerDimensions, __webpack_exports__shadow as shadow, __webpack_exports__updateTextLayer as updateTextLayer, __webpack_exports__version as version };
+/******/
+
+//# sourceMappingURL=pdf.mjs.map
\ No newline at end of file
diff --git a/static/ips/assets/js/pdf-js/build/pdf.mjs.map b/static/ips/assets/js/pdf-js/build/pdf.mjs.map
new file mode 100644
index 00000000..f2ad858f
--- /dev/null
+++ b/static/ips/assets/js/pdf-js/build/pdf.mjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"pdf.mjs","mappings":"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","sources":["webpack://pdf.js/src/shared/scripting_utils.js","webpack://pdf.js/src/display/annotation_layer.js","webpack://pdf.js/src/display/annotation_storage.js","webpack://pdf.js/src/display/api.js","webpack://pdf.js/src/display/base_factory.js","webpack://pdf.js/src/display/pattern_helper.js","webpack://pdf.js/src/shared/image_utils.js","webpack://pdf.js/src/display/canvas.js","webpack://pdf.js/src/display/display_utils.js","webpack://pdf.js/src/display/draw_layer.js","webpack://pdf.js/src/display/editor/freetext.js","webpack://pdf.js/src/display/editor/highlight.js","webpack://pdf.js/src/display/editor/ink.js","webpack://pdf.js/src/display/editor/stamp.js","webpack://pdf.js/src/display/editor/annotation_editor_layer.js","webpack://pdf.js/src/display/editor/color_picker.js","webpack://pdf.js/src/display/editor/alt_text.js","webpack://pdf.js/src/display/editor/toolbar.js","webpack://pdf.js/src/display/editor/editor.js","webpack://pdf.js/src/display/editor/outliner.js","webpack://pdf.js/src/display/editor/tools.js","webpack://pdf.js/src/display/fetch_stream.js","webpack://pdf.js/src/display/font_loader.js","webpack://pdf.js/src/display/metadata.js","webpack://pdf.js/src/display/network.js","webpack://pdf.js/src/display/content_disposition.js","webpack://pdf.js/src/display/network_utils.js","webpack://pdf.js/src/display/node_stream.js","webpack://pdf.js/src/display/node_utils.js","webpack://pdf.js/src/display/optional_content_config.js","webpack://pdf.js/src/display/text_layer.js","webpack://pdf.js/src/display/transport_stream.js","webpack://pdf.js/src/display/worker_options.js","webpack://pdf.js/src/display/xfa_layer.js","webpack://pdf.js/src/display/xfa_text.js","webpack://pdf.js/src/pdf.js","webpack://pdf.js/src/shared/message_handler.js","webpack://pdf.js/src/shared/murmurhash3.js","webpack://pdf.js/src/shared/util.js","webpack://pdf.js/webpack/bootstrap","webpack://pdf.js/webpack/runtime/async module","webpack://pdf.js/webpack/runtime/define property getters","webpack://pdf.js/webpack/runtime/hasOwnProperty shorthand","webpack://pdf.js/webpack/before-startup","webpack://pdf.js/webpack/startup","webpack://pdf.js/webpack/after-startup"],"sourcesContent":["/* Copyright 2020 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/**\n * PLEASE NOTE: This file is currently imported in both the `../display/` and\n * `../scripting_api/` folders, hence be EXTREMELY careful about\n * introducing any dependencies here since that can lead to an\n * unexpected/unnecessary size increase of the *built* files.\n */\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255)\n .toString(16)\n .padStart(2, \"0\");\n}\n\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\n\n// PDF specifications section 10.3\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\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n\n static T_HTML() {\n return \"#00000000\";\n }\n\n static T_rgb() {\n return [null];\n }\n\n static CMYK_RGB([c, y, m, k]) {\n return [\n \"RGB\",\n 1 - Math.min(1, c + k),\n 1 - Math.min(1, m + k),\n 1 - Math.min(1, y + k),\n ];\n }\n\n static CMYK_rgb([c, y, m, k]) {\n return [\n scaleAndClamp(1 - Math.min(1, c + k)),\n scaleAndClamp(1 - Math.min(1, m + k)),\n scaleAndClamp(1 - Math.min(1, y + k)),\n ];\n }\n\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\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\nexport { ColorConverters };\n","/* 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/** @typedef {import(\"./api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport {\n AnnotationBorderStyleType,\n AnnotationEditorType,\n AnnotationPrefix,\n AnnotationType,\n FeatureTest,\n LINE_FACTOR,\n shadow,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n DOMSVGFactory,\n getFilenameFromUrl,\n PDFDateString,\n setLayerDimensions,\n} from \"./display_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { ColorConverters } from \"../shared/scripting_utils.js\";\nimport { XfaLayer } from \"./xfa_layer.js\";\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\n\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1],\n };\n}\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} [downloadManager]\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {Object} svgFactory\n * @property {boolean} [enableScripting]\n * @property {boolean} [hasJSActions]\n * @property {Object} [fieldObjects]\n */\n\nclass AnnotationElementFactory {\n /**\n * @param {AnnotationElementParameters} parameters\n * @returns {AnnotationElement}\n */\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n\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\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\n\nclass AnnotationElement {\n #hasBorder = false;\n\n constructor(\n parameters,\n {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false,\n } = {}\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\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n\n static _hasPopupData({ titleObj, contentsObj, richText }) {\n return !!(titleObj?.str || contentsObj?.str || richText?.str);\n }\n\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data);\n }\n\n /**\n * Create an empty container for the annotation's HTML element.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {HTMLElement} A section element.\n */\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: { page, viewport },\n } = this;\n\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\n // The accessibility manager will move the annotation in the DOM in\n // order to match the visual ordering.\n // But if an annotation is above an other one, then we must draw it\n // after the other one whatever the order is in the DOM, hence the\n // use of the z-index.\n container.style.zIndex = this.parent.zIndex++;\n\n if (this.data.popupRef) {\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n }\n\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n\n const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const { rotation } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n\n const { width, height } = getRectDims(data.rect);\n\n // Do *not* modify `data.rect`, since that will corrupt the annotation\n // position on subsequent calls to `_createContainer` (see issue 6804).\n const rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1],\n ]);\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n\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 container.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 container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n\n case AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n container.style.borderColor = Util.makeHexColor(\n borderColor[0] | 0,\n borderColor[1] | 0,\n borderColor[2] | 0\n );\n } else {\n // Transparent (invisible) border, so do not draw it at all.\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = `${(100 * (rect[0] - pageX)) / pageWidth}%`;\n container.style.top = `${(100 * (rect[1] - pageY)) / pageHeight}%`;\n\n const { rotation } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n container.style.width = `${(100 * width) / pageWidth}%`;\n container.style.height = `${(100 * height) / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n\n return container;\n }\n\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const { pageWidth, pageHeight } = this.parent.viewport.rawDims;\n const { width, height } = getRectDims(this.data.rect);\n\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\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\n\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\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] =\n ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray),\n });\n };\n\n return shadow(this, \"_commonActions\", {\n display: event => {\n const { display } = event.detail;\n // See scripting/constants.js for the values of `Display`.\n // 0 = visible, 1 = hidden, 2 = noPrint and 3 = noView.\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 { hidden } = 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({ preventScroll: false }), 0);\n },\n userName: event => {\n // tooltip\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\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\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n\n // Some properties may have been updated thanks to JS.\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\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 // The action has been consumed: no need to keep it.\n delete storedData[actionName];\n }\n }\n }\n\n /**\n * Create quadrilaterals from the annotation's quadpoints.\n *\n * @private\n * @memberof AnnotationElement\n */\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const { quadPoints } = this.data;\n if (!quadPoints) {\n return;\n }\n\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect;\n\n if (quadPoints.length === 1) {\n const [, { x: trX, y: trY }, { x: blX, y: blY }] = quadPoints[0];\n if (\n rectTrX === trX &&\n rectTrY === trY &&\n rectBlX === blX &&\n rectBlY === blY\n ) {\n // The quadpoints cover the whole annotation rectangle, so no need to\n // create a quadrilateral.\n return;\n }\n }\n\n const { style } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const { borderColor, borderWidth } = style;\n style.borderWidth = 0;\n svgBuffer = [\n \"url('data:image/svg+xml;utf8,\",\n `')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n\n /**\n * Create a popup for the annotation's HTML element. This is used for\n * annotations that do not have a Popup entry in the dictionary, but\n * are of a type that works with popups (such as Highlight annotations).\n *\n * @private\n * @memberof AnnotationElement\n */\n _createPopup() {\n const { container, data } = this;\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n\n const popup = 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\n /**\n * Render the annotation's HTML element(s).\n *\n * @public\n * @memberof AnnotationElement\n */\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n\n /**\n * @private\n * @returns {Array}\n */\n _getElementsByName(name, skipId = null) {\n const fields = [];\n\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const { page, id, exportValues } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue =\n typeof exportValues === \"string\" ? exportValues : null;\n\n const domElement = document.querySelector(\n `[data-element-id=\"${id}\"]`\n );\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n }\n return fields;\n }\n // Fallback to a regular DOM lookup, to ensure that the standalone\n // viewer components won't break.\n for (const domElement of document.getElementsByName(name)) {\n const { exportValue } = 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({ id, exportValue, domElement });\n }\n return fields;\n }\n\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n\n /**\n * Get the HTML element(s) which can trigger a popup when clicked or hovered.\n *\n * @public\n * @memberof AnnotationElement\n * @returns {Array|HTMLElement} An array of elements or an\n * element.\n */\n getElementsToTriggerPopup() {\n return this.container;\n }\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\n get _isEditable() {\n return false;\n }\n\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: { id: editId },\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId,\n });\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\n render() {\n const { data, linkService } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n\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 (\n data.actions &&\n (data.actions.Action ||\n data.actions[\"Mouse Up\"] ||\n data.actions[\"Mouse Down\"]) &&\n this.enableScripting &&\n this.hasJSActions\n ) {\n this._bindJSAction(link, data);\n isBound = true;\n }\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\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n\n return this.container;\n }\n\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n\n /**\n * Bind internal links to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} destination\n * @memberof LinkAnnotationElement\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 === /* isTooltipOnly = */ \"\") {\n this.#setInternalLink();\n }\n }\n\n /**\n * Bind named actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} action\n * @memberof LinkAnnotationElement\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\n /**\n * Bind attachments to the link element.\n * @param {Object} link\n * @param {Object} attachment\n * @param {str} [dest]\n */\n #bindAttachment(link, attachment, dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(\n attachment.content,\n attachment.filename,\n dest\n );\n return false;\n };\n this.#setInternalLink();\n }\n\n /**\n * Bind SetOCGState actions to the link element.\n * @param {Object} link\n * @param {Object} action\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\n /**\n * Bind JS actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} data\n * @memberof LinkAnnotationElement\n */\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([\n [\"Action\", \"onclick\"],\n [\"Mouse Up\", \"onmouseup\"],\n [\"Mouse Down\", \"onmousedown\"],\n ]);\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\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n\n if (!this._fieldObjects) {\n warn(\n `_bindResetFormAction - \"resetForm\" action not supported, ` +\n \"ensure that the `fieldObjects` parameter is provided.\"\n );\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n\n link.onclick = () => {\n otherClickAction?.();\n\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include,\n } = resetForm;\n\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 { id } 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\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const { id } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\": {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, { value });\n break;\n }\n case \"combobox\":\n case \"listbox\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n default:\n continue;\n }\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\n if (this.enableScripting) {\n // Update the values in the sandbox.\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\",\n },\n });\n }\n\n return false;\n };\n }\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true });\n }\n\n render() {\n this.container.classList.add(\"textAnnotation\");\n\n const image = document.createElement(\"img\");\n image.src =\n this.imageResourcesPath +\n \"annotation-\" +\n this.data.name.toLowerCase() +\n \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\n \"data-l10n-args\",\n JSON.stringify({ type: this.data.name })\n );\n\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.append(image);\n return this.container;\n }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n // Show only the container for unsupported field types.\n if (this.data.alternativeText) {\n this.container.title = this.data.alternativeText;\n }\n\n return this.container;\n }\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\n _getKeyModifier(event) {\n return FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n // Mouse events\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 // Non-mouse events\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\n if (!valueGetter) {\n return;\n }\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\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 ||= { focused: false };\n }\n this._setEventListener(\n element,\n elementData,\n baseName,\n eventName,\n getter\n );\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n // Ensure that elementData will have the correct value.\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\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor =\n color === null\n ? \"transparent\"\n : Util.makeHexColor(color[0], color[1], color[2]);\n }\n\n /**\n * Apply text styles to the text in the element.\n *\n * @private\n * @param {HTMLDivElement} element\n * @memberof TextWidgetAnnotationElement\n */\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const { fontColor } = this.data.defaultAppearanceData;\n const fontSize =\n this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;\n\n const style = element.style;\n\n // TODO: If the font-size is zero, calculate it based on the height and\n // width of the element.\n // Not setting `style.fontSize` will use the default font-size for now.\n\n // We don't use the font, as specified in the PDF document, for the \n // element. Hence using the original `fontSize` could look bad, which is why\n // it's instead based on the field height.\n // If the height is \"big\" then it could lead to a too big font size\n // so in this case use the one we've in the pdf (hence the min).\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(\n this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n );\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(\n fontSize,\n roundToOneDecimal(lineHeight / LINE_FACTOR)\n );\n } else {\n const height = Math.abs(\n this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n );\n computedFontSize = Math.min(\n fontSize,\n roundToOneDecimal(height / LINE_FACTOR)\n );\n }\n style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\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}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable =\n parameters.renderForms ||\n parameters.data.hasOwnCanvas ||\n (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n super(parameters, { isRenderable });\n }\n\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(\n base.name,\n /* skipId = */ base.id\n )) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, { [keyInStorage]: value });\n }\n }\n\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n this.container.classList.add(\"textWidgetAnnotation\");\n\n let element = null;\n if (this.renderForms) {\n // NOTE: We cannot set the values using `element.value` below, since it\n // prevents the AnnotationLayer rasterizer in `test/driver.js`\n // from parsing the elements correctly for the reference tests.\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\n let fieldFormattedValues =\n storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false,\n };\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\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n this._setRequired(element, this.data.required);\n\n if (maxLen) {\n element.maxLength = maxLen;\n }\n\n element.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n this.setPropertyOnSiblings(\n element,\n \"value\",\n event.target.value,\n \"value\"\n );\n elementData.formattedValue = null;\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n\n let blurListener = event => {\n const { formattedValue } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n // Reset the cursor position to the start of the field (issue 12359).\n event.target.scrollLeft = 0;\n };\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const { target } = 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\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, { value: elementData.userValue.toString() });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const { formattedValue } = event.detail;\n elementData.formattedValue = formattedValue;\n if (\n formattedValue !== null &&\n formattedValue !== undefined &&\n event.target !== document.activeElement\n ) {\n // Input hasn't the focus so display formatted string\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 { charLimit } = event.detail;\n const { target } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\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, { 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\n // Even if the field hasn't any actions\n // leaving it can still trigger some actions with Calculate\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n // If the key is one of Escape, Enter then the data are committed.\n // If we've a Tab then data will be committed on blur.\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n // When we've a multiline field, \"Enter\" key is a key as the other\n // hence we don't commit the data (Acrobat behaves the same way)\n // (see issue #15627).\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const { value } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n // Save the entered 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 { value } = 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\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const { data, target } = event;\n const { value, selectionStart, selectionEnd } = target;\n\n let selStart = selectionStart,\n selEnd = selectionEnd;\n\n switch (event.inputType) {\n // https://rawgit.com/w3c/input-events/v1/index.html#interface-InputEvent-Attributes\n case \"deleteWordBackward\": {\n const match = value\n .substring(0, selectionStart)\n .match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\": {\n const match = value\n .substring(selectionStart)\n .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\n // We handle the event ourselves.\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\n this._setEventListeners(\n element,\n elementData,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.value\n );\n }\n\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n\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\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n}\n\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: !!parameters.data.hasOwnCanvas });\n }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { 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 // The value has been changed through js and set in annotationStorage.\n value = value !== \"Off\";\n storage.setValue(id, { value });\n }\n\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n\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\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const checkbox of this._getElementsByName(name, /* skipId = */ id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, { value: curChecked });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\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, { value: event.target.checked });\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n null,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { 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 // The value has been changed through js and set in annotationStorage.\n value = value !== data.buttonValue;\n storage.setValue(id, { value });\n }\n\n if (value) {\n // It's possible that multiple radio buttons are checked.\n // So if this one is checked we just reset the other ones.\n // (see bug 1864136). Then when the other ones will be rendered they will\n // unchecked (because of their value in the storage).\n // Consequently, the first checked radio button will be the only checked\n // one.\n for (const radio of this._getElementsByName(\n data.fieldName,\n /* skipId = */ id\n )) {\n storage.setValue(radio.id, { value: false });\n }\n }\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n\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\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const radio of this._getElementsByName(name, /* skipId = */ id)) {\n storage.setValue(radio.id, { value: false });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked =\n defaultValue !== null &&\n defaultValue !== undefined &&\n defaultValue === data.buttonValue;\n });\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, { value: curChecked });\n }\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n null,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, { ignoreBorder: parameters.data.hasAppearance });\n }\n\n render() {\n // The rendering and functionality of a push button widget annotation is\n // equal to that of a link annotation, but may have more functionality, such\n // as performing actions on form fields (resetting, submitting, et cetera).\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n\n if (this.data.alternativeText) {\n container.title = this.data.alternativeText;\n }\n\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n\n return container;\n }\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { 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\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue,\n });\n\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n\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\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n\n if (!this.data.combo) {\n // List boxes have a size and (optionally) multiple selection.\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\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\n // Insert the options into the choice field.\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\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\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const { options, multiple } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1\n ? null\n : options[options.selectedIndex][name];\n }\n return Array.prototype.filter\n .call(options, option => option.selected)\n .map(option => option[name]);\n };\n\n let selectedValues = getValue(/* isExport */ false);\n\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => {\n return { displayValue: option.textContent, exportValue: option.value };\n });\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(/* isExport */ true),\n });\n selectedValues = getValue(/* isExport */ 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(\n options,\n option => option.selected\n );\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n items: getItems(event),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, { value: null, items: [] });\n selectedValues = getValue(/* isExport */ false);\n },\n insert(event) {\n const { index, displayValue, exportValue } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n items: getItems(event),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n items(event) {\n const { items } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const { displayValue, exportValue } = 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(/* isExport */ true),\n items: getItems(event),\n });\n selectedValues = getValue(/* isExport */ 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(/* isExport */ true),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(/* isExport */ true);\n storage.setValue(id, { value: exportValue });\n\n event.preventDefault();\n\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false,\n },\n });\n });\n\n this._setEventListeners(\n selectElement,\n null,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n [\"input\", \"Action\"],\n [\"input\", \"Validate\"],\n ],\n event => event.target.value\n );\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, { value: getValue(/* isExport */ true) });\n });\n }\n\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {\n // Just use the default font size...\n // it's a bit hard to guess what is a good size.\n }\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n\n this.container.append(selectElement);\n return this.container;\n }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const { data, elements } = parameters;\n super(parameters, { isRenderable: AnnotationElement._hasPopupData(data) });\n this.elements = elements;\n }\n\n render() {\n this.container.classList.add(\"popupAnnotation\");\n\n const 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\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n\n this.container.setAttribute(\n \"aria-controls\",\n elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\")\n );\n\n return this.container;\n }\n}\n\nclass PopupElement {\n #boundKeyDown = this.#keyDown.bind(this);\n\n #boundHide = this.#hide.bind(this);\n\n #boundShow = this.#show.bind(this);\n\n #boundToggle = this.#toggle.bind(this);\n\n #color = null;\n\n #container = null;\n\n #contentsObj = null;\n\n #dateObj = null;\n\n #elements = null;\n\n #parent = null;\n\n #parentRect = null;\n\n #pinned = false;\n\n #popup = null;\n\n #rect = null;\n\n #richText = null;\n\n #titleObj = null;\n\n #wasVisible = false;\n\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\n // The modification date is shown in the popup instead of the creation\n // date if it is available and can be parsed correctly, which is\n // consistent with other viewers such as Adobe Acrobat.\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n // Attach the event listeners to the trigger element.\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\n // Attach the event listener to toggle the popup with the keyboard.\n for (const element of elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n }\n\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n // Since the popup is lazily created, we need to ensure that it'll be\n // created and displayed during reference tests.\n this.#parent.popupShow.push(async () => {\n if (this.#container.hidden) {\n this.#show();\n }\n });\n }\n }\n\n render() {\n if (this.#popup) {\n return;\n }\n\n const {\n page: { view },\n viewport: {\n rawDims: { pageWidth, pageHeight, pageX, pageY },\n },\n } = this.#parent;\n const popup = (this.#popup = document.createElement(\"div\"));\n popup.className = \"popup\";\n\n if (this.#color) {\n const baseColor = (popup.style.outlineColor = Util.makeHexColor(\n ...this.#color\n ));\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")\n ) {\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n } else {\n // color-mix isn't supported in some browsers hence this version.\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-mix#browser_compatibility\n // TODO: Use color-mix when it's supported everywhere.\n // Enlighten the color.\n const BACKGROUND_ENLIGHT = 0.7;\n popup.style.backgroundColor = Util.makeHexColor(\n ...this.#color.map(c =>\n Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)\n )\n );\n }\n }\n\n const header = document.createElement(\"span\");\n header.className = \"header\";\n const title = document.createElement(\"h1\");\n header.append(title);\n ({ dir: title.dir, str: title.textContent } = this.#titleObj);\n popup.append(header);\n\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"popupDate\");\n modificationDate.setAttribute(\n \"data-l10n-id\",\n \"pdfjs-annotation-date-string\"\n );\n modificationDate.setAttribute(\n \"data-l10n-args\",\n JSON.stringify({\n date: this.#dateObj.toLocaleDateString(),\n time: this.#dateObj.toLocaleTimeString(),\n })\n );\n header.append(modificationDate);\n }\n\n const contentsObj = this.#contentsObj;\n const richText = this.#richText;\n if (\n richText?.str &&\n (!contentsObj?.str || contentsObj.str === richText.str)\n ) {\n XfaLayer.render({\n xfaHtml: richText.html,\n intent: \"richText\",\n div: popup,\n });\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n } else {\n const contents = this._formatContents(contentsObj);\n popup.append(contents);\n }\n\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\n const normalizedRect = Util.normalizeRect([\n rect[0],\n view[3] - rect[1] + view[1],\n rect[2],\n view[3] - rect[3] + view[1],\n ]);\n\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect\n ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION\n : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n\n const { style } = this.#container;\n style.left = `${(100 * (popupLeft - pageX)) / pageWidth}%`;\n style.top = `${(100 * (popupTop - pageY)) / pageHeight}%`;\n\n this.#container.append(popup);\n }\n\n /**\n * Format the contents of the popup by adding newlines where necessary.\n *\n * @private\n * @param {Object} contentsObj\n * @memberof PopupElement\n * @returns {HTMLParagraphElement}\n */\n _formatContents({ str, dir }) {\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\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n\n if (event.key === \"Enter\" || (event.key === \"Escape\" && this.#pinned)) {\n this.#toggle();\n }\n }\n\n /**\n * Toggle the visibility of the popup.\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\n /**\n * Show the popup.\n */\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#container.hidden = false;\n this.#container.style.zIndex =\n parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n\n /**\n * Hide the popup.\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 =\n parseInt(this.#container.style.zIndex) - 1000;\n }\n\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n\n maybeShow() {\n if (!this.#wasVisible) {\n return;\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n\n get isVisible() {\n return this.#container.hidden === false;\n }\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n\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\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this._editOnDoubleClick();\n\n return this.container;\n }\n\n get _isEditable() {\n return this.data.hasOwnCanvas;\n }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"lineAnnotation\");\n\n // Create an invisible line with the same starting and ending coordinates\n // that acts as the trigger for the popup. Only the line itself should\n // trigger the popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // PDF coordinates are calculated from a bottom left origin, so transform\n // the line coordinates to a top left origin for the SVG element.\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 // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n\n svg.append(line);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the line instead\n // of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#line;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"squareAnnotation\");\n\n // Create an invisible square with the same rectangle that acts as the\n // trigger for the popup. Only the square itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // The browser draws half of the borders inside the square and half of\n // the borders outside the square by default. This behavior cannot be\n // changed programmatically, so correct for that here.\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 // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n\n svg.append(square);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the square instead\n // of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#square;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"circleAnnotation\");\n\n // Create an invisible circle with the same ellipse that acts as the\n // trigger for the popup. Only the circle itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // The browser draws half of the borders inside the circle and half of\n // the borders outside the circle by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const circle = (this.#circle =\n 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 // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n\n svg.append(circle);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the circle instead\n // of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.classList.add(this.containerClassName);\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup. Only the polyline itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // Convert the vertices array to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n points = points.join(\" \");\n\n const polyline = (this.#polyline = this.svgFactory.createElement(\n this.svgElementName\n ));\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n svg.append(polyline);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(parameters);\n\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"caretAnnotation\");\n\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n #polylines = [];\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n\n this.containerClassName = \"inkAnnotation\";\n\n // Use the polyline SVG element since it allows us to use coordinates\n // directly and to draw both straight lines and curves.\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = AnnotationEditorType.INK;\n }\n\n render() {\n this.container.classList.add(this.containerClassName);\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n for (const inkList of data.inkLists) {\n // Convert the ink list to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n svg.append(polyline);\n }\n\n this.container.append(svg);\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.classList.add(\"highlightAnnotation\");\n return this.container;\n }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"stampAnnotation\");\n\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true });\n\n const { filename, content } = this.data.file;\n this.filename = getFilenameFromUrl(filename, /* onlyStripPath = */ true);\n this.content = content;\n\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n filename,\n content,\n });\n }\n\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n\n const { container, data } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n // Unfortunately it seems that it's not clearly specified exactly what\n // names are actually valid, since Table 184 contains:\n // Conforming readers shall provide predefined icon appearances for at\n // least the following standard names: GraphPushPin, PaperclipTag.\n // Additional names may be supported as well. Default value: PushPin.\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${\n /paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"\n }.svg`;\n\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(\n data.fillAlpha * 100\n )}%);`;\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n this.container.classList.add(\"hasFillAlpha\");\n }\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n\n const { isMac } = FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n\n container.append(trigger);\n return container;\n }\n\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n\n /**\n * Download the file attachment associated with this annotation.\n */\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPageProxy} page\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {boolean} [enableScripting] - Enable embedded script execution.\n * @property {boolean} [hasJSActions] - Some fields have JS actions.\n * The default value is `false`.\n * @property {Object> | null} [fieldObjects]\n * @property {Map} [annotationCanvasMap]\n * @property {TextAccessibilityManager} [accessibilityManager]\n */\n\n/**\n * Manage the layer containing all the annotations.\n */\nclass AnnotationLayer {\n #accessibilityManager = null;\n\n #annotationCanvasMap = null;\n\n #editableAnnotations = new Map();\n\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n page,\n viewport,\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"showPopups\", {\n value: async () => {\n for (const show of this.popupShow) {\n await show();\n }\n },\n });\n this.popupShow = [];\n }\n }\n\n #appendElement(element, id) {\n const contentElement = element.firstChild || element;\n contentElement.id = `${AnnotationPrefix}${id}`;\n\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(\n this.div,\n element,\n contentElement,\n /* isRemovable = */ false\n );\n }\n\n /**\n * Render a new annotation layer with all annotation elements.\n *\n * @param {AnnotationLayerParameters} params\n * @memberof AnnotationLayer\n */\n async render(params) {\n const { annotations } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n\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\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 { width, height } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue; // Ignore empty annotations.\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n // Ignore popup annotations without a corresponding annotation.\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n\n if (!element.isRenderable) {\n continue;\n }\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\n if (element.annotationEditorType > 0) {\n this.#editableAnnotations.set(element.data.id, element);\n }\n\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n this.#appendElement(rendered, data.id);\n }\n\n this.#setAnnotationCanvasMap();\n }\n\n /**\n * Update the annotation elements on existing annotation layer.\n *\n * @param {AnnotationLayerParameters} viewport\n * @memberof AnnotationLayer\n */\n update({ viewport }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, { rotation: viewport.rotation });\n\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\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\n const { firstChild } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else {\n firstChild.before(canvas);\n }\n }\n this.#annotationCanvasMap.clear();\n }\n\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n}\n\nexport {\n AnnotationLayer,\n FreeTextAnnotationElement,\n InkAnnotationElement,\n StampAnnotationElement,\n};\n","/* Copyright 2020 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\nimport { objectFromMap, unreachable } from \"../shared/util.js\";\nimport { AnnotationEditor } from \"./editor/editor.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined,\n});\n\n/**\n * Key/value storage for annotation data in forms.\n */\nclass AnnotationStorage {\n #modified = false;\n\n #storage = new Map();\n\n constructor() {\n // Callbacks to signal when the modification state is set or reset.\n // This is used by the viewer to only bind on `beforeunload` if forms\n // are actually edited to prevent doing so unconditionally since that\n // can have undesirable effects.\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n\n /**\n * Get the value for a given key if it exists, or return the default value.\n * @param {string} key\n * @param {Object} defaultValue\n * @returns {Object}\n */\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n\n return Object.assign(defaultValue, value);\n }\n\n /**\n * Get the value for a given key.\n * @param {string} key\n * @returns {Object}\n */\n getRawValue(key) {\n return this.#storage.get(key);\n }\n\n /**\n * Remove a value from the storage.\n * @param {string} key\n */\n remove(key) {\n this.#storage.delete(key);\n\n if (this.#storage.size === 0) {\n this.resetModified();\n }\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\n /**\n * Set the value for a given key\n * @param {string} key\n * @param {Object} value\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\n if (\n value instanceof AnnotationEditor &&\n typeof this.onAnnotationEditor === \"function\"\n ) {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n\n /**\n * Check if the storage contains the given key.\n * @param {string} key\n * @returns {boolean}\n */\n has(key) {\n return this.#storage.has(key);\n }\n\n /**\n * @returns {Object | null}\n */\n getAll() {\n return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n }\n\n /**\n * @param {Object} obj\n */\n setAll(obj) {\n for (const [key, val] of Object.entries(obj)) {\n this.setValue(key, val);\n }\n }\n\n get size() {\n return this.#storage.size;\n }\n\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\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\n /**\n * @returns {PrintAnnotationStorage}\n */\n get print() {\n return new PrintAnnotationStorage(this);\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\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\n for (const [key, val] of this.#storage) {\n const serialized =\n val instanceof AnnotationEditor\n ? val.serialize(/* isForCopying = */ false, context)\n : val;\n if (serialized) {\n map.set(key, serialized);\n\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n\n if (hasBitmap) {\n // We must transfer the bitmap data separately, since it can be changed\n // during serialization with SVG images.\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n\n return map.size > 0\n ? { map, hash: hash.hexdigest(), transfer }\n : SerializableEmpty;\n }\n}\n\n/**\n * A special `AnnotationStorage` for use during printing, where the serializable\n * data is *frozen* upon initialization, to prevent scripting from modifying its\n * contents. (Necessary since printing is triggered synchronously in browsers.)\n */\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n\n constructor(parent) {\n super();\n const { map, hash, transfer } = parent.serializable;\n // Create a *copy* of the data, since Objects are passed by reference in JS.\n const clone = structuredClone(map, transfer ? { transfer } : null);\n\n this.#serializable = { map: clone, hash, transfer };\n }\n\n /**\n * @returns {PrintAnnotationStorage}\n */\n // eslint-disable-next-line getter-return\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get serializable() {\n return this.#serializable;\n }\n}\n\nexport { AnnotationStorage, PrintAnnotationStorage, SerializableEmpty };\n","/* Copyright 2012 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/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n AnnotationMode,\n assert,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isNodeJS,\n MAX_IMAGE_SIZE_TO_CACHE,\n MissingPDFException,\n PasswordException,\n PromiseCapability,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n AnnotationStorage,\n PrintAnnotationStorage,\n SerializableEmpty,\n} from \"./annotation_storage.js\";\nimport {\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMFilterFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n isValidFetchUrl,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeFilterFactory,\n NodeStandardFontDataFactory,\n} from \"display-node_utils\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { PDFFetchStream } from \"display-fetch_stream\";\nimport { PDFNetworkStream } from \"display-network\";\nimport { PDFNodeStream } from \"display-node_stream\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\nconst DELAYED_CLEANUP_TIMEOUT = 5000; // ms\n\nconst DefaultCanvasFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeCanvasFactory\n : DOMCanvasFactory;\nconst DefaultCMapReaderFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeCMapReaderFactory\n : DOMCMapReaderFactory;\nconst DefaultFilterFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeFilterFactory\n : DOMFilterFactory;\nconst DefaultStandardFontDataFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeStandardFontDataFactory\n : DOMStandardFontDataFactory;\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef { TypedArray | ArrayBuffer | Array | string } BinaryData\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string | URL} [url] - The URL of the PDF.\n * @property {BinaryData} [data] - Binary PDF data.\n * Use TypedArrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n *\n * NOTE: If TypedArrays are used they will generally be transferred to the\n * worker-thread. This will help reduce main-thread memory usage, however\n * it will take ownership of the TypedArrays.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not. The default value is `true`.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [isOffscreenCanvasSupported] - Determines if we can use\n * `OffscreenCanvas` in the worker. Primarily used to improve performance of\n * image conversion/rendering.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {number} [canvasMaxAreaInBytes] - The integer value is used to\n * know when an image must be resized (uses `OffscreenCanvas` in the worker).\n * If it's -1 then a possibly slow algorithm is used to guess the max value.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n * when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object} [filterFactory] - A factory instance that will be used\n * to create SVG filters when rendering some images on the main canvas.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string | URL | TypedArray | ArrayBuffer | DocumentInitParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = { url: src };\n } else if (isArrayBuffer(src)) {\n src = { data: src };\n }\n }\n if (typeof src !== \"object\") {\n throw new Error(\"Invalid parameter in getDocument, need parameter object.\");\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n const task = new PDFDocumentLoadingTask();\n const { docId } = task;\n\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 =\n src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize =\n Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0\n ? src.rangeChunkSize\n : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n const docBaseUrl =\n typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl)\n ? src.docBaseUrl\n : 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 =\n typeof src.standardFontDataUrl === \"string\"\n ? src.standardFontDataUrl\n : null;\n const StandardFontDataFactory =\n src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize =\n Number.isInteger(src.maxImageSize) && src.maxImageSize > -1\n ? src.maxImageSize\n : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported =\n typeof src.isOffscreenCanvasSupported === \"boolean\"\n ? src.isOffscreenCanvasSupported\n : !isNodeJS;\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes)\n ? src.canvasMaxAreaInBytes\n : -1;\n const disableFontFace =\n 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\n // Parameters whose default values depend on other parameters.\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts =\n typeof src.useSystemFonts === \"boolean\"\n ? src.useSystemFonts\n : !isNodeJS && !disableFontFace;\n const useWorkerFetch =\n typeof src.useWorkerFetch === \"boolean\"\n ? src.useWorkerFetch\n : (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n (CMapReaderFactory === DOMCMapReaderFactory &&\n StandardFontDataFactory === DOMStandardFontDataFactory &&\n cMapUrl &&\n standardFontDataUrl &&\n isValidFetchUrl(cMapUrl, document.baseURI) &&\n isValidFetchUrl(standardFontDataUrl, document.baseURI));\n const canvasFactory =\n src.canvasFactory || new DefaultCanvasFactory({ ownerDocument });\n const filterFactory =\n src.filterFactory || new DefaultFilterFactory({ docId, ownerDocument });\n\n // Parameters only intended for development/testing purposes.\n const styleElement =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n ? src.styleElement\n : null;\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(verbosity);\n\n // Ensure that the various factories can be initialized, when necessary,\n // since the user may provide *custom* ones.\n const transportFactory = {\n canvasFactory,\n filterFactory,\n };\n if (!useWorkerFetch) {\n transportFactory.cMapReaderFactory = new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked,\n });\n transportFactory.standardFontDataFactory = new StandardFontDataFactory({\n baseUrl: standardFontDataUrl,\n });\n }\n\n if (!worker) {\n const workerParams = {\n verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n\n const fetchDocParams = {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\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 canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null,\n },\n };\n const transportParams = {\n ignoreErrors,\n isEvalSupported,\n disableFontFace,\n fontExtraProperties,\n enableXfa,\n ownerDocument,\n disableAutoFetch,\n pdfBug,\n styleElement,\n };\n\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(worker, fetchDocParams);\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length,\n initialData: rangeTransport.initialData,\n progressiveDone: rangeTransport.progressiveDone,\n contentDispositionFilename:\n rangeTransport.contentDispositionFilename,\n disableRange,\n disableStream,\n },\n rangeTransport\n );\n } else if (!data) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: createPDFNetworkStream\");\n }\n const createPDFNetworkStream = params => {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS\n ) {\n return new PDFNodeStream(params);\n }\n return isValidFetchUrl(params.url)\n ? new PDFFetchStream(params)\n : new PDFNetworkStream(params);\n };\n\n networkStream = createPDFNetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n transportParams,\n transportFactory\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @returns {Promise} A promise that is resolved when the worker ID of\n * the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n source,\n source.data ? [source.data.buffer] : null\n );\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\nfunction getUrlProp(val) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return null; // The 'url' is unused with `PDFDataRangeTransport`.\n }\n if (val instanceof URL) {\n return val.href;\n }\n try {\n // The full path is required in the 'url' field.\n return new URL(val, window.location).href;\n } catch {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof val === \"string\"\n ) {\n return val; // Use the url as-is in Node.js environments.\n }\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n}\n\nfunction getDataProp(val) {\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n val instanceof Buffer // eslint-disable-line no-undef\n ) {\n throw new Error(\n \"Please provide binary data as `Uint8Array`, rather than `Buffer`.\"\n );\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n // Use the data as-is when it's already a Uint8Array that completely\n // \"utilizes\" its underlying ArrayBuffer, to prevent any possible\n // issues when transferring it to the worker-thread.\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if ((typeof val === \"object\" && !isNaN(val?.length)) || isArrayBuffer(val)) {\n return new Uint8Array(val);\n }\n throw new Error(\n \"Invalid PDF binary data: either TypedArray, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n\n constructor() {\n this._capability = new PromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Abort all network requests and destroy the worker.\n * @returns {Promise} A promise that is resolved when destruction is\n * completed.\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\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\n\n/**\n * Abstract class to support range requests file loading.\n *\n * NOTE: The TypedArrays passed to the constructor and relevant methods below\n * will generally be transferred to the worker-thread. This will help reduce\n * main-thread memory usage, however it will take ownership of the TypedArrays.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array|null} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = new PromiseCapability();\n }\n\n /**\n * @param {function} listener\n */\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n /**\n * @param {number} begin\n * @param {Uint8Array|null} chunk\n */\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n /**\n * @param {number} loaded\n * @param {number|undefined} total\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\n /**\n * @param {Uint8Array|null} chunk\n */\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n /**\n * @param {number} begin\n * @param {number} end\n */\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"getXFADatasets\", {\n value: () => {\n return this._transport.getXFADatasets();\n },\n });\n Object.defineProperty(this, \"getXRefPrevValue\", {\n value: () => {\n return this._transport.getXRefPrevValue();\n },\n });\n Object.defineProperty(this, \"getAnnotArray\", {\n value: pageIndex => {\n return this._transport.getAnnotArray(pageIndex);\n },\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {Object} The filter factory instance.\n */\n get filterFactory() {\n return this._transport.filterFactory;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n\n /**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n *\n * @type {Object | null} An object representing a HTML tree structure\n * to render the XFA, or `null` when no XFA form exists.\n */\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {RefProxy} ref - The page reference.\n * @returns {Promise} A promise that is resolved with the page index,\n * starting from zero, that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise