1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
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 |
|
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 |
|
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 |
|
141 | function () {
|
142 | var _ref3 = _asyncToGenerator(
|
143 |
|
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 |
|
180 | function () {
|
181 | var _ref4 = _asyncToGenerator(
|
182 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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; |
\ | No newline at end of file |