pdfjs-dist 2.2.228 → 2.6.347

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.

Potentially problematic release.


This version of pdfjs-dist might be problematic. Click here for more details.

Files changed (229) hide show
  1. package/README.md +4 -0
  2. package/bower.json +1 -1
  3. package/build/pdf.js +8816 -19300
  4. package/build/pdf.js.map +1 -1
  5. package/build/pdf.min.js +22 -1
  6. package/build/pdf.worker.entry.js +5 -3
  7. package/build/pdf.worker.js +27185 -35746
  8. package/build/pdf.worker.js.map +1 -1
  9. package/build/pdf.worker.min.js +22 -1
  10. package/es5/build/pdf.js +26665 -0
  11. package/es5/build/pdf.js.map +1 -0
  12. package/es5/build/pdf.min.js +22 -0
  13. package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
  14. package/es5/build/pdf.worker.js +61231 -0
  15. package/es5/build/pdf.worker.js.map +1 -0
  16. package/es5/build/pdf.worker.min.js +22 -0
  17. package/es5/image_decoders/pdf.image_decoders.js +12529 -0
  18. package/es5/image_decoders/pdf.image_decoders.js.map +1 -0
  19. package/es5/image_decoders/pdf.image_decoders.min.js +22 -0
  20. package/es5/web/images/annotation-check.svg +11 -0
  21. package/es5/web/images/annotation-comment.svg +16 -0
  22. package/es5/web/images/annotation-help.svg +26 -0
  23. package/es5/web/images/annotation-insert.svg +10 -0
  24. package/es5/web/images/annotation-key.svg +11 -0
  25. package/es5/web/images/annotation-newparagraph.svg +11 -0
  26. package/es5/web/images/annotation-noicon.svg +7 -0
  27. package/es5/web/images/annotation-note.svg +42 -0
  28. package/es5/web/images/annotation-paragraph.svg +16 -0
  29. package/es5/web/images/loading-icon.gif +0 -0
  30. package/es5/web/images/shadow.png +0 -0
  31. package/es5/web/pdf_viewer.css +406 -0
  32. package/es5/web/pdf_viewer.js +7886 -0
  33. package/es5/web/pdf_viewer.js.map +1 -0
  34. package/image_decoders/pdf.image_decoders.js +1498 -4832
  35. package/image_decoders/pdf.image_decoders.js.map +1 -1
  36. package/image_decoders/pdf.image_decoders.min.js +22 -1
  37. package/lib/README.md +7 -0
  38. package/lib/core/annotation.js +1144 -927
  39. package/lib/core/arithmetic_decoder.js +81 -97
  40. package/lib/core/bidi.js +54 -46
  41. package/lib/core/ccitt.js +88 -81
  42. package/lib/core/ccitt_stream.js +15 -14
  43. package/lib/core/cff_parser.js +747 -716
  44. package/lib/core/charsets.js +4 -4
  45. package/lib/core/chunked_stream.js +462 -553
  46. package/lib/core/cmap.js +231 -277
  47. package/lib/core/colorspace.js +715 -857
  48. package/lib/core/core_utils.js +57 -52
  49. package/lib/core/crypto.js +416 -437
  50. package/lib/core/document.js +629 -670
  51. package/lib/core/encodings.js +15 -15
  52. package/lib/core/evaluator.js +3229 -2800
  53. package/lib/core/font_renderer.js +135 -178
  54. package/lib/core/fonts.js +602 -534
  55. package/lib/core/function.js +355 -279
  56. package/lib/core/glyphlist.js +4527 -4526
  57. package/lib/core/image.js +442 -439
  58. package/lib/core/image_utils.js +221 -61
  59. package/lib/core/jbig2.js +325 -316
  60. package/lib/core/jbig2_stream.js +18 -17
  61. package/lib/core/jpeg_stream.js +21 -26
  62. package/lib/core/jpg.js +289 -233
  63. package/lib/core/jpx.js +161 -143
  64. package/lib/core/jpx_stream.js +28 -28
  65. package/lib/core/metrics.js +2928 -2928
  66. package/lib/core/murmurhash3.js +87 -102
  67. package/lib/core/obj.js +1343 -1300
  68. package/lib/core/operator_list.js +90 -67
  69. package/lib/core/parser.js +990 -987
  70. package/lib/core/pattern.js +105 -77
  71. package/lib/core/pdf_manager.js +149 -316
  72. package/lib/core/primitives.js +156 -104
  73. package/lib/core/ps_parser.js +175 -214
  74. package/lib/core/standard_fonts.js +237 -236
  75. package/lib/core/stream.js +94 -74
  76. package/lib/core/type1_parser.js +89 -69
  77. package/lib/core/unicode.js +1654 -1654
  78. package/lib/core/worker.js +275 -290
  79. package/lib/core/worker_stream.js +101 -210
  80. package/lib/core/writer.js +242 -0
  81. package/lib/display/annotation_layer.js +772 -1041
  82. package/lib/display/annotation_storage.js +89 -0
  83. package/lib/display/api.js +1575 -1868
  84. package/lib/display/api_compatibility.js +12 -17
  85. package/lib/display/canvas.js +370 -222
  86. package/lib/display/content_disposition.js +40 -59
  87. package/lib/display/display_utils.js +341 -536
  88. package/lib/display/fetch_stream.js +188 -304
  89. package/lib/display/font_loader.js +282 -414
  90. package/lib/display/metadata.js +81 -99
  91. package/lib/display/network.js +362 -511
  92. package/lib/display/network_utils.js +25 -18
  93. package/lib/display/node_stream.js +283 -465
  94. package/lib/display/node_utils.js +87 -0
  95. package/lib/display/optional_content_config.js +184 -0
  96. package/lib/display/pattern_helper.js +93 -44
  97. package/lib/display/svg.js +1163 -1401
  98. package/lib/display/text_layer.js +154 -137
  99. package/lib/display/transport_stream.js +237 -375
  100. package/lib/display/webgl.js +70 -83
  101. package/lib/display/worker_options.js +3 -3
  102. package/lib/display/xml_parser.js +303 -392
  103. package/lib/examples/node/domstubs.js +37 -37
  104. package/lib/pdf.js +220 -58
  105. package/lib/pdf.worker.js +14 -6
  106. package/lib/shared/compatibility.js +3 -246
  107. package/lib/shared/is_node.js +7 -6
  108. package/lib/shared/message_handler.js +327 -332
  109. package/lib/shared/util.js +271 -306
  110. package/lib/test/unit/annotation_spec.js +1902 -763
  111. package/lib/test/unit/annotation_storage_spec.js +83 -0
  112. package/lib/test/unit/api_spec.js +790 -592
  113. package/lib/test/unit/bidi_spec.js +7 -7
  114. package/lib/test/unit/cff_parser_spec.js +73 -72
  115. package/lib/test/unit/clitests_helper.js +7 -9
  116. package/lib/test/unit/cmap_spec.js +86 -88
  117. package/lib/test/unit/colorspace_spec.js +346 -154
  118. package/lib/test/unit/core_utils_spec.js +125 -105
  119. package/lib/test/unit/crypto_spec.js +232 -185
  120. package/lib/test/unit/custom_spec.js +150 -24
  121. package/lib/test/unit/display_svg_spec.js +34 -39
  122. package/lib/test/unit/display_utils_spec.js +139 -149
  123. package/lib/test/unit/document_spec.js +128 -17
  124. package/lib/test/unit/encodings_spec.js +12 -34
  125. package/lib/test/unit/evaluator_spec.js +112 -91
  126. package/lib/test/unit/fetch_stream_spec.js +31 -29
  127. package/lib/test/unit/function_spec.js +206 -204
  128. package/lib/test/unit/jasmine-boot.js +48 -32
  129. package/lib/test/unit/message_handler_spec.js +173 -159
  130. package/lib/test/unit/metadata_spec.js +71 -71
  131. package/lib/test/unit/murmurhash3_spec.js +12 -12
  132. package/lib/test/unit/network_spec.js +13 -11
  133. package/lib/test/unit/network_utils_spec.js +158 -144
  134. package/lib/test/unit/node_stream_spec.js +76 -90
  135. package/lib/test/unit/parser_spec.js +108 -114
  136. package/lib/test/unit/pdf_find_controller_spec.js +55 -86
  137. package/lib/test/unit/pdf_find_utils_spec.js +32 -32
  138. package/lib/test/unit/pdf_history_spec.js +32 -32
  139. package/lib/test/unit/primitives_spec.js +337 -156
  140. package/lib/test/unit/stream_spec.js +16 -14
  141. package/lib/test/unit/test_utils.js +91 -304
  142. package/lib/test/unit/testreporter.js +33 -22
  143. package/lib/test/unit/type1_parser_spec.js +42 -42
  144. package/lib/test/unit/ui_utils_spec.js +299 -461
  145. package/lib/test/unit/unicode_spec.js +42 -42
  146. package/lib/test/unit/util_spec.js +129 -149
  147. package/lib/test/unit/writer_spec.js +84 -0
  148. package/lib/web/annotation_layer_builder.js +78 -111
  149. package/lib/web/app.js +1542 -1267
  150. package/lib/web/app_options.js +76 -91
  151. package/lib/web/base_tree_viewer.js +100 -0
  152. package/lib/web/base_viewer.js +869 -834
  153. package/lib/web/chromecom.js +165 -252
  154. package/lib/web/debugger.js +149 -205
  155. package/lib/web/download_manager.js +34 -58
  156. package/lib/web/firefox_print_service.js +62 -34
  157. package/lib/web/firefoxcom.js +206 -374
  158. package/lib/web/genericcom.js +26 -108
  159. package/lib/web/genericl10n.js +24 -153
  160. package/lib/web/grab_to_pan.js +30 -30
  161. package/lib/web/interfaces.js +80 -254
  162. package/lib/web/overlay_manager.js +70 -246
  163. package/lib/web/password_prompt.js +38 -64
  164. package/lib/web/pdf_attachment_viewer.js +150 -126
  165. package/lib/web/pdf_cursor_tools.js +75 -102
  166. package/lib/web/pdf_document_properties.js +229 -383
  167. package/lib/web/pdf_find_bar.js +136 -170
  168. package/lib/web/pdf_find_controller.js +492 -548
  169. package/lib/web/pdf_find_utils.js +13 -13
  170. package/lib/web/pdf_history.js +397 -406
  171. package/lib/web/pdf_layer_viewer.js +208 -0
  172. package/lib/web/pdf_link_service.js +304 -348
  173. package/lib/web/pdf_outline_viewer.js +119 -212
  174. package/lib/web/pdf_page_view.js +474 -513
  175. package/lib/web/pdf_presentation_mode.js +308 -357
  176. package/lib/web/pdf_print_service.js +96 -110
  177. package/lib/web/pdf_rendering_queue.js +87 -108
  178. package/lib/web/pdf_sidebar.js +286 -302
  179. package/lib/web/pdf_sidebar_resizer.js +92 -119
  180. package/lib/web/pdf_single_page_viewer.js +77 -126
  181. package/lib/web/pdf_thumbnail_view.js +289 -297
  182. package/lib/web/pdf_thumbnail_viewer.js +202 -206
  183. package/lib/web/pdf_viewer.component.js +20 -21
  184. package/lib/web/pdf_viewer.js +55 -115
  185. package/lib/web/preferences.js +69 -273
  186. package/lib/web/secondary_toolbar.js +164 -196
  187. package/lib/web/text_layer_builder.js +284 -319
  188. package/lib/web/toolbar.js +217 -210
  189. package/lib/web/ui_utils.js +274 -421
  190. package/lib/web/view_history.js +52 -226
  191. package/lib/web/viewer_compatibility.js +21 -6
  192. package/package.json +4 -9
  193. package/types/display/annotation_layer.d.ts +61 -0
  194. package/types/display/annotation_storage.d.ts +36 -0
  195. package/types/display/api.d.ts +1107 -0
  196. package/types/display/api_compatibility.d.ts +1 -0
  197. package/types/display/canvas.d.ts +4 -0
  198. package/types/display/content_disposition.d.ts +7 -0
  199. package/types/display/display_utils.d.ts +243 -0
  200. package/types/display/fetch_stream.d.ts +67 -0
  201. package/types/display/font_loader.d.ts +19 -0
  202. package/types/display/metadata.d.ts +9 -0
  203. package/types/display/network.d.ts +80 -0
  204. package/types/display/network_utils.d.ts +14 -0
  205. package/types/display/node_stream.d.ts +72 -0
  206. package/types/display/node_utils.d.ts +6 -0
  207. package/types/display/optional_content_config.d.ts +12 -0
  208. package/types/display/pattern_helper.d.ts +5 -0
  209. package/types/display/svg.d.ts +2 -0
  210. package/types/display/text_layer.d.ts +83 -0
  211. package/types/display/transport_stream.d.ts +57 -0
  212. package/types/display/webgl.d.ts +20 -0
  213. package/types/display/worker_options.d.ts +27 -0
  214. package/types/display/xml_parser.d.ts +35 -0
  215. package/types/pdf.d.ts +33 -0
  216. package/types/shared/compatibility.d.ts +1 -0
  217. package/types/shared/is_node.d.ts +1 -0
  218. package/types/shared/message_handler.d.ts +62 -0
  219. package/types/shared/util.d.ts +421 -0
  220. package/web/images/shadow.png +0 -0
  221. package/web/pdf_viewer.css +29 -27
  222. package/web/pdf_viewer.js +3524 -4746
  223. package/web/pdf_viewer.js.map +1 -1
  224. package/webpack.js +6 -5
  225. package/external/streams/streams-lib.js +0 -3962
  226. package/external/url/url-lib.js +0 -627
  227. package/lib/shared/streams_polyfill.js +0 -43
  228. package/lib/shared/url_polyfill.js +0 -56
  229. package/web/images/texture.png +0 -0
@@ -2,7 +2,7 @@
2
2
  * @licstart The following is the entire license notice for the
3
3
  * Javascript code in this page
4
4
  *
5
- * Copyright 2019 Mozilla Foundation
5
+ * Copyright 2020 Mozilla Foundation
6
6
  *
7
7
  * Licensed under the Apache License, Version 2.0 (the "License");
8
8
  * you may not use this file except in compliance with the License.
@@ -28,127 +28,49 @@ exports.getDocument = getDocument;
28
28
  exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
29
29
  exports.build = exports.version = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = void 0;
30
30
 
31
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
31
+ var _util = require("../shared/util.js");
32
32
 
33
- var _util = require("../shared/util");
33
+ var _display_utils = require("./display_utils.js");
34
34
 
35
- var _display_utils = require("./display_utils");
35
+ var _font_loader = require("./font_loader.js");
36
36
 
37
- var _font_loader = require("./font_loader");
37
+ var _node_utils = require("./node_utils.js");
38
38
 
39
- var _api_compatibility = require("./api_compatibility");
39
+ var _annotation_storage = require("./annotation_storage.js");
40
40
 
41
- var _canvas = require("./canvas");
41
+ var _api_compatibility = require("./api_compatibility.js");
42
42
 
43
- var _global_scope = _interopRequireDefault(require("../shared/global_scope"));
43
+ var _canvas = require("./canvas.js");
44
44
 
45
- var _worker_options = require("./worker_options");
45
+ var _worker_options = require("./worker_options.js");
46
46
 
47
- var _message_handler = require("../shared/message_handler");
47
+ var _is_node = require("../shared/is_node.js");
48
48
 
49
- var _metadata = require("./metadata");
49
+ var _message_handler = require("../shared/message_handler.js");
50
50
 
51
- var _transport_stream = require("./transport_stream");
51
+ var _metadata = require("./metadata.js");
52
52
 
53
- var _webgl = require("./webgl");
53
+ var _optional_content_config = require("./optional_content_config.js");
54
54
 
55
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
55
+ var _transport_stream = require("./transport_stream.js");
56
56
 
57
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
57
+ var _webgl = require("./webgl.js");
58
58
 
59
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
60
-
61
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
62
-
63
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
64
-
65
- function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
66
-
67
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
68
-
69
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
70
-
71
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
72
-
73
- function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
74
-
75
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
76
-
77
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
78
-
79
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
80
-
81
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
82
-
83
- function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
84
-
85
- var DEFAULT_RANGE_CHUNK_SIZE = 65536;
86
- var isWorkerDisabled = false;
87
- var fallbackWorkerSrc;
88
- var fakeWorkerFilesLoader = null;
89
- {
90
- var useRequireEnsure = false;
91
-
92
- if (typeof window === 'undefined') {
93
- isWorkerDisabled = true;
94
-
95
- if (typeof require.ensure === 'undefined') {
96
- require.ensure = require('node-ensure');
97
- }
98
-
99
- useRequireEnsure = true;
100
- } else if (typeof require !== 'undefined' && typeof require.ensure === 'function') {
101
- useRequireEnsure = true;
102
- }
103
-
104
- if (typeof requirejs !== 'undefined' && requirejs.toUrl) {
105
- fallbackWorkerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js');
106
- }
107
-
108
- var dynamicLoaderSupported = typeof requirejs !== 'undefined' && requirejs.load;
109
- fakeWorkerFilesLoader = useRequireEnsure ? function () {
110
- return new Promise(function (resolve, reject) {
111
- require.ensure([], function () {
112
- try {
113
- var worker;
114
- worker = require('../pdf.worker.js');
115
- resolve(worker.WorkerMessageHandler);
116
- } catch (ex) {
117
- reject(ex);
118
- }
119
- }, reject, 'pdfjsWorker');
120
- });
121
- } : dynamicLoaderSupported ? function () {
122
- return new Promise(function (resolve, reject) {
123
- requirejs(['pdfjs-dist/build/pdf.worker'], function (worker) {
124
- try {
125
- resolve(worker.WorkerMessageHandler);
126
- } catch (ex) {
127
- reject(ex);
128
- }
129
- }, reject);
130
- });
131
- } : null;
132
-
133
- if (!fallbackWorkerSrc && (typeof document === "undefined" ? "undefined" : _typeof(document)) === 'object' && 'currentScript' in document) {
134
- var pdfjsFilePath = document.currentScript && document.currentScript.src;
135
-
136
- if (pdfjsFilePath) {
137
- fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, '.worker$1$2');
138
- }
139
- }
140
- }
141
- var createPDFNetworkStream;
59
+ const DEFAULT_RANGE_CHUNK_SIZE = 65536;
60
+ const RENDERING_CANCELLED_TIMEOUT = 100;
61
+ const DefaultCanvasFactory = _is_node.isNodeJS ? _node_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory;
62
+ const DefaultCMapReaderFactory = _is_node.isNodeJS ? _node_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory;
63
+ let createPDFNetworkStream;
142
64
 
143
65
  function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
144
66
  createPDFNetworkStream = pdfNetworkStreamFactory;
145
67
  }
146
68
 
147
69
  function getDocument(src) {
148
- var task = new PDFDocumentLoadingTask();
149
- var source;
70
+ const task = new PDFDocumentLoadingTask();
71
+ let source;
150
72
 
151
- if (typeof src === 'string') {
73
+ if (typeof src === "string") {
152
74
  source = {
153
75
  url: src
154
76
  };
@@ -161,42 +83,42 @@ function getDocument(src) {
161
83
  range: src
162
84
  };
163
85
  } else {
164
- if (_typeof(src) !== 'object') {
165
- throw new Error('Invalid parameter in getDocument, ' + 'need either Uint8Array, string or a parameter object');
86
+ if (typeof src !== "object") {
87
+ throw new Error("Invalid parameter in getDocument, " + "need either Uint8Array, string or a parameter object");
166
88
  }
167
89
 
168
90
  if (!src.url && !src.data && !src.range) {
169
- throw new Error('Invalid parameter object: need either .data, .range or .url');
91
+ throw new Error("Invalid parameter object: need either .data, .range or .url");
170
92
  }
171
93
 
172
94
  source = src;
173
95
  }
174
96
 
175
- var params = Object.create(null);
176
- var rangeTransport = null,
97
+ const params = Object.create(null);
98
+ let rangeTransport = null,
177
99
  worker = null;
178
100
 
179
- for (var key in source) {
180
- if (key === 'url' && typeof window !== 'undefined') {
181
- params[key] = new _util.URL(source[key], window.location).href;
101
+ for (const key in source) {
102
+ if (key === "url" && typeof window !== "undefined") {
103
+ params[key] = new URL(source[key], window.location).href;
182
104
  continue;
183
- } else if (key === 'range') {
105
+ } else if (key === "range") {
184
106
  rangeTransport = source[key];
185
107
  continue;
186
- } else if (key === 'worker') {
108
+ } else if (key === "worker") {
187
109
  worker = source[key];
188
110
  continue;
189
- } else if (key === 'data' && !(source[key] instanceof Uint8Array)) {
190
- var pdfBytes = source[key];
111
+ } else if (key === "data" && !(source[key] instanceof Uint8Array)) {
112
+ const pdfBytes = source[key];
191
113
 
192
- if (typeof pdfBytes === 'string') {
114
+ if (typeof pdfBytes === "string") {
193
115
  params[key] = (0, _util.stringToBytes)(pdfBytes);
194
- } else if (_typeof(pdfBytes) === 'object' && pdfBytes !== null && !isNaN(pdfBytes.length)) {
116
+ } else if (typeof pdfBytes === "object" && pdfBytes !== null && !isNaN(pdfBytes.length)) {
195
117
  params[key] = new Uint8Array(pdfBytes);
196
118
  } else if ((0, _util.isArrayBuffer)(pdfBytes)) {
197
119
  params[key] = new Uint8Array(pdfBytes);
198
120
  } else {
199
- throw new Error('Invalid PDF binary data: either typed array, ' + 'string or array-like object is expected in the ' + 'data property.');
121
+ throw new Error("Invalid PDF binary data: either typed array, " + "string or array-like object is expected in the " + "data property.");
200
122
  }
201
123
 
202
124
  continue;
@@ -206,48 +128,43 @@ function getDocument(src) {
206
128
  }
207
129
 
208
130
  params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
209
- params.CMapReaderFactory = params.CMapReaderFactory || _display_utils.DOMCMapReaderFactory;
131
+ params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory;
210
132
  params.ignoreErrors = params.stopAtErrors !== true;
133
+ params.fontExtraProperties = params.fontExtraProperties === true;
211
134
  params.pdfBug = params.pdfBug === true;
212
- var NativeImageDecoderValues = Object.values(_util.NativeImageDecoding);
213
-
214
- if (params.nativeImageDecoderSupport === undefined || !NativeImageDecoderValues.includes(params.nativeImageDecoderSupport)) {
215
- params.nativeImageDecoderSupport = _api_compatibility.apiCompatibilityParams.nativeImageDecoderSupport || _util.NativeImageDecoding.DECODE;
216
- }
217
135
 
218
136
  if (!Number.isInteger(params.maxImageSize)) {
219
137
  params.maxImageSize = -1;
220
138
  }
221
139
 
222
- if (typeof params.isEvalSupported !== 'boolean') {
140
+ if (typeof params.isEvalSupported !== "boolean") {
223
141
  params.isEvalSupported = true;
224
142
  }
225
143
 
226
- if (typeof params.disableFontFace !== 'boolean') {
144
+ if (typeof params.disableFontFace !== "boolean") {
227
145
  params.disableFontFace = _api_compatibility.apiCompatibilityParams.disableFontFace || false;
228
146
  }
229
147
 
230
- if (typeof params.disableRange !== 'boolean') {
148
+ if (typeof params.ownerDocument === "undefined") {
149
+ params.ownerDocument = globalThis.document;
150
+ }
151
+
152
+ if (typeof params.disableRange !== "boolean") {
231
153
  params.disableRange = false;
232
154
  }
233
155
 
234
- if (typeof params.disableStream !== 'boolean') {
156
+ if (typeof params.disableStream !== "boolean") {
235
157
  params.disableStream = false;
236
158
  }
237
159
 
238
- if (typeof params.disableAutoFetch !== 'boolean') {
160
+ if (typeof params.disableAutoFetch !== "boolean") {
239
161
  params.disableAutoFetch = false;
240
162
  }
241
163
 
242
- if (typeof params.disableCreateObjectURL !== 'boolean') {
243
- params.disableCreateObjectURL = _api_compatibility.apiCompatibilityParams.disableCreateObjectURL || false;
244
- }
245
-
246
164
  (0, _util.setVerbosityLevel)(params.verbosity);
247
165
 
248
166
  if (!worker) {
249
- var workerParams = {
250
- postMessageTransfers: params.postMessageTransfers,
167
+ const workerParams = {
251
168
  verbosity: params.verbosity,
252
169
  port: _worker_options.GlobalWorkerOptions.workerPort
253
170
  };
@@ -255,18 +172,16 @@ function getDocument(src) {
255
172
  task._worker = worker;
256
173
  }
257
174
 
258
- var docId = task.docId;
175
+ const docId = task.docId;
259
176
  worker.promise.then(function () {
260
177
  if (task.destroyed) {
261
- throw new Error('Loading aborted');
178
+ throw new Error("Loading aborted");
262
179
  }
263
180
 
264
- return _fetchDocument(worker, params, rangeTransport, docId).then(function (workerId) {
265
- if (task.destroyed) {
266
- throw new Error('Loading aborted');
267
- }
181
+ const workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId);
268
182
 
269
- var networkStream;
183
+ const networkStreamPromise = new Promise(function (resolve) {
184
+ let networkStream;
270
185
 
271
186
  if (rangeTransport) {
272
187
  networkStream = new _transport_stream.PDFDataTransportStream({
@@ -288,19 +203,26 @@ function getDocument(src) {
288
203
  });
289
204
  }
290
205
 
291
- var messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);
206
+ resolve(networkStream);
207
+ });
208
+ return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) {
209
+ if (task.destroyed) {
210
+ throw new Error("Loading aborted");
211
+ }
212
+
213
+ const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);
292
214
  messageHandler.postMessageTransfers = worker.postMessageTransfers;
293
- var transport = new WorkerTransport(messageHandler, task, networkStream, params);
215
+ const transport = new WorkerTransport(messageHandler, task, networkStream, params);
294
216
  task._transport = transport;
295
- messageHandler.send('Ready', null);
217
+ messageHandler.send("Ready", null);
296
218
  });
297
- })["catch"](task._capability.reject);
219
+ }).catch(task._capability.reject);
298
220
  return task;
299
221
  }
300
222
 
301
223
  function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
302
224
  if (worker.destroyed) {
303
- return Promise.reject(new Error('Worker was destroyed'));
225
+ return Promise.reject(new Error("Worker was destroyed"));
304
226
  }
305
227
 
306
228
  if (pdfDataRangeTransport) {
@@ -309,9 +231,9 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
309
231
  source.progressiveDone = pdfDataRangeTransport.progressiveDone;
310
232
  }
311
233
 
312
- return worker.messageHandler.sendWithPromise('GetDocRequest', {
313
- docId: docId,
314
- apiVersion: '2.2.228',
234
+ return worker.messageHandler.sendWithPromise("GetDocRequest", {
235
+ docId,
236
+ apiVersion: '2.6.347',
315
237
  source: {
316
238
  data: source.data,
317
239
  url: source.url,
@@ -322,84 +244,60 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
322
244
  },
323
245
  maxImageSize: source.maxImageSize,
324
246
  disableFontFace: source.disableFontFace,
325
- disableCreateObjectURL: source.disableCreateObjectURL,
326
247
  postMessageTransfers: worker.postMessageTransfers,
327
248
  docBaseUrl: source.docBaseUrl,
328
- nativeImageDecoderSupport: source.nativeImageDecoderSupport,
329
249
  ignoreErrors: source.ignoreErrors,
330
- isEvalSupported: source.isEvalSupported
250
+ isEvalSupported: source.isEvalSupported,
251
+ fontExtraProperties: source.fontExtraProperties
331
252
  }).then(function (workerId) {
332
253
  if (worker.destroyed) {
333
- throw new Error('Worker was destroyed');
254
+ throw new Error("Worker was destroyed");
334
255
  }
335
256
 
336
257
  return workerId;
337
258
  });
338
259
  }
339
260
 
340
- var PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {
341
- var nextDocumentId = 0;
342
-
343
- var PDFDocumentLoadingTask =
344
- /*#__PURE__*/
345
- function () {
346
- function PDFDocumentLoadingTask() {
347
- _classCallCheck(this, PDFDocumentLoadingTask);
261
+ const PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {
262
+ let nextDocumentId = 0;
348
263
 
264
+ class PDFDocumentLoadingTask {
265
+ constructor() {
349
266
  this._capability = (0, _util.createPromiseCapability)();
350
267
  this._transport = null;
351
268
  this._worker = null;
352
- this.docId = 'd' + nextDocumentId++;
269
+ this.docId = "d" + nextDocumentId++;
353
270
  this.destroyed = false;
354
271
  this.onPassword = null;
355
272
  this.onProgress = null;
356
273
  this.onUnsupportedFeature = null;
357
274
  }
358
275
 
359
- _createClass(PDFDocumentLoadingTask, [{
360
- key: "destroy",
361
- value: function destroy() {
362
- var _this = this;
276
+ get promise() {
277
+ return this._capability.promise;
278
+ }
363
279
 
364
- this.destroyed = true;
365
- var transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy();
366
- return transportDestroyed.then(function () {
367
- _this._transport = null;
280
+ destroy() {
281
+ this.destroyed = true;
282
+ const transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy();
283
+ return transportDestroyed.then(() => {
284
+ this._transport = null;
368
285
 
369
- if (_this._worker) {
370
- _this._worker.destroy();
286
+ if (this._worker) {
287
+ this._worker.destroy();
371
288
 
372
- _this._worker = null;
373
- }
374
- });
375
- }
376
- }, {
377
- key: "then",
378
- value: function then(onFulfilled, onRejected) {
379
- (0, _display_utils.deprecated)('PDFDocumentLoadingTask.then method, ' + 'use the `promise` getter instead.');
380
- return this.promise.then.apply(this.promise, arguments);
381
- }
382
- }, {
383
- key: "promise",
384
- get: function get() {
385
- return this._capability.promise;
386
- }
387
- }]);
289
+ this._worker = null;
290
+ }
291
+ });
292
+ }
388
293
 
389
- return PDFDocumentLoadingTask;
390
- }();
294
+ }
391
295
 
392
296
  return PDFDocumentLoadingTask;
393
297
  }();
394
298
 
395
- var PDFDataRangeTransport =
396
- /*#__PURE__*/
397
- function () {
398
- function PDFDataRangeTransport(length, initialData) {
399
- var progressiveDone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
400
-
401
- _classCallCheck(this, PDFDataRangeTransport);
402
-
299
+ class PDFDataRangeTransport {
300
+ constructor(length, initialData, progressiveDone = false) {
403
301
  this.length = length;
404
302
  this.initialData = initialData;
405
303
  this.progressiveDone = progressiveDone;
@@ -410,815 +308,815 @@ function () {
410
308
  this._readyCapability = (0, _util.createPromiseCapability)();
411
309
  }
412
310
 
413
- _createClass(PDFDataRangeTransport, [{
414
- key: "addRangeListener",
415
- value: function addRangeListener(listener) {
416
- this._rangeListeners.push(listener);
417
- }
418
- }, {
419
- key: "addProgressListener",
420
- value: function addProgressListener(listener) {
421
- this._progressListeners.push(listener);
422
- }
423
- }, {
424
- key: "addProgressiveReadListener",
425
- value: function addProgressiveReadListener(listener) {
426
- this._progressiveReadListeners.push(listener);
427
- }
428
- }, {
429
- key: "addProgressiveDoneListener",
430
- value: function addProgressiveDoneListener(listener) {
431
- this._progressiveDoneListeners.push(listener);
432
- }
433
- }, {
434
- key: "onDataRange",
435
- value: function onDataRange(begin, chunk) {
436
- var _iteratorNormalCompletion = true;
437
- var _didIteratorError = false;
438
- var _iteratorError = undefined;
439
-
440
- try {
441
- for (var _iterator = this._rangeListeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
442
- var listener = _step.value;
443
- listener(begin, chunk);
444
- }
445
- } catch (err) {
446
- _didIteratorError = true;
447
- _iteratorError = err;
448
- } finally {
449
- try {
450
- if (!_iteratorNormalCompletion && _iterator["return"] != null) {
451
- _iterator["return"]();
452
- }
453
- } finally {
454
- if (_didIteratorError) {
455
- throw _iteratorError;
456
- }
457
- }
458
- }
459
- }
460
- }, {
461
- key: "onDataProgress",
462
- value: function onDataProgress(loaded, total) {
463
- var _this2 = this;
311
+ addRangeListener(listener) {
312
+ this._rangeListeners.push(listener);
313
+ }
464
314
 
465
- this._readyCapability.promise.then(function () {
466
- var _iteratorNormalCompletion2 = true;
467
- var _didIteratorError2 = false;
468
- var _iteratorError2 = undefined;
315
+ addProgressListener(listener) {
316
+ this._progressListeners.push(listener);
317
+ }
469
318
 
470
- try {
471
- for (var _iterator2 = _this2._progressListeners[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
472
- var listener = _step2.value;
473
- listener(loaded, total);
474
- }
475
- } catch (err) {
476
- _didIteratorError2 = true;
477
- _iteratorError2 = err;
478
- } finally {
479
- try {
480
- if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
481
- _iterator2["return"]();
482
- }
483
- } finally {
484
- if (_didIteratorError2) {
485
- throw _iteratorError2;
486
- }
487
- }
488
- }
489
- });
490
- }
491
- }, {
492
- key: "onDataProgressiveRead",
493
- value: function onDataProgressiveRead(chunk) {
494
- var _this3 = this;
319
+ addProgressiveReadListener(listener) {
320
+ this._progressiveReadListeners.push(listener);
321
+ }
495
322
 
496
- this._readyCapability.promise.then(function () {
497
- var _iteratorNormalCompletion3 = true;
498
- var _didIteratorError3 = false;
499
- var _iteratorError3 = undefined;
323
+ addProgressiveDoneListener(listener) {
324
+ this._progressiveDoneListeners.push(listener);
325
+ }
500
326
 
501
- try {
502
- for (var _iterator3 = _this3._progressiveReadListeners[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
503
- var listener = _step3.value;
504
- listener(chunk);
505
- }
506
- } catch (err) {
507
- _didIteratorError3 = true;
508
- _iteratorError3 = err;
509
- } finally {
510
- try {
511
- if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) {
512
- _iterator3["return"]();
513
- }
514
- } finally {
515
- if (_didIteratorError3) {
516
- throw _iteratorError3;
517
- }
518
- }
519
- }
520
- });
327
+ onDataRange(begin, chunk) {
328
+ for (const listener of this._rangeListeners) {
329
+ listener(begin, chunk);
521
330
  }
522
- }, {
523
- key: "onDataProgressiveDone",
524
- value: function onDataProgressiveDone() {
525
- var _this4 = this;
331
+ }
332
+
333
+ onDataProgress(loaded, total) {
334
+ this._readyCapability.promise.then(() => {
335
+ for (const listener of this._progressListeners) {
336
+ listener(loaded, total);
337
+ }
338
+ });
339
+ }
526
340
 
527
- this._readyCapability.promise.then(function () {
528
- var _iteratorNormalCompletion4 = true;
529
- var _didIteratorError4 = false;
530
- var _iteratorError4 = undefined;
341
+ onDataProgressiveRead(chunk) {
342
+ this._readyCapability.promise.then(() => {
343
+ for (const listener of this._progressiveReadListeners) {
344
+ listener(chunk);
345
+ }
346
+ });
347
+ }
531
348
 
532
- try {
533
- for (var _iterator4 = _this4._progressiveDoneListeners[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
534
- var listener = _step4.value;
535
- listener();
536
- }
537
- } catch (err) {
538
- _didIteratorError4 = true;
539
- _iteratorError4 = err;
540
- } finally {
541
- try {
542
- if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) {
543
- _iterator4["return"]();
544
- }
545
- } finally {
546
- if (_didIteratorError4) {
547
- throw _iteratorError4;
548
- }
549
- }
550
- }
551
- });
552
- }
553
- }, {
554
- key: "transportReady",
555
- value: function transportReady() {
556
- this._readyCapability.resolve();
557
- }
558
- }, {
559
- key: "requestDataRange",
560
- value: function requestDataRange(begin, end) {
561
- (0, _util.unreachable)('Abstract method PDFDataRangeTransport.requestDataRange');
562
- }
563
- }, {
564
- key: "abort",
565
- value: function abort() {}
566
- }]);
349
+ onDataProgressiveDone() {
350
+ this._readyCapability.promise.then(() => {
351
+ for (const listener of this._progressiveDoneListeners) {
352
+ listener();
353
+ }
354
+ });
355
+ }
567
356
 
568
- return PDFDataRangeTransport;
569
- }();
357
+ transportReady() {
358
+ this._readyCapability.resolve();
359
+ }
570
360
 
571
- exports.PDFDataRangeTransport = PDFDataRangeTransport;
361
+ requestDataRange(begin, end) {
362
+ (0, _util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange");
363
+ }
364
+
365
+ abort() {}
366
+
367
+ }
572
368
 
573
- var PDFDocumentProxy =
574
- /*#__PURE__*/
575
- function () {
576
- function PDFDocumentProxy(pdfInfo, transport) {
577
- _classCallCheck(this, PDFDocumentProxy);
369
+ exports.PDFDataRangeTransport = PDFDataRangeTransport;
578
370
 
371
+ class PDFDocumentProxy {
372
+ constructor(pdfInfo, transport) {
579
373
  this._pdfInfo = pdfInfo;
580
374
  this._transport = transport;
581
375
  }
582
376
 
583
- _createClass(PDFDocumentProxy, [{
584
- key: "getPage",
585
- value: function getPage(pageNumber) {
586
- return this._transport.getPage(pageNumber);
587
- }
588
- }, {
589
- key: "getPageIndex",
590
- value: function getPageIndex(ref) {
591
- return this._transport.getPageIndex(ref);
592
- }
593
- }, {
594
- key: "getDestinations",
595
- value: function getDestinations() {
596
- return this._transport.getDestinations();
597
- }
598
- }, {
599
- key: "getDestination",
600
- value: function getDestination(id) {
601
- return this._transport.getDestination(id);
602
- }
603
- }, {
604
- key: "getPageLabels",
605
- value: function getPageLabels() {
606
- return this._transport.getPageLabels();
607
- }
608
- }, {
609
- key: "getPageLayout",
610
- value: function getPageLayout() {
611
- return this._transport.getPageLayout();
612
- }
613
- }, {
614
- key: "getPageMode",
615
- value: function getPageMode() {
616
- return this._transport.getPageMode();
617
- }
618
- }, {
619
- key: "getViewerPreferences",
620
- value: function getViewerPreferences() {
621
- return this._transport.getViewerPreferences();
622
- }
623
- }, {
624
- key: "getOpenActionDestination",
625
- value: function getOpenActionDestination() {
626
- return this._transport.getOpenActionDestination();
627
- }
628
- }, {
629
- key: "getAttachments",
630
- value: function getAttachments() {
631
- return this._transport.getAttachments();
632
- }
633
- }, {
634
- key: "getJavaScript",
635
- value: function getJavaScript() {
636
- return this._transport.getJavaScript();
637
- }
638
- }, {
639
- key: "getOutline",
640
- value: function getOutline() {
641
- return this._transport.getOutline();
642
- }
643
- }, {
644
- key: "getPermissions",
645
- value: function getPermissions() {
646
- return this._transport.getPermissions();
647
- }
648
- }, {
649
- key: "getMetadata",
650
- value: function getMetadata() {
651
- return this._transport.getMetadata();
652
- }
653
- }, {
654
- key: "getData",
655
- value: function getData() {
656
- return this._transport.getData();
657
- }
658
- }, {
659
- key: "getDownloadInfo",
660
- value: function getDownloadInfo() {
661
- return this._transport.downloadInfoCapability.promise;
662
- }
663
- }, {
664
- key: "getStats",
665
- value: function getStats() {
666
- return this._transport.getStats();
667
- }
668
- }, {
669
- key: "cleanup",
670
- value: function cleanup() {
671
- this._transport.startCleanup();
672
- }
673
- }, {
674
- key: "destroy",
675
- value: function destroy() {
676
- return this.loadingTask.destroy();
677
- }
678
- }, {
679
- key: "numPages",
680
- get: function get() {
681
- return this._pdfInfo.numPages;
682
- }
683
- }, {
684
- key: "fingerprint",
685
- get: function get() {
686
- return this._pdfInfo.fingerprint;
687
- }
688
- }, {
689
- key: "loadingParams",
690
- get: function get() {
691
- return this._transport.loadingParams;
692
- }
693
- }, {
694
- key: "loadingTask",
695
- get: function get() {
696
- return this._transport.loadingTask;
697
- }
698
- }]);
699
-
700
- return PDFDocumentProxy;
701
- }();
377
+ get annotationStorage() {
378
+ return (0, _util.shadow)(this, "annotationStorage", new _annotation_storage.AnnotationStorage());
379
+ }
702
380
 
703
- exports.PDFDocumentProxy = PDFDocumentProxy;
381
+ get numPages() {
382
+ return this._pdfInfo.numPages;
383
+ }
384
+
385
+ get fingerprint() {
386
+ return this._pdfInfo.fingerprint;
387
+ }
704
388
 
705
- var PDFPageProxy =
706
- /*#__PURE__*/
707
- function () {
708
- function PDFPageProxy(pageIndex, pageInfo, transport) {
709
- var pdfBug = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
389
+ getPage(pageNumber) {
390
+ return this._transport.getPage(pageNumber);
391
+ }
392
+
393
+ getPageIndex(ref) {
394
+ return this._transport.getPageIndex(ref);
395
+ }
396
+
397
+ getDestinations() {
398
+ return this._transport.getDestinations();
399
+ }
400
+
401
+ getDestination(id) {
402
+ return this._transport.getDestination(id);
403
+ }
404
+
405
+ getPageLabels() {
406
+ return this._transport.getPageLabels();
407
+ }
408
+
409
+ getPageLayout() {
410
+ return this._transport.getPageLayout();
411
+ }
412
+
413
+ getPageMode() {
414
+ return this._transport.getPageMode();
415
+ }
416
+
417
+ getViewerPreferences() {
418
+ return this._transport.getViewerPreferences();
419
+ }
420
+
421
+ getOpenAction() {
422
+ return this._transport.getOpenAction();
423
+ }
424
+
425
+ getAttachments() {
426
+ return this._transport.getAttachments();
427
+ }
428
+
429
+ getJavaScript() {
430
+ return this._transport.getJavaScript();
431
+ }
432
+
433
+ getOutline() {
434
+ return this._transport.getOutline();
435
+ }
436
+
437
+ getOptionalContentConfig() {
438
+ return this._transport.getOptionalContentConfig();
439
+ }
440
+
441
+ getPermissions() {
442
+ return this._transport.getPermissions();
443
+ }
444
+
445
+ getMetadata() {
446
+ return this._transport.getMetadata();
447
+ }
448
+
449
+ getData() {
450
+ return this._transport.getData();
451
+ }
452
+
453
+ getDownloadInfo() {
454
+ return this._transport.downloadInfoCapability.promise;
455
+ }
456
+
457
+ getStats() {
458
+ return this._transport.getStats();
459
+ }
460
+
461
+ cleanup() {
462
+ return this._transport.startCleanup();
463
+ }
464
+
465
+ destroy() {
466
+ return this.loadingTask.destroy();
467
+ }
468
+
469
+ get loadingParams() {
470
+ return this._transport.loadingParams;
471
+ }
472
+
473
+ get loadingTask() {
474
+ return this._transport.loadingTask;
475
+ }
476
+
477
+ saveDocument(annotationStorage) {
478
+ return this._transport.saveDocument(annotationStorage);
479
+ }
480
+
481
+ }
710
482
 
711
- _classCallCheck(this, PDFPageProxy);
483
+ exports.PDFDocumentProxy = PDFDocumentProxy;
712
484
 
713
- this.pageIndex = pageIndex;
485
+ class PDFPageProxy {
486
+ constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {
487
+ this._pageIndex = pageIndex;
714
488
  this._pageInfo = pageInfo;
489
+ this._ownerDocument = ownerDocument;
715
490
  this._transport = transport;
716
- this._stats = pdfBug ? new _display_utils.StatTimer() : _display_utils.DummyStatTimer;
491
+ this._stats = pdfBug ? new _display_utils.StatTimer() : null;
717
492
  this._pdfBug = pdfBug;
718
493
  this.commonObjs = transport.commonObjs;
719
494
  this.objs = new PDFObjects();
720
495
  this.cleanupAfterRender = false;
721
496
  this.pendingCleanup = false;
722
- this.intentStates = Object.create(null);
497
+ this._intentStates = new Map();
723
498
  this.destroyed = false;
724
499
  }
725
500
 
726
- _createClass(PDFPageProxy, [{
727
- key: "getViewport",
728
- value: function getViewport() {
729
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
730
- scale = _ref.scale,
731
- _ref$rotation = _ref.rotation,
732
- rotation = _ref$rotation === void 0 ? this.rotate : _ref$rotation,
733
- _ref$dontFlip = _ref.dontFlip,
734
- dontFlip = _ref$dontFlip === void 0 ? false : _ref$dontFlip;
735
-
736
- if (arguments.length > 1 || typeof arguments[0] === 'number') {
737
- (0, _display_utils.deprecated)('getViewport is called with obsolete arguments.');
738
- scale = arguments[0];
739
- rotation = typeof arguments[1] === 'number' ? arguments[1] : this.rotate;
740
- dontFlip = typeof arguments[2] === 'boolean' ? arguments[2] : false;
741
- }
742
-
743
- return new _display_utils.PageViewport({
744
- viewBox: this.view,
745
- scale: scale,
746
- rotation: rotation,
747
- dontFlip: dontFlip
748
- });
749
- }
750
- }, {
751
- key: "getAnnotations",
752
- value: function getAnnotations() {
753
- var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
754
- _ref2$intent = _ref2.intent,
755
- intent = _ref2$intent === void 0 ? null : _ref2$intent;
756
-
757
- if (!this.annotationsPromise || this.annotationsIntent !== intent) {
758
- this.annotationsPromise = this._transport.getAnnotations(this.pageIndex, intent);
759
- this.annotationsIntent = intent;
760
- }
761
-
762
- return this.annotationsPromise;
763
- }
764
- }, {
765
- key: "render",
766
- value: function render(_ref3) {
767
- var _this5 = this;
768
-
769
- var canvasContext = _ref3.canvasContext,
770
- viewport = _ref3.viewport,
771
- _ref3$intent = _ref3.intent,
772
- intent = _ref3$intent === void 0 ? 'display' : _ref3$intent,
773
- _ref3$enableWebGL = _ref3.enableWebGL,
774
- enableWebGL = _ref3$enableWebGL === void 0 ? false : _ref3$enableWebGL,
775
- _ref3$renderInteracti = _ref3.renderInteractiveForms,
776
- renderInteractiveForms = _ref3$renderInteracti === void 0 ? false : _ref3$renderInteracti,
777
- _ref3$transform = _ref3.transform,
778
- transform = _ref3$transform === void 0 ? null : _ref3$transform,
779
- _ref3$imageLayer = _ref3.imageLayer,
780
- imageLayer = _ref3$imageLayer === void 0 ? null : _ref3$imageLayer,
781
- _ref3$canvasFactory = _ref3.canvasFactory,
782
- canvasFactory = _ref3$canvasFactory === void 0 ? null : _ref3$canvasFactory,
783
- _ref3$background = _ref3.background,
784
- background = _ref3$background === void 0 ? null : _ref3$background;
785
- var stats = this._stats;
786
- stats.time('Overall');
787
- this.pendingCleanup = false;
788
- var renderingIntent = intent === 'print' ? 'print' : 'display';
789
- var canvasFactoryInstance = canvasFactory || new _display_utils.DOMCanvasFactory();
790
- var webGLContext = new _webgl.WebGLContext({
791
- enable: enableWebGL
792
- });
793
-
794
- if (!this.intentStates[renderingIntent]) {
795
- this.intentStates[renderingIntent] = Object.create(null);
796
- }
797
-
798
- var intentState = this.intentStates[renderingIntent];
799
-
800
- if (!intentState.displayReadyCapability) {
801
- intentState.receivingOperatorList = true;
802
- intentState.displayReadyCapability = (0, _util.createPromiseCapability)();
803
- intentState.operatorList = {
804
- fnArray: [],
805
- argsArray: [],
806
- lastChunk: false
807
- };
808
- stats.time('Page Request');
809
-
810
- this._transport.messageHandler.send('RenderPageRequest', {
811
- pageIndex: this.pageNumber - 1,
812
- intent: renderingIntent,
813
- renderInteractiveForms: renderInteractiveForms === true
814
- });
815
- }
501
+ get pageNumber() {
502
+ return this._pageIndex + 1;
503
+ }
816
504
 
817
- var complete = function complete(error) {
818
- var i = intentState.renderTasks.indexOf(internalRenderTask);
505
+ get rotate() {
506
+ return this._pageInfo.rotate;
507
+ }
819
508
 
820
- if (i >= 0) {
821
- intentState.renderTasks.splice(i, 1);
822
- }
509
+ get ref() {
510
+ return this._pageInfo.ref;
511
+ }
823
512
 
824
- if (_this5.cleanupAfterRender || renderingIntent === 'print') {
825
- _this5.pendingCleanup = true;
826
- }
513
+ get userUnit() {
514
+ return this._pageInfo.userUnit;
515
+ }
827
516
 
828
- _this5._tryCleanup();
517
+ get view() {
518
+ return this._pageInfo.view;
519
+ }
829
520
 
830
- if (error) {
831
- internalRenderTask.capability.reject(error);
832
- } else {
833
- internalRenderTask.capability.resolve();
834
- }
521
+ getViewport({
522
+ scale,
523
+ rotation = this.rotate,
524
+ offsetX = 0,
525
+ offsetY = 0,
526
+ dontFlip = false
527
+ } = {}) {
528
+ return new _display_utils.PageViewport({
529
+ viewBox: this.view,
530
+ scale,
531
+ rotation,
532
+ offsetX,
533
+ offsetY,
534
+ dontFlip
535
+ });
536
+ }
835
537
 
836
- stats.timeEnd('Rendering');
837
- stats.timeEnd('Overall');
838
- };
538
+ getAnnotations({
539
+ intent = null
540
+ } = {}) {
541
+ if (!this.annotationsPromise || this.annotationsIntent !== intent) {
542
+ this.annotationsPromise = this._transport.getAnnotations(this._pageIndex, intent);
543
+ this.annotationsIntent = intent;
544
+ }
839
545
 
840
- var internalRenderTask = new InternalRenderTask({
841
- callback: complete,
842
- params: {
843
- canvasContext: canvasContext,
844
- viewport: viewport,
845
- transform: transform,
846
- imageLayer: imageLayer,
847
- background: background
848
- },
849
- objs: this.objs,
850
- commonObjs: this.commonObjs,
851
- operatorList: intentState.operatorList,
852
- pageNumber: this.pageNumber,
853
- canvasFactory: canvasFactoryInstance,
854
- webGLContext: webGLContext,
855
- useRequestAnimationFrame: renderingIntent !== 'print',
856
- pdfBug: this._pdfBug
857
- });
546
+ return this.annotationsPromise;
547
+ }
858
548
 
859
- if (!intentState.renderTasks) {
860
- intentState.renderTasks = [];
861
- }
549
+ render({
550
+ canvasContext,
551
+ viewport,
552
+ intent = "display",
553
+ enableWebGL = false,
554
+ renderInteractiveForms = false,
555
+ transform = null,
556
+ imageLayer = null,
557
+ canvasFactory = null,
558
+ background = null,
559
+ annotationStorage = null,
560
+ optionalContentConfigPromise = null
561
+ }) {
562
+ if (this._stats) {
563
+ this._stats.time("Overall");
564
+ }
565
+
566
+ const renderingIntent = intent === "print" ? "print" : "display";
567
+ this.pendingCleanup = false;
862
568
 
863
- intentState.renderTasks.push(internalRenderTask);
864
- var renderTask = internalRenderTask.task;
865
- intentState.displayReadyCapability.promise.then(function (transparency) {
866
- if (_this5.pendingCleanup) {
867
- complete();
868
- return;
869
- }
569
+ if (!optionalContentConfigPromise) {
570
+ optionalContentConfigPromise = this._transport.getOptionalContentConfig();
571
+ }
870
572
 
871
- stats.time('Rendering');
872
- internalRenderTask.initializeGraphics(transparency);
873
- internalRenderTask.operatorListChanged();
874
- })["catch"](complete);
875
- return renderTask;
876
- }
877
- }, {
878
- key: "getOperatorList",
879
- value: function getOperatorList() {
880
- function operatorListChanged() {
881
- if (intentState.operatorList.lastChunk) {
882
- intentState.opListReadCapability.resolve(intentState.operatorList);
883
- var i = intentState.renderTasks.indexOf(opListTask);
884
-
885
- if (i >= 0) {
886
- intentState.renderTasks.splice(i, 1);
887
- }
888
- }
889
- }
573
+ let intentState = this._intentStates.get(renderingIntent);
890
574
 
891
- var renderingIntent = 'oplist';
575
+ if (!intentState) {
576
+ intentState = Object.create(null);
892
577
 
893
- if (!this.intentStates[renderingIntent]) {
894
- this.intentStates[renderingIntent] = Object.create(null);
895
- }
578
+ this._intentStates.set(renderingIntent, intentState);
579
+ }
896
580
 
897
- var intentState = this.intentStates[renderingIntent];
898
- var opListTask;
581
+ if (intentState.streamReaderCancelTimeout) {
582
+ clearTimeout(intentState.streamReaderCancelTimeout);
583
+ intentState.streamReaderCancelTimeout = null;
584
+ }
899
585
 
900
- if (!intentState.opListReadCapability) {
901
- opListTask = {};
902
- opListTask.operatorListChanged = operatorListChanged;
903
- intentState.receivingOperatorList = true;
904
- intentState.opListReadCapability = (0, _util.createPromiseCapability)();
905
- intentState.renderTasks = [];
906
- intentState.renderTasks.push(opListTask);
907
- intentState.operatorList = {
908
- fnArray: [],
909
- argsArray: [],
910
- lastChunk: false
911
- };
586
+ const canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({
587
+ ownerDocument: this._ownerDocument
588
+ });
589
+ const webGLContext = new _webgl.WebGLContext({
590
+ enable: enableWebGL
591
+ });
912
592
 
913
- this._stats.time('Page Request');
593
+ if (!intentState.displayReadyCapability) {
594
+ intentState.displayReadyCapability = (0, _util.createPromiseCapability)();
595
+ intentState.operatorList = {
596
+ fnArray: [],
597
+ argsArray: [],
598
+ lastChunk: false
599
+ };
914
600
 
915
- this._transport.messageHandler.send('RenderPageRequest', {
916
- pageIndex: this.pageIndex,
917
- intent: renderingIntent
918
- });
601
+ if (this._stats) {
602
+ this._stats.time("Page Request");
919
603
  }
920
604
 
921
- return intentState.opListReadCapability.promise;
922
- }
923
- }, {
924
- key: "streamTextContent",
925
- value: function streamTextContent() {
926
- var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
927
- _ref4$normalizeWhites = _ref4.normalizeWhitespace,
928
- normalizeWhitespace = _ref4$normalizeWhites === void 0 ? false : _ref4$normalizeWhites,
929
- _ref4$disableCombineT = _ref4.disableCombineTextItems,
930
- disableCombineTextItems = _ref4$disableCombineT === void 0 ? false : _ref4$disableCombineT;
931
-
932
- var TEXT_CONTENT_CHUNK_SIZE = 100;
933
- return this._transport.messageHandler.sendWithStream('GetTextContent', {
934
- pageIndex: this.pageNumber - 1,
935
- normalizeWhitespace: normalizeWhitespace === true,
936
- combineTextItems: disableCombineTextItems !== true
937
- }, {
938
- highWaterMark: TEXT_CONTENT_CHUNK_SIZE,
939
- size: function size(textContent) {
940
- return textContent.items.length;
941
- }
605
+ this._pumpOperatorList({
606
+ pageIndex: this._pageIndex,
607
+ intent: renderingIntent,
608
+ renderInteractiveForms: renderInteractiveForms === true,
609
+ annotationStorage: annotationStorage && annotationStorage.getAll() || null
942
610
  });
943
611
  }
944
- }, {
945
- key: "getTextContent",
946
- value: function getTextContent() {
947
- var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
948
- var readableStream = this.streamTextContent(params);
949
- return new Promise(function (resolve, reject) {
950
- function pump() {
951
- reader.read().then(function (_ref5) {
952
- var _textContent$items;
953
-
954
- var value = _ref5.value,
955
- done = _ref5.done;
956
-
957
- if (done) {
958
- resolve(textContent);
959
- return;
960
- }
961
612
 
962
- Object.assign(textContent.styles, value.styles);
613
+ const complete = error => {
614
+ const i = intentState.renderTasks.indexOf(internalRenderTask);
615
+
616
+ if (i >= 0) {
617
+ intentState.renderTasks.splice(i, 1);
618
+ }
963
619
 
964
- (_textContent$items = textContent.items).push.apply(_textContent$items, _toConsumableArray(value.items));
620
+ if (this.cleanupAfterRender || renderingIntent === "print") {
621
+ this.pendingCleanup = true;
622
+ }
965
623
 
966
- pump();
967
- }, reject);
968
- }
624
+ this._tryCleanup();
969
625
 
970
- var reader = readableStream.getReader();
971
- var textContent = {
972
- items: [],
973
- styles: Object.create(null)
974
- };
975
- pump();
976
- });
977
- }
978
- }, {
979
- key: "_destroy",
980
- value: function _destroy() {
981
- this.destroyed = true;
982
- this._transport.pageCache[this.pageIndex] = null;
983
- var waitOn = [];
984
- Object.keys(this.intentStates).forEach(function (intent) {
985
- if (intent === 'oplist') {
986
- return;
987
- }
626
+ if (error) {
627
+ internalRenderTask.capability.reject(error);
988
628
 
989
- var intentState = this.intentStates[intent];
990
- intentState.renderTasks.forEach(function (renderTask) {
991
- var renderCompleted = renderTask.capability.promise["catch"](function () {});
992
- waitOn.push(renderCompleted);
993
- renderTask.cancel();
629
+ this._abortOperatorList({
630
+ intentState,
631
+ reason: error
994
632
  });
995
- }, this);
996
- this.objs.clear();
997
- this.annotationsPromise = null;
998
- this.pendingCleanup = false;
999
- return Promise.all(waitOn);
1000
- }
1001
- }, {
1002
- key: "cleanup",
1003
- value: function cleanup() {
1004
- var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
1005
- this.pendingCleanup = true;
1006
-
1007
- this._tryCleanup(resetStats);
1008
- }
1009
- }, {
1010
- key: "_tryCleanup",
1011
- value: function _tryCleanup() {
1012
- var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
1013
-
1014
- if (!this.pendingCleanup || Object.keys(this.intentStates).some(function (intent) {
1015
- var intentState = this.intentStates[intent];
1016
- return intentState.renderTasks.length !== 0 || intentState.receivingOperatorList;
1017
- }, this)) {
1018
- return;
633
+ } else {
634
+ internalRenderTask.capability.resolve();
1019
635
  }
1020
636
 
1021
- Object.keys(this.intentStates).forEach(function (intent) {
1022
- delete this.intentStates[intent];
1023
- }, this);
1024
- this.objs.clear();
1025
- this.annotationsPromise = null;
637
+ if (this._stats) {
638
+ this._stats.timeEnd("Rendering");
1026
639
 
1027
- if (resetStats && this._stats instanceof _display_utils.StatTimer) {
1028
- this._stats = new _display_utils.StatTimer();
640
+ this._stats.timeEnd("Overall");
1029
641
  }
642
+ };
1030
643
 
1031
- this.pendingCleanup = false;
1032
- }
1033
- }, {
1034
- key: "_startRenderPage",
1035
- value: function _startRenderPage(transparency, intent) {
1036
- var intentState = this.intentStates[intent];
644
+ const internalRenderTask = new InternalRenderTask({
645
+ callback: complete,
646
+ params: {
647
+ canvasContext,
648
+ viewport,
649
+ transform,
650
+ imageLayer,
651
+ background
652
+ },
653
+ objs: this.objs,
654
+ commonObjs: this.commonObjs,
655
+ operatorList: intentState.operatorList,
656
+ pageIndex: this._pageIndex,
657
+ canvasFactory: canvasFactoryInstance,
658
+ webGLContext,
659
+ useRequestAnimationFrame: renderingIntent !== "print",
660
+ pdfBug: this._pdfBug
661
+ });
1037
662
 
1038
- if (intentState.displayReadyCapability) {
1039
- intentState.displayReadyCapability.resolve(transparency);
1040
- }
663
+ if (!intentState.renderTasks) {
664
+ intentState.renderTasks = [];
1041
665
  }
1042
- }, {
1043
- key: "_renderPageChunk",
1044
- value: function _renderPageChunk(operatorListChunk, intent) {
1045
- var intentState = this.intentStates[intent];
1046
666
 
1047
- for (var i = 0, ii = operatorListChunk.length; i < ii; i++) {
1048
- intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);
1049
- intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);
667
+ intentState.renderTasks.push(internalRenderTask);
668
+ const renderTask = internalRenderTask.task;
669
+ Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {
670
+ if (this.pendingCleanup) {
671
+ complete();
672
+ return;
1050
673
  }
1051
674
 
1052
- intentState.operatorList.lastChunk = operatorListChunk.lastChunk;
1053
-
1054
- for (var _i = 0; _i < intentState.renderTasks.length; _i++) {
1055
- intentState.renderTasks[_i].operatorListChanged();
675
+ if (this._stats) {
676
+ this._stats.time("Rendering");
1056
677
  }
1057
678
 
1058
- if (operatorListChunk.lastChunk) {
1059
- intentState.receivingOperatorList = false;
679
+ internalRenderTask.initializeGraphics({
680
+ transparency,
681
+ optionalContentConfig
682
+ });
683
+ internalRenderTask.operatorListChanged();
684
+ }).catch(complete);
685
+ return renderTask;
686
+ }
687
+
688
+ getOperatorList() {
689
+ function operatorListChanged() {
690
+ if (intentState.operatorList.lastChunk) {
691
+ intentState.opListReadCapability.resolve(intentState.operatorList);
692
+ const i = intentState.renderTasks.indexOf(opListTask);
1060
693
 
1061
- this._tryCleanup();
694
+ if (i >= 0) {
695
+ intentState.renderTasks.splice(i, 1);
696
+ }
1062
697
  }
1063
698
  }
1064
- }, {
1065
- key: "pageNumber",
1066
- get: function get() {
1067
- return this.pageIndex + 1;
1068
- }
1069
- }, {
1070
- key: "rotate",
1071
- get: function get() {
1072
- return this._pageInfo.rotate;
1073
- }
1074
- }, {
1075
- key: "ref",
1076
- get: function get() {
1077
- return this._pageInfo.ref;
1078
- }
1079
- }, {
1080
- key: "userUnit",
1081
- get: function get() {
1082
- return this._pageInfo.userUnit;
1083
- }
1084
- }, {
1085
- key: "view",
1086
- get: function get() {
1087
- return this._pageInfo.view;
1088
- }
1089
- }, {
1090
- key: "stats",
1091
- get: function get() {
1092
- return this._stats instanceof _display_utils.StatTimer ? this._stats : null;
1093
- }
1094
- }]);
1095
699
 
1096
- return PDFPageProxy;
1097
- }();
700
+ const renderingIntent = "oplist";
1098
701
 
1099
- exports.PDFPageProxy = PDFPageProxy;
702
+ let intentState = this._intentStates.get(renderingIntent);
1100
703
 
1101
- var LoopbackPort =
1102
- /*#__PURE__*/
1103
- function () {
1104
- function LoopbackPort() {
1105
- var defer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
704
+ if (!intentState) {
705
+ intentState = Object.create(null);
1106
706
 
1107
- _classCallCheck(this, LoopbackPort);
707
+ this._intentStates.set(renderingIntent, intentState);
708
+ }
1108
709
 
1109
- this._listeners = [];
1110
- this._defer = defer;
1111
- this._deferred = Promise.resolve(undefined);
1112
- }
710
+ let opListTask;
1113
711
 
1114
- _createClass(LoopbackPort, [{
1115
- key: "postMessage",
1116
- value: function postMessage(obj, transfers) {
1117
- var _this6 = this;
712
+ if (!intentState.opListReadCapability) {
713
+ opListTask = Object.create(null);
714
+ opListTask.operatorListChanged = operatorListChanged;
715
+ intentState.opListReadCapability = (0, _util.createPromiseCapability)();
716
+ intentState.renderTasks = [];
717
+ intentState.renderTasks.push(opListTask);
718
+ intentState.operatorList = {
719
+ fnArray: [],
720
+ argsArray: [],
721
+ lastChunk: false
722
+ };
1118
723
 
1119
- function cloneValue(value) {
1120
- if (_typeof(value) !== 'object' || value === null) {
1121
- return value;
1122
- }
724
+ if (this._stats) {
725
+ this._stats.time("Page Request");
726
+ }
1123
727
 
1124
- if (cloned.has(value)) {
1125
- return cloned.get(value);
1126
- }
728
+ this._pumpOperatorList({
729
+ pageIndex: this._pageIndex,
730
+ intent: renderingIntent
731
+ });
732
+ }
1127
733
 
1128
- var buffer, result;
734
+ return intentState.opListReadCapability.promise;
735
+ }
1129
736
 
1130
- if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {
1131
- var transferable = transfers && transfers.includes(buffer);
737
+ streamTextContent({
738
+ normalizeWhitespace = false,
739
+ disableCombineTextItems = false
740
+ } = {}) {
741
+ const TEXT_CONTENT_CHUNK_SIZE = 100;
742
+ return this._transport.messageHandler.sendWithStream("GetTextContent", {
743
+ pageIndex: this._pageIndex,
744
+ normalizeWhitespace: normalizeWhitespace === true,
745
+ combineTextItems: disableCombineTextItems !== true
746
+ }, {
747
+ highWaterMark: TEXT_CONTENT_CHUNK_SIZE,
748
+
749
+ size(textContent) {
750
+ return textContent.items.length;
751
+ }
752
+
753
+ });
754
+ }
1132
755
 
1133
- if (value === buffer) {
1134
- result = value;
1135
- } else if (transferable) {
1136
- result = new value.constructor(buffer, value.byteOffset, value.byteLength);
1137
- } else {
1138
- result = new value.constructor(value);
756
+ getTextContent(params = {}) {
757
+ const readableStream = this.streamTextContent(params);
758
+ return new Promise(function (resolve, reject) {
759
+ function pump() {
760
+ reader.read().then(function ({
761
+ value,
762
+ done
763
+ }) {
764
+ if (done) {
765
+ resolve(textContent);
766
+ return;
1139
767
  }
1140
768
 
1141
- cloned.set(value, result);
1142
- return result;
769
+ Object.assign(textContent.styles, value.styles);
770
+ textContent.items.push(...value.items);
771
+ pump();
772
+ }, reject);
773
+ }
774
+
775
+ const reader = readableStream.getReader();
776
+ const textContent = {
777
+ items: [],
778
+ styles: Object.create(null)
779
+ };
780
+ pump();
781
+ });
782
+ }
783
+
784
+ _destroy() {
785
+ this.destroyed = true;
786
+ this._transport.pageCache[this._pageIndex] = null;
787
+ const waitOn = [];
788
+
789
+ for (const [intent, intentState] of this._intentStates) {
790
+ this._abortOperatorList({
791
+ intentState,
792
+ reason: new Error("Page was destroyed."),
793
+ force: true
794
+ });
795
+
796
+ if (intent === "oplist") {
797
+ continue;
798
+ }
799
+
800
+ for (const internalRenderTask of intentState.renderTasks) {
801
+ waitOn.push(internalRenderTask.completed);
802
+ internalRenderTask.cancel();
803
+ }
804
+ }
805
+
806
+ this.objs.clear();
807
+ this.annotationsPromise = null;
808
+ this.pendingCleanup = false;
809
+ return Promise.all(waitOn);
810
+ }
811
+
812
+ cleanup(resetStats = false) {
813
+ this.pendingCleanup = true;
814
+ return this._tryCleanup(resetStats);
815
+ }
816
+
817
+ _tryCleanup(resetStats = false) {
818
+ if (!this.pendingCleanup) {
819
+ return false;
820
+ }
821
+
822
+ for (const {
823
+ renderTasks,
824
+ operatorList
825
+ } of this._intentStates.values()) {
826
+ if (renderTasks.length !== 0 || !operatorList.lastChunk) {
827
+ return false;
828
+ }
829
+ }
830
+
831
+ this._intentStates.clear();
832
+
833
+ this.objs.clear();
834
+ this.annotationsPromise = null;
835
+
836
+ if (resetStats && this._stats) {
837
+ this._stats = new _display_utils.StatTimer();
838
+ }
839
+
840
+ this.pendingCleanup = false;
841
+ return true;
842
+ }
843
+
844
+ _startRenderPage(transparency, intent) {
845
+ const intentState = this._intentStates.get(intent);
846
+
847
+ if (!intentState) {
848
+ return;
849
+ }
850
+
851
+ if (this._stats) {
852
+ this._stats.timeEnd("Page Request");
853
+ }
854
+
855
+ if (intentState.displayReadyCapability) {
856
+ intentState.displayReadyCapability.resolve(transparency);
857
+ }
858
+ }
859
+
860
+ _renderPageChunk(operatorListChunk, intentState) {
861
+ for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {
862
+ intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);
863
+ intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);
864
+ }
865
+
866
+ intentState.operatorList.lastChunk = operatorListChunk.lastChunk;
867
+
868
+ for (let i = 0; i < intentState.renderTasks.length; i++) {
869
+ intentState.renderTasks[i].operatorListChanged();
870
+ }
871
+
872
+ if (operatorListChunk.lastChunk) {
873
+ this._tryCleanup();
874
+ }
875
+ }
876
+
877
+ _pumpOperatorList(args) {
878
+ (0, _util.assert)(args.intent, 'PDFPageProxy._pumpOperatorList: Expected "intent" argument.');
879
+
880
+ const readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", args);
881
+
882
+ const reader = readableStream.getReader();
883
+
884
+ const intentState = this._intentStates.get(args.intent);
885
+
886
+ intentState.streamReader = reader;
887
+
888
+ const pump = () => {
889
+ reader.read().then(({
890
+ value,
891
+ done
892
+ }) => {
893
+ if (done) {
894
+ intentState.streamReader = null;
895
+ return;
1143
896
  }
1144
897
 
1145
- result = Array.isArray(value) ? [] : {};
1146
- cloned.set(value, result);
898
+ if (this._transport.destroyed) {
899
+ return;
900
+ }
1147
901
 
1148
- for (var i in value) {
1149
- var desc = void 0,
1150
- p = value;
902
+ this._renderPageChunk(value, intentState);
1151
903
 
1152
- while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {
1153
- p = Object.getPrototypeOf(p);
1154
- }
904
+ pump();
905
+ }, reason => {
906
+ intentState.streamReader = null;
1155
907
 
1156
- if (typeof desc.value === 'undefined' || typeof desc.value === 'function') {
1157
- continue;
908
+ if (this._transport.destroyed) {
909
+ return;
910
+ }
911
+
912
+ if (intentState.operatorList) {
913
+ intentState.operatorList.lastChunk = true;
914
+
915
+ for (let i = 0; i < intentState.renderTasks.length; i++) {
916
+ intentState.renderTasks[i].operatorListChanged();
1158
917
  }
1159
918
 
1160
- result[i] = cloneValue(desc.value);
919
+ this._tryCleanup();
1161
920
  }
1162
921
 
1163
- return result;
922
+ if (intentState.displayReadyCapability) {
923
+ intentState.displayReadyCapability.reject(reason);
924
+ } else if (intentState.opListReadCapability) {
925
+ intentState.opListReadCapability.reject(reason);
926
+ } else {
927
+ throw reason;
928
+ }
929
+ });
930
+ };
931
+
932
+ pump();
933
+ }
934
+
935
+ _abortOperatorList({
936
+ intentState,
937
+ reason,
938
+ force = false
939
+ }) {
940
+ (0, _util.assert)(reason instanceof Error || typeof reason === "object" && reason !== null, 'PDFPageProxy._abortOperatorList: Expected "reason" argument.');
941
+
942
+ if (!intentState.streamReader) {
943
+ return;
944
+ }
945
+
946
+ if (!force) {
947
+ if (intentState.renderTasks.length !== 0) {
948
+ return;
1164
949
  }
1165
950
 
1166
- if (!this._defer) {
1167
- this._listeners.forEach(function (listener) {
1168
- listener.call(this, {
1169
- data: obj
951
+ if (reason instanceof _display_utils.RenderingCancelledException) {
952
+ intentState.streamReaderCancelTimeout = setTimeout(() => {
953
+ this._abortOperatorList({
954
+ intentState,
955
+ reason,
956
+ force: true
1170
957
  });
1171
- }, this);
1172
958
 
959
+ intentState.streamReaderCancelTimeout = null;
960
+ }, RENDERING_CANCELLED_TIMEOUT);
1173
961
  return;
1174
962
  }
963
+ }
1175
964
 
1176
- var cloned = new WeakMap();
1177
- var e = {
1178
- data: cloneValue(obj)
1179
- };
965
+ intentState.streamReader.cancel(new _util.AbortException(reason && reason.message));
966
+ intentState.streamReader = null;
1180
967
 
1181
- this._deferred.then(function () {
1182
- _this6._listeners.forEach(function (listener) {
1183
- listener.call(this, e);
1184
- }, _this6);
1185
- });
968
+ if (this._transport.destroyed) {
969
+ return;
1186
970
  }
1187
- }, {
1188
- key: "addEventListener",
1189
- value: function addEventListener(name, listener) {
1190
- this._listeners.push(listener);
971
+
972
+ for (const [intent, curIntentState] of this._intentStates) {
973
+ if (curIntentState === intentState) {
974
+ this._intentStates.delete(intent);
975
+
976
+ break;
977
+ }
1191
978
  }
1192
- }, {
1193
- key: "removeEventListener",
1194
- value: function removeEventListener(name, listener) {
1195
- var i = this._listeners.indexOf(listener);
1196
979
 
1197
- this._listeners.splice(i, 1);
980
+ this.cleanup();
981
+ }
982
+
983
+ get stats() {
984
+ return this._stats;
985
+ }
986
+
987
+ }
988
+
989
+ exports.PDFPageProxy = PDFPageProxy;
990
+
991
+ class LoopbackPort {
992
+ constructor(defer = true) {
993
+ this._listeners = [];
994
+ this._defer = defer;
995
+ this._deferred = Promise.resolve(undefined);
996
+ }
997
+
998
+ postMessage(obj, transfers) {
999
+ function cloneValue(value) {
1000
+ if (typeof value !== "object" || value === null) {
1001
+ return value;
1002
+ }
1003
+
1004
+ if (cloned.has(value)) {
1005
+ return cloned.get(value);
1006
+ }
1007
+
1008
+ let buffer, result;
1009
+
1010
+ if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {
1011
+ const transferable = transfers && transfers.includes(buffer);
1012
+
1013
+ if (transferable) {
1014
+ result = new value.constructor(buffer, value.byteOffset, value.byteLength);
1015
+ } else {
1016
+ result = new value.constructor(value);
1017
+ }
1018
+
1019
+ cloned.set(value, result);
1020
+ return result;
1021
+ }
1022
+
1023
+ result = Array.isArray(value) ? [] : {};
1024
+ cloned.set(value, result);
1025
+
1026
+ for (const i in value) {
1027
+ let desc,
1028
+ p = value;
1029
+
1030
+ while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {
1031
+ p = Object.getPrototypeOf(p);
1032
+ }
1033
+
1034
+ if (typeof desc.value === "undefined") {
1035
+ continue;
1036
+ }
1037
+
1038
+ if (typeof desc.value === "function") {
1039
+ if (value.hasOwnProperty && value.hasOwnProperty(i)) {
1040
+ throw new Error(`LoopbackPort.postMessage - cannot clone: ${value[i]}`);
1041
+ }
1042
+
1043
+ continue;
1044
+ }
1045
+
1046
+ result[i] = cloneValue(desc.value);
1047
+ }
1048
+
1049
+ return result;
1198
1050
  }
1199
- }, {
1200
- key: "terminate",
1201
- value: function terminate() {
1202
- this._listeners.length = 0;
1051
+
1052
+ if (!this._defer) {
1053
+ this._listeners.forEach(listener => {
1054
+ listener.call(this, {
1055
+ data: obj
1056
+ });
1057
+ });
1058
+
1059
+ return;
1203
1060
  }
1204
- }]);
1205
1061
 
1206
- return LoopbackPort;
1207
- }();
1062
+ const cloned = new WeakMap();
1063
+ const e = {
1064
+ data: cloneValue(obj)
1065
+ };
1066
+
1067
+ this._deferred.then(() => {
1068
+ this._listeners.forEach(listener => {
1069
+ listener.call(this, e);
1070
+ });
1071
+ });
1072
+ }
1073
+
1074
+ addEventListener(name, listener) {
1075
+ this._listeners.push(listener);
1076
+ }
1077
+
1078
+ removeEventListener(name, listener) {
1079
+ const i = this._listeners.indexOf(listener);
1080
+
1081
+ this._listeners.splice(i, 1);
1082
+ }
1083
+
1084
+ terminate() {
1085
+ this._listeners.length = 0;
1086
+ }
1087
+
1088
+ }
1208
1089
 
1209
1090
  exports.LoopbackPort = LoopbackPort;
1210
1091
 
1211
- var PDFWorker = function PDFWorkerClosure() {
1212
- var pdfWorkerPorts = new WeakMap();
1213
- var nextFakeWorkerId = 0;
1214
- var fakeWorkerFilesLoadedCapability;
1092
+ const PDFWorker = function PDFWorkerClosure() {
1093
+ const pdfWorkerPorts = new WeakMap();
1094
+ let isWorkerDisabled = false;
1095
+ let fallbackWorkerSrc;
1096
+ let nextFakeWorkerId = 0;
1097
+ let fakeWorkerCapability;
1098
+
1099
+ if (_is_node.isNodeJS && typeof require === "function") {
1100
+ isWorkerDisabled = true;
1101
+ fallbackWorkerSrc = "../pdf.worker.js";
1102
+ } else if (typeof document === "object" && "currentScript" in document) {
1103
+ const pdfjsFilePath = document.currentScript && document.currentScript.src;
1104
+
1105
+ if (pdfjsFilePath) {
1106
+ fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2");
1107
+ }
1108
+ }
1215
1109
 
1216
- function _getWorkerSrc() {
1110
+ function getWorkerSrc() {
1217
1111
  if (_worker_options.GlobalWorkerOptions.workerSrc) {
1218
1112
  return _worker_options.GlobalWorkerOptions.workerSrc;
1219
1113
  }
1220
1114
 
1221
- if (typeof fallbackWorkerSrc !== 'undefined') {
1115
+ if (typeof fallbackWorkerSrc !== "undefined") {
1116
+ if (!_is_node.isNodeJS) {
1117
+ (0, _display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.');
1118
+ }
1119
+
1222
1120
  return fallbackWorkerSrc;
1223
1121
  }
1224
1122
 
@@ -1226,66 +1124,60 @@ var PDFWorker = function PDFWorkerClosure() {
1226
1124
  }
1227
1125
 
1228
1126
  function getMainThreadWorkerMessageHandler() {
1127
+ let mainWorkerMessageHandler;
1128
+
1229
1129
  try {
1230
- if (typeof window !== 'undefined') {
1231
- return window.pdfjsWorker && window.pdfjsWorker.WorkerMessageHandler;
1232
- }
1130
+ mainWorkerMessageHandler = globalThis.pdfjsWorker && globalThis.pdfjsWorker.WorkerMessageHandler;
1233
1131
  } catch (ex) {}
1234
1132
 
1235
- return null;
1133
+ return mainWorkerMessageHandler || null;
1236
1134
  }
1237
1135
 
1238
1136
  function setupFakeWorkerGlobal() {
1239
- if (fakeWorkerFilesLoadedCapability) {
1240
- return fakeWorkerFilesLoadedCapability.promise;
1137
+ if (fakeWorkerCapability) {
1138
+ return fakeWorkerCapability.promise;
1241
1139
  }
1242
1140
 
1243
- fakeWorkerFilesLoadedCapability = (0, _util.createPromiseCapability)();
1244
- var mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();
1141
+ fakeWorkerCapability = (0, _util.createPromiseCapability)();
1245
1142
 
1246
- if (mainWorkerMessageHandler) {
1247
- fakeWorkerFilesLoadedCapability.resolve(mainWorkerMessageHandler);
1248
- return fakeWorkerFilesLoadedCapability.promise;
1249
- }
1143
+ const loader = async function () {
1144
+ const mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();
1250
1145
 
1251
- var loader = fakeWorkerFilesLoader || function () {
1252
- return (0, _display_utils.loadScript)(_getWorkerSrc()).then(function () {
1253
- return window.pdfjsWorker.WorkerMessageHandler;
1254
- });
1146
+ if (mainWorkerMessageHandler) {
1147
+ return mainWorkerMessageHandler;
1148
+ }
1149
+
1150
+ if (_is_node.isNodeJS && typeof require === "function") {
1151
+ const worker = eval("require")(getWorkerSrc());
1152
+ return worker.WorkerMessageHandler;
1153
+ }
1154
+
1155
+ await (0, _display_utils.loadScript)(getWorkerSrc());
1156
+ return window.pdfjsWorker.WorkerMessageHandler;
1255
1157
  };
1256
1158
 
1257
- loader().then(fakeWorkerFilesLoadedCapability.resolve, fakeWorkerFilesLoadedCapability.reject);
1258
- return fakeWorkerFilesLoadedCapability.promise;
1159
+ loader().then(fakeWorkerCapability.resolve, fakeWorkerCapability.reject);
1160
+ return fakeWorkerCapability.promise;
1259
1161
  }
1260
1162
 
1261
1163
  function createCDNWrapper(url) {
1262
- var wrapper = 'importScripts(\'' + url + '\');';
1263
- return _util.URL.createObjectURL(new Blob([wrapper]));
1264
- }
1265
-
1266
- var PDFWorker =
1267
- /*#__PURE__*/
1268
- function () {
1269
- function PDFWorker() {
1270
- var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1271
- _ref6$name = _ref6.name,
1272
- name = _ref6$name === void 0 ? null : _ref6$name,
1273
- _ref6$port = _ref6.port,
1274
- port = _ref6$port === void 0 ? null : _ref6$port,
1275
- _ref6$postMessageTran = _ref6.postMessageTransfers,
1276
- postMessageTransfers = _ref6$postMessageTran === void 0 ? true : _ref6$postMessageTran,
1277
- _ref6$verbosity = _ref6.verbosity,
1278
- verbosity = _ref6$verbosity === void 0 ? (0, _util.getVerbosityLevel)() : _ref6$verbosity;
1279
-
1280
- _classCallCheck(this, PDFWorker);
1164
+ const wrapper = "importScripts('" + url + "');";
1165
+ return URL.createObjectURL(new Blob([wrapper]));
1166
+ }
1281
1167
 
1168
+ class PDFWorker {
1169
+ constructor({
1170
+ name = null,
1171
+ port = null,
1172
+ verbosity = (0, _util.getVerbosityLevel)()
1173
+ } = {}) {
1282
1174
  if (port && pdfWorkerPorts.has(port)) {
1283
- throw new Error('Cannot use more than one PDFWorker per port');
1175
+ throw new Error("Cannot use more than one PDFWorker per port");
1284
1176
  }
1285
1177
 
1286
1178
  this.name = name;
1287
1179
  this.destroyed = false;
1288
- this.postMessageTransfers = postMessageTransfers !== false;
1180
+ this.postMessageTransfers = true;
1289
1181
  this.verbosity = verbosity;
1290
1182
  this._readyCapability = (0, _util.createPromiseCapability)();
1291
1183
  this._port = null;
@@ -1303,221 +1195,206 @@ var PDFWorker = function PDFWorkerClosure() {
1303
1195
  this._initialize();
1304
1196
  }
1305
1197
 
1306
- _createClass(PDFWorker, [{
1307
- key: "_initializeFromPort",
1308
- value: function _initializeFromPort(port) {
1309
- this._port = port;
1310
- this._messageHandler = new _message_handler.MessageHandler('main', 'worker', port);
1198
+ get promise() {
1199
+ return this._readyCapability.promise;
1200
+ }
1311
1201
 
1312
- this._messageHandler.on('ready', function () {});
1202
+ get port() {
1203
+ return this._port;
1204
+ }
1313
1205
 
1314
- this._readyCapability.resolve();
1315
- }
1316
- }, {
1317
- key: "_initialize",
1318
- value: function _initialize() {
1319
- var _this7 = this;
1206
+ get messageHandler() {
1207
+ return this._messageHandler;
1208
+ }
1320
1209
 
1321
- if (typeof Worker !== 'undefined' && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) {
1322
- var workerSrc = _getWorkerSrc();
1210
+ _initializeFromPort(port) {
1211
+ this._port = port;
1212
+ this._messageHandler = new _message_handler.MessageHandler("main", "worker", port);
1323
1213
 
1324
- try {
1325
- if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {
1326
- workerSrc = createCDNWrapper(new _util.URL(workerSrc, window.location).href);
1327
- }
1214
+ this._messageHandler.on("ready", function () {});
1328
1215
 
1329
- var worker = new Worker(workerSrc);
1330
- var messageHandler = new _message_handler.MessageHandler('main', 'worker', worker);
1216
+ this._readyCapability.resolve();
1217
+ }
1331
1218
 
1332
- var terminateEarly = function terminateEarly() {
1333
- worker.removeEventListener('error', onWorkerError);
1334
- messageHandler.destroy();
1335
- worker.terminate();
1219
+ _initialize() {
1220
+ if (typeof Worker !== "undefined" && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) {
1221
+ let workerSrc = getWorkerSrc();
1336
1222
 
1337
- if (_this7.destroyed) {
1338
- _this7._readyCapability.reject(new Error('Worker was destroyed'));
1339
- } else {
1340
- _this7._setupFakeWorker();
1341
- }
1342
- };
1223
+ try {
1224
+ if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {
1225
+ workerSrc = createCDNWrapper(new URL(workerSrc, window.location).href);
1226
+ }
1343
1227
 
1344
- var onWorkerError = function onWorkerError() {
1345
- if (!_this7._webWorker) {
1346
- terminateEarly();
1347
- }
1348
- };
1228
+ const worker = new Worker(workerSrc);
1229
+ const messageHandler = new _message_handler.MessageHandler("main", "worker", worker);
1349
1230
 
1350
- worker.addEventListener('error', onWorkerError);
1351
- messageHandler.on('test', function (data) {
1352
- worker.removeEventListener('error', onWorkerError);
1231
+ const terminateEarly = () => {
1232
+ worker.removeEventListener("error", onWorkerError);
1233
+ messageHandler.destroy();
1234
+ worker.terminate();
1353
1235
 
1354
- if (_this7.destroyed) {
1355
- terminateEarly();
1356
- return;
1357
- }
1236
+ if (this.destroyed) {
1237
+ this._readyCapability.reject(new Error("Worker was destroyed"));
1238
+ } else {
1239
+ this._setupFakeWorker();
1240
+ }
1241
+ };
1358
1242
 
1359
- if (data && data.supportTypedArray) {
1360
- _this7._messageHandler = messageHandler;
1361
- _this7._port = worker;
1362
- _this7._webWorker = worker;
1243
+ const onWorkerError = () => {
1244
+ if (!this._webWorker) {
1245
+ terminateEarly();
1246
+ }
1247
+ };
1363
1248
 
1364
- if (!data.supportTransfers) {
1365
- _this7.postMessageTransfers = false;
1366
- }
1249
+ worker.addEventListener("error", onWorkerError);
1250
+ messageHandler.on("test", data => {
1251
+ worker.removeEventListener("error", onWorkerError);
1367
1252
 
1368
- _this7._readyCapability.resolve();
1253
+ if (this.destroyed) {
1254
+ terminateEarly();
1255
+ return;
1256
+ }
1369
1257
 
1370
- messageHandler.send('configure', {
1371
- verbosity: _this7.verbosity
1372
- });
1373
- } else {
1374
- _this7._setupFakeWorker();
1258
+ if (data) {
1259
+ this._messageHandler = messageHandler;
1260
+ this._port = worker;
1261
+ this._webWorker = worker;
1375
1262
 
1376
- messageHandler.destroy();
1377
- worker.terminate();
1263
+ if (!data.supportTransfers) {
1264
+ this.postMessageTransfers = false;
1378
1265
  }
1379
- });
1380
- messageHandler.on('ready', function (data) {
1381
- worker.removeEventListener('error', onWorkerError);
1382
1266
 
1383
- if (_this7.destroyed) {
1384
- terminateEarly();
1385
- return;
1386
- }
1267
+ this._readyCapability.resolve();
1387
1268
 
1388
- try {
1389
- sendTest();
1390
- } catch (e) {
1391
- _this7._setupFakeWorker();
1392
- }
1393
- });
1269
+ messageHandler.send("configure", {
1270
+ verbosity: this.verbosity
1271
+ });
1272
+ } else {
1273
+ this._setupFakeWorker();
1274
+
1275
+ messageHandler.destroy();
1276
+ worker.terminate();
1277
+ }
1278
+ });
1279
+ messageHandler.on("ready", data => {
1280
+ worker.removeEventListener("error", onWorkerError);
1394
1281
 
1395
- var sendTest = function sendTest() {
1396
- var testObj = new Uint8Array([_this7.postMessageTransfers ? 255 : 0]);
1282
+ if (this.destroyed) {
1283
+ terminateEarly();
1284
+ return;
1285
+ }
1397
1286
 
1398
- try {
1399
- messageHandler.send('test', testObj, [testObj.buffer]);
1400
- } catch (ex) {
1401
- (0, _util.info)('Cannot use postMessage transfers');
1402
- testObj[0] = 0;
1403
- messageHandler.send('test', testObj);
1404
- }
1405
- };
1287
+ try {
1288
+ sendTest();
1289
+ } catch (e) {
1290
+ this._setupFakeWorker();
1291
+ }
1292
+ });
1406
1293
 
1407
- sendTest();
1408
- return;
1409
- } catch (e) {
1410
- (0, _util.info)('The worker has been disabled.');
1411
- }
1294
+ const sendTest = () => {
1295
+ const testObj = new Uint8Array([this.postMessageTransfers ? 255 : 0]);
1296
+
1297
+ try {
1298
+ messageHandler.send("test", testObj, [testObj.buffer]);
1299
+ } catch (ex) {
1300
+ (0, _util.warn)("Cannot use postMessage transfers.");
1301
+ testObj[0] = 0;
1302
+ messageHandler.send("test", testObj);
1303
+ }
1304
+ };
1305
+
1306
+ sendTest();
1307
+ return;
1308
+ } catch (e) {
1309
+ (0, _util.info)("The worker has been disabled.");
1412
1310
  }
1311
+ }
1413
1312
 
1414
- this._setupFakeWorker();
1313
+ this._setupFakeWorker();
1314
+ }
1315
+
1316
+ _setupFakeWorker() {
1317
+ if (!isWorkerDisabled) {
1318
+ (0, _util.warn)("Setting up fake worker.");
1319
+ isWorkerDisabled = true;
1415
1320
  }
1416
- }, {
1417
- key: "_setupFakeWorker",
1418
- value: function _setupFakeWorker() {
1419
- var _this8 = this;
1420
1321
 
1421
- if (!isWorkerDisabled) {
1422
- (0, _util.warn)('Setting up fake worker.');
1423
- isWorkerDisabled = true;
1322
+ setupFakeWorkerGlobal().then(WorkerMessageHandler => {
1323
+ if (this.destroyed) {
1324
+ this._readyCapability.reject(new Error("Worker was destroyed"));
1325
+
1326
+ return;
1424
1327
  }
1425
1328
 
1426
- setupFakeWorkerGlobal().then(function (WorkerMessageHandler) {
1427
- if (_this8.destroyed) {
1428
- _this8._readyCapability.reject(new Error('Worker was destroyed'));
1329
+ const port = new LoopbackPort();
1330
+ this._port = port;
1331
+ const id = "fake" + nextFakeWorkerId++;
1332
+ const workerHandler = new _message_handler.MessageHandler(id + "_worker", id, port);
1333
+ WorkerMessageHandler.setup(workerHandler, port);
1334
+ const messageHandler = new _message_handler.MessageHandler(id, id + "_worker", port);
1335
+ this._messageHandler = messageHandler;
1429
1336
 
1430
- return;
1431
- }
1337
+ this._readyCapability.resolve();
1432
1338
 
1433
- var port = new LoopbackPort();
1434
- _this8._port = port;
1435
- var id = 'fake' + nextFakeWorkerId++;
1436
- var workerHandler = new _message_handler.MessageHandler(id + '_worker', id, port);
1437
- WorkerMessageHandler.setup(workerHandler, port);
1438
- var messageHandler = new _message_handler.MessageHandler(id, id + '_worker', port);
1439
- _this8._messageHandler = messageHandler;
1440
-
1441
- _this8._readyCapability.resolve();
1442
- })["catch"](function (reason) {
1443
- _this8._readyCapability.reject(new Error("Setting up fake worker failed: \"".concat(reason.message, "\".")));
1339
+ messageHandler.send("configure", {
1340
+ verbosity: this.verbosity
1444
1341
  });
1445
- }
1446
- }, {
1447
- key: "destroy",
1448
- value: function destroy() {
1449
- this.destroyed = true;
1342
+ }).catch(reason => {
1343
+ this._readyCapability.reject(new Error(`Setting up fake worker failed: "${reason.message}".`));
1344
+ });
1345
+ }
1450
1346
 
1451
- if (this._webWorker) {
1452
- this._webWorker.terminate();
1347
+ destroy() {
1348
+ this.destroyed = true;
1453
1349
 
1454
- this._webWorker = null;
1455
- }
1350
+ if (this._webWorker) {
1351
+ this._webWorker.terminate();
1352
+
1353
+ this._webWorker = null;
1354
+ }
1456
1355
 
1457
- pdfWorkerPorts["delete"](this._port);
1458
- this._port = null;
1356
+ pdfWorkerPorts.delete(this._port);
1357
+ this._port = null;
1459
1358
 
1460
- if (this._messageHandler) {
1461
- this._messageHandler.destroy();
1359
+ if (this._messageHandler) {
1360
+ this._messageHandler.destroy();
1462
1361
 
1463
- this._messageHandler = null;
1464
- }
1362
+ this._messageHandler = null;
1465
1363
  }
1466
- }, {
1467
- key: "promise",
1468
- get: function get() {
1469
- return this._readyCapability.promise;
1364
+ }
1365
+
1366
+ static fromPort(params) {
1367
+ if (!params || !params.port) {
1368
+ throw new Error("PDFWorker.fromPort - invalid method signature.");
1470
1369
  }
1471
- }, {
1472
- key: "port",
1473
- get: function get() {
1474
- return this._port;
1370
+
1371
+ if (pdfWorkerPorts.has(params.port)) {
1372
+ return pdfWorkerPorts.get(params.port);
1475
1373
  }
1476
- }, {
1477
- key: "messageHandler",
1478
- get: function get() {
1479
- return this._messageHandler;
1480
- }
1481
- }], [{
1482
- key: "fromPort",
1483
- value: function fromPort(params) {
1484
- if (!params || !params.port) {
1485
- throw new Error('PDFWorker.fromPort - invalid method signature.');
1486
- }
1487
1374
 
1488
- if (pdfWorkerPorts.has(params.port)) {
1489
- return pdfWorkerPorts.get(params.port);
1490
- }
1375
+ return new PDFWorker(params);
1376
+ }
1491
1377
 
1492
- return new PDFWorker(params);
1493
- }
1494
- }, {
1495
- key: "getWorkerSrc",
1496
- value: function getWorkerSrc() {
1497
- return _getWorkerSrc();
1498
- }
1499
- }]);
1378
+ static getWorkerSrc() {
1379
+ return getWorkerSrc();
1380
+ }
1500
1381
 
1501
- return PDFWorker;
1502
- }();
1382
+ }
1503
1383
 
1504
1384
  return PDFWorker;
1505
1385
  }();
1506
1386
 
1507
1387
  exports.PDFWorker = PDFWorker;
1508
1388
 
1509
- var WorkerTransport =
1510
- /*#__PURE__*/
1511
- function () {
1512
- function WorkerTransport(messageHandler, loadingTask, networkStream, params) {
1513
- _classCallCheck(this, WorkerTransport);
1514
-
1389
+ class WorkerTransport {
1390
+ constructor(messageHandler, loadingTask, networkStream, params) {
1515
1391
  this.messageHandler = messageHandler;
1516
1392
  this.loadingTask = loadingTask;
1517
1393
  this.commonObjs = new PDFObjects();
1518
1394
  this.fontLoader = new _font_loader.FontLoader({
1519
1395
  docId: loadingTask.docId,
1520
- onUnsupportedFeature: this._onUnsupportedFeature.bind(this)
1396
+ onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
1397
+ ownerDocument: params.ownerDocument
1521
1398
  });
1522
1399
  this._params = params;
1523
1400
  this.CMapReaderFactory = new params.CMapReaderFactory({
@@ -1536,767 +1413,628 @@ function () {
1536
1413
  this.setupMessageHandler();
1537
1414
  }
1538
1415
 
1539
- _createClass(WorkerTransport, [{
1540
- key: "destroy",
1541
- value: function destroy() {
1542
- var _this9 = this;
1416
+ destroy() {
1417
+ if (this.destroyCapability) {
1418
+ return this.destroyCapability.promise;
1419
+ }
1543
1420
 
1544
- if (this.destroyCapability) {
1545
- return this.destroyCapability.promise;
1546
- }
1421
+ this.destroyed = true;
1422
+ this.destroyCapability = (0, _util.createPromiseCapability)();
1547
1423
 
1548
- this.destroyed = true;
1549
- this.destroyCapability = (0, _util.createPromiseCapability)();
1424
+ if (this._passwordCapability) {
1425
+ this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback"));
1426
+ }
1550
1427
 
1551
- if (this._passwordCapability) {
1552
- this._passwordCapability.reject(new Error('Worker was destroyed during onPassword callback'));
1428
+ const waitOn = [];
1429
+ this.pageCache.forEach(function (page) {
1430
+ if (page) {
1431
+ waitOn.push(page._destroy());
1432
+ }
1433
+ });
1434
+ this.pageCache.length = 0;
1435
+ this.pagePromises.length = 0;
1436
+ const terminated = this.messageHandler.sendWithPromise("Terminate", null);
1437
+ waitOn.push(terminated);
1438
+ Promise.all(waitOn).then(() => {
1439
+ this.fontLoader.clear();
1440
+
1441
+ if (this._networkStream) {
1442
+ this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated."));
1553
1443
  }
1554
1444
 
1555
- var waitOn = [];
1556
- this.pageCache.forEach(function (page) {
1557
- if (page) {
1558
- waitOn.push(page._destroy());
1559
- }
1560
- });
1561
- this.pageCache.length = 0;
1562
- this.pagePromises.length = 0;
1563
- var terminated = this.messageHandler.sendWithPromise('Terminate', null);
1564
- waitOn.push(terminated);
1565
- Promise.all(waitOn).then(function () {
1566
- _this9.fontLoader.clear();
1567
-
1568
- if (_this9._networkStream) {
1569
- _this9._networkStream.cancelAllRequests();
1570
- }
1571
-
1572
- if (_this9.messageHandler) {
1573
- _this9.messageHandler.destroy();
1445
+ if (this.messageHandler) {
1446
+ this.messageHandler.destroy();
1447
+ this.messageHandler = null;
1448
+ }
1574
1449
 
1575
- _this9.messageHandler = null;
1576
- }
1450
+ this.destroyCapability.resolve();
1451
+ }, this.destroyCapability.reject);
1452
+ return this.destroyCapability.promise;
1453
+ }
1577
1454
 
1578
- _this9.destroyCapability.resolve();
1579
- }, this.destroyCapability.reject);
1580
- return this.destroyCapability.promise;
1581
- }
1582
- }, {
1583
- key: "setupMessageHandler",
1584
- value: function setupMessageHandler() {
1585
- var messageHandler = this.messageHandler,
1586
- loadingTask = this.loadingTask;
1587
- messageHandler.on('GetReader', function (data, sink) {
1588
- var _this10 = this;
1589
-
1590
- (0, _util.assert)(this._networkStream);
1591
- this._fullReader = this._networkStream.getFullReader();
1592
-
1593
- this._fullReader.onProgress = function (evt) {
1594
- _this10._lastProgress = {
1595
- loaded: evt.loaded,
1596
- total: evt.total
1597
- };
1455
+ setupMessageHandler() {
1456
+ const {
1457
+ messageHandler,
1458
+ loadingTask
1459
+ } = this;
1460
+ messageHandler.on("GetReader", (data, sink) => {
1461
+ (0, _util.assert)(this._networkStream, "GetReader - no `IPDFStream` instance available.");
1462
+ this._fullReader = this._networkStream.getFullReader();
1463
+
1464
+ this._fullReader.onProgress = evt => {
1465
+ this._lastProgress = {
1466
+ loaded: evt.loaded,
1467
+ total: evt.total
1598
1468
  };
1469
+ };
1599
1470
 
1600
- sink.onPull = function () {
1601
- _this10._fullReader.read().then(function (_ref7) {
1602
- var value = _ref7.value,
1603
- done = _ref7.done;
1604
-
1605
- if (done) {
1606
- sink.close();
1607
- return;
1608
- }
1471
+ sink.onPull = () => {
1472
+ this._fullReader.read().then(function ({
1473
+ value,
1474
+ done
1475
+ }) {
1476
+ if (done) {
1477
+ sink.close();
1478
+ return;
1479
+ }
1609
1480
 
1610
- (0, _util.assert)((0, _util.isArrayBuffer)(value));
1611
- sink.enqueue(new Uint8Array(value), 1, [value]);
1612
- })["catch"](function (reason) {
1613
- sink.error(reason);
1614
- });
1615
- };
1481
+ (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetReader - expected an ArrayBuffer.");
1482
+ sink.enqueue(new Uint8Array(value), 1, [value]);
1483
+ }).catch(reason => {
1484
+ sink.error(reason);
1485
+ });
1486
+ };
1616
1487
 
1617
- sink.onCancel = function (reason) {
1618
- _this10._fullReader.cancel(reason);
1619
- };
1620
- }, this);
1621
- messageHandler.on('ReaderHeadersReady', function (data) {
1622
- var _this11 = this;
1623
-
1624
- var headersCapability = (0, _util.createPromiseCapability)();
1625
- var fullReader = this._fullReader;
1626
- fullReader.headersReady.then(function () {
1627
- if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {
1628
- if (_this11._lastProgress && loadingTask.onProgress) {
1629
- loadingTask.onProgress(_this11._lastProgress);
1630
- }
1488
+ sink.onCancel = reason => {
1489
+ this._fullReader.cancel(reason);
1631
1490
 
1632
- fullReader.onProgress = function (evt) {
1633
- if (loadingTask.onProgress) {
1634
- loadingTask.onProgress({
1635
- loaded: evt.loaded,
1636
- total: evt.total
1637
- });
1638
- }
1639
- };
1491
+ sink.ready.catch(readyReason => {
1492
+ if (this.destroyed) {
1493
+ return;
1640
1494
  }
1641
1495
 
1642
- headersCapability.resolve({
1643
- isStreamingSupported: fullReader.isStreamingSupported,
1644
- isRangeSupported: fullReader.isRangeSupported,
1645
- contentLength: fullReader.contentLength
1646
- });
1647
- }, headersCapability.reject);
1648
- return headersCapability.promise;
1649
- }, this);
1650
- messageHandler.on('GetRangeReader', function (data, sink) {
1651
- (0, _util.assert)(this._networkStream);
1652
-
1653
- var rangeReader = this._networkStream.getRangeReader(data.begin, data.end);
1496
+ throw readyReason;
1497
+ });
1498
+ };
1499
+ });
1500
+ messageHandler.on("ReaderHeadersReady", data => {
1501
+ const headersCapability = (0, _util.createPromiseCapability)();
1502
+ const fullReader = this._fullReader;
1503
+ fullReader.headersReady.then(() => {
1504
+ if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {
1505
+ if (this._lastProgress && loadingTask.onProgress) {
1506
+ loadingTask.onProgress(this._lastProgress);
1507
+ }
1654
1508
 
1655
- if (!rangeReader) {
1656
- sink.close();
1657
- return;
1509
+ fullReader.onProgress = evt => {
1510
+ if (loadingTask.onProgress) {
1511
+ loadingTask.onProgress({
1512
+ loaded: evt.loaded,
1513
+ total: evt.total
1514
+ });
1515
+ }
1516
+ };
1658
1517
  }
1659
1518
 
1660
- sink.onPull = function () {
1661
- rangeReader.read().then(function (_ref8) {
1662
- var value = _ref8.value,
1663
- done = _ref8.done;
1664
-
1665
- if (done) {
1666
- sink.close();
1667
- return;
1668
- }
1519
+ headersCapability.resolve({
1520
+ isStreamingSupported: fullReader.isStreamingSupported,
1521
+ isRangeSupported: fullReader.isRangeSupported,
1522
+ contentLength: fullReader.contentLength
1523
+ });
1524
+ }, headersCapability.reject);
1525
+ return headersCapability.promise;
1526
+ });
1527
+ messageHandler.on("GetRangeReader", (data, sink) => {
1528
+ (0, _util.assert)(this._networkStream, "GetRangeReader - no `IPDFStream` instance available.");
1669
1529
 
1670
- (0, _util.assert)((0, _util.isArrayBuffer)(value));
1671
- sink.enqueue(new Uint8Array(value), 1, [value]);
1672
- })["catch"](function (reason) {
1673
- sink.error(reason);
1674
- });
1675
- };
1530
+ const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);
1676
1531
 
1677
- sink.onCancel = function (reason) {
1678
- rangeReader.cancel(reason);
1679
- };
1680
- }, this);
1681
- messageHandler.on('GetDoc', function (_ref9) {
1682
- var pdfInfo = _ref9.pdfInfo;
1683
- this._numPages = pdfInfo.numPages;
1684
-
1685
- loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));
1686
- }, this);
1687
- messageHandler.on('PasswordRequest', function (exception) {
1688
- var _this12 = this;
1689
-
1690
- this._passwordCapability = (0, _util.createPromiseCapability)();
1691
-
1692
- if (loadingTask.onPassword) {
1693
- var updatePassword = function updatePassword(password) {
1694
- _this12._passwordCapability.resolve({
1695
- password: password
1696
- });
1697
- };
1532
+ if (!rangeReader) {
1533
+ sink.close();
1534
+ return;
1535
+ }
1698
1536
 
1699
- try {
1700
- loadingTask.onPassword(updatePassword, exception.code);
1701
- } catch (ex) {
1702
- this._passwordCapability.reject(ex);
1537
+ sink.onPull = () => {
1538
+ rangeReader.read().then(function ({
1539
+ value,
1540
+ done
1541
+ }) {
1542
+ if (done) {
1543
+ sink.close();
1544
+ return;
1703
1545
  }
1704
- } else {
1705
- this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));
1706
- }
1707
1546
 
1708
- return this._passwordCapability.promise;
1709
- }, this);
1710
- messageHandler.on('PasswordException', function (exception) {
1711
- loadingTask._capability.reject(new _util.PasswordException(exception.message, exception.code));
1712
- }, this);
1713
- messageHandler.on('InvalidPDF', function (exception) {
1714
- loadingTask._capability.reject(new _util.InvalidPDFException(exception.message));
1715
- }, this);
1716
- messageHandler.on('MissingPDF', function (exception) {
1717
- loadingTask._capability.reject(new _util.MissingPDFException(exception.message));
1718
- }, this);
1719
- messageHandler.on('UnexpectedResponse', function (exception) {
1720
- loadingTask._capability.reject(new _util.UnexpectedResponseException(exception.message, exception.status));
1721
- }, this);
1722
- messageHandler.on('UnknownError', function (exception) {
1723
- loadingTask._capability.reject(new _util.UnknownErrorException(exception.message, exception.details));
1724
- }, this);
1725
- messageHandler.on('DataLoaded', function (data) {
1726
- if (loadingTask.onProgress) {
1727
- loadingTask.onProgress({
1728
- loaded: data.length,
1729
- total: data.length
1730
- });
1731
- }
1547
+ (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetRangeReader - expected an ArrayBuffer.");
1548
+ sink.enqueue(new Uint8Array(value), 1, [value]);
1549
+ }).catch(reason => {
1550
+ sink.error(reason);
1551
+ });
1552
+ };
1732
1553
 
1733
- this.downloadInfoCapability.resolve(data);
1734
- }, this);
1735
- messageHandler.on('StartRenderPage', function (data) {
1736
- if (this.destroyed) {
1737
- return;
1738
- }
1554
+ sink.onCancel = reason => {
1555
+ rangeReader.cancel(reason);
1556
+ sink.ready.catch(readyReason => {
1557
+ if (this.destroyed) {
1558
+ return;
1559
+ }
1560
+
1561
+ throw readyReason;
1562
+ });
1563
+ };
1564
+ });
1565
+ messageHandler.on("GetDoc", ({
1566
+ pdfInfo
1567
+ }) => {
1568
+ this._numPages = pdfInfo.numPages;
1739
1569
 
1740
- var page = this.pageCache[data.pageIndex];
1570
+ loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));
1571
+ });
1572
+ messageHandler.on("DocException", function (ex) {
1573
+ let reason;
1741
1574
 
1742
- page._stats.timeEnd('Page Request');
1575
+ switch (ex.name) {
1576
+ case "PasswordException":
1577
+ reason = new _util.PasswordException(ex.message, ex.code);
1578
+ break;
1743
1579
 
1744
- page._startRenderPage(data.transparency, data.intent);
1745
- }, this);
1746
- messageHandler.on('RenderPageChunk', function (data) {
1747
- if (this.destroyed) {
1748
- return;
1749
- }
1580
+ case "InvalidPDFException":
1581
+ reason = new _util.InvalidPDFException(ex.message);
1582
+ break;
1750
1583
 
1751
- var page = this.pageCache[data.pageIndex];
1584
+ case "MissingPDFException":
1585
+ reason = new _util.MissingPDFException(ex.message);
1586
+ break;
1752
1587
 
1753
- page._renderPageChunk(data.operatorList, data.intent);
1754
- }, this);
1755
- messageHandler.on('commonobj', function (data) {
1756
- var _this13 = this;
1588
+ case "UnexpectedResponseException":
1589
+ reason = new _util.UnexpectedResponseException(ex.message, ex.status);
1590
+ break;
1757
1591
 
1758
- if (this.destroyed) {
1759
- return;
1760
- }
1592
+ case "UnknownErrorException":
1593
+ reason = new _util.UnknownErrorException(ex.message, ex.details);
1594
+ break;
1595
+ }
1761
1596
 
1762
- var _data = _slicedToArray(data, 3),
1763
- id = _data[0],
1764
- type = _data[1],
1765
- exportedData = _data[2];
1597
+ if (!(reason instanceof Error)) {
1598
+ const msg = "DocException - expected a valid Error.";
1599
+ (0, _util.warn)(msg);
1600
+ }
1766
1601
 
1767
- if (this.commonObjs.has(id)) {
1768
- return;
1769
- }
1602
+ loadingTask._capability.reject(reason);
1603
+ });
1604
+ messageHandler.on("PasswordRequest", exception => {
1605
+ this._passwordCapability = (0, _util.createPromiseCapability)();
1770
1606
 
1771
- switch (type) {
1772
- case 'Font':
1773
- var params = this._params;
1607
+ if (loadingTask.onPassword) {
1608
+ const updatePassword = password => {
1609
+ this._passwordCapability.resolve({
1610
+ password
1611
+ });
1612
+ };
1774
1613
 
1775
- if ('error' in exportedData) {
1776
- var exportedError = exportedData.error;
1777
- (0, _util.warn)("Error during font loading: ".concat(exportedError));
1778
- this.commonObjs.resolve(id, exportedError);
1779
- break;
1780
- }
1614
+ try {
1615
+ loadingTask.onPassword(updatePassword, exception.code);
1616
+ } catch (ex) {
1617
+ this._passwordCapability.reject(ex);
1618
+ }
1619
+ } else {
1620
+ this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));
1621
+ }
1781
1622
 
1782
- var fontRegistry = null;
1623
+ return this._passwordCapability.promise;
1624
+ });
1625
+ messageHandler.on("DataLoaded", data => {
1626
+ if (loadingTask.onProgress) {
1627
+ loadingTask.onProgress({
1628
+ loaded: data.length,
1629
+ total: data.length
1630
+ });
1631
+ }
1783
1632
 
1784
- if (params.pdfBug && _global_scope["default"].FontInspector && _global_scope["default"].FontInspector.enabled) {
1785
- fontRegistry = {
1786
- registerFont: function registerFont(font, url) {
1787
- _global_scope["default"]['FontInspector'].fontAdded(font, url);
1788
- }
1789
- };
1790
- }
1633
+ this.downloadInfoCapability.resolve(data);
1634
+ });
1635
+ messageHandler.on("StartRenderPage", data => {
1636
+ if (this.destroyed) {
1637
+ return;
1638
+ }
1791
1639
 
1792
- var font = new _font_loader.FontFaceObject(exportedData, {
1793
- isEvalSupported: params.isEvalSupported,
1794
- disableFontFace: params.disableFontFace,
1795
- ignoreErrors: params.ignoreErrors,
1796
- onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
1797
- fontRegistry: fontRegistry
1798
- });
1799
- this.fontLoader.bind(font).then(function () {
1800
- _this13.commonObjs.resolve(id, font);
1801
- }, function (reason) {
1802
- messageHandler.sendWithPromise('FontFallback', {
1803
- id: id
1804
- })["finally"](function () {
1805
- _this13.commonObjs.resolve(id, font);
1806
- });
1807
- });
1808
- break;
1640
+ const page = this.pageCache[data.pageIndex];
1809
1641
 
1810
- case 'FontPath':
1811
- case 'FontType3Res':
1812
- this.commonObjs.resolve(id, exportedData);
1813
- break;
1642
+ page._startRenderPage(data.transparency, data.intent);
1643
+ });
1644
+ messageHandler.on("commonobj", data => {
1645
+ if (this.destroyed) {
1646
+ return;
1647
+ }
1814
1648
 
1815
- default:
1816
- throw new Error("Got unknown common object type ".concat(type));
1817
- }
1818
- }, this);
1819
- messageHandler.on('obj', function (data) {
1820
- if (this.destroyed) {
1821
- return undefined;
1822
- }
1649
+ const [id, type, exportedData] = data;
1823
1650
 
1824
- var _data2 = _slicedToArray(data, 4),
1825
- id = _data2[0],
1826
- pageIndex = _data2[1],
1827
- type = _data2[2],
1828
- imageData = _data2[3];
1651
+ if (this.commonObjs.has(id)) {
1652
+ return;
1653
+ }
1829
1654
 
1830
- var pageProxy = this.pageCache[pageIndex];
1655
+ switch (type) {
1656
+ case "Font":
1657
+ const params = this._params;
1831
1658
 
1832
- if (pageProxy.objs.has(id)) {
1833
- return undefined;
1834
- }
1659
+ if ("error" in exportedData) {
1660
+ const exportedError = exportedData.error;
1661
+ (0, _util.warn)(`Error during font loading: ${exportedError}`);
1662
+ this.commonObjs.resolve(id, exportedError);
1663
+ break;
1664
+ }
1835
1665
 
1836
- switch (type) {
1837
- case 'JpegStream':
1838
- return new Promise(function (resolve, reject) {
1839
- var img = new Image();
1666
+ let fontRegistry = null;
1840
1667
 
1841
- img.onload = function () {
1842
- resolve(img);
1843
- };
1668
+ if (params.pdfBug && globalThis.FontInspector && globalThis.FontInspector.enabled) {
1669
+ fontRegistry = {
1670
+ registerFont(font, url) {
1671
+ globalThis.FontInspector.fontAdded(font, url);
1672
+ }
1844
1673
 
1845
- img.onerror = function () {
1846
- reject(new Error('Error during JPEG image loading'));
1847
- (0, _display_utils.releaseImageResources)(img);
1848
- };
1674
+ };
1675
+ }
1849
1676
 
1850
- img.src = imageData;
1851
- }).then(function (img) {
1852
- pageProxy.objs.resolve(id, img);
1677
+ const font = new _font_loader.FontFaceObject(exportedData, {
1678
+ isEvalSupported: params.isEvalSupported,
1679
+ disableFontFace: params.disableFontFace,
1680
+ ignoreErrors: params.ignoreErrors,
1681
+ onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
1682
+ fontRegistry
1683
+ });
1684
+ this.fontLoader.bind(font).catch(reason => {
1685
+ return messageHandler.sendWithPromise("FontFallback", {
1686
+ id
1853
1687
  });
1854
-
1855
- case 'Image':
1856
- pageProxy.objs.resolve(id, imageData);
1857
- var MAX_IMAGE_SIZE_TO_STORE = 8000000;
1858
-
1859
- if (imageData && 'data' in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {
1860
- pageProxy.cleanupAfterRender = true;
1688
+ }).finally(() => {
1689
+ if (!params.fontExtraProperties && font.data) {
1690
+ font.data = null;
1861
1691
  }
1862
1692
 
1863
- break;
1693
+ this.commonObjs.resolve(id, font);
1694
+ });
1695
+ break;
1864
1696
 
1865
- default:
1866
- throw new Error("Got unknown object type ".concat(type));
1867
- }
1697
+ case "FontPath":
1698
+ case "Image":
1699
+ this.commonObjs.resolve(id, exportedData);
1700
+ break;
1868
1701
 
1702
+ default:
1703
+ throw new Error(`Got unknown common object type ${type}`);
1704
+ }
1705
+ });
1706
+ messageHandler.on("obj", data => {
1707
+ if (this.destroyed) {
1869
1708
  return undefined;
1870
- }, this);
1871
- messageHandler.on('DocProgress', function (data) {
1872
- if (this.destroyed) {
1873
- return;
1874
- }
1875
-
1876
- if (loadingTask.onProgress) {
1877
- loadingTask.onProgress({
1878
- loaded: data.loaded,
1879
- total: data.total
1880
- });
1881
- }
1882
- }, this);
1883
- messageHandler.on('PageError', function (data) {
1884
- if (this.destroyed) {
1885
- return;
1886
- }
1709
+ }
1887
1710
 
1888
- var page = this.pageCache[data.pageIndex];
1889
- var intentState = page.intentStates[data.intent];
1711
+ const [id, pageIndex, type, imageData] = data;
1712
+ const pageProxy = this.pageCache[pageIndex];
1890
1713
 
1891
- if (intentState.displayReadyCapability) {
1892
- intentState.displayReadyCapability.reject(new Error(data.error));
1893
- } else {
1894
- throw new Error(data.error);
1895
- }
1714
+ if (pageProxy.objs.has(id)) {
1715
+ return undefined;
1716
+ }
1896
1717
 
1897
- if (intentState.operatorList) {
1898
- intentState.operatorList.lastChunk = true;
1718
+ switch (type) {
1719
+ case "Image":
1720
+ pageProxy.objs.resolve(id, imageData);
1721
+ const MAX_IMAGE_SIZE_TO_STORE = 8000000;
1899
1722
 
1900
- for (var i = 0; i < intentState.renderTasks.length; i++) {
1901
- intentState.renderTasks[i].operatorListChanged();
1723
+ if (imageData && "data" in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {
1724
+ pageProxy.cleanupAfterRender = true;
1902
1725
  }
1903
- }
1904
- }, this);
1905
- messageHandler.on('UnsupportedFeature', this._onUnsupportedFeature, this);
1906
- messageHandler.on('JpegDecode', function (data) {
1907
- if (this.destroyed) {
1908
- return Promise.reject(new Error('Worker was destroyed'));
1909
- }
1910
-
1911
- if (typeof document === 'undefined') {
1912
- return Promise.reject(new Error('"document" is not defined.'));
1913
- }
1914
1726
 
1915
- var _data3 = _slicedToArray(data, 2),
1916
- imageUrl = _data3[0],
1917
- components = _data3[1];
1727
+ break;
1918
1728
 
1919
- if (components !== 3 && components !== 1) {
1920
- return Promise.reject(new Error('Only 3 components or 1 component can be returned'));
1921
- }
1729
+ default:
1730
+ throw new Error(`Got unknown object type ${type}`);
1731
+ }
1922
1732
 
1923
- return new Promise(function (resolve, reject) {
1924
- var img = new Image();
1925
-
1926
- img.onload = function () {
1927
- var width = img.width,
1928
- height = img.height;
1929
- var size = width * height;
1930
- var rgbaLength = size * 4;
1931
- var buf = new Uint8ClampedArray(size * components);
1932
- var tmpCanvas = document.createElement('canvas');
1933
- tmpCanvas.width = width;
1934
- tmpCanvas.height = height;
1935
- var tmpCtx = tmpCanvas.getContext('2d');
1936
- tmpCtx.drawImage(img, 0, 0);
1937
- var data = tmpCtx.getImageData(0, 0, width, height).data;
1938
-
1939
- if (components === 3) {
1940
- for (var i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {
1941
- buf[j] = data[i];
1942
- buf[j + 1] = data[i + 1];
1943
- buf[j + 2] = data[i + 2];
1944
- }
1945
- } else if (components === 1) {
1946
- for (var _i2 = 0, _j = 0; _i2 < rgbaLength; _i2 += 4, _j++) {
1947
- buf[_j] = data[_i2];
1948
- }
1949
- }
1733
+ return undefined;
1734
+ });
1735
+ messageHandler.on("DocProgress", data => {
1736
+ if (this.destroyed) {
1737
+ return;
1738
+ }
1950
1739
 
1951
- resolve({
1952
- data: buf,
1953
- width: width,
1954
- height: height
1955
- });
1956
- (0, _display_utils.releaseImageResources)(img);
1957
- tmpCanvas.width = 0;
1958
- tmpCanvas.height = 0;
1959
- tmpCanvas = null;
1960
- tmpCtx = null;
1961
- };
1740
+ if (loadingTask.onProgress) {
1741
+ loadingTask.onProgress({
1742
+ loaded: data.loaded,
1743
+ total: data.total
1744
+ });
1745
+ }
1746
+ });
1747
+ messageHandler.on("UnsupportedFeature", this._onUnsupportedFeature.bind(this));
1748
+ messageHandler.on("FetchBuiltInCMap", (data, sink) => {
1749
+ if (this.destroyed) {
1750
+ sink.error(new Error("Worker was destroyed"));
1751
+ return;
1752
+ }
1962
1753
 
1963
- img.onerror = function () {
1964
- reject(new Error('JpegDecode failed to load image'));
1965
- (0, _display_utils.releaseImageResources)(img);
1966
- };
1754
+ let fetched = false;
1967
1755
 
1968
- img.src = imageUrl;
1969
- });
1970
- }, this);
1971
- messageHandler.on('FetchBuiltInCMap', function (data) {
1972
- if (this.destroyed) {
1973
- return Promise.reject(new Error('Worker was destroyed'));
1756
+ sink.onPull = () => {
1757
+ if (fetched) {
1758
+ sink.close();
1759
+ return;
1974
1760
  }
1975
1761
 
1976
- return this.CMapReaderFactory.fetch({
1977
- name: data.name
1762
+ fetched = true;
1763
+ this.CMapReaderFactory.fetch(data).then(function (builtInCMap) {
1764
+ sink.enqueue(builtInCMap, 1, [builtInCMap.cMapData.buffer]);
1765
+ }).catch(function (reason) {
1766
+ sink.error(reason);
1978
1767
  });
1979
- }, this);
1768
+ };
1769
+ });
1770
+ }
1771
+
1772
+ _onUnsupportedFeature({
1773
+ featureId
1774
+ }) {
1775
+ if (this.destroyed) {
1776
+ return;
1980
1777
  }
1981
- }, {
1982
- key: "_onUnsupportedFeature",
1983
- value: function _onUnsupportedFeature(_ref10) {
1984
- var featureId = _ref10.featureId;
1985
1778
 
1986
- if (this.destroyed) {
1987
- return;
1988
- }
1779
+ if (this.loadingTask.onUnsupportedFeature) {
1780
+ this.loadingTask.onUnsupportedFeature(featureId);
1781
+ }
1782
+ }
1989
1783
 
1990
- if (this.loadingTask.onUnsupportedFeature) {
1991
- this.loadingTask.onUnsupportedFeature(featureId);
1992
- }
1784
+ getData() {
1785
+ return this.messageHandler.sendWithPromise("GetData", null);
1786
+ }
1787
+
1788
+ getPage(pageNumber) {
1789
+ if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {
1790
+ return Promise.reject(new Error("Invalid page request"));
1993
1791
  }
1994
- }, {
1995
- key: "getData",
1996
- value: function getData() {
1997
- return this.messageHandler.sendWithPromise('GetData', null);
1792
+
1793
+ const pageIndex = pageNumber - 1;
1794
+
1795
+ if (pageIndex in this.pagePromises) {
1796
+ return this.pagePromises[pageIndex];
1998
1797
  }
1999
- }, {
2000
- key: "getPage",
2001
- value: function getPage(pageNumber) {
2002
- var _this14 = this;
2003
1798
 
2004
- if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {
2005
- return Promise.reject(new Error('Invalid page request'));
1799
+ const promise = this.messageHandler.sendWithPromise("GetPage", {
1800
+ pageIndex
1801
+ }).then(pageInfo => {
1802
+ if (this.destroyed) {
1803
+ throw new Error("Transport destroyed");
2006
1804
  }
2007
1805
 
2008
- var pageIndex = pageNumber - 1;
1806
+ const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.ownerDocument, this._params.pdfBug);
1807
+ this.pageCache[pageIndex] = page;
1808
+ return page;
1809
+ });
1810
+ this.pagePromises[pageIndex] = promise;
1811
+ return promise;
1812
+ }
2009
1813
 
2010
- if (pageIndex in this.pagePromises) {
2011
- return this.pagePromises[pageIndex];
2012
- }
1814
+ getPageIndex(ref) {
1815
+ return this.messageHandler.sendWithPromise("GetPageIndex", {
1816
+ ref
1817
+ }).catch(function (reason) {
1818
+ return Promise.reject(new Error(reason));
1819
+ });
1820
+ }
2013
1821
 
2014
- var promise = this.messageHandler.sendWithPromise('GetPage', {
2015
- pageIndex: pageIndex
2016
- }).then(function (pageInfo) {
2017
- if (_this14.destroyed) {
2018
- throw new Error('Transport destroyed');
2019
- }
1822
+ getAnnotations(pageIndex, intent) {
1823
+ return this.messageHandler.sendWithPromise("GetAnnotations", {
1824
+ pageIndex,
1825
+ intent
1826
+ });
1827
+ }
2020
1828
 
2021
- var page = new PDFPageProxy(pageIndex, pageInfo, _this14, _this14._params.pdfBug);
2022
- _this14.pageCache[pageIndex] = page;
2023
- return page;
2024
- });
2025
- this.pagePromises[pageIndex] = promise;
2026
- return promise;
2027
- }
2028
- }, {
2029
- key: "getPageIndex",
2030
- value: function getPageIndex(ref) {
2031
- return this.messageHandler.sendWithPromise('GetPageIndex', {
2032
- ref: ref
2033
- })["catch"](function (reason) {
2034
- return Promise.reject(new Error(reason));
2035
- });
2036
- }
2037
- }, {
2038
- key: "getAnnotations",
2039
- value: function getAnnotations(pageIndex, intent) {
2040
- return this.messageHandler.sendWithPromise('GetAnnotations', {
2041
- pageIndex: pageIndex,
2042
- intent: intent
2043
- });
2044
- }
2045
- }, {
2046
- key: "getDestinations",
2047
- value: function getDestinations() {
2048
- return this.messageHandler.sendWithPromise('GetDestinations', null);
2049
- }
2050
- }, {
2051
- key: "getDestination",
2052
- value: function getDestination(id) {
2053
- if (typeof id !== 'string') {
2054
- return Promise.reject(new Error('Invalid destination request.'));
1829
+ saveDocument(annotationStorage) {
1830
+ return this.messageHandler.sendWithPromise("SaveDocument", {
1831
+ numPages: this._numPages,
1832
+ annotationStorage: annotationStorage && annotationStorage.getAll() || null,
1833
+ filename: this._fullReader ? this._fullReader.filename : null
1834
+ }).finally(() => {
1835
+ if (annotationStorage) {
1836
+ annotationStorage.resetModified();
2055
1837
  }
1838
+ });
1839
+ }
2056
1840
 
2057
- return this.messageHandler.sendWithPromise('GetDestination', {
2058
- id: id
2059
- });
2060
- }
2061
- }, {
2062
- key: "getPageLabels",
2063
- value: function getPageLabels() {
2064
- return this.messageHandler.sendWithPromise('GetPageLabels', null);
2065
- }
2066
- }, {
2067
- key: "getPageLayout",
2068
- value: function getPageLayout() {
2069
- return this.messageHandler.sendWithPromise('GetPageLayout', null);
2070
- }
2071
- }, {
2072
- key: "getPageMode",
2073
- value: function getPageMode() {
2074
- return this.messageHandler.sendWithPromise('GetPageMode', null);
2075
- }
2076
- }, {
2077
- key: "getViewerPreferences",
2078
- value: function getViewerPreferences() {
2079
- return this.messageHandler.sendWithPromise('GetViewerPreferences', null);
2080
- }
2081
- }, {
2082
- key: "getOpenActionDestination",
2083
- value: function getOpenActionDestination() {
2084
- return this.messageHandler.sendWithPromise('GetOpenActionDestination', null);
2085
- }
2086
- }, {
2087
- key: "getAttachments",
2088
- value: function getAttachments() {
2089
- return this.messageHandler.sendWithPromise('GetAttachments', null);
2090
- }
2091
- }, {
2092
- key: "getJavaScript",
2093
- value: function getJavaScript() {
2094
- return this.messageHandler.sendWithPromise('GetJavaScript', null);
2095
- }
2096
- }, {
2097
- key: "getOutline",
2098
- value: function getOutline() {
2099
- return this.messageHandler.sendWithPromise('GetOutline', null);
2100
- }
2101
- }, {
2102
- key: "getPermissions",
2103
- value: function getPermissions() {
2104
- return this.messageHandler.sendWithPromise('GetPermissions', null);
2105
- }
2106
- }, {
2107
- key: "getMetadata",
2108
- value: function getMetadata() {
2109
- var _this15 = this;
2110
-
2111
- return this.messageHandler.sendWithPromise('GetMetadata', null).then(function (results) {
2112
- return {
2113
- info: results[0],
2114
- metadata: results[1] ? new _metadata.Metadata(results[1]) : null,
2115
- contentDispositionFilename: _this15._fullReader ? _this15._fullReader.filename : null
2116
- };
2117
- });
2118
- }
2119
- }, {
2120
- key: "getStats",
2121
- value: function getStats() {
2122
- return this.messageHandler.sendWithPromise('GetStats', null);
1841
+ getDestinations() {
1842
+ return this.messageHandler.sendWithPromise("GetDestinations", null);
1843
+ }
1844
+
1845
+ getDestination(id) {
1846
+ if (typeof id !== "string") {
1847
+ return Promise.reject(new Error("Invalid destination request."));
2123
1848
  }
2124
- }, {
2125
- key: "startCleanup",
2126
- value: function startCleanup() {
2127
- var _this16 = this;
2128
1849
 
2129
- this.messageHandler.sendWithPromise('Cleanup', null).then(function () {
2130
- for (var i = 0, ii = _this16.pageCache.length; i < ii; i++) {
2131
- var page = _this16.pageCache[i];
1850
+ return this.messageHandler.sendWithPromise("GetDestination", {
1851
+ id
1852
+ });
1853
+ }
2132
1854
 
2133
- if (page) {
2134
- page.cleanup();
2135
- }
2136
- }
1855
+ getPageLabels() {
1856
+ return this.messageHandler.sendWithPromise("GetPageLabels", null);
1857
+ }
2137
1858
 
2138
- _this16.commonObjs.clear();
1859
+ getPageLayout() {
1860
+ return this.messageHandler.sendWithPromise("GetPageLayout", null);
1861
+ }
2139
1862
 
2140
- _this16.fontLoader.clear();
2141
- });
2142
- }
2143
- }, {
2144
- key: "loadingParams",
2145
- get: function get() {
2146
- var params = this._params;
2147
- return (0, _util.shadow)(this, 'loadingParams', {
2148
- disableAutoFetch: params.disableAutoFetch,
2149
- disableCreateObjectURL: params.disableCreateObjectURL,
2150
- disableFontFace: params.disableFontFace,
2151
- nativeImageDecoderSupport: params.nativeImageDecoderSupport
2152
- });
2153
- }
2154
- }]);
1863
+ getPageMode() {
1864
+ return this.messageHandler.sendWithPromise("GetPageMode", null);
1865
+ }
2155
1866
 
2156
- return WorkerTransport;
2157
- }();
1867
+ getViewerPreferences() {
1868
+ return this.messageHandler.sendWithPromise("GetViewerPreferences", null);
1869
+ }
2158
1870
 
2159
- var PDFObjects =
2160
- /*#__PURE__*/
2161
- function () {
2162
- function PDFObjects() {
2163
- _classCallCheck(this, PDFObjects);
1871
+ getOpenAction() {
1872
+ return this.messageHandler.sendWithPromise("GetOpenAction", null);
1873
+ }
2164
1874
 
2165
- this._objs = Object.create(null);
1875
+ getAttachments() {
1876
+ return this.messageHandler.sendWithPromise("GetAttachments", null);
2166
1877
  }
2167
1878
 
2168
- _createClass(PDFObjects, [{
2169
- key: "_ensureObj",
2170
- value: function _ensureObj(objId) {
2171
- if (this._objs[objId]) {
2172
- return this._objs[objId];
2173
- }
1879
+ getJavaScript() {
1880
+ return this.messageHandler.sendWithPromise("GetJavaScript", null);
1881
+ }
1882
+
1883
+ getOutline() {
1884
+ return this.messageHandler.sendWithPromise("GetOutline", null);
1885
+ }
1886
+
1887
+ getOptionalContentConfig() {
1888
+ return this.messageHandler.sendWithPromise("GetOptionalContentConfig", null).then(results => {
1889
+ return new _optional_content_config.OptionalContentConfig(results);
1890
+ });
1891
+ }
1892
+
1893
+ getPermissions() {
1894
+ return this.messageHandler.sendWithPromise("GetPermissions", null);
1895
+ }
2174
1896
 
2175
- return this._objs[objId] = {
2176
- capability: (0, _util.createPromiseCapability)(),
2177
- data: null,
2178
- resolved: false
1897
+ getMetadata() {
1898
+ return this.messageHandler.sendWithPromise("GetMetadata", null).then(results => {
1899
+ return {
1900
+ info: results[0],
1901
+ metadata: results[1] ? new _metadata.Metadata(results[1]) : null,
1902
+ contentDispositionFilename: this._fullReader ? this._fullReader.filename : null
2179
1903
  };
2180
- }
2181
- }, {
2182
- key: "get",
2183
- value: function get(objId) {
2184
- var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1904
+ });
1905
+ }
2185
1906
 
2186
- if (callback) {
2187
- this._ensureObj(objId).capability.promise.then(callback);
1907
+ getStats() {
1908
+ return this.messageHandler.sendWithPromise("GetStats", null);
1909
+ }
2188
1910
 
2189
- return null;
2190
- }
1911
+ startCleanup() {
1912
+ return this.messageHandler.sendWithPromise("Cleanup", null).then(() => {
1913
+ for (let i = 0, ii = this.pageCache.length; i < ii; i++) {
1914
+ const page = this.pageCache[i];
2191
1915
 
2192
- var obj = this._objs[objId];
1916
+ if (page) {
1917
+ const cleanupSuccessful = page.cleanup();
2193
1918
 
2194
- if (!obj || !obj.resolved) {
2195
- throw new Error("Requesting object that isn't resolved yet ".concat(objId, "."));
1919
+ if (!cleanupSuccessful) {
1920
+ throw new Error(`startCleanup: Page ${i + 1} is currently rendering.`);
1921
+ }
1922
+ }
2196
1923
  }
2197
1924
 
2198
- return obj.data;
2199
- }
2200
- }, {
2201
- key: "has",
2202
- value: function has(objId) {
2203
- var obj = this._objs[objId];
2204
- return obj ? obj.resolved : false;
1925
+ this.commonObjs.clear();
1926
+ this.fontLoader.clear();
1927
+ });
1928
+ }
1929
+
1930
+ get loadingParams() {
1931
+ const params = this._params;
1932
+ return (0, _util.shadow)(this, "loadingParams", {
1933
+ disableAutoFetch: params.disableAutoFetch,
1934
+ disableFontFace: params.disableFontFace
1935
+ });
1936
+ }
1937
+
1938
+ }
1939
+
1940
+ class PDFObjects {
1941
+ constructor() {
1942
+ this._objs = Object.create(null);
1943
+ }
1944
+
1945
+ _ensureObj(objId) {
1946
+ if (this._objs[objId]) {
1947
+ return this._objs[objId];
2205
1948
  }
2206
- }, {
2207
- key: "resolve",
2208
- value: function resolve(objId, data) {
2209
- var obj = this._ensureObj(objId);
2210
1949
 
2211
- obj.resolved = true;
2212
- obj.data = data;
2213
- obj.capability.resolve(data);
1950
+ return this._objs[objId] = {
1951
+ capability: (0, _util.createPromiseCapability)(),
1952
+ data: null,
1953
+ resolved: false
1954
+ };
1955
+ }
1956
+
1957
+ get(objId, callback = null) {
1958
+ if (callback) {
1959
+ this._ensureObj(objId).capability.promise.then(callback);
1960
+
1961
+ return null;
2214
1962
  }
2215
- }, {
2216
- key: "clear",
2217
- value: function clear() {
2218
- for (var objId in this._objs) {
2219
- var data = this._objs[objId].data;
2220
1963
 
2221
- if (typeof Image !== 'undefined' && data instanceof Image) {
2222
- (0, _display_utils.releaseImageResources)(data);
2223
- }
2224
- }
1964
+ const obj = this._objs[objId];
2225
1965
 
2226
- this._objs = Object.create(null);
1966
+ if (!obj || !obj.resolved) {
1967
+ throw new Error(`Requesting object that isn't resolved yet ${objId}.`);
2227
1968
  }
2228
- }]);
2229
1969
 
2230
- return PDFObjects;
2231
- }();
1970
+ return obj.data;
1971
+ }
1972
+
1973
+ has(objId) {
1974
+ const obj = this._objs[objId];
1975
+ return obj ? obj.resolved : false;
1976
+ }
1977
+
1978
+ resolve(objId, data) {
1979
+ const obj = this._ensureObj(objId);
1980
+
1981
+ obj.resolved = true;
1982
+ obj.data = data;
1983
+ obj.capability.resolve(data);
1984
+ }
1985
+
1986
+ clear() {
1987
+ this._objs = Object.create(null);
1988
+ }
2232
1989
 
2233
- var RenderTask =
2234
- /*#__PURE__*/
2235
- function () {
2236
- function RenderTask(internalRenderTask) {
2237
- _classCallCheck(this, RenderTask);
1990
+ }
2238
1991
 
1992
+ class RenderTask {
1993
+ constructor(internalRenderTask) {
2239
1994
  this._internalRenderTask = internalRenderTask;
2240
1995
  this.onContinue = null;
2241
1996
  }
2242
1997
 
2243
- _createClass(RenderTask, [{
2244
- key: "cancel",
2245
- value: function cancel() {
2246
- this._internalRenderTask.cancel();
2247
- }
2248
- }, {
2249
- key: "then",
2250
- value: function then(onFulfilled, onRejected) {
2251
- (0, _display_utils.deprecated)('RenderTask.then method, use the `promise` getter instead.');
2252
- return this.promise.then.apply(this.promise, arguments);
2253
- }
2254
- }, {
2255
- key: "promise",
2256
- get: function get() {
2257
- return this._internalRenderTask.capability.promise;
2258
- }
2259
- }]);
1998
+ get promise() {
1999
+ return this._internalRenderTask.capability.promise;
2000
+ }
2260
2001
 
2261
- return RenderTask;
2262
- }();
2002
+ cancel() {
2003
+ this._internalRenderTask.cancel();
2004
+ }
2263
2005
 
2264
- var InternalRenderTask = function InternalRenderTaskClosure() {
2265
- var canvasInRendering = new WeakSet();
2266
-
2267
- var InternalRenderTask =
2268
- /*#__PURE__*/
2269
- function () {
2270
- function InternalRenderTask(_ref11) {
2271
- var callback = _ref11.callback,
2272
- params = _ref11.params,
2273
- objs = _ref11.objs,
2274
- commonObjs = _ref11.commonObjs,
2275
- operatorList = _ref11.operatorList,
2276
- pageNumber = _ref11.pageNumber,
2277
- canvasFactory = _ref11.canvasFactory,
2278
- webGLContext = _ref11.webGLContext,
2279
- _ref11$useRequestAnim = _ref11.useRequestAnimationFrame,
2280
- useRequestAnimationFrame = _ref11$useRequestAnim === void 0 ? false : _ref11$useRequestAnim,
2281
- _ref11$pdfBug = _ref11.pdfBug,
2282
- pdfBug = _ref11$pdfBug === void 0 ? false : _ref11$pdfBug;
2283
-
2284
- _classCallCheck(this, InternalRenderTask);
2006
+ }
2285
2007
 
2008
+ const InternalRenderTask = function InternalRenderTaskClosure() {
2009
+ const canvasInRendering = new WeakSet();
2010
+
2011
+ class InternalRenderTask {
2012
+ constructor({
2013
+ callback,
2014
+ params,
2015
+ objs,
2016
+ commonObjs,
2017
+ operatorList,
2018
+ pageIndex,
2019
+ canvasFactory,
2020
+ webGLContext,
2021
+ useRequestAnimationFrame = false,
2022
+ pdfBug = false
2023
+ }) {
2286
2024
  this.callback = callback;
2287
2025
  this.params = params;
2288
2026
  this.objs = objs;
2289
2027
  this.commonObjs = commonObjs;
2290
2028
  this.operatorListIdx = null;
2291
2029
  this.operatorList = operatorList;
2292
- this.pageNumber = pageNumber;
2030
+ this._pageIndex = pageIndex;
2293
2031
  this.canvasFactory = canvasFactory;
2294
2032
  this.webGLContext = webGLContext;
2295
2033
  this._pdfBug = pdfBug;
2296
2034
  this.running = false;
2297
2035
  this.graphicsReadyCallback = null;
2298
2036
  this.graphicsReady = false;
2299
- this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== 'undefined';
2037
+ this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== "undefined";
2300
2038
  this.cancelled = false;
2301
2039
  this.capability = (0, _util.createPromiseCapability)();
2302
2040
  this.task = new RenderTask(this);
@@ -2306,172 +2044,141 @@ var InternalRenderTask = function InternalRenderTaskClosure() {
2306
2044
  this._canvas = params.canvasContext.canvas;
2307
2045
  }
2308
2046
 
2309
- _createClass(InternalRenderTask, [{
2310
- key: "initializeGraphics",
2311
- value: function initializeGraphics() {
2312
- var transparency = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
2047
+ get completed() {
2048
+ return this.capability.promise.catch(function () {});
2049
+ }
2313
2050
 
2314
- if (this.cancelled) {
2315
- return;
2051
+ initializeGraphics({
2052
+ transparency = false,
2053
+ optionalContentConfig
2054
+ }) {
2055
+ if (this.cancelled) {
2056
+ return;
2057
+ }
2058
+
2059
+ if (this._canvas) {
2060
+ if (canvasInRendering.has(this._canvas)) {
2061
+ throw new Error("Cannot use the same canvas during multiple render() operations. " + "Use different canvas or ensure previous operations were " + "cancelled or completed.");
2316
2062
  }
2317
2063
 
2318
- if (this._canvas) {
2319
- if (canvasInRendering.has(this._canvas)) {
2320
- throw new Error('Cannot use the same canvas during multiple render() operations. ' + 'Use different canvas or ensure previous operations were ' + 'cancelled or completed.');
2321
- }
2064
+ canvasInRendering.add(this._canvas);
2065
+ }
2322
2066
 
2323
- canvasInRendering.add(this._canvas);
2324
- }
2067
+ if (this._pdfBug && globalThis.StepperManager && globalThis.StepperManager.enabled) {
2068
+ this.stepper = globalThis.StepperManager.create(this._pageIndex);
2069
+ this.stepper.init(this.operatorList);
2070
+ this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
2071
+ }
2325
2072
 
2326
- if (this._pdfBug && _global_scope["default"].StepperManager && _global_scope["default"].StepperManager.enabled) {
2327
- this.stepper = _global_scope["default"].StepperManager.create(this.pageNumber - 1);
2328
- this.stepper.init(this.operatorList);
2329
- this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
2330
- }
2073
+ const {
2074
+ canvasContext,
2075
+ viewport,
2076
+ transform,
2077
+ imageLayer,
2078
+ background
2079
+ } = this.params;
2080
+ this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext, imageLayer, optionalContentConfig);
2081
+ this.gfx.beginDrawing({
2082
+ transform,
2083
+ viewport,
2084
+ transparency,
2085
+ background
2086
+ });
2087
+ this.operatorListIdx = 0;
2088
+ this.graphicsReady = true;
2331
2089
 
2332
- var _this$params = this.params,
2333
- canvasContext = _this$params.canvasContext,
2334
- viewport = _this$params.viewport,
2335
- transform = _this$params.transform,
2336
- imageLayer = _this$params.imageLayer,
2337
- background = _this$params.background;
2338
- this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext, imageLayer);
2339
- this.gfx.beginDrawing({
2340
- transform: transform,
2341
- viewport: viewport,
2342
- transparency: transparency,
2343
- background: background
2344
- });
2345
- this.operatorListIdx = 0;
2346
- this.graphicsReady = true;
2090
+ if (this.graphicsReadyCallback) {
2091
+ this.graphicsReadyCallback();
2092
+ }
2093
+ }
2347
2094
 
2348
- if (this.graphicsReadyCallback) {
2349
- this.graphicsReadyCallback();
2350
- }
2095
+ cancel(error = null) {
2096
+ this.running = false;
2097
+ this.cancelled = true;
2098
+
2099
+ if (this.gfx) {
2100
+ this.gfx.endDrawing();
2351
2101
  }
2352
- }, {
2353
- key: "cancel",
2354
- value: function cancel() {
2355
- var error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
2356
- this.running = false;
2357
- this.cancelled = true;
2358
2102
 
2359
- if (this.gfx) {
2360
- this.gfx.endDrawing();
2361
- }
2103
+ if (this._canvas) {
2104
+ canvasInRendering.delete(this._canvas);
2105
+ }
2106
+
2107
+ this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, "canvas"));
2108
+ }
2362
2109
 
2363
- if (this._canvas) {
2364
- canvasInRendering["delete"](this._canvas);
2110
+ operatorListChanged() {
2111
+ if (!this.graphicsReady) {
2112
+ if (!this.graphicsReadyCallback) {
2113
+ this.graphicsReadyCallback = this._continueBound;
2365
2114
  }
2366
2115
 
2367
- this.callback(error || new _display_utils.RenderingCancelledException("Rendering cancelled, page ".concat(this.pageNumber), 'canvas'));
2116
+ return;
2368
2117
  }
2369
- }, {
2370
- key: "operatorListChanged",
2371
- value: function operatorListChanged() {
2372
- if (!this.graphicsReady) {
2373
- if (!this.graphicsReadyCallback) {
2374
- this.graphicsReadyCallback = this._continueBound;
2375
- }
2376
2118
 
2377
- return;
2378
- }
2119
+ if (this.stepper) {
2120
+ this.stepper.updateOperatorList(this.operatorList);
2121
+ }
2379
2122
 
2380
- if (this.stepper) {
2381
- this.stepper.updateOperatorList(this.operatorList);
2382
- }
2123
+ if (this.running) {
2124
+ return;
2125
+ }
2383
2126
 
2384
- if (this.running) {
2385
- return;
2386
- }
2127
+ this._continue();
2128
+ }
2387
2129
 
2388
- this._continue();
2130
+ _continue() {
2131
+ this.running = true;
2132
+
2133
+ if (this.cancelled) {
2134
+ return;
2389
2135
  }
2390
- }, {
2391
- key: "_continue",
2392
- value: function _continue() {
2393
- this.running = true;
2394
2136
 
2395
- if (this.cancelled) {
2396
- return;
2397
- }
2137
+ if (this.task.onContinue) {
2138
+ this.task.onContinue(this._scheduleNextBound);
2139
+ } else {
2140
+ this._scheduleNext();
2141
+ }
2142
+ }
2398
2143
 
2399
- if (this.task.onContinue) {
2400
- this.task.onContinue(this._scheduleNextBound);
2401
- } else {
2402
- this._scheduleNext();
2403
- }
2144
+ _scheduleNext() {
2145
+ if (this._useRequestAnimationFrame) {
2146
+ window.requestAnimationFrame(() => {
2147
+ this._nextBound().catch(this.cancel.bind(this));
2148
+ });
2149
+ } else {
2150
+ Promise.resolve().then(this._nextBound).catch(this.cancel.bind(this));
2404
2151
  }
2405
- }, {
2406
- key: "_scheduleNext",
2407
- value: function _scheduleNext() {
2408
- var _this17 = this;
2152
+ }
2409
2153
 
2410
- if (this._useRequestAnimationFrame) {
2411
- window.requestAnimationFrame(function () {
2412
- _this17._nextBound()["catch"](_this17.cancel.bind(_this17));
2413
- });
2414
- } else {
2415
- Promise.resolve().then(this._nextBound)["catch"](this.cancel.bind(this));
2416
- }
2154
+ async _next() {
2155
+ if (this.cancelled) {
2156
+ return;
2417
2157
  }
2418
- }, {
2419
- key: "_next",
2420
- value: function () {
2421
- var _next2 = _asyncToGenerator(
2422
- /*#__PURE__*/
2423
- _regenerator["default"].mark(function _callee() {
2424
- return _regenerator["default"].wrap(function _callee$(_context) {
2425
- while (1) {
2426
- switch (_context.prev = _context.next) {
2427
- case 0:
2428
- if (!this.cancelled) {
2429
- _context.next = 2;
2430
- break;
2431
- }
2432
-
2433
- return _context.abrupt("return");
2434
-
2435
- case 2:
2436
- this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);
2437
-
2438
- if (this.operatorListIdx === this.operatorList.argsArray.length) {
2439
- this.running = false;
2440
-
2441
- if (this.operatorList.lastChunk) {
2442
- this.gfx.endDrawing();
2443
-
2444
- if (this._canvas) {
2445
- canvasInRendering["delete"](this._canvas);
2446
- }
2447
-
2448
- this.callback();
2449
- }
2450
- }
2451
-
2452
- case 4:
2453
- case "end":
2454
- return _context.stop();
2455
- }
2456
- }
2457
- }, _callee, this);
2458
- }));
2459
2158
 
2460
- function _next() {
2461
- return _next2.apply(this, arguments);
2462
- }
2159
+ this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);
2160
+
2161
+ if (this.operatorListIdx === this.operatorList.argsArray.length) {
2162
+ this.running = false;
2463
2163
 
2464
- return _next;
2465
- }()
2466
- }]);
2164
+ if (this.operatorList.lastChunk) {
2165
+ this.gfx.endDrawing();
2166
+
2167
+ if (this._canvas) {
2168
+ canvasInRendering.delete(this._canvas);
2169
+ }
2170
+
2171
+ this.callback();
2172
+ }
2173
+ }
2174
+ }
2467
2175
 
2468
- return InternalRenderTask;
2469
- }();
2176
+ }
2470
2177
 
2471
2178
  return InternalRenderTask;
2472
2179
  }();
2473
2180
 
2474
- var version = '2.2.228';
2181
+ const version = '2.6.347';
2475
2182
  exports.version = version;
2476
- var build = 'd7afb74a';
2183
+ const build = '3be9c65f';
2477
2184
  exports.build = build;