UNPKG

23.7 kBJavaScriptView Raw
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
24Object.defineProperty(exports, "__esModule", {
25 value: true
26});
27exports.addLinkAttributes = addLinkAttributes;
28exports.getFilenameFromUrl = getFilenameFromUrl;
29exports.isFetchSupported = isFetchSupported;
30exports.isValidFetchUrl = isValidFetchUrl;
31exports.loadScript = loadScript;
32exports.deprecated = deprecated;
33exports.releaseImageResources = releaseImageResources;
34exports.PDFDateString = exports.DummyStatTimer = exports.StatTimer = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.RenderingCancelledException = exports.PageViewport = void 0;
35
36var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
37
38var _util = require("../shared/util");
39
40function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
41
42function 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
44function _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
46function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
47
48function _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
50function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
51
52var DEFAULT_LINK_REL = 'noopener noreferrer nofollow';
53exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;
54var SVG_NS = 'http://www.w3.org/2000/svg';
55
56var DOMCanvasFactory =
57/*#__PURE__*/
58function () {
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
110exports.DOMCanvasFactory = DOMCanvasFactory;
111
112var DOMCMapReaderFactory =
113/*#__PURE__*/
114function () {
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
299exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
300
301var DOMSVGFactory =
302/*#__PURE__*/
303function () {
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
331exports.DOMSVGFactory = DOMSVGFactory;
332
333var PageViewport =
334/*#__PURE__*/
335function () {
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
459exports.PageViewport = PageViewport;
460
461var 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
473exports.RenderingCancelledException = RenderingCancelledException;
474var LinkTarget = {
475 NONE: 0,
476 SELF: 1,
477 BLANK: 2,
478 PARENT: 3,
479 TOP: 4
480};
481exports.LinkTarget = LinkTarget;
482var LinkTargetStringMap = ['', '_self', '_blank', '_parent', '_top'];
483
484function 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
500function 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
507var StatTimer =
508/*#__PURE__*/
509function () {
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
616exports.StatTimer = StatTimer;
617
618var DummyStatTimer =
619/*#__PURE__*/
620function () {
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
643exports.DummyStatTimer = DummyStatTimer;
644
645function isFetchSupported() {
646 return typeof fetch !== 'undefined' && typeof Response !== 'undefined' && 'body' in Response.prototype && typeof ReadableStream !== 'undefined';
647}
648
649function 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
660function 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
674function deprecated(details) {
675 console.log('Deprecated API usage: ' + details);
676}
677
678function 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
689var pdfDateStringRegex;
690
691var PDFDateString =
692/*#__PURE__*/
693function () {
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
747exports.PDFDateString = PDFDateString;
\No newline at end of file