pdfjs-dist 2.0.489 → 2.2.228

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 (169) hide show
  1. package/CODE_OF_CONDUCT.md +15 -0
  2. package/bower.json +1 -1
  3. package/build/pdf.js +18515 -11402
  4. package/build/pdf.js.map +1 -1
  5. package/build/pdf.min.js +1 -1
  6. package/build/pdf.worker.js +48266 -37137
  7. package/build/pdf.worker.js.map +1 -1
  8. package/build/pdf.worker.min.js +1 -1
  9. package/external/url/url-lib.js +627 -0
  10. package/image_decoders/pdf.image_decoders.js +11350 -0
  11. package/image_decoders/pdf.image_decoders.js.map +1 -0
  12. package/image_decoders/pdf.image_decoders.min.js +1 -0
  13. package/lib/core/annotation.js +587 -242
  14. package/lib/core/arithmetic_decoder.js +275 -245
  15. package/lib/core/bidi.js +65 -6
  16. package/lib/core/ccitt.js +173 -18
  17. package/lib/core/ccitt_stream.js +15 -6
  18. package/lib/core/cff_parser.js +433 -61
  19. package/lib/core/charsets.js +5 -4
  20. package/lib/core/chunked_stream.js +400 -152
  21. package/lib/core/cmap.js +326 -87
  22. package/lib/core/colorspace.js +874 -594
  23. package/lib/core/core_utils.js +147 -0
  24. package/lib/core/crypto.js +290 -45
  25. package/lib/core/document.js +560 -268
  26. package/lib/core/encodings.js +19 -10
  27. package/lib/core/evaluator.js +1005 -360
  28. package/lib/core/font_renderer.js +331 -97
  29. package/lib/core/fonts.js +812 -195
  30. package/lib/core/function.js +284 -71
  31. package/lib/core/glyphlist.js +4 -3
  32. package/lib/core/image.js +169 -62
  33. package/lib/core/image_utils.js +111 -0
  34. package/lib/core/jbig2.js +479 -66
  35. package/lib/core/jbig2_stream.js +19 -8
  36. package/lib/core/jpeg_stream.js +38 -13
  37. package/lib/core/jpg.js +253 -29
  38. package/lib/core/jpx.js +396 -6
  39. package/lib/core/jpx_stream.js +18 -6
  40. package/lib/core/metrics.js +15 -15
  41. package/lib/core/murmurhash3.js +56 -34
  42. package/lib/core/obj.js +1354 -488
  43. package/lib/core/operator_list.js +144 -31
  44. package/lib/core/parser.js +539 -191
  45. package/lib/core/pattern.js +148 -14
  46. package/lib/core/pdf_manager.js +323 -133
  47. package/lib/core/primitives.js +111 -24
  48. package/lib/core/ps_parser.js +134 -45
  49. package/lib/core/standard_fonts.js +17 -17
  50. package/lib/core/stream.js +313 -34
  51. package/lib/core/type1_parser.js +143 -13
  52. package/lib/core/unicode.js +32 -5
  53. package/lib/core/worker.js +217 -190
  54. package/lib/core/worker_stream.js +277 -0
  55. package/lib/display/annotation_layer.js +450 -133
  56. package/lib/display/api.js +1597 -784
  57. package/lib/display/api_compatibility.js +11 -13
  58. package/lib/display/canvas.js +360 -44
  59. package/lib/display/content_disposition.js +83 -32
  60. package/lib/display/display_utils.js +747 -0
  61. package/lib/display/fetch_stream.js +221 -90
  62. package/lib/display/font_loader.js +468 -236
  63. package/lib/display/metadata.js +38 -16
  64. package/lib/display/network.js +635 -428
  65. package/lib/display/network_utils.js +32 -19
  66. package/lib/display/node_stream.js +367 -175
  67. package/lib/display/pattern_helper.js +81 -31
  68. package/lib/display/svg.js +1235 -519
  69. package/lib/display/text_layer.js +153 -29
  70. package/lib/display/transport_stream.js +345 -94
  71. package/lib/display/webgl.js +64 -18
  72. package/lib/display/worker_options.js +5 -4
  73. package/lib/display/xml_parser.js +166 -53
  74. package/lib/examples/node/domstubs.js +60 -4
  75. package/lib/pdf.js +36 -14
  76. package/lib/pdf.worker.js +5 -3
  77. package/lib/shared/compatibility.js +158 -564
  78. package/lib/shared/global_scope.js +2 -2
  79. package/lib/shared/is_node.js +4 -4
  80. package/lib/shared/message_handler.js +521 -0
  81. package/lib/shared/streams_polyfill.js +21 -17
  82. package/lib/shared/url_polyfill.js +56 -0
  83. package/lib/shared/util.js +243 -710
  84. package/lib/test/unit/annotation_spec.js +870 -401
  85. package/lib/test/unit/api_spec.js +657 -345
  86. package/lib/test/unit/bidi_spec.js +7 -7
  87. package/lib/test/unit/cff_parser_spec.js +54 -11
  88. package/lib/test/unit/clitests_helper.js +10 -8
  89. package/lib/test/unit/cmap_spec.js +95 -41
  90. package/lib/test/unit/colorspace_spec.js +115 -63
  91. package/lib/test/unit/core_utils_spec.js +191 -0
  92. package/lib/test/unit/crypto_spec.js +17 -5
  93. package/lib/test/unit/custom_spec.js +43 -55
  94. package/lib/test/unit/display_svg_spec.js +34 -18
  95. package/lib/test/unit/display_utils_spec.js +273 -0
  96. package/lib/test/unit/document_spec.js +8 -13
  97. package/lib/test/unit/encodings_spec.js +25 -45
  98. package/lib/test/unit/evaluator_spec.js +38 -15
  99. package/lib/test/unit/fetch_stream_spec.js +109 -0
  100. package/lib/test/unit/function_spec.js +17 -5
  101. package/lib/test/unit/jasmine-boot.js +33 -20
  102. package/lib/test/unit/{util_stream_spec.js → message_handler_spec.js} +41 -69
  103. package/lib/test/unit/metadata_spec.js +71 -11
  104. package/lib/test/unit/murmurhash3_spec.js +3 -3
  105. package/lib/test/unit/network_spec.js +19 -54
  106. package/lib/test/unit/network_utils_spec.js +91 -14
  107. package/lib/test/unit/node_stream_spec.js +56 -32
  108. package/lib/test/unit/parser_spec.js +162 -71
  109. package/lib/test/unit/pdf_find_controller_spec.js +230 -0
  110. package/lib/test/unit/pdf_find_utils_spec.js +63 -0
  111. package/lib/test/unit/pdf_history_spec.js +21 -9
  112. package/lib/test/unit/primitives_spec.js +53 -20
  113. package/lib/test/unit/stream_spec.js +12 -4
  114. package/lib/test/unit/test_utils.js +273 -56
  115. package/lib/test/unit/testreporter.js +21 -3
  116. package/lib/test/unit/type1_parser_spec.js +8 -6
  117. package/lib/test/unit/ui_utils_spec.js +454 -16
  118. package/lib/test/unit/unicode_spec.js +18 -15
  119. package/lib/test/unit/util_spec.js +87 -128
  120. package/lib/web/annotation_layer_builder.js +39 -22
  121. package/lib/web/app.js +1290 -588
  122. package/lib/web/app_options.js +100 -62
  123. package/lib/web/base_viewer.js +511 -182
  124. package/lib/web/chromecom.js +261 -117
  125. package/lib/web/debugger.js +166 -22
  126. package/lib/web/download_manager.js +32 -13
  127. package/lib/web/firefox_print_service.js +20 -10
  128. package/lib/web/firefoxcom.js +315 -80
  129. package/lib/web/genericcom.js +89 -30
  130. package/lib/web/genericl10n.js +142 -30
  131. package/lib/web/grab_to_pan.js +28 -4
  132. package/lib/web/interfaces.js +170 -47
  133. package/lib/web/overlay_manager.js +235 -85
  134. package/lib/web/password_prompt.js +22 -14
  135. package/lib/web/pdf_attachment_viewer.js +38 -18
  136. package/lib/web/pdf_cursor_tools.js +39 -16
  137. package/lib/web/pdf_document_properties.js +255 -136
  138. package/lib/web/pdf_find_bar.js +84 -40
  139. package/lib/web/pdf_find_controller.js +495 -184
  140. package/lib/web/pdf_find_utils.js +111 -0
  141. package/lib/web/pdf_history.js +190 -53
  142. package/lib/web/pdf_link_service.js +138 -77
  143. package/lib/web/pdf_outline_viewer.js +122 -46
  144. package/lib/web/pdf_page_view.js +191 -67
  145. package/lib/web/pdf_presentation_mode.js +99 -34
  146. package/lib/web/pdf_print_service.js +61 -13
  147. package/lib/web/pdf_rendering_queue.js +28 -9
  148. package/lib/web/pdf_sidebar.js +141 -81
  149. package/lib/web/pdf_sidebar_resizer.js +42 -16
  150. package/lib/web/pdf_single_page_viewer.js +74 -66
  151. package/lib/web/pdf_thumbnail_view.js +104 -33
  152. package/lib/web/pdf_thumbnail_viewer.js +66 -26
  153. package/lib/web/pdf_viewer.component.js +112 -32
  154. package/lib/web/pdf_viewer.js +91 -52
  155. package/lib/web/preferences.js +284 -89
  156. package/lib/web/secondary_toolbar.js +165 -40
  157. package/lib/web/text_layer_builder.js +134 -59
  158. package/lib/web/toolbar.js +78 -43
  159. package/lib/web/ui_utils.js +462 -136
  160. package/lib/web/view_history.js +215 -67
  161. package/lib/web/viewer_compatibility.js +4 -13
  162. package/package.json +5 -4
  163. package/web/pdf_viewer.css +79 -11
  164. package/web/pdf_viewer.js +6107 -3748
  165. package/web/pdf_viewer.js.map +1 -1
  166. package/lib/display/dom_utils.js +0 -309
  167. package/lib/test/unit/dom_utils_spec.js +0 -89
  168. package/lib/test/unit/fonts_spec.js +0 -81
  169. package/lib/web/dom_events.js +0 -137
@@ -0,0 +1,747 @@
1
+ /**
2
+ * @licstart The following is the entire license notice for the
3
+ * Javascript code in this page
4
+ *
5
+ * Copyright 2019 Mozilla Foundation
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ *
19
+ * @licend The above is the entire license notice for the
20
+ * Javascript code in this page
21
+ */
22
+ "use strict";
23
+
24
+ Object.defineProperty(exports, "__esModule", {
25
+ value: true
26
+ });
27
+ exports.addLinkAttributes = addLinkAttributes;
28
+ exports.getFilenameFromUrl = getFilenameFromUrl;
29
+ exports.isFetchSupported = isFetchSupported;
30
+ exports.isValidFetchUrl = isValidFetchUrl;
31
+ exports.loadScript = loadScript;
32
+ exports.deprecated = deprecated;
33
+ exports.releaseImageResources = releaseImageResources;
34
+ exports.PDFDateString = exports.DummyStatTimer = exports.StatTimer = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.RenderingCancelledException = exports.PageViewport = void 0;
35
+
36
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
37
+
38
+ var _util = require("../shared/util");
39
+
40
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
41
+
42
+ 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); } }
43
+
44
+ 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); }); }; }
45
+
46
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
47
+
48
+ 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); } }
49
+
50
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
51
+
52
+ var DEFAULT_LINK_REL = 'noopener noreferrer nofollow';
53
+ exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;
54
+ var SVG_NS = 'http://www.w3.org/2000/svg';
55
+
56
+ var DOMCanvasFactory =
57
+ /*#__PURE__*/
58
+ function () {
59
+ function DOMCanvasFactory() {
60
+ _classCallCheck(this, DOMCanvasFactory);
61
+ }
62
+
63
+ _createClass(DOMCanvasFactory, [{
64
+ key: "create",
65
+ value: function create(width, height) {
66
+ if (width <= 0 || height <= 0) {
67
+ throw new Error('Invalid canvas size');
68
+ }
69
+
70
+ var canvas = document.createElement('canvas');
71
+ var context = canvas.getContext('2d');
72
+ canvas.width = width;
73
+ canvas.height = height;
74
+ return {
75
+ canvas: canvas,
76
+ context: context
77
+ };
78
+ }
79
+ }, {
80
+ key: "reset",
81
+ value: function reset(canvasAndContext, width, height) {
82
+ if (!canvasAndContext.canvas) {
83
+ throw new Error('Canvas is not specified');
84
+ }
85
+
86
+ if (width <= 0 || height <= 0) {
87
+ throw new Error('Invalid canvas size');
88
+ }
89
+
90
+ canvasAndContext.canvas.width = width;
91
+ canvasAndContext.canvas.height = height;
92
+ }
93
+ }, {
94
+ key: "destroy",
95
+ value: function destroy(canvasAndContext) {
96
+ if (!canvasAndContext.canvas) {
97
+ throw new Error('Canvas is not specified');
98
+ }
99
+
100
+ canvasAndContext.canvas.width = 0;
101
+ canvasAndContext.canvas.height = 0;
102
+ canvasAndContext.canvas = null;
103
+ canvasAndContext.context = null;
104
+ }
105
+ }]);
106
+
107
+ return DOMCanvasFactory;
108
+ }();
109
+
110
+ exports.DOMCanvasFactory = DOMCanvasFactory;
111
+
112
+ var DOMCMapReaderFactory =
113
+ /*#__PURE__*/
114
+ function () {
115
+ function DOMCMapReaderFactory(_ref) {
116
+ var _ref$baseUrl = _ref.baseUrl,
117
+ baseUrl = _ref$baseUrl === void 0 ? null : _ref$baseUrl,
118
+ _ref$isCompressed = _ref.isCompressed,
119
+ isCompressed = _ref$isCompressed === void 0 ? false : _ref$isCompressed;
120
+
121
+ _classCallCheck(this, DOMCMapReaderFactory);
122
+
123
+ this.baseUrl = baseUrl;
124
+ this.isCompressed = isCompressed;
125
+ }
126
+
127
+ _createClass(DOMCMapReaderFactory, [{
128
+ key: "fetch",
129
+ value: function (_fetch) {
130
+ function fetch(_x) {
131
+ return _fetch.apply(this, arguments);
132
+ }
133
+
134
+ fetch.toString = function () {
135
+ return _fetch.toString();
136
+ };
137
+
138
+ return fetch;
139
+ }(
140
+ /*#__PURE__*/
141
+ function () {
142
+ var _ref3 = _asyncToGenerator(
143
+ /*#__PURE__*/
144
+ _regenerator["default"].mark(function _callee2(_ref2) {
145
+ var _this = this;
146
+
147
+ var name, url, compressionType;
148
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
149
+ while (1) {
150
+ switch (_context2.prev = _context2.next) {
151
+ case 0:
152
+ name = _ref2.name;
153
+
154
+ if (this.baseUrl) {
155
+ _context2.next = 3;
156
+ break;
157
+ }
158
+
159
+ throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.');
160
+
161
+ case 3:
162
+ if (name) {
163
+ _context2.next = 5;
164
+ break;
165
+ }
166
+
167
+ throw new Error('CMap name must be specified.');
168
+
169
+ case 5:
170
+ url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');
171
+ compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;
172
+
173
+ if (!(isFetchSupported() && isValidFetchUrl(url, document.baseURI))) {
174
+ _context2.next = 9;
175
+ break;
176
+ }
177
+
178
+ return _context2.abrupt("return", fetch(url).then(
179
+ /*#__PURE__*/
180
+ function () {
181
+ var _ref4 = _asyncToGenerator(
182
+ /*#__PURE__*/
183
+ _regenerator["default"].mark(function _callee(response) {
184
+ var cMapData;
185
+ return _regenerator["default"].wrap(function _callee$(_context) {
186
+ while (1) {
187
+ switch (_context.prev = _context.next) {
188
+ case 0:
189
+ if (response.ok) {
190
+ _context.next = 2;
191
+ break;
192
+ }
193
+
194
+ throw new Error(response.statusText);
195
+
196
+ case 2:
197
+ if (!_this.isCompressed) {
198
+ _context.next = 10;
199
+ break;
200
+ }
201
+
202
+ _context.t0 = Uint8Array;
203
+ _context.next = 6;
204
+ return response.arrayBuffer();
205
+
206
+ case 6:
207
+ _context.t1 = _context.sent;
208
+ cMapData = new _context.t0(_context.t1);
209
+ _context.next = 15;
210
+ break;
211
+
212
+ case 10:
213
+ _context.t2 = _util.stringToBytes;
214
+ _context.next = 13;
215
+ return response.text();
216
+
217
+ case 13:
218
+ _context.t3 = _context.sent;
219
+ cMapData = (0, _context.t2)(_context.t3);
220
+
221
+ case 15:
222
+ return _context.abrupt("return", {
223
+ cMapData: cMapData,
224
+ compressionType: compressionType
225
+ });
226
+
227
+ case 16:
228
+ case "end":
229
+ return _context.stop();
230
+ }
231
+ }
232
+ }, _callee);
233
+ }));
234
+
235
+ return function (_x3) {
236
+ return _ref4.apply(this, arguments);
237
+ };
238
+ }())["catch"](function (reason) {
239
+ throw new Error("Unable to load ".concat(_this.isCompressed ? 'binary ' : '') + "CMap at: ".concat(url));
240
+ }));
241
+
242
+ case 9:
243
+ return _context2.abrupt("return", new Promise(function (resolve, reject) {
244
+ var request = new XMLHttpRequest();
245
+ request.open('GET', url, true);
246
+
247
+ if (_this.isCompressed) {
248
+ request.responseType = 'arraybuffer';
249
+ }
250
+
251
+ request.onreadystatechange = function () {
252
+ if (request.readyState !== XMLHttpRequest.DONE) {
253
+ return;
254
+ }
255
+
256
+ if (request.status === 200 || request.status === 0) {
257
+ var cMapData;
258
+
259
+ if (_this.isCompressed && request.response) {
260
+ cMapData = new Uint8Array(request.response);
261
+ } else if (!_this.isCompressed && request.responseText) {
262
+ cMapData = (0, _util.stringToBytes)(request.responseText);
263
+ }
264
+
265
+ if (cMapData) {
266
+ resolve({
267
+ cMapData: cMapData,
268
+ compressionType: compressionType
269
+ });
270
+ return;
271
+ }
272
+ }
273
+
274
+ reject(new Error(request.statusText));
275
+ };
276
+
277
+ request.send(null);
278
+ })["catch"](function (reason) {
279
+ throw new Error("Unable to load ".concat(_this.isCompressed ? 'binary ' : '') + "CMap at: ".concat(url));
280
+ }));
281
+
282
+ case 10:
283
+ case "end":
284
+ return _context2.stop();
285
+ }
286
+ }
287
+ }, _callee2, this);
288
+ }));
289
+
290
+ return function (_x2) {
291
+ return _ref3.apply(this, arguments);
292
+ };
293
+ }())
294
+ }]);
295
+
296
+ return DOMCMapReaderFactory;
297
+ }();
298
+
299
+ exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
300
+
301
+ var DOMSVGFactory =
302
+ /*#__PURE__*/
303
+ function () {
304
+ function DOMSVGFactory() {
305
+ _classCallCheck(this, DOMSVGFactory);
306
+ }
307
+
308
+ _createClass(DOMSVGFactory, [{
309
+ key: "create",
310
+ value: function create(width, height) {
311
+ (0, _util.assert)(width > 0 && height > 0, 'Invalid SVG dimensions');
312
+ var svg = document.createElementNS(SVG_NS, 'svg:svg');
313
+ svg.setAttribute('version', '1.1');
314
+ svg.setAttribute('width', width + 'px');
315
+ svg.setAttribute('height', height + 'px');
316
+ svg.setAttribute('preserveAspectRatio', 'none');
317
+ svg.setAttribute('viewBox', '0 0 ' + width + ' ' + height);
318
+ return svg;
319
+ }
320
+ }, {
321
+ key: "createElement",
322
+ value: function createElement(type) {
323
+ (0, _util.assert)(typeof type === 'string', 'Invalid SVG element type');
324
+ return document.createElementNS(SVG_NS, type);
325
+ }
326
+ }]);
327
+
328
+ return DOMSVGFactory;
329
+ }();
330
+
331
+ exports.DOMSVGFactory = DOMSVGFactory;
332
+
333
+ var PageViewport =
334
+ /*#__PURE__*/
335
+ function () {
336
+ function PageViewport(_ref5) {
337
+ var viewBox = _ref5.viewBox,
338
+ scale = _ref5.scale,
339
+ rotation = _ref5.rotation,
340
+ _ref5$offsetX = _ref5.offsetX,
341
+ offsetX = _ref5$offsetX === void 0 ? 0 : _ref5$offsetX,
342
+ _ref5$offsetY = _ref5.offsetY,
343
+ offsetY = _ref5$offsetY === void 0 ? 0 : _ref5$offsetY,
344
+ _ref5$dontFlip = _ref5.dontFlip,
345
+ dontFlip = _ref5$dontFlip === void 0 ? false : _ref5$dontFlip;
346
+
347
+ _classCallCheck(this, PageViewport);
348
+
349
+ this.viewBox = viewBox;
350
+ this.scale = scale;
351
+ this.rotation = rotation;
352
+ this.offsetX = offsetX;
353
+ this.offsetY = offsetY;
354
+ var centerX = (viewBox[2] + viewBox[0]) / 2;
355
+ var centerY = (viewBox[3] + viewBox[1]) / 2;
356
+ var rotateA, rotateB, rotateC, rotateD;
357
+ rotation = rotation % 360;
358
+ rotation = rotation < 0 ? rotation + 360 : rotation;
359
+
360
+ switch (rotation) {
361
+ case 180:
362
+ rotateA = -1;
363
+ rotateB = 0;
364
+ rotateC = 0;
365
+ rotateD = 1;
366
+ break;
367
+
368
+ case 90:
369
+ rotateA = 0;
370
+ rotateB = 1;
371
+ rotateC = 1;
372
+ rotateD = 0;
373
+ break;
374
+
375
+ case 270:
376
+ rotateA = 0;
377
+ rotateB = -1;
378
+ rotateC = -1;
379
+ rotateD = 0;
380
+ break;
381
+
382
+ default:
383
+ rotateA = 1;
384
+ rotateB = 0;
385
+ rotateC = 0;
386
+ rotateD = -1;
387
+ break;
388
+ }
389
+
390
+ if (dontFlip) {
391
+ rotateC = -rotateC;
392
+ rotateD = -rotateD;
393
+ }
394
+
395
+ var offsetCanvasX, offsetCanvasY;
396
+ var width, height;
397
+
398
+ if (rotateA === 0) {
399
+ offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
400
+ offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;
401
+ width = Math.abs(viewBox[3] - viewBox[1]) * scale;
402
+ height = Math.abs(viewBox[2] - viewBox[0]) * scale;
403
+ } else {
404
+ offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;
405
+ offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;
406
+ width = Math.abs(viewBox[2] - viewBox[0]) * scale;
407
+ height = Math.abs(viewBox[3] - viewBox[1]) * scale;
408
+ }
409
+
410
+ this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];
411
+ this.width = width;
412
+ this.height = height;
413
+ }
414
+
415
+ _createClass(PageViewport, [{
416
+ key: "clone",
417
+ value: function clone() {
418
+ var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
419
+ _ref6$scale = _ref6.scale,
420
+ scale = _ref6$scale === void 0 ? this.scale : _ref6$scale,
421
+ _ref6$rotation = _ref6.rotation,
422
+ rotation = _ref6$rotation === void 0 ? this.rotation : _ref6$rotation,
423
+ _ref6$dontFlip = _ref6.dontFlip,
424
+ dontFlip = _ref6$dontFlip === void 0 ? false : _ref6$dontFlip;
425
+
426
+ return new PageViewport({
427
+ viewBox: this.viewBox.slice(),
428
+ scale: scale,
429
+ rotation: rotation,
430
+ offsetX: this.offsetX,
431
+ offsetY: this.offsetY,
432
+ dontFlip: dontFlip
433
+ });
434
+ }
435
+ }, {
436
+ key: "convertToViewportPoint",
437
+ value: function convertToViewportPoint(x, y) {
438
+ return _util.Util.applyTransform([x, y], this.transform);
439
+ }
440
+ }, {
441
+ key: "convertToViewportRectangle",
442
+ value: function convertToViewportRectangle(rect) {
443
+ var topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);
444
+
445
+ var bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);
446
+
447
+ return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];
448
+ }
449
+ }, {
450
+ key: "convertToPdfPoint",
451
+ value: function convertToPdfPoint(x, y) {
452
+ return _util.Util.applyInverseTransform([x, y], this.transform);
453
+ }
454
+ }]);
455
+
456
+ return PageViewport;
457
+ }();
458
+
459
+ exports.PageViewport = PageViewport;
460
+
461
+ var RenderingCancelledException = function RenderingCancelledException() {
462
+ function RenderingCancelledException(msg, type) {
463
+ this.message = msg;
464
+ this.type = type;
465
+ }
466
+
467
+ RenderingCancelledException.prototype = new Error();
468
+ RenderingCancelledException.prototype.name = 'RenderingCancelledException';
469
+ RenderingCancelledException.constructor = RenderingCancelledException;
470
+ return RenderingCancelledException;
471
+ }();
472
+
473
+ exports.RenderingCancelledException = RenderingCancelledException;
474
+ var LinkTarget = {
475
+ NONE: 0,
476
+ SELF: 1,
477
+ BLANK: 2,
478
+ PARENT: 3,
479
+ TOP: 4
480
+ };
481
+ exports.LinkTarget = LinkTarget;
482
+ var LinkTargetStringMap = ['', '_self', '_blank', '_parent', '_top'];
483
+
484
+ function addLinkAttributes(link) {
485
+ var _ref7 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
486
+ url = _ref7.url,
487
+ target = _ref7.target,
488
+ rel = _ref7.rel;
489
+
490
+ link.href = link.title = url ? (0, _util.removeNullCharacters)(url) : '';
491
+
492
+ if (url) {
493
+ var LinkTargetValues = Object.values(LinkTarget);
494
+ var targetIndex = LinkTargetValues.includes(target) ? target : LinkTarget.NONE;
495
+ link.target = LinkTargetStringMap[targetIndex];
496
+ link.rel = typeof rel === 'string' ? rel : DEFAULT_LINK_REL;
497
+ }
498
+ }
499
+
500
+ function getFilenameFromUrl(url) {
501
+ var anchor = url.indexOf('#');
502
+ var query = url.indexOf('?');
503
+ var end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);
504
+ return url.substring(url.lastIndexOf('/', end) + 1, end);
505
+ }
506
+
507
+ var StatTimer =
508
+ /*#__PURE__*/
509
+ function () {
510
+ function StatTimer() {
511
+ var enable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
512
+
513
+ _classCallCheck(this, StatTimer);
514
+
515
+ this.enabled = !!enable;
516
+ this.started = Object.create(null);
517
+ this.times = [];
518
+ }
519
+
520
+ _createClass(StatTimer, [{
521
+ key: "time",
522
+ value: function time(name) {
523
+ if (!this.enabled) {
524
+ return;
525
+ }
526
+
527
+ if (name in this.started) {
528
+ (0, _util.warn)('Timer is already running for ' + name);
529
+ }
530
+
531
+ this.started[name] = Date.now();
532
+ }
533
+ }, {
534
+ key: "timeEnd",
535
+ value: function timeEnd(name) {
536
+ if (!this.enabled) {
537
+ return;
538
+ }
539
+
540
+ if (!(name in this.started)) {
541
+ (0, _util.warn)('Timer has not been started for ' + name);
542
+ }
543
+
544
+ this.times.push({
545
+ 'name': name,
546
+ 'start': this.started[name],
547
+ 'end': Date.now()
548
+ });
549
+ delete this.started[name];
550
+ }
551
+ }, {
552
+ key: "toString",
553
+ value: function toString() {
554
+ var out = '',
555
+ longest = 0;
556
+ var _iteratorNormalCompletion = true;
557
+ var _didIteratorError = false;
558
+ var _iteratorError = undefined;
559
+
560
+ try {
561
+ for (var _iterator = this.times[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
562
+ var time = _step.value;
563
+ var name = time.name;
564
+
565
+ if (name.length > longest) {
566
+ longest = name.length;
567
+ }
568
+ }
569
+ } catch (err) {
570
+ _didIteratorError = true;
571
+ _iteratorError = err;
572
+ } finally {
573
+ try {
574
+ if (!_iteratorNormalCompletion && _iterator["return"] != null) {
575
+ _iterator["return"]();
576
+ }
577
+ } finally {
578
+ if (_didIteratorError) {
579
+ throw _iteratorError;
580
+ }
581
+ }
582
+ }
583
+
584
+ var _iteratorNormalCompletion2 = true;
585
+ var _didIteratorError2 = false;
586
+ var _iteratorError2 = undefined;
587
+
588
+ try {
589
+ for (var _iterator2 = this.times[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
590
+ var _time = _step2.value;
591
+ var duration = _time.end - _time.start;
592
+ out += "".concat(_time.name.padEnd(longest), " ").concat(duration, "ms\n");
593
+ }
594
+ } catch (err) {
595
+ _didIteratorError2 = true;
596
+ _iteratorError2 = err;
597
+ } finally {
598
+ try {
599
+ if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
600
+ _iterator2["return"]();
601
+ }
602
+ } finally {
603
+ if (_didIteratorError2) {
604
+ throw _iteratorError2;
605
+ }
606
+ }
607
+ }
608
+
609
+ return out;
610
+ }
611
+ }]);
612
+
613
+ return StatTimer;
614
+ }();
615
+
616
+ exports.StatTimer = StatTimer;
617
+
618
+ var DummyStatTimer =
619
+ /*#__PURE__*/
620
+ function () {
621
+ function DummyStatTimer() {
622
+ _classCallCheck(this, DummyStatTimer);
623
+
624
+ (0, _util.unreachable)('Cannot initialize DummyStatTimer.');
625
+ }
626
+
627
+ _createClass(DummyStatTimer, null, [{
628
+ key: "time",
629
+ value: function time(name) {}
630
+ }, {
631
+ key: "timeEnd",
632
+ value: function timeEnd(name) {}
633
+ }, {
634
+ key: "toString",
635
+ value: function toString() {
636
+ return '';
637
+ }
638
+ }]);
639
+
640
+ return DummyStatTimer;
641
+ }();
642
+
643
+ exports.DummyStatTimer = DummyStatTimer;
644
+
645
+ function isFetchSupported() {
646
+ return typeof fetch !== 'undefined' && typeof Response !== 'undefined' && 'body' in Response.prototype && typeof ReadableStream !== 'undefined';
647
+ }
648
+
649
+ function isValidFetchUrl(url, baseUrl) {
650
+ try {
651
+ var _ref8 = baseUrl ? new _util.URL(url, baseUrl) : new _util.URL(url),
652
+ protocol = _ref8.protocol;
653
+
654
+ return protocol === 'http:' || protocol === 'https:';
655
+ } catch (ex) {
656
+ return false;
657
+ }
658
+ }
659
+
660
+ function loadScript(src) {
661
+ return new Promise(function (resolve, reject) {
662
+ var script = document.createElement('script');
663
+ script.src = src;
664
+ script.onload = resolve;
665
+
666
+ script.onerror = function () {
667
+ reject(new Error("Cannot load script at: ".concat(script.src)));
668
+ };
669
+
670
+ (document.head || document.documentElement).appendChild(script);
671
+ });
672
+ }
673
+
674
+ function deprecated(details) {
675
+ console.log('Deprecated API usage: ' + details);
676
+ }
677
+
678
+ function releaseImageResources(img) {
679
+ (0, _util.assert)(img instanceof Image, 'Invalid `img` parameter.');
680
+ var url = img.src;
681
+
682
+ if (typeof url === 'string' && url.startsWith('blob:') && _util.URL.revokeObjectURL) {
683
+ _util.URL.revokeObjectURL(url);
684
+ }
685
+
686
+ img.removeAttribute('src');
687
+ }
688
+
689
+ var pdfDateStringRegex;
690
+
691
+ var PDFDateString =
692
+ /*#__PURE__*/
693
+ function () {
694
+ function PDFDateString() {
695
+ _classCallCheck(this, PDFDateString);
696
+ }
697
+
698
+ _createClass(PDFDateString, null, [{
699
+ key: "toDateObject",
700
+ value: function toDateObject(input) {
701
+ if (!input || !(0, _util.isString)(input)) {
702
+ return null;
703
+ }
704
+
705
+ if (!pdfDateStringRegex) {
706
+ pdfDateStringRegex = new RegExp('^D:' + '(\\d{4})' + '(\\d{2})?' + '(\\d{2})?' + '(\\d{2})?' + '(\\d{2})?' + '(\\d{2})?' + '([Z|+|-])?' + '(\\d{2})?' + '\'?' + '(\\d{2})?' + '\'?');
707
+ }
708
+
709
+ var matches = pdfDateStringRegex.exec(input);
710
+
711
+ if (!matches) {
712
+ return null;
713
+ }
714
+
715
+ var year = parseInt(matches[1], 10);
716
+ var month = parseInt(matches[2], 10);
717
+ month = month >= 1 && month <= 12 ? month - 1 : 0;
718
+ var day = parseInt(matches[3], 10);
719
+ day = day >= 1 && day <= 31 ? day : 1;
720
+ var hour = parseInt(matches[4], 10);
721
+ hour = hour >= 0 && hour <= 23 ? hour : 0;
722
+ var minute = parseInt(matches[5], 10);
723
+ minute = minute >= 0 && minute <= 59 ? minute : 0;
724
+ var second = parseInt(matches[6], 10);
725
+ second = second >= 0 && second <= 59 ? second : 0;
726
+ var universalTimeRelation = matches[7] || 'Z';
727
+ var offsetHour = parseInt(matches[8], 10);
728
+ offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;
729
+ var offsetMinute = parseInt(matches[9], 10) || 0;
730
+ offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;
731
+
732
+ if (universalTimeRelation === '-') {
733
+ hour += offsetHour;
734
+ minute += offsetMinute;
735
+ } else if (universalTimeRelation === '+') {
736
+ hour -= offsetHour;
737
+ minute -= offsetMinute;
738
+ }
739
+
740
+ return new Date(Date.UTC(year, month, day, hour, minute, second));
741
+ }
742
+ }]);
743
+
744
+ return PDFDateString;
745
+ }();
746
+
747
+ exports.PDFDateString = PDFDateString;