PluginProbe
E2Pdf – Export Pdf Tool for WordPress / 1.07.11
E2Pdf – Export Pdf Tool for WordPress v1.07.11
1.32.53 1.32.51 1.32.49 1.32.48 1.32.43 1.32.40 1.32.34 1.32.32 1.32.31 1.32.26 1.32.22 1.32.23 1.32.18 1.32.17 1.32.15 trunk 1.00.00 1.00.13 1.01.01 1.02.02 1.03.07 1.04.07 1.05.03 1.06.02 1.07.11 All 74 releases
e2pdf / assets / pdf.js / web / viewer.js

viewer.js in E2Pdf – Export Pdf Tool for WordPress 1.07.11, at assets/pdf.js/web/viewer.js

13,384 lines 447.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * @licstart The following is the entire license notice for the
3 * Javascript code in this page
4 *
5 * Copyright 2018 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
23 /******/ (function(modules) { // webpackBootstrap
24 /******/ // The module cache
25 /******/ var installedModules = {};
26 /******/
27 /******/ // The require function
28 /******/ function __webpack_require__(moduleId) {
29 /******/
30 /******/ // Check if module is in cache
31 /******/ if(installedModules[moduleId]) {
32 /******/ return installedModules[moduleId].exports;
33 /******/ }
34 /******/ // Create a new module (and put it into the cache)
35 /******/ var module = installedModules[moduleId] = {
36 /******/ i: moduleId,
37 /******/ l: false,
38 /******/ exports: {}
39 /******/ };
40 /******/
41 /******/ // Execute the module function
42 /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
43 /******/
44 /******/ // Flag the module as loaded
45 /******/ module.l = true;
46 /******/
47 /******/ // Return the exports of the module
48 /******/ return module.exports;
49 /******/ }
50 /******/
51 /******/
52 /******/ // expose the modules object (__webpack_modules__)
53 /******/ __webpack_require__.m = modules;
54 /******/
55 /******/ // expose the module cache
56 /******/ __webpack_require__.c = installedModules;
57 /******/
58 /******/ // define getter function for harmony exports
59 /******/ __webpack_require__.d = function(exports, name, getter) {
60 /******/ if(!__webpack_require__.o(exports, name)) {
61 /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
62 /******/ }
63 /******/ };
64 /******/
65 /******/ // define __esModule on exports
66 /******/ __webpack_require__.r = function(exports) {
67 /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
68 /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
69 /******/ }
70 /******/ Object.defineProperty(exports, '__esModule', { value: true });
71 /******/ };
72 /******/
73 /******/ // create a fake namespace object
74 /******/ // mode & 1: value is a module id, require it
75 /******/ // mode & 2: merge all properties of value into the ns
76 /******/ // mode & 4: return value when already ns object
77 /******/ // mode & 8|1: behave like require
78 /******/ __webpack_require__.t = function(value, mode) {
79 /******/ if(mode & 1) value = __webpack_require__(value);
80 /******/ if(mode & 8) return value;
81 /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
82 /******/ var ns = Object.create(null);
83 /******/ __webpack_require__.r(ns);
84 /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
85 /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
86 /******/ return ns;
87 /******/ };
88 /******/
89 /******/ // getDefaultExport function for compatibility with non-harmony modules
90 /******/ __webpack_require__.n = function(module) {
91 /******/ var getter = module && module.__esModule ?
92 /******/ function getDefault() { return module['default']; } :
93 /******/ function getModuleExports() { return module; };
94 /******/ __webpack_require__.d(getter, 'a', getter);
95 /******/ return getter;
96 /******/ };
97 /******/
98 /******/ // Object.prototype.hasOwnProperty.call
99 /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
100 /******/
101 /******/ // __webpack_public_path__
102 /******/ __webpack_require__.p = "";
103 /******/
104 /******/
105 /******/ // Load entry module and return exports
106 /******/ return __webpack_require__(__webpack_require__.s = 0);
107 /******/ })
108 /************************************************************************/
109 /******/ ([
110 /* 0 */
111 /***/ (function(module, exports, __webpack_require__) {
112
113 "use strict";
114
115
116 ;
117 var pdfjsWebApp = void 0,
118 pdfjsWebAppOptions = void 0;
119 {
120 pdfjsWebApp = __webpack_require__(1);
121 pdfjsWebAppOptions = __webpack_require__(12);
122 }
123 ;
124 {
125 __webpack_require__(38);
126 }
127 ;
128 {
129 __webpack_require__(43);
130 }
131 function getViewerConfiguration() {
132 return {
133 appContainer: document.body,
134 mainContainer: document.getElementById('viewerContainer'),
135 viewerContainer: document.getElementById('viewer'),
136 eventBus: null,
137 toolbar: {
138 container: document.getElementById('toolbarViewer'),
139 numPages: document.getElementById('numPages'),
140 pageNumber: document.getElementById('pageNumber'),
141 scaleSelectContainer: document.getElementById('scaleSelectContainer'),
142 scaleSelect: document.getElementById('scaleSelect'),
143 customScaleOption: document.getElementById('customScaleOption'),
144 previous: document.getElementById('previous'),
145 next: document.getElementById('next'),
146 zoomIn: document.getElementById('zoomIn'),
147 zoomOut: document.getElementById('zoomOut'),
148 viewFind: document.getElementById('viewFind'),
149 openFile: document.getElementById('openFile'),
150 print: document.getElementById('print'),
151 presentationModeButton: document.getElementById('presentationMode'),
152 download: document.getElementById('download'),
153 viewBookmark: document.getElementById('viewBookmark')
154 },
155 secondaryToolbar: {
156 toolbar: document.getElementById('secondaryToolbar'),
157 toggleButton: document.getElementById('secondaryToolbarToggle'),
158 toolbarButtonContainer: document.getElementById('secondaryToolbarButtonContainer'),
159 presentationModeButton: document.getElementById('secondaryPresentationMode'),
160 openFileButton: document.getElementById('secondaryOpenFile'),
161 printButton: document.getElementById('secondaryPrint'),
162 downloadButton: document.getElementById('secondaryDownload'),
163 viewBookmarkButton: document.getElementById('secondaryViewBookmark'),
164 firstPageButton: document.getElementById('firstPage'),
165 lastPageButton: document.getElementById('lastPage'),
166 pageRotateCwButton: document.getElementById('pageRotateCw'),
167 pageRotateCcwButton: document.getElementById('pageRotateCcw'),
168 cursorSelectToolButton: document.getElementById('cursorSelectTool'),
169 cursorHandToolButton: document.getElementById('cursorHandTool'),
170 scrollVerticalButton: document.getElementById('scrollVertical'),
171 scrollHorizontalButton: document.getElementById('scrollHorizontal'),
172 scrollWrappedButton: document.getElementById('scrollWrapped'),
173 spreadNoneButton: document.getElementById('spreadNone'),
174 spreadOddButton: document.getElementById('spreadOdd'),
175 spreadEvenButton: document.getElementById('spreadEven'),
176 documentPropertiesButton: document.getElementById('documentProperties')
177 },
178 fullscreen: {
179 contextFirstPage: document.getElementById('contextFirstPage'),
180 contextLastPage: document.getElementById('contextLastPage'),
181 contextPageRotateCw: document.getElementById('contextPageRotateCw'),
182 contextPageRotateCcw: document.getElementById('contextPageRotateCcw')
183 },
184 sidebar: {
185 outerContainer: document.getElementById('outerContainer'),
186 viewerContainer: document.getElementById('viewerContainer'),
187 toggleButton: document.getElementById('sidebarToggle'),
188 thumbnailButton: document.getElementById('viewThumbnail'),
189 outlineButton: document.getElementById('viewOutline'),
190 attachmentsButton: document.getElementById('viewAttachments'),
191 thumbnailView: document.getElementById('thumbnailView'),
192 outlineView: document.getElementById('outlineView'),
193 attachmentsView: document.getElementById('attachmentsView')
194 },
195 sidebarResizer: {
196 outerContainer: document.getElementById('outerContainer'),
197 resizer: document.getElementById('sidebarResizer')
198 },
199 findBar: {
200 bar: document.getElementById('findbar'),
201 toggleButton: document.getElementById('viewFind'),
202 findField: document.getElementById('findInput'),
203 highlightAllCheckbox: document.getElementById('findHighlightAll'),
204 caseSensitiveCheckbox: document.getElementById('findMatchCase'),
205 entireWordCheckbox: document.getElementById('findEntireWord'),
206 findMsg: document.getElementById('findMsg'),
207 findResultsCount: document.getElementById('findResultsCount'),
208 findPreviousButton: document.getElementById('findPrevious'),
209 findNextButton: document.getElementById('findNext')
210 },
211 passwordOverlay: {
212 overlayName: 'passwordOverlay',
213 container: document.getElementById('passwordOverlay'),
214 label: document.getElementById('passwordText'),
215 input: document.getElementById('password'),
216 submitButton: document.getElementById('passwordSubmit'),
217 cancelButton: document.getElementById('passwordCancel')
218 },
219 documentProperties: {
220 overlayName: 'documentPropertiesOverlay',
221 container: document.getElementById('documentPropertiesOverlay'),
222 closeButton: document.getElementById('documentPropertiesClose'),
223 fields: {
224 'fileName': document.getElementById('fileNameField'),
225 'fileSize': document.getElementById('fileSizeField'),
226 'title': document.getElementById('titleField'),
227 'author': document.getElementById('authorField'),
228 'subject': document.getElementById('subjectField'),
229 'keywords': document.getElementById('keywordsField'),
230 'creationDate': document.getElementById('creationDateField'),
231 'modificationDate': document.getElementById('modificationDateField'),
232 'creator': document.getElementById('creatorField'),
233 'producer': document.getElementById('producerField'),
234 'version': document.getElementById('versionField'),
235 'pageCount': document.getElementById('pageCountField'),
236 'pageSize': document.getElementById('pageSizeField'),
237 'linearized': document.getElementById('linearizedField')
238 }
239 },
240 errorWrapper: {
241 container: document.getElementById('errorWrapper'),
242 errorMessage: document.getElementById('errorMessage'),
243 closeButton: document.getElementById('errorClose'),
244 errorMoreInfo: document.getElementById('errorMoreInfo'),
245 moreInfoButton: document.getElementById('errorShowMore'),
246 lessInfoButton: document.getElementById('errorShowLess')
247 },
248 printContainer: document.getElementById('printContainer'),
249 openFileInputName: 'fileInput',
250 debuggerScriptPath: './debugger.js'
251 };
252 }
253 function webViewerLoad() {
254 var config = getViewerConfiguration();
255 window.PDFViewerApplication = pdfjsWebApp.PDFViewerApplication;
256 window.PDFViewerApplicationOptions = pdfjsWebAppOptions.AppOptions;
257 pdfjsWebApp.PDFViewerApplication.run(config);
258 }
259 if (document.readyState === 'interactive' || document.readyState === 'complete') {
260 webViewerLoad();
261 } else {
262 document.addEventListener('DOMContentLoaded', webViewerLoad, true);
263 }
264
265 /***/ }),
266 /* 1 */
267 /***/ (function(module, exports, __webpack_require__) {
268
269 "use strict";
270
271
272 Object.defineProperty(exports, "__esModule", {
273 value: true
274 });
275 exports.PDFPrintServiceFactory = exports.DefaultExternalServices = exports.PDFViewerApplication = undefined;
276
277 var _regenerator = __webpack_require__(2);
278
279 var _regenerator2 = _interopRequireDefault(_regenerator);
280
281 var _slicedToArray = function () { function sliceIterator(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"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
282
283 var _ui_utils = __webpack_require__(6);
284
285 var _pdfjsLib = __webpack_require__(7);
286
287 var _pdf_cursor_tools = __webpack_require__(8);
288
289 var _pdf_rendering_queue = __webpack_require__(10);
290
291 var _pdf_sidebar = __webpack_require__(11);
292
293 var _app_options = __webpack_require__(12);
294
295 var _dom_events = __webpack_require__(14);
296
297 var _overlay_manager = __webpack_require__(15);
298
299 var _password_prompt = __webpack_require__(16);
300
301 var _pdf_attachment_viewer = __webpack_require__(17);
302
303 var _pdf_document_properties = __webpack_require__(18);
304
305 var _pdf_find_bar = __webpack_require__(19);
306
307 var _pdf_find_controller = __webpack_require__(20);
308
309 var _pdf_history = __webpack_require__(22);
310
311 var _pdf_link_service = __webpack_require__(23);
312
313 var _pdf_outline_viewer = __webpack_require__(24);
314
315 var _pdf_presentation_mode = __webpack_require__(25);
316
317 var _pdf_sidebar_resizer = __webpack_require__(26);
318
319 var _pdf_thumbnail_viewer = __webpack_require__(27);
320
321 var _pdf_viewer = __webpack_require__(29);
322
323 var _secondary_toolbar = __webpack_require__(34);
324
325 var _toolbar = __webpack_require__(36);
326
327 var _view_history = __webpack_require__(37);
328
329 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
330
331 function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
332
333 var DEFAULT_SCALE_DELTA = 1.1;
334 var DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000;
335 var FORCE_PAGES_LOADED_TIMEOUT = 10000;
336 var DefaultExternalServices = {
337 updateFindControlState: function updateFindControlState(data) {},
338 updateFindMatchesCount: function updateFindMatchesCount(data) {},
339 initPassiveLoading: function initPassiveLoading(callbacks) {},
340 fallback: function fallback(data, callback) {},
341 reportTelemetry: function reportTelemetry(data) {},
342 createDownloadManager: function createDownloadManager(options) {
343 throw new Error('Not implemented: createDownloadManager');
344 },
345 createPreferences: function createPreferences() {
346 throw new Error('Not implemented: createPreferences');
347 },
348 createL10n: function createL10n(options) {
349 throw new Error('Not implemented: createL10n');
350 },
351
352 supportsIntegratedFind: false,
353 supportsDocumentFonts: true,
354 supportsDocumentColors: true,
355 supportedMouseWheelZoomModifierKeys: {
356 ctrlKey: true,
357 metaKey: true
358 }
359 };
360 var PDFViewerApplication = {
361 initialBookmark: document.location.hash.substring(1),
362 initialized: false,
363 fellback: false,
364 appConfig: null,
365 pdfDocument: null,
366 pdfLoadingTask: null,
367 printService: null,
368 pdfViewer: null,
369 pdfThumbnailViewer: null,
370 pdfRenderingQueue: null,
371 pdfPresentationMode: null,
372 pdfDocumentProperties: null,
373 pdfLinkService: null,
374 pdfHistory: null,
375 pdfSidebar: null,
376 pdfSidebarResizer: null,
377 pdfOutlineViewer: null,
378 pdfAttachmentViewer: null,
379 pdfCursorTools: null,
380 store: null,
381 downloadManager: null,
382 overlayManager: null,
383 preferences: null,
384 toolbar: null,
385 secondaryToolbar: null,
386 eventBus: null,
387 l10n: null,
388 isInitialViewSet: false,
389 downloadComplete: false,
390 isViewerEmbedded: window.parent !== window,
391 url: '',
392 baseUrl: '',
393 externalServices: DefaultExternalServices,
394 _boundEvents: {},
395 contentDispositionFilename: null,
396 initialize: function () {
397 var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(appConfig) {
398 var _this = this;
399
400 var appContainer;
401 return _regenerator2.default.wrap(function _callee$(_context) {
402 while (1) {
403 switch (_context.prev = _context.next) {
404 case 0:
405 this.preferences = this.externalServices.createPreferences();
406 this.appConfig = appConfig;
407 _context.next = 4;
408 return this._readPreferences();
409
410 case 4:
411 _context.next = 6;
412 return this._parseHashParameters();
413
414 case 6:
415 _context.next = 8;
416 return this._initializeL10n();
417
418 case 8:
419 if (this.isViewerEmbedded && _app_options.AppOptions.get('externalLinkTarget') === _pdfjsLib.LinkTarget.NONE) {
420 _app_options.AppOptions.set('externalLinkTarget', _pdfjsLib.LinkTarget.TOP);
421 }
422 _context.next = 11;
423 return this._initializeViewerComponents();
424
425 case 11:
426 this.bindEvents();
427 this.bindWindowEvents();
428 appContainer = appConfig.appContainer || document.documentElement;
429
430 this.l10n.translate(appContainer).then(function () {
431 _this.eventBus.dispatch('localized', { source: _this });
432 });
433 this.initialized = true;
434
435 case 16:
436 case 'end':
437 return _context.stop();
438 }
439 }
440 }, _callee, this);
441 }));
442
443 function initialize(_x) {
444 return _ref.apply(this, arguments);
445 }
446
447 return initialize;
448 }(),
449 _readPreferences: function () {
450 var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {
451 var OVERRIDES, prefs, name;
452 return _regenerator2.default.wrap(function _callee2$(_context2) {
453 while (1) {
454 switch (_context2.prev = _context2.next) {
455 case 0:
456 OVERRIDES = {
457 disableFontFace: true,
458 disableRange: true,
459 disableStream: true,
460 textLayerMode: _ui_utils.TextLayerMode.DISABLE
461 };
462 _context2.prev = 1;
463 _context2.next = 4;
464 return this.preferences.getAll();
465
466 case 4:
467 prefs = _context2.sent;
468 _context2.t0 = _regenerator2.default.keys(prefs);
469
470 case 6:
471 if ((_context2.t1 = _context2.t0()).done) {
472 _context2.next = 13;
473 break;
474 }
475
476 name = _context2.t1.value;
477
478 if (!(name in OVERRIDES && _app_options.AppOptions.get(name) === OVERRIDES[name])) {
479 _context2.next = 10;
480 break;
481 }
482
483 return _context2.abrupt('continue', 6);
484
485 case 10:
486 _app_options.AppOptions.set(name, prefs[name]);
487 _context2.next = 6;
488 break;
489
490 case 13:
491 _context2.next = 17;
492 break;
493
494 case 15:
495 _context2.prev = 15;
496 _context2.t2 = _context2['catch'](1);
497
498 case 17:
499 case 'end':
500 return _context2.stop();
501 }
502 }
503 }, _callee2, this, [[1, 15]]);
504 }));
505
506 function _readPreferences() {
507 return _ref2.apply(this, arguments);
508 }
509
510 return _readPreferences;
511 }(),
512 _parseHashParameters: function () {
513 var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {
514 var waitOn, hash, hashParams, viewer, enabled;
515 return _regenerator2.default.wrap(function _callee3$(_context3) {
516 while (1) {
517 switch (_context3.prev = _context3.next) {
518 case 0:
519 if (_app_options.AppOptions.get('pdfBugEnabled')) {
520 _context3.next = 2;
521 break;
522 }
523
524 return _context3.abrupt('return');
525
526 case 2:
527 waitOn = [];
528 hash = document.location.hash.substring(1);
529 hashParams = (0, _ui_utils.parseQueryString)(hash);
530
531 if ('disableworker' in hashParams && hashParams['disableworker'] === 'true') {
532 waitOn.push(loadFakeWorker());
533 }
534 if ('disablerange' in hashParams) {
535 _app_options.AppOptions.set('disableRange', hashParams['disablerange'] === 'true');
536 }
537 if ('disablestream' in hashParams) {
538 _app_options.AppOptions.set('disableStream', hashParams['disablestream'] === 'true');
539 }
540 if ('disableautofetch' in hashParams) {
541 _app_options.AppOptions.set('disableAutoFetch', hashParams['disableautofetch'] === 'true');
542 }
543 if ('disablefontface' in hashParams) {
544 _app_options.AppOptions.set('disableFontFace', hashParams['disablefontface'] === 'true');
545 }
546 if ('disablehistory' in hashParams) {
547 _app_options.AppOptions.set('disableHistory', hashParams['disablehistory'] === 'true');
548 }
549 if ('webgl' in hashParams) {
550 _app_options.AppOptions.set('enableWebGL', hashParams['webgl'] === 'true');
551 }
552 if ('useonlycsszoom' in hashParams) {
553 _app_options.AppOptions.set('useOnlyCssZoom', hashParams['useonlycsszoom'] === 'true');
554 }
555 if ('verbosity' in hashParams) {
556 _app_options.AppOptions.set('verbosity', hashParams['verbosity'] | 0);
557 }
558
559 if (!('textlayer' in hashParams)) {
560 _context3.next = 23;
561 break;
562 }
563
564 _context3.t0 = hashParams['textlayer'];
565 _context3.next = _context3.t0 === 'off' ? 18 : _context3.t0 === 'visible' ? 20 : _context3.t0 === 'shadow' ? 20 : _context3.t0 === 'hover' ? 20 : 23;
566 break;
567
568 case 18:
569 _app_options.AppOptions.set('textLayerMode', _ui_utils.TextLayerMode.DISABLE);
570 return _context3.abrupt('break', 23);
571
572 case 20:
573 viewer = this.appConfig.viewerContainer;
574
575 viewer.classList.add('textLayer-' + hashParams['textlayer']);
576 return _context3.abrupt('break', 23);
577
578 case 23:
579 if ('pdfbug' in hashParams) {
580 _app_options.AppOptions.set('pdfBug', true);
581 enabled = hashParams['pdfbug'].split(',');
582
583 waitOn.push(loadAndEnablePDFBug(enabled));
584 }
585 if ('locale' in hashParams) {
586 _app_options.AppOptions.set('locale', hashParams['locale']);
587 }
588 return _context3.abrupt('return', Promise.all(waitOn).catch(function (reason) {
589 console.error('_parseHashParameters: "' + reason.message + '".');
590 }));
591
592 case 26:
593 case 'end':
594 return _context3.stop();
595 }
596 }
597 }, _callee3, this);
598 }));
599
600 function _parseHashParameters() {
601 return _ref3.apply(this, arguments);
602 }
603
604 return _parseHashParameters;
605 }(),
606 _initializeL10n: function () {
607 var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {
608 var dir;
609 return _regenerator2.default.wrap(function _callee4$(_context4) {
610 while (1) {
611 switch (_context4.prev = _context4.next) {
612 case 0:
613 this.l10n = this.externalServices.createL10n({ locale: _app_options.AppOptions.get('locale') });
614 _context4.next = 3;
615 return this.l10n.getDirection();
616
617 case 3:
618 dir = _context4.sent;
619
620 document.getElementsByTagName('html')[0].dir = dir;
621
622 case 5:
623 case 'end':
624 return _context4.stop();
625 }
626 }
627 }, _callee4, this);
628 }));
629
630 function _initializeL10n() {
631 return _ref4.apply(this, arguments);
632 }
633
634 return _initializeL10n;
635 }(),
636 _initializeViewerComponents: function () {
637 var _ref5 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {
638 var appConfig, dispatchToDOM, eventBus, pdfRenderingQueue, pdfLinkService, downloadManager, findController, container, viewer, thumbnailContainer, sidebarConfig;
639 return _regenerator2.default.wrap(function _callee5$(_context5) {
640 while (1) {
641 switch (_context5.prev = _context5.next) {
642 case 0:
643 appConfig = this.appConfig;
644
645 this.overlayManager = new _overlay_manager.OverlayManager();
646 dispatchToDOM = _app_options.AppOptions.get('eventBusDispatchToDOM');
647 eventBus = appConfig.eventBus || (0, _dom_events.getGlobalEventBus)(dispatchToDOM);
648
649 this.eventBus = eventBus;
650 pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue();
651
652 pdfRenderingQueue.onIdle = this.cleanup.bind(this);
653 this.pdfRenderingQueue = pdfRenderingQueue;
654 pdfLinkService = new _pdf_link_service.PDFLinkService({
655 eventBus: eventBus,
656 externalLinkTarget: _app_options.AppOptions.get('externalLinkTarget'),
657 externalLinkRel: _app_options.AppOptions.get('externalLinkRel')
658 });
659
660 this.pdfLinkService = pdfLinkService;
661 downloadManager = this.externalServices.createDownloadManager({ disableCreateObjectURL: _app_options.AppOptions.get('disableCreateObjectURL') });
662
663 this.downloadManager = downloadManager;
664 findController = new _pdf_find_controller.PDFFindController({
665 linkService: pdfLinkService,
666 eventBus: eventBus
667 });
668
669 this.findController = findController;
670 container = appConfig.mainContainer;
671 viewer = appConfig.viewerContainer;
672
673 this.pdfViewer = new _pdf_viewer.PDFViewer({
674 container: container,
675 viewer: viewer,
676 eventBus: eventBus,
677 renderingQueue: pdfRenderingQueue,
678 linkService: pdfLinkService,
679 downloadManager: downloadManager,
680 findController: findController,
681 renderer: _app_options.AppOptions.get('renderer'),
682 enableWebGL: _app_options.AppOptions.get('enableWebGL'),
683 l10n: this.l10n,
684 textLayerMode: _app_options.AppOptions.get('textLayerMode'),
685 imageResourcesPath: _app_options.AppOptions.get('imageResourcesPath'),
686 renderInteractiveForms: _app_options.AppOptions.get('renderInteractiveForms'),
687 enablePrintAutoRotate: _app_options.AppOptions.get('enablePrintAutoRotate'),
688 useOnlyCssZoom: _app_options.AppOptions.get('useOnlyCssZoom'),
689 maxCanvasPixels: _app_options.AppOptions.get('maxCanvasPixels')
690 });
691 pdfRenderingQueue.setViewer(this.pdfViewer);
692 pdfLinkService.setViewer(this.pdfViewer);
693 thumbnailContainer = appConfig.sidebar.thumbnailView;
694
695 this.pdfThumbnailViewer = new _pdf_thumbnail_viewer.PDFThumbnailViewer({
696 container: thumbnailContainer,
697 renderingQueue: pdfRenderingQueue,
698 linkService: pdfLinkService,
699 l10n: this.l10n
700 });
701 pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);
702 this.pdfHistory = new _pdf_history.PDFHistory({
703 linkService: pdfLinkService,
704 eventBus: eventBus
705 });
706 pdfLinkService.setHistory(this.pdfHistory);
707 this.findBar = new _pdf_find_bar.PDFFindBar(appConfig.findBar, eventBus, this.l10n);
708 this.pdfDocumentProperties = new _pdf_document_properties.PDFDocumentProperties(appConfig.documentProperties, this.overlayManager, eventBus, this.l10n);
709 this.pdfCursorTools = new _pdf_cursor_tools.PDFCursorTools({
710 container: container,
711 eventBus: eventBus,
712 cursorToolOnLoad: _app_options.AppOptions.get('cursorToolOnLoad')
713 });
714 this.toolbar = new _toolbar.Toolbar(appConfig.toolbar, eventBus, this.l10n);
715 this.secondaryToolbar = new _secondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, container, eventBus);
716 if (this.supportsFullscreen) {
717 this.pdfPresentationMode = new _pdf_presentation_mode.PDFPresentationMode({
718 container: container,
719 viewer: viewer,
720 pdfViewer: this.pdfViewer,
721 eventBus: eventBus,
722 contextMenuItems: appConfig.fullscreen
723 });
724 }
725 this.passwordPrompt = new _password_prompt.PasswordPrompt(appConfig.passwordOverlay, this.overlayManager, this.l10n);
726 this.pdfOutlineViewer = new _pdf_outline_viewer.PDFOutlineViewer({
727 container: appConfig.sidebar.outlineView,
728 eventBus: eventBus,
729 linkService: pdfLinkService
730 });
731 this.pdfAttachmentViewer = new _pdf_attachment_viewer.PDFAttachmentViewer({
732 container: appConfig.sidebar.attachmentsView,
733 eventBus: eventBus,
734 downloadManager: downloadManager
735 });
736 sidebarConfig = Object.create(appConfig.sidebar);
737
738 sidebarConfig.pdfViewer = this.pdfViewer;
739 sidebarConfig.pdfThumbnailViewer = this.pdfThumbnailViewer;
740 this.pdfSidebar = new _pdf_sidebar.PDFSidebar(sidebarConfig, eventBus, this.l10n);
741 this.pdfSidebar.onToggled = this.forceRendering.bind(this);
742 this.pdfSidebarResizer = new _pdf_sidebar_resizer.PDFSidebarResizer(appConfig.sidebarResizer, eventBus, this.l10n);
743
744 case 39:
745 case 'end':
746 return _context5.stop();
747 }
748 }
749 }, _callee5, this);
750 }));
751
752 function _initializeViewerComponents() {
753 return _ref5.apply(this, arguments);
754 }
755
756 return _initializeViewerComponents;
757 }(),
758 run: function run(config) {
759 this.initialize(config).then(webViewerInitialized);
760 },
761 zoomIn: function zoomIn(ticks) {
762 var newScale = this.pdfViewer.currentScale;
763 do {
764 newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2);
765 newScale = Math.ceil(newScale * 10) / 10;
766 newScale = Math.min(_ui_utils.MAX_SCALE, newScale);
767 } while (--ticks > 0 && newScale < _ui_utils.MAX_SCALE);
768 this.pdfViewer.currentScaleValue = newScale;
769 },
770 zoomOut: function zoomOut(ticks) {
771 var newScale = this.pdfViewer.currentScale;
772 do {
773 newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2);
774 newScale = Math.floor(newScale * 10) / 10;
775 newScale = Math.max(_ui_utils.MIN_SCALE, newScale);
776 } while (--ticks > 0 && newScale > _ui_utils.MIN_SCALE);
777 this.pdfViewer.currentScaleValue = newScale;
778 },
779
780 get pagesCount() {
781 return this.pdfDocument ? this.pdfDocument.numPages : 0;
782 },
783 set page(val) {
784 this.pdfViewer.currentPageNumber = val;
785 },
786 get page() {
787 return this.pdfViewer.currentPageNumber;
788 },
789 get printing() {
790 return !!this.printService;
791 },
792 get supportsPrinting() {
793 return PDFPrintServiceFactory.instance.supportsPrinting;
794 },
795 get supportsFullscreen() {
796 var support = void 0;
797 var doc = document.documentElement;
798 support = !!(doc.requestFullscreen || doc.mozRequestFullScreen || doc.webkitRequestFullScreen || doc.msRequestFullscreen);
799 if (document.fullscreenEnabled === false || document.mozFullScreenEnabled === false || document.webkitFullscreenEnabled === false || document.msFullscreenEnabled === false) {
800 support = false;
801 }
802 return (0, _pdfjsLib.shadow)(this, 'supportsFullscreen', support);
803 },
804 get supportsIntegratedFind() {
805 return this.externalServices.supportsIntegratedFind;
806 },
807 get supportsDocumentFonts() {
808 return this.externalServices.supportsDocumentFonts;
809 },
810 get supportsDocumentColors() {
811 return this.externalServices.supportsDocumentColors;
812 },
813 get loadingBar() {
814 var bar = new _ui_utils.ProgressBar('#loadingBar');
815 return (0, _pdfjsLib.shadow)(this, 'loadingBar', bar);
816 },
817 get supportedMouseWheelZoomModifierKeys() {
818 return this.externalServices.supportedMouseWheelZoomModifierKeys;
819 },
820 initPassiveLoading: function initPassiveLoading() {
821 throw new Error('Not implemented: initPassiveLoading');
822 },
823 setTitleUsingUrl: function setTitleUsingUrl() {
824 var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
825
826 this.url = url;
827 this.baseUrl = url.split('#')[0];
828 var title = (0, _ui_utils.getPDFFileNameFromURL)(url, '');
829 if (!title) {
830 try {
831 title = decodeURIComponent((0, _pdfjsLib.getFilenameFromUrl)(url)) || url;
832 } catch (ex) {
833 title = url;
834 }
835 }
836 this.setTitle(title);
837 },
838 setTitle: function setTitle(title) {
839 if (this.isViewerEmbedded) {
840 return;
841 }
842 document.title = title;
843 },
844 close: function () {
845 var _ref6 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee6() {
846 var errorWrapper, promise;
847 return _regenerator2.default.wrap(function _callee6$(_context6) {
848 while (1) {
849 switch (_context6.prev = _context6.next) {
850 case 0:
851 errorWrapper = this.appConfig.errorWrapper.container;
852
853 errorWrapper.setAttribute('hidden', 'true');
854
855 if (this.pdfLoadingTask) {
856 _context6.next = 4;
857 break;
858 }
859
860 return _context6.abrupt('return');
861
862 case 4:
863 promise = this.pdfLoadingTask.destroy();
864
865 this.pdfLoadingTask = null;
866 if (this.pdfDocument) {
867 this.pdfDocument = null;
868 this.pdfThumbnailViewer.setDocument(null);
869 this.pdfViewer.setDocument(null);
870 this.pdfLinkService.setDocument(null);
871 this.pdfDocumentProperties.setDocument(null);
872 }
873 this.store = null;
874 this.isInitialViewSet = false;
875 this.downloadComplete = false;
876 this.url = '';
877 this.baseUrl = '';
878 this.contentDispositionFilename = null;
879 this.pdfSidebar.reset();
880 this.pdfOutlineViewer.reset();
881 this.pdfAttachmentViewer.reset();
882 this.findBar.reset();
883 this.toolbar.reset();
884 this.secondaryToolbar.reset();
885 if (typeof PDFBug !== 'undefined') {
886 PDFBug.cleanup();
887 }
888 return _context6.abrupt('return', promise);
889
890 case 21:
891 case 'end':
892 return _context6.stop();
893 }
894 }
895 }, _callee6, this);
896 }));
897
898 function close() {
899 return _ref6.apply(this, arguments);
900 }
901
902 return close;
903 }(),
904 open: function () {
905 var _ref7 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee7(file, args) {
906 var _this2 = this;
907
908 var workerParameters, key, parameters, apiParameters, _key, prop, loadingTask;
909
910 return _regenerator2.default.wrap(function _callee7$(_context7) {
911 while (1) {
912 switch (_context7.prev = _context7.next) {
913 case 0:
914 if (!this.pdfLoadingTask) {
915 _context7.next = 3;
916 break;
917 }
918
919 _context7.next = 3;
920 return this.close();
921
922 case 3:
923 workerParameters = _app_options.AppOptions.getAll('worker');
924
925 for (key in workerParameters) {
926 _pdfjsLib.GlobalWorkerOptions[key] = workerParameters[key];
927 }
928 parameters = Object.create(null);
929
930 if (typeof file === 'string') {
931 this.setTitleUsingUrl(file);
932 parameters.url = file;
933 } else if (file && 'byteLength' in file) {
934 parameters.data = file;
935 } else if (file.url && file.originalUrl) {
936 this.setTitleUsingUrl(file.originalUrl);
937 parameters.url = file.url;
938 }
939 apiParameters = _app_options.AppOptions.getAll('api');
940
941 for (_key in apiParameters) {
942 parameters[_key] = apiParameters[_key];
943 }
944 if (args) {
945 for (prop in args) {
946 if (prop === 'length') {
947 this.pdfDocumentProperties.setFileSize(args[prop]);
948 }
949 parameters[prop] = args[prop];
950 }
951 }
952 loadingTask = (0, _pdfjsLib.getDocument)(parameters);
953
954 this.pdfLoadingTask = loadingTask;
955 loadingTask.onPassword = function (updateCallback, reason) {
956 _this2.passwordPrompt.setUpdateCallback(updateCallback, reason);
957 _this2.passwordPrompt.open();
958 };
959 loadingTask.onProgress = function (_ref8) {
960 var loaded = _ref8.loaded,
961 total = _ref8.total;
962
963 _this2.progress(loaded / total);
964 };
965 loadingTask.onUnsupportedFeature = this.fallback.bind(this);
966 return _context7.abrupt('return', loadingTask.promise.then(function (pdfDocument) {
967 _this2.load(pdfDocument);
968 }, function (exception) {
969 if (loadingTask !== _this2.pdfLoadingTask) {
970 return;
971 }
972 var message = exception && exception.message;
973 var loadingErrorMessage = void 0;
974 if (exception instanceof _pdfjsLib.InvalidPDFException) {
975 loadingErrorMessage = _this2.l10n.get('invalid_file_error', null, 'Invalid or corrupted PDF file.');
976 } else if (exception instanceof _pdfjsLib.MissingPDFException) {
977 loadingErrorMessage = _this2.l10n.get('missing_file_error', null, 'Missing PDF file.');
978 } else if (exception instanceof _pdfjsLib.UnexpectedResponseException) {
979 loadingErrorMessage = _this2.l10n.get('unexpected_response_error', null, 'Unexpected server response.');
980 } else {
981 loadingErrorMessage = _this2.l10n.get('loading_error', null, 'An error occurred while loading the PDF.');
982 }
983 return loadingErrorMessage.then(function (msg) {
984 _this2.error(msg, { message: message });
985 throw new Error(msg);
986 });
987 }));
988
989 case 16:
990 case 'end':
991 return _context7.stop();
992 }
993 }
994 }, _callee7, this);
995 }));
996
997 function open(_x3, _x4) {
998 return _ref7.apply(this, arguments);
999 }
1000
1001 return open;
1002 }(),
1003 download: function download() {
1004 var _this3 = this;
1005
1006 function downloadByUrl() {
1007 downloadManager.downloadUrl(url, filename);
1008 }
1009 var url = this.baseUrl;
1010 var filename = this.contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url);
1011 var downloadManager = this.downloadManager;
1012 downloadManager.onerror = function (err) {
1013 _this3.error('PDF failed to download: ' + err);
1014 };
1015 if (!this.pdfDocument || !this.downloadComplete) {
1016 downloadByUrl();
1017 return;
1018 }
1019 this.pdfDocument.getData().then(function (data) {
1020 var blob = new Blob([data], { type: 'application/pdf' });
1021 downloadManager.download(blob, url, filename);
1022 }).catch(downloadByUrl);
1023 },
1024 fallback: function fallback(featureId) {},
1025 error: function error(message, moreInfo) {
1026 var moreInfoText = [this.l10n.get('error_version_info', {
1027 version: _pdfjsLib.version || '?',
1028 build: _pdfjsLib.build || '?'
1029 }, 'PDF.js v{{version}} (build: {{build}})')];
1030 if (moreInfo) {
1031 moreInfoText.push(this.l10n.get('error_message', { message: moreInfo.message }, 'Message: {{message}}'));
1032 if (moreInfo.stack) {
1033 moreInfoText.push(this.l10n.get('error_stack', { stack: moreInfo.stack }, 'Stack: {{stack}}'));
1034 } else {
1035 if (moreInfo.filename) {
1036 moreInfoText.push(this.l10n.get('error_file', { file: moreInfo.filename }, 'File: {{file}}'));
1037 }
1038 if (moreInfo.lineNumber) {
1039 moreInfoText.push(this.l10n.get('error_line', { line: moreInfo.lineNumber }, 'Line: {{line}}'));
1040 }
1041 }
1042 }
1043 var errorWrapperConfig = this.appConfig.errorWrapper;
1044 var errorWrapper = errorWrapperConfig.container;
1045 errorWrapper.removeAttribute('hidden');
1046 var errorMessage = errorWrapperConfig.errorMessage;
1047 errorMessage.textContent = message;
1048 var closeButton = errorWrapperConfig.closeButton;
1049 closeButton.onclick = function () {
1050 errorWrapper.setAttribute('hidden', 'true');
1051 };
1052 var errorMoreInfo = errorWrapperConfig.errorMoreInfo;
1053 var moreInfoButton = errorWrapperConfig.moreInfoButton;
1054 var lessInfoButton = errorWrapperConfig.lessInfoButton;
1055 moreInfoButton.onclick = function () {
1056 errorMoreInfo.removeAttribute('hidden');
1057 moreInfoButton.setAttribute('hidden', 'true');
1058 lessInfoButton.removeAttribute('hidden');
1059 errorMoreInfo.style.height = errorMoreInfo.scrollHeight + 'px';
1060 };
1061 lessInfoButton.onclick = function () {
1062 errorMoreInfo.setAttribute('hidden', 'true');
1063 moreInfoButton.removeAttribute('hidden');
1064 lessInfoButton.setAttribute('hidden', 'true');
1065 };
1066 moreInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler;
1067 lessInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler;
1068 closeButton.oncontextmenu = _ui_utils.noContextMenuHandler;
1069 moreInfoButton.removeAttribute('hidden');
1070 lessInfoButton.setAttribute('hidden', 'true');
1071 Promise.all(moreInfoText).then(function (parts) {
1072 errorMoreInfo.value = parts.join('\n');
1073 });
1074 },
1075 progress: function progress(level) {
1076 var _this4 = this;
1077
1078 if (this.downloadComplete) {
1079 return;
1080 }
1081 var percent = Math.round(level * 100);
1082 if (percent > this.loadingBar.percent || isNaN(percent)) {
1083 this.loadingBar.percent = percent;
1084 var disableAutoFetch = this.pdfDocument ? this.pdfDocument.loadingParams['disableAutoFetch'] : _app_options.AppOptions.get('disableAutoFetch');
1085 if (disableAutoFetch && percent) {
1086 if (this.disableAutoFetchLoadingBarTimeout) {
1087 clearTimeout(this.disableAutoFetchLoadingBarTimeout);
1088 this.disableAutoFetchLoadingBarTimeout = null;
1089 }
1090 this.loadingBar.show();
1091 this.disableAutoFetchLoadingBarTimeout = setTimeout(function () {
1092 _this4.loadingBar.hide();
1093 _this4.disableAutoFetchLoadingBarTimeout = null;
1094 }, DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT);
1095 }
1096 }
1097 },
1098 load: function load(pdfDocument) {
1099 var _this5 = this;
1100
1101 this.pdfDocument = pdfDocument;
1102 pdfDocument.getDownloadInfo().then(function () {
1103 _this5.downloadComplete = true;
1104 _this5.loadingBar.hide();
1105 firstPagePromise.then(function () {
1106 _this5.eventBus.dispatch('documentloaded', { source: _this5 });
1107 _this5.eventBus.dispatch('documentload', { source: _this5 });
1108 });
1109 });
1110 var pageModePromise = pdfDocument.getPageMode().catch(function () {});
1111 this.toolbar.setPagesCount(pdfDocument.numPages, false);
1112 this.secondaryToolbar.setPagesCount(pdfDocument.numPages);
1113 var store = this.store = new _view_history.ViewHistory(pdfDocument.fingerprint);
1114 var baseDocumentUrl = void 0;
1115 baseDocumentUrl = null;
1116 this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl);
1117 this.pdfDocumentProperties.setDocument(pdfDocument, this.url);
1118 var pdfViewer = this.pdfViewer;
1119 pdfViewer.setDocument(pdfDocument);
1120 var firstPagePromise = pdfViewer.firstPagePromise;
1121 var pagesPromise = pdfViewer.pagesPromise;
1122 var onePageRendered = pdfViewer.onePageRendered;
1123 var pdfThumbnailViewer = this.pdfThumbnailViewer;
1124 pdfThumbnailViewer.setDocument(pdfDocument);
1125 firstPagePromise.then(function (pdfPage) {
1126 _this5.loadingBar.setWidth(_this5.appConfig.viewerContainer);
1127 if (!_app_options.AppOptions.get('disableHistory') && !_this5.isViewerEmbedded) {
1128 var resetHistory = !_app_options.AppOptions.get('showPreviousViewOnLoad');
1129 _this5.pdfHistory.initialize(pdfDocument.fingerprint, resetHistory);
1130 if (_this5.pdfHistory.initialBookmark) {
1131 _this5.initialBookmark = _this5.pdfHistory.initialBookmark;
1132 _this5.initialRotation = _this5.pdfHistory.initialRotation;
1133 }
1134 }
1135 var storePromise = store.getMultiple({
1136 page: null,
1137 zoom: _ui_utils.DEFAULT_SCALE_VALUE,
1138 scrollLeft: '0',
1139 scrollTop: '0',
1140 rotation: null,
1141 sidebarView: _pdf_sidebar.SidebarView.NONE,
1142 scrollMode: null,
1143 spreadMode: null
1144 }).catch(function () {});
1145 Promise.all([storePromise, pageModePromise]).then(function () {
1146 var _ref10 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee8(_ref9) {
1147 var _ref11 = _slicedToArray(_ref9, 2),
1148 _ref11$ = _ref11[0],
1149 values = _ref11$ === undefined ? {} : _ref11$,
1150 pageMode = _ref11[1];
1151
1152 var initialBookmark, zoom, hash, rotation, sidebarView, scrollMode, spreadMode;
1153 return _regenerator2.default.wrap(function _callee8$(_context8) {
1154 while (1) {
1155 switch (_context8.prev = _context8.next) {
1156 case 0:
1157 initialBookmark = _this5.initialBookmark;
1158 zoom = _app_options.AppOptions.get('defaultZoomValue');
1159 hash = zoom ? 'zoom=' + zoom : null;
1160 rotation = null;
1161 sidebarView = _app_options.AppOptions.get('sidebarViewOnLoad');
1162 scrollMode = _app_options.AppOptions.get('scrollModeOnLoad');
1163 spreadMode = _app_options.AppOptions.get('spreadModeOnLoad');
1164
1165 if (values.page && _app_options.AppOptions.get('showPreviousViewOnLoad')) {
1166 hash = 'page=' + values.page + '&zoom=' + (zoom || values.zoom) + ',' + values.scrollLeft + ',' + values.scrollTop;
1167 rotation = parseInt(values.rotation, 10);
1168 sidebarView = sidebarView || values.sidebarView | 0;
1169 scrollMode = scrollMode || values.scrollMode | 0;
1170 spreadMode = spreadMode || values.spreadMode | 0;
1171 }
1172 if (pageMode && !_app_options.AppOptions.get('disablePageMode')) {
1173 sidebarView = sidebarView || apiPageModeToSidebarView(pageMode);
1174 }
1175 _this5.setInitialView(hash, {
1176 rotation: rotation,
1177 sidebarView: sidebarView,
1178 scrollMode: scrollMode,
1179 spreadMode: spreadMode
1180 });
1181 _this5.eventBus.dispatch('documentinit', { source: _this5 });
1182 if (!_this5.isViewerEmbedded) {
1183 pdfViewer.focus();
1184 }
1185 _context8.next = 14;
1186 return Promise.race([pagesPromise, new Promise(function (resolve) {
1187 setTimeout(resolve, FORCE_PAGES_LOADED_TIMEOUT);
1188 })]);
1189
1190 case 14:
1191 if (!(!initialBookmark && !hash)) {
1192 _context8.next = 16;
1193 break;
1194 }
1195
1196 return _context8.abrupt('return');
1197
1198 case 16:
1199 if (!pdfViewer.hasEqualPageSizes) {
1200 _context8.next = 18;
1201 break;
1202 }
1203
1204 return _context8.abrupt('return');
1205
1206 case 18:
1207 _this5.initialBookmark = initialBookmark;
1208 pdfViewer.currentScaleValue = pdfViewer.currentScaleValue;
1209 _this5.setInitialView(hash);
1210
1211 case 21:
1212 case 'end':
1213 return _context8.stop();
1214 }
1215 }
1216 }, _callee8, _this5);
1217 }));
1218
1219 return function (_x5) {
1220 return _ref10.apply(this, arguments);
1221 };
1222 }()).then(function () {
1223 pdfViewer.update();
1224 });
1225 });
1226 pdfDocument.getPageLabels().then(function (labels) {
1227 if (!labels || _app_options.AppOptions.get('disablePageLabels')) {
1228 return;
1229 }
1230 var i = 0,
1231 numLabels = labels.length;
1232 if (numLabels !== _this5.pagesCount) {
1233 console.error('The number of Page Labels does not match ' + 'the number of pages in the document.');
1234 return;
1235 }
1236 while (i < numLabels && labels[i] === (i + 1).toString()) {
1237 i++;
1238 }
1239 if (i === numLabels) {
1240 return;
1241 }
1242 pdfViewer.setPageLabels(labels);
1243 pdfThumbnailViewer.setPageLabels(labels);
1244 _this5.toolbar.setPagesCount(pdfDocument.numPages, true);
1245 _this5.toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel);
1246 });
1247 pagesPromise.then(function () {
1248 if (!_this5.supportsPrinting) {
1249 return;
1250 }
1251 pdfDocument.getJavaScript().then(function (javaScript) {
1252 if (!javaScript) {
1253 return;
1254 }
1255 javaScript.some(function (js) {
1256 if (!js) {
1257 return false;
1258 }
1259 console.warn('Warning: JavaScript is not supported');
1260 _this5.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.javaScript);
1261 return true;
1262 });
1263 var regex = /\bprint\s*\(/;
1264 for (var i = 0, ii = javaScript.length; i < ii; i++) {
1265 var js = javaScript[i];
1266 if (js && regex.test(js)) {
1267 setTimeout(function () {
1268 window.print();
1269 });
1270 return;
1271 }
1272 }
1273 });
1274 });
1275 Promise.all([onePageRendered, _ui_utils.animationStarted]).then(function () {
1276 pdfDocument.getOutline().then(function (outline) {
1277 _this5.pdfOutlineViewer.render({ outline: outline });
1278 });
1279 pdfDocument.getAttachments().then(function (attachments) {
1280 _this5.pdfAttachmentViewer.render({ attachments: attachments });
1281 });
1282 });
1283 pdfDocument.getMetadata().then(function (_ref12) {
1284 var info = _ref12.info,
1285 metadata = _ref12.metadata,
1286 contentDispositionFilename = _ref12.contentDispositionFilename;
1287
1288 _this5.documentInfo = info;
1289 _this5.metadata = metadata;
1290 _this5.contentDispositionFilename = contentDispositionFilename;
1291 console.log('PDF ' + pdfDocument.fingerprint + ' [' + info.PDFFormatVersion + ' ' + (info.Producer || '-').trim() + ' / ' + (info.Creator || '-').trim() + ']' + ' (PDF.js: ' + (_pdfjsLib.version || '-') + (_app_options.AppOptions.get('enableWebGL') ? ' [WebGL]' : '') + ')');
1292 var pdfTitle = void 0;
1293 if (metadata && metadata.has('dc:title')) {
1294 var title = metadata.get('dc:title');
1295 if (title !== 'Untitled') {
1296 pdfTitle = title;
1297 }
1298 }
1299 if (!pdfTitle && info && info['Title']) {
1300 pdfTitle = info['Title'];
1301 }
1302 if (pdfTitle) {
1303 _this5.setTitle(pdfTitle + ' - ' + (contentDispositionFilename || document.title));
1304 } else if (contentDispositionFilename) {
1305 _this5.setTitle(contentDispositionFilename);
1306 }
1307 if (info.IsAcroFormPresent) {
1308 console.warn('Warning: AcroForm/XFA is not supported');
1309 _this5.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms);
1310 }
1311 });
1312 },
1313 setInitialView: function setInitialView(storedHash) {
1314 var _this6 = this;
1315
1316 var _ref13 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
1317 rotation = _ref13.rotation,
1318 sidebarView = _ref13.sidebarView,
1319 scrollMode = _ref13.scrollMode,
1320 spreadMode = _ref13.spreadMode;
1321
1322 var setRotation = function setRotation(angle) {
1323 if ((0, _ui_utils.isValidRotation)(angle)) {
1324 _this6.pdfViewer.pagesRotation = angle;
1325 }
1326 };
1327 var setViewerModes = function setViewerModes(scroll, spread) {
1328 if (Number.isInteger(scroll)) {
1329 _this6.pdfViewer.scrollMode = scroll;
1330 }
1331 if (Number.isInteger(spread)) {
1332 _this6.pdfViewer.spreadMode = spread;
1333 }
1334 };
1335 setViewerModes(scrollMode, spreadMode);
1336 this.isInitialViewSet = true;
1337 this.pdfSidebar.setInitialView(sidebarView);
1338 if (this.initialBookmark) {
1339 setRotation(this.initialRotation);
1340 delete this.initialRotation;
1341 this.pdfLinkService.setHash(this.initialBookmark);
1342 this.initialBookmark = null;
1343 } else if (storedHash) {
1344 setRotation(rotation);
1345 this.pdfLinkService.setHash(storedHash);
1346 }
1347 this.toolbar.setPageNumber(this.pdfViewer.currentPageNumber, this.pdfViewer.currentPageLabel);
1348 this.secondaryToolbar.setPageNumber(this.pdfViewer.currentPageNumber);
1349 if (!this.pdfViewer.currentScaleValue) {
1350 this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
1351 }
1352 },
1353 cleanup: function cleanup() {
1354 if (!this.pdfDocument) {
1355 return;
1356 }
1357 this.pdfViewer.cleanup();
1358 this.pdfThumbnailViewer.cleanup();
1359 if (this.pdfViewer.renderer !== _ui_utils.RendererType.SVG) {
1360 this.pdfDocument.cleanup();
1361 }
1362 },
1363 forceRendering: function forceRendering() {
1364 this.pdfRenderingQueue.printing = this.printing;
1365 this.pdfRenderingQueue.isThumbnailViewEnabled = this.pdfSidebar.isThumbnailViewVisible;
1366 this.pdfRenderingQueue.renderHighestPriority();
1367 },
1368 beforePrint: function beforePrint() {
1369 var _this7 = this;
1370
1371 if (this.printService) {
1372 return;
1373 }
1374 if (!this.supportsPrinting) {
1375 this.l10n.get('printing_not_supported', null, 'Warning: Printing is not fully supported by ' + 'this browser.').then(function (printMessage) {
1376 _this7.error(printMessage);
1377 });
1378 return;
1379 }
1380 if (!this.pdfViewer.pageViewsReady) {
1381 this.l10n.get('printing_not_ready', null, 'Warning: The PDF is not fully loaded for printing.').then(function (notReadyMessage) {
1382 window.alert(notReadyMessage);
1383 });
1384 return;
1385 }
1386 var pagesOverview = this.pdfViewer.getPagesOverview();
1387 var printContainer = this.appConfig.printContainer;
1388 var printService = PDFPrintServiceFactory.instance.createPrintService(this.pdfDocument, pagesOverview, printContainer, this.l10n);
1389 this.printService = printService;
1390 this.forceRendering();
1391 printService.layout();
1392 },
1393
1394 afterPrint: function pdfViewSetupAfterPrint() {
1395 if (this.printService) {
1396 this.printService.destroy();
1397 this.printService = null;
1398 }
1399 this.forceRendering();
1400 },
1401 rotatePages: function rotatePages(delta) {
1402 if (!this.pdfDocument) {
1403 return;
1404 }
1405 var newRotation = (this.pdfViewer.pagesRotation + 360 + delta) % 360;
1406 this.pdfViewer.pagesRotation = newRotation;
1407 },
1408 requestPresentationMode: function requestPresentationMode() {
1409 if (!this.pdfPresentationMode) {
1410 return;
1411 }
1412 this.pdfPresentationMode.request();
1413 },
1414 bindEvents: function bindEvents() {
1415 var eventBus = this.eventBus,
1416 _boundEvents = this._boundEvents;
1417
1418 _boundEvents.beforePrint = this.beforePrint.bind(this);
1419 _boundEvents.afterPrint = this.afterPrint.bind(this);
1420 eventBus.on('resize', webViewerResize);
1421 eventBus.on('hashchange', webViewerHashchange);
1422 eventBus.on('beforeprint', _boundEvents.beforePrint);
1423 eventBus.on('afterprint', _boundEvents.afterPrint);
1424 eventBus.on('pagerendered', webViewerPageRendered);
1425 eventBus.on('textlayerrendered', webViewerTextLayerRendered);
1426 eventBus.on('updateviewarea', webViewerUpdateViewarea);
1427 eventBus.on('pagechanging', webViewerPageChanging);
1428 eventBus.on('scalechanging', webViewerScaleChanging);
1429 eventBus.on('rotationchanging', webViewerRotationChanging);
1430 eventBus.on('sidebarviewchanged', webViewerSidebarViewChanged);
1431 eventBus.on('pagemode', webViewerPageMode);
1432 eventBus.on('namedaction', webViewerNamedAction);
1433 eventBus.on('presentationmodechanged', webViewerPresentationModeChanged);
1434 eventBus.on('presentationmode', webViewerPresentationMode);
1435 eventBus.on('openfile', webViewerOpenFile);
1436 eventBus.on('print', webViewerPrint);
1437 eventBus.on('download', webViewerDownload);
1438 eventBus.on('firstpage', webViewerFirstPage);
1439 eventBus.on('lastpage', webViewerLastPage);
1440 eventBus.on('nextpage', webViewerNextPage);
1441 eventBus.on('previouspage', webViewerPreviousPage);
1442 eventBus.on('zoomin', webViewerZoomIn);
1443 eventBus.on('zoomout', webViewerZoomOut);
1444 eventBus.on('pagenumberchanged', webViewerPageNumberChanged);
1445 eventBus.on('scalechanged', webViewerScaleChanged);
1446 eventBus.on('rotatecw', webViewerRotateCw);
1447 eventBus.on('rotateccw', webViewerRotateCcw);
1448 eventBus.on('switchscrollmode', webViewerSwitchScrollMode);
1449 eventBus.on('scrollmodechanged', webViewerScrollModeChanged);
1450 eventBus.on('switchspreadmode', webViewerSwitchSpreadMode);
1451 eventBus.on('spreadmodechanged', webViewerSpreadModeChanged);
1452 eventBus.on('documentproperties', webViewerDocumentProperties);
1453 eventBus.on('find', webViewerFind);
1454 eventBus.on('findfromurlhash', webViewerFindFromUrlHash);
1455 eventBus.on('updatefindmatchescount', webViewerUpdateFindMatchesCount);
1456 eventBus.on('updatefindcontrolstate', webViewerUpdateFindControlState);
1457 eventBus.on('fileinputchange', webViewerFileInputChange);
1458 },
1459 bindWindowEvents: function bindWindowEvents() {
1460 var eventBus = this.eventBus,
1461 _boundEvents = this._boundEvents;
1462
1463 _boundEvents.windowResize = function () {
1464 eventBus.dispatch('resize', { source: window });
1465 };
1466 _boundEvents.windowHashChange = function () {
1467 eventBus.dispatch('hashchange', {
1468 source: window,
1469 hash: document.location.hash.substring(1)
1470 });
1471 };
1472 _boundEvents.windowBeforePrint = function () {
1473 eventBus.dispatch('beforeprint', { source: window });
1474 };
1475 _boundEvents.windowAfterPrint = function () {
1476 eventBus.dispatch('afterprint', { source: window });
1477 };
1478 window.addEventListener('wheel', webViewerWheel);
1479 window.addEventListener('click', webViewerClick);
1480 window.addEventListener('keydown', webViewerKeyDown);
1481 window.addEventListener('resize', _boundEvents.windowResize);
1482 window.addEventListener('hashchange', _boundEvents.windowHashChange);
1483 window.addEventListener('beforeprint', _boundEvents.windowBeforePrint);
1484 window.addEventListener('afterprint', _boundEvents.windowAfterPrint);
1485 },
1486 unbindEvents: function unbindEvents() {
1487 var eventBus = this.eventBus,
1488 _boundEvents = this._boundEvents;
1489
1490 eventBus.off('resize', webViewerResize);
1491 eventBus.off('hashchange', webViewerHashchange);
1492 eventBus.off('beforeprint', _boundEvents.beforePrint);
1493 eventBus.off('afterprint', _boundEvents.afterPrint);
1494 eventBus.off('pagerendered', webViewerPageRendered);
1495 eventBus.off('textlayerrendered', webViewerTextLayerRendered);
1496 eventBus.off('updateviewarea', webViewerUpdateViewarea);
1497 eventBus.off('pagechanging', webViewerPageChanging);
1498 eventBus.off('scalechanging', webViewerScaleChanging);
1499 eventBus.off('rotationchanging', webViewerRotationChanging);
1500 eventBus.off('sidebarviewchanged', webViewerSidebarViewChanged);
1501 eventBus.off('pagemode', webViewerPageMode);
1502 eventBus.off('namedaction', webViewerNamedAction);
1503 eventBus.off('presentationmodechanged', webViewerPresentationModeChanged);
1504 eventBus.off('presentationmode', webViewerPresentationMode);
1505 eventBus.off('openfile', webViewerOpenFile);
1506 eventBus.off('print', webViewerPrint);
1507 eventBus.off('download', webViewerDownload);
1508 eventBus.off('firstpage', webViewerFirstPage);
1509 eventBus.off('lastpage', webViewerLastPage);
1510 eventBus.off('nextpage', webViewerNextPage);
1511 eventBus.off('previouspage', webViewerPreviousPage);
1512 eventBus.off('zoomin', webViewerZoomIn);
1513 eventBus.off('zoomout', webViewerZoomOut);
1514 eventBus.off('pagenumberchanged', webViewerPageNumberChanged);
1515 eventBus.off('scalechanged', webViewerScaleChanged);
1516 eventBus.off('rotatecw', webViewerRotateCw);
1517 eventBus.off('rotateccw', webViewerRotateCcw);
1518 eventBus.off('switchscrollmode', webViewerSwitchScrollMode);
1519 eventBus.off('scrollmodechanged', webViewerScrollModeChanged);
1520 eventBus.off('switchspreadmode', webViewerSwitchSpreadMode);
1521 eventBus.off('spreadmodechanged', webViewerSpreadModeChanged);
1522 eventBus.off('documentproperties', webViewerDocumentProperties);
1523 eventBus.off('find', webViewerFind);
1524 eventBus.off('findfromurlhash', webViewerFindFromUrlHash);
1525 eventBus.off('updatefindmatchescount', webViewerUpdateFindMatchesCount);
1526 eventBus.off('updatefindcontrolstate', webViewerUpdateFindControlState);
1527 eventBus.off('fileinputchange', webViewerFileInputChange);
1528 _boundEvents.beforePrint = null;
1529 _boundEvents.afterPrint = null;
1530 },
1531 unbindWindowEvents: function unbindWindowEvents() {
1532 var _boundEvents = this._boundEvents;
1533
1534 window.removeEventListener('wheel', webViewerWheel);
1535 window.removeEventListener('click', webViewerClick);
1536 window.removeEventListener('keydown', webViewerKeyDown);
1537 window.removeEventListener('resize', _boundEvents.windowResize);
1538 window.removeEventListener('hashchange', _boundEvents.windowHashChange);
1539 window.removeEventListener('beforeprint', _boundEvents.windowBeforePrint);
1540 window.removeEventListener('afterprint', _boundEvents.windowAfterPrint);
1541 _boundEvents.windowResize = null;
1542 _boundEvents.windowHashChange = null;
1543 _boundEvents.windowBeforePrint = null;
1544 _boundEvents.windowAfterPrint = null;
1545 }
1546 };
1547 var validateFileURL = void 0;
1548 {
1549 var HOSTED_VIEWER_ORIGINS = ['null', 'http://mozilla.github.io', 'https://mozilla.github.io'];
1550 validateFileURL = function validateFileURL(file) {
1551 if (file === undefined) {
1552 return;
1553 }
1554 try {
1555 var viewerOrigin = new _pdfjsLib.URL(window.location.href).origin || 'null';
1556 if (HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)) {
1557 return;
1558 }
1559
1560 var _ref14 = new _pdfjsLib.URL(file, window.location.href),
1561 origin = _ref14.origin,
1562 protocol = _ref14.protocol;
1563
1564 if (origin !== viewerOrigin && protocol !== 'blob:') {
1565 throw new Error('file origin does not match viewer\'s');
1566 }
1567 } catch (ex) {
1568 var message = ex && ex.message;
1569 PDFViewerApplication.l10n.get('loading_error', null, 'An error occurred while loading the PDF.').then(function (loadingErrorMessage) {
1570 PDFViewerApplication.error(loadingErrorMessage, { message: message });
1571 });
1572 throw ex;
1573 }
1574 };
1575 }
1576 function loadFakeWorker() {
1577 if (!_pdfjsLib.GlobalWorkerOptions.workerSrc) {
1578 _pdfjsLib.GlobalWorkerOptions.workerSrc = _app_options.AppOptions.get('workerSrc');
1579 }
1580 return (0, _pdfjsLib.loadScript)(_pdfjsLib.PDFWorker.getWorkerSrc());
1581 }
1582 function loadAndEnablePDFBug(enabledTabs) {
1583 var appConfig = PDFViewerApplication.appConfig;
1584 return (0, _pdfjsLib.loadScript)(appConfig.debuggerScriptPath).then(function () {
1585 PDFBug.enable(enabledTabs);
1586 PDFBug.init({
1587 OPS: _pdfjsLib.OPS,
1588 createObjectURL: _pdfjsLib.createObjectURL
1589 }, appConfig.mainContainer);
1590 });
1591 }
1592 function webViewerInitialized() {
1593 var appConfig = PDFViewerApplication.appConfig;
1594 var file = void 0;
1595 var queryString = document.location.search.substring(1);
1596 var params = (0, _ui_utils.parseQueryString)(queryString);
1597 file = 'file' in params ? params.file : _app_options.AppOptions.get('defaultUrl');
1598 validateFileURL(file);
1599 var fileInput = document.createElement('input');
1600 fileInput.id = appConfig.openFileInputName;
1601 fileInput.className = 'fileInput';
1602 fileInput.setAttribute('type', 'file');
1603 fileInput.oncontextmenu = _ui_utils.noContextMenuHandler;
1604 document.body.appendChild(fileInput);
1605 if (!window.File || !window.FileReader || !window.FileList || !window.Blob) {
1606 appConfig.toolbar.openFile.setAttribute('hidden', 'true');
1607 appConfig.secondaryToolbar.openFileButton.setAttribute('hidden', 'true');
1608 } else {
1609 fileInput.value = null;
1610 }
1611 fileInput.addEventListener('change', function (evt) {
1612 var files = evt.target.files;
1613 if (!files || files.length === 0) {
1614 return;
1615 }
1616 PDFViewerApplication.eventBus.dispatch('fileinputchange', {
1617 source: this,
1618 fileInput: evt.target
1619 });
1620 });
1621 appConfig.mainContainer.addEventListener('dragover', function (evt) {
1622 evt.preventDefault();
1623 evt.dataTransfer.dropEffect = 'move';
1624 });
1625 appConfig.mainContainer.addEventListener('drop', function (evt) {
1626 evt.preventDefault();
1627 var files = evt.dataTransfer.files;
1628 if (!files || files.length === 0) {
1629 return;
1630 }
1631 PDFViewerApplication.eventBus.dispatch('fileinputchange', {
1632 source: this,
1633 fileInput: evt.dataTransfer
1634 });
1635 });
1636 if (!PDFViewerApplication.supportsPrinting) {
1637 appConfig.toolbar.print.classList.add('hidden');
1638 appConfig.secondaryToolbar.printButton.classList.add('hidden');
1639 }
1640 if (!PDFViewerApplication.supportsFullscreen) {
1641 appConfig.toolbar.presentationModeButton.classList.add('hidden');
1642 appConfig.secondaryToolbar.presentationModeButton.classList.add('hidden');
1643 }
1644 if (PDFViewerApplication.supportsIntegratedFind) {
1645 appConfig.toolbar.viewFind.classList.add('hidden');
1646 }
1647 appConfig.mainContainer.addEventListener('transitionend', function (evt) {
1648 if (evt.target === this) {
1649 PDFViewerApplication.eventBus.dispatch('resize', { source: this });
1650 }
1651 }, true);
1652 appConfig.sidebar.toggleButton.addEventListener('click', function () {
1653 PDFViewerApplication.pdfSidebar.toggle();
1654 });
1655 try {
1656 webViewerOpenFileViaURL(file);
1657 } catch (reason) {
1658 PDFViewerApplication.l10n.get('loading_error', null, 'An error occurred while loading the PDF.').then(function (msg) {
1659 PDFViewerApplication.error(msg, reason);
1660 });
1661 }
1662 }
1663 var webViewerOpenFileViaURL = void 0;
1664 {
1665 webViewerOpenFileViaURL = function webViewerOpenFileViaURL(file) {
1666 if (file && file.lastIndexOf('file:', 0) === 0) {
1667 PDFViewerApplication.setTitleUsingUrl(file);
1668 var xhr = new XMLHttpRequest();
1669 xhr.onload = function () {
1670 PDFViewerApplication.open(new Uint8Array(xhr.response));
1671 };
1672 try {
1673 xhr.open('GET', file);
1674 xhr.responseType = 'arraybuffer';
1675 xhr.send();
1676 } catch (ex) {
1677 throw ex;
1678 }
1679 return;
1680 }
1681 if (file) {
1682 PDFViewerApplication.open(file);
1683 }
1684 };
1685 }
1686 function webViewerPageRendered(evt) {
1687 var pageNumber = evt.pageNumber;
1688 var pageIndex = pageNumber - 1;
1689 var pageView = PDFViewerApplication.pdfViewer.getPageView(pageIndex);
1690 if (pageNumber === PDFViewerApplication.page) {
1691 PDFViewerApplication.toolbar.updateLoadingIndicatorState(false);
1692 }
1693 if (!pageView) {
1694 return;
1695 }
1696 if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {
1697 var thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(pageIndex);
1698 thumbnailView.setImage(pageView);
1699 }
1700 if (typeof Stats !== 'undefined' && Stats.enabled && pageView.stats) {
1701 Stats.add(pageNumber, pageView.stats);
1702 }
1703 if (pageView.error) {
1704 PDFViewerApplication.l10n.get('rendering_error', null, 'An error occurred while rendering the page.').then(function (msg) {
1705 PDFViewerApplication.error(msg, pageView.error);
1706 });
1707 }
1708 }
1709 function webViewerTextLayerRendered(evt) {}
1710 function webViewerPageMode(evt) {
1711 var mode = evt.mode,
1712 view = void 0;
1713 switch (mode) {
1714 case 'thumbs':
1715 view = _pdf_sidebar.SidebarView.THUMBS;
1716 break;
1717 case 'bookmarks':
1718 case 'outline':
1719 view = _pdf_sidebar.SidebarView.OUTLINE;
1720 break;
1721 case 'attachments':
1722 view = _pdf_sidebar.SidebarView.ATTACHMENTS;
1723 break;
1724 case 'none':
1725 view = _pdf_sidebar.SidebarView.NONE;
1726 break;
1727 default:
1728 console.error('Invalid "pagemode" hash parameter: ' + mode);
1729 return;
1730 }
1731 PDFViewerApplication.pdfSidebar.switchView(view, true);
1732 }
1733 function webViewerNamedAction(evt) {
1734 var action = evt.action;
1735 switch (action) {
1736 case 'GoToPage':
1737 PDFViewerApplication.appConfig.toolbar.pageNumber.select();
1738 break;
1739 case 'Find':
1740 if (!PDFViewerApplication.supportsIntegratedFind) {
1741 PDFViewerApplication.findBar.toggle();
1742 }
1743 break;
1744 }
1745 }
1746 function webViewerPresentationModeChanged(evt) {
1747 var active = evt.active,
1748 switchInProgress = evt.switchInProgress;
1749
1750 PDFViewerApplication.pdfViewer.presentationModeState = switchInProgress ? _ui_utils.PresentationModeState.CHANGING : active ? _ui_utils.PresentationModeState.FULLSCREEN : _ui_utils.PresentationModeState.NORMAL;
1751 }
1752 function webViewerSidebarViewChanged(evt) {
1753 PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled = PDFViewerApplication.pdfSidebar.isThumbnailViewVisible;
1754 var store = PDFViewerApplication.store;
1755 if (store && PDFViewerApplication.isInitialViewSet) {
1756 store.set('sidebarView', evt.view).catch(function () {});
1757 }
1758 }
1759 function webViewerUpdateViewarea(evt) {
1760 var location = evt.location,
1761 store = PDFViewerApplication.store;
1762 if (store && PDFViewerApplication.isInitialViewSet) {
1763 store.setMultiple({
1764 'page': location.pageNumber,
1765 'zoom': location.scale,
1766 'scrollLeft': location.left,
1767 'scrollTop': location.top,
1768 'rotation': location.rotation
1769 }).catch(function () {});
1770 }
1771 var href = PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams);
1772 PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href;
1773 PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href;
1774 var currentPage = PDFViewerApplication.pdfViewer.getPageView(PDFViewerApplication.page - 1);
1775 var loading = currentPage.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED;
1776 PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading);
1777 }
1778 function webViewerScrollModeChanged(evt) {
1779 var store = PDFViewerApplication.store;
1780 if (store && PDFViewerApplication.isInitialViewSet) {
1781 store.set('scrollMode', evt.mode).catch(function () {});
1782 }
1783 }
1784 function webViewerSpreadModeChanged(evt) {
1785 var store = PDFViewerApplication.store;
1786 if (store && PDFViewerApplication.isInitialViewSet) {
1787 store.set('spreadMode', evt.mode).catch(function () {});
1788 }
1789 }
1790 function webViewerResize() {
1791 var pdfDocument = PDFViewerApplication.pdfDocument,
1792 pdfViewer = PDFViewerApplication.pdfViewer;
1793
1794 if (!pdfDocument) {
1795 return;
1796 }
1797 var currentScaleValue = pdfViewer.currentScaleValue;
1798 if (currentScaleValue === 'auto' || currentScaleValue === 'page-fit' || currentScaleValue === 'page-width') {
1799 pdfViewer.currentScaleValue = currentScaleValue;
1800 }
1801 pdfViewer.update();
1802 }
1803 function webViewerHashchange(evt) {
1804 var hash = evt.hash;
1805 if (!hash) {
1806 return;
1807 }
1808 if (!PDFViewerApplication.isInitialViewSet) {
1809 PDFViewerApplication.initialBookmark = hash;
1810 } else if (!PDFViewerApplication.pdfHistory.popStateInProgress) {
1811 PDFViewerApplication.pdfLinkService.setHash(hash);
1812 }
1813 }
1814 var webViewerFileInputChange = void 0;
1815 {
1816 webViewerFileInputChange = function webViewerFileInputChange(evt) {
1817 if (PDFViewerApplication.pdfViewer && PDFViewerApplication.pdfViewer.isInPresentationMode) {
1818 return;
1819 }
1820 var file = evt.fileInput.files[0];
1821 if (_pdfjsLib.URL.createObjectURL && !_app_options.AppOptions.get('disableCreateObjectURL')) {
1822 var _url = _pdfjsLib.URL.createObjectURL(file);
1823 if (file.name) {
1824 _url = {
1825 url: _url,
1826 originalUrl: file.name
1827 };
1828 }
1829 PDFViewerApplication.open(_url);
1830 } else {
1831 PDFViewerApplication.setTitleUsingUrl(file.name);
1832 var fileReader = new FileReader();
1833 fileReader.onload = function webViewerChangeFileReaderOnload(evt) {
1834 var buffer = evt.target.result;
1835 PDFViewerApplication.open(new Uint8Array(buffer));
1836 };
1837 fileReader.readAsArrayBuffer(file);
1838 }
1839 var appConfig = PDFViewerApplication.appConfig;
1840 appConfig.toolbar.viewBookmark.setAttribute('hidden', 'true');
1841 appConfig.secondaryToolbar.viewBookmarkButton.setAttribute('hidden', 'true');
1842 appConfig.toolbar.download.setAttribute('hidden', 'true');
1843 appConfig.secondaryToolbar.downloadButton.setAttribute('hidden', 'true');
1844 };
1845 }
1846 function webViewerPresentationMode() {
1847 PDFViewerApplication.requestPresentationMode();
1848 }
1849 function webViewerOpenFile() {
1850 var openFileInputName = PDFViewerApplication.appConfig.openFileInputName;
1851 document.getElementById(openFileInputName).click();
1852 }
1853 function webViewerPrint() {
1854 window.print();
1855 }
1856 function webViewerDownload() {
1857 PDFViewerApplication.download();
1858 }
1859 function webViewerFirstPage() {
1860 if (PDFViewerApplication.pdfDocument) {
1861 PDFViewerApplication.page = 1;
1862 }
1863 }
1864 function webViewerLastPage() {
1865 if (PDFViewerApplication.pdfDocument) {
1866 PDFViewerApplication.page = PDFViewerApplication.pagesCount;
1867 }
1868 }
1869 function webViewerNextPage() {
1870 PDFViewerApplication.page++;
1871 }
1872 function webViewerPreviousPage() {
1873 PDFViewerApplication.page--;
1874 }
1875 function webViewerZoomIn() {
1876 PDFViewerApplication.zoomIn();
1877 }
1878 function webViewerZoomOut() {
1879 PDFViewerApplication.zoomOut();
1880 }
1881 function webViewerPageNumberChanged(evt) {
1882 var pdfViewer = PDFViewerApplication.pdfViewer;
1883 pdfViewer.currentPageLabel = evt.value;
1884 if (evt.value !== pdfViewer.currentPageNumber.toString() && evt.value !== pdfViewer.currentPageLabel) {
1885 PDFViewerApplication.toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel);
1886 }
1887 }
1888 function webViewerScaleChanged(evt) {
1889 PDFViewerApplication.pdfViewer.currentScaleValue = evt.value;
1890 }
1891 function webViewerRotateCw() {
1892 PDFViewerApplication.rotatePages(90);
1893 }
1894 function webViewerRotateCcw() {
1895 PDFViewerApplication.rotatePages(-90);
1896 }
1897 function webViewerSwitchScrollMode(evt) {
1898 PDFViewerApplication.pdfViewer.scrollMode = evt.mode;
1899 }
1900 function webViewerSwitchSpreadMode(evt) {
1901 PDFViewerApplication.pdfViewer.spreadMode = evt.mode;
1902 }
1903 function webViewerDocumentProperties() {
1904 PDFViewerApplication.pdfDocumentProperties.open();
1905 }
1906 function webViewerFind(evt) {
1907 PDFViewerApplication.findController.executeCommand('find' + evt.type, {
1908 query: evt.query,
1909 phraseSearch: evt.phraseSearch,
1910 caseSensitive: evt.caseSensitive,
1911 entireWord: evt.entireWord,
1912 highlightAll: evt.highlightAll,
1913 findPrevious: evt.findPrevious
1914 });
1915 }
1916 function webViewerFindFromUrlHash(evt) {
1917 PDFViewerApplication.findController.executeCommand('find', {
1918 query: evt.query,
1919 phraseSearch: evt.phraseSearch,
1920 caseSensitive: false,
1921 entireWord: false,
1922 highlightAll: true,
1923 findPrevious: false
1924 });
1925 }
1926 function webViewerUpdateFindMatchesCount(_ref15) {
1927 var matchesCount = _ref15.matchesCount;
1928
1929 if (PDFViewerApplication.supportsIntegratedFind) {
1930 PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount);
1931 } else {
1932 PDFViewerApplication.findBar.updateResultsCount(matchesCount);
1933 }
1934 }
1935 function webViewerUpdateFindControlState(_ref16) {
1936 var state = _ref16.state,
1937 previous = _ref16.previous,
1938 matchesCount = _ref16.matchesCount;
1939
1940 if (PDFViewerApplication.supportsIntegratedFind) {
1941 PDFViewerApplication.externalServices.updateFindControlState({
1942 result: state,
1943 findPrevious: previous,
1944 matchesCount: matchesCount
1945 });
1946 } else {
1947 PDFViewerApplication.findBar.updateUIState(state, previous, matchesCount);
1948 }
1949 }
1950 function webViewerScaleChanging(evt) {
1951 PDFViewerApplication.toolbar.setPageScale(evt.presetValue, evt.scale);
1952 PDFViewerApplication.pdfViewer.update();
1953 }
1954 function webViewerRotationChanging(evt) {
1955 PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation;
1956 PDFViewerApplication.forceRendering();
1957 PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber;
1958 }
1959 function webViewerPageChanging(evt) {
1960 var page = evt.pageNumber;
1961 PDFViewerApplication.toolbar.setPageNumber(page, evt.pageLabel || null);
1962 PDFViewerApplication.secondaryToolbar.setPageNumber(page);
1963 if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {
1964 PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page);
1965 }
1966 if (typeof Stats !== 'undefined' && Stats.enabled) {
1967 var pageView = PDFViewerApplication.pdfViewer.getPageView(page - 1);
1968 if (pageView && pageView.stats) {
1969 Stats.add(page, pageView.stats);
1970 }
1971 }
1972 }
1973 var zoomDisabled = false,
1974 zoomDisabledTimeout = void 0;
1975 function webViewerWheel(evt) {
1976 var pdfViewer = PDFViewerApplication.pdfViewer;
1977 if (pdfViewer.isInPresentationMode) {
1978 return;
1979 }
1980 if (evt.ctrlKey || evt.metaKey) {
1981 var support = PDFViewerApplication.supportedMouseWheelZoomModifierKeys;
1982 if (evt.ctrlKey && !support.ctrlKey || evt.metaKey && !support.metaKey) {
1983 return;
1984 }
1985 evt.preventDefault();
1986 if (zoomDisabled) {
1987 return;
1988 }
1989 var previousScale = pdfViewer.currentScale;
1990 var delta = (0, _ui_utils.normalizeWheelEventDelta)(evt);
1991 var MOUSE_WHEEL_DELTA_PER_PAGE_SCALE = 3.0;
1992 var ticks = delta * MOUSE_WHEEL_DELTA_PER_PAGE_SCALE;
1993 if (ticks < 0) {
1994 PDFViewerApplication.zoomOut(-ticks);
1995 } else {
1996 PDFViewerApplication.zoomIn(ticks);
1997 }
1998 var currentScale = pdfViewer.currentScale;
1999 if (previousScale !== currentScale) {
2000 var scaleCorrectionFactor = currentScale / previousScale - 1;
2001 var rect = pdfViewer.container.getBoundingClientRect();
2002 var dx = evt.clientX - rect.left;
2003 var dy = evt.clientY - rect.top;
2004 pdfViewer.container.scrollLeft += dx * scaleCorrectionFactor;
2005 pdfViewer.container.scrollTop += dy * scaleCorrectionFactor;
2006 }
2007 } else {
2008 zoomDisabled = true;
2009 clearTimeout(zoomDisabledTimeout);
2010 zoomDisabledTimeout = setTimeout(function () {
2011 zoomDisabled = false;
2012 }, 1000);
2013 }
2014 }
2015 function webViewerClick(evt) {
2016 if (!PDFViewerApplication.secondaryToolbar.isOpen) {
2017 return;
2018 }
2019 var appConfig = PDFViewerApplication.appConfig;
2020 if (PDFViewerApplication.pdfViewer.containsElement(evt.target) || appConfig.toolbar.container.contains(evt.target) && evt.target !== appConfig.secondaryToolbar.toggleButton) {
2021 PDFViewerApplication.secondaryToolbar.close();
2022 }
2023 }
2024 function webViewerKeyDown(evt) {
2025 if (PDFViewerApplication.overlayManager.active) {
2026 return;
2027 }
2028 var handled = false,
2029 ensureViewerFocused = false;
2030 var cmd = (evt.ctrlKey ? 1 : 0) | (evt.altKey ? 2 : 0) | (evt.shiftKey ? 4 : 0) | (evt.metaKey ? 8 : 0);
2031 var pdfViewer = PDFViewerApplication.pdfViewer;
2032 var isViewerInPresentationMode = pdfViewer && pdfViewer.isInPresentationMode;
2033 if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) {
2034 switch (evt.keyCode) {
2035 case 70:
2036 if (!PDFViewerApplication.supportsIntegratedFind) {
2037 PDFViewerApplication.findBar.open();
2038 handled = true;
2039 }
2040 break;
2041 case 71:
2042 if (!PDFViewerApplication.supportsIntegratedFind) {
2043 var findState = PDFViewerApplication.findController.state;
2044 if (findState) {
2045 PDFViewerApplication.findController.executeCommand('findagain', {
2046 query: findState.query,
2047 phraseSearch: findState.phraseSearch,
2048 caseSensitive: findState.caseSensitive,
2049 entireWord: findState.entireWord,
2050 highlightAll: findState.highlightAll,
2051 findPrevious: cmd === 5 || cmd === 12
2052 });
2053 }
2054 handled = true;
2055 }
2056 break;
2057 case 61:
2058 case 107:
2059 case 187:
2060 case 171:
2061 if (!isViewerInPresentationMode) {
2062 PDFViewerApplication.zoomIn();
2063 }
2064 handled = true;
2065 break;
2066 case 173:
2067 case 109:
2068 case 189:
2069 if (!isViewerInPresentationMode) {
2070 PDFViewerApplication.zoomOut();
2071 }
2072 handled = true;
2073 break;
2074 case 48:
2075 case 96:
2076 if (!isViewerInPresentationMode) {
2077 setTimeout(function () {
2078 pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
2079 });
2080 handled = false;
2081 }
2082 break;
2083 case 38:
2084 if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {
2085 PDFViewerApplication.page = 1;
2086 handled = true;
2087 ensureViewerFocused = true;
2088 }
2089 break;
2090 case 40:
2091 if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) {
2092 PDFViewerApplication.page = PDFViewerApplication.pagesCount;
2093 handled = true;
2094 ensureViewerFocused = true;
2095 }
2096 break;
2097 }
2098 }
2099 if (cmd === 1 || cmd === 8) {
2100 switch (evt.keyCode) {
2101 case 83:
2102 PDFViewerApplication.download();
2103 handled = true;
2104 break;
2105 }
2106 }
2107 if (cmd === 3 || cmd === 10) {
2108 switch (evt.keyCode) {
2109 case 80:
2110 PDFViewerApplication.requestPresentationMode();
2111 handled = true;
2112 break;
2113 case 71:
2114 PDFViewerApplication.appConfig.toolbar.pageNumber.select();
2115 handled = true;
2116 break;
2117 }
2118 }
2119 if (handled) {
2120 if (ensureViewerFocused && !isViewerInPresentationMode) {
2121 pdfViewer.focus();
2122 }
2123 evt.preventDefault();
2124 return;
2125 }
2126 var curElement = document.activeElement || document.querySelector(':focus');
2127 var curElementTagName = curElement && curElement.tagName.toUpperCase();
2128 if (curElementTagName === 'INPUT' || curElementTagName === 'TEXTAREA' || curElementTagName === 'SELECT') {
2129 if (evt.keyCode !== 27) {
2130 return;
2131 }
2132 }
2133 if (cmd === 0) {
2134 var turnPage = 0,
2135 turnOnlyIfPageFit = false;
2136 switch (evt.keyCode) {
2137 case 38:
2138 case 33:
2139 if (pdfViewer.isVerticalScrollbarEnabled) {
2140 turnOnlyIfPageFit = true;
2141 }
2142 turnPage = -1;
2143 break;
2144 case 8:
2145 if (!isViewerInPresentationMode) {
2146 turnOnlyIfPageFit = true;
2147 }
2148 turnPage = -1;
2149 break;
2150 case 37:
2151 if (pdfViewer.isHorizontalScrollbarEnabled) {
2152 turnOnlyIfPageFit = true;
2153 }
2154 case 75:
2155 case 80:
2156 turnPage = -1;
2157 break;
2158 case 27:
2159 if (PDFViewerApplication.secondaryToolbar.isOpen) {
2160 PDFViewerApplication.secondaryToolbar.close();
2161 handled = true;
2162 }
2163 if (!PDFViewerApplication.supportsIntegratedFind && PDFViewerApplication.findBar.opened) {
2164 PDFViewerApplication.findBar.close();
2165 handled = true;
2166 }
2167 break;
2168 case 40:
2169 case 34:
2170 if (pdfViewer.isVerticalScrollbarEnabled) {
2171 turnOnlyIfPageFit = true;
2172 }
2173 turnPage = 1;
2174 break;
2175 case 13:
2176 case 32:
2177 if (!isViewerInPresentationMode) {
2178 turnOnlyIfPageFit = true;
2179 }
2180 turnPage = 1;
2181 break;
2182 case 39:
2183 if (pdfViewer.isHorizontalScrollbarEnabled) {
2184 turnOnlyIfPageFit = true;
2185 }
2186 case 74:
2187 case 78:
2188 turnPage = 1;
2189 break;
2190 case 36:
2191 if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {
2192 PDFViewerApplication.page = 1;
2193 handled = true;
2194 ensureViewerFocused = true;
2195 }
2196 break;
2197 case 35:
2198 if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) {
2199 PDFViewerApplication.page = PDFViewerApplication.pagesCount;
2200 handled = true;
2201 ensureViewerFocused = true;
2202 }
2203 break;
2204 case 83:
2205 PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.SELECT);
2206 break;
2207 case 72:
2208 PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.HAND);
2209 break;
2210 case 82:
2211 PDFViewerApplication.rotatePages(90);
2212 break;
2213 }
2214 if (turnPage !== 0 && (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === 'page-fit')) {
2215 if (turnPage > 0) {
2216 if (PDFViewerApplication.page < PDFViewerApplication.pagesCount) {
2217 PDFViewerApplication.page++;
2218 }
2219 } else {
2220 if (PDFViewerApplication.page > 1) {
2221 PDFViewerApplication.page--;
2222 }
2223 }
2224 handled = true;
2225 }
2226 }
2227 if (cmd === 4) {
2228 switch (evt.keyCode) {
2229 case 13:
2230 case 32:
2231 if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== 'page-fit') {
2232 break;
2233 }
2234 if (PDFViewerApplication.page > 1) {
2235 PDFViewerApplication.page--;
2236 }
2237 handled = true;
2238 break;
2239 case 82:
2240 PDFViewerApplication.rotatePages(-90);
2241 break;
2242 }
2243 }
2244 if (!handled && !isViewerInPresentationMode) {
2245 if (evt.keyCode >= 33 && evt.keyCode <= 40 || evt.keyCode === 32 && curElementTagName !== 'BUTTON') {
2246 ensureViewerFocused = true;
2247 }
2248 }
2249 if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) {
2250 pdfViewer.focus();
2251 }
2252 if (handled) {
2253 evt.preventDefault();
2254 }
2255 }
2256 function apiPageModeToSidebarView(mode) {
2257 switch (mode) {
2258 case 'UseNone':
2259 return _pdf_sidebar.SidebarView.NONE;
2260 case 'UseThumbs':
2261 return _pdf_sidebar.SidebarView.THUMBS;
2262 case 'UseOutlines':
2263 return _pdf_sidebar.SidebarView.OUTLINE;
2264 case 'UseAttachments':
2265 return _pdf_sidebar.SidebarView.ATTACHMENTS;
2266 case 'UseOC':
2267 }
2268 return _pdf_sidebar.SidebarView.NONE;
2269 }
2270 var PDFPrintServiceFactory = {
2271 instance: {
2272 supportsPrinting: false,
2273 createPrintService: function createPrintService() {
2274 throw new Error('Not implemented: createPrintService');
2275 }
2276 }
2277 };
2278 exports.PDFViewerApplication = PDFViewerApplication;
2279 exports.DefaultExternalServices = DefaultExternalServices;
2280 exports.PDFPrintServiceFactory = PDFPrintServiceFactory;
2281
2282 /***/ }),
2283 /* 2 */
2284 /***/ (function(module, exports, __webpack_require__) {
2285
2286 "use strict";
2287
2288
2289 module.exports = __webpack_require__(3);
2290
2291 /***/ }),
2292 /* 3 */
2293 /***/ (function(module, exports, __webpack_require__) {
2294
2295 "use strict";
2296
2297
2298 var g = function () {
2299 return this;
2300 }() || Function("return this")();
2301 var hadRuntime = g.regeneratorRuntime && Object.getOwnPropertyNames(g).indexOf("regeneratorRuntime") >= 0;
2302 var oldRuntime = hadRuntime && g.regeneratorRuntime;
2303 g.regeneratorRuntime = undefined;
2304 module.exports = __webpack_require__(4);
2305 if (hadRuntime) {
2306 g.regeneratorRuntime = oldRuntime;
2307 } else {
2308 try {
2309 delete g.regeneratorRuntime;
2310 } catch (e) {
2311 g.regeneratorRuntime = undefined;
2312 }
2313 }
2314
2315 /***/ }),
2316 /* 4 */
2317 /***/ (function(module, exports, __webpack_require__) {
2318
2319 "use strict";
2320 /* WEBPACK VAR INJECTION */(function(module) {
2321
2322 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
2323
2324 !function (global) {
2325 "use strict";
2326
2327 var Op = Object.prototype;
2328 var hasOwn = Op.hasOwnProperty;
2329 var undefined;
2330 var $Symbol = typeof Symbol === "function" ? Symbol : {};
2331 var iteratorSymbol = $Symbol.iterator || "@@iterator";
2332 var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
2333 var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
2334 var inModule = ( false ? undefined : _typeof(module)) === "object";
2335 var runtime = global.regeneratorRuntime;
2336 if (runtime) {
2337 if (inModule) {
2338 module.exports = runtime;
2339 }
2340 return;
2341 }
2342 runtime = global.regeneratorRuntime = inModule ? module.exports : {};
2343 function wrap(innerFn, outerFn, self, tryLocsList) {
2344 var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
2345 var generator = Object.create(protoGenerator.prototype);
2346 var context = new Context(tryLocsList || []);
2347 generator._invoke = makeInvokeMethod(innerFn, self, context);
2348 return generator;
2349 }
2350 runtime.wrap = wrap;
2351 function tryCatch(fn, obj, arg) {
2352 try {
2353 return {
2354 type: "normal",
2355 arg: fn.call(obj, arg)
2356 };
2357 } catch (err) {
2358 return {
2359 type: "throw",
2360 arg: err
2361 };
2362 }
2363 }
2364 var GenStateSuspendedStart = "suspendedStart";
2365 var GenStateSuspendedYield = "suspendedYield";
2366 var GenStateExecuting = "executing";
2367 var GenStateCompleted = "completed";
2368 var ContinueSentinel = {};
2369 function Generator() {}
2370 function GeneratorFunction() {}
2371 function GeneratorFunctionPrototype() {}
2372 var IteratorPrototype = {};
2373 IteratorPrototype[iteratorSymbol] = function () {
2374 return this;
2375 };
2376 var getProto = Object.getPrototypeOf;
2377 var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
2378 if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
2379 IteratorPrototype = NativeIteratorPrototype;
2380 }
2381 var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
2382 GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
2383 GeneratorFunctionPrototype.constructor = GeneratorFunction;
2384 GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction";
2385 function defineIteratorMethods(prototype) {
2386 ["next", "throw", "return"].forEach(function (method) {
2387 prototype[method] = function (arg) {
2388 return this._invoke(method, arg);
2389 };
2390 });
2391 }
2392 runtime.isGeneratorFunction = function (genFun) {
2393 var ctor = typeof genFun === "function" && genFun.constructor;
2394 return ctor ? ctor === GeneratorFunction || (ctor.displayName || ctor.name) === "GeneratorFunction" : false;
2395 };
2396 runtime.mark = function (genFun) {
2397 if (Object.setPrototypeOf) {
2398 Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
2399 } else {
2400 genFun.__proto__ = GeneratorFunctionPrototype;
2401 if (!(toStringTagSymbol in genFun)) {
2402 genFun[toStringTagSymbol] = "GeneratorFunction";
2403 }
2404 }
2405 genFun.prototype = Object.create(Gp);
2406 return genFun;
2407 };
2408 runtime.awrap = function (arg) {
2409 return { __await: arg };
2410 };
2411 function AsyncIterator(generator) {
2412 function invoke(method, arg, resolve, reject) {
2413 var record = tryCatch(generator[method], generator, arg);
2414 if (record.type === "throw") {
2415 reject(record.arg);
2416 } else {
2417 var result = record.arg;
2418 var value = result.value;
2419 if (value && (typeof value === "undefined" ? "undefined" : _typeof(value)) === "object" && hasOwn.call(value, "__await")) {
2420 return Promise.resolve(value.__await).then(function (value) {
2421 invoke("next", value, resolve, reject);
2422 }, function (err) {
2423 invoke("throw", err, resolve, reject);
2424 });
2425 }
2426 return Promise.resolve(value).then(function (unwrapped) {
2427 result.value = unwrapped;
2428 resolve(result);
2429 }, reject);
2430 }
2431 }
2432 var previousPromise;
2433 function enqueue(method, arg) {
2434 function callInvokeWithMethodAndArg() {
2435 return new Promise(function (resolve, reject) {
2436 invoke(method, arg, resolve, reject);
2437 });
2438 }
2439 return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
2440 }
2441 this._invoke = enqueue;
2442 }
2443 defineIteratorMethods(AsyncIterator.prototype);
2444 AsyncIterator.prototype[asyncIteratorSymbol] = function () {
2445 return this;
2446 };
2447 runtime.AsyncIterator = AsyncIterator;
2448 runtime.async = function (innerFn, outerFn, self, tryLocsList) {
2449 var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));
2450 return runtime.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
2451 return result.done ? result.value : iter.next();
2452 });
2453 };
2454 function makeInvokeMethod(innerFn, self, context) {
2455 var state = GenStateSuspendedStart;
2456 return function invoke(method, arg) {
2457 if (state === GenStateExecuting) {
2458 throw new Error("Generator is already running");
2459 }
2460 if (state === GenStateCompleted) {
2461 if (method === "throw") {
2462 throw arg;
2463 }
2464 return doneResult();
2465 }
2466 context.method = method;
2467 context.arg = arg;
2468 while (true) {
2469 var delegate = context.delegate;
2470 if (delegate) {
2471 var delegateResult = maybeInvokeDelegate(delegate, context);
2472 if (delegateResult) {
2473 if (delegateResult === ContinueSentinel) continue;
2474 return delegateResult;
2475 }
2476 }
2477 if (context.method === "next") {
2478 context.sent = context._sent = context.arg;
2479 } else if (context.method === "throw") {
2480 if (state === GenStateSuspendedStart) {
2481 state = GenStateCompleted;
2482 throw context.arg;
2483 }
2484 context.dispatchException(context.arg);
2485 } else if (context.method === "return") {
2486 context.abrupt("return", context.arg);
2487 }
2488 state = GenStateExecuting;
2489 var record = tryCatch(innerFn, self, context);
2490 if (record.type === "normal") {
2491 state = context.done ? GenStateCompleted : GenStateSuspendedYield;
2492 if (record.arg === ContinueSentinel) {
2493 continue;
2494 }
2495 return {
2496 value: record.arg,
2497 done: context.done
2498 };
2499 } else if (record.type === "throw") {
2500 state = GenStateCompleted;
2501 context.method = "throw";
2502 context.arg = record.arg;
2503 }
2504 }
2505 };
2506 }
2507 function maybeInvokeDelegate(delegate, context) {
2508 var method = delegate.iterator[context.method];
2509 if (method === undefined) {
2510 context.delegate = null;
2511 if (context.method === "throw") {
2512 if (delegate.iterator.return) {
2513 context.method = "return";
2514 context.arg = undefined;
2515 maybeInvokeDelegate(delegate, context);
2516 if (context.method === "throw") {
2517 return ContinueSentinel;
2518 }
2519 }
2520 context.method = "throw";
2521 context.arg = new TypeError("The iterator does not provide a 'throw' method");
2522 }
2523 return ContinueSentinel;
2524 }
2525 var record = tryCatch(method, delegate.iterator, context.arg);
2526 if (record.type === "throw") {
2527 context.method = "throw";
2528 context.arg = record.arg;
2529 context.delegate = null;
2530 return ContinueSentinel;
2531 }
2532 var info = record.arg;
2533 if (!info) {
2534 context.method = "throw";
2535 context.arg = new TypeError("iterator result is not an object");
2536 context.delegate = null;
2537 return ContinueSentinel;
2538 }
2539 if (info.done) {
2540 context[delegate.resultName] = info.value;
2541 context.next = delegate.nextLoc;
2542 if (context.method !== "return") {
2543 context.method = "next";
2544 context.arg = undefined;
2545 }
2546 } else {
2547 return info;
2548 }
2549 context.delegate = null;
2550 return ContinueSentinel;
2551 }
2552 defineIteratorMethods(Gp);
2553 Gp[toStringTagSymbol] = "Generator";
2554 Gp[iteratorSymbol] = function () {
2555 return this;
2556 };
2557 Gp.toString = function () {
2558 return "[object Generator]";
2559 };
2560 function pushTryEntry(locs) {
2561 var entry = { tryLoc: locs[0] };
2562 if (1 in locs) {
2563 entry.catchLoc = locs[1];
2564 }
2565 if (2 in locs) {
2566 entry.finallyLoc = locs[2];
2567 entry.afterLoc = locs[3];
2568 }
2569 this.tryEntries.push(entry);
2570 }
2571 function resetTryEntry(entry) {
2572 var record = entry.completion || {};
2573 record.type = "normal";
2574 delete record.arg;
2575 entry.completion = record;
2576 }
2577 function Context(tryLocsList) {
2578 this.tryEntries = [{ tryLoc: "root" }];
2579 tryLocsList.forEach(pushTryEntry, this);
2580 this.reset(true);
2581 }
2582 runtime.keys = function (object) {
2583 var keys = [];
2584 for (var key in object) {
2585 keys.push(key);
2586 }
2587 keys.reverse();
2588 return function next() {
2589 while (keys.length) {
2590 var key = keys.pop();
2591 if (key in object) {
2592 next.value = key;
2593 next.done = false;
2594 return next;
2595 }
2596 }
2597 next.done = true;
2598 return next;
2599 };
2600 };
2601 function values(iterable) {
2602 if (iterable) {
2603 var iteratorMethod = iterable[iteratorSymbol];
2604 if (iteratorMethod) {
2605 return iteratorMethod.call(iterable);
2606 }
2607 if (typeof iterable.next === "function") {
2608 return iterable;
2609 }
2610 if (!isNaN(iterable.length)) {
2611 var i = -1,
2612 next = function next() {
2613 while (++i < iterable.length) {
2614 if (hasOwn.call(iterable, i)) {
2615 next.value = iterable[i];
2616 next.done = false;
2617 return next;
2618 }
2619 }
2620 next.value = undefined;
2621 next.done = true;
2622 return next;
2623 };
2624 return next.next = next;
2625 }
2626 }
2627 return { next: doneResult };
2628 }
2629 runtime.values = values;
2630 function doneResult() {
2631 return {
2632 value: undefined,
2633 done: true
2634 };
2635 }
2636 Context.prototype = {
2637 constructor: Context,
2638 reset: function reset(skipTempReset) {
2639 this.prev = 0;
2640 this.next = 0;
2641 this.sent = this._sent = undefined;
2642 this.done = false;
2643 this.delegate = null;
2644 this.method = "next";
2645 this.arg = undefined;
2646 this.tryEntries.forEach(resetTryEntry);
2647 if (!skipTempReset) {
2648 for (var name in this) {
2649 if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {
2650 this[name] = undefined;
2651 }
2652 }
2653 }
2654 },
2655 stop: function stop() {
2656 this.done = true;
2657 var rootEntry = this.tryEntries[0];
2658 var rootRecord = rootEntry.completion;
2659 if (rootRecord.type === "throw") {
2660 throw rootRecord.arg;
2661 }
2662 return this.rval;
2663 },
2664 dispatchException: function dispatchException(exception) {
2665 if (this.done) {
2666 throw exception;
2667 }
2668 var context = this;
2669 function handle(loc, caught) {
2670 record.type = "throw";
2671 record.arg = exception;
2672 context.next = loc;
2673 if (caught) {
2674 context.method = "next";
2675 context.arg = undefined;
2676 }
2677 return !!caught;
2678 }
2679 for (var i = this.tryEntries.length - 1; i >= 0; --i) {
2680 var entry = this.tryEntries[i];
2681 var record = entry.completion;
2682 if (entry.tryLoc === "root") {
2683 return handle("end");
2684 }
2685 if (entry.tryLoc <= this.prev) {
2686 var hasCatch = hasOwn.call(entry, "catchLoc");
2687 var hasFinally = hasOwn.call(entry, "finallyLoc");
2688 if (hasCatch && hasFinally) {
2689 if (this.prev < entry.catchLoc) {
2690 return handle(entry.catchLoc, true);
2691 } else if (this.prev < entry.finallyLoc) {
2692 return handle(entry.finallyLoc);
2693 }
2694 } else if (hasCatch) {
2695 if (this.prev < entry.catchLoc) {
2696 return handle(entry.catchLoc, true);
2697 }
2698 } else if (hasFinally) {
2699 if (this.prev < entry.finallyLoc) {
2700 return handle(entry.finallyLoc);
2701 }
2702 } else {
2703 throw new Error("try statement without catch or finally");
2704 }
2705 }
2706 }
2707 },
2708 abrupt: function abrupt(type, arg) {
2709 for (var i = this.tryEntries.length - 1; i >= 0; --i) {
2710 var entry = this.tryEntries[i];
2711 if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
2712 var finallyEntry = entry;
2713 break;
2714 }
2715 }
2716 if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {
2717 finallyEntry = null;
2718 }
2719 var record = finallyEntry ? finallyEntry.completion : {};
2720 record.type = type;
2721 record.arg = arg;
2722 if (finallyEntry) {
2723 this.method = "next";
2724 this.next = finallyEntry.finallyLoc;
2725 return ContinueSentinel;
2726 }
2727 return this.complete(record);
2728 },
2729 complete: function complete(record, afterLoc) {
2730 if (record.type === "throw") {
2731 throw record.arg;
2732 }
2733 if (record.type === "break" || record.type === "continue") {
2734 this.next = record.arg;
2735 } else if (record.type === "return") {
2736 this.rval = this.arg = record.arg;
2737 this.method = "return";
2738 this.next = "end";
2739 } else if (record.type === "normal" && afterLoc) {
2740 this.next = afterLoc;
2741 }
2742 return ContinueSentinel;
2743 },
2744 finish: function finish(finallyLoc) {
2745 for (var i = this.tryEntries.length - 1; i >= 0; --i) {
2746 var entry = this.tryEntries[i];
2747 if (entry.finallyLoc === finallyLoc) {
2748 this.complete(entry.completion, entry.afterLoc);
2749 resetTryEntry(entry);
2750 return ContinueSentinel;
2751 }
2752 }
2753 },
2754 "catch": function _catch(tryLoc) {
2755 for (var i = this.tryEntries.length - 1; i >= 0; --i) {
2756 var entry = this.tryEntries[i];
2757 if (entry.tryLoc === tryLoc) {
2758 var record = entry.completion;
2759 if (record.type === "throw") {
2760 var thrown = record.arg;
2761 resetTryEntry(entry);
2762 }
2763 return thrown;
2764 }
2765 }
2766 throw new Error("illegal catch attempt");
2767 },
2768 delegateYield: function delegateYield(iterable, resultName, nextLoc) {
2769 this.delegate = {
2770 iterator: values(iterable),
2771 resultName: resultName,
2772 nextLoc: nextLoc
2773 };
2774 if (this.method === "next") {
2775 this.arg = undefined;
2776 }
2777 return ContinueSentinel;
2778 }
2779 };
2780 }(function () {
2781 return this;
2782 }() || Function("return this")());
2783 /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(5)(module)))
2784
2785 /***/ }),
2786 /* 5 */
2787 /***/ (function(module, exports, __webpack_require__) {
2788
2789 "use strict";
2790
2791
2792 module.exports = function (module) {
2793 if (!module.webpackPolyfill) {
2794 module.deprecate = function () {};
2795 module.paths = [];
2796 if (!module.children) module.children = [];
2797 Object.defineProperty(module, "loaded", {
2798 enumerable: true,
2799 get: function get() {
2800 return module.l;
2801 }
2802 });
2803 Object.defineProperty(module, "id", {
2804 enumerable: true,
2805 get: function get() {
2806 return module.i;
2807 }
2808 });
2809 module.webpackPolyfill = 1;
2810 }
2811 return module;
2812 };
2813
2814 /***/ }),
2815 /* 6 */
2816 /***/ (function(module, exports, __webpack_require__) {
2817
2818 "use strict";
2819
2820
2821 Object.defineProperty(exports, "__esModule", {
2822 value: true
2823 });
2824 exports.moveToEndOfArray = exports.waitOnEventOrTimeout = exports.WaitOnType = exports.animationStarted = exports.normalizeWheelEventDelta = exports.binarySearchFirstItem = exports.watchScroll = exports.scrollIntoView = exports.getOutputScale = exports.approximateFraction = exports.getPageSizeInches = exports.roundToDivide = exports.getVisibleElements = exports.backtrackBeforeAllVisibleElements = exports.parseQueryString = exports.noContextMenuHandler = exports.getPDFFileNameFromURL = exports.ProgressBar = exports.EventBus = exports.NullL10n = exports.TextLayerMode = exports.RendererType = exports.PresentationModeState = exports.isPortraitOrientation = exports.isValidRotation = exports.VERTICAL_PADDING = exports.SCROLLBAR_PADDING = exports.MAX_AUTO_SCALE = exports.UNKNOWN_SCALE = exports.MAX_SCALE = exports.MIN_SCALE = exports.DEFAULT_SCALE = exports.DEFAULT_SCALE_VALUE = exports.CSS_UNITS = undefined;
2825
2826 var _regenerator = __webpack_require__(2);
2827
2828 var _regenerator2 = _interopRequireDefault(_regenerator);
2829
2830 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
2831
2832 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
2833
2834 var _slicedToArray = function () { function sliceIterator(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"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
2835
2836 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2837
2838 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2839
2840 function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
2841
2842 var CSS_UNITS = 96.0 / 72.0;
2843 var DEFAULT_SCALE_VALUE = 'auto';
2844 var DEFAULT_SCALE = 1.0;
2845 var MIN_SCALE = 0.10;
2846 var MAX_SCALE = 10.0;
2847 var UNKNOWN_SCALE = 0;
2848 var MAX_AUTO_SCALE = 1.25;
2849 var SCROLLBAR_PADDING = 40;
2850 var VERTICAL_PADDING = 5;
2851 var PresentationModeState = {
2852 UNKNOWN: 0,
2853 NORMAL: 1,
2854 CHANGING: 2,
2855 FULLSCREEN: 3
2856 };
2857 var RendererType = {
2858 CANVAS: 'canvas',
2859 SVG: 'svg'
2860 };
2861 var TextLayerMode = {
2862 DISABLE: 0,
2863 ENABLE: 1,
2864 ENABLE_ENHANCE: 2
2865 };
2866 function formatL10nValue(text, args) {
2867 if (!args) {
2868 return text;
2869 }
2870 return text.replace(/\{\{\s*(\w+)\s*\}\}/g, function (all, name) {
2871 return name in args ? args[name] : '{{' + name + '}}';
2872 });
2873 }
2874 var NullL10n = {
2875 getLanguage: function () {
2876 var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee() {
2877 return _regenerator2.default.wrap(function _callee$(_context) {
2878 while (1) {
2879 switch (_context.prev = _context.next) {
2880 case 0:
2881 return _context.abrupt('return', 'en-us');
2882
2883 case 1:
2884 case 'end':
2885 return _context.stop();
2886 }
2887 }
2888 }, _callee, this);
2889 }));
2890
2891 function getLanguage() {
2892 return _ref.apply(this, arguments);
2893 }
2894
2895 return getLanguage;
2896 }(),
2897 getDirection: function () {
2898 var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {
2899 return _regenerator2.default.wrap(function _callee2$(_context2) {
2900 while (1) {
2901 switch (_context2.prev = _context2.next) {
2902 case 0:
2903 return _context2.abrupt('return', 'ltr');
2904
2905 case 1:
2906 case 'end':
2907 return _context2.stop();
2908 }
2909 }
2910 }, _callee2, this);
2911 }));
2912
2913 function getDirection() {
2914 return _ref2.apply(this, arguments);
2915 }
2916
2917 return getDirection;
2918 }(),
2919 get: function () {
2920 var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3(property, args, fallback) {
2921 return _regenerator2.default.wrap(function _callee3$(_context3) {
2922 while (1) {
2923 switch (_context3.prev = _context3.next) {
2924 case 0:
2925 return _context3.abrupt('return', formatL10nValue(fallback, args));
2926
2927 case 1:
2928 case 'end':
2929 return _context3.stop();
2930 }
2931 }
2932 }, _callee3, this);
2933 }));
2934
2935 function get(_x, _x2, _x3) {
2936 return _ref3.apply(this, arguments);
2937 }
2938
2939 return get;
2940 }(),
2941 translate: function () {
2942 var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee4(element) {
2943 return _regenerator2.default.wrap(function _callee4$(_context4) {
2944 while (1) {
2945 switch (_context4.prev = _context4.next) {
2946 case 0:
2947 case 'end':
2948 return _context4.stop();
2949 }
2950 }
2951 }, _callee4, this);
2952 }));
2953
2954 function translate(_x4) {
2955 return _ref4.apply(this, arguments);
2956 }
2957
2958 return translate;
2959 }()
2960 };
2961 function getOutputScale(ctx) {
2962 var devicePixelRatio = window.devicePixelRatio || 1;
2963 var backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1;
2964 var pixelRatio = devicePixelRatio / backingStoreRatio;
2965 return {
2966 sx: pixelRatio,
2967 sy: pixelRatio,
2968 scaled: pixelRatio !== 1
2969 };
2970 }
2971 function scrollIntoView(element, spot) {
2972 var skipOverflowHiddenElements = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
2973
2974 var parent = element.offsetParent;
2975 if (!parent) {
2976 console.error('offsetParent is not set -- cannot scroll');
2977 return;
2978 }
2979 var offsetY = element.offsetTop + element.clientTop;
2980 var offsetX = element.offsetLeft + element.clientLeft;
2981 while (parent.clientHeight === parent.scrollHeight && parent.clientWidth === parent.scrollWidth || skipOverflowHiddenElements && getComputedStyle(parent).overflow === 'hidden') {
2982 if (parent.dataset._scaleY) {
2983 offsetY /= parent.dataset._scaleY;
2984 offsetX /= parent.dataset._scaleX;
2985 }
2986 offsetY += parent.offsetTop;
2987 offsetX += parent.offsetLeft;
2988 parent = parent.offsetParent;
2989 if (!parent) {
2990 return;
2991 }
2992 }
2993 if (spot) {
2994 if (spot.top !== undefined) {
2995 offsetY += spot.top;
2996 }
2997 if (spot.left !== undefined) {
2998 offsetX += spot.left;
2999 parent.scrollLeft = offsetX;
3000 }
3001 }
3002 parent.scrollTop = offsetY;
3003 }
3004 function watchScroll(viewAreaElement, callback) {
3005 var debounceScroll = function debounceScroll(evt) {
3006 if (rAF) {
3007 return;
3008 }
3009 rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {
3010 rAF = null;
3011 var currentX = viewAreaElement.scrollLeft;
3012 var lastX = state.lastX;
3013 if (currentX !== lastX) {
3014 state.right = currentX > lastX;
3015 }
3016 state.lastX = currentX;
3017 var currentY = viewAreaElement.scrollTop;
3018 var lastY = state.lastY;
3019 if (currentY !== lastY) {
3020 state.down = currentY > lastY;
3021 }
3022 state.lastY = currentY;
3023 callback(state);
3024 });
3025 };
3026 var state = {
3027 right: true,
3028 down: true,
3029 lastX: viewAreaElement.scrollLeft,
3030 lastY: viewAreaElement.scrollTop,
3031 _eventHandler: debounceScroll
3032 };
3033 var rAF = null;
3034 viewAreaElement.addEventListener('scroll', debounceScroll, true);
3035 return state;
3036 }
3037 function parseQueryString(query) {
3038 var parts = query.split('&');
3039 var params = Object.create(null);
3040 for (var i = 0, ii = parts.length; i < ii; ++i) {
3041 var param = parts[i].split('=');
3042 var key = param[0].toLowerCase();
3043 var value = param.length > 1 ? param[1] : null;
3044 params[decodeURIComponent(key)] = decodeURIComponent(value);
3045 }
3046 return params;
3047 }
3048 function binarySearchFirstItem(items, condition) {
3049 var minIndex = 0;
3050 var maxIndex = items.length - 1;
3051 if (items.length === 0 || !condition(items[maxIndex])) {
3052 return items.length;
3053 }
3054 if (condition(items[minIndex])) {
3055 return minIndex;
3056 }
3057 while (minIndex < maxIndex) {
3058 var currentIndex = minIndex + maxIndex >> 1;
3059 var currentItem = items[currentIndex];
3060 if (condition(currentItem)) {
3061 maxIndex = currentIndex;
3062 } else {
3063 minIndex = currentIndex + 1;
3064 }
3065 }
3066 return minIndex;
3067 }
3068 function approximateFraction(x) {
3069 if (Math.floor(x) === x) {
3070 return [x, 1];
3071 }
3072 var xinv = 1 / x;
3073 var limit = 8;
3074 if (xinv > limit) {
3075 return [1, limit];
3076 } else if (Math.floor(xinv) === xinv) {
3077 return [1, xinv];
3078 }
3079 var x_ = x > 1 ? xinv : x;
3080 var a = 0,
3081 b = 1,
3082 c = 1,
3083 d = 1;
3084 while (true) {
3085 var p = a + c,
3086 q = b + d;
3087 if (q > limit) {
3088 break;
3089 }
3090 if (x_ <= p / q) {
3091 c = p;
3092 d = q;
3093 } else {
3094 a = p;
3095 b = q;
3096 }
3097 }
3098 var result = void 0;
3099 if (x_ - a / b < c / d - x_) {
3100 result = x_ === x ? [a, b] : [b, a];
3101 } else {
3102 result = x_ === x ? [c, d] : [d, c];
3103 }
3104 return result;
3105 }
3106 function roundToDivide(x, div) {
3107 var r = x % div;
3108 return r === 0 ? x : Math.round(x - r + div);
3109 }
3110 function getPageSizeInches(_ref5) {
3111 var view = _ref5.view,
3112 userUnit = _ref5.userUnit,
3113 rotate = _ref5.rotate;
3114
3115 var _view = _slicedToArray(view, 4),
3116 x1 = _view[0],
3117 y1 = _view[1],
3118 x2 = _view[2],
3119 y2 = _view[3];
3120
3121 var changeOrientation = rotate % 180 !== 0;
3122 var width = (x2 - x1) / 72 * userUnit;
3123 var height = (y2 - y1) / 72 * userUnit;
3124 return {
3125 width: changeOrientation ? height : width,
3126 height: changeOrientation ? width : height
3127 };
3128 }
3129 function backtrackBeforeAllVisibleElements(index, views, top) {
3130 if (index < 2) {
3131 return index;
3132 }
3133 var elt = views[index].div;
3134 var pageTop = elt.offsetTop + elt.clientTop;
3135 if (pageTop >= top) {
3136 elt = views[index - 1].div;
3137 pageTop = elt.offsetTop + elt.clientTop;
3138 }
3139 for (var i = index - 2; i >= 0; --i) {
3140 elt = views[i].div;
3141 if (elt.offsetTop + elt.clientTop + elt.clientHeight <= pageTop) {
3142 break;
3143 }
3144 index = i;
3145 }
3146 return index;
3147 }
3148 function getVisibleElements(scrollEl, views) {
3149 var sortByVisibility = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
3150 var horizontal = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
3151
3152 var top = scrollEl.scrollTop,
3153 bottom = top + scrollEl.clientHeight;
3154 var left = scrollEl.scrollLeft,
3155 right = left + scrollEl.clientWidth;
3156 function isElementBottomAfterViewTop(view) {
3157 var element = view.div;
3158 var elementBottom = element.offsetTop + element.clientTop + element.clientHeight;
3159 return elementBottom > top;
3160 }
3161 function isElementRightAfterViewLeft(view) {
3162 var element = view.div;
3163 var elementRight = element.offsetLeft + element.clientLeft + element.clientWidth;
3164 return elementRight > left;
3165 }
3166 var visible = [],
3167 view = void 0,
3168 element = void 0;
3169 var currentHeight = void 0,
3170 viewHeight = void 0,
3171 viewBottom = void 0,
3172 hiddenHeight = void 0;
3173 var currentWidth = void 0,
3174 viewWidth = void 0,
3175 viewRight = void 0,
3176 hiddenWidth = void 0;
3177 var percentVisible = void 0;
3178 var firstVisibleElementInd = views.length === 0 ? 0 : binarySearchFirstItem(views, horizontal ? isElementRightAfterViewLeft : isElementBottomAfterViewTop);
3179 if (views.length > 0 && !horizontal) {
3180 firstVisibleElementInd = backtrackBeforeAllVisibleElements(firstVisibleElementInd, views, top);
3181 }
3182 var lastEdge = horizontal ? right : -1;
3183 for (var i = firstVisibleElementInd, ii = views.length; i < ii; i++) {
3184 view = views[i];
3185 element = view.div;
3186 currentWidth = element.offsetLeft + element.clientLeft;
3187 currentHeight = element.offsetTop + element.clientTop;
3188 viewWidth = element.clientWidth;
3189 viewHeight = element.clientHeight;
3190 viewRight = currentWidth + viewWidth;
3191 viewBottom = currentHeight + viewHeight;
3192 if (lastEdge === -1) {
3193 if (viewBottom >= bottom) {
3194 lastEdge = viewBottom;
3195 }
3196 } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) {
3197 break;
3198 }
3199 if (viewBottom <= top || currentHeight >= bottom || viewRight <= left || currentWidth >= right) {
3200 continue;
3201 }
3202 hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom);
3203 hiddenWidth = Math.max(0, left - currentWidth) + Math.max(0, viewRight - right);
3204 percentVisible = (viewHeight - hiddenHeight) * (viewWidth - hiddenWidth) * 100 / viewHeight / viewWidth | 0;
3205 visible.push({
3206 id: view.id,
3207 x: currentWidth,
3208 y: currentHeight,
3209 view: view,
3210 percent: percentVisible
3211 });
3212 }
3213 var first = visible[0];
3214 var last = visible[visible.length - 1];
3215 if (sortByVisibility) {
3216 visible.sort(function (a, b) {
3217 var pc = a.percent - b.percent;
3218 if (Math.abs(pc) > 0.001) {
3219 return -pc;
3220 }
3221 return a.id - b.id;
3222 });
3223 }
3224 return {
3225 first: first,
3226 last: last,
3227 views: visible
3228 };
3229 }
3230 function noContextMenuHandler(evt) {
3231 evt.preventDefault();
3232 }
3233 function isDataSchema(url) {
3234 var i = 0,
3235 ii = url.length;
3236 while (i < ii && url[i].trim() === '') {
3237 i++;
3238 }
3239 return url.substring(i, i + 5).toLowerCase() === 'data:';
3240 }
3241 function getPDFFileNameFromURL(url) {
3242 var defaultFilename = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'document.pdf';
3243
3244 if (typeof url !== 'string') {
3245 return defaultFilename;
3246 }
3247 if (isDataSchema(url)) {
3248 console.warn('getPDFFileNameFromURL: ' + 'ignoring "data:" URL for performance reasons.');
3249 return defaultFilename;
3250 }
3251 var reURI = /^(?:(?:[^:]+:)?\/\/[^\/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
3252 var reFilename = /[^\/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
3253 var splitURI = reURI.exec(url);
3254 var suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);
3255 if (suggestedFilename) {
3256 suggestedFilename = suggestedFilename[0];
3257 if (suggestedFilename.includes('%')) {
3258 try {
3259 suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];
3260 } catch (ex) {}
3261 }
3262 }
3263 return suggestedFilename || defaultFilename;
3264 }
3265 function normalizeWheelEventDelta(evt) {
3266 var delta = Math.sqrt(evt.deltaX * evt.deltaX + evt.deltaY * evt.deltaY);
3267 var angle = Math.atan2(evt.deltaY, evt.deltaX);
3268 if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) {
3269 delta = -delta;
3270 }
3271 var MOUSE_DOM_DELTA_PIXEL_MODE = 0;
3272 var MOUSE_DOM_DELTA_LINE_MODE = 1;
3273 var MOUSE_PIXELS_PER_LINE = 30;
3274 var MOUSE_LINES_PER_PAGE = 30;
3275 if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) {
3276 delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE;
3277 } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) {
3278 delta /= MOUSE_LINES_PER_PAGE;
3279 }
3280 return delta;
3281 }
3282 function isValidRotation(angle) {
3283 return Number.isInteger(angle) && angle % 90 === 0;
3284 }
3285 function isPortraitOrientation(size) {
3286 return size.width <= size.height;
3287 }
3288 var WaitOnType = {
3289 EVENT: 'event',
3290 TIMEOUT: 'timeout'
3291 };
3292 function waitOnEventOrTimeout(_ref6) {
3293 var target = _ref6.target,
3294 name = _ref6.name,
3295 _ref6$delay = _ref6.delay,
3296 delay = _ref6$delay === undefined ? 0 : _ref6$delay;
3297
3298 return new Promise(function (resolve, reject) {
3299 if ((typeof target === 'undefined' ? 'undefined' : _typeof(target)) !== 'object' || !(name && typeof name === 'string') || !(Number.isInteger(delay) && delay >= 0)) {
3300 throw new Error('waitOnEventOrTimeout - invalid parameters.');
3301 }
3302 function handler(type) {
3303 if (target instanceof EventBus) {
3304 target.off(name, eventHandler);
3305 } else {
3306 target.removeEventListener(name, eventHandler);
3307 }
3308 if (timeout) {
3309 clearTimeout(timeout);
3310 }
3311 resolve(type);
3312 }
3313 var eventHandler = handler.bind(null, WaitOnType.EVENT);
3314 if (target instanceof EventBus) {
3315 target.on(name, eventHandler);
3316 } else {
3317 target.addEventListener(name, eventHandler);
3318 }
3319 var timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT);
3320 var timeout = setTimeout(timeoutHandler, delay);
3321 });
3322 }
3323 var animationStarted = new Promise(function (resolve) {
3324 window.requestAnimationFrame(resolve);
3325 });
3326
3327 var EventBus = function () {
3328 function EventBus() {
3329 var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
3330 _ref7$dispatchToDOM = _ref7.dispatchToDOM,
3331 dispatchToDOM = _ref7$dispatchToDOM === undefined ? false : _ref7$dispatchToDOM;
3332
3333 _classCallCheck(this, EventBus);
3334
3335 this._listeners = Object.create(null);
3336 this._dispatchToDOM = dispatchToDOM === true;
3337 }
3338
3339 _createClass(EventBus, [{
3340 key: 'on',
3341 value: function on(eventName, listener) {
3342 var eventListeners = this._listeners[eventName];
3343 if (!eventListeners) {
3344 eventListeners = [];
3345 this._listeners[eventName] = eventListeners;
3346 }
3347 eventListeners.push(listener);
3348 }
3349 }, {
3350 key: 'off',
3351 value: function off(eventName, listener) {
3352 var eventListeners = this._listeners[eventName];
3353 var i = void 0;
3354 if (!eventListeners || (i = eventListeners.indexOf(listener)) < 0) {
3355 return;
3356 }
3357 eventListeners.splice(i, 1);
3358 }
3359 }, {
3360 key: 'dispatch',
3361 value: function dispatch(eventName) {
3362 var eventListeners = this._listeners[eventName];
3363 if (!eventListeners || eventListeners.length === 0) {
3364 if (this._dispatchToDOM) {
3365 var _args5 = Array.prototype.slice.call(arguments, 1);
3366 this._dispatchDOMEvent(eventName, _args5);
3367 }
3368 return;
3369 }
3370 var args = Array.prototype.slice.call(arguments, 1);
3371 eventListeners.slice(0).forEach(function (listener) {
3372 listener.apply(null, args);
3373 });
3374 if (this._dispatchToDOM) {
3375 this._dispatchDOMEvent(eventName, args);
3376 }
3377 }
3378 }, {
3379 key: '_dispatchDOMEvent',
3380 value: function _dispatchDOMEvent(eventName) {
3381 var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
3382
3383 if (!this._dispatchToDOM) {
3384 return;
3385 }
3386 var details = Object.create(null);
3387 if (args && args.length > 0) {
3388 var obj = args[0];
3389 for (var key in obj) {
3390 var value = obj[key];
3391 if (key === 'source') {
3392 if (value === window || value === document) {
3393 return;
3394 }
3395 continue;
3396 }
3397 details[key] = value;
3398 }
3399 }
3400 var event = document.createEvent('CustomEvent');
3401 event.initCustomEvent(eventName, true, true, details);
3402 document.dispatchEvent(event);
3403 }
3404 }]);
3405
3406 return EventBus;
3407 }();
3408
3409 function clamp(v, min, max) {
3410 return Math.min(Math.max(v, min), max);
3411 }
3412
3413 var ProgressBar = function () {
3414 function ProgressBar(id) {
3415 var _ref8 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
3416 height = _ref8.height,
3417 width = _ref8.width,
3418 units = _ref8.units;
3419
3420 _classCallCheck(this, ProgressBar);
3421
3422 this.visible = true;
3423 this.div = document.querySelector(id + ' .progress');
3424 this.bar = this.div.parentNode;
3425 this.height = height || 100;
3426 this.width = width || 100;
3427 this.units = units || '%';
3428 this.div.style.height = this.height + this.units;
3429 this.percent = 0;
3430 }
3431
3432 _createClass(ProgressBar, [{
3433 key: '_updateBar',
3434 value: function _updateBar() {
3435 if (this._indeterminate) {
3436 this.div.classList.add('indeterminate');
3437 this.div.style.width = this.width + this.units;
3438 return;
3439 }
3440 this.div.classList.remove('indeterminate');
3441 var progressSize = this.width * this._percent / 100;
3442 this.div.style.width = progressSize + this.units;
3443 }
3444 }, {
3445 key: 'setWidth',
3446 value: function setWidth(viewer) {
3447 if (!viewer) {
3448 return;
3449 }
3450 var container = viewer.parentNode;
3451 var scrollbarWidth = container.offsetWidth - viewer.offsetWidth;
3452 if (scrollbarWidth > 0) {
3453 this.bar.setAttribute('style', 'width: calc(100% - ' + scrollbarWidth + 'px);');
3454 }
3455 }
3456 }, {
3457 key: 'hide',
3458 value: function hide() {
3459 if (!this.visible) {
3460 return;
3461 }
3462 this.visible = false;
3463 this.bar.classList.add('hidden');
3464 document.body.classList.remove('loadingInProgress');
3465 }
3466 }, {
3467 key: 'show',
3468 value: function show() {
3469 if (this.visible) {
3470 return;
3471 }
3472 this.visible = true;
3473 document.body.classList.add('loadingInProgress');
3474 this.bar.classList.remove('hidden');
3475 }
3476 }, {
3477 key: 'percent',
3478 get: function get() {
3479 return this._percent;
3480 },
3481 set: function set(val) {
3482 this._indeterminate = isNaN(val);
3483 this._percent = clamp(val, 0, 100);
3484 this._updateBar();
3485 }
3486 }]);
3487
3488 return ProgressBar;
3489 }();
3490
3491 function moveToEndOfArray(arr, condition) {
3492 var moved = [],
3493 len = arr.length;
3494 var write = 0;
3495 for (var read = 0; read < len; ++read) {
3496 if (condition(arr[read])) {
3497 moved.push(arr[read]);
3498 } else {
3499 arr[write] = arr[read];
3500 ++write;
3501 }
3502 }
3503 for (var _read = 0; write < len; ++_read, ++write) {
3504 arr[write] = moved[_read];
3505 }
3506 }
3507 exports.CSS_UNITS = CSS_UNITS;
3508 exports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE;
3509 exports.DEFAULT_SCALE = DEFAULT_SCALE;
3510 exports.MIN_SCALE = MIN_SCALE;
3511 exports.MAX_SCALE = MAX_SCALE;
3512 exports.UNKNOWN_SCALE = UNKNOWN_SCALE;
3513 exports.MAX_AUTO_SCALE = MAX_AUTO_SCALE;
3514 exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING;
3515 exports.VERTICAL_PADDING = VERTICAL_PADDING;
3516 exports.isValidRotation = isValidRotation;
3517 exports.isPortraitOrientation = isPortraitOrientation;
3518 exports.PresentationModeState = PresentationModeState;
3519 exports.RendererType = RendererType;
3520 exports.TextLayerMode = TextLayerMode;
3521 exports.NullL10n = NullL10n;
3522 exports.EventBus = EventBus;
3523 exports.ProgressBar = ProgressBar;
3524 exports.getPDFFileNameFromURL = getPDFFileNameFromURL;
3525 exports.noContextMenuHandler = noContextMenuHandler;
3526 exports.parseQueryString = parseQueryString;
3527 exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements;
3528 exports.getVisibleElements = getVisibleElements;
3529 exports.roundToDivide = roundToDivide;
3530 exports.getPageSizeInches = getPageSizeInches;
3531 exports.approximateFraction = approximateFraction;
3532 exports.getOutputScale = getOutputScale;
3533 exports.scrollIntoView = scrollIntoView;
3534 exports.watchScroll = watchScroll;
3535 exports.binarySearchFirstItem = binarySearchFirstItem;
3536 exports.normalizeWheelEventDelta = normalizeWheelEventDelta;
3537 exports.animationStarted = animationStarted;
3538 exports.WaitOnType = WaitOnType;
3539 exports.waitOnEventOrTimeout = waitOnEventOrTimeout;
3540 exports.moveToEndOfArray = moveToEndOfArray;
3541
3542 /***/ }),
3543 /* 7 */
3544 /***/ (function(module, exports, __webpack_require__) {
3545
3546 "use strict";
3547
3548
3549 var pdfjsLib = void 0;
3550 if (typeof window !== 'undefined' && window['pdfjs-dist/build/pdf']) {
3551 pdfjsLib = window['pdfjs-dist/build/pdf'];
3552 } else {
3553 pdfjsLib = require('../build/pdf.js');
3554 }
3555 module.exports = pdfjsLib;
3556
3557 /***/ }),
3558 /* 8 */
3559 /***/ (function(module, exports, __webpack_require__) {
3560
3561 "use strict";
3562
3563
3564 Object.defineProperty(exports, "__esModule", {
3565 value: true
3566 });
3567 exports.PDFCursorTools = exports.CursorTool = undefined;
3568
3569 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
3570
3571 var _grab_to_pan = __webpack_require__(9);
3572
3573 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3574
3575 var CursorTool = {
3576 SELECT: 0,
3577 HAND: 1,
3578 ZOOM: 2
3579 };
3580
3581 var PDFCursorTools = function () {
3582 function PDFCursorTools(_ref) {
3583 var _this = this;
3584
3585 var container = _ref.container,
3586 eventBus = _ref.eventBus,
3587 _ref$cursorToolOnLoad = _ref.cursorToolOnLoad,
3588 cursorToolOnLoad = _ref$cursorToolOnLoad === undefined ? CursorTool.SELECT : _ref$cursorToolOnLoad;
3589
3590 _classCallCheck(this, PDFCursorTools);
3591
3592 this.container = container;
3593 this.eventBus = eventBus;
3594 this.active = CursorTool.SELECT;
3595 this.activeBeforePresentationMode = null;
3596 this.handTool = new _grab_to_pan.GrabToPan({ element: this.container });
3597 this._addEventListeners();
3598 Promise.resolve().then(function () {
3599 _this.switchTool(cursorToolOnLoad);
3600 });
3601 }
3602
3603 _createClass(PDFCursorTools, [{
3604 key: 'switchTool',
3605 value: function switchTool(tool) {
3606 var _this2 = this;
3607
3608 if (this.activeBeforePresentationMode !== null) {
3609 return;
3610 }
3611 if (tool === this.active) {
3612 return;
3613 }
3614 var disableActiveTool = function disableActiveTool() {
3615 switch (_this2.active) {
3616 case CursorTool.SELECT:
3617 break;
3618 case CursorTool.HAND:
3619 _this2.handTool.deactivate();
3620 break;
3621 case CursorTool.ZOOM:
3622 }
3623 };
3624 switch (tool) {
3625 case CursorTool.SELECT:
3626 disableActiveTool();
3627 break;
3628 case CursorTool.HAND:
3629 disableActiveTool();
3630 this.handTool.activate();
3631 break;
3632 case CursorTool.ZOOM:
3633 default:
3634 console.error('switchTool: "' + tool + '" is an unsupported value.');
3635 return;
3636 }
3637 this.active = tool;
3638 this._dispatchEvent();
3639 }
3640 }, {
3641 key: '_dispatchEvent',
3642 value: function _dispatchEvent() {
3643 this.eventBus.dispatch('cursortoolchanged', {
3644 source: this,
3645 tool: this.active
3646 });
3647 }
3648 }, {
3649 key: '_addEventListeners',
3650 value: function _addEventListeners() {
3651 var _this3 = this;
3652
3653 this.eventBus.on('switchcursortool', function (evt) {
3654 _this3.switchTool(evt.tool);
3655 });
3656 this.eventBus.on('presentationmodechanged', function (evt) {
3657 if (evt.switchInProgress) {
3658 return;
3659 }
3660 var previouslyActive = void 0;
3661 if (evt.active) {
3662 previouslyActive = _this3.active;
3663 _this3.switchTool(CursorTool.SELECT);
3664 _this3.activeBeforePresentationMode = previouslyActive;
3665 } else {
3666 previouslyActive = _this3.activeBeforePresentationMode;
3667 _this3.activeBeforePresentationMode = null;
3668 _this3.switchTool(previouslyActive);
3669 }
3670 });
3671 }
3672 }, {
3673 key: 'activeTool',
3674 get: function get() {
3675 return this.active;
3676 }
3677 }]);
3678
3679 return PDFCursorTools;
3680 }();
3681
3682 exports.CursorTool = CursorTool;
3683 exports.PDFCursorTools = PDFCursorTools;
3684
3685 /***/ }),
3686 /* 9 */
3687 /***/ (function(module, exports, __webpack_require__) {
3688
3689 "use strict";
3690
3691
3692 Object.defineProperty(exports, "__esModule", {
3693 value: true
3694 });
3695 function GrabToPan(options) {
3696 this.element = options.element;
3697 this.document = options.element.ownerDocument;
3698 if (typeof options.ignoreTarget === 'function') {
3699 this.ignoreTarget = options.ignoreTarget;
3700 }
3701 this.onActiveChanged = options.onActiveChanged;
3702 this.activate = this.activate.bind(this);
3703 this.deactivate = this.deactivate.bind(this);
3704 this.toggle = this.toggle.bind(this);
3705 this._onmousedown = this._onmousedown.bind(this);
3706 this._onmousemove = this._onmousemove.bind(this);
3707 this._endPan = this._endPan.bind(this);
3708 var overlay = this.overlay = document.createElement('div');
3709 overlay.className = 'grab-to-pan-grabbing';
3710 }
3711 GrabToPan.prototype = {
3712 CSS_CLASS_GRAB: 'grab-to-pan-grab',
3713 activate: function GrabToPan_activate() {
3714 if (!this.active) {
3715 this.active = true;
3716 this.element.addEventListener('mousedown', this._onmousedown, true);
3717 this.element.classList.add(this.CSS_CLASS_GRAB);
3718 if (this.onActiveChanged) {
3719 this.onActiveChanged(true);
3720 }
3721 }
3722 },
3723 deactivate: function GrabToPan_deactivate() {
3724 if (this.active) {
3725 this.active = false;
3726 this.element.removeEventListener('mousedown', this._onmousedown, true);
3727 this._endPan();
3728 this.element.classList.remove(this.CSS_CLASS_GRAB);
3729 if (this.onActiveChanged) {
3730 this.onActiveChanged(false);
3731 }
3732 }
3733 },
3734 toggle: function GrabToPan_toggle() {
3735 if (this.active) {
3736 this.deactivate();
3737 } else {
3738 this.activate();
3739 }
3740 },
3741 ignoreTarget: function GrabToPan_ignoreTarget(node) {
3742 return node[matchesSelector]('a[href], a[href] *, input, textarea, button, button *, select, option');
3743 },
3744 _onmousedown: function GrabToPan__onmousedown(event) {
3745 if (event.button !== 0 || this.ignoreTarget(event.target)) {
3746 return;
3747 }
3748 if (event.originalTarget) {
3749 try {
3750 event.originalTarget.tagName;
3751 } catch (e) {
3752 return;
3753 }
3754 }
3755 this.scrollLeftStart = this.element.scrollLeft;
3756 this.scrollTopStart = this.element.scrollTop;
3757 this.clientXStart = event.clientX;
3758 this.clientYStart = event.clientY;
3759 this.document.addEventListener('mousemove', this._onmousemove, true);
3760 this.document.addEventListener('mouseup', this._endPan, true);
3761 this.element.addEventListener('scroll', this._endPan, true);
3762 event.preventDefault();
3763 event.stopPropagation();
3764 var focusedElement = document.activeElement;
3765 if (focusedElement && !focusedElement.contains(event.target)) {
3766 focusedElement.blur();
3767 }
3768 },
3769 _onmousemove: function GrabToPan__onmousemove(event) {
3770 this.element.removeEventListener('scroll', this._endPan, true);
3771 if (isLeftMouseReleased(event)) {
3772 this._endPan();
3773 return;
3774 }
3775 var xDiff = event.clientX - this.clientXStart;
3776 var yDiff = event.clientY - this.clientYStart;
3777 var scrollTop = this.scrollTopStart - yDiff;
3778 var scrollLeft = this.scrollLeftStart - xDiff;
3779 if (this.element.scrollTo) {
3780 this.element.scrollTo({
3781 top: scrollTop,
3782 left: scrollLeft,
3783 behavior: 'instant'
3784 });
3785 } else {
3786 this.element.scrollTop = scrollTop;
3787 this.element.scrollLeft = scrollLeft;
3788 }
3789 if (!this.overlay.parentNode) {
3790 document.body.appendChild(this.overlay);
3791 }
3792 },
3793 _endPan: function GrabToPan__endPan() {
3794 this.element.removeEventListener('scroll', this._endPan, true);
3795 this.document.removeEventListener('mousemove', this._onmousemove, true);
3796 this.document.removeEventListener('mouseup', this._endPan, true);
3797 this.overlay.remove();
3798 }
3799 };
3800 var matchesSelector;
3801 ['webkitM', 'mozM', 'msM', 'oM', 'm'].some(function (prefix) {
3802 var name = prefix + 'atches';
3803 if (name in document.documentElement) {
3804 matchesSelector = name;
3805 }
3806 name += 'Selector';
3807 if (name in document.documentElement) {
3808 matchesSelector = name;
3809 }
3810 return matchesSelector;
3811 });
3812 var isNotIEorIsIE10plus = !document.documentMode || document.documentMode > 9;
3813 var chrome = window.chrome;
3814 var isChrome15OrOpera15plus = chrome && (chrome.webstore || chrome.app);
3815 var isSafari6plus = /Apple/.test(navigator.vendor) && /Version\/([6-9]\d*|[1-5]\d+)/.test(navigator.userAgent);
3816 function isLeftMouseReleased(event) {
3817 if ('buttons' in event && isNotIEorIsIE10plus) {
3818 return !(event.buttons & 1);
3819 }
3820 if (isChrome15OrOpera15plus || isSafari6plus) {
3821 return event.which === 0;
3822 }
3823 }
3824 exports.GrabToPan = GrabToPan;
3825
3826 /***/ }),
3827 /* 10 */
3828 /***/ (function(module, exports, __webpack_require__) {
3829
3830 "use strict";
3831
3832
3833 Object.defineProperty(exports, "__esModule", {
3834 value: true
3835 });
3836
3837 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
3838
3839 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3840
3841 var CLEANUP_TIMEOUT = 30000;
3842 var RenderingStates = {
3843 INITIAL: 0,
3844 RUNNING: 1,
3845 PAUSED: 2,
3846 FINISHED: 3
3847 };
3848
3849 var PDFRenderingQueue = function () {
3850 function PDFRenderingQueue() {
3851 _classCallCheck(this, PDFRenderingQueue);
3852
3853 this.pdfViewer = null;
3854 this.pdfThumbnailViewer = null;
3855 this.onIdle = null;
3856 this.highestPriorityPage = null;
3857 this.idleTimeout = null;
3858 this.printing = false;
3859 this.isThumbnailViewEnabled = false;
3860 }
3861
3862 _createClass(PDFRenderingQueue, [{
3863 key: "setViewer",
3864 value: function setViewer(pdfViewer) {
3865 this.pdfViewer = pdfViewer;
3866 }
3867 }, {
3868 key: "setThumbnailViewer",
3869 value: function setThumbnailViewer(pdfThumbnailViewer) {
3870 this.pdfThumbnailViewer = pdfThumbnailViewer;
3871 }
3872 }, {
3873 key: "isHighestPriority",
3874 value: function isHighestPriority(view) {
3875 return this.highestPriorityPage === view.renderingId;
3876 }
3877 }, {
3878 key: "renderHighestPriority",
3879 value: function renderHighestPriority(currentlyVisiblePages) {
3880 if (this.idleTimeout) {
3881 clearTimeout(this.idleTimeout);
3882 this.idleTimeout = null;
3883 }
3884 if (this.pdfViewer.forceRendering(currentlyVisiblePages)) {
3885 return;
3886 }
3887 if (this.pdfThumbnailViewer && this.isThumbnailViewEnabled) {
3888 if (this.pdfThumbnailViewer.forceRendering()) {
3889 return;
3890 }
3891 }
3892 if (this.printing) {
3893 return;
3894 }
3895 if (this.onIdle) {
3896 this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT);
3897 }
3898 }
3899 }, {
3900 key: "getHighestPriority",
3901 value: function getHighestPriority(visible, views, scrolledDown) {
3902 var visibleViews = visible.views;
3903 var numVisible = visibleViews.length;
3904 if (numVisible === 0) {
3905 return false;
3906 }
3907 for (var i = 0; i < numVisible; ++i) {
3908 var view = visibleViews[i].view;
3909 if (!this.isViewFinished(view)) {
3910 return view;
3911 }
3912 }
3913 if (scrolledDown) {
3914 var nextPageIndex = visible.last.id;
3915 if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex])) {
3916 return views[nextPageIndex];
3917 }
3918 } else {
3919 var previousPageIndex = visible.first.id - 2;
3920 if (views[previousPageIndex] && !this.isViewFinished(views[previousPageIndex])) {
3921 return views[previousPageIndex];
3922 }
3923 }
3924 return null;
3925 }
3926 }, {
3927 key: "isViewFinished",
3928 value: function isViewFinished(view) {
3929 return view.renderingState === RenderingStates.FINISHED;
3930 }
3931 }, {
3932 key: "renderView",
3933 value: function renderView(view) {
3934 var _this = this;
3935
3936 switch (view.renderingState) {
3937 case RenderingStates.FINISHED:
3938 return false;
3939 case RenderingStates.PAUSED:
3940 this.highestPriorityPage = view.renderingId;
3941 view.resume();
3942 break;
3943 case RenderingStates.RUNNING:
3944 this.highestPriorityPage = view.renderingId;
3945 break;
3946 case RenderingStates.INITIAL:
3947 this.highestPriorityPage = view.renderingId;
3948 var continueRendering = function continueRendering() {
3949 _this.renderHighestPriority();
3950 };
3951 view.draw().then(continueRendering, continueRendering);
3952 break;
3953 }
3954 return true;
3955 }
3956 }]);
3957
3958 return PDFRenderingQueue;
3959 }();
3960
3961 exports.RenderingStates = RenderingStates;
3962 exports.PDFRenderingQueue = PDFRenderingQueue;
3963
3964 /***/ }),
3965 /* 11 */
3966 /***/ (function(module, exports, __webpack_require__) {
3967
3968 "use strict";
3969
3970
3971 Object.defineProperty(exports, "__esModule", {
3972 value: true
3973 });
3974 exports.PDFSidebar = exports.SidebarView = undefined;
3975
3976 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
3977
3978 var _ui_utils = __webpack_require__(6);
3979
3980 var _pdf_rendering_queue = __webpack_require__(10);
3981
3982 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3983
3984 var UI_NOTIFICATION_CLASS = 'pdfSidebarNotification';
3985 var SidebarView = {
3986 NONE: 0,
3987 THUMBS: 1,
3988 OUTLINE: 2,
3989 ATTACHMENTS: 3
3990 };
3991
3992 var PDFSidebar = function () {
3993 function PDFSidebar(options, eventBus) {
3994 var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n;
3995
3996 _classCallCheck(this, PDFSidebar);
3997
3998 this.isOpen = false;
3999 this.active = SidebarView.THUMBS;
4000 this.isInitialViewSet = false;
4001 this.onToggled = null;
4002 this.pdfViewer = options.pdfViewer;
4003 this.pdfThumbnailViewer = options.pdfThumbnailViewer;
4004 this.outerContainer = options.outerContainer;
4005 this.viewerContainer = options.viewerContainer;
4006 this.toggleButton = options.toggleButton;
4007 this.thumbnailButton = options.thumbnailButton;
4008 this.outlineButton = options.outlineButton;
4009 this.attachmentsButton = options.attachmentsButton;
4010 this.thumbnailView = options.thumbnailView;
4011 this.outlineView = options.outlineView;
4012 this.attachmentsView = options.attachmentsView;
4013 this.disableNotification = options.disableNotification || false;
4014 this.eventBus = eventBus;
4015 this.l10n = l10n;
4016 this._addEventListeners();
4017 }
4018
4019 _createClass(PDFSidebar, [{
4020 key: 'reset',
4021 value: function reset() {
4022 this.isInitialViewSet = false;
4023 this._hideUINotification(null);
4024 this.switchView(SidebarView.THUMBS);
4025 this.outlineButton.disabled = false;
4026 this.attachmentsButton.disabled = false;
4027 }
4028 }, {
4029 key: 'setInitialView',
4030 value: function setInitialView() {
4031 var view = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SidebarView.NONE;
4032
4033 if (this.isInitialViewSet) {
4034 return;
4035 }
4036 this.isInitialViewSet = true;
4037 if (this.isOpen && view === SidebarView.NONE) {
4038 this._dispatchEvent();
4039 return;
4040 }
4041 var isViewPreserved = view === this.visibleView;
4042 this.switchView(view, true);
4043 if (isViewPreserved) {
4044 this._dispatchEvent();
4045 }
4046 }
4047 }, {
4048 key: 'switchView',
4049 value: function switchView(view) {
4050 var forceOpen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
4051
4052 if (view === SidebarView.NONE) {
4053 this.close();
4054 return;
4055 }
4056 var isViewChanged = view !== this.active;
4057 var shouldForceRendering = false;
4058 switch (view) {
4059 case SidebarView.THUMBS:
4060 this.thumbnailButton.classList.add('toggled');
4061 this.outlineButton.classList.remove('toggled');
4062 this.attachmentsButton.classList.remove('toggled');
4063 this.thumbnailView.classList.remove('hidden');
4064 this.outlineView.classList.add('hidden');
4065 this.attachmentsView.classList.add('hidden');
4066 if (this.isOpen && isViewChanged) {
4067 this._updateThumbnailViewer();
4068 shouldForceRendering = true;
4069 }
4070 break;
4071 case SidebarView.OUTLINE:
4072 if (this.outlineButton.disabled) {
4073 return;
4074 }
4075 this.thumbnailButton.classList.remove('toggled');
4076 this.outlineButton.classList.add('toggled');
4077 this.attachmentsButton.classList.remove('toggled');
4078 this.thumbnailView.classList.add('hidden');
4079 this.outlineView.classList.remove('hidden');
4080 this.attachmentsView.classList.add('hidden');
4081 break;
4082 case SidebarView.ATTACHMENTS:
4083 if (this.attachmentsButton.disabled) {
4084 return;
4085 }
4086 this.thumbnailButton.classList.remove('toggled');
4087 this.outlineButton.classList.remove('toggled');
4088 this.attachmentsButton.classList.add('toggled');
4089 this.thumbnailView.classList.add('hidden');
4090 this.outlineView.classList.add('hidden');
4091 this.attachmentsView.classList.remove('hidden');
4092 break;
4093 default:
4094 console.error('PDFSidebar_switchView: "' + view + '" is an unsupported value.');
4095 return;
4096 }
4097 this.active = view | 0;
4098 if (forceOpen && !this.isOpen) {
4099 this.open();
4100 return;
4101 }
4102 if (shouldForceRendering) {
4103 this._forceRendering();
4104 }
4105 if (isViewChanged) {
4106 this._dispatchEvent();
4107 }
4108 this._hideUINotification(this.active);
4109 }
4110 }, {
4111 key: 'open',
4112 value: function open() {
4113 if (this.isOpen) {
4114 return;
4115 }
4116 this.isOpen = true;
4117 this.toggleButton.classList.add('toggled');
4118 this.outerContainer.classList.add('sidebarMoving');
4119 this.outerContainer.classList.add('sidebarOpen');
4120 if (this.active === SidebarView.THUMBS) {
4121 this._updateThumbnailViewer();
4122 }
4123 this._forceRendering();
4124 this._dispatchEvent();
4125 this._hideUINotification(this.active);
4126 }
4127 }, {
4128 key: 'close',
4129 value: function close() {
4130 if (!this.isOpen) {
4131 return;
4132 }
4133 this.isOpen = false;
4134 this.toggleButton.classList.remove('toggled');
4135 this.outerContainer.classList.add('sidebarMoving');
4136 this.outerContainer.classList.remove('sidebarOpen');
4137 this._forceRendering();
4138 this._dispatchEvent();
4139 }
4140 }, {
4141 key: 'toggle',
4142 value: function toggle() {
4143 if (this.isOpen) {
4144 this.close();
4145 } else {
4146 this.open();
4147 }
4148 }
4149 }, {
4150 key: '_dispatchEvent',
4151 value: function _dispatchEvent() {
4152 this.eventBus.dispatch('sidebarviewchanged', {
4153 source: this,
4154 view: this.visibleView
4155 });
4156 }
4157 }, {
4158 key: '_forceRendering',
4159 value: function _forceRendering() {
4160 if (this.onToggled) {
4161 this.onToggled();
4162 } else {
4163 this.pdfViewer.forceRendering();
4164 this.pdfThumbnailViewer.forceRendering();
4165 }
4166 }
4167 }, {
4168 key: '_updateThumbnailViewer',
4169 value: function _updateThumbnailViewer() {
4170 var pdfViewer = this.pdfViewer,
4171 pdfThumbnailViewer = this.pdfThumbnailViewer;
4172
4173 var pagesCount = pdfViewer.pagesCount;
4174 for (var pageIndex = 0; pageIndex < pagesCount; pageIndex++) {
4175 var pageView = pdfViewer.getPageView(pageIndex);
4176 if (pageView && pageView.renderingState === _pdf_rendering_queue.RenderingStates.FINISHED) {
4177 var thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex);
4178 thumbnailView.setImage(pageView);
4179 }
4180 }
4181 pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber);
4182 }
4183 }, {
4184 key: '_showUINotification',
4185 value: function _showUINotification(view) {
4186 var _this = this;
4187
4188 if (this.disableNotification) {
4189 return;
4190 }
4191 this.l10n.get('toggle_sidebar_notification.title', null, 'Toggle Sidebar (document contains outline/attachments)').then(function (msg) {
4192 _this.toggleButton.title = msg;
4193 });
4194 if (!this.isOpen) {
4195 this.toggleButton.classList.add(UI_NOTIFICATION_CLASS);
4196 } else if (view === this.active) {
4197 return;
4198 }
4199 switch (view) {
4200 case SidebarView.OUTLINE:
4201 this.outlineButton.classList.add(UI_NOTIFICATION_CLASS);
4202 break;
4203 case SidebarView.ATTACHMENTS:
4204 this.attachmentsButton.classList.add(UI_NOTIFICATION_CLASS);
4205 break;
4206 }
4207 }
4208 }, {
4209 key: '_hideUINotification',
4210 value: function _hideUINotification(view) {
4211 var _this2 = this;
4212
4213 if (this.disableNotification) {
4214 return;
4215 }
4216 var removeNotification = function removeNotification(view) {
4217 switch (view) {
4218 case SidebarView.OUTLINE:
4219 _this2.outlineButton.classList.remove(UI_NOTIFICATION_CLASS);
4220 break;
4221 case SidebarView.ATTACHMENTS:
4222 _this2.attachmentsButton.classList.remove(UI_NOTIFICATION_CLASS);
4223 break;
4224 }
4225 };
4226 if (!this.isOpen && view !== null) {
4227 return;
4228 }
4229 this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS);
4230 if (view !== null) {
4231 removeNotification(view);
4232 return;
4233 }
4234 for (view in SidebarView) {
4235 removeNotification(SidebarView[view]);
4236 }
4237 this.l10n.get('toggle_sidebar.title', null, 'Toggle Sidebar').then(function (msg) {
4238 _this2.toggleButton.title = msg;
4239 });
4240 }
4241 }, {
4242 key: '_addEventListeners',
4243 value: function _addEventListeners() {
4244 var _this3 = this;
4245
4246 this.viewerContainer.addEventListener('transitionend', function (evt) {
4247 if (evt.target === _this3.viewerContainer) {
4248 _this3.outerContainer.classList.remove('sidebarMoving');
4249 }
4250 });
4251 this.thumbnailButton.addEventListener('click', function () {
4252 _this3.switchView(SidebarView.THUMBS);
4253 });
4254 this.outlineButton.addEventListener('click', function () {
4255 _this3.switchView(SidebarView.OUTLINE);
4256 });
4257 this.outlineButton.addEventListener('dblclick', function () {
4258 _this3.eventBus.dispatch('toggleoutlinetree', { source: _this3 });
4259 });
4260 this.attachmentsButton.addEventListener('click', function () {
4261 _this3.switchView(SidebarView.ATTACHMENTS);
4262 });
4263 this.eventBus.on('outlineloaded', function (evt) {
4264 var outlineCount = evt.outlineCount;
4265 _this3.outlineButton.disabled = !outlineCount;
4266 if (outlineCount) {
4267 _this3._showUINotification(SidebarView.OUTLINE);
4268 } else if (_this3.active === SidebarView.OUTLINE) {
4269 _this3.switchView(SidebarView.THUMBS);
4270 }
4271 });
4272 this.eventBus.on('attachmentsloaded', function (evt) {
4273 if (evt.attachmentsCount) {
4274 _this3.attachmentsButton.disabled = false;
4275 _this3._showUINotification(SidebarView.ATTACHMENTS);
4276 return;
4277 }
4278 Promise.resolve().then(function () {
4279 if (_this3.attachmentsView.hasChildNodes()) {
4280 return;
4281 }
4282 _this3.attachmentsButton.disabled = true;
4283 if (_this3.active === SidebarView.ATTACHMENTS) {
4284 _this3.switchView(SidebarView.THUMBS);
4285 }
4286 });
4287 });
4288 this.eventBus.on('presentationmodechanged', function (evt) {
4289 if (!evt.active && !evt.switchInProgress && _this3.isThumbnailViewVisible) {
4290 _this3._updateThumbnailViewer();
4291 }
4292 });
4293 }
4294 }, {
4295 key: 'visibleView',
4296 get: function get() {
4297 return this.isOpen ? this.active : SidebarView.NONE;
4298 }
4299 }, {
4300 key: 'isThumbnailViewVisible',
4301 get: function get() {
4302 return this.isOpen && this.active === SidebarView.THUMBS;
4303 }
4304 }, {
4305 key: 'isOutlineViewVisible',
4306 get: function get() {
4307 return this.isOpen && this.active === SidebarView.OUTLINE;
4308 }
4309 }, {
4310 key: 'isAttachmentsViewVisible',
4311 get: function get() {
4312 return this.isOpen && this.active === SidebarView.ATTACHMENTS;
4313 }
4314 }]);
4315
4316 return PDFSidebar;
4317 }();
4318
4319 exports.SidebarView = SidebarView;
4320 exports.PDFSidebar = PDFSidebar;
4321
4322 /***/ }),
4323 /* 12 */
4324 /***/ (function(module, exports, __webpack_require__) {
4325
4326 "use strict";
4327
4328
4329 Object.defineProperty(exports, "__esModule", {
4330 value: true
4331 });
4332 exports.OptionKind = exports.AppOptions = undefined;
4333
4334 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
4335
4336 var _pdfjsLib = __webpack_require__(7);
4337
4338 var _viewer_compatibility = __webpack_require__(13);
4339
4340 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4341
4342 var OptionKind = {
4343 VIEWER: 'viewer',
4344 API: 'api',
4345 WORKER: 'worker'
4346 };
4347 var defaultOptions = {
4348 cursorToolOnLoad: {
4349 value: 0,
4350 kind: OptionKind.VIEWER
4351 },
4352 defaultUrl: {
4353 value: 'compressed.tracemonkey-pldi-09.pdf',
4354 kind: OptionKind.VIEWER
4355 },
4356 defaultZoomValue: {
4357 value: '',
4358 kind: OptionKind.VIEWER
4359 },
4360 disableHistory: {
4361 value: false,
4362 kind: OptionKind.VIEWER
4363 },
4364 disablePageLabels: {
4365 value: false,
4366 kind: OptionKind.VIEWER
4367 },
4368 disablePageMode: {
4369 value: false,
4370 kind: OptionKind.VIEWER
4371 },
4372 enablePrintAutoRotate: {
4373 value: false,
4374 kind: OptionKind.VIEWER
4375 },
4376 enableWebGL: {
4377 value: false,
4378 kind: OptionKind.VIEWER
4379 },
4380 eventBusDispatchToDOM: {
4381 value: false,
4382 kind: OptionKind.VIEWER
4383 },
4384 externalLinkRel: {
4385 value: 'noopener noreferrer nofollow',
4386 kind: OptionKind.VIEWER
4387 },
4388 externalLinkTarget: {
4389 value: 0,
4390 kind: OptionKind.VIEWER
4391 },
4392 imageResourcesPath: {
4393 value: './images/',
4394 kind: OptionKind.VIEWER
4395 },
4396 maxCanvasPixels: {
4397 value: _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels || 16777216,
4398 kind: OptionKind.VIEWER
4399 },
4400 pdfBugEnabled: {
4401 value: false,
4402 kind: OptionKind.VIEWER
4403 },
4404 renderer: {
4405 value: 'canvas',
4406 kind: OptionKind.VIEWER
4407 },
4408 renderInteractiveForms: {
4409 value: false,
4410 kind: OptionKind.VIEWER
4411 },
4412 showPreviousViewOnLoad: {
4413 value: true,
4414 kind: OptionKind.VIEWER
4415 },
4416 sidebarViewOnLoad: {
4417 value: 0,
4418 kind: OptionKind.VIEWER
4419 },
4420 scrollModeOnLoad: {
4421 value: 0,
4422 kind: OptionKind.VIEWER
4423 },
4424 spreadModeOnLoad: {
4425 value: 0,
4426 kind: OptionKind.VIEWER
4427 },
4428 textLayerMode: {
4429 value: 1,
4430 kind: OptionKind.VIEWER
4431 },
4432 useOnlyCssZoom: {
4433 value: false,
4434 kind: OptionKind.VIEWER
4435 },
4436 cMapPacked: {
4437 value: true,
4438 kind: OptionKind.API
4439 },
4440 cMapUrl: {
4441 value: '../web/cmaps/',
4442 kind: OptionKind.API
4443 },
4444 disableAutoFetch: {
4445 value: false,
4446 kind: OptionKind.API
4447 },
4448 disableCreateObjectURL: {
4449 value: _pdfjsLib.apiCompatibilityParams.disableCreateObjectURL || false,
4450 kind: OptionKind.API
4451 },
4452 disableFontFace: {
4453 value: false,
4454 kind: OptionKind.API
4455 },
4456 disableRange: {
4457 value: false,
4458 kind: OptionKind.API
4459 },
4460 disableStream: {
4461 value: false,
4462 kind: OptionKind.API
4463 },
4464 isEvalSupported: {
4465 value: true,
4466 kind: OptionKind.API
4467 },
4468 maxImageSize: {
4469 value: -1,
4470 kind: OptionKind.API
4471 },
4472 pdfBug: {
4473 value: false,
4474 kind: OptionKind.API
4475 },
4476 postMessageTransfers: {
4477 value: true,
4478 kind: OptionKind.API
4479 },
4480 verbosity: {
4481 value: 1,
4482 kind: OptionKind.API
4483 },
4484 workerPort: {
4485 value: null,
4486 kind: OptionKind.WORKER
4487 },
4488 workerSrc: {
4489 value: '../build/pdf.worker.js',
4490 kind: OptionKind.WORKER
4491 }
4492 };
4493 {
4494 defaultOptions.locale = {
4495 value: typeof navigator !== 'undefined' ? navigator.language : 'en-US',
4496 kind: OptionKind.VIEWER
4497 };
4498 }
4499 var userOptions = Object.create(null);
4500
4501 var AppOptions = function () {
4502 function AppOptions() {
4503 _classCallCheck(this, AppOptions);
4504
4505 throw new Error('Cannot initialize AppOptions.');
4506 }
4507
4508 _createClass(AppOptions, null, [{
4509 key: 'get',
4510 value: function get(name) {
4511 var defaultOption = defaultOptions[name],
4512 userOption = userOptions[name];
4513 if (userOption !== undefined) {
4514 return userOption;
4515 }
4516 return defaultOption !== undefined ? defaultOption.value : undefined;
4517 }
4518 }, {
4519 key: 'getAll',
4520 value: function getAll() {
4521 var kind = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
4522
4523 var options = Object.create(null);
4524 for (var name in defaultOptions) {
4525 var defaultOption = defaultOptions[name],
4526 userOption = userOptions[name];
4527 if (kind && defaultOption.kind !== kind) {
4528 continue;
4529 }
4530 options[name] = userOption !== undefined ? userOption : defaultOption.value;
4531 }
4532 return options;
4533 }
4534 }, {
4535 key: 'set',
4536 value: function set(name, value) {
4537 userOptions[name] = value;
4538 }
4539 }, {
4540 key: 'remove',
4541 value: function remove(name) {
4542 delete userOptions[name];
4543 }
4544 }]);
4545
4546 return AppOptions;
4547 }();
4548
4549 exports.AppOptions = AppOptions;
4550 exports.OptionKind = OptionKind;
4551
4552 /***/ }),
4553 /* 13 */
4554 /***/ (function(module, exports, __webpack_require__) {
4555
4556 "use strict";
4557
4558
4559 var compatibilityParams = Object.create(null);
4560 {
4561 var userAgent = typeof navigator !== 'undefined' && navigator.userAgent || '';
4562 var isAndroid = /Android/.test(userAgent);
4563 var isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent);
4564 (function checkCanvasSizeLimitation() {
4565 if (isIOS || isAndroid) {
4566 compatibilityParams.maxCanvasPixels = 5242880;
4567 }
4568 })();
4569 }
4570 exports.viewerCompatibilityParams = Object.freeze(compatibilityParams);
4571
4572 /***/ }),
4573 /* 14 */
4574 /***/ (function(module, exports, __webpack_require__) {
4575
4576 "use strict";
4577
4578
4579 Object.defineProperty(exports, "__esModule", {
4580 value: true
4581 });
4582 exports.getGlobalEventBus = exports.attachDOMEventsToEventBus = undefined;
4583
4584 var _ui_utils = __webpack_require__(6);
4585
4586 function attachDOMEventsToEventBus(eventBus) {
4587 eventBus.on('documentload', function () {
4588 var event = document.createEvent('CustomEvent');
4589 event.initCustomEvent('documentload', true, true, {});
4590 window.dispatchEvent(event);
4591 });
4592 eventBus.on('pagerendered', function (evt) {
4593 var event = document.createEvent('CustomEvent');
4594 event.initCustomEvent('pagerendered', true, true, {
4595 pageNumber: evt.pageNumber,
4596 cssTransform: evt.cssTransform
4597 });
4598 evt.source.div.dispatchEvent(event);
4599 });
4600 eventBus.on('textlayerrendered', function (evt) {
4601 var event = document.createEvent('CustomEvent');
4602 event.initCustomEvent('textlayerrendered', true, true, { pageNumber: evt.pageNumber });
4603 evt.source.textLayerDiv.dispatchEvent(event);
4604 });
4605 eventBus.on('pagechange', function (evt) {
4606 var event = document.createEvent('UIEvents');
4607 event.initUIEvent('pagechange', true, true, window, 0);
4608 event.pageNumber = evt.pageNumber;
4609 evt.source.container.dispatchEvent(event);
4610 });
4611 eventBus.on('pagesinit', function (evt) {
4612 var event = document.createEvent('CustomEvent');
4613 event.initCustomEvent('pagesinit', true, true, null);
4614 evt.source.container.dispatchEvent(event);
4615 });
4616 eventBus.on('pagesloaded', function (evt) {
4617 var event = document.createEvent('CustomEvent');
4618 event.initCustomEvent('pagesloaded', true, true, { pagesCount: evt.pagesCount });
4619 evt.source.container.dispatchEvent(event);
4620 });
4621 eventBus.on('scalechange', function (evt) {
4622 var event = document.createEvent('UIEvents');
4623 event.initUIEvent('scalechange', true, true, window, 0);
4624 event.scale = evt.scale;
4625 event.presetValue = evt.presetValue;
4626 evt.source.container.dispatchEvent(event);
4627 });
4628 eventBus.on('updateviewarea', function (evt) {
4629 var event = document.createEvent('UIEvents');
4630 event.initUIEvent('updateviewarea', true, true, window, 0);
4631 event.location = evt.location;
4632 evt.source.container.dispatchEvent(event);
4633 });
4634 eventBus.on('find', function (evt) {
4635 if (evt.source === window) {
4636 return;
4637 }
4638 var event = document.createEvent('CustomEvent');
4639 event.initCustomEvent('find' + evt.type, true, true, {
4640 query: evt.query,
4641 phraseSearch: evt.phraseSearch,
4642 caseSensitive: evt.caseSensitive,
4643 highlightAll: evt.highlightAll,
4644 findPrevious: evt.findPrevious
4645 });
4646 window.dispatchEvent(event);
4647 });
4648 eventBus.on('attachmentsloaded', function (evt) {
4649 var event = document.createEvent('CustomEvent');
4650 event.initCustomEvent('attachmentsloaded', true, true, { attachmentsCount: evt.attachmentsCount });
4651 evt.source.container.dispatchEvent(event);
4652 });
4653 eventBus.on('sidebarviewchanged', function (evt) {
4654 var event = document.createEvent('CustomEvent');
4655 event.initCustomEvent('sidebarviewchanged', true, true, { view: evt.view });
4656 evt.source.outerContainer.dispatchEvent(event);
4657 });
4658 eventBus.on('pagemode', function (evt) {
4659 var event = document.createEvent('CustomEvent');
4660 event.initCustomEvent('pagemode', true, true, { mode: evt.mode });
4661 evt.source.pdfViewer.container.dispatchEvent(event);
4662 });
4663 eventBus.on('namedaction', function (evt) {
4664 var event = document.createEvent('CustomEvent');
4665 event.initCustomEvent('namedaction', true, true, { action: evt.action });
4666 evt.source.pdfViewer.container.dispatchEvent(event);
4667 });
4668 eventBus.on('presentationmodechanged', function (evt) {
4669 var event = document.createEvent('CustomEvent');
4670 event.initCustomEvent('presentationmodechanged', true, true, {
4671 active: evt.active,
4672 switchInProgress: evt.switchInProgress
4673 });
4674 window.dispatchEvent(event);
4675 });
4676 eventBus.on('outlineloaded', function (evt) {
4677 var event = document.createEvent('CustomEvent');
4678 event.initCustomEvent('outlineloaded', true, true, { outlineCount: evt.outlineCount });
4679 evt.source.container.dispatchEvent(event);
4680 });
4681 }
4682 var globalEventBus = null;
4683 function getGlobalEventBus() {
4684 var dispatchToDOM = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
4685
4686 if (!globalEventBus) {
4687 globalEventBus = new _ui_utils.EventBus({ dispatchToDOM: dispatchToDOM });
4688 if (!dispatchToDOM) {
4689 attachDOMEventsToEventBus(globalEventBus);
4690 }
4691 }
4692 return globalEventBus;
4693 }
4694 exports.attachDOMEventsToEventBus = attachDOMEventsToEventBus;
4695 exports.getGlobalEventBus = getGlobalEventBus;
4696
4697 /***/ }),
4698 /* 15 */
4699 /***/ (function(module, exports, __webpack_require__) {
4700
4701 "use strict";
4702
4703
4704 Object.defineProperty(exports, "__esModule", {
4705 value: true
4706 });
4707 exports.OverlayManager = undefined;
4708
4709 var _regenerator = __webpack_require__(2);
4710
4711 var _regenerator2 = _interopRequireDefault(_regenerator);
4712
4713 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
4714
4715 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
4716
4717 function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
4718
4719 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4720
4721 var OverlayManager = function () {
4722 function OverlayManager() {
4723 _classCallCheck(this, OverlayManager);
4724
4725 this._overlays = {};
4726 this._active = null;
4727 this._keyDownBound = this._keyDown.bind(this);
4728 }
4729
4730 _createClass(OverlayManager, [{
4731 key: 'register',
4732 value: function () {
4733 var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(name, element) {
4734 var callerCloseMethod = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
4735 var canForceClose = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
4736 var container;
4737 return _regenerator2.default.wrap(function _callee$(_context) {
4738 while (1) {
4739 switch (_context.prev = _context.next) {
4740 case 0:
4741 container = void 0;
4742
4743 if (!(!name || !element || !(container = element.parentNode))) {
4744 _context.next = 5;
4745 break;
4746 }
4747
4748 throw new Error('Not enough parameters.');
4749
4750 case 5:
4751 if (!this._overlays[name]) {
4752 _context.next = 7;
4753 break;
4754 }
4755
4756 throw new Error('The overlay is already registered.');
4757
4758 case 7:
4759 this._overlays[name] = {
4760 element: element,
4761 container: container,
4762 callerCloseMethod: callerCloseMethod,
4763 canForceClose: canForceClose
4764 };
4765
4766 case 8:
4767 case 'end':
4768 return _context.stop();
4769 }
4770 }
4771 }, _callee, this);
4772 }));
4773
4774 function register(_x3, _x4) {
4775 return _ref.apply(this, arguments);
4776 }
4777
4778 return register;
4779 }()
4780 }, {
4781 key: 'unregister',
4782 value: function () {
4783 var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2(name) {
4784 return _regenerator2.default.wrap(function _callee2$(_context2) {
4785 while (1) {
4786 switch (_context2.prev = _context2.next) {
4787 case 0:
4788 if (this._overlays[name]) {
4789 _context2.next = 4;
4790 break;
4791 }
4792
4793 throw new Error('The overlay does not exist.');
4794
4795 case 4:
4796 if (!(this._active === name)) {
4797 _context2.next = 6;
4798 break;
4799 }
4800
4801 throw new Error('The overlay cannot be removed while it is active.');
4802
4803 case 6:
4804 delete this._overlays[name];
4805
4806 case 7:
4807 case 'end':
4808 return _context2.stop();
4809 }
4810 }
4811 }, _callee2, this);
4812 }));
4813
4814 function unregister(_x5) {
4815 return _ref2.apply(this, arguments);
4816 }
4817
4818 return unregister;
4819 }()
4820 }, {
4821 key: 'open',
4822 value: function () {
4823 var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3(name) {
4824 return _regenerator2.default.wrap(function _callee3$(_context3) {
4825 while (1) {
4826 switch (_context3.prev = _context3.next) {
4827 case 0:
4828 if (this._overlays[name]) {
4829 _context3.next = 4;
4830 break;
4831 }
4832
4833 throw new Error('The overlay does not exist.');
4834
4835 case 4:
4836 if (!this._active) {
4837 _context3.next = 14;
4838 break;
4839 }
4840
4841 if (!this._overlays[name].canForceClose) {
4842 _context3.next = 9;
4843 break;
4844 }
4845
4846 this._closeThroughCaller();
4847 _context3.next = 14;
4848 break;
4849
4850 case 9:
4851 if (!(this._active === name)) {
4852 _context3.next = 13;
4853 break;
4854 }
4855
4856 throw new Error('The overlay is already active.');
4857
4858 case 13:
4859 throw new Error('Another overlay is currently active.');
4860
4861 case 14:
4862 this._active = name;
4863 this._overlays[this._active].element.classList.remove('hidden');
4864 this._overlays[this._active].container.classList.remove('hidden');
4865 window.addEventListener('keydown', this._keyDownBound);
4866
4867 case 18:
4868 case 'end':
4869 return _context3.stop();
4870 }
4871 }
4872 }, _callee3, this);
4873 }));
4874
4875 function open(_x6) {
4876 return _ref3.apply(this, arguments);
4877 }
4878
4879 return open;
4880 }()
4881 }, {
4882 key: 'close',
4883 value: function () {
4884 var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee4(name) {
4885 return _regenerator2.default.wrap(function _callee4$(_context4) {
4886 while (1) {
4887 switch (_context4.prev = _context4.next) {
4888 case 0:
4889 if (this._overlays[name]) {
4890 _context4.next = 4;
4891 break;
4892 }
4893
4894 throw new Error('The overlay does not exist.');
4895
4896 case 4:
4897 if (this._active) {
4898 _context4.next = 8;
4899 break;
4900 }
4901
4902 throw new Error('The overlay is currently not active.');
4903
4904 case 8:
4905 if (!(this._active !== name)) {
4906 _context4.next = 10;
4907 break;
4908 }
4909
4910 throw new Error('Another overlay is currently active.');
4911
4912 case 10:
4913 this._overlays[this._active].container.classList.add('hidden');
4914 this._overlays[this._active].element.classList.add('hidden');
4915 this._active = null;
4916 window.removeEventListener('keydown', this._keyDownBound);
4917
4918 case 14:
4919 case 'end':
4920 return _context4.stop();
4921 }
4922 }
4923 }, _callee4, this);
4924 }));
4925
4926 function close(_x7) {
4927 return _ref4.apply(this, arguments);
4928 }
4929
4930 return close;
4931 }()
4932 }, {
4933 key: '_keyDown',
4934 value: function _keyDown(evt) {
4935 if (this._active && evt.keyCode === 27) {
4936 this._closeThroughCaller();
4937 evt.preventDefault();
4938 }
4939 }
4940 }, {
4941 key: '_closeThroughCaller',
4942 value: function _closeThroughCaller() {
4943 if (this._overlays[this._active].callerCloseMethod) {
4944 this._overlays[this._active].callerCloseMethod();
4945 }
4946 if (this._active) {
4947 this.close(this._active);
4948 }
4949 }
4950 }, {
4951 key: 'active',
4952 get: function get() {
4953 return this._active;
4954 }
4955 }]);
4956
4957 return OverlayManager;
4958 }();
4959
4960 exports.OverlayManager = OverlayManager;
4961
4962 /***/ }),
4963 /* 16 */
4964 /***/ (function(module, exports, __webpack_require__) {
4965
4966 "use strict";
4967
4968
4969 Object.defineProperty(exports, "__esModule", {
4970 value: true
4971 });
4972 exports.PasswordPrompt = undefined;
4973
4974 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
4975
4976 var _ui_utils = __webpack_require__(6);
4977
4978 var _pdfjsLib = __webpack_require__(7);
4979
4980 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4981
4982 var PasswordPrompt = function () {
4983 function PasswordPrompt(options, overlayManager) {
4984 var _this = this;
4985
4986 var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n;
4987
4988 _classCallCheck(this, PasswordPrompt);
4989
4990 this.overlayName = options.overlayName;
4991 this.container = options.container;
4992 this.label = options.label;
4993 this.input = options.input;
4994 this.submitButton = options.submitButton;
4995 this.cancelButton = options.cancelButton;
4996 this.overlayManager = overlayManager;
4997 this.l10n = l10n;
4998 this.updateCallback = null;
4999 this.reason = null;
5000 this.submitButton.addEventListener('click', this.verify.bind(this));
5001 this.cancelButton.addEventListener('click', this.close.bind(this));
5002 this.input.addEventListener('keydown', function (e) {
5003 if (e.keyCode === 13) {
5004 _this.verify();
5005 }
5006 });
5007 this.overlayManager.register(this.overlayName, this.container, this.close.bind(this), true);
5008 }
5009
5010 _createClass(PasswordPrompt, [{
5011 key: 'open',
5012 value: function open() {
5013 var _this2 = this;
5014
5015 this.overlayManager.open(this.overlayName).then(function () {
5016 _this2.input.focus();
5017 var promptString = void 0;
5018 if (_this2.reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD) {
5019 promptString = _this2.l10n.get('password_invalid', null, 'Invalid password. Please try again.');
5020 } else {
5021 promptString = _this2.l10n.get('password_label', null, 'Enter the password to open this PDF file.');
5022 }
5023 promptString.then(function (msg) {
5024 _this2.label.textContent = msg;
5025 });
5026 });
5027 }
5028 }, {
5029 key: 'close',
5030 value: function close() {
5031 var _this3 = this;
5032
5033 this.overlayManager.close(this.overlayName).then(function () {
5034 _this3.input.value = '';
5035 });
5036 }
5037 }, {
5038 key: 'verify',
5039 value: function verify() {
5040 var password = this.input.value;
5041 if (password && password.length > 0) {
5042 this.close();
5043 return this.updateCallback(password);
5044 }
5045 }
5046 }, {
5047 key: 'setUpdateCallback',
5048 value: function setUpdateCallback(updateCallback, reason) {
5049 this.updateCallback = updateCallback;
5050 this.reason = reason;
5051 }
5052 }]);
5053
5054 return PasswordPrompt;
5055 }();
5056
5057 exports.PasswordPrompt = PasswordPrompt;
5058
5059 /***/ }),
5060 /* 17 */
5061 /***/ (function(module, exports, __webpack_require__) {
5062
5063 "use strict";
5064
5065
5066 Object.defineProperty(exports, "__esModule", {
5067 value: true
5068 });
5069 exports.PDFAttachmentViewer = undefined;
5070
5071 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
5072
5073 var _pdfjsLib = __webpack_require__(7);
5074
5075 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5076
5077 var PDFAttachmentViewer = function () {
5078 function PDFAttachmentViewer(_ref) {
5079 var container = _ref.container,
5080 eventBus = _ref.eventBus,
5081 downloadManager = _ref.downloadManager;
5082
5083 _classCallCheck(this, PDFAttachmentViewer);
5084
5085 this.container = container;
5086 this.eventBus = eventBus;
5087 this.downloadManager = downloadManager;
5088 this.reset();
5089 this.eventBus.on('fileattachmentannotation', this._appendAttachment.bind(this));
5090 }
5091
5092 _createClass(PDFAttachmentViewer, [{
5093 key: 'reset',
5094 value: function reset() {
5095 var keepRenderedCapability = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
5096
5097 this.attachments = null;
5098 this.container.textContent = '';
5099 if (!keepRenderedCapability) {
5100 this._renderedCapability = (0, _pdfjsLib.createPromiseCapability)();
5101 }
5102 }
5103 }, {
5104 key: '_dispatchEvent',
5105 value: function _dispatchEvent(attachmentsCount) {
5106 this._renderedCapability.resolve();
5107 this.eventBus.dispatch('attachmentsloaded', {
5108 source: this,
5109 attachmentsCount: attachmentsCount
5110 });
5111 }
5112 }, {
5113 key: '_bindPdfLink',
5114 value: function _bindPdfLink(button, content, filename) {
5115 if (this.downloadManager.disableCreateObjectURL) {
5116 throw new Error('bindPdfLink: Unsupported "disableCreateObjectURL" value.');
5117 }
5118 var blobUrl = void 0;
5119 button.onclick = function () {
5120 if (!blobUrl) {
5121 blobUrl = (0, _pdfjsLib.createObjectURL)(content, 'application/pdf');
5122 }
5123 var viewerUrl = void 0;
5124 viewerUrl = '?file=' + encodeURIComponent(blobUrl + '#' + filename);
5125 window.open(viewerUrl);
5126 return false;
5127 };
5128 }
5129 }, {
5130 key: '_bindLink',
5131 value: function _bindLink(button, content, filename) {
5132 var _this = this;
5133
5134 button.onclick = function () {
5135 _this.downloadManager.downloadData(content, filename, '');
5136 return false;
5137 };
5138 }
5139 }, {
5140 key: 'render',
5141 value: function render(_ref2) {
5142 var attachments = _ref2.attachments,
5143 _ref2$keepRenderedCap = _ref2.keepRenderedCapability,
5144 keepRenderedCapability = _ref2$keepRenderedCap === undefined ? false : _ref2$keepRenderedCap;
5145
5146 var attachmentsCount = 0;
5147 if (this.attachments) {
5148 this.reset(keepRenderedCapability === true);
5149 }
5150 this.attachments = attachments || null;
5151 if (!attachments) {
5152 this._dispatchEvent(attachmentsCount);
5153 return;
5154 }
5155 var names = Object.keys(attachments).sort(function (a, b) {
5156 return a.toLowerCase().localeCompare(b.toLowerCase());
5157 });
5158 attachmentsCount = names.length;
5159 for (var i = 0; i < attachmentsCount; i++) {
5160 var item = attachments[names[i]];
5161 var filename = (0, _pdfjsLib.removeNullCharacters)((0, _pdfjsLib.getFilenameFromUrl)(item.filename));
5162 var div = document.createElement('div');
5163 div.className = 'attachmentsItem';
5164 var button = document.createElement('button');
5165 button.textContent = filename;
5166 if (/\.pdf$/i.test(filename) && !this.downloadManager.disableCreateObjectURL) {
5167 this._bindPdfLink(button, item.content, filename);
5168 } else {
5169 this._bindLink(button, item.content, filename);
5170 }
5171 div.appendChild(button);
5172 this.container.appendChild(div);
5173 }
5174 this._dispatchEvent(attachmentsCount);
5175 }
5176 }, {
5177 key: '_appendAttachment',
5178 value: function _appendAttachment(_ref3) {
5179 var _this2 = this;
5180
5181 var id = _ref3.id,
5182 filename = _ref3.filename,
5183 content = _ref3.content;
5184
5185 this._renderedCapability.promise.then(function () {
5186 var attachments = _this2.attachments;
5187 if (!attachments) {
5188 attachments = Object.create(null);
5189 } else {
5190 for (var name in attachments) {
5191 if (id === name) {
5192 return;
5193 }
5194 }
5195 }
5196 attachments[id] = {
5197 filename: filename,
5198 content: content
5199 };
5200 _this2.render({
5201 attachments: attachments,
5202 keepRenderedCapability: true
5203 });
5204 });
5205 }
5206 }]);
5207
5208 return PDFAttachmentViewer;
5209 }();
5210
5211 exports.PDFAttachmentViewer = PDFAttachmentViewer;
5212
5213 /***/ }),
5214 /* 18 */
5215 /***/ (function(module, exports, __webpack_require__) {
5216
5217 "use strict";
5218
5219
5220 Object.defineProperty(exports, "__esModule", {
5221 value: true
5222 });
5223 exports.PDFDocumentProperties = undefined;
5224
5225 var _slicedToArray = function () { function sliceIterator(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"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
5226
5227 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
5228
5229 var _ui_utils = __webpack_require__(6);
5230
5231 var _pdfjsLib = __webpack_require__(7);
5232
5233 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5234
5235 var DEFAULT_FIELD_CONTENT = '-';
5236 var NON_METRIC_LOCALES = ['en-us', 'en-lr', 'my'];
5237 var US_PAGE_NAMES = {
5238 '8.5x11': 'Letter',
5239 '8.5x14': 'Legal'
5240 };
5241 var METRIC_PAGE_NAMES = {
5242 '297x420': 'A3',
5243 '210x297': 'A4'
5244 };
5245 function getPageName(size, isPortrait, pageNames) {
5246 var width = isPortrait ? size.width : size.height;
5247 var height = isPortrait ? size.height : size.width;
5248 return pageNames[width + 'x' + height];
5249 }
5250
5251 var PDFDocumentProperties = function () {
5252 function PDFDocumentProperties(_ref, overlayManager, eventBus) {
5253 var overlayName = _ref.overlayName,
5254 fields = _ref.fields,
5255 container = _ref.container,
5256 closeButton = _ref.closeButton;
5257
5258 var _this = this;
5259
5260 var l10n = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _ui_utils.NullL10n;
5261
5262 _classCallCheck(this, PDFDocumentProperties);
5263
5264 this.overlayName = overlayName;
5265 this.fields = fields;
5266 this.container = container;
5267 this.overlayManager = overlayManager;
5268 this.l10n = l10n;
5269 this._reset();
5270 if (closeButton) {
5271 closeButton.addEventListener('click', this.close.bind(this));
5272 }
5273 this.overlayManager.register(this.overlayName, this.container, this.close.bind(this));
5274 if (eventBus) {
5275 eventBus.on('pagechanging', function (evt) {
5276 _this._currentPageNumber = evt.pageNumber;
5277 });
5278 eventBus.on('rotationchanging', function (evt) {
5279 _this._pagesRotation = evt.pagesRotation;
5280 });
5281 }
5282 this._isNonMetricLocale = true;
5283 l10n.getLanguage().then(function (locale) {
5284 _this._isNonMetricLocale = NON_METRIC_LOCALES.includes(locale);
5285 });
5286 }
5287
5288 _createClass(PDFDocumentProperties, [{
5289 key: 'open',
5290 value: function open() {
5291 var _this2 = this;
5292
5293 var freezeFieldData = function freezeFieldData(data) {
5294 Object.defineProperty(_this2, 'fieldData', {
5295 value: Object.freeze(data),
5296 writable: false,
5297 enumerable: true,
5298 configurable: true
5299 });
5300 };
5301 Promise.all([this.overlayManager.open(this.overlayName), this._dataAvailableCapability.promise]).then(function () {
5302 var currentPageNumber = _this2._currentPageNumber;
5303 var pagesRotation = _this2._pagesRotation;
5304 if (_this2.fieldData && currentPageNumber === _this2.fieldData['_currentPageNumber'] && pagesRotation === _this2.fieldData['_pagesRotation']) {
5305 _this2._updateUI();
5306 return;
5307 }
5308 _this2.pdfDocument.getMetadata().then(function (_ref2) {
5309 var info = _ref2.info,
5310 metadata = _ref2.metadata,
5311 contentDispositionFilename = _ref2.contentDispositionFilename;
5312
5313 return Promise.all([info, metadata, contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(_this2.url || ''), _this2._parseFileSize(_this2.maybeFileSize), _this2._parseDate(info.CreationDate), _this2._parseDate(info.ModDate), _this2.pdfDocument.getPage(currentPageNumber).then(function (pdfPage) {
5314 return _this2._parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation);
5315 }), _this2._parseLinearization(info.IsLinearized)]);
5316 }).then(function (_ref3) {
5317 var _ref4 = _slicedToArray(_ref3, 8),
5318 info = _ref4[0],
5319 metadata = _ref4[1],
5320 fileName = _ref4[2],
5321 fileSize = _ref4[3],
5322 creationDate = _ref4[4],
5323 modDate = _ref4[5],
5324 pageSize = _ref4[6],
5325 isLinearized = _ref4[7];
5326
5327 freezeFieldData({
5328 'fileName': fileName,
5329 'fileSize': fileSize,
5330 'title': info.Title,
5331 'author': info.Author,
5332 'subject': info.Subject,
5333 'keywords': info.Keywords,
5334 'creationDate': creationDate,
5335 'modificationDate': modDate,
5336 'creator': info.Creator,
5337 'producer': info.Producer,
5338 'version': info.PDFFormatVersion,
5339 'pageCount': _this2.pdfDocument.numPages,
5340 'pageSize': pageSize,
5341 'linearized': isLinearized,
5342 '_currentPageNumber': currentPageNumber,
5343 '_pagesRotation': pagesRotation
5344 });
5345 _this2._updateUI();
5346 return _this2.pdfDocument.getDownloadInfo();
5347 }).then(function (_ref5) {
5348 var length = _ref5.length;
5349
5350 _this2.maybeFileSize = length;
5351 return _this2._parseFileSize(length);
5352 }).then(function (fileSize) {
5353 if (fileSize === _this2.fieldData['fileSize']) {
5354 return;
5355 }
5356 var data = Object.assign(Object.create(null), _this2.fieldData);
5357 data['fileSize'] = fileSize;
5358 freezeFieldData(data);
5359 _this2._updateUI();
5360 });
5361 });
5362 }
5363 }, {
5364 key: 'close',
5365 value: function close() {
5366 this.overlayManager.close(this.overlayName);
5367 }
5368 }, {
5369 key: 'setDocument',
5370 value: function setDocument(pdfDocument) {
5371 var url = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
5372
5373 if (this.pdfDocument) {
5374 this._reset();
5375 this._updateUI(true);
5376 }
5377 if (!pdfDocument) {
5378 return;
5379 }
5380 this.pdfDocument = pdfDocument;
5381 this.url = url;
5382 this._dataAvailableCapability.resolve();
5383 }
5384 }, {
5385 key: 'setFileSize',
5386 value: function setFileSize(fileSize) {
5387 if (Number.isInteger(fileSize) && fileSize > 0) {
5388 this.maybeFileSize = fileSize;
5389 }
5390 }
5391 }, {
5392 key: '_reset',
5393 value: function _reset() {
5394 this.pdfDocument = null;
5395 this.url = null;
5396 this.maybeFileSize = 0;
5397 delete this.fieldData;
5398 this._dataAvailableCapability = (0, _pdfjsLib.createPromiseCapability)();
5399 this._currentPageNumber = 1;
5400 this._pagesRotation = 0;
5401 }
5402 }, {
5403 key: '_updateUI',
5404 value: function _updateUI() {
5405 var reset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
5406
5407 if (reset || !this.fieldData) {
5408 for (var id in this.fields) {
5409 this.fields[id].textContent = DEFAULT_FIELD_CONTENT;
5410 }
5411 return;
5412 }
5413 if (this.overlayManager.active !== this.overlayName) {
5414 return;
5415 }
5416 for (var _id in this.fields) {
5417 var content = this.fieldData[_id];
5418 this.fields[_id].textContent = content || content === 0 ? content : DEFAULT_FIELD_CONTENT;
5419 }
5420 }
5421 }, {
5422 key: '_parseFileSize',
5423 value: function _parseFileSize() {
5424 var fileSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
5425
5426 var kb = fileSize / 1024;
5427 if (!kb) {
5428 return Promise.resolve(undefined);
5429 } else if (kb < 1024) {
5430 return this.l10n.get('document_properties_kb', {
5431 size_kb: (+kb.toPrecision(3)).toLocaleString(),
5432 size_b: fileSize.toLocaleString()
5433 }, '{{size_kb}} KB ({{size_b}} bytes)');
5434 }
5435 return this.l10n.get('document_properties_mb', {
5436 size_mb: (+(kb / 1024).toPrecision(3)).toLocaleString(),
5437 size_b: fileSize.toLocaleString()
5438 }, '{{size_mb}} MB ({{size_b}} bytes)');
5439 }
5440 }, {
5441 key: '_parsePageSize',
5442 value: function _parsePageSize(pageSizeInches, pagesRotation) {
5443 var _this3 = this;
5444
5445 if (!pageSizeInches) {
5446 return Promise.resolve(undefined);
5447 }
5448 if (pagesRotation % 180 !== 0) {
5449 pageSizeInches = {
5450 width: pageSizeInches.height,
5451 height: pageSizeInches.width
5452 };
5453 }
5454 var isPortrait = (0, _ui_utils.isPortraitOrientation)(pageSizeInches);
5455 var sizeInches = {
5456 width: Math.round(pageSizeInches.width * 100) / 100,
5457 height: Math.round(pageSizeInches.height * 100) / 100
5458 };
5459 var sizeMillimeters = {
5460 width: Math.round(pageSizeInches.width * 25.4 * 10) / 10,
5461 height: Math.round(pageSizeInches.height * 25.4 * 10) / 10
5462 };
5463 var pageName = null;
5464 var name = getPageName(sizeInches, isPortrait, US_PAGE_NAMES) || getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES);
5465 if (!name && !(Number.isInteger(sizeMillimeters.width) && Number.isInteger(sizeMillimeters.height))) {
5466 var exactMillimeters = {
5467 width: pageSizeInches.width * 25.4,
5468 height: pageSizeInches.height * 25.4
5469 };
5470 var intMillimeters = {
5471 width: Math.round(sizeMillimeters.width),
5472 height: Math.round(sizeMillimeters.height)
5473 };
5474 if (Math.abs(exactMillimeters.width - intMillimeters.width) < 0.1 && Math.abs(exactMillimeters.height - intMillimeters.height) < 0.1) {
5475 name = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES);
5476 if (name) {
5477 sizeInches = {
5478 width: Math.round(intMillimeters.width / 25.4 * 100) / 100,
5479 height: Math.round(intMillimeters.height / 25.4 * 100) / 100
5480 };
5481 sizeMillimeters = intMillimeters;
5482 }
5483 }
5484 }
5485 if (name) {
5486 pageName = this.l10n.get('document_properties_page_size_name_' + name.toLowerCase(), null, name);
5487 }
5488 return Promise.all([this._isNonMetricLocale ? sizeInches : sizeMillimeters, this.l10n.get('document_properties_page_size_unit_' + (this._isNonMetricLocale ? 'inches' : 'millimeters'), null, this._isNonMetricLocale ? 'in' : 'mm'), pageName, this.l10n.get('document_properties_page_size_orientation_' + (isPortrait ? 'portrait' : 'landscape'), null, isPortrait ? 'portrait' : 'landscape')]).then(function (_ref6) {
5489 var _ref7 = _slicedToArray(_ref6, 4),
5490 _ref7$ = _ref7[0],
5491 width = _ref7$.width,
5492 height = _ref7$.height,
5493 unit = _ref7[1],
5494 name = _ref7[2],
5495 orientation = _ref7[3];
5496
5497 return _this3.l10n.get('document_properties_page_size_dimension_' + (name ? 'name_' : '') + 'string', {
5498 width: width.toLocaleString(),
5499 height: height.toLocaleString(),
5500 unit: unit,
5501 name: name,
5502 orientation: orientation
5503 }, '{{width}} × {{height}} {{unit}} (' + (name ? '{{name}}, ' : '') + '{{orientation}})');
5504 });
5505 }
5506 }, {
5507 key: '_parseDate',
5508 value: function _parseDate(inputDate) {
5509 if (!inputDate) {
5510 return;
5511 }
5512 var dateToParse = inputDate;
5513 if (dateToParse.substring(0, 2) === 'D:') {
5514 dateToParse = dateToParse.substring(2);
5515 }
5516 var year = parseInt(dateToParse.substring(0, 4), 10);
5517 var month = parseInt(dateToParse.substring(4, 6), 10) - 1;
5518 var day = parseInt(dateToParse.substring(6, 8), 10);
5519 var hours = parseInt(dateToParse.substring(8, 10), 10);
5520 var minutes = parseInt(dateToParse.substring(10, 12), 10);
5521 var seconds = parseInt(dateToParse.substring(12, 14), 10);
5522 var utRel = dateToParse.substring(14, 15);
5523 var offsetHours = parseInt(dateToParse.substring(15, 17), 10);
5524 var offsetMinutes = parseInt(dateToParse.substring(18, 20), 10);
5525 if (utRel === '-') {
5526 hours += offsetHours;
5527 minutes += offsetMinutes;
5528 } else if (utRel === '+') {
5529 hours -= offsetHours;
5530 minutes -= offsetMinutes;
5531 }
5532 var date = new Date(Date.UTC(year, month, day, hours, minutes, seconds));
5533 var dateString = date.toLocaleDateString();
5534 var timeString = date.toLocaleTimeString();
5535 return this.l10n.get('document_properties_date_string', {
5536 date: dateString,
5537 time: timeString
5538 }, '{{date}}, {{time}}');
5539 }
5540 }, {
5541 key: '_parseLinearization',
5542 value: function _parseLinearization(isLinearized) {
5543 return this.l10n.get('document_properties_linearized_' + (isLinearized ? 'yes' : 'no'), null, isLinearized ? 'Yes' : 'No');
5544 }
5545 }]);
5546
5547 return PDFDocumentProperties;
5548 }();
5549
5550 exports.PDFDocumentProperties = PDFDocumentProperties;
5551
5552 /***/ }),
5553 /* 19 */
5554 /***/ (function(module, exports, __webpack_require__) {
5555
5556 "use strict";
5557
5558
5559 Object.defineProperty(exports, "__esModule", {
5560 value: true
5561 });
5562 exports.PDFFindBar = undefined;
5563
5564 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
5565
5566 var _ui_utils = __webpack_require__(6);
5567
5568 var _pdf_find_controller = __webpack_require__(20);
5569
5570 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5571
5572 var MATCHES_COUNT_LIMIT = 1000;
5573
5574 var PDFFindBar = function () {
5575 function PDFFindBar(options) {
5576 var _this = this;
5577
5578 var eventBus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _ui_utils.getGlobalEventBus)();
5579 var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n;
5580
5581 _classCallCheck(this, PDFFindBar);
5582
5583 this.opened = false;
5584 this.bar = options.bar || null;
5585 this.toggleButton = options.toggleButton || null;
5586 this.findField = options.findField || null;
5587 this.highlightAll = options.highlightAllCheckbox || null;
5588 this.caseSensitive = options.caseSensitiveCheckbox || null;
5589 this.entireWord = options.entireWordCheckbox || null;
5590 this.findMsg = options.findMsg || null;
5591 this.findResultsCount = options.findResultsCount || null;
5592 this.findPreviousButton = options.findPreviousButton || null;
5593 this.findNextButton = options.findNextButton || null;
5594 this.eventBus = eventBus;
5595 this.l10n = l10n;
5596 this.toggleButton.addEventListener('click', function () {
5597 _this.toggle();
5598 });
5599 this.findField.addEventListener('input', function () {
5600 _this.dispatchEvent('');
5601 });
5602 this.bar.addEventListener('keydown', function (e) {
5603 switch (e.keyCode) {
5604 case 13:
5605 if (e.target === _this.findField) {
5606 _this.dispatchEvent('again', e.shiftKey);
5607 }
5608 break;
5609 case 27:
5610 _this.close();
5611 break;
5612 }
5613 });
5614 this.findPreviousButton.addEventListener('click', function () {
5615 _this.dispatchEvent('again', true);
5616 });
5617 this.findNextButton.addEventListener('click', function () {
5618 _this.dispatchEvent('again', false);
5619 });
5620 this.highlightAll.addEventListener('click', function () {
5621 _this.dispatchEvent('highlightallchange');
5622 });
5623 this.caseSensitive.addEventListener('click', function () {
5624 _this.dispatchEvent('casesensitivitychange');
5625 });
5626 this.entireWord.addEventListener('click', function () {
5627 _this.dispatchEvent('entirewordchange');
5628 });
5629 this.eventBus.on('resize', this._adjustWidth.bind(this));
5630 }
5631
5632 _createClass(PDFFindBar, [{
5633 key: 'reset',
5634 value: function reset() {
5635 this.updateUIState();
5636 }
5637 }, {
5638 key: 'dispatchEvent',
5639 value: function dispatchEvent(type, findPrev) {
5640 this.eventBus.dispatch('find', {
5641 source: this,
5642 type: type,
5643 query: this.findField.value,
5644 phraseSearch: true,
5645 caseSensitive: this.caseSensitive.checked,
5646 entireWord: this.entireWord.checked,
5647 highlightAll: this.highlightAll.checked,
5648 findPrevious: findPrev
5649 });
5650 }
5651 }, {
5652 key: 'updateUIState',
5653 value: function updateUIState(state, previous, matchesCount) {
5654 var _this2 = this;
5655
5656 var notFound = false;
5657 var findMsg = '';
5658 var status = '';
5659 switch (state) {
5660 case _pdf_find_controller.FindState.FOUND:
5661 break;
5662 case _pdf_find_controller.FindState.PENDING:
5663 status = 'pending';
5664 break;
5665 case _pdf_find_controller.FindState.NOT_FOUND:
5666 findMsg = this.l10n.get('find_not_found', null, 'Phrase not found');
5667 notFound = true;
5668 break;
5669 case _pdf_find_controller.FindState.WRAPPED:
5670 if (previous) {
5671 findMsg = this.l10n.get('find_reached_top', null, 'Reached top of document, continued from bottom');
5672 } else {
5673 findMsg = this.l10n.get('find_reached_bottom', null, 'Reached end of document, continued from top');
5674 }
5675 break;
5676 }
5677 this.findField.classList.toggle('notFound', notFound);
5678 this.findField.setAttribute('data-status', status);
5679 Promise.resolve(findMsg).then(function (msg) {
5680 _this2.findMsg.textContent = msg;
5681 _this2._adjustWidth();
5682 });
5683 this.updateResultsCount(matchesCount);
5684 }
5685 }, {
5686 key: 'updateResultsCount',
5687 value: function updateResultsCount() {
5688 var _this3 = this;
5689
5690 var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
5691 _ref$current = _ref.current,
5692 current = _ref$current === undefined ? 0 : _ref$current,
5693 _ref$total = _ref.total,
5694 total = _ref$total === undefined ? 0 : _ref$total;
5695
5696 if (!this.findResultsCount) {
5697 return;
5698 }
5699 var matchesCountMsg = '',
5700 limit = MATCHES_COUNT_LIMIT;
5701 if (total > 0) {
5702 if (total > limit) {
5703 matchesCountMsg = this.l10n.get('find_match_count_limit', { limit: limit }, 'More than {{limit}} match' + (limit !== 1 ? 'es' : ''));
5704 } else {
5705 matchesCountMsg = this.l10n.get('find_match_count', {
5706 current: current,
5707 total: total
5708 }, '{{current}} of {{total}} match' + (total !== 1 ? 'es' : ''));
5709 }
5710 }
5711 Promise.resolve(matchesCountMsg).then(function (msg) {
5712 _this3.findResultsCount.textContent = msg;
5713 _this3.findResultsCount.classList[!total ? 'add' : 'remove']('hidden');
5714 _this3._adjustWidth();
5715 });
5716 }
5717 }, {
5718 key: 'open',
5719 value: function open() {
5720 if (!this.opened) {
5721 this.opened = true;
5722 this.toggleButton.classList.add('toggled');
5723 this.bar.classList.remove('hidden');
5724 }
5725 this.findField.select();
5726 this.findField.focus();
5727 this._adjustWidth();
5728 }
5729 }, {
5730 key: 'close',
5731 value: function close() {
5732 if (!this.opened) {
5733 return;
5734 }
5735 this.opened = false;
5736 this.toggleButton.classList.remove('toggled');
5737 this.bar.classList.add('hidden');
5738 this.eventBus.dispatch('findbarclose', { source: this });
5739 }
5740 }, {
5741 key: 'toggle',
5742 value: function toggle() {
5743 if (this.opened) {
5744 this.close();
5745 } else {
5746 this.open();
5747 }
5748 }
5749 }, {
5750 key: '_adjustWidth',
5751 value: function _adjustWidth() {
5752 if (!this.opened) {
5753 return;
5754 }
5755 this.bar.classList.remove('wrapContainers');
5756 var findbarHeight = this.bar.clientHeight;
5757 var inputContainerHeight = this.bar.firstElementChild.clientHeight;
5758 if (findbarHeight > inputContainerHeight) {
5759 this.bar.classList.add('wrapContainers');
5760 }
5761 }
5762 }]);
5763
5764 return PDFFindBar;
5765 }();
5766
5767 exports.PDFFindBar = PDFFindBar;
5768
5769 /***/ }),
5770 /* 20 */
5771 /***/ (function(module, exports, __webpack_require__) {
5772
5773 "use strict";
5774
5775
5776 Object.defineProperty(exports, "__esModule", {
5777 value: true
5778 });
5779 exports.PDFFindController = exports.FindState = undefined;
5780
5781 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
5782
5783 var _pdfjsLib = __webpack_require__(7);
5784
5785 var _pdf_find_utils = __webpack_require__(21);
5786
5787 var _dom_events = __webpack_require__(14);
5788
5789 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5790
5791 var FindState = {
5792 FOUND: 0,
5793 NOT_FOUND: 1,
5794 WRAPPED: 2,
5795 PENDING: 3
5796 };
5797 var FIND_TIMEOUT = 250;
5798 var CHARACTERS_TO_NORMALIZE = {
5799 '\u2018': '\'',
5800 '\u2019': '\'',
5801 '\u201A': '\'',
5802 '\u201B': '\'',
5803 '\u201C': '"',
5804 '\u201D': '"',
5805 '\u201E': '"',
5806 '\u201F': '"',
5807 '\xBC': '1/4',
5808 '\xBD': '1/2',
5809 '\xBE': '3/4'
5810 };
5811
5812 var PDFFindController = function () {
5813 function PDFFindController(_ref) {
5814 var linkService = _ref.linkService,
5815 _ref$eventBus = _ref.eventBus,
5816 eventBus = _ref$eventBus === undefined ? (0, _dom_events.getGlobalEventBus)() : _ref$eventBus;
5817
5818 _classCallCheck(this, PDFFindController);
5819
5820 this._linkService = linkService;
5821 this._eventBus = eventBus;
5822 this._reset();
5823 eventBus.on('findbarclose', this._onFindBarClose.bind(this));
5824 var replace = Object.keys(CHARACTERS_TO_NORMALIZE).join('');
5825 this._normalizationRegex = new RegExp('[' + replace + ']', 'g');
5826 }
5827
5828 _createClass(PDFFindController, [{
5829 key: 'setDocument',
5830 value: function setDocument(pdfDocument) {
5831 if (this._pdfDocument) {
5832 this._reset();
5833 }
5834 if (!pdfDocument) {
5835 return;
5836 }
5837 this._pdfDocument = pdfDocument;
5838 this._firstPageCapability.resolve();
5839 }
5840 }, {
5841 key: 'executeCommand',
5842 value: function executeCommand(cmd, state) {
5843 var _this = this;
5844
5845 var pdfDocument = this._pdfDocument;
5846 if (this._state === null || cmd !== 'findagain') {
5847 this._dirtyMatch = true;
5848 }
5849 this._state = state;
5850 this._updateUIState(FindState.PENDING);
5851 this._firstPageCapability.promise.then(function () {
5852 if (!_this._pdfDocument || pdfDocument && _this._pdfDocument !== pdfDocument) {
5853 return;
5854 }
5855 _this._extractText();
5856 if (_this._findTimeout) {
5857 clearTimeout(_this._findTimeout);
5858 _this._findTimeout = null;
5859 }
5860 if (cmd === 'find') {
5861 _this._findTimeout = setTimeout(function () {
5862 _this._nextMatch();
5863 _this._findTimeout = null;
5864 }, FIND_TIMEOUT);
5865 } else {
5866 _this._nextMatch();
5867 }
5868 });
5869 }
5870 }, {
5871 key: '_reset',
5872 value: function _reset() {
5873 this._highlightMatches = false;
5874 this._pdfDocument = null;
5875 this._pageMatches = [];
5876 this._pageMatchesLength = null;
5877 this._state = null;
5878 this._selected = {
5879 pageIdx: -1,
5880 matchIdx: -1
5881 };
5882 this._offset = {
5883 pageIdx: null,
5884 matchIdx: null
5885 };
5886 this._extractTextPromises = [];
5887 this._pageContents = [];
5888 this._matchesCountTotal = 0;
5889 this._pagesToSearch = null;
5890 this._pendingFindMatches = Object.create(null);
5891 this._resumePageIdx = null;
5892 this._dirtyMatch = false;
5893 clearTimeout(this._findTimeout);
5894 this._findTimeout = null;
5895 this._firstPageCapability = (0, _pdfjsLib.createPromiseCapability)();
5896 }
5897 }, {
5898 key: '_normalize',
5899 value: function _normalize(text) {
5900 return text.replace(this._normalizationRegex, function (ch) {
5901 return CHARACTERS_TO_NORMALIZE[ch];
5902 });
5903 }
5904 }, {
5905 key: '_prepareMatches',
5906 value: function _prepareMatches(matchesWithLength, matches, matchesLength) {
5907 function isSubTerm(matchesWithLength, currentIndex) {
5908 var currentElem = matchesWithLength[currentIndex];
5909 var nextElem = matchesWithLength[currentIndex + 1];
5910 if (currentIndex < matchesWithLength.length - 1 && currentElem.match === nextElem.match) {
5911 currentElem.skipped = true;
5912 return true;
5913 }
5914 for (var i = currentIndex - 1; i >= 0; i--) {
5915 var prevElem = matchesWithLength[i];
5916 if (prevElem.skipped) {
5917 continue;
5918 }
5919 if (prevElem.match + prevElem.matchLength < currentElem.match) {
5920 break;
5921 }
5922 if (prevElem.match + prevElem.matchLength >= currentElem.match + currentElem.matchLength) {
5923 currentElem.skipped = true;
5924 return true;
5925 }
5926 }
5927 return false;
5928 }
5929 matchesWithLength.sort(function (a, b) {
5930 return a.match === b.match ? a.matchLength - b.matchLength : a.match - b.match;
5931 });
5932 for (var i = 0, len = matchesWithLength.length; i < len; i++) {
5933 if (isSubTerm(matchesWithLength, i)) {
5934 continue;
5935 }
5936 matches.push(matchesWithLength[i].match);
5937 matchesLength.push(matchesWithLength[i].matchLength);
5938 }
5939 }
5940 }, {
5941 key: '_isEntireWord',
5942 value: function _isEntireWord(content, startIdx, length) {
5943 if (startIdx > 0) {
5944 var first = content.charCodeAt(startIdx);
5945 var limit = content.charCodeAt(startIdx - 1);
5946 if ((0, _pdf_find_utils.getCharacterType)(first) === (0, _pdf_find_utils.getCharacterType)(limit)) {
5947 return false;
5948 }
5949 }
5950 var endIdx = startIdx + length - 1;
5951 if (endIdx < content.length - 1) {
5952 var last = content.charCodeAt(endIdx);
5953 var _limit = content.charCodeAt(endIdx + 1);
5954 if ((0, _pdf_find_utils.getCharacterType)(last) === (0, _pdf_find_utils.getCharacterType)(_limit)) {
5955 return false;
5956 }
5957 }
5958 return true;
5959 }
5960 }, {
5961 key: '_calculatePhraseMatch',
5962 value: function _calculatePhraseMatch(query, pageIndex, pageContent, entireWord) {
5963 var matches = [];
5964 var queryLen = query.length;
5965 var matchIdx = -queryLen;
5966 while (true) {
5967 matchIdx = pageContent.indexOf(query, matchIdx + queryLen);
5968 if (matchIdx === -1) {
5969 break;
5970 }
5971 if (entireWord && !this._isEntireWord(pageContent, matchIdx, queryLen)) {
5972 continue;
5973 }
5974 matches.push(matchIdx);
5975 }
5976 this._pageMatches[pageIndex] = matches;
5977 }
5978 }, {
5979 key: '_calculateWordMatch',
5980 value: function _calculateWordMatch(query, pageIndex, pageContent, entireWord) {
5981 var matchesWithLength = [];
5982 var queryArray = query.match(/\S+/g);
5983 for (var i = 0, len = queryArray.length; i < len; i++) {
5984 var subquery = queryArray[i];
5985 var subqueryLen = subquery.length;
5986 var matchIdx = -subqueryLen;
5987 while (true) {
5988 matchIdx = pageContent.indexOf(subquery, matchIdx + subqueryLen);
5989 if (matchIdx === -1) {
5990 break;
5991 }
5992 if (entireWord && !this._isEntireWord(pageContent, matchIdx, subqueryLen)) {
5993 continue;
5994 }
5995 matchesWithLength.push({
5996 match: matchIdx,
5997 matchLength: subqueryLen,
5998 skipped: false
5999 });
6000 }
6001 }
6002 if (!this._pageMatchesLength) {
6003 this._pageMatchesLength = [];
6004 }
6005 this._pageMatchesLength[pageIndex] = [];
6006 this._pageMatches[pageIndex] = [];
6007 this._prepareMatches(matchesWithLength, this._pageMatches[pageIndex], this._pageMatchesLength[pageIndex]);
6008 }
6009 }, {
6010 key: '_calculateMatch',
6011 value: function _calculateMatch(pageIndex) {
6012 var pageContent = this._normalize(this._pageContents[pageIndex]);
6013 var query = this._normalize(this._state.query);
6014 var _state = this._state,
6015 caseSensitive = _state.caseSensitive,
6016 entireWord = _state.entireWord,
6017 phraseSearch = _state.phraseSearch;
6018
6019 if (query.length === 0) {
6020 return;
6021 }
6022 if (!caseSensitive) {
6023 pageContent = pageContent.toLowerCase();
6024 query = query.toLowerCase();
6025 }
6026 if (phraseSearch) {
6027 this._calculatePhraseMatch(query, pageIndex, pageContent, entireWord);
6028 } else {
6029 this._calculateWordMatch(query, pageIndex, pageContent, entireWord);
6030 }
6031 this._updatePage(pageIndex);
6032 if (this._resumePageIdx === pageIndex) {
6033 this._resumePageIdx = null;
6034 this._nextPageMatch();
6035 }
6036 var pageMatchesCount = this._pageMatches[pageIndex].length;
6037 if (pageMatchesCount > 0) {
6038 this._matchesCountTotal += pageMatchesCount;
6039 this._updateUIResultsCount();
6040 }
6041 }
6042 }, {
6043 key: '_extractText',
6044 value: function _extractText() {
6045 var _this2 = this;
6046
6047 if (this._extractTextPromises.length > 0) {
6048 return;
6049 }
6050 var promise = Promise.resolve();
6051
6052 var _loop = function _loop(i, ii) {
6053 var extractTextCapability = (0, _pdfjsLib.createPromiseCapability)();
6054 _this2._extractTextPromises[i] = extractTextCapability.promise;
6055 promise = promise.then(function () {
6056 return _this2._pdfDocument.getPage(i + 1).then(function (pdfPage) {
6057 return pdfPage.getTextContent({ normalizeWhitespace: true });
6058 }).then(function (textContent) {
6059 var textItems = textContent.items;
6060 var strBuf = [];
6061 for (var j = 0, jj = textItems.length; j < jj; j++) {
6062 strBuf.push(textItems[j].str);
6063 }
6064 _this2._pageContents[i] = strBuf.join('');
6065 extractTextCapability.resolve(i);
6066 }, function (reason) {
6067 console.error('Unable to get text content for page ' + (i + 1), reason);
6068 _this2._pageContents[i] = '';
6069 extractTextCapability.resolve(i);
6070 });
6071 });
6072 };
6073
6074 for (var i = 0, ii = this._linkService.pagesCount; i < ii; i++) {
6075 _loop(i, ii);
6076 }
6077 }
6078 }, {
6079 key: '_updatePage',
6080 value: function _updatePage(index) {
6081 if (this._selected.pageIdx === index) {
6082 this._linkService.page = index + 1;
6083 }
6084 this._eventBus.dispatch('updatetextlayermatches', {
6085 source: this,
6086 pageIndex: index
6087 });
6088 }
6089 }, {
6090 key: '_nextMatch',
6091 value: function _nextMatch() {
6092 var _this3 = this;
6093
6094 var previous = this._state.findPrevious;
6095 var currentPageIndex = this._linkService.page - 1;
6096 var numPages = this._linkService.pagesCount;
6097 this._highlightMatches = true;
6098 if (this._dirtyMatch) {
6099 this._dirtyMatch = false;
6100 this._selected.pageIdx = this._selected.matchIdx = -1;
6101 this._offset.pageIdx = currentPageIndex;
6102 this._offset.matchIdx = null;
6103 this._resumePageIdx = null;
6104 this._pageMatches.length = 0;
6105 this._pageMatchesLength = null;
6106 this._matchesCountTotal = 0;
6107 for (var i = 0; i < numPages; i++) {
6108 this._updatePage(i);
6109 if (!(i in this._pendingFindMatches)) {
6110 this._pendingFindMatches[i] = true;
6111 this._extractTextPromises[i].then(function (pageIdx) {
6112 delete _this3._pendingFindMatches[pageIdx];
6113 _this3._calculateMatch(pageIdx);
6114 });
6115 }
6116 }
6117 }
6118 if (this._state.query === '') {
6119 this._updateUIState(FindState.FOUND);
6120 return;
6121 }
6122 if (this._resumePageIdx) {
6123 return;
6124 }
6125 var offset = this._offset;
6126 this._pagesToSearch = numPages;
6127 if (offset.matchIdx !== null) {
6128 var numPageMatches = this._pageMatches[offset.pageIdx].length;
6129 if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) {
6130 offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1;
6131 this._updateMatch(true);
6132 return;
6133 }
6134 this._advanceOffsetPage(previous);
6135 }
6136 this._nextPageMatch();
6137 }
6138 }, {
6139 key: '_matchesReady',
6140 value: function _matchesReady(matches) {
6141 var offset = this._offset;
6142 var numMatches = matches.length;
6143 var previous = this._state.findPrevious;
6144 if (numMatches) {
6145 offset.matchIdx = previous ? numMatches - 1 : 0;
6146 this._updateMatch(true);
6147 return true;
6148 }
6149 this._advanceOffsetPage(previous);
6150 if (offset.wrapped) {
6151 offset.matchIdx = null;
6152 if (this._pagesToSearch < 0) {
6153 this._updateMatch(false);
6154 return true;
6155 }
6156 }
6157 return false;
6158 }
6159 }, {
6160 key: '_nextPageMatch',
6161 value: function _nextPageMatch() {
6162 if (this._resumePageIdx !== null) {
6163 console.error('There can only be one pending page.');
6164 }
6165 var matches = null;
6166 do {
6167 var pageIdx = this._offset.pageIdx;
6168 matches = this._pageMatches[pageIdx];
6169 if (!matches) {
6170 this._resumePageIdx = pageIdx;
6171 break;
6172 }
6173 } while (!this._matchesReady(matches));
6174 }
6175 }, {
6176 key: '_advanceOffsetPage',
6177 value: function _advanceOffsetPage(previous) {
6178 var offset = this._offset;
6179 var numPages = this._linkService.pagesCount;
6180 offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1;
6181 offset.matchIdx = null;
6182 this._pagesToSearch--;
6183 if (offset.pageIdx >= numPages || offset.pageIdx < 0) {
6184 offset.pageIdx = previous ? numPages - 1 : 0;
6185 offset.wrapped = true;
6186 }
6187 }
6188 }, {
6189 key: '_updateMatch',
6190 value: function _updateMatch() {
6191 var found = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
6192
6193 var state = FindState.NOT_FOUND;
6194 var wrapped = this._offset.wrapped;
6195 this._offset.wrapped = false;
6196 if (found) {
6197 var previousPage = this._selected.pageIdx;
6198 this._selected.pageIdx = this._offset.pageIdx;
6199 this._selected.matchIdx = this._offset.matchIdx;
6200 state = wrapped ? FindState.WRAPPED : FindState.FOUND;
6201 if (previousPage !== -1 && previousPage !== this._selected.pageIdx) {
6202 this._updatePage(previousPage);
6203 }
6204 }
6205 this._updateUIState(state, this._state.findPrevious);
6206 if (this._selected.pageIdx !== -1) {
6207 this._updatePage(this._selected.pageIdx);
6208 }
6209 }
6210 }, {
6211 key: '_onFindBarClose',
6212 value: function _onFindBarClose(evt) {
6213 var _this4 = this;
6214
6215 var pdfDocument = this._pdfDocument;
6216 this._firstPageCapability.promise.then(function () {
6217 if (!_this4._pdfDocument || pdfDocument && _this4._pdfDocument !== pdfDocument) {
6218 return;
6219 }
6220 if (_this4._findTimeout) {
6221 clearTimeout(_this4._findTimeout);
6222 _this4._findTimeout = null;
6223 _this4._updateUIState(FindState.FOUND);
6224 }
6225 _this4._highlightMatches = false;
6226 _this4._eventBus.dispatch('updatetextlayermatches', {
6227 source: _this4,
6228 pageIndex: -1
6229 });
6230 });
6231 }
6232 }, {
6233 key: '_requestMatchesCount',
6234 value: function _requestMatchesCount() {
6235 var _selected = this._selected,
6236 pageIdx = _selected.pageIdx,
6237 matchIdx = _selected.matchIdx;
6238
6239 var current = 0,
6240 total = this._matchesCountTotal;
6241 if (matchIdx !== -1) {
6242 for (var i = 0; i < pageIdx; i++) {
6243 current += this._pageMatches[i] && this._pageMatches[i].length || 0;
6244 }
6245 current += matchIdx + 1;
6246 }
6247 if (current < 1 || current > total) {
6248 current = total = 0;
6249 }
6250 return {
6251 current: current,
6252 total: total
6253 };
6254 }
6255 }, {
6256 key: '_updateUIResultsCount',
6257 value: function _updateUIResultsCount() {
6258 this._eventBus.dispatch('updatefindmatchescount', {
6259 source: this,
6260 matchesCount: this._requestMatchesCount()
6261 });
6262 }
6263 }, {
6264 key: '_updateUIState',
6265 value: function _updateUIState(state, previous) {
6266 this._eventBus.dispatch('updatefindcontrolstate', {
6267 source: this,
6268 state: state,
6269 previous: previous,
6270 matchesCount: this._requestMatchesCount()
6271 });
6272 }
6273 }, {
6274 key: 'highlightMatches',
6275 get: function get() {
6276 return this._highlightMatches;
6277 }
6278 }, {
6279 key: 'pageMatches',
6280 get: function get() {
6281 return this._pageMatches;
6282 }
6283 }, {
6284 key: 'pageMatchesLength',
6285 get: function get() {
6286 return this._pageMatchesLength;
6287 }
6288 }, {
6289 key: 'selected',
6290 get: function get() {
6291 return this._selected;
6292 }
6293 }, {
6294 key: 'state',
6295 get: function get() {
6296 return this._state;
6297 }
6298 }]);
6299
6300 return PDFFindController;
6301 }();
6302
6303 exports.FindState = FindState;
6304 exports.PDFFindController = PDFFindController;
6305
6306 /***/ }),
6307 /* 21 */
6308 /***/ (function(module, exports, __webpack_require__) {
6309
6310 "use strict";
6311
6312
6313 Object.defineProperty(exports, "__esModule", {
6314 value: true
6315 });
6316 var CharacterType = {
6317 SPACE: 0,
6318 ALPHA_LETTER: 1,
6319 PUNCT: 2,
6320 HAN_LETTER: 3,
6321 KATAKANA_LETTER: 4,
6322 HIRAGANA_LETTER: 5,
6323 HALFWIDTH_KATAKANA_LETTER: 6,
6324 THAI_LETTER: 7
6325 };
6326 function isAlphabeticalScript(charCode) {
6327 return charCode < 0x2E80;
6328 }
6329 function isAscii(charCode) {
6330 return (charCode & 0xFF80) === 0;
6331 }
6332 function isAsciiAlpha(charCode) {
6333 return charCode >= 0x61 && charCode <= 0x7A || charCode >= 0x41 && charCode <= 0x5A;
6334 }
6335 function isAsciiDigit(charCode) {
6336 return charCode >= 0x30 && charCode <= 0x39;
6337 }
6338 function isAsciiSpace(charCode) {
6339 return charCode === 0x20 || charCode === 0x09 || charCode === 0x0D || charCode === 0x0A;
6340 }
6341 function isHan(charCode) {
6342 return charCode >= 0x3400 && charCode <= 0x9FFF || charCode >= 0xF900 && charCode <= 0xFAFF;
6343 }
6344 function isKatakana(charCode) {
6345 return charCode >= 0x30A0 && charCode <= 0x30FF;
6346 }
6347 function isHiragana(charCode) {
6348 return charCode >= 0x3040 && charCode <= 0x309F;
6349 }
6350 function isHalfwidthKatakana(charCode) {
6351 return charCode >= 0xFF60 && charCode <= 0xFF9F;
6352 }
6353 function isThai(charCode) {
6354 return (charCode & 0xFF80) === 0x0E00;
6355 }
6356 function getCharacterType(charCode) {
6357 if (isAlphabeticalScript(charCode)) {
6358 if (isAscii(charCode)) {
6359 if (isAsciiSpace(charCode)) {
6360 return CharacterType.SPACE;
6361 } else if (isAsciiAlpha(charCode) || isAsciiDigit(charCode) || charCode === 0x5F) {
6362 return CharacterType.ALPHA_LETTER;
6363 }
6364 return CharacterType.PUNCT;
6365 } else if (isThai(charCode)) {
6366 return CharacterType.THAI_LETTER;
6367 } else if (charCode === 0xA0) {
6368 return CharacterType.SPACE;
6369 }
6370 return CharacterType.ALPHA_LETTER;
6371 }
6372 if (isHan(charCode)) {
6373 return CharacterType.HAN_LETTER;
6374 } else if (isKatakana(charCode)) {
6375 return CharacterType.KATAKANA_LETTER;
6376 } else if (isHiragana(charCode)) {
6377 return CharacterType.HIRAGANA_LETTER;
6378 } else if (isHalfwidthKatakana(charCode)) {
6379 return CharacterType.HALFWIDTH_KATAKANA_LETTER;
6380 }
6381 return CharacterType.ALPHA_LETTER;
6382 }
6383 exports.CharacterType = CharacterType;
6384 exports.getCharacterType = getCharacterType;
6385
6386 /***/ }),
6387 /* 22 */
6388 /***/ (function(module, exports, __webpack_require__) {
6389
6390 "use strict";
6391
6392
6393 Object.defineProperty(exports, "__esModule", {
6394 value: true
6395 });
6396 exports.isDestArraysEqual = exports.isDestHashesEqual = exports.PDFHistory = undefined;
6397
6398 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
6399
6400 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
6401
6402 var _ui_utils = __webpack_require__(6);
6403
6404 var _dom_events = __webpack_require__(14);
6405
6406 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6407
6408 var HASH_CHANGE_TIMEOUT = 1000;
6409 var POSITION_UPDATED_THRESHOLD = 50;
6410 var UPDATE_VIEWAREA_TIMEOUT = 1000;
6411 function getCurrentHash() {
6412 return document.location.hash;
6413 }
6414 function parseCurrentHash(linkService) {
6415 var hash = unescape(getCurrentHash()).substring(1);
6416 var params = (0, _ui_utils.parseQueryString)(hash);
6417 var page = params.page | 0;
6418 if (!(Number.isInteger(page) && page > 0 && page <= linkService.pagesCount)) {
6419 page = null;
6420 }
6421 return {
6422 hash: hash,
6423 page: page,
6424 rotation: linkService.rotation
6425 };
6426 }
6427
6428 var PDFHistory = function () {
6429 function PDFHistory(_ref) {
6430 var _this = this;
6431
6432 var linkService = _ref.linkService,
6433 eventBus = _ref.eventBus;
6434
6435 _classCallCheck(this, PDFHistory);
6436
6437 this.linkService = linkService;
6438 this.eventBus = eventBus || (0, _dom_events.getGlobalEventBus)();
6439 this.initialized = false;
6440 this.initialBookmark = null;
6441 this.initialRotation = null;
6442 this._boundEvents = Object.create(null);
6443 this._isViewerInPresentationMode = false;
6444 this._isPagesLoaded = false;
6445 this.eventBus.on('presentationmodechanged', function (evt) {
6446 _this._isViewerInPresentationMode = evt.active || evt.switchInProgress;
6447 });
6448 this.eventBus.on('pagesloaded', function (evt) {
6449 _this._isPagesLoaded = !!evt.pagesCount;
6450 });
6451 }
6452
6453 _createClass(PDFHistory, [{
6454 key: 'initialize',
6455 value: function initialize(fingerprint) {
6456 var resetHistory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
6457
6458 if (!fingerprint || typeof fingerprint !== 'string') {
6459 console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.');
6460 return;
6461 }
6462 var reInitialized = this.initialized && this.fingerprint !== fingerprint;
6463 this.fingerprint = fingerprint;
6464 if (!this.initialized) {
6465 this._bindEvents();
6466 }
6467 var state = window.history.state;
6468 this.initialized = true;
6469 this.initialBookmark = null;
6470 this.initialRotation = null;
6471 this._popStateInProgress = false;
6472 this._blockHashChange = 0;
6473 this._currentHash = getCurrentHash();
6474 this._numPositionUpdates = 0;
6475 this._uid = this._maxUid = 0;
6476 this._destination = null;
6477 this._position = null;
6478 if (!this._isValidState(state) || resetHistory) {
6479 var _parseCurrentHash = parseCurrentHash(this.linkService),
6480 hash = _parseCurrentHash.hash,
6481 page = _parseCurrentHash.page,
6482 rotation = _parseCurrentHash.rotation;
6483
6484 if (!hash || reInitialized || resetHistory) {
6485 this._pushOrReplaceState(null, true);
6486 return;
6487 }
6488 this._pushOrReplaceState({
6489 hash: hash,
6490 page: page,
6491 rotation: rotation
6492 }, true);
6493 return;
6494 }
6495 var destination = state.destination;
6496 this._updateInternalState(destination, state.uid, true);
6497 if (this._uid > this._maxUid) {
6498 this._maxUid = this._uid;
6499 }
6500 if (destination.rotation !== undefined) {
6501 this.initialRotation = destination.rotation;
6502 }
6503 if (destination.dest) {
6504 this.initialBookmark = JSON.stringify(destination.dest);
6505 this._destination.page = null;
6506 } else if (destination.hash) {
6507 this.initialBookmark = destination.hash;
6508 } else if (destination.page) {
6509 this.initialBookmark = 'page=' + destination.page;
6510 }
6511 }
6512 }, {
6513 key: 'push',
6514 value: function push(_ref2) {
6515 var _this2 = this;
6516
6517 var namedDest = _ref2.namedDest,
6518 explicitDest = _ref2.explicitDest,
6519 pageNumber = _ref2.pageNumber;
6520
6521 if (!this.initialized) {
6522 return;
6523 }
6524 if (namedDest && typeof namedDest !== 'string' || !Array.isArray(explicitDest) || !(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.linkService.pagesCount)) {
6525 console.error('PDFHistory.push: Invalid parameters.');
6526 return;
6527 }
6528 var hash = namedDest || JSON.stringify(explicitDest);
6529 if (!hash) {
6530 return;
6531 }
6532 var forceReplace = false;
6533 if (this._destination && (isDestHashesEqual(this._destination.hash, hash) || isDestArraysEqual(this._destination.dest, explicitDest))) {
6534 if (this._destination.page) {
6535 return;
6536 }
6537 forceReplace = true;
6538 }
6539 if (this._popStateInProgress && !forceReplace) {
6540 return;
6541 }
6542 this._pushOrReplaceState({
6543 dest: explicitDest,
6544 hash: hash,
6545 page: pageNumber,
6546 rotation: this.linkService.rotation
6547 }, forceReplace);
6548 if (!this._popStateInProgress) {
6549 this._popStateInProgress = true;
6550 Promise.resolve().then(function () {
6551 _this2._popStateInProgress = false;
6552 });
6553 }
6554 }
6555 }, {
6556 key: 'pushCurrentPosition',
6557 value: function pushCurrentPosition() {
6558 if (!this.initialized || this._popStateInProgress) {
6559 return;
6560 }
6561 this._tryPushCurrentPosition();
6562 }
6563 }, {
6564 key: 'back',
6565 value: function back() {
6566 if (!this.initialized || this._popStateInProgress) {
6567 return;
6568 }
6569 var state = window.history.state;
6570 if (this._isValidState(state) && state.uid > 0) {
6571 window.history.back();
6572 }
6573 }
6574 }, {
6575 key: 'forward',
6576 value: function forward() {
6577 if (!this.initialized || this._popStateInProgress) {
6578 return;
6579 }
6580 var state = window.history.state;
6581 if (this._isValidState(state) && state.uid < this._maxUid) {
6582 window.history.forward();
6583 }
6584 }
6585 }, {
6586 key: '_pushOrReplaceState',
6587 value: function _pushOrReplaceState(destination) {
6588 var forceReplace = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
6589
6590 var shouldReplace = forceReplace || !this._destination;
6591 var newState = {
6592 fingerprint: this.fingerprint,
6593 uid: shouldReplace ? this._uid : this._uid + 1,
6594 destination: destination
6595 };
6596 this._updateInternalState(destination, newState.uid);
6597 if (shouldReplace) {
6598 window.history.replaceState(newState, '');
6599 } else {
6600 this._maxUid = this._uid;
6601 window.history.pushState(newState, '');
6602 }
6603 }
6604 }, {
6605 key: '_tryPushCurrentPosition',
6606 value: function _tryPushCurrentPosition() {
6607 var temporary = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
6608
6609 if (!this._position) {
6610 return;
6611 }
6612 var position = this._position;
6613 if (temporary) {
6614 position = Object.assign(Object.create(null), this._position);
6615 position.temporary = true;
6616 }
6617 if (!this._destination) {
6618 this._pushOrReplaceState(position);
6619 return;
6620 }
6621 if (this._destination.temporary) {
6622 this._pushOrReplaceState(position, true);
6623 return;
6624 }
6625 if (this._destination.hash === position.hash) {
6626 return;
6627 }
6628 if (!this._destination.page && (POSITION_UPDATED_THRESHOLD <= 0 || this._numPositionUpdates <= POSITION_UPDATED_THRESHOLD)) {
6629 return;
6630 }
6631 var forceReplace = false;
6632 if (this._destination.page === position.first || this._destination.page === position.page) {
6633 if (this._destination.dest || !this._destination.first) {
6634 return;
6635 }
6636 forceReplace = true;
6637 }
6638 this._pushOrReplaceState(position, forceReplace);
6639 }
6640 }, {
6641 key: '_isValidState',
6642 value: function _isValidState(state) {
6643 if (!state) {
6644 return false;
6645 }
6646 if (state.fingerprint !== this.fingerprint) {
6647 return false;
6648 }
6649 if (!Number.isInteger(state.uid) || state.uid < 0) {
6650 return false;
6651 }
6652 if (state.destination === null || _typeof(state.destination) !== 'object') {
6653 return false;
6654 }
6655 return true;
6656 }
6657 }, {
6658 key: '_updateInternalState',
6659 value: function _updateInternalState(destination, uid) {
6660 var removeTemporary = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
6661
6662 if (this._updateViewareaTimeout) {
6663 clearTimeout(this._updateViewareaTimeout);
6664 this._updateViewareaTimeout = null;
6665 }
6666 if (removeTemporary && destination && destination.temporary) {
6667 delete destination.temporary;
6668 }
6669 this._destination = destination;
6670 this._uid = uid;
6671 this._numPositionUpdates = 0;
6672 }
6673 }, {
6674 key: '_updateViewarea',
6675 value: function _updateViewarea(_ref3) {
6676 var _this3 = this;
6677
6678 var location = _ref3.location;
6679
6680 if (this._updateViewareaTimeout) {
6681 clearTimeout(this._updateViewareaTimeout);
6682 this._updateViewareaTimeout = null;
6683 }
6684 this._position = {
6685 hash: this._isViewerInPresentationMode ? 'page=' + location.pageNumber : location.pdfOpenParams.substring(1),
6686 page: this.linkService.page,
6687 first: location.pageNumber,
6688 rotation: location.rotation
6689 };
6690 if (this._popStateInProgress) {
6691 return;
6692 }
6693 if (POSITION_UPDATED_THRESHOLD > 0 && this._isPagesLoaded && this._destination && !this._destination.page) {
6694 this._numPositionUpdates++;
6695 }
6696 if (UPDATE_VIEWAREA_TIMEOUT > 0) {
6697 this._updateViewareaTimeout = setTimeout(function () {
6698 if (!_this3._popStateInProgress) {
6699 _this3._tryPushCurrentPosition(true);
6700 }
6701 _this3._updateViewareaTimeout = null;
6702 }, UPDATE_VIEWAREA_TIMEOUT);
6703 }
6704 }
6705 }, {
6706 key: '_popState',
6707 value: function _popState(_ref4) {
6708 var _this4 = this;
6709
6710 var state = _ref4.state;
6711
6712 var newHash = getCurrentHash(),
6713 hashChanged = this._currentHash !== newHash;
6714 this._currentHash = newHash;
6715 if (!state || false) {
6716 this._uid++;
6717
6718 var _parseCurrentHash2 = parseCurrentHash(this.linkService),
6719 hash = _parseCurrentHash2.hash,
6720 page = _parseCurrentHash2.page,
6721 rotation = _parseCurrentHash2.rotation;
6722
6723 this._pushOrReplaceState({
6724 hash: hash,
6725 page: page,
6726 rotation: rotation
6727 }, true);
6728 return;
6729 }
6730 if (!this._isValidState(state)) {
6731 return;
6732 }
6733 this._popStateInProgress = true;
6734 if (hashChanged) {
6735 this._blockHashChange++;
6736 (0, _ui_utils.waitOnEventOrTimeout)({
6737 target: window,
6738 name: 'hashchange',
6739 delay: HASH_CHANGE_TIMEOUT
6740 }).then(function () {
6741 _this4._blockHashChange--;
6742 });
6743 }
6744 var destination = state.destination;
6745 this._updateInternalState(destination, state.uid, true);
6746 if (this._uid > this._maxUid) {
6747 this._maxUid = this._uid;
6748 }
6749 if ((0, _ui_utils.isValidRotation)(destination.rotation)) {
6750 this.linkService.rotation = destination.rotation;
6751 }
6752 if (destination.dest) {
6753 this.linkService.navigateTo(destination.dest);
6754 } else if (destination.hash) {
6755 this.linkService.setHash(destination.hash);
6756 } else if (destination.page) {
6757 this.linkService.page = destination.page;
6758 }
6759 Promise.resolve().then(function () {
6760 _this4._popStateInProgress = false;
6761 });
6762 }
6763 }, {
6764 key: '_bindEvents',
6765 value: function _bindEvents() {
6766 var _this5 = this;
6767
6768 var _boundEvents = this._boundEvents,
6769 eventBus = this.eventBus;
6770
6771 _boundEvents.updateViewarea = this._updateViewarea.bind(this);
6772 _boundEvents.popState = this._popState.bind(this);
6773 _boundEvents.pageHide = function (evt) {
6774 if (!_this5._destination || _this5._destination.temporary) {
6775 _this5._tryPushCurrentPosition();
6776 }
6777 };
6778 eventBus.on('updateviewarea', _boundEvents.updateViewarea);
6779 window.addEventListener('popstate', _boundEvents.popState);
6780 window.addEventListener('pagehide', _boundEvents.pageHide);
6781 }
6782 }, {
6783 key: 'popStateInProgress',
6784 get: function get() {
6785 return this.initialized && (this._popStateInProgress || this._blockHashChange > 0);
6786 }
6787 }]);
6788
6789 return PDFHistory;
6790 }();
6791
6792 function isDestHashesEqual(destHash, pushHash) {
6793 if (typeof destHash !== 'string' || typeof pushHash !== 'string') {
6794 return false;
6795 }
6796 if (destHash === pushHash) {
6797 return true;
6798 }
6799
6800 var _parseQueryString = (0, _ui_utils.parseQueryString)(destHash),
6801 nameddest = _parseQueryString.nameddest;
6802
6803 if (nameddest === pushHash) {
6804 return true;
6805 }
6806 return false;
6807 }
6808 function isDestArraysEqual(firstDest, secondDest) {
6809 function isEntryEqual(first, second) {
6810 if ((typeof first === 'undefined' ? 'undefined' : _typeof(first)) !== (typeof second === 'undefined' ? 'undefined' : _typeof(second))) {
6811 return false;
6812 }
6813 if (Array.isArray(first) || Array.isArray(second)) {
6814 return false;
6815 }
6816 if (first !== null && (typeof first === 'undefined' ? 'undefined' : _typeof(first)) === 'object' && second !== null) {
6817 if (Object.keys(first).length !== Object.keys(second).length) {
6818 return false;
6819 }
6820 for (var key in first) {
6821 if (!isEntryEqual(first[key], second[key])) {
6822 return false;
6823 }
6824 }
6825 return true;
6826 }
6827 return first === second || Number.isNaN(first) && Number.isNaN(second);
6828 }
6829 if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) {
6830 return false;
6831 }
6832 if (firstDest.length !== secondDest.length) {
6833 return false;
6834 }
6835 for (var i = 0, ii = firstDest.length; i < ii; i++) {
6836 if (!isEntryEqual(firstDest[i], secondDest[i])) {
6837 return false;
6838 }
6839 }
6840 return true;
6841 }
6842 exports.PDFHistory = PDFHistory;
6843 exports.isDestHashesEqual = isDestHashesEqual;
6844 exports.isDestArraysEqual = isDestArraysEqual;
6845
6846 /***/ }),
6847 /* 23 */
6848 /***/ (function(module, exports, __webpack_require__) {
6849
6850 "use strict";
6851
6852
6853 Object.defineProperty(exports, "__esModule", {
6854 value: true
6855 });
6856 exports.SimpleLinkService = exports.PDFLinkService = undefined;
6857
6858 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
6859
6860 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
6861
6862 var _dom_events = __webpack_require__(14);
6863
6864 var _ui_utils = __webpack_require__(6);
6865
6866 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6867
6868 var PDFLinkService = function () {
6869 function PDFLinkService() {
6870 var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
6871 eventBus = _ref.eventBus,
6872 _ref$externalLinkTarg = _ref.externalLinkTarget,
6873 externalLinkTarget = _ref$externalLinkTarg === undefined ? null : _ref$externalLinkTarg,
6874 _ref$externalLinkRel = _ref.externalLinkRel,
6875 externalLinkRel = _ref$externalLinkRel === undefined ? null : _ref$externalLinkRel;
6876
6877 _classCallCheck(this, PDFLinkService);
6878
6879 this.eventBus = eventBus || (0, _dom_events.getGlobalEventBus)();
6880 this.externalLinkTarget = externalLinkTarget;
6881 this.externalLinkRel = externalLinkRel;
6882 this.baseUrl = null;
6883 this.pdfDocument = null;
6884 this.pdfViewer = null;
6885 this.pdfHistory = null;
6886 this._pagesRefCache = null;
6887 }
6888
6889 _createClass(PDFLinkService, [{
6890 key: 'setDocument',
6891 value: function setDocument(pdfDocument) {
6892 var baseUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
6893
6894 this.baseUrl = baseUrl;
6895 this.pdfDocument = pdfDocument;
6896 this._pagesRefCache = Object.create(null);
6897 }
6898 }, {
6899 key: 'setViewer',
6900 value: function setViewer(pdfViewer) {
6901 this.pdfViewer = pdfViewer;
6902 }
6903 }, {
6904 key: 'setHistory',
6905 value: function setHistory(pdfHistory) {
6906 this.pdfHistory = pdfHistory;
6907 }
6908 }, {
6909 key: 'navigateTo',
6910 value: function navigateTo(dest) {
6911 var _this = this;
6912
6913 var goToDestination = function goToDestination(_ref2) {
6914 var namedDest = _ref2.namedDest,
6915 explicitDest = _ref2.explicitDest;
6916
6917 var destRef = explicitDest[0],
6918 pageNumber = void 0;
6919 if (destRef instanceof Object) {
6920 pageNumber = _this._cachedPageNumber(destRef);
6921 if (pageNumber === null) {
6922 _this.pdfDocument.getPageIndex(destRef).then(function (pageIndex) {
6923 _this.cachePageRef(pageIndex + 1, destRef);
6924 goToDestination({
6925 namedDest: namedDest,
6926 explicitDest: explicitDest
6927 });
6928 }).catch(function () {
6929 console.error('PDFLinkService.navigateTo: "' + destRef + '" is not ' + ('a valid page reference, for dest="' + dest + '".'));
6930 });
6931 return;
6932 }
6933 } else if (Number.isInteger(destRef)) {
6934 pageNumber = destRef + 1;
6935 } else {
6936 console.error('PDFLinkService.navigateTo: "' + destRef + '" is not ' + ('a valid destination reference, for dest="' + dest + '".'));
6937 return;
6938 }
6939 if (!pageNumber || pageNumber < 1 || pageNumber > _this.pagesCount) {
6940 console.error('PDFLinkService.navigateTo: "' + pageNumber + '" is not ' + ('a valid page number, for dest="' + dest + '".'));
6941 return;
6942 }
6943 if (_this.pdfHistory) {
6944 _this.pdfHistory.pushCurrentPosition();
6945 _this.pdfHistory.push({
6946 namedDest: namedDest,
6947 explicitDest: explicitDest,
6948 pageNumber: pageNumber
6949 });
6950 }
6951 _this.pdfViewer.scrollPageIntoView({
6952 pageNumber: pageNumber,
6953 destArray: explicitDest
6954 });
6955 };
6956 new Promise(function (resolve, reject) {
6957 if (typeof dest === 'string') {
6958 _this.pdfDocument.getDestination(dest).then(function (destArray) {
6959 resolve({
6960 namedDest: dest,
6961 explicitDest: destArray
6962 });
6963 });
6964 return;
6965 }
6966 resolve({
6967 namedDest: '',
6968 explicitDest: dest
6969 });
6970 }).then(function (data) {
6971 if (!Array.isArray(data.explicitDest)) {
6972 console.error('PDFLinkService.navigateTo: "' + data.explicitDest + '" is' + (' not a valid destination array, for dest="' + dest + '".'));
6973 return;
6974 }
6975 goToDestination(data);
6976 });
6977 }
6978 }, {
6979 key: 'getDestinationHash',
6980 value: function getDestinationHash(dest) {
6981 if (typeof dest === 'string') {
6982 return this.getAnchorUrl('#' + escape(dest));
6983 }
6984 if (Array.isArray(dest)) {
6985 var str = JSON.stringify(dest);
6986 return this.getAnchorUrl('#' + escape(str));
6987 }
6988 return this.getAnchorUrl('');
6989 }
6990 }, {
6991 key: 'getAnchorUrl',
6992 value: function getAnchorUrl(anchor) {
6993 return (this.baseUrl || '') + anchor;
6994 }
6995 }, {
6996 key: 'setHash',
6997 value: function setHash(hash) {
6998 var pageNumber = void 0,
6999 dest = void 0;
7000 if (hash.includes('=')) {
7001 var params = (0, _ui_utils.parseQueryString)(hash);
7002 if ('search' in params) {
7003 this.eventBus.dispatch('findfromurlhash', {
7004 source: this,
7005 query: params['search'].replace(/"/g, ''),
7006 phraseSearch: params['phrase'] === 'true'
7007 });
7008 }
7009 if ('nameddest' in params) {
7010 this.navigateTo(params.nameddest);
7011 return;
7012 }
7013 if ('page' in params) {
7014 pageNumber = params.page | 0 || 1;
7015 }
7016 if ('zoom' in params) {
7017 var zoomArgs = params.zoom.split(',');
7018 var zoomArg = zoomArgs[0];
7019 var zoomArgNumber = parseFloat(zoomArg);
7020 if (!zoomArg.includes('Fit')) {
7021 dest = [null, { name: 'XYZ' }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg];
7022 } else {
7023 if (zoomArg === 'Fit' || zoomArg === 'FitB') {
7024 dest = [null, { name: zoomArg }];
7025 } else if (zoomArg === 'FitH' || zoomArg === 'FitBH' || zoomArg === 'FitV' || zoomArg === 'FitBV') {
7026 dest = [null, { name: zoomArg }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null];
7027 } else if (zoomArg === 'FitR') {
7028 if (zoomArgs.length !== 5) {
7029 console.error('PDFLinkService.setHash: Not enough parameters for "FitR".');
7030 } else {
7031 dest = [null, { name: zoomArg }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0];
7032 }
7033 } else {
7034 console.error('PDFLinkService.setHash: "' + zoomArg + '" is not ' + 'a valid zoom value.');
7035 }
7036 }
7037 }
7038 if (dest) {
7039 this.pdfViewer.scrollPageIntoView({
7040 pageNumber: pageNumber || this.page,
7041 destArray: dest,
7042 allowNegativeOffset: true
7043 });
7044 } else if (pageNumber) {
7045 this.page = pageNumber;
7046 }
7047 if ('pagemode' in params) {
7048 this.eventBus.dispatch('pagemode', {
7049 source: this,
7050 mode: params.pagemode
7051 });
7052 }
7053 } else {
7054 dest = unescape(hash);
7055 try {
7056 dest = JSON.parse(dest);
7057 if (!Array.isArray(dest)) {
7058 dest = dest.toString();
7059 }
7060 } catch (ex) {}
7061 if (typeof dest === 'string' || isValidExplicitDestination(dest)) {
7062 this.navigateTo(dest);
7063 return;
7064 }
7065 console.error('PDFLinkService.setHash: "' + unescape(hash) + '" is not ' + 'a valid destination.');
7066 }
7067 }
7068 }, {
7069 key: 'executeNamedAction',
7070 value: function executeNamedAction(action) {
7071 switch (action) {
7072 case 'GoBack':
7073 if (this.pdfHistory) {
7074 this.pdfHistory.back();
7075 }
7076 break;
7077 case 'GoForward':
7078 if (this.pdfHistory) {
7079 this.pdfHistory.forward();
7080 }
7081 break;
7082 case 'NextPage':
7083 if (this.page < this.pagesCount) {
7084 this.page++;
7085 }
7086 break;
7087 case 'PrevPage':
7088 if (this.page > 1) {
7089 this.page--;
7090 }
7091 break;
7092 case 'LastPage':
7093 this.page = this.pagesCount;
7094 break;
7095 case 'FirstPage':
7096 this.page = 1;
7097 break;
7098 default:
7099 break;
7100 }
7101 this.eventBus.dispatch('namedaction', {
7102 source: this,
7103 action: action
7104 });
7105 }
7106 }, {
7107 key: 'cachePageRef',
7108 value: function cachePageRef(pageNum, pageRef) {
7109 if (!pageRef) {
7110 return;
7111 }
7112 var refStr = pageRef.num + ' ' + pageRef.gen + ' R';
7113 this._pagesRefCache[refStr] = pageNum;
7114 }
7115 }, {
7116 key: '_cachedPageNumber',
7117 value: function _cachedPageNumber(pageRef) {
7118 var refStr = pageRef.num + ' ' + pageRef.gen + ' R';
7119 return this._pagesRefCache && this._pagesRefCache[refStr] || null;
7120 }
7121 }, {
7122 key: 'pagesCount',
7123 get: function get() {
7124 return this.pdfDocument ? this.pdfDocument.numPages : 0;
7125 }
7126 }, {
7127 key: 'page',
7128 get: function get() {
7129 return this.pdfViewer.currentPageNumber;
7130 },
7131 set: function set(value) {
7132 this.pdfViewer.currentPageNumber = value;
7133 }
7134 }, {
7135 key: 'rotation',
7136 get: function get() {
7137 return this.pdfViewer.pagesRotation;
7138 },
7139 set: function set(value) {
7140 this.pdfViewer.pagesRotation = value;
7141 }
7142 }]);
7143
7144 return PDFLinkService;
7145 }();
7146
7147 function isValidExplicitDestination(dest) {
7148 if (!Array.isArray(dest)) {
7149 return false;
7150 }
7151 var destLength = dest.length,
7152 allowNull = true;
7153 if (destLength < 2) {
7154 return false;
7155 }
7156 var page = dest[0];
7157 if (!((typeof page === 'undefined' ? 'undefined' : _typeof(page)) === 'object' && Number.isInteger(page.num) && Number.isInteger(page.gen)) && !(Number.isInteger(page) && page >= 0)) {
7158 return false;
7159 }
7160 var zoom = dest[1];
7161 if (!((typeof zoom === 'undefined' ? 'undefined' : _typeof(zoom)) === 'object' && typeof zoom.name === 'string')) {
7162 return false;
7163 }
7164 switch (zoom.name) {
7165 case 'XYZ':
7166 if (destLength !== 5) {
7167 return false;
7168 }
7169 break;
7170 case 'Fit':
7171 case 'FitB':
7172 return destLength === 2;
7173 case 'FitH':
7174 case 'FitBH':
7175 case 'FitV':
7176 case 'FitBV':
7177 if (destLength !== 3) {
7178 return false;
7179 }
7180 break;
7181 case 'FitR':
7182 if (destLength !== 6) {
7183 return false;
7184 }
7185 allowNull = false;
7186 break;
7187 default:
7188 return false;
7189 }
7190 for (var i = 2; i < destLength; i++) {
7191 var param = dest[i];
7192 if (!(typeof param === 'number' || allowNull && param === null)) {
7193 return false;
7194 }
7195 }
7196 return true;
7197 }
7198
7199 var SimpleLinkService = function () {
7200 function SimpleLinkService() {
7201 _classCallCheck(this, SimpleLinkService);
7202
7203 this.externalLinkTarget = null;
7204 this.externalLinkRel = null;
7205 }
7206
7207 _createClass(SimpleLinkService, [{
7208 key: 'navigateTo',
7209 value: function navigateTo(dest) {}
7210 }, {
7211 key: 'getDestinationHash',
7212 value: function getDestinationHash(dest) {
7213 return '#';
7214 }
7215 }, {
7216 key: 'getAnchorUrl',
7217 value: function getAnchorUrl(hash) {
7218 return '#';
7219 }
7220 }, {
7221 key: 'setHash',
7222 value: function setHash(hash) {}
7223 }, {
7224 key: 'executeNamedAction',
7225 value: function executeNamedAction(action) {}
7226 }, {
7227 key: 'cachePageRef',
7228 value: function cachePageRef(pageNum, pageRef) {}
7229 }, {
7230 key: 'pagesCount',
7231 get: function get() {
7232 return 0;
7233 }
7234 }, {
7235 key: 'page',
7236 get: function get() {
7237 return 0;
7238 },
7239 set: function set(value) {}
7240 }, {
7241 key: 'rotation',
7242 get: function get() {
7243 return 0;
7244 },
7245 set: function set(value) {}
7246 }]);
7247
7248 return SimpleLinkService;
7249 }();
7250
7251 exports.PDFLinkService = PDFLinkService;
7252 exports.SimpleLinkService = SimpleLinkService;
7253
7254 /***/ }),
7255 /* 24 */
7256 /***/ (function(module, exports, __webpack_require__) {
7257
7258 "use strict";
7259
7260
7261 Object.defineProperty(exports, "__esModule", {
7262 value: true
7263 });
7264 exports.PDFOutlineViewer = undefined;
7265
7266 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
7267
7268 var _pdfjsLib = __webpack_require__(7);
7269
7270 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
7271
7272 var DEFAULT_TITLE = '\u2013';
7273
7274 var PDFOutlineViewer = function () {
7275 function PDFOutlineViewer(_ref) {
7276 var container = _ref.container,
7277 linkService = _ref.linkService,
7278 eventBus = _ref.eventBus;
7279
7280 _classCallCheck(this, PDFOutlineViewer);
7281
7282 this.container = container;
7283 this.linkService = linkService;
7284 this.eventBus = eventBus;
7285 this.reset();
7286 eventBus.on('toggleoutlinetree', this.toggleOutlineTree.bind(this));
7287 }
7288
7289 _createClass(PDFOutlineViewer, [{
7290 key: 'reset',
7291 value: function reset() {
7292 this.outline = null;
7293 this.lastToggleIsShow = true;
7294 this.container.textContent = '';
7295 this.container.classList.remove('outlineWithDeepNesting');
7296 }
7297 }, {
7298 key: '_dispatchEvent',
7299 value: function _dispatchEvent(outlineCount) {
7300 this.eventBus.dispatch('outlineloaded', {
7301 source: this,
7302 outlineCount: outlineCount
7303 });
7304 }
7305 }, {
7306 key: '_bindLink',
7307 value: function _bindLink(element, _ref2) {
7308 var url = _ref2.url,
7309 newWindow = _ref2.newWindow,
7310 dest = _ref2.dest;
7311 var linkService = this.linkService;
7312
7313 if (url) {
7314 (0, _pdfjsLib.addLinkAttributes)(element, {
7315 url: url,
7316 target: newWindow ? _pdfjsLib.LinkTarget.BLANK : linkService.externalLinkTarget,
7317 rel: linkService.externalLinkRel
7318 });
7319 return;
7320 }
7321 element.href = linkService.getDestinationHash(dest);
7322 element.onclick = function () {
7323 if (dest) {
7324 linkService.navigateTo(dest);
7325 }
7326 return false;
7327 };
7328 }
7329 }, {
7330 key: '_setStyles',
7331 value: function _setStyles(element, _ref3) {
7332 var bold = _ref3.bold,
7333 italic = _ref3.italic;
7334
7335 var styleStr = '';
7336 if (bold) {
7337 styleStr += 'font-weight: bold;';
7338 }
7339 if (italic) {
7340 styleStr += 'font-style: italic;';
7341 }
7342 if (styleStr) {
7343 element.setAttribute('style', styleStr);
7344 }
7345 }
7346 }, {
7347 key: '_addToggleButton',
7348 value: function _addToggleButton(div) {
7349 var _this = this;
7350
7351 var toggler = document.createElement('div');
7352 toggler.className = 'outlineItemToggler';
7353 toggler.onclick = function (evt) {
7354 evt.stopPropagation();
7355 toggler.classList.toggle('outlineItemsHidden');
7356 if (evt.shiftKey) {
7357 var shouldShowAll = !toggler.classList.contains('outlineItemsHidden');
7358 _this._toggleOutlineItem(div, shouldShowAll);
7359 }
7360 };
7361 div.insertBefore(toggler, div.firstChild);
7362 }
7363 }, {
7364 key: '_toggleOutlineItem',
7365 value: function _toggleOutlineItem(root, show) {
7366 this.lastToggleIsShow = show;
7367 var togglers = root.querySelectorAll('.outlineItemToggler');
7368 for (var i = 0, ii = togglers.length; i < ii; ++i) {
7369 togglers[i].classList[show ? 'remove' : 'add']('outlineItemsHidden');
7370 }
7371 }
7372 }, {
7373 key: 'toggleOutlineTree',
7374 value: function toggleOutlineTree() {
7375 if (!this.outline) {
7376 return;
7377 }
7378 this._toggleOutlineItem(this.container, !this.lastToggleIsShow);
7379 }
7380 }, {
7381 key: 'render',
7382 value: function render(_ref4) {
7383 var outline = _ref4.outline;
7384
7385 var outlineCount = 0;
7386 if (this.outline) {
7387 this.reset();
7388 }
7389 this.outline = outline || null;
7390 if (!outline) {
7391 this._dispatchEvent(outlineCount);
7392 return;
7393 }
7394 var fragment = document.createDocumentFragment();
7395 var queue = [{
7396 parent: fragment,
7397 items: this.outline
7398 }];
7399 var hasAnyNesting = false;
7400 while (queue.length > 0) {
7401 var levelData = queue.shift();
7402 for (var i = 0, len = levelData.items.length; i < len; i++) {
7403 var item = levelData.items[i];
7404 var div = document.createElement('div');
7405 div.className = 'outlineItem';
7406 var element = document.createElement('a');
7407 this._bindLink(element, item);
7408 this._setStyles(element, item);
7409 element.textContent = (0, _pdfjsLib.removeNullCharacters)(item.title) || DEFAULT_TITLE;
7410 div.appendChild(element);
7411 if (item.items.length > 0) {
7412 hasAnyNesting = true;
7413 this._addToggleButton(div);
7414 var itemsDiv = document.createElement('div');
7415 itemsDiv.className = 'outlineItems';
7416 div.appendChild(itemsDiv);
7417 queue.push({
7418 parent: itemsDiv,
7419 items: item.items
7420 });
7421 }
7422 levelData.parent.appendChild(div);
7423 outlineCount++;
7424 }
7425 }
7426 if (hasAnyNesting) {
7427 this.container.classList.add('outlineWithDeepNesting');
7428 }
7429 this.container.appendChild(fragment);
7430 this._dispatchEvent(outlineCount);
7431 }
7432 }]);
7433
7434 return PDFOutlineViewer;
7435 }();
7436
7437 exports.PDFOutlineViewer = PDFOutlineViewer;
7438
7439 /***/ }),
7440 /* 25 */
7441 /***/ (function(module, exports, __webpack_require__) {
7442
7443 "use strict";
7444
7445
7446 Object.defineProperty(exports, "__esModule", {
7447 value: true
7448 });
7449 exports.PDFPresentationMode = undefined;
7450
7451 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
7452
7453 var _ui_utils = __webpack_require__(6);
7454
7455 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
7456
7457 var DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500;
7458 var DELAY_BEFORE_HIDING_CONTROLS = 3000;
7459 var ACTIVE_SELECTOR = 'pdfPresentationMode';
7460 var CONTROLS_SELECTOR = 'pdfPresentationModeControls';
7461 var MOUSE_SCROLL_COOLDOWN_TIME = 50;
7462 var PAGE_SWITCH_THRESHOLD = 0.1;
7463 var SWIPE_MIN_DISTANCE_THRESHOLD = 50;
7464 var SWIPE_ANGLE_THRESHOLD = Math.PI / 6;
7465
7466 var PDFPresentationMode = function () {
7467 function PDFPresentationMode(_ref) {
7468 var _this = this;
7469
7470 var container = _ref.container,
7471 _ref$viewer = _ref.viewer,
7472 viewer = _ref$viewer === undefined ? null : _ref$viewer,
7473 pdfViewer = _ref.pdfViewer,
7474 eventBus = _ref.eventBus,
7475 _ref$contextMenuItems = _ref.contextMenuItems,
7476 contextMenuItems = _ref$contextMenuItems === undefined ? null : _ref$contextMenuItems;
7477
7478 _classCallCheck(this, PDFPresentationMode);
7479
7480 this.container = container;
7481 this.viewer = viewer || container.firstElementChild;
7482 this.pdfViewer = pdfViewer;
7483 this.eventBus = eventBus;
7484 this.active = false;
7485 this.args = null;
7486 this.contextMenuOpen = false;
7487 this.mouseScrollTimeStamp = 0;
7488 this.mouseScrollDelta = 0;
7489 this.touchSwipeState = null;
7490 if (contextMenuItems) {
7491 contextMenuItems.contextFirstPage.addEventListener('click', function () {
7492 _this.contextMenuOpen = false;
7493 _this.eventBus.dispatch('firstpage', { source: _this });
7494 });
7495 contextMenuItems.contextLastPage.addEventListener('click', function () {
7496 _this.contextMenuOpen = false;
7497 _this.eventBus.dispatch('lastpage', { source: _this });
7498 });
7499 contextMenuItems.contextPageRotateCw.addEventListener('click', function () {
7500 _this.contextMenuOpen = false;
7501 _this.eventBus.dispatch('rotatecw', { source: _this });
7502 });
7503 contextMenuItems.contextPageRotateCcw.addEventListener('click', function () {
7504 _this.contextMenuOpen = false;
7505 _this.eventBus.dispatch('rotateccw', { source: _this });
7506 });
7507 }
7508 }
7509
7510 _createClass(PDFPresentationMode, [{
7511 key: 'request',
7512 value: function request() {
7513 if (this.switchInProgress || this.active || !this.viewer.hasChildNodes()) {
7514 return false;
7515 }
7516 this._addFullscreenChangeListeners();
7517 this._setSwitchInProgress();
7518 this._notifyStateChange();
7519 if (this.container.requestFullscreen) {
7520 this.container.requestFullscreen();
7521 } else if (this.container.mozRequestFullScreen) {
7522 this.container.mozRequestFullScreen();
7523 } else if (this.container.webkitRequestFullscreen) {
7524 this.container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
7525 } else if (this.container.msRequestFullscreen) {
7526 this.container.msRequestFullscreen();
7527 } else {
7528 return false;
7529 }
7530 this.args = {
7531 page: this.pdfViewer.currentPageNumber,
7532 previousScale: this.pdfViewer.currentScaleValue
7533 };
7534 return true;
7535 }
7536 }, {
7537 key: '_mouseWheel',
7538 value: function _mouseWheel(evt) {
7539 if (!this.active) {
7540 return;
7541 }
7542 evt.preventDefault();
7543 var delta = (0, _ui_utils.normalizeWheelEventDelta)(evt);
7544 var currentTime = new Date().getTime();
7545 var storedTime = this.mouseScrollTimeStamp;
7546 if (currentTime > storedTime && currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) {
7547 return;
7548 }
7549 if (this.mouseScrollDelta > 0 && delta < 0 || this.mouseScrollDelta < 0 && delta > 0) {
7550 this._resetMouseScrollState();
7551 }
7552 this.mouseScrollDelta += delta;
7553 if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) {
7554 var totalDelta = this.mouseScrollDelta;
7555 this._resetMouseScrollState();
7556 var success = totalDelta > 0 ? this._goToPreviousPage() : this._goToNextPage();
7557 if (success) {
7558 this.mouseScrollTimeStamp = currentTime;
7559 }
7560 }
7561 }
7562 }, {
7563 key: '_goToPreviousPage',
7564 value: function _goToPreviousPage() {
7565 var page = this.pdfViewer.currentPageNumber;
7566 if (page <= 1) {
7567 return false;
7568 }
7569 this.pdfViewer.currentPageNumber = page - 1;
7570 return true;
7571 }
7572 }, {
7573 key: '_goToNextPage',
7574 value: function _goToNextPage() {
7575 var page = this.pdfViewer.currentPageNumber;
7576 if (page >= this.pdfViewer.pagesCount) {
7577 return false;
7578 }
7579 this.pdfViewer.currentPageNumber = page + 1;
7580 return true;
7581 }
7582 }, {
7583 key: '_notifyStateChange',
7584 value: function _notifyStateChange() {
7585 this.eventBus.dispatch('presentationmodechanged', {
7586 source: this,
7587 active: this.active,
7588 switchInProgress: !!this.switchInProgress
7589 });
7590 }
7591 }, {
7592 key: '_setSwitchInProgress',
7593 value: function _setSwitchInProgress() {
7594 var _this2 = this;
7595
7596 if (this.switchInProgress) {
7597 clearTimeout(this.switchInProgress);
7598 }
7599 this.switchInProgress = setTimeout(function () {
7600 _this2._removeFullscreenChangeListeners();
7601 delete _this2.switchInProgress;
7602 _this2._notifyStateChange();
7603 }, DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS);
7604 }
7605 }, {
7606 key: '_resetSwitchInProgress',
7607 value: function _resetSwitchInProgress() {
7608 if (this.switchInProgress) {
7609 clearTimeout(this.switchInProgress);
7610 delete this.switchInProgress;
7611 }
7612 }
7613 }, {
7614 key: '_enter',
7615 value: function _enter() {
7616 var _this3 = this;
7617
7618 this.active = true;
7619 this._resetSwitchInProgress();
7620 this._notifyStateChange();
7621 this.container.classList.add(ACTIVE_SELECTOR);
7622 setTimeout(function () {
7623 _this3.pdfViewer.currentPageNumber = _this3.args.page;
7624 _this3.pdfViewer.currentScaleValue = 'page-fit';
7625 }, 0);
7626 this._addWindowListeners();
7627 this._showControls();
7628 this.contextMenuOpen = false;
7629 this.container.setAttribute('contextmenu', 'viewerContextMenu');
7630 window.getSelection().removeAllRanges();
7631 }
7632 }, {
7633 key: '_exit',
7634 value: function _exit() {
7635 var _this4 = this;
7636
7637 var page = this.pdfViewer.currentPageNumber;
7638 this.container.classList.remove(ACTIVE_SELECTOR);
7639 setTimeout(function () {
7640 _this4.active = false;
7641 _this4._removeFullscreenChangeListeners();
7642 _this4._notifyStateChange();
7643 _this4.pdfViewer.currentScaleValue = _this4.args.previousScale;
7644 _this4.pdfViewer.currentPageNumber = page;
7645 _this4.args = null;
7646 }, 0);
7647 this._removeWindowListeners();
7648 this._hideControls();
7649 this._resetMouseScrollState();
7650 this.container.removeAttribute('contextmenu');
7651 this.contextMenuOpen = false;
7652 }
7653 }, {
7654 key: '_mouseDown',
7655 value: function _mouseDown(evt) {
7656 if (this.contextMenuOpen) {
7657 this.contextMenuOpen = false;
7658 evt.preventDefault();
7659 return;
7660 }
7661 if (evt.button === 0) {
7662 var isInternalLink = evt.target.href && evt.target.classList.contains('internalLink');
7663 if (!isInternalLink) {
7664 evt.preventDefault();
7665 if (evt.shiftKey) {
7666 this._goToPreviousPage();
7667 } else {
7668 this._goToNextPage();
7669 }
7670 }
7671 }
7672 }
7673 }, {
7674 key: '_contextMenu',
7675 value: function _contextMenu() {
7676 this.contextMenuOpen = true;
7677 }
7678 }, {
7679 key: '_showControls',
7680 value: function _showControls() {
7681 var _this5 = this;
7682
7683 if (this.controlsTimeout) {
7684 clearTimeout(this.controlsTimeout);
7685 } else {
7686 this.container.classList.add(CONTROLS_SELECTOR);
7687 }
7688 this.controlsTimeout = setTimeout(function () {
7689 _this5.container.classList.remove(CONTROLS_SELECTOR);
7690 delete _this5.controlsTimeout;
7691 }, DELAY_BEFORE_HIDING_CONTROLS);
7692 }
7693 }, {
7694 key: '_hideControls',
7695 value: function _hideControls() {
7696 if (!this.controlsTimeout) {
7697 return;
7698 }
7699 clearTimeout(this.controlsTimeout);
7700 this.container.classList.remove(CONTROLS_SELECTOR);
7701 delete this.controlsTimeout;
7702 }
7703 }, {
7704 key: '_resetMouseScrollState',
7705 value: function _resetMouseScrollState() {
7706 this.mouseScrollTimeStamp = 0;
7707 this.mouseScrollDelta = 0;
7708 }
7709 }, {
7710 key: '_touchSwipe',
7711 value: function _touchSwipe(evt) {
7712 if (!this.active) {
7713 return;
7714 }
7715 if (evt.touches.length > 1) {
7716 this.touchSwipeState = null;
7717 return;
7718 }
7719 switch (evt.type) {
7720 case 'touchstart':
7721 this.touchSwipeState = {
7722 startX: evt.touches[0].pageX,
7723 startY: evt.touches[0].pageY,
7724 endX: evt.touches[0].pageX,
7725 endY: evt.touches[0].pageY
7726 };
7727 break;
7728 case 'touchmove':
7729 if (this.touchSwipeState === null) {
7730 return;
7731 }
7732 this.touchSwipeState.endX = evt.touches[0].pageX;
7733 this.touchSwipeState.endY = evt.touches[0].pageY;
7734 evt.preventDefault();
7735 break;
7736 case 'touchend':
7737 if (this.touchSwipeState === null) {
7738 return;
7739 }
7740 var delta = 0;
7741 var dx = this.touchSwipeState.endX - this.touchSwipeState.startX;
7742 var dy = this.touchSwipeState.endY - this.touchSwipeState.startY;
7743 var absAngle = Math.abs(Math.atan2(dy, dx));
7744 if (Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD && (absAngle <= SWIPE_ANGLE_THRESHOLD || absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)) {
7745 delta = dx;
7746 } else if (Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD && Math.abs(absAngle - Math.PI / 2) <= SWIPE_ANGLE_THRESHOLD) {
7747 delta = dy;
7748 }
7749 if (delta > 0) {
7750 this._goToPreviousPage();
7751 } else if (delta < 0) {
7752 this._goToNextPage();
7753 }
7754 break;
7755 }
7756 }
7757 }, {
7758 key: '_addWindowListeners',
7759 value: function _addWindowListeners() {
7760 this.showControlsBind = this._showControls.bind(this);
7761 this.mouseDownBind = this._mouseDown.bind(this);
7762 this.mouseWheelBind = this._mouseWheel.bind(this);
7763 this.resetMouseScrollStateBind = this._resetMouseScrollState.bind(this);
7764 this.contextMenuBind = this._contextMenu.bind(this);
7765 this.touchSwipeBind = this._touchSwipe.bind(this);
7766 window.addEventListener('mousemove', this.showControlsBind);
7767 window.addEventListener('mousedown', this.mouseDownBind);
7768 window.addEventListener('wheel', this.mouseWheelBind);
7769 window.addEventListener('keydown', this.resetMouseScrollStateBind);
7770 window.addEventListener('contextmenu', this.contextMenuBind);
7771 window.addEventListener('touchstart', this.touchSwipeBind);
7772 window.addEventListener('touchmove', this.touchSwipeBind);
7773 window.addEventListener('touchend', this.touchSwipeBind);
7774 }
7775 }, {
7776 key: '_removeWindowListeners',
7777 value: function _removeWindowListeners() {
7778 window.removeEventListener('mousemove', this.showControlsBind);
7779 window.removeEventListener('mousedown', this.mouseDownBind);
7780 window.removeEventListener('wheel', this.mouseWheelBind);
7781 window.removeEventListener('keydown', this.resetMouseScrollStateBind);
7782 window.removeEventListener('contextmenu', this.contextMenuBind);
7783 window.removeEventListener('touchstart', this.touchSwipeBind);
7784 window.removeEventListener('touchmove', this.touchSwipeBind);
7785 window.removeEventListener('touchend', this.touchSwipeBind);
7786 delete this.showControlsBind;
7787 delete this.mouseDownBind;
7788 delete this.mouseWheelBind;
7789 delete this.resetMouseScrollStateBind;
7790 delete this.contextMenuBind;
7791 delete this.touchSwipeBind;
7792 }
7793 }, {
7794 key: '_fullscreenChange',
7795 value: function _fullscreenChange() {
7796 if (this.isFullscreen) {
7797 this._enter();
7798 } else {
7799 this._exit();
7800 }
7801 }
7802 }, {
7803 key: '_addFullscreenChangeListeners',
7804 value: function _addFullscreenChangeListeners() {
7805 this.fullscreenChangeBind = this._fullscreenChange.bind(this);
7806 window.addEventListener('fullscreenchange', this.fullscreenChangeBind);
7807 window.addEventListener('mozfullscreenchange', this.fullscreenChangeBind);
7808 window.addEventListener('webkitfullscreenchange', this.fullscreenChangeBind);
7809 window.addEventListener('MSFullscreenChange', this.fullscreenChangeBind);
7810 }
7811 }, {
7812 key: '_removeFullscreenChangeListeners',
7813 value: function _removeFullscreenChangeListeners() {
7814 window.removeEventListener('fullscreenchange', this.fullscreenChangeBind);
7815 window.removeEventListener('mozfullscreenchange', this.fullscreenChangeBind);
7816 window.removeEventListener('webkitfullscreenchange', this.fullscreenChangeBind);
7817 window.removeEventListener('MSFullscreenChange', this.fullscreenChangeBind);
7818 delete this.fullscreenChangeBind;
7819 }
7820 }, {
7821 key: 'isFullscreen',
7822 get: function get() {
7823 return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen || document.msFullscreenElement);
7824 }
7825 }]);
7826
7827 return PDFPresentationMode;
7828 }();
7829
7830 exports.PDFPresentationMode = PDFPresentationMode;
7831
7832 /***/ }),
7833 /* 26 */
7834 /***/ (function(module, exports, __webpack_require__) {
7835
7836 "use strict";
7837
7838
7839 Object.defineProperty(exports, "__esModule", {
7840 value: true
7841 });
7842 exports.PDFSidebarResizer = undefined;
7843
7844 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
7845
7846 var _ui_utils = __webpack_require__(6);
7847
7848 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
7849
7850 var SIDEBAR_WIDTH_VAR = '--sidebar-width';
7851 var SIDEBAR_MIN_WIDTH = 200;
7852 var SIDEBAR_RESIZING_CLASS = 'sidebarResizing';
7853
7854 var PDFSidebarResizer = function () {
7855 function PDFSidebarResizer(options, eventBus) {
7856 var _this = this;
7857
7858 var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n;
7859
7860 _classCallCheck(this, PDFSidebarResizer);
7861
7862 this.enabled = false;
7863 this.isRTL = false;
7864 this.sidebarOpen = false;
7865 this.doc = document.documentElement;
7866 this._width = null;
7867 this._outerContainerWidth = null;
7868 this._boundEvents = Object.create(null);
7869 this.outerContainer = options.outerContainer;
7870 this.resizer = options.resizer;
7871 this.eventBus = eventBus;
7872 this.l10n = l10n;
7873 if (typeof CSS === 'undefined' || typeof CSS.supports !== 'function' || !CSS.supports(SIDEBAR_WIDTH_VAR, 'calc(-1 * ' + SIDEBAR_MIN_WIDTH + 'px)')) {
7874 console.warn('PDFSidebarResizer: ' + 'The browser does not support resizing of the sidebar.');
7875 return;
7876 }
7877 this.enabled = true;
7878 this.resizer.classList.remove('hidden');
7879 this.l10n.getDirection().then(function (dir) {
7880 _this.isRTL = dir === 'rtl';
7881 });
7882 this._addEventListeners();
7883 }
7884
7885 _createClass(PDFSidebarResizer, [{
7886 key: '_updateWidth',
7887 value: function _updateWidth() {
7888 var width = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
7889
7890 if (!this.enabled) {
7891 return false;
7892 }
7893 var maxWidth = Math.floor(this.outerContainerWidth / 2);
7894 if (width > maxWidth) {
7895 width = maxWidth;
7896 }
7897 if (width < SIDEBAR_MIN_WIDTH) {
7898 width = SIDEBAR_MIN_WIDTH;
7899 }
7900 if (width === this._width) {
7901 return false;
7902 }
7903 this._width = width;
7904 this.doc.style.setProperty(SIDEBAR_WIDTH_VAR, width + 'px');
7905 return true;
7906 }
7907 }, {
7908 key: '_mouseMove',
7909 value: function _mouseMove(evt) {
7910 var width = evt.clientX;
7911 if (this.isRTL) {
7912 width = this.outerContainerWidth - width;
7913 }
7914 this._updateWidth(width);
7915 }
7916 }, {
7917 key: '_mouseUp',
7918 value: function _mouseUp(evt) {
7919 this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);
7920 this.eventBus.dispatch('resize', { source: this });
7921 var _boundEvents = this._boundEvents;
7922 window.removeEventListener('mousemove', _boundEvents.mouseMove);
7923 window.removeEventListener('mouseup', _boundEvents.mouseUp);
7924 }
7925 }, {
7926 key: '_addEventListeners',
7927 value: function _addEventListeners() {
7928 var _this2 = this;
7929
7930 if (!this.enabled) {
7931 return;
7932 }
7933 var _boundEvents = this._boundEvents;
7934 _boundEvents.mouseMove = this._mouseMove.bind(this);
7935 _boundEvents.mouseUp = this._mouseUp.bind(this);
7936 this.resizer.addEventListener('mousedown', function (evt) {
7937 if (evt.button !== 0) {
7938 return;
7939 }
7940 _this2.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);
7941 window.addEventListener('mousemove', _boundEvents.mouseMove);
7942 window.addEventListener('mouseup', _boundEvents.mouseUp);
7943 });
7944 this.eventBus.on('sidebarviewchanged', function (evt) {
7945 _this2.sidebarOpen = !!(evt && evt.view);
7946 });
7947 this.eventBus.on('resize', function (evt) {
7948 if (evt && evt.source === window) {
7949 _this2._outerContainerWidth = null;
7950 if (_this2._width) {
7951 if (_this2.sidebarOpen) {
7952 _this2.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);
7953 var updated = _this2._updateWidth(_this2._width);
7954 Promise.resolve().then(function () {
7955 _this2.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);
7956 if (updated) {
7957 _this2.eventBus.dispatch('resize', { source: _this2 });
7958 }
7959 });
7960 } else {
7961 _this2._updateWidth(_this2._width);
7962 }
7963 }
7964 }
7965 });
7966 }
7967 }, {
7968 key: 'outerContainerWidth',
7969 get: function get() {
7970 if (!this._outerContainerWidth) {
7971 this._outerContainerWidth = this.outerContainer.clientWidth;
7972 }
7973 return this._outerContainerWidth;
7974 }
7975 }]);
7976
7977 return PDFSidebarResizer;
7978 }();
7979
7980 exports.PDFSidebarResizer = PDFSidebarResizer;
7981
7982 /***/ }),
7983 /* 27 */
7984 /***/ (function(module, exports, __webpack_require__) {
7985
7986 "use strict";
7987
7988
7989 Object.defineProperty(exports, "__esModule", {
7990 value: true
7991 });
7992 exports.PDFThumbnailViewer = undefined;
7993
7994 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
7995
7996 var _ui_utils = __webpack_require__(6);
7997
7998 var _pdf_thumbnail_view = __webpack_require__(28);
7999
8000 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8001
8002 var THUMBNAIL_SCROLL_MARGIN = -19;
8003 var THUMBNAIL_SELECTED_CLASS = 'selected';
8004
8005 var PDFThumbnailViewer = function () {
8006 function PDFThumbnailViewer(_ref) {
8007 var container = _ref.container,
8008 linkService = _ref.linkService,
8009 renderingQueue = _ref.renderingQueue,
8010 _ref$l10n = _ref.l10n,
8011 l10n = _ref$l10n === undefined ? _ui_utils.NullL10n : _ref$l10n;
8012
8013 _classCallCheck(this, PDFThumbnailViewer);
8014
8015 this.container = container;
8016 this.linkService = linkService;
8017 this.renderingQueue = renderingQueue;
8018 this.l10n = l10n;
8019 this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdated.bind(this));
8020 this._resetView();
8021 }
8022
8023 _createClass(PDFThumbnailViewer, [{
8024 key: '_scrollUpdated',
8025 value: function _scrollUpdated() {
8026 this.renderingQueue.renderHighestPriority();
8027 }
8028 }, {
8029 key: 'getThumbnail',
8030 value: function getThumbnail(index) {
8031 return this._thumbnails[index];
8032 }
8033 }, {
8034 key: '_getVisibleThumbs',
8035 value: function _getVisibleThumbs() {
8036 return (0, _ui_utils.getVisibleElements)(this.container, this._thumbnails);
8037 }
8038 }, {
8039 key: 'scrollThumbnailIntoView',
8040 value: function scrollThumbnailIntoView(pageNumber) {
8041 if (!this.pdfDocument) {
8042 return;
8043 }
8044 var thumbnailView = this._thumbnails[pageNumber - 1];
8045 if (!thumbnailView) {
8046 console.error('scrollThumbnailIntoView: Invalid "pageNumber" parameter.');
8047 return;
8048 }
8049 if (pageNumber !== this._currentPageNumber) {
8050 var prevThumbnailView = this._thumbnails[this._currentPageNumber - 1];
8051 prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS);
8052 thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);
8053 }
8054 var visibleThumbs = this._getVisibleThumbs();
8055 var numVisibleThumbs = visibleThumbs.views.length;
8056 if (numVisibleThumbs > 0) {
8057 var first = visibleThumbs.first.id;
8058 var last = numVisibleThumbs > 1 ? visibleThumbs.last.id : first;
8059 var shouldScroll = false;
8060 if (pageNumber <= first || pageNumber >= last) {
8061 shouldScroll = true;
8062 } else {
8063 visibleThumbs.views.some(function (view) {
8064 if (view.id !== pageNumber) {
8065 return false;
8066 }
8067 shouldScroll = view.percent < 100;
8068 return true;
8069 });
8070 }
8071 if (shouldScroll) {
8072 (0, _ui_utils.scrollIntoView)(thumbnailView.div, { top: THUMBNAIL_SCROLL_MARGIN });
8073 }
8074 }
8075 this._currentPageNumber = pageNumber;
8076 }
8077 }, {
8078 key: 'cleanup',
8079 value: function cleanup() {
8080 _pdf_thumbnail_view.PDFThumbnailView.cleanup();
8081 }
8082 }, {
8083 key: '_resetView',
8084 value: function _resetView() {
8085 this._thumbnails = [];
8086 this._currentPageNumber = 1;
8087 this._pageLabels = null;
8088 this._pagesRotation = 0;
8089 this._pagesRequests = [];
8090 this.container.textContent = '';
8091 }
8092 }, {
8093 key: 'setDocument',
8094 value: function setDocument(pdfDocument) {
8095 var _this = this;
8096
8097 if (this.pdfDocument) {
8098 this._cancelRendering();
8099 this._resetView();
8100 }
8101 this.pdfDocument = pdfDocument;
8102 if (!pdfDocument) {
8103 return;
8104 }
8105 pdfDocument.getPage(1).then(function (firstPage) {
8106 var pagesCount = pdfDocument.numPages;
8107 var viewport = firstPage.getViewport(1.0);
8108 for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) {
8109 var thumbnail = new _pdf_thumbnail_view.PDFThumbnailView({
8110 container: _this.container,
8111 id: pageNum,
8112 defaultViewport: viewport.clone(),
8113 linkService: _this.linkService,
8114 renderingQueue: _this.renderingQueue,
8115 disableCanvasToImageConversion: false,
8116 l10n: _this.l10n
8117 });
8118 _this._thumbnails.push(thumbnail);
8119 }
8120 var thumbnailView = _this._thumbnails[_this._currentPageNumber - 1];
8121 thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);
8122 }).catch(function (reason) {
8123 console.error('Unable to initialize thumbnail viewer', reason);
8124 });
8125 }
8126 }, {
8127 key: '_cancelRendering',
8128 value: function _cancelRendering() {
8129 for (var i = 0, ii = this._thumbnails.length; i < ii; i++) {
8130 if (this._thumbnails[i]) {
8131 this._thumbnails[i].cancelRendering();
8132 }
8133 }
8134 }
8135 }, {
8136 key: 'setPageLabels',
8137 value: function setPageLabels(labels) {
8138 if (!this.pdfDocument) {
8139 return;
8140 }
8141 if (!labels) {
8142 this._pageLabels = null;
8143 } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) {
8144 this._pageLabels = null;
8145 console.error('PDFThumbnailViewer_setPageLabels: Invalid page labels.');
8146 } else {
8147 this._pageLabels = labels;
8148 }
8149 for (var i = 0, ii = this._thumbnails.length; i < ii; i++) {
8150 var label = this._pageLabels && this._pageLabels[i];
8151 this._thumbnails[i].setPageLabel(label);
8152 }
8153 }
8154 }, {
8155 key: '_ensurePdfPageLoaded',
8156 value: function _ensurePdfPageLoaded(thumbView) {
8157 var _this2 = this;
8158
8159 if (thumbView.pdfPage) {
8160 return Promise.resolve(thumbView.pdfPage);
8161 }
8162 var pageNumber = thumbView.id;
8163 if (this._pagesRequests[pageNumber]) {
8164 return this._pagesRequests[pageNumber];
8165 }
8166 var promise = this.pdfDocument.getPage(pageNumber).then(function (pdfPage) {
8167 thumbView.setPdfPage(pdfPage);
8168 _this2._pagesRequests[pageNumber] = null;
8169 return pdfPage;
8170 }).catch(function (reason) {
8171 console.error('Unable to get page for thumb view', reason);
8172 _this2._pagesRequests[pageNumber] = null;
8173 });
8174 this._pagesRequests[pageNumber] = promise;
8175 return promise;
8176 }
8177 }, {
8178 key: 'forceRendering',
8179 value: function forceRendering() {
8180 var _this3 = this;
8181
8182 var visibleThumbs = this._getVisibleThumbs();
8183 var thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, this._thumbnails, this.scroll.down);
8184 if (thumbView) {
8185 this._ensurePdfPageLoaded(thumbView).then(function () {
8186 _this3.renderingQueue.renderView(thumbView);
8187 });
8188 return true;
8189 }
8190 return false;
8191 }
8192 }, {
8193 key: 'pagesRotation',
8194 get: function get() {
8195 return this._pagesRotation;
8196 },
8197 set: function set(rotation) {
8198 if (!(0, _ui_utils.isValidRotation)(rotation)) {
8199 throw new Error('Invalid thumbnails rotation angle.');
8200 }
8201 if (!this.pdfDocument) {
8202 return;
8203 }
8204 if (this._pagesRotation === rotation) {
8205 return;
8206 }
8207 this._pagesRotation = rotation;
8208 for (var i = 0, ii = this._thumbnails.length; i < ii; i++) {
8209 this._thumbnails[i].update(rotation);
8210 }
8211 }
8212 }]);
8213
8214 return PDFThumbnailViewer;
8215 }();
8216
8217 exports.PDFThumbnailViewer = PDFThumbnailViewer;
8218
8219 /***/ }),
8220 /* 28 */
8221 /***/ (function(module, exports, __webpack_require__) {
8222
8223 "use strict";
8224
8225
8226 Object.defineProperty(exports, "__esModule", {
8227 value: true
8228 });
8229 exports.PDFThumbnailView = undefined;
8230
8231 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8232
8233 var _pdfjsLib = __webpack_require__(7);
8234
8235 var _ui_utils = __webpack_require__(6);
8236
8237 var _pdf_rendering_queue = __webpack_require__(10);
8238
8239 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8240
8241 var MAX_NUM_SCALING_STEPS = 3;
8242 var THUMBNAIL_CANVAS_BORDER_WIDTH = 1;
8243 var THUMBNAIL_WIDTH = 98;
8244 var TempImageFactory = function TempImageFactoryClosure() {
8245 var tempCanvasCache = null;
8246 return {
8247 getCanvas: function getCanvas(width, height) {
8248 var tempCanvas = tempCanvasCache;
8249 if (!tempCanvas) {
8250 tempCanvas = document.createElement('canvas');
8251 tempCanvasCache = tempCanvas;
8252 }
8253 tempCanvas.width = width;
8254 tempCanvas.height = height;
8255 tempCanvas.mozOpaque = true;
8256 var ctx = tempCanvas.getContext('2d', { alpha: false });
8257 ctx.save();
8258 ctx.fillStyle = 'rgb(255, 255, 255)';
8259 ctx.fillRect(0, 0, width, height);
8260 ctx.restore();
8261 return tempCanvas;
8262 },
8263 destroyCanvas: function destroyCanvas() {
8264 var tempCanvas = tempCanvasCache;
8265 if (tempCanvas) {
8266 tempCanvas.width = 0;
8267 tempCanvas.height = 0;
8268 }
8269 tempCanvasCache = null;
8270 }
8271 };
8272 }();
8273
8274 var PDFThumbnailView = function () {
8275 function PDFThumbnailView(_ref) {
8276 var container = _ref.container,
8277 id = _ref.id,
8278 defaultViewport = _ref.defaultViewport,
8279 linkService = _ref.linkService,
8280 renderingQueue = _ref.renderingQueue,
8281 _ref$disableCanvasToI = _ref.disableCanvasToImageConversion,
8282 disableCanvasToImageConversion = _ref$disableCanvasToI === undefined ? false : _ref$disableCanvasToI,
8283 _ref$l10n = _ref.l10n,
8284 l10n = _ref$l10n === undefined ? _ui_utils.NullL10n : _ref$l10n;
8285
8286 _classCallCheck(this, PDFThumbnailView);
8287
8288 this.id = id;
8289 this.renderingId = 'thumbnail' + id;
8290 this.pageLabel = null;
8291 this.pdfPage = null;
8292 this.rotation = 0;
8293 this.viewport = defaultViewport;
8294 this.pdfPageRotate = defaultViewport.rotation;
8295 this.linkService = linkService;
8296 this.renderingQueue = renderingQueue;
8297 this.renderTask = null;
8298 this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL;
8299 this.resume = null;
8300 this.disableCanvasToImageConversion = disableCanvasToImageConversion;
8301 this.pageWidth = this.viewport.width;
8302 this.pageHeight = this.viewport.height;
8303 this.pageRatio = this.pageWidth / this.pageHeight;
8304 this.canvasWidth = THUMBNAIL_WIDTH;
8305 this.canvasHeight = this.canvasWidth / this.pageRatio | 0;
8306 this.scale = this.canvasWidth / this.pageWidth;
8307 this.l10n = l10n;
8308 var anchor = document.createElement('a');
8309 anchor.href = linkService.getAnchorUrl('#page=' + id);
8310 this.l10n.get('thumb_page_title', { page: id }, 'Page {{page}}').then(function (msg) {
8311 anchor.title = msg;
8312 });
8313 anchor.onclick = function () {
8314 linkService.page = id;
8315 return false;
8316 };
8317 this.anchor = anchor;
8318 var div = document.createElement('div');
8319 div.className = 'thumbnail';
8320 div.setAttribute('data-page-number', this.id);
8321 this.div = div;
8322 var ring = document.createElement('div');
8323 ring.className = 'thumbnailSelectionRing';
8324 var borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH;
8325 ring.style.width = this.canvasWidth + borderAdjustment + 'px';
8326 ring.style.height = this.canvasHeight + borderAdjustment + 'px';
8327 this.ring = ring;
8328 div.appendChild(ring);
8329 anchor.appendChild(div);
8330 container.appendChild(anchor);
8331 }
8332
8333 _createClass(PDFThumbnailView, [{
8334 key: 'setPdfPage',
8335 value: function setPdfPage(pdfPage) {
8336 this.pdfPage = pdfPage;
8337 this.pdfPageRotate = pdfPage.rotate;
8338 var totalRotation = (this.rotation + this.pdfPageRotate) % 360;
8339 this.viewport = pdfPage.getViewport(1, totalRotation);
8340 this.reset();
8341 }
8342 }, {
8343 key: 'reset',
8344 value: function reset() {
8345 this.cancelRendering();
8346 this.pageWidth = this.viewport.width;
8347 this.pageHeight = this.viewport.height;
8348 this.pageRatio = this.pageWidth / this.pageHeight;
8349 this.canvasHeight = this.canvasWidth / this.pageRatio | 0;
8350 this.scale = this.canvasWidth / this.pageWidth;
8351 this.div.removeAttribute('data-loaded');
8352 var ring = this.ring;
8353 var childNodes = ring.childNodes;
8354 for (var i = childNodes.length - 1; i >= 0; i--) {
8355 ring.removeChild(childNodes[i]);
8356 }
8357 var borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH;
8358 ring.style.width = this.canvasWidth + borderAdjustment + 'px';
8359 ring.style.height = this.canvasHeight + borderAdjustment + 'px';
8360 if (this.canvas) {
8361 this.canvas.width = 0;
8362 this.canvas.height = 0;
8363 delete this.canvas;
8364 }
8365 if (this.image) {
8366 this.image.removeAttribute('src');
8367 delete this.image;
8368 }
8369 }
8370 }, {
8371 key: 'update',
8372 value: function update(rotation) {
8373 if (typeof rotation !== 'undefined') {
8374 this.rotation = rotation;
8375 }
8376 var totalRotation = (this.rotation + this.pdfPageRotate) % 360;
8377 this.viewport = this.viewport.clone({
8378 scale: 1,
8379 rotation: totalRotation
8380 });
8381 this.reset();
8382 }
8383 }, {
8384 key: 'cancelRendering',
8385 value: function cancelRendering() {
8386 if (this.renderTask) {
8387 this.renderTask.cancel();
8388 this.renderTask = null;
8389 }
8390 this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL;
8391 this.resume = null;
8392 }
8393 }, {
8394 key: '_getPageDrawContext',
8395 value: function _getPageDrawContext() {
8396 var noCtxScale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
8397
8398 var canvas = document.createElement('canvas');
8399 this.canvas = canvas;
8400 canvas.mozOpaque = true;
8401 var ctx = canvas.getContext('2d', { alpha: false });
8402 var outputScale = (0, _ui_utils.getOutputScale)(ctx);
8403 canvas.width = this.canvasWidth * outputScale.sx | 0;
8404 canvas.height = this.canvasHeight * outputScale.sy | 0;
8405 canvas.style.width = this.canvasWidth + 'px';
8406 canvas.style.height = this.canvasHeight + 'px';
8407 if (!noCtxScale && outputScale.scaled) {
8408 ctx.scale(outputScale.sx, outputScale.sy);
8409 }
8410 return ctx;
8411 }
8412 }, {
8413 key: '_convertCanvasToImage',
8414 value: function _convertCanvasToImage() {
8415 var _this = this;
8416
8417 if (!this.canvas) {
8418 return;
8419 }
8420 if (this.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) {
8421 return;
8422 }
8423 var id = this.renderingId;
8424 var className = 'thumbnailImage';
8425 if (this.disableCanvasToImageConversion) {
8426 this.canvas.id = id;
8427 this.canvas.className = className;
8428 this.l10n.get('thumb_page_canvas', { page: this.pageId }, 'Thumbnail of Page {{page}}').then(function (msg) {
8429 _this.canvas.setAttribute('aria-label', msg);
8430 });
8431 this.div.setAttribute('data-loaded', true);
8432 this.ring.appendChild(this.canvas);
8433 return;
8434 }
8435 var image = document.createElement('img');
8436 image.id = id;
8437 image.className = className;
8438 this.l10n.get('thumb_page_canvas', { page: this.pageId }, 'Thumbnail of Page {{page}}').then(function (msg) {
8439 image.setAttribute('aria-label', msg);
8440 });
8441 image.style.width = this.canvasWidth + 'px';
8442 image.style.height = this.canvasHeight + 'px';
8443 image.src = this.canvas.toDataURL();
8444 this.image = image;
8445 this.div.setAttribute('data-loaded', true);
8446 this.ring.appendChild(image);
8447 this.canvas.width = 0;
8448 this.canvas.height = 0;
8449 delete this.canvas;
8450 }
8451 }, {
8452 key: 'draw',
8453 value: function draw() {
8454 var _this2 = this;
8455
8456 if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) {
8457 console.error('Must be in new state before drawing');
8458 return Promise.resolve(undefined);
8459 }
8460 this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING;
8461 var renderCapability = (0, _pdfjsLib.createPromiseCapability)();
8462 var finishRenderTask = function finishRenderTask(error) {
8463 if (renderTask === _this2.renderTask) {
8464 _this2.renderTask = null;
8465 }
8466 if (error instanceof _pdfjsLib.RenderingCancelledException) {
8467 renderCapability.resolve(undefined);
8468 return;
8469 }
8470 _this2.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;
8471 _this2._convertCanvasToImage();
8472 if (!error) {
8473 renderCapability.resolve(undefined);
8474 } else {
8475 renderCapability.reject(error);
8476 }
8477 };
8478 var ctx = this._getPageDrawContext();
8479 var drawViewport = this.viewport.clone({ scale: this.scale });
8480 var renderContinueCallback = function renderContinueCallback(cont) {
8481 if (!_this2.renderingQueue.isHighestPriority(_this2)) {
8482 _this2.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED;
8483 _this2.resume = function () {
8484 _this2.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING;
8485 cont();
8486 };
8487 return;
8488 }
8489 cont();
8490 };
8491 var renderContext = {
8492 canvasContext: ctx,
8493 viewport: drawViewport
8494 };
8495 var renderTask = this.renderTask = this.pdfPage.render(renderContext);
8496 renderTask.onContinue = renderContinueCallback;
8497 renderTask.promise.then(function () {
8498 finishRenderTask(null);
8499 }, function (error) {
8500 finishRenderTask(error);
8501 });
8502 return renderCapability.promise;
8503 }
8504 }, {
8505 key: 'setImage',
8506 value: function setImage(pageView) {
8507 if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) {
8508 return;
8509 }
8510 var img = pageView.canvas;
8511 if (!img) {
8512 return;
8513 }
8514 if (!this.pdfPage) {
8515 this.setPdfPage(pageView.pdfPage);
8516 }
8517 this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;
8518 var ctx = this._getPageDrawContext(true);
8519 var canvas = ctx.canvas;
8520 if (img.width <= 2 * canvas.width) {
8521 ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height);
8522 this._convertCanvasToImage();
8523 return;
8524 }
8525 var reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS;
8526 var reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS;
8527 var reducedImage = TempImageFactory.getCanvas(reducedWidth, reducedHeight);
8528 var reducedImageCtx = reducedImage.getContext('2d');
8529 while (reducedWidth > img.width || reducedHeight > img.height) {
8530 reducedWidth >>= 1;
8531 reducedHeight >>= 1;
8532 }
8533 reducedImageCtx.drawImage(img, 0, 0, img.width, img.height, 0, 0, reducedWidth, reducedHeight);
8534 while (reducedWidth > 2 * canvas.width) {
8535 reducedImageCtx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, reducedWidth >> 1, reducedHeight >> 1);
8536 reducedWidth >>= 1;
8537 reducedHeight >>= 1;
8538 }
8539 ctx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, canvas.width, canvas.height);
8540 this._convertCanvasToImage();
8541 }
8542 }, {
8543 key: 'setPageLabel',
8544 value: function setPageLabel(label) {
8545 var _this3 = this;
8546
8547 this.pageLabel = typeof label === 'string' ? label : null;
8548 this.l10n.get('thumb_page_title', { page: this.pageId }, 'Page {{page}}').then(function (msg) {
8549 _this3.anchor.title = msg;
8550 });
8551 if (this.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) {
8552 return;
8553 }
8554 this.l10n.get('thumb_page_canvas', { page: this.pageId }, 'Thumbnail of Page {{page}}').then(function (ariaLabel) {
8555 if (_this3.image) {
8556 _this3.image.setAttribute('aria-label', ariaLabel);
8557 } else if (_this3.disableCanvasToImageConversion && _this3.canvas) {
8558 _this3.canvas.setAttribute('aria-label', ariaLabel);
8559 }
8560 });
8561 }
8562 }, {
8563 key: 'pageId',
8564 get: function get() {
8565 return this.pageLabel !== null ? this.pageLabel : this.id;
8566 }
8567 }], [{
8568 key: 'cleanup',
8569 value: function cleanup() {
8570 TempImageFactory.destroyCanvas();
8571 }
8572 }]);
8573
8574 return PDFThumbnailView;
8575 }();
8576
8577 exports.PDFThumbnailView = PDFThumbnailView;
8578
8579 /***/ }),
8580 /* 29 */
8581 /***/ (function(module, exports, __webpack_require__) {
8582
8583 "use strict";
8584
8585
8586 Object.defineProperty(exports, "__esModule", {
8587 value: true
8588 });
8589 exports.PDFViewer = undefined;
8590
8591 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8592
8593 var _base_viewer = __webpack_require__(30);
8594
8595 var _ui_utils = __webpack_require__(6);
8596
8597 var _pdfjsLib = __webpack_require__(7);
8598
8599 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8600
8601 function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
8602
8603 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
8604
8605 var PDFViewer = function (_BaseViewer) {
8606 _inherits(PDFViewer, _BaseViewer);
8607
8608 function PDFViewer() {
8609 _classCallCheck(this, PDFViewer);
8610
8611 return _possibleConstructorReturn(this, (PDFViewer.__proto__ || Object.getPrototypeOf(PDFViewer)).apply(this, arguments));
8612 }
8613
8614 _createClass(PDFViewer, [{
8615 key: '_scrollIntoView',
8616 value: function _scrollIntoView(_ref) {
8617 var pageDiv = _ref.pageDiv,
8618 _ref$pageSpot = _ref.pageSpot,
8619 pageSpot = _ref$pageSpot === undefined ? null : _ref$pageSpot;
8620
8621 if (!pageSpot && !this.isInPresentationMode) {
8622 var left = pageDiv.offsetLeft + pageDiv.clientLeft;
8623 var right = left + pageDiv.clientWidth;
8624 var _container = this.container,
8625 scrollLeft = _container.scrollLeft,
8626 clientWidth = _container.clientWidth;
8627
8628 if (this._scrollMode === _base_viewer.ScrollMode.HORIZONTAL || left < scrollLeft || right > scrollLeft + clientWidth) {
8629 pageSpot = {
8630 left: 0,
8631 top: 0
8632 };
8633 }
8634 }
8635 (0, _ui_utils.scrollIntoView)(pageDiv, pageSpot);
8636 }
8637 }, {
8638 key: '_getVisiblePages',
8639 value: function _getVisiblePages() {
8640 if (!this.isInPresentationMode) {
8641 return (0, _ui_utils.getVisibleElements)(this.container, this._pages, true, this._scrollMode === _base_viewer.ScrollMode.HORIZONTAL);
8642 }
8643 var currentPage = this._pages[this._currentPageNumber - 1];
8644 var visible = [{
8645 id: currentPage.id,
8646 view: currentPage
8647 }];
8648 return {
8649 first: currentPage,
8650 last: currentPage,
8651 views: visible
8652 };
8653 }
8654 }, {
8655 key: 'update',
8656 value: function update() {
8657 var visible = this._getVisiblePages();
8658 var visiblePages = visible.views,
8659 numVisiblePages = visiblePages.length;
8660 if (numVisiblePages === 0) {
8661 return;
8662 }
8663 this._resizeBuffer(numVisiblePages, visiblePages);
8664 this.renderingQueue.renderHighestPriority(visible);
8665 var currentId = this._currentPageNumber;
8666 var stillFullyVisible = false;
8667 for (var i = 0; i < numVisiblePages; ++i) {
8668 var page = visiblePages[i];
8669 if (page.percent < 100) {
8670 break;
8671 }
8672 if (page.id === currentId) {
8673 stillFullyVisible = true;
8674 break;
8675 }
8676 }
8677 if (!stillFullyVisible) {
8678 currentId = visiblePages[0].id;
8679 }
8680 if (!this.isInPresentationMode) {
8681 this._setCurrentPageNumber(currentId);
8682 }
8683 this._updateLocation(visible.first);
8684 this.eventBus.dispatch('updateviewarea', {
8685 source: this,
8686 location: this._location
8687 });
8688 }
8689 }, {
8690 key: '_setDocumentViewerElement',
8691 get: function get() {
8692 return (0, _pdfjsLib.shadow)(this, '_setDocumentViewerElement', this.viewer);
8693 }
8694 }, {
8695 key: '_isScrollModeHorizontal',
8696 get: function get() {
8697 return this.isInPresentationMode ? false : this._scrollMode === _base_viewer.ScrollMode.HORIZONTAL;
8698 }
8699 }]);
8700
8701 return PDFViewer;
8702 }(_base_viewer.BaseViewer);
8703
8704 exports.PDFViewer = PDFViewer;
8705
8706 /***/ }),
8707 /* 30 */
8708 /***/ (function(module, exports, __webpack_require__) {
8709
8710 "use strict";
8711
8712
8713 Object.defineProperty(exports, "__esModule", {
8714 value: true
8715 });
8716 exports.SpreadMode = exports.ScrollMode = exports.BaseViewer = undefined;
8717
8718 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8719
8720 var _ui_utils = __webpack_require__(6);
8721
8722 var _pdf_rendering_queue = __webpack_require__(10);
8723
8724 var _annotation_layer_builder = __webpack_require__(31);
8725
8726 var _pdfjsLib = __webpack_require__(7);
8727
8728 var _dom_events = __webpack_require__(14);
8729
8730 var _pdf_page_view = __webpack_require__(32);
8731
8732 var _pdf_link_service = __webpack_require__(23);
8733
8734 var _text_layer_builder = __webpack_require__(33);
8735
8736 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8737
8738 var DEFAULT_CACHE_SIZE = 10;
8739 var ScrollMode = {
8740 VERTICAL: 0,
8741 HORIZONTAL: 1,
8742 WRAPPED: 2
8743 };
8744 var SpreadMode = {
8745 NONE: 0,
8746 ODD: 1,
8747 EVEN: 2
8748 };
8749 function PDFPageViewBuffer(size) {
8750 var data = [];
8751 this.push = function (view) {
8752 var i = data.indexOf(view);
8753 if (i >= 0) {
8754 data.splice(i, 1);
8755 }
8756 data.push(view);
8757 if (data.length > size) {
8758 data.shift().destroy();
8759 }
8760 };
8761 this.resize = function (newSize, pagesToKeep) {
8762 size = newSize;
8763 if (pagesToKeep) {
8764 var pageIdsToKeep = new Set();
8765 for (var i = 0, iMax = pagesToKeep.length; i < iMax; ++i) {
8766 pageIdsToKeep.add(pagesToKeep[i].id);
8767 }
8768 (0, _ui_utils.moveToEndOfArray)(data, function (page) {
8769 return pageIdsToKeep.has(page.id);
8770 });
8771 }
8772 while (data.length > size) {
8773 data.shift().destroy();
8774 }
8775 };
8776 }
8777 function isSameScale(oldScale, newScale) {
8778 if (newScale === oldScale) {
8779 return true;
8780 }
8781 if (Math.abs(newScale - oldScale) < 1e-15) {
8782 return true;
8783 }
8784 return false;
8785 }
8786
8787 var BaseViewer = function () {
8788 function BaseViewer(options) {
8789 var _this = this;
8790
8791 _classCallCheck(this, BaseViewer);
8792
8793 if (this.constructor === BaseViewer) {
8794 throw new Error('Cannot initialize BaseViewer.');
8795 }
8796 this._name = this.constructor.name;
8797 this.container = options.container;
8798 this.viewer = options.viewer || options.container.firstElementChild;
8799 this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)();
8800 this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService();
8801 this.downloadManager = options.downloadManager || null;
8802 this.findController = options.findController || null;
8803 this.removePageBorders = options.removePageBorders || false;
8804 this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : _ui_utils.TextLayerMode.ENABLE;
8805 this.imageResourcesPath = options.imageResourcesPath || '';
8806 this.renderInteractiveForms = options.renderInteractiveForms || false;
8807 this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;
8808 this.renderer = options.renderer || _ui_utils.RendererType.CANVAS;
8809 this.enableWebGL = options.enableWebGL || false;
8810 this.useOnlyCssZoom = options.useOnlyCssZoom || false;
8811 this.maxCanvasPixels = options.maxCanvasPixels;
8812 this.l10n = options.l10n || _ui_utils.NullL10n;
8813 this.defaultRenderingQueue = !options.renderingQueue;
8814 if (this.defaultRenderingQueue) {
8815 this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue();
8816 this.renderingQueue.setViewer(this);
8817 } else {
8818 this.renderingQueue = options.renderingQueue;
8819 }
8820 this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this));
8821 this.presentationModeState = _ui_utils.PresentationModeState.UNKNOWN;
8822 this._resetView();
8823 if (this.removePageBorders) {
8824 this.viewer.classList.add('removePageBorders');
8825 }
8826 Promise.resolve().then(function () {
8827 _this.eventBus.dispatch('baseviewerinit', { source: _this });
8828 });
8829 }
8830
8831 _createClass(BaseViewer, [{
8832 key: 'getPageView',
8833 value: function getPageView(index) {
8834 return this._pages[index];
8835 }
8836 }, {
8837 key: '_setCurrentPageNumber',
8838 value: function _setCurrentPageNumber(val) {
8839 var resetCurrentPageView = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
8840
8841 if (this._currentPageNumber === val) {
8842 if (resetCurrentPageView) {
8843 this._resetCurrentPageView();
8844 }
8845 return;
8846 }
8847 if (!(0 < val && val <= this.pagesCount)) {
8848 console.error(this._name + '._setCurrentPageNumber: "' + val + '" is out of bounds.');
8849 return;
8850 }
8851 var arg = {
8852 source: this,
8853 pageNumber: val,
8854 pageLabel: this._pageLabels && this._pageLabels[val - 1]
8855 };
8856 this._currentPageNumber = val;
8857 this.eventBus.dispatch('pagechanging', arg);
8858 this.eventBus.dispatch('pagechange', arg);
8859 if (resetCurrentPageView) {
8860 this._resetCurrentPageView();
8861 }
8862 }
8863 }, {
8864 key: 'setDocument',
8865 value: function setDocument(pdfDocument) {
8866 var _this2 = this;
8867
8868 if (this.pdfDocument) {
8869 this._cancelRendering();
8870 this._resetView();
8871 if (this.findController) {
8872 this.findController.setDocument(null);
8873 }
8874 }
8875 this.pdfDocument = pdfDocument;
8876 if (!pdfDocument) {
8877 return;
8878 }
8879 var pagesCount = pdfDocument.numPages;
8880 var pagesCapability = (0, _pdfjsLib.createPromiseCapability)();
8881 this.pagesPromise = pagesCapability.promise;
8882 pagesCapability.promise.then(function () {
8883 _this2._pageViewsReady = true;
8884 _this2.eventBus.dispatch('pagesloaded', {
8885 source: _this2,
8886 pagesCount: pagesCount
8887 });
8888 });
8889 var isOnePageRenderedResolved = false;
8890 var onePageRenderedCapability = (0, _pdfjsLib.createPromiseCapability)();
8891 this.onePageRendered = onePageRenderedCapability.promise;
8892 var bindOnAfterAndBeforeDraw = function bindOnAfterAndBeforeDraw(pageView) {
8893 pageView.onBeforeDraw = function () {
8894 _this2._buffer.push(pageView);
8895 };
8896 pageView.onAfterDraw = function () {
8897 if (!isOnePageRenderedResolved) {
8898 isOnePageRenderedResolved = true;
8899 onePageRenderedCapability.resolve();
8900 }
8901 };
8902 };
8903 var firstPagePromise = pdfDocument.getPage(1);
8904 this.firstPagePromise = firstPagePromise;
8905 firstPagePromise.then(function (pdfPage) {
8906 var scale = _this2.currentScale;
8907 var viewport = pdfPage.getViewport(scale * _ui_utils.CSS_UNITS);
8908 for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) {
8909 var textLayerFactory = null;
8910 if (_this2.textLayerMode !== _ui_utils.TextLayerMode.DISABLE) {
8911 textLayerFactory = _this2;
8912 }
8913 var pageView = new _pdf_page_view.PDFPageView({
8914 container: _this2._setDocumentViewerElement,
8915 eventBus: _this2.eventBus,
8916 id: pageNum,
8917 scale: scale,
8918 defaultViewport: viewport.clone(),
8919 renderingQueue: _this2.renderingQueue,
8920 textLayerFactory: textLayerFactory,
8921 textLayerMode: _this2.textLayerMode,
8922 annotationLayerFactory: _this2,
8923 imageResourcesPath: _this2.imageResourcesPath,
8924 renderInteractiveForms: _this2.renderInteractiveForms,
8925 renderer: _this2.renderer,
8926 enableWebGL: _this2.enableWebGL,
8927 useOnlyCssZoom: _this2.useOnlyCssZoom,
8928 maxCanvasPixels: _this2.maxCanvasPixels,
8929 l10n: _this2.l10n
8930 });
8931 bindOnAfterAndBeforeDraw(pageView);
8932 _this2._pages.push(pageView);
8933 }
8934 if (_this2._spreadMode !== SpreadMode.NONE) {
8935 _this2._updateSpreadMode();
8936 }
8937 onePageRenderedCapability.promise.then(function () {
8938 if (pdfDocument.loadingParams['disableAutoFetch']) {
8939 pagesCapability.resolve();
8940 return;
8941 }
8942 var getPagesLeft = pagesCount;
8943
8944 var _loop = function _loop(_pageNum) {
8945 pdfDocument.getPage(_pageNum).then(function (pdfPage) {
8946 var pageView = _this2._pages[_pageNum - 1];
8947 if (!pageView.pdfPage) {
8948 pageView.setPdfPage(pdfPage);
8949 }
8950 _this2.linkService.cachePageRef(_pageNum, pdfPage.ref);
8951 if (--getPagesLeft === 0) {
8952 pagesCapability.resolve();
8953 }
8954 }, function (reason) {
8955 console.error('Unable to get page ' + _pageNum + ' to initialize viewer', reason);
8956 if (--getPagesLeft === 0) {
8957 pagesCapability.resolve();
8958 }
8959 });
8960 };
8961
8962 for (var _pageNum = 1; _pageNum <= pagesCount; ++_pageNum) {
8963 _loop(_pageNum);
8964 }
8965 });
8966 _this2.eventBus.dispatch('pagesinit', { source: _this2 });
8967 if (_this2.findController) {
8968 _this2.findController.setDocument(pdfDocument);
8969 }
8970 if (_this2.defaultRenderingQueue) {
8971 _this2.update();
8972 }
8973 }).catch(function (reason) {
8974 console.error('Unable to initialize viewer', reason);
8975 });
8976 }
8977 }, {
8978 key: 'setPageLabels',
8979 value: function setPageLabels(labels) {
8980 if (!this.pdfDocument) {
8981 return;
8982 }
8983 if (!labels) {
8984 this._pageLabels = null;
8985 } else if (!(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)) {
8986 this._pageLabels = null;
8987 console.error(this._name + '.setPageLabels: Invalid page labels.');
8988 } else {
8989 this._pageLabels = labels;
8990 }
8991 for (var i = 0, ii = this._pages.length; i < ii; i++) {
8992 var pageView = this._pages[i];
8993 var label = this._pageLabels && this._pageLabels[i];
8994 pageView.setPageLabel(label);
8995 }
8996 }
8997 }, {
8998 key: '_resetView',
8999 value: function _resetView() {
9000 this._pages = [];
9001 this._currentPageNumber = 1;
9002 this._currentScale = _ui_utils.UNKNOWN_SCALE;
9003 this._currentScaleValue = null;
9004 this._pageLabels = null;
9005 this._buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE);
9006 this._location = null;
9007 this._pagesRotation = 0;
9008 this._pagesRequests = [];
9009 this._pageViewsReady = false;
9010 this._scrollMode = ScrollMode.VERTICAL;
9011 this._spreadMode = SpreadMode.NONE;
9012 this.viewer.textContent = '';
9013 this._updateScrollMode();
9014 }
9015 }, {
9016 key: '_scrollUpdate',
9017 value: function _scrollUpdate() {
9018 if (this.pagesCount === 0) {
9019 return;
9020 }
9021 this.update();
9022 }
9023 }, {
9024 key: '_scrollIntoView',
9025 value: function _scrollIntoView(_ref) {
9026 var pageDiv = _ref.pageDiv,
9027 _ref$pageSpot = _ref.pageSpot,
9028 pageSpot = _ref$pageSpot === undefined ? null : _ref$pageSpot,
9029 _ref$pageNumber = _ref.pageNumber,
9030 pageNumber = _ref$pageNumber === undefined ? null : _ref$pageNumber;
9031
9032 throw new Error('Not implemented: _scrollIntoView');
9033 }
9034 }, {
9035 key: '_setScaleDispatchEvent',
9036 value: function _setScaleDispatchEvent(newScale, newValue) {
9037 var preset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
9038
9039 var arg = {
9040 source: this,
9041 scale: newScale,
9042 presetValue: preset ? newValue : undefined
9043 };
9044 this.eventBus.dispatch('scalechanging', arg);
9045 this.eventBus.dispatch('scalechange', arg);
9046 }
9047 }, {
9048 key: '_setScaleUpdatePages',
9049 value: function _setScaleUpdatePages(newScale, newValue) {
9050 var noScroll = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
9051 var preset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
9052
9053 this._currentScaleValue = newValue.toString();
9054 if (isSameScale(this._currentScale, newScale)) {
9055 if (preset) {
9056 this._setScaleDispatchEvent(newScale, newValue, true);
9057 }
9058 return;
9059 }
9060 for (var i = 0, ii = this._pages.length; i < ii; i++) {
9061 this._pages[i].update(newScale);
9062 }
9063 this._currentScale = newScale;
9064 if (!noScroll) {
9065 var page = this._currentPageNumber,
9066 dest = void 0;
9067 if (this._location && !(this.isInPresentationMode || this.isChangingPresentationMode)) {
9068 page = this._location.pageNumber;
9069 dest = [null, { name: 'XYZ' }, this._location.left, this._location.top, null];
9070 }
9071 this.scrollPageIntoView({
9072 pageNumber: page,
9073 destArray: dest,
9074 allowNegativeOffset: true
9075 });
9076 }
9077 this._setScaleDispatchEvent(newScale, newValue, preset);
9078 if (this.defaultRenderingQueue) {
9079 this.update();
9080 }
9081 }
9082 }, {
9083 key: '_setScale',
9084 value: function _setScale(value) {
9085 var noScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
9086
9087 var scale = parseFloat(value);
9088 if (scale > 0) {
9089 this._setScaleUpdatePages(scale, value, noScroll, false);
9090 } else {
9091 var currentPage = this._pages[this._currentPageNumber - 1];
9092 if (!currentPage) {
9093 return;
9094 }
9095 var noPadding = this.isInPresentationMode || this.removePageBorders;
9096 var hPadding = noPadding ? 0 : _ui_utils.SCROLLBAR_PADDING;
9097 var vPadding = noPadding ? 0 : _ui_utils.VERTICAL_PADDING;
9098 if (!noPadding && this._isScrollModeHorizontal) {
9099 var _ref2 = [vPadding, hPadding];
9100 hPadding = _ref2[0];
9101 vPadding = _ref2[1];
9102 }
9103 var pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale;
9104 var pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale;
9105 switch (value) {
9106 case 'page-actual':
9107 scale = 1;
9108 break;
9109 case 'page-width':
9110 scale = pageWidthScale;
9111 break;
9112 case 'page-height':
9113 scale = pageHeightScale;
9114 break;
9115 case 'page-fit':
9116 scale = Math.min(pageWidthScale, pageHeightScale);
9117 break;
9118 case 'auto':
9119 var horizontalScale = (0, _ui_utils.isPortraitOrientation)(currentPage) ? pageWidthScale : Math.min(pageHeightScale, pageWidthScale);
9120 scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale);
9121 break;
9122 default:
9123 console.error(this._name + '._setScale: "' + value + '" is an unknown zoom value.');
9124 return;
9125 }
9126 this._setScaleUpdatePages(scale, value, noScroll, true);
9127 }
9128 }
9129 }, {
9130 key: '_resetCurrentPageView',
9131 value: function _resetCurrentPageView() {
9132 if (this.isInPresentationMode) {
9133 this._setScale(this._currentScaleValue, true);
9134 }
9135 var pageView = this._pages[this._currentPageNumber - 1];
9136 this._scrollIntoView({ pageDiv: pageView.div });
9137 }
9138 }, {
9139 key: 'scrollPageIntoView',
9140 value: function scrollPageIntoView(params) {
9141 if (!this.pdfDocument) {
9142 return;
9143 }
9144 var pageNumber = params.pageNumber || 0;
9145 var dest = params.destArray || null;
9146 var allowNegativeOffset = params.allowNegativeOffset || false;
9147 if (this.isInPresentationMode || !dest) {
9148 this._setCurrentPageNumber(pageNumber, true);
9149 return;
9150 }
9151 var pageView = this._pages[pageNumber - 1];
9152 if (!pageView) {
9153 console.error(this._name + '.scrollPageIntoView: Invalid "pageNumber" parameter.');
9154 return;
9155 }
9156 var x = 0,
9157 y = 0;
9158 var width = 0,
9159 height = 0,
9160 widthScale = void 0,
9161 heightScale = void 0;
9162 var changeOrientation = pageView.rotation % 180 === 0 ? false : true;
9163 var pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _ui_utils.CSS_UNITS;
9164 var pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _ui_utils.CSS_UNITS;
9165 var scale = 0;
9166 switch (dest[1].name) {
9167 case 'XYZ':
9168 x = dest[2];
9169 y = dest[3];
9170 scale = dest[4];
9171 x = x !== null ? x : 0;
9172 y = y !== null ? y : pageHeight;
9173 break;
9174 case 'Fit':
9175 case 'FitB':
9176 scale = 'page-fit';
9177 break;
9178 case 'FitH':
9179 case 'FitBH':
9180 y = dest[2];
9181 scale = 'page-width';
9182 if (y === null && this._location) {
9183 x = this._location.left;
9184 y = this._location.top;
9185 }
9186 break;
9187 case 'FitV':
9188 case 'FitBV':
9189 x = dest[2];
9190 width = pageWidth;
9191 height = pageHeight;
9192 scale = 'page-height';
9193 break;
9194 case 'FitR':
9195 x = dest[2];
9196 y = dest[3];
9197 width = dest[4] - x;
9198 height = dest[5] - y;
9199 var hPadding = this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING;
9200 var vPadding = this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING;
9201 widthScale = (this.container.clientWidth - hPadding) / width / _ui_utils.CSS_UNITS;
9202 heightScale = (this.container.clientHeight - vPadding) / height / _ui_utils.CSS_UNITS;
9203 scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));
9204 break;
9205 default:
9206 console.error(this._name + '.scrollPageIntoView: "' + dest[1].name + '" ' + 'is not a valid destination type.');
9207 return;
9208 }
9209 if (scale && scale !== this._currentScale) {
9210 this.currentScaleValue = scale;
9211 } else if (this._currentScale === _ui_utils.UNKNOWN_SCALE) {
9212 this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
9213 }
9214 if (scale === 'page-fit' && !dest[4]) {
9215 this._scrollIntoView({
9216 pageDiv: pageView.div,
9217 pageNumber: pageNumber
9218 });
9219 return;
9220 }
9221 var boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)];
9222 var left = Math.min(boundingRect[0][0], boundingRect[1][0]);
9223 var top = Math.min(boundingRect[0][1], boundingRect[1][1]);
9224 if (!allowNegativeOffset) {
9225 left = Math.max(left, 0);
9226 top = Math.max(top, 0);
9227 }
9228 this._scrollIntoView({
9229 pageDiv: pageView.div,
9230 pageSpot: {
9231 left: left,
9232 top: top
9233 },
9234 pageNumber: pageNumber
9235 });
9236 }
9237 }, {
9238 key: '_resizeBuffer',
9239 value: function _resizeBuffer(numVisiblePages, visiblePages) {
9240 var suggestedCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1);
9241 this._buffer.resize(suggestedCacheSize, visiblePages);
9242 }
9243 }, {
9244 key: '_updateLocation',
9245 value: function _updateLocation(firstPage) {
9246 var currentScale = this._currentScale;
9247 var currentScaleValue = this._currentScaleValue;
9248 var normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue;
9249 var pageNumber = firstPage.id;
9250 var pdfOpenParams = '#page=' + pageNumber;
9251 pdfOpenParams += '&zoom=' + normalizedScaleValue;
9252 var currentPageView = this._pages[pageNumber - 1];
9253 var container = this.container;
9254 var topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y);
9255 var intLeft = Math.round(topLeft[0]);
9256 var intTop = Math.round(topLeft[1]);
9257 pdfOpenParams += ',' + intLeft + ',' + intTop;
9258 this._location = {
9259 pageNumber: pageNumber,
9260 scale: normalizedScaleValue,
9261 top: intTop,
9262 left: intLeft,
9263 rotation: this._pagesRotation,
9264 pdfOpenParams: pdfOpenParams
9265 };
9266 }
9267 }, {
9268 key: 'update',
9269 value: function update() {
9270 throw new Error('Not implemented: update');
9271 }
9272 }, {
9273 key: 'containsElement',
9274 value: function containsElement(element) {
9275 return this.container.contains(element);
9276 }
9277 }, {
9278 key: 'focus',
9279 value: function focus() {
9280 this.container.focus();
9281 }
9282 }, {
9283 key: '_getVisiblePages',
9284 value: function _getVisiblePages() {
9285 throw new Error('Not implemented: _getVisiblePages');
9286 }
9287 }, {
9288 key: 'cleanup',
9289 value: function cleanup() {
9290 for (var i = 0, ii = this._pages.length; i < ii; i++) {
9291 if (this._pages[i] && this._pages[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) {
9292 this._pages[i].reset();
9293 }
9294 }
9295 }
9296 }, {
9297 key: '_cancelRendering',
9298 value: function _cancelRendering() {
9299 for (var i = 0, ii = this._pages.length; i < ii; i++) {
9300 if (this._pages[i]) {
9301 this._pages[i].cancelRendering();
9302 }
9303 }
9304 }
9305 }, {
9306 key: '_ensurePdfPageLoaded',
9307 value: function _ensurePdfPageLoaded(pageView) {
9308 var _this3 = this;
9309
9310 if (pageView.pdfPage) {
9311 return Promise.resolve(pageView.pdfPage);
9312 }
9313 var pageNumber = pageView.id;
9314 if (this._pagesRequests[pageNumber]) {
9315 return this._pagesRequests[pageNumber];
9316 }
9317 var promise = this.pdfDocument.getPage(pageNumber).then(function (pdfPage) {
9318 if (!pageView.pdfPage) {
9319 pageView.setPdfPage(pdfPage);
9320 }
9321 _this3._pagesRequests[pageNumber] = null;
9322 return pdfPage;
9323 }).catch(function (reason) {
9324 console.error('Unable to get page for page view', reason);
9325 _this3._pagesRequests[pageNumber] = null;
9326 });
9327 this._pagesRequests[pageNumber] = promise;
9328 return promise;
9329 }
9330 }, {
9331 key: 'forceRendering',
9332 value: function forceRendering(currentlyVisiblePages) {
9333 var _this4 = this;
9334
9335 var visiblePages = currentlyVisiblePages || this._getVisiblePages();
9336 var scrollAhead = this._isScrollModeHorizontal ? this.scroll.right : this.scroll.down;
9337 var pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead);
9338 if (pageView) {
9339 this._ensurePdfPageLoaded(pageView).then(function () {
9340 _this4.renderingQueue.renderView(pageView);
9341 });
9342 return true;
9343 }
9344 return false;
9345 }
9346 }, {
9347 key: 'createTextLayerBuilder',
9348 value: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport) {
9349 var enhanceTextSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
9350
9351 return new _text_layer_builder.TextLayerBuilder({
9352 textLayerDiv: textLayerDiv,
9353 eventBus: this.eventBus,
9354 pageIndex: pageIndex,
9355 viewport: viewport,
9356 findController: this.isInPresentationMode ? null : this.findController,
9357 enhanceTextSelection: this.isInPresentationMode ? false : enhanceTextSelection
9358 });
9359 }
9360 }, {
9361 key: 'createAnnotationLayerBuilder',
9362 value: function createAnnotationLayerBuilder(pageDiv, pdfPage) {
9363 var imageResourcesPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
9364 var renderInteractiveForms = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
9365 var l10n = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _ui_utils.NullL10n;
9366
9367 return new _annotation_layer_builder.AnnotationLayerBuilder({
9368 pageDiv: pageDiv,
9369 pdfPage: pdfPage,
9370 imageResourcesPath: imageResourcesPath,
9371 renderInteractiveForms: renderInteractiveForms,
9372 linkService: this.linkService,
9373 downloadManager: this.downloadManager,
9374 l10n: l10n
9375 });
9376 }
9377 }, {
9378 key: 'getPagesOverview',
9379 value: function getPagesOverview() {
9380 var pagesOverview = this._pages.map(function (pageView) {
9381 var viewport = pageView.pdfPage.getViewport(1);
9382 return {
9383 width: viewport.width,
9384 height: viewport.height,
9385 rotation: viewport.rotation
9386 };
9387 });
9388 if (!this.enablePrintAutoRotate) {
9389 return pagesOverview;
9390 }
9391 var isFirstPagePortrait = (0, _ui_utils.isPortraitOrientation)(pagesOverview[0]);
9392 return pagesOverview.map(function (size) {
9393 if (isFirstPagePortrait === (0, _ui_utils.isPortraitOrientation)(size)) {
9394 return size;
9395 }
9396 return {
9397 width: size.height,
9398 height: size.width,
9399 rotation: (size.rotation + 90) % 360
9400 };
9401 });
9402 }
9403 }, {
9404 key: '_updateScrollMode',
9405 value: function _updateScrollMode() {
9406 var pageNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
9407
9408 var scrollMode = this._scrollMode,
9409 viewer = this.viewer;
9410 viewer.classList.toggle('scrollHorizontal', scrollMode === ScrollMode.HORIZONTAL);
9411 viewer.classList.toggle('scrollWrapped', scrollMode === ScrollMode.WRAPPED);
9412 if (!this.pdfDocument || !pageNumber) {
9413 return;
9414 }
9415 if (this._currentScaleValue && isNaN(this._currentScaleValue)) {
9416 this._setScale(this._currentScaleValue, true);
9417 }
9418 this.scrollPageIntoView({ pageNumber: pageNumber });
9419 this.update();
9420 }
9421 }, {
9422 key: '_updateSpreadMode',
9423 value: function _updateSpreadMode() {
9424 var pageNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
9425
9426 if (!this.pdfDocument) {
9427 return;
9428 }
9429 var viewer = this.viewer,
9430 pages = this._pages;
9431 viewer.textContent = '';
9432 if (this._spreadMode === SpreadMode.NONE) {
9433 for (var i = 0, iMax = pages.length; i < iMax; ++i) {
9434 viewer.appendChild(pages[i].div);
9435 }
9436 } else {
9437 var parity = this._spreadMode - 1;
9438 var spread = null;
9439 for (var _i = 0, _iMax = pages.length; _i < _iMax; ++_i) {
9440 if (spread === null) {
9441 spread = document.createElement('div');
9442 spread.className = 'spread';
9443 viewer.appendChild(spread);
9444 } else if (_i % 2 === parity) {
9445 spread = spread.cloneNode(false);
9446 viewer.appendChild(spread);
9447 }
9448 spread.appendChild(pages[_i].div);
9449 }
9450 }
9451 if (!pageNumber) {
9452 return;
9453 }
9454 this.scrollPageIntoView({ pageNumber: pageNumber });
9455 this.update();
9456 }
9457 }, {
9458 key: 'pagesCount',
9459 get: function get() {
9460 return this._pages.length;
9461 }
9462 }, {
9463 key: 'pageViewsReady',
9464 get: function get() {
9465 return this._pageViewsReady;
9466 }
9467 }, {
9468 key: 'currentPageNumber',
9469 get: function get() {
9470 return this._currentPageNumber;
9471 },
9472 set: function set(val) {
9473 if (!Number.isInteger(val)) {
9474 throw new Error('Invalid page number.');
9475 }
9476 if (!this.pdfDocument) {
9477 return;
9478 }
9479 this._setCurrentPageNumber(val, true);
9480 }
9481 }, {
9482 key: 'currentPageLabel',
9483 get: function get() {
9484 return this._pageLabels && this._pageLabels[this._currentPageNumber - 1];
9485 },
9486 set: function set(val) {
9487 var pageNumber = val | 0;
9488 if (this._pageLabels) {
9489 var i = this._pageLabels.indexOf(val);
9490 if (i >= 0) {
9491 pageNumber = i + 1;
9492 }
9493 }
9494 this.currentPageNumber = pageNumber;
9495 }
9496 }, {
9497 key: 'currentScale',
9498 get: function get() {
9499 return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE;
9500 },
9501 set: function set(val) {
9502 if (isNaN(val)) {
9503 throw new Error('Invalid numeric scale');
9504 }
9505 if (!this.pdfDocument) {
9506 return;
9507 }
9508 this._setScale(val, false);
9509 }
9510 }, {
9511 key: 'currentScaleValue',
9512 get: function get() {
9513 return this._currentScaleValue;
9514 },
9515 set: function set(val) {
9516 if (!this.pdfDocument) {
9517 return;
9518 }
9519 this._setScale(val, false);
9520 }
9521 }, {
9522 key: 'pagesRotation',
9523 get: function get() {
9524 return this._pagesRotation;
9525 },
9526 set: function set(rotation) {
9527 if (!(0, _ui_utils.isValidRotation)(rotation)) {
9528 throw new Error('Invalid pages rotation angle.');
9529 }
9530 if (!this.pdfDocument) {
9531 return;
9532 }
9533 if (this._pagesRotation === rotation) {
9534 return;
9535 }
9536 this._pagesRotation = rotation;
9537 var pageNumber = this._currentPageNumber;
9538 for (var i = 0, ii = this._pages.length; i < ii; i++) {
9539 var pageView = this._pages[i];
9540 pageView.update(pageView.scale, rotation);
9541 }
9542 if (this._currentScaleValue) {
9543 this._setScale(this._currentScaleValue, true);
9544 }
9545 this.eventBus.dispatch('rotationchanging', {
9546 source: this,
9547 pagesRotation: rotation,
9548 pageNumber: pageNumber
9549 });
9550 if (this.defaultRenderingQueue) {
9551 this.update();
9552 }
9553 }
9554 }, {
9555 key: '_setDocumentViewerElement',
9556 get: function get() {
9557 throw new Error('Not implemented: _setDocumentViewerElement');
9558 }
9559 }, {
9560 key: '_isScrollModeHorizontal',
9561 get: function get() {
9562 throw new Error('Not implemented: _isScrollModeHorizontal');
9563 }
9564 }, {
9565 key: 'isInPresentationMode',
9566 get: function get() {
9567 return this.presentationModeState === _ui_utils.PresentationModeState.FULLSCREEN;
9568 }
9569 }, {
9570 key: 'isChangingPresentationMode',
9571 get: function get() {
9572 return this.presentationModeState === _ui_utils.PresentationModeState.CHANGING;
9573 }
9574 }, {
9575 key: 'isHorizontalScrollbarEnabled',
9576 get: function get() {
9577 return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth;
9578 }
9579 }, {
9580 key: 'isVerticalScrollbarEnabled',
9581 get: function get() {
9582 return this.isInPresentationMode ? false : this.container.scrollHeight > this.container.clientHeight;
9583 }
9584 }, {
9585 key: 'hasEqualPageSizes',
9586 get: function get() {
9587 var firstPageView = this._pages[0];
9588 for (var i = 1, ii = this._pages.length; i < ii; ++i) {
9589 var pageView = this._pages[i];
9590 if (pageView.width !== firstPageView.width || pageView.height !== firstPageView.height) {
9591 return false;
9592 }
9593 }
9594 return true;
9595 }
9596 }, {
9597 key: 'scrollMode',
9598 get: function get() {
9599 return this._scrollMode;
9600 },
9601 set: function set(mode) {
9602 if (this._scrollMode === mode) {
9603 return;
9604 }
9605 if (!Number.isInteger(mode) || !Object.values(ScrollMode).includes(mode)) {
9606 throw new Error('Invalid scroll mode: ' + mode);
9607 }
9608 this._scrollMode = mode;
9609 this.eventBus.dispatch('scrollmodechanged', {
9610 source: this,
9611 mode: mode
9612 });
9613 this._updateScrollMode(this._currentPageNumber);
9614 }
9615 }, {
9616 key: 'spreadMode',
9617 get: function get() {
9618 return this._spreadMode;
9619 },
9620 set: function set(mode) {
9621 if (this._spreadMode === mode) {
9622 return;
9623 }
9624 if (!Number.isInteger(mode) || !Object.values(SpreadMode).includes(mode)) {
9625 throw new Error('Invalid spread mode: ' + mode);
9626 }
9627 this._spreadMode = mode;
9628 this.eventBus.dispatch('spreadmodechanged', {
9629 source: this,
9630 mode: mode
9631 });
9632 this._updateSpreadMode(this._currentPageNumber);
9633 }
9634 }]);
9635
9636 return BaseViewer;
9637 }();
9638
9639 exports.BaseViewer = BaseViewer;
9640 exports.ScrollMode = ScrollMode;
9641 exports.SpreadMode = SpreadMode;
9642
9643 /***/ }),
9644 /* 31 */
9645 /***/ (function(module, exports, __webpack_require__) {
9646
9647 "use strict";
9648
9649
9650 Object.defineProperty(exports, "__esModule", {
9651 value: true
9652 });
9653 exports.DefaultAnnotationLayerFactory = exports.AnnotationLayerBuilder = undefined;
9654
9655 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
9656
9657 var _pdfjsLib = __webpack_require__(7);
9658
9659 var _ui_utils = __webpack_require__(6);
9660
9661 var _pdf_link_service = __webpack_require__(23);
9662
9663 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
9664
9665 var AnnotationLayerBuilder = function () {
9666 function AnnotationLayerBuilder(_ref) {
9667 var pageDiv = _ref.pageDiv,
9668 pdfPage = _ref.pdfPage,
9669 linkService = _ref.linkService,
9670 downloadManager = _ref.downloadManager,
9671 _ref$imageResourcesPa = _ref.imageResourcesPath,
9672 imageResourcesPath = _ref$imageResourcesPa === undefined ? '' : _ref$imageResourcesPa,
9673 _ref$renderInteractiv = _ref.renderInteractiveForms,
9674 renderInteractiveForms = _ref$renderInteractiv === undefined ? false : _ref$renderInteractiv,
9675 _ref$l10n = _ref.l10n,
9676 l10n = _ref$l10n === undefined ? _ui_utils.NullL10n : _ref$l10n;
9677
9678 _classCallCheck(this, AnnotationLayerBuilder);
9679
9680 this.pageDiv = pageDiv;
9681 this.pdfPage = pdfPage;
9682 this.linkService = linkService;
9683 this.downloadManager = downloadManager;
9684 this.imageResourcesPath = imageResourcesPath;
9685 this.renderInteractiveForms = renderInteractiveForms;
9686 this.l10n = l10n;
9687 this.div = null;
9688 this._cancelled = false;
9689 }
9690
9691 _createClass(AnnotationLayerBuilder, [{
9692 key: 'render',
9693 value: function render(viewport) {
9694 var _this = this;
9695
9696 var intent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'display';
9697
9698 this.pdfPage.getAnnotations({ intent: intent }).then(function (annotations) {
9699 if (_this._cancelled) {
9700 return;
9701 }
9702 var parameters = {
9703 viewport: viewport.clone({ dontFlip: true }),
9704 div: _this.div,
9705 annotations: annotations,
9706 page: _this.pdfPage,
9707 imageResourcesPath: _this.imageResourcesPath,
9708 renderInteractiveForms: _this.renderInteractiveForms,
9709 linkService: _this.linkService,
9710 downloadManager: _this.downloadManager
9711 };
9712 if (_this.div) {
9713 _pdfjsLib.AnnotationLayer.update(parameters);
9714 } else {
9715 if (annotations.length === 0) {
9716 return;
9717 }
9718 _this.div = document.createElement('div');
9719 _this.div.className = 'annotationLayer';
9720 _this.pageDiv.appendChild(_this.div);
9721 parameters.div = _this.div;
9722 _pdfjsLib.AnnotationLayer.render(parameters);
9723 _this.l10n.translate(_this.div);
9724 }
9725 });
9726 }
9727 }, {
9728 key: 'cancel',
9729 value: function cancel() {
9730 this._cancelled = true;
9731 }
9732 }, {
9733 key: 'hide',
9734 value: function hide() {
9735 if (!this.div) {
9736 return;
9737 }
9738 this.div.setAttribute('hidden', 'true');
9739 }
9740 }]);
9741
9742 return AnnotationLayerBuilder;
9743 }();
9744
9745 var DefaultAnnotationLayerFactory = function () {
9746 function DefaultAnnotationLayerFactory() {
9747 _classCallCheck(this, DefaultAnnotationLayerFactory);
9748 }
9749
9750 _createClass(DefaultAnnotationLayerFactory, [{
9751 key: 'createAnnotationLayerBuilder',
9752 value: function createAnnotationLayerBuilder(pageDiv, pdfPage) {
9753 var imageResourcesPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
9754 var renderInteractiveForms = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
9755 var l10n = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _ui_utils.NullL10n;
9756
9757 return new AnnotationLayerBuilder({
9758 pageDiv: pageDiv,
9759 pdfPage: pdfPage,
9760 imageResourcesPath: imageResourcesPath,
9761 renderInteractiveForms: renderInteractiveForms,
9762 linkService: new _pdf_link_service.SimpleLinkService(),
9763 l10n: l10n
9764 });
9765 }
9766 }]);
9767
9768 return DefaultAnnotationLayerFactory;
9769 }();
9770
9771 exports.AnnotationLayerBuilder = AnnotationLayerBuilder;
9772 exports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory;
9773
9774 /***/ }),
9775 /* 32 */
9776 /***/ (function(module, exports, __webpack_require__) {
9777
9778 "use strict";
9779
9780
9781 Object.defineProperty(exports, "__esModule", {
9782 value: true
9783 });
9784 exports.PDFPageView = undefined;
9785
9786 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
9787
9788 var _ui_utils = __webpack_require__(6);
9789
9790 var _pdfjsLib = __webpack_require__(7);
9791
9792 var _dom_events = __webpack_require__(14);
9793
9794 var _pdf_rendering_queue = __webpack_require__(10);
9795
9796 var _viewer_compatibility = __webpack_require__(13);
9797
9798 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
9799
9800 var MAX_CANVAS_PIXELS = _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels || 16777216;
9801
9802 var PDFPageView = function () {
9803 function PDFPageView(options) {
9804 _classCallCheck(this, PDFPageView);
9805
9806 var container = options.container;
9807 var defaultViewport = options.defaultViewport;
9808 this.id = options.id;
9809 this.renderingId = 'page' + this.id;
9810 this.pdfPage = null;
9811 this.pageLabel = null;
9812 this.rotation = 0;
9813 this.scale = options.scale || _ui_utils.DEFAULT_SCALE;
9814 this.viewport = defaultViewport;
9815 this.pdfPageRotate = defaultViewport.rotation;
9816 this.hasRestrictedScaling = false;
9817 this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : _ui_utils.TextLayerMode.ENABLE;
9818 this.imageResourcesPath = options.imageResourcesPath || '';
9819 this.renderInteractiveForms = options.renderInteractiveForms || false;
9820 this.useOnlyCssZoom = options.useOnlyCssZoom || false;
9821 this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS;
9822 this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)();
9823 this.renderingQueue = options.renderingQueue;
9824 this.textLayerFactory = options.textLayerFactory;
9825 this.annotationLayerFactory = options.annotationLayerFactory;
9826 this.renderer = options.renderer || _ui_utils.RendererType.CANVAS;
9827 this.enableWebGL = options.enableWebGL || false;
9828 this.l10n = options.l10n || _ui_utils.NullL10n;
9829 this.paintTask = null;
9830 this.paintedViewportMap = new WeakMap();
9831 this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL;
9832 this.resume = null;
9833 this.error = null;
9834 this.onBeforeDraw = null;
9835 this.onAfterDraw = null;
9836 this.annotationLayer = null;
9837 this.textLayer = null;
9838 this.zoomLayer = null;
9839 var div = document.createElement('div');
9840 div.className = 'page';
9841 div.style.width = Math.floor(this.viewport.width) + 'px';
9842 div.style.height = Math.floor(this.viewport.height) + 'px';
9843 div.setAttribute('data-page-number', this.id);
9844 this.div = div;
9845 container.appendChild(div);
9846 }
9847
9848 _createClass(PDFPageView, [{
9849 key: 'setPdfPage',
9850 value: function setPdfPage(pdfPage) {
9851 this.pdfPage = pdfPage;
9852 this.pdfPageRotate = pdfPage.rotate;
9853 var totalRotation = (this.rotation + this.pdfPageRotate) % 360;
9854 this.viewport = pdfPage.getViewport(this.scale * _ui_utils.CSS_UNITS, totalRotation);
9855 this.stats = pdfPage.stats;
9856 this.reset();
9857 }
9858 }, {
9859 key: 'destroy',
9860 value: function destroy() {
9861 this.reset();
9862 if (this.pdfPage) {
9863 this.pdfPage.cleanup();
9864 }
9865 }
9866 }, {
9867 key: '_resetZoomLayer',
9868 value: function _resetZoomLayer() {
9869 var removeFromDOM = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
9870
9871 if (!this.zoomLayer) {
9872 return;
9873 }
9874 var zoomLayerCanvas = this.zoomLayer.firstChild;
9875 this.paintedViewportMap.delete(zoomLayerCanvas);
9876 zoomLayerCanvas.width = 0;
9877 zoomLayerCanvas.height = 0;
9878 if (removeFromDOM) {
9879 this.zoomLayer.remove();
9880 }
9881 this.zoomLayer = null;
9882 }
9883 }, {
9884 key: 'reset',
9885 value: function reset() {
9886 var keepZoomLayer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
9887 var keepAnnotations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
9888
9889 this.cancelRendering(keepAnnotations);
9890 var div = this.div;
9891 div.style.width = Math.floor(this.viewport.width) + 'px';
9892 div.style.height = Math.floor(this.viewport.height) + 'px';
9893 var childNodes = div.childNodes;
9894 var currentZoomLayerNode = keepZoomLayer && this.zoomLayer || null;
9895 var currentAnnotationNode = keepAnnotations && this.annotationLayer && this.annotationLayer.div || null;
9896 for (var i = childNodes.length - 1; i >= 0; i--) {
9897 var node = childNodes[i];
9898 if (currentZoomLayerNode === node || currentAnnotationNode === node) {
9899 continue;
9900 }
9901 div.removeChild(node);
9902 }
9903 div.removeAttribute('data-loaded');
9904 if (currentAnnotationNode) {
9905 this.annotationLayer.hide();
9906 } else if (this.annotationLayer) {
9907 this.annotationLayer.cancel();
9908 this.annotationLayer = null;
9909 }
9910 if (!currentZoomLayerNode) {
9911 if (this.canvas) {
9912 this.paintedViewportMap.delete(this.canvas);
9913 this.canvas.width = 0;
9914 this.canvas.height = 0;
9915 delete this.canvas;
9916 }
9917 this._resetZoomLayer();
9918 }
9919 if (this.svg) {
9920 this.paintedViewportMap.delete(this.svg);
9921 delete this.svg;
9922 }
9923 this.loadingIconDiv = document.createElement('div');
9924 this.loadingIconDiv.className = 'loadingIcon';
9925 div.appendChild(this.loadingIconDiv);
9926 }
9927 }, {
9928 key: 'update',
9929 value: function update(scale, rotation) {
9930 this.scale = scale || this.scale;
9931 if (typeof rotation !== 'undefined') {
9932 this.rotation = rotation;
9933 }
9934 var totalRotation = (this.rotation + this.pdfPageRotate) % 360;
9935 this.viewport = this.viewport.clone({
9936 scale: this.scale * _ui_utils.CSS_UNITS,
9937 rotation: totalRotation
9938 });
9939 if (this.svg) {
9940 this.cssTransform(this.svg, true);
9941 this.eventBus.dispatch('pagerendered', {
9942 source: this,
9943 pageNumber: this.id,
9944 cssTransform: true
9945 });
9946 return;
9947 }
9948 var isScalingRestricted = false;
9949 if (this.canvas && this.maxCanvasPixels > 0) {
9950 var outputScale = this.outputScale;
9951 if ((Math.floor(this.viewport.width) * outputScale.sx | 0) * (Math.floor(this.viewport.height) * outputScale.sy | 0) > this.maxCanvasPixels) {
9952 isScalingRestricted = true;
9953 }
9954 }
9955 if (this.canvas) {
9956 if (this.useOnlyCssZoom || this.hasRestrictedScaling && isScalingRestricted) {
9957 this.cssTransform(this.canvas, true);
9958 this.eventBus.dispatch('pagerendered', {
9959 source: this,
9960 pageNumber: this.id,
9961 cssTransform: true
9962 });
9963 return;
9964 }
9965 if (!this.zoomLayer && !this.canvas.hasAttribute('hidden')) {
9966 this.zoomLayer = this.canvas.parentNode;
9967 this.zoomLayer.style.position = 'absolute';
9968 }
9969 }
9970 if (this.zoomLayer) {
9971 this.cssTransform(this.zoomLayer.firstChild);
9972 }
9973 this.reset(true, true);
9974 }
9975 }, {
9976 key: 'cancelRendering',
9977 value: function cancelRendering() {
9978 var keepAnnotations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
9979
9980 var renderingState = this.renderingState;
9981 if (this.paintTask) {
9982 this.paintTask.cancel();
9983 this.paintTask = null;
9984 }
9985 this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL;
9986 this.resume = null;
9987 if (this.textLayer) {
9988 this.textLayer.cancel();
9989 this.textLayer = null;
9990 }
9991 if (!keepAnnotations && this.annotationLayer) {
9992 this.annotationLayer.cancel();
9993 this.annotationLayer = null;
9994 }
9995 if (renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) {
9996 this.eventBus.dispatch('pagecancelled', {
9997 source: this,
9998 pageNumber: this.id,
9999 renderingState: renderingState
10000 });
10001 }
10002 }
10003 }, {
10004 key: 'cssTransform',
10005 value: function cssTransform(target) {
10006 var redrawAnnotations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
10007
10008 var width = this.viewport.width;
10009 var height = this.viewport.height;
10010 var div = this.div;
10011 target.style.width = target.parentNode.style.width = div.style.width = Math.floor(width) + 'px';
10012 target.style.height = target.parentNode.style.height = div.style.height = Math.floor(height) + 'px';
10013 var relativeRotation = this.viewport.rotation - this.paintedViewportMap.get(target).rotation;
10014 var absRotation = Math.abs(relativeRotation);
10015 var scaleX = 1,
10016 scaleY = 1;
10017 if (absRotation === 90 || absRotation === 270) {
10018 scaleX = height / width;
10019 scaleY = width / height;
10020 }
10021 var cssTransform = 'rotate(' + relativeRotation + 'deg) ' + 'scale(' + scaleX + ',' + scaleY + ')';
10022 target.style.transform = cssTransform;
10023 if (this.textLayer) {
10024 var textLayerViewport = this.textLayer.viewport;
10025 var textRelativeRotation = this.viewport.rotation - textLayerViewport.rotation;
10026 var textAbsRotation = Math.abs(textRelativeRotation);
10027 var scale = width / textLayerViewport.width;
10028 if (textAbsRotation === 90 || textAbsRotation === 270) {
10029 scale = width / textLayerViewport.height;
10030 }
10031 var textLayerDiv = this.textLayer.textLayerDiv;
10032 var transX = void 0,
10033 transY = void 0;
10034 switch (textAbsRotation) {
10035 case 0:
10036 transX = transY = 0;
10037 break;
10038 case 90:
10039 transX = 0;
10040 transY = '-' + textLayerDiv.style.height;
10041 break;
10042 case 180:
10043 transX = '-' + textLayerDiv.style.width;
10044 transY = '-' + textLayerDiv.style.height;
10045 break;
10046 case 270:
10047 transX = '-' + textLayerDiv.style.width;
10048 transY = 0;
10049 break;
10050 default:
10051 console.error('Bad rotation value.');
10052 break;
10053 }
10054 textLayerDiv.style.transform = 'rotate(' + textAbsRotation + 'deg) ' + 'scale(' + scale + ', ' + scale + ') ' + 'translate(' + transX + ', ' + transY + ')';
10055 textLayerDiv.style.transformOrigin = '0% 0%';
10056 }
10057 if (redrawAnnotations && this.annotationLayer) {
10058 this.annotationLayer.render(this.viewport, 'display');
10059 }
10060 }
10061 }, {
10062 key: 'getPagePoint',
10063 value: function getPagePoint(x, y) {
10064 return this.viewport.convertToPdfPoint(x, y);
10065 }
10066 }, {
10067 key: 'draw',
10068 value: function draw() {
10069 var _this = this;
10070
10071 if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) {
10072 console.error('Must be in new state before drawing');
10073 this.reset();
10074 }
10075 if (!this.pdfPage) {
10076 this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;
10077 return Promise.reject(new Error('Page is not loaded'));
10078 }
10079 this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING;
10080 var pdfPage = this.pdfPage;
10081 var div = this.div;
10082 var canvasWrapper = document.createElement('div');
10083 canvasWrapper.style.width = div.style.width;
10084 canvasWrapper.style.height = div.style.height;
10085 canvasWrapper.classList.add('canvasWrapper');
10086 if (this.annotationLayer && this.annotationLayer.div) {
10087 div.insertBefore(canvasWrapper, this.annotationLayer.div);
10088 } else {
10089 div.appendChild(canvasWrapper);
10090 }
10091 var textLayer = null;
10092 if (this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE && this.textLayerFactory) {
10093 var textLayerDiv = document.createElement('div');
10094 textLayerDiv.className = 'textLayer';
10095 textLayerDiv.style.width = canvasWrapper.style.width;
10096 textLayerDiv.style.height = canvasWrapper.style.height;
10097 if (this.annotationLayer && this.annotationLayer.div) {
10098 div.insertBefore(textLayerDiv, this.annotationLayer.div);
10099 } else {
10100 div.appendChild(textLayerDiv);
10101 }
10102 textLayer = this.textLayerFactory.createTextLayerBuilder(textLayerDiv, this.id - 1, this.viewport, this.textLayerMode === _ui_utils.TextLayerMode.ENABLE_ENHANCE);
10103 }
10104 this.textLayer = textLayer;
10105 var renderContinueCallback = null;
10106 if (this.renderingQueue) {
10107 renderContinueCallback = function renderContinueCallback(cont) {
10108 if (!_this.renderingQueue.isHighestPriority(_this)) {
10109 _this.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED;
10110 _this.resume = function () {
10111 _this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING;
10112 cont();
10113 };
10114 return;
10115 }
10116 cont();
10117 };
10118 }
10119 var finishPaintTask = function finishPaintTask(error) {
10120 if (paintTask === _this.paintTask) {
10121 _this.paintTask = null;
10122 }
10123 if (error instanceof _pdfjsLib.RenderingCancelledException) {
10124 _this.error = null;
10125 return Promise.resolve(undefined);
10126 }
10127 _this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;
10128 if (_this.loadingIconDiv) {
10129 div.removeChild(_this.loadingIconDiv);
10130 delete _this.loadingIconDiv;
10131 }
10132 _this._resetZoomLayer(true);
10133 _this.error = error;
10134 _this.stats = pdfPage.stats;
10135 if (_this.onAfterDraw) {
10136 _this.onAfterDraw();
10137 }
10138 _this.eventBus.dispatch('pagerendered', {
10139 source: _this,
10140 pageNumber: _this.id,
10141 cssTransform: false
10142 });
10143 if (error) {
10144 return Promise.reject(error);
10145 }
10146 return Promise.resolve(undefined);
10147 };
10148 var paintTask = this.renderer === _ui_utils.RendererType.SVG ? this.paintOnSvg(canvasWrapper) : this.paintOnCanvas(canvasWrapper);
10149 paintTask.onRenderContinue = renderContinueCallback;
10150 this.paintTask = paintTask;
10151 var resultPromise = paintTask.promise.then(function () {
10152 return finishPaintTask(null).then(function () {
10153 if (textLayer) {
10154 var readableStream = pdfPage.streamTextContent({ normalizeWhitespace: true });
10155 textLayer.setTextContentStream(readableStream);
10156 textLayer.render();
10157 }
10158 });
10159 }, function (reason) {
10160 return finishPaintTask(reason);
10161 });
10162 if (this.annotationLayerFactory) {
10163 if (!this.annotationLayer) {
10164 this.annotationLayer = this.annotationLayerFactory.createAnnotationLayerBuilder(div, pdfPage, this.imageResourcesPath, this.renderInteractiveForms, this.l10n);
10165 }
10166 this.annotationLayer.render(this.viewport, 'display');
10167 }
10168 div.setAttribute('data-loaded', true);
10169 if (this.onBeforeDraw) {
10170 this.onBeforeDraw();
10171 }
10172 return resultPromise;
10173 }
10174 }, {
10175 key: 'paintOnCanvas',
10176 value: function paintOnCanvas(canvasWrapper) {
10177 var renderCapability = (0, _pdfjsLib.createPromiseCapability)();
10178 var result = {
10179 promise: renderCapability.promise,
10180 onRenderContinue: function onRenderContinue(cont) {
10181 cont();
10182 },
10183 cancel: function cancel() {
10184 renderTask.cancel();
10185 }
10186 };
10187 var viewport = this.viewport;
10188 var canvas = document.createElement('canvas');
10189 canvas.id = this.renderingId;
10190 canvas.setAttribute('hidden', 'hidden');
10191 var isCanvasHidden = true;
10192 var showCanvas = function showCanvas() {
10193 if (isCanvasHidden) {
10194 canvas.removeAttribute('hidden');
10195 isCanvasHidden = false;
10196 }
10197 };
10198 canvasWrapper.appendChild(canvas);
10199 this.canvas = canvas;
10200 canvas.mozOpaque = true;
10201 var ctx = canvas.getContext('2d', { alpha: false });
10202 var outputScale = (0, _ui_utils.getOutputScale)(ctx);
10203 this.outputScale = outputScale;
10204 if (this.useOnlyCssZoom) {
10205 var actualSizeViewport = viewport.clone({ scale: _ui_utils.CSS_UNITS });
10206 outputScale.sx *= actualSizeViewport.width / viewport.width;
10207 outputScale.sy *= actualSizeViewport.height / viewport.height;
10208 outputScale.scaled = true;
10209 }
10210 if (this.maxCanvasPixels > 0) {
10211 var pixelsInViewport = viewport.width * viewport.height;
10212 var maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport);
10213 if (outputScale.sx > maxScale || outputScale.sy > maxScale) {
10214 outputScale.sx = maxScale;
10215 outputScale.sy = maxScale;
10216 outputScale.scaled = true;
10217 this.hasRestrictedScaling = true;
10218 } else {
10219 this.hasRestrictedScaling = false;
10220 }
10221 }
10222 var sfx = (0, _ui_utils.approximateFraction)(outputScale.sx);
10223 var sfy = (0, _ui_utils.approximateFraction)(outputScale.sy);
10224 canvas.width = (0, _ui_utils.roundToDivide)(viewport.width * outputScale.sx, sfx[0]);
10225 canvas.height = (0, _ui_utils.roundToDivide)(viewport.height * outputScale.sy, sfy[0]);
10226 canvas.style.width = (0, _ui_utils.roundToDivide)(viewport.width, sfx[1]) + 'px';
10227 canvas.style.height = (0, _ui_utils.roundToDivide)(viewport.height, sfy[1]) + 'px';
10228 this.paintedViewportMap.set(canvas, viewport);
10229 var transform = !outputScale.scaled ? null : [outputScale.sx, 0, 0, outputScale.sy, 0, 0];
10230 var renderContext = {
10231 canvasContext: ctx,
10232 transform: transform,
10233 viewport: this.viewport,
10234 enableWebGL: this.enableWebGL,
10235 renderInteractiveForms: this.renderInteractiveForms
10236 };
10237 var renderTask = this.pdfPage.render(renderContext);
10238 renderTask.onContinue = function (cont) {
10239 showCanvas();
10240 if (result.onRenderContinue) {
10241 result.onRenderContinue(cont);
10242 } else {
10243 cont();
10244 }
10245 };
10246 renderTask.promise.then(function () {
10247 showCanvas();
10248 renderCapability.resolve(undefined);
10249 }, function (error) {
10250 showCanvas();
10251 renderCapability.reject(error);
10252 });
10253 return result;
10254 }
10255 }, {
10256 key: 'paintOnSvg',
10257 value: function paintOnSvg(wrapper) {
10258 var _this2 = this;
10259
10260 var cancelled = false;
10261 var ensureNotCancelled = function ensureNotCancelled() {
10262 if (cancelled) {
10263 throw new _pdfjsLib.RenderingCancelledException('Rendering cancelled, page ' + _this2.id, 'svg');
10264 }
10265 };
10266 var pdfPage = this.pdfPage;
10267 var actualSizeViewport = this.viewport.clone({ scale: _ui_utils.CSS_UNITS });
10268 var promise = pdfPage.getOperatorList().then(function (opList) {
10269 ensureNotCancelled();
10270 var svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs);
10271 return svgGfx.getSVG(opList, actualSizeViewport).then(function (svg) {
10272 ensureNotCancelled();
10273 _this2.svg = svg;
10274 _this2.paintedViewportMap.set(svg, actualSizeViewport);
10275 svg.style.width = wrapper.style.width;
10276 svg.style.height = wrapper.style.height;
10277 _this2.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED;
10278 wrapper.appendChild(svg);
10279 });
10280 });
10281 return {
10282 promise: promise,
10283 onRenderContinue: function onRenderContinue(cont) {
10284 cont();
10285 },
10286 cancel: function cancel() {
10287 cancelled = true;
10288 }
10289 };
10290 }
10291 }, {
10292 key: 'setPageLabel',
10293 value: function setPageLabel(label) {
10294 this.pageLabel = typeof label === 'string' ? label : null;
10295 if (this.pageLabel !== null) {
10296 this.div.setAttribute('data-page-label', this.pageLabel);
10297 } else {
10298 this.div.removeAttribute('data-page-label');
10299 }
10300 }
10301 }, {
10302 key: 'width',
10303 get: function get() {
10304 return this.viewport.width;
10305 }
10306 }, {
10307 key: 'height',
10308 get: function get() {
10309 return this.viewport.height;
10310 }
10311 }]);
10312
10313 return PDFPageView;
10314 }();
10315
10316 exports.PDFPageView = PDFPageView;
10317
10318 /***/ }),
10319 /* 33 */
10320 /***/ (function(module, exports, __webpack_require__) {
10321
10322 "use strict";
10323
10324
10325 Object.defineProperty(exports, "__esModule", {
10326 value: true
10327 });
10328 exports.DefaultTextLayerFactory = exports.TextLayerBuilder = undefined;
10329
10330 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
10331
10332 var _dom_events = __webpack_require__(14);
10333
10334 var _pdfjsLib = __webpack_require__(7);
10335
10336 var _ui_utils = __webpack_require__(6);
10337
10338 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
10339
10340 var EXPAND_DIVS_TIMEOUT = 300;
10341 var MATCH_SCROLL_OFFSET_TOP = -50;
10342 var MATCH_SCROLL_OFFSET_LEFT = -400;
10343
10344 var TextLayerBuilder = function () {
10345 function TextLayerBuilder(_ref) {
10346 var textLayerDiv = _ref.textLayerDiv,
10347 eventBus = _ref.eventBus,
10348 pageIndex = _ref.pageIndex,
10349 viewport = _ref.viewport,
10350 _ref$findController = _ref.findController,
10351 findController = _ref$findController === undefined ? null : _ref$findController,
10352 _ref$enhanceTextSelec = _ref.enhanceTextSelection,
10353 enhanceTextSelection = _ref$enhanceTextSelec === undefined ? false : _ref$enhanceTextSelec;
10354
10355 _classCallCheck(this, TextLayerBuilder);
10356
10357 this.textLayerDiv = textLayerDiv;
10358 this.eventBus = eventBus || (0, _dom_events.getGlobalEventBus)();
10359 this.textContent = null;
10360 this.textContentItemsStr = [];
10361 this.textContentStream = null;
10362 this.renderingDone = false;
10363 this.pageIdx = pageIndex;
10364 this.pageNumber = this.pageIdx + 1;
10365 this.matches = [];
10366 this.viewport = viewport;
10367 this.textDivs = [];
10368 this.findController = findController;
10369 this.textLayerRenderTask = null;
10370 this.enhanceTextSelection = enhanceTextSelection;
10371 this._boundEvents = Object.create(null);
10372 this._bindEvents();
10373 this._bindMouse();
10374 }
10375
10376 _createClass(TextLayerBuilder, [{
10377 key: '_finishRendering',
10378 value: function _finishRendering() {
10379 this.renderingDone = true;
10380 if (!this.enhanceTextSelection) {
10381 var endOfContent = document.createElement('div');
10382 endOfContent.className = 'endOfContent';
10383 this.textLayerDiv.appendChild(endOfContent);
10384 }
10385 this.eventBus.dispatch('textlayerrendered', {
10386 source: this,
10387 pageNumber: this.pageNumber,
10388 numTextDivs: this.textDivs.length
10389 });
10390 }
10391 }, {
10392 key: 'render',
10393 value: function render() {
10394 var _this = this;
10395
10396 var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
10397
10398 if (!(this.textContent || this.textContentStream) || this.renderingDone) {
10399 return;
10400 }
10401 this.cancel();
10402 this.textDivs = [];
10403 var textLayerFrag = document.createDocumentFragment();
10404 this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({
10405 textContent: this.textContent,
10406 textContentStream: this.textContentStream,
10407 container: textLayerFrag,
10408 viewport: this.viewport,
10409 textDivs: this.textDivs,
10410 textContentItemsStr: this.textContentItemsStr,
10411 timeout: timeout,
10412 enhanceTextSelection: this.enhanceTextSelection
10413 });
10414 this.textLayerRenderTask.promise.then(function () {
10415 _this.textLayerDiv.appendChild(textLayerFrag);
10416 _this._finishRendering();
10417 _this.updateMatches();
10418 }, function (reason) {});
10419 }
10420 }, {
10421 key: 'cancel',
10422 value: function cancel() {
10423 if (this.textLayerRenderTask) {
10424 this.textLayerRenderTask.cancel();
10425 this.textLayerRenderTask = null;
10426 }
10427 }
10428 }, {
10429 key: 'setTextContentStream',
10430 value: function setTextContentStream(readableStream) {
10431 this.cancel();
10432 this.textContentStream = readableStream;
10433 }
10434 }, {
10435 key: 'setTextContent',
10436 value: function setTextContent(textContent) {
10437 this.cancel();
10438 this.textContent = textContent;
10439 }
10440 }, {
10441 key: 'convertMatches',
10442 value: function convertMatches(matches, matchesLength) {
10443 var i = 0;
10444 var iIndex = 0;
10445 var textContentItemsStr = this.textContentItemsStr;
10446 var end = textContentItemsStr.length - 1;
10447 var queryLen = this.findController === null ? 0 : this.findController.state.query.length;
10448 var ret = [];
10449 if (!matches) {
10450 return ret;
10451 }
10452 for (var m = 0, len = matches.length; m < len; m++) {
10453 var matchIdx = matches[m];
10454 while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) {
10455 iIndex += textContentItemsStr[i].length;
10456 i++;
10457 }
10458 if (i === textContentItemsStr.length) {
10459 console.error('Could not find a matching mapping');
10460 }
10461 var match = {
10462 begin: {
10463 divIdx: i,
10464 offset: matchIdx - iIndex
10465 }
10466 };
10467 if (matchesLength) {
10468 matchIdx += matchesLength[m];
10469 } else {
10470 matchIdx += queryLen;
10471 }
10472 while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) {
10473 iIndex += textContentItemsStr[i].length;
10474 i++;
10475 }
10476 match.end = {
10477 divIdx: i,
10478 offset: matchIdx - iIndex
10479 };
10480 ret.push(match);
10481 }
10482 return ret;
10483 }
10484 }, {
10485 key: 'renderMatches',
10486 value: function renderMatches(matches) {
10487 if (matches.length === 0) {
10488 return;
10489 }
10490 var textContentItemsStr = this.textContentItemsStr;
10491 var textDivs = this.textDivs;
10492 var prevEnd = null;
10493 var pageIdx = this.pageIdx;
10494 var isSelectedPage = this.findController === null ? false : pageIdx === this.findController.selected.pageIdx;
10495 var selectedMatchIdx = this.findController === null ? -1 : this.findController.selected.matchIdx;
10496 var highlightAll = this.findController === null ? false : this.findController.state.highlightAll;
10497 var infinity = {
10498 divIdx: -1,
10499 offset: undefined
10500 };
10501 function beginText(begin, className) {
10502 var divIdx = begin.divIdx;
10503 textDivs[divIdx].textContent = '';
10504 appendTextToDiv(divIdx, 0, begin.offset, className);
10505 }
10506 function appendTextToDiv(divIdx, fromOffset, toOffset, className) {
10507 var div = textDivs[divIdx];
10508 var content = textContentItemsStr[divIdx].substring(fromOffset, toOffset);
10509 var node = document.createTextNode(content);
10510 if (className) {
10511 var span = document.createElement('span');
10512 span.className = className;
10513 span.appendChild(node);
10514 div.appendChild(span);
10515 return;
10516 }
10517 div.appendChild(node);
10518 }
10519 var i0 = selectedMatchIdx,
10520 i1 = i0 + 1;
10521 if (highlightAll) {
10522 i0 = 0;
10523 i1 = matches.length;
10524 } else if (!isSelectedPage) {
10525 return;
10526 }
10527 for (var i = i0; i < i1; i++) {
10528 var match = matches[i];
10529 var begin = match.begin;
10530 var end = match.end;
10531 var isSelected = isSelectedPage && i === selectedMatchIdx;
10532 var highlightSuffix = isSelected ? ' selected' : '';
10533 if (this.findController) {
10534 if (this.findController.selected.matchIdx === i && this.findController.selected.pageIdx === pageIdx) {
10535 var spot = {
10536 top: MATCH_SCROLL_OFFSET_TOP,
10537 left: MATCH_SCROLL_OFFSET_LEFT
10538 };
10539 (0, _ui_utils.scrollIntoView)(textDivs[begin.divIdx], spot, true);
10540 }
10541 }
10542 if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {
10543 if (prevEnd !== null) {
10544 appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);
10545 }
10546 beginText(begin);
10547 } else {
10548 appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset);
10549 }
10550 if (begin.divIdx === end.divIdx) {
10551 appendTextToDiv(begin.divIdx, begin.offset, end.offset, 'highlight' + highlightSuffix);
10552 } else {
10553 appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, 'highlight begin' + highlightSuffix);
10554 for (var n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) {
10555 textDivs[n0].className = 'highlight middle' + highlightSuffix;
10556 }
10557 beginText(end, 'highlight end' + highlightSuffix);
10558 }
10559 prevEnd = end;
10560 }
10561 if (prevEnd) {
10562 appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);
10563 }
10564 }
10565 }, {
10566 key: 'updateMatches',
10567 value: function updateMatches() {
10568 if (!this.renderingDone) {
10569 return;
10570 }
10571 var matches = this.matches;
10572 var textDivs = this.textDivs;
10573 var textContentItemsStr = this.textContentItemsStr;
10574 var clearedUntilDivIdx = -1;
10575 for (var i = 0, len = matches.length; i < len; i++) {
10576 var match = matches[i];
10577 var begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);
10578 for (var n = begin, end = match.end.divIdx; n <= end; n++) {
10579 var div = textDivs[n];
10580 div.textContent = textContentItemsStr[n];
10581 div.className = '';
10582 }
10583 clearedUntilDivIdx = match.end.divIdx + 1;
10584 }
10585 if (!this.findController || !this.findController.highlightMatches) {
10586 return;
10587 }
10588 var pageMatches = void 0,
10589 pageMatchesLength = void 0;
10590 if (this.findController !== null) {
10591 pageMatches = this.findController.pageMatches[this.pageIdx] || null;
10592 pageMatchesLength = this.findController.pageMatchesLength ? this.findController.pageMatchesLength[this.pageIdx] || null : null;
10593 }
10594 this.matches = this.convertMatches(pageMatches, pageMatchesLength);
10595 this.renderMatches(this.matches);
10596 }
10597 }, {
10598 key: '_bindEvents',
10599 value: function _bindEvents() {
10600 var _this2 = this;
10601
10602 var eventBus = this.eventBus,
10603 _boundEvents = this._boundEvents;
10604
10605 _boundEvents.pageCancelled = function (evt) {
10606 if (evt.pageNumber !== _this2.pageNumber) {
10607 return;
10608 }
10609 if (_this2.textLayerRenderTask) {
10610 console.error('TextLayerBuilder._bindEvents: `this.cancel()` should ' + 'have been called when the page was reset, or rendering cancelled.');
10611 return;
10612 }
10613 for (var name in _boundEvents) {
10614 eventBus.off(name.toLowerCase(), _boundEvents[name]);
10615 delete _boundEvents[name];
10616 }
10617 };
10618 _boundEvents.updateTextLayerMatches = function (evt) {
10619 if (evt.pageIndex !== _this2.pageIdx && evt.pageIndex !== -1) {
10620 return;
10621 }
10622 _this2.updateMatches();
10623 };
10624 eventBus.on('pagecancelled', _boundEvents.pageCancelled);
10625 eventBus.on('updatetextlayermatches', _boundEvents.updateTextLayerMatches);
10626 }
10627 }, {
10628 key: '_bindMouse',
10629 value: function _bindMouse() {
10630 var _this3 = this;
10631
10632 var div = this.textLayerDiv;
10633 var expandDivsTimer = null;
10634 div.addEventListener('mousedown', function (evt) {
10635 if (_this3.enhanceTextSelection && _this3.textLayerRenderTask) {
10636 _this3.textLayerRenderTask.expandTextDivs(true);
10637 if (expandDivsTimer) {
10638 clearTimeout(expandDivsTimer);
10639 expandDivsTimer = null;
10640 }
10641 return;
10642 }
10643 var end = div.querySelector('.endOfContent');
10644 if (!end) {
10645 return;
10646 }
10647 var adjustTop = evt.target !== div;
10648 adjustTop = adjustTop && window.getComputedStyle(end).getPropertyValue('-moz-user-select') !== 'none';
10649 if (adjustTop) {
10650 var divBounds = div.getBoundingClientRect();
10651 var r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height);
10652 end.style.top = (r * 100).toFixed(2) + '%';
10653 }
10654 end.classList.add('active');
10655 });
10656 div.addEventListener('mouseup', function () {
10657 if (_this3.enhanceTextSelection && _this3.textLayerRenderTask) {
10658 expandDivsTimer = setTimeout(function () {
10659 if (_this3.textLayerRenderTask) {
10660 _this3.textLayerRenderTask.expandTextDivs(false);
10661 }
10662 expandDivsTimer = null;
10663 }, EXPAND_DIVS_TIMEOUT);
10664 return;
10665 }
10666 var end = div.querySelector('.endOfContent');
10667 if (!end) {
10668 return;
10669 }
10670 end.style.top = '';
10671 end.classList.remove('active');
10672 });
10673 }
10674 }]);
10675
10676 return TextLayerBuilder;
10677 }();
10678
10679 var DefaultTextLayerFactory = function () {
10680 function DefaultTextLayerFactory() {
10681 _classCallCheck(this, DefaultTextLayerFactory);
10682 }
10683
10684 _createClass(DefaultTextLayerFactory, [{
10685 key: 'createTextLayerBuilder',
10686 value: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport) {
10687 var enhanceTextSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
10688
10689 return new TextLayerBuilder({
10690 textLayerDiv: textLayerDiv,
10691 pageIndex: pageIndex,
10692 viewport: viewport,
10693 enhanceTextSelection: enhanceTextSelection
10694 });
10695 }
10696 }]);
10697
10698 return DefaultTextLayerFactory;
10699 }();
10700
10701 exports.TextLayerBuilder = TextLayerBuilder;
10702 exports.DefaultTextLayerFactory = DefaultTextLayerFactory;
10703
10704 /***/ }),
10705 /* 34 */
10706 /***/ (function(module, exports, __webpack_require__) {
10707
10708 "use strict";
10709
10710
10711 Object.defineProperty(exports, "__esModule", {
10712 value: true
10713 });
10714 exports.SecondaryToolbar = undefined;
10715
10716 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
10717
10718 var _base_viewer = __webpack_require__(30);
10719
10720 var _pdf_cursor_tools = __webpack_require__(8);
10721
10722 var _pdf_single_page_viewer = __webpack_require__(35);
10723
10724 var _ui_utils = __webpack_require__(6);
10725
10726 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
10727
10728 var SecondaryToolbar = function () {
10729 function SecondaryToolbar(options, mainContainer, eventBus) {
10730 var _this = this;
10731
10732 _classCallCheck(this, SecondaryToolbar);
10733
10734 this.toolbar = options.toolbar;
10735 this.toggleButton = options.toggleButton;
10736 this.toolbarButtonContainer = options.toolbarButtonContainer;
10737 this.buttons = [{
10738 element: options.presentationModeButton,
10739 eventName: 'presentationmode',
10740 close: true
10741 }, {
10742 element: options.openFileButton,
10743 eventName: 'openfile',
10744 close: true
10745 }, {
10746 element: options.printButton,
10747 eventName: 'print',
10748 close: true
10749 }, {
10750 element: options.downloadButton,
10751 eventName: 'download',
10752 close: true
10753 }, {
10754 element: options.viewBookmarkButton,
10755 eventName: null,
10756 close: true
10757 }, {
10758 element: options.firstPageButton,
10759 eventName: 'firstpage',
10760 close: true
10761 }, {
10762 element: options.lastPageButton,
10763 eventName: 'lastpage',
10764 close: true
10765 }, {
10766 element: options.pageRotateCwButton,
10767 eventName: 'rotatecw',
10768 close: false
10769 }, {
10770 element: options.pageRotateCcwButton,
10771 eventName: 'rotateccw',
10772 close: false
10773 }, {
10774 element: options.cursorSelectToolButton,
10775 eventName: 'switchcursortool',
10776 eventDetails: { tool: _pdf_cursor_tools.CursorTool.SELECT },
10777 close: true
10778 }, {
10779 element: options.cursorHandToolButton,
10780 eventName: 'switchcursortool',
10781 eventDetails: { tool: _pdf_cursor_tools.CursorTool.HAND },
10782 close: true
10783 }, {
10784 element: options.scrollVerticalButton,
10785 eventName: 'switchscrollmode',
10786 eventDetails: { mode: _base_viewer.ScrollMode.VERTICAL },
10787 close: true
10788 }, {
10789 element: options.scrollHorizontalButton,
10790 eventName: 'switchscrollmode',
10791 eventDetails: { mode: _base_viewer.ScrollMode.HORIZONTAL },
10792 close: true
10793 }, {
10794 element: options.scrollWrappedButton,
10795 eventName: 'switchscrollmode',
10796 eventDetails: { mode: _base_viewer.ScrollMode.WRAPPED },
10797 close: true
10798 }, {
10799 element: options.spreadNoneButton,
10800 eventName: 'switchspreadmode',
10801 eventDetails: { mode: _base_viewer.SpreadMode.NONE },
10802 close: true
10803 }, {
10804 element: options.spreadOddButton,
10805 eventName: 'switchspreadmode',
10806 eventDetails: { mode: _base_viewer.SpreadMode.ODD },
10807 close: true
10808 }, {
10809 element: options.spreadEvenButton,
10810 eventName: 'switchspreadmode',
10811 eventDetails: { mode: _base_viewer.SpreadMode.EVEN },
10812 close: true
10813 }, {
10814 element: options.documentPropertiesButton,
10815 eventName: 'documentproperties',
10816 close: true
10817 }];
10818 this.items = {
10819 firstPage: options.firstPageButton,
10820 lastPage: options.lastPageButton,
10821 pageRotateCw: options.pageRotateCwButton,
10822 pageRotateCcw: options.pageRotateCcwButton
10823 };
10824 this.mainContainer = mainContainer;
10825 this.eventBus = eventBus;
10826 this.opened = false;
10827 this.containerHeight = null;
10828 this.previousContainerHeight = null;
10829 this.reset();
10830 this._bindClickListeners();
10831 this._bindCursorToolsListener(options);
10832 this._bindScrollModeListener(options);
10833 this._bindSpreadModeListener(options);
10834 this.eventBus.on('resize', this._setMaxHeight.bind(this));
10835 this.eventBus.on('baseviewerinit', function (evt) {
10836 if (evt.source instanceof _pdf_single_page_viewer.PDFSinglePageViewer) {
10837 _this.toolbarButtonContainer.classList.add('hiddenScrollModeButtons', 'hiddenSpreadModeButtons');
10838 } else {
10839 _this.toolbarButtonContainer.classList.remove('hiddenScrollModeButtons', 'hiddenSpreadModeButtons');
10840 }
10841 });
10842 }
10843
10844 _createClass(SecondaryToolbar, [{
10845 key: 'setPageNumber',
10846 value: function setPageNumber(pageNumber) {
10847 this.pageNumber = pageNumber;
10848 this._updateUIState();
10849 }
10850 }, {
10851 key: 'setPagesCount',
10852 value: function setPagesCount(pagesCount) {
10853 this.pagesCount = pagesCount;
10854 this._updateUIState();
10855 }
10856 }, {
10857 key: 'reset',
10858 value: function reset() {
10859 this.pageNumber = 0;
10860 this.pagesCount = 0;
10861 this._updateUIState();
10862 this.eventBus.dispatch('secondarytoolbarreset', { source: this });
10863 }
10864 }, {
10865 key: '_updateUIState',
10866 value: function _updateUIState() {
10867 this.items.firstPage.disabled = this.pageNumber <= 1;
10868 this.items.lastPage.disabled = this.pageNumber >= this.pagesCount;
10869 this.items.pageRotateCw.disabled = this.pagesCount === 0;
10870 this.items.pageRotateCcw.disabled = this.pagesCount === 0;
10871 }
10872 }, {
10873 key: '_bindClickListeners',
10874 value: function _bindClickListeners() {
10875 var _this2 = this;
10876
10877 this.toggleButton.addEventListener('click', this.toggle.bind(this));
10878
10879 var _loop = function _loop(button) {
10880 var _buttons$button = _this2.buttons[button],
10881 element = _buttons$button.element,
10882 eventName = _buttons$button.eventName,
10883 close = _buttons$button.close,
10884 eventDetails = _buttons$button.eventDetails;
10885
10886 element.addEventListener('click', function (evt) {
10887 if (eventName !== null) {
10888 var details = { source: _this2 };
10889 for (var property in eventDetails) {
10890 details[property] = eventDetails[property];
10891 }
10892 _this2.eventBus.dispatch(eventName, details);
10893 }
10894 if (close) {
10895 _this2.close();
10896 }
10897 });
10898 };
10899
10900 for (var button in this.buttons) {
10901 _loop(button);
10902 }
10903 }
10904 }, {
10905 key: '_bindCursorToolsListener',
10906 value: function _bindCursorToolsListener(buttons) {
10907 this.eventBus.on('cursortoolchanged', function (evt) {
10908 buttons.cursorSelectToolButton.classList.remove('toggled');
10909 buttons.cursorHandToolButton.classList.remove('toggled');
10910 switch (evt.tool) {
10911 case _pdf_cursor_tools.CursorTool.SELECT:
10912 buttons.cursorSelectToolButton.classList.add('toggled');
10913 break;
10914 case _pdf_cursor_tools.CursorTool.HAND:
10915 buttons.cursorHandToolButton.classList.add('toggled');
10916 break;
10917 }
10918 });
10919 }
10920 }, {
10921 key: '_bindScrollModeListener',
10922 value: function _bindScrollModeListener(buttons) {
10923 var _this3 = this;
10924
10925 function scrollModeChanged(evt) {
10926 buttons.scrollVerticalButton.classList.remove('toggled');
10927 buttons.scrollHorizontalButton.classList.remove('toggled');
10928 buttons.scrollWrappedButton.classList.remove('toggled');
10929 switch (evt.mode) {
10930 case _base_viewer.ScrollMode.VERTICAL:
10931 buttons.scrollVerticalButton.classList.add('toggled');
10932 break;
10933 case _base_viewer.ScrollMode.HORIZONTAL:
10934 buttons.scrollHorizontalButton.classList.add('toggled');
10935 break;
10936 case _base_viewer.ScrollMode.WRAPPED:
10937 buttons.scrollWrappedButton.classList.add('toggled');
10938 break;
10939 }
10940 var isScrollModeHorizontal = evt.mode === _base_viewer.ScrollMode.HORIZONTAL;
10941 buttons.spreadNoneButton.disabled = isScrollModeHorizontal;
10942 buttons.spreadOddButton.disabled = isScrollModeHorizontal;
10943 buttons.spreadEvenButton.disabled = isScrollModeHorizontal;
10944 }
10945 this.eventBus.on('scrollmodechanged', scrollModeChanged);
10946 this.eventBus.on('secondarytoolbarreset', function (evt) {
10947 if (evt.source === _this3) {
10948 scrollModeChanged({ mode: _base_viewer.ScrollMode.VERTICAL });
10949 }
10950 });
10951 }
10952 }, {
10953 key: '_bindSpreadModeListener',
10954 value: function _bindSpreadModeListener(buttons) {
10955 var _this4 = this;
10956
10957 function spreadModeChanged(evt) {
10958 buttons.spreadNoneButton.classList.remove('toggled');
10959 buttons.spreadOddButton.classList.remove('toggled');
10960 buttons.spreadEvenButton.classList.remove('toggled');
10961 switch (evt.mode) {
10962 case _base_viewer.SpreadMode.NONE:
10963 buttons.spreadNoneButton.classList.add('toggled');
10964 break;
10965 case _base_viewer.SpreadMode.ODD:
10966 buttons.spreadOddButton.classList.add('toggled');
10967 break;
10968 case _base_viewer.SpreadMode.EVEN:
10969 buttons.spreadEvenButton.classList.add('toggled');
10970 break;
10971 }
10972 }
10973 this.eventBus.on('spreadmodechanged', spreadModeChanged);
10974 this.eventBus.on('secondarytoolbarreset', function (evt) {
10975 if (evt.source === _this4) {
10976 spreadModeChanged({ mode: _base_viewer.SpreadMode.NONE });
10977 }
10978 });
10979 }
10980 }, {
10981 key: 'open',
10982 value: function open() {
10983 if (this.opened) {
10984 return;
10985 }
10986 this.opened = true;
10987 this._setMaxHeight();
10988 this.toggleButton.classList.add('toggled');
10989 this.toolbar.classList.remove('hidden');
10990 }
10991 }, {
10992 key: 'close',
10993 value: function close() {
10994 if (!this.opened) {
10995 return;
10996 }
10997 this.opened = false;
10998 this.toolbar.classList.add('hidden');
10999 this.toggleButton.classList.remove('toggled');
11000 }
11001 }, {
11002 key: 'toggle',
11003 value: function toggle() {
11004 if (this.opened) {
11005 this.close();
11006 } else {
11007 this.open();
11008 }
11009 }
11010 }, {
11011 key: '_setMaxHeight',
11012 value: function _setMaxHeight() {
11013 if (!this.opened) {
11014 return;
11015 }
11016 this.containerHeight = this.mainContainer.clientHeight;
11017 if (this.containerHeight === this.previousContainerHeight) {
11018 return;
11019 }
11020 this.toolbarButtonContainer.setAttribute('style', 'max-height: ' + (this.containerHeight - _ui_utils.SCROLLBAR_PADDING) + 'px;');
11021 this.previousContainerHeight = this.containerHeight;
11022 }
11023 }, {
11024 key: 'isOpen',
11025 get: function get() {
11026 return this.opened;
11027 }
11028 }]);
11029
11030 return SecondaryToolbar;
11031 }();
11032
11033 exports.SecondaryToolbar = SecondaryToolbar;
11034
11035 /***/ }),
11036 /* 35 */
11037 /***/ (function(module, exports, __webpack_require__) {
11038
11039 "use strict";
11040
11041
11042 Object.defineProperty(exports, "__esModule", {
11043 value: true
11044 });
11045 exports.PDFSinglePageViewer = undefined;
11046
11047 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
11048
11049 var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
11050
11051 var _base_viewer = __webpack_require__(30);
11052
11053 var _ui_utils = __webpack_require__(6);
11054
11055 var _pdfjsLib = __webpack_require__(7);
11056
11057 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11058
11059 function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
11060
11061 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
11062
11063 var PDFSinglePageViewer = function (_BaseViewer) {
11064 _inherits(PDFSinglePageViewer, _BaseViewer);
11065
11066 function PDFSinglePageViewer(options) {
11067 _classCallCheck(this, PDFSinglePageViewer);
11068
11069 var _this = _possibleConstructorReturn(this, (PDFSinglePageViewer.__proto__ || Object.getPrototypeOf(PDFSinglePageViewer)).call(this, options));
11070
11071 _this.eventBus.on('pagesinit', function (evt) {
11072 _this._ensurePageViewVisible();
11073 });
11074 return _this;
11075 }
11076
11077 _createClass(PDFSinglePageViewer, [{
11078 key: '_resetView',
11079 value: function _resetView() {
11080 _get(PDFSinglePageViewer.prototype.__proto__ || Object.getPrototypeOf(PDFSinglePageViewer.prototype), '_resetView', this).call(this);
11081 this._previousPageNumber = 1;
11082 this._shadowViewer = document.createDocumentFragment();
11083 }
11084 }, {
11085 key: '_ensurePageViewVisible',
11086 value: function _ensurePageViewVisible() {
11087 var pageView = this._pages[this._currentPageNumber - 1];
11088 var previousPageView = this._pages[this._previousPageNumber - 1];
11089 var viewerNodes = this.viewer.childNodes;
11090 switch (viewerNodes.length) {
11091 case 0:
11092 this.viewer.appendChild(pageView.div);
11093 break;
11094 case 1:
11095 if (viewerNodes[0] !== previousPageView.div) {
11096 throw new Error('_ensurePageViewVisible: Unexpected previously visible page.');
11097 }
11098 if (pageView === previousPageView) {
11099 break;
11100 }
11101 this._shadowViewer.appendChild(previousPageView.div);
11102 this.viewer.appendChild(pageView.div);
11103 this.container.scrollTop = 0;
11104 break;
11105 default:
11106 throw new Error('_ensurePageViewVisible: Only one page should be visible at a time.');
11107 }
11108 this._previousPageNumber = this._currentPageNumber;
11109 }
11110 }, {
11111 key: '_scrollUpdate',
11112 value: function _scrollUpdate() {
11113 if (this._updateScrollDown) {
11114 this._updateScrollDown();
11115 }
11116 _get(PDFSinglePageViewer.prototype.__proto__ || Object.getPrototypeOf(PDFSinglePageViewer.prototype), '_scrollUpdate', this).call(this);
11117 }
11118 }, {
11119 key: '_scrollIntoView',
11120 value: function _scrollIntoView(_ref) {
11121 var _this2 = this;
11122
11123 var pageDiv = _ref.pageDiv,
11124 _ref$pageSpot = _ref.pageSpot,
11125 pageSpot = _ref$pageSpot === undefined ? null : _ref$pageSpot,
11126 _ref$pageNumber = _ref.pageNumber,
11127 pageNumber = _ref$pageNumber === undefined ? null : _ref$pageNumber;
11128
11129 if (pageNumber) {
11130 this._setCurrentPageNumber(pageNumber);
11131 }
11132 var scrolledDown = this._currentPageNumber >= this._previousPageNumber;
11133 var previousLocation = this._location;
11134 this._ensurePageViewVisible();
11135 (0, _ui_utils.scrollIntoView)(pageDiv, pageSpot);
11136 this._updateScrollDown = function () {
11137 _this2.scroll.down = scrolledDown;
11138 delete _this2._updateScrollDown;
11139 };
11140 setTimeout(function () {
11141 if (_this2._location === previousLocation) {
11142 if (_this2._updateScrollDown) {
11143 _this2._updateScrollDown();
11144 }
11145 _this2.update();
11146 }
11147 }, 0);
11148 }
11149 }, {
11150 key: '_getVisiblePages',
11151 value: function _getVisiblePages() {
11152 if (!this.pagesCount) {
11153 return { views: [] };
11154 }
11155 var pageView = this._pages[this._currentPageNumber - 1];
11156 var element = pageView.div;
11157 var view = {
11158 id: pageView.id,
11159 x: element.offsetLeft + element.clientLeft,
11160 y: element.offsetTop + element.clientTop,
11161 view: pageView
11162 };
11163 return {
11164 first: view,
11165 last: view,
11166 views: [view]
11167 };
11168 }
11169 }, {
11170 key: 'update',
11171 value: function update() {
11172 var visible = this._getVisiblePages();
11173 var visiblePages = visible.views,
11174 numVisiblePages = visiblePages.length;
11175 if (numVisiblePages === 0) {
11176 return;
11177 }
11178 this._resizeBuffer(numVisiblePages);
11179 this.renderingQueue.renderHighestPriority(visible);
11180 this._updateLocation(visible.first);
11181 this.eventBus.dispatch('updateviewarea', {
11182 source: this,
11183 location: this._location
11184 });
11185 }
11186 }, {
11187 key: '_updateScrollMode',
11188 value: function _updateScrollMode() {}
11189 }, {
11190 key: '_updateSpreadMode',
11191 value: function _updateSpreadMode() {}
11192 }, {
11193 key: '_setDocumentViewerElement',
11194 get: function get() {
11195 return (0, _pdfjsLib.shadow)(this, '_setDocumentViewerElement', this._shadowViewer);
11196 }
11197 }, {
11198 key: '_isScrollModeHorizontal',
11199 get: function get() {
11200 return (0, _pdfjsLib.shadow)(this, '_isScrollModeHorizontal', false);
11201 }
11202 }]);
11203
11204 return PDFSinglePageViewer;
11205 }(_base_viewer.BaseViewer);
11206
11207 exports.PDFSinglePageViewer = PDFSinglePageViewer;
11208
11209 /***/ }),
11210 /* 36 */
11211 /***/ (function(module, exports, __webpack_require__) {
11212
11213 "use strict";
11214
11215
11216 Object.defineProperty(exports, "__esModule", {
11217 value: true
11218 });
11219 exports.Toolbar = undefined;
11220
11221 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
11222
11223 var _ui_utils = __webpack_require__(6);
11224
11225 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11226
11227 var PAGE_NUMBER_LOADING_INDICATOR = 'visiblePageIsLoading';
11228 var SCALE_SELECT_CONTAINER_PADDING = 8;
11229 var SCALE_SELECT_PADDING = 22;
11230
11231 var Toolbar = function () {
11232 function Toolbar(options, eventBus) {
11233 var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n;
11234
11235 _classCallCheck(this, Toolbar);
11236
11237 this.toolbar = options.container;
11238 this.eventBus = eventBus;
11239 this.l10n = l10n;
11240 this.items = options;
11241 this._wasLocalized = false;
11242 this.reset();
11243 this._bindListeners();
11244 }
11245
11246 _createClass(Toolbar, [{
11247 key: 'setPageNumber',
11248 value: function setPageNumber(pageNumber, pageLabel) {
11249 this.pageNumber = pageNumber;
11250 this.pageLabel = pageLabel;
11251 this._updateUIState(false);
11252 }
11253 }, {
11254 key: 'setPagesCount',
11255 value: function setPagesCount(pagesCount, hasPageLabels) {
11256 this.pagesCount = pagesCount;
11257 this.hasPageLabels = hasPageLabels;
11258 this._updateUIState(true);
11259 }
11260 }, {
11261 key: 'setPageScale',
11262 value: function setPageScale(pageScaleValue, pageScale) {
11263 this.pageScaleValue = (pageScaleValue || pageScale).toString();
11264 this.pageScale = pageScale;
11265 this._updateUIState(false);
11266 }
11267 }, {
11268 key: 'reset',
11269 value: function reset() {
11270 this.pageNumber = 0;
11271 this.pageLabel = null;
11272 this.hasPageLabels = false;
11273 this.pagesCount = 0;
11274 this.pageScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
11275 this.pageScale = _ui_utils.DEFAULT_SCALE;
11276 this._updateUIState(true);
11277 }
11278 }, {
11279 key: '_bindListeners',
11280 value: function _bindListeners() {
11281 var _this = this;
11282
11283 var eventBus = this.eventBus,
11284 items = this.items;
11285
11286 var self = this;
11287 items.previous.addEventListener('click', function () {
11288 eventBus.dispatch('previouspage', { source: self });
11289 });
11290 items.next.addEventListener('click', function () {
11291 eventBus.dispatch('nextpage', { source: self });
11292 });
11293 items.zoomIn.addEventListener('click', function () {
11294 eventBus.dispatch('zoomin', { source: self });
11295 });
11296 items.zoomOut.addEventListener('click', function () {
11297 eventBus.dispatch('zoomout', { source: self });
11298 });
11299 items.pageNumber.addEventListener('click', function () {
11300 this.select();
11301 });
11302 items.pageNumber.addEventListener('change', function () {
11303 eventBus.dispatch('pagenumberchanged', {
11304 source: self,
11305 value: this.value
11306 });
11307 });
11308 items.scaleSelect.addEventListener('change', function () {
11309 if (this.value === 'custom') {
11310 return;
11311 }
11312 eventBus.dispatch('scalechanged', {
11313 source: self,
11314 value: this.value
11315 });
11316 });
11317 items.presentationModeButton.addEventListener('click', function () {
11318 eventBus.dispatch('presentationmode', { source: self });
11319 });
11320 items.openFile.addEventListener('click', function () {
11321 eventBus.dispatch('openfile', { source: self });
11322 });
11323 items.print.addEventListener('click', function () {
11324 eventBus.dispatch('print', { source: self });
11325 });
11326 items.download.addEventListener('click', function () {
11327 eventBus.dispatch('download', { source: self });
11328 });
11329 items.scaleSelect.oncontextmenu = _ui_utils.noContextMenuHandler;
11330 eventBus.on('localized', function () {
11331 _this._localized();
11332 });
11333 }
11334 }, {
11335 key: '_localized',
11336 value: function _localized() {
11337 this._wasLocalized = true;
11338 this._adjustScaleWidth();
11339 this._updateUIState(true);
11340 }
11341 }, {
11342 key: '_updateUIState',
11343 value: function _updateUIState() {
11344 var resetNumPages = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
11345
11346 if (!this._wasLocalized) {
11347 return;
11348 }
11349 var pageNumber = this.pageNumber,
11350 pagesCount = this.pagesCount,
11351 pageScaleValue = this.pageScaleValue,
11352 pageScale = this.pageScale,
11353 items = this.items;
11354
11355 if (resetNumPages) {
11356 if (this.hasPageLabels) {
11357 items.pageNumber.type = 'text';
11358 } else {
11359 items.pageNumber.type = 'number';
11360 this.l10n.get('of_pages', { pagesCount: pagesCount }, 'of {{pagesCount}}').then(function (msg) {
11361 items.numPages.textContent = msg;
11362 });
11363 }
11364 items.pageNumber.max = pagesCount;
11365 }
11366 if (this.hasPageLabels) {
11367 items.pageNumber.value = this.pageLabel;
11368 this.l10n.get('page_of_pages', {
11369 pageNumber: pageNumber,
11370 pagesCount: pagesCount
11371 }, '({{pageNumber}} of {{pagesCount}})').then(function (msg) {
11372 items.numPages.textContent = msg;
11373 });
11374 } else {
11375 items.pageNumber.value = pageNumber;
11376 }
11377 items.previous.disabled = pageNumber <= 1;
11378 items.next.disabled = pageNumber >= pagesCount;
11379 items.zoomOut.disabled = pageScale <= _ui_utils.MIN_SCALE;
11380 items.zoomIn.disabled = pageScale >= _ui_utils.MAX_SCALE;
11381 var customScale = Math.round(pageScale * 10000) / 100;
11382 this.l10n.get('page_scale_percent', { scale: customScale }, '{{scale}}%').then(function (msg) {
11383 var options = items.scaleSelect.options;
11384 var predefinedValueFound = false;
11385 for (var i = 0, ii = options.length; i < ii; i++) {
11386 var option = options[i];
11387 if (option.value !== pageScaleValue) {
11388 option.selected = false;
11389 continue;
11390 }
11391 option.selected = true;
11392 predefinedValueFound = true;
11393 }
11394 if (!predefinedValueFound) {
11395 items.customScaleOption.textContent = msg;
11396 items.customScaleOption.selected = true;
11397 }
11398 });
11399 }
11400 }, {
11401 key: 'updateLoadingIndicatorState',
11402 value: function updateLoadingIndicatorState() {
11403 var loading = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
11404
11405 var pageNumberInput = this.items.pageNumber;
11406 pageNumberInput.classList.toggle(PAGE_NUMBER_LOADING_INDICATOR, loading);
11407 }
11408 }, {
11409 key: '_adjustScaleWidth',
11410 value: function _adjustScaleWidth() {
11411 var container = this.items.scaleSelectContainer;
11412 var select = this.items.scaleSelect;
11413 _ui_utils.animationStarted.then(function () {
11414 if (container.clientWidth === 0) {
11415 container.setAttribute('style', 'display: inherit;');
11416 }
11417 if (container.clientWidth > 0) {
11418 select.setAttribute('style', 'min-width: inherit;');
11419 var width = select.clientWidth + SCALE_SELECT_CONTAINER_PADDING;
11420 select.setAttribute('style', 'min-width: ' + (width + SCALE_SELECT_PADDING) + 'px;');
11421 container.setAttribute('style', 'min-width: ' + width + 'px; ' + 'max-width: ' + width + 'px;');
11422 }
11423 });
11424 }
11425 }]);
11426
11427 return Toolbar;
11428 }();
11429
11430 exports.Toolbar = Toolbar;
11431
11432 /***/ }),
11433 /* 37 */
11434 /***/ (function(module, exports, __webpack_require__) {
11435
11436 "use strict";
11437
11438
11439 Object.defineProperty(exports, "__esModule", {
11440 value: true
11441 });
11442 exports.ViewHistory = undefined;
11443
11444 var _regenerator = __webpack_require__(2);
11445
11446 var _regenerator2 = _interopRequireDefault(_regenerator);
11447
11448 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
11449
11450 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11451
11452 function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
11453
11454 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11455
11456 var DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20;
11457
11458 var ViewHistory = function () {
11459 function ViewHistory(fingerprint) {
11460 var _this = this;
11461
11462 var cacheSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_VIEW_HISTORY_CACHE_SIZE;
11463
11464 _classCallCheck(this, ViewHistory);
11465
11466 this.fingerprint = fingerprint;
11467 this.cacheSize = cacheSize;
11468 this._initializedPromise = this._readFromStorage().then(function (databaseStr) {
11469 var database = JSON.parse(databaseStr || '{}');
11470 if (!('files' in database)) {
11471 database.files = [];
11472 } else {
11473 while (database.files.length >= _this.cacheSize) {
11474 database.files.shift();
11475 }
11476 }
11477 var index = -1;
11478 for (var i = 0, length = database.files.length; i < length; i++) {
11479 var branch = database.files[i];
11480 if (branch.fingerprint === _this.fingerprint) {
11481 index = i;
11482 break;
11483 }
11484 }
11485 if (index === -1) {
11486 index = database.files.push({ fingerprint: _this.fingerprint }) - 1;
11487 }
11488 _this.file = database.files[index];
11489 _this.database = database;
11490 });
11491 }
11492
11493 _createClass(ViewHistory, [{
11494 key: '_writeToStorage',
11495 value: function () {
11496 var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee() {
11497 var databaseStr;
11498 return _regenerator2.default.wrap(function _callee$(_context) {
11499 while (1) {
11500 switch (_context.prev = _context.next) {
11501 case 0:
11502 databaseStr = JSON.stringify(this.database);
11503
11504 localStorage.setItem('pdfjs.history', databaseStr);
11505
11506 case 2:
11507 case 'end':
11508 return _context.stop();
11509 }
11510 }
11511 }, _callee, this);
11512 }));
11513
11514 function _writeToStorage() {
11515 return _ref.apply(this, arguments);
11516 }
11517
11518 return _writeToStorage;
11519 }()
11520 }, {
11521 key: '_readFromStorage',
11522 value: function () {
11523 var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {
11524 return _regenerator2.default.wrap(function _callee2$(_context2) {
11525 while (1) {
11526 switch (_context2.prev = _context2.next) {
11527 case 0:
11528 return _context2.abrupt('return', localStorage.getItem('pdfjs.history'));
11529
11530 case 1:
11531 case 'end':
11532 return _context2.stop();
11533 }
11534 }
11535 }, _callee2, this);
11536 }));
11537
11538 function _readFromStorage() {
11539 return _ref2.apply(this, arguments);
11540 }
11541
11542 return _readFromStorage;
11543 }()
11544 }, {
11545 key: 'set',
11546 value: function () {
11547 var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3(name, val) {
11548 return _regenerator2.default.wrap(function _callee3$(_context3) {
11549 while (1) {
11550 switch (_context3.prev = _context3.next) {
11551 case 0:
11552 _context3.next = 2;
11553 return this._initializedPromise;
11554
11555 case 2:
11556 this.file[name] = val;
11557 return _context3.abrupt('return', this._writeToStorage());
11558
11559 case 4:
11560 case 'end':
11561 return _context3.stop();
11562 }
11563 }
11564 }, _callee3, this);
11565 }));
11566
11567 function set(_x2, _x3) {
11568 return _ref3.apply(this, arguments);
11569 }
11570
11571 return set;
11572 }()
11573 }, {
11574 key: 'setMultiple',
11575 value: function () {
11576 var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee4(properties) {
11577 var name;
11578 return _regenerator2.default.wrap(function _callee4$(_context4) {
11579 while (1) {
11580 switch (_context4.prev = _context4.next) {
11581 case 0:
11582 _context4.next = 2;
11583 return this._initializedPromise;
11584
11585 case 2:
11586 for (name in properties) {
11587 this.file[name] = properties[name];
11588 }
11589 return _context4.abrupt('return', this._writeToStorage());
11590
11591 case 4:
11592 case 'end':
11593 return _context4.stop();
11594 }
11595 }
11596 }, _callee4, this);
11597 }));
11598
11599 function setMultiple(_x4) {
11600 return _ref4.apply(this, arguments);
11601 }
11602
11603 return setMultiple;
11604 }()
11605 }, {
11606 key: 'get',
11607 value: function () {
11608 var _ref5 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee5(name, defaultValue) {
11609 var val;
11610 return _regenerator2.default.wrap(function _callee5$(_context5) {
11611 while (1) {
11612 switch (_context5.prev = _context5.next) {
11613 case 0:
11614 _context5.next = 2;
11615 return this._initializedPromise;
11616
11617 case 2:
11618 val = this.file[name];
11619 return _context5.abrupt('return', val !== undefined ? val : defaultValue);
11620
11621 case 4:
11622 case 'end':
11623 return _context5.stop();
11624 }
11625 }
11626 }, _callee5, this);
11627 }));
11628
11629 function get(_x5, _x6) {
11630 return _ref5.apply(this, arguments);
11631 }
11632
11633 return get;
11634 }()
11635 }, {
11636 key: 'getMultiple',
11637 value: function () {
11638 var _ref6 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee6(properties) {
11639 var values, name, val;
11640 return _regenerator2.default.wrap(function _callee6$(_context6) {
11641 while (1) {
11642 switch (_context6.prev = _context6.next) {
11643 case 0:
11644 _context6.next = 2;
11645 return this._initializedPromise;
11646
11647 case 2:
11648 values = Object.create(null);
11649
11650 for (name in properties) {
11651 val = this.file[name];
11652
11653 values[name] = val !== undefined ? val : properties[name];
11654 }
11655 return _context6.abrupt('return', values);
11656
11657 case 5:
11658 case 'end':
11659 return _context6.stop();
11660 }
11661 }
11662 }, _callee6, this);
11663 }));
11664
11665 function getMultiple(_x7) {
11666 return _ref6.apply(this, arguments);
11667 }
11668
11669 return getMultiple;
11670 }()
11671 }]);
11672
11673 return ViewHistory;
11674 }();
11675
11676 exports.ViewHistory = ViewHistory;
11677
11678 /***/ }),
11679 /* 38 */
11680 /***/ (function(module, exports, __webpack_require__) {
11681
11682 "use strict";
11683
11684
11685 Object.defineProperty(exports, "__esModule", {
11686 value: true
11687 });
11688 exports.GenericCom = undefined;
11689
11690 var _regenerator = __webpack_require__(2);
11691
11692 var _regenerator2 = _interopRequireDefault(_regenerator);
11693
11694 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
11695
11696 var _app = __webpack_require__(1);
11697
11698 var _preferences = __webpack_require__(39);
11699
11700 var _download_manager = __webpack_require__(40);
11701
11702 var _genericl10n = __webpack_require__(41);
11703
11704 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11705
11706 function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
11707
11708 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11709
11710 function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
11711
11712 function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
11713
11714 ;
11715 var GenericCom = {};
11716
11717 var GenericPreferences = function (_BasePreferences) {
11718 _inherits(GenericPreferences, _BasePreferences);
11719
11720 function GenericPreferences() {
11721 _classCallCheck(this, GenericPreferences);
11722
11723 return _possibleConstructorReturn(this, (GenericPreferences.__proto__ || Object.getPrototypeOf(GenericPreferences)).apply(this, arguments));
11724 }
11725
11726 _createClass(GenericPreferences, [{
11727 key: '_writeToStorage',
11728 value: function () {
11729 var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(prefObj) {
11730 return _regenerator2.default.wrap(function _callee$(_context) {
11731 while (1) {
11732 switch (_context.prev = _context.next) {
11733 case 0:
11734 localStorage.setItem('pdfjs.preferences', JSON.stringify(prefObj));
11735
11736 case 1:
11737 case 'end':
11738 return _context.stop();
11739 }
11740 }
11741 }, _callee, this);
11742 }));
11743
11744 function _writeToStorage(_x) {
11745 return _ref.apply(this, arguments);
11746 }
11747
11748 return _writeToStorage;
11749 }()
11750 }, {
11751 key: '_readFromStorage',
11752 value: function () {
11753 var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2(prefObj) {
11754 return _regenerator2.default.wrap(function _callee2$(_context2) {
11755 while (1) {
11756 switch (_context2.prev = _context2.next) {
11757 case 0:
11758 return _context2.abrupt('return', JSON.parse(localStorage.getItem('pdfjs.preferences')));
11759
11760 case 1:
11761 case 'end':
11762 return _context2.stop();
11763 }
11764 }
11765 }, _callee2, this);
11766 }));
11767
11768 function _readFromStorage(_x2) {
11769 return _ref2.apply(this, arguments);
11770 }
11771
11772 return _readFromStorage;
11773 }()
11774 }]);
11775
11776 return GenericPreferences;
11777 }(_preferences.BasePreferences);
11778
11779 var GenericExternalServices = Object.create(_app.DefaultExternalServices);
11780 GenericExternalServices.createDownloadManager = function (options) {
11781 return new _download_manager.DownloadManager(options);
11782 };
11783 GenericExternalServices.createPreferences = function () {
11784 return new GenericPreferences();
11785 };
11786 GenericExternalServices.createL10n = function (_ref3) {
11787 var _ref3$locale = _ref3.locale,
11788 locale = _ref3$locale === undefined ? 'en-US' : _ref3$locale;
11789
11790 return new _genericl10n.GenericL10n(locale);
11791 };
11792 _app.PDFViewerApplication.externalServices = GenericExternalServices;
11793 exports.GenericCom = GenericCom;
11794
11795 /***/ }),
11796 /* 39 */
11797 /***/ (function(module, exports, __webpack_require__) {
11798
11799 "use strict";
11800
11801
11802 Object.defineProperty(exports, "__esModule", {
11803 value: true
11804 });
11805 exports.BasePreferences = undefined;
11806
11807 var _regenerator = __webpack_require__(2);
11808
11809 var _regenerator2 = _interopRequireDefault(_regenerator);
11810
11811 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
11812
11813 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
11814
11815 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11816
11817 function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
11818
11819 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11820
11821 var defaultPreferences = null;
11822 function getDefaultPreferences() {
11823 if (!defaultPreferences) {
11824 defaultPreferences = Promise.resolve({
11825 "showPreviousViewOnLoad": true,
11826 "defaultZoomValue": "",
11827 "sidebarViewOnLoad": 0,
11828 "cursorToolOnLoad": 0,
11829 "enableWebGL": false,
11830 "eventBusDispatchToDOM": false,
11831 "pdfBugEnabled": false,
11832 "disableRange": false,
11833 "disableStream": false,
11834 "disableAutoFetch": false,
11835 "disableFontFace": false,
11836 "textLayerMode": 1,
11837 "useOnlyCssZoom": false,
11838 "externalLinkTarget": 0,
11839 "renderer": "canvas",
11840 "renderInteractiveForms": false,
11841 "enablePrintAutoRotate": false,
11842 "disablePageMode": false,
11843 "disablePageLabels": false,
11844 "scrollModeOnLoad": 0,
11845 "spreadModeOnLoad": 0
11846 });
11847 }
11848 return defaultPreferences;
11849 }
11850
11851 var BasePreferences = function () {
11852 function BasePreferences() {
11853 var _this = this;
11854
11855 _classCallCheck(this, BasePreferences);
11856
11857 if (this.constructor === BasePreferences) {
11858 throw new Error('Cannot initialize BasePreferences.');
11859 }
11860 this.prefs = null;
11861 this._initializedPromise = getDefaultPreferences().then(function (defaults) {
11862 Object.defineProperty(_this, 'defaults', {
11863 value: Object.freeze(defaults),
11864 writable: false,
11865 enumerable: true,
11866 configurable: false
11867 });
11868 _this.prefs = Object.assign(Object.create(null), defaults);
11869 return _this._readFromStorage(defaults);
11870 }).then(function (prefs) {
11871 if (!prefs) {
11872 return;
11873 }
11874 for (var name in prefs) {
11875 var defaultValue = _this.defaults[name],
11876 prefValue = prefs[name];
11877 if (defaultValue === undefined || (typeof prefValue === "undefined" ? "undefined" : _typeof(prefValue)) !== (typeof defaultValue === "undefined" ? "undefined" : _typeof(defaultValue))) {
11878 continue;
11879 }
11880 _this.prefs[name] = prefValue;
11881 }
11882 });
11883 }
11884
11885 _createClass(BasePreferences, [{
11886 key: "_writeToStorage",
11887 value: function () {
11888 var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(prefObj) {
11889 return _regenerator2.default.wrap(function _callee$(_context) {
11890 while (1) {
11891 switch (_context.prev = _context.next) {
11892 case 0:
11893 throw new Error('Not implemented: _writeToStorage');
11894
11895 case 1:
11896 case "end":
11897 return _context.stop();
11898 }
11899 }
11900 }, _callee, this);
11901 }));
11902
11903 function _writeToStorage(_x) {
11904 return _ref.apply(this, arguments);
11905 }
11906
11907 return _writeToStorage;
11908 }()
11909 }, {
11910 key: "_readFromStorage",
11911 value: function () {
11912 var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2(prefObj) {
11913 return _regenerator2.default.wrap(function _callee2$(_context2) {
11914 while (1) {
11915 switch (_context2.prev = _context2.next) {
11916 case 0:
11917 throw new Error('Not implemented: _readFromStorage');
11918
11919 case 1:
11920 case "end":
11921 return _context2.stop();
11922 }
11923 }
11924 }, _callee2, this);
11925 }));
11926
11927 function _readFromStorage(_x2) {
11928 return _ref2.apply(this, arguments);
11929 }
11930
11931 return _readFromStorage;
11932 }()
11933 }, {
11934 key: "reset",
11935 value: function () {
11936 var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {
11937 return _regenerator2.default.wrap(function _callee3$(_context3) {
11938 while (1) {
11939 switch (_context3.prev = _context3.next) {
11940 case 0:
11941 _context3.next = 2;
11942 return this._initializedPromise;
11943
11944 case 2:
11945 this.prefs = Object.assign(Object.create(null), this.defaults);
11946 return _context3.abrupt("return", this._writeToStorage(this.defaults));
11947
11948 case 4:
11949 case "end":
11950 return _context3.stop();
11951 }
11952 }
11953 }, _callee3, this);
11954 }));
11955
11956 function reset() {
11957 return _ref3.apply(this, arguments);
11958 }
11959
11960 return reset;
11961 }()
11962 }, {
11963 key: "set",
11964 value: function () {
11965 var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee4(name, value) {
11966 var defaultValue, valueType, defaultType;
11967 return _regenerator2.default.wrap(function _callee4$(_context4) {
11968 while (1) {
11969 switch (_context4.prev = _context4.next) {
11970 case 0:
11971 _context4.next = 2;
11972 return this._initializedPromise;
11973
11974 case 2:
11975 defaultValue = this.defaults[name];
11976
11977 if (!(defaultValue === undefined)) {
11978 _context4.next = 7;
11979 break;
11980 }
11981
11982 throw new Error("Set preference: \"" + name + "\" is undefined.");
11983
11984 case 7:
11985 if (!(value === undefined)) {
11986 _context4.next = 9;
11987 break;
11988 }
11989
11990 throw new Error('Set preference: no value is specified.');
11991
11992 case 9:
11993 valueType = typeof value === "undefined" ? "undefined" : _typeof(value);
11994 defaultType = typeof defaultValue === "undefined" ? "undefined" : _typeof(defaultValue);
11995
11996 if (!(valueType !== defaultType)) {
11997 _context4.next = 19;
11998 break;
11999 }
12000
12001 if (!(valueType === 'number' && defaultType === 'string')) {
12002 _context4.next = 16;
12003 break;
12004 }
12005
12006 value = value.toString();
12007 _context4.next = 17;
12008 break;
12009
12010 case 16:
12011 throw new Error("Set preference: \"" + value + "\" is a " + valueType + ", " + ("expected a " + defaultType + "."));
12012
12013 case 17:
12014 _context4.next = 21;
12015 break;
12016
12017 case 19:
12018 if (!(valueType === 'number' && !Number.isInteger(value))) {
12019 _context4.next = 21;
12020 break;
12021 }
12022
12023 throw new Error("Set preference: \"" + value + "\" must be an integer.");
12024
12025 case 21:
12026 this.prefs[name] = value;
12027 return _context4.abrupt("return", this._writeToStorage(this.prefs));
12028
12029 case 23:
12030 case "end":
12031 return _context4.stop();
12032 }
12033 }
12034 }, _callee4, this);
12035 }));
12036
12037 function set(_x3, _x4) {
12038 return _ref4.apply(this, arguments);
12039 }
12040
12041 return set;
12042 }()
12043 }, {
12044 key: "get",
12045 value: function () {
12046 var _ref5 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee5(name) {
12047 var defaultValue, prefValue;
12048 return _regenerator2.default.wrap(function _callee5$(_context5) {
12049 while (1) {
12050 switch (_context5.prev = _context5.next) {
12051 case 0:
12052 _context5.next = 2;
12053 return this._initializedPromise;
12054
12055 case 2:
12056 defaultValue = this.defaults[name];
12057
12058 if (!(defaultValue === undefined)) {
12059 _context5.next = 7;
12060 break;
12061 }
12062
12063 throw new Error("Get preference: \"" + name + "\" is undefined.");
12064
12065 case 7:
12066 prefValue = this.prefs[name];
12067
12068 if (!(prefValue !== undefined)) {
12069 _context5.next = 10;
12070 break;
12071 }
12072
12073 return _context5.abrupt("return", prefValue);
12074
12075 case 10:
12076 return _context5.abrupt("return", defaultValue);
12077
12078 case 11:
12079 case "end":
12080 return _context5.stop();
12081 }
12082 }
12083 }, _callee5, this);
12084 }));
12085
12086 function get(_x5) {
12087 return _ref5.apply(this, arguments);
12088 }
12089
12090 return get;
12091 }()
12092 }, {
12093 key: "getAll",
12094 value: function () {
12095 var _ref6 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee6() {
12096 return _regenerator2.default.wrap(function _callee6$(_context6) {
12097 while (1) {
12098 switch (_context6.prev = _context6.next) {
12099 case 0:
12100 _context6.next = 2;
12101 return this._initializedPromise;
12102
12103 case 2:
12104 return _context6.abrupt("return", Object.assign(Object.create(null), this.defaults, this.prefs));
12105
12106 case 3:
12107 case "end":
12108 return _context6.stop();
12109 }
12110 }
12111 }, _callee6, this);
12112 }));
12113
12114 function getAll() {
12115 return _ref6.apply(this, arguments);
12116 }
12117
12118 return getAll;
12119 }()
12120 }]);
12121
12122 return BasePreferences;
12123 }();
12124
12125 exports.BasePreferences = BasePreferences;
12126
12127 /***/ }),
12128 /* 40 */
12129 /***/ (function(module, exports, __webpack_require__) {
12130
12131 "use strict";
12132
12133
12134 Object.defineProperty(exports, "__esModule", {
12135 value: true
12136 });
12137 exports.DownloadManager = undefined;
12138
12139 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
12140
12141 var _pdfjsLib = __webpack_require__(7);
12142
12143 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12144
12145 ;
12146 var DISABLE_CREATE_OBJECT_URL = _pdfjsLib.apiCompatibilityParams.disableCreateObjectURL || false;
12147 function _download(blobUrl, filename) {
12148 var a = document.createElement('a');
12149 if (!a.click) {
12150 throw new Error('DownloadManager: "a.click()" is not supported.');
12151 }
12152 a.href = blobUrl;
12153 a.target = '_parent';
12154 if ('download' in a) {
12155 a.download = filename;
12156 }
12157 (document.body || document.documentElement).appendChild(a);
12158 a.click();
12159 a.remove();
12160 }
12161
12162 var DownloadManager = function () {
12163 function DownloadManager(_ref) {
12164 var _ref$disableCreateObj = _ref.disableCreateObjectURL,
12165 disableCreateObjectURL = _ref$disableCreateObj === undefined ? DISABLE_CREATE_OBJECT_URL : _ref$disableCreateObj;
12166
12167 _classCallCheck(this, DownloadManager);
12168
12169 this.disableCreateObjectURL = disableCreateObjectURL;
12170 }
12171
12172 _createClass(DownloadManager, [{
12173 key: 'downloadUrl',
12174 value: function downloadUrl(url, filename) {
12175 if (!(0, _pdfjsLib.createValidAbsoluteUrl)(url, 'http://example.com')) {
12176 return;
12177 }
12178 _download(url + '#pdfjs.action=download', filename);
12179 }
12180 }, {
12181 key: 'downloadData',
12182 value: function downloadData(data, filename, contentType) {
12183 if (navigator.msSaveBlob) {
12184 return navigator.msSaveBlob(new Blob([data], { type: contentType }), filename);
12185 }
12186 var blobUrl = (0, _pdfjsLib.createObjectURL)(data, contentType, this.disableCreateObjectURL);
12187 _download(blobUrl, filename);
12188 }
12189 }, {
12190 key: 'download',
12191 value: function download(blob, url, filename) {
12192 if (navigator.msSaveBlob) {
12193 if (!navigator.msSaveBlob(blob, filename)) {
12194 this.downloadUrl(url, filename);
12195 }
12196 return;
12197 }
12198 if (this.disableCreateObjectURL) {
12199 this.downloadUrl(url, filename);
12200 return;
12201 }
12202 var blobUrl = _pdfjsLib.URL.createObjectURL(blob);
12203 _download(blobUrl, filename);
12204 }
12205 }]);
12206
12207 return DownloadManager;
12208 }();
12209
12210 exports.DownloadManager = DownloadManager;
12211
12212 /***/ }),
12213 /* 41 */
12214 /***/ (function(module, exports, __webpack_require__) {
12215
12216 "use strict";
12217
12218
12219 Object.defineProperty(exports, "__esModule", {
12220 value: true
12221 });
12222 exports.GenericL10n = undefined;
12223
12224 var _regenerator = __webpack_require__(2);
12225
12226 var _regenerator2 = _interopRequireDefault(_regenerator);
12227
12228 var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
12229
12230 __webpack_require__(42);
12231
12232 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12233
12234 function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
12235
12236 function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12237
12238 var webL10n = document.webL10n;
12239
12240 var GenericL10n = function () {
12241 function GenericL10n(lang) {
12242 _classCallCheck(this, GenericL10n);
12243
12244 this._lang = lang;
12245 this._ready = new Promise(function (resolve, reject) {
12246 webL10n.setLanguage(lang, function () {
12247 resolve(webL10n);
12248 });
12249 });
12250 }
12251
12252 _createClass(GenericL10n, [{
12253 key: 'getLanguage',
12254 value: function () {
12255 var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee() {
12256 var l10n;
12257 return _regenerator2.default.wrap(function _callee$(_context) {
12258 while (1) {
12259 switch (_context.prev = _context.next) {
12260 case 0:
12261 _context.next = 2;
12262 return this._ready;
12263
12264 case 2:
12265 l10n = _context.sent;
12266 return _context.abrupt('return', l10n.getLanguage());
12267
12268 case 4:
12269 case 'end':
12270 return _context.stop();
12271 }
12272 }
12273 }, _callee, this);
12274 }));
12275
12276 function getLanguage() {
12277 return _ref.apply(this, arguments);
12278 }
12279
12280 return getLanguage;
12281 }()
12282 }, {
12283 key: 'getDirection',
12284 value: function () {
12285 var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {
12286 var l10n;
12287 return _regenerator2.default.wrap(function _callee2$(_context2) {
12288 while (1) {
12289 switch (_context2.prev = _context2.next) {
12290 case 0:
12291 _context2.next = 2;
12292 return this._ready;
12293
12294 case 2:
12295 l10n = _context2.sent;
12296 return _context2.abrupt('return', l10n.getDirection());
12297
12298 case 4:
12299 case 'end':
12300 return _context2.stop();
12301 }
12302 }
12303 }, _callee2, this);
12304 }));
12305
12306 function getDirection() {
12307 return _ref2.apply(this, arguments);
12308 }
12309
12310 return getDirection;
12311 }()
12312 }, {
12313 key: 'get',
12314 value: function () {
12315 var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3(property, args, fallback) {
12316 var l10n;
12317 return _regenerator2.default.wrap(function _callee3$(_context3) {
12318 while (1) {
12319 switch (_context3.prev = _context3.next) {
12320 case 0:
12321 _context3.next = 2;
12322 return this._ready;
12323
12324 case 2:
12325 l10n = _context3.sent;
12326 return _context3.abrupt('return', l10n.get(property, args, fallback));
12327
12328 case 4:
12329 case 'end':
12330 return _context3.stop();
12331 }
12332 }
12333 }, _callee3, this);
12334 }));
12335
12336 function get(_x, _x2, _x3) {
12337 return _ref3.apply(this, arguments);
12338 }
12339
12340 return get;
12341 }()
12342 }, {
12343 key: 'translate',
12344 value: function () {
12345 var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee4(element) {
12346 var l10n;
12347 return _regenerator2.default.wrap(function _callee4$(_context4) {
12348 while (1) {
12349 switch (_context4.prev = _context4.next) {
12350 case 0:
12351 _context4.next = 2;
12352 return this._ready;
12353
12354 case 2:
12355 l10n = _context4.sent;
12356 return _context4.abrupt('return', l10n.translate(element));
12357
12358 case 4:
12359 case 'end':
12360 return _context4.stop();
12361 }
12362 }
12363 }, _callee4, this);
12364 }));
12365
12366 function translate(_x4) {
12367 return _ref4.apply(this, arguments);
12368 }
12369
12370 return translate;
12371 }()
12372 }]);
12373
12374 return GenericL10n;
12375 }();
12376
12377 exports.GenericL10n = GenericL10n;
12378
12379 /***/ }),
12380 /* 42 */
12381 /***/ (function(module, exports, __webpack_require__) {
12382
12383 "use strict";
12384
12385
12386 document.webL10n = function (window, document, undefined) {
12387 var gL10nData = {};
12388 var gTextData = '';
12389 var gTextProp = 'textContent';
12390 var gLanguage = '';
12391 var gMacros = {};
12392 var gReadyState = 'loading';
12393 var gAsyncResourceLoading = true;
12394 function getL10nResourceLinks() {
12395 return document.querySelectorAll('link[type="application/l10n"]');
12396 }
12397 function getL10nDictionary() {
12398 var script = document.querySelector('script[type="application/l10n"]');
12399 return script ? JSON.parse(script.innerHTML) : null;
12400 }
12401 function getTranslatableChildren(element) {
12402 return element ? element.querySelectorAll('*[data-l10n-id]') : [];
12403 }
12404 function getL10nAttributes(element) {
12405 if (!element) return {};
12406 var l10nId = element.getAttribute('data-l10n-id');
12407 var l10nArgs = element.getAttribute('data-l10n-args');
12408 var args = {};
12409 if (l10nArgs) {
12410 try {
12411 args = JSON.parse(l10nArgs);
12412 } catch (e) {
12413 console.warn('could not parse arguments for #' + l10nId);
12414 }
12415 }
12416 return {
12417 id: l10nId,
12418 args: args
12419 };
12420 }
12421 function fireL10nReadyEvent(lang) {
12422 var evtObject = document.createEvent('Event');
12423 evtObject.initEvent('localized', true, false);
12424 evtObject.language = lang;
12425 document.dispatchEvent(evtObject);
12426 }
12427 function xhrLoadText(url, onSuccess, onFailure) {
12428 onSuccess = onSuccess || function _onSuccess(data) {};
12429 onFailure = onFailure || function _onFailure() {};
12430 var xhr = new XMLHttpRequest();
12431 xhr.open('GET', url, gAsyncResourceLoading);
12432 if (xhr.overrideMimeType) {
12433 xhr.overrideMimeType('text/plain; charset=utf-8');
12434 }
12435 xhr.onreadystatechange = function () {
12436 if (xhr.readyState == 4) {
12437 if (xhr.status == 200 || xhr.status === 0) {
12438 onSuccess(xhr.responseText);
12439 } else {
12440 onFailure();
12441 }
12442 }
12443 };
12444 xhr.onerror = onFailure;
12445 xhr.ontimeout = onFailure;
12446 try {
12447 xhr.send(null);
12448 } catch (e) {
12449 onFailure();
12450 }
12451 }
12452 function parseResource(href, lang, successCallback, failureCallback) {
12453 var baseURL = href.replace(/[^\/]*$/, '') || './';
12454 function evalString(text) {
12455 if (text.lastIndexOf('\\') < 0) return text;
12456 return text.replace(/\\\\/g, '\\').replace(/\\n/g, '\n').replace(/\\r/g, '\r').replace(/\\t/g, '\t').replace(/\\b/g, '\b').replace(/\\f/g, '\f').replace(/\\{/g, '{').replace(/\\}/g, '}').replace(/\\"/g, '"').replace(/\\'/g, "'");
12457 }
12458 function parseProperties(text, parsedPropertiesCallback) {
12459 var dictionary = {};
12460 var reBlank = /^\s*|\s*$/;
12461 var reComment = /^\s*#|^\s*$/;
12462 var reSection = /^\s*\[(.*)\]\s*$/;
12463 var reImport = /^\s*@import\s+url\((.*)\)\s*$/i;
12464 var reSplit = /^([^=\s]*)\s*=\s*(.+)$/;
12465 function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) {
12466 var entries = rawText.replace(reBlank, '').split(/[\r\n]+/);
12467 var currentLang = '*';
12468 var genericLang = lang.split('-', 1)[0];
12469 var skipLang = false;
12470 var match = '';
12471 function nextEntry() {
12472 while (true) {
12473 if (!entries.length) {
12474 parsedRawLinesCallback();
12475 return;
12476 }
12477 var line = entries.shift();
12478 if (reComment.test(line)) continue;
12479 if (extendedSyntax) {
12480 match = reSection.exec(line);
12481 if (match) {
12482 currentLang = match[1].toLowerCase();
12483 skipLang = currentLang !== '*' && currentLang !== lang && currentLang !== genericLang;
12484 continue;
12485 } else if (skipLang) {
12486 continue;
12487 }
12488 match = reImport.exec(line);
12489 if (match) {
12490 loadImport(baseURL + match[1], nextEntry);
12491 return;
12492 }
12493 }
12494 var tmp = line.match(reSplit);
12495 if (tmp && tmp.length == 3) {
12496 dictionary[tmp[1]] = evalString(tmp[2]);
12497 }
12498 }
12499 }
12500 nextEntry();
12501 }
12502 function loadImport(url, callback) {
12503 xhrLoadText(url, function (content) {
12504 parseRawLines(content, false, callback);
12505 }, function () {
12506 console.warn(url + ' not found.');
12507 callback();
12508 });
12509 }
12510 parseRawLines(text, true, function () {
12511 parsedPropertiesCallback(dictionary);
12512 });
12513 }
12514 xhrLoadText(href, function (response) {
12515 gTextData += response;
12516 parseProperties(response, function (data) {
12517 for (var key in data) {
12518 var id,
12519 prop,
12520 index = key.lastIndexOf('.');
12521 if (index > 0) {
12522 id = key.substring(0, index);
12523 prop = key.substring(index + 1);
12524 } else {
12525 id = key;
12526 prop = gTextProp;
12527 }
12528 if (!gL10nData[id]) {
12529 gL10nData[id] = {};
12530 }
12531 gL10nData[id][prop] = data[key];
12532 }
12533 if (successCallback) {
12534 successCallback();
12535 }
12536 });
12537 }, failureCallback);
12538 }
12539 function loadLocale(lang, callback) {
12540 if (lang) {
12541 lang = lang.toLowerCase();
12542 }
12543 callback = callback || function _callback() {};
12544 clear();
12545 gLanguage = lang;
12546 var langLinks = getL10nResourceLinks();
12547 var langCount = langLinks.length;
12548 if (langCount === 0) {
12549 var dict = getL10nDictionary();
12550 if (dict && dict.locales && dict.default_locale) {
12551 console.log('using the embedded JSON directory, early way out');
12552 gL10nData = dict.locales[lang];
12553 if (!gL10nData) {
12554 var defaultLocale = dict.default_locale.toLowerCase();
12555 for (var anyCaseLang in dict.locales) {
12556 anyCaseLang = anyCaseLang.toLowerCase();
12557 if (anyCaseLang === lang) {
12558 gL10nData = dict.locales[lang];
12559 break;
12560 } else if (anyCaseLang === defaultLocale) {
12561 gL10nData = dict.locales[defaultLocale];
12562 }
12563 }
12564 }
12565 callback();
12566 } else {
12567 console.log('no resource to load, early way out');
12568 }
12569 fireL10nReadyEvent(lang);
12570 gReadyState = 'complete';
12571 return;
12572 }
12573 var onResourceLoaded = null;
12574 var gResourceCount = 0;
12575 onResourceLoaded = function onResourceLoaded() {
12576 gResourceCount++;
12577 if (gResourceCount >= langCount) {
12578 callback();
12579 fireL10nReadyEvent(lang);
12580 gReadyState = 'complete';
12581 }
12582 };
12583 function L10nResourceLink(link) {
12584 var href = link.href;
12585 this.load = function (lang, callback) {
12586 parseResource(href, lang, callback, function () {
12587 console.warn(href + ' not found.');
12588 console.warn('"' + lang + '" resource not found');
12589 gLanguage = '';
12590 callback();
12591 });
12592 };
12593 }
12594 for (var i = 0; i < langCount; i++) {
12595 var resource = new L10nResourceLink(langLinks[i]);
12596 resource.load(lang, onResourceLoaded);
12597 }
12598 }
12599 function clear() {
12600 gL10nData = {};
12601 gTextData = '';
12602 gLanguage = '';
12603 }
12604 function getPluralRules(lang) {
12605 var locales2rules = {
12606 'af': 3,
12607 'ak': 4,
12608 'am': 4,
12609 'ar': 1,
12610 'asa': 3,
12611 'az': 0,
12612 'be': 11,
12613 'bem': 3,
12614 'bez': 3,
12615 'bg': 3,
12616 'bh': 4,
12617 'bm': 0,
12618 'bn': 3,
12619 'bo': 0,
12620 'br': 20,
12621 'brx': 3,
12622 'bs': 11,
12623 'ca': 3,
12624 'cgg': 3,
12625 'chr': 3,
12626 'cs': 12,
12627 'cy': 17,
12628 'da': 3,
12629 'de': 3,
12630 'dv': 3,
12631 'dz': 0,
12632 'ee': 3,
12633 'el': 3,
12634 'en': 3,
12635 'eo': 3,
12636 'es': 3,
12637 'et': 3,
12638 'eu': 3,
12639 'fa': 0,
12640 'ff': 5,
12641 'fi': 3,
12642 'fil': 4,
12643 'fo': 3,
12644 'fr': 5,
12645 'fur': 3,
12646 'fy': 3,
12647 'ga': 8,
12648 'gd': 24,
12649 'gl': 3,
12650 'gsw': 3,
12651 'gu': 3,
12652 'guw': 4,
12653 'gv': 23,
12654 'ha': 3,
12655 'haw': 3,
12656 'he': 2,
12657 'hi': 4,
12658 'hr': 11,
12659 'hu': 0,
12660 'id': 0,
12661 'ig': 0,
12662 'ii': 0,
12663 'is': 3,
12664 'it': 3,
12665 'iu': 7,
12666 'ja': 0,
12667 'jmc': 3,
12668 'jv': 0,
12669 'ka': 0,
12670 'kab': 5,
12671 'kaj': 3,
12672 'kcg': 3,
12673 'kde': 0,
12674 'kea': 0,
12675 'kk': 3,
12676 'kl': 3,
12677 'km': 0,
12678 'kn': 0,
12679 'ko': 0,
12680 'ksb': 3,
12681 'ksh': 21,
12682 'ku': 3,
12683 'kw': 7,
12684 'lag': 18,
12685 'lb': 3,
12686 'lg': 3,
12687 'ln': 4,
12688 'lo': 0,
12689 'lt': 10,
12690 'lv': 6,
12691 'mas': 3,
12692 'mg': 4,
12693 'mk': 16,
12694 'ml': 3,
12695 'mn': 3,
12696 'mo': 9,
12697 'mr': 3,
12698 'ms': 0,
12699 'mt': 15,
12700 'my': 0,
12701 'nah': 3,
12702 'naq': 7,
12703 'nb': 3,
12704 'nd': 3,
12705 'ne': 3,
12706 'nl': 3,
12707 'nn': 3,
12708 'no': 3,
12709 'nr': 3,
12710 'nso': 4,
12711 'ny': 3,
12712 'nyn': 3,
12713 'om': 3,
12714 'or': 3,
12715 'pa': 3,
12716 'pap': 3,
12717 'pl': 13,
12718 'ps': 3,
12719 'pt': 3,
12720 'rm': 3,
12721 'ro': 9,
12722 'rof': 3,
12723 'ru': 11,
12724 'rwk': 3,
12725 'sah': 0,
12726 'saq': 3,
12727 'se': 7,
12728 'seh': 3,
12729 'ses': 0,
12730 'sg': 0,
12731 'sh': 11,
12732 'shi': 19,
12733 'sk': 12,
12734 'sl': 14,
12735 'sma': 7,
12736 'smi': 7,
12737 'smj': 7,
12738 'smn': 7,
12739 'sms': 7,
12740 'sn': 3,
12741 'so': 3,
12742 'sq': 3,
12743 'sr': 11,
12744 'ss': 3,
12745 'ssy': 3,
12746 'st': 3,
12747 'sv': 3,
12748 'sw': 3,
12749 'syr': 3,
12750 'ta': 3,
12751 'te': 3,
12752 'teo': 3,
12753 'th': 0,
12754 'ti': 4,
12755 'tig': 3,
12756 'tk': 3,
12757 'tl': 4,
12758 'tn': 3,
12759 'to': 0,
12760 'tr': 0,
12761 'ts': 3,
12762 'tzm': 22,
12763 'uk': 11,
12764 'ur': 3,
12765 've': 3,
12766 'vi': 0,
12767 'vun': 3,
12768 'wa': 4,
12769 'wae': 3,
12770 'wo': 0,
12771 'xh': 3,
12772 'xog': 3,
12773 'yo': 0,
12774 'zh': 0,
12775 'zu': 3
12776 };
12777 function isIn(n, list) {
12778 return list.indexOf(n) !== -1;
12779 }
12780 function isBetween(n, start, end) {
12781 return start <= n && n <= end;
12782 }
12783 var pluralRules = {
12784 '0': function _(n) {
12785 return 'other';
12786 },
12787 '1': function _(n) {
12788 if (isBetween(n % 100, 3, 10)) return 'few';
12789 if (n === 0) return 'zero';
12790 if (isBetween(n % 100, 11, 99)) return 'many';
12791 if (n == 2) return 'two';
12792 if (n == 1) return 'one';
12793 return 'other';
12794 },
12795 '2': function _(n) {
12796 if (n !== 0 && n % 10 === 0) return 'many';
12797 if (n == 2) return 'two';
12798 if (n == 1) return 'one';
12799 return 'other';
12800 },
12801 '3': function _(n) {
12802 if (n == 1) return 'one';
12803 return 'other';
12804 },
12805 '4': function _(n) {
12806 if (isBetween(n, 0, 1)) return 'one';
12807 return 'other';
12808 },
12809 '5': function _(n) {
12810 if (isBetween(n, 0, 2) && n != 2) return 'one';
12811 return 'other';
12812 },
12813 '6': function _(n) {
12814 if (n === 0) return 'zero';
12815 if (n % 10 == 1 && n % 100 != 11) return 'one';
12816 return 'other';
12817 },
12818 '7': function _(n) {
12819 if (n == 2) return 'two';
12820 if (n == 1) return 'one';
12821 return 'other';
12822 },
12823 '8': function _(n) {
12824 if (isBetween(n, 3, 6)) return 'few';
12825 if (isBetween(n, 7, 10)) return 'many';
12826 if (n == 2) return 'two';
12827 if (n == 1) return 'one';
12828 return 'other';
12829 },
12830 '9': function _(n) {
12831 if (n === 0 || n != 1 && isBetween(n % 100, 1, 19)) return 'few';
12832 if (n == 1) return 'one';
12833 return 'other';
12834 },
12835 '10': function _(n) {
12836 if (isBetween(n % 10, 2, 9) && !isBetween(n % 100, 11, 19)) return 'few';
12837 if (n % 10 == 1 && !isBetween(n % 100, 11, 19)) return 'one';
12838 return 'other';
12839 },
12840 '11': function _(n) {
12841 if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few';
12842 if (n % 10 === 0 || isBetween(n % 10, 5, 9) || isBetween(n % 100, 11, 14)) return 'many';
12843 if (n % 10 == 1 && n % 100 != 11) return 'one';
12844 return 'other';
12845 },
12846 '12': function _(n) {
12847 if (isBetween(n, 2, 4)) return 'few';
12848 if (n == 1) return 'one';
12849 return 'other';
12850 },
12851 '13': function _(n) {
12852 if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few';
12853 if (n != 1 && isBetween(n % 10, 0, 1) || isBetween(n % 10, 5, 9) || isBetween(n % 100, 12, 14)) return 'many';
12854 if (n == 1) return 'one';
12855 return 'other';
12856 },
12857 '14': function _(n) {
12858 if (isBetween(n % 100, 3, 4)) return 'few';
12859 if (n % 100 == 2) return 'two';
12860 if (n % 100 == 1) return 'one';
12861 return 'other';
12862 },
12863 '15': function _(n) {
12864 if (n === 0 || isBetween(n % 100, 2, 10)) return 'few';
12865 if (isBetween(n % 100, 11, 19)) return 'many';
12866 if (n == 1) return 'one';
12867 return 'other';
12868 },
12869 '16': function _(n) {
12870 if (n % 10 == 1 && n != 11) return 'one';
12871 return 'other';
12872 },
12873 '17': function _(n) {
12874 if (n == 3) return 'few';
12875 if (n === 0) return 'zero';
12876 if (n == 6) return 'many';
12877 if (n == 2) return 'two';
12878 if (n == 1) return 'one';
12879 return 'other';
12880 },
12881 '18': function _(n) {
12882 if (n === 0) return 'zero';
12883 if (isBetween(n, 0, 2) && n !== 0 && n != 2) return 'one';
12884 return 'other';
12885 },
12886 '19': function _(n) {
12887 if (isBetween(n, 2, 10)) return 'few';
12888 if (isBetween(n, 0, 1)) return 'one';
12889 return 'other';
12890 },
12891 '20': function _(n) {
12892 if ((isBetween(n % 10, 3, 4) || n % 10 == 9) && !(isBetween(n % 100, 10, 19) || isBetween(n % 100, 70, 79) || isBetween(n % 100, 90, 99))) return 'few';
12893 if (n % 1000000 === 0 && n !== 0) return 'many';
12894 if (n % 10 == 2 && !isIn(n % 100, [12, 72, 92])) return 'two';
12895 if (n % 10 == 1 && !isIn(n % 100, [11, 71, 91])) return 'one';
12896 return 'other';
12897 },
12898 '21': function _(n) {
12899 if (n === 0) return 'zero';
12900 if (n == 1) return 'one';
12901 return 'other';
12902 },
12903 '22': function _(n) {
12904 if (isBetween(n, 0, 1) || isBetween(n, 11, 99)) return 'one';
12905 return 'other';
12906 },
12907 '23': function _(n) {
12908 if (isBetween(n % 10, 1, 2) || n % 20 === 0) return 'one';
12909 return 'other';
12910 },
12911 '24': function _(n) {
12912 if (isBetween(n, 3, 10) || isBetween(n, 13, 19)) return 'few';
12913 if (isIn(n, [2, 12])) return 'two';
12914 if (isIn(n, [1, 11])) return 'one';
12915 return 'other';
12916 }
12917 };
12918 var index = locales2rules[lang.replace(/-.*$/, '')];
12919 if (!(index in pluralRules)) {
12920 console.warn('plural form unknown for [' + lang + ']');
12921 return function () {
12922 return 'other';
12923 };
12924 }
12925 return pluralRules[index];
12926 }
12927 gMacros.plural = function (str, param, key, prop) {
12928 var n = parseFloat(param);
12929 if (isNaN(n)) return str;
12930 if (prop != gTextProp) return str;
12931 if (!gMacros._pluralRules) {
12932 gMacros._pluralRules = getPluralRules(gLanguage);
12933 }
12934 var index = '[' + gMacros._pluralRules(n) + ']';
12935 if (n === 0 && key + '[zero]' in gL10nData) {
12936 str = gL10nData[key + '[zero]'][prop];
12937 } else if (n == 1 && key + '[one]' in gL10nData) {
12938 str = gL10nData[key + '[one]'][prop];
12939 } else if (n == 2 && key + '[two]' in gL10nData) {
12940 str = gL10nData[key + '[two]'][prop];
12941 } else if (key + index in gL10nData) {
12942 str = gL10nData[key + index][prop];
12943 } else if (key + '[other]' in gL10nData) {
12944 str = gL10nData[key + '[other]'][prop];
12945 }
12946 return str;
12947 };
12948 function getL10nData(key, args, fallback) {
12949 var data = gL10nData[key];
12950 if (!data) {
12951 console.warn('#' + key + ' is undefined.');
12952 if (!fallback) {
12953 return null;
12954 }
12955 data = fallback;
12956 }
12957 var rv = {};
12958 for (var prop in data) {
12959 var str = data[prop];
12960 str = substIndexes(str, args, key, prop);
12961 str = substArguments(str, args, key);
12962 rv[prop] = str;
12963 }
12964 return rv;
12965 }
12966 function substIndexes(str, args, key, prop) {
12967 var reIndex = /\{\[\s*([a-zA-Z]+)\(([a-zA-Z]+)\)\s*\]\}/;
12968 var reMatch = reIndex.exec(str);
12969 if (!reMatch || !reMatch.length) return str;
12970 var macroName = reMatch[1];
12971 var paramName = reMatch[2];
12972 var param;
12973 if (args && paramName in args) {
12974 param = args[paramName];
12975 } else if (paramName in gL10nData) {
12976 param = gL10nData[paramName];
12977 }
12978 if (macroName in gMacros) {
12979 var macro = gMacros[macroName];
12980 str = macro(str, param, key, prop);
12981 }
12982 return str;
12983 }
12984 function substArguments(str, args, key) {
12985 var reArgs = /\{\{\s*(.+?)\s*\}\}/g;
12986 return str.replace(reArgs, function (matched_text, arg) {
12987 if (args && arg in args) {
12988 return args[arg];
12989 }
12990 if (arg in gL10nData) {
12991 return gL10nData[arg];
12992 }
12993 console.log('argument {{' + arg + '}} for #' + key + ' is undefined.');
12994 return matched_text;
12995 });
12996 }
12997 function translateElement(element) {
12998 var l10n = getL10nAttributes(element);
12999 if (!l10n.id) return;
13000 var data = getL10nData(l10n.id, l10n.args);
13001 if (!data) {
13002 console.warn('#' + l10n.id + ' is undefined.');
13003 return;
13004 }
13005 if (data[gTextProp]) {
13006 if (getChildElementCount(element) === 0) {
13007 element[gTextProp] = data[gTextProp];
13008 } else {
13009 var children = element.childNodes;
13010 var found = false;
13011 for (var i = 0, l = children.length; i < l; i++) {
13012 if (children[i].nodeType === 3 && /\S/.test(children[i].nodeValue)) {
13013 if (found) {
13014 children[i].nodeValue = '';
13015 } else {
13016 children[i].nodeValue = data[gTextProp];
13017 found = true;
13018 }
13019 }
13020 }
13021 if (!found) {
13022 var textNode = document.createTextNode(data[gTextProp]);
13023 element.insertBefore(textNode, element.firstChild);
13024 }
13025 }
13026 delete data[gTextProp];
13027 }
13028 for (var k in data) {
13029 element[k] = data[k];
13030 }
13031 }
13032 function getChildElementCount(element) {
13033 if (element.children) {
13034 return element.children.length;
13035 }
13036 if (typeof element.childElementCount !== 'undefined') {
13037 return element.childElementCount;
13038 }
13039 var count = 0;
13040 for (var i = 0; i < element.childNodes.length; i++) {
13041 count += element.nodeType === 1 ? 1 : 0;
13042 }
13043 return count;
13044 }
13045 function translateFragment(element) {
13046 element = element || document.documentElement;
13047 var children = getTranslatableChildren(element);
13048 var elementCount = children.length;
13049 for (var i = 0; i < elementCount; i++) {
13050 translateElement(children[i]);
13051 }
13052 translateElement(element);
13053 }
13054 return {
13055 get: function get(key, args, fallbackString) {
13056 var index = key.lastIndexOf('.');
13057 var prop = gTextProp;
13058 if (index > 0) {
13059 prop = key.substring(index + 1);
13060 key = key.substring(0, index);
13061 }
13062 var fallback;
13063 if (fallbackString) {
13064 fallback = {};
13065 fallback[prop] = fallbackString;
13066 }
13067 var data = getL10nData(key, args, fallback);
13068 if (data && prop in data) {
13069 return data[prop];
13070 }
13071 return '{{' + key + '}}';
13072 },
13073 getData: function getData() {
13074 return gL10nData;
13075 },
13076 getText: function getText() {
13077 return gTextData;
13078 },
13079 getLanguage: function getLanguage() {
13080 return gLanguage;
13081 },
13082 setLanguage: function setLanguage(lang, callback) {
13083 loadLocale(lang, function () {
13084 if (callback) callback();
13085 });
13086 },
13087 getDirection: function getDirection() {
13088 var rtlList = ['ar', 'he', 'fa', 'ps', 'ur'];
13089 var shortCode = gLanguage.split('-', 1)[0];
13090 return rtlList.indexOf(shortCode) >= 0 ? 'rtl' : 'ltr';
13091 },
13092 translate: translateFragment,
13093 getReadyState: function getReadyState() {
13094 return gReadyState;
13095 },
13096 ready: function ready(callback) {
13097 if (!callback) {
13098 return;
13099 } else if (gReadyState == 'complete' || gReadyState == 'interactive') {
13100 window.setTimeout(function () {
13101 callback();
13102 });
13103 } else if (document.addEventListener) {
13104 document.addEventListener('localized', function once() {
13105 document.removeEventListener('localized', once);
13106 callback();
13107 });
13108 }
13109 }
13110 };
13111 }(window, document);
13112
13113 /***/ }),
13114 /* 43 */
13115 /***/ (function(module, exports, __webpack_require__) {
13116
13117 "use strict";
13118
13119
13120 Object.defineProperty(exports, "__esModule", {
13121 value: true
13122 });
13123 exports.PDFPrintService = undefined;
13124
13125 var _ui_utils = __webpack_require__(6);
13126
13127 var _app = __webpack_require__(1);
13128
13129 var _pdfjsLib = __webpack_require__(7);
13130
13131 var activeService = null;
13132 var overlayManager = null;
13133 function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size) {
13134 var scratchCanvas = activeService.scratchCanvas;
13135 var PRINT_RESOLUTION = 150;
13136 var PRINT_UNITS = PRINT_RESOLUTION / 72.0;
13137 scratchCanvas.width = Math.floor(size.width * PRINT_UNITS);
13138 scratchCanvas.height = Math.floor(size.height * PRINT_UNITS);
13139 var width = Math.floor(size.width * _ui_utils.CSS_UNITS) + 'px';
13140 var height = Math.floor(size.height * _ui_utils.CSS_UNITS) + 'px';
13141 var ctx = scratchCanvas.getContext('2d');
13142 ctx.save();
13143 ctx.fillStyle = 'rgb(255, 255, 255)';
13144 ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height);
13145 ctx.restore();
13146 return pdfDocument.getPage(pageNumber).then(function (pdfPage) {
13147 var renderContext = {
13148 canvasContext: ctx,
13149 transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0],
13150 viewport: pdfPage.getViewport(1, size.rotation),
13151 intent: 'print'
13152 };
13153 return pdfPage.render(renderContext).promise;
13154 }).then(function () {
13155 return {
13156 width: width,
13157 height: height
13158 };
13159 });
13160 }
13161 function PDFPrintService(pdfDocument, pagesOverview, printContainer, l10n) {
13162 this.pdfDocument = pdfDocument;
13163 this.pagesOverview = pagesOverview;
13164 this.printContainer = printContainer;
13165 this.l10n = l10n || _ui_utils.NullL10n;
13166 this.disableCreateObjectURL = pdfDocument.loadingParams['disableCreateObjectURL'];
13167 this.currentPage = -1;
13168 this.scratchCanvas = document.createElement('canvas');
13169 }
13170 PDFPrintService.prototype = {
13171 layout: function layout() {
13172 this.throwIfInactive();
13173 var body = document.querySelector('body');
13174 body.setAttribute('data-pdfjsprinting', true);
13175 var hasEqualPageSizes = this.pagesOverview.every(function (size) {
13176 return size.width === this.pagesOverview[0].width && size.height === this.pagesOverview[0].height;
13177 }, this);
13178 if (!hasEqualPageSizes) {
13179 console.warn('Not all pages have the same size. The printed ' + 'result may be incorrect!');
13180 }
13181 this.pageStyleSheet = document.createElement('style');
13182 var pageSize = this.pagesOverview[0];
13183 this.pageStyleSheet.textContent = '@supports ((size:A4) and (size:1pt 1pt)) {' + '@page { size: ' + pageSize.width + 'pt ' + pageSize.height + 'pt;}' + '}';
13184 body.appendChild(this.pageStyleSheet);
13185 },
13186 destroy: function destroy() {
13187 if (activeService !== this) {
13188 return;
13189 }
13190 this.printContainer.textContent = '';
13191 if (this.pageStyleSheet) {
13192 this.pageStyleSheet.remove();
13193 this.pageStyleSheet = null;
13194 }
13195 this.scratchCanvas.width = this.scratchCanvas.height = 0;
13196 this.scratchCanvas = null;
13197 activeService = null;
13198 ensureOverlay().then(function () {
13199 if (overlayManager.active !== 'printServiceOverlay') {
13200 return;
13201 }
13202 overlayManager.close('printServiceOverlay');
13203 });
13204 },
13205 renderPages: function renderPages() {
13206 var _this = this;
13207
13208 var pageCount = this.pagesOverview.length;
13209 var renderNextPage = function renderNextPage(resolve, reject) {
13210 _this.throwIfInactive();
13211 if (++_this.currentPage >= pageCount) {
13212 renderProgress(pageCount, pageCount, _this.l10n);
13213 resolve();
13214 return;
13215 }
13216 var index = _this.currentPage;
13217 renderProgress(index, pageCount, _this.l10n);
13218 renderPage(_this, _this.pdfDocument, index + 1, _this.pagesOverview[index]).then(_this.useRenderedPage.bind(_this)).then(function () {
13219 renderNextPage(resolve, reject);
13220 }, reject);
13221 };
13222 return new Promise(renderNextPage);
13223 },
13224 useRenderedPage: function useRenderedPage(printItem) {
13225 this.throwIfInactive();
13226 var img = document.createElement('img');
13227 img.style.width = printItem.width;
13228 img.style.height = printItem.height;
13229 var scratchCanvas = this.scratchCanvas;
13230 if ('toBlob' in scratchCanvas && !this.disableCreateObjectURL) {
13231 scratchCanvas.toBlob(function (blob) {
13232 img.src = _pdfjsLib.URL.createObjectURL(blob);
13233 });
13234 } else {
13235 img.src = scratchCanvas.toDataURL();
13236 }
13237 var wrapper = document.createElement('div');
13238 wrapper.appendChild(img);
13239 this.printContainer.appendChild(wrapper);
13240 return new Promise(function (resolve, reject) {
13241 img.onload = resolve;
13242 img.onerror = reject;
13243 });
13244 },
13245 performPrint: function performPrint() {
13246 var _this2 = this;
13247
13248 this.throwIfInactive();
13249 return new Promise(function (resolve) {
13250 setTimeout(function () {
13251 if (!_this2.active) {
13252 resolve();
13253 return;
13254 }
13255 print.call(window);
13256 setTimeout(resolve, 20);
13257 }, 0);
13258 });
13259 },
13260
13261 get active() {
13262 return this === activeService;
13263 },
13264 throwIfInactive: function throwIfInactive() {
13265 if (!this.active) {
13266 throw new Error('This print request was cancelled or completed.');
13267 }
13268 }
13269 };
13270 var print = window.print;
13271 window.print = function print() {
13272 if (activeService) {
13273 console.warn('Ignored window.print() because of a pending print job.');
13274 return;
13275 }
13276 ensureOverlay().then(function () {
13277 if (activeService) {
13278 overlayManager.open('printServiceOverlay');
13279 }
13280 });
13281 try {
13282 dispatchEvent('beforeprint');
13283 } finally {
13284 if (!activeService) {
13285 console.error('Expected print service to be initialized.');
13286 ensureOverlay().then(function () {
13287 if (overlayManager.active === 'printServiceOverlay') {
13288 overlayManager.close('printServiceOverlay');
13289 }
13290 });
13291 return;
13292 }
13293 var activeServiceOnEntry = activeService;
13294 activeService.renderPages().then(function () {
13295 return activeServiceOnEntry.performPrint();
13296 }).catch(function () {}).then(function () {
13297 if (activeServiceOnEntry.active) {
13298 abort();
13299 }
13300 });
13301 }
13302 };
13303 function dispatchEvent(eventType) {
13304 var event = document.createEvent('CustomEvent');
13305 event.initCustomEvent(eventType, false, false, 'custom');
13306 window.dispatchEvent(event);
13307 }
13308 function abort() {
13309 if (activeService) {
13310 activeService.destroy();
13311 dispatchEvent('afterprint');
13312 }
13313 }
13314 function renderProgress(index, total, l10n) {
13315 var progressContainer = document.getElementById('printServiceOverlay');
13316 var progress = Math.round(100 * index / total);
13317 var progressBar = progressContainer.querySelector('progress');
13318 var progressPerc = progressContainer.querySelector('.relative-progress');
13319 progressBar.value = progress;
13320 l10n.get('print_progress_percent', { progress: progress }, progress + '%').then(function (msg) {
13321 progressPerc.textContent = msg;
13322 });
13323 }
13324 var hasAttachEvent = !!document.attachEvent;
13325 window.addEventListener('keydown', function (event) {
13326 if (event.keyCode === 80 && (event.ctrlKey || event.metaKey) && !event.altKey && (!event.shiftKey || window.chrome || window.opera)) {
13327 window.print();
13328 if (hasAttachEvent) {
13329 return;
13330 }
13331 event.preventDefault();
13332 if (event.stopImmediatePropagation) {
13333 event.stopImmediatePropagation();
13334 } else {
13335 event.stopPropagation();
13336 }
13337 return;
13338 }
13339 }, true);
13340 if (hasAttachEvent) {
13341 document.attachEvent('onkeydown', function (event) {
13342 event = event || window.event;
13343 if (event.keyCode === 80 && event.ctrlKey) {
13344 event.keyCode = 0;
13345 return false;
13346 }
13347 });
13348 }
13349 if ('onbeforeprint' in window) {
13350 var stopPropagationIfNeeded = function stopPropagationIfNeeded(event) {
13351 if (event.detail !== 'custom' && event.stopImmediatePropagation) {
13352 event.stopImmediatePropagation();
13353 }
13354 };
13355 window.addEventListener('beforeprint', stopPropagationIfNeeded);
13356 window.addEventListener('afterprint', stopPropagationIfNeeded);
13357 }
13358 var overlayPromise = void 0;
13359 function ensureOverlay() {
13360 if (!overlayPromise) {
13361 overlayManager = _app.PDFViewerApplication.overlayManager;
13362 if (!overlayManager) {
13363 throw new Error('The overlay manager has not yet been initialized.');
13364 }
13365 overlayPromise = overlayManager.register('printServiceOverlay', document.getElementById('printServiceOverlay'), abort, true);
13366 document.getElementById('printCancel').onclick = abort;
13367 }
13368 return overlayPromise;
13369 }
13370 _app.PDFPrintServiceFactory.instance = {
13371 supportsPrinting: true,
13372 createPrintService: function createPrintService(pdfDocument, pagesOverview, printContainer, l10n) {
13373 if (activeService) {
13374 throw new Error('The print service is created and active.');
13375 }
13376 activeService = new PDFPrintService(pdfDocument, pagesOverview, printContainer, l10n);
13377 return activeService;
13378 }
13379 };
13380 exports.PDFPrintService = PDFPrintService;
13381
13382 /***/ })
13383 /******/ ]);
13384 //# sourceMappingURL=viewer.js.map