@chialab/pdfjs-lib 1.0.0-alpha.10 → 1.0.0-alpha.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/browser/{chunk-AK2AE3GS.js → chunk-TKDBOXH4.js} +31 -39
  2. package/dist/browser/index.js +632 -489
  3. package/dist/browser/openjpeg-K2XBCFFN.js +9 -0
  4. package/dist/browser/qcms_bg-Q7BRLLZG.js +9 -0
  5. package/dist/browser/worker.js +1261 -1122
  6. package/dist/index.d.ts +1 -0
  7. package/dist/lib/WasmFactory.d.ts +5 -0
  8. package/dist/lib/utils.d.ts +6 -0
  9. package/dist/node/{chunk-WL32POZ2.js → chunk-MAMMG4XK.js} +31 -39
  10. package/dist/node/index.js +773 -491
  11. package/dist/node/openjpeg-B2WN24QZ.js +9 -0
  12. package/dist/node/qcms_bg-T4RSHPOQ.js +9 -0
  13. package/dist/node/worker.js +1261 -1122
  14. package/dist/pdf.js/src/display/annotation_storage.d.ts +1 -8
  15. package/dist/pdf.js/src/display/api.d.ts +10 -69
  16. package/dist/pdf.js/src/display/api_utils.d.ts +13 -0
  17. package/dist/pdf.js/src/display/canvas.d.ts +2 -2
  18. package/dist/pdf.js/src/display/display_utils.d.ts +2 -1
  19. package/dist/pdf.js/src/display/editor/annotation_editor_layer.d.ts +4 -4
  20. package/dist/pdf.js/src/display/editor/editor.d.ts +17 -3
  21. package/dist/pdf.js/src/display/editor/freetext.d.ts +2 -5
  22. package/dist/pdf.js/src/display/editor/tools.d.ts +2 -1
  23. package/dist/pdf.js/src/display/metadata.d.ts +1 -2
  24. package/dist/pdf.js/src/display/optional_content_config.d.ts +1 -1
  25. package/dist/pdf.js/src/display/pdf_objects.d.ts +40 -0
  26. package/dist/pdf.js/src/display/text_layer.d.ts +9 -9
  27. package/dist/pdf.js/src/display/worker_options.d.ts +2 -2
  28. package/dist/pdf.js/src/pdf.d.ts +3 -2
  29. package/dist/pdf.js/src/shared/util.d.ts +12 -5
  30. package/package.json +1 -1
@@ -36,16 +36,16 @@ import {
36
36
  info,
37
37
  isNodeJS,
38
38
  normalizeUnicode,
39
- objectFromMap,
40
39
  setVerbosityLevel,
41
40
  shadow,
42
41
  string32,
43
42
  stringToBytes,
44
43
  toBase64Util,
45
44
  unreachable,
45
+ updateUrlHash,
46
46
  warn,
47
47
  wrapReason
48
- } from "./chunk-WL32POZ2.js";
48
+ } from "./chunk-MAMMG4XK.js";
49
49
  import {
50
50
  __privateAdd,
51
51
  __privateGet,
@@ -367,6 +367,9 @@ function stopEvent(e) {
367
367
  e.preventDefault();
368
368
  e.stopPropagation();
369
369
  }
370
+ function deprecated(details) {
371
+ console.log("Deprecated API usage: " + details);
372
+ }
370
373
  var _regex;
371
374
  var PDFDateString = class {
372
375
  /**
@@ -464,6 +467,7 @@ function getRGB(color) {
464
467
  function getColorValues(colors) {
465
468
  const span = document.createElement("span");
466
469
  span.style.visibility = "hidden";
470
+ span.style.colorScheme = "only light";
467
471
  document.body.append(span);
468
472
  for (const name of colors.keys()) {
469
473
  span.style.color = name;
@@ -522,8 +526,9 @@ var OutputScale = class _OutputScale {
522
526
  * @returns {boolean} Returns `true` if scaling was limited,
523
527
  * `false` otherwise.
524
528
  */
525
- limitCanvas(width, height, maxPixels, maxDim) {
529
+ limitCanvas(width, height, maxPixels, maxDim, capAreaFactor = -1) {
526
530
  let maxAreaScale = Infinity, maxWidthScale = Infinity, maxHeightScale = Infinity;
531
+ maxPixels = _OutputScale.capPixels(maxPixels, capAreaFactor);
527
532
  if (maxPixels > 0) {
528
533
  maxAreaScale = Math.sqrt(maxPixels / (width * height));
529
534
  }
@@ -542,6 +547,15 @@ var OutputScale = class _OutputScale {
542
547
  static get pixelRatio() {
543
548
  return globalThis.devicePixelRatio || 1;
544
549
  }
550
+ static capPixels(maxPixels, capAreaFactor) {
551
+ if (capAreaFactor >= 0) {
552
+ const winPixels = Math.ceil(
553
+ (false ? window.innerWidth * window.innerHeight : window.screen.availWidth * window.screen.availHeight) * this.pixelRatio ** 2 * (1 + capAreaFactor / 100)
554
+ );
555
+ return maxPixels > 0 ? Math.min(maxPixels, winPixels) : winPixels;
556
+ }
557
+ return maxPixels;
558
+ }
545
559
  };
546
560
  var SupportedImageMimeTypes = [
547
561
  "image/apng",
@@ -1950,6 +1964,7 @@ var _AnnotationEditorUIManager = class _AnnotationEditorUIManager {
1950
1964
  }
1951
1965
  }
1952
1966
  __privateSet(this, _updateModeCapability, Promise.withResolvers());
1967
+ __privateGet(this, _currentDrawingSession)?.commitOrRemove();
1953
1968
  __privateSet(this, _mode, mode);
1954
1969
  if (mode === AnnotationEditorType.NONE) {
1955
1970
  this.setEditingState(false);
@@ -1975,7 +1990,7 @@ var _AnnotationEditorUIManager = class _AnnotationEditorUIManager {
1975
1990
  return;
1976
1991
  }
1977
1992
  for (const editor of __privateGet(this, _allEditors).values()) {
1978
- if (editor.annotationElementId === editId) {
1993
+ if (editor.annotationElementId === editId || editor.id === editId) {
1979
1994
  this.setSelected(editor);
1980
1995
  editor.enterInEditMode();
1981
1996
  } else {
@@ -1991,16 +2006,17 @@ var _AnnotationEditorUIManager = class _AnnotationEditorUIManager {
1991
2006
  }
1992
2007
  /**
1993
2008
  * Update the toolbar if it's required to reflect the tool currently used.
2009
+ * @param {Object} options
1994
2010
  * @param {number} mode
1995
2011
  * @returns {undefined}
1996
2012
  */
1997
- updateToolbar(mode) {
1998
- if (mode === __privateGet(this, _mode)) {
2013
+ updateToolbar(options) {
2014
+ if (options.mode === __privateGet(this, _mode)) {
1999
2015
  return;
2000
2016
  }
2001
2017
  this._eventBus.dispatch("switchannotationeditormode", {
2002
2018
  source: this,
2003
- mode
2019
+ ...options
2004
2020
  });
2005
2021
  }
2006
2022
  /**
@@ -3390,9 +3406,11 @@ onTouchEnd_fn = function(evt) {
3390
3406
  if (evt.touches.length >= 2) {
3391
3407
  return;
3392
3408
  }
3393
- __privateGet(this, _touchMoveAC).abort();
3394
- __privateSet(this, _touchMoveAC, null);
3395
- (_a2 = __privateGet(this, _onPinchEnd)) == null ? void 0 : _a2.call(this);
3409
+ if (__privateGet(this, _touchMoveAC)) {
3410
+ __privateGet(this, _touchMoveAC).abort();
3411
+ __privateSet(this, _touchMoveAC, null);
3412
+ (_a2 = __privateGet(this, _onPinchEnd)) == null ? void 0 : _a2.call(this);
3413
+ }
3396
3414
  if (!__privateGet(this, _touchInfo)) {
3397
3415
  return;
3398
3416
  }
@@ -3432,6 +3450,7 @@ var _AnnotationEditor = class _AnnotationEditor {
3432
3450
  __privateAdd(this, _prevDragY, 0);
3433
3451
  __privateAdd(this, _telemetryTimeouts, null);
3434
3452
  __privateAdd(this, _touchManager, null);
3453
+ __publicField(this, "isSelected", false);
3435
3454
  __publicField(this, "_isCopy", false);
3436
3455
  __publicField(this, "_editToolbar", null);
3437
3456
  __publicField(this, "_initialOptions", /* @__PURE__ */ Object.create(null));
@@ -4052,7 +4071,7 @@ var _AnnotationEditor = class _AnnotationEditor {
4052
4071
  }
4053
4072
  const [tx, ty] = this.getInitialTranslation();
4054
4073
  this.translate(tx, ty);
4055
- bindEvents(this, div, ["keydown", "pointerdown"]);
4074
+ bindEvents(this, div, ["keydown", "pointerdown", "dblclick"]);
4056
4075
  if (this.isResizable && this._uiManager._supportsPinchToZoom) {
4057
4076
  __privateGet(this, _touchManager) || __privateSet(this, _touchManager, new TouchManager({
4058
4077
  container: div,
@@ -4083,9 +4102,6 @@ var _AnnotationEditor = class _AnnotationEditor {
4083
4102
  }
4084
4103
  __privateMethod(this, _AnnotationEditor_instances, selectOnPointerEvent_fn).call(this, event);
4085
4104
  }
4086
- get isSelected() {
4087
- return this._uiManager.isSelected(this);
4088
- }
4089
4105
  _onStartDragging() {
4090
4106
  }
4091
4107
  _onStopDragging() {
@@ -4192,15 +4208,27 @@ var _AnnotationEditor = class _AnnotationEditor {
4192
4208
  }
4193
4209
  /**
4194
4210
  * Enable edit mode.
4211
+ * @returns {boolean} - true if the edit mode has been enabled.
4195
4212
  */
4196
4213
  enableEditMode() {
4214
+ if (this.isInEditMode()) {
4215
+ return false;
4216
+ }
4217
+ this.parent.setEditingState(false);
4197
4218
  __privateSet(this, _isInEditMode, true);
4219
+ return true;
4198
4220
  }
4199
4221
  /**
4200
4222
  * Disable edit mode.
4223
+ * @returns {boolean} - true if the edit mode has been disabled.
4201
4224
  */
4202
4225
  disableEditMode() {
4226
+ if (!this.isInEditMode()) {
4227
+ return false;
4228
+ }
4229
+ this.parent.setEditingState(true);
4203
4230
  __privateSet(this, _isInEditMode, false);
4231
+ return true;
4204
4232
  }
4205
4233
  /**
4206
4234
  * Check if the editor is edited.
@@ -4441,6 +4469,10 @@ var _AnnotationEditor = class _AnnotationEditor {
4441
4469
  * Select this editor.
4442
4470
  */
4443
4471
  select() {
4472
+ if (this.isSelected && this._editToolbar) {
4473
+ return;
4474
+ }
4475
+ this.isSelected = true;
4444
4476
  this.makeResizable();
4445
4477
  this.div?.classList.add("selectedEditor");
4446
4478
  if (!this._editToolbar) {
@@ -4458,6 +4490,10 @@ var _AnnotationEditor = class _AnnotationEditor {
4458
4490
  * Unselect this editor.
4459
4491
  */
4460
4492
  unselect() {
4493
+ if (!this.isSelected) {
4494
+ return;
4495
+ }
4496
+ this.isSelected = false;
4461
4497
  __privateGet(this, _resizersDiv)?.classList.add("hidden");
4462
4498
  this.div?.classList.remove("selectedEditor");
4463
4499
  if (this.div?.contains(document.activeElement)) {
@@ -4487,10 +4523,35 @@ var _AnnotationEditor = class _AnnotationEditor {
4487
4523
  */
4488
4524
  enableEditing() {
4489
4525
  }
4526
+ /**
4527
+ * Check if the content of this editor can be changed.
4528
+ * For example, a FreeText editor can be changed (the user can change the
4529
+ * text), but a Stamp editor cannot.
4530
+ * @returns {boolean}
4531
+ */
4532
+ get canChangeContent() {
4533
+ return false;
4534
+ }
4490
4535
  /**
4491
4536
  * The editor is about to be edited.
4492
4537
  */
4493
4538
  enterInEditMode() {
4539
+ if (!this.canChangeContent) {
4540
+ return;
4541
+ }
4542
+ this.enableEditMode();
4543
+ this.div.focus();
4544
+ }
4545
+ /**
4546
+ * ondblclick callback.
4547
+ * @param {MouseEvent} event
4548
+ */
4549
+ dblclick(event) {
4550
+ this.enterInEditMode();
4551
+ this.parent.updateToolbar({
4552
+ mode: this.constructor._editorType,
4553
+ editId: this.id
4554
+ });
4494
4555
  }
4495
4556
  /**
4496
4557
  * @returns {HTMLElement | null} the element requiring an alt text.
@@ -5131,6 +5192,15 @@ var AnnotationStorage = class {
5131
5192
  this.onSetModified = null;
5132
5193
  this.onResetModified = null;
5133
5194
  this.onAnnotationEditor = null;
5195
+ if (false) {
5196
+ Object.defineProperty(this, "_setValues", {
5197
+ value: (obj) => {
5198
+ for (const [key, val] of Object.entries(obj)) {
5199
+ this.setValue(key, val);
5200
+ }
5201
+ }
5202
+ });
5203
+ }
5134
5204
  }
5135
5205
  /**
5136
5206
  * Get the value for a given key if it exists, or return the default value.
@@ -5205,20 +5275,6 @@ var AnnotationStorage = class {
5205
5275
  has(key) {
5206
5276
  return __privateGet(this, _storage).has(key);
5207
5277
  }
5208
- /**
5209
- * @returns {Object | null}
5210
- */
5211
- getAll() {
5212
- return __privateGet(this, _storage).size > 0 ? objectFromMap(__privateGet(this, _storage)) : null;
5213
- }
5214
- /**
5215
- * @param {Object} obj
5216
- */
5217
- setAll(obj) {
5218
- for (const [key, val] of Object.entries(obj)) {
5219
- this.setValue(key, val);
5220
- }
5221
- }
5222
5278
  get size() {
5223
5279
  return __privateGet(this, _storage).size;
5224
5280
  }
@@ -5325,6 +5381,9 @@ var AnnotationStorage = class {
5325
5381
  hash: ids.join(",")
5326
5382
  });
5327
5383
  }
5384
+ [Symbol.iterator]() {
5385
+ return __privateGet(this, _storage).entries();
5386
+ }
5328
5387
  };
5329
5388
  _modified = new WeakMap();
5330
5389
  _modifiedIds = new WeakMap();
@@ -6050,6 +6109,110 @@ var FontFaceObject = class {
6050
6109
  }
6051
6110
  };
6052
6111
 
6112
+ // src/pdf.js/src/display/api_utils.js
6113
+ function getUrlProp(val) {
6114
+ if (false) {
6115
+ return null;
6116
+ }
6117
+ if (val instanceof URL) {
6118
+ return val.href;
6119
+ }
6120
+ if (typeof val === "string") {
6121
+ if (isNodeJS) {
6122
+ return val;
6123
+ }
6124
+ const url = URL.parse(val, window.location);
6125
+ if (url) {
6126
+ return url.href;
6127
+ }
6128
+ }
6129
+ throw new Error(
6130
+ "Invalid PDF url data: either string or URL-object is expected in the url property."
6131
+ );
6132
+ }
6133
+ function getDataProp(val) {
6134
+ if (isNodeJS && typeof Buffer !== "undefined" && // eslint-disable-line no-undef
6135
+ val instanceof Buffer) {
6136
+ throw new Error(
6137
+ "Please provide binary data as `Uint8Array`, rather than `Buffer`."
6138
+ );
6139
+ }
6140
+ if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {
6141
+ return val;
6142
+ }
6143
+ if (typeof val === "string") {
6144
+ return stringToBytes(val);
6145
+ }
6146
+ if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === "object" && !isNaN(val?.length)) {
6147
+ return new Uint8Array(val);
6148
+ }
6149
+ throw new Error(
6150
+ "Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property."
6151
+ );
6152
+ }
6153
+ function getFactoryUrlProp(val) {
6154
+ if (typeof val !== "string") {
6155
+ return null;
6156
+ }
6157
+ if (val.endsWith("/")) {
6158
+ return val;
6159
+ }
6160
+ throw new Error(`Invalid factory url: "${val}" must include trailing slash.`);
6161
+ }
6162
+ var isRefProxy = (v) => typeof v === "object" && Number.isInteger(v?.num) && v.num >= 0 && Number.isInteger(v?.gen) && v.gen >= 0;
6163
+ var isNameProxy = (v) => typeof v === "object" && typeof v?.name === "string";
6164
+ var isValidExplicitDest = _isValidExplicitDest.bind(
6165
+ null,
6166
+ /* validRef = */
6167
+ isRefProxy,
6168
+ /* validName = */
6169
+ isNameProxy
6170
+ );
6171
+ var _listeners, _deferred;
6172
+ var LoopbackPort = class {
6173
+ constructor() {
6174
+ __privateAdd(this, _listeners, /* @__PURE__ */ new Map());
6175
+ __privateAdd(this, _deferred, Promise.resolve());
6176
+ }
6177
+ postMessage(obj, transfer) {
6178
+ const event = {
6179
+ data: structuredClone(obj, transfer ? { transfer } : null)
6180
+ };
6181
+ __privateGet(this, _deferred).then(() => {
6182
+ for (const [listener] of __privateGet(this, _listeners)) {
6183
+ listener.call(this, event);
6184
+ }
6185
+ });
6186
+ }
6187
+ addEventListener(name, listener, options = null) {
6188
+ let rmAbort = null;
6189
+ if (options?.signal instanceof AbortSignal) {
6190
+ const { signal } = options;
6191
+ if (signal.aborted) {
6192
+ warn("LoopbackPort - cannot use an `aborted` signal.");
6193
+ return;
6194
+ }
6195
+ const onAbort = () => this.removeEventListener(name, listener);
6196
+ rmAbort = () => signal.removeEventListener("abort", onAbort);
6197
+ signal.addEventListener("abort", onAbort);
6198
+ }
6199
+ __privateGet(this, _listeners).set(listener, rmAbort);
6200
+ }
6201
+ removeEventListener(name, listener) {
6202
+ const rmAbort = __privateGet(this, _listeners).get(listener);
6203
+ rmAbort?.();
6204
+ __privateGet(this, _listeners).delete(listener);
6205
+ }
6206
+ terminate() {
6207
+ for (const [, rmAbort] of __privateGet(this, _listeners)) {
6208
+ rmAbort?.();
6209
+ }
6210
+ __privateGet(this, _listeners).clear();
6211
+ }
6212
+ };
6213
+ _listeners = new WeakMap();
6214
+ _deferred = new WeakMap();
6215
+
6053
6216
  // src/pdf.js/src/display/node_utils.js
6054
6217
  import { createRequire as __createRequire__ } from "module";
6055
6218
 
@@ -6473,7 +6636,7 @@ createUrl_fn = function(id) {
6473
6636
  if (isDataScheme(url)) {
6474
6637
  warn('#createUrl: ignore "data:"-URL for performance reasons.');
6475
6638
  } else {
6476
- __privateSet(this, _baseUrl, url.split("#", 1)[0]);
6639
+ __privateSet(this, _baseUrl, updateUrlHash(url, ""));
6477
6640
  }
6478
6641
  }
6479
6642
  }
@@ -6668,6 +6831,13 @@ if (isNodeJS) {
6668
6831
  warn("Cannot polyfill `Path2D`, rendering may be broken.");
6669
6832
  }
6670
6833
  }
6834
+ if (!globalThis.navigator?.language) {
6835
+ globalThis.navigator = {
6836
+ language: "en-US",
6837
+ platform: "",
6838
+ userAgent: ""
6839
+ };
6840
+ }
6671
6841
  }
6672
6842
  }
6673
6843
  async function fetchData2(url) {
@@ -6712,6 +6882,138 @@ var NodeWasmFactory = class extends BaseWasmFactory {
6712
6882
  }
6713
6883
  };
6714
6884
 
6885
+ // src/lib/NodeUtils.ts
6886
+ var filtersRegistry = /* @__PURE__ */ new Map();
6887
+ var NodeCanvasFactory2 = class extends NodeCanvasFactory {
6888
+ create(width, height) {
6889
+ const factory = this;
6890
+ const { canvas, context } = super.create(width, height);
6891
+ const drawImage = context.drawImage;
6892
+ let currentFilter = "none";
6893
+ Object.defineProperty(context, "filter", {
6894
+ get() {
6895
+ if (currentFilter.startsWith("url(")) {
6896
+ return "none";
6897
+ }
6898
+ return currentFilter;
6899
+ },
6900
+ set(value) {
6901
+ currentFilter = value;
6902
+ },
6903
+ configurable: true
6904
+ });
6905
+ context.drawImage = function(src, ...args) {
6906
+ const filter = filtersRegistry.get(currentFilter);
6907
+ if (!filter) {
6908
+ drawImage.call(this, src, ...args);
6909
+ return;
6910
+ }
6911
+ const { canvas: canvas2, context: context2 } = factory.create(src.width, src.height);
6912
+ context2.drawImage(src, 0, 0, src.width, src.height);
6913
+ filter(context2);
6914
+ drawImage.call(this, canvas2, ...args);
6915
+ factory.destroy({
6916
+ canvas: canvas2,
6917
+ context: context2
6918
+ });
6919
+ };
6920
+ return {
6921
+ canvas,
6922
+ context
6923
+ };
6924
+ }
6925
+ };
6926
+ var _NodeFilterFactory_instances, createTables_fn2;
6927
+ var NodeFilterFactory2 = class extends NodeFilterFactory {
6928
+ constructor() {
6929
+ super(...arguments);
6930
+ __privateAdd(this, _NodeFilterFactory_instances);
6931
+ }
6932
+ addAlphaFilter(map) {
6933
+ const [tableA] = __privateMethod(this, _NodeFilterFactory_instances, createTables_fn2).call(this, [map]);
6934
+ const url = `url(#alpha_${tableA.join("_")})`;
6935
+ if (!filtersRegistry.has(url)) {
6936
+ filtersRegistry.set(url, (ctx) => {
6937
+ const imageData = ctx.getImageData(
6938
+ 0,
6939
+ 0,
6940
+ ctx.canvas.width,
6941
+ ctx.canvas.height
6942
+ );
6943
+ const data = imageData.data;
6944
+ const tableSize = tableA.length;
6945
+ for (let i = 0; i < data.length; i += 4) {
6946
+ const alpha = data[i + 3] / 255;
6947
+ const index = alpha * (tableSize - 1);
6948
+ const lower = Math.floor(index);
6949
+ const upper = Math.min(lower + 1, tableSize - 1);
6950
+ const t = index - lower;
6951
+ const newAlpha = (1 - t) * tableA[lower] + t * tableA[upper];
6952
+ data[i + 3] = newAlpha * 255;
6953
+ }
6954
+ ctx.putImageData(imageData, 0, 0);
6955
+ });
6956
+ }
6957
+ return url;
6958
+ }
6959
+ addLuminosityFilter(map) {
6960
+ const url = `url(#luminosity${map ? `_${map.join("_")}` : ""})`;
6961
+ if (!filtersRegistry.has(url)) {
6962
+ const tables = map ? __privateMethod(this, _NodeFilterFactory_instances, createTables_fn2).call(this, [map]) : null;
6963
+ const tableA = tables ? tables[0] : null;
6964
+ const tableSize = tableA?.length;
6965
+ filtersRegistry.set(url, (ctx) => {
6966
+ const imageData = ctx.getImageData(
6967
+ 0,
6968
+ 0,
6969
+ ctx.canvas.width,
6970
+ ctx.canvas.height
6971
+ );
6972
+ const data = imageData.data;
6973
+ for (let i = 0; i < data.length; i += 4) {
6974
+ const r = data[i];
6975
+ const g = data[i + 1];
6976
+ const b = data[i + 2];
6977
+ data[i] = data[i + 1] = data[i + 2] = 0;
6978
+ data[i + 3] = r * 0.3 + g * 0.59 + b * 0.11;
6979
+ if (tableA && tableSize != null) {
6980
+ const alpha = data[i + 3] / 255;
6981
+ const index = alpha * (tableSize - 1);
6982
+ const lower = Math.floor(index);
6983
+ const upper = Math.min(lower + 1, tableSize - 1);
6984
+ const t = index - lower;
6985
+ const newAlpha = (1 - t) * tableA[lower] + t * tableA[upper];
6986
+ data[i + 3] = newAlpha * 255;
6987
+ }
6988
+ }
6989
+ ctx.putImageData(imageData, 0, 0);
6990
+ });
6991
+ }
6992
+ return url;
6993
+ }
6994
+ };
6995
+ _NodeFilterFactory_instances = new WeakSet();
6996
+ createTables_fn2 = function(maps) {
6997
+ if (maps.length === 1) {
6998
+ const mapR2 = maps[0];
6999
+ const buffer = new Array(256);
7000
+ for (let i = 0; i < 256; i++) {
7001
+ buffer[i] = mapR2[i] / 255;
7002
+ }
7003
+ return [buffer, buffer, buffer];
7004
+ }
7005
+ const [mapR, mapG, mapB] = maps;
7006
+ const bufferR = new Array(256);
7007
+ const bufferG = new Array(256);
7008
+ const bufferB = new Array(256);
7009
+ for (let i = 0; i < 256; i++) {
7010
+ bufferR[i] = mapR[i] / 255;
7011
+ bufferG[i] = mapG[i] / 255;
7012
+ bufferB[i] = mapB[i] / 255;
7013
+ }
7014
+ return [bufferR, bufferG, bufferB];
7015
+ };
7016
+
6715
7017
  // src/pdf.js/src/display/pattern_helper.js
6716
7018
  var PathType = {
6717
7019
  FILL: "Fill",
@@ -7254,18 +7556,13 @@ var _TilingPattern = class _TilingPattern {
7254
7556
  const context = graphics.ctx, current = graphics.current;
7255
7557
  switch (paintType) {
7256
7558
  case PaintType.COLORED:
7257
- const ctx = this.ctx;
7258
- context.fillStyle = ctx.fillStyle;
7259
- context.strokeStyle = ctx.strokeStyle;
7260
- current.fillColor = ctx.fillStyle;
7261
- current.strokeColor = ctx.strokeStyle;
7559
+ const { fillStyle, strokeStyle } = this.ctx;
7560
+ context.fillStyle = current.fillColor = fillStyle;
7561
+ context.strokeStyle = current.strokeColor = strokeStyle;
7262
7562
  break;
7263
7563
  case PaintType.UNCOLORED:
7264
- const cssColor = Util.makeHexColor(color[0], color[1], color[2]);
7265
- context.fillStyle = cssColor;
7266
- context.strokeStyle = cssColor;
7267
- current.fillColor = cssColor;
7268
- current.strokeColor = cssColor;
7564
+ context.fillStyle = context.strokeStyle = color;
7565
+ current.fillColor = current.strokeColor = color;
7269
7566
  break;
7270
7567
  default:
7271
7568
  throw new FormatError(`Unsupported paint type: ${paintType}`);
@@ -8202,7 +8499,6 @@ var _CanvasGraphics = class _CanvasGraphics {
8202
8499
  let maskX = layerOffsetX - maskOffsetX;
8203
8500
  let maskY = layerOffsetY - maskOffsetY;
8204
8501
  if (backdrop) {
8205
- const backdropRGB = Util.makeHexColor(...backdrop);
8206
8502
  if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {
8207
8503
  const canvas = this.cachedCanvases.getCanvas(
8208
8504
  "maskExtension",
@@ -8212,7 +8508,7 @@ var _CanvasGraphics = class _CanvasGraphics {
8212
8508
  const ctx = canvas.context;
8213
8509
  ctx.drawImage(maskCanvas, -maskX, -maskY);
8214
8510
  ctx.globalCompositeOperation = "destination-atop";
8215
- ctx.fillStyle = backdropRGB;
8511
+ ctx.fillStyle = backdrop;
8216
8512
  ctx.fillRect(0, 0, width, height);
8217
8513
  ctx.globalCompositeOperation = "source-over";
8218
8514
  maskCanvas = canvas.canvas;
@@ -8225,7 +8521,7 @@ var _CanvasGraphics = class _CanvasGraphics {
8225
8521
  clip2.rect(maskX, maskY, width, height);
8226
8522
  maskCtx.clip(clip2);
8227
8523
  maskCtx.globalCompositeOperation = "destination-atop";
8228
- maskCtx.fillStyle = backdropRGB;
8524
+ maskCtx.fillStyle = backdrop;
8229
8525
  maskCtx.fillRect(maskX, maskY, width, height);
8230
8526
  maskCtx.restore();
8231
8527
  }
@@ -8904,20 +9200,16 @@ var _CanvasGraphics = class _CanvasGraphics {
8904
9200
  this.current.fillColor = this.getColorN_Pattern(arguments);
8905
9201
  this.current.patternFill = true;
8906
9202
  }
8907
- setStrokeRGBColor(r, g, b) {
8908
- this.ctx.strokeStyle = this.current.strokeColor = Util.makeHexColor(
8909
- r,
8910
- g,
8911
- b
8912
- );
9203
+ setStrokeRGBColor(color) {
9204
+ this.ctx.strokeStyle = this.current.strokeColor = color;
8913
9205
  this.current.patternStroke = false;
8914
9206
  }
8915
9207
  setStrokeTransparent() {
8916
9208
  this.ctx.strokeStyle = this.current.strokeColor = "transparent";
8917
9209
  this.current.patternStroke = false;
8918
9210
  }
8919
- setFillRGBColor(r, g, b) {
8920
- this.ctx.fillStyle = this.current.fillColor = Util.makeHexColor(r, g, b);
9211
+ setFillRGBColor(color) {
9212
+ this.ctx.fillStyle = this.current.fillColor = color;
8921
9213
  this.current.patternFill = false;
8922
9214
  }
8923
9215
  setFillTransparent() {
@@ -9667,28 +9959,25 @@ __privateAdd(GlobalWorkerOptions, _port, null);
9667
9959
  __privateAdd(GlobalWorkerOptions, _src, "");
9668
9960
 
9669
9961
  // src/pdf.js/src/display/metadata.js
9670
- var _metadataMap, _data;
9962
+ var _map, _data;
9671
9963
  var Metadata = class {
9672
9964
  constructor({ parsedData, rawData }) {
9673
- __privateAdd(this, _metadataMap);
9965
+ __privateAdd(this, _map);
9674
9966
  __privateAdd(this, _data);
9675
- __privateSet(this, _metadataMap, parsedData);
9967
+ __privateSet(this, _map, parsedData);
9676
9968
  __privateSet(this, _data, rawData);
9677
9969
  }
9678
9970
  getRaw() {
9679
9971
  return __privateGet(this, _data);
9680
9972
  }
9681
9973
  get(name) {
9682
- return __privateGet(this, _metadataMap).get(name) ?? null;
9974
+ return __privateGet(this, _map).get(name) ?? null;
9683
9975
  }
9684
- getAll() {
9685
- return objectFromMap(__privateGet(this, _metadataMap));
9686
- }
9687
- has(name) {
9688
- return __privateGet(this, _metadataMap).has(name);
9976
+ [Symbol.iterator]() {
9977
+ return __privateGet(this, _map).entries();
9689
9978
  }
9690
9979
  };
9691
- _metadataMap = new WeakMap();
9980
+ _map = new WeakMap();
9692
9981
  _data = new WeakMap();
9693
9982
 
9694
9983
  // src/pdf.js/src/display/optional_content_config.js
@@ -9908,9 +10197,6 @@ var OptionalContentConfig = class {
9908
10197
  }
9909
10198
  return [...__privateGet(this, _groups).keys()];
9910
10199
  }
9911
- getGroups() {
9912
- return __privateGet(this, _groups).size > 0 ? objectFromMap(__privateGet(this, _groups)) : null;
9913
- }
9914
10200
  getGroup(id) {
9915
10201
  return __privateGet(this, _groups).get(id) || null;
9916
10202
  }
@@ -9924,6 +10210,9 @@ var OptionalContentConfig = class {
9924
10210
  }
9925
10211
  return __privateSet(this, _cachedGetHash, hash.hexdigest());
9926
10212
  }
10213
+ [Symbol.iterator]() {
10214
+ return __privateGet(this, _groups).entries();
10215
+ }
9927
10216
  };
9928
10217
  _cachedGetHash = new WeakMap();
9929
10218
  _groups = new WeakMap();
@@ -11224,6 +11513,102 @@ var PDFNodeStreamFsRangeReader = class {
11224
11513
  }
11225
11514
  };
11226
11515
 
11516
+ // src/pdf.js/src/display/pdf_objects.js
11517
+ var INITIAL_DATA = Symbol("INITIAL_DATA");
11518
+ var _objs, _PDFObjects_instances, ensureObj_fn;
11519
+ var PDFObjects = class {
11520
+ constructor() {
11521
+ __privateAdd(this, _PDFObjects_instances);
11522
+ __privateAdd(this, _objs, /* @__PURE__ */ Object.create(null));
11523
+ }
11524
+ /**
11525
+ * If called *without* callback, this returns the data of `objId` but the
11526
+ * object needs to be resolved. If it isn't, this method throws.
11527
+ *
11528
+ * If called *with* a callback, the callback is called with the data of the
11529
+ * object once the object is resolved. That means, if you call this method
11530
+ * and the object is already resolved, the callback gets called right away.
11531
+ *
11532
+ * @param {string} objId
11533
+ * @param {function} [callback]
11534
+ * @returns {any}
11535
+ */
11536
+ get(objId, callback = null) {
11537
+ if (callback) {
11538
+ const obj2 = __privateMethod(this, _PDFObjects_instances, ensureObj_fn).call(this, objId);
11539
+ obj2.promise.then(() => callback(obj2.data));
11540
+ return null;
11541
+ }
11542
+ const obj = __privateGet(this, _objs)[objId];
11543
+ if (!obj || obj.data === INITIAL_DATA) {
11544
+ throw new Error(`Requesting object that isn't resolved yet ${objId}.`);
11545
+ }
11546
+ return obj.data;
11547
+ }
11548
+ /**
11549
+ * @param {string} objId
11550
+ * @returns {boolean}
11551
+ */
11552
+ has(objId) {
11553
+ const obj = __privateGet(this, _objs)[objId];
11554
+ return !!obj && obj.data !== INITIAL_DATA;
11555
+ }
11556
+ /**
11557
+ * @param {string} objId
11558
+ * @returns {boolean}
11559
+ */
11560
+ delete(objId) {
11561
+ const obj = __privateGet(this, _objs)[objId];
11562
+ if (!obj || obj.data === INITIAL_DATA) {
11563
+ return false;
11564
+ }
11565
+ delete __privateGet(this, _objs)[objId];
11566
+ return true;
11567
+ }
11568
+ /**
11569
+ * Resolves the object `objId` with optional `data`.
11570
+ *
11571
+ * @param {string} objId
11572
+ * @param {any} [data]
11573
+ */
11574
+ resolve(objId, data = null) {
11575
+ const obj = __privateMethod(this, _PDFObjects_instances, ensureObj_fn).call(this, objId);
11576
+ obj.data = data;
11577
+ obj.resolve();
11578
+ }
11579
+ clear() {
11580
+ for (const objId in __privateGet(this, _objs)) {
11581
+ const { data } = __privateGet(this, _objs)[objId];
11582
+ data?.bitmap?.close();
11583
+ }
11584
+ __privateSet(this, _objs, /* @__PURE__ */ Object.create(null));
11585
+ }
11586
+ *[Symbol.iterator]() {
11587
+ for (const objId in __privateGet(this, _objs)) {
11588
+ const { data } = __privateGet(this, _objs)[objId];
11589
+ if (data === INITIAL_DATA) {
11590
+ continue;
11591
+ }
11592
+ yield [objId, data];
11593
+ }
11594
+ }
11595
+ };
11596
+ _objs = new WeakMap();
11597
+ _PDFObjects_instances = new WeakSet();
11598
+ /**
11599
+ * Ensures there is an object defined for `objId`.
11600
+ *
11601
+ * @param {string} objId
11602
+ * @returns {Object}
11603
+ */
11604
+ ensureObj_fn = function(objId) {
11605
+ var _a2;
11606
+ return (_a2 = __privateGet(this, _objs))[objId] || (_a2[objId] = {
11607
+ ...Promise.withResolvers(),
11608
+ data: INITIAL_DATA
11609
+ });
11610
+ };
11611
+
11227
11612
  // src/pdf.js/src/display/text_layer.js
11228
11613
  var MAX_TEXT_DIVS_TO_RENDER = 1e5;
11229
11614
  var DEFAULT_FONT_SIZE = 30;
@@ -11699,7 +12084,6 @@ var XfaText = class _XfaText {
11699
12084
  };
11700
12085
 
11701
12086
  // src/pdf.js/src/display/api.js
11702
- var DEFAULT_RANGE_CHUNK_SIZE = 65536;
11703
12087
  var RENDERING_CANCELLED_TIMEOUT = 100;
11704
12088
  function getDocument(src = {}) {
11705
12089
  if (true) {
@@ -11717,7 +12101,7 @@ function getDocument(src = {}) {
11717
12101
  const withCredentials = src.withCredentials === true;
11718
12102
  const password = src.password ?? null;
11719
12103
  const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;
11720
- const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;
12104
+ const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : 2 ** 16;
11721
12105
  let worker = src.worker instanceof PDFWorker ? src.worker : null;
11722
12106
  const verbosity = src.verbosity;
11723
12107
  const docBaseUrl = typeof src.docBaseUrl === "string" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;
@@ -11728,7 +12112,7 @@ function getDocument(src = {}) {
11728
12112
  const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);
11729
12113
  const StandardFontDataFactory2 = src.StandardFontDataFactory || (isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory);
11730
12114
  const wasmUrl = getFactoryUrlProp(src.wasmUrl);
11731
- const WasmFactory = src.WasmFactory || (isNodeJS ? NodeWasmFactory : DOMWasmFactory);
12115
+ const WasmFactory2 = src.WasmFactory || (isNodeJS ? NodeWasmFactory : DOMWasmFactory);
11732
12116
  const ignoreErrors = src.stopAtErrors !== true;
11733
12117
  const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;
11734
12118
  const isEvalSupported = src.isEvalSupported !== false;
@@ -11749,13 +12133,13 @@ function getDocument(src = {}) {
11749
12133
  const disableStream = src.disableStream === true;
11750
12134
  const disableAutoFetch = src.disableAutoFetch === true;
11751
12135
  const pdfBug = src.pdfBug === true;
11752
- const CanvasFactory = src.CanvasFactory || (isNodeJS ? NodeCanvasFactory : DOMCanvasFactory);
11753
- const FilterFactory = src.FilterFactory || (isNodeJS ? NodeFilterFactory : DOMFilterFactory);
12136
+ const CanvasFactory = src.CanvasFactory || (isNodeJS ? NodeCanvasFactory2 : DOMCanvasFactory);
12137
+ const FilterFactory = src.FilterFactory || (isNodeJS ? NodeFilterFactory2 : DOMFilterFactory);
11754
12138
  const enableHWA = src.enableHWA === true;
11755
12139
  const useWasm = src.useWasm !== false;
11756
12140
  const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;
11757
12141
  const useSystemFonts = typeof src.useSystemFonts === "boolean" ? src.useSystemFonts : !isNodeJS && !disableFontFace;
11758
- const useWorkerFetch = typeof src.useWorkerFetch === "boolean" ? src.useWorkerFetch : !!(CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory2 === DOMStandardFontDataFactory && WasmFactory === DOMWasmFactory && cMapUrl && standardFontDataUrl && wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI) && isValidFetchUrl(wasmUrl, document.baseURI));
12142
+ const useWorkerFetch = typeof src.useWorkerFetch === "boolean" ? src.useWorkerFetch : !!(CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory2 === DOMStandardFontDataFactory && WasmFactory2 === DOMWasmFactory && cMapUrl && standardFontDataUrl && wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI) && isValidFetchUrl(wasmUrl, document.baseURI));
11759
12143
  const styleElement = false ? src.styleElement : null;
11760
12144
  setVerbosityLevel(verbosity);
11761
12145
  const transportFactory = {
@@ -11763,14 +12147,13 @@ function getDocument(src = {}) {
11763
12147
  filterFactory: new FilterFactory({ docId, ownerDocument }),
11764
12148
  cMapReaderFactory: useWorkerFetch ? null : new CMapReaderFactory({ baseUrl: cMapUrl, isCompressed: cMapPacked }),
11765
12149
  standardFontDataFactory: useWorkerFetch ? null : new StandardFontDataFactory2({ baseUrl: standardFontDataUrl }),
11766
- wasmFactory: useWorkerFetch ? null : new WasmFactory({ baseUrl: wasmUrl })
12150
+ wasmFactory: useWorkerFetch ? null : new WasmFactory2({ baseUrl: wasmUrl })
11767
12151
  };
11768
12152
  if (!worker) {
11769
- const workerParams = {
12153
+ worker = PDFWorker.create({
11770
12154
  verbosity,
11771
12155
  port: GlobalWorkerOptions.workerPort
11772
- };
11773
- worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);
12156
+ });
11774
12157
  task._worker = worker;
11775
12158
  }
11776
12159
  const docParams = {
@@ -11835,21 +12218,7 @@ function getDocument(src = {}) {
11835
12218
  if (!url) {
11836
12219
  throw new Error("getDocument - no `url` parameter provided.");
11837
12220
  }
11838
- let NetworkStream;
11839
- if (isNodeJS) {
11840
- if (isValidFetchUrl(url)) {
11841
- if (typeof fetch === "undefined" || typeof Response === "undefined" || !("body" in Response.prototype)) {
11842
- throw new Error(
11843
- "getDocument - the Fetch API was disabled in Node.js, see `--no-experimental-fetch`."
11844
- );
11845
- }
11846
- NetworkStream = PDFFetchStream;
11847
- } else {
11848
- NetworkStream = PDFNodeStream;
11849
- }
11850
- } else {
11851
- NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : PDFNetworkStream;
11852
- }
12221
+ const NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : isNodeJS ? PDFNodeStream : PDFNetworkStream;
11853
12222
  networkStream = new NetworkStream({
11854
12223
  url,
11855
12224
  length,
@@ -11881,64 +12250,6 @@ function getDocument(src = {}) {
11881
12250
  }).catch(task._capability.reject);
11882
12251
  return task;
11883
12252
  }
11884
- function getUrlProp(val) {
11885
- if (false) {
11886
- return null;
11887
- }
11888
- if (val instanceof URL) {
11889
- return val.href;
11890
- }
11891
- if (typeof val === "string") {
11892
- if (isNodeJS) {
11893
- return val;
11894
- }
11895
- const url = URL.parse(val, window.location);
11896
- if (url) {
11897
- return url.href;
11898
- }
11899
- }
11900
- throw new Error(
11901
- "Invalid PDF url data: either string or URL-object is expected in the url property."
11902
- );
11903
- }
11904
- function getDataProp(val) {
11905
- if (isNodeJS && typeof Buffer !== "undefined" && // eslint-disable-line no-undef
11906
- val instanceof Buffer) {
11907
- throw new Error(
11908
- "Please provide binary data as `Uint8Array`, rather than `Buffer`."
11909
- );
11910
- }
11911
- if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {
11912
- return val;
11913
- }
11914
- if (typeof val === "string") {
11915
- return stringToBytes(val);
11916
- }
11917
- if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === "object" && !isNaN(val?.length)) {
11918
- return new Uint8Array(val);
11919
- }
11920
- throw new Error(
11921
- "Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property."
11922
- );
11923
- }
11924
- function getFactoryUrlProp(val) {
11925
- if (typeof val !== "string") {
11926
- return null;
11927
- }
11928
- if (val.endsWith("/")) {
11929
- return val;
11930
- }
11931
- throw new Error(`Invalid factory url: "${val}" must include trailing slash.`);
11932
- }
11933
- var isRefProxy = (v) => typeof v === "object" && Number.isInteger(v?.num) && v.num >= 0 && Number.isInteger(v?.gen) && v.gen >= 0;
11934
- var isNameProxy = (v) => typeof v === "object" && typeof v?.name === "string";
11935
- var isValidExplicitDest = _isValidExplicitDest.bind(
11936
- null,
11937
- /* validRef = */
11938
- isRefProxy,
11939
- /* validName = */
11940
- isNameProxy
11941
- );
11942
12253
  var _docId2;
11943
12254
  var _PDFDocumentLoadingTask = class _PDFDocumentLoadingTask {
11944
12255
  constructor() {
@@ -11993,20 +12304,16 @@ var _PDFDocumentLoadingTask = class _PDFDocumentLoadingTask {
11993
12304
  */
11994
12305
  async destroy() {
11995
12306
  this.destroyed = true;
11996
- if (false) {
12307
+ try {
12308
+ if (this._worker?.port) {
12309
+ this._worker._pendingDestroy = true;
12310
+ }
11997
12311
  await this._transport?.destroy();
11998
- } else {
11999
- try {
12000
- if (this._worker?.port) {
12001
- this._worker._pendingDestroy = true;
12002
- }
12003
- await this._transport?.destroy();
12004
- } catch (ex) {
12005
- if (this._worker?.port) {
12006
- delete this._worker._pendingDestroy;
12007
- }
12008
- throw ex;
12312
+ } catch (ex) {
12313
+ if (this._worker?.port) {
12314
+ delete this._worker._pendingDestroy;
12009
12315
  }
12316
+ throw ex;
12010
12317
  }
12011
12318
  this._transport = null;
12012
12319
  this._worker?.destroy();
@@ -12025,6 +12332,7 @@ var _PDFDocumentLoadingTask = class _PDFDocumentLoadingTask {
12025
12332
  _docId2 = new WeakMap();
12026
12333
  __privateAdd(_PDFDocumentLoadingTask, _docId2, 0);
12027
12334
  var PDFDocumentLoadingTask = _PDFDocumentLoadingTask;
12335
+ var _capability2, _progressiveDoneListeners, _progressiveReadListeners, _progressListeners, _rangeListeners;
12028
12336
  var PDFDataRangeTransport = class {
12029
12337
  /**
12030
12338
  * @param {number} length
@@ -12033,46 +12341,46 @@ var PDFDataRangeTransport = class {
12033
12341
  * @param {string} [contentDispositionFilename]
12034
12342
  */
12035
12343
  constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {
12344
+ __privateAdd(this, _capability2, Promise.withResolvers());
12345
+ __privateAdd(this, _progressiveDoneListeners, []);
12346
+ __privateAdd(this, _progressiveReadListeners, []);
12347
+ __privateAdd(this, _progressListeners, []);
12348
+ __privateAdd(this, _rangeListeners, []);
12036
12349
  this.length = length;
12037
12350
  this.initialData = initialData;
12038
12351
  this.progressiveDone = progressiveDone;
12039
12352
  this.contentDispositionFilename = contentDispositionFilename;
12040
- this._rangeListeners = [];
12041
- this._progressListeners = [];
12042
- this._progressiveReadListeners = [];
12043
- this._progressiveDoneListeners = [];
12044
- this._readyCapability = Promise.withResolvers();
12045
12353
  }
12046
12354
  /**
12047
12355
  * @param {function} listener
12048
12356
  */
12049
12357
  addRangeListener(listener) {
12050
- this._rangeListeners.push(listener);
12358
+ __privateGet(this, _rangeListeners).push(listener);
12051
12359
  }
12052
12360
  /**
12053
12361
  * @param {function} listener
12054
12362
  */
12055
12363
  addProgressListener(listener) {
12056
- this._progressListeners.push(listener);
12364
+ __privateGet(this, _progressListeners).push(listener);
12057
12365
  }
12058
12366
  /**
12059
12367
  * @param {function} listener
12060
12368
  */
12061
12369
  addProgressiveReadListener(listener) {
12062
- this._progressiveReadListeners.push(listener);
12370
+ __privateGet(this, _progressiveReadListeners).push(listener);
12063
12371
  }
12064
12372
  /**
12065
12373
  * @param {function} listener
12066
12374
  */
12067
12375
  addProgressiveDoneListener(listener) {
12068
- this._progressiveDoneListeners.push(listener);
12376
+ __privateGet(this, _progressiveDoneListeners).push(listener);
12069
12377
  }
12070
12378
  /**
12071
12379
  * @param {number} begin
12072
12380
  * @param {Uint8Array|null} chunk
12073
12381
  */
12074
12382
  onDataRange(begin, chunk) {
12075
- for (const listener of this._rangeListeners) {
12383
+ for (const listener of __privateGet(this, _rangeListeners)) {
12076
12384
  listener(begin, chunk);
12077
12385
  }
12078
12386
  }
@@ -12081,8 +12389,8 @@ var PDFDataRangeTransport = class {
12081
12389
  * @param {number|undefined} total
12082
12390
  */
12083
12391
  onDataProgress(loaded, total) {
12084
- this._readyCapability.promise.then(() => {
12085
- for (const listener of this._progressListeners) {
12392
+ __privateGet(this, _capability2).promise.then(() => {
12393
+ for (const listener of __privateGet(this, _progressListeners)) {
12086
12394
  listener(loaded, total);
12087
12395
  }
12088
12396
  });
@@ -12091,21 +12399,21 @@ var PDFDataRangeTransport = class {
12091
12399
  * @param {Uint8Array|null} chunk
12092
12400
  */
12093
12401
  onDataProgressiveRead(chunk) {
12094
- this._readyCapability.promise.then(() => {
12095
- for (const listener of this._progressiveReadListeners) {
12402
+ __privateGet(this, _capability2).promise.then(() => {
12403
+ for (const listener of __privateGet(this, _progressiveReadListeners)) {
12096
12404
  listener(chunk);
12097
12405
  }
12098
12406
  });
12099
12407
  }
12100
12408
  onDataProgressiveDone() {
12101
- this._readyCapability.promise.then(() => {
12102
- for (const listener of this._progressiveDoneListeners) {
12409
+ __privateGet(this, _capability2).promise.then(() => {
12410
+ for (const listener of __privateGet(this, _progressiveDoneListeners)) {
12103
12411
  listener();
12104
12412
  }
12105
12413
  });
12106
12414
  }
12107
12415
  transportReady() {
12108
- this._readyCapability.resolve();
12416
+ __privateGet(this, _capability2).resolve();
12109
12417
  }
12110
12418
  /**
12111
12419
  * @param {number} begin
@@ -12117,6 +12425,11 @@ var PDFDataRangeTransport = class {
12117
12425
  abort() {
12118
12426
  }
12119
12427
  };
12428
+ _capability2 = new WeakMap();
12429
+ _progressiveDoneListeners = new WeakMap();
12430
+ _progressiveReadListeners = new WeakMap();
12431
+ _progressListeners = new WeakMap();
12432
+ _rangeListeners = new WeakMap();
12120
12433
  var PDFDocumentProxy = class {
12121
12434
  constructor(pdfInfo, transport) {
12122
12435
  this._pdfInfo = pdfInfo;
@@ -12992,51 +13305,7 @@ tryCleanup_fn = function() {
12992
13305
  __privateSet(this, _pendingCleanup, false);
12993
13306
  return true;
12994
13307
  };
12995
- var _listeners, _deferred;
12996
- var LoopbackPort = class {
12997
- constructor() {
12998
- __privateAdd(this, _listeners, /* @__PURE__ */ new Map());
12999
- __privateAdd(this, _deferred, Promise.resolve());
13000
- }
13001
- postMessage(obj, transfer) {
13002
- const event = {
13003
- data: structuredClone(obj, transfer ? { transfer } : null)
13004
- };
13005
- __privateGet(this, _deferred).then(() => {
13006
- for (const [listener] of __privateGet(this, _listeners)) {
13007
- listener.call(this, event);
13008
- }
13009
- });
13010
- }
13011
- addEventListener(name, listener, options = null) {
13012
- let rmAbort = null;
13013
- if (options?.signal instanceof AbortSignal) {
13014
- const { signal } = options;
13015
- if (signal.aborted) {
13016
- warn("LoopbackPort - cannot use an `aborted` signal.");
13017
- return;
13018
- }
13019
- const onAbort = () => this.removeEventListener(name, listener);
13020
- rmAbort = () => signal.removeEventListener("abort", onAbort);
13021
- signal.addEventListener("abort", onAbort);
13022
- }
13023
- __privateGet(this, _listeners).set(listener, rmAbort);
13024
- }
13025
- removeEventListener(name, listener) {
13026
- const rmAbort = __privateGet(this, _listeners).get(listener);
13027
- rmAbort?.();
13028
- __privateGet(this, _listeners).delete(listener);
13029
- }
13030
- terminate() {
13031
- for (const [, rmAbort] of __privateGet(this, _listeners)) {
13032
- rmAbort?.();
13033
- }
13034
- __privateGet(this, _listeners).clear();
13035
- }
13036
- };
13037
- _listeners = new WeakMap();
13038
- _deferred = new WeakMap();
13039
- var _a, _fakeWorkerId, _isWorkerDisabled, _workerPorts, _PDFWorker_instances, resolve_fn, _PDFWorker_static, mainThreadWorkerMessageHandler_get;
13308
+ var _a, _capability3, _messageHandler, _port2, _webWorker, _fakeWorkerId, _isWorkerDisabled, _workerPorts, _PDFWorker_instances, resolve_fn, initializeFromPort_fn, initialize_fn, setupFakeWorker_fn, _PDFWorker_static, mainThreadWorkerMessageHandler_get;
13040
13309
  var _PDFWorker = class _PDFWorker {
13041
13310
  constructor({
13042
13311
  name = null,
@@ -13044,173 +13313,73 @@ var _PDFWorker = class _PDFWorker {
13044
13313
  verbosity = getVerbosityLevel()
13045
13314
  } = {}) {
13046
13315
  __privateAdd(this, _PDFWorker_instances);
13316
+ __privateAdd(this, _capability3, Promise.withResolvers());
13317
+ __privateAdd(this, _messageHandler, null);
13318
+ __privateAdd(this, _port2, null);
13319
+ __privateAdd(this, _webWorker, null);
13047
13320
  this.name = name;
13048
13321
  this.destroyed = false;
13049
13322
  this.verbosity = verbosity;
13050
- this._readyCapability = Promise.withResolvers();
13051
- this._port = null;
13052
- this._webWorker = null;
13053
- this._messageHandler = null;
13054
13323
  if (port) {
13055
- if (__privateGet(_PDFWorker, _workerPorts)?.has(port)) {
13324
+ if (__privateGet(_PDFWorker, _workerPorts).has(port)) {
13056
13325
  throw new Error("Cannot use more than one PDFWorker per port.");
13057
13326
  }
13058
- (__privateGet(_PDFWorker, _workerPorts) || __privateSet(_PDFWorker, _workerPorts, /* @__PURE__ */ new WeakMap())).set(port, this);
13059
- this._initializeFromPort(port);
13060
- return;
13327
+ __privateGet(_PDFWorker, _workerPorts).set(port, this);
13328
+ __privateMethod(this, _PDFWorker_instances, initializeFromPort_fn).call(this, port);
13329
+ } else {
13330
+ __privateMethod(this, _PDFWorker_instances, initialize_fn).call(this);
13331
+ }
13332
+ if (false) {
13333
+ Object.defineProperty(this, "_webWorker", {
13334
+ get() {
13335
+ return __privateGet(this, _webWorker);
13336
+ }
13337
+ });
13061
13338
  }
13062
- this._initialize();
13063
13339
  }
13064
13340
  /**
13065
13341
  * Promise for worker initialization completion.
13066
13342
  * @type {Promise<void>}
13067
13343
  */
13068
13344
  get promise() {
13069
- return this._readyCapability.promise;
13345
+ return __privateGet(this, _capability3).promise;
13070
13346
  }
13071
13347
  /**
13072
13348
  * The current `workerPort`, when it exists.
13073
13349
  * @type {Worker}
13074
13350
  */
13075
13351
  get port() {
13076
- return this._port;
13352
+ return __privateGet(this, _port2);
13077
13353
  }
13078
13354
  /**
13079
13355
  * The current MessageHandler-instance.
13080
13356
  * @type {MessageHandler}
13081
13357
  */
13082
13358
  get messageHandler() {
13083
- return this._messageHandler;
13084
- }
13085
- _initializeFromPort(port) {
13086
- if (false) {
13087
- throw new Error("Not implemented: _initializeFromPort");
13088
- }
13089
- this._port = port;
13090
- this._messageHandler = new MessageHandler("main", "worker", port);
13091
- this._messageHandler.on("ready", function() {
13092
- });
13093
- __privateMethod(this, _PDFWorker_instances, resolve_fn).call(this);
13094
- }
13095
- _initialize() {
13096
- if (__privateGet(_PDFWorker, _isWorkerDisabled) || __privateGet(_PDFWorker, _PDFWorker_static, mainThreadWorkerMessageHandler_get)) {
13097
- this._setupFakeWorker();
13098
- return;
13099
- }
13100
- let { workerSrc } = _PDFWorker;
13101
- try {
13102
- if (!_PDFWorker._isSameOrigin(window.location, workerSrc)) {
13103
- workerSrc = _PDFWorker._createCDNWrapper(
13104
- new URL(workerSrc, window.location).href
13105
- );
13106
- }
13107
- const worker = new Worker(workerSrc, { type: "module" });
13108
- const messageHandler = new MessageHandler("main", "worker", worker);
13109
- const terminateEarly = () => {
13110
- ac.abort();
13111
- messageHandler.destroy();
13112
- worker.terminate();
13113
- if (this.destroyed) {
13114
- this._readyCapability.reject(new Error("Worker was destroyed"));
13115
- } else {
13116
- this._setupFakeWorker();
13117
- }
13118
- };
13119
- const ac = new AbortController();
13120
- worker.addEventListener(
13121
- "error",
13122
- () => {
13123
- if (!this._webWorker) {
13124
- terminateEarly();
13125
- }
13126
- },
13127
- { signal: ac.signal }
13128
- );
13129
- messageHandler.on("test", (data) => {
13130
- ac.abort();
13131
- if (this.destroyed || !data) {
13132
- terminateEarly();
13133
- return;
13134
- }
13135
- this._messageHandler = messageHandler;
13136
- this._port = worker;
13137
- this._webWorker = worker;
13138
- __privateMethod(this, _PDFWorker_instances, resolve_fn).call(this);
13139
- });
13140
- messageHandler.on("ready", (data) => {
13141
- ac.abort();
13142
- if (this.destroyed) {
13143
- terminateEarly();
13144
- return;
13145
- }
13146
- try {
13147
- sendTest();
13148
- } catch {
13149
- this._setupFakeWorker();
13150
- }
13151
- });
13152
- const sendTest = () => {
13153
- const testObj = new Uint8Array();
13154
- messageHandler.send("test", testObj, [testObj.buffer]);
13155
- };
13156
- sendTest();
13157
- return;
13158
- } catch {
13159
- info("The worker has been disabled.");
13160
- }
13161
- this._setupFakeWorker();
13162
- }
13163
- _setupFakeWorker() {
13164
- if (!__privateGet(_PDFWorker, _isWorkerDisabled)) {
13165
- warn("Setting up fake worker.");
13166
- __privateSet(_PDFWorker, _isWorkerDisabled, true);
13167
- }
13168
- _PDFWorker._setupFakeWorkerGlobal.then((WorkerMessageHandler) => {
13169
- if (this.destroyed) {
13170
- this._readyCapability.reject(new Error("Worker was destroyed"));
13171
- return;
13172
- }
13173
- const port = new LoopbackPort();
13174
- this._port = port;
13175
- const id = `fake${__privateWrapper(_PDFWorker, _fakeWorkerId)._++}`;
13176
- const workerHandler = new MessageHandler(id + "_worker", id, port);
13177
- WorkerMessageHandler.setup(workerHandler, port);
13178
- this._messageHandler = new MessageHandler(id, id + "_worker", port);
13179
- __privateMethod(this, _PDFWorker_instances, resolve_fn).call(this);
13180
- }).catch((reason) => {
13181
- this._readyCapability.reject(
13182
- new Error(`Setting up fake worker failed: "${reason.message}".`)
13183
- );
13184
- });
13359
+ return __privateGet(this, _messageHandler);
13185
13360
  }
13186
13361
  /**
13187
13362
  * Destroys the worker instance.
13188
13363
  */
13189
13364
  destroy() {
13190
13365
  this.destroyed = true;
13191
- this._webWorker?.terminate();
13192
- this._webWorker = null;
13193
- __privateGet(_PDFWorker, _workerPorts)?.delete(this._port);
13194
- this._port = null;
13195
- this._messageHandler?.destroy();
13196
- this._messageHandler = null;
13366
+ __privateGet(this, _webWorker)?.terminate();
13367
+ __privateSet(this, _webWorker, null);
13368
+ __privateGet(_PDFWorker, _workerPorts).delete(__privateGet(this, _port2));
13369
+ __privateSet(this, _port2, null);
13370
+ __privateGet(this, _messageHandler)?.destroy();
13371
+ __privateSet(this, _messageHandler, null);
13197
13372
  }
13198
13373
  /**
13199
13374
  * @param {PDFWorkerParameters} params - The worker initialization parameters.
13200
13375
  * @returns {PDFWorker}
13201
13376
  */
13202
- static fromPort(params) {
13203
- if (false) {
13204
- throw new Error("Not implemented: fromPort");
13205
- }
13206
- if (!params?.port) {
13207
- throw new Error("PDFWorker.fromPort - invalid method signature.");
13208
- }
13209
- const cachedPort = __privateGet(this, _workerPorts)?.get(params.port);
13377
+ static create(params) {
13378
+ const cachedPort = __privateGet(this, _workerPorts).get(params?.port);
13210
13379
  if (cachedPort) {
13211
13380
  if (cachedPort._pendingDestroy) {
13212
13381
  throw new Error(
13213
- "PDFWorker.fromPort - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls."
13382
+ "PDFWorker.create - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls."
13214
13383
  );
13215
13384
  }
13216
13385
  return cachedPort;
@@ -13239,16 +13408,118 @@ var _PDFWorker = class _PDFWorker {
13239
13408
  return shadow(this, "_setupFakeWorkerGlobal", loader());
13240
13409
  }
13241
13410
  };
13411
+ _capability3 = new WeakMap();
13412
+ _messageHandler = new WeakMap();
13413
+ _port2 = new WeakMap();
13414
+ _webWorker = new WeakMap();
13242
13415
  _fakeWorkerId = new WeakMap();
13243
13416
  _isWorkerDisabled = new WeakMap();
13244
13417
  _workerPorts = new WeakMap();
13245
13418
  _PDFWorker_instances = new WeakSet();
13246
13419
  resolve_fn = function() {
13247
- this._readyCapability.resolve();
13248
- this._messageHandler.send("configure", {
13420
+ __privateGet(this, _capability3).resolve();
13421
+ __privateGet(this, _messageHandler).send("configure", {
13249
13422
  verbosity: this.verbosity
13250
13423
  });
13251
13424
  };
13425
+ initializeFromPort_fn = function(port) {
13426
+ __privateSet(this, _port2, port);
13427
+ __privateSet(this, _messageHandler, new MessageHandler("main", "worker", port));
13428
+ __privateGet(this, _messageHandler).on("ready", () => {
13429
+ });
13430
+ __privateMethod(this, _PDFWorker_instances, resolve_fn).call(this);
13431
+ };
13432
+ initialize_fn = function() {
13433
+ if (__privateGet(_PDFWorker, _isWorkerDisabled) || __privateGet(_PDFWorker, _PDFWorker_static, mainThreadWorkerMessageHandler_get)) {
13434
+ __privateMethod(this, _PDFWorker_instances, setupFakeWorker_fn).call(this);
13435
+ return;
13436
+ }
13437
+ let { workerSrc } = _PDFWorker;
13438
+ try {
13439
+ if (!_PDFWorker._isSameOrigin(window.location, workerSrc)) {
13440
+ workerSrc = _PDFWorker._createCDNWrapper(
13441
+ new URL(workerSrc, window.location).href
13442
+ );
13443
+ }
13444
+ const worker = new Worker(workerSrc, { type: "module" });
13445
+ const messageHandler = new MessageHandler("main", "worker", worker);
13446
+ const terminateEarly = () => {
13447
+ ac.abort();
13448
+ messageHandler.destroy();
13449
+ worker.terminate();
13450
+ if (this.destroyed) {
13451
+ __privateGet(this, _capability3).reject(new Error("Worker was destroyed"));
13452
+ } else {
13453
+ __privateMethod(this, _PDFWorker_instances, setupFakeWorker_fn).call(this);
13454
+ }
13455
+ };
13456
+ const ac = new AbortController();
13457
+ worker.addEventListener(
13458
+ "error",
13459
+ () => {
13460
+ if (!__privateGet(this, _webWorker)) {
13461
+ terminateEarly();
13462
+ }
13463
+ },
13464
+ { signal: ac.signal }
13465
+ );
13466
+ messageHandler.on("test", (data) => {
13467
+ ac.abort();
13468
+ if (this.destroyed || !data) {
13469
+ terminateEarly();
13470
+ return;
13471
+ }
13472
+ __privateSet(this, _messageHandler, messageHandler);
13473
+ __privateSet(this, _port2, worker);
13474
+ __privateSet(this, _webWorker, worker);
13475
+ __privateMethod(this, _PDFWorker_instances, resolve_fn).call(this);
13476
+ });
13477
+ messageHandler.on("ready", (data) => {
13478
+ ac.abort();
13479
+ if (this.destroyed) {
13480
+ terminateEarly();
13481
+ return;
13482
+ }
13483
+ try {
13484
+ sendTest();
13485
+ } catch {
13486
+ __privateMethod(this, _PDFWorker_instances, setupFakeWorker_fn).call(this);
13487
+ }
13488
+ });
13489
+ const sendTest = () => {
13490
+ const testObj = new Uint8Array();
13491
+ messageHandler.send("test", testObj, [testObj.buffer]);
13492
+ };
13493
+ sendTest();
13494
+ return;
13495
+ } catch {
13496
+ info("The worker has been disabled.");
13497
+ }
13498
+ __privateMethod(this, _PDFWorker_instances, setupFakeWorker_fn).call(this);
13499
+ };
13500
+ setupFakeWorker_fn = function() {
13501
+ if (!__privateGet(_PDFWorker, _isWorkerDisabled)) {
13502
+ warn("Setting up fake worker.");
13503
+ __privateSet(_PDFWorker, _isWorkerDisabled, true);
13504
+ }
13505
+ _PDFWorker._setupFakeWorkerGlobal.then((WorkerMessageHandler) => {
13506
+ if (this.destroyed) {
13507
+ __privateGet(this, _capability3).reject(new Error("Worker was destroyed"));
13508
+ return;
13509
+ }
13510
+ const port = new LoopbackPort();
13511
+ __privateSet(this, _port2, port);
13512
+ const id = `fake${__privateWrapper(_PDFWorker, _fakeWorkerId)._++}`;
13513
+ const workerHandler = new MessageHandler(id + "_worker", id, port);
13514
+ WorkerMessageHandler.setup(workerHandler, port);
13515
+ __privateSet(this, _messageHandler, new MessageHandler(id, id + "_worker", port));
13516
+ __privateMethod(this, _PDFWorker_instances, resolve_fn).call(this);
13517
+ }).catch((reason) => {
13518
+ __privateGet(this, _capability3).reject(
13519
+ new Error(`Setting up fake worker failed: "${reason.message}".`)
13520
+ );
13521
+ });
13522
+ };
13252
13523
  _PDFWorker_static = new WeakSet();
13253
13524
  mainThreadWorkerMessageHandler_get = function() {
13254
13525
  try {
@@ -13260,7 +13531,7 @@ mainThreadWorkerMessageHandler_get = function() {
13260
13531
  __privateAdd(_PDFWorker, _PDFWorker_static);
13261
13532
  __privateAdd(_PDFWorker, _fakeWorkerId, 0);
13262
13533
  __privateAdd(_PDFWorker, _isWorkerDisabled, false);
13263
- __privateAdd(_PDFWorker, _workerPorts);
13534
+ __privateAdd(_PDFWorker, _workerPorts, /* @__PURE__ */ new WeakMap());
13264
13535
  (() => {
13265
13536
  if (true) {
13266
13537
  if (isNodeJS) {
@@ -13281,6 +13552,21 @@ __privateAdd(_PDFWorker, _workerPorts);
13281
13552
  new Blob([wrapper], { type: "text/javascript" })
13282
13553
  );
13283
13554
  };
13555
+ _PDFWorker.fromPort = (params) => {
13556
+ deprecated(
13557
+ "`PDFWorker.fromPort` - please use `PDFWorker.create` instead."
13558
+ );
13559
+ if (!params?.port) {
13560
+ throw new Error("PDFWorker.fromPort - invalid method signature.");
13561
+ }
13562
+ return _PDFWorker.create(params);
13563
+ };
13564
+ }
13565
+ if (false) {
13566
+ _PDFWorker._resetGlobalState = () => {
13567
+ __privateSet(_PDFWorker, _isWorkerDisabled, false);
13568
+ delete globalThis.pdfjsWorker;
13569
+ };
13284
13570
  }
13285
13571
  })();
13286
13572
  var PDFWorker = _PDFWorker;
@@ -13846,100 +14132,6 @@ cacheSimpleMethod_fn = function(name, data = null) {
13846
14132
  __privateGet(this, _methodPromises).set(name, promise);
13847
14133
  return promise;
13848
14134
  };
13849
- var INITIAL_DATA = Symbol("INITIAL_DATA");
13850
- var _objs, _PDFObjects_instances, ensureObj_fn;
13851
- var PDFObjects = class {
13852
- constructor() {
13853
- __privateAdd(this, _PDFObjects_instances);
13854
- __privateAdd(this, _objs, /* @__PURE__ */ Object.create(null));
13855
- }
13856
- /**
13857
- * If called *without* callback, this returns the data of `objId` but the
13858
- * object needs to be resolved. If it isn't, this method throws.
13859
- *
13860
- * If called *with* a callback, the callback is called with the data of the
13861
- * object once the object is resolved. That means, if you call this method
13862
- * and the object is already resolved, the callback gets called right away.
13863
- *
13864
- * @param {string} objId
13865
- * @param {function} [callback]
13866
- * @returns {any}
13867
- */
13868
- get(objId, callback = null) {
13869
- if (callback) {
13870
- const obj2 = __privateMethod(this, _PDFObjects_instances, ensureObj_fn).call(this, objId);
13871
- obj2.promise.then(() => callback(obj2.data));
13872
- return null;
13873
- }
13874
- const obj = __privateGet(this, _objs)[objId];
13875
- if (!obj || obj.data === INITIAL_DATA) {
13876
- throw new Error(`Requesting object that isn't resolved yet ${objId}.`);
13877
- }
13878
- return obj.data;
13879
- }
13880
- /**
13881
- * @param {string} objId
13882
- * @returns {boolean}
13883
- */
13884
- has(objId) {
13885
- const obj = __privateGet(this, _objs)[objId];
13886
- return !!obj && obj.data !== INITIAL_DATA;
13887
- }
13888
- /**
13889
- * @param {string} objId
13890
- * @returns {boolean}
13891
- */
13892
- delete(objId) {
13893
- const obj = __privateGet(this, _objs)[objId];
13894
- if (!obj || obj.data === INITIAL_DATA) {
13895
- return false;
13896
- }
13897
- delete __privateGet(this, _objs)[objId];
13898
- return true;
13899
- }
13900
- /**
13901
- * Resolves the object `objId` with optional `data`.
13902
- *
13903
- * @param {string} objId
13904
- * @param {any} [data]
13905
- */
13906
- resolve(objId, data = null) {
13907
- const obj = __privateMethod(this, _PDFObjects_instances, ensureObj_fn).call(this, objId);
13908
- obj.data = data;
13909
- obj.resolve();
13910
- }
13911
- clear() {
13912
- for (const objId in __privateGet(this, _objs)) {
13913
- const { data } = __privateGet(this, _objs)[objId];
13914
- data?.bitmap?.close();
13915
- }
13916
- __privateSet(this, _objs, /* @__PURE__ */ Object.create(null));
13917
- }
13918
- *[Symbol.iterator]() {
13919
- for (const objId in __privateGet(this, _objs)) {
13920
- const { data } = __privateGet(this, _objs)[objId];
13921
- if (data === INITIAL_DATA) {
13922
- continue;
13923
- }
13924
- yield [objId, data];
13925
- }
13926
- }
13927
- };
13928
- _objs = new WeakMap();
13929
- _PDFObjects_instances = new WeakSet();
13930
- /**
13931
- * Ensures there is an object defined for `objId`.
13932
- *
13933
- * @param {string} objId
13934
- * @returns {Object}
13935
- */
13936
- ensureObj_fn = function(objId) {
13937
- var _a2;
13938
- return (_a2 = __privateGet(this, _objs))[objId] || (_a2[objId] = {
13939
- ...Promise.withResolvers(),
13940
- data: INITIAL_DATA
13941
- });
13942
- };
13943
14135
  var _internalRenderTask;
13944
14136
  var RenderTask = class {
13945
14137
  constructor(internalRenderTask) {
@@ -17455,12 +17647,9 @@ var _FreeTextEditor = class _FreeTextEditor extends AnnotationEditor {
17455
17647
  }
17456
17648
  /** @inheritdoc */
17457
17649
  enableEditMode() {
17458
- if (this.isInEditMode()) {
17459
- return;
17650
+ if (!super.enableEditMode()) {
17651
+ return false;
17460
17652
  }
17461
- this.parent.setEditingState(false);
17462
- this.parent.updateToolbar(AnnotationEditorType.FREETEXT);
17463
- super.enableEditMode();
17464
17653
  this.overlayDiv.classList.remove("enabled");
17465
17654
  this.editorDiv.contentEditable = true;
17466
17655
  this._isDraggable = false;
@@ -17490,14 +17679,13 @@ var _FreeTextEditor = class _FreeTextEditor extends AnnotationEditor {
17490
17679
  this.editorDiv.addEventListener("paste", this.editorDivPaste.bind(this), {
17491
17680
  signal
17492
17681
  });
17682
+ return true;
17493
17683
  }
17494
17684
  /** @inheritdoc */
17495
17685
  disableEditMode() {
17496
- if (!this.isInEditMode()) {
17497
- return;
17686
+ if (!super.disableEditMode()) {
17687
+ return false;
17498
17688
  }
17499
- this.parent.setEditingState(true);
17500
- super.disableEditMode();
17501
17689
  this.overlayDiv.classList.add("enabled");
17502
17690
  this.editorDiv.contentEditable = false;
17503
17691
  this.div.setAttribute("aria-activedescendant", __privateGet(this, _editorDivId));
@@ -17509,6 +17697,7 @@ var _FreeTextEditor = class _FreeTextEditor extends AnnotationEditor {
17509
17697
  });
17510
17698
  this.isEditing = false;
17511
17699
  this.parent.div.classList.add("freetextEditing");
17700
+ return true;
17512
17701
  }
17513
17702
  /** @inheritdoc */
17514
17703
  focusin(event) {
@@ -17592,17 +17781,7 @@ var _FreeTextEditor = class _FreeTextEditor extends AnnotationEditor {
17592
17781
  this.enableEditMode();
17593
17782
  this.editorDiv.focus();
17594
17783
  }
17595
- /**
17596
- * ondblclick callback.
17597
- * @param {MouseEvent} event
17598
- */
17599
- dblclick(event) {
17600
- this.enterInEditMode();
17601
- }
17602
- /**
17603
- * onkeydown callback.
17604
- * @param {KeyboardEvent} event
17605
- */
17784
+ /** @inheritdoc */
17606
17785
  keydown(event) {
17607
17786
  if (event.target === this.div && event.key === "Enter") {
17608
17787
  this.enterInEditMode();
@@ -17632,6 +17811,10 @@ var _FreeTextEditor = class _FreeTextEditor extends AnnotationEditor {
17632
17811
  this.editorDiv.setAttribute("aria-multiline", true);
17633
17812
  }
17634
17813
  /** @inheritdoc */
17814
+ get canChangeContent() {
17815
+ return true;
17816
+ }
17817
+ /** @inheritdoc */
17635
17818
  render() {
17636
17819
  if (this.div) {
17637
17820
  return this.div;
@@ -17656,7 +17839,6 @@ var _FreeTextEditor = class _FreeTextEditor extends AnnotationEditor {
17656
17839
  this.overlayDiv = document.createElement("div");
17657
17840
  this.overlayDiv.classList.add("overlay", "enabled");
17658
17841
  this.div.append(this.overlayDiv);
17659
- bindEvents(this, this.div, ["dblclick", "keydown"]);
17660
17842
  if (this._isCopy || this.annotationElementId) {
17661
17843
  const [parentWidth, parentHeight] = this.parentDimensions;
17662
17844
  if (this.annotationElementId) {
@@ -22487,14 +22669,8 @@ getGrayPixels_fn = function(bitmap) {
22487
22669
  const isteps = Math.floor(steps);
22488
22670
  steps = steps === isteps ? isteps - 1 : isteps;
22489
22671
  for (let i = 0; i < steps; i++) {
22490
- newWidth = prevWidth;
22491
- newHeight = prevHeight;
22492
- if (newWidth > maxDim) {
22493
- newWidth = Math.ceil(newWidth / 2);
22494
- }
22495
- if (newHeight > maxDim) {
22496
- newHeight = Math.ceil(newHeight / 2);
22497
- }
22672
+ newWidth = Math.ceil(prevWidth / 2);
22673
+ newHeight = Math.ceil(prevHeight / 2);
22498
22674
  const offscreen2 = new OffscreenCanvas(newWidth, newHeight);
22499
22675
  const ctx2 = offscreen2.getContext("2d");
22500
22676
  ctx2.drawImage(
@@ -22568,7 +22744,7 @@ var SignatureOptions = class _SignatureOptions extends DrawingOptions {
22568
22744
  constructor() {
22569
22745
  super();
22570
22746
  super.updateProperties({
22571
- fill: "CanvasText",
22747
+ fill: AnnotationEditor._defaultLineColor,
22572
22748
  "stroke-width": 0
22573
22749
  });
22574
22750
  }
@@ -22582,7 +22758,7 @@ var DrawnSignatureOptions = class _DrawnSignatureOptions extends InkDrawingOptio
22582
22758
  constructor(viewerParameters) {
22583
22759
  super(viewerParameters);
22584
22760
  super.updateProperties({
22585
- stroke: "CanvasText",
22761
+ stroke: AnnotationEditor._defaultLineColor,
22586
22762
  "stroke-width": 1
22587
22763
  });
22588
22764
  }
@@ -22955,9 +23131,10 @@ var StampEditor = class extends AnnotationEditor {
22955
23131
  }
22956
23132
  /** @inheritdoc */
22957
23133
  static paste(item, parent) {
22958
- parent.pasteEditor(AnnotationEditorType.STAMP, {
22959
- bitmapFile: item.getAsFile()
22960
- });
23134
+ parent.pasteEditor(
23135
+ { mode: AnnotationEditorType.STAMP },
23136
+ { bitmapFile: item.getAsFile() }
23137
+ );
22961
23138
  }
22962
23139
  /** @inheritdoc */
22963
23140
  altTextFinish() {
@@ -23722,10 +23899,10 @@ var _AnnotationEditorLayer = class _AnnotationEditorLayer {
23722
23899
  }
23723
23900
  /**
23724
23901
  * Update the toolbar if it's required to reflect the tool currently used.
23725
- * @param {number} mode
23902
+ * @param {Object} options
23726
23903
  */
23727
- updateToolbar(mode) {
23728
- __privateGet(this, _uiManager3).updateToolbar(mode);
23904
+ updateToolbar(options) {
23905
+ __privateGet(this, _uiManager3).updateToolbar(options);
23729
23906
  }
23730
23907
  /**
23731
23908
  * The mode has changed: it must be updated.
@@ -24084,12 +24261,12 @@ var _AnnotationEditorLayer = class _AnnotationEditorLayer {
24084
24261
  }
24085
24262
  /**
24086
24263
  * Paste some content into a new editor.
24087
- * @param {number} mode
24264
+ * @param {Object} options
24088
24265
  * @param {Object} params
24089
24266
  */
24090
- async pasteEditor(mode, params) {
24091
- __privateGet(this, _uiManager3).updateToolbar(mode);
24092
- await __privateGet(this, _uiManager3).updateMode(mode);
24267
+ async pasteEditor(options, params) {
24268
+ this.updateToolbar(options);
24269
+ await __privateGet(this, _uiManager3).updateMode(options.mode);
24093
24270
  const { offsetX, offsetY } = __privateMethod(this, _AnnotationEditorLayer_instances, getCenterPoint_fn).call(this);
24094
24271
  const id = this.getNextId();
24095
24272
  const editor = __privateMethod(this, _AnnotationEditorLayer_instances, createNewEditor_fn).call(this, {
@@ -24665,10 +24842,63 @@ var DrawLayer = _DrawLayer;
24665
24842
 
24666
24843
  // src/pdf.js/src/pdf.js
24667
24844
  if (false) {
24668
- globalThis.pdfjsTestingUtils = {
24845
+ globalThis._pdfjsTestingUtils = {
24669
24846
  HighlightOutliner
24670
24847
  };
24671
24848
  }
24849
+ globalThis.pdfjsLib = {
24850
+ AbortException,
24851
+ AnnotationEditorLayer,
24852
+ AnnotationEditorParamsType,
24853
+ AnnotationEditorType,
24854
+ AnnotationEditorUIManager,
24855
+ AnnotationLayer,
24856
+ AnnotationMode,
24857
+ AnnotationType,
24858
+ build,
24859
+ ColorPicker,
24860
+ createValidAbsoluteUrl,
24861
+ DOMSVGFactory,
24862
+ DrawLayer,
24863
+ FeatureTest,
24864
+ fetchData,
24865
+ getDocument,
24866
+ getFilenameFromUrl,
24867
+ getPdfFilenameFromUrl,
24868
+ getUuid,
24869
+ getXfaPageViewport,
24870
+ GlobalWorkerOptions,
24871
+ ImageKind,
24872
+ InvalidPDFException,
24873
+ isDataScheme,
24874
+ isPdfFile,
24875
+ isValidExplicitDest,
24876
+ MathClamp,
24877
+ noContextMenu,
24878
+ normalizeUnicode,
24879
+ OPS,
24880
+ OutputScale,
24881
+ PasswordResponses,
24882
+ PDFDataRangeTransport,
24883
+ PDFDateString,
24884
+ PDFWorker,
24885
+ PermissionFlag,
24886
+ PixelsPerInch,
24887
+ RenderingCancelledException,
24888
+ ResponseException,
24889
+ setLayerDimensions,
24890
+ shadow,
24891
+ SignatureExtractor,
24892
+ stopEvent,
24893
+ SupportedImageMimeTypes,
24894
+ TextLayer,
24895
+ TouchManager,
24896
+ updateUrlHash,
24897
+ Util,
24898
+ VerbosityLevel,
24899
+ version,
24900
+ XfaLayer
24901
+ };
24672
24902
 
24673
24903
  // src/lib/AnnotationOperatorsList.ts
24674
24904
  var AnnotationOperatorsList = class {
@@ -25667,6 +25897,26 @@ function makeSerializable(object) {
25667
25897
  ])
25668
25898
  );
25669
25899
  }
25900
+ function colorToRgb(color) {
25901
+ if (color.startsWith("#")) {
25902
+ const hex = color.slice(1);
25903
+ if (hex.length === 3) {
25904
+ return [
25905
+ Number.parseInt(hex[0] + hex[0], 16),
25906
+ Number.parseInt(hex[1] + hex[1], 16),
25907
+ Number.parseInt(hex[2] + hex[2], 16)
25908
+ ];
25909
+ }
25910
+ if (hex.length === 6) {
25911
+ return [
25912
+ Number.parseInt(hex.slice(0, 2), 16),
25913
+ Number.parseInt(hex.slice(2, 4), 16),
25914
+ Number.parseInt(hex.slice(4, 6), 16)
25915
+ ];
25916
+ }
25917
+ }
25918
+ throw new Error(`Invalid color format: ${color}`);
25919
+ }
25670
25920
 
25671
25921
  // src/lib/PDFPageProxy.ts
25672
25922
  var getAnnotations = PDFPageProxy.prototype.getAnnotations;
@@ -25792,10 +26042,18 @@ PDFPageProxy.prototype.getAnnotations = async function(params) {
25792
26042
  annotation.borderStyle.width = currentLineWidth;
25793
26043
  }
25794
26044
  if (fn === OPS.setStrokeRGBColor && firstStroke) {
25795
- annotation.color = args;
26045
+ if (typeof args[0] === "string") {
26046
+ annotation.color = colorToRgb(args[0]);
26047
+ } else {
26048
+ annotation.color = args;
26049
+ }
25796
26050
  }
25797
26051
  if (fn === OPS.setFillRGBColor && firstFill) {
25798
- currentFillColor = args;
26052
+ if (typeof args[0] === "string") {
26053
+ currentFillColor = colorToRgb(args[0]);
26054
+ } else {
26055
+ currentFillColor = args;
26056
+ }
25799
26057
  }
25800
26058
  if (fn === OPS.setGState) {
25801
26059
  for (const entry of args[0]) {
@@ -25833,6 +26091,23 @@ PDFPageProxy.prototype.getAnnotations = async function(params) {
25833
26091
  return makeSerializable(annotations);
25834
26092
  };
25835
26093
 
26094
+ // src/lib/WasmFactory.ts
26095
+ var WasmFactory = class {
26096
+ async fetch({ filename }) {
26097
+ switch (filename) {
26098
+ case "openjpeg.wasm":
26099
+ return import("./openjpeg-B2WN24QZ.js").then(
26100
+ (module) => module.default
26101
+ );
26102
+ case "qcms_bg":
26103
+ return import("./qcms_bg-T4RSHPOQ.js").then(
26104
+ (module) => module.default
26105
+ );
26106
+ }
26107
+ return Uint8Array.from([]);
26108
+ }
26109
+ };
26110
+
25836
26111
  // src/lib/StandardFontDataFactory.ts
25837
26112
  var StandardFontDataFactory = class extends BaseStandardFontDataFactory {
25838
26113
  constructor() {
@@ -26024,7 +26299,11 @@ async function createTextLayer(page, {
26024
26299
  let canvasContext = null;
26025
26300
  let container = rootContainer;
26026
26301
  const getObject = (data) => {
26027
- return data.startsWith("g_") ? commonObjs.get(data) : objs.get(data);
26302
+ try {
26303
+ return data.startsWith("g_") ? commonObjs.get(data) : objs.get(data);
26304
+ } catch {
26305
+ return null;
26306
+ }
26028
26307
  };
26029
26308
  const processItems = async (items, lang) => {
26030
26309
  if (disableProcessItems) {
@@ -26334,7 +26613,7 @@ async function createTextLayer(page, {
26334
26613
  return;
26335
26614
  }
26336
26615
  const imgData = getObject(imageId);
26337
- if (!imgData.bitmap && !imgData.data) {
26616
+ if (!imgData?.bitmap && !imgData?.data) {
26338
26617
  return;
26339
26618
  }
26340
26619
  const { context } = await canvasFactory.create(
@@ -26483,9 +26762,11 @@ export {
26483
26762
  TouchManager,
26484
26763
  Util,
26485
26764
  VerbosityLevel,
26765
+ WasmFactory,
26486
26766
  XfaLayer,
26487
26767
  build,
26488
26768
  canvasToData,
26769
+ colorToRgb,
26489
26770
  createCanvas,
26490
26771
  createSvgContext,
26491
26772
  createTextLayer,
@@ -26542,5 +26823,6 @@ export {
26542
26823
  stopEvent,
26543
26824
  toDataUrl,
26544
26825
  toSvgNode,
26826
+ updateUrlHash,
26545
26827
  version
26546
26828
  };