pdfjs-dist 2.1.266 → 2.5.207

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